diff --git a/wp-content/plugins/elementor/app/admin-menu-items/theme-builder-menu-item.php b/wp-content/plugins/elementor/app/admin-menu-items/theme-builder-menu-item.php new file mode 100644 index 0000000..7c22267 --- /dev/null +++ b/wp-content/plugins/elementor/app/admin-menu-items/theme-builder-menu-item.php @@ -0,0 +1,28 @@ +register( static::PAGE_ID, new Theme_Builder_Menu_Item() ); + } + + public function fix_submenu( $menu ) { + global $submenu; + + if ( is_multisite() && is_network_admin() ) { + return $menu; + } + + // Non admin role / custom wp menu. + if ( empty( $submenu[ Source_Local::ADMIN_MENU_SLUG ] ) ) { + return $menu; + } + + // Hack to add a link to sub menu. + foreach ( $submenu[ Source_Local::ADMIN_MENU_SLUG ] as &$item ) { + if ( self::PAGE_ID === $item[2] ) { + $item[2] = $this->get_settings( 'menu_url' ); // phpcs:ignore WordPress.WP.GlobalVariablesOverride.Prohibited + $item[4] = 'elementor-app-link'; // phpcs:ignore WordPress.WP.GlobalVariablesOverride.Prohibited + } + } + + return $menu; + } + + public function is_current() { + return ( ! empty( $_GET['page'] ) && self::PAGE_ID === $_GET['page'] ); + } + + public function admin_init() { + do_action( 'elementor/app/init', $this ); + + // Add the introduction and user settings only when it is needed (when loading the app and not in the editor or admin pages) + $this->set_settings( 'user', [ + 'introduction' => (object) User::get_introduction_meta(), + 'is_administrator' => current_user_can( 'manage_options' ), + 'restrictions' => Plugin::$instance->role_manager->get_user_restrictions_array(), + ] ); + + $this->enqueue_assets(); + + // Setup default heartbeat options + // TODO: Enable heartbeat. + add_filter( 'heartbeat_settings', function( $settings ) { + $settings['interval'] = 15; + return $settings; + } ); + + $this->render(); + die; + } + + protected function get_init_settings() { + $referer = wp_get_referer(); + + return [ + 'menu_url' => $this->get_base_url() . '#site-editor/promotion', + 'assets_url' => ELEMENTOR_ASSETS_URL, + 'pages_url' => admin_url( 'edit.php?post_type=page' ), + 'return_url' => $referer ? $referer : admin_url(), + 'hasPro' => Utils::has_pro(), + 'admin_url' => admin_url(), + 'login_url' => wp_login_url(), + 'base_url' => $this->get_base_url(), + ]; + } + + private function render() { + require __DIR__ . '/view.php'; + } + + /** + * Get Elementor UI theme preference. + * + * Retrieve the user UI theme preference as defined by editor preferences manager. + * + * @since 3.0.0 + * @access private + * + * @return string Preferred UI theme. + */ + private function get_elementor_ui_theme_preference() { + $editor_preferences = SettingsManager::get_settings_managers( 'editorPreferences' ); + + return $editor_preferences->get_model()->get_settings( 'ui_theme' ); + } + + /** + * Enqueue dark theme detection script. + * + * Enqueues an inline script that detects user-agent settings for dark mode and adds a complimentary class to the body tag. + * + * @since 3.0.0 + * @access private + */ + private function enqueue_dark_theme_detection_script() { + if ( 'auto' === $this->get_elementor_ui_theme_preference() ) { + wp_add_inline_script( 'elementor-app', + 'if ( window.matchMedia && window.matchMedia( `(prefers-color-scheme: dark)` ).matches ) + { document.body.classList.add( `eps-theme-dark` ); }' ); + } + } + + private function enqueue_assets() { + Plugin::$instance->init_common(); + + /** @var WebCLIModule $web_cli */ + $web_cli = Plugin::$instance->modules_manager->get_modules( 'web-cli' ); + $web_cli->register_scripts(); + + Plugin::$instance->common->register_scripts(); + + wp_register_style( + 'select2', + $this->get_css_assets_url( 'e-select2', 'assets/lib/e-select2/css/' ), + [], + '4.0.6-rc.1' + ); + + Plugin::$instance->common->register_styles(); + + wp_register_style( + 'select2', + ELEMENTOR_ASSETS_URL . 'lib/e-select2/css/e-select2.css', + [], + '4.0.6-rc.1' + ); + + wp_enqueue_style( + 'elementor-app', + $this->get_css_assets_url( 'app', null, 'default', true ), + [ + 'select2', + 'elementor-icons', + 'elementor-common', + 'select2', + ], + ELEMENTOR_VERSION + ); + + wp_enqueue_script( + 'elementor-app-packages', + $this->get_js_assets_url( 'app-packages' ), + [ + 'wp-i18n', + 'react', + ], + ELEMENTOR_VERSION, + true + ); + + wp_register_script( + 'select2', + $this->get_js_assets_url( 'e-select2.full', 'assets/lib/e-select2/js/' ), + [ + 'jquery', + ], + '4.0.6-rc.1', + true + ); + + wp_enqueue_script( + 'elementor-app', + $this->get_js_assets_url( 'app' ), + [ + 'wp-url', + 'wp-i18n', + 'react', + 'react-dom', + 'select2', + ], + ELEMENTOR_VERSION, + true + ); + + $this->enqueue_dark_theme_detection_script(); + + wp_set_script_translations( 'elementor-app-packages', 'elementor' ); + wp_set_script_translations( 'elementor-app', 'elementor' ); + + $this->print_config(); + } + + public function enqueue_app_loader() { + wp_enqueue_script( + 'elementor-app-loader', + $this->get_js_assets_url( 'app-loader' ), + [ + 'elementor-common', + ], + ELEMENTOR_VERSION, + true + ); + + $this->print_config( 'elementor-app-loader' ); + } + + public function __construct() { + $this->add_component( 'site-editor', new Modules\SiteEditor\Module() ); + + if ( current_user_can( 'manage_options' ) || Utils::is_wp_cli() ) { + $this->add_component( 'import-export', new Modules\ImportExport\Module() ); + + // Kit library is depended on import-export + $this->add_component( 'kit-library', new Modules\KitLibrary\Module() ); + } + + $this->add_component( 'onboarding', new Modules\Onboarding\Module() ); + + add_action( 'elementor/admin/menu/register', function ( Admin_Menu_Manager $admin_menu ) { + $this->register_admin_menu( $admin_menu ); + }, Source_Local::ADMIN_MENU_PRIORITY + 10 ); + + // Happens after WP plugin page validation. + add_filter( 'add_menu_classes', [ $this, 'fix_submenu' ] ); + + if ( $this->is_current() ) { + add_action( 'admin_init', [ $this, 'admin_init' ], 0 ); + } else { + add_action( 'elementor/common/after_register_scripts', [ $this, 'enqueue_app_loader' ] ); + } + } +} diff --git a/wp-content/plugins/elementor/app/modules/import-export/compatibility/base-adapter.php b/wp-content/plugins/elementor/app/modules/import-export/compatibility/base-adapter.php new file mode 100644 index 0000000..ea9825a --- /dev/null +++ b/wp-content/plugins/elementor/app/modules/import-export/compatibility/base-adapter.php @@ -0,0 +1,34 @@ +kits_manager->get_active_kit(); + $kit_tabs = $kit->get_tabs(); + unset( $kit_tabs['settings-site-identity'] ); + $manifest_data['site-settings'] = array_keys( $kit_tabs ); + + continue; + } + + // Evanto uses "type" instead of "doc_type" + $template['doc_type'] = $template['type']; + + // Evanto uses for "name" instead of "title" + $template['title'] = $template['name']; + + // Envato specifying an exact path to the template rather than using its "ID" as an index. + // This extracts the "file name" part out of our exact source list and we treat that as an ID. + $file_name_without_extension = str_replace( '.json', '', basename( $template['source'] ) ); + + // Append the template to the global list: + $manifest_data['templates'][ $file_name_without_extension ] = $template; + } + + $manifest_data['name'] = $manifest_data['title']; + + return $manifest_data; + } + + public function adapt_site_settings( array $site_settings, array $manifest_data, $path ) { + if ( empty( $manifest_data['path-to-envto-site-settings'] ) ) { + return $site_settings; + } + + $global_file_path = $path . $manifest_data['path-to-envto-site-settings']; + $global_file_data = ImportExportUtils::read_json_file( $global_file_path ); + + return [ + 'settings' => $global_file_data['page_settings'], + ]; + } + + public function adapt_template( array $template_data, array $template_settings ) { + if ( ! empty( $template_data['metadata']['elementor_pro_conditions'] ) ) { + foreach ( $template_data['metadata']['elementor_pro_conditions'] as $condition ) { + list ( $type, $name, $sub_name, $sub_id ) = array_pad( explode( '/', $condition ), 4, '' ); + + $template_data['import_settings']['conditions'][] = compact( 'type', 'name', 'sub_name', 'sub_id' ); + } + } + + return $template_data; + } +} diff --git a/wp-content/plugins/elementor/app/modules/import-export/compatibility/kit-library.php b/wp-content/plugins/elementor/app/modules/import-export/compatibility/kit-library.php new file mode 100644 index 0000000..21696bd --- /dev/null +++ b/wp-content/plugins/elementor/app/modules/import-export/compatibility/kit-library.php @@ -0,0 +1,29 @@ +register_actions(); + + if ( ElementorUtils::is_wp_cli() ) { + \WP_CLI::add_command( 'elementor kit', WP_CLI::class ); + } + + ( new Usage() )->register(); + + $this->revert = new Revert(); + } + + public function get_init_settings() { + if ( ! Plugin::$instance->app->is_current() ) { + return []; + } + + return $this->get_config_data(); + } + + /** + * Register the import/export tab in elementor tools. + */ + public function register_settings_tab( Tools $tools ) { + $tools->add_tab( 'import-export-kit', [ + 'label' => esc_html__( 'Import / Export Kit', 'elementor' ), + 'sections' => [ + 'intro' => [ + 'label' => esc_html__( 'Template Kits', 'elementor' ), + 'callback' => function() { + $this->render_import_export_tab_content(); + }, + 'fields' => [], + ], + ], + ] ); + } + + /** + * Render the import/export tab content. + */ + private function render_import_export_tab_content() { + $intro_text_link = sprintf( '%s', esc_html__( 'Learn more', 'elementor' ) ); + + $intro_text = sprintf( + /* translators: 1: New line break, 2: Learn more link. */ + __( 'Design sites faster with a template kit that contains some or all components of a complete site, like templates, content & site settings.%1$sYou can import a kit and apply it to your site, or export the elements from this site to be used anywhere else. %2$s', 'elementor' ), + '
', + $intro_text_link + ); + + $content_data = [ + 'export' => [ + 'title' => esc_html__( 'Export a Template Kit', 'elementor' ), + 'button' => [ + 'url' => Plugin::$instance->app->get_base_url() . '#/export', + 'text' => esc_html__( 'Start Export', 'elementor' ), + ], + 'description' => esc_html__( 'Bundle your whole site - or just some of its elements - to be used for another website.', 'elementor' ), + 'link' => [ + 'url' => 'https://go.elementor.com/wp-dash-import-export-export-flow/', + 'text' => esc_html__( 'Learn More', 'elementor' ), + ], + ], + 'import' => [ + 'title' => esc_html__( 'Import a Template Kit', 'elementor' ), + 'button' => [ + 'url' => Plugin::$instance->app->get_base_url() . '#/import', + 'text' => esc_html__( 'Start Import', 'elementor' ), + ], + 'description' => esc_html__( 'Apply the design and settings of another site to this one.', 'elementor' ), + 'link' => [ + 'url' => 'https://go.elementor.com/wp-dash-import-export-import-flow/', + 'text' => esc_html__( 'Learn More', 'elementor' ), + ], + ], + ]; + + $last_imported_kit = $this->revert->get_last_import_session(); + $penultimate_imported_kit = $this->revert->get_penultimate_import_session(); + + $user_date_format = get_option( 'date_format' ); + $user_time_format = get_option( 'time_format' ); + $date_format = $user_date_format . ' ' . $user_time_format; + + $should_show_revert_section = $this->should_show_revert_section( $last_imported_kit ); + + if ( $should_show_revert_section ) { + if ( ! empty( $penultimate_imported_kit ) ) { + $revert_text = sprintf( + esc_html__( 'Remove all the content and site settings that came with "%1$s" on %2$s %3$s and revert to the site setting that came with "%4$s" on %5$s.', 'elementor' ), + ! empty( $last_imported_kit['kit_title'] ) ? $last_imported_kit['kit_title'] : esc_html__( 'imported kit', 'elementor' ), + gmdate( $date_format, $last_imported_kit['start_timestamp'] ), + '
', + ! empty( $penultimate_imported_kit['kit_title'] ) ? $penultimate_imported_kit['kit_title'] : esc_html__( 'imported kit', 'elementor' ), + gmdate( $date_format, $penultimate_imported_kit['start_timestamp'] ) + ); + } else { + $revert_text = sprintf( + esc_html__( 'Remove all the content and site settings that came with "%1$s" on %2$s.%3$s Your original site settings will be restored.', 'elementor' ), + ! empty( $last_imported_kit['kit_title'] ) ? $last_imported_kit['kit_title'] : esc_html__( 'imported kit', 'elementor' ), + gmdate( $date_format, $last_imported_kit['start_timestamp'] ), + '
' + ); + } + } + ?> + +
+

+ +
+ +
+
+

+ + + +
+

+ +
+ +
+ + $this->get_revert_href(), + 'id' => 'elementor-import-export__revert_kit', + 'class' => 'button', + ]; + ?> +
+

+ +

+

+ +

+ render_last_kit_thumbnail( $last_imported_kit ); ?> + > + + +
+ +
+ maybe_add_referrer_param( $nonced_admin_post_url ); + } + + /** + * Checks if referred by a kit and adds the referrer ID to the href + * + * @param string $href + * + * @return string + */ + private function maybe_add_referrer_param( string $href ): string { + $param_name = 'referrer_kit'; + + if ( empty( $_GET[ $param_name ] ) ) { + return $href; + } + + return add_query_arg( $param_name, sanitize_key( $_GET[ $param_name ] ), $href ); + } + + /** + * Render the last kit thumbnail if exists + * + * @param $last_imported_kit + * + * @return void + */ + private function render_last_kit_thumbnail( $last_imported_kit ) { + if ( empty( $last_imported_kit['kit_thumbnail'] ) ) { + return; + } + + ?> +
+
+
+

+ +

+
+ <?php echo esc_attr( $last_imported_kit['kit_title'] ); ?> +
+
+ ensure_writing_permissions(); + + $this->import = new Import( $file, [ 'referrer' => $referrer ] ); + + return [ + 'session' => $this->import->get_session_id(), + 'manifest' => $this->import->get_manifest(), + 'conflicts' => $this->import->get_settings_conflicts(), + ]; + } + + /** + * Import a kit by session_id. + * Upload and import a kit by kit zip file. + * + * If the split_to_chunks flag is true, the process won't start + * It will initialize the import process and return the session_id and the runners. + * + * Assigning the Import process to the 'import' property, + * so it will be available to use in different places such as: WP_Cli, Pro, etc. + * + * @param string $path Path to the file or session_id. + * @param array $settings Settings the import use to determine which content to import. + * (e.g: include, selected_plugins, selected_cpt, selected_override_conditions, etc.) + * @param bool $split_to_chunks Determine if the import process should be split into chunks. + * @return array + * @throws \Exception + */ + public function import_kit( string $path, array $settings, bool $split_to_chunks = false ): array { + $this->ensure_writing_permissions(); + $this->ensure_DOMDocument_exists(); + + $this->import = new Import( $path, $settings ); + $this->import->register_default_runners(); + + do_action( 'elementor/import-export/import-kit', $this->import ); + + if ( $split_to_chunks ) { + $this->import->init_import_session( true ); + + return [ + 'session' => $this->import->get_session_id(), + 'runners' => $this->import->get_runners_name(), + ]; + } + + return $this->import->run(); + } + + /** + * Resuming import process by re-creating the import instance and running the specific runner. + * + * @param string $session_id The id off the import session. + * @param string $runner_name The specific runner that we want to run. + * + * @return array Two types of response. + * 1. The status and the runner name. + * 2. The imported data. (Only if the runner is the last one in the import process) + * @throws \Exception + */ + public function import_kit_by_runner( string $session_id, string $runner_name ): array { + // Check session_id + $this->import = Import::from_session( $session_id ); + $runners = $this->import->get_runners_name(); + + $run = $this->import->run_runner( $runner_name ); + + if ( end( $runners ) === $run['runner'] ) { + return $this->import->get_imported_data(); + } + + return $run; + } + + /** + * Export a kit. + * + * Assigning the Export process to the 'export' property, + * so it will be available to use in different places such as: WP_Cli, Pro, etc. + * + * @param array $settings Settings the export use to determine which content to export. + * (e.g: include, kit_info, selected_plugins, selected_cpt, etc.) + * @return array + * @throws \Exception + */ + public function export_kit( array $settings ) { + $this->ensure_writing_permissions(); + + $this->export = new Export( $settings ); + $this->export->register_default_runners(); + + do_action( 'elementor/import-export/export-kit', $this->export ); + + return $this->export->run(); + } + + /** + * Handle revert kit ajax request. + */ + public function revert_last_imported_kit() { + $this->revert = new Revert(); + $this->revert->register_default_runners(); + + do_action( 'elementor/import-export/revert-kit', $this->revert ); + + $this->revert->run(); + } + + + /** + * Handle revert last imported kit ajax request. + */ + public function handle_revert_last_imported_kit() { + check_admin_referer( 'elementor_revert_kit' ); + + $this->revert_last_imported_kit(); + + wp_safe_redirect( admin_url( 'admin.php?page=' . Tools::PAGE_ID . '#tab-import-export-kit' ) ); + die; + } + + /** + * Register appropriate actions. + */ + private function register_actions() { + add_action( 'admin_init', function() { + if ( wp_doing_ajax() && + isset( $_POST['action'] ) && + wp_verify_nonce( ElementorUtils::get_super_global_value( $_POST, '_nonce' ), Ajax::NONCE_KEY ) && + current_user_can( 'manage_options' ) + ) { + $this->maybe_handle_ajax(); + } + } ); + + add_action( 'admin_post_elementor_revert_kit', [ $this, 'handle_revert_last_imported_kit' ] ); + + add_action( 'admin_enqueue_scripts', [ $this, 'enqueue_scripts' ] ); + + $page_id = Tools::PAGE_ID; + + add_action( "elementor/admin/after_create_settings/{$page_id}", [ $this, 'register_settings_tab' ] ); + + // TODO 18/04/2023 : This needs to be moved to the runner itself after https://elementor.atlassian.net/browse/HTS-434 is done. + if ( self::IMPORT_PLUGINS_ACTION === ElementorUtils::get_super_global_value( $_SERVER, 'HTTP_X_ELEMENTOR_ACTION' ) ) { + add_filter( 'woocommerce_create_pages', [ $this, 'empty_pages' ], 10, 0 ); + } + // TODO ^^^ + } + + /** + * Prevent the creation of the default WooCommerce pages (Cart, Checkout, etc.) + * + * TODO 18/04/2023 : This needs to be moved to the runner itself after https://elementor.atlassian.net/browse/HTS-434 is done. + * @return array + */ + public function empty_pages(): array { + return []; + } + + private function ensure_writing_permissions() { + $server = new Server(); + + $paths_to_check = [ + Server::KEY_PATH_WP_CONTENT_DIR => $server->get_system_path( Server::KEY_PATH_WP_CONTENT_DIR ), + Server::KEY_PATH_UPLOADS_DIR => $server->get_system_path( Server::KEY_PATH_UPLOADS_DIR ), + Server::KEY_PATH_ELEMENTOR_UPLOADS_DIR => $server->get_system_path( Server::KEY_PATH_ELEMENTOR_UPLOADS_DIR ), + ]; + + $permissions = $server->get_paths_permissions( $paths_to_check ); + + // WP Content dir has to be exists and writable. + if ( ! $permissions[ Server::KEY_PATH_WP_CONTENT_DIR ]['write'] ) { + throw new \Error( self::NO_WRITE_PERMISSIONS_KEY ); + } + + // WP Uploads dir has to be exists and writable. + if ( ! $permissions[ Server::KEY_PATH_UPLOADS_DIR ]['write'] ) { + throw new \Error( self::NO_WRITE_PERMISSIONS_KEY ); + } + + // Elementor uploads dir permissions is divided to 2 cases: + // 1. If the dir exists, it has to be writable. + // 2. If the dir doesn't exist, the parent dir has to be writable (wp uploads dir), so we can create it. + if ( $permissions[ Server::KEY_PATH_ELEMENTOR_UPLOADS_DIR ]['exists'] && ! $permissions[ Server::KEY_PATH_ELEMENTOR_UPLOADS_DIR ]['write'] ) { + throw new \Error( self::NO_WRITE_PERMISSIONS_KEY ); + } + } + + private function ensure_DOMDocument_exists() { + if ( ! class_exists( 'DOMDocument' ) ) { + throw new \Error( self::DOMDOCUMENT_MISSING ); + } + } + + /** + * Enqueue admin scripts + */ + public function enqueue_scripts() { + wp_enqueue_script( + 'elementor-import-export-admin', + $this->get_js_assets_url( 'import-export-admin' ), + [ 'elementor-common' ], + ELEMENTOR_VERSION, + true + ); + + wp_localize_script( + 'elementor-import-export-admin', + 'elementorImportExport', + [ + 'lastImportedSession' => $this->revert->get_last_import_session(), + 'appUrl' => Plugin::$instance->app->get_base_url() . '#/kit-library', + ] + ); + } + + /** + * Assign each ajax action to a method. + */ + private function maybe_handle_ajax() { + // phpcs:ignore WordPress.Security.NonceVerification.Missing + $action = ElementorUtils::get_super_global_value( $_POST, 'action' ); + + try { + switch ( $action ) { + case static::EXPORT_TRIGGER_KEY: + $this->handle_export_kit(); + break; + + case static::UPLOAD_TRIGGER_KEY: + $this->handle_upload_kit(); + break; + + case static::IMPORT_TRIGGER_KEY: + $this->handle_import_kit(); + break; + + case static::IMPORT_RUNNER_TRIGGER_KEY: + $this->handle_import_kit__runner(); + break; + + default: + break; + } + } catch ( \Error $e ) { + if ( isset( $this->import ) ) { + $this->import->finalize_import_session_option(); + } + + Plugin::$instance->logger->get_logger()->error( $e->getMessage(), [ + 'meta' => [ + 'trace' => $e->getTraceAsString(), + ], + ] ); + + if ( isset( $this->import ) && $this->is_third_party_class( $e->getTrace()[0]['class'] ) ) { + wp_send_json_error( self::THIRD_PARTY_ERROR, 500 ); + } + + wp_send_json_error( $e->getMessage(), 500 ); + } + } + + /** + * Handle upload kit ajax request. + */ + private function handle_upload_kit() { + // PHPCS - A URL that should contain special chars (auth headers information). + $file_url = isset( $_POST['e_import_file'] ) + // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized + ? wp_unslash( $_POST['e_import_file'] ) + : ''; + + // Import from kit library + if ( ! empty( $file_url ) ) { + if ( + ! wp_verify_nonce( ElementorUtils::get_super_global_value( $_POST, 'e_kit_library_nonce' ), 'kit-library-import' ) + ) { + throw new \Error( 'Invalid kit library nonce.' ); + } + + if ( ! filter_var( $file_url, FILTER_VALIDATE_URL ) || 0 !== strpos( $file_url, 'http' ) ) { + throw new \Error( static::KIT_LIBRARY_ERROR_KEY ); + } + + $remote_zip_request = wp_remote_get( $file_url ); + + if ( is_wp_error( $remote_zip_request ) ) { + Plugin::$instance->logger->get_logger()->error( $remote_zip_request->get_error_message() ); + throw new \Error( static::KIT_LIBRARY_ERROR_KEY ); + } + + if ( 200 !== $remote_zip_request['response']['code'] ) { + Plugin::$instance->logger->get_logger()->error( $remote_zip_request['response']['message'] ); + throw new \Error( static::KIT_LIBRARY_ERROR_KEY ); + } + + $file_name = Plugin::$instance->uploads_manager->create_temp_file( $remote_zip_request['body'], 'kit.zip' ); + $referrer = static::REFERRER_KIT_LIBRARY; + } else { + // PHPCS - Already validated in caller function. + $file_name = ElementorUtils::get_super_global_value( $_FILES, 'e_import_file' )['tmp_name']; + $referrer = static::REFERRER_LOCAL; + } + + Plugin::$instance->logger->get_logger()->info( 'Uploading Kit: ', [ + 'meta' => [ + 'kit_id' => ElementorUtils::get_super_global_value( $_POST, 'kit_id' ), + 'referrer' => $referrer, + ], + ] ); + + $uploaded_kit = $this->upload_kit( $file_name, $referrer ); + + $session_dir = $uploaded_kit['session']; + $manifest = $uploaded_kit['manifest']; + $conflicts = $uploaded_kit['conflicts']; + + if ( ! empty( $file_url ) ) { + Plugin::$instance->uploads_manager->remove_file_or_dir( dirname( $file_name ) ); + } + + if ( isset( $manifest['plugins'] ) && ! current_user_can( 'install_plugins' ) ) { + throw new \Error( static::PLUGIN_PERMISSIONS_ERROR_KEY ); + } + + $result = [ + 'session' => $session_dir, + 'manifest' => $manifest, + ]; + + if ( ! empty( $conflicts ) ) { + $result['conflicts'] = $conflicts; + } else { + // Moved into the IE process \Elementor\App\Modules\ImportExport\Processes\Import::get_default_settings_conflicts + // TODO: remove in 3.10.0 + $result = apply_filters( 'elementor/import/stage_1/result', $result ); + } + + wp_send_json_success( $result ); + } + + /** + * Handle import kit ajax request. + */ + private function handle_import_kit() { + // PHPCS - Already validated in caller function + $settings = json_decode( ElementorUtils::get_super_global_value( $_POST, 'data' ), true ); // phpcs:ignore WordPress.Security.NonceVerification.Missing + $tmp_folder_id = $settings['session']; + + $import = $this->import_kit( $tmp_folder_id, $settings, true ); + + // get_settings_config() added manually because the frontend Ajax request doesn't trigger the get_init_settings(). + $import['configData'] = $this->get_config_data(); + + Plugin::$instance->logger->get_logger()->info( + sprintf( 'Selected import runners: %1$s', + implode( ', ', $import['runners'] ) + ) + ); + + wp_send_json_success( $import ); + } + + /** + * Handle ajax request for running specific runner in the import kit process. + */ + private function handle_import_kit__runner() { + // PHPCS - Already validated in caller function + $settings = json_decode( ElementorUtils::get_super_global_value( $_POST, 'data' ), true ); // phpcs:ignore WordPress.Security.NonceVerification.Missing + $session_id = $settings['session']; + $runner = $settings['runner']; + + $import = $this->import_kit_by_runner( $session_id, $runner ); + + // get_settings_config() added manually because the frontend Ajax request doesn't trigger the get_init_settings(). + $import['configData'] = $this->get_config_data(); + + if ( ! empty( $import['status'] ) ) { + Plugin::$instance->logger->get_logger()->info( + sprintf( 'Import runner completed: %1$s %2$s', + $import['runner'], + ( 'success' === $import['status'] ? '✓' : '✗' ) + ) + ); + } + + wp_send_json_success( $import ); + } + + /** + * Handle export kit ajax request. + */ + private function handle_export_kit() { + // PHPCS - Already validated in caller function + $settings = json_decode( ElementorUtils::get_super_global_value( $_POST, 'data' ), true ); // phpcs:ignore WordPress.Security.NonceVerification.Missing + $export = $this->export_kit( $settings ); + + $file_name = $export['file_name']; + $file = ElementorUtils::file_get_contents( $file_name ); + + if ( ! $file ) { + throw new \Error( 'Could not read the exported file.' ); + } + + Plugin::$instance->uploads_manager->remove_file_or_dir( dirname( $file_name ) ); + + $result = [ + 'manifest' => $export['manifest'], + 'file' => base64_encode( $file ), + ]; + + wp_send_json_success( $result ); + } + + /** + * Get config data that will be exposed to the frontend. + */ + private function get_config_data() { + $export_nonce = wp_create_nonce( 'elementor_export' ); + $export_url = add_query_arg( [ '_nonce' => $export_nonce ], Plugin::$instance->app->get_base_url() ); + + return [ + 'exportURL' => $export_url, + 'summaryTitles' => $this->get_summary_titles(), + 'builtinWpPostTypes' => ImportExportUtils::get_builtin_wp_post_types(), + 'elementorPostTypes' => ImportExportUtils::get_elementor_post_types(), + 'isUnfilteredFilesEnabled' => Uploads_Manager::are_unfiltered_uploads_enabled(), + 'elementorHomePageUrl' => $this->get_elementor_home_page_url(), + 'recentlyEditedElementorPageUrl' => $this->get_recently_edited_elementor_page_url(), + 'tools_url' => Tools::get_url(), + 'importSessions' => Revert::get_import_sessions(), + 'lastImportedSession' => $this->revert->get_last_import_session(), + ]; + } + + /** + * Get labels of Elementor document types, Elementor Post types, WordPress Post types and Custom Post types. + */ + private function get_summary_titles() { + $summary_titles = []; + + $document_types = Plugin::$instance->documents->get_document_types(); + + foreach ( $document_types as $name => $document_type ) { + $summary_titles['templates'][ $name ] = [ + 'single' => $document_type::get_title(), + 'plural' => $document_type::get_plural_title(), + ]; + } + + $elementor_post_types = ImportExportUtils::get_elementor_post_types(); + $wp_builtin_post_types = ImportExportUtils::get_builtin_wp_post_types(); + $post_types = array_merge( $elementor_post_types, $wp_builtin_post_types ); + + foreach ( $post_types as $post_type ) { + $post_type_object = get_post_type_object( $post_type ); + + $summary_titles['content'][ $post_type ] = [ + 'single' => $post_type_object->labels->singular_name ?? '', + 'plural' => $post_type_object->label ?? '', + ]; + } + + $custom_post_types = ImportExportUtils::get_registered_cpt_names(); + if ( ! empty( $custom_post_types ) ) { + foreach ( $custom_post_types as $custom_post_type ) { + + $custom_post_types_object = get_post_type_object( $custom_post_type ); + // CPT data appears in two arrays: + // 1. content object: in order to show the export summary when completed in getLabel function + $summary_titles['content'][ $custom_post_type ] = [ + 'single' => $custom_post_types_object->labels->singular_name ?? '', + 'plural' => $custom_post_types_object->label ?? '', + ]; + + // 2. customPostTypes object: in order to actually export the data + $summary_titles['content']['customPostTypes'][ $custom_post_type ] = [ + 'single' => $custom_post_types_object->labels->singular_name ?? '', + 'plural' => $custom_post_types_object->label ?? '', + ]; + } + } + + $active_kit = Plugin::$instance->kits_manager->get_active_kit(); + + foreach ( $active_kit->get_tabs() as $key => $tab ) { + $summary_titles['site-settings'][ $key ] = $tab->get_title(); + } + + return $summary_titles; + } + + public function should_show_revert_section( $last_imported_kit ) { + if ( empty( $last_imported_kit ) ) { + return false; + } + + // TODO: BC - remove in the future + // The 'templates' runner was in core and moved to the Pro plugin. (Part of it still exits in the Core for BC) + // The runner that is in the core version is missing the revert functionality, + // therefore we shouldn't display the revert section if the import process done with the core version. + $is_import_templates_ran = isset( $last_imported_kit['runners']['templates'] ); + if ( $this->has_pro() && $is_import_templates_ran ) { + $has_imported_templates = ! empty( $last_imported_kit['runners']['templates'] ); + + return $has_imported_templates; + } + + return true; + } + + public function has_pro(): bool { + return ElementorUtils::has_pro(); + } + + private function get_elementor_editor_home_page_url() { + if ( 'page' !== get_option( 'show_on_front' ) ) { + return ''; + } + + $frontpage_id = get_option( 'page_on_front' ); + + return $this->get_elementor_editor_page_url( $frontpage_id ); + } + + private function get_elementor_home_page_url() { + if ( 'page' !== get_option( 'show_on_front' ) ) { + return ''; + } + + $frontpage_id = get_option( 'page_on_front' ); + + return $this->get_elementor_page_url( $frontpage_id ); + } + + private function get_recently_edited_elementor_page_url() { + $query = ElementorUtils::get_recently_edited_posts_query( [ 'posts_per_page' => 1 ] ); + + if ( ! isset( $query->post ) ) { + return ''; + } + + return $this->get_elementor_page_url( $query->post->ID ); + } + + private function get_recently_edited_elementor_editor_page_url() { + $query = ElementorUtils::get_recently_edited_posts_query( [ 'posts_per_page' => 1 ] ); + + if ( ! isset( $query->post ) ) { + return ''; + } + + return $this->get_elementor_editor_page_url( $query->post->ID ); + } + + private function get_elementor_document( $page_id ) { + $document = Plugin::$instance->documents->get( $page_id ); + + if ( ! $document || ! $document->is_built_with_elementor() ) { + return false; + } + + return $document; + } + + private function get_elementor_page_url( $page_id ) { + $document = $this->get_elementor_document( $page_id ); + + return $document ? $document->get_preview_url() : ''; + } + + private function get_elementor_editor_page_url( $page_id ) { + $document = $this->get_elementor_document( $page_id ); + + return $document ? $document->get_edit_url() : ''; + } + + /** + * @param string $class + * + * @return bool + */ + public function is_third_party_class( $class ) { + $allowed_classes = [ + 'Elementor\\', + 'ElementorPro\\', + 'WP_', + 'wp_', + ]; + + foreach ( $allowed_classes as $allowed_class ) { + if ( str_starts_with( $class, $allowed_class ) ) { + return false; + } + } + + return true; + } +} diff --git a/wp-content/plugins/elementor/app/modules/import-export/processes/export.php b/wp-content/plugins/elementor/app/modules/import-export/processes/export.php new file mode 100644 index 0000000..d011648 --- /dev/null +++ b/wp-content/plugins/elementor/app/modules/import-export/processes/export.php @@ -0,0 +1,334 @@ +settings_include = ! empty( $settings['include'] ) ? $settings['include'] : null; + $this->settings_kit_info = ! empty( $settings['kitInfo'] ) ? $settings['kitInfo'] : null; + $this->settings_selected_plugins = isset( $settings['plugins'] ) ? $settings['plugins'] : null; + $this->settings_selected_custom_post_types = isset( $settings['selectedCustomPostTypes'] ) ? $settings['selectedCustomPostTypes'] : null; + } + + /** + * Register a runner. + * + * @param Export_Runner_Base $runner_instance + */ + public function register( Export_Runner_Base $runner_instance ) { + $this->runners[ $runner_instance::get_name() ] = $runner_instance; + } + + public function register_default_runners() { + $this->register( new Site_Settings() ); + $this->register( new Plugins() ); + $this->register( new Templates() ); + $this->register( new Taxonomies() ); + $this->register( new Elementor_Content() ); + $this->register( new Wp_Content() ); + } + + /** + * Execute the export process. + * + * @return array The export data output. + * + * @throws \Exception If no export runners have been specified. + */ + public function run() { + if ( empty( $this->runners ) ) { + throw new \Exception( 'Couldn’t execute the export process because no export runners have been specified. Try again by specifying export runners.' ); + } + + $this->set_default_settings(); + + $this->init_zip_archive(); + $this->init_manifest_data(); + + $data = [ + 'include' => $this->settings_include, + 'selected_plugins' => $this->settings_selected_plugins, + 'selected_custom_post_types' => $this->settings_selected_custom_post_types, + ]; + + foreach ( $this->runners as $runner ) { + if ( $runner->should_export( $data ) ) { + $export_result = $runner->export( $data ); + $this->handle_export_result( $export_result ); + } + } + + $this->add_json_file( 'manifest', $this->manifest_data ); + + $zip_file_name = $this->zip->filename; + $this->zip->close(); + + return [ + 'manifest' => $this->manifest_data, + 'file_name' => $zip_file_name, + ]; + } + + /** + * Set default settings for the export. + */ + private function set_default_settings() { + if ( ! is_array( $this->get_settings_include() ) ) { + $this->settings_include( $this->get_default_settings_include() ); + } + + if ( ! is_array( $this->get_settings_kit_info() ) ) { + $this->settings_kit_info( $this->get_default_settings_kit_info() ); + } + + if ( ! is_array( $this->get_settings_selected_custom_post_types() ) && in_array( 'content', $this->settings_include, true ) ) { + $this->settings_selected_custom_post_types( $this->get_default_settings_custom_post_types() ); + } + + if ( ! is_array( $this->get_settings_selected_plugins() ) && in_array( 'plugins', $this->settings_include, true ) ) { + $this->settings_selected_plugins( $this->get_default_settings_selected_plugins() ); + } + } + + public function settings_include( $include ) { + $this->settings_include = $include; + } + + public function get_settings_include() { + return $this->settings_include; + } + + private function settings_kit_info( $kit_info ) { + $this->settings_kit_info = $kit_info; + } + + private function get_settings_kit_info() { + return $this->settings_kit_info; + } + + public function settings_selected_custom_post_types( $selected_custom_post_types ) { + $this->settings_selected_custom_post_types = $selected_custom_post_types; + } + + public function get_settings_selected_custom_post_types() { + return $this->settings_selected_custom_post_types; + } + + public function settings_selected_plugins( $plugins ) { + $this->settings_selected_plugins = $plugins; + } + + public function get_settings_selected_plugins() { + return $this->settings_selected_plugins; + } + + /** + * Get the default settings of which content types should be exported. + * + * @return array + */ + private function get_default_settings_include() { + return [ 'templates', 'content', 'settings', 'plugins' ]; + } + + /** + * Get the default settings of the kit info. + * + * @return array + */ + private function get_default_settings_kit_info() { + return [ + 'title' => 'kit', + 'description' => '', + ]; + } + + /** + * Get the default settings of the plugins that should be exported. + * + * @return array{name: string, plugin:string, pluginUri: string, version: string} + */ + private function get_default_settings_selected_plugins() { + $installed_plugins = Plugin::$instance->wp->get_plugins(); + + return $installed_plugins->map( function ( $item, $key ) { + return [ + 'name' => $item['Name'], + 'plugin' => $key, + 'pluginUri' => $item['PluginURI'], + 'version' => $item['Version'], + ]; + } )->all(); + } + + /** + * Get the default settings of all the custom post types that should be exported. + * Should be all the custom post types that are not built in to WordPress and not part of Elementor. + * + * @return array + */ + private function get_default_settings_custom_post_types() { + return Utils::get_registered_cpt_names(); + } + + /** + * Init the zip archive. + */ + private function init_zip_archive() { + if ( ! class_exists( '\ZipArchive' ) ) { + throw new \Error( static::ZIP_ARCHIVE_MODULE_MISSING ); + } + + $zip = new \ZipArchive(); + + $temp_dir = Plugin::$instance->uploads_manager->create_unique_dir(); + + $zip_file_name = $temp_dir . sanitize_title( $this->settings_kit_info['title'] ) . '.zip'; + + $zip->open( $zip_file_name, \ZipArchive::CREATE | \ZipArchive::OVERWRITE ); + + $this->zip = $zip; + } + + /** + * Init the manifest data and add some basic info to it. + */ + private function init_manifest_data() { + $kit_post = Plugin::$instance->kits_manager->get_active_kit()->get_post(); + + $manifest_data = [ + 'name' => sanitize_title( $this->settings_kit_info['title'] ), + 'title' => $this->settings_kit_info['title'], + 'description' => $this->settings_kit_info['description'], + 'author' => get_the_author_meta( 'display_name', $kit_post->post_author ), + 'version' => Module::FORMAT_VERSION, + 'elementor_version' => ELEMENTOR_VERSION, + 'created' => gmdate( 'Y-m-d H:i:s' ), + 'thumbnail' => get_the_post_thumbnail_url( $kit_post ), + 'site' => get_site_url(), + ]; + + $this->manifest_data = $manifest_data; + } + + /** + * Handle the export process output. + * Add the manifest data from the runner to the manifest.json file. + * Create files according to the files array that should be exported by the runner. + * + * @param array $export_result + */ + private function handle_export_result( $export_result ) { + foreach ( $export_result['manifest'] as $data ) { + $this->manifest_data += $data; + } + + if ( isset( $export_result['files']['path'] ) ) { + $export_result['files'] = [ $export_result['files'] ]; + } + + foreach ( $export_result['files'] as $file ) { + $file_extension = pathinfo( $file['path'], PATHINFO_EXTENSION ); + if ( empty( $file_extension ) ) { + $this->add_json_file( + $file['path'], + $file['data'] + ); + } else { + $this->add_file( + $file['path'], + $file['data'] + ); + } + } + } + + /** + * Add json file to the zip archive. + * + * @param string $path The relative path to the file. + * @param array $content The content of the file. + * @param int $json_flags + */ + private function add_json_file( $path, array $content, $json_flags = 0 ) { + if ( ! Str::ends_with( $path, '.json' ) ) { + $path .= '.json'; + } + + $this->add_file( $path, wp_json_encode( $content, $json_flags ) ); + } + + /** + * Add file to the zip archive. + * + * @param string $file + * @param string $content The content of the file. + */ + private function add_file( $file, $content ) { + $this->zip->addFromString( $file, $content ); + } +} diff --git a/wp-content/plugins/elementor/app/modules/import-export/processes/import.php b/wp-content/plugins/elementor/app/modules/import-export/processes/import.php new file mode 100644 index 0000000..3d57bfc --- /dev/null +++ b/wp-content/plugins/elementor/app/modules/import-export/processes/import.php @@ -0,0 +1,806 @@ + { "elements": array , "settings": array } } + */ + private $documents_data = []; + + /** + * Path to the extracted kit files. + * + * @var string + */ + private $extracted_directory_path; + + /** + * Imported kit manifest. + * + * @var array + */ + private $manifest; + + /** + * Imported kit site settings. (e.g: custom_colors, custom_typography, etc.) + * + * @var array + */ + private $site_settings; + + /** + * Selected content types to import. + * + * @var array + */ + private $settings_include; + + /** + * Referer of the import. (e.g: kit-library, local, etc.) + * + * @var string + */ + private $settings_referrer; + + /** + * All the conflict between the exited templates and the kit templates. + * + * @var array + */ + private $settings_conflicts; + + /** + * Selected elementor templates conditions to override. + * + * @var array + */ + private $settings_selected_override_conditions; + + /** + * Selected custom post types to import. + * + * @var array + */ + private $settings_selected_custom_post_types; + + /** + * Selected plugins to import. + * + * @var array + */ + private $settings_selected_plugins; + + /** + * The imported data output. + * + * @var array + */ + private $imported_data = []; + + /** + * The metadata output of the import runners. + * Will be saved in the import_session and will be used to revert the import process. + * + * @var array + */ + private $runners_import_metadata = []; + + /** + * @param string $path session_id | zip_file_path + * @param array $settings Use to determine which content to import. + * (e.g: include, selected_plugins, selected_cpt, selected_override_conditions, etc.) + * @param array|null $old_instance An array of old instance parameters that will be used for creating new instance. + * We are using it for quick creation of the instance when the import process is being split into chunks. + * @throws \Exception + */ + public function __construct( string $path, array $settings = [], array $old_instance = null ) { + if ( ! empty( $old_instance ) ) { + $this->set_import_object( $old_instance ); + } else { + if ( is_file( $path ) ) { + $this->extracted_directory_path = $this->extract_zip( $path ); + } else { + $elementor_tmp_directory = Plugin::$instance->uploads_manager->get_temp_dir(); + $path = $elementor_tmp_directory . basename( $path ); + + if ( ! is_dir( $path ) ) { + throw new \Exception( 'Couldn’t execute the import process because the import session does not exist.' ); + } + + $this->extracted_directory_path = $path . '/'; + } + + $this->session_id = basename( $this->extracted_directory_path ); + $this->kit_id = $settings['id'] ?? ''; + $this->settings_referrer = ! empty( $settings['referrer'] ) ? $settings['referrer'] : 'local'; + $this->settings_include = ! empty( $settings['include'] ) ? $settings['include'] : null; + + // Using isset and not empty is important since empty array is valid option. + $this->settings_selected_override_conditions = $settings['overrideConditions'] ?? null; + $this->settings_selected_custom_post_types = $settings['selectedCustomPostTypes'] ?? null; + $this->settings_selected_plugins = $settings['plugins'] ?? null; + + $this->manifest = $this->read_manifest_json(); + $this->site_settings = $this->read_site_settings_json(); + + $this->set_default_settings(); + } + + add_filter( 'wp_php_error_args', function ( $args, $error ) { + return $this->filter_php_error_args( $args, $error ); + }, 10, 2 ); + } + + /** + * Set the import object parameters. + * + * @param array $instance + * @return void + */ + private function set_import_object( array $instance ) { + $this->session_id = $instance['session_id']; + + $instance_data = $instance['instance_data']; + + $this->extracted_directory_path = $instance_data['extracted_directory_path']; + $this->runners = $instance_data['runners']; + $this->adapters = $instance_data['adapters']; + + $this->manifest = $instance_data['manifest']; + $this->site_settings = $instance_data['site_settings']; + + $this->settings_include = $instance_data['settings_include']; + $this->settings_referrer = $instance_data['settings_referrer']; + $this->settings_conflicts = $instance_data['settings_conflicts']; + $this->settings_selected_override_conditions = $instance_data['settings_selected_override_conditions']; + $this->settings_selected_custom_post_types = $instance_data['settings_selected_custom_post_types']; + $this->settings_selected_plugins = $instance_data['settings_selected_plugins']; + + $this->documents_data = $instance_data['documents_data']; + $this->imported_data = $instance_data['imported_data']; + $this->runners_import_metadata = $instance_data['runners_import_metadata']; + } + + /** + * Creating a new instance of the import process by the id of the old import session. + * + * @param string $session_id + * + * @return Import + * @throws \Exception + */ + public static function from_session( string $session_id ): Import { + $import_sessions = Utils::get_import_sessions(); + + if ( ! $import_sessions || ! isset( $import_sessions[ $session_id ] ) ) { + throw new \Exception( 'Couldn’t execute the import process because the import session does not exist.' ); + } + + $import_session = $import_sessions[ $session_id ]; + + return new self( $session_id, [], $import_session ); + } + + /** + * Register a runner. + * Be aware that the runner will be executed in the order of registration, the order is crucial for the import process. + * + * @param Import_Runner_Base $runner_instance + */ + public function register( Import_Runner_Base $runner_instance ) { + $this->runners[ $runner_instance::get_name() ] = $runner_instance; + } + + public function register_default_runners() { + $this->register( new Site_Settings() ); + $this->register( new Plugins() ); + $this->register( new Templates() ); + $this->register( new Taxonomies() ); + $this->register( new Elementor_Content() ); + $this->register( new Wp_Content() ); + } + + /** + * Set default settings for the import. + */ + private function set_default_settings() { + if ( ! is_array( $this->get_settings_include() ) ) { + $this->settings_include( $this->get_default_settings_include() ); + } + + if ( ! is_array( $this->get_settings_conflicts() ) ) { + $this->settings_conflicts( $this->get_default_settings_conflicts() ); + } + + if ( ! is_array( $this->get_settings_selected_override_conditions() ) ) { + $this->settings_selected_override_conditions( $this->get_default_settings_override_conditions() ); + } + + if ( ! is_array( $this->get_settings_selected_custom_post_types() ) ) { + $this->settings_selected_custom_post_types( $this->get_default_settings_custom_post_types() ); + } + + if ( ! is_array( $this->get_settings_selected_plugins() ) ) { + $this->settings_selected_plugins( $this->get_default_settings_plugins() ); + } + } + + /** + * Execute the import process. + * + * @return array The imported data output. + * + * @throws \Exception If no import runners have been specified. + */ + public function run() { + if ( empty( $this->runners ) ) { + throw new \Exception( 'Couldn’t execute the import process because no import runners have been specified. Try again by specifying import runners.' ); + } + + $data = [ + 'session_id' => $this->session_id, + 'include' => $this->settings_include, + 'manifest' => $this->manifest, + 'site_settings' => $this->site_settings, + 'selected_plugins' => $this->settings_selected_plugins, + 'extracted_directory_path' => $this->extracted_directory_path, + 'selected_custom_post_types' => $this->settings_selected_custom_post_types, + ]; + + $this->init_import_session(); + + add_filter( 'elementor/document/save/data', [ $this, 'prevent_saving_elements_on_post_creation' ], 10, 2 ); + + // Set the Request's state as an Elementor upload request, in order to support unfiltered file uploads. + Plugin::$instance->uploads_manager->set_elementor_upload_state( true ); + + foreach ( $this->runners as $runner ) { + if ( $runner->should_import( $data ) ) { + $import = $runner->import( $data, $this->imported_data ); + $this->imported_data = array_merge_recursive( $this->imported_data, $import ); + + $this->runners_import_metadata[ $runner::get_name() ] = $runner->get_import_session_metadata(); + } + } + + // After the upload complete, set the elementor upload state back to false. + Plugin::$instance->uploads_manager->set_elementor_upload_state( false ); + + remove_filter( 'elementor/document/save/data', [ $this, 'prevent_saving_elements_on_post_creation' ], 10 ); + + $this->finalize_import_session_option(); + + $this->save_elements_of_imported_posts(); + + Plugin::$instance->uploads_manager->remove_file_or_dir( $this->extracted_directory_path ); + return $this->imported_data; + } + + /** + * Run specific runner by runner_name + * + * @param string $runner_name + * + * @return array + * + * @throws \Exception If no export runners have been specified. + */ + public function run_runner( string $runner_name ): array { + if ( empty( $this->runners ) ) { + throw new \Exception( 'Couldn’t execute the import process because no import runners have been specified. Try again by specifying import runners.' ); + } + + $data = [ + 'session_id' => $this->session_id, + 'include' => $this->settings_include, + 'manifest' => $this->manifest, + 'site_settings' => $this->site_settings, + 'selected_plugins' => $this->settings_selected_plugins, + 'extracted_directory_path' => $this->extracted_directory_path, + 'selected_custom_post_types' => $this->settings_selected_custom_post_types, + ]; + + add_filter( 'elementor/document/save/data', [ $this, 'prevent_saving_elements_on_post_creation' ], 10, 2 ); + + // Set the Request's state as an Elementor upload request, in order to support unfiltered file uploads. + Plugin::$instance->uploads_manager->set_elementor_upload_state( true ); + + $runner = $this->runners[ $runner_name ]; + + if ( empty( $runner ) ) { + throw new \Exception( 'Couldn’t execute the import process because the import runner was not found. Try again by specifying an import runner.' ); + } + + if ( $runner->should_import( $data ) ) { + $import = $runner->import( $data, $this->imported_data ); + $this->imported_data = array_merge_recursive( $this->imported_data, $import ); + + $this->runners_import_metadata[ $runner::get_name() ] = $runner->get_import_session_metadata(); + } + + // After the upload complete, set the elementor upload state back to false. + Plugin::$instance->uploads_manager->set_elementor_upload_state( false ); + + remove_filter( 'elementor/document/save/data', [ $this, 'prevent_saving_elements_on_post_creation' ], 10 ); + + $is_last_runner = key( array_slice( $this->runners, -1, 1, true ) ) === $runner_name; + if ( $is_last_runner ) { + $this->finalize_import_session_option(); + $this->save_elements_of_imported_posts(); + } else { + $this->update_instance_data_in_import_session_option(); + } + + return [ + 'status' => 'success', + 'runner' => $runner_name, + ]; + } + + /** + * Create and save all the instance data to the import sessions option. + * + * @return void + */ + public function init_import_session( $save_instance_data = false ) { + $import_sessions = Utils::get_import_sessions( true ); + + $import_sessions[ $this->session_id ] = [ + 'session_id' => $this->session_id, + 'kit_title' => $this->manifest['title'] ?? '', + 'kit_name' => $this->manifest['name'] ?? '', + 'kit_thumbnail' => $this->get_kit_thumbnail(), + 'kit_source' => $this->settings_referrer, + 'user_id' => get_current_user_id(), + 'start_timestamp' => current_time( 'timestamp' ), + ]; + + if ( $save_instance_data ) { + $import_sessions[ $this->session_id ]['instance_data'] = [ + 'extracted_directory_path' => $this->extracted_directory_path, + 'runners' => $this->runners, + 'adapters' => $this->adapters, + + 'manifest' => $this->manifest, + 'site_settings' => $this->site_settings, + + 'settings_include' => $this->settings_include, + 'settings_referrer' => $this->settings_referrer, + 'settings_conflicts' => $this->settings_conflicts, + 'settings_selected_override_conditions' => $this->settings_selected_override_conditions, + 'settings_selected_custom_post_types' => $this->settings_selected_custom_post_types, + 'settings_selected_plugins' => $this->settings_selected_plugins, + + 'documents_data' => $this->documents_data, + 'imported_data' => $this->imported_data, + 'runners_import_metadata' => $this->runners_import_metadata, + ]; + } + + update_option( Module::OPTION_KEY_ELEMENTOR_IMPORT_SESSIONS, $import_sessions, false ); + } + + /** + * Get the Kit thumbnail, goes to the home page thumbnail if main doesn't exist + * + * @return string + */ + private function get_kit_thumbnail(): string { + if ( ! empty( $this->manifest['thumbnail'] ) ) { + return $this->manifest['thumbnail']; + } + + if ( empty( $this->kit_id ) ) { + return ''; + } + + $api = new Kit_Library_Api(); + $kit = $api->get_by_id( $this->kit_id ); + + if ( is_wp_error( $kit ) ) { + return ''; + } + + return $kit->thumbnail; + } + + public function get_runners_name(): array { + return array_keys( $this->runners ); + } + + public function get_manifest() { + return $this->manifest; + } + + public function get_extracted_directory_path() { + return $this->extracted_directory_path; + } + + public function get_session_id() { + return $this->session_id; + } + + public function get_adapters() { + return $this->adapters; + } + + public function get_imported_data() { + return $this->imported_data; + } + + /** + * Get settings by key. + * Used for backward compatibility. + * + * @param string $key The key of the setting. + */ + public function get_settings( $key ) { + switch ( $key ) { + case 'include': + return $this->get_settings_include(); + + case 'overrideConditions': + return $this->get_settings_selected_override_conditions(); + + case 'selectedCustomPostTypes': + return $this->get_settings_selected_custom_post_types(); + + case 'plugins': + return $this->get_settings_selected_plugins(); + + default: + return []; + } + } + + public function settings_include( array $settings_include ) { + $this->settings_include = $settings_include; + + return $this; + } + + public function get_settings_include() { + return $this->settings_include; + } + + public function settings_referrer( $settings_referrer ) { + $this->settings_referrer = $settings_referrer; + + return $this; + } + + public function get_settings_referrer() { + return $this->settings_referrer; + } + + public function settings_conflicts( array $settings_conflicts ) { + $this->settings_conflicts = $settings_conflicts; + + return $this; + } + + public function get_settings_conflicts() { + return $this->settings_conflicts; + } + + public function settings_selected_override_conditions( array $settings_selected_override_conditions ) { + $this->settings_selected_override_conditions = $settings_selected_override_conditions; + + return $this; + } + + public function get_settings_selected_override_conditions() { + return $this->settings_selected_override_conditions; + } + + public function settings_selected_custom_post_types( array $settings_selected_custom_post_types ) { + $this->settings_selected_custom_post_types = $settings_selected_custom_post_types; + + return $this; + } + + public function get_settings_selected_custom_post_types() { + return $this->settings_selected_custom_post_types; + } + + public function settings_selected_plugins( array $settings_selected_plugins ) { + $this->settings_selected_plugins = $settings_selected_plugins; + + return $this; + } + + public function get_settings_selected_plugins() { + return $this->settings_selected_plugins; + } + + /** + * Prevent saving elements on elementor post creation. + * + * @param array $data + * @param Document $document + * + * @return array + */ + public function prevent_saving_elements_on_post_creation( array $data, Document $document ) { + if ( isset( $data['elements'] ) ) { + $this->documents_data[ $document->get_main_id() ] = [ 'elements' => $data['elements'] ]; + + $data['elements'] = []; + } + + if ( isset( $data['settings'] ) ) { + $this->documents_data[ $document->get_main_id() ]['settings'] = $data['settings']; + + } + + return $data; + } + + /** + * Extract the zip file. + * + * @param string $zip_path The path to the zip file. + * @return string The extracted directory path. + */ + private function extract_zip( $zip_path ) { + $extraction_result = Plugin::$instance->uploads_manager->extract_and_validate_zip( $zip_path, [ 'json', 'xml' ] ); + + if ( is_wp_error( $extraction_result ) ) { + if ( isset( $extraction_result->errors['zip_error'] ) ) { + throw new \Error( static::ZIP_ARCHIVE_ERROR_KEY ); + } + + throw new \Error( static::ZIP_FILE_ERROR_KEY ); + } + + return $extraction_result['extraction_directory']; + } + + /** + * Get the manifest file from the extracted directory and adapt it if needed. + * + * @return string The manifest file content. + */ + private function read_manifest_json() { + $manifest = Utils::read_json_file( $this->extracted_directory_path . 'manifest' ); + + if ( ! $manifest ) { + Plugin::$instance->logger->get_logger()->error( static::MANIFEST_ERROR_KEY ); + throw new \Error( static::ZIP_FILE_ERROR_KEY ); + } + + $this->init_adapters( $manifest ); + + foreach ( $this->adapters as $adapter ) { + $manifest = $adapter->adapt_manifest( $manifest ); + } + + return $manifest; + } + + /** + * Init the adapters and determine which ones to use. + * + * @param array $manifest_data The manifest file content. + */ + private function init_adapters( array $manifest_data ) { + $this->adapters = []; + + /** @var Base_Adapter[] $adapter_types */ + $adapter_types = [ Envato::class, Kit_Library::class ]; + + foreach ( $adapter_types as $adapter_type ) { + if ( $adapter_type::is_compatibility_needed( $manifest_data, [ 'referrer' => $this->get_settings_referrer() ] ) ) { + $this->adapters[] = new $adapter_type( $this ); + } + } + } + + /** + * Get the site settings file from the extracted directory and adapt it if needed. + * + * @return string The site settings file content. + */ + private function read_site_settings_json() { + $site_settings = Utils::read_json_file( $this->extracted_directory_path . 'site-settings' ); + + foreach ( $this->adapters as $adapter ) { + $site_settings = $adapter->adapt_site_settings( $site_settings, $this->manifest, $this->extracted_directory_path ); + } + + return $site_settings; + } + + /** + * Get all the custom post types in the kit. + * + * @return array Custom post types names. + */ + private function get_default_settings_custom_post_types() { + if ( empty( $this->manifest['custom-post-type-title'] ) ) { + return []; + } + + $manifest_post_types = array_keys( $this->manifest['custom-post-type-title'] ); + + return array_diff( $manifest_post_types, Utils::get_builtin_wp_post_types() ); + } + + /** + * Get the default settings of elementor templates conditions to override. + * + * @return array + */ + private function get_default_settings_conflicts() { + if ( empty( $this->manifest['templates'] ) ) { + return []; + } + + return apply_filters( 'elementor/import/get_default_settings_conflicts', [], $this->manifest['templates'] ); + } + + /** + * Get the default settings of elementor templates conditions to override. + * + * @return array + */ + private function get_default_settings_override_conditions() { + if ( empty( $this->settings_conflicts ) ) { + return []; + } + + return array_keys( $this->settings_conflicts ); + } + + /** + * Get the default settings of the plugins that should be imported. + * + * @return array + */ + private function get_default_settings_plugins() { + return ! empty( $this->manifest['plugins'] ) ? $this->manifest['plugins'] : []; + } + + /** + * Get the default settings of which content types should be imported. + * + * @return array + */ + private function get_default_settings_include() { + return [ 'templates', 'plugins', 'content', 'settings' ]; + } + + /** + * Get the data that requires updating/replacement when imported. + * + * @return array{post_ids: array, term_ids: array} + */ + private function get_imported_data_replacements() : array { + return [ + 'post_ids' => Utils::map_old_new_post_ids( $this->imported_data ), + 'term_ids' => Utils::map_old_new_term_ids( $this->imported_data ), + ]; + } + + /** + * Save the prevented elements on elementor post creation elements. + * Handle the replacement of all the dynamic content of the elements that probably have been changed during the import. + */ + private function save_elements_of_imported_posts() { + $imported_data_replacements = $this->get_imported_data_replacements(); + + foreach ( $this->documents_data as $new_id => $data ) { + $document = Plugin::$instance->documents->get( $new_id ); + + if ( isset( $data['elements'] ) ) { + $data['elements'] = $document->on_import_update_dynamic_content( $data['elements'], $imported_data_replacements ); + } + + if ( isset( $data['settings'] ) ) { + + if ( $document instanceof Kit ) { + // Without post_status certain tabs in the Kit will not save properly. + $data['settings']['post_status'] = get_post_status( $new_id ); + } + + $data['settings'] = $document->on_import_update_settings( $data['settings'], $imported_data_replacements ); + } + + $document->save( $data ); + } + } + + private function update_instance_data_in_import_session_option() { + $import_sessions = Utils::get_import_sessions(); + + $import_sessions[ $this->session_id ]['instance_data']['documents_data'] = $this->documents_data; + $import_sessions[ $this->session_id ]['instance_data']['imported_data'] = $this->imported_data; + $import_sessions[ $this->session_id ]['instance_data']['runners_import_metadata'] = $this->runners_import_metadata; + + update_option( Module::OPTION_KEY_ELEMENTOR_IMPORT_SESSIONS, $import_sessions, false ); + } + + public function finalize_import_session_option() { + $import_sessions = Utils::get_import_sessions(); + + if ( ! isset( $import_sessions[ $this->session_id ] ) ) { + return; + } + + unset( $import_sessions[ $this->session_id ]['instance_data'] ); + + $import_sessions[ $this->session_id ]['end_timestamp'] = current_time( 'timestamp' ); + $import_sessions[ $this->session_id ]['runners'] = $this->runners_import_metadata; + + update_option( Module::OPTION_KEY_ELEMENTOR_IMPORT_SESSIONS, $import_sessions, false ); + } + + /** + * Filter the php error args and return 408 status code if the error is a timeout. + * + * @param array $args + * @param array $error + * @return array + */ + private function filter_php_error_args( $args, $error ) { + if ( strpos( $error['message'], 'Maximum execution time' ) !== false ) { + $args['response'] = 408; + } + + return $args; + } +} diff --git a/wp-content/plugins/elementor/app/modules/import-export/processes/revert.php b/wp-content/plugins/elementor/app/modules/import-export/processes/revert.php new file mode 100644 index 0000000..e4987d7 --- /dev/null +++ b/wp-content/plugins/elementor/app/modules/import-export/processes/revert.php @@ -0,0 +1,179 @@ +import_sessions = self::get_import_sessions(); + $this->revert_sessions = self::get_revert_sessions(); + } + + /** + * Register a runner. + * + * @param Revert_Runner_Base $runner_instance + */ + public function register( Revert_Runner_Base $runner_instance ) { + $this->runners[ $runner_instance::get_name() ] = $runner_instance; + } + + public function register_default_runners() { + $this->register( new Site_Settings() ); + $this->register( new Plugins() ); + $this->register( new Templates() ); + $this->register( new Taxonomies() ); + $this->register( new Elementor_Content() ); + $this->register( new Wp_Content() ); + } + + /** + * Execute the revert process. + * + * @throws \Exception If no revert runners have been specified. + */ + public function run() { + if ( empty( $this->runners ) ) { + throw new \Exception( 'Couldn’t execute the revert process because no revert runners have been specified. Try again by specifying revert runners.' ); + } + + $import_session = $this->get_last_import_session(); + + if ( empty( $import_session ) ) { + throw new \Exception( 'Couldn’t execute the revert process because there are no import sessions to revert.' ); + } + + // fallback if the import session failed and doesn't have the runners metadata + if ( ! isset( $import_session['runners'] ) && isset( $import_session['instance_data'] ) ) { + $import_session['runners'] = $import_session['instance_data']['runners_import_metadata'] ?? []; + } + + foreach ( $this->runners as $runner ) { + if ( $runner->should_revert( $import_session ) ) { + $runner->revert( $import_session ); + } + } + + $this->revert_attachments( $import_session ); + + $this->delete_last_import_data(); + } + + public static function get_import_sessions() { + $import_sessions = Utils::get_import_sessions(); + + if ( ! $import_sessions ) { + return []; + } + + usort( $import_sessions, function( $a, $b ) { + return strcmp( $a['start_timestamp'], $b['start_timestamp'] ); + } ); + + return $import_sessions; + } + + public static function get_revert_sessions() { + $revert_sessions = get_option( Module::OPTION_KEY_ELEMENTOR_REVERT_SESSIONS ); + + if ( ! $revert_sessions ) { + return []; + } + + return $revert_sessions; + } + + public function get_last_import_session() { + $import_sessions = $this->import_sessions; + + if ( empty( $import_sessions ) ) { + return []; + } + + return end( $import_sessions ); + } + + public function get_penultimate_import_session() { + $sessions_data = $this->import_sessions; + $penultimate_element_value = []; + + if ( empty( $sessions_data ) ) { + return []; + } + + end( $sessions_data ); + + prev( $sessions_data ); + + if ( ! is_null( key( $sessions_data ) ) ) { + $penultimate_element_value = current( $sessions_data ); + } + + return $penultimate_element_value; + } + + private function delete_last_import_data() { + $import_sessions = $this->import_sessions; + $revert_sessions = $this->revert_sessions; + + $reverted_session = array_pop( $import_sessions ); + + $revert_sessions[] = [ + 'session_id' => $reverted_session['session_id'], + 'kit_title' => $reverted_session['kit_title'], + 'kit_name' => $reverted_session['kit_name'], + 'kit_thumbnail' => $reverted_session['kit_thumbnail'], + 'source' => $reverted_session['kit_source'], + 'user_id' => get_current_user_id(), + 'import_timestamp' => $reverted_session['start_timestamp'], + 'revert_timestamp' => current_time( 'timestamp' ), + ]; + + update_option( Module::OPTION_KEY_ELEMENTOR_IMPORT_SESSIONS, $import_sessions, false ); + update_option( Module::OPTION_KEY_ELEMENTOR_REVERT_SESSIONS, $revert_sessions, false ); + + $this->import_sessions = $import_sessions; + $this->revert_sessions = $revert_sessions; + } + + private function revert_attachments( $data ) { + $query_args = [ + 'post_type' => 'attachment', + 'post_status' => 'any', + 'posts_per_page' => -1, + 'meta_query' => [ + [ + 'key' => Module::META_KEY_ELEMENTOR_IMPORT_SESSION_ID, + 'value' => $data['session_id'], + ], + ], + ]; + + $query = new \WP_Query( $query_args ); + + foreach ( $query->posts as $post ) { + wp_delete_attachment( $post->ID, true ); + } + } +} diff --git a/wp-content/plugins/elementor/app/modules/import-export/runners/export/elementor-content.php b/wp-content/plugins/elementor/app/modules/import-export/runners/export/elementor-content.php new file mode 100644 index 0000000..045fb5d --- /dev/null +++ b/wp-content/plugins/elementor/app/modules/import-export/runners/export/elementor-content.php @@ -0,0 +1,144 @@ +init_page_on_front_data(); + } + + public static function get_name() : string { + return 'elementor-content'; + } + + public function should_export( array $data ) { + return ( + isset( $data['include'] ) && + in_array( 'content', $data['include'], true ) + ); + } + + public function export( array $data ) { + $elementor_post_types = ImportExportUtils::get_elementor_post_types(); + + $files = []; + $manifest = []; + + foreach ( $elementor_post_types as $post_type ) { + $export = $this->export_elementor_post_type( $post_type ); + $files = array_merge( $files, $export['files'] ); + + $manifest[ $post_type ] = $export['manifest_data']; + } + + $manifest_data['content'] = $manifest; + + return [ + 'files' => $files, + 'manifest' => [ + $manifest_data, + ], + ]; + } + + private function export_elementor_post_type( $post_type ) { + $query_args = [ + 'post_type' => $post_type, + 'post_status' => 'publish', + 'posts_per_page' => -1, + 'meta_query' => [ + [ + 'key' => static::META_KEY_ELEMENTOR_EDIT_MODE, + 'compare' => 'EXISTS', + ], + [ + 'key' => '_elementor_data', + 'compare' => 'EXISTS', + ], + [ + 'key' => '_elementor_data', + 'compare' => '!=', + 'value' => '[]', + ], + ], + ]; + + $query = new \WP_Query( $query_args ); + + if ( empty( $query ) ) { + return [ + 'files' => [], + 'manifest_data' => [], + ]; + } + + $post_type_taxonomies = $this->get_post_type_taxonomies( $post_type ); + + $manifest_data = []; + $files = []; + + foreach ( $query->posts as $post ) { + $document = Plugin::$instance->documents->get( $post->ID ); + + $terms = ! empty( $post_type_taxonomies ) ? $this->get_post_terms( $post->ID, $post_type_taxonomies ) : []; + + $post_manifest_data = [ + 'title' => $post->post_title, + 'excerpt' => $post->post_excerpt, + 'doc_type' => $document->get_name(), + 'thumbnail' => get_the_post_thumbnail_url( $post ), + 'url' => get_permalink( $post ), + 'terms' => $terms, + ]; + + if ( $post->ID === $this->page_on_front_id ) { + $post_manifest_data['show_on_front'] = true; + } + + $manifest_data[ $post->ID ] = $post_manifest_data; + + $files[] = [ + 'path' => 'content/' . $post_type . '/' . $post->ID, + 'data' => $document->get_export_data(), + ]; + } + + return [ + 'files' => $files, + 'manifest_data' => $manifest_data, + ]; + } + + private function get_post_type_taxonomies( $post_type ) { + return get_object_taxonomies( $post_type ); + } + + private function get_post_terms( $post_id, array $taxonomies ) { + $terms = wp_get_object_terms( $post_id, $taxonomies ); + + $result = []; + + foreach ( $terms as $term ) { + $result[] = [ + 'term_id' => $term->term_id, + 'taxonomy' => $term->taxonomy, + 'slug' => $term->slug, + ]; + } + + return $result; + } + + private function init_page_on_front_data() { + $show_page_on_front = 'page' === get_option( 'show_on_front' ); + + if ( $show_page_on_front ) { + $this->page_on_front_id = (int) get_option( 'page_on_front' ); + } + } +} diff --git a/wp-content/plugins/elementor/app/modules/import-export/runners/export/export-runner-base.php b/wp-content/plugins/elementor/app/modules/import-export/runners/export/export-runner-base.php new file mode 100644 index 0000000..7b75d5d --- /dev/null +++ b/wp-content/plugins/elementor/app/modules/import-export/runners/export/export-runner-base.php @@ -0,0 +1,27 @@ + [ + $manifest_data, + ], + 'files' => [], + ]; + } +} diff --git a/wp-content/plugins/elementor/app/modules/import-export/runners/export/site-settings.php b/wp-content/plugins/elementor/app/modules/import-export/runners/export/site-settings.php new file mode 100644 index 0000000..9512c72 --- /dev/null +++ b/wp-content/plugins/elementor/app/modules/import-export/runners/export/site-settings.php @@ -0,0 +1,50 @@ +kits_manager->get_active_kit(); + $kit_data = $kit->get_export_data(); + $kit_tabs = $kit->get_tabs(); + + $excluded_kit_settings_keys = [ + 'site_name', + 'site_description', + 'site_logo', + 'site_favicon', + ]; + + foreach ( $excluded_kit_settings_keys as $setting_key ) { + unset( $kit_data['settings'][ $setting_key ] ); + } + + unset( $kit_tabs['settings-site-identity'] ); + + $kit_tabs = array_keys( $kit_tabs ); + $manifest_data['site-settings'] = $kit_tabs; + + return [ + 'files' => [ + 'path' => 'site-settings', + 'data' => $kit_data, + ], + 'manifest' => [ + $manifest_data, + ], + ]; + } +} diff --git a/wp-content/plugins/elementor/app/modules/import-export/runners/export/taxonomies.php b/wp-content/plugins/elementor/app/modules/import-export/runners/export/taxonomies.php new file mode 100644 index 0000000..250ae20 --- /dev/null +++ b/wp-content/plugins/elementor/app/modules/import-export/runners/export/taxonomies.php @@ -0,0 +1,118 @@ +export_taxonomies( $post_types ); + + $manifest_data['taxonomies'] = $export['manifest']; + + return [ + 'files' => $export['files'], + 'manifest' => [ + $manifest_data, + ], + ]; + } + + private function export_taxonomies( array $post_types ) { + $files = []; + $manifest = []; + + $taxonomies = get_taxonomies(); + + foreach ( $taxonomies as $taxonomy ) { + $taxonomy_post_types = get_taxonomy( $taxonomy )->object_type; + $intersected_post_types = array_intersect( $taxonomy_post_types, $post_types ); + + if ( empty( $intersected_post_types ) ) { + continue; + } + + $data = $this->export_terms( $taxonomy ); + + if ( empty( $data ) ) { + continue; + } + + foreach ( $intersected_post_types as $post_type ) { + $manifest[ $post_type ][] = $taxonomy; + } + + $files[] = [ + 'path' => 'taxonomies/' . $taxonomy, + 'data' => $data, + ]; + } + + return [ + 'files' => $files, + 'manifest' => $manifest, + ]; + } + + private function export_terms( $taxonomy ) { + $terms = get_terms( [ + 'taxonomy' => (array) $taxonomy, + 'hide_empty' => true, + 'get' => 'all', + ] ); + + $ordered_terms = $this->order_terms( $terms ); + + if ( empty( $ordered_terms ) ) { + return []; + } + + $data = []; + + foreach ( $ordered_terms as $term ) { + $data[] = [ + 'term_id' => $term->term_id, + 'name' => $term->name, + 'slug' => $term->slug, + 'taxonomy' => $term->taxonomy, + 'description' => $term->description, + 'parent' => $term->parent, + ]; + } + + return $data; + } + + // Put terms in order with no child going before its parent. + private function order_terms( array $terms ) { + $ordered_terms = []; + + while ( $term = array_shift( $terms ) ) { + $is_top_level = 0 === $term->parent; + $is_parent_exits = isset( $ordered_terms[ $term->parent ] ); + + if ( $is_top_level || $is_parent_exits ) { + $ordered_terms[ $term->term_id ] = $term; + } else { + $terms[] = $term; + } + } + + return $ordered_terms; + } +} diff --git a/wp-content/plugins/elementor/app/modules/import-export/runners/export/templates.php b/wp-content/plugins/elementor/app/modules/import-export/runners/export/templates.php new file mode 100644 index 0000000..9fe4f02 --- /dev/null +++ b/wp-content/plugins/elementor/app/modules/import-export/runners/export/templates.php @@ -0,0 +1,66 @@ + Source_Local::CPT, + 'post_status' => 'publish', + 'posts_per_page' => -1, + 'meta_query' => [ + [ + 'key' => Document::TYPE_META_KEY, + 'value' => $template_types, + ], + ], + ]; + + $templates_query = new \WP_Query( $query_args ); + + $templates_manifest_data = []; + $files = []; + + foreach ( $templates_query->posts as $template_post ) { + $template_id = $template_post->ID; + + $template_document = Plugin::$instance->documents->get( $template_id ); + + $templates_manifest_data[ $template_id ] = $template_document->get_export_summary(); + + $files[] = [ + 'path' => 'templates/' . $template_id, + 'data' => $template_document->get_export_data(), + ]; + } + + $manifest_data['templates'] = $templates_manifest_data; + + return [ + 'files' => $files, + 'manifest' => [ + $manifest_data, + ], + ]; + } +} diff --git a/wp-content/plugins/elementor/app/modules/import-export/runners/export/wp-content.php b/wp-content/plugins/elementor/app/modules/import-export/runners/export/wp-content.php new file mode 100644 index 0000000..5f30d3e --- /dev/null +++ b/wp-content/plugins/elementor/app/modules/import-export/runners/export/wp-content.php @@ -0,0 +1,79 @@ +export_wp_post_type( $post_type ); + $files[] = $export['file']; + $manifest_data['wp-content'][ $post_type ] = $export['manifest_data']; + } + + foreach ( $custom_post_types as $post_type ) { + $export = $this->export_wp_post_type( $post_type ); + $files[] = $export['file']; + $manifest_data['wp-content'][ $post_type ] = $export['manifest_data']; + + $post_type_object = get_post_type_object( $post_type ); + + $manifest_data['custom-post-type-title'][ $post_type ] = [ + 'name' => $post_type_object->name, + 'label' => $post_type_object->label, + ]; + } + + return [ + 'files' => $files, + 'manifest' => [ + $manifest_data, + ], + ]; + } + + private function export_wp_post_type( $post_type ) { + $wp_exporter = new WP_Exporter( [ + 'content' => $post_type, + 'status' => 'publish', + 'limit' => 20, + 'meta_query' => [ + [ + 'key' => static::META_KEY_ELEMENTOR_EDIT_MODE, + 'compare' => 'NOT EXISTS', + ], + ], + 'include_post_featured_image_as_attachment' => true, + ] ); + + $export_result = $wp_exporter->run(); + + return [ + 'file' => [ + 'path' => 'wp-content/' . $post_type . '/' . $post_type . '.xml', + 'data' => $export_result['xml'], + ], + 'manifest_data' => $export_result['ids'], + ]; + } +} diff --git a/wp-content/plugins/elementor/app/modules/import-export/runners/import/elementor-content.php b/wp-content/plugins/elementor/app/modules/import-export/runners/import/elementor-content.php new file mode 100644 index 0000000..138aeef --- /dev/null +++ b/wp-content/plugins/elementor/app/modules/import-export/runners/import/elementor-content.php @@ -0,0 +1,159 @@ +init_page_on_front_data(); + } + + public static function get_name() : string { + return 'elementor-content'; + } + + public function should_import( array $data ) { + return ( + isset( $data['include'] ) && + in_array( 'content', $data['include'], true ) && + ! empty( $data['manifest']['content'] ) && + ! empty( $data['extracted_directory_path'] ) + ); + } + + public function import( array $data, array $imported_data ) { + $result['content'] = []; + $this->import_session_id = $data['session_id']; + + $elementor_post_types = ImportExportUtils::get_elementor_post_types(); + + foreach ( $elementor_post_types as $post_type ) { + if ( empty( $data['manifest']['content'][ $post_type ] ) ) { + continue; + } + + $posts_settings = $data['manifest']['content'][ $post_type ]; + $path = $data['extracted_directory_path'] . 'content/' . $post_type . '/'; + $imported_terms = ! empty( $imported_data['taxonomies'] ) + ? ImportExportUtils::map_old_new_term_ids( $imported_data ) + : []; + + $result['content'][ $post_type ] = $this->import_elementor_post_type( $posts_settings, $path, $post_type, $imported_terms ); + } + + return $result; + } + + private function import_elementor_post_type( array $posts_settings, $path, $post_type, array $imported_terms ) { + $result = [ + 'succeed' => [], + 'failed' => [], + ]; + + foreach ( $posts_settings as $id => $post_settings ) { + try { + $post_data = ImportExportUtils::read_json_file( $path . $id ); + $import = $this->import_post( $post_settings, $post_data, $post_type, $imported_terms ); + + if ( is_wp_error( $import ) ) { + $result['failed'][ $id ] = $import->get_error_message(); + continue; + } + + $result['succeed'][ $id ] = $import; + } catch ( \Exception $error ) { + $result['failed'][ $id ] = $error->getMessage(); + } + } + + return $result; + } + + private function import_post( array $post_settings, array $post_data, $post_type, array $imported_terms ) { + $post_attributes = [ + 'post_title' => $post_settings['title'], + 'post_type' => $post_type, + 'post_status' => 'publish', + ]; + + if ( ! empty( $post_settings['excerpt'] ) ) { + $post_attributes['post_excerpt'] = $post_settings['excerpt']; + } + + $new_document = Plugin::$instance->documents->create( + $post_settings['doc_type'], + $post_attributes + ); + + if ( is_wp_error( $new_document ) ) { + throw new \Exception( $new_document->get_error_message() ); + } + + $post_data['import_settings'] = $post_settings; + + $new_attachment_callback = function( $attachment_id ) { + $this->set_session_post_meta( $attachment_id, $this->import_session_id ); + }; + + add_filter( 'elementor/template_library/import_images/new_attachment', $new_attachment_callback ); + + $new_document->import( $post_data ); + + remove_filter( 'elementor/template_library/import_images/new_attachment', $new_attachment_callback ); + + $new_post_id = $new_document->get_main_id(); + + if ( ! empty( $post_settings['terms'] ) ) { + $this->set_post_terms( $new_post_id, $post_settings['terms'], $imported_terms ); + } + + if ( ! empty( $post_settings['show_on_front'] ) ) { + $this->set_page_on_front( $new_post_id ); + } + + $this->set_session_post_meta( $new_post_id, $this->import_session_id ); + + return $new_post_id; + } + + private function set_post_terms( $post_id, array $terms, array $imported_terms ) { + foreach ( $terms as $term ) { + if ( ! isset( $imported_terms[ $term['term_id'] ] ) ) { + continue; + } + + wp_set_post_terms( $post_id, [ $imported_terms[ $term['term_id'] ] ], $term['taxonomy'], false ); + } + } + + private function init_page_on_front_data() { + $this->show_page_on_front = 'page' === get_option( 'show_on_front' ); + + if ( $this->show_page_on_front ) { + $this->page_on_front_id = (int) get_option( 'page_on_front' ); + } + } + + private function set_page_on_front( $page_id ) { + update_option( 'page_on_front', $page_id ); + + if ( ! $this->show_page_on_front ) { + update_option( 'show_on_front', 'page' ); + } + } + + public function get_import_session_metadata() : array { + return [ + 'page_on_front' => $this->page_on_front_id ?? 0, + ]; + } +} diff --git a/wp-content/plugins/elementor/app/modules/import-export/runners/import/import-runner-base.php b/wp-content/plugins/elementor/app/modules/import-export/runners/import/import-runner-base.php new file mode 100644 index 0000000..1067b90 --- /dev/null +++ b/wp-content/plugins/elementor/app/modules/import-export/runners/import/import-runner-base.php @@ -0,0 +1,39 @@ +plugins_manager = $plugins_manager; + } else { + $this->plugins_manager = new Plugins_Manager(); + } + } + + public static function get_name() : string { + return 'plugins'; + } + + public function should_import( array $data ) { + return ( + isset( $data['include'] ) && + in_array( 'plugins', $data['include'], true ) && + ! empty( $data['manifest']['plugins'] ) && + ! empty( $data['selected_plugins'] ) + ); + } + + public function import( array $data, array $imported_data ) { + $plugins = $data['selected_plugins']; + + $plugins_collection = ( new Collection( $plugins ) ) + ->map( function ( $item ) { + if ( ! Str::ends_with( $item['plugin'], '.php' ) ) { + $item['plugin'] .= '.php'; + } + return $item; + } ); + + $slugs = $plugins_collection + ->map( function ( $item ) { + return $item['plugin']; + } ) + ->all(); + + $installed = $this->plugins_manager->install( $slugs ); + $activated = $this->plugins_manager->activate( $installed['succeeded'] ); + + $ordered_activated_plugins = $plugins_collection + ->filter( function ( $item ) use ( $activated ) { + return in_array( $item['plugin'], $activated['succeeded'], true ); + } ) + ->map( function ( $item ) { + return $item['name']; + } ) + ->all(); + + $result['plugins'] = $ordered_activated_plugins; + + return $result; + } +} diff --git a/wp-content/plugins/elementor/app/modules/import-export/runners/import/site-settings.php b/wp-content/plugins/elementor/app/modules/import-export/runners/import/site-settings.php new file mode 100644 index 0000000..415c546 --- /dev/null +++ b/wp-content/plugins/elementor/app/modules/import-export/runners/import/site-settings.php @@ -0,0 +1,85 @@ +kits_manager->get_active_kit(); + + $this->active_kit_id = (int) $active_kit->get_id(); + $this->previous_kit_id = (int) Plugin::$instance->kits_manager->get_previous_id(); + + $result = []; + + $old_settings = $active_kit->get_meta( PageManager::META_KEY ); + + if ( ! $old_settings ) { + $old_settings = []; + } + + if ( ! empty( $old_settings['custom_colors'] ) ) { + $new_site_settings['custom_colors'] = array_merge( $old_settings['custom_colors'], $new_site_settings['custom_colors'] ); + } + + if ( ! empty( $old_settings['custom_typography'] ) ) { + $new_site_settings['custom_typography'] = array_merge( $old_settings['custom_typography'], $new_site_settings['custom_typography'] ); + } + + if ( ! empty( $new_site_settings['space_between_widgets'] ) ) { + $new_site_settings['space_between_widgets'] = Utils::update_space_between_widgets_values( $new_site_settings['space_between_widgets'] ); + } + + $new_site_settings = array_replace_recursive( $old_settings, $new_site_settings ); + + $new_kit = Plugin::$instance->kits_manager->create_new_kit( $title, $new_site_settings ); + + $this->imported_kit_id = (int) $new_kit; + + $result['site-settings'] = (bool) $new_kit; + + return $result; + } + + public function get_import_session_metadata() : array { + return [ + 'previous_kit_id' => $this->previous_kit_id, + 'active_kit_id' => $this->active_kit_id, + 'imported_kit_id' => $this->imported_kit_id, + ]; + } +} diff --git a/wp-content/plugins/elementor/app/modules/import-export/runners/import/taxonomies.php b/wp-content/plugins/elementor/app/modules/import-export/runners/import/taxonomies.php new file mode 100644 index 0000000..e14af8c --- /dev/null +++ b/wp-content/plugins/elementor/app/modules/import-export/runners/import/taxonomies.php @@ -0,0 +1,143 @@ +import_session_id = $data['session_id']; + + $wp_builtin_post_types = ImportExportUtils::get_builtin_wp_post_types(); + $selected_custom_post_types = isset( $data['selected_custom_post_types'] ) ? $data['selected_custom_post_types'] : []; + $post_types = array_merge( $wp_builtin_post_types, $selected_custom_post_types ); + + $result = []; + + foreach ( $post_types as $post_type ) { + if ( empty( $data['manifest']['taxonomies'][ $post_type ] ) ) { + continue; + } + + $result['taxonomies'][ $post_type ] = $this->import_taxonomies( $data['manifest']['taxonomies'][ $post_type ], $path ); + } + + return $result; + } + + private function import_taxonomies( array $taxonomies, $path ) { + $result = []; + $imported_taxonomies = []; + + foreach ( $taxonomies as $taxonomy ) { + if ( ! taxonomy_exists( $taxonomy ) ) { + continue; + } + + if ( ! empty( $imported_taxonomies[ $taxonomy ] ) ) { + $result[ $taxonomy ] = $imported_taxonomies[ $taxonomy ]; + continue; + } + + $taxonomy_data = ImportExportUtils::read_json_file( $path . $taxonomy ); + if ( empty( $taxonomy_data ) ) { + continue; + } + + $import = $this->import_taxonomy( $taxonomy_data ); + $result[ $taxonomy ] = $import; + $imported_taxonomies[ $taxonomy ] = $import; + } + + return $result; + } + + private function import_taxonomy( array $taxonomy_data ) { + $terms = []; + + foreach ( $taxonomy_data as $term ) { + $old_slug = $term['slug']; + + $existing_term = term_exists( $term['slug'], $term['taxonomy'] ); + if ( $existing_term ) { + if ( 'nav_menu' === $term['taxonomy'] ) { + $term = $this->handle_duplicated_nav_menu_term( $term ); + } else { + $terms[] = [ + 'old_id' => (int) $term['term_id'], + 'new_id' => (int) $existing_term['term_id'], + 'old_slug' => $old_slug, + 'new_slug' => $term['slug'], + ]; + continue; + } + } + + $parent = $this->get_term_parent( $term, $terms ); + + $args = [ + 'slug' => $term['slug'], + 'description' => wp_slash( $term['description'] ), + 'parent' => (int) $parent, + ]; + + $new_term = wp_insert_term( wp_slash( $term['name'] ), $term['taxonomy'], $args ); + if ( ! is_wp_error( $new_term ) ) { + $this->set_session_term_meta( (int) $new_term['term_id'], $this->import_session_id ); + + $terms[] = [ + 'old_id' => $term['term_id'], + 'new_id' => (int) $new_term['term_id'], + 'old_slug' => $old_slug, + 'new_slug' => $term['slug'], + ]; + } + } + + return $terms; + } + + private function handle_duplicated_nav_menu_term( $term ) { + do { + $term['slug'] = $term['slug'] . '-duplicate'; + $term['name'] = $term['name'] . ' duplicate'; + } while ( term_exists( $term['slug'], 'nav_menu' ) ); + + return $term; + } + + private function get_term_parent( $term, array $imported_terms ) { + $parent = $term['parent']; + if ( 0 !== $parent && ! empty( $imported_terms ) ) { + foreach ( $imported_terms as $imported_term ) { + if ( $parent === $imported_term['old_id'] ) { + $parent_term = term_exists( $imported_term['new_id'], $term['taxonomy'] ); + break; + } + } + + if ( isset( $parent_term['term_id'] ) ) { + return $parent_term['term_id']; + } + } + + return 0; + } +} diff --git a/wp-content/plugins/elementor/app/modules/import-export/runners/import/templates.php b/wp-content/plugins/elementor/app/modules/import-export/runners/import/templates.php new file mode 100644 index 0000000..0a6eb24 --- /dev/null +++ b/wp-content/plugins/elementor/app/modules/import-export/runners/import/templates.php @@ -0,0 +1,87 @@ +import_session_id = $data['session_id']; + + $path = $data['extracted_directory_path'] . 'templates/'; + $templates = $data['manifest']['templates']; + + $result['templates'] = [ + 'succeed' => [], + 'failed' => [], + ]; + + foreach ( $templates as $id => $template_settings ) { + try { + $template_data = ImportExportUtils::read_json_file( $path . $id ); + $import = $this->import_template( $id, $template_settings, $template_data ); + + $result['templates']['succeed'][ $id ] = $import; + } catch ( \Exception $error ) { + $result['templates']['failed'][ $id ] = $error->getMessage(); + } + } + + return $result; + } + + private function import_template( $id, array $template_settings, array $template_data ) { + $doc_type = $template_settings['doc_type']; + + $new_document = Plugin::$instance->documents->create( + $doc_type, + [ + 'post_title' => $template_settings['title'], + 'post_type' => Source_Local::CPT, + 'post_status' => 'publish', + ] + ); + + if ( is_wp_error( $new_document ) ) { + throw new \Exception( $new_document->get_error_message() ); + } + + $template_data['import_settings'] = $template_settings; + $template_data['id'] = $id; + + $new_attachment_callback = function( $attachment_id ) { + $this->set_session_post_meta( $attachment_id, $this->import_session_id ); + }; + + add_filter( 'elementor/template_library/import_images/new_attachment', $new_attachment_callback ); + + $new_document->import( $template_data ); + + remove_filter( 'elementor/template_library/import_images/new_attachment', $new_attachment_callback ); + + $document_id = $new_document->get_main_id(); + + $this->set_session_post_meta( $document_id, $this->import_session_id ); + + return $document_id; + } +} diff --git a/wp-content/plugins/elementor/app/modules/import-export/runners/import/wp-content.php b/wp-content/plugins/elementor/app/modules/import-export/runners/import/wp-content.php new file mode 100644 index 0000000..12d8f1f --- /dev/null +++ b/wp-content/plugins/elementor/app/modules/import-export/runners/import/wp-content.php @@ -0,0 +1,124 @@ +import_session_id = $data['session_id']; + + $path = $data['extracted_directory_path'] . 'wp-content/'; + + $post_types = $this->filter_post_types( $data['selected_custom_post_types'] ); + + $taxonomies = $imported_data['taxonomies'] ?? []; + $imported_terms = ImportExportUtils::map_old_new_term_ids( $imported_data ); + + $result['wp-content'] = []; + + foreach ( $post_types as $post_type ) { + $import = $this->import_wp_post_type( + $path, + $post_type, + $imported_data, + $taxonomies, + $imported_terms + ); + + if ( empty( $import ) ) { + continue; + } + + $result['wp-content'][ $post_type ] = $import; + $imported_data = array_merge( $imported_data, $result ); + } + + return $result; + } + + private function import_wp_post_type( $path, $post_type, array $imported_data, array $taxonomies, array $imported_terms ) { + $args = [ + 'fetch_attachments' => true, + 'posts' => ImportExportUtils::map_old_new_post_ids( $imported_data ), + 'terms' => $imported_terms, + 'taxonomies' => ! empty( $taxonomies[ $post_type ] ) ? $taxonomies[ $post_type ] : [], + 'posts_meta' => [ + static::META_KEY_ELEMENTOR_IMPORT_SESSION_ID => $this->import_session_id, + ], + 'terms_meta' => [ + static::META_KEY_ELEMENTOR_IMPORT_SESSION_ID => $this->import_session_id, + ], + ]; + + $file = $path . $post_type . '/' . $post_type . '.xml'; + + if ( ! file_exists( $file ) ) { + return []; + } + + $wp_importer = new WP_Import( $file, $args ); + $result = $wp_importer->run(); + + return $result['summary']['posts']; + } + + private function filter_post_types( $selected_custom_post_types = [] ) { + $wp_builtin_post_types = ImportExportUtils::get_builtin_wp_post_types(); + + foreach ( $selected_custom_post_types as $custom_post_type ) { + if ( post_type_exists( $custom_post_type ) ) { + $this->selected_custom_post_types[] = $custom_post_type; + } + } + + $post_types = array_merge( $wp_builtin_post_types, $this->selected_custom_post_types ); + $post_types = $this->force_element_to_be_last_by_value( $post_types, 'nav_menu_item' ); + + return $post_types; + } + + public function get_import_session_metadata() : array { + return [ + 'custom_post_types' => $this->selected_custom_post_types, + ]; + } + + /** + * @param $array array The array we want to relocate his element. + * @param $element mixed The value of the element in the array we want to shift to end of the array. + * @return mixed + */ + private function force_element_to_be_last_by_value( array $array, $element ) { + $index = array_search( $element, $array, true ); + + if ( false !== $index ) { + unset( $array[ $index ] ); + $array[] = $element; + } + + return $array; + } +} diff --git a/wp-content/plugins/elementor/app/modules/import-export/runners/revert/elementor-content.php b/wp-content/plugins/elementor/app/modules/import-export/runners/revert/elementor-content.php new file mode 100644 index 0000000..c23261a --- /dev/null +++ b/wp-content/plugins/elementor/app/modules/import-export/runners/revert/elementor-content.php @@ -0,0 +1,94 @@ +init_page_on_front_data(); + } + + public static function get_name() : string { + return 'elementor-content'; + } + + public function should_revert( array $data ) : bool { + return ( + isset( $data['runners'] ) && + array_key_exists( static::get_name(), $data['runners'] ) + ); + } + + public function revert( array $data ) { + $elementor_post_types = ImportExportUtils::get_elementor_post_types(); + + $query_args = [ + 'post_type' => $elementor_post_types, + 'post_status' => 'any', + 'posts_per_page' => -1, + 'meta_query' => [ + [ + 'key' => static::META_KEY_ELEMENTOR_EDIT_MODE, + 'compare' => 'EXISTS', + ], + [ + 'key' => static::META_KEY_ELEMENTOR_IMPORT_SESSION_ID, + 'value' => $data['session_id'], + ], + ], + ]; + + $query = new \WP_Query( $query_args ); + + foreach ( $query->posts as $post ) { + $post_type_document = Plugin::$instance->documents->get( $post->ID ); + $post_type_document->delete(); + + // Deleting the post will reset the show_on_front option. We need to set it to false, + // so we can set it back to what it was. + if ( $post->ID === $this->page_on_front_id ) { + $this->show_page_on_front = false; + } + } + + $this->restore_page_on_front( $data ); + } + + private function init_page_on_front_data() { + $this->show_page_on_front = 'page' === get_option( 'show_on_front' ); + + if ( $this->show_page_on_front ) { + $this->page_on_front_id = (int) get_option( 'page_on_front' ); + } + } + + private function restore_page_on_front( $data ) { + if ( empty( $data['runners'][ static::get_name() ]['page_on_front'] ) ) { + return; + } + + $page_on_front = $data['runners'][ static::get_name() ]['page_on_front']; + + $document = Plugin::$instance->documents->get( $page_on_front ); + + if ( ! $document ) { + return; + } + + $this->set_page_on_front( $document->get_main_id() ); + } + + private function set_page_on_front( $page_id ) { + update_option( 'page_on_front', $page_id ); + + if ( ! $this->show_page_on_front ) { + update_option( 'show_on_front', 'page' ); + } + } +} diff --git a/wp-content/plugins/elementor/app/modules/import-export/runners/revert/plugins.php b/wp-content/plugins/elementor/app/modules/import-export/runners/revert/plugins.php new file mode 100644 index 0000000..9157d93 --- /dev/null +++ b/wp-content/plugins/elementor/app/modules/import-export/runners/revert/plugins.php @@ -0,0 +1,16 @@ +kits_manager->revert( + $data['runners'][ static::get_name() ]['imported_kit_id'], + $data['runners'][ static::get_name() ]['active_kit_id'], + $data['runners'][ static::get_name() ]['previous_kit_id'] + ); + } +} diff --git a/wp-content/plugins/elementor/app/modules/import-export/runners/revert/taxonomies.php b/wp-content/plugins/elementor/app/modules/import-export/runners/revert/taxonomies.php new file mode 100644 index 0000000..9c07a56 --- /dev/null +++ b/wp-content/plugins/elementor/app/modules/import-export/runners/revert/taxonomies.php @@ -0,0 +1,37 @@ + $taxonomies, + 'hide_empty' => false, + 'get' => 'all', + 'meta_query' => [ + [ + 'key' => static::META_KEY_ELEMENTOR_IMPORT_SESSION_ID, + 'value' => $data['session_id'], + ], + ], + ] ); + + foreach ( $terms as $term ) { + wp_delete_term( $term->term_id, $term->taxonomy ); + } + } +} diff --git a/wp-content/plugins/elementor/app/modules/import-export/runners/revert/templates.php b/wp-content/plugins/elementor/app/modules/import-export/runners/revert/templates.php new file mode 100644 index 0000000..9698d91 --- /dev/null +++ b/wp-content/plugins/elementor/app/modules/import-export/runners/revert/templates.php @@ -0,0 +1,19 @@ + $post_types, + 'post_status' => 'any', + 'posts_per_page' => -1, + 'meta_query' => [ + [ + 'key' => static::META_KEY_ELEMENTOR_EDIT_MODE, + 'compare' => 'NOT EXISTS', + ], + [ + 'key' => static::META_KEY_ELEMENTOR_IMPORT_SESSION_ID, + 'value' => $data['session_id'], + ], + ], + ]; + + $query = new \WP_Query( $query_args ); + + foreach ( $query->posts as $post ) { + wp_delete_post( $post->ID, true ); + } + + /** + * Revert the nav menu terms. + * BC: The nav menu in new kits will be imported as part of the taxonomies, but old kits + * importing the nav menu terms as part from the wp-content import. + */ + $this->revert_nav_menus( $data ); + } + + private function revert_nav_menus( array $data ) { + $terms = get_terms( [ + 'taxonomy' => 'nav_menu', + 'hide_empty' => false, + 'get' => 'all', + 'meta_query' => [ + [ + 'key' => static::META_KEY_ELEMENTOR_IMPORT_SESSION_ID, + 'value' => $data['session_id'], + ], + ], + ] ); + + foreach ( $terms as $term ) { + wp_delete_term( $term->term_id, $term->taxonomy ); + } + } +} diff --git a/wp-content/plugins/elementor/app/modules/import-export/runners/runner-interface.php b/wp-content/plugins/elementor/app/modules/import-export/runners/runner-interface.php new file mode 100644 index 0000000..a0dd8f0 --- /dev/null +++ b/wp-content/plugins/elementor/app/modules/import-export/runners/runner-interface.php @@ -0,0 +1,20 @@ +get_revert_usage_data(); + + return $params; + } ); + } + + /** + * Get the Revert usage data. + * + * @return array + */ + private function get_revert_usage_data() { + $revert_sessions = ( new Revert() )->get_revert_sessions(); + + $data = []; + + foreach ( $revert_sessions as $revert_session ) { + $data[] = [ + 'kit_name' => $revert_session['kit_name'], + 'source' => $revert_session['source'], + 'revert_timestamp' => (int) $revert_session['revert_timestamp'], + 'total_time' => ( (int) $revert_session['revert_timestamp'] - (int) $revert_session['import_timestamp'] ), + ]; + } + + return $data; + } +} diff --git a/wp-content/plugins/elementor/app/modules/import-export/utils.php b/wp-content/plugins/elementor/app/modules/import-export/utils.php new file mode 100644 index 0000000..3206c1c --- /dev/null +++ b/wp-content/plugins/elementor/app/modules/import-export/utils.php @@ -0,0 +1,139 @@ + true, + 'can_export' => true, + '_builtin' => false, + ] ); + + unset( + $post_types[ Landing_Pages_Module::CPT ], + $post_types[ Source_Local::CPT ] + ); + + return array_keys( $post_types ); + } + + /** + * Transform a string name to title format. + * + * @param $name + * + * @return string + */ + public static function transform_name_to_title( $name ): string { + if ( empty( $name ) ) { + return ''; + } + + $title = str_replace( [ '-', '_' ], ' ', $name ); + + return ucwords( $title ); + } + + public static function get_import_sessions( $should_run_cleanup = false ) { + $import_sessions = get_option( Module::OPTION_KEY_ELEMENTOR_IMPORT_SESSIONS, [] ); + + if ( $should_run_cleanup ) { + foreach ( $import_sessions as $session_id => $import_session ) { + if ( ! isset( $import_session['runners'] ) && isset( $import_session['instance_data'] ) ) { + $import_sessions[ $session_id ]['runners'] = $import_session['instance_data']['runners_import_metadata'] ?? []; + + unset( $import_sessions[ $session_id ]['instance_data'] ); + } + } + + update_option( Module::OPTION_KEY_ELEMENTOR_IMPORT_SESSIONS, $import_sessions ); + } + + return $import_sessions; + } + + public static function update_space_between_widgets_values( $space_between_widgets ) { + $setting_exist = isset( $space_between_widgets['size'] ); + $already_processed = isset( $space_between_widgets['column'] ); + + if ( ! $setting_exist || $already_processed ) { + return $space_between_widgets; + } + + $size = strval( $space_between_widgets['size'] ); + $space_between_widgets['column'] = $size; + $space_between_widgets['row'] = $size; + $space_between_widgets['isLinked'] = true; + + return $space_between_widgets; + } +} diff --git a/wp-content/plugins/elementor/app/modules/import-export/wp-cli.php b/wp-content/plugins/elementor/app/modules/import-export/wp-cli.php new file mode 100644 index 0000000..d92071e --- /dev/null +++ b/wp-content/plugins/elementor/app/modules/import-export/wp-cli.php @@ -0,0 +1,281 @@ + $value ) { + if ( ! in_array( $key, static::AVAILABLE_SETTINGS, true ) ) { + continue; + } + + $export_settings[ $key ] = explode( ',', $value ); + } + + try { + /** + * Running the export process through the import-export module so the export property in the module will be available to use. + * + * @type Module $import_export_module + */ + $import_export_module = Plugin::$instance->app->get_component( 'import-export' ); + $result = $import_export_module->export_kit( $export_settings ); + + rename( $result['file_name'], $args[0] ); + } catch ( \Error $error ) { + \WP_CLI::error( $error->getMessage() ); + } + + \WP_CLI::success( 'Kit exported successfully.' ); + } + + /** + * Import a Kit + * + * [--include] + * Which type of content to include. Possible values are 'content', 'templates', 'site-settings'. + * if this parameter won't be specified, All data types will be included. + * + * [--overrideConditions] + * Templates ids to override conditions for. + * + * [--sourceType] + * Which source type is used in the current session. Available values are 'local', 'remote', 'library'. + * The default value is 'local' + * + * ## EXAMPLES + * + * 1. wp elementor kit import path/to/elementor-kit.zip + * - This will import the whole kit file content. + * + * 2. wp elementor kit import path/to/elementor-kit.zip --include=site-settings,content + * - This will import only site settings and content. + * + * 3. wp elementor kit import path/to/elementor-kit.zip --overrideConditions=3478,4520 + * - This will import all content and will override conditions for the given template ids. + * + * 4. wp elementor kit import path/to/elementor-kit.zip --unfilteredFilesUpload=enable + * - This will allow the import process to import unfiltered files. + * + * @param array $args + * @param array $assoc_args + */ + public function import( array $args, array $assoc_args ) { + if ( ! current_user_can( 'administrator' ) ) { + \WP_CLI::error( 'You must run this command as an admin user' ); + } + + if ( empty( $args[0] ) ) { + \WP_CLI::error( 'Please specify a file to import' ); + } + + \WP_CLI::line( 'Kit import started' ); + + $assoc_args = wp_parse_args( $assoc_args, [ + 'sourceType' => 'local', + ] ); + + $url = null; + $file_path = $args[0]; + $import_settings = []; + $import_settings['referrer'] = Module::REFERRER_LOCAL; + + switch ( $assoc_args['sourceType'] ) { + case 'library': + $url = $this->get_url_from_library( $file_path ); + $zip_path = $this->create_temp_file_from_url( $url ); + $import_settings['referrer'] = Module::REFERRER_KIT_LIBRARY; + break; + + case 'remote': + $zip_path = $this->create_temp_file_from_url( $file_path ); + break; + + case 'local': + $zip_path = $file_path; + break; + + default: + \WP_CLI::error( 'Unknown source type.' ); + break; + } + + if ( 'enable' === $assoc_args['unfilteredFilesUpload'] ) { + Plugin::$instance->uploads_manager->enable_unfiltered_files_upload(); + } + + foreach ( $assoc_args as $key => $value ) { + if ( ! in_array( $key, static::AVAILABLE_SETTINGS, true ) ) { + continue; + } + + $import_settings[ $key ] = explode( ',', $value ); + } + + try { + \WP_CLI::line( 'Importing data...' ); + + /** + * Running the import process through the import-export module so the import property in the module will be available to use. + * + * @type Module $import_export_module + */ + $import_export_module = Plugin::$instance->app->get_component( 'import-export' ); + + if ( ! $import_export_module ) { + \WP_CLI::error( 'Import Export module is not available.' ); + } + + $import = $import_export_module->import_kit( $zip_path, $import_settings ); + + $manifest_data = $import_export_module->import->get_manifest(); + + /** + * Import Export Manifest Data + * + * Allows 3rd parties to read and edit the kit's manifest before it is used. + * + * @since 3.7.0 + * + * @param array $manifest_data The Kit's Manifest data + */ + $manifest_data = apply_filters( 'elementor/import-export/wp-cli/manifest_data', $manifest_data ); + + \WP_CLI::line( 'Removing temp files...' ); + + // The file was created from remote or library request, it also should be removed. + if ( $url ) { + Plugin::$instance->uploads_manager->remove_file_or_dir( dirname( $zip_path ) ); + } + + \WP_CLI::success( 'Kit imported successfully' ); + } catch ( \Error $error ) { + Plugin::$instance->logger->get_logger()->error( $error->getMessage(), [ + 'meta' => [ + 'trace' => $error->getTraceAsString(), + ], + ] ); + + if ( $url ) { + Plugin::$instance->uploads_manager->remove_file_or_dir( dirname( $zip_path ) ); + } + + \WP_CLI::error( $error->getMessage() ); + } + } + + /** + * Revert last imported kit. + */ + public function revert() { + \WP_CLI::line( 'Kit revert started.' ); + + try { + /** + * Running the revert process through the import-export module so the revert property in the module will be available to use. + * + * @type Module $import_export_module + */ + $import_export_module = Plugin::$instance->app->get_component( 'import-export' ); + $import_export_module->revert_last_imported_kit(); + + } catch ( \Error $error ) { + \WP_CLI::error( $error->getMessage() ); + } + + \WP_CLI::success( 'Kit reverted successfully.' ); + } + + /** + * Helper to get kit url by the kit id + * TODO: Maybe extract it. + * + * @param $kit_id + * + * @return string + */ + private function get_url_from_library( $kit_id ) { + /** @var Kit_Library $app */ + $app = Plugin::$instance->common->get_component( 'connect' )->get_app( 'kit-library' ); + + if ( ! $app ) { + \WP_CLI::error( 'Kit library app not found' ); + } + + $response = $app->download_link( $kit_id ); + + if ( is_wp_error( $response ) ) { + \WP_CLI::error( "Library Response: {$response->get_error_message()}" ); + } + + return $response->download_link; + } + + /** + * Helper to get kit zip file path by the kit url + * TODO: Maybe extract it. + * + * @param $url + * + * @return string + */ + private function create_temp_file_from_url( $url ) { + \WP_CLI::line( 'Extracting zip archive...' ); + $response = wp_remote_get( $url ); + + if ( is_wp_error( $response ) ) { + \WP_CLI::error( "Download file url: {$response->get_error_message()}" ); + } + + if ( 200 !== $response['response']['code'] ) { + \WP_CLI::error( "Download file url: {$response['response']['message']}" ); + } + + // Set the Request's state as an Elementor upload request, in order to support unfiltered file uploads. + Plugin::$instance->uploads_manager->set_elementor_upload_state( true ); + + $file = Plugin::$instance->uploads_manager->create_temp_file( $response['body'], 'kit.zip' ); + + // After the upload complete, set the elementor upload state back to false. + Plugin::$instance->uploads_manager->set_elementor_upload_state( false ); + + return $file; + } +} diff --git a/wp-content/plugins/elementor/app/modules/kit-library/connect/kit-library.php b/wp-content/plugins/elementor/app/modules/kit-library/connect/kit-library.php new file mode 100644 index 0000000..6a02f6a --- /dev/null +++ b/wp-content/plugins/elementor/app/modules/kit-library/connect/kit-library.php @@ -0,0 +1,76 @@ +http_request( 'GET', 'kits/plugin-version/' . ELEMENTOR_VERSION, $args ); + } + + public function get_by_id( $id ) { + return $this->http_request( 'GET', 'kits/' . $id ); + } + + public function get_taxonomies() { + return $this->http_request( 'GET', 'taxonomies' ); + } + + public function get_manifest( $id ) { + return $this->http_request( 'GET', "kits/{$id}/manifest" ); + } + + public function download_link( $id ) { + return $this->http_request( 'GET', "kits/{$id}/download-link" ); + } + + protected function get_api_url() { + return [ + static::DEFAULT_BASE_ENDPOINT, + static::FALLBACK_BASE_ENDPOINT, + ]; + } + + /** + * Get all the connect information + * + * @return array + */ + protected function get_connect_info() { + $connect_info = $this->get_base_connect_info(); + + $additional_info = []; + + // BC Support. + $old_kit_library = new \Elementor\Core\App\Modules\KitLibrary\Connect\Kit_Library(); + + /** + * Additional connect info. + * + * Filters the connection information when connecting to Elementor servers. + * This hook can be used to add more information or add more data. + * + * @param array $additional_info Additional connecting information array. + * @param Base_App $this The base app instance. + */ + $additional_info = apply_filters( 'elementor/connect/additional-connect-info', $additional_info, $old_kit_library ); + + return array_merge( $connect_info, $additional_info ); + } + + protected function init() { + // Remove parent init actions. + } +} diff --git a/wp-content/plugins/elementor/app/modules/kit-library/data/base-controller.php b/wp-content/plugins/elementor/app/modules/kit-library/data/base-controller.php new file mode 100644 index 0000000..ed34511 --- /dev/null +++ b/wp-content/plugins/elementor/app/modules/kit-library/data/base-controller.php @@ -0,0 +1,41 @@ +repository ) { + /** @var \Elementor\Core\Common\Modules\Connect\Module $connect */ + $connect = Plugin::$instance->common->get_component( 'connect' ); + + $subscription_plans = ( new Collection( $connect->get_subscription_plans() ) ) + ->map( function ( $value ) { + return $value['label']; + } ); + + $this->repository = new Repository( + $connect->get_app( 'kit-library' ), + new User_Favorites( get_current_user_id() ), + $subscription_plans + ); + } + + return $this->repository; + } +} diff --git a/wp-content/plugins/elementor/app/modules/kit-library/data/kits/controller.php b/wp-content/plugins/elementor/app/modules/kit-library/data/kits/controller.php new file mode 100644 index 0000000..b0692a1 --- /dev/null +++ b/wp-content/plugins/elementor/app/modules/kit-library/data/kits/controller.php @@ -0,0 +1,65 @@ +get_repository()->get_all( $request->get_param( 'force' ) ); + + return [ + 'data' => $data->values(), + ]; + } + + public function get_item( $request ) { + $data = $this->get_repository()->find( $request->get_param( 'id' ) ); + + if ( ! $data ) { + return new Error_404( esc_html__( 'Kit not exists.', 'elementor' ), 'kit_not_exists' ); + } + + return [ + 'data' => $data, + ]; + } + + public function get_collection_params() { + return [ + 'force' => [ + 'description' => 'Force an API request and skip the cache.', + 'required' => false, + 'default' => false, + 'type' => 'boolean', + ], + ]; + } + + public function register_endpoints() { + $this->index_endpoint->register_item_route( \WP_REST_Server::READABLE, [ + 'id' => [ + 'description' => 'Unique identifier for the object.', + 'type' => 'string', + 'required' => true, + ], + 'id_arg_type_regex' => '[\w]+', + ] ); + + $this->register_endpoint( new Endpoints\Download_Link( $this ) ); + $this->register_endpoint( new Endpoints\Favorites( $this ) ); + } + + public function get_permission_callback( $request ) { + return current_user_can( 'administrator' ); + } +} diff --git a/wp-content/plugins/elementor/app/modules/kit-library/data/kits/endpoints/download-link.php b/wp-content/plugins/elementor/app/modules/kit-library/data/kits/endpoints/download-link.php new file mode 100644 index 0000000..105870c --- /dev/null +++ b/wp-content/plugins/elementor/app/modules/kit-library/data/kits/endpoints/download-link.php @@ -0,0 +1,40 @@ +register_item_route( \WP_REST_Server::READABLE, [ + 'id_arg_type_regex' => '[\w]+', + ] ); + } + + public function get_item( $id, $request ) { + $repository = $this->controller->get_repository(); + $data = $repository->get_download_link( $id ); + + return [ + 'data' => $data, + 'meta' => [ + 'nonce' => wp_create_nonce( 'kit-library-import' ), + ], + ]; + } +} diff --git a/wp-content/plugins/elementor/app/modules/kit-library/data/kits/endpoints/favorites.php b/wp-content/plugins/elementor/app/modules/kit-library/data/kits/endpoints/favorites.php new file mode 100644 index 0000000..fd96fd4 --- /dev/null +++ b/wp-content/plugins/elementor/app/modules/kit-library/data/kits/endpoints/favorites.php @@ -0,0 +1,50 @@ + '[\w]+', + ]; + + $this->register_item_route( \WP_REST_Server::CREATABLE, $args ); + $this->register_item_route( \WP_REST_Server::DELETABLE, $args ); + } + + public function create_item( $id, $request ) { + $repository = $this->controller->get_repository(); + $kit = $repository->add_to_favorites( $id ); + + return [ + 'data' => $kit, + ]; + } + + public function delete_item( $id, $request ) { + $repository = $this->controller->get_repository(); + + $kit = $repository->remove_from_favorites( $id ); + + return [ + 'data' => $kit, + ]; + } +} diff --git a/wp-content/plugins/elementor/app/modules/kit-library/data/repository.php b/wp-content/plugins/elementor/app/modules/kit-library/data/repository.php new file mode 100644 index 0000000..165d53f --- /dev/null +++ b/wp-content/plugins/elementor/app/modules/kit-library/data/repository.php @@ -0,0 +1,339 @@ +get_kits_data( $force_api_request ) + ->map( function ( $kit ) { + return $this->transform_kit_api_response( $kit ); + } ); + } + + /** + * Get specific kit. + * + * @param $id + * @param array $options + * + * @return array|null + */ + public function find( $id, $options = [] ) { + $options = wp_parse_args( $options, [ + 'manifest_included' => true, + ] ); + + $item = $this->get_kits_data() + ->find( function ( $kit ) use ( $id ) { + return $kit->_id === $id; + } ); + + if ( ! $item ) { + return null; + } + + $manifest = null; + + if ( $options['manifest_included'] ) { + $manifest = $this->api->get_manifest( $id ); + + if ( is_wp_error( $manifest ) ) { + throw new WP_Error_Exception( $manifest ); + } + } + + return $this->transform_kit_api_response( $item, $manifest ); + } + + /** + * @param false $force_api_request + * + * @return Collection + */ + public function get_taxonomies( $force_api_request = false ) { + return $this->get_taxonomies_data( $force_api_request ) + ->only( static::TAXONOMIES_KEYS ) + ->reduce( function ( Collection $carry, $taxonomies, $type ) { + return $carry->merge( array_map( function ( $taxonomy ) use ( $type ) { + return [ + 'text' => $taxonomy->name, + 'type' => $type, + ]; + }, $taxonomies ) ); + }, new Collection( [] ) ) + ->merge( + $this->subscription_plans->map( function ( $label ) { + return [ + 'text' => $label ? $label : self::SUBSCRIPTION_PLAN_FREE_TAG, + 'type' => 'subscription_plans', + ]; + } ) + ) + ->unique( [ 'text', 'type' ] ); + } + + /** + * @param $id + * + * @return array + */ + public function get_download_link( $id ) { + $response = $this->api->download_link( $id ); + + if ( is_wp_error( $response ) ) { + throw new WP_Error_Exception( $response ); + } + + return [ 'download_link' => $response->download_link ]; + } + + /** + * @param $id + * + * @return array + * @throws \Exception + */ + public function add_to_favorites( $id ) { + $kit = $this->find( $id, [ 'manifest_included' => false ] ); + + if ( ! $kit ) { + throw new Error_404( esc_html__( 'Kit not found', 'elementor' ), 'kit_not_found' ); + } + + $this->user_favorites->add( 'elementor', 'kits', $kit['id'] ); + + $kit['is_favorite'] = true; + + return $kit; + } + + /** + * @param $id + * + * @return array + * @throws \Exception + */ + public function remove_from_favorites( $id ) { + $kit = $this->find( $id, [ 'manifest_included' => false ] ); + + if ( ! $kit ) { + throw new Error_404( esc_html__( 'Kit not found', 'elementor' ), 'kit_not_found' ); + } + + $this->user_favorites->remove( 'elementor', 'kits', $kit['id'] ); + + $kit['is_favorite'] = false; + + return $kit; + } + + /** + * @param bool $force_api_request + * + * @return Collection + */ + private function get_kits_data( $force_api_request = false ) { + $data = get_transient( static::KITS_CACHE_KEY ); + + $experiments_manager = Plugin::$instance->experiments; + $kits_editor_layout_type = $experiments_manager->is_feature_active( 'container' ) ? 'container_flexbox' : ''; + + if ( ! $data || $force_api_request ) { + $args = [ + 'body' => [ + 'editor_layout_type' => $kits_editor_layout_type, + ], + ]; + + /** + * Filters arguments for the request to the Kits API. + * + * @since 3.11.0 + * + * @param array[] $args Array of http arguments. + */ + $args = apply_filters( 'elementor/kit-library/get-kits-data/args', $args ); + + $data = $this->api->get_all( $args ); + + if ( is_wp_error( $data ) ) { + throw new WP_Error_Exception( $data ); + } + + set_transient( static::KITS_CACHE_KEY, $data, static::KITS_CACHE_TTL_HOURS * HOUR_IN_SECONDS ); + } + + return new Collection( $data ); + } + + /** + * @param bool $force_api_request + * + * @return Collection + */ + private function get_taxonomies_data( $force_api_request = false ) { + $data = get_transient( static::KITS_TAXONOMIES_CACHE_KEY ); + + if ( ! $data || $force_api_request ) { + $data = $this->api->get_taxonomies(); + + if ( is_wp_error( $data ) ) { + throw new WP_Error_Exception( $data ); + } + + set_transient( static::KITS_TAXONOMIES_CACHE_KEY, $data, static::KITS_TAXONOMIES_CACHE_TTL_HOURS * HOUR_IN_SECONDS ); + } + + return new Collection( (array) $data ); + } + + /** + * @param $kit + * @param null $manifest + * + * @return array + */ + private function transform_kit_api_response( $kit, $manifest = null ) { + // BC: Support legacy APIs that don't have access tiers. + if ( isset( $kit->access_tier ) ) { + $access_tier = $kit->access_tier; + } else { + $access_tier = 0 === $kit->access_level + ? ConnectModule::ACCESS_TIER_FREE + : ConnectModule::ACCESS_TIER_ESSENTIAL; + } + + $subscription_plan_tag = $this->subscription_plans->get( $access_tier ); + + $taxonomies = ( new Collection( ( (array) $kit )['taxonomies'] ) ) + ->filter( function ( $taxonomy ) { + return in_array( $taxonomy->type, self::TAXONOMIES_KEYS ); + } ) + ->flatten() + ->pluck( 'name' ) + ->push( $subscription_plan_tag ? $subscription_plan_tag : self::SUBSCRIPTION_PLAN_FREE_TAG ); + + return array_merge( + [ + 'id' => $kit->_id, + 'title' => $kit->title, + 'thumbnail_url' => $kit->thumbnail, + 'access_level' => $kit->access_level, + 'access_tier' => $access_tier, + 'keywords' => $kit->keywords, + 'taxonomies' => $taxonomies->values(), + 'is_favorite' => $this->user_favorites->exists( 'elementor', 'kits', $kit->_id ), + // TODO: Remove all the isset when the API stable. + 'trend_index' => isset( $kit->trend_index ) ? $kit->trend_index : 0, + 'featured_index' => isset( $kit->featured_index ) ? $kit->featured_index : 0, + 'popularity_index' => isset( $kit->popularity_index ) ? $kit->popularity_index : 0, + 'created_at' => isset( $kit->created_at ) ? $kit->created_at : null, + 'updated_at' => isset( $kit->updated_at ) ? $kit->updated_at : null, + // + ], + $manifest ? $this->transform_manifest_api_response( $manifest ) : [] + ); + } + + /** + * @param $manifest + * + * @return array + */ + private function transform_manifest_api_response( $manifest ) { + $manifest_content = ( new Collection( (array) $manifest->content ) ) + ->reduce( function ( $carry, $content, $type ) { + $mapped_documents = array_map( function ( $document ) use ( $type ) { + // TODO: Fix it! + // Hack to override a bug when a document with type of 'wp-page' is declared as 'wp-post'. + if ( 'page' === $type ) { + $document->doc_type = 'wp-page'; + } + + return $document; + }, (array) $content ); + + return $carry + $mapped_documents; + }, [] ); + + $content = ( new Collection( (array) $manifest->templates ) ) + ->union( $manifest_content ) + ->map( function ( $manifest_item, $key ) { + return [ + 'id' => isset( $manifest_item->id ) ? $manifest_item->id : $key, + 'title' => $manifest_item->title, + 'doc_type' => $manifest_item->doc_type, + 'thumbnail_url' => $manifest_item->thumbnail, + 'preview_url' => isset( $manifest_item->url ) ? $manifest_item->url : null, + ]; + } ); + + return [ + 'description' => $manifest->description, + 'preview_url' => isset( $manifest->site ) ? $manifest->site : '', + 'documents' => $content->values(), + ]; + } + + /** + * @param Kit_Library $kit_library + * @param User_Favorites $user_favorites + * @param Collection $subscription_plans + */ + public function __construct( Kit_Library $kit_library, User_Favorites $user_favorites, Collection $subscription_plans ) { + $this->api = $kit_library; + $this->user_favorites = $user_favorites; + $this->subscription_plans = $subscription_plans; + } + + public static function clear_cache() { + delete_transient( static::KITS_CACHE_KEY ); + } +} diff --git a/wp-content/plugins/elementor/app/modules/kit-library/data/taxonomies/controller.php b/wp-content/plugins/elementor/app/modules/kit-library/data/taxonomies/controller.php new file mode 100644 index 0000000..bcf1c0f --- /dev/null +++ b/wp-content/plugins/elementor/app/modules/kit-library/data/taxonomies/controller.php @@ -0,0 +1,38 @@ + [ + 'description' => 'Force an API request and skip the cache.', + 'required' => false, + 'default' => false, + 'type' => 'boolean', + ], + ]; + } + + public function get_items( $request ) { + $data = $this->get_repository()->get_taxonomies( $request->get_param( 'force' ) ); + + return [ + 'data' => $data->values(), + ]; + } + + public function get_permission_callback( $request ) { + return current_user_can( 'administrator' ); + } +} diff --git a/wp-content/plugins/elementor/app/modules/kit-library/kit-library-menu-item.php b/wp-content/plugins/elementor/app/modules/kit-library/kit-library-menu-item.php new file mode 100644 index 0000000..8c3dfc5 --- /dev/null +++ b/wp-content/plugins/elementor/app/modules/kit-library/kit-library-menu-item.php @@ -0,0 +1,28 @@ +add_submenu( [ + 'page_title' => esc_html__( 'Kit Library', 'elementor' ), + 'menu_title' => '' . esc_html__( 'Kit Library', 'elementor' ) . '', + 'menu_slug' => Plugin::$instance->app->get_base_url() . '#/kit-library', + 'index' => 40, + ] ); + } + + /** + * Register the admin menu the old way. + */ + private function register_admin_menu_legacy( Admin_Menu_Manager $admin_menu ) { + $admin_menu->register( + Plugin::$instance->app->get_base_url() . '#/kit-library', + new Kit_Library_Menu_Item() + ); + } + + private function set_kit_library_settings() { + if ( ! Plugin::$instance->common ) { + return; + } + + /** @var ConnectModule $connect */ + $connect = Plugin::$instance->common->get_component( 'connect' ); + + /** @var Kit_Library $kit_library */ + $kit_library = $connect->get_app( 'kit-library' ); + + Plugin::$instance->app->set_settings( 'kit-library', [ + 'has_access_to_module' => current_user_can( 'administrator' ), + 'subscription_plans' => $connect->get_subscription_plans( 'kit-library' ), + 'is_pro' => false, + 'is_library_connected' => $kit_library->is_connected(), + 'library_connect_url' => $kit_library->get_admin_url( 'authorize', [ + 'utm_source' => 'kit-library', + 'utm_medium' => 'wp-dash', + 'utm_campaign' => 'library-connect', + 'utm_term' => '%%page%%', // Will be replaced in the frontend. + ] ), + 'access_level' => ConnectModule::ACCESS_LEVEL_CORE, + 'access_tier' => ConnectModule::ACCESS_TIER_FREE, + 'app_url' => Plugin::$instance->app->get_base_url() . '#/' . $this->get_name(), + ] ); + } + + /** + * Module constructor. + */ + public function __construct() { + Plugin::$instance->data_manager_v2->register_controller( new Kits_Controller() ); + Plugin::$instance->data_manager_v2->register_controller( new Taxonomies_Controller() ); + + // Assigning this action here since the repository is being loaded by demand. + add_action( 'elementor/experiments/feature-state-change/container', [ Repository::class, 'clear_cache' ], 10, 0 ); + + if ( Plugin::$instance->experiments->is_feature_active( 'admin_menu_rearrangement' ) ) { + add_action( 'elementor/admin/menu_registered/elementor', function( MainMenu $menu ) { + $this->register_admin_menu( $menu ); + } ); + } else { + add_action( 'elementor/admin/menu/register', function( Admin_Menu_Manager $admin_menu ) { + $this->register_admin_menu_legacy( $admin_menu ); + }, Source_Local::ADMIN_MENU_PRIORITY + 30 ); + } + + add_action( 'elementor/connect/apps/register', function ( ConnectModule $connect_module ) { + $connect_module->register_app( 'kit-library', Kit_Library::get_class_name() ); + } ); + + add_action( 'elementor/init', function () { + $this->set_kit_library_settings(); + }, 12 /** after the initiation of the connect kit library */ ); + } +} diff --git a/wp-content/plugins/elementor/app/modules/onboarding/module.php b/wp-content/plugins/elementor/app/modules/onboarding/module.php new file mode 100644 index 0000000..a73df1d --- /dev/null +++ b/wp-content/plugins/elementor/app/modules/onboarding/module.php @@ -0,0 +1,485 @@ +common ) { + return; + } + + // Get the published pages and posts + $pages_and_posts = new \WP_Query( [ + 'post_type' => [ 'page', 'post' ], + 'post_status' => 'publish', + 'update_post_meta_cache' => false, + 'update_post_term_cache' => false, + 'no_found_rows' => true, + ] ); + + $custom_site_logo_id = get_theme_mod( 'custom_logo' ); + $custom_logo_src = wp_get_attachment_image_src( $custom_site_logo_id, 'full' ); + $site_name = get_option( 'blogname', '' ); + + $hello_theme = wp_get_theme( 'hello-elementor' ); + $hello_theme_errors = is_object( $hello_theme->errors() ) ? $hello_theme->errors()->errors : []; + + /** @var Library $library */ + $library = Plugin::$instance->common->get_component( 'connect' )->get_app( 'library' ); + + Plugin::$instance->app->set_settings( 'onboarding', [ + 'eventPlacement' => 'Onboarding wizard', + 'onboardingAlreadyRan' => get_option( self::ONBOARDING_OPTION ), + 'onboardingVersion' => self::VERSION, + 'isLibraryConnected' => $library->is_connected(), + // Used to check if the Hello Elementor theme is installed but not activated. + 'helloInstalled' => empty( $hello_theme_errors['theme_not_found'] ), + 'helloActivated' => 'hello-elementor' === get_option( 'template' ), + // The "Use Hello theme on my site" checkbox should be checked by default only if this condition is met. + 'helloOptOut' => count( $pages_and_posts->posts ) < 5, + 'siteName' => esc_html( $site_name ), + 'isUnfilteredFilesEnabled' => Uploads_Manager::are_unfiltered_uploads_enabled(), + 'urls' => [ + 'kitLibrary' => Plugin::$instance->app->get_base_url() . '#/kit-library?order[direction]=desc&order[by]=featuredIndex', + 'createNewPage' => Plugin::$instance->documents->get_create_new_post_url(), + 'connect' => $library->get_admin_url( 'authorize', [ + 'utm_source' => 'onboarding-wizard', + 'utm_campaign' => 'connect-account', + 'utm_medium' => 'wp-dash', + 'utm_term' => self::VERSION, + 'source' => 'generic', + ] ), + 'signUp' => $library->get_admin_url( 'authorize', [ + 'utm_source' => 'onboarding-wizard', + 'utm_campaign' => 'connect-account', + 'utm_medium' => 'wp-dash', + 'utm_term' => self::VERSION, + 'source' => 'generic', + 'screen_hint' => 'signup', + ] ), + 'uploadPro' => Plugin::$instance->app->get_base_url() . '#/onboarding/uploadAndInstallPro?mode=popup', + ], + 'siteLogo' => [ + 'id' => $custom_site_logo_id, + 'url' => $custom_logo_src ? $custom_logo_src[0] : '', + ], + 'utms' => [ + 'connectTopBar' => '&utm_content=top-bar', + 'connectCta' => '&utm_content=cta-button', + 'connectCtaLink' => '&utm_content=cta-link', + 'downloadPro' => '?utm_source=onboarding-wizard&utm_campaign=my-account-subscriptions&utm_medium=wp-dash&utm_content=import-pro-plugin&utm_term=' . self::VERSION, + ], + 'nonce' => wp_create_nonce( 'onboarding' ), + ] ); + } + + /** + * Get Permission Error Response + * + * Returns the response that is returned when the user's capabilities are not sufficient for performing an action. + * + * @since 3.6.4 + * + * @return array + */ + private function get_permission_error_response() { + return [ + 'status' => 'error', + 'payload' => [ + 'error_message' => esc_html__( 'You do not have permissions to perform this action.', 'elementor' ), + ], + ]; + } + + /** + * Maybe Update Site Logo + * + * If a new name is provided, it will be updated as the Site Name. + * + * @since 3.6.0 + * + * @return array + */ + private function maybe_update_site_name() { + $problem_error = [ + 'status' => 'error', + 'payload' => [ + 'error_message' => esc_html__( 'There was a problem setting your site name.', 'elementor' ), + ], + ]; + + // phpcs:ignore WordPress.Security.NonceVerification.Missing + if ( empty( $_POST['data'] ) ) { + return $problem_error; + } + + // phpcs:ignore WordPress.Security.NonceVerification.Missing + $data = json_decode( Utils::get_super_global_value( $_POST, 'data' ), true ); + + if ( ! isset( $data['siteName'] ) ) { + return $problem_error; + } + + /** + * Onboarding Site Name + * + * Filters the new site name passed by the user to update in Elementor's onboarding process. + * Elementor runs `esc_html()` on the Site Name passed by the user for security reasons. If a user wants to + * include special characters in their site name, they can use this filter to override it. + * + * @since 3.6.0 + * + * @param string Escaped new site name + */ + $new_site_name = apply_filters( 'elementor/onboarding/site-name', $data['siteName'] ); + + // The site name is sanitized in `update_options()` + update_option( 'blogname', $new_site_name ); + + return [ + 'status' => 'success', + 'payload' => [ + 'siteNameUpdated' => true, + ], + ]; + } + + /** + * Maybe Update Site Logo + * + * If an image attachment ID is provided, it will be updated as the Site Logo Theme Mod. + * + * @since 3.6.0 + * + * @return array + */ + private function maybe_update_site_logo() { + if ( ! current_user_can( 'edit_theme_options' ) ) { + return $this->get_permission_error_response(); + } + + $data_error = [ + 'status' => 'error', + 'payload' => [ + 'error_message' => esc_html__( 'There was a problem setting your site logo.', 'elementor' ), + ], + ]; + + // phpcs:ignore WordPress.Security.NonceVerification.Missing + if ( empty( $_POST['data'] ) ) { + return $data_error; + } + + // phpcs:ignore WordPress.Security.NonceVerification.Missing + $data = json_decode( Utils::get_super_global_value( $_POST, 'data' ), true ); + + // If there is no attachment ID passed or it is not a valid ID, exit here. + if ( empty( $data['attachmentId'] ) ) { + return $data_error; + } + + $absint_attachment_id = absint( $data['attachmentId'] ); + + if ( 0 === $absint_attachment_id ) { + return $data_error; + } + + $attachment_url = wp_get_attachment_url( $data['attachmentId'] ); + + // Check if the attachment exists. If it does not, exit here. + if ( ! $attachment_url ) { + return $data_error; + } + + set_theme_mod( 'custom_logo', $absint_attachment_id ); + + return [ + 'status' => 'success', + 'payload' => [ + 'siteLogoUpdated' => true, + ], + ]; + } + + /** + * Maybe Upload Logo Image + * + * If an image file upload is provided, and it passes validation, it will be uploaded to the site's Media Library. + * + * @since 3.6.0 + * + * @return array + */ + private function maybe_upload_logo_image() { + $error_message = esc_html__( 'There was a problem uploading your file.', 'elementor' ); + + $file = Utils::get_super_global_value( $_FILES, 'fileToUpload' ); + + // phpcs:ignore WordPress.Security.NonceVerification.Missing + if ( ! is_array( $file ) || empty( $file['type'] ) ) { + return [ + 'status' => 'error', + 'payload' => [ + 'error_message' => $error_message, + ], + ]; + } + + // If the user has allowed it, set the Request's state as an "Elementor Upload" request, in order to add + // support for non-standard file uploads. + if ( 'image/svg+xml' === $file['type'] ) { + if ( Uploads_Manager::are_unfiltered_uploads_enabled() ) { + Plugin::$instance->uploads_manager->set_elementor_upload_state( true ); + } else { + wp_send_json_error( 'To upload SVG files, you must allow uploading unfiltered files.' ); + } + } + + // If the image is an SVG file, sanitation is performed during the import (upload) process. + $image_attachment = Plugin::$instance->templates_manager->get_import_images_instance()->import( $file ); + + if ( 'image/svg+xml' === $file['type'] && Uploads_Manager::are_unfiltered_uploads_enabled() ) { + // Reset Upload state. + Plugin::$instance->uploads_manager->set_elementor_upload_state( false ); + } + + if ( $image_attachment && ! is_wp_error( $image_attachment ) ) { + $result = [ + 'status' => 'success', + 'payload' => [ + 'imageAttachment' => $image_attachment, + ], + ]; + } else { + $result = [ + 'status' => 'error', + 'payload' => [ + 'error_message' => $error_message, + ], + ]; + } + + return $result; + } + + /** + * Activate Hello Theme + * + * @since 3.6.0 + * + * @return array + */ + private function maybe_activate_hello_theme() { + if ( ! current_user_can( 'switch_themes' ) ) { + return $this->get_permission_error_response(); + } + + switch_theme( 'hello-elementor' ); + + return [ + 'status' => 'success', + 'payload' => [ + 'helloThemeActivated' => true, + ], + ]; + } + + /** + * Upload and Install Elementor Pro + * + * @since 3.6.0 + * + * @return array + */ + private function upload_and_install_pro() { + if ( ! current_user_can( 'install_plugins' ) || ! current_user_can( 'activate_plugins' ) ) { + return $this->get_permission_error_response(); + } + + $error_message = esc_html__( 'There was a problem uploading your file.', 'elementor' ); + + $file = Utils::get_super_global_value( $_FILES, 'fileToUpload' ) ?? []; + + // phpcs:ignore WordPress.Security.NonceVerification.Missing + if ( ! is_array( $file ) || empty( $file['type'] ) ) { + return [ + 'status' => 'error', + 'payload' => [ + 'error_message' => $error_message, + ], + ]; + } + + $result = []; + + if ( ! class_exists( 'Automatic_Upgrader_Skin' ) ) { + require_once ABSPATH . 'wp-admin/includes/class-wp-upgrader.php'; + } + + $skin = new Automatic_Upgrader_Skin(); + $upgrader = new Plugin_Upgrader( $skin ); + $upload_result = $upgrader->install( $file['tmp_name'], [ 'overwrite_package' => false ] ); + + if ( ! $upload_result || is_wp_error( $upload_result ) ) { + $result = [ + 'status' => 'error', + 'payload' => [ + 'error_message' => $error_message, + ], + ]; + } else { + $activated = activate_plugin( WP_PLUGIN_DIR . '/elementor-pro/elementor-pro.php', false, false, true ); + + if ( ! is_wp_error( $activated ) ) { + $result = [ + 'status' => 'success', + 'payload' => [ + 'elementorProInstalled' => true, + ], + ]; + } else { + $result = [ + 'status' => 'error', + 'payload' => [ + 'error_message' => $error_message, + 'elementorProInstalled' => false, + ], + ]; + } + } + + return $result; + } + + private function maybe_update_onboarding_db_option() { + $db_option = get_option( self::ONBOARDING_OPTION ); + + if ( ! $db_option ) { + update_option( self::ONBOARDING_OPTION, true ); + } + + return [ + 'status' => 'success', + 'payload' => 'onboarding DB', + ]; + } + + /** + * Maybe Handle Ajax + * + * This method checks if there are any AJAX actions being + * @since 3.6.0 + * + * @return array|null + */ + private function maybe_handle_ajax() { + $result = []; + + // phpcs:ignore WordPress.Security.NonceVerification.Missing + switch ( Utils::get_super_global_value( $_POST, 'action' ) ) { + case 'elementor_update_site_name': + // If no value is passed for any reason, no need ot update the site name. + $result = $this->maybe_update_site_name(); + break; + case 'elementor_update_site_logo': + $result = $this->maybe_update_site_logo(); + break; + case 'elementor_upload_site_logo': + $result = $this->maybe_upload_logo_image(); + break; + case 'elementor_activate_hello_theme': + $result = $this->maybe_activate_hello_theme(); + break; + case 'elementor_upload_and_install_pro': + $result = $this->upload_and_install_pro(); + break; + case 'elementor_update_onboarding_option': + $result = $this->maybe_update_onboarding_db_option(); + } + + if ( ! empty( $result ) ) { + if ( 'success' === $result['status'] ) { + wp_send_json_success( $result['payload'] ); + } else { + wp_send_json_error( $result['payload'] ); + } + } + } + + public function __construct() { + add_action( 'elementor/init', function() { + // Only load when viewing the onboarding app. + if ( Plugin::$instance->app->is_current() ) { + $this->set_onboarding_settings(); + // Needed for installing the Hello Elementor theme. + wp_enqueue_script( 'updates' ); + // Needed for uploading Logo from WP Media Library. + wp_enqueue_media(); + } + }, 12 ); + + // Needed for uploading Logo from WP Media Library. The 'admin_menu' hook is used because it runs before + // 'admin_init', and the App triggers printing footer scripts on 'admin_init' at priority 0. + add_action( 'admin_menu', function () { + add_action( 'wp_print_footer_scripts', function () { + if ( function_exists( 'wp_print_media_templates' ) ) { + wp_print_media_templates(); + } + } ); + } ); + + add_action( 'admin_init', function() { + if ( wp_doing_ajax() && + isset( $_POST['action'] ) && + isset( $_POST['_nonce'] ) && + wp_verify_nonce( Utils::get_super_global_value( $_POST, '_nonce' ), Ajax::NONCE_KEY ) && + current_user_can( 'manage_options' ) + ) { + $this->maybe_handle_ajax(); + } + } ); + } +} diff --git a/wp-content/plugins/elementor/app/modules/site-editor/module.php b/wp-content/plugins/elementor/app/modules/site-editor/module.php new file mode 100644 index 0000000..d303c3b --- /dev/null +++ b/wp-content/plugins/elementor/app/modules/site-editor/module.php @@ -0,0 +1,44 @@ + 'elementor_app_site_editor', + 'title' => esc_html__( 'Theme Builder', 'elementor' ), + 'sub_title' => esc_html__( 'Site', 'elementor' ), + 'href' => Plugin::$instance->app->get_settings( 'menu_url' ), + 'class' => 'elementor-app-link', + 'parent_class' => 'elementor-second-section', + ]; + + return $admin_bar_config; + } + + public function __construct() { + add_filter( 'elementor/frontend/admin_bar/settings', [ $this, 'add_menu_in_admin_bar' ] ); // After kit (Site settings) + } +} diff --git a/wp-content/plugins/elementor/app/view.php b/wp-content/plugins/elementor/app/view.php new file mode 100644 index 0000000..5a2e779 --- /dev/null +++ b/wp-content/plugins/elementor/app/view.php @@ -0,0 +1,31 @@ +get_elementor_ui_theme_preference() ? 'eps-theme-dark' : ''; + +?> + +> + + + + <?php echo esc_html__( 'Elementor', 'elementor' ) . ' ... '; ?> + + + + +
+ + + diff --git a/wp-content/plugins/elementor/assets/css/admin-rtl.css b/wp-content/plugins/elementor/assets/css/admin-rtl.css new file mode 100644 index 0000000..61ff11d --- /dev/null +++ b/wp-content/plugins/elementor/assets/css/admin-rtl.css @@ -0,0 +1,2466 @@ +/*! elementor - v3.20.0 - 26-03-2024 */ +.elementor-button, +.e-btn, +#elementor-deactivate-feedback-modal .dialog-skip, +#elementor-deactivate-feedback-modal .dialog-submit { + font-size: 12px; + font-weight: 500; + line-height: 1.2; + padding: 8px 16px; + outline: none; + border: none; + border-radius: var(--e-a-border-radius); + background-color: var(--e-a-btn-bg); + color: var(--e-a-btn-color-invert); + transition: var(--e-a-transition-hover); +} +.elementor-button:hover, +.e-btn:hover, +#elementor-deactivate-feedback-modal .dialog-skip:hover, +#elementor-deactivate-feedback-modal .dialog-submit:hover { + border: none; +} +.elementor-button:hover, .elementor-button:focus, +.e-btn:hover, +#elementor-deactivate-feedback-modal .dialog-skip:hover, +#elementor-deactivate-feedback-modal .dialog-submit:hover, +.e-btn:focus, +#elementor-deactivate-feedback-modal .dialog-skip:focus, +#elementor-deactivate-feedback-modal .dialog-submit:focus { + background-color: var(--e-a-btn-bg-hover); + color: var(--e-a-btn-color-invert); +} +.elementor-button:active, +.e-btn:active, +#elementor-deactivate-feedback-modal .dialog-skip:active, +#elementor-deactivate-feedback-modal .dialog-submit:active { + background-color: var(--e-a-btn-bg-active); +} +.elementor-button:not([disabled]), +.e-btn:not([disabled]), +#elementor-deactivate-feedback-modal .dialog-skip:not([disabled]), +#elementor-deactivate-feedback-modal .dialog-submit:not([disabled]) { + cursor: pointer; +} +.elementor-button:disabled, +.e-btn:disabled, +#elementor-deactivate-feedback-modal .dialog-skip:disabled, +#elementor-deactivate-feedback-modal .dialog-submit:disabled { + background-color: var(--e-a-btn-bg-disabled); + color: var(--e-a-btn-color-disabled); +} +.elementor-button:not(.elementor-button-state) .elementor-state-icon, +.e-btn:not(.elementor-button-state) .elementor-state-icon, +#elementor-deactivate-feedback-modal .dialog-skip:not(.elementor-button-state) .elementor-state-icon, +#elementor-deactivate-feedback-modal .dialog-submit:not(.elementor-button-state) .elementor-state-icon { + display: none; +} +.elementor-button.e-btn-txt, .dialog-type-confirm .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-cancel, +.dialog-type-alert .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-cancel, +.e-btn.e-btn-txt, +#elementor-deactivate-feedback-modal .dialog-skip, +#elementor-deactivate-feedback-modal .e-btn-txt.dialog-submit, +.dialog-type-confirm .dialog-buttons-wrapper .e-btn.dialog-button.dialog-cancel, +.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-cancel.dialog-submit, +#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-submit, +.dialog-type-alert .dialog-buttons-wrapper .e-btn.dialog-button.dialog-cancel, +.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-cancel.dialog-submit, +#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-submit { + background: transparent; + color: var(--e-a-color-txt); +} +.elementor-button.e-btn-txt:hover, .dialog-type-confirm .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-cancel:hover, +.dialog-type-alert .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-cancel:hover, .elementor-button.e-btn-txt:focus, .dialog-type-confirm .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-cancel:focus, +.dialog-type-alert .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-cancel:focus, +.e-btn.e-btn-txt:hover, +#elementor-deactivate-feedback-modal .dialog-skip:hover, +#elementor-deactivate-feedback-modal .e-btn-txt.dialog-submit:hover, +.dialog-type-confirm .dialog-buttons-wrapper .e-btn.dialog-button.dialog-cancel:hover, +.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-cancel.dialog-submit:hover, +#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-submit:hover, +.dialog-type-alert .dialog-buttons-wrapper .e-btn.dialog-button.dialog-cancel:hover, +.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-cancel.dialog-submit:hover, +#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-submit:hover, +.e-btn.e-btn-txt:focus, +#elementor-deactivate-feedback-modal .dialog-skip:focus, +#elementor-deactivate-feedback-modal .e-btn-txt.dialog-submit:focus, +.dialog-type-confirm .dialog-buttons-wrapper .e-btn.dialog-button.dialog-cancel:focus, +.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-cancel.dialog-submit:focus, +#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-submit:focus, +.dialog-type-alert .dialog-buttons-wrapper .e-btn.dialog-button.dialog-cancel:focus, +.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-cancel.dialog-submit:focus, +#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-submit:focus { + background: var(--e-a-bg-hover); + color: var(--e-a-color-txt-hover); +} +.elementor-button.e-btn-txt:disabled, .dialog-type-confirm .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-cancel:disabled, +.dialog-type-alert .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-cancel:disabled, +.e-btn.e-btn-txt:disabled, +#elementor-deactivate-feedback-modal .dialog-skip:disabled, +#elementor-deactivate-feedback-modal .e-btn-txt.dialog-submit:disabled, +.dialog-type-confirm .dialog-buttons-wrapper .e-btn.dialog-button.dialog-cancel:disabled, +.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-cancel.dialog-submit:disabled, +#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-submit:disabled, +.dialog-type-alert .dialog-buttons-wrapper .e-btn.dialog-button.dialog-cancel:disabled, +.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-cancel.dialog-submit:disabled, +#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-submit:disabled { + background: transparent; + color: var(--e-a-color-txt-disabled); +} +.elementor-button.e-btn-txt-border, +.e-btn.e-btn-txt-border, +#elementor-deactivate-feedback-modal .e-btn-txt-border.dialog-skip, +#elementor-deactivate-feedback-modal .e-btn-txt-border.dialog-submit { + border: 1px solid var(--e-a-color-txt-muted); +} +.elementor-button.elementor-button-success, .elementor-button.e-success, +.e-btn.elementor-button-success, +#elementor-deactivate-feedback-modal .elementor-button-success.dialog-skip, +#elementor-deactivate-feedback-modal .elementor-button-success.dialog-submit, +.e-btn.e-success, +#elementor-deactivate-feedback-modal .e-success.dialog-skip, +#elementor-deactivate-feedback-modal .e-success.dialog-submit { + background-color: var(--e-a-btn-bg-success); +} +.elementor-button.elementor-button-success:hover, .elementor-button.elementor-button-success:focus, .elementor-button.e-success:hover, .elementor-button.e-success:focus, +.e-btn.elementor-button-success:hover, +#elementor-deactivate-feedback-modal .elementor-button-success.dialog-skip:hover, +#elementor-deactivate-feedback-modal .elementor-button-success.dialog-submit:hover, +.e-btn.elementor-button-success:focus, +#elementor-deactivate-feedback-modal .elementor-button-success.dialog-skip:focus, +#elementor-deactivate-feedback-modal .elementor-button-success.dialog-submit:focus, +.e-btn.e-success:hover, +#elementor-deactivate-feedback-modal .e-success.dialog-skip:hover, +#elementor-deactivate-feedback-modal .e-success.dialog-submit:hover, +.e-btn.e-success:focus, +#elementor-deactivate-feedback-modal .e-success.dialog-skip:focus, +#elementor-deactivate-feedback-modal .e-success.dialog-submit:focus { + background-color: var(--e-a-btn-bg-success-hover); +} +.elementor-button.e-primary, .dialog-type-confirm .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-take_over, +.dialog-type-alert .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-take_over, .dialog-type-confirm .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-ok, +.dialog-type-alert .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-ok, +.e-btn.e-primary, +#elementor-deactivate-feedback-modal .e-primary.dialog-skip, +#elementor-deactivate-feedback-modal .dialog-submit, +.dialog-type-confirm .dialog-buttons-wrapper .e-btn.dialog-button.dialog-take_over, +.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-take_over.dialog-skip, +#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-take_over.dialog-skip, +.dialog-type-alert .dialog-buttons-wrapper .e-btn.dialog-button.dialog-take_over, +.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-take_over.dialog-skip, +#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-take_over.dialog-skip, +.dialog-type-confirm .dialog-buttons-wrapper .e-btn.dialog-button.dialog-ok, +.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-ok.dialog-skip, +#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-skip, +.dialog-type-alert .dialog-buttons-wrapper .e-btn.dialog-button.dialog-ok, +.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-ok.dialog-skip, +#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-skip { + background-color: var(--e-a-btn-bg-primary); + color: var(--e-a-btn-color); +} +.elementor-button.e-primary:hover, .dialog-type-confirm .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-take_over:hover, +.dialog-type-alert .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-take_over:hover, .dialog-type-confirm .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-ok:hover, +.dialog-type-alert .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-ok:hover, .elementor-button.e-primary:focus, .dialog-type-confirm .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-take_over:focus, +.dialog-type-alert .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-take_over:focus, .dialog-type-confirm .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-ok:focus, +.dialog-type-alert .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-ok:focus, +.e-btn.e-primary:hover, +#elementor-deactivate-feedback-modal .e-primary.dialog-skip:hover, +#elementor-deactivate-feedback-modal .dialog-submit:hover, +.dialog-type-confirm .dialog-buttons-wrapper .e-btn.dialog-button.dialog-take_over:hover, +.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-take_over.dialog-skip:hover, +#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-take_over.dialog-skip:hover, +.dialog-type-alert .dialog-buttons-wrapper .e-btn.dialog-button.dialog-take_over:hover, +.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-take_over.dialog-skip:hover, +#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-take_over.dialog-skip:hover, +.dialog-type-confirm .dialog-buttons-wrapper .e-btn.dialog-button.dialog-ok:hover, +.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-ok.dialog-skip:hover, +#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-skip:hover, +.dialog-type-alert .dialog-buttons-wrapper .e-btn.dialog-button.dialog-ok:hover, +.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-ok.dialog-skip:hover, +#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-skip:hover, +.e-btn.e-primary:focus, +#elementor-deactivate-feedback-modal .e-primary.dialog-skip:focus, +#elementor-deactivate-feedback-modal .dialog-submit:focus, +.dialog-type-confirm .dialog-buttons-wrapper .e-btn.dialog-button.dialog-take_over:focus, +.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-take_over.dialog-skip:focus, +#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-take_over.dialog-skip:focus, +.dialog-type-alert .dialog-buttons-wrapper .e-btn.dialog-button.dialog-take_over:focus, +.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-take_over.dialog-skip:focus, +#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-take_over.dialog-skip:focus, +.dialog-type-confirm .dialog-buttons-wrapper .e-btn.dialog-button.dialog-ok:focus, +.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-ok.dialog-skip:focus, +#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-skip:focus, +.dialog-type-alert .dialog-buttons-wrapper .e-btn.dialog-button.dialog-ok:focus, +.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-ok.dialog-skip:focus, +#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-skip:focus { + background-color: var(--e-a-btn-bg-primary-hover); + color: var(--e-a-btn-color); +} +.elementor-button.e-primary.e-btn-txt, .dialog-type-confirm .dialog-buttons-wrapper .elementor-button.e-btn-txt.dialog-button.dialog-take_over, +.dialog-type-alert .dialog-buttons-wrapper .elementor-button.e-btn-txt.dialog-button.dialog-take_over, .dialog-type-confirm .dialog-buttons-wrapper .elementor-button.e-primary.dialog-button.dialog-cancel, .dialog-type-confirm .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-cancel.dialog-take_over, +.dialog-type-alert .dialog-buttons-wrapper .elementor-button.e-primary.dialog-button.dialog-cancel, +.dialog-type-alert .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-cancel.dialog-take_over, .dialog-type-confirm .dialog-buttons-wrapper .elementor-button.e-btn-txt.dialog-button.dialog-ok, .dialog-type-confirm .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-ok.dialog-cancel, +.dialog-type-alert .dialog-buttons-wrapper .elementor-button.e-btn-txt.dialog-button.dialog-ok, +.dialog-type-alert .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-ok.dialog-cancel, +.e-btn.e-primary.e-btn-txt, +#elementor-deactivate-feedback-modal .e-primary.dialog-skip, +#elementor-deactivate-feedback-modal .e-btn-txt.dialog-submit, +#elementor-deactivate-feedback-modal .dialog-submit.dialog-skip, +.dialog-type-confirm .dialog-buttons-wrapper .e-btn.e-btn-txt.dialog-button.dialog-take_over, +.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-take_over.dialog-skip, +#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-take_over.dialog-skip, +.dialog-type-alert .dialog-buttons-wrapper .e-btn.e-btn-txt.dialog-button.dialog-take_over, +.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-take_over.dialog-skip, +#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-take_over.dialog-skip, +.dialog-type-confirm .dialog-buttons-wrapper .e-btn.e-primary.dialog-button.dialog-cancel, +.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-cancel.dialog-submit, +#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-submit, +.dialog-type-confirm .dialog-buttons-wrapper .e-btn.dialog-button.dialog-cancel.dialog-take_over, +.dialog-type-alert .dialog-buttons-wrapper .e-btn.e-primary.dialog-button.dialog-cancel, +.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-cancel.dialog-submit, +#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-submit, +.dialog-type-alert .dialog-buttons-wrapper .e-btn.dialog-button.dialog-cancel.dialog-take_over, +.dialog-type-confirm .dialog-buttons-wrapper .e-btn.e-btn-txt.dialog-button.dialog-ok, +.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-ok.dialog-skip, +#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-skip, +.dialog-type-confirm .dialog-buttons-wrapper .e-btn.dialog-button.dialog-ok.dialog-cancel, +.dialog-type-alert .dialog-buttons-wrapper .e-btn.e-btn-txt.dialog-button.dialog-ok, +.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-ok.dialog-skip, +#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-skip, +.dialog-type-alert .dialog-buttons-wrapper .e-btn.dialog-button.dialog-ok.dialog-cancel { + background: transparent; + color: var(--e-a-color-primary-bold); +} +.elementor-button.e-primary.e-btn-txt:hover, #elementor-deactivate-feedback-modal .elementor-button.e-primary.dialog-skip:hover, #elementor-deactivate-feedback-modal .elementor-button.e-btn-txt.dialog-submit:hover, #elementor-deactivate-feedback-modal .elementor-button.dialog-submit.dialog-skip:hover, .dialog-type-confirm .dialog-buttons-wrapper .elementor-button.e-btn-txt.dialog-button.dialog-take_over:hover, .dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .elementor-button.dialog-button.dialog-take_over.dialog-skip:hover, #elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-take_over.dialog-skip:hover, +.dialog-type-alert .dialog-buttons-wrapper .elementor-button.e-btn-txt.dialog-button.dialog-take_over:hover, +.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .elementor-button.dialog-button.dialog-take_over.dialog-skip:hover, +#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-take_over.dialog-skip:hover, .dialog-type-confirm .dialog-buttons-wrapper .elementor-button.e-primary.dialog-button.dialog-cancel:hover, .dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .elementor-button.dialog-button.dialog-cancel.dialog-submit:hover, #elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-cancel.dialog-submit:hover, .dialog-type-confirm .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-cancel.dialog-take_over:hover, +.dialog-type-alert .dialog-buttons-wrapper .elementor-button.e-primary.dialog-button.dialog-cancel:hover, +.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .elementor-button.dialog-button.dialog-cancel.dialog-submit:hover, +#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-cancel.dialog-submit:hover, +.dialog-type-alert .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-cancel.dialog-take_over:hover, .dialog-type-confirm .dialog-buttons-wrapper .elementor-button.e-btn-txt.dialog-button.dialog-ok:hover, .dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .elementor-button.dialog-button.dialog-ok.dialog-skip:hover, #elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-ok.dialog-skip:hover, .dialog-type-confirm .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-ok.dialog-cancel:hover, +.dialog-type-alert .dialog-buttons-wrapper .elementor-button.e-btn-txt.dialog-button.dialog-ok:hover, +.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .elementor-button.dialog-button.dialog-ok.dialog-skip:hover, +#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-ok.dialog-skip:hover, +.dialog-type-alert .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-ok.dialog-cancel:hover, .elementor-button.e-primary.e-btn-txt:focus, #elementor-deactivate-feedback-modal .elementor-button.e-primary.dialog-skip:focus, #elementor-deactivate-feedback-modal .elementor-button.e-btn-txt.dialog-submit:focus, #elementor-deactivate-feedback-modal .elementor-button.dialog-submit.dialog-skip:focus, .dialog-type-confirm .dialog-buttons-wrapper .elementor-button.e-btn-txt.dialog-button.dialog-take_over:focus, .dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .elementor-button.dialog-button.dialog-take_over.dialog-skip:focus, #elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-take_over.dialog-skip:focus, +.dialog-type-alert .dialog-buttons-wrapper .elementor-button.e-btn-txt.dialog-button.dialog-take_over:focus, +.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .elementor-button.dialog-button.dialog-take_over.dialog-skip:focus, +#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-take_over.dialog-skip:focus, .dialog-type-confirm .dialog-buttons-wrapper .elementor-button.e-primary.dialog-button.dialog-cancel:focus, .dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .elementor-button.dialog-button.dialog-cancel.dialog-submit:focus, #elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-cancel.dialog-submit:focus, .dialog-type-confirm .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-cancel.dialog-take_over:focus, +.dialog-type-alert .dialog-buttons-wrapper .elementor-button.e-primary.dialog-button.dialog-cancel:focus, +.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .elementor-button.dialog-button.dialog-cancel.dialog-submit:focus, +#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-cancel.dialog-submit:focus, +.dialog-type-alert .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-cancel.dialog-take_over:focus, .dialog-type-confirm .dialog-buttons-wrapper .elementor-button.e-btn-txt.dialog-button.dialog-ok:focus, .dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .elementor-button.dialog-button.dialog-ok.dialog-skip:focus, #elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-ok.dialog-skip:focus, .dialog-type-confirm .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-ok.dialog-cancel:focus, +.dialog-type-alert .dialog-buttons-wrapper .elementor-button.e-btn-txt.dialog-button.dialog-ok:focus, +.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .elementor-button.dialog-button.dialog-ok.dialog-skip:focus, +#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-ok.dialog-skip:focus, +.dialog-type-alert .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-ok.dialog-cancel:focus, +.e-btn.e-primary.e-btn-txt:hover, +#elementor-deactivate-feedback-modal .e-btn.e-primary.dialog-skip:hover, +#elementor-deactivate-feedback-modal .e-primary.e-btn-txt.dialog-skip:hover, +#elementor-deactivate-feedback-modal .e-primary.dialog-skip:hover, +#elementor-deactivate-feedback-modal .e-btn.e-btn-txt.dialog-submit:hover, +#elementor-deactivate-feedback-modal .e-btn.dialog-submit.dialog-skip:hover, +#elementor-deactivate-feedback-modal .e-btn-txt.dialog-submit.dialog-skip:hover, +#elementor-deactivate-feedback-modal .dialog-submit.dialog-skip:hover, +#elementor-deactivate-feedback-modal .e-primary.e-btn-txt.dialog-submit:hover, +#elementor-deactivate-feedback-modal .e-primary.dialog-submit.dialog-skip:hover, +#elementor-deactivate-feedback-modal .e-btn-txt.dialog-submit:hover, +#elementor-deactivate-feedback-modal .dialog-submit.dialog-skip:hover, +.dialog-type-confirm .dialog-buttons-wrapper .e-btn.e-btn-txt.dialog-button.dialog-take_over:hover, +.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .e-btn.dialog-button.dialog-take_over.dialog-skip:hover, +#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .e-btn.dialog-button.dialog-take_over.dialog-skip:hover, +.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .e-btn-txt.dialog-button.dialog-take_over.dialog-skip:hover, +.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-take_over.dialog-skip:hover, +#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .e-btn-txt.dialog-button.dialog-take_over.dialog-skip:hover, +#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-take_over.dialog-skip:hover, +.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .e-btn-txt.dialog-button.dialog-take_over.dialog-submit:hover, +.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-take_over.dialog-submit.dialog-skip:hover, +#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .e-btn-txt.dialog-button.dialog-take_over.dialog-submit:hover, +#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-take_over.dialog-submit.dialog-skip:hover, +.dialog-type-alert .dialog-buttons-wrapper .e-btn.e-btn-txt.dialog-button.dialog-take_over:hover, +.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .e-btn.dialog-button.dialog-take_over.dialog-skip:hover, +#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .e-btn.dialog-button.dialog-take_over.dialog-skip:hover, +.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .e-btn-txt.dialog-button.dialog-take_over.dialog-skip:hover, +.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-take_over.dialog-skip:hover, +#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .e-btn-txt.dialog-button.dialog-take_over.dialog-skip:hover, +#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-take_over.dialog-skip:hover, +.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .e-btn-txt.dialog-button.dialog-take_over.dialog-submit:hover, +.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-take_over.dialog-submit.dialog-skip:hover, +#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .e-btn-txt.dialog-button.dialog-take_over.dialog-submit:hover, +#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-take_over.dialog-submit.dialog-skip:hover, +.dialog-type-confirm .dialog-buttons-wrapper .e-btn.e-primary.dialog-button.dialog-cancel:hover, +.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .e-primary.dialog-button.dialog-cancel.dialog-skip:hover, +#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .e-primary.dialog-button.dialog-cancel.dialog-skip:hover, +.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .e-btn.dialog-button.dialog-cancel.dialog-submit:hover, +.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-cancel.dialog-submit.dialog-skip:hover, +#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .e-btn.dialog-button.dialog-cancel.dialog-submit:hover, +#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-submit.dialog-skip:hover, +.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .e-primary.dialog-button.dialog-cancel.dialog-submit:hover, +.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-cancel.dialog-submit:hover, +#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .e-primary.dialog-button.dialog-cancel.dialog-submit:hover, +#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-submit:hover, +.dialog-type-confirm .dialog-buttons-wrapper .e-btn.dialog-button.dialog-cancel.dialog-take_over:hover, +.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-cancel.dialog-take_over.dialog-skip:hover, +#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over.dialog-skip:hover, +.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-cancel.dialog-take_over.dialog-submit:hover, +#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over.dialog-submit:hover, +.dialog-type-alert .dialog-buttons-wrapper .e-btn.e-primary.dialog-button.dialog-cancel:hover, +.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .e-primary.dialog-button.dialog-cancel.dialog-skip:hover, +#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .e-primary.dialog-button.dialog-cancel.dialog-skip:hover, +.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .e-btn.dialog-button.dialog-cancel.dialog-submit:hover, +.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-cancel.dialog-submit.dialog-skip:hover, +#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .e-btn.dialog-button.dialog-cancel.dialog-submit:hover, +#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-submit.dialog-skip:hover, +.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .e-primary.dialog-button.dialog-cancel.dialog-submit:hover, +.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-cancel.dialog-submit:hover, +#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .e-primary.dialog-button.dialog-cancel.dialog-submit:hover, +#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-submit:hover, +.dialog-type-alert .dialog-buttons-wrapper .e-btn.dialog-button.dialog-cancel.dialog-take_over:hover, +.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-cancel.dialog-take_over.dialog-skip:hover, +#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over.dialog-skip:hover, +.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-cancel.dialog-take_over.dialog-submit:hover, +#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over.dialog-submit:hover, +.dialog-type-confirm .dialog-buttons-wrapper .e-btn.e-btn-txt.dialog-button.dialog-ok:hover, +.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .e-btn.dialog-button.dialog-ok.dialog-skip:hover, +#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .e-btn.dialog-button.dialog-ok.dialog-skip:hover, +.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .e-btn-txt.dialog-button.dialog-ok.dialog-skip:hover, +.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-ok.dialog-skip:hover, +#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .e-btn-txt.dialog-button.dialog-ok.dialog-skip:hover, +#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-skip:hover, +.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .e-btn-txt.dialog-button.dialog-ok.dialog-submit:hover, +.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-ok.dialog-submit.dialog-skip:hover, +#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .e-btn-txt.dialog-button.dialog-ok.dialog-submit:hover, +#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-submit.dialog-skip:hover, +.dialog-type-confirm .dialog-buttons-wrapper .e-btn.dialog-button.dialog-ok.dialog-cancel:hover, +.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-ok.dialog-cancel.dialog-skip:hover, +#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel.dialog-skip:hover, +.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-ok.dialog-cancel.dialog-submit:hover, +#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel.dialog-submit:hover, +.dialog-type-alert .dialog-buttons-wrapper .e-btn.e-btn-txt.dialog-button.dialog-ok:hover, +.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .e-btn.dialog-button.dialog-ok.dialog-skip:hover, +#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .e-btn.dialog-button.dialog-ok.dialog-skip:hover, +.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .e-btn-txt.dialog-button.dialog-ok.dialog-skip:hover, +.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-ok.dialog-skip:hover, +#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .e-btn-txt.dialog-button.dialog-ok.dialog-skip:hover, +#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-skip:hover, +.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .e-btn-txt.dialog-button.dialog-ok.dialog-submit:hover, +.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-ok.dialog-submit.dialog-skip:hover, +#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .e-btn-txt.dialog-button.dialog-ok.dialog-submit:hover, +#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-submit.dialog-skip:hover, +.dialog-type-alert .dialog-buttons-wrapper .e-btn.dialog-button.dialog-ok.dialog-cancel:hover, +.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-ok.dialog-cancel.dialog-skip:hover, +#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel.dialog-skip:hover, +.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-ok.dialog-cancel.dialog-submit:hover, +#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel.dialog-submit:hover, +.e-btn.e-primary.e-btn-txt:focus, +#elementor-deactivate-feedback-modal .e-btn.e-primary.dialog-skip:focus, +#elementor-deactivate-feedback-modal .e-primary.e-btn-txt.dialog-skip:focus, +#elementor-deactivate-feedback-modal .e-primary.dialog-skip:focus, +#elementor-deactivate-feedback-modal .e-btn.e-btn-txt.dialog-submit:focus, +#elementor-deactivate-feedback-modal .e-btn.dialog-submit.dialog-skip:focus, +#elementor-deactivate-feedback-modal .e-btn-txt.dialog-submit.dialog-skip:focus, +#elementor-deactivate-feedback-modal .dialog-submit.dialog-skip:focus, +#elementor-deactivate-feedback-modal .e-primary.e-btn-txt.dialog-submit:focus, +#elementor-deactivate-feedback-modal .e-primary.dialog-submit.dialog-skip:focus, +#elementor-deactivate-feedback-modal .e-btn-txt.dialog-submit:focus, +#elementor-deactivate-feedback-modal .dialog-submit.dialog-skip:focus, +.dialog-type-confirm .dialog-buttons-wrapper .e-btn.e-btn-txt.dialog-button.dialog-take_over:focus, +.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .e-btn.dialog-button.dialog-take_over.dialog-skip:focus, +#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .e-btn.dialog-button.dialog-take_over.dialog-skip:focus, +.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .e-btn-txt.dialog-button.dialog-take_over.dialog-skip:focus, +.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-take_over.dialog-skip:focus, +#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .e-btn-txt.dialog-button.dialog-take_over.dialog-skip:focus, +#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-take_over.dialog-skip:focus, +.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .e-btn-txt.dialog-button.dialog-take_over.dialog-submit:focus, +.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-take_over.dialog-submit.dialog-skip:focus, +#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .e-btn-txt.dialog-button.dialog-take_over.dialog-submit:focus, +#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-take_over.dialog-submit.dialog-skip:focus, +.dialog-type-alert .dialog-buttons-wrapper .e-btn.e-btn-txt.dialog-button.dialog-take_over:focus, +.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .e-btn.dialog-button.dialog-take_over.dialog-skip:focus, +#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .e-btn.dialog-button.dialog-take_over.dialog-skip:focus, +.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .e-btn-txt.dialog-button.dialog-take_over.dialog-skip:focus, +.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-take_over.dialog-skip:focus, +#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .e-btn-txt.dialog-button.dialog-take_over.dialog-skip:focus, +#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-take_over.dialog-skip:focus, +.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .e-btn-txt.dialog-button.dialog-take_over.dialog-submit:focus, +.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-take_over.dialog-submit.dialog-skip:focus, +#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .e-btn-txt.dialog-button.dialog-take_over.dialog-submit:focus, +#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-take_over.dialog-submit.dialog-skip:focus, +.dialog-type-confirm .dialog-buttons-wrapper .e-btn.e-primary.dialog-button.dialog-cancel:focus, +.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .e-primary.dialog-button.dialog-cancel.dialog-skip:focus, +#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .e-primary.dialog-button.dialog-cancel.dialog-skip:focus, +.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .e-btn.dialog-button.dialog-cancel.dialog-submit:focus, +.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-cancel.dialog-submit.dialog-skip:focus, +#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .e-btn.dialog-button.dialog-cancel.dialog-submit:focus, +#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-submit.dialog-skip:focus, +.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .e-primary.dialog-button.dialog-cancel.dialog-submit:focus, +.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-cancel.dialog-submit:focus, +#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .e-primary.dialog-button.dialog-cancel.dialog-submit:focus, +#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-submit:focus, +.dialog-type-confirm .dialog-buttons-wrapper .e-btn.dialog-button.dialog-cancel.dialog-take_over:focus, +.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-cancel.dialog-take_over.dialog-skip:focus, +#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over.dialog-skip:focus, +.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-cancel.dialog-take_over.dialog-submit:focus, +#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over.dialog-submit:focus, +.dialog-type-alert .dialog-buttons-wrapper .e-btn.e-primary.dialog-button.dialog-cancel:focus, +.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .e-primary.dialog-button.dialog-cancel.dialog-skip:focus, +#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .e-primary.dialog-button.dialog-cancel.dialog-skip:focus, +.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .e-btn.dialog-button.dialog-cancel.dialog-submit:focus, +.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-cancel.dialog-submit.dialog-skip:focus, +#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .e-btn.dialog-button.dialog-cancel.dialog-submit:focus, +#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-submit.dialog-skip:focus, +.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .e-primary.dialog-button.dialog-cancel.dialog-submit:focus, +.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-cancel.dialog-submit:focus, +#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .e-primary.dialog-button.dialog-cancel.dialog-submit:focus, +#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-submit:focus, +.dialog-type-alert .dialog-buttons-wrapper .e-btn.dialog-button.dialog-cancel.dialog-take_over:focus, +.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-cancel.dialog-take_over.dialog-skip:focus, +#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over.dialog-skip:focus, +.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-cancel.dialog-take_over.dialog-submit:focus, +#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over.dialog-submit:focus, +.dialog-type-confirm .dialog-buttons-wrapper .e-btn.e-btn-txt.dialog-button.dialog-ok:focus, +.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .e-btn.dialog-button.dialog-ok.dialog-skip:focus, +#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .e-btn.dialog-button.dialog-ok.dialog-skip:focus, +.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .e-btn-txt.dialog-button.dialog-ok.dialog-skip:focus, +.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-ok.dialog-skip:focus, +#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .e-btn-txt.dialog-button.dialog-ok.dialog-skip:focus, +#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-skip:focus, +.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .e-btn-txt.dialog-button.dialog-ok.dialog-submit:focus, +.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-ok.dialog-submit.dialog-skip:focus, +#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .e-btn-txt.dialog-button.dialog-ok.dialog-submit:focus, +#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-submit.dialog-skip:focus, +.dialog-type-confirm .dialog-buttons-wrapper .e-btn.dialog-button.dialog-ok.dialog-cancel:focus, +.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-ok.dialog-cancel.dialog-skip:focus, +#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel.dialog-skip:focus, +.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-ok.dialog-cancel.dialog-submit:focus, +#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel.dialog-submit:focus, +.dialog-type-alert .dialog-buttons-wrapper .e-btn.e-btn-txt.dialog-button.dialog-ok:focus, +.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .e-btn.dialog-button.dialog-ok.dialog-skip:focus, +#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .e-btn.dialog-button.dialog-ok.dialog-skip:focus, +.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .e-btn-txt.dialog-button.dialog-ok.dialog-skip:focus, +.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-ok.dialog-skip:focus, +#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .e-btn-txt.dialog-button.dialog-ok.dialog-skip:focus, +#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-skip:focus, +.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .e-btn-txt.dialog-button.dialog-ok.dialog-submit:focus, +.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-ok.dialog-submit.dialog-skip:focus, +#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .e-btn-txt.dialog-button.dialog-ok.dialog-submit:focus, +#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-submit.dialog-skip:focus, +.dialog-type-alert .dialog-buttons-wrapper .e-btn.dialog-button.dialog-ok.dialog-cancel:focus, +.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-ok.dialog-cancel.dialog-skip:focus, +#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel.dialog-skip:focus, +.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-ok.dialog-cancel.dialog-submit:focus, +#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel.dialog-submit:focus { + background: var(--e-a-bg-primary); +} +.elementor-button.go-pro, .elementor-button.e-accent, +.e-btn.go-pro, +#elementor-deactivate-feedback-modal .go-pro.dialog-skip, +#elementor-deactivate-feedback-modal .go-pro.dialog-submit, +.e-btn.e-accent, +#elementor-deactivate-feedback-modal .e-accent.dialog-skip, +#elementor-deactivate-feedback-modal .e-accent.dialog-submit { + background-color: var(--e-a-btn-bg-accent); +} +.elementor-button.go-pro:hover, .elementor-button.go-pro:focus, .elementor-button.e-accent:hover, .elementor-button.e-accent:focus, +.e-btn.go-pro:hover, +#elementor-deactivate-feedback-modal .go-pro.dialog-skip:hover, +#elementor-deactivate-feedback-modal .go-pro.dialog-submit:hover, +.e-btn.go-pro:focus, +#elementor-deactivate-feedback-modal .go-pro.dialog-skip:focus, +#elementor-deactivate-feedback-modal .go-pro.dialog-submit:focus, +.e-btn.e-accent:hover, +#elementor-deactivate-feedback-modal .e-accent.dialog-skip:hover, +#elementor-deactivate-feedback-modal .e-accent.dialog-submit:hover, +.e-btn.e-accent:focus, +#elementor-deactivate-feedback-modal .e-accent.dialog-skip:focus, +#elementor-deactivate-feedback-modal .e-accent.dialog-submit:focus { + background-color: var(--e-a-btn-bg-accent-hover); +} +.elementor-button.go-pro:active, .elementor-button.e-accent:active, +.e-btn.go-pro:active, +#elementor-deactivate-feedback-modal .go-pro.dialog-skip:active, +#elementor-deactivate-feedback-modal .go-pro.dialog-submit:active, +.e-btn.e-accent:active, +#elementor-deactivate-feedback-modal .e-accent.dialog-skip:active, +#elementor-deactivate-feedback-modal .e-accent.dialog-submit:active { + background-color: var(--e-a-btn-bg-accent-active); +} +.elementor-button.elementor-button-info, .elementor-button.e-info, +.e-btn.elementor-button-info, +#elementor-deactivate-feedback-modal .elementor-button-info.dialog-skip, +#elementor-deactivate-feedback-modal .elementor-button-info.dialog-submit, +.e-btn.e-info, +#elementor-deactivate-feedback-modal .e-info.dialog-skip, +#elementor-deactivate-feedback-modal .e-info.dialog-submit { + background-color: var(--e-a-btn-bg-info); +} +.elementor-button.elementor-button-info:hover, .elementor-button.elementor-button-info:focus, .elementor-button.e-info:hover, .elementor-button.e-info:focus, +.e-btn.elementor-button-info:hover, +#elementor-deactivate-feedback-modal .elementor-button-info.dialog-skip:hover, +#elementor-deactivate-feedback-modal .elementor-button-info.dialog-submit:hover, +.e-btn.elementor-button-info:focus, +#elementor-deactivate-feedback-modal .elementor-button-info.dialog-skip:focus, +#elementor-deactivate-feedback-modal .elementor-button-info.dialog-submit:focus, +.e-btn.e-info:hover, +#elementor-deactivate-feedback-modal .e-info.dialog-skip:hover, +#elementor-deactivate-feedback-modal .e-info.dialog-submit:hover, +.e-btn.e-info:focus, +#elementor-deactivate-feedback-modal .e-info.dialog-skip:focus, +#elementor-deactivate-feedback-modal .e-info.dialog-submit:focus { + background-color: var(--e-a-btn-bg-info-hover); +} +.elementor-button.elementor-button-warning, .elementor-button.e-warning, +.e-btn.elementor-button-warning, +#elementor-deactivate-feedback-modal .elementor-button-warning.dialog-skip, +#elementor-deactivate-feedback-modal .elementor-button-warning.dialog-submit, +.e-btn.e-warning, +#elementor-deactivate-feedback-modal .e-warning.dialog-skip, +#elementor-deactivate-feedback-modal .e-warning.dialog-submit { + background-color: var(--e-a-btn-bg-warning); +} +.elementor-button.elementor-button-warning:hover, .elementor-button.elementor-button-warning:focus, .elementor-button.e-warning:hover, .elementor-button.e-warning:focus, +.e-btn.elementor-button-warning:hover, +#elementor-deactivate-feedback-modal .elementor-button-warning.dialog-skip:hover, +#elementor-deactivate-feedback-modal .elementor-button-warning.dialog-submit:hover, +.e-btn.elementor-button-warning:focus, +#elementor-deactivate-feedback-modal .elementor-button-warning.dialog-skip:focus, +#elementor-deactivate-feedback-modal .elementor-button-warning.dialog-submit:focus, +.e-btn.e-warning:hover, +#elementor-deactivate-feedback-modal .e-warning.dialog-skip:hover, +#elementor-deactivate-feedback-modal .e-warning.dialog-submit:hover, +.e-btn.e-warning:focus, +#elementor-deactivate-feedback-modal .e-warning.dialog-skip:focus, +#elementor-deactivate-feedback-modal .e-warning.dialog-submit:focus { + background-color: var(--e-a-btn-bg-warning-hover); +} +.elementor-button.elementor-button-danger, .elementor-button.e-danger, +.e-btn.elementor-button-danger, +#elementor-deactivate-feedback-modal .elementor-button-danger.dialog-skip, +#elementor-deactivate-feedback-modal .elementor-button-danger.dialog-submit, +.e-btn.e-danger, +#elementor-deactivate-feedback-modal .e-danger.dialog-skip, +#elementor-deactivate-feedback-modal .e-danger.dialog-submit { + background-color: var(--e-a-btn-bg-danger); +} +.elementor-button.elementor-button-danger:hover, .elementor-button.elementor-button-danger:focus, .elementor-button.e-danger:hover, .elementor-button.e-danger:focus, +.e-btn.elementor-button-danger:hover, +#elementor-deactivate-feedback-modal .elementor-button-danger.dialog-skip:hover, +#elementor-deactivate-feedback-modal .elementor-button-danger.dialog-submit:hover, +.e-btn.elementor-button-danger:focus, +#elementor-deactivate-feedback-modal .elementor-button-danger.dialog-skip:focus, +#elementor-deactivate-feedback-modal .elementor-button-danger.dialog-submit:focus, +.e-btn.e-danger:hover, +#elementor-deactivate-feedback-modal .e-danger.dialog-skip:hover, +#elementor-deactivate-feedback-modal .e-danger.dialog-submit:hover, +.e-btn.e-danger:focus, +#elementor-deactivate-feedback-modal .e-danger.dialog-skip:focus, +#elementor-deactivate-feedback-modal .e-danger.dialog-submit:focus { + background-color: var(--e-a-btn-bg-danger-hover); +} +.elementor-button i, +.e-btn i, +#elementor-deactivate-feedback-modal .dialog-skip i, +#elementor-deactivate-feedback-modal .dialog-submit i { + margin-inline-end: 5px; +} + +#adminmenu #toplevel_page_elementor div.wp-menu-image:before { + content: "\e813"; + font-family: eicons; + font-size: 18px; + margin-block-start: 1px; +} +#adminmenu #toplevel_page_elementor a[href="admin.php?page=go_elementor_pro"] { + font-weight: 600; + background-color: #93003f; + color: #ffffff; + margin: 3px 10px 0; + display: block; + text-align: center; + border-radius: 3px; + transition: all 0.3s; +} +#adminmenu #toplevel_page_elementor a[href="admin.php?page=go_elementor_pro"]:hover, #adminmenu #toplevel_page_elementor a[href="admin.php?page=go_elementor_pro"]:focus { + background-color: #c60055; + box-shadow: none; +} +#adminmenu #menu-posts-elementor_library .wp-menu-image:before { + content: "\e8ff"; + font-family: eicons; + font-size: 18px; +} + +#e-admin-menu__kit-library { + color: #5cb85c; +} + +.elementor-plugins-gopro { + color: #93003f; + font-weight: bold; +} +.elementor-plugins-gopro:hover, .elementor-plugins-gopro:focus { + color: #c60055; +} + +#elementor-switch-mode { + margin: 15px 0; +} + +#elementor-switch-mode-button, +#elementor-editor-button { + outline: none; + cursor: pointer; +} +#elementor-switch-mode-button i, +#elementor-editor-button i { + margin-inline-end: 3px; + font-size: 125%; + font-style: normal; +} + +body.elementor-editor-active .elementor-switch-mode-off { + display: none; +} +body.elementor-editor-active #elementor-switch-mode-button { + background-color: #f7f7f7; + color: #555; + border-color: #ccc; + box-shadow: 0 1px 0 #ccc !important; + text-shadow: unset; +} +body.elementor-editor-active #elementor-switch-mode-button:hover { + background-color: #e9e9e9; +} +body.elementor-editor-active #elementor-switch-mode-button:active { + box-shadow: inset 0 1px 0 #ccc; + transform: translateY(1px); +} +body.elementor-editor-active #postdivrich { + display: none !important; +} +body.elementor-editor-active .editor-block-list__layout, +body.elementor-editor-active .block-editor-block-list__layout { + display: none; +} +body.elementor-editor-inactive .elementor-switch-mode-on { + display: none; +} +body.elementor-editor-inactive #elementor-editor { + display: none; +} + +body.elementor-editor-active .editor-block-list__layout { + display: none; +} +body.elementor-editor-active .edit-post-layout__content .edit-post-visual-editor { + flex-basis: auto; +} +body.elementor-editor-active #elementor-editor { + margin-block-end: 50px; +} +body.elementor-editor-active .edit-post-text-editor__body .editor-post-text-editor { + display: none; +} +body.elementor-editor-active :is(.is-desktop-preview, .is-tablet-preview, .is-mobile-preview) :is(.editor-styles-wrapper, iframe[name=editor-canvas]) { + height: auto !important; + padding: 0 !important; + flex: 0 !important; +} +body .block-editor #elementor-switch-mode { + margin: 0 15px; +} +body .block-editor #elementor-switch-mode .button { + margin: 2px; + height: 33px; + font-size: 13px; + line-height: 1; +} +body .block-editor #elementor-switch-mode .button i { + padding-inline-end: 5px; +} + +.elementor-button { + font-size: 13px; + text-decoration: none; + padding: 15px 40px; +} + +#elementor-editor { + height: 300px; + width: 100%; + transition: all 0.5s ease; +} +#elementor-editor .elementor-loader-wrapper { + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + width: 300px; + display: flex; + flex-direction: column; + align-items: center; + gap: 30px; +} +#elementor-editor .elementor-loader { + border-radius: 50%; + padding: 40px; + height: 150px; + width: 150px; + background-color: var(--e-a-bg-active); + box-sizing: border-box; + box-shadow: 2px 2px 20px 4px rgba(0, 0, 0, 0.02); +} +#elementor-editor .elementor-loader-boxes { + height: 100%; + width: 100%; + position: relative; +} +#elementor-editor .elementor-loader-box { + position: absolute; + background-color: var(--e-a-color-txt-hover); + animation: load 1.8s linear infinite; +} +#elementor-editor .elementor-loader-box:nth-of-type(1) { + width: 20%; + height: 100%; + left: 0; + top: 0; +} +#elementor-editor .elementor-loader-box:not(:nth-of-type(1)) { + right: 0; + height: 20%; + width: 60%; +} +#elementor-editor .elementor-loader-box:nth-of-type(2) { + top: 0; + animation-delay: calc(1.8s / 4 * -1); +} +#elementor-editor .elementor-loader-box:nth-of-type(3) { + top: 40%; + animation-delay: calc(1.8s / 4 * -2); +} +#elementor-editor .elementor-loader-box:nth-of-type(4) { + bottom: 0; + animation-delay: calc(1.8s / 4 * -3); +} +#elementor-editor .elementor-loading-title { + color: var(--e-a-color-txt); + text-align: center; + text-transform: uppercase; + letter-spacing: 7px; + text-indent: 7px; + font-size: 10px; + width: 100%; +} + +#elementor-go-to-edit-page-link { + height: 100%; + display: flex; + justify-content: center; + align-items: center; + border: 1px solid #DDD; + background-color: #F7F7F7; + text-decoration: none; + position: relative; + font-family: Sans-serif; +} +#elementor-go-to-edit-page-link:hover { + background-color: #ffffff; +} +#elementor-go-to-edit-page-link:focus { + box-shadow: none; +} +#elementor-go-to-edit-page-link.elementor-animate #elementor-editor-button { + display: none; +} +#elementor-go-to-edit-page-link:not(.elementor-animate) .elementor-loader-wrapper { + display: none; +} + +.elementor-button-spinner:before { + font: normal 20px/0.5 dashicons; + speak: none; + display: inline-block; + padding: 0; + inset-block-start: 8px; + inset-inline-start: -4px; + position: relative; + vertical-align: top; + content: "\f463"; +} +.elementor-button-spinner.loading:before { + animation: rotation 1s infinite linear; +} +.elementor-button-spinner.success:before { + content: "\f147"; + color: #46b450; +} + +.elementor-blank_state { + padding: 5em 0; + margin: auto; + max-width: 520px; + text-align: center; + font-family: var(--e-a-font-family); +} +.elementor-blank_state i { + font-size: 50px; +} +.elementor-blank_state h3 { + font-size: 32px; + font-weight: 300; + color: inherit; + margin: 20px 0 10px; + line-height: 1.2; +} +.elementor-blank_state p { + font-size: 16px; + font-weight: normal; + margin-block-end: 40px; +} +.elementor-blank_state .elementor-button { + display: inline-block; +} + +#available-widgets [class*=elementor-template] .widget-title:before { + content: "\e813"; + font-family: eicons; + font-size: 17px; +} + +.elementor-settings-form-page { + padding-block-start: 30px; +} +.elementor-settings-form-page:not(.elementor-active) { + display: none; +} + +._elementor_settings_update_time { + display: none; +} + +body.post-type-attachment table.media .column-title .media-icon img[src$=".svg"] { + width: 100%; +} + +.e-major-update-warning { + margin-block-end: 5px; + max-width: 1000px; + display: flex; +} +.e-major-update-warning__separator { + margin: 15px -12px; +} +.e-major-update-warning__icon { + font-size: 17px; + margin-inline-end: 9px; + margin-inline-start: 2px; +} +.e-major-update-warning__title { + font-weight: 600; + margin-block-end: 10px; +} +.e-major-update-warning + p { + display: none; +} + +.notice-success .e-major-update-warning__separator { + border: 1px solid #46b450; +} +.notice-success .e-major-update-warning__icon { + color: #79ba49; +} + +.notice-warning .e-major-update-warning__separator { + border: 1px solid #ffb900; +} +.notice-warning .e-major-update-warning__icon { + color: #f56e28; +} + +.plugins table.e-compatibility-update-table tr { + background: transparent; +} +.plugins table.e-compatibility-update-table tr th { + font-weight: 600; +} +.plugins table.e-compatibility-update-table tr th, .plugins table.e-compatibility-update-table tr td { + min-width: 250px; + font-size: 13px; + background: transparent; + box-shadow: none; + border: none; + padding-block-start: 5px; + padding-block-end: 5px; + padding-inline-end: 15px; + padding-inline-start: 0; +} + +:root { + --e-focus-color: rgba(0, 115, 170, .4); + --e-context-primary-color: #0073aa; + --e-context-primary-color-dark: #005177; + --e-context-primary-tint-4: rgba(0, 115, 170, 0.4); + --e-context-primary-tint-1: rgba(0, 115, 170, 0.04); + --e-context-success-color: #0A875A; + --e-context-success-color-dark: #06583a; + --e-context-success-tint-4: rgba(10, 135, 90, 0.4); + --e-context-success-tint-1: rgba(10, 135, 90, 0.04); + --e-context-info-color: #2563EB; + --e-context-info-color-dark: #134cca; + --e-context-info-tint-4: rgba(37, 99, 235, 0.4); + --e-context-info-tint-1: rgba(37, 99, 235, 0.04); + --e-context-warning-color: #F59E0B; + --e-context-warning-color-dark: #c57f08; + --e-context-warning-tint-4: rgba(245, 158, 11, 0.4); + --e-context-warning-tint-1: rgba(245, 158, 11, 0.04); + --e-context-error-color: #DC2626; + --e-context-error-color-dark: #b21d1d; + --e-context-error-tint-4: rgba(220, 38, 38, 0.4); + --e-context-error-tint-1: rgba(220, 38, 38, 0.04); + --e-context-cta-color: #524CFF; + --e-context-cta-color-dark: #2119ff; + --e-context-cta-tint-4: rgba(82, 76, 255, 0.4); + --e-context-cta-tint-1: rgba(82, 76, 255, 0.04); +} + +.e-getting-started { + max-width: 900px; + padding: 2.5em 0; + margin: auto; + text-align: center; +} +.e-getting-started__header { + display: flex; + flex-direction: row; + justify-content: space-between; + align-items: center; + box-shadow: 0 0 8px rgba(0, 0, 0, 0.1); +} +.e-getting-started__header .e-logo-wrapper { + font-size: 10px; + margin-inline-end: 10px; +} +.e-getting-started__title { + padding: 0 15px; + font-weight: 600; + text-transform: uppercase; + display: flex; + align-items: center; +} +.e-getting-started__skip { + border-inline-start: 1px solid #eee; + font-size: 16px; + color: inherit; +} +.e-getting-started__skip i { + padding: 15px; +} +.e-getting-started__content { + padding: 50px; +} +.e-getting-started__content h2 { + font-size: 2em; + margin-block-start: 0; +} +.e-getting-started__content--narrow { + max-width: 500px; + margin: auto; +} +.e-getting-started__video { + margin: 40px 0 60px; +} +.e-getting-started__video iframe { + box-shadow: 10px 10px 20px rgba(0, 0, 0, 0.15); +} +.e-getting-started__actions .button-primary { + margin-inline-end: 20px; +} + +:root { + --e-button-padding-block: 0.4375rem; + --e-button-padding-inline: 0.75rem; + --e-button-font-size: 0.8125rem; + --e-button-font-weight: 500; + --e-button-line-height: 0.9375rem; + --e-button-border-radius: 3px; + --e-button-context-color: var(--e-context-primary-color); + --e-button-context-color-dark: var(--e-context-primary-color-dark); + --e-button-context-tint: var(--e-context-primary-tint-1); +} + +.e-button { + display: inline-block; + font-weight: var(--e-button-font-weight); + text-align: center; + white-space: nowrap; + vertical-align: middle; + -webkit-user-select: none; + -moz-user-select: none; + user-select: none; + color: #ffffff; + border: 0; + text-decoration: none; + background: var(--e-button-context-color); + padding: var(--e-button-padding-block) var(--e-button-padding-inline); + font-size: var(--e-button-font-size); + line-height: var(--e-button-line-height); + border-radius: var(--e-button-border-radius); + transition: background-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; +} +.e-button:active, .e-button:hover, .e-button:focus { + color: #ffffff; + text-decoration: none; + background: var(--e-button-context-color-dark); +} +.e-button:focus, .e-button.focus { + outline: 0; + box-shadow: 0 0 0 2px var(--e-focus-color); +} +.e-button.disabled, .e-button:disabled { + opacity: 0.5; + box-shadow: none; +} +.e-button:not(:disabled):not(.disabled) { + cursor: pointer; +} +.e-button:not(:disabled):not(.disabled):active:focus, .e-button:not(:disabled):not(.disabled).active:focus { + box-shadow: 0 0 0 2px var(--e-focus-color); +} +.e-button--primary { + --e-button-context-color: var(--e-context-primary-color); + --e-button-context-color-dark: var(--e-context-primary-color-dark); + --e-button-context-tint: var(--e-context-primary-tint-1); + --e-focus-color: var(--e-context-primary-tint-4); +} +.e-button--success { + --e-button-context-color: var(--e-context-success-color); + --e-button-context-color-dark: var(--e-context-success-color-dark); + --e-button-context-tint: var(--e-context-success-tint-1); + --e-focus-color: var(--e-context-success-tint-4); +} +.e-button--info { + --e-button-context-color: var(--e-context-info-color); + --e-button-context-color-dark: var(--e-context-info-color-dark); + --e-button-context-tint: var(--e-context-info-tint-1); + --e-focus-color: var(--e-context-info-tint-4); +} +.e-button--warning { + --e-button-context-color: var(--e-context-warning-color); + --e-button-context-color-dark: var(--e-context-warning-color-dark); + --e-button-context-tint: var(--e-context-warning-tint-1); + --e-focus-color: var(--e-context-warning-tint-4); +} +.e-button--error { + --e-button-context-color: var(--e-context-error-color); + --e-button-context-color-dark: var(--e-context-error-color-dark); + --e-button-context-tint: var(--e-context-error-tint-1); + --e-focus-color: var(--e-context-error-tint-4); +} +.e-button--cta { + --e-button-context-color: var(--e-context-cta-color); + --e-button-context-color-dark: var(--e-context-cta-color-dark); + --e-button-context-tint: var(--e-context-cta-tint-1); + --e-focus-color: var(--e-context-cta-tint-4); +} +.e-button.e-button--outline { + color: var(--e-button-context-color); + background: none; + border: 1px solid currentColor; +} +.e-button.e-button--outline:hover, .e-button.e-button--outline:focus { + color: var(--e-button-context-color-dark); + background: var(--e-button-context-tint); +} +.e-button.e-button--outline.disabled, .e-button.e-button--outline:disabled { + color: var(--e-button-context-color-dark); + background: #69727D; +} +.e-button > i { + line-height: inherit; + height: var(--e-button-line-height); + width: -moz-min-content; + width: min-content; +} +.e-button > * + * { + margin-inline-start: 0.5ch; +} +.e-button--link { + color: var(--e-button-context-color); + background-color: transparent; +} +.e-button--link:hover, .e-button--link:focus { + color: var(--e-button-context-color-dark); + background: var(--e-button-context-tint); +} +.e-button--link:disabled, .e-button--link.disabled { + color: #69727D; +} + +a.e-button.disabled, +fieldset:disabled a.e-button { + pointer-events: none; +} + +:root { + --e-notice-bg: #fff; + --e-notice-border-color: #ccd0d4; + --e-notice-context-color: #93003f; + --e-notice-context-tint: var(--e-context-cta-tint-1); + --e-notice-box-shadow: 0 1px 4px rgba(0,0,0,.15); + --e-notice-dismiss-color: #3f444b; +} + +.e-notice { + position: relative; + display: flex; + font-family: Roboto, Arial, Helvetica, sans-serif; + background: var(--e-notice-bg); + border: 1px solid var(--e-notice-border-color); + border-inline-start-width: 4px; + box-shadow: var(--e-notice-box-shadow); + margin: 5px 20px 5px 2px; +} +.e-notice.notice { + padding: 0; +} +.e-notice::before { + display: block; + content: ""; + position: absolute; + inset-inline-start: -4px; + inset-block-start: -1px; + inset-block-end: -1px; + width: 4px; + background-color: var(--e-notice-context-color); +} +.e-notice--primary { + --e-notice-context-color: var(--e-context-primary-color); + --e-notice-context-color-dark: var(--e-context-primary-color-dark); + --e-notice-context-tint: var(--e-context-primary-tint-1); +} +.e-notice--success { + --e-notice-context-color: var(--e-context-success-color); + --e-notice-context-color-dark: var(--e-context-success-color-dark); + --e-notice-context-tint: var(--e-context-success-tint-1); +} +.e-notice--info { + --e-notice-context-color: var(--e-context-info-color); + --e-notice-context-color-dark: var(--e-context-info-color-dark); + --e-notice-context-tint: var(--e-context-info-tint-1); +} +.e-notice--warning { + --e-notice-context-color: var(--e-context-warning-color); + --e-notice-context-color-dark: var(--e-context-warning-color-dark); + --e-notice-context-tint: var(--e-context-warning-tint-1); +} +.e-notice--error { + --e-notice-context-color: var(--e-context-error-color); + --e-notice-context-color-dark: var(--e-context-error-color-dark); + --e-notice-context-tint: var(--e-context-error-tint-1); +} +.e-notice--cta { + --e-notice-context-color: var(--e-context-cta-color); + --e-notice-context-color-dark: var(--e-context-cta-color-dark); + --e-notice-context-tint: var(--e-context-cta-tint-1); +} +.e-notice--extended { + --e-notice-is-extended: 1; +} +.e-notice--dismissible { + padding-inline-end: 38px; +} +.e-notice__aside { + overflow: hidden; + background-color: var(--e-notice-context-tint); + width: calc(var(--e-notice-is-extended, 0) * 50px); + text-align: center; + padding-block-start: 15px; + flex-grow: 0; + flex-shrink: 0; +} +.e-notice__icon-wrapper { + display: inline-block; + font-size: 0.625rem; + max-height: 1.5rem; + width: 1.5rem; + line-height: 1.5rem; + border-radius: 100px; + background: var(--e-notice-context-color); + color: #fff; + text-shadow: 0 0 3px var(--e-notice-context-color-dark), 0 0 1px var(--e-notice-context-color-dark), 0 0 1px var(--e-notice-context-color-dark); +} +.e-notice__content { + padding: 20px; +} +.e-notice__actions { + display: flex; +} +.e-notice__actions > * + * { + margin-inline-start: 8px; +} +.e-notice__dismiss { + width: 20px; + height: 20px; + line-height: 20px; + font-size: 0.8125rem; + text-align: center; + background: none; + display: block; + position: absolute; + inset-block-start: 0; + inset-inline-end: 1px; + border: none; + margin: 0; + padding: 9px; + cursor: pointer; + font-style: normal; +} +.e-notice__dismiss:before { + font-family: eicons; + display: inline-block; + content: "\e87f"; + color: var(--e-notice-dismiss-color); + width: 20px; + border-radius: 20px; + speak: none; + text-align: center; +} +.e-notice__dismiss:hover:before, .e-notice__dismiss:active:before, .e-notice__dismiss:focus:before { + font-weight: bold; +} +.e-notice__dismiss:focus:before { + color: #fff; + background: var(--e-notice-dismiss-color); + outline: none; +} +.e-notice__dismiss:focus { + outline: none; +} +.e-notice p { + line-height: 1.2; + padding: 0; + margin: 0; +} +.e-notice p + .e-notice__actions { + margin-block-start: 1rem; +} +.e-notice h3 { + font-size: 1.0625rem; + line-height: 1.2; + margin: 0; +} +.e-notice h3 + p { + margin-block-start: 8px; +} + +/*= Elementor Admin Alert +---------------------------------------*/ +.elementor-admin-alert { + padding: 15px; + border-inline-start: 3px solid transparent; + position: relative; + font-size: 12px; + line-height: 1.5; + text-align: start; +} +.elementor-admin-alert a { + color: inherit; +} +.elementor-admin-alert.elementor-alert-info { + color: var(--e-a-color-info); + background-color: var(--e-a-bg-info); + border-color: var(--e-a-color-info); +} +.elementor-admin-alert.elementor-alert-success { + color: var(--e-a-color-success); + background-color: var(--e-a-bg-success); + border-color: var(--e-a-color-success); +} +.elementor-admin-alert.elementor-alert-warning { + color: var(--e-admin-color-warning); + background-color: var(--e-a-bg-warning); + border-color: var(--e-a-color-warning); +} +.elementor-admin-alert.elementor-alert-danger { + color: var(--e-a-color-danger); + background-color: var(--e-a-bg-danger); + border-color: var(--e-a-color-danger); +} + +/*= Elementor System Info +---------------------------------------*/ +#elementor-system-info { + padding: 15px; +} +#elementor-system-info .elementor-system-info-header { + display: flex; + justify-content: space-between; + align-items: center; +} +#elementor-system-info .elementor-system-info-section { + margin-block-end: 10px; +} +#elementor-system-info .elementor-system-info-section .widefat { + white-space: pre; +} +#elementor-system-info .elementor-system-info-section .elementor-log-entries { + white-space: pre-wrap; +} +#elementor-system-info .elementor-system-info-section:not(.elementor-system-info-log) tbody td:first-child { + width: 300px; +} +#elementor-system-info .elementor-system-info-section:not(.elementor-system-info-log) td { + white-space: break-spaces; +} +#elementor-system-info .elementor-system-info-field-recommendation { + padding-inline-start: 10px; + color: #7F7F7F; +} +#elementor-system-info .elementor-system-info-plugin-name { + color: #000; +} +#elementor-system-info .elementor-system-info-plugin-properties { + padding: 10px; +} +#elementor-system-info #elementor-system-info-raw-code { + width: 100%; + height: 200px; +} +#elementor-system-info #elementor-system-info-raw-code-label { + padding: 5px; + display: block; +} +#elementor-system-info .elementor-warning td:first-child { + border-inline-start: 3px solid #F59E0B; +} +#elementor-system-info a.box-title-tool { + font-size: 80%; + margin-inline-start: 15px; + color: #69727D; +} +#elementor-system-info a.box-title-tool:hover { + text-decoration: underline; +} +#elementor-system-info #elementor-usage-recalc { + font-size: 12px; + color: #ffffff; + background-color: #9DA5AE; + padding: 4px 18px 5px 18px; + border-radius: 3px; +} + +.dialog-type-confirm .dialog-widget-content, +.dialog-type-alert .dialog-widget-content { + margin: auto; + width: 400px; + padding: 20px; +} +.dialog-type-confirm .dialog-header, +.dialog-type-alert .dialog-header { + font-size: 15px; + font-weight: 500; +} +.dialog-type-confirm .dialog-header:after, +.dialog-type-alert .dialog-header:after { + content: ""; + display: block; + border-block-end: var(--e-a-border); + padding-block-end: 10px; + margin-block-end: 10px; + margin-inline-start: -20px; + margin-inline-end: -20px; +} +.dialog-type-confirm .dialog-message, +.dialog-type-alert .dialog-message { + min-height: 50px; +} +.dialog-type-confirm .dialog-buttons-wrapper, +.dialog-type-alert .dialog-buttons-wrapper { + padding-block-start: 10px; + display: flex; + justify-content: flex-end; + gap: 15px; +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button { + font-size: 12px; + font-weight: 500; + line-height: 1.2; + padding: 8px 16px; + outline: none; + border: none; + border-radius: var(--e-a-border-radius); + background-color: var(--e-a-btn-bg); + color: var(--e-a-btn-color-invert); + transition: var(--e-a-transition-hover); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button:hover { + border: none; +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button:focus { + background-color: var(--e-a-btn-bg-hover); + color: var(--e-a-btn-color-invert); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:active, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button:active { + background-color: var(--e-a-btn-bg-active); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:not([disabled]), +.dialog-type-alert .dialog-buttons-wrapper .dialog-button:not([disabled]) { + cursor: pointer; +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:disabled, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button:disabled { + background-color: var(--e-a-btn-bg-disabled); + color: var(--e-a-btn-color-disabled); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:not(.elementor-button-state) .elementor-state-icon, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button:not(.elementor-button-state) .elementor-state-icon { + display: none; +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt, .dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-skip, #elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-skip, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt, +.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-skip, +#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-skip, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel { + background: transparent; + color: var(--e-a-color-txt); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt:hover, .dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-skip:hover, #elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-skip:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt:focus, .dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-skip:focus, #elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-skip:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt:hover, +.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-skip:hover, +#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-skip:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt:focus, +.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-skip:focus, +#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-skip:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel:focus { + background: var(--e-a-bg-hover); + color: var(--e-a-color-txt-hover); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt:disabled, .dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-skip:disabled, #elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-skip:disabled, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel:disabled, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt:disabled, +.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-skip:disabled, +#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-skip:disabled, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel:disabled { + background: transparent; + color: var(--e-a-color-txt-disabled); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt-border, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt-border { + border: 1px solid var(--e-a-color-txt-muted); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-success, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-success, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-success, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-success { + background-color: var(--e-a-btn-bg-success); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-success:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-success:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-success:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-success:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-success:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-success:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-success:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-success:focus { + background-color: var(--e-a-btn-bg-success-hover); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary, .dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-submit, #elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-submit, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-take_over, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary, +.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-submit, +#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-submit, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-take_over, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok { + background-color: var(--e-a-btn-bg-primary); + color: var(--e-a-btn-color); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary:hover, .dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-submit:hover, #elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-submit:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-take_over:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary:focus, .dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-submit:focus, #elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-submit:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-take_over:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary:hover, +.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-submit:hover, +#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-submit:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-take_over:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary:focus, +.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-submit:focus, +#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-submit:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-take_over:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok:focus { + background-color: var(--e-a-btn-bg-primary-hover); + color: var(--e-a-btn-color); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary.e-btn-txt, .dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.e-primary.dialog-skip, #elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary.dialog-skip, .dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.e-btn-txt.dialog-submit, .dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-submit.dialog-skip, #elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-submit, #elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-submit.dialog-skip, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-take_over, .dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-take_over.dialog-skip, #elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-take_over.dialog-skip, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary.dialog-cancel, .dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-cancel.dialog-submit, #elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-submit, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-ok, .dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-ok.dialog-skip, #elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-skip, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary.e-btn-txt, +.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.e-primary.dialog-skip, +#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary.dialog-skip, +.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.e-btn-txt.dialog-submit, +.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-submit.dialog-skip, +#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-submit, +#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-submit.dialog-skip, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-take_over, +.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-take_over.dialog-skip, +#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-take_over.dialog-skip, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary.dialog-cancel, +.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-cancel.dialog-submit, +#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-submit, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-ok, +.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-ok.dialog-skip, +#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-skip, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel { + background: transparent; + color: var(--e-a-color-primary-bold); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary.e-btn-txt:hover, .dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.e-primary.dialog-skip:hover, #elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary.dialog-skip:hover, .dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.e-btn-txt.dialog-submit:hover, .dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-submit.dialog-skip:hover, #elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-submit:hover, #elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-submit.dialog-skip:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-take_over:hover, .dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-take_over.dialog-skip:hover, #elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-take_over.dialog-skip:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary.dialog-cancel:hover, .dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-cancel.dialog-submit:hover, #elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-submit:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-ok:hover, .dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-ok.dialog-skip:hover, #elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-skip:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary.e-btn-txt:focus, .dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.e-primary.dialog-skip:focus, #elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary.dialog-skip:focus, .dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.e-btn-txt.dialog-submit:focus, .dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-submit.dialog-skip:focus, #elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-submit:focus, #elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-submit.dialog-skip:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-take_over:focus, .dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-take_over.dialog-skip:focus, #elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-take_over.dialog-skip:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary.dialog-cancel:focus, .dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-cancel.dialog-submit:focus, #elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-submit:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-ok:focus, .dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-ok.dialog-skip:focus, #elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-skip:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary.e-btn-txt:hover, +.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.e-primary.dialog-skip:hover, +#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary.dialog-skip:hover, +.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.e-btn-txt.dialog-submit:hover, +.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-submit.dialog-skip:hover, +#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-submit:hover, +#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-submit.dialog-skip:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-take_over:hover, +.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-take_over.dialog-skip:hover, +#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-take_over.dialog-skip:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary.dialog-cancel:hover, +.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-cancel.dialog-submit:hover, +#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-submit:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-ok:hover, +.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-ok.dialog-skip:hover, +#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-skip:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary.e-btn-txt:focus, +.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.e-primary.dialog-skip:focus, +#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary.dialog-skip:focus, +.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.e-btn-txt.dialog-submit:focus, +.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-submit.dialog-skip:focus, +#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-submit:focus, +#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-submit.dialog-skip:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-take_over:focus, +.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-take_over.dialog-skip:focus, +#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-take_over.dialog-skip:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary.dialog-cancel:focus, +.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-cancel.dialog-submit:focus, +#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-submit:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-ok:focus, +.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-ok.dialog-skip:focus, +#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-skip:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel:focus { + background: var(--e-a-bg-primary); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.go-pro, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-accent, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.go-pro, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-accent { + background-color: var(--e-a-btn-bg-accent); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.go-pro:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.go-pro:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-accent:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-accent:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.go-pro:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.go-pro:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-accent:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-accent:focus { + background-color: var(--e-a-btn-bg-accent-hover); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.go-pro:active, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-accent:active, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.go-pro:active, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-accent:active { + background-color: var(--e-a-btn-bg-accent-active); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-info, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-info, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-info, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-info { + background-color: var(--e-a-btn-bg-info); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-info:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-info:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-info:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-info:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-info:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-info:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-info:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-info:focus { + background-color: var(--e-a-btn-bg-info-hover); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-warning, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-warning, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-warning, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-warning { + background-color: var(--e-a-btn-bg-warning); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-warning:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-warning:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-warning:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-warning:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-warning:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-warning:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-warning:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-warning:focus { + background-color: var(--e-a-btn-bg-warning-hover); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-danger, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-danger, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-danger, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-danger { + background-color: var(--e-a-btn-bg-danger); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-danger:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-danger:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-danger:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-danger:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-danger:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-danger:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-danger:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-danger:focus { + background-color: var(--e-a-btn-bg-danger-hover); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button i, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button i { + margin-inline-end: 5px; +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button:visited, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button:visited { + color: initial; +} +@keyframes elementor-rotation { + 0% { + transform: rotate(0deg); + } + 100% { + transform: rotate(359deg); + } +} +#elementor-deactivate-feedback-dialog-wrapper { + display: none; +} + +#elementor-deactivate-feedback-modal { + color: var(--e-a-color-txt); +} +#elementor-deactivate-feedback-modal .dialog-widget-content { + width: 550px; +} +#elementor-deactivate-feedback-modal .dialog-header { + padding: 18px 15px; + box-shadow: 0 0 8px rgba(0, 0, 0, 0.1); + text-align: start; +} +#elementor-deactivate-feedback-modal .dialog-message { + padding: 30px; + padding-block-end: 0; + text-align: start; +} +#elementor-deactivate-feedback-modal .elementor-deactivate-feedback-dialog-input { + margin-block: 0; + margin-inline: 0 15px; + box-shadow: none; +} +#elementor-deactivate-feedback-modal .elementor-deactivate-feedback-dialog-input:not(:checked) ~ .elementor-feedback-text { + display: none; +} +#elementor-deactivate-feedback-modal .elementor-deactivate-feedback-dialog-label { + display: block; + font-size: 13px; +} +#elementor-deactivate-feedback-modal .elementor-feedback-text { + background-color: transparent; + color: var(--e-a-color-txt); + margin-block: 10px 0; + margin-inline: 30px 0; + padding: 5px; + box-shadow: none; + width: 92%; +} +#elementor-deactivate-feedback-modal .dialog-buttons-wrapper { + display: flex; + justify-content: space-between; + padding: 20px 30px 30px; +} +#elementor-deactivate-feedback-modal .dialog-submit.elementor-loading:before { + display: inline-block; + content: "\f463"; + font: 18px dashicons; + animation: elementor-rotation 2s infinite linear; +} +#elementor-deactivate-feedback-modal[data-feedback-selected=elementor_pro] .elementor-feedback-text { + color: #F59E0B; + padding: 0; +} +#elementor-deactivate-feedback-modal[data-feedback-selected=elementor_pro] .dialog-submit { + display: none; +} + +#elementor-deactivate-feedback-dialog-header i { + font-size: 19px; +} +#elementor-deactivate-feedback-dialog-header-title { + font-size: 15px; + text-transform: uppercase; + font-weight: bold; + padding-inline-start: 5px; +} +#elementor-deactivate-feedback-dialog-form-caption { + font-weight: bold; + font-size: 15px; + line-height: 1.4; +} +#elementor-deactivate-feedback-dialog-form-body { + padding-block-start: 30px; + padding-block-end: 15px; +} + +.elementor-deactivate-feedback-dialog-input-wrapper { + display: flex; + align-items: center; + line-height: 2; + overflow: hidden; +} + +#elementor-hidden-area { + display: none; +} + +#elementor-import-template-trigger { + cursor: pointer; +} + +#elementor-import-template-area { + display: none; + margin: 50px 0 30px; + text-align: center; +} + +#elementor-import-template-form { + display: inline-block; + margin-block-start: 30px; + padding: 30px 50px; + background-color: #FFFFFF; + border: 1px solid #e5e5e5; +} + +#elementor-import-template-title { + font-size: 18px; + color: #555d66; +} + +.form-table:not(.elementor-maintenance-mode-is-enabled) .elementor-default-hide { + display: none; +} + +.elementor-maintenance-mode-error { + color: red; + line-height: 1.6; + display: none; +} + +#tab-replace_url.elementor-active ~ p.submit, +#tab-fontawesome4_migration.elementor-active ~ p.submit, +#tab-import-export-kit.elementor-active ~ p.submit { + display: none; +} + +#elementor_replace_url > div { + max-width: 800px; +} +#elementor_replace_url > div input { + margin-block-end: 6px; +} + +#elementor_rollback > div, +#elementor_rollback_pro > div { + display: flex; +} +#elementor_rollback > div input, +#elementor_rollback > div select, +#elementor_rollback_pro > div input, +#elementor_rollback_pro > div select { + margin-inline-end: 6px; +} + +.tab-import-export-kit__wrapper { + margin: 40px 0; + max-width: 700px; +} +.tab-import-export-kit__container { + background-color: white; + font-size: 16px; + max-width: 700px; + padding: 30px; +} +.tab-import-export-kit__container:not(:first-child) { + margin-block-start: 5px; +} +.tab-import-export-kit__container p { + font-size: 16px; + margin: 20px 0 25px; +} +.tab-import-export-kit__info { + font-size: 14px; +} +.tab-import-export-kit__container a:not(.elementor-button), .tab-import-export-kit__info a { + color: var(--e-a-color-info); + text-decoration: underline; +} +.tab-import-export-kit__box { + display: flex; + justify-content: space-between; + align-items: flex-start; +} +.tab-import-export-kit__box h2 { + font-size: 28px; + font-weight: normal; + line-height: 1; + margin: 0; +} +.tab-import-export-kit__box .elementor-button.elementor-button-success { + font-weight: bold; + padding: 8px 16px; + text-transform: initial; +} + +.tab-import-export-kit__revert .tab-import-export-kit__kit-item { + background-color: rgba(255, 255, 255, 0.5); + box-shadow: 0 4px 10px rgba(0, 0, 0, 0.05); + border-radius: 0.1875rem; + margin-block-end: 15px; + display: inline-block; +} +.tab-import-export-kit__revert .tab-import-export-kit__kit-item header { + border-block-end: 1px solid #F1F2F3; + padding: 0.625rem; +} +.tab-import-export-kit__revert .tab-import-export-kit__kit-item h3 { + font-size: 0.875rem; + margin: 0; +} +.tab-import-export-kit__revert .tab-import-export-kit__kit-item img { + width: 330px; + height: 315px; + padding: 0.625rem; +} +.tab-import-export-kit__revert .button, .tab-import-export-kit__revert .button:hover { + color: #a94442; + border-color: #a94442; + display: inline-block; +} + +#dashboard-widgets .e-dashboard-widget h3.e-heading { + font-weight: 600; + margin-block-end: 13px; +} +#dashboard-widgets .e-dashboard-widget .e-divider_bottom { + border-block-end: 1px solid #eee; + margin: 0 -12px; + padding: 6px 12px; +} +#dashboard-widgets .e-dashboard-widget .e-divider_top { + border-block-start: 1px solid #eee; + margin: 0 -12px; + padding: 12px 12px 0; +} +#dashboard-widgets .e-dashboard-widget .e-quick-actions-wrap .e-divider_top, +#dashboard-widgets .e-dashboard-widget .e-news-feed-wrap .e-divider_top { + padding-block-start: 18px; + margin-block-start: 18px; +} + +.e-dashboard-widget .dashicons { + color: #606a73; +} +.e-dashboard-widget ul.e-action-list li { + margin-block-start: 14px; +} +.e-dashboard-widget ul.e-action-list li a { + margin-inline-start: 5px; +} + +.e-dashboard-overview .dashicons { + vertical-align: middle; + font-size: 17px; +} +.e-dashboard-overview .e-overview__header { + display: table; + width: 100%; + box-shadow: 0 5px 8px rgba(0, 0, 0, 0.05); + margin: 0 -12px 8px; + padding: 0 12px 12px; +} +.e-dashboard-overview .e-overview__logo, .e-dashboard-overview .e-overview__versions, .e-dashboard-overview .e-overview__create { + display: table-cell; + vertical-align: middle; +} +.e-dashboard-overview .e-overview__logo { + width: 30px; +} +.e-dashboard-overview .e-overview__versions { + padding: 0 10px; + font-size: 0.9em; + line-height: 1.5; +} +.e-dashboard-overview .e-overview__version { + display: block; +} +.e-dashboard-overview .e-overview__create { + text-align: end; +} +.e-dashboard-overview .e-overview__feed { + font-size: 14px; + font-weight: 500; +} +.e-dashboard-overview .e-overview__post { + margin-block-start: 10px; +} +.e-dashboard-overview .e-overview__post-link { + display: inline-block; +} +.e-dashboard-overview .e-overview__badge { + background: #0A875A; + color: white; + font-size: 0.75em; + padding: 3px 6px; + border-radius: 3px; + text-transform: uppercase; +} +.e-dashboard-overview .e-overview__post-description { + margin: 0 0 1.5em; +} +.e-dashboard-overview .e-overview__recently-edited li { + color: #72777c; +} +.e-dashboard-overview .e-overview__footer.e-divider_top { + padding-block-start: 12px; + padding-block-end: 0; +} +.e-dashboard-overview .e-overview__footer ul { + display: flex; + list-style: none; + margin: 0; + padding: 0; +} +.e-dashboard-overview .e-overview__footer ul li { + padding: 0 10px; + margin: 0; + border-inline-start: 1px solid #ddd; +} +.e-dashboard-overview .e-overview__footer ul li:first-child { + padding-inline-start: 0; + border: none; +} +.e-dashboard-overview .e-overview__go-pro a, .e-dashboard-overview .e-overview__ai a { + color: #93003f; + font-weight: 500; +} + +.post-type-elementor_library #elementor-template-library-tabs-wrapper { + padding-block-start: 2em; + margin-block-end: 2em; +} +.post-type-elementor_library th#taxonomy-elementor_library_category { + width: 110px; +} + +#elementor-new-template-modal .dialog-message { + max-height: 70vh; +} +#elementor-new-template-modal .e-hidden { + display: none !important; +} +#elementor-new-template-dialog-content { + display: flex; + align-items: center; + height: 100%; + text-align: start; +} +@media (max-width: 1439px) { + #elementor-new-template-dialog-content { + padding: 0 50px; + } +} +@media (min-width: 1440px) { + #elementor-new-template-dialog-content { + padding: 0 120px; + } +} +#elementor-new-template__description { + width: 35%; + max-width: 300px; + padding-inline-end: 100px; +} +#elementor-new-template__description__title { + font-size: 30px; +} +#elementor-new-template__description__title span { + font-weight: bold; +} +#elementor-new-template__description__content { + font-size: 16px; + padding: 30px 0; +} +#elementor-new-template__take_a_tour { + display: flex; + align-items: center; + font-size: 15px; +} +#elementor-new-template__take_a_tour i { + color: var(--e-a-color-accent); + font-size: 30px; +} +#elementor-new-template__take_a_tour a { + padding-inline-start: 10px; + font-weight: 500; +} +#elementor-new-template__form { + flex-grow: 1; + max-width: 440px; + padding: 55px; + background-color: var(--e-a-color-white); + border-radius: var(--e-a-border-radius); + border: var(--e-a-border); +} +#elementor-new-template__form__title { + font-size: 23px; +} +#elementor-new-template__form__template-type.elementor-form-field__select { + max-width: initial; +} +#elementor-new-template__form__template-type-badge { + position: absolute; + display: flex; + align-items: center; + justify-content: center; + gap: 2px; + border-radius: 2px; + background-color: #F1F2F3; + padding: 4px; + font-size: 8px; + font-weight: 500; + line-height: 1; + text-transform: uppercase; + inset-block-start: 50%; + inset-inline-end: 28px; + transform: translateY(-50%); +} +#elementor-new-template__form .elementor-form-field__label { + display: block; + margin: 25px 0 7px; + font-size: 14px; + line-height: 1; +} +#elementor-new-template__form .elementor-form-field input, +#elementor-new-template__form .elementor-form-field select { + width: 100%; + height: 50px; + padding: 10px; + font-size: 14px; + box-shadow: none; + border-radius: var(--e-a-border-radius); + background: none; + border: var(--e-a-border-bold); + outline: none; +} +#elementor-new-template__form .elementor-form-field input:focus, +#elementor-new-template__form .elementor-form-field select:focus { + border-color: var(--e-a-border-color-focus); +} +#elementor-new-template__form .elementor-form-field__select { + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + cursor: pointer; +} +#elementor-new-template__form .elementor-form-field__select__wrapper { + position: relative; +} +#elementor-new-template__form .elementor-form-field__select__wrapper:after { + font-family: eicons; + content: "\e8ad"; + position: absolute; + inset-block-start: 50%; + inset-inline-end: 10px; + transform: translateY(-50%); +} +#elementor-new-template__form__submit, #elementor-new-template__form__lock_button { + display: block; + width: 100%; + height: 50px; + margin-block-start: 24px; + box-sizing: border-box; + text-align: center; +} + +@media (max-width: 1024px) { + #elementor-new-template__description { + max-width: 250px; + padding-inline-end: 30px; + } +} +@media (max-width: 767px) { + #elementor-new-template__description { + display: none; + } +} +#elementor-role-manager { + max-width: 500px; + margin-block-start: 50px; +} +#elementor-role-manager h3 { + color: #3f444b; + font-weight: normal; + font-size: 22px; +} +#elementor-role-manager .elementor-settings-form-page { + padding: 0; +} +#elementor-role-manager .elementor-role-row { + background: #ffffff; + color: #3f444b; + margin-block-end: 2px; +} +#elementor-role-manager .elementor-role-row .elementor-role-label { + display: flex; + padding: 15px 20px; + font-weight: 500; + cursor: pointer; +} +#elementor-role-manager .elementor-role-row .elementor-role-label span.elementor-role-name { + padding-inline-end: 20px; +} +#elementor-role-manager .elementor-role-row .elementor-role-label span.elementor-role-toggle { + text-align: end; + flex-grow: 1; +} +#elementor-role-manager .elementor-role-row .elementor-role-label span.elementor-role-excluded-indicator { + color: #9DA5AE; +} +#elementor-role-manager .elementor-role-row .elementor-role-controls { + background-color: #F9FAFA; + padding: 20px 20px 5px; +} +#elementor-role-manager .elementor-role-row .elementor-role-controls > div { + margin-block-end: 15px; +} +#elementor-role-manager .elementor-role-row .elementor-role-controls .elementor-role-go-pro { + display: flex; + align-items: center; +} +#elementor-role-manager .elementor-role-row .elementor-role-controls .elementor-role-go-pro .elementor-role-go-pro__desc { + font-weight: 500; + font-style: italic; + flex-grow: 1; +} +#elementor-role-manager .elementor-role-row .elementor-role-controls .elementor-role-go-pro .elementor-role-go-pro__link { + display: flex; +} +#elementor-role-manager .elementor-role-row .elementor-role-controls-advanced > div + div { + margin-block-start: 15px; +} +#elementor-role-manager .elementor-role-control-warning { + color: var(--e-a-color-danger); +} + +#elementor-beta-tester-modal { + color: var(--e-a-color-txt); +} +#elementor-beta-tester-modal .elementor-templates-modal__header__items-area { + color: var(--e-a-color-txt); + cursor: pointer; +} +#elementor-beta-tester-modal .elementor-templates-modal__header__items-area:hover .elementor-beta-tester-do-not-show-again, +#elementor-beta-tester-modal .elementor-templates-modal__header__items-area:hover .elementor-templates-modal__header__item > i { + color: var(--e-a-color-txt-hover); +} +#elementor-beta-tester-modal .elementor-templates-modal__header__items-area .elementor-templates-modal__header__close { + border: none; +} +#elementor-beta-tester-modal .elementor-templates-modal__header__items-area .elementor-beta-tester-do-not-show-again { + text-transform: uppercase; + font-weight: bold; + font-size: 12px; + transition: var(--e-a-transition-hover); +} +#elementor-beta-tester-modal .dialog-lightbox-widget-content { + max-width: 500px; + height: initial; +} +#elementor-beta-tester-modal .dialog-lightbox-message { + padding: 40px; + height: 300px; + background-color: var(--e-a-bg-default); +} + +#elementor-beta-tester-form__caption { + font-weight: bold; + font-size: 20px; +} +#elementor-beta-tester-form__description { + font-size: 15px; + margin-block-start: 10px; +} +#elementor-beta-tester-form__input-wrapper { + display: flex; + margin-block-start: 30px; +} +#elementor-beta-tester-form__input-wrapper .elementor-button { + border-start-start-radius: 0; + border-start-end-radius: 3px; + border-end-start-radius: 0; + border-end-end-radius: 3px; +} +#elementor-beta-tester-form__email { + flex-grow: 1; + border: var(--e-a-border); + border-inline-end: 0; + border-start-start-radius: 3px; + border-start-end-radius: 0; + border-end-start-radius: 3px; + border-end-end-radius: 0; + margin: 0; + padding: 10px; + height: 50px; +} +#elementor-beta-tester-form__terms { + margin-block-start: 40px; + font-size: 11px; + color: var(--e-a-color-txt-muted); +} + +.e-experiment__title { + display: flex; + align-items: flex-start; + flex-direction: column; +} +.e-experiment__title__indicator { + position: absolute; + height: 10px; + width: 10px; + border-radius: 50%; + border: 2px solid white; + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); + flex-shrink: 0; + margin-block-start: 2px; +} +.e-experiment__title__indicator--active { + background: #39b54a; +} +.e-experiment__title__label { + margin-inline-start: 24px; +} +.e-experiment__title__tag { + background: #0085ba; + color: #ffffff; + font-size: 0.8em; + padding: 3px 6px; + line-height: 1; + border-radius: 3px; + font-weight: 600; + margin-block-start: 5px; + margin-inline-start: 24px; +} +.e-experiment__title__tag__secondary { + background: rgba(0, 0, 0, 0.1); + color: inherit; +} +.e-experiment__table-title { + margin: 30px 0; +} +.e-experiment__dependency, .e-experiment__status { + margin-block-start: 4px; + font-size: 0.9em; + line-height: 18px; + font-weight: bold; + font-style: italic; +} +.e-experiment__button.button { + margin-block: 18px 22px; + margin-inline: 0 14px; +} +.e-experiment__dependency { + color: #21759b; +} +.e-experiment__dependency__title { + font-weight: inherit; +} + +#tab-experiments .form-table tr { + border-block-end: 1px solid #dcdcde; +} +#tab-experiments .form-table tr:last-child { + border-block-end: none; +} +#tab-experiments .form-table tr .description { + font-size: 0.9em; + margin: 10px 0; + max-width: 820px; +} + +.e-landing-pages-empty .elementor-blank_state { + padding: 5em 0 2em 0; +} +.e-landing-pages-empty .e-trashed-items { + text-align: center; +} + +.e-feature-promotion { + --e-a-top-bar-height: 50px; + --e-a-content-area-spacing: 110px; + --e-black: #000000; + width: 1220px; + height: calc(100vh - var(--e-a-top-bar-height) - var(--e-a-content-area-spacing)); + display: grid; + grid-template-columns: repeat(2, auto); + grid-template-rows: auto; + justify-content: space-between; + align-items: center; + align-content: center; + margin: auto; + transform: translate(-10px, 40px); + text-align: center; + font-family: var(--e-a-font-family); +} +.e-feature-promotion_data { + grid-column: 1/2; + grid-row: 1/2; + display: flex; + flex-direction: column; + justify-content: center; + align-items: self-start; + margin-inline-start: 15px; + padding-inline-end: 40px; + max-width: 608px; +} +.e-feature-promotion_data h3 { + margin-block-start: 0; + margin-inline-end: 0; + margin-block-end: 33px; + margin-inline-start: 0; + text-align: start; + font-size: 1.85rem; + font-weight: 300; + color: var(--e-black); + line-height: 1.2; +} +.e-feature-promotion_data ul { + margin-block-start: 0; + margin-block-end: 1.6rem; + text-align: start; +} +.e-feature-promotion_data ul > li { + margin-block-start: 0; + margin-inline-end: 9px; + margin-block-end: 8px; + margin-inline-start: 8px; + display: flex; + font-size: 1rem; + line-height: 21px; + color: var(--e-black); +} +.e-feature-promotion_data ul > li:before { + content: url("data:image/svg+xml,%3Csvg width='25' height='24' viewBox='0 0 25 24' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M21.5201 6.46967C21.813 6.76256 21.813 7.23744 21.5201 7.53033L11.5201 17.5303C11.2272 17.8232 10.7523 17.8232 10.4594 17.5303L5.45942 12.5303C5.16652 12.2374 5.16652 11.7626 5.45942 11.4697C5.75231 11.1768 6.22718 11.1768 6.52008 11.4697L10.9897 15.9393L20.4594 6.46967C20.7523 6.17678 21.2272 6.17678 21.5201 6.46967Z' fill='%230C0D0E'/%3E%3C/svg%3E%0A"); + font-size: 1.4rem; + margin-block-start: -3px; + margin-inline-end: 9px; + margin-block-end: 0; + margin-inline-start: -9px; +} +.e-feature-promotion_data > .go-pro { + display: flex; + align-items: center; + padding: 9px 15px; + font-size: 0.9rem; +} +.e-feature-promotion_data > .side-note { + justify-self: baseline; + margin-block-start: 2rem; + text-align: start; +} +.e-feature-promotion_iframe { + grid-column: 2/3; + grid-row: 1/2; + aspect-ratio: 16/9; + width: 608px; + border: none; +} + +body.rtl .e-feature-promotion { + transform: translateX(10px); +} + +@media (max-width: 1410px) { + .e-feature-promotion { + display: flex; + flex-direction: column; + justify-content: flex-start; + width: 90%; + } + .e-feature-promotion_data { + margin-block-end: 2rem; + margin-inline-start: unset; + padding-inline-end: unset; + } + .e-feature-promotion_iframe { + max-width: 90%; + aspect-ratio: 16/9; + } +} +.elementor-control-notice { + display: flex; + justify-content: flex-start; + align-items: flex-start; + gap: 8px; + padding: 16px; + border-radius: 3px; + border: 1px solid var(--notice-control-color, var(--e-a-color-txt)); + color: var(--e-a-color-txt); + font-size: 12px; + font-weight: 400; + line-height: 1.5; + text-align: start; + margin-block-start: 10px; +} +.elementor-control-notice-type-info { + --notice-control-color: var(--e-a-color-info); +} +.elementor-control-notice-type-success { + --notice-control-color: var(--e-a-color-success); +} +.elementor-control-notice-type-warning { + --notice-control-color: var(--e-a-color-warning); +} +.elementor-control-notice-type-danger { + --notice-control-color: var(--e-a-color-danger); +} +.elementor-control-notice-icon { + flex-basis: 18px; + color: var(--notice-control-color); +} +.elementor-control-notice-main { + display: flex; + flex-direction: column; + justify-content: flex-start; + align-items: flex-start; + gap: 6px; + flex: 1; +} +.elementor-control-notice-main-heading { + font-weight: 700; + font-style: italic; +} +.elementor-control-notice-main-content { + font-style: italic; + line-height: 1.5; +} +.elementor-control-notice-main-actions { + display: flex; + gap: 10px; + padding-block-start: 8px; +} +.elementor-control-notice-main a { + color: inherit; + font-weight: 700; + cursor: pointer; +} +.elementor-control-notice-main a:hover, .elementor-control-notice-main a:focus { + color: inherit; +} +.elementor-control-notice-dismiss { + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + background-color: transparent; + border: 0; + padding: 0; + margin: 0; + cursor: pointer; +} +/*# sourceMappingURL=admin-rtl.css.map */ \ No newline at end of file diff --git a/wp-content/plugins/elementor/assets/css/admin-rtl.min.css b/wp-content/plugins/elementor/assets/css/admin-rtl.min.css new file mode 100644 index 0000000..96a6d77 --- /dev/null +++ b/wp-content/plugins/elementor/assets/css/admin-rtl.min.css @@ -0,0 +1,2 @@ +/*! elementor - v3.20.0 - 26-03-2024 */ +#elementor-deactivate-feedback-modal .dialog-skip,#elementor-deactivate-feedback-modal .dialog-submit,.e-btn,.elementor-button{font-size:12px;font-weight:500;line-height:1.2;padding:8px 16px;outline:none;border:none;border-radius:var(--e-a-border-radius);background-color:var(--e-a-btn-bg);color:var(--e-a-btn-color-invert);transition:var(--e-a-transition-hover)}#elementor-deactivate-feedback-modal .dialog-skip:hover,#elementor-deactivate-feedback-modal .dialog-submit:hover,.e-btn:hover,.elementor-button:hover{border:none}#elementor-deactivate-feedback-modal .dialog-skip:focus,#elementor-deactivate-feedback-modal .dialog-skip:hover,#elementor-deactivate-feedback-modal .dialog-submit:focus,#elementor-deactivate-feedback-modal .dialog-submit:hover,.e-btn:focus,.e-btn:hover,.elementor-button:focus,.elementor-button:hover{background-color:var(--e-a-btn-bg-hover);color:var(--e-a-btn-color-invert)}#elementor-deactivate-feedback-modal .dialog-skip:active,#elementor-deactivate-feedback-modal .dialog-submit:active,.e-btn:active,.elementor-button:active{background-color:var(--e-a-btn-bg-active)}#elementor-deactivate-feedback-modal .dialog-skip:not([disabled]),#elementor-deactivate-feedback-modal .dialog-submit:not([disabled]),.e-btn:not([disabled]),.elementor-button:not([disabled]){cursor:pointer}#elementor-deactivate-feedback-modal .dialog-skip:disabled,#elementor-deactivate-feedback-modal .dialog-submit:disabled,.e-btn:disabled,.elementor-button:disabled{background-color:var(--e-a-btn-bg-disabled);color:var(--e-a-btn-color-disabled)}#elementor-deactivate-feedback-modal .dialog-skip:not(.elementor-button-state) .elementor-state-icon,#elementor-deactivate-feedback-modal .dialog-submit:not(.elementor-button-state) .elementor-state-icon,.e-btn:not(.elementor-button-state) .elementor-state-icon,.elementor-button:not(.elementor-button-state) .elementor-state-icon{display:none}#elementor-deactivate-feedback-modal .dialog-skip,#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-submit,#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-submit,#elementor-deactivate-feedback-modal .e-btn-txt.dialog-submit,.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-cancel.dialog-submit,.dialog-type-alert .dialog-buttons-wrapper .e-btn.dialog-button.dialog-cancel,.dialog-type-alert .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-cancel,.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-cancel.dialog-submit,.dialog-type-confirm .dialog-buttons-wrapper .e-btn.dialog-button.dialog-cancel,.dialog-type-confirm .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-cancel,.e-btn.e-btn-txt,.elementor-button.e-btn-txt{background:transparent;color:var(--e-a-color-txt)}#elementor-deactivate-feedback-modal .dialog-skip:focus,#elementor-deactivate-feedback-modal .dialog-skip:hover,#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-submit:focus,#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-submit:hover,#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-submit:focus,#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-submit:hover,#elementor-deactivate-feedback-modal .e-btn-txt.dialog-submit:focus,#elementor-deactivate-feedback-modal .e-btn-txt.dialog-submit:hover,.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-cancel.dialog-submit:focus,.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-cancel.dialog-submit:hover,.dialog-type-alert .dialog-buttons-wrapper .e-btn.dialog-button.dialog-cancel:focus,.dialog-type-alert .dialog-buttons-wrapper .e-btn.dialog-button.dialog-cancel:hover,.dialog-type-alert .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-cancel:focus,.dialog-type-alert .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-cancel:hover,.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-cancel.dialog-submit:focus,.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-cancel.dialog-submit:hover,.dialog-type-confirm .dialog-buttons-wrapper .e-btn.dialog-button.dialog-cancel:focus,.dialog-type-confirm .dialog-buttons-wrapper .e-btn.dialog-button.dialog-cancel:hover,.dialog-type-confirm .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-cancel:focus,.dialog-type-confirm .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-cancel:hover,.e-btn.e-btn-txt:focus,.e-btn.e-btn-txt:hover,.elementor-button.e-btn-txt:focus,.elementor-button.e-btn-txt:hover{background:var(--e-a-bg-hover);color:var(--e-a-color-txt-hover)}#elementor-deactivate-feedback-modal .dialog-skip:disabled,#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-submit:disabled,#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-submit:disabled,#elementor-deactivate-feedback-modal .e-btn-txt.dialog-submit:disabled,.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-cancel.dialog-submit:disabled,.dialog-type-alert .dialog-buttons-wrapper .e-btn.dialog-button.dialog-cancel:disabled,.dialog-type-alert .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-cancel:disabled,.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-cancel.dialog-submit:disabled,.dialog-type-confirm .dialog-buttons-wrapper .e-btn.dialog-button.dialog-cancel:disabled,.dialog-type-confirm .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-cancel:disabled,.e-btn.e-btn-txt:disabled,.elementor-button.e-btn-txt:disabled{background:transparent;color:var(--e-a-color-txt-disabled)}#elementor-deactivate-feedback-modal .e-btn-txt-border.dialog-skip,#elementor-deactivate-feedback-modal .e-btn-txt-border.dialog-submit,.e-btn.e-btn-txt-border,.elementor-button.e-btn-txt-border{border:1px solid var(--e-a-color-txt-muted)}#elementor-deactivate-feedback-modal .e-success.dialog-skip,#elementor-deactivate-feedback-modal .e-success.dialog-submit,#elementor-deactivate-feedback-modal .elementor-button-success.dialog-skip,#elementor-deactivate-feedback-modal .elementor-button-success.dialog-submit,.e-btn.e-success,.e-btn.elementor-button-success,.elementor-button.e-success,.elementor-button.elementor-button-success{background-color:var(--e-a-btn-bg-success)}#elementor-deactivate-feedback-modal .e-success.dialog-skip:focus,#elementor-deactivate-feedback-modal .e-success.dialog-skip:hover,#elementor-deactivate-feedback-modal .e-success.dialog-submit:focus,#elementor-deactivate-feedback-modal .e-success.dialog-submit:hover,#elementor-deactivate-feedback-modal .elementor-button-success.dialog-skip:focus,#elementor-deactivate-feedback-modal .elementor-button-success.dialog-skip:hover,#elementor-deactivate-feedback-modal .elementor-button-success.dialog-submit:focus,#elementor-deactivate-feedback-modal .elementor-button-success.dialog-submit:hover,.e-btn.e-success:focus,.e-btn.e-success:hover,.e-btn.elementor-button-success:focus,.e-btn.elementor-button-success:hover,.elementor-button.e-success:focus,.elementor-button.e-success:hover,.elementor-button.elementor-button-success:focus,.elementor-button.elementor-button-success:hover{background-color:var(--e-a-btn-bg-success-hover)}#elementor-deactivate-feedback-modal .dialog-submit,#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-skip,#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-take_over.dialog-skip,#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-skip,#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-take_over.dialog-skip,#elementor-deactivate-feedback-modal .e-primary.dialog-skip,.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-ok.dialog-skip,.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-take_over.dialog-skip,.dialog-type-alert .dialog-buttons-wrapper .e-btn.dialog-button.dialog-ok,.dialog-type-alert .dialog-buttons-wrapper .e-btn.dialog-button.dialog-take_over,.dialog-type-alert .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-ok,.dialog-type-alert .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-take_over,.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-ok.dialog-skip,.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-take_over.dialog-skip,.dialog-type-confirm .dialog-buttons-wrapper .e-btn.dialog-button.dialog-ok,.dialog-type-confirm .dialog-buttons-wrapper .e-btn.dialog-button.dialog-take_over,.dialog-type-confirm .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-ok,.dialog-type-confirm .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-take_over,.e-btn.e-primary,.elementor-button.e-primary{background-color:var(--e-a-btn-bg-primary);color:var(--e-a-btn-color)}#elementor-deactivate-feedback-modal .dialog-submit:focus,#elementor-deactivate-feedback-modal .dialog-submit:hover,#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-skip:focus,#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-skip:hover,#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-take_over.dialog-skip:focus,#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-take_over.dialog-skip:hover,#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-skip:focus,#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-skip:hover,#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-take_over.dialog-skip:focus,#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-take_over.dialog-skip:hover,#elementor-deactivate-feedback-modal .e-primary.dialog-skip:focus,#elementor-deactivate-feedback-modal .e-primary.dialog-skip:hover,.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-ok.dialog-skip:focus,.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-ok.dialog-skip:hover,.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-take_over.dialog-skip:focus,.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-take_over.dialog-skip:hover,.dialog-type-alert .dialog-buttons-wrapper .e-btn.dialog-button.dialog-ok:focus,.dialog-type-alert .dialog-buttons-wrapper .e-btn.dialog-button.dialog-ok:hover,.dialog-type-alert .dialog-buttons-wrapper .e-btn.dialog-button.dialog-take_over:focus,.dialog-type-alert .dialog-buttons-wrapper .e-btn.dialog-button.dialog-take_over:hover,.dialog-type-alert .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-ok:focus,.dialog-type-alert .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-ok:hover,.dialog-type-alert .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-take_over:focus,.dialog-type-alert .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-take_over:hover,.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-ok.dialog-skip:focus,.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-ok.dialog-skip:hover,.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-take_over.dialog-skip:focus,.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-take_over.dialog-skip:hover,.dialog-type-confirm .dialog-buttons-wrapper .e-btn.dialog-button.dialog-ok:focus,.dialog-type-confirm .dialog-buttons-wrapper .e-btn.dialog-button.dialog-ok:hover,.dialog-type-confirm .dialog-buttons-wrapper .e-btn.dialog-button.dialog-take_over:focus,.dialog-type-confirm .dialog-buttons-wrapper .e-btn.dialog-button.dialog-take_over:hover,.dialog-type-confirm .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-ok:focus,.dialog-type-confirm .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-ok:hover,.dialog-type-confirm .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-take_over:focus,.dialog-type-confirm .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-take_over:hover,.e-btn.e-primary:focus,.e-btn.e-primary:hover,.elementor-button.e-primary:focus,.elementor-button.e-primary:hover{background-color:var(--e-a-btn-bg-primary-hover);color:var(--e-a-btn-color)}#elementor-deactivate-feedback-modal .dialog-submit.dialog-skip,#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-submit,#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-skip,#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-take_over.dialog-skip,#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-submit,#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-skip,#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-take_over.dialog-skip,#elementor-deactivate-feedback-modal .e-btn-txt.dialog-submit,#elementor-deactivate-feedback-modal .e-primary.dialog-skip,.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-cancel.dialog-submit,.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-ok.dialog-skip,.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-take_over.dialog-skip,.dialog-type-alert .dialog-buttons-wrapper .e-btn.dialog-button.dialog-cancel.dialog-take_over,.dialog-type-alert .dialog-buttons-wrapper .e-btn.dialog-button.dialog-ok.dialog-cancel,.dialog-type-alert .dialog-buttons-wrapper .e-btn.e-btn-txt.dialog-button.dialog-ok,.dialog-type-alert .dialog-buttons-wrapper .e-btn.e-btn-txt.dialog-button.dialog-take_over,.dialog-type-alert .dialog-buttons-wrapper .e-btn.e-primary.dialog-button.dialog-cancel,.dialog-type-alert .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-cancel.dialog-take_over,.dialog-type-alert .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-ok.dialog-cancel,.dialog-type-alert .dialog-buttons-wrapper .elementor-button.e-btn-txt.dialog-button.dialog-ok,.dialog-type-alert .dialog-buttons-wrapper .elementor-button.e-btn-txt.dialog-button.dialog-take_over,.dialog-type-alert .dialog-buttons-wrapper .elementor-button.e-primary.dialog-button.dialog-cancel,.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-cancel.dialog-submit,.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-ok.dialog-skip,.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-take_over.dialog-skip,.dialog-type-confirm .dialog-buttons-wrapper .e-btn.dialog-button.dialog-cancel.dialog-take_over,.dialog-type-confirm .dialog-buttons-wrapper .e-btn.dialog-button.dialog-ok.dialog-cancel,.dialog-type-confirm .dialog-buttons-wrapper .e-btn.e-btn-txt.dialog-button.dialog-ok,.dialog-type-confirm .dialog-buttons-wrapper .e-btn.e-btn-txt.dialog-button.dialog-take_over,.dialog-type-confirm .dialog-buttons-wrapper .e-btn.e-primary.dialog-button.dialog-cancel,.dialog-type-confirm .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-cancel.dialog-take_over,.dialog-type-confirm .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-ok.dialog-cancel,.dialog-type-confirm .dialog-buttons-wrapper .elementor-button.e-btn-txt.dialog-button.dialog-ok,.dialog-type-confirm .dialog-buttons-wrapper .elementor-button.e-btn-txt.dialog-button.dialog-take_over,.dialog-type-confirm .dialog-buttons-wrapper .elementor-button.e-primary.dialog-button.dialog-cancel,.e-btn.e-primary.e-btn-txt,.elementor-button.e-primary.e-btn-txt{background:transparent;color:var(--e-a-color-primary-bold)}#elementor-deactivate-feedback-modal .dialog-submit.dialog-skip:focus,#elementor-deactivate-feedback-modal .dialog-submit.dialog-skip:hover,#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-submit.dialog-skip:focus,#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-submit.dialog-skip:hover,#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-submit:focus,#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-submit:hover,#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over.dialog-skip:focus,#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over.dialog-skip:hover,#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over.dialog-submit:focus,#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over.dialog-submit:hover,#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel.dialog-skip:focus,#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel.dialog-skip:hover,#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel.dialog-submit:focus,#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel.dialog-submit:hover,#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-skip:focus,#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-skip:hover,#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-submit.dialog-skip:focus,#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-submit.dialog-skip:hover,#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-take_over.dialog-skip:focus,#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-take_over.dialog-skip:hover,#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-take_over.dialog-submit.dialog-skip:focus,#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-take_over.dialog-submit.dialog-skip:hover,#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .e-btn-txt.dialog-button.dialog-ok.dialog-skip:focus,#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .e-btn-txt.dialog-button.dialog-ok.dialog-skip:hover,#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .e-btn-txt.dialog-button.dialog-ok.dialog-submit:focus,#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .e-btn-txt.dialog-button.dialog-ok.dialog-submit:hover,#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .e-btn-txt.dialog-button.dialog-take_over.dialog-skip:focus,#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .e-btn-txt.dialog-button.dialog-take_over.dialog-skip:hover,#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .e-btn-txt.dialog-button.dialog-take_over.dialog-submit:focus,#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .e-btn-txt.dialog-button.dialog-take_over.dialog-submit:hover,#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .e-btn.dialog-button.dialog-cancel.dialog-submit:focus,#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .e-btn.dialog-button.dialog-cancel.dialog-submit:hover,#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .e-btn.dialog-button.dialog-ok.dialog-skip:focus,#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .e-btn.dialog-button.dialog-ok.dialog-skip:hover,#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .e-btn.dialog-button.dialog-take_over.dialog-skip:focus,#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .e-btn.dialog-button.dialog-take_over.dialog-skip:hover,#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .e-primary.dialog-button.dialog-cancel.dialog-skip:focus,#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .e-primary.dialog-button.dialog-cancel.dialog-skip:hover,#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .e-primary.dialog-button.dialog-cancel.dialog-submit:focus,#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .e-primary.dialog-button.dialog-cancel.dialog-submit:hover,#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-cancel.dialog-submit:focus,#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-cancel.dialog-submit:hover,#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-ok.dialog-skip:focus,#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-ok.dialog-skip:hover,#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-take_over.dialog-skip:focus,#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-take_over.dialog-skip:hover,#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-submit.dialog-skip:focus,#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-submit.dialog-skip:hover,#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-submit:focus,#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-submit:hover,#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over.dialog-skip:focus,#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over.dialog-skip:hover,#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over.dialog-submit:focus,#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over.dialog-submit:hover,#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel.dialog-skip:focus,#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel.dialog-skip:hover,#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel.dialog-submit:focus,#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel.dialog-submit:hover,#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-skip:focus,#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-skip:hover,#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-submit.dialog-skip:focus,#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-submit.dialog-skip:hover,#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-take_over.dialog-skip:focus,#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-take_over.dialog-skip:hover,#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-take_over.dialog-submit.dialog-skip:focus,#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-take_over.dialog-submit.dialog-skip:hover,#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .e-btn-txt.dialog-button.dialog-ok.dialog-skip:focus,#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .e-btn-txt.dialog-button.dialog-ok.dialog-skip:hover,#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .e-btn-txt.dialog-button.dialog-ok.dialog-submit:focus,#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .e-btn-txt.dialog-button.dialog-ok.dialog-submit:hover,#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .e-btn-txt.dialog-button.dialog-take_over.dialog-skip:focus,#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .e-btn-txt.dialog-button.dialog-take_over.dialog-skip:hover,#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .e-btn-txt.dialog-button.dialog-take_over.dialog-submit:focus,#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .e-btn-txt.dialog-button.dialog-take_over.dialog-submit:hover,#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .e-btn.dialog-button.dialog-cancel.dialog-submit:focus,#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .e-btn.dialog-button.dialog-cancel.dialog-submit:hover,#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .e-btn.dialog-button.dialog-ok.dialog-skip:focus,#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .e-btn.dialog-button.dialog-ok.dialog-skip:hover,#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .e-btn.dialog-button.dialog-take_over.dialog-skip:focus,#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .e-btn.dialog-button.dialog-take_over.dialog-skip:hover,#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .e-primary.dialog-button.dialog-cancel.dialog-skip:focus,#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .e-primary.dialog-button.dialog-cancel.dialog-skip:hover,#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .e-primary.dialog-button.dialog-cancel.dialog-submit:focus,#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .e-primary.dialog-button.dialog-cancel.dialog-submit:hover,#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-cancel.dialog-submit:focus,#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-cancel.dialog-submit:hover,#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-ok.dialog-skip:focus,#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-ok.dialog-skip:hover,#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-take_over.dialog-skip:focus,#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-take_over.dialog-skip:hover,#elementor-deactivate-feedback-modal .e-btn-txt.dialog-submit.dialog-skip:focus,#elementor-deactivate-feedback-modal .e-btn-txt.dialog-submit.dialog-skip:hover,#elementor-deactivate-feedback-modal .e-btn-txt.dialog-submit:focus,#elementor-deactivate-feedback-modal .e-btn-txt.dialog-submit:hover,#elementor-deactivate-feedback-modal .e-btn.dialog-submit.dialog-skip:focus,#elementor-deactivate-feedback-modal .e-btn.dialog-submit.dialog-skip:hover,#elementor-deactivate-feedback-modal .e-btn.e-btn-txt.dialog-submit:focus,#elementor-deactivate-feedback-modal .e-btn.e-btn-txt.dialog-submit:hover,#elementor-deactivate-feedback-modal .e-btn.e-primary.dialog-skip:focus,#elementor-deactivate-feedback-modal .e-btn.e-primary.dialog-skip:hover,#elementor-deactivate-feedback-modal .e-primary.dialog-skip:focus,#elementor-deactivate-feedback-modal .e-primary.dialog-skip:hover,#elementor-deactivate-feedback-modal .e-primary.dialog-submit.dialog-skip:focus,#elementor-deactivate-feedback-modal .e-primary.dialog-submit.dialog-skip:hover,#elementor-deactivate-feedback-modal .e-primary.e-btn-txt.dialog-skip:focus,#elementor-deactivate-feedback-modal .e-primary.e-btn-txt.dialog-skip:hover,#elementor-deactivate-feedback-modal .e-primary.e-btn-txt.dialog-submit:focus,#elementor-deactivate-feedback-modal .e-primary.e-btn-txt.dialog-submit:hover,#elementor-deactivate-feedback-modal .elementor-button.dialog-submit.dialog-skip:focus,#elementor-deactivate-feedback-modal .elementor-button.dialog-submit.dialog-skip:hover,#elementor-deactivate-feedback-modal .elementor-button.e-btn-txt.dialog-submit:focus,#elementor-deactivate-feedback-modal .elementor-button.e-btn-txt.dialog-submit:hover,#elementor-deactivate-feedback-modal .elementor-button.e-primary.dialog-skip:focus,#elementor-deactivate-feedback-modal .elementor-button.e-primary.dialog-skip:hover,.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-cancel.dialog-submit.dialog-skip:focus,.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-cancel.dialog-submit.dialog-skip:hover,.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-cancel.dialog-submit:focus,.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-cancel.dialog-submit:hover,.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-cancel.dialog-take_over.dialog-skip:focus,.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-cancel.dialog-take_over.dialog-skip:hover,.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-cancel.dialog-take_over.dialog-submit:focus,.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-cancel.dialog-take_over.dialog-submit:hover,.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-ok.dialog-cancel.dialog-skip:focus,.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-ok.dialog-cancel.dialog-skip:hover,.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-ok.dialog-cancel.dialog-submit:focus,.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-ok.dialog-cancel.dialog-submit:hover,.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-ok.dialog-skip:focus,.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-ok.dialog-skip:hover,.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-ok.dialog-submit.dialog-skip:focus,.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-ok.dialog-submit.dialog-skip:hover,.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-take_over.dialog-skip:focus,.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-take_over.dialog-skip:hover,.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-take_over.dialog-submit.dialog-skip:focus,.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-take_over.dialog-submit.dialog-skip:hover,.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .e-btn-txt.dialog-button.dialog-ok.dialog-skip:focus,.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .e-btn-txt.dialog-button.dialog-ok.dialog-skip:hover,.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .e-btn-txt.dialog-button.dialog-ok.dialog-submit:focus,.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .e-btn-txt.dialog-button.dialog-ok.dialog-submit:hover,.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .e-btn-txt.dialog-button.dialog-take_over.dialog-skip:focus,.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .e-btn-txt.dialog-button.dialog-take_over.dialog-skip:hover,.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .e-btn-txt.dialog-button.dialog-take_over.dialog-submit:focus,.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .e-btn-txt.dialog-button.dialog-take_over.dialog-submit:hover,.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .e-btn.dialog-button.dialog-cancel.dialog-submit:focus,.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .e-btn.dialog-button.dialog-cancel.dialog-submit:hover,.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .e-btn.dialog-button.dialog-ok.dialog-skip:focus,.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .e-btn.dialog-button.dialog-ok.dialog-skip:hover,.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .e-btn.dialog-button.dialog-take_over.dialog-skip:focus,.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .e-btn.dialog-button.dialog-take_over.dialog-skip:hover,.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .e-primary.dialog-button.dialog-cancel.dialog-skip:focus,.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .e-primary.dialog-button.dialog-cancel.dialog-skip:hover,.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .e-primary.dialog-button.dialog-cancel.dialog-submit:focus,.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .e-primary.dialog-button.dialog-cancel.dialog-submit:hover,.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .elementor-button.dialog-button.dialog-cancel.dialog-submit:focus,.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .elementor-button.dialog-button.dialog-cancel.dialog-submit:hover,.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .elementor-button.dialog-button.dialog-ok.dialog-skip:focus,.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .elementor-button.dialog-button.dialog-ok.dialog-skip:hover,.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .elementor-button.dialog-button.dialog-take_over.dialog-skip:focus,.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .elementor-button.dialog-button.dialog-take_over.dialog-skip:hover,.dialog-type-alert .dialog-buttons-wrapper .e-btn.dialog-button.dialog-cancel.dialog-take_over:focus,.dialog-type-alert .dialog-buttons-wrapper .e-btn.dialog-button.dialog-cancel.dialog-take_over:hover,.dialog-type-alert .dialog-buttons-wrapper .e-btn.dialog-button.dialog-ok.dialog-cancel:focus,.dialog-type-alert .dialog-buttons-wrapper .e-btn.dialog-button.dialog-ok.dialog-cancel:hover,.dialog-type-alert .dialog-buttons-wrapper .e-btn.e-btn-txt.dialog-button.dialog-ok:focus,.dialog-type-alert .dialog-buttons-wrapper .e-btn.e-btn-txt.dialog-button.dialog-ok:hover,.dialog-type-alert .dialog-buttons-wrapper .e-btn.e-btn-txt.dialog-button.dialog-take_over:focus,.dialog-type-alert .dialog-buttons-wrapper .e-btn.e-btn-txt.dialog-button.dialog-take_over:hover,.dialog-type-alert .dialog-buttons-wrapper .e-btn.e-primary.dialog-button.dialog-cancel:focus,.dialog-type-alert .dialog-buttons-wrapper .e-btn.e-primary.dialog-button.dialog-cancel:hover,.dialog-type-alert .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-cancel.dialog-take_over:focus,.dialog-type-alert .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-cancel.dialog-take_over:hover,.dialog-type-alert .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-ok.dialog-cancel:focus,.dialog-type-alert .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-ok.dialog-cancel:hover,.dialog-type-alert .dialog-buttons-wrapper .elementor-button.e-btn-txt.dialog-button.dialog-ok:focus,.dialog-type-alert .dialog-buttons-wrapper .elementor-button.e-btn-txt.dialog-button.dialog-ok:hover,.dialog-type-alert .dialog-buttons-wrapper .elementor-button.e-btn-txt.dialog-button.dialog-take_over:focus,.dialog-type-alert .dialog-buttons-wrapper .elementor-button.e-btn-txt.dialog-button.dialog-take_over:hover,.dialog-type-alert .dialog-buttons-wrapper .elementor-button.e-primary.dialog-button.dialog-cancel:focus,.dialog-type-alert .dialog-buttons-wrapper .elementor-button.e-primary.dialog-button.dialog-cancel:hover,.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-cancel.dialog-submit.dialog-skip:focus,.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-cancel.dialog-submit.dialog-skip:hover,.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-cancel.dialog-submit:focus,.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-cancel.dialog-submit:hover,.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-cancel.dialog-take_over.dialog-skip:focus,.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-cancel.dialog-take_over.dialog-skip:hover,.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-cancel.dialog-take_over.dialog-submit:focus,.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-cancel.dialog-take_over.dialog-submit:hover,.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-ok.dialog-cancel.dialog-skip:focus,.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-ok.dialog-cancel.dialog-skip:hover,.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-ok.dialog-cancel.dialog-submit:focus,.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-ok.dialog-cancel.dialog-submit:hover,.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-ok.dialog-skip:focus,.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-ok.dialog-skip:hover,.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-ok.dialog-submit.dialog-skip:focus,.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-ok.dialog-submit.dialog-skip:hover,.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-take_over.dialog-skip:focus,.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-take_over.dialog-skip:hover,.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-take_over.dialog-submit.dialog-skip:focus,.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-take_over.dialog-submit.dialog-skip:hover,.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .e-btn-txt.dialog-button.dialog-ok.dialog-skip:focus,.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .e-btn-txt.dialog-button.dialog-ok.dialog-skip:hover,.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .e-btn-txt.dialog-button.dialog-ok.dialog-submit:focus,.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .e-btn-txt.dialog-button.dialog-ok.dialog-submit:hover,.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .e-btn-txt.dialog-button.dialog-take_over.dialog-skip:focus,.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .e-btn-txt.dialog-button.dialog-take_over.dialog-skip:hover,.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .e-btn-txt.dialog-button.dialog-take_over.dialog-submit:focus,.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .e-btn-txt.dialog-button.dialog-take_over.dialog-submit:hover,.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .e-btn.dialog-button.dialog-cancel.dialog-submit:focus,.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .e-btn.dialog-button.dialog-cancel.dialog-submit:hover,.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .e-btn.dialog-button.dialog-ok.dialog-skip:focus,.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .e-btn.dialog-button.dialog-ok.dialog-skip:hover,.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .e-btn.dialog-button.dialog-take_over.dialog-skip:focus,.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .e-btn.dialog-button.dialog-take_over.dialog-skip:hover,.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .e-primary.dialog-button.dialog-cancel.dialog-skip:focus,.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .e-primary.dialog-button.dialog-cancel.dialog-skip:hover,.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .e-primary.dialog-button.dialog-cancel.dialog-submit:focus,.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .e-primary.dialog-button.dialog-cancel.dialog-submit:hover,.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .elementor-button.dialog-button.dialog-cancel.dialog-submit:focus,.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .elementor-button.dialog-button.dialog-cancel.dialog-submit:hover,.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .elementor-button.dialog-button.dialog-ok.dialog-skip:focus,.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .elementor-button.dialog-button.dialog-ok.dialog-skip:hover,.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .elementor-button.dialog-button.dialog-take_over.dialog-skip:focus,.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .elementor-button.dialog-button.dialog-take_over.dialog-skip:hover,.dialog-type-confirm .dialog-buttons-wrapper .e-btn.dialog-button.dialog-cancel.dialog-take_over:focus,.dialog-type-confirm .dialog-buttons-wrapper .e-btn.dialog-button.dialog-cancel.dialog-take_over:hover,.dialog-type-confirm .dialog-buttons-wrapper .e-btn.dialog-button.dialog-ok.dialog-cancel:focus,.dialog-type-confirm .dialog-buttons-wrapper .e-btn.dialog-button.dialog-ok.dialog-cancel:hover,.dialog-type-confirm .dialog-buttons-wrapper .e-btn.e-btn-txt.dialog-button.dialog-ok:focus,.dialog-type-confirm .dialog-buttons-wrapper .e-btn.e-btn-txt.dialog-button.dialog-ok:hover,.dialog-type-confirm .dialog-buttons-wrapper .e-btn.e-btn-txt.dialog-button.dialog-take_over:focus,.dialog-type-confirm .dialog-buttons-wrapper .e-btn.e-btn-txt.dialog-button.dialog-take_over:hover,.dialog-type-confirm .dialog-buttons-wrapper .e-btn.e-primary.dialog-button.dialog-cancel:focus,.dialog-type-confirm .dialog-buttons-wrapper .e-btn.e-primary.dialog-button.dialog-cancel:hover,.dialog-type-confirm .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-cancel.dialog-take_over:focus,.dialog-type-confirm .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-cancel.dialog-take_over:hover,.dialog-type-confirm .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-ok.dialog-cancel:focus,.dialog-type-confirm .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-ok.dialog-cancel:hover,.dialog-type-confirm .dialog-buttons-wrapper .elementor-button.e-btn-txt.dialog-button.dialog-ok:focus,.dialog-type-confirm .dialog-buttons-wrapper .elementor-button.e-btn-txt.dialog-button.dialog-ok:hover,.dialog-type-confirm .dialog-buttons-wrapper .elementor-button.e-btn-txt.dialog-button.dialog-take_over:focus,.dialog-type-confirm .dialog-buttons-wrapper .elementor-button.e-btn-txt.dialog-button.dialog-take_over:hover,.dialog-type-confirm .dialog-buttons-wrapper .elementor-button.e-primary.dialog-button.dialog-cancel:focus,.dialog-type-confirm .dialog-buttons-wrapper .elementor-button.e-primary.dialog-button.dialog-cancel:hover,.e-btn.e-primary.e-btn-txt:focus,.e-btn.e-primary.e-btn-txt:hover,.elementor-button.e-primary.e-btn-txt:focus,.elementor-button.e-primary.e-btn-txt:hover{background:var(--e-a-bg-primary)}#elementor-deactivate-feedback-modal .e-accent.dialog-skip,#elementor-deactivate-feedback-modal .e-accent.dialog-submit,#elementor-deactivate-feedback-modal .go-pro.dialog-skip,#elementor-deactivate-feedback-modal .go-pro.dialog-submit,.e-btn.e-accent,.e-btn.go-pro,.elementor-button.e-accent,.elementor-button.go-pro{background-color:var(--e-a-btn-bg-accent)}#elementor-deactivate-feedback-modal .e-accent.dialog-skip:focus,#elementor-deactivate-feedback-modal .e-accent.dialog-skip:hover,#elementor-deactivate-feedback-modal .e-accent.dialog-submit:focus,#elementor-deactivate-feedback-modal .e-accent.dialog-submit:hover,#elementor-deactivate-feedback-modal .go-pro.dialog-skip:focus,#elementor-deactivate-feedback-modal .go-pro.dialog-skip:hover,#elementor-deactivate-feedback-modal .go-pro.dialog-submit:focus,#elementor-deactivate-feedback-modal .go-pro.dialog-submit:hover,.e-btn.e-accent:focus,.e-btn.e-accent:hover,.e-btn.go-pro:focus,.e-btn.go-pro:hover,.elementor-button.e-accent:focus,.elementor-button.e-accent:hover,.elementor-button.go-pro:focus,.elementor-button.go-pro:hover{background-color:var(--e-a-btn-bg-accent-hover)}#elementor-deactivate-feedback-modal .e-accent.dialog-skip:active,#elementor-deactivate-feedback-modal .e-accent.dialog-submit:active,#elementor-deactivate-feedback-modal .go-pro.dialog-skip:active,#elementor-deactivate-feedback-modal .go-pro.dialog-submit:active,.e-btn.e-accent:active,.e-btn.go-pro:active,.elementor-button.e-accent:active,.elementor-button.go-pro:active{background-color:var(--e-a-btn-bg-accent-active)}#elementor-deactivate-feedback-modal .e-info.dialog-skip,#elementor-deactivate-feedback-modal .e-info.dialog-submit,#elementor-deactivate-feedback-modal .elementor-button-info.dialog-skip,#elementor-deactivate-feedback-modal .elementor-button-info.dialog-submit,.e-btn.e-info,.e-btn.elementor-button-info,.elementor-button.e-info,.elementor-button.elementor-button-info{background-color:var(--e-a-btn-bg-info)}#elementor-deactivate-feedback-modal .e-info.dialog-skip:focus,#elementor-deactivate-feedback-modal .e-info.dialog-skip:hover,#elementor-deactivate-feedback-modal .e-info.dialog-submit:focus,#elementor-deactivate-feedback-modal .e-info.dialog-submit:hover,#elementor-deactivate-feedback-modal .elementor-button-info.dialog-skip:focus,#elementor-deactivate-feedback-modal .elementor-button-info.dialog-skip:hover,#elementor-deactivate-feedback-modal .elementor-button-info.dialog-submit:focus,#elementor-deactivate-feedback-modal .elementor-button-info.dialog-submit:hover,.e-btn.e-info:focus,.e-btn.e-info:hover,.e-btn.elementor-button-info:focus,.e-btn.elementor-button-info:hover,.elementor-button.e-info:focus,.elementor-button.e-info:hover,.elementor-button.elementor-button-info:focus,.elementor-button.elementor-button-info:hover{background-color:var(--e-a-btn-bg-info-hover)}#elementor-deactivate-feedback-modal .e-warning.dialog-skip,#elementor-deactivate-feedback-modal .e-warning.dialog-submit,#elementor-deactivate-feedback-modal .elementor-button-warning.dialog-skip,#elementor-deactivate-feedback-modal .elementor-button-warning.dialog-submit,.e-btn.e-warning,.e-btn.elementor-button-warning,.elementor-button.e-warning,.elementor-button.elementor-button-warning{background-color:var(--e-a-btn-bg-warning)}#elementor-deactivate-feedback-modal .e-warning.dialog-skip:focus,#elementor-deactivate-feedback-modal .e-warning.dialog-skip:hover,#elementor-deactivate-feedback-modal .e-warning.dialog-submit:focus,#elementor-deactivate-feedback-modal .e-warning.dialog-submit:hover,#elementor-deactivate-feedback-modal .elementor-button-warning.dialog-skip:focus,#elementor-deactivate-feedback-modal .elementor-button-warning.dialog-skip:hover,#elementor-deactivate-feedback-modal .elementor-button-warning.dialog-submit:focus,#elementor-deactivate-feedback-modal .elementor-button-warning.dialog-submit:hover,.e-btn.e-warning:focus,.e-btn.e-warning:hover,.e-btn.elementor-button-warning:focus,.e-btn.elementor-button-warning:hover,.elementor-button.e-warning:focus,.elementor-button.e-warning:hover,.elementor-button.elementor-button-warning:focus,.elementor-button.elementor-button-warning:hover{background-color:var(--e-a-btn-bg-warning-hover)}#elementor-deactivate-feedback-modal .e-danger.dialog-skip,#elementor-deactivate-feedback-modal .e-danger.dialog-submit,#elementor-deactivate-feedback-modal .elementor-button-danger.dialog-skip,#elementor-deactivate-feedback-modal .elementor-button-danger.dialog-submit,.e-btn.e-danger,.e-btn.elementor-button-danger,.elementor-button.e-danger,.elementor-button.elementor-button-danger{background-color:var(--e-a-btn-bg-danger)}#elementor-deactivate-feedback-modal .e-danger.dialog-skip:focus,#elementor-deactivate-feedback-modal .e-danger.dialog-skip:hover,#elementor-deactivate-feedback-modal .e-danger.dialog-submit:focus,#elementor-deactivate-feedback-modal .e-danger.dialog-submit:hover,#elementor-deactivate-feedback-modal .elementor-button-danger.dialog-skip:focus,#elementor-deactivate-feedback-modal .elementor-button-danger.dialog-skip:hover,#elementor-deactivate-feedback-modal .elementor-button-danger.dialog-submit:focus,#elementor-deactivate-feedback-modal .elementor-button-danger.dialog-submit:hover,.e-btn.e-danger:focus,.e-btn.e-danger:hover,.e-btn.elementor-button-danger:focus,.e-btn.elementor-button-danger:hover,.elementor-button.e-danger:focus,.elementor-button.e-danger:hover,.elementor-button.elementor-button-danger:focus,.elementor-button.elementor-button-danger:hover{background-color:var(--e-a-btn-bg-danger-hover)}#elementor-deactivate-feedback-modal .dialog-skip i,#elementor-deactivate-feedback-modal .dialog-submit i,.e-btn i,.elementor-button i{margin-inline-end:5px}#adminmenu #toplevel_page_elementor div.wp-menu-image:before{content:"\e813";font-family:eicons;font-size:18px;margin-block-start:1px}#adminmenu #toplevel_page_elementor a[href="admin.php?page=go_elementor_pro"]{font-weight:600;background-color:#93003f;color:#fff;margin:3px 10px 0;display:block;text-align:center;border-radius:3px;transition:all .3s}#adminmenu #toplevel_page_elementor a[href="admin.php?page=go_elementor_pro"]:focus,#adminmenu #toplevel_page_elementor a[href="admin.php?page=go_elementor_pro"]:hover{background-color:#c60055;box-shadow:none}#adminmenu #menu-posts-elementor_library .wp-menu-image:before{content:"\e8ff";font-family:eicons;font-size:18px}#e-admin-menu__kit-library{color:#5cb85c}.elementor-plugins-gopro{color:#93003f;font-weight:700}.elementor-plugins-gopro:focus,.elementor-plugins-gopro:hover{color:#c60055}#elementor-switch-mode{margin:15px 0}#elementor-editor-button,#elementor-switch-mode-button{outline:none;cursor:pointer}#elementor-editor-button i,#elementor-switch-mode-button i{margin-inline-end:3px;font-size:125%;font-style:normal}body.elementor-editor-active .elementor-switch-mode-off{display:none}body.elementor-editor-active #elementor-switch-mode-button{background-color:#f7f7f7;color:#555;border-color:#ccc;box-shadow:0 1px 0 #ccc!important;text-shadow:unset}body.elementor-editor-active #elementor-switch-mode-button:hover{background-color:#e9e9e9}body.elementor-editor-active #elementor-switch-mode-button:active{box-shadow:inset 0 1px 0 #ccc;transform:translateY(1px)}body.elementor-editor-active #postdivrich{display:none!important}body.elementor-editor-active .block-editor-block-list__layout,body.elementor-editor-active .editor-block-list__layout,body.elementor-editor-inactive #elementor-editor,body.elementor-editor-inactive .elementor-switch-mode-on{display:none}body.elementor-editor-active .edit-post-layout__content .edit-post-visual-editor{flex-basis:auto}body.elementor-editor-active #elementor-editor{margin-block-end:50px}body.elementor-editor-active .edit-post-text-editor__body .editor-post-text-editor{display:none}body.elementor-editor-active :is(.is-desktop-preview,.is-tablet-preview,.is-mobile-preview) :is(.editor-styles-wrapper,iframe[name=editor-canvas]){height:auto!important;padding:0!important;flex:0!important}body .block-editor #elementor-switch-mode{margin:0 15px}body .block-editor #elementor-switch-mode .button{margin:2px;height:33px;font-size:13px;line-height:1}body .block-editor #elementor-switch-mode .button i{padding-inline-end:5px}.elementor-button{font-size:13px;text-decoration:none;padding:15px 40px}#elementor-editor{height:300px;width:100%;transition:all .5s ease}#elementor-editor .elementor-loader-wrapper{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:300px;display:flex;flex-direction:column;align-items:center;gap:30px}#elementor-editor .elementor-loader{border-radius:50%;padding:40px;height:150px;width:150px;background-color:var(--e-a-bg-active);box-sizing:border-box;box-shadow:2px 2px 20px 4px rgba(0,0,0,.02)}#elementor-editor .elementor-loader-boxes{height:100%;width:100%;position:relative}#elementor-editor .elementor-loader-box{position:absolute;background-color:var(--e-a-color-txt-hover);animation:load 1.8s linear infinite}#elementor-editor .elementor-loader-box:first-of-type{width:20%;height:100%;left:0;top:0}#elementor-editor .elementor-loader-box:not(:first-of-type){right:0;height:20%;width:60%}#elementor-editor .elementor-loader-box:nth-of-type(2){top:0;animation-delay:calc(1.8s / 4 * -1)}#elementor-editor .elementor-loader-box:nth-of-type(3){top:40%;animation-delay:calc(1.8s / 4 * -2)}#elementor-editor .elementor-loader-box:nth-of-type(4){bottom:0;animation-delay:calc(1.8s / 4 * -3)}#elementor-editor .elementor-loading-title{color:var(--e-a-color-txt);text-align:center;text-transform:uppercase;letter-spacing:7px;text-indent:7px;font-size:10px;width:100%}#elementor-go-to-edit-page-link{height:100%;display:flex;justify-content:center;align-items:center;border:1px solid #ddd;background-color:#f7f7f7;text-decoration:none;position:relative;font-family:Sans-serif}#elementor-go-to-edit-page-link:hover{background-color:#fff}#elementor-go-to-edit-page-link:focus{box-shadow:none}#elementor-go-to-edit-page-link.elementor-animate #elementor-editor-button,#elementor-go-to-edit-page-link:not(.elementor-animate) .elementor-loader-wrapper{display:none}.elementor-button-spinner:before{font:normal 20px/.5 dashicons;speak:none;display:inline-block;padding:0;inset-block-start:8px;inset-inline-start:-4px;position:relative;vertical-align:top;content:"\f463"}.elementor-button-spinner.loading:before{animation:rotation 1s linear infinite}.elementor-button-spinner.success:before{content:"\f147";color:#46b450}.elementor-blank_state{padding:5em 0;margin:auto;max-width:520px;text-align:center;font-family:var(--e-a-font-family)}.elementor-blank_state i{font-size:50px}.elementor-blank_state h3{font-size:32px;font-weight:300;color:inherit;margin:20px 0 10px;line-height:1.2}.elementor-blank_state p{font-size:16px;font-weight:400;margin-block-end:40px}.elementor-blank_state .elementor-button{display:inline-block}#available-widgets [class*=elementor-template] .widget-title:before{content:"\e813";font-family:eicons;font-size:17px}.elementor-settings-form-page{padding-block-start:30px}._elementor_settings_update_time,.elementor-settings-form-page:not(.elementor-active){display:none}body.post-type-attachment table.media .column-title .media-icon img[src$=".svg"]{width:100%}.e-major-update-warning{margin-block-end:5px;max-width:1000px;display:flex}.e-major-update-warning__separator{margin:15px -12px}.e-major-update-warning__icon{font-size:17px;margin-inline-end:9px;margin-inline-start:2px}.e-major-update-warning__title{font-weight:600;margin-block-end:10px}.e-major-update-warning+p{display:none}.notice-success .e-major-update-warning__separator{border:1px solid #46b450}.notice-success .e-major-update-warning__icon{color:#79ba49}.notice-warning .e-major-update-warning__separator{border:1px solid #ffb900}.notice-warning .e-major-update-warning__icon{color:#f56e28}.plugins table.e-compatibility-update-table tr{background:transparent}.plugins table.e-compatibility-update-table tr th{font-weight:600}.plugins table.e-compatibility-update-table tr td,.plugins table.e-compatibility-update-table tr th{min-width:250px;font-size:13px;background:transparent;box-shadow:none;border:none;padding-block-start:5px;padding-block-end:5px;padding-inline-end:15px;padding-inline-start:0}:root{--e-focus-color:rgba(0,115,170,0.4);--e-context-primary-color:#0073aa;--e-context-primary-color-dark:#005177;--e-context-primary-tint-4:rgba(0,115,170,0.4);--e-context-primary-tint-1:rgba(0,115,170,0.04);--e-context-success-color:#0a875a;--e-context-success-color-dark:#06583a;--e-context-success-tint-4:rgba(10,135,90,0.4);--e-context-success-tint-1:rgba(10,135,90,0.04);--e-context-info-color:#2563eb;--e-context-info-color-dark:#134cca;--e-context-info-tint-4:rgba(37,99,235,0.4);--e-context-info-tint-1:rgba(37,99,235,0.04);--e-context-warning-color:#f59e0b;--e-context-warning-color-dark:#c57f08;--e-context-warning-tint-4:rgba(245,158,11,0.4);--e-context-warning-tint-1:rgba(245,158,11,0.04);--e-context-error-color:#dc2626;--e-context-error-color-dark:#b21d1d;--e-context-error-tint-4:rgba(220,38,38,0.4);--e-context-error-tint-1:rgba(220,38,38,0.04);--e-context-cta-color:#524cff;--e-context-cta-color-dark:#2119ff;--e-context-cta-tint-4:rgba(82,76,255,0.4);--e-context-cta-tint-1:rgba(82,76,255,0.04)}.e-getting-started{max-width:900px;padding:2.5em 0;margin:auto;text-align:center}.e-getting-started__header{display:flex;flex-direction:row;justify-content:space-between;align-items:center;box-shadow:0 0 8px rgba(0,0,0,.1)}.e-getting-started__header .e-logo-wrapper{font-size:10px;margin-inline-end:10px}.e-getting-started__title{padding:0 15px;font-weight:600;text-transform:uppercase;display:flex;align-items:center}.e-getting-started__skip{border-inline-start:1px solid #eee;font-size:16px;color:inherit}.e-getting-started__skip i{padding:15px}.e-getting-started__content{padding:50px}.e-getting-started__content h2{font-size:2em;margin-block-start:0}.e-getting-started__content--narrow{max-width:500px;margin:auto}.e-getting-started__video{margin:40px 0 60px}.e-getting-started__video iframe{box-shadow:10px 10px 20px rgba(0,0,0,.15)}.e-getting-started__actions .button-primary{margin-inline-end:20px}:root{--e-button-padding-block:0.4375rem;--e-button-padding-inline:0.75rem;--e-button-font-size:0.8125rem;--e-button-font-weight:500;--e-button-line-height:0.9375rem;--e-button-border-radius:3px;--e-button-context-color:var(--e-context-primary-color);--e-button-context-color-dark:var(--e-context-primary-color-dark);--e-button-context-tint:var(--e-context-primary-tint-1)}.e-button{display:inline-block;font-weight:var(--e-button-font-weight);text-align:center;white-space:nowrap;vertical-align:middle;-webkit-user-select:none;-moz-user-select:none;user-select:none;color:#fff;border:0;text-decoration:none;background:var(--e-button-context-color);padding:var(--e-button-padding-block) var(--e-button-padding-inline);font-size:var(--e-button-font-size);line-height:var(--e-button-line-height);border-radius:var(--e-button-border-radius);transition:background-color .15s ease-in-out,box-shadow .15s ease-in-out}.e-button:active,.e-button:focus,.e-button:hover{color:#fff;text-decoration:none;background:var(--e-button-context-color-dark)}.e-button.focus,.e-button:focus{outline:0;box-shadow:0 0 0 2px var(--e-focus-color)}.e-button.disabled,.e-button:disabled{opacity:.5;box-shadow:none}.e-button:not(:disabled):not(.disabled){cursor:pointer}.e-button:not(:disabled):not(.disabled).active:focus,.e-button:not(:disabled):not(.disabled):active:focus{box-shadow:0 0 0 2px var(--e-focus-color)}.e-button--primary{--e-button-context-color:var(--e-context-primary-color);--e-button-context-color-dark:var(--e-context-primary-color-dark);--e-button-context-tint:var(--e-context-primary-tint-1);--e-focus-color:var(--e-context-primary-tint-4)}.e-button--success{--e-button-context-color:var(--e-context-success-color);--e-button-context-color-dark:var(--e-context-success-color-dark);--e-button-context-tint:var(--e-context-success-tint-1);--e-focus-color:var(--e-context-success-tint-4)}.e-button--info{--e-button-context-color:var(--e-context-info-color);--e-button-context-color-dark:var(--e-context-info-color-dark);--e-button-context-tint:var(--e-context-info-tint-1);--e-focus-color:var(--e-context-info-tint-4)}.e-button--warning{--e-button-context-color:var(--e-context-warning-color);--e-button-context-color-dark:var(--e-context-warning-color-dark);--e-button-context-tint:var(--e-context-warning-tint-1);--e-focus-color:var(--e-context-warning-tint-4)}.e-button--error{--e-button-context-color:var(--e-context-error-color);--e-button-context-color-dark:var(--e-context-error-color-dark);--e-button-context-tint:var(--e-context-error-tint-1);--e-focus-color:var(--e-context-error-tint-4)}.e-button--cta{--e-button-context-color:var(--e-context-cta-color);--e-button-context-color-dark:var(--e-context-cta-color-dark);--e-button-context-tint:var(--e-context-cta-tint-1);--e-focus-color:var(--e-context-cta-tint-4)}.e-button.e-button--outline{color:var(--e-button-context-color);background:none;border:1px solid}.e-button.e-button--outline:focus,.e-button.e-button--outline:hover{color:var(--e-button-context-color-dark);background:var(--e-button-context-tint)}.e-button.e-button--outline.disabled,.e-button.e-button--outline:disabled{color:var(--e-button-context-color-dark);background:#69727d}.e-button>i{line-height:inherit;height:var(--e-button-line-height);width:-moz-min-content;width:min-content}.e-button>*+*{margin-inline-start:.5ch}.e-button--link{color:var(--e-button-context-color);background-color:transparent}.e-button--link:focus,.e-button--link:hover{color:var(--e-button-context-color-dark);background:var(--e-button-context-tint)}.e-button--link.disabled,.e-button--link:disabled{color:#69727d}a.e-button.disabled,fieldset:disabled a.e-button{pointer-events:none}:root{--e-notice-bg:#fff;--e-notice-border-color:#ccd0d4;--e-notice-context-color:#93003f;--e-notice-context-tint:var(--e-context-cta-tint-1);--e-notice-box-shadow:0 1px 4px rgba(0,0,0,0.15);--e-notice-dismiss-color:#3f444b}.e-notice{position:relative;display:flex;font-family:Roboto,Arial,Helvetica,sans-serif;background:var(--e-notice-bg);border:1px solid var(--e-notice-border-color);border-inline-start-width:4px;box-shadow:var(--e-notice-box-shadow);margin:5px 20px 5px 2px}.e-notice.notice{padding:0}.e-notice:before{display:block;content:"";position:absolute;inset-inline-start:-4px;inset-block-start:-1px;inset-block-end:-1px;width:4px;background-color:var(--e-notice-context-color)}.e-notice--primary{--e-notice-context-color:var(--e-context-primary-color);--e-notice-context-color-dark:var(--e-context-primary-color-dark);--e-notice-context-tint:var(--e-context-primary-tint-1)}.e-notice--success{--e-notice-context-color:var(--e-context-success-color);--e-notice-context-color-dark:var(--e-context-success-color-dark);--e-notice-context-tint:var(--e-context-success-tint-1)}.e-notice--info{--e-notice-context-color:var(--e-context-info-color);--e-notice-context-color-dark:var(--e-context-info-color-dark);--e-notice-context-tint:var(--e-context-info-tint-1)}.e-notice--warning{--e-notice-context-color:var(--e-context-warning-color);--e-notice-context-color-dark:var(--e-context-warning-color-dark);--e-notice-context-tint:var(--e-context-warning-tint-1)}.e-notice--error{--e-notice-context-color:var(--e-context-error-color);--e-notice-context-color-dark:var(--e-context-error-color-dark);--e-notice-context-tint:var(--e-context-error-tint-1)}.e-notice--cta{--e-notice-context-color:var(--e-context-cta-color);--e-notice-context-color-dark:var(--e-context-cta-color-dark);--e-notice-context-tint:var(--e-context-cta-tint-1)}.e-notice--extended{--e-notice-is-extended:1}.e-notice--dismissible{padding-inline-end:38px}.e-notice__aside{overflow:hidden;background-color:var(--e-notice-context-tint);width:calc(var(--e-notice-is-extended, 0) * 50px);text-align:center;padding-block-start:15px;flex-grow:0;flex-shrink:0}.e-notice__icon-wrapper{display:inline-block;font-size:.625rem;max-height:1.5rem;width:1.5rem;line-height:1.5rem;border-radius:100px;background:var(--e-notice-context-color);color:#fff;text-shadow:0 0 3px var(--e-notice-context-color-dark),0 0 1px var(--e-notice-context-color-dark),0 0 1px var(--e-notice-context-color-dark)}.e-notice__content{padding:20px}.e-notice__actions{display:flex}.e-notice__actions>*+*{margin-inline-start:8px}.e-notice__dismiss{width:20px;height:20px;line-height:20px;font-size:.8125rem;text-align:center;background:none;display:block;position:absolute;inset-block-start:0;inset-inline-end:1px;border:none;margin:0;padding:9px;cursor:pointer;font-style:normal}.e-notice__dismiss:before{font-family:eicons;display:inline-block;content:"\e87f";color:var(--e-notice-dismiss-color);width:20px;border-radius:20px;speak:none;text-align:center}.e-notice__dismiss:active:before,.e-notice__dismiss:focus:before,.e-notice__dismiss:hover:before{font-weight:700}.e-notice__dismiss:focus:before{color:#fff;background:var(--e-notice-dismiss-color);outline:none}.e-notice__dismiss:focus{outline:none}.e-notice p{line-height:1.2;padding:0;margin:0}.e-notice p+.e-notice__actions{margin-block-start:1rem}.e-notice h3{font-size:1.0625rem;line-height:1.2;margin:0}.e-notice h3+p{margin-block-start:8px}.elementor-admin-alert{padding:15px;border-inline-start:3px solid transparent;position:relative;font-size:12px;line-height:1.5;text-align:start}.elementor-admin-alert a{color:inherit}.elementor-admin-alert.elementor-alert-info{color:var(--e-a-color-info);background-color:var(--e-a-bg-info);border-color:var(--e-a-color-info)}.elementor-admin-alert.elementor-alert-success{color:var(--e-a-color-success);background-color:var(--e-a-bg-success);border-color:var(--e-a-color-success)}.elementor-admin-alert.elementor-alert-warning{color:var(--e-admin-color-warning);background-color:var(--e-a-bg-warning);border-color:var(--e-a-color-warning)}.elementor-admin-alert.elementor-alert-danger{color:var(--e-a-color-danger);background-color:var(--e-a-bg-danger);border-color:var(--e-a-color-danger)}#elementor-system-info{padding:15px}#elementor-system-info .elementor-system-info-header{display:flex;justify-content:space-between;align-items:center}#elementor-system-info .elementor-system-info-section{margin-block-end:10px}#elementor-system-info .elementor-system-info-section .widefat{white-space:pre}#elementor-system-info .elementor-system-info-section .elementor-log-entries{white-space:pre-wrap}#elementor-system-info .elementor-system-info-section:not(.elementor-system-info-log) tbody td:first-child{width:300px}#elementor-system-info .elementor-system-info-section:not(.elementor-system-info-log) td{white-space:break-spaces}#elementor-system-info .elementor-system-info-field-recommendation{padding-inline-start:10px;color:#7f7f7f}#elementor-system-info .elementor-system-info-plugin-name{color:#000}#elementor-system-info .elementor-system-info-plugin-properties{padding:10px}#elementor-system-info #elementor-system-info-raw-code{width:100%;height:200px}#elementor-system-info #elementor-system-info-raw-code-label{padding:5px;display:block}#elementor-system-info .elementor-warning td:first-child{border-inline-start:3px solid #f59e0b}#elementor-system-info a.box-title-tool{font-size:80%;margin-inline-start:15px;color:#69727d}#elementor-system-info a.box-title-tool:hover{text-decoration:underline}#elementor-system-info #elementor-usage-recalc{font-size:12px;color:#fff;background-color:#9da5ae;padding:4px 18px 5px;border-radius:3px}.dialog-type-alert .dialog-widget-content,.dialog-type-confirm .dialog-widget-content{margin:auto;width:400px;padding:20px}.dialog-type-alert .dialog-header,.dialog-type-confirm .dialog-header{font-size:15px;font-weight:500}.dialog-type-alert .dialog-header:after,.dialog-type-confirm .dialog-header:after{content:"";display:block;border-block-end:var(--e-a-border);padding-block-end:10px;margin-block-end:10px;margin-inline-start:-20px;margin-inline-end:-20px}.dialog-type-alert .dialog-message,.dialog-type-confirm .dialog-message{min-height:50px}.dialog-type-alert .dialog-buttons-wrapper,.dialog-type-confirm .dialog-buttons-wrapper{padding-block-start:10px;display:flex;justify-content:flex-end;gap:15px}.dialog-type-alert .dialog-buttons-wrapper .dialog-button,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button{font-size:12px;font-weight:500;line-height:1.2;padding:8px 16px;outline:none;border:none;border-radius:var(--e-a-border-radius);background-color:var(--e-a-btn-bg);color:var(--e-a-btn-color-invert);transition:var(--e-a-transition-hover)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:hover{border:none}.dialog-type-alert .dialog-buttons-wrapper .dialog-button:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:hover{background-color:var(--e-a-btn-bg-hover);color:var(--e-a-btn-color-invert)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button:active,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:active{background-color:var(--e-a-btn-bg-active)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button:not([disabled]),.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:not([disabled]){cursor:pointer}.dialog-type-alert .dialog-buttons-wrapper .dialog-button:disabled,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:disabled{background-color:var(--e-a-btn-bg-disabled);color:var(--e-a-btn-color-disabled)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button:not(.elementor-button-state) .elementor-state-icon,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:not(.elementor-button-state) .elementor-state-icon{display:none}#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-skip,#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-skip,.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-skip,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt,.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-skip,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt{background:transparent;color:var(--e-a-color-txt)}#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-skip:focus,#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-skip:hover,#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-skip:focus,#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-skip:hover,.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-skip:focus,.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-skip:hover,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel:hover,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt:hover,.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-skip:focus,.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-skip:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt:hover{background:var(--e-a-bg-hover);color:var(--e-a-color-txt-hover)}#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-skip:disabled,#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-skip:disabled,.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-skip:disabled,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel:disabled,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt:disabled,.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-skip:disabled,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel:disabled,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt:disabled{background:transparent;color:var(--e-a-color-txt-disabled)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt-border,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt-border{border:1px solid var(--e-a-color-txt-muted)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-success,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-success,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-success,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-success{background-color:var(--e-a-btn-bg-success)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-success:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-success:hover,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-success:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-success:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-success:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-success:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-success:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-success:hover{background-color:var(--e-a-btn-bg-success-hover)}#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-submit,#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-submit,.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-submit,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-take_over,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary,.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-submit,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-take_over,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary{background-color:var(--e-a-btn-bg-primary);color:var(--e-a-btn-color)}#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-submit:focus,#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-submit:hover,#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-submit:focus,#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-submit:hover,.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-submit:focus,.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-submit:hover,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok:hover,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-take_over:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-take_over:hover,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary:hover,.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-submit:focus,.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-submit:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-take_over:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-take_over:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary:hover{background-color:var(--e-a-btn-bg-primary-hover);color:var(--e-a-btn-color)}#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-submit,#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-skip,#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-submit.dialog-skip,#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-take_over.dialog-skip,#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-submit,#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary.dialog-skip,#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-submit,#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-skip,#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-submit.dialog-skip,#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-take_over.dialog-skip,#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-submit,#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary.dialog-skip,.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-cancel.dialog-submit,.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-ok.dialog-skip,.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-submit.dialog-skip,.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-take_over.dialog-skip,.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.e-btn-txt.dialog-submit,.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.e-primary.dialog-skip,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-ok,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-take_over,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary.dialog-cancel,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary.e-btn-txt,.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-cancel.dialog-submit,.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-ok.dialog-skip,.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-submit.dialog-skip,.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-take_over.dialog-skip,.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.e-btn-txt.dialog-submit,.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.e-primary.dialog-skip,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-ok,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-take_over,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary.dialog-cancel,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary.e-btn-txt{background:transparent;color:var(--e-a-color-primary-bold)}#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-submit:focus,#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-submit:hover,#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-skip:focus,#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-skip:hover,#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-submit.dialog-skip:focus,#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-submit.dialog-skip:hover,#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-take_over.dialog-skip:focus,#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-take_over.dialog-skip:hover,#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-submit:focus,#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-submit:hover,#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary.dialog-skip:focus,#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary.dialog-skip:hover,#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-submit:focus,#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-submit:hover,#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-skip:focus,#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-skip:hover,#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-submit.dialog-skip:focus,#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-submit.dialog-skip:hover,#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-take_over.dialog-skip:focus,#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-take_over.dialog-skip:hover,#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-submit:focus,#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-submit:hover,#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary.dialog-skip:focus,#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary.dialog-skip:hover,.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-cancel.dialog-submit:focus,.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-cancel.dialog-submit:hover,.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-ok.dialog-skip:focus,.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-ok.dialog-skip:hover,.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-submit.dialog-skip:focus,.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-submit.dialog-skip:hover,.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-take_over.dialog-skip:focus,.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-take_over.dialog-skip:hover,.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.e-btn-txt.dialog-submit:focus,.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.e-btn-txt.dialog-submit:hover,.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.e-primary.dialog-skip:focus,.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.e-primary.dialog-skip:hover,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over:hover,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel:hover,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-ok:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-ok:hover,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-take_over:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-take_over:hover,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary.dialog-cancel:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary.dialog-cancel:hover,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary.e-btn-txt:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary.e-btn-txt:hover,.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-cancel.dialog-submit:focus,.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-cancel.dialog-submit:hover,.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-ok.dialog-skip:focus,.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-ok.dialog-skip:hover,.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-submit.dialog-skip:focus,.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-submit.dialog-skip:hover,.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-take_over.dialog-skip:focus,.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-take_over.dialog-skip:hover,.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.e-btn-txt.dialog-submit:focus,.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.e-btn-txt.dialog-submit:hover,.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.e-primary.dialog-skip:focus,.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.e-primary.dialog-skip:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-ok:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-ok:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-take_over:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-take_over:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary.dialog-cancel:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary.dialog-cancel:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary.e-btn-txt:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary.e-btn-txt:hover{background:var(--e-a-bg-primary)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-accent,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.go-pro,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-accent,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.go-pro{background-color:var(--e-a-btn-bg-accent)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-accent:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-accent:hover,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.go-pro:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.go-pro:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-accent:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-accent:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.go-pro:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.go-pro:hover{background-color:var(--e-a-btn-bg-accent-hover)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-accent:active,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.go-pro:active,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-accent:active,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.go-pro:active{background-color:var(--e-a-btn-bg-accent-active)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-info,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-info,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-info,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-info{background-color:var(--e-a-btn-bg-info)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-info:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-info:hover,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-info:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-info:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-info:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-info:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-info:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-info:hover{background-color:var(--e-a-btn-bg-info-hover)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-warning,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-warning,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-warning,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-warning{background-color:var(--e-a-btn-bg-warning)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-warning:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-warning:hover,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-warning:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-warning:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-warning:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-warning:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-warning:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-warning:hover{background-color:var(--e-a-btn-bg-warning-hover)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-danger,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-danger,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-danger,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-danger{background-color:var(--e-a-btn-bg-danger)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-danger:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-danger:hover,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-danger:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-danger:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-danger:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-danger:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-danger:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-danger:hover{background-color:var(--e-a-btn-bg-danger-hover)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button i,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button i{margin-inline-end:5px}.dialog-type-alert .dialog-buttons-wrapper .dialog-button:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button:hover,.dialog-type-alert .dialog-buttons-wrapper .dialog-button:visited,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:visited{color:initial}@keyframes elementor-rotation{0%{transform:rotate(0deg)}to{transform:rotate(359deg)}}#elementor-deactivate-feedback-dialog-wrapper{display:none}#elementor-deactivate-feedback-modal{color:var(--e-a-color-txt)}#elementor-deactivate-feedback-modal .dialog-widget-content{width:550px}#elementor-deactivate-feedback-modal .dialog-header{padding:18px 15px;box-shadow:0 0 8px rgba(0,0,0,.1);text-align:start}#elementor-deactivate-feedback-modal .dialog-message{padding:30px;padding-block-end:0;text-align:start}#elementor-deactivate-feedback-modal .elementor-deactivate-feedback-dialog-input{margin-block:0;margin-inline:0 15px;box-shadow:none}#elementor-deactivate-feedback-modal .elementor-deactivate-feedback-dialog-input:not(:checked)~.elementor-feedback-text{display:none}#elementor-deactivate-feedback-modal .elementor-deactivate-feedback-dialog-label{display:block;font-size:13px}#elementor-deactivate-feedback-modal .elementor-feedback-text{background-color:transparent;color:var(--e-a-color-txt);margin-block:10px 0;margin-inline:30px 0;padding:5px;box-shadow:none;width:92%}#elementor-deactivate-feedback-modal .dialog-buttons-wrapper{display:flex;justify-content:space-between;padding:20px 30px 30px}#elementor-deactivate-feedback-modal .dialog-submit.elementor-loading:before{display:inline-block;content:"\f463";font:18px dashicons;animation:elementor-rotation 2s linear infinite}#elementor-deactivate-feedback-modal[data-feedback-selected=elementor_pro] .elementor-feedback-text{color:#f59e0b;padding:0}#elementor-deactivate-feedback-modal[data-feedback-selected=elementor_pro] .dialog-submit{display:none}#elementor-deactivate-feedback-dialog-header i{font-size:19px}#elementor-deactivate-feedback-dialog-header-title{font-size:15px;text-transform:uppercase;font-weight:700;padding-inline-start:5px}#elementor-deactivate-feedback-dialog-form-caption{font-weight:700;font-size:15px;line-height:1.4}#elementor-deactivate-feedback-dialog-form-body{padding-block-start:30px;padding-block-end:15px}.elementor-deactivate-feedback-dialog-input-wrapper{display:flex;align-items:center;line-height:2;overflow:hidden}#elementor-hidden-area{display:none}#elementor-import-template-trigger{cursor:pointer}#elementor-import-template-area{display:none;margin:50px 0 30px;text-align:center}#elementor-import-template-form{display:inline-block;margin-block-start:30px;padding:30px 50px;background-color:#fff;border:1px solid #e5e5e5}#elementor-import-template-title{font-size:18px;color:#555d66}.form-table:not(.elementor-maintenance-mode-is-enabled) .elementor-default-hide{display:none}.elementor-maintenance-mode-error{color:red;line-height:1.6;display:none}#tab-fontawesome4_migration.elementor-active~p.submit,#tab-import-export-kit.elementor-active~p.submit,#tab-replace_url.elementor-active~p.submit{display:none}#elementor_replace_url>div{max-width:800px}#elementor_replace_url>div input{margin-block-end:6px}#elementor_rollback>div,#elementor_rollback_pro>div{display:flex}#elementor_rollback>div input,#elementor_rollback>div select,#elementor_rollback_pro>div input,#elementor_rollback_pro>div select{margin-inline-end:6px}.tab-import-export-kit__wrapper{margin:40px 0;max-width:700px}.tab-import-export-kit__container{background-color:#fff;font-size:16px;max-width:700px;padding:30px}.tab-import-export-kit__container:not(:first-child){margin-block-start:5px}.tab-import-export-kit__container p{font-size:16px;margin:20px 0 25px}.tab-import-export-kit__info{font-size:14px}.tab-import-export-kit__container a:not(.elementor-button),.tab-import-export-kit__info a{color:var(--e-a-color-info);text-decoration:underline}.tab-import-export-kit__box{display:flex;justify-content:space-between;align-items:flex-start}.tab-import-export-kit__box h2{font-size:28px;font-weight:400;line-height:1;margin:0}.tab-import-export-kit__box .elementor-button.elementor-button-success{font-weight:700;padding:8px 16px;text-transform:none}.tab-import-export-kit__revert .tab-import-export-kit__kit-item{background-color:hsla(0,0%,100%,.5);box-shadow:0 4px 10px rgba(0,0,0,.05);border-radius:.1875rem;margin-block-end:15px;display:inline-block}.tab-import-export-kit__revert .tab-import-export-kit__kit-item header{border-block-end:1px solid #f1f2f3;padding:.625rem}.tab-import-export-kit__revert .tab-import-export-kit__kit-item h3{font-size:.875rem;margin:0}.tab-import-export-kit__revert .tab-import-export-kit__kit-item img{width:330px;height:315px;padding:.625rem}.tab-import-export-kit__revert .button,.tab-import-export-kit__revert .button:hover{color:#a94442;border-color:#a94442;display:inline-block}#dashboard-widgets .e-dashboard-widget h3.e-heading{font-weight:600;margin-block-end:13px}#dashboard-widgets .e-dashboard-widget .e-divider_bottom{border-block-end:1px solid #eee;margin:0 -12px;padding:6px 12px}#dashboard-widgets .e-dashboard-widget .e-divider_top{border-block-start:1px solid #eee;margin:0 -12px;padding:12px 12px 0}#dashboard-widgets .e-dashboard-widget .e-news-feed-wrap .e-divider_top,#dashboard-widgets .e-dashboard-widget .e-quick-actions-wrap .e-divider_top{padding-block-start:18px;margin-block-start:18px}.e-dashboard-widget .dashicons{color:#606a73}.e-dashboard-widget ul.e-action-list li{margin-block-start:14px}.e-dashboard-widget ul.e-action-list li a{margin-inline-start:5px}.e-dashboard-overview .dashicons{vertical-align:middle;font-size:17px}.e-dashboard-overview .e-overview__header{display:table;width:100%;box-shadow:0 5px 8px rgba(0,0,0,.05);margin:0 -12px 8px;padding:0 12px 12px}.e-dashboard-overview .e-overview__create,.e-dashboard-overview .e-overview__logo,.e-dashboard-overview .e-overview__versions{display:table-cell;vertical-align:middle}.e-dashboard-overview .e-overview__logo{width:30px}.e-dashboard-overview .e-overview__versions{padding:0 10px;font-size:.9em;line-height:1.5}.e-dashboard-overview .e-overview__version{display:block}.e-dashboard-overview .e-overview__create{text-align:end}.e-dashboard-overview .e-overview__feed{font-size:14px;font-weight:500}.e-dashboard-overview .e-overview__post{margin-block-start:10px}.e-dashboard-overview .e-overview__post-link{display:inline-block}.e-dashboard-overview .e-overview__badge{background:#0a875a;color:#fff;font-size:.75em;padding:3px 6px;border-radius:3px;text-transform:uppercase}.e-dashboard-overview .e-overview__post-description{margin:0 0 1.5em}.e-dashboard-overview .e-overview__recently-edited li{color:#72777c}.e-dashboard-overview .e-overview__footer.e-divider_top{padding-block-start:12px;padding-block-end:0}.e-dashboard-overview .e-overview__footer ul{display:flex;list-style:none;margin:0;padding:0}.e-dashboard-overview .e-overview__footer ul li{padding:0 10px;margin:0;border-inline-start:1px solid #ddd}.e-dashboard-overview .e-overview__footer ul li:first-child{padding-inline-start:0;border:none}.e-dashboard-overview .e-overview__ai a,.e-dashboard-overview .e-overview__go-pro a{color:#93003f;font-weight:500}.post-type-elementor_library #elementor-template-library-tabs-wrapper{padding-block-start:2em;margin-block-end:2em}.post-type-elementor_library th#taxonomy-elementor_library_category{width:110px}#elementor-new-template-modal .dialog-message{max-height:70vh}#elementor-new-template-modal .e-hidden{display:none!important}#elementor-new-template-dialog-content{display:flex;align-items:center;height:100%;text-align:start}@media (max-width:1439px){#elementor-new-template-dialog-content{padding:0 50px}}@media (min-width:1440px){#elementor-new-template-dialog-content{padding:0 120px}}#elementor-new-template__description{width:35%;max-width:300px;padding-inline-end:100px}#elementor-new-template__description__title{font-size:30px}#elementor-new-template__description__title span{font-weight:700}#elementor-new-template__description__content{font-size:16px;padding:30px 0}#elementor-new-template__take_a_tour{display:flex;align-items:center;font-size:15px}#elementor-new-template__take_a_tour i{color:var(--e-a-color-accent);font-size:30px}#elementor-new-template__take_a_tour a{padding-inline-start:10px;font-weight:500}#elementor-new-template__form{flex-grow:1;max-width:440px;padding:55px;background-color:var(--e-a-color-white);border-radius:var(--e-a-border-radius);border:var(--e-a-border)}#elementor-new-template__form__title{font-size:23px}#elementor-new-template__form__template-type.elementor-form-field__select{max-width:none}#elementor-new-template__form__template-type-badge{position:absolute;display:flex;align-items:center;justify-content:center;gap:2px;border-radius:2px;background-color:#f1f2f3;padding:4px;font-size:8px;font-weight:500;line-height:1;text-transform:uppercase;inset-block-start:50%;inset-inline-end:28px;transform:translateY(-50%)}#elementor-new-template__form .elementor-form-field__label{display:block;margin:25px 0 7px;font-size:14px;line-height:1}#elementor-new-template__form .elementor-form-field input,#elementor-new-template__form .elementor-form-field select{width:100%;height:50px;padding:10px;font-size:14px;box-shadow:none;border-radius:var(--e-a-border-radius);background:none;border:var(--e-a-border-bold);outline:none}#elementor-new-template__form .elementor-form-field input:focus,#elementor-new-template__form .elementor-form-field select:focus{border-color:var(--e-a-border-color-focus)}#elementor-new-template__form .elementor-form-field__select{-webkit-appearance:none;-moz-appearance:none;appearance:none;cursor:pointer}#elementor-new-template__form .elementor-form-field__select__wrapper{position:relative}#elementor-new-template__form .elementor-form-field__select__wrapper:after{font-family:eicons;content:"\e8ad";position:absolute;inset-block-start:50%;inset-inline-end:10px;transform:translateY(-50%)}#elementor-new-template__form__lock_button,#elementor-new-template__form__submit{display:block;width:100%;height:50px;margin-block-start:24px;box-sizing:border-box;text-align:center}@media (max-width:1024px){#elementor-new-template__description{max-width:250px;padding-inline-end:30px}}@media (max-width:767px){#elementor-new-template__description{display:none}}#elementor-role-manager{max-width:500px;margin-block-start:50px}#elementor-role-manager h3{color:#3f444b;font-weight:400;font-size:22px}#elementor-role-manager .elementor-settings-form-page{padding:0}#elementor-role-manager .elementor-role-row{background:#fff;color:#3f444b;margin-block-end:2px}#elementor-role-manager .elementor-role-row .elementor-role-label{display:flex;padding:15px 20px;font-weight:500;cursor:pointer}#elementor-role-manager .elementor-role-row .elementor-role-label span.elementor-role-name{padding-inline-end:20px}#elementor-role-manager .elementor-role-row .elementor-role-label span.elementor-role-toggle{text-align:end;flex-grow:1}#elementor-role-manager .elementor-role-row .elementor-role-label span.elementor-role-excluded-indicator{color:#9da5ae}#elementor-role-manager .elementor-role-row .elementor-role-controls{background-color:#f9fafa;padding:20px 20px 5px}#elementor-role-manager .elementor-role-row .elementor-role-controls>div{margin-block-end:15px}#elementor-role-manager .elementor-role-row .elementor-role-controls .elementor-role-go-pro{display:flex;align-items:center}#elementor-role-manager .elementor-role-row .elementor-role-controls .elementor-role-go-pro .elementor-role-go-pro__desc{font-weight:500;font-style:italic;flex-grow:1}#elementor-role-manager .elementor-role-row .elementor-role-controls .elementor-role-go-pro .elementor-role-go-pro__link{display:flex}#elementor-role-manager .elementor-role-row .elementor-role-controls-advanced>div+div{margin-block-start:15px}#elementor-role-manager .elementor-role-control-warning{color:var(--e-a-color-danger)}#elementor-beta-tester-modal{color:var(--e-a-color-txt)}#elementor-beta-tester-modal .elementor-templates-modal__header__items-area{color:var(--e-a-color-txt);cursor:pointer}#elementor-beta-tester-modal .elementor-templates-modal__header__items-area:hover .elementor-beta-tester-do-not-show-again,#elementor-beta-tester-modal .elementor-templates-modal__header__items-area:hover .elementor-templates-modal__header__item>i{color:var(--e-a-color-txt-hover)}#elementor-beta-tester-modal .elementor-templates-modal__header__items-area .elementor-templates-modal__header__close{border:none}#elementor-beta-tester-modal .elementor-templates-modal__header__items-area .elementor-beta-tester-do-not-show-again{text-transform:uppercase;font-weight:700;font-size:12px;transition:var(--e-a-transition-hover)}#elementor-beta-tester-modal .dialog-lightbox-widget-content{max-width:500px;height:auto}#elementor-beta-tester-modal .dialog-lightbox-message{padding:40px;height:300px;background-color:var(--e-a-bg-default)}#elementor-beta-tester-form__caption{font-weight:700;font-size:20px}#elementor-beta-tester-form__description{font-size:15px;margin-block-start:10px}#elementor-beta-tester-form__input-wrapper{display:flex;margin-block-start:30px}#elementor-beta-tester-form__input-wrapper .elementor-button{border-start-start-radius:0;border-start-end-radius:3px;border-end-start-radius:0;border-end-end-radius:3px}#elementor-beta-tester-form__email{flex-grow:1;border:var(--e-a-border);border-inline-end:0;border-start-start-radius:3px;border-start-end-radius:0;border-end-start-radius:3px;border-end-end-radius:0;margin:0;padding:10px;height:50px}#elementor-beta-tester-form__terms{margin-block-start:40px;font-size:11px;color:var(--e-a-color-txt-muted)}.e-experiment__title{display:flex;align-items:flex-start;flex-direction:column}.e-experiment__title__indicator{position:absolute;height:10px;width:10px;border-radius:50%;border:2px solid #fff;box-shadow:0 2px 4px rgba(0,0,0,.1);flex-shrink:0;margin-block-start:2px}.e-experiment__title__indicator--active{background:#39b54a}.e-experiment__title__label{margin-inline-start:24px}.e-experiment__title__tag{background:#0085ba;color:#fff;font-size:.8em;padding:3px 6px;line-height:1;border-radius:3px;font-weight:600;margin-block-start:5px;margin-inline-start:24px}.e-experiment__title__tag__secondary{background:rgba(0,0,0,.1);color:inherit}.e-experiment__table-title{margin:30px 0}.e-experiment__dependency,.e-experiment__status{margin-block-start:4px;font-size:.9em;line-height:18px;font-weight:700;font-style:italic}.e-experiment__button.button{margin-block:18px 22px;margin-inline:0 14px}.e-experiment__dependency{color:#21759b}.e-experiment__dependency__title{font-weight:inherit}#tab-experiments .form-table tr{border-block-end:1px solid #dcdcde}#tab-experiments .form-table tr:last-child{border-block-end:none}#tab-experiments .form-table tr .description{font-size:.9em;margin:10px 0;max-width:820px}.e-landing-pages-empty .elementor-blank_state{padding:5em 0 2em}.e-landing-pages-empty .e-trashed-items{text-align:center}.e-feature-promotion{--e-a-top-bar-height:50px;--e-a-content-area-spacing:110px;--e-black:#000;width:1220px;height:calc(100vh - var(--e-a-top-bar-height) - var(--e-a-content-area-spacing));display:grid;grid-template-columns:repeat(2,auto);grid-template-rows:auto;justify-content:space-between;align-items:center;align-content:center;margin:auto;transform:translate(-10px,40px);text-align:center;font-family:var(--e-a-font-family)}.e-feature-promotion_data{grid-column:1/2;grid-row:1/2;display:flex;flex-direction:column;justify-content:center;align-items:self-start;margin-inline-start:15px;padding-inline-end:40px;max-width:608px}.e-feature-promotion_data h3{margin-block-start:0;margin-inline-end:0;margin-block-end:33px;margin-inline-start:0;text-align:start;font-size:1.85rem;font-weight:300;color:var(--e-black);line-height:1.2}.e-feature-promotion_data ul{margin-block-start:0;margin-block-end:1.6rem;text-align:start}.e-feature-promotion_data ul>li{margin-block-start:0;margin-inline-end:9px;margin-block-end:8px;margin-inline-start:8px;display:flex;font-size:1rem;line-height:21px;color:var(--e-black)}.e-feature-promotion_data ul>li:before{content:url("data:image/svg+xml;charset=utf-8,%3Csvg width='25' height='24' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M21.52 6.47a.75.75 0 010 1.06l-10 10a.75.75 0 01-1.06 0l-5-5a.75.75 0 111.06-1.06l4.47 4.47 9.47-9.47a.75.75 0 011.06 0z' fill='%230C0D0E'/%3E%3C/svg%3E");font-size:1.4rem;margin-block-start:-3px;margin-inline-end:9px;margin-block-end:0;margin-inline-start:-9px}.e-feature-promotion_data>.go-pro{display:flex;align-items:center;padding:9px 15px;font-size:.9rem}.e-feature-promotion_data>.side-note{justify-self:baseline;margin-block-start:2rem;text-align:start}.e-feature-promotion_iframe{grid-column:2/3;grid-row:1/2;aspect-ratio:16/9;width:608px;border:none}body.rtl .e-feature-promotion{transform:translateX(10px)}@media (max-width:1410px){.e-feature-promotion{display:flex;flex-direction:column;justify-content:flex-start;width:90%}.e-feature-promotion_data{margin-block-end:2rem;margin-inline-start:unset;padding-inline-end:unset}.e-feature-promotion_iframe{max-width:90%;aspect-ratio:16/9}}.elementor-control-notice{display:flex;justify-content:flex-start;align-items:flex-start;gap:8px;padding:16px;border-radius:3px;border:1px solid var(--notice-control-color,var(--e-a-color-txt));color:var(--e-a-color-txt);font-size:12px;font-weight:400;line-height:1.5;text-align:start;margin-block-start:10px}.elementor-control-notice-type-info{--notice-control-color:var(--e-a-color-info)}.elementor-control-notice-type-success{--notice-control-color:var(--e-a-color-success)}.elementor-control-notice-type-warning{--notice-control-color:var(--e-a-color-warning)}.elementor-control-notice-type-danger{--notice-control-color:var(--e-a-color-danger)}.elementor-control-notice-icon{flex-basis:18px;color:var(--notice-control-color)}.elementor-control-notice-main{display:flex;flex-direction:column;justify-content:flex-start;align-items:flex-start;gap:6px;flex:1}.elementor-control-notice-main-heading{font-weight:700;font-style:italic}.elementor-control-notice-main-content{font-style:italic;line-height:1.5}.elementor-control-notice-main-actions{display:flex;gap:10px;padding-block-start:8px}.elementor-control-notice-main a{color:inherit;font-weight:700;cursor:pointer}.elementor-control-notice-main a:focus,.elementor-control-notice-main a:hover{color:inherit}.elementor-control-notice-dismiss{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:transparent;border:0;padding:0;margin:0;cursor:pointer} \ No newline at end of file diff --git a/wp-content/plugins/elementor/assets/css/admin-top-bar-rtl.css b/wp-content/plugins/elementor/assets/css/admin-top-bar-rtl.css new file mode 100644 index 0000000..4362522 --- /dev/null +++ b/wp-content/plugins/elementor/assets/css/admin-top-bar-rtl.css @@ -0,0 +1,165 @@ +/*! elementor - v3.20.0 - 26-03-2024 */ +#e-dashboard-widget-admin-top-bar { + position: absolute; + opacity: 0; + pointer-events: none; +} + +#e-admin-top-bar-root { + left: 0; + font-family: var(--e-a-font-family); + background: var(--e-a-bg-default); + box-shadow: 0 4px 6px rgba(0, 0, 0, 0.03); + display: none; + position: absolute; + top: 0; + width: calc(100% - 160px); + z-index: 1; +} +body.folded #e-admin-top-bar-root { + width: calc(100% - 36px); +} +#e-admin-top-bar-root .e-admin-top-bar { + display: flex; + height: 50px; + justify-content: space-between; + padding: 0 16px; +} +#e-admin-top-bar-root .page-title-action { + font-size: 12px; + font-weight: 500; + line-height: 1.2; + text-transform: uppercase; + text-decoration: none; + padding: 8px 16px; + outline: none; + border: none; + border-radius: var(--e-a-border-radius); + background-color: var(--e-a-btn-bg); + color: var(--e-a-btn-color-invert); + transition: var(--e-a-transition-hover); +} +#e-admin-top-bar-root .page-title-action:hover { + background-color: var(--e-a-btn-bg-hover); + color: var(--e-a-btn-color-invert); +} +#e-admin-top-bar-root .e-admin-top-bar__heading { + display: inline-flex; + align-items: center; + justify-content: center; + margin-inline-end: 40px; +} +#e-admin-top-bar-root .e-admin-top-bar__main-area { + display: inline-flex; + align-items: center; + justify-content: center; +} +#e-admin-top-bar-root .e-admin-top-bar__main-area button { + margin: 0 4px; +} +#e-admin-top-bar-root .e-admin-top-bar__secondary-area { + display: inline-flex; + align-items: center; + justify-content: center; +} +#e-admin-top-bar-root .e-admin-top-bar__heading-title { + color: var(--e-a-color-txt); + font-size: 15px; + font-weight: 700; + padding: 0 8px; + line-height: normal; +} +#e-admin-top-bar-root .e-admin-top-bar__main-area-buttons { + display: inline-flex; + gap: 5px; +} +#e-admin-top-bar-root.e-admin-top-bar--active { + display: block; +} +#e-admin-top-bar-root.e-admin-top-bar--active ~ #wpbody #wpbody-content { + margin-block-start: 50px; +} +#e-admin-top-bar-root.e-admin-top-bar--active ~ #wpbody .wrap { + clear: both; + padding-block-start: 10px; +} +#e-admin-top-bar-root.e-admin-top-bar--active ~ #wpbody .wrap h1 { + display: none; +} +#e-admin-top-bar-root:not(.e-admin-top-bar--active) ~ #wpbody .wrap h1, #e-admin-top-bar-root:not(.e-admin-top-bar--active) ~ #wpbody .wrap .page-title-action { + display: inline-block; +} +#e-admin-top-bar-root .e-admin-top-bar__bar-button { + align-items: center; + cursor: pointer; + display: inline-flex; + justify-content: center; + margin: 0 10px; + text-decoration: none; + color: var(--e-a-color-txt); +} +#e-admin-top-bar-root .e-admin-top-bar__bar-button.accent { + color: var(--e-a-color-accent); +} +#e-admin-top-bar-root .e-admin-top-bar__bar-button.accent:hover .e-admin-top-bar__bar-button-title, +#e-admin-top-bar-root .e-admin-top-bar__bar-button.accent:hover .e-admin-top-bar__bar-button-icon { + color: var(--e-a-color-accent); +} +#e-admin-top-bar-root .e-admin-top-bar__bar-button .crown-icon { + font-size: 14px; +} +#e-admin-top-bar-root .e-admin-top-bar__bar-button .e-admin-top-bar__bar-button-icon { + margin: 0 4px; +} +#e-admin-top-bar-root .e-admin-top-bar__bar-button:hover .e-admin-top-bar__bar-button-title, +#e-admin-top-bar-root .e-admin-top-bar__bar-button:hover .e-admin-top-bar__bar-button-icon { + color: var(--e-a-color-txt-hover); +} +#e-admin-top-bar-root .e-admin-top-bar__bar-button-title { + font-size: 13px; + font-weight: 500; + margin: 0 4px; + line-height: normal; +} +#e-admin-top-bar-root ~ #wpbody .wrap h1, #e-admin-top-bar-root ~ #wpbody .wrap .page-title-action { + display: none; +} + +@media screen and (max-width: 960px) { + #e-admin-top-bar-root { + width: calc(100% - 36px); + } +} +@media screen and (max-width: 782px) { + #e-admin-top-bar-root { + width: 100%; + } +} +@media screen and (max-width: 600px) { + #e-admin-top-bar-root { + top: 46px; + } +} +@media (max-width: 768px) { + #e-admin-top-bar-root { + display: inline-flex; + align-items: center; + justify-content: center; + } + #e-admin-top-bar-root .e-admin-top-bar__main-area-buttons { + position: absolute; + top: calc(100% + 10px); + } + #e-admin-top-bar-root .e-admin-top-bar__secondary-area .e-admin-top-bar__secondary-area-buttons { + display: none; + } + #e-admin-top-bar-root .e-admin-top-bar__secondary-area > .e-admin-top-bar__bar-button .e-admin-top-bar__bar-button-title { + display: none; + } +} +@media (min-width: 768px) { + #e-admin-top-bar-root .e-admin-top-bar__secondary-area .e-admin-top-bar__secondary-area-buttons { + display: flex; + } +} +/*# sourceMappingURL=admin-top-bar-rtl.css.map */ \ No newline at end of file diff --git a/wp-content/plugins/elementor/assets/css/admin-top-bar-rtl.min.css b/wp-content/plugins/elementor/assets/css/admin-top-bar-rtl.min.css new file mode 100644 index 0000000..d5c291c --- /dev/null +++ b/wp-content/plugins/elementor/assets/css/admin-top-bar-rtl.min.css @@ -0,0 +1,2 @@ +/*! elementor - v3.20.0 - 26-03-2024 */ +#e-dashboard-widget-admin-top-bar{position:absolute;opacity:0;pointer-events:none}#e-admin-top-bar-root{left:0;font-family:var(--e-a-font-family);background:var(--e-a-bg-default);box-shadow:0 4px 6px rgba(0,0,0,.03);display:none;position:absolute;top:0;width:calc(100% - 160px);z-index:1}body.folded #e-admin-top-bar-root{width:calc(100% - 36px)}#e-admin-top-bar-root .e-admin-top-bar{display:flex;height:50px;justify-content:space-between;padding:0 16px}#e-admin-top-bar-root .page-title-action{font-size:12px;font-weight:500;line-height:1.2;text-transform:uppercase;text-decoration:none;padding:8px 16px;outline:none;border:none;border-radius:var(--e-a-border-radius);background-color:var(--e-a-btn-bg);color:var(--e-a-btn-color-invert);transition:var(--e-a-transition-hover)}#e-admin-top-bar-root .page-title-action:hover{background-color:var(--e-a-btn-bg-hover);color:var(--e-a-btn-color-invert)}#e-admin-top-bar-root .e-admin-top-bar__heading{margin-inline-end:40px}#e-admin-top-bar-root .e-admin-top-bar__heading,#e-admin-top-bar-root .e-admin-top-bar__main-area{display:inline-flex;align-items:center;justify-content:center}#e-admin-top-bar-root .e-admin-top-bar__main-area button{margin:0 4px}#e-admin-top-bar-root .e-admin-top-bar__secondary-area{display:inline-flex;align-items:center;justify-content:center}#e-admin-top-bar-root .e-admin-top-bar__heading-title{color:var(--e-a-color-txt);font-size:15px;font-weight:700;padding:0 8px;line-height:normal}#e-admin-top-bar-root .e-admin-top-bar__main-area-buttons{display:inline-flex;gap:5px}#e-admin-top-bar-root.e-admin-top-bar--active{display:block}#e-admin-top-bar-root.e-admin-top-bar--active~#wpbody #wpbody-content{margin-block-start:50px}#e-admin-top-bar-root.e-admin-top-bar--active~#wpbody .wrap{clear:both;padding-block-start:10px}#e-admin-top-bar-root.e-admin-top-bar--active~#wpbody .wrap h1{display:none}#e-admin-top-bar-root:not(.e-admin-top-bar--active)~#wpbody .wrap .page-title-action,#e-admin-top-bar-root:not(.e-admin-top-bar--active)~#wpbody .wrap h1{display:inline-block}#e-admin-top-bar-root .e-admin-top-bar__bar-button{align-items:center;cursor:pointer;display:inline-flex;justify-content:center;margin:0 10px;text-decoration:none;color:var(--e-a-color-txt)}#e-admin-top-bar-root .e-admin-top-bar__bar-button.accent,#e-admin-top-bar-root .e-admin-top-bar__bar-button.accent:hover .e-admin-top-bar__bar-button-icon,#e-admin-top-bar-root .e-admin-top-bar__bar-button.accent:hover .e-admin-top-bar__bar-button-title{color:var(--e-a-color-accent)}#e-admin-top-bar-root .e-admin-top-bar__bar-button .crown-icon{font-size:14px}#e-admin-top-bar-root .e-admin-top-bar__bar-button .e-admin-top-bar__bar-button-icon{margin:0 4px}#e-admin-top-bar-root .e-admin-top-bar__bar-button:hover .e-admin-top-bar__bar-button-icon,#e-admin-top-bar-root .e-admin-top-bar__bar-button:hover .e-admin-top-bar__bar-button-title{color:var(--e-a-color-txt-hover)}#e-admin-top-bar-root .e-admin-top-bar__bar-button-title{font-size:13px;font-weight:500;margin:0 4px;line-height:normal}#e-admin-top-bar-root~#wpbody .wrap .page-title-action,#e-admin-top-bar-root~#wpbody .wrap h1{display:none}@media screen and (max-width:960px){#e-admin-top-bar-root{width:calc(100% - 36px)}}@media screen and (max-width:782px){#e-admin-top-bar-root{width:100%}}@media screen and (max-width:600px){#e-admin-top-bar-root{top:46px}}@media (max-width:768px){#e-admin-top-bar-root{display:inline-flex;align-items:center;justify-content:center}#e-admin-top-bar-root .e-admin-top-bar__main-area-buttons{position:absolute;top:calc(100% + 10px)}#e-admin-top-bar-root .e-admin-top-bar__secondary-area .e-admin-top-bar__secondary-area-buttons,#e-admin-top-bar-root .e-admin-top-bar__secondary-area>.e-admin-top-bar__bar-button .e-admin-top-bar__bar-button-title{display:none}}@media (min-width:768px){#e-admin-top-bar-root .e-admin-top-bar__secondary-area .e-admin-top-bar__secondary-area-buttons{display:flex}} \ No newline at end of file diff --git a/wp-content/plugins/elementor/assets/css/admin-top-bar.css b/wp-content/plugins/elementor/assets/css/admin-top-bar.css new file mode 100644 index 0000000..5147f95 --- /dev/null +++ b/wp-content/plugins/elementor/assets/css/admin-top-bar.css @@ -0,0 +1,165 @@ +/*! elementor - v3.20.0 - 26-03-2024 */ +#e-dashboard-widget-admin-top-bar { + position: absolute; + opacity: 0; + pointer-events: none; +} + +#e-admin-top-bar-root { + right: 0; + font-family: var(--e-a-font-family); + background: var(--e-a-bg-default); + box-shadow: 0 4px 6px rgba(0, 0, 0, 0.03); + display: none; + position: absolute; + top: 0; + width: calc(100% - 160px); + z-index: 1; +} +body.folded #e-admin-top-bar-root { + width: calc(100% - 36px); +} +#e-admin-top-bar-root .e-admin-top-bar { + display: flex; + height: 50px; + justify-content: space-between; + padding: 0 16px; +} +#e-admin-top-bar-root .page-title-action { + font-size: 12px; + font-weight: 500; + line-height: 1.2; + text-transform: uppercase; + text-decoration: none; + padding: 8px 16px; + outline: none; + border: none; + border-radius: var(--e-a-border-radius); + background-color: var(--e-a-btn-bg); + color: var(--e-a-btn-color-invert); + transition: var(--e-a-transition-hover); +} +#e-admin-top-bar-root .page-title-action:hover { + background-color: var(--e-a-btn-bg-hover); + color: var(--e-a-btn-color-invert); +} +#e-admin-top-bar-root .e-admin-top-bar__heading { + display: inline-flex; + align-items: center; + justify-content: center; + margin-inline-end: 40px; +} +#e-admin-top-bar-root .e-admin-top-bar__main-area { + display: inline-flex; + align-items: center; + justify-content: center; +} +#e-admin-top-bar-root .e-admin-top-bar__main-area button { + margin: 0 4px; +} +#e-admin-top-bar-root .e-admin-top-bar__secondary-area { + display: inline-flex; + align-items: center; + justify-content: center; +} +#e-admin-top-bar-root .e-admin-top-bar__heading-title { + color: var(--e-a-color-txt); + font-size: 15px; + font-weight: 700; + padding: 0 8px; + line-height: normal; +} +#e-admin-top-bar-root .e-admin-top-bar__main-area-buttons { + display: inline-flex; + gap: 5px; +} +#e-admin-top-bar-root.e-admin-top-bar--active { + display: block; +} +#e-admin-top-bar-root.e-admin-top-bar--active ~ #wpbody #wpbody-content { + margin-block-start: 50px; +} +#e-admin-top-bar-root.e-admin-top-bar--active ~ #wpbody .wrap { + clear: both; + padding-block-start: 10px; +} +#e-admin-top-bar-root.e-admin-top-bar--active ~ #wpbody .wrap h1 { + display: none; +} +#e-admin-top-bar-root:not(.e-admin-top-bar--active) ~ #wpbody .wrap h1, #e-admin-top-bar-root:not(.e-admin-top-bar--active) ~ #wpbody .wrap .page-title-action { + display: inline-block; +} +#e-admin-top-bar-root .e-admin-top-bar__bar-button { + align-items: center; + cursor: pointer; + display: inline-flex; + justify-content: center; + margin: 0 10px; + text-decoration: none; + color: var(--e-a-color-txt); +} +#e-admin-top-bar-root .e-admin-top-bar__bar-button.accent { + color: var(--e-a-color-accent); +} +#e-admin-top-bar-root .e-admin-top-bar__bar-button.accent:hover .e-admin-top-bar__bar-button-title, +#e-admin-top-bar-root .e-admin-top-bar__bar-button.accent:hover .e-admin-top-bar__bar-button-icon { + color: var(--e-a-color-accent); +} +#e-admin-top-bar-root .e-admin-top-bar__bar-button .crown-icon { + font-size: 14px; +} +#e-admin-top-bar-root .e-admin-top-bar__bar-button .e-admin-top-bar__bar-button-icon { + margin: 0 4px; +} +#e-admin-top-bar-root .e-admin-top-bar__bar-button:hover .e-admin-top-bar__bar-button-title, +#e-admin-top-bar-root .e-admin-top-bar__bar-button:hover .e-admin-top-bar__bar-button-icon { + color: var(--e-a-color-txt-hover); +} +#e-admin-top-bar-root .e-admin-top-bar__bar-button-title { + font-size: 13px; + font-weight: 500; + margin: 0 4px; + line-height: normal; +} +#e-admin-top-bar-root ~ #wpbody .wrap h1, #e-admin-top-bar-root ~ #wpbody .wrap .page-title-action { + display: none; +} + +@media screen and (max-width: 960px) { + #e-admin-top-bar-root { + width: calc(100% - 36px); + } +} +@media screen and (max-width: 782px) { + #e-admin-top-bar-root { + width: 100%; + } +} +@media screen and (max-width: 600px) { + #e-admin-top-bar-root { + top: 46px; + } +} +@media (max-width: 768px) { + #e-admin-top-bar-root { + display: inline-flex; + align-items: center; + justify-content: center; + } + #e-admin-top-bar-root .e-admin-top-bar__main-area-buttons { + position: absolute; + top: calc(100% + 10px); + } + #e-admin-top-bar-root .e-admin-top-bar__secondary-area .e-admin-top-bar__secondary-area-buttons { + display: none; + } + #e-admin-top-bar-root .e-admin-top-bar__secondary-area > .e-admin-top-bar__bar-button .e-admin-top-bar__bar-button-title { + display: none; + } +} +@media (min-width: 768px) { + #e-admin-top-bar-root .e-admin-top-bar__secondary-area .e-admin-top-bar__secondary-area-buttons { + display: flex; + } +} +/*# sourceMappingURL=admin-top-bar.css.map */ \ No newline at end of file diff --git a/wp-content/plugins/elementor/assets/css/admin-top-bar.min.css b/wp-content/plugins/elementor/assets/css/admin-top-bar.min.css new file mode 100644 index 0000000..1b5b18a --- /dev/null +++ b/wp-content/plugins/elementor/assets/css/admin-top-bar.min.css @@ -0,0 +1,2 @@ +/*! elementor - v3.20.0 - 26-03-2024 */ +#e-dashboard-widget-admin-top-bar{position:absolute;opacity:0;pointer-events:none}#e-admin-top-bar-root{right:0;font-family:var(--e-a-font-family);background:var(--e-a-bg-default);box-shadow:0 4px 6px rgba(0,0,0,.03);display:none;position:absolute;top:0;width:calc(100% - 160px);z-index:1}body.folded #e-admin-top-bar-root{width:calc(100% - 36px)}#e-admin-top-bar-root .e-admin-top-bar{display:flex;height:50px;justify-content:space-between;padding:0 16px}#e-admin-top-bar-root .page-title-action{font-size:12px;font-weight:500;line-height:1.2;text-transform:uppercase;text-decoration:none;padding:8px 16px;outline:none;border:none;border-radius:var(--e-a-border-radius);background-color:var(--e-a-btn-bg);color:var(--e-a-btn-color-invert);transition:var(--e-a-transition-hover)}#e-admin-top-bar-root .page-title-action:hover{background-color:var(--e-a-btn-bg-hover);color:var(--e-a-btn-color-invert)}#e-admin-top-bar-root .e-admin-top-bar__heading{margin-inline-end:40px}#e-admin-top-bar-root .e-admin-top-bar__heading,#e-admin-top-bar-root .e-admin-top-bar__main-area{display:inline-flex;align-items:center;justify-content:center}#e-admin-top-bar-root .e-admin-top-bar__main-area button{margin:0 4px}#e-admin-top-bar-root .e-admin-top-bar__secondary-area{display:inline-flex;align-items:center;justify-content:center}#e-admin-top-bar-root .e-admin-top-bar__heading-title{color:var(--e-a-color-txt);font-size:15px;font-weight:700;padding:0 8px;line-height:normal}#e-admin-top-bar-root .e-admin-top-bar__main-area-buttons{display:inline-flex;gap:5px}#e-admin-top-bar-root.e-admin-top-bar--active{display:block}#e-admin-top-bar-root.e-admin-top-bar--active~#wpbody #wpbody-content{margin-block-start:50px}#e-admin-top-bar-root.e-admin-top-bar--active~#wpbody .wrap{clear:both;padding-block-start:10px}#e-admin-top-bar-root.e-admin-top-bar--active~#wpbody .wrap h1{display:none}#e-admin-top-bar-root:not(.e-admin-top-bar--active)~#wpbody .wrap .page-title-action,#e-admin-top-bar-root:not(.e-admin-top-bar--active)~#wpbody .wrap h1{display:inline-block}#e-admin-top-bar-root .e-admin-top-bar__bar-button{align-items:center;cursor:pointer;display:inline-flex;justify-content:center;margin:0 10px;text-decoration:none;color:var(--e-a-color-txt)}#e-admin-top-bar-root .e-admin-top-bar__bar-button.accent,#e-admin-top-bar-root .e-admin-top-bar__bar-button.accent:hover .e-admin-top-bar__bar-button-icon,#e-admin-top-bar-root .e-admin-top-bar__bar-button.accent:hover .e-admin-top-bar__bar-button-title{color:var(--e-a-color-accent)}#e-admin-top-bar-root .e-admin-top-bar__bar-button .crown-icon{font-size:14px}#e-admin-top-bar-root .e-admin-top-bar__bar-button .e-admin-top-bar__bar-button-icon{margin:0 4px}#e-admin-top-bar-root .e-admin-top-bar__bar-button:hover .e-admin-top-bar__bar-button-icon,#e-admin-top-bar-root .e-admin-top-bar__bar-button:hover .e-admin-top-bar__bar-button-title{color:var(--e-a-color-txt-hover)}#e-admin-top-bar-root .e-admin-top-bar__bar-button-title{font-size:13px;font-weight:500;margin:0 4px;line-height:normal}#e-admin-top-bar-root~#wpbody .wrap .page-title-action,#e-admin-top-bar-root~#wpbody .wrap h1{display:none}@media screen and (max-width:960px){#e-admin-top-bar-root{width:calc(100% - 36px)}}@media screen and (max-width:782px){#e-admin-top-bar-root{width:100%}}@media screen and (max-width:600px){#e-admin-top-bar-root{top:46px}}@media (max-width:768px){#e-admin-top-bar-root{display:inline-flex;align-items:center;justify-content:center}#e-admin-top-bar-root .e-admin-top-bar__main-area-buttons{position:absolute;top:calc(100% + 10px)}#e-admin-top-bar-root .e-admin-top-bar__secondary-area .e-admin-top-bar__secondary-area-buttons,#e-admin-top-bar-root .e-admin-top-bar__secondary-area>.e-admin-top-bar__bar-button .e-admin-top-bar__bar-button-title{display:none}}@media (min-width:768px){#e-admin-top-bar-root .e-admin-top-bar__secondary-area .e-admin-top-bar__secondary-area-buttons{display:flex}} \ No newline at end of file diff --git a/wp-content/plugins/elementor/assets/css/admin.css b/wp-content/plugins/elementor/assets/css/admin.css new file mode 100644 index 0000000..8ec2155 --- /dev/null +++ b/wp-content/plugins/elementor/assets/css/admin.css @@ -0,0 +1,2466 @@ +/*! elementor - v3.20.0 - 26-03-2024 */ +.elementor-button, +.e-btn, +#elementor-deactivate-feedback-modal .dialog-skip, +#elementor-deactivate-feedback-modal .dialog-submit { + font-size: 12px; + font-weight: 500; + line-height: 1.2; + padding: 8px 16px; + outline: none; + border: none; + border-radius: var(--e-a-border-radius); + background-color: var(--e-a-btn-bg); + color: var(--e-a-btn-color-invert); + transition: var(--e-a-transition-hover); +} +.elementor-button:hover, +.e-btn:hover, +#elementor-deactivate-feedback-modal .dialog-skip:hover, +#elementor-deactivate-feedback-modal .dialog-submit:hover { + border: none; +} +.elementor-button:hover, .elementor-button:focus, +.e-btn:hover, +#elementor-deactivate-feedback-modal .dialog-skip:hover, +#elementor-deactivate-feedback-modal .dialog-submit:hover, +.e-btn:focus, +#elementor-deactivate-feedback-modal .dialog-skip:focus, +#elementor-deactivate-feedback-modal .dialog-submit:focus { + background-color: var(--e-a-btn-bg-hover); + color: var(--e-a-btn-color-invert); +} +.elementor-button:active, +.e-btn:active, +#elementor-deactivate-feedback-modal .dialog-skip:active, +#elementor-deactivate-feedback-modal .dialog-submit:active { + background-color: var(--e-a-btn-bg-active); +} +.elementor-button:not([disabled]), +.e-btn:not([disabled]), +#elementor-deactivate-feedback-modal .dialog-skip:not([disabled]), +#elementor-deactivate-feedback-modal .dialog-submit:not([disabled]) { + cursor: pointer; +} +.elementor-button:disabled, +.e-btn:disabled, +#elementor-deactivate-feedback-modal .dialog-skip:disabled, +#elementor-deactivate-feedback-modal .dialog-submit:disabled { + background-color: var(--e-a-btn-bg-disabled); + color: var(--e-a-btn-color-disabled); +} +.elementor-button:not(.elementor-button-state) .elementor-state-icon, +.e-btn:not(.elementor-button-state) .elementor-state-icon, +#elementor-deactivate-feedback-modal .dialog-skip:not(.elementor-button-state) .elementor-state-icon, +#elementor-deactivate-feedback-modal .dialog-submit:not(.elementor-button-state) .elementor-state-icon { + display: none; +} +.elementor-button.e-btn-txt, .dialog-type-confirm .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-cancel, +.dialog-type-alert .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-cancel, +.e-btn.e-btn-txt, +#elementor-deactivate-feedback-modal .dialog-skip, +#elementor-deactivate-feedback-modal .e-btn-txt.dialog-submit, +.dialog-type-confirm .dialog-buttons-wrapper .e-btn.dialog-button.dialog-cancel, +.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-cancel.dialog-submit, +#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-submit, +.dialog-type-alert .dialog-buttons-wrapper .e-btn.dialog-button.dialog-cancel, +.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-cancel.dialog-submit, +#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-submit { + background: transparent; + color: var(--e-a-color-txt); +} +.elementor-button.e-btn-txt:hover, .dialog-type-confirm .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-cancel:hover, +.dialog-type-alert .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-cancel:hover, .elementor-button.e-btn-txt:focus, .dialog-type-confirm .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-cancel:focus, +.dialog-type-alert .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-cancel:focus, +.e-btn.e-btn-txt:hover, +#elementor-deactivate-feedback-modal .dialog-skip:hover, +#elementor-deactivate-feedback-modal .e-btn-txt.dialog-submit:hover, +.dialog-type-confirm .dialog-buttons-wrapper .e-btn.dialog-button.dialog-cancel:hover, +.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-cancel.dialog-submit:hover, +#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-submit:hover, +.dialog-type-alert .dialog-buttons-wrapper .e-btn.dialog-button.dialog-cancel:hover, +.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-cancel.dialog-submit:hover, +#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-submit:hover, +.e-btn.e-btn-txt:focus, +#elementor-deactivate-feedback-modal .dialog-skip:focus, +#elementor-deactivate-feedback-modal .e-btn-txt.dialog-submit:focus, +.dialog-type-confirm .dialog-buttons-wrapper .e-btn.dialog-button.dialog-cancel:focus, +.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-cancel.dialog-submit:focus, +#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-submit:focus, +.dialog-type-alert .dialog-buttons-wrapper .e-btn.dialog-button.dialog-cancel:focus, +.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-cancel.dialog-submit:focus, +#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-submit:focus { + background: var(--e-a-bg-hover); + color: var(--e-a-color-txt-hover); +} +.elementor-button.e-btn-txt:disabled, .dialog-type-confirm .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-cancel:disabled, +.dialog-type-alert .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-cancel:disabled, +.e-btn.e-btn-txt:disabled, +#elementor-deactivate-feedback-modal .dialog-skip:disabled, +#elementor-deactivate-feedback-modal .e-btn-txt.dialog-submit:disabled, +.dialog-type-confirm .dialog-buttons-wrapper .e-btn.dialog-button.dialog-cancel:disabled, +.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-cancel.dialog-submit:disabled, +#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-submit:disabled, +.dialog-type-alert .dialog-buttons-wrapper .e-btn.dialog-button.dialog-cancel:disabled, +.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-cancel.dialog-submit:disabled, +#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-submit:disabled { + background: transparent; + color: var(--e-a-color-txt-disabled); +} +.elementor-button.e-btn-txt-border, +.e-btn.e-btn-txt-border, +#elementor-deactivate-feedback-modal .e-btn-txt-border.dialog-skip, +#elementor-deactivate-feedback-modal .e-btn-txt-border.dialog-submit { + border: 1px solid var(--e-a-color-txt-muted); +} +.elementor-button.elementor-button-success, .elementor-button.e-success, +.e-btn.elementor-button-success, +#elementor-deactivate-feedback-modal .elementor-button-success.dialog-skip, +#elementor-deactivate-feedback-modal .elementor-button-success.dialog-submit, +.e-btn.e-success, +#elementor-deactivate-feedback-modal .e-success.dialog-skip, +#elementor-deactivate-feedback-modal .e-success.dialog-submit { + background-color: var(--e-a-btn-bg-success); +} +.elementor-button.elementor-button-success:hover, .elementor-button.elementor-button-success:focus, .elementor-button.e-success:hover, .elementor-button.e-success:focus, +.e-btn.elementor-button-success:hover, +#elementor-deactivate-feedback-modal .elementor-button-success.dialog-skip:hover, +#elementor-deactivate-feedback-modal .elementor-button-success.dialog-submit:hover, +.e-btn.elementor-button-success:focus, +#elementor-deactivate-feedback-modal .elementor-button-success.dialog-skip:focus, +#elementor-deactivate-feedback-modal .elementor-button-success.dialog-submit:focus, +.e-btn.e-success:hover, +#elementor-deactivate-feedback-modal .e-success.dialog-skip:hover, +#elementor-deactivate-feedback-modal .e-success.dialog-submit:hover, +.e-btn.e-success:focus, +#elementor-deactivate-feedback-modal .e-success.dialog-skip:focus, +#elementor-deactivate-feedback-modal .e-success.dialog-submit:focus { + background-color: var(--e-a-btn-bg-success-hover); +} +.elementor-button.e-primary, .dialog-type-confirm .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-take_over, +.dialog-type-alert .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-take_over, .dialog-type-confirm .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-ok, +.dialog-type-alert .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-ok, +.e-btn.e-primary, +#elementor-deactivate-feedback-modal .e-primary.dialog-skip, +#elementor-deactivate-feedback-modal .dialog-submit, +.dialog-type-confirm .dialog-buttons-wrapper .e-btn.dialog-button.dialog-take_over, +.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-take_over.dialog-skip, +#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-take_over.dialog-skip, +.dialog-type-alert .dialog-buttons-wrapper .e-btn.dialog-button.dialog-take_over, +.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-take_over.dialog-skip, +#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-take_over.dialog-skip, +.dialog-type-confirm .dialog-buttons-wrapper .e-btn.dialog-button.dialog-ok, +.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-ok.dialog-skip, +#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-skip, +.dialog-type-alert .dialog-buttons-wrapper .e-btn.dialog-button.dialog-ok, +.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-ok.dialog-skip, +#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-skip { + background-color: var(--e-a-btn-bg-primary); + color: var(--e-a-btn-color); +} +.elementor-button.e-primary:hover, .dialog-type-confirm .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-take_over:hover, +.dialog-type-alert .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-take_over:hover, .dialog-type-confirm .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-ok:hover, +.dialog-type-alert .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-ok:hover, .elementor-button.e-primary:focus, .dialog-type-confirm .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-take_over:focus, +.dialog-type-alert .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-take_over:focus, .dialog-type-confirm .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-ok:focus, +.dialog-type-alert .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-ok:focus, +.e-btn.e-primary:hover, +#elementor-deactivate-feedback-modal .e-primary.dialog-skip:hover, +#elementor-deactivate-feedback-modal .dialog-submit:hover, +.dialog-type-confirm .dialog-buttons-wrapper .e-btn.dialog-button.dialog-take_over:hover, +.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-take_over.dialog-skip:hover, +#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-take_over.dialog-skip:hover, +.dialog-type-alert .dialog-buttons-wrapper .e-btn.dialog-button.dialog-take_over:hover, +.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-take_over.dialog-skip:hover, +#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-take_over.dialog-skip:hover, +.dialog-type-confirm .dialog-buttons-wrapper .e-btn.dialog-button.dialog-ok:hover, +.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-ok.dialog-skip:hover, +#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-skip:hover, +.dialog-type-alert .dialog-buttons-wrapper .e-btn.dialog-button.dialog-ok:hover, +.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-ok.dialog-skip:hover, +#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-skip:hover, +.e-btn.e-primary:focus, +#elementor-deactivate-feedback-modal .e-primary.dialog-skip:focus, +#elementor-deactivate-feedback-modal .dialog-submit:focus, +.dialog-type-confirm .dialog-buttons-wrapper .e-btn.dialog-button.dialog-take_over:focus, +.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-take_over.dialog-skip:focus, +#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-take_over.dialog-skip:focus, +.dialog-type-alert .dialog-buttons-wrapper .e-btn.dialog-button.dialog-take_over:focus, +.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-take_over.dialog-skip:focus, +#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-take_over.dialog-skip:focus, +.dialog-type-confirm .dialog-buttons-wrapper .e-btn.dialog-button.dialog-ok:focus, +.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-ok.dialog-skip:focus, +#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-skip:focus, +.dialog-type-alert .dialog-buttons-wrapper .e-btn.dialog-button.dialog-ok:focus, +.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-ok.dialog-skip:focus, +#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-skip:focus { + background-color: var(--e-a-btn-bg-primary-hover); + color: var(--e-a-btn-color); +} +.elementor-button.e-primary.e-btn-txt, .dialog-type-confirm .dialog-buttons-wrapper .elementor-button.e-btn-txt.dialog-button.dialog-take_over, +.dialog-type-alert .dialog-buttons-wrapper .elementor-button.e-btn-txt.dialog-button.dialog-take_over, .dialog-type-confirm .dialog-buttons-wrapper .elementor-button.e-primary.dialog-button.dialog-cancel, .dialog-type-confirm .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-cancel.dialog-take_over, +.dialog-type-alert .dialog-buttons-wrapper .elementor-button.e-primary.dialog-button.dialog-cancel, +.dialog-type-alert .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-cancel.dialog-take_over, .dialog-type-confirm .dialog-buttons-wrapper .elementor-button.e-btn-txt.dialog-button.dialog-ok, .dialog-type-confirm .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-ok.dialog-cancel, +.dialog-type-alert .dialog-buttons-wrapper .elementor-button.e-btn-txt.dialog-button.dialog-ok, +.dialog-type-alert .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-ok.dialog-cancel, +.e-btn.e-primary.e-btn-txt, +#elementor-deactivate-feedback-modal .e-primary.dialog-skip, +#elementor-deactivate-feedback-modal .e-btn-txt.dialog-submit, +#elementor-deactivate-feedback-modal .dialog-submit.dialog-skip, +.dialog-type-confirm .dialog-buttons-wrapper .e-btn.e-btn-txt.dialog-button.dialog-take_over, +.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-take_over.dialog-skip, +#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-take_over.dialog-skip, +.dialog-type-alert .dialog-buttons-wrapper .e-btn.e-btn-txt.dialog-button.dialog-take_over, +.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-take_over.dialog-skip, +#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-take_over.dialog-skip, +.dialog-type-confirm .dialog-buttons-wrapper .e-btn.e-primary.dialog-button.dialog-cancel, +.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-cancel.dialog-submit, +#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-submit, +.dialog-type-confirm .dialog-buttons-wrapper .e-btn.dialog-button.dialog-cancel.dialog-take_over, +.dialog-type-alert .dialog-buttons-wrapper .e-btn.e-primary.dialog-button.dialog-cancel, +.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-cancel.dialog-submit, +#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-submit, +.dialog-type-alert .dialog-buttons-wrapper .e-btn.dialog-button.dialog-cancel.dialog-take_over, +.dialog-type-confirm .dialog-buttons-wrapper .e-btn.e-btn-txt.dialog-button.dialog-ok, +.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-ok.dialog-skip, +#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-skip, +.dialog-type-confirm .dialog-buttons-wrapper .e-btn.dialog-button.dialog-ok.dialog-cancel, +.dialog-type-alert .dialog-buttons-wrapper .e-btn.e-btn-txt.dialog-button.dialog-ok, +.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-ok.dialog-skip, +#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-skip, +.dialog-type-alert .dialog-buttons-wrapper .e-btn.dialog-button.dialog-ok.dialog-cancel { + background: transparent; + color: var(--e-a-color-primary-bold); +} +.elementor-button.e-primary.e-btn-txt:hover, #elementor-deactivate-feedback-modal .elementor-button.e-primary.dialog-skip:hover, #elementor-deactivate-feedback-modal .elementor-button.e-btn-txt.dialog-submit:hover, #elementor-deactivate-feedback-modal .elementor-button.dialog-submit.dialog-skip:hover, .dialog-type-confirm .dialog-buttons-wrapper .elementor-button.e-btn-txt.dialog-button.dialog-take_over:hover, .dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .elementor-button.dialog-button.dialog-take_over.dialog-skip:hover, #elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-take_over.dialog-skip:hover, +.dialog-type-alert .dialog-buttons-wrapper .elementor-button.e-btn-txt.dialog-button.dialog-take_over:hover, +.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .elementor-button.dialog-button.dialog-take_over.dialog-skip:hover, +#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-take_over.dialog-skip:hover, .dialog-type-confirm .dialog-buttons-wrapper .elementor-button.e-primary.dialog-button.dialog-cancel:hover, .dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .elementor-button.dialog-button.dialog-cancel.dialog-submit:hover, #elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-cancel.dialog-submit:hover, .dialog-type-confirm .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-cancel.dialog-take_over:hover, +.dialog-type-alert .dialog-buttons-wrapper .elementor-button.e-primary.dialog-button.dialog-cancel:hover, +.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .elementor-button.dialog-button.dialog-cancel.dialog-submit:hover, +#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-cancel.dialog-submit:hover, +.dialog-type-alert .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-cancel.dialog-take_over:hover, .dialog-type-confirm .dialog-buttons-wrapper .elementor-button.e-btn-txt.dialog-button.dialog-ok:hover, .dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .elementor-button.dialog-button.dialog-ok.dialog-skip:hover, #elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-ok.dialog-skip:hover, .dialog-type-confirm .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-ok.dialog-cancel:hover, +.dialog-type-alert .dialog-buttons-wrapper .elementor-button.e-btn-txt.dialog-button.dialog-ok:hover, +.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .elementor-button.dialog-button.dialog-ok.dialog-skip:hover, +#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-ok.dialog-skip:hover, +.dialog-type-alert .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-ok.dialog-cancel:hover, .elementor-button.e-primary.e-btn-txt:focus, #elementor-deactivate-feedback-modal .elementor-button.e-primary.dialog-skip:focus, #elementor-deactivate-feedback-modal .elementor-button.e-btn-txt.dialog-submit:focus, #elementor-deactivate-feedback-modal .elementor-button.dialog-submit.dialog-skip:focus, .dialog-type-confirm .dialog-buttons-wrapper .elementor-button.e-btn-txt.dialog-button.dialog-take_over:focus, .dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .elementor-button.dialog-button.dialog-take_over.dialog-skip:focus, #elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-take_over.dialog-skip:focus, +.dialog-type-alert .dialog-buttons-wrapper .elementor-button.e-btn-txt.dialog-button.dialog-take_over:focus, +.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .elementor-button.dialog-button.dialog-take_over.dialog-skip:focus, +#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-take_over.dialog-skip:focus, .dialog-type-confirm .dialog-buttons-wrapper .elementor-button.e-primary.dialog-button.dialog-cancel:focus, .dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .elementor-button.dialog-button.dialog-cancel.dialog-submit:focus, #elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-cancel.dialog-submit:focus, .dialog-type-confirm .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-cancel.dialog-take_over:focus, +.dialog-type-alert .dialog-buttons-wrapper .elementor-button.e-primary.dialog-button.dialog-cancel:focus, +.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .elementor-button.dialog-button.dialog-cancel.dialog-submit:focus, +#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-cancel.dialog-submit:focus, +.dialog-type-alert .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-cancel.dialog-take_over:focus, .dialog-type-confirm .dialog-buttons-wrapper .elementor-button.e-btn-txt.dialog-button.dialog-ok:focus, .dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .elementor-button.dialog-button.dialog-ok.dialog-skip:focus, #elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-ok.dialog-skip:focus, .dialog-type-confirm .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-ok.dialog-cancel:focus, +.dialog-type-alert .dialog-buttons-wrapper .elementor-button.e-btn-txt.dialog-button.dialog-ok:focus, +.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .elementor-button.dialog-button.dialog-ok.dialog-skip:focus, +#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-ok.dialog-skip:focus, +.dialog-type-alert .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-ok.dialog-cancel:focus, +.e-btn.e-primary.e-btn-txt:hover, +#elementor-deactivate-feedback-modal .e-btn.e-primary.dialog-skip:hover, +#elementor-deactivate-feedback-modal .e-primary.e-btn-txt.dialog-skip:hover, +#elementor-deactivate-feedback-modal .e-primary.dialog-skip:hover, +#elementor-deactivate-feedback-modal .e-btn.e-btn-txt.dialog-submit:hover, +#elementor-deactivate-feedback-modal .e-btn.dialog-submit.dialog-skip:hover, +#elementor-deactivate-feedback-modal .e-btn-txt.dialog-submit.dialog-skip:hover, +#elementor-deactivate-feedback-modal .dialog-submit.dialog-skip:hover, +#elementor-deactivate-feedback-modal .e-primary.e-btn-txt.dialog-submit:hover, +#elementor-deactivate-feedback-modal .e-primary.dialog-submit.dialog-skip:hover, +#elementor-deactivate-feedback-modal .e-btn-txt.dialog-submit:hover, +#elementor-deactivate-feedback-modal .dialog-submit.dialog-skip:hover, +.dialog-type-confirm .dialog-buttons-wrapper .e-btn.e-btn-txt.dialog-button.dialog-take_over:hover, +.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .e-btn.dialog-button.dialog-take_over.dialog-skip:hover, +#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .e-btn.dialog-button.dialog-take_over.dialog-skip:hover, +.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .e-btn-txt.dialog-button.dialog-take_over.dialog-skip:hover, +.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-take_over.dialog-skip:hover, +#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .e-btn-txt.dialog-button.dialog-take_over.dialog-skip:hover, +#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-take_over.dialog-skip:hover, +.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .e-btn-txt.dialog-button.dialog-take_over.dialog-submit:hover, +.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-take_over.dialog-submit.dialog-skip:hover, +#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .e-btn-txt.dialog-button.dialog-take_over.dialog-submit:hover, +#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-take_over.dialog-submit.dialog-skip:hover, +.dialog-type-alert .dialog-buttons-wrapper .e-btn.e-btn-txt.dialog-button.dialog-take_over:hover, +.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .e-btn.dialog-button.dialog-take_over.dialog-skip:hover, +#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .e-btn.dialog-button.dialog-take_over.dialog-skip:hover, +.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .e-btn-txt.dialog-button.dialog-take_over.dialog-skip:hover, +.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-take_over.dialog-skip:hover, +#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .e-btn-txt.dialog-button.dialog-take_over.dialog-skip:hover, +#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-take_over.dialog-skip:hover, +.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .e-btn-txt.dialog-button.dialog-take_over.dialog-submit:hover, +.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-take_over.dialog-submit.dialog-skip:hover, +#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .e-btn-txt.dialog-button.dialog-take_over.dialog-submit:hover, +#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-take_over.dialog-submit.dialog-skip:hover, +.dialog-type-confirm .dialog-buttons-wrapper .e-btn.e-primary.dialog-button.dialog-cancel:hover, +.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .e-primary.dialog-button.dialog-cancel.dialog-skip:hover, +#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .e-primary.dialog-button.dialog-cancel.dialog-skip:hover, +.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .e-btn.dialog-button.dialog-cancel.dialog-submit:hover, +.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-cancel.dialog-submit.dialog-skip:hover, +#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .e-btn.dialog-button.dialog-cancel.dialog-submit:hover, +#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-submit.dialog-skip:hover, +.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .e-primary.dialog-button.dialog-cancel.dialog-submit:hover, +.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-cancel.dialog-submit:hover, +#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .e-primary.dialog-button.dialog-cancel.dialog-submit:hover, +#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-submit:hover, +.dialog-type-confirm .dialog-buttons-wrapper .e-btn.dialog-button.dialog-cancel.dialog-take_over:hover, +.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-cancel.dialog-take_over.dialog-skip:hover, +#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over.dialog-skip:hover, +.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-cancel.dialog-take_over.dialog-submit:hover, +#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over.dialog-submit:hover, +.dialog-type-alert .dialog-buttons-wrapper .e-btn.e-primary.dialog-button.dialog-cancel:hover, +.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .e-primary.dialog-button.dialog-cancel.dialog-skip:hover, +#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .e-primary.dialog-button.dialog-cancel.dialog-skip:hover, +.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .e-btn.dialog-button.dialog-cancel.dialog-submit:hover, +.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-cancel.dialog-submit.dialog-skip:hover, +#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .e-btn.dialog-button.dialog-cancel.dialog-submit:hover, +#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-submit.dialog-skip:hover, +.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .e-primary.dialog-button.dialog-cancel.dialog-submit:hover, +.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-cancel.dialog-submit:hover, +#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .e-primary.dialog-button.dialog-cancel.dialog-submit:hover, +#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-submit:hover, +.dialog-type-alert .dialog-buttons-wrapper .e-btn.dialog-button.dialog-cancel.dialog-take_over:hover, +.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-cancel.dialog-take_over.dialog-skip:hover, +#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over.dialog-skip:hover, +.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-cancel.dialog-take_over.dialog-submit:hover, +#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over.dialog-submit:hover, +.dialog-type-confirm .dialog-buttons-wrapper .e-btn.e-btn-txt.dialog-button.dialog-ok:hover, +.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .e-btn.dialog-button.dialog-ok.dialog-skip:hover, +#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .e-btn.dialog-button.dialog-ok.dialog-skip:hover, +.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .e-btn-txt.dialog-button.dialog-ok.dialog-skip:hover, +.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-ok.dialog-skip:hover, +#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .e-btn-txt.dialog-button.dialog-ok.dialog-skip:hover, +#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-skip:hover, +.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .e-btn-txt.dialog-button.dialog-ok.dialog-submit:hover, +.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-ok.dialog-submit.dialog-skip:hover, +#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .e-btn-txt.dialog-button.dialog-ok.dialog-submit:hover, +#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-submit.dialog-skip:hover, +.dialog-type-confirm .dialog-buttons-wrapper .e-btn.dialog-button.dialog-ok.dialog-cancel:hover, +.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-ok.dialog-cancel.dialog-skip:hover, +#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel.dialog-skip:hover, +.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-ok.dialog-cancel.dialog-submit:hover, +#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel.dialog-submit:hover, +.dialog-type-alert .dialog-buttons-wrapper .e-btn.e-btn-txt.dialog-button.dialog-ok:hover, +.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .e-btn.dialog-button.dialog-ok.dialog-skip:hover, +#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .e-btn.dialog-button.dialog-ok.dialog-skip:hover, +.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .e-btn-txt.dialog-button.dialog-ok.dialog-skip:hover, +.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-ok.dialog-skip:hover, +#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .e-btn-txt.dialog-button.dialog-ok.dialog-skip:hover, +#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-skip:hover, +.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .e-btn-txt.dialog-button.dialog-ok.dialog-submit:hover, +.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-ok.dialog-submit.dialog-skip:hover, +#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .e-btn-txt.dialog-button.dialog-ok.dialog-submit:hover, +#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-submit.dialog-skip:hover, +.dialog-type-alert .dialog-buttons-wrapper .e-btn.dialog-button.dialog-ok.dialog-cancel:hover, +.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-ok.dialog-cancel.dialog-skip:hover, +#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel.dialog-skip:hover, +.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-ok.dialog-cancel.dialog-submit:hover, +#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel.dialog-submit:hover, +.e-btn.e-primary.e-btn-txt:focus, +#elementor-deactivate-feedback-modal .e-btn.e-primary.dialog-skip:focus, +#elementor-deactivate-feedback-modal .e-primary.e-btn-txt.dialog-skip:focus, +#elementor-deactivate-feedback-modal .e-primary.dialog-skip:focus, +#elementor-deactivate-feedback-modal .e-btn.e-btn-txt.dialog-submit:focus, +#elementor-deactivate-feedback-modal .e-btn.dialog-submit.dialog-skip:focus, +#elementor-deactivate-feedback-modal .e-btn-txt.dialog-submit.dialog-skip:focus, +#elementor-deactivate-feedback-modal .dialog-submit.dialog-skip:focus, +#elementor-deactivate-feedback-modal .e-primary.e-btn-txt.dialog-submit:focus, +#elementor-deactivate-feedback-modal .e-primary.dialog-submit.dialog-skip:focus, +#elementor-deactivate-feedback-modal .e-btn-txt.dialog-submit:focus, +#elementor-deactivate-feedback-modal .dialog-submit.dialog-skip:focus, +.dialog-type-confirm .dialog-buttons-wrapper .e-btn.e-btn-txt.dialog-button.dialog-take_over:focus, +.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .e-btn.dialog-button.dialog-take_over.dialog-skip:focus, +#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .e-btn.dialog-button.dialog-take_over.dialog-skip:focus, +.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .e-btn-txt.dialog-button.dialog-take_over.dialog-skip:focus, +.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-take_over.dialog-skip:focus, +#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .e-btn-txt.dialog-button.dialog-take_over.dialog-skip:focus, +#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-take_over.dialog-skip:focus, +.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .e-btn-txt.dialog-button.dialog-take_over.dialog-submit:focus, +.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-take_over.dialog-submit.dialog-skip:focus, +#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .e-btn-txt.dialog-button.dialog-take_over.dialog-submit:focus, +#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-take_over.dialog-submit.dialog-skip:focus, +.dialog-type-alert .dialog-buttons-wrapper .e-btn.e-btn-txt.dialog-button.dialog-take_over:focus, +.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .e-btn.dialog-button.dialog-take_over.dialog-skip:focus, +#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .e-btn.dialog-button.dialog-take_over.dialog-skip:focus, +.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .e-btn-txt.dialog-button.dialog-take_over.dialog-skip:focus, +.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-take_over.dialog-skip:focus, +#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .e-btn-txt.dialog-button.dialog-take_over.dialog-skip:focus, +#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-take_over.dialog-skip:focus, +.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .e-btn-txt.dialog-button.dialog-take_over.dialog-submit:focus, +.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-take_over.dialog-submit.dialog-skip:focus, +#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .e-btn-txt.dialog-button.dialog-take_over.dialog-submit:focus, +#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-take_over.dialog-submit.dialog-skip:focus, +.dialog-type-confirm .dialog-buttons-wrapper .e-btn.e-primary.dialog-button.dialog-cancel:focus, +.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .e-primary.dialog-button.dialog-cancel.dialog-skip:focus, +#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .e-primary.dialog-button.dialog-cancel.dialog-skip:focus, +.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .e-btn.dialog-button.dialog-cancel.dialog-submit:focus, +.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-cancel.dialog-submit.dialog-skip:focus, +#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .e-btn.dialog-button.dialog-cancel.dialog-submit:focus, +#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-submit.dialog-skip:focus, +.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .e-primary.dialog-button.dialog-cancel.dialog-submit:focus, +.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-cancel.dialog-submit:focus, +#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .e-primary.dialog-button.dialog-cancel.dialog-submit:focus, +#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-submit:focus, +.dialog-type-confirm .dialog-buttons-wrapper .e-btn.dialog-button.dialog-cancel.dialog-take_over:focus, +.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-cancel.dialog-take_over.dialog-skip:focus, +#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over.dialog-skip:focus, +.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-cancel.dialog-take_over.dialog-submit:focus, +#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over.dialog-submit:focus, +.dialog-type-alert .dialog-buttons-wrapper .e-btn.e-primary.dialog-button.dialog-cancel:focus, +.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .e-primary.dialog-button.dialog-cancel.dialog-skip:focus, +#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .e-primary.dialog-button.dialog-cancel.dialog-skip:focus, +.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .e-btn.dialog-button.dialog-cancel.dialog-submit:focus, +.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-cancel.dialog-submit.dialog-skip:focus, +#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .e-btn.dialog-button.dialog-cancel.dialog-submit:focus, +#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-submit.dialog-skip:focus, +.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .e-primary.dialog-button.dialog-cancel.dialog-submit:focus, +.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-cancel.dialog-submit:focus, +#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .e-primary.dialog-button.dialog-cancel.dialog-submit:focus, +#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-submit:focus, +.dialog-type-alert .dialog-buttons-wrapper .e-btn.dialog-button.dialog-cancel.dialog-take_over:focus, +.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-cancel.dialog-take_over.dialog-skip:focus, +#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over.dialog-skip:focus, +.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-cancel.dialog-take_over.dialog-submit:focus, +#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over.dialog-submit:focus, +.dialog-type-confirm .dialog-buttons-wrapper .e-btn.e-btn-txt.dialog-button.dialog-ok:focus, +.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .e-btn.dialog-button.dialog-ok.dialog-skip:focus, +#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .e-btn.dialog-button.dialog-ok.dialog-skip:focus, +.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .e-btn-txt.dialog-button.dialog-ok.dialog-skip:focus, +.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-ok.dialog-skip:focus, +#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .e-btn-txt.dialog-button.dialog-ok.dialog-skip:focus, +#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-skip:focus, +.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .e-btn-txt.dialog-button.dialog-ok.dialog-submit:focus, +.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-ok.dialog-submit.dialog-skip:focus, +#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .e-btn-txt.dialog-button.dialog-ok.dialog-submit:focus, +#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-submit.dialog-skip:focus, +.dialog-type-confirm .dialog-buttons-wrapper .e-btn.dialog-button.dialog-ok.dialog-cancel:focus, +.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-ok.dialog-cancel.dialog-skip:focus, +#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel.dialog-skip:focus, +.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-ok.dialog-cancel.dialog-submit:focus, +#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel.dialog-submit:focus, +.dialog-type-alert .dialog-buttons-wrapper .e-btn.e-btn-txt.dialog-button.dialog-ok:focus, +.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .e-btn.dialog-button.dialog-ok.dialog-skip:focus, +#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .e-btn.dialog-button.dialog-ok.dialog-skip:focus, +.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .e-btn-txt.dialog-button.dialog-ok.dialog-skip:focus, +.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-ok.dialog-skip:focus, +#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .e-btn-txt.dialog-button.dialog-ok.dialog-skip:focus, +#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-skip:focus, +.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .e-btn-txt.dialog-button.dialog-ok.dialog-submit:focus, +.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-ok.dialog-submit.dialog-skip:focus, +#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .e-btn-txt.dialog-button.dialog-ok.dialog-submit:focus, +#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-submit.dialog-skip:focus, +.dialog-type-alert .dialog-buttons-wrapper .e-btn.dialog-button.dialog-ok.dialog-cancel:focus, +.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-ok.dialog-cancel.dialog-skip:focus, +#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel.dialog-skip:focus, +.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-ok.dialog-cancel.dialog-submit:focus, +#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel.dialog-submit:focus { + background: var(--e-a-bg-primary); +} +.elementor-button.go-pro, .elementor-button.e-accent, +.e-btn.go-pro, +#elementor-deactivate-feedback-modal .go-pro.dialog-skip, +#elementor-deactivate-feedback-modal .go-pro.dialog-submit, +.e-btn.e-accent, +#elementor-deactivate-feedback-modal .e-accent.dialog-skip, +#elementor-deactivate-feedback-modal .e-accent.dialog-submit { + background-color: var(--e-a-btn-bg-accent); +} +.elementor-button.go-pro:hover, .elementor-button.go-pro:focus, .elementor-button.e-accent:hover, .elementor-button.e-accent:focus, +.e-btn.go-pro:hover, +#elementor-deactivate-feedback-modal .go-pro.dialog-skip:hover, +#elementor-deactivate-feedback-modal .go-pro.dialog-submit:hover, +.e-btn.go-pro:focus, +#elementor-deactivate-feedback-modal .go-pro.dialog-skip:focus, +#elementor-deactivate-feedback-modal .go-pro.dialog-submit:focus, +.e-btn.e-accent:hover, +#elementor-deactivate-feedback-modal .e-accent.dialog-skip:hover, +#elementor-deactivate-feedback-modal .e-accent.dialog-submit:hover, +.e-btn.e-accent:focus, +#elementor-deactivate-feedback-modal .e-accent.dialog-skip:focus, +#elementor-deactivate-feedback-modal .e-accent.dialog-submit:focus { + background-color: var(--e-a-btn-bg-accent-hover); +} +.elementor-button.go-pro:active, .elementor-button.e-accent:active, +.e-btn.go-pro:active, +#elementor-deactivate-feedback-modal .go-pro.dialog-skip:active, +#elementor-deactivate-feedback-modal .go-pro.dialog-submit:active, +.e-btn.e-accent:active, +#elementor-deactivate-feedback-modal .e-accent.dialog-skip:active, +#elementor-deactivate-feedback-modal .e-accent.dialog-submit:active { + background-color: var(--e-a-btn-bg-accent-active); +} +.elementor-button.elementor-button-info, .elementor-button.e-info, +.e-btn.elementor-button-info, +#elementor-deactivate-feedback-modal .elementor-button-info.dialog-skip, +#elementor-deactivate-feedback-modal .elementor-button-info.dialog-submit, +.e-btn.e-info, +#elementor-deactivate-feedback-modal .e-info.dialog-skip, +#elementor-deactivate-feedback-modal .e-info.dialog-submit { + background-color: var(--e-a-btn-bg-info); +} +.elementor-button.elementor-button-info:hover, .elementor-button.elementor-button-info:focus, .elementor-button.e-info:hover, .elementor-button.e-info:focus, +.e-btn.elementor-button-info:hover, +#elementor-deactivate-feedback-modal .elementor-button-info.dialog-skip:hover, +#elementor-deactivate-feedback-modal .elementor-button-info.dialog-submit:hover, +.e-btn.elementor-button-info:focus, +#elementor-deactivate-feedback-modal .elementor-button-info.dialog-skip:focus, +#elementor-deactivate-feedback-modal .elementor-button-info.dialog-submit:focus, +.e-btn.e-info:hover, +#elementor-deactivate-feedback-modal .e-info.dialog-skip:hover, +#elementor-deactivate-feedback-modal .e-info.dialog-submit:hover, +.e-btn.e-info:focus, +#elementor-deactivate-feedback-modal .e-info.dialog-skip:focus, +#elementor-deactivate-feedback-modal .e-info.dialog-submit:focus { + background-color: var(--e-a-btn-bg-info-hover); +} +.elementor-button.elementor-button-warning, .elementor-button.e-warning, +.e-btn.elementor-button-warning, +#elementor-deactivate-feedback-modal .elementor-button-warning.dialog-skip, +#elementor-deactivate-feedback-modal .elementor-button-warning.dialog-submit, +.e-btn.e-warning, +#elementor-deactivate-feedback-modal .e-warning.dialog-skip, +#elementor-deactivate-feedback-modal .e-warning.dialog-submit { + background-color: var(--e-a-btn-bg-warning); +} +.elementor-button.elementor-button-warning:hover, .elementor-button.elementor-button-warning:focus, .elementor-button.e-warning:hover, .elementor-button.e-warning:focus, +.e-btn.elementor-button-warning:hover, +#elementor-deactivate-feedback-modal .elementor-button-warning.dialog-skip:hover, +#elementor-deactivate-feedback-modal .elementor-button-warning.dialog-submit:hover, +.e-btn.elementor-button-warning:focus, +#elementor-deactivate-feedback-modal .elementor-button-warning.dialog-skip:focus, +#elementor-deactivate-feedback-modal .elementor-button-warning.dialog-submit:focus, +.e-btn.e-warning:hover, +#elementor-deactivate-feedback-modal .e-warning.dialog-skip:hover, +#elementor-deactivate-feedback-modal .e-warning.dialog-submit:hover, +.e-btn.e-warning:focus, +#elementor-deactivate-feedback-modal .e-warning.dialog-skip:focus, +#elementor-deactivate-feedback-modal .e-warning.dialog-submit:focus { + background-color: var(--e-a-btn-bg-warning-hover); +} +.elementor-button.elementor-button-danger, .elementor-button.e-danger, +.e-btn.elementor-button-danger, +#elementor-deactivate-feedback-modal .elementor-button-danger.dialog-skip, +#elementor-deactivate-feedback-modal .elementor-button-danger.dialog-submit, +.e-btn.e-danger, +#elementor-deactivate-feedback-modal .e-danger.dialog-skip, +#elementor-deactivate-feedback-modal .e-danger.dialog-submit { + background-color: var(--e-a-btn-bg-danger); +} +.elementor-button.elementor-button-danger:hover, .elementor-button.elementor-button-danger:focus, .elementor-button.e-danger:hover, .elementor-button.e-danger:focus, +.e-btn.elementor-button-danger:hover, +#elementor-deactivate-feedback-modal .elementor-button-danger.dialog-skip:hover, +#elementor-deactivate-feedback-modal .elementor-button-danger.dialog-submit:hover, +.e-btn.elementor-button-danger:focus, +#elementor-deactivate-feedback-modal .elementor-button-danger.dialog-skip:focus, +#elementor-deactivate-feedback-modal .elementor-button-danger.dialog-submit:focus, +.e-btn.e-danger:hover, +#elementor-deactivate-feedback-modal .e-danger.dialog-skip:hover, +#elementor-deactivate-feedback-modal .e-danger.dialog-submit:hover, +.e-btn.e-danger:focus, +#elementor-deactivate-feedback-modal .e-danger.dialog-skip:focus, +#elementor-deactivate-feedback-modal .e-danger.dialog-submit:focus { + background-color: var(--e-a-btn-bg-danger-hover); +} +.elementor-button i, +.e-btn i, +#elementor-deactivate-feedback-modal .dialog-skip i, +#elementor-deactivate-feedback-modal .dialog-submit i { + margin-inline-end: 5px; +} + +#adminmenu #toplevel_page_elementor div.wp-menu-image:before { + content: "\e813"; + font-family: eicons; + font-size: 18px; + margin-block-start: 1px; +} +#adminmenu #toplevel_page_elementor a[href="admin.php?page=go_elementor_pro"] { + font-weight: 600; + background-color: #93003f; + color: #ffffff; + margin: 3px 10px 0; + display: block; + text-align: center; + border-radius: 3px; + transition: all 0.3s; +} +#adminmenu #toplevel_page_elementor a[href="admin.php?page=go_elementor_pro"]:hover, #adminmenu #toplevel_page_elementor a[href="admin.php?page=go_elementor_pro"]:focus { + background-color: #c60055; + box-shadow: none; +} +#adminmenu #menu-posts-elementor_library .wp-menu-image:before { + content: "\e8ff"; + font-family: eicons; + font-size: 18px; +} + +#e-admin-menu__kit-library { + color: #5cb85c; +} + +.elementor-plugins-gopro { + color: #93003f; + font-weight: bold; +} +.elementor-plugins-gopro:hover, .elementor-plugins-gopro:focus { + color: #c60055; +} + +#elementor-switch-mode { + margin: 15px 0; +} + +#elementor-switch-mode-button, +#elementor-editor-button { + outline: none; + cursor: pointer; +} +#elementor-switch-mode-button i, +#elementor-editor-button i { + margin-inline-end: 3px; + font-size: 125%; + font-style: normal; +} + +body.elementor-editor-active .elementor-switch-mode-off { + display: none; +} +body.elementor-editor-active #elementor-switch-mode-button { + background-color: #f7f7f7; + color: #555; + border-color: #ccc; + box-shadow: 0 1px 0 #ccc !important; + text-shadow: unset; +} +body.elementor-editor-active #elementor-switch-mode-button:hover { + background-color: #e9e9e9; +} +body.elementor-editor-active #elementor-switch-mode-button:active { + box-shadow: inset 0 1px 0 #ccc; + transform: translateY(1px); +} +body.elementor-editor-active #postdivrich { + display: none !important; +} +body.elementor-editor-active .editor-block-list__layout, +body.elementor-editor-active .block-editor-block-list__layout { + display: none; +} +body.elementor-editor-inactive .elementor-switch-mode-on { + display: none; +} +body.elementor-editor-inactive #elementor-editor { + display: none; +} + +body.elementor-editor-active .editor-block-list__layout { + display: none; +} +body.elementor-editor-active .edit-post-layout__content .edit-post-visual-editor { + flex-basis: auto; +} +body.elementor-editor-active #elementor-editor { + margin-block-end: 50px; +} +body.elementor-editor-active .edit-post-text-editor__body .editor-post-text-editor { + display: none; +} +body.elementor-editor-active :is(.is-desktop-preview, .is-tablet-preview, .is-mobile-preview) :is(.editor-styles-wrapper, iframe[name=editor-canvas]) { + height: auto !important; + padding: 0 !important; + flex: 0 !important; +} +body .block-editor #elementor-switch-mode { + margin: 0 15px; +} +body .block-editor #elementor-switch-mode .button { + margin: 2px; + height: 33px; + font-size: 13px; + line-height: 1; +} +body .block-editor #elementor-switch-mode .button i { + padding-inline-end: 5px; +} + +.elementor-button { + font-size: 13px; + text-decoration: none; + padding: 15px 40px; +} + +#elementor-editor { + height: 300px; + width: 100%; + transition: all 0.5s ease; +} +#elementor-editor .elementor-loader-wrapper { + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + width: 300px; + display: flex; + flex-direction: column; + align-items: center; + gap: 30px; +} +#elementor-editor .elementor-loader { + border-radius: 50%; + padding: 40px; + height: 150px; + width: 150px; + background-color: var(--e-a-bg-active); + box-sizing: border-box; + box-shadow: 2px 2px 20px 4px rgba(0, 0, 0, 0.02); +} +#elementor-editor .elementor-loader-boxes { + height: 100%; + width: 100%; + position: relative; +} +#elementor-editor .elementor-loader-box { + position: absolute; + background-color: var(--e-a-color-txt-hover); + animation: load 1.8s linear infinite; +} +#elementor-editor .elementor-loader-box:nth-of-type(1) { + width: 20%; + height: 100%; + left: 0; + top: 0; +} +#elementor-editor .elementor-loader-box:not(:nth-of-type(1)) { + right: 0; + height: 20%; + width: 60%; +} +#elementor-editor .elementor-loader-box:nth-of-type(2) { + top: 0; + animation-delay: calc(1.8s / 4 * -1); +} +#elementor-editor .elementor-loader-box:nth-of-type(3) { + top: 40%; + animation-delay: calc(1.8s / 4 * -2); +} +#elementor-editor .elementor-loader-box:nth-of-type(4) { + bottom: 0; + animation-delay: calc(1.8s / 4 * -3); +} +#elementor-editor .elementor-loading-title { + color: var(--e-a-color-txt); + text-align: center; + text-transform: uppercase; + letter-spacing: 7px; + text-indent: 7px; + font-size: 10px; + width: 100%; +} + +#elementor-go-to-edit-page-link { + height: 100%; + display: flex; + justify-content: center; + align-items: center; + border: 1px solid #DDD; + background-color: #F7F7F7; + text-decoration: none; + position: relative; + font-family: Sans-serif; +} +#elementor-go-to-edit-page-link:hover { + background-color: #ffffff; +} +#elementor-go-to-edit-page-link:focus { + box-shadow: none; +} +#elementor-go-to-edit-page-link.elementor-animate #elementor-editor-button { + display: none; +} +#elementor-go-to-edit-page-link:not(.elementor-animate) .elementor-loader-wrapper { + display: none; +} + +.elementor-button-spinner:before { + font: normal 20px/0.5 dashicons; + speak: none; + display: inline-block; + padding: 0; + inset-block-start: 8px; + inset-inline-start: -4px; + position: relative; + vertical-align: top; + content: "\f463"; +} +.elementor-button-spinner.loading:before { + animation: rotation 1s infinite linear; +} +.elementor-button-spinner.success:before { + content: "\f147"; + color: #46b450; +} + +.elementor-blank_state { + padding: 5em 0; + margin: auto; + max-width: 520px; + text-align: center; + font-family: var(--e-a-font-family); +} +.elementor-blank_state i { + font-size: 50px; +} +.elementor-blank_state h3 { + font-size: 32px; + font-weight: 300; + color: inherit; + margin: 20px 0 10px; + line-height: 1.2; +} +.elementor-blank_state p { + font-size: 16px; + font-weight: normal; + margin-block-end: 40px; +} +.elementor-blank_state .elementor-button { + display: inline-block; +} + +#available-widgets [class*=elementor-template] .widget-title:before { + content: "\e813"; + font-family: eicons; + font-size: 17px; +} + +.elementor-settings-form-page { + padding-block-start: 30px; +} +.elementor-settings-form-page:not(.elementor-active) { + display: none; +} + +._elementor_settings_update_time { + display: none; +} + +body.post-type-attachment table.media .column-title .media-icon img[src$=".svg"] { + width: 100%; +} + +.e-major-update-warning { + margin-block-end: 5px; + max-width: 1000px; + display: flex; +} +.e-major-update-warning__separator { + margin: 15px -12px; +} +.e-major-update-warning__icon { + font-size: 17px; + margin-inline-end: 9px; + margin-inline-start: 2px; +} +.e-major-update-warning__title { + font-weight: 600; + margin-block-end: 10px; +} +.e-major-update-warning + p { + display: none; +} + +.notice-success .e-major-update-warning__separator { + border: 1px solid #46b450; +} +.notice-success .e-major-update-warning__icon { + color: #79ba49; +} + +.notice-warning .e-major-update-warning__separator { + border: 1px solid #ffb900; +} +.notice-warning .e-major-update-warning__icon { + color: #f56e28; +} + +.plugins table.e-compatibility-update-table tr { + background: transparent; +} +.plugins table.e-compatibility-update-table tr th { + font-weight: 600; +} +.plugins table.e-compatibility-update-table tr th, .plugins table.e-compatibility-update-table tr td { + min-width: 250px; + font-size: 13px; + background: transparent; + box-shadow: none; + border: none; + padding-block-start: 5px; + padding-block-end: 5px; + padding-inline-end: 15px; + padding-inline-start: 0; +} + +:root { + --e-focus-color: rgba(0, 115, 170, .4); + --e-context-primary-color: #0073aa; + --e-context-primary-color-dark: #005177; + --e-context-primary-tint-4: rgba(0, 115, 170, 0.4); + --e-context-primary-tint-1: rgba(0, 115, 170, 0.04); + --e-context-success-color: #0A875A; + --e-context-success-color-dark: #06583a; + --e-context-success-tint-4: rgba(10, 135, 90, 0.4); + --e-context-success-tint-1: rgba(10, 135, 90, 0.04); + --e-context-info-color: #2563EB; + --e-context-info-color-dark: #134cca; + --e-context-info-tint-4: rgba(37, 99, 235, 0.4); + --e-context-info-tint-1: rgba(37, 99, 235, 0.04); + --e-context-warning-color: #F59E0B; + --e-context-warning-color-dark: #c57f08; + --e-context-warning-tint-4: rgba(245, 158, 11, 0.4); + --e-context-warning-tint-1: rgba(245, 158, 11, 0.04); + --e-context-error-color: #DC2626; + --e-context-error-color-dark: #b21d1d; + --e-context-error-tint-4: rgba(220, 38, 38, 0.4); + --e-context-error-tint-1: rgba(220, 38, 38, 0.04); + --e-context-cta-color: #524CFF; + --e-context-cta-color-dark: #2119ff; + --e-context-cta-tint-4: rgba(82, 76, 255, 0.4); + --e-context-cta-tint-1: rgba(82, 76, 255, 0.04); +} + +.e-getting-started { + max-width: 900px; + padding: 2.5em 0; + margin: auto; + text-align: center; +} +.e-getting-started__header { + display: flex; + flex-direction: row; + justify-content: space-between; + align-items: center; + box-shadow: 0 0 8px rgba(0, 0, 0, 0.1); +} +.e-getting-started__header .e-logo-wrapper { + font-size: 10px; + margin-inline-end: 10px; +} +.e-getting-started__title { + padding: 0 15px; + font-weight: 600; + text-transform: uppercase; + display: flex; + align-items: center; +} +.e-getting-started__skip { + border-inline-start: 1px solid #eee; + font-size: 16px; + color: inherit; +} +.e-getting-started__skip i { + padding: 15px; +} +.e-getting-started__content { + padding: 50px; +} +.e-getting-started__content h2 { + font-size: 2em; + margin-block-start: 0; +} +.e-getting-started__content--narrow { + max-width: 500px; + margin: auto; +} +.e-getting-started__video { + margin: 40px 0 60px; +} +.e-getting-started__video iframe { + box-shadow: 10px 10px 20px rgba(0, 0, 0, 0.15); +} +.e-getting-started__actions .button-primary { + margin-inline-end: 20px; +} + +:root { + --e-button-padding-block: 0.4375rem; + --e-button-padding-inline: 0.75rem; + --e-button-font-size: 0.8125rem; + --e-button-font-weight: 500; + --e-button-line-height: 0.9375rem; + --e-button-border-radius: 3px; + --e-button-context-color: var(--e-context-primary-color); + --e-button-context-color-dark: var(--e-context-primary-color-dark); + --e-button-context-tint: var(--e-context-primary-tint-1); +} + +.e-button { + display: inline-block; + font-weight: var(--e-button-font-weight); + text-align: center; + white-space: nowrap; + vertical-align: middle; + -webkit-user-select: none; + -moz-user-select: none; + user-select: none; + color: #ffffff; + border: 0; + text-decoration: none; + background: var(--e-button-context-color); + padding: var(--e-button-padding-block) var(--e-button-padding-inline); + font-size: var(--e-button-font-size); + line-height: var(--e-button-line-height); + border-radius: var(--e-button-border-radius); + transition: background-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; +} +.e-button:active, .e-button:hover, .e-button:focus { + color: #ffffff; + text-decoration: none; + background: var(--e-button-context-color-dark); +} +.e-button:focus, .e-button.focus { + outline: 0; + box-shadow: 0 0 0 2px var(--e-focus-color); +} +.e-button.disabled, .e-button:disabled { + opacity: 0.5; + box-shadow: none; +} +.e-button:not(:disabled):not(.disabled) { + cursor: pointer; +} +.e-button:not(:disabled):not(.disabled):active:focus, .e-button:not(:disabled):not(.disabled).active:focus { + box-shadow: 0 0 0 2px var(--e-focus-color); +} +.e-button--primary { + --e-button-context-color: var(--e-context-primary-color); + --e-button-context-color-dark: var(--e-context-primary-color-dark); + --e-button-context-tint: var(--e-context-primary-tint-1); + --e-focus-color: var(--e-context-primary-tint-4); +} +.e-button--success { + --e-button-context-color: var(--e-context-success-color); + --e-button-context-color-dark: var(--e-context-success-color-dark); + --e-button-context-tint: var(--e-context-success-tint-1); + --e-focus-color: var(--e-context-success-tint-4); +} +.e-button--info { + --e-button-context-color: var(--e-context-info-color); + --e-button-context-color-dark: var(--e-context-info-color-dark); + --e-button-context-tint: var(--e-context-info-tint-1); + --e-focus-color: var(--e-context-info-tint-4); +} +.e-button--warning { + --e-button-context-color: var(--e-context-warning-color); + --e-button-context-color-dark: var(--e-context-warning-color-dark); + --e-button-context-tint: var(--e-context-warning-tint-1); + --e-focus-color: var(--e-context-warning-tint-4); +} +.e-button--error { + --e-button-context-color: var(--e-context-error-color); + --e-button-context-color-dark: var(--e-context-error-color-dark); + --e-button-context-tint: var(--e-context-error-tint-1); + --e-focus-color: var(--e-context-error-tint-4); +} +.e-button--cta { + --e-button-context-color: var(--e-context-cta-color); + --e-button-context-color-dark: var(--e-context-cta-color-dark); + --e-button-context-tint: var(--e-context-cta-tint-1); + --e-focus-color: var(--e-context-cta-tint-4); +} +.e-button.e-button--outline { + color: var(--e-button-context-color); + background: none; + border: 1px solid currentColor; +} +.e-button.e-button--outline:hover, .e-button.e-button--outline:focus { + color: var(--e-button-context-color-dark); + background: var(--e-button-context-tint); +} +.e-button.e-button--outline.disabled, .e-button.e-button--outline:disabled { + color: var(--e-button-context-color-dark); + background: #69727D; +} +.e-button > i { + line-height: inherit; + height: var(--e-button-line-height); + width: -moz-min-content; + width: min-content; +} +.e-button > * + * { + margin-inline-start: 0.5ch; +} +.e-button--link { + color: var(--e-button-context-color); + background-color: transparent; +} +.e-button--link:hover, .e-button--link:focus { + color: var(--e-button-context-color-dark); + background: var(--e-button-context-tint); +} +.e-button--link:disabled, .e-button--link.disabled { + color: #69727D; +} + +a.e-button.disabled, +fieldset:disabled a.e-button { + pointer-events: none; +} + +:root { + --e-notice-bg: #fff; + --e-notice-border-color: #ccd0d4; + --e-notice-context-color: #93003f; + --e-notice-context-tint: var(--e-context-cta-tint-1); + --e-notice-box-shadow: 0 1px 4px rgba(0,0,0,.15); + --e-notice-dismiss-color: #3f444b; +} + +.e-notice { + position: relative; + display: flex; + font-family: Roboto, Arial, Helvetica, sans-serif; + background: var(--e-notice-bg); + border: 1px solid var(--e-notice-border-color); + border-inline-start-width: 4px; + box-shadow: var(--e-notice-box-shadow); + margin: 5px 20px 5px 2px; +} +.e-notice.notice { + padding: 0; +} +.e-notice::before { + display: block; + content: ""; + position: absolute; + inset-inline-start: -4px; + inset-block-start: -1px; + inset-block-end: -1px; + width: 4px; + background-color: var(--e-notice-context-color); +} +.e-notice--primary { + --e-notice-context-color: var(--e-context-primary-color); + --e-notice-context-color-dark: var(--e-context-primary-color-dark); + --e-notice-context-tint: var(--e-context-primary-tint-1); +} +.e-notice--success { + --e-notice-context-color: var(--e-context-success-color); + --e-notice-context-color-dark: var(--e-context-success-color-dark); + --e-notice-context-tint: var(--e-context-success-tint-1); +} +.e-notice--info { + --e-notice-context-color: var(--e-context-info-color); + --e-notice-context-color-dark: var(--e-context-info-color-dark); + --e-notice-context-tint: var(--e-context-info-tint-1); +} +.e-notice--warning { + --e-notice-context-color: var(--e-context-warning-color); + --e-notice-context-color-dark: var(--e-context-warning-color-dark); + --e-notice-context-tint: var(--e-context-warning-tint-1); +} +.e-notice--error { + --e-notice-context-color: var(--e-context-error-color); + --e-notice-context-color-dark: var(--e-context-error-color-dark); + --e-notice-context-tint: var(--e-context-error-tint-1); +} +.e-notice--cta { + --e-notice-context-color: var(--e-context-cta-color); + --e-notice-context-color-dark: var(--e-context-cta-color-dark); + --e-notice-context-tint: var(--e-context-cta-tint-1); +} +.e-notice--extended { + --e-notice-is-extended: 1; +} +.e-notice--dismissible { + padding-inline-end: 38px; +} +.e-notice__aside { + overflow: hidden; + background-color: var(--e-notice-context-tint); + width: calc(var(--e-notice-is-extended, 0) * 50px); + text-align: center; + padding-block-start: 15px; + flex-grow: 0; + flex-shrink: 0; +} +.e-notice__icon-wrapper { + display: inline-block; + font-size: 0.625rem; + max-height: 1.5rem; + width: 1.5rem; + line-height: 1.5rem; + border-radius: 100px; + background: var(--e-notice-context-color); + color: #fff; + text-shadow: 0 0 3px var(--e-notice-context-color-dark), 0 0 1px var(--e-notice-context-color-dark), 0 0 1px var(--e-notice-context-color-dark); +} +.e-notice__content { + padding: 20px; +} +.e-notice__actions { + display: flex; +} +.e-notice__actions > * + * { + margin-inline-start: 8px; +} +.e-notice__dismiss { + width: 20px; + height: 20px; + line-height: 20px; + font-size: 0.8125rem; + text-align: center; + background: none; + display: block; + position: absolute; + inset-block-start: 0; + inset-inline-end: 1px; + border: none; + margin: 0; + padding: 9px; + cursor: pointer; + font-style: normal; +} +.e-notice__dismiss:before { + font-family: eicons; + display: inline-block; + content: "\e87f"; + color: var(--e-notice-dismiss-color); + width: 20px; + border-radius: 20px; + speak: none; + text-align: center; +} +.e-notice__dismiss:hover:before, .e-notice__dismiss:active:before, .e-notice__dismiss:focus:before { + font-weight: bold; +} +.e-notice__dismiss:focus:before { + color: #fff; + background: var(--e-notice-dismiss-color); + outline: none; +} +.e-notice__dismiss:focus { + outline: none; +} +.e-notice p { + line-height: 1.2; + padding: 0; + margin: 0; +} +.e-notice p + .e-notice__actions { + margin-block-start: 1rem; +} +.e-notice h3 { + font-size: 1.0625rem; + line-height: 1.2; + margin: 0; +} +.e-notice h3 + p { + margin-block-start: 8px; +} + +/*= Elementor Admin Alert +---------------------------------------*/ +.elementor-admin-alert { + padding: 15px; + border-inline-start: 3px solid transparent; + position: relative; + font-size: 12px; + line-height: 1.5; + text-align: start; +} +.elementor-admin-alert a { + color: inherit; +} +.elementor-admin-alert.elementor-alert-info { + color: var(--e-a-color-info); + background-color: var(--e-a-bg-info); + border-color: var(--e-a-color-info); +} +.elementor-admin-alert.elementor-alert-success { + color: var(--e-a-color-success); + background-color: var(--e-a-bg-success); + border-color: var(--e-a-color-success); +} +.elementor-admin-alert.elementor-alert-warning { + color: var(--e-admin-color-warning); + background-color: var(--e-a-bg-warning); + border-color: var(--e-a-color-warning); +} +.elementor-admin-alert.elementor-alert-danger { + color: var(--e-a-color-danger); + background-color: var(--e-a-bg-danger); + border-color: var(--e-a-color-danger); +} + +/*= Elementor System Info +---------------------------------------*/ +#elementor-system-info { + padding: 15px; +} +#elementor-system-info .elementor-system-info-header { + display: flex; + justify-content: space-between; + align-items: center; +} +#elementor-system-info .elementor-system-info-section { + margin-block-end: 10px; +} +#elementor-system-info .elementor-system-info-section .widefat { + white-space: pre; +} +#elementor-system-info .elementor-system-info-section .elementor-log-entries { + white-space: pre-wrap; +} +#elementor-system-info .elementor-system-info-section:not(.elementor-system-info-log) tbody td:first-child { + width: 300px; +} +#elementor-system-info .elementor-system-info-section:not(.elementor-system-info-log) td { + white-space: break-spaces; +} +#elementor-system-info .elementor-system-info-field-recommendation { + padding-inline-start: 10px; + color: #7F7F7F; +} +#elementor-system-info .elementor-system-info-plugin-name { + color: #000; +} +#elementor-system-info .elementor-system-info-plugin-properties { + padding: 10px; +} +#elementor-system-info #elementor-system-info-raw-code { + width: 100%; + height: 200px; +} +#elementor-system-info #elementor-system-info-raw-code-label { + padding: 5px; + display: block; +} +#elementor-system-info .elementor-warning td:first-child { + border-inline-start: 3px solid #F59E0B; +} +#elementor-system-info a.box-title-tool { + font-size: 80%; + margin-inline-start: 15px; + color: #69727D; +} +#elementor-system-info a.box-title-tool:hover { + text-decoration: underline; +} +#elementor-system-info #elementor-usage-recalc { + font-size: 12px; + color: #ffffff; + background-color: #9DA5AE; + padding: 4px 18px 5px 18px; + border-radius: 3px; +} + +.dialog-type-confirm .dialog-widget-content, +.dialog-type-alert .dialog-widget-content { + margin: auto; + width: 400px; + padding: 20px; +} +.dialog-type-confirm .dialog-header, +.dialog-type-alert .dialog-header { + font-size: 15px; + font-weight: 500; +} +.dialog-type-confirm .dialog-header:after, +.dialog-type-alert .dialog-header:after { + content: ""; + display: block; + border-block-end: var(--e-a-border); + padding-block-end: 10px; + margin-block-end: 10px; + margin-inline-start: -20px; + margin-inline-end: -20px; +} +.dialog-type-confirm .dialog-message, +.dialog-type-alert .dialog-message { + min-height: 50px; +} +.dialog-type-confirm .dialog-buttons-wrapper, +.dialog-type-alert .dialog-buttons-wrapper { + padding-block-start: 10px; + display: flex; + justify-content: flex-end; + gap: 15px; +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button { + font-size: 12px; + font-weight: 500; + line-height: 1.2; + padding: 8px 16px; + outline: none; + border: none; + border-radius: var(--e-a-border-radius); + background-color: var(--e-a-btn-bg); + color: var(--e-a-btn-color-invert); + transition: var(--e-a-transition-hover); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button:hover { + border: none; +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button:focus { + background-color: var(--e-a-btn-bg-hover); + color: var(--e-a-btn-color-invert); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:active, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button:active { + background-color: var(--e-a-btn-bg-active); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:not([disabled]), +.dialog-type-alert .dialog-buttons-wrapper .dialog-button:not([disabled]) { + cursor: pointer; +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:disabled, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button:disabled { + background-color: var(--e-a-btn-bg-disabled); + color: var(--e-a-btn-color-disabled); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:not(.elementor-button-state) .elementor-state-icon, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button:not(.elementor-button-state) .elementor-state-icon { + display: none; +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt, .dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-skip, #elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-skip, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt, +.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-skip, +#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-skip, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel { + background: transparent; + color: var(--e-a-color-txt); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt:hover, .dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-skip:hover, #elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-skip:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt:focus, .dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-skip:focus, #elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-skip:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt:hover, +.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-skip:hover, +#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-skip:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt:focus, +.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-skip:focus, +#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-skip:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel:focus { + background: var(--e-a-bg-hover); + color: var(--e-a-color-txt-hover); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt:disabled, .dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-skip:disabled, #elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-skip:disabled, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel:disabled, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt:disabled, +.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-skip:disabled, +#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-skip:disabled, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel:disabled { + background: transparent; + color: var(--e-a-color-txt-disabled); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt-border, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt-border { + border: 1px solid var(--e-a-color-txt-muted); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-success, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-success, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-success, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-success { + background-color: var(--e-a-btn-bg-success); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-success:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-success:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-success:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-success:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-success:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-success:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-success:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-success:focus { + background-color: var(--e-a-btn-bg-success-hover); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary, .dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-submit, #elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-submit, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-take_over, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary, +.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-submit, +#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-submit, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-take_over, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok { + background-color: var(--e-a-btn-bg-primary); + color: var(--e-a-btn-color); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary:hover, .dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-submit:hover, #elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-submit:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-take_over:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary:focus, .dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-submit:focus, #elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-submit:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-take_over:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary:hover, +.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-submit:hover, +#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-submit:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-take_over:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary:focus, +.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-submit:focus, +#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-submit:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-take_over:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok:focus { + background-color: var(--e-a-btn-bg-primary-hover); + color: var(--e-a-btn-color); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary.e-btn-txt, .dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.e-primary.dialog-skip, #elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary.dialog-skip, .dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.e-btn-txt.dialog-submit, .dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-submit.dialog-skip, #elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-submit, #elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-submit.dialog-skip, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-take_over, .dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-take_over.dialog-skip, #elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-take_over.dialog-skip, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary.dialog-cancel, .dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-cancel.dialog-submit, #elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-submit, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-ok, .dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-ok.dialog-skip, #elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-skip, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary.e-btn-txt, +.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.e-primary.dialog-skip, +#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary.dialog-skip, +.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.e-btn-txt.dialog-submit, +.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-submit.dialog-skip, +#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-submit, +#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-submit.dialog-skip, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-take_over, +.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-take_over.dialog-skip, +#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-take_over.dialog-skip, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary.dialog-cancel, +.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-cancel.dialog-submit, +#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-submit, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-ok, +.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-ok.dialog-skip, +#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-skip, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel { + background: transparent; + color: var(--e-a-color-primary-bold); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary.e-btn-txt:hover, .dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.e-primary.dialog-skip:hover, #elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary.dialog-skip:hover, .dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.e-btn-txt.dialog-submit:hover, .dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-submit.dialog-skip:hover, #elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-submit:hover, #elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-submit.dialog-skip:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-take_over:hover, .dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-take_over.dialog-skip:hover, #elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-take_over.dialog-skip:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary.dialog-cancel:hover, .dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-cancel.dialog-submit:hover, #elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-submit:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-ok:hover, .dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-ok.dialog-skip:hover, #elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-skip:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary.e-btn-txt:focus, .dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.e-primary.dialog-skip:focus, #elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary.dialog-skip:focus, .dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.e-btn-txt.dialog-submit:focus, .dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-submit.dialog-skip:focus, #elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-submit:focus, #elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-submit.dialog-skip:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-take_over:focus, .dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-take_over.dialog-skip:focus, #elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-take_over.dialog-skip:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary.dialog-cancel:focus, .dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-cancel.dialog-submit:focus, #elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-submit:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-ok:focus, .dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-ok.dialog-skip:focus, #elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-skip:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary.e-btn-txt:hover, +.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.e-primary.dialog-skip:hover, +#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary.dialog-skip:hover, +.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.e-btn-txt.dialog-submit:hover, +.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-submit.dialog-skip:hover, +#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-submit:hover, +#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-submit.dialog-skip:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-take_over:hover, +.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-take_over.dialog-skip:hover, +#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-take_over.dialog-skip:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary.dialog-cancel:hover, +.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-cancel.dialog-submit:hover, +#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-submit:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-ok:hover, +.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-ok.dialog-skip:hover, +#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-skip:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary.e-btn-txt:focus, +.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.e-primary.dialog-skip:focus, +#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary.dialog-skip:focus, +.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.e-btn-txt.dialog-submit:focus, +.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-submit.dialog-skip:focus, +#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-submit:focus, +#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-submit.dialog-skip:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-take_over:focus, +.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-take_over.dialog-skip:focus, +#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-take_over.dialog-skip:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary.dialog-cancel:focus, +.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-cancel.dialog-submit:focus, +#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-submit:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-ok:focus, +.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-ok.dialog-skip:focus, +#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-skip:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel:focus { + background: var(--e-a-bg-primary); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.go-pro, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-accent, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.go-pro, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-accent { + background-color: var(--e-a-btn-bg-accent); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.go-pro:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.go-pro:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-accent:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-accent:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.go-pro:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.go-pro:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-accent:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-accent:focus { + background-color: var(--e-a-btn-bg-accent-hover); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.go-pro:active, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-accent:active, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.go-pro:active, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-accent:active { + background-color: var(--e-a-btn-bg-accent-active); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-info, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-info, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-info, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-info { + background-color: var(--e-a-btn-bg-info); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-info:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-info:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-info:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-info:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-info:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-info:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-info:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-info:focus { + background-color: var(--e-a-btn-bg-info-hover); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-warning, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-warning, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-warning, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-warning { + background-color: var(--e-a-btn-bg-warning); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-warning:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-warning:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-warning:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-warning:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-warning:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-warning:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-warning:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-warning:focus { + background-color: var(--e-a-btn-bg-warning-hover); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-danger, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-danger, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-danger, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-danger { + background-color: var(--e-a-btn-bg-danger); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-danger:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-danger:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-danger:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-danger:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-danger:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-danger:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-danger:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-danger:focus { + background-color: var(--e-a-btn-bg-danger-hover); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button i, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button i { + margin-inline-end: 5px; +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button:visited, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button:visited { + color: initial; +} +@keyframes elementor-rotation { + 0% { + transform: rotate(0deg); + } + 100% { + transform: rotate(359deg); + } +} +#elementor-deactivate-feedback-dialog-wrapper { + display: none; +} + +#elementor-deactivate-feedback-modal { + color: var(--e-a-color-txt); +} +#elementor-deactivate-feedback-modal .dialog-widget-content { + width: 550px; +} +#elementor-deactivate-feedback-modal .dialog-header { + padding: 18px 15px; + box-shadow: 0 0 8px rgba(0, 0, 0, 0.1); + text-align: start; +} +#elementor-deactivate-feedback-modal .dialog-message { + padding: 30px; + padding-block-end: 0; + text-align: start; +} +#elementor-deactivate-feedback-modal .elementor-deactivate-feedback-dialog-input { + margin-block: 0; + margin-inline: 0 15px; + box-shadow: none; +} +#elementor-deactivate-feedback-modal .elementor-deactivate-feedback-dialog-input:not(:checked) ~ .elementor-feedback-text { + display: none; +} +#elementor-deactivate-feedback-modal .elementor-deactivate-feedback-dialog-label { + display: block; + font-size: 13px; +} +#elementor-deactivate-feedback-modal .elementor-feedback-text { + background-color: transparent; + color: var(--e-a-color-txt); + margin-block: 10px 0; + margin-inline: 30px 0; + padding: 5px; + box-shadow: none; + width: 92%; +} +#elementor-deactivate-feedback-modal .dialog-buttons-wrapper { + display: flex; + justify-content: space-between; + padding: 20px 30px 30px; +} +#elementor-deactivate-feedback-modal .dialog-submit.elementor-loading:before { + display: inline-block; + content: "\f463"; + font: 18px dashicons; + animation: elementor-rotation 2s infinite linear; +} +#elementor-deactivate-feedback-modal[data-feedback-selected=elementor_pro] .elementor-feedback-text { + color: #F59E0B; + padding: 0; +} +#elementor-deactivate-feedback-modal[data-feedback-selected=elementor_pro] .dialog-submit { + display: none; +} + +#elementor-deactivate-feedback-dialog-header i { + font-size: 19px; +} +#elementor-deactivate-feedback-dialog-header-title { + font-size: 15px; + text-transform: uppercase; + font-weight: bold; + padding-inline-start: 5px; +} +#elementor-deactivate-feedback-dialog-form-caption { + font-weight: bold; + font-size: 15px; + line-height: 1.4; +} +#elementor-deactivate-feedback-dialog-form-body { + padding-block-start: 30px; + padding-block-end: 15px; +} + +.elementor-deactivate-feedback-dialog-input-wrapper { + display: flex; + align-items: center; + line-height: 2; + overflow: hidden; +} + +#elementor-hidden-area { + display: none; +} + +#elementor-import-template-trigger { + cursor: pointer; +} + +#elementor-import-template-area { + display: none; + margin: 50px 0 30px; + text-align: center; +} + +#elementor-import-template-form { + display: inline-block; + margin-block-start: 30px; + padding: 30px 50px; + background-color: #FFFFFF; + border: 1px solid #e5e5e5; +} + +#elementor-import-template-title { + font-size: 18px; + color: #555d66; +} + +.form-table:not(.elementor-maintenance-mode-is-enabled) .elementor-default-hide { + display: none; +} + +.elementor-maintenance-mode-error { + color: red; + line-height: 1.6; + display: none; +} + +#tab-replace_url.elementor-active ~ p.submit, +#tab-fontawesome4_migration.elementor-active ~ p.submit, +#tab-import-export-kit.elementor-active ~ p.submit { + display: none; +} + +#elementor_replace_url > div { + max-width: 800px; +} +#elementor_replace_url > div input { + margin-block-end: 6px; +} + +#elementor_rollback > div, +#elementor_rollback_pro > div { + display: flex; +} +#elementor_rollback > div input, +#elementor_rollback > div select, +#elementor_rollback_pro > div input, +#elementor_rollback_pro > div select { + margin-inline-end: 6px; +} + +.tab-import-export-kit__wrapper { + margin: 40px 0; + max-width: 700px; +} +.tab-import-export-kit__container { + background-color: white; + font-size: 16px; + max-width: 700px; + padding: 30px; +} +.tab-import-export-kit__container:not(:first-child) { + margin-block-start: 5px; +} +.tab-import-export-kit__container p { + font-size: 16px; + margin: 20px 0 25px; +} +.tab-import-export-kit__info { + font-size: 14px; +} +.tab-import-export-kit__container a:not(.elementor-button), .tab-import-export-kit__info a { + color: var(--e-a-color-info); + text-decoration: underline; +} +.tab-import-export-kit__box { + display: flex; + justify-content: space-between; + align-items: flex-start; +} +.tab-import-export-kit__box h2 { + font-size: 28px; + font-weight: normal; + line-height: 1; + margin: 0; +} +.tab-import-export-kit__box .elementor-button.elementor-button-success { + font-weight: bold; + padding: 8px 16px; + text-transform: initial; +} + +.tab-import-export-kit__revert .tab-import-export-kit__kit-item { + background-color: rgba(255, 255, 255, 0.5); + box-shadow: 0 4px 10px rgba(0, 0, 0, 0.05); + border-radius: 0.1875rem; + margin-block-end: 15px; + display: inline-block; +} +.tab-import-export-kit__revert .tab-import-export-kit__kit-item header { + border-block-end: 1px solid #F1F2F3; + padding: 0.625rem; +} +.tab-import-export-kit__revert .tab-import-export-kit__kit-item h3 { + font-size: 0.875rem; + margin: 0; +} +.tab-import-export-kit__revert .tab-import-export-kit__kit-item img { + width: 330px; + height: 315px; + padding: 0.625rem; +} +.tab-import-export-kit__revert .button, .tab-import-export-kit__revert .button:hover { + color: #a94442; + border-color: #a94442; + display: inline-block; +} + +#dashboard-widgets .e-dashboard-widget h3.e-heading { + font-weight: 600; + margin-block-end: 13px; +} +#dashboard-widgets .e-dashboard-widget .e-divider_bottom { + border-block-end: 1px solid #eee; + margin: 0 -12px; + padding: 6px 12px; +} +#dashboard-widgets .e-dashboard-widget .e-divider_top { + border-block-start: 1px solid #eee; + margin: 0 -12px; + padding: 12px 12px 0; +} +#dashboard-widgets .e-dashboard-widget .e-quick-actions-wrap .e-divider_top, +#dashboard-widgets .e-dashboard-widget .e-news-feed-wrap .e-divider_top { + padding-block-start: 18px; + margin-block-start: 18px; +} + +.e-dashboard-widget .dashicons { + color: #606a73; +} +.e-dashboard-widget ul.e-action-list li { + margin-block-start: 14px; +} +.e-dashboard-widget ul.e-action-list li a { + margin-inline-start: 5px; +} + +.e-dashboard-overview .dashicons { + vertical-align: middle; + font-size: 17px; +} +.e-dashboard-overview .e-overview__header { + display: table; + width: 100%; + box-shadow: 0 5px 8px rgba(0, 0, 0, 0.05); + margin: 0 -12px 8px; + padding: 0 12px 12px; +} +.e-dashboard-overview .e-overview__logo, .e-dashboard-overview .e-overview__versions, .e-dashboard-overview .e-overview__create { + display: table-cell; + vertical-align: middle; +} +.e-dashboard-overview .e-overview__logo { + width: 30px; +} +.e-dashboard-overview .e-overview__versions { + padding: 0 10px; + font-size: 0.9em; + line-height: 1.5; +} +.e-dashboard-overview .e-overview__version { + display: block; +} +.e-dashboard-overview .e-overview__create { + text-align: end; +} +.e-dashboard-overview .e-overview__feed { + font-size: 14px; + font-weight: 500; +} +.e-dashboard-overview .e-overview__post { + margin-block-start: 10px; +} +.e-dashboard-overview .e-overview__post-link { + display: inline-block; +} +.e-dashboard-overview .e-overview__badge { + background: #0A875A; + color: white; + font-size: 0.75em; + padding: 3px 6px; + border-radius: 3px; + text-transform: uppercase; +} +.e-dashboard-overview .e-overview__post-description { + margin: 0 0 1.5em; +} +.e-dashboard-overview .e-overview__recently-edited li { + color: #72777c; +} +.e-dashboard-overview .e-overview__footer.e-divider_top { + padding-block-start: 12px; + padding-block-end: 0; +} +.e-dashboard-overview .e-overview__footer ul { + display: flex; + list-style: none; + margin: 0; + padding: 0; +} +.e-dashboard-overview .e-overview__footer ul li { + padding: 0 10px; + margin: 0; + border-inline-start: 1px solid #ddd; +} +.e-dashboard-overview .e-overview__footer ul li:first-child { + padding-inline-start: 0; + border: none; +} +.e-dashboard-overview .e-overview__go-pro a, .e-dashboard-overview .e-overview__ai a { + color: #93003f; + font-weight: 500; +} + +.post-type-elementor_library #elementor-template-library-tabs-wrapper { + padding-block-start: 2em; + margin-block-end: 2em; +} +.post-type-elementor_library th#taxonomy-elementor_library_category { + width: 110px; +} + +#elementor-new-template-modal .dialog-message { + max-height: 70vh; +} +#elementor-new-template-modal .e-hidden { + display: none !important; +} +#elementor-new-template-dialog-content { + display: flex; + align-items: center; + height: 100%; + text-align: start; +} +@media (max-width: 1439px) { + #elementor-new-template-dialog-content { + padding: 0 50px; + } +} +@media (min-width: 1440px) { + #elementor-new-template-dialog-content { + padding: 0 120px; + } +} +#elementor-new-template__description { + width: 35%; + max-width: 300px; + padding-inline-end: 100px; +} +#elementor-new-template__description__title { + font-size: 30px; +} +#elementor-new-template__description__title span { + font-weight: bold; +} +#elementor-new-template__description__content { + font-size: 16px; + padding: 30px 0; +} +#elementor-new-template__take_a_tour { + display: flex; + align-items: center; + font-size: 15px; +} +#elementor-new-template__take_a_tour i { + color: var(--e-a-color-accent); + font-size: 30px; +} +#elementor-new-template__take_a_tour a { + padding-inline-start: 10px; + font-weight: 500; +} +#elementor-new-template__form { + flex-grow: 1; + max-width: 440px; + padding: 55px; + background-color: var(--e-a-color-white); + border-radius: var(--e-a-border-radius); + border: var(--e-a-border); +} +#elementor-new-template__form__title { + font-size: 23px; +} +#elementor-new-template__form__template-type.elementor-form-field__select { + max-width: initial; +} +#elementor-new-template__form__template-type-badge { + position: absolute; + display: flex; + align-items: center; + justify-content: center; + gap: 2px; + border-radius: 2px; + background-color: #F1F2F3; + padding: 4px; + font-size: 8px; + font-weight: 500; + line-height: 1; + text-transform: uppercase; + inset-block-start: 50%; + inset-inline-end: 28px; + transform: translateY(-50%); +} +#elementor-new-template__form .elementor-form-field__label { + display: block; + margin: 25px 0 7px; + font-size: 14px; + line-height: 1; +} +#elementor-new-template__form .elementor-form-field input, +#elementor-new-template__form .elementor-form-field select { + width: 100%; + height: 50px; + padding: 10px; + font-size: 14px; + box-shadow: none; + border-radius: var(--e-a-border-radius); + background: none; + border: var(--e-a-border-bold); + outline: none; +} +#elementor-new-template__form .elementor-form-field input:focus, +#elementor-new-template__form .elementor-form-field select:focus { + border-color: var(--e-a-border-color-focus); +} +#elementor-new-template__form .elementor-form-field__select { + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + cursor: pointer; +} +#elementor-new-template__form .elementor-form-field__select__wrapper { + position: relative; +} +#elementor-new-template__form .elementor-form-field__select__wrapper:after { + font-family: eicons; + content: "\e8ad"; + position: absolute; + inset-block-start: 50%; + inset-inline-end: 10px; + transform: translateY(-50%); +} +#elementor-new-template__form__submit, #elementor-new-template__form__lock_button { + display: block; + width: 100%; + height: 50px; + margin-block-start: 24px; + box-sizing: border-box; + text-align: center; +} + +@media (max-width: 1024px) { + #elementor-new-template__description { + max-width: 250px; + padding-inline-end: 30px; + } +} +@media (max-width: 767px) { + #elementor-new-template__description { + display: none; + } +} +#elementor-role-manager { + max-width: 500px; + margin-block-start: 50px; +} +#elementor-role-manager h3 { + color: #3f444b; + font-weight: normal; + font-size: 22px; +} +#elementor-role-manager .elementor-settings-form-page { + padding: 0; +} +#elementor-role-manager .elementor-role-row { + background: #ffffff; + color: #3f444b; + margin-block-end: 2px; +} +#elementor-role-manager .elementor-role-row .elementor-role-label { + display: flex; + padding: 15px 20px; + font-weight: 500; + cursor: pointer; +} +#elementor-role-manager .elementor-role-row .elementor-role-label span.elementor-role-name { + padding-inline-end: 20px; +} +#elementor-role-manager .elementor-role-row .elementor-role-label span.elementor-role-toggle { + text-align: end; + flex-grow: 1; +} +#elementor-role-manager .elementor-role-row .elementor-role-label span.elementor-role-excluded-indicator { + color: #9DA5AE; +} +#elementor-role-manager .elementor-role-row .elementor-role-controls { + background-color: #F9FAFA; + padding: 20px 20px 5px; +} +#elementor-role-manager .elementor-role-row .elementor-role-controls > div { + margin-block-end: 15px; +} +#elementor-role-manager .elementor-role-row .elementor-role-controls .elementor-role-go-pro { + display: flex; + align-items: center; +} +#elementor-role-manager .elementor-role-row .elementor-role-controls .elementor-role-go-pro .elementor-role-go-pro__desc { + font-weight: 500; + font-style: italic; + flex-grow: 1; +} +#elementor-role-manager .elementor-role-row .elementor-role-controls .elementor-role-go-pro .elementor-role-go-pro__link { + display: flex; +} +#elementor-role-manager .elementor-role-row .elementor-role-controls-advanced > div + div { + margin-block-start: 15px; +} +#elementor-role-manager .elementor-role-control-warning { + color: var(--e-a-color-danger); +} + +#elementor-beta-tester-modal { + color: var(--e-a-color-txt); +} +#elementor-beta-tester-modal .elementor-templates-modal__header__items-area { + color: var(--e-a-color-txt); + cursor: pointer; +} +#elementor-beta-tester-modal .elementor-templates-modal__header__items-area:hover .elementor-beta-tester-do-not-show-again, +#elementor-beta-tester-modal .elementor-templates-modal__header__items-area:hover .elementor-templates-modal__header__item > i { + color: var(--e-a-color-txt-hover); +} +#elementor-beta-tester-modal .elementor-templates-modal__header__items-area .elementor-templates-modal__header__close { + border: none; +} +#elementor-beta-tester-modal .elementor-templates-modal__header__items-area .elementor-beta-tester-do-not-show-again { + text-transform: uppercase; + font-weight: bold; + font-size: 12px; + transition: var(--e-a-transition-hover); +} +#elementor-beta-tester-modal .dialog-lightbox-widget-content { + max-width: 500px; + height: initial; +} +#elementor-beta-tester-modal .dialog-lightbox-message { + padding: 40px; + height: 300px; + background-color: var(--e-a-bg-default); +} + +#elementor-beta-tester-form__caption { + font-weight: bold; + font-size: 20px; +} +#elementor-beta-tester-form__description { + font-size: 15px; + margin-block-start: 10px; +} +#elementor-beta-tester-form__input-wrapper { + display: flex; + margin-block-start: 30px; +} +#elementor-beta-tester-form__input-wrapper .elementor-button { + border-start-start-radius: 0; + border-start-end-radius: 3px; + border-end-start-radius: 0; + border-end-end-radius: 3px; +} +#elementor-beta-tester-form__email { + flex-grow: 1; + border: var(--e-a-border); + border-inline-end: 0; + border-start-start-radius: 3px; + border-start-end-radius: 0; + border-end-start-radius: 3px; + border-end-end-radius: 0; + margin: 0; + padding: 10px; + height: 50px; +} +#elementor-beta-tester-form__terms { + margin-block-start: 40px; + font-size: 11px; + color: var(--e-a-color-txt-muted); +} + +.e-experiment__title { + display: flex; + align-items: flex-start; + flex-direction: column; +} +.e-experiment__title__indicator { + position: absolute; + height: 10px; + width: 10px; + border-radius: 50%; + border: 2px solid white; + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); + flex-shrink: 0; + margin-block-start: 2px; +} +.e-experiment__title__indicator--active { + background: #39b54a; +} +.e-experiment__title__label { + margin-inline-start: 24px; +} +.e-experiment__title__tag { + background: #0085ba; + color: #ffffff; + font-size: 0.8em; + padding: 3px 6px; + line-height: 1; + border-radius: 3px; + font-weight: 600; + margin-block-start: 5px; + margin-inline-start: 24px; +} +.e-experiment__title__tag__secondary { + background: rgba(0, 0, 0, 0.1); + color: inherit; +} +.e-experiment__table-title { + margin: 30px 0; +} +.e-experiment__dependency, .e-experiment__status { + margin-block-start: 4px; + font-size: 0.9em; + line-height: 18px; + font-weight: bold; + font-style: italic; +} +.e-experiment__button.button { + margin-block: 18px 22px; + margin-inline: 0 14px; +} +.e-experiment__dependency { + color: #21759b; +} +.e-experiment__dependency__title { + font-weight: inherit; +} + +#tab-experiments .form-table tr { + border-block-end: 1px solid #dcdcde; +} +#tab-experiments .form-table tr:last-child { + border-block-end: none; +} +#tab-experiments .form-table tr .description { + font-size: 0.9em; + margin: 10px 0; + max-width: 820px; +} + +.e-landing-pages-empty .elementor-blank_state { + padding: 5em 0 2em 0; +} +.e-landing-pages-empty .e-trashed-items { + text-align: center; +} + +.e-feature-promotion { + --e-a-top-bar-height: 50px; + --e-a-content-area-spacing: 110px; + --e-black: #000000; + width: 1220px; + height: calc(100vh - var(--e-a-top-bar-height) - var(--e-a-content-area-spacing)); + display: grid; + grid-template-columns: repeat(2, auto); + grid-template-rows: auto; + justify-content: space-between; + align-items: center; + align-content: center; + margin: auto; + transform: translate(-10px, 40px); + text-align: center; + font-family: var(--e-a-font-family); +} +.e-feature-promotion_data { + grid-column: 1/2; + grid-row: 1/2; + display: flex; + flex-direction: column; + justify-content: center; + align-items: self-start; + margin-inline-start: 15px; + padding-inline-end: 40px; + max-width: 608px; +} +.e-feature-promotion_data h3 { + margin-block-start: 0; + margin-inline-end: 0; + margin-block-end: 33px; + margin-inline-start: 0; + text-align: start; + font-size: 1.85rem; + font-weight: 300; + color: var(--e-black); + line-height: 1.2; +} +.e-feature-promotion_data ul { + margin-block-start: 0; + margin-block-end: 1.6rem; + text-align: start; +} +.e-feature-promotion_data ul > li { + margin-block-start: 0; + margin-inline-end: 9px; + margin-block-end: 8px; + margin-inline-start: 8px; + display: flex; + font-size: 1rem; + line-height: 21px; + color: var(--e-black); +} +.e-feature-promotion_data ul > li:before { + content: url("data:image/svg+xml,%3Csvg width='25' height='24' viewBox='0 0 25 24' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M21.5201 6.46967C21.813 6.76256 21.813 7.23744 21.5201 7.53033L11.5201 17.5303C11.2272 17.8232 10.7523 17.8232 10.4594 17.5303L5.45942 12.5303C5.16652 12.2374 5.16652 11.7626 5.45942 11.4697C5.75231 11.1768 6.22718 11.1768 6.52008 11.4697L10.9897 15.9393L20.4594 6.46967C20.7523 6.17678 21.2272 6.17678 21.5201 6.46967Z' fill='%230C0D0E'/%3E%3C/svg%3E%0A"); + font-size: 1.4rem; + margin-block-start: -3px; + margin-inline-end: 9px; + margin-block-end: 0; + margin-inline-start: -9px; +} +.e-feature-promotion_data > .go-pro { + display: flex; + align-items: center; + padding: 9px 15px; + font-size: 0.9rem; +} +.e-feature-promotion_data > .side-note { + justify-self: baseline; + margin-block-start: 2rem; + text-align: start; +} +.e-feature-promotion_iframe { + grid-column: 2/3; + grid-row: 1/2; + aspect-ratio: 16/9; + width: 608px; + border: none; +} + +body.rtl .e-feature-promotion { + transform: translateX(10px); +} + +@media (max-width: 1410px) { + .e-feature-promotion { + display: flex; + flex-direction: column; + justify-content: flex-start; + width: 90%; + } + .e-feature-promotion_data { + margin-block-end: 2rem; + margin-inline-start: unset; + padding-inline-end: unset; + } + .e-feature-promotion_iframe { + max-width: 90%; + aspect-ratio: 16/9; + } +} +.elementor-control-notice { + display: flex; + justify-content: flex-start; + align-items: flex-start; + gap: 8px; + padding: 16px; + border-radius: 3px; + border: 1px solid var(--notice-control-color, var(--e-a-color-txt)); + color: var(--e-a-color-txt); + font-size: 12px; + font-weight: 400; + line-height: 1.5; + text-align: start; + margin-block-start: 10px; +} +.elementor-control-notice-type-info { + --notice-control-color: var(--e-a-color-info); +} +.elementor-control-notice-type-success { + --notice-control-color: var(--e-a-color-success); +} +.elementor-control-notice-type-warning { + --notice-control-color: var(--e-a-color-warning); +} +.elementor-control-notice-type-danger { + --notice-control-color: var(--e-a-color-danger); +} +.elementor-control-notice-icon { + flex-basis: 18px; + color: var(--notice-control-color); +} +.elementor-control-notice-main { + display: flex; + flex-direction: column; + justify-content: flex-start; + align-items: flex-start; + gap: 6px; + flex: 1; +} +.elementor-control-notice-main-heading { + font-weight: 700; + font-style: italic; +} +.elementor-control-notice-main-content { + font-style: italic; + line-height: 1.5; +} +.elementor-control-notice-main-actions { + display: flex; + gap: 10px; + padding-block-start: 8px; +} +.elementor-control-notice-main a { + color: inherit; + font-weight: 700; + cursor: pointer; +} +.elementor-control-notice-main a:hover, .elementor-control-notice-main a:focus { + color: inherit; +} +.elementor-control-notice-dismiss { + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + background-color: transparent; + border: 0; + padding: 0; + margin: 0; + cursor: pointer; +} +/*# sourceMappingURL=admin.css.map */ \ No newline at end of file diff --git a/wp-content/plugins/elementor/assets/css/admin.min.css b/wp-content/plugins/elementor/assets/css/admin.min.css new file mode 100644 index 0000000..96a6d77 --- /dev/null +++ b/wp-content/plugins/elementor/assets/css/admin.min.css @@ -0,0 +1,2 @@ +/*! elementor - v3.20.0 - 26-03-2024 */ +#elementor-deactivate-feedback-modal .dialog-skip,#elementor-deactivate-feedback-modal .dialog-submit,.e-btn,.elementor-button{font-size:12px;font-weight:500;line-height:1.2;padding:8px 16px;outline:none;border:none;border-radius:var(--e-a-border-radius);background-color:var(--e-a-btn-bg);color:var(--e-a-btn-color-invert);transition:var(--e-a-transition-hover)}#elementor-deactivate-feedback-modal .dialog-skip:hover,#elementor-deactivate-feedback-modal .dialog-submit:hover,.e-btn:hover,.elementor-button:hover{border:none}#elementor-deactivate-feedback-modal .dialog-skip:focus,#elementor-deactivate-feedback-modal .dialog-skip:hover,#elementor-deactivate-feedback-modal .dialog-submit:focus,#elementor-deactivate-feedback-modal .dialog-submit:hover,.e-btn:focus,.e-btn:hover,.elementor-button:focus,.elementor-button:hover{background-color:var(--e-a-btn-bg-hover);color:var(--e-a-btn-color-invert)}#elementor-deactivate-feedback-modal .dialog-skip:active,#elementor-deactivate-feedback-modal .dialog-submit:active,.e-btn:active,.elementor-button:active{background-color:var(--e-a-btn-bg-active)}#elementor-deactivate-feedback-modal .dialog-skip:not([disabled]),#elementor-deactivate-feedback-modal .dialog-submit:not([disabled]),.e-btn:not([disabled]),.elementor-button:not([disabled]){cursor:pointer}#elementor-deactivate-feedback-modal .dialog-skip:disabled,#elementor-deactivate-feedback-modal .dialog-submit:disabled,.e-btn:disabled,.elementor-button:disabled{background-color:var(--e-a-btn-bg-disabled);color:var(--e-a-btn-color-disabled)}#elementor-deactivate-feedback-modal .dialog-skip:not(.elementor-button-state) .elementor-state-icon,#elementor-deactivate-feedback-modal .dialog-submit:not(.elementor-button-state) .elementor-state-icon,.e-btn:not(.elementor-button-state) .elementor-state-icon,.elementor-button:not(.elementor-button-state) .elementor-state-icon{display:none}#elementor-deactivate-feedback-modal .dialog-skip,#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-submit,#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-submit,#elementor-deactivate-feedback-modal .e-btn-txt.dialog-submit,.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-cancel.dialog-submit,.dialog-type-alert .dialog-buttons-wrapper .e-btn.dialog-button.dialog-cancel,.dialog-type-alert .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-cancel,.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-cancel.dialog-submit,.dialog-type-confirm .dialog-buttons-wrapper .e-btn.dialog-button.dialog-cancel,.dialog-type-confirm .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-cancel,.e-btn.e-btn-txt,.elementor-button.e-btn-txt{background:transparent;color:var(--e-a-color-txt)}#elementor-deactivate-feedback-modal .dialog-skip:focus,#elementor-deactivate-feedback-modal .dialog-skip:hover,#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-submit:focus,#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-submit:hover,#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-submit:focus,#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-submit:hover,#elementor-deactivate-feedback-modal .e-btn-txt.dialog-submit:focus,#elementor-deactivate-feedback-modal .e-btn-txt.dialog-submit:hover,.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-cancel.dialog-submit:focus,.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-cancel.dialog-submit:hover,.dialog-type-alert .dialog-buttons-wrapper .e-btn.dialog-button.dialog-cancel:focus,.dialog-type-alert .dialog-buttons-wrapper .e-btn.dialog-button.dialog-cancel:hover,.dialog-type-alert .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-cancel:focus,.dialog-type-alert .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-cancel:hover,.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-cancel.dialog-submit:focus,.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-cancel.dialog-submit:hover,.dialog-type-confirm .dialog-buttons-wrapper .e-btn.dialog-button.dialog-cancel:focus,.dialog-type-confirm .dialog-buttons-wrapper .e-btn.dialog-button.dialog-cancel:hover,.dialog-type-confirm .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-cancel:focus,.dialog-type-confirm .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-cancel:hover,.e-btn.e-btn-txt:focus,.e-btn.e-btn-txt:hover,.elementor-button.e-btn-txt:focus,.elementor-button.e-btn-txt:hover{background:var(--e-a-bg-hover);color:var(--e-a-color-txt-hover)}#elementor-deactivate-feedback-modal .dialog-skip:disabled,#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-submit:disabled,#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-submit:disabled,#elementor-deactivate-feedback-modal .e-btn-txt.dialog-submit:disabled,.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-cancel.dialog-submit:disabled,.dialog-type-alert .dialog-buttons-wrapper .e-btn.dialog-button.dialog-cancel:disabled,.dialog-type-alert .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-cancel:disabled,.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-cancel.dialog-submit:disabled,.dialog-type-confirm .dialog-buttons-wrapper .e-btn.dialog-button.dialog-cancel:disabled,.dialog-type-confirm .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-cancel:disabled,.e-btn.e-btn-txt:disabled,.elementor-button.e-btn-txt:disabled{background:transparent;color:var(--e-a-color-txt-disabled)}#elementor-deactivate-feedback-modal .e-btn-txt-border.dialog-skip,#elementor-deactivate-feedback-modal .e-btn-txt-border.dialog-submit,.e-btn.e-btn-txt-border,.elementor-button.e-btn-txt-border{border:1px solid var(--e-a-color-txt-muted)}#elementor-deactivate-feedback-modal .e-success.dialog-skip,#elementor-deactivate-feedback-modal .e-success.dialog-submit,#elementor-deactivate-feedback-modal .elementor-button-success.dialog-skip,#elementor-deactivate-feedback-modal .elementor-button-success.dialog-submit,.e-btn.e-success,.e-btn.elementor-button-success,.elementor-button.e-success,.elementor-button.elementor-button-success{background-color:var(--e-a-btn-bg-success)}#elementor-deactivate-feedback-modal .e-success.dialog-skip:focus,#elementor-deactivate-feedback-modal .e-success.dialog-skip:hover,#elementor-deactivate-feedback-modal .e-success.dialog-submit:focus,#elementor-deactivate-feedback-modal .e-success.dialog-submit:hover,#elementor-deactivate-feedback-modal .elementor-button-success.dialog-skip:focus,#elementor-deactivate-feedback-modal .elementor-button-success.dialog-skip:hover,#elementor-deactivate-feedback-modal .elementor-button-success.dialog-submit:focus,#elementor-deactivate-feedback-modal .elementor-button-success.dialog-submit:hover,.e-btn.e-success:focus,.e-btn.e-success:hover,.e-btn.elementor-button-success:focus,.e-btn.elementor-button-success:hover,.elementor-button.e-success:focus,.elementor-button.e-success:hover,.elementor-button.elementor-button-success:focus,.elementor-button.elementor-button-success:hover{background-color:var(--e-a-btn-bg-success-hover)}#elementor-deactivate-feedback-modal .dialog-submit,#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-skip,#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-take_over.dialog-skip,#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-skip,#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-take_over.dialog-skip,#elementor-deactivate-feedback-modal .e-primary.dialog-skip,.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-ok.dialog-skip,.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-take_over.dialog-skip,.dialog-type-alert .dialog-buttons-wrapper .e-btn.dialog-button.dialog-ok,.dialog-type-alert .dialog-buttons-wrapper .e-btn.dialog-button.dialog-take_over,.dialog-type-alert .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-ok,.dialog-type-alert .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-take_over,.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-ok.dialog-skip,.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-take_over.dialog-skip,.dialog-type-confirm .dialog-buttons-wrapper .e-btn.dialog-button.dialog-ok,.dialog-type-confirm .dialog-buttons-wrapper .e-btn.dialog-button.dialog-take_over,.dialog-type-confirm .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-ok,.dialog-type-confirm .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-take_over,.e-btn.e-primary,.elementor-button.e-primary{background-color:var(--e-a-btn-bg-primary);color:var(--e-a-btn-color)}#elementor-deactivate-feedback-modal .dialog-submit:focus,#elementor-deactivate-feedback-modal .dialog-submit:hover,#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-skip:focus,#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-skip:hover,#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-take_over.dialog-skip:focus,#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-take_over.dialog-skip:hover,#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-skip:focus,#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-skip:hover,#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-take_over.dialog-skip:focus,#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-take_over.dialog-skip:hover,#elementor-deactivate-feedback-modal .e-primary.dialog-skip:focus,#elementor-deactivate-feedback-modal .e-primary.dialog-skip:hover,.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-ok.dialog-skip:focus,.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-ok.dialog-skip:hover,.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-take_over.dialog-skip:focus,.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-take_over.dialog-skip:hover,.dialog-type-alert .dialog-buttons-wrapper .e-btn.dialog-button.dialog-ok:focus,.dialog-type-alert .dialog-buttons-wrapper .e-btn.dialog-button.dialog-ok:hover,.dialog-type-alert .dialog-buttons-wrapper .e-btn.dialog-button.dialog-take_over:focus,.dialog-type-alert .dialog-buttons-wrapper .e-btn.dialog-button.dialog-take_over:hover,.dialog-type-alert .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-ok:focus,.dialog-type-alert .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-ok:hover,.dialog-type-alert .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-take_over:focus,.dialog-type-alert .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-take_over:hover,.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-ok.dialog-skip:focus,.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-ok.dialog-skip:hover,.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-take_over.dialog-skip:focus,.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-take_over.dialog-skip:hover,.dialog-type-confirm .dialog-buttons-wrapper .e-btn.dialog-button.dialog-ok:focus,.dialog-type-confirm .dialog-buttons-wrapper .e-btn.dialog-button.dialog-ok:hover,.dialog-type-confirm .dialog-buttons-wrapper .e-btn.dialog-button.dialog-take_over:focus,.dialog-type-confirm .dialog-buttons-wrapper .e-btn.dialog-button.dialog-take_over:hover,.dialog-type-confirm .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-ok:focus,.dialog-type-confirm .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-ok:hover,.dialog-type-confirm .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-take_over:focus,.dialog-type-confirm .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-take_over:hover,.e-btn.e-primary:focus,.e-btn.e-primary:hover,.elementor-button.e-primary:focus,.elementor-button.e-primary:hover{background-color:var(--e-a-btn-bg-primary-hover);color:var(--e-a-btn-color)}#elementor-deactivate-feedback-modal .dialog-submit.dialog-skip,#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-submit,#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-skip,#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-take_over.dialog-skip,#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-submit,#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-skip,#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-take_over.dialog-skip,#elementor-deactivate-feedback-modal .e-btn-txt.dialog-submit,#elementor-deactivate-feedback-modal .e-primary.dialog-skip,.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-cancel.dialog-submit,.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-ok.dialog-skip,.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-take_over.dialog-skip,.dialog-type-alert .dialog-buttons-wrapper .e-btn.dialog-button.dialog-cancel.dialog-take_over,.dialog-type-alert .dialog-buttons-wrapper .e-btn.dialog-button.dialog-ok.dialog-cancel,.dialog-type-alert .dialog-buttons-wrapper .e-btn.e-btn-txt.dialog-button.dialog-ok,.dialog-type-alert .dialog-buttons-wrapper .e-btn.e-btn-txt.dialog-button.dialog-take_over,.dialog-type-alert .dialog-buttons-wrapper .e-btn.e-primary.dialog-button.dialog-cancel,.dialog-type-alert .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-cancel.dialog-take_over,.dialog-type-alert .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-ok.dialog-cancel,.dialog-type-alert .dialog-buttons-wrapper .elementor-button.e-btn-txt.dialog-button.dialog-ok,.dialog-type-alert .dialog-buttons-wrapper .elementor-button.e-btn-txt.dialog-button.dialog-take_over,.dialog-type-alert .dialog-buttons-wrapper .elementor-button.e-primary.dialog-button.dialog-cancel,.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-cancel.dialog-submit,.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-ok.dialog-skip,.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-take_over.dialog-skip,.dialog-type-confirm .dialog-buttons-wrapper .e-btn.dialog-button.dialog-cancel.dialog-take_over,.dialog-type-confirm .dialog-buttons-wrapper .e-btn.dialog-button.dialog-ok.dialog-cancel,.dialog-type-confirm .dialog-buttons-wrapper .e-btn.e-btn-txt.dialog-button.dialog-ok,.dialog-type-confirm .dialog-buttons-wrapper .e-btn.e-btn-txt.dialog-button.dialog-take_over,.dialog-type-confirm .dialog-buttons-wrapper .e-btn.e-primary.dialog-button.dialog-cancel,.dialog-type-confirm .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-cancel.dialog-take_over,.dialog-type-confirm .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-ok.dialog-cancel,.dialog-type-confirm .dialog-buttons-wrapper .elementor-button.e-btn-txt.dialog-button.dialog-ok,.dialog-type-confirm .dialog-buttons-wrapper .elementor-button.e-btn-txt.dialog-button.dialog-take_over,.dialog-type-confirm .dialog-buttons-wrapper .elementor-button.e-primary.dialog-button.dialog-cancel,.e-btn.e-primary.e-btn-txt,.elementor-button.e-primary.e-btn-txt{background:transparent;color:var(--e-a-color-primary-bold)}#elementor-deactivate-feedback-modal .dialog-submit.dialog-skip:focus,#elementor-deactivate-feedback-modal .dialog-submit.dialog-skip:hover,#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-submit.dialog-skip:focus,#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-submit.dialog-skip:hover,#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-submit:focus,#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-submit:hover,#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over.dialog-skip:focus,#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over.dialog-skip:hover,#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over.dialog-submit:focus,#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over.dialog-submit:hover,#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel.dialog-skip:focus,#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel.dialog-skip:hover,#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel.dialog-submit:focus,#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel.dialog-submit:hover,#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-skip:focus,#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-skip:hover,#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-submit.dialog-skip:focus,#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-submit.dialog-skip:hover,#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-take_over.dialog-skip:focus,#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-take_over.dialog-skip:hover,#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-take_over.dialog-submit.dialog-skip:focus,#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-take_over.dialog-submit.dialog-skip:hover,#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .e-btn-txt.dialog-button.dialog-ok.dialog-skip:focus,#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .e-btn-txt.dialog-button.dialog-ok.dialog-skip:hover,#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .e-btn-txt.dialog-button.dialog-ok.dialog-submit:focus,#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .e-btn-txt.dialog-button.dialog-ok.dialog-submit:hover,#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .e-btn-txt.dialog-button.dialog-take_over.dialog-skip:focus,#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .e-btn-txt.dialog-button.dialog-take_over.dialog-skip:hover,#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .e-btn-txt.dialog-button.dialog-take_over.dialog-submit:focus,#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .e-btn-txt.dialog-button.dialog-take_over.dialog-submit:hover,#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .e-btn.dialog-button.dialog-cancel.dialog-submit:focus,#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .e-btn.dialog-button.dialog-cancel.dialog-submit:hover,#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .e-btn.dialog-button.dialog-ok.dialog-skip:focus,#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .e-btn.dialog-button.dialog-ok.dialog-skip:hover,#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .e-btn.dialog-button.dialog-take_over.dialog-skip:focus,#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .e-btn.dialog-button.dialog-take_over.dialog-skip:hover,#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .e-primary.dialog-button.dialog-cancel.dialog-skip:focus,#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .e-primary.dialog-button.dialog-cancel.dialog-skip:hover,#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .e-primary.dialog-button.dialog-cancel.dialog-submit:focus,#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .e-primary.dialog-button.dialog-cancel.dialog-submit:hover,#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-cancel.dialog-submit:focus,#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-cancel.dialog-submit:hover,#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-ok.dialog-skip:focus,#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-ok.dialog-skip:hover,#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-take_over.dialog-skip:focus,#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-take_over.dialog-skip:hover,#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-submit.dialog-skip:focus,#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-submit.dialog-skip:hover,#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-submit:focus,#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-submit:hover,#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over.dialog-skip:focus,#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over.dialog-skip:hover,#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over.dialog-submit:focus,#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over.dialog-submit:hover,#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel.dialog-skip:focus,#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel.dialog-skip:hover,#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel.dialog-submit:focus,#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel.dialog-submit:hover,#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-skip:focus,#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-skip:hover,#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-submit.dialog-skip:focus,#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-submit.dialog-skip:hover,#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-take_over.dialog-skip:focus,#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-take_over.dialog-skip:hover,#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-take_over.dialog-submit.dialog-skip:focus,#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-take_over.dialog-submit.dialog-skip:hover,#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .e-btn-txt.dialog-button.dialog-ok.dialog-skip:focus,#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .e-btn-txt.dialog-button.dialog-ok.dialog-skip:hover,#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .e-btn-txt.dialog-button.dialog-ok.dialog-submit:focus,#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .e-btn-txt.dialog-button.dialog-ok.dialog-submit:hover,#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .e-btn-txt.dialog-button.dialog-take_over.dialog-skip:focus,#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .e-btn-txt.dialog-button.dialog-take_over.dialog-skip:hover,#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .e-btn-txt.dialog-button.dialog-take_over.dialog-submit:focus,#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .e-btn-txt.dialog-button.dialog-take_over.dialog-submit:hover,#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .e-btn.dialog-button.dialog-cancel.dialog-submit:focus,#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .e-btn.dialog-button.dialog-cancel.dialog-submit:hover,#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .e-btn.dialog-button.dialog-ok.dialog-skip:focus,#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .e-btn.dialog-button.dialog-ok.dialog-skip:hover,#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .e-btn.dialog-button.dialog-take_over.dialog-skip:focus,#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .e-btn.dialog-button.dialog-take_over.dialog-skip:hover,#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .e-primary.dialog-button.dialog-cancel.dialog-skip:focus,#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .e-primary.dialog-button.dialog-cancel.dialog-skip:hover,#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .e-primary.dialog-button.dialog-cancel.dialog-submit:focus,#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .e-primary.dialog-button.dialog-cancel.dialog-submit:hover,#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-cancel.dialog-submit:focus,#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-cancel.dialog-submit:hover,#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-ok.dialog-skip:focus,#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-ok.dialog-skip:hover,#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-take_over.dialog-skip:focus,#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-take_over.dialog-skip:hover,#elementor-deactivate-feedback-modal .e-btn-txt.dialog-submit.dialog-skip:focus,#elementor-deactivate-feedback-modal .e-btn-txt.dialog-submit.dialog-skip:hover,#elementor-deactivate-feedback-modal .e-btn-txt.dialog-submit:focus,#elementor-deactivate-feedback-modal .e-btn-txt.dialog-submit:hover,#elementor-deactivate-feedback-modal .e-btn.dialog-submit.dialog-skip:focus,#elementor-deactivate-feedback-modal .e-btn.dialog-submit.dialog-skip:hover,#elementor-deactivate-feedback-modal .e-btn.e-btn-txt.dialog-submit:focus,#elementor-deactivate-feedback-modal .e-btn.e-btn-txt.dialog-submit:hover,#elementor-deactivate-feedback-modal .e-btn.e-primary.dialog-skip:focus,#elementor-deactivate-feedback-modal .e-btn.e-primary.dialog-skip:hover,#elementor-deactivate-feedback-modal .e-primary.dialog-skip:focus,#elementor-deactivate-feedback-modal .e-primary.dialog-skip:hover,#elementor-deactivate-feedback-modal .e-primary.dialog-submit.dialog-skip:focus,#elementor-deactivate-feedback-modal .e-primary.dialog-submit.dialog-skip:hover,#elementor-deactivate-feedback-modal .e-primary.e-btn-txt.dialog-skip:focus,#elementor-deactivate-feedback-modal .e-primary.e-btn-txt.dialog-skip:hover,#elementor-deactivate-feedback-modal .e-primary.e-btn-txt.dialog-submit:focus,#elementor-deactivate-feedback-modal .e-primary.e-btn-txt.dialog-submit:hover,#elementor-deactivate-feedback-modal .elementor-button.dialog-submit.dialog-skip:focus,#elementor-deactivate-feedback-modal .elementor-button.dialog-submit.dialog-skip:hover,#elementor-deactivate-feedback-modal .elementor-button.e-btn-txt.dialog-submit:focus,#elementor-deactivate-feedback-modal .elementor-button.e-btn-txt.dialog-submit:hover,#elementor-deactivate-feedback-modal .elementor-button.e-primary.dialog-skip:focus,#elementor-deactivate-feedback-modal .elementor-button.e-primary.dialog-skip:hover,.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-cancel.dialog-submit.dialog-skip:focus,.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-cancel.dialog-submit.dialog-skip:hover,.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-cancel.dialog-submit:focus,.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-cancel.dialog-submit:hover,.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-cancel.dialog-take_over.dialog-skip:focus,.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-cancel.dialog-take_over.dialog-skip:hover,.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-cancel.dialog-take_over.dialog-submit:focus,.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-cancel.dialog-take_over.dialog-submit:hover,.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-ok.dialog-cancel.dialog-skip:focus,.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-ok.dialog-cancel.dialog-skip:hover,.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-ok.dialog-cancel.dialog-submit:focus,.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-ok.dialog-cancel.dialog-submit:hover,.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-ok.dialog-skip:focus,.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-ok.dialog-skip:hover,.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-ok.dialog-submit.dialog-skip:focus,.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-ok.dialog-submit.dialog-skip:hover,.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-take_over.dialog-skip:focus,.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-take_over.dialog-skip:hover,.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-take_over.dialog-submit.dialog-skip:focus,.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-take_over.dialog-submit.dialog-skip:hover,.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .e-btn-txt.dialog-button.dialog-ok.dialog-skip:focus,.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .e-btn-txt.dialog-button.dialog-ok.dialog-skip:hover,.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .e-btn-txt.dialog-button.dialog-ok.dialog-submit:focus,.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .e-btn-txt.dialog-button.dialog-ok.dialog-submit:hover,.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .e-btn-txt.dialog-button.dialog-take_over.dialog-skip:focus,.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .e-btn-txt.dialog-button.dialog-take_over.dialog-skip:hover,.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .e-btn-txt.dialog-button.dialog-take_over.dialog-submit:focus,.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .e-btn-txt.dialog-button.dialog-take_over.dialog-submit:hover,.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .e-btn.dialog-button.dialog-cancel.dialog-submit:focus,.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .e-btn.dialog-button.dialog-cancel.dialog-submit:hover,.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .e-btn.dialog-button.dialog-ok.dialog-skip:focus,.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .e-btn.dialog-button.dialog-ok.dialog-skip:hover,.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .e-btn.dialog-button.dialog-take_over.dialog-skip:focus,.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .e-btn.dialog-button.dialog-take_over.dialog-skip:hover,.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .e-primary.dialog-button.dialog-cancel.dialog-skip:focus,.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .e-primary.dialog-button.dialog-cancel.dialog-skip:hover,.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .e-primary.dialog-button.dialog-cancel.dialog-submit:focus,.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .e-primary.dialog-button.dialog-cancel.dialog-submit:hover,.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .elementor-button.dialog-button.dialog-cancel.dialog-submit:focus,.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .elementor-button.dialog-button.dialog-cancel.dialog-submit:hover,.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .elementor-button.dialog-button.dialog-ok.dialog-skip:focus,.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .elementor-button.dialog-button.dialog-ok.dialog-skip:hover,.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .elementor-button.dialog-button.dialog-take_over.dialog-skip:focus,.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .elementor-button.dialog-button.dialog-take_over.dialog-skip:hover,.dialog-type-alert .dialog-buttons-wrapper .e-btn.dialog-button.dialog-cancel.dialog-take_over:focus,.dialog-type-alert .dialog-buttons-wrapper .e-btn.dialog-button.dialog-cancel.dialog-take_over:hover,.dialog-type-alert .dialog-buttons-wrapper .e-btn.dialog-button.dialog-ok.dialog-cancel:focus,.dialog-type-alert .dialog-buttons-wrapper .e-btn.dialog-button.dialog-ok.dialog-cancel:hover,.dialog-type-alert .dialog-buttons-wrapper .e-btn.e-btn-txt.dialog-button.dialog-ok:focus,.dialog-type-alert .dialog-buttons-wrapper .e-btn.e-btn-txt.dialog-button.dialog-ok:hover,.dialog-type-alert .dialog-buttons-wrapper .e-btn.e-btn-txt.dialog-button.dialog-take_over:focus,.dialog-type-alert .dialog-buttons-wrapper .e-btn.e-btn-txt.dialog-button.dialog-take_over:hover,.dialog-type-alert .dialog-buttons-wrapper .e-btn.e-primary.dialog-button.dialog-cancel:focus,.dialog-type-alert .dialog-buttons-wrapper .e-btn.e-primary.dialog-button.dialog-cancel:hover,.dialog-type-alert .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-cancel.dialog-take_over:focus,.dialog-type-alert .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-cancel.dialog-take_over:hover,.dialog-type-alert .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-ok.dialog-cancel:focus,.dialog-type-alert .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-ok.dialog-cancel:hover,.dialog-type-alert .dialog-buttons-wrapper .elementor-button.e-btn-txt.dialog-button.dialog-ok:focus,.dialog-type-alert .dialog-buttons-wrapper .elementor-button.e-btn-txt.dialog-button.dialog-ok:hover,.dialog-type-alert .dialog-buttons-wrapper .elementor-button.e-btn-txt.dialog-button.dialog-take_over:focus,.dialog-type-alert .dialog-buttons-wrapper .elementor-button.e-btn-txt.dialog-button.dialog-take_over:hover,.dialog-type-alert .dialog-buttons-wrapper .elementor-button.e-primary.dialog-button.dialog-cancel:focus,.dialog-type-alert .dialog-buttons-wrapper .elementor-button.e-primary.dialog-button.dialog-cancel:hover,.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-cancel.dialog-submit.dialog-skip:focus,.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-cancel.dialog-submit.dialog-skip:hover,.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-cancel.dialog-submit:focus,.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-cancel.dialog-submit:hover,.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-cancel.dialog-take_over.dialog-skip:focus,.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-cancel.dialog-take_over.dialog-skip:hover,.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-cancel.dialog-take_over.dialog-submit:focus,.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-cancel.dialog-take_over.dialog-submit:hover,.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-ok.dialog-cancel.dialog-skip:focus,.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-ok.dialog-cancel.dialog-skip:hover,.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-ok.dialog-cancel.dialog-submit:focus,.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-ok.dialog-cancel.dialog-submit:hover,.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-ok.dialog-skip:focus,.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-ok.dialog-skip:hover,.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-ok.dialog-submit.dialog-skip:focus,.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-ok.dialog-submit.dialog-skip:hover,.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-take_over.dialog-skip:focus,.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-take_over.dialog-skip:hover,.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-take_over.dialog-submit.dialog-skip:focus,.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-take_over.dialog-submit.dialog-skip:hover,.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .e-btn-txt.dialog-button.dialog-ok.dialog-skip:focus,.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .e-btn-txt.dialog-button.dialog-ok.dialog-skip:hover,.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .e-btn-txt.dialog-button.dialog-ok.dialog-submit:focus,.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .e-btn-txt.dialog-button.dialog-ok.dialog-submit:hover,.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .e-btn-txt.dialog-button.dialog-take_over.dialog-skip:focus,.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .e-btn-txt.dialog-button.dialog-take_over.dialog-skip:hover,.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .e-btn-txt.dialog-button.dialog-take_over.dialog-submit:focus,.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .e-btn-txt.dialog-button.dialog-take_over.dialog-submit:hover,.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .e-btn.dialog-button.dialog-cancel.dialog-submit:focus,.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .e-btn.dialog-button.dialog-cancel.dialog-submit:hover,.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .e-btn.dialog-button.dialog-ok.dialog-skip:focus,.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .e-btn.dialog-button.dialog-ok.dialog-skip:hover,.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .e-btn.dialog-button.dialog-take_over.dialog-skip:focus,.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .e-btn.dialog-button.dialog-take_over.dialog-skip:hover,.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .e-primary.dialog-button.dialog-cancel.dialog-skip:focus,.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .e-primary.dialog-button.dialog-cancel.dialog-skip:hover,.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .e-primary.dialog-button.dialog-cancel.dialog-submit:focus,.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .e-primary.dialog-button.dialog-cancel.dialog-submit:hover,.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .elementor-button.dialog-button.dialog-cancel.dialog-submit:focus,.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .elementor-button.dialog-button.dialog-cancel.dialog-submit:hover,.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .elementor-button.dialog-button.dialog-ok.dialog-skip:focus,.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .elementor-button.dialog-button.dialog-ok.dialog-skip:hover,.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .elementor-button.dialog-button.dialog-take_over.dialog-skip:focus,.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .elementor-button.dialog-button.dialog-take_over.dialog-skip:hover,.dialog-type-confirm .dialog-buttons-wrapper .e-btn.dialog-button.dialog-cancel.dialog-take_over:focus,.dialog-type-confirm .dialog-buttons-wrapper .e-btn.dialog-button.dialog-cancel.dialog-take_over:hover,.dialog-type-confirm .dialog-buttons-wrapper .e-btn.dialog-button.dialog-ok.dialog-cancel:focus,.dialog-type-confirm .dialog-buttons-wrapper .e-btn.dialog-button.dialog-ok.dialog-cancel:hover,.dialog-type-confirm .dialog-buttons-wrapper .e-btn.e-btn-txt.dialog-button.dialog-ok:focus,.dialog-type-confirm .dialog-buttons-wrapper .e-btn.e-btn-txt.dialog-button.dialog-ok:hover,.dialog-type-confirm .dialog-buttons-wrapper .e-btn.e-btn-txt.dialog-button.dialog-take_over:focus,.dialog-type-confirm .dialog-buttons-wrapper .e-btn.e-btn-txt.dialog-button.dialog-take_over:hover,.dialog-type-confirm .dialog-buttons-wrapper .e-btn.e-primary.dialog-button.dialog-cancel:focus,.dialog-type-confirm .dialog-buttons-wrapper .e-btn.e-primary.dialog-button.dialog-cancel:hover,.dialog-type-confirm .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-cancel.dialog-take_over:focus,.dialog-type-confirm .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-cancel.dialog-take_over:hover,.dialog-type-confirm .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-ok.dialog-cancel:focus,.dialog-type-confirm .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-ok.dialog-cancel:hover,.dialog-type-confirm .dialog-buttons-wrapper .elementor-button.e-btn-txt.dialog-button.dialog-ok:focus,.dialog-type-confirm .dialog-buttons-wrapper .elementor-button.e-btn-txt.dialog-button.dialog-ok:hover,.dialog-type-confirm .dialog-buttons-wrapper .elementor-button.e-btn-txt.dialog-button.dialog-take_over:focus,.dialog-type-confirm .dialog-buttons-wrapper .elementor-button.e-btn-txt.dialog-button.dialog-take_over:hover,.dialog-type-confirm .dialog-buttons-wrapper .elementor-button.e-primary.dialog-button.dialog-cancel:focus,.dialog-type-confirm .dialog-buttons-wrapper .elementor-button.e-primary.dialog-button.dialog-cancel:hover,.e-btn.e-primary.e-btn-txt:focus,.e-btn.e-primary.e-btn-txt:hover,.elementor-button.e-primary.e-btn-txt:focus,.elementor-button.e-primary.e-btn-txt:hover{background:var(--e-a-bg-primary)}#elementor-deactivate-feedback-modal .e-accent.dialog-skip,#elementor-deactivate-feedback-modal .e-accent.dialog-submit,#elementor-deactivate-feedback-modal .go-pro.dialog-skip,#elementor-deactivate-feedback-modal .go-pro.dialog-submit,.e-btn.e-accent,.e-btn.go-pro,.elementor-button.e-accent,.elementor-button.go-pro{background-color:var(--e-a-btn-bg-accent)}#elementor-deactivate-feedback-modal .e-accent.dialog-skip:focus,#elementor-deactivate-feedback-modal .e-accent.dialog-skip:hover,#elementor-deactivate-feedback-modal .e-accent.dialog-submit:focus,#elementor-deactivate-feedback-modal .e-accent.dialog-submit:hover,#elementor-deactivate-feedback-modal .go-pro.dialog-skip:focus,#elementor-deactivate-feedback-modal .go-pro.dialog-skip:hover,#elementor-deactivate-feedback-modal .go-pro.dialog-submit:focus,#elementor-deactivate-feedback-modal .go-pro.dialog-submit:hover,.e-btn.e-accent:focus,.e-btn.e-accent:hover,.e-btn.go-pro:focus,.e-btn.go-pro:hover,.elementor-button.e-accent:focus,.elementor-button.e-accent:hover,.elementor-button.go-pro:focus,.elementor-button.go-pro:hover{background-color:var(--e-a-btn-bg-accent-hover)}#elementor-deactivate-feedback-modal .e-accent.dialog-skip:active,#elementor-deactivate-feedback-modal .e-accent.dialog-submit:active,#elementor-deactivate-feedback-modal .go-pro.dialog-skip:active,#elementor-deactivate-feedback-modal .go-pro.dialog-submit:active,.e-btn.e-accent:active,.e-btn.go-pro:active,.elementor-button.e-accent:active,.elementor-button.go-pro:active{background-color:var(--e-a-btn-bg-accent-active)}#elementor-deactivate-feedback-modal .e-info.dialog-skip,#elementor-deactivate-feedback-modal .e-info.dialog-submit,#elementor-deactivate-feedback-modal .elementor-button-info.dialog-skip,#elementor-deactivate-feedback-modal .elementor-button-info.dialog-submit,.e-btn.e-info,.e-btn.elementor-button-info,.elementor-button.e-info,.elementor-button.elementor-button-info{background-color:var(--e-a-btn-bg-info)}#elementor-deactivate-feedback-modal .e-info.dialog-skip:focus,#elementor-deactivate-feedback-modal .e-info.dialog-skip:hover,#elementor-deactivate-feedback-modal .e-info.dialog-submit:focus,#elementor-deactivate-feedback-modal .e-info.dialog-submit:hover,#elementor-deactivate-feedback-modal .elementor-button-info.dialog-skip:focus,#elementor-deactivate-feedback-modal .elementor-button-info.dialog-skip:hover,#elementor-deactivate-feedback-modal .elementor-button-info.dialog-submit:focus,#elementor-deactivate-feedback-modal .elementor-button-info.dialog-submit:hover,.e-btn.e-info:focus,.e-btn.e-info:hover,.e-btn.elementor-button-info:focus,.e-btn.elementor-button-info:hover,.elementor-button.e-info:focus,.elementor-button.e-info:hover,.elementor-button.elementor-button-info:focus,.elementor-button.elementor-button-info:hover{background-color:var(--e-a-btn-bg-info-hover)}#elementor-deactivate-feedback-modal .e-warning.dialog-skip,#elementor-deactivate-feedback-modal .e-warning.dialog-submit,#elementor-deactivate-feedback-modal .elementor-button-warning.dialog-skip,#elementor-deactivate-feedback-modal .elementor-button-warning.dialog-submit,.e-btn.e-warning,.e-btn.elementor-button-warning,.elementor-button.e-warning,.elementor-button.elementor-button-warning{background-color:var(--e-a-btn-bg-warning)}#elementor-deactivate-feedback-modal .e-warning.dialog-skip:focus,#elementor-deactivate-feedback-modal .e-warning.dialog-skip:hover,#elementor-deactivate-feedback-modal .e-warning.dialog-submit:focus,#elementor-deactivate-feedback-modal .e-warning.dialog-submit:hover,#elementor-deactivate-feedback-modal .elementor-button-warning.dialog-skip:focus,#elementor-deactivate-feedback-modal .elementor-button-warning.dialog-skip:hover,#elementor-deactivate-feedback-modal .elementor-button-warning.dialog-submit:focus,#elementor-deactivate-feedback-modal .elementor-button-warning.dialog-submit:hover,.e-btn.e-warning:focus,.e-btn.e-warning:hover,.e-btn.elementor-button-warning:focus,.e-btn.elementor-button-warning:hover,.elementor-button.e-warning:focus,.elementor-button.e-warning:hover,.elementor-button.elementor-button-warning:focus,.elementor-button.elementor-button-warning:hover{background-color:var(--e-a-btn-bg-warning-hover)}#elementor-deactivate-feedback-modal .e-danger.dialog-skip,#elementor-deactivate-feedback-modal .e-danger.dialog-submit,#elementor-deactivate-feedback-modal .elementor-button-danger.dialog-skip,#elementor-deactivate-feedback-modal .elementor-button-danger.dialog-submit,.e-btn.e-danger,.e-btn.elementor-button-danger,.elementor-button.e-danger,.elementor-button.elementor-button-danger{background-color:var(--e-a-btn-bg-danger)}#elementor-deactivate-feedback-modal .e-danger.dialog-skip:focus,#elementor-deactivate-feedback-modal .e-danger.dialog-skip:hover,#elementor-deactivate-feedback-modal .e-danger.dialog-submit:focus,#elementor-deactivate-feedback-modal .e-danger.dialog-submit:hover,#elementor-deactivate-feedback-modal .elementor-button-danger.dialog-skip:focus,#elementor-deactivate-feedback-modal .elementor-button-danger.dialog-skip:hover,#elementor-deactivate-feedback-modal .elementor-button-danger.dialog-submit:focus,#elementor-deactivate-feedback-modal .elementor-button-danger.dialog-submit:hover,.e-btn.e-danger:focus,.e-btn.e-danger:hover,.e-btn.elementor-button-danger:focus,.e-btn.elementor-button-danger:hover,.elementor-button.e-danger:focus,.elementor-button.e-danger:hover,.elementor-button.elementor-button-danger:focus,.elementor-button.elementor-button-danger:hover{background-color:var(--e-a-btn-bg-danger-hover)}#elementor-deactivate-feedback-modal .dialog-skip i,#elementor-deactivate-feedback-modal .dialog-submit i,.e-btn i,.elementor-button i{margin-inline-end:5px}#adminmenu #toplevel_page_elementor div.wp-menu-image:before{content:"\e813";font-family:eicons;font-size:18px;margin-block-start:1px}#adminmenu #toplevel_page_elementor a[href="admin.php?page=go_elementor_pro"]{font-weight:600;background-color:#93003f;color:#fff;margin:3px 10px 0;display:block;text-align:center;border-radius:3px;transition:all .3s}#adminmenu #toplevel_page_elementor a[href="admin.php?page=go_elementor_pro"]:focus,#adminmenu #toplevel_page_elementor a[href="admin.php?page=go_elementor_pro"]:hover{background-color:#c60055;box-shadow:none}#adminmenu #menu-posts-elementor_library .wp-menu-image:before{content:"\e8ff";font-family:eicons;font-size:18px}#e-admin-menu__kit-library{color:#5cb85c}.elementor-plugins-gopro{color:#93003f;font-weight:700}.elementor-plugins-gopro:focus,.elementor-plugins-gopro:hover{color:#c60055}#elementor-switch-mode{margin:15px 0}#elementor-editor-button,#elementor-switch-mode-button{outline:none;cursor:pointer}#elementor-editor-button i,#elementor-switch-mode-button i{margin-inline-end:3px;font-size:125%;font-style:normal}body.elementor-editor-active .elementor-switch-mode-off{display:none}body.elementor-editor-active #elementor-switch-mode-button{background-color:#f7f7f7;color:#555;border-color:#ccc;box-shadow:0 1px 0 #ccc!important;text-shadow:unset}body.elementor-editor-active #elementor-switch-mode-button:hover{background-color:#e9e9e9}body.elementor-editor-active #elementor-switch-mode-button:active{box-shadow:inset 0 1px 0 #ccc;transform:translateY(1px)}body.elementor-editor-active #postdivrich{display:none!important}body.elementor-editor-active .block-editor-block-list__layout,body.elementor-editor-active .editor-block-list__layout,body.elementor-editor-inactive #elementor-editor,body.elementor-editor-inactive .elementor-switch-mode-on{display:none}body.elementor-editor-active .edit-post-layout__content .edit-post-visual-editor{flex-basis:auto}body.elementor-editor-active #elementor-editor{margin-block-end:50px}body.elementor-editor-active .edit-post-text-editor__body .editor-post-text-editor{display:none}body.elementor-editor-active :is(.is-desktop-preview,.is-tablet-preview,.is-mobile-preview) :is(.editor-styles-wrapper,iframe[name=editor-canvas]){height:auto!important;padding:0!important;flex:0!important}body .block-editor #elementor-switch-mode{margin:0 15px}body .block-editor #elementor-switch-mode .button{margin:2px;height:33px;font-size:13px;line-height:1}body .block-editor #elementor-switch-mode .button i{padding-inline-end:5px}.elementor-button{font-size:13px;text-decoration:none;padding:15px 40px}#elementor-editor{height:300px;width:100%;transition:all .5s ease}#elementor-editor .elementor-loader-wrapper{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:300px;display:flex;flex-direction:column;align-items:center;gap:30px}#elementor-editor .elementor-loader{border-radius:50%;padding:40px;height:150px;width:150px;background-color:var(--e-a-bg-active);box-sizing:border-box;box-shadow:2px 2px 20px 4px rgba(0,0,0,.02)}#elementor-editor .elementor-loader-boxes{height:100%;width:100%;position:relative}#elementor-editor .elementor-loader-box{position:absolute;background-color:var(--e-a-color-txt-hover);animation:load 1.8s linear infinite}#elementor-editor .elementor-loader-box:first-of-type{width:20%;height:100%;left:0;top:0}#elementor-editor .elementor-loader-box:not(:first-of-type){right:0;height:20%;width:60%}#elementor-editor .elementor-loader-box:nth-of-type(2){top:0;animation-delay:calc(1.8s / 4 * -1)}#elementor-editor .elementor-loader-box:nth-of-type(3){top:40%;animation-delay:calc(1.8s / 4 * -2)}#elementor-editor .elementor-loader-box:nth-of-type(4){bottom:0;animation-delay:calc(1.8s / 4 * -3)}#elementor-editor .elementor-loading-title{color:var(--e-a-color-txt);text-align:center;text-transform:uppercase;letter-spacing:7px;text-indent:7px;font-size:10px;width:100%}#elementor-go-to-edit-page-link{height:100%;display:flex;justify-content:center;align-items:center;border:1px solid #ddd;background-color:#f7f7f7;text-decoration:none;position:relative;font-family:Sans-serif}#elementor-go-to-edit-page-link:hover{background-color:#fff}#elementor-go-to-edit-page-link:focus{box-shadow:none}#elementor-go-to-edit-page-link.elementor-animate #elementor-editor-button,#elementor-go-to-edit-page-link:not(.elementor-animate) .elementor-loader-wrapper{display:none}.elementor-button-spinner:before{font:normal 20px/.5 dashicons;speak:none;display:inline-block;padding:0;inset-block-start:8px;inset-inline-start:-4px;position:relative;vertical-align:top;content:"\f463"}.elementor-button-spinner.loading:before{animation:rotation 1s linear infinite}.elementor-button-spinner.success:before{content:"\f147";color:#46b450}.elementor-blank_state{padding:5em 0;margin:auto;max-width:520px;text-align:center;font-family:var(--e-a-font-family)}.elementor-blank_state i{font-size:50px}.elementor-blank_state h3{font-size:32px;font-weight:300;color:inherit;margin:20px 0 10px;line-height:1.2}.elementor-blank_state p{font-size:16px;font-weight:400;margin-block-end:40px}.elementor-blank_state .elementor-button{display:inline-block}#available-widgets [class*=elementor-template] .widget-title:before{content:"\e813";font-family:eicons;font-size:17px}.elementor-settings-form-page{padding-block-start:30px}._elementor_settings_update_time,.elementor-settings-form-page:not(.elementor-active){display:none}body.post-type-attachment table.media .column-title .media-icon img[src$=".svg"]{width:100%}.e-major-update-warning{margin-block-end:5px;max-width:1000px;display:flex}.e-major-update-warning__separator{margin:15px -12px}.e-major-update-warning__icon{font-size:17px;margin-inline-end:9px;margin-inline-start:2px}.e-major-update-warning__title{font-weight:600;margin-block-end:10px}.e-major-update-warning+p{display:none}.notice-success .e-major-update-warning__separator{border:1px solid #46b450}.notice-success .e-major-update-warning__icon{color:#79ba49}.notice-warning .e-major-update-warning__separator{border:1px solid #ffb900}.notice-warning .e-major-update-warning__icon{color:#f56e28}.plugins table.e-compatibility-update-table tr{background:transparent}.plugins table.e-compatibility-update-table tr th{font-weight:600}.plugins table.e-compatibility-update-table tr td,.plugins table.e-compatibility-update-table tr th{min-width:250px;font-size:13px;background:transparent;box-shadow:none;border:none;padding-block-start:5px;padding-block-end:5px;padding-inline-end:15px;padding-inline-start:0}:root{--e-focus-color:rgba(0,115,170,0.4);--e-context-primary-color:#0073aa;--e-context-primary-color-dark:#005177;--e-context-primary-tint-4:rgba(0,115,170,0.4);--e-context-primary-tint-1:rgba(0,115,170,0.04);--e-context-success-color:#0a875a;--e-context-success-color-dark:#06583a;--e-context-success-tint-4:rgba(10,135,90,0.4);--e-context-success-tint-1:rgba(10,135,90,0.04);--e-context-info-color:#2563eb;--e-context-info-color-dark:#134cca;--e-context-info-tint-4:rgba(37,99,235,0.4);--e-context-info-tint-1:rgba(37,99,235,0.04);--e-context-warning-color:#f59e0b;--e-context-warning-color-dark:#c57f08;--e-context-warning-tint-4:rgba(245,158,11,0.4);--e-context-warning-tint-1:rgba(245,158,11,0.04);--e-context-error-color:#dc2626;--e-context-error-color-dark:#b21d1d;--e-context-error-tint-4:rgba(220,38,38,0.4);--e-context-error-tint-1:rgba(220,38,38,0.04);--e-context-cta-color:#524cff;--e-context-cta-color-dark:#2119ff;--e-context-cta-tint-4:rgba(82,76,255,0.4);--e-context-cta-tint-1:rgba(82,76,255,0.04)}.e-getting-started{max-width:900px;padding:2.5em 0;margin:auto;text-align:center}.e-getting-started__header{display:flex;flex-direction:row;justify-content:space-between;align-items:center;box-shadow:0 0 8px rgba(0,0,0,.1)}.e-getting-started__header .e-logo-wrapper{font-size:10px;margin-inline-end:10px}.e-getting-started__title{padding:0 15px;font-weight:600;text-transform:uppercase;display:flex;align-items:center}.e-getting-started__skip{border-inline-start:1px solid #eee;font-size:16px;color:inherit}.e-getting-started__skip i{padding:15px}.e-getting-started__content{padding:50px}.e-getting-started__content h2{font-size:2em;margin-block-start:0}.e-getting-started__content--narrow{max-width:500px;margin:auto}.e-getting-started__video{margin:40px 0 60px}.e-getting-started__video iframe{box-shadow:10px 10px 20px rgba(0,0,0,.15)}.e-getting-started__actions .button-primary{margin-inline-end:20px}:root{--e-button-padding-block:0.4375rem;--e-button-padding-inline:0.75rem;--e-button-font-size:0.8125rem;--e-button-font-weight:500;--e-button-line-height:0.9375rem;--e-button-border-radius:3px;--e-button-context-color:var(--e-context-primary-color);--e-button-context-color-dark:var(--e-context-primary-color-dark);--e-button-context-tint:var(--e-context-primary-tint-1)}.e-button{display:inline-block;font-weight:var(--e-button-font-weight);text-align:center;white-space:nowrap;vertical-align:middle;-webkit-user-select:none;-moz-user-select:none;user-select:none;color:#fff;border:0;text-decoration:none;background:var(--e-button-context-color);padding:var(--e-button-padding-block) var(--e-button-padding-inline);font-size:var(--e-button-font-size);line-height:var(--e-button-line-height);border-radius:var(--e-button-border-radius);transition:background-color .15s ease-in-out,box-shadow .15s ease-in-out}.e-button:active,.e-button:focus,.e-button:hover{color:#fff;text-decoration:none;background:var(--e-button-context-color-dark)}.e-button.focus,.e-button:focus{outline:0;box-shadow:0 0 0 2px var(--e-focus-color)}.e-button.disabled,.e-button:disabled{opacity:.5;box-shadow:none}.e-button:not(:disabled):not(.disabled){cursor:pointer}.e-button:not(:disabled):not(.disabled).active:focus,.e-button:not(:disabled):not(.disabled):active:focus{box-shadow:0 0 0 2px var(--e-focus-color)}.e-button--primary{--e-button-context-color:var(--e-context-primary-color);--e-button-context-color-dark:var(--e-context-primary-color-dark);--e-button-context-tint:var(--e-context-primary-tint-1);--e-focus-color:var(--e-context-primary-tint-4)}.e-button--success{--e-button-context-color:var(--e-context-success-color);--e-button-context-color-dark:var(--e-context-success-color-dark);--e-button-context-tint:var(--e-context-success-tint-1);--e-focus-color:var(--e-context-success-tint-4)}.e-button--info{--e-button-context-color:var(--e-context-info-color);--e-button-context-color-dark:var(--e-context-info-color-dark);--e-button-context-tint:var(--e-context-info-tint-1);--e-focus-color:var(--e-context-info-tint-4)}.e-button--warning{--e-button-context-color:var(--e-context-warning-color);--e-button-context-color-dark:var(--e-context-warning-color-dark);--e-button-context-tint:var(--e-context-warning-tint-1);--e-focus-color:var(--e-context-warning-tint-4)}.e-button--error{--e-button-context-color:var(--e-context-error-color);--e-button-context-color-dark:var(--e-context-error-color-dark);--e-button-context-tint:var(--e-context-error-tint-1);--e-focus-color:var(--e-context-error-tint-4)}.e-button--cta{--e-button-context-color:var(--e-context-cta-color);--e-button-context-color-dark:var(--e-context-cta-color-dark);--e-button-context-tint:var(--e-context-cta-tint-1);--e-focus-color:var(--e-context-cta-tint-4)}.e-button.e-button--outline{color:var(--e-button-context-color);background:none;border:1px solid}.e-button.e-button--outline:focus,.e-button.e-button--outline:hover{color:var(--e-button-context-color-dark);background:var(--e-button-context-tint)}.e-button.e-button--outline.disabled,.e-button.e-button--outline:disabled{color:var(--e-button-context-color-dark);background:#69727d}.e-button>i{line-height:inherit;height:var(--e-button-line-height);width:-moz-min-content;width:min-content}.e-button>*+*{margin-inline-start:.5ch}.e-button--link{color:var(--e-button-context-color);background-color:transparent}.e-button--link:focus,.e-button--link:hover{color:var(--e-button-context-color-dark);background:var(--e-button-context-tint)}.e-button--link.disabled,.e-button--link:disabled{color:#69727d}a.e-button.disabled,fieldset:disabled a.e-button{pointer-events:none}:root{--e-notice-bg:#fff;--e-notice-border-color:#ccd0d4;--e-notice-context-color:#93003f;--e-notice-context-tint:var(--e-context-cta-tint-1);--e-notice-box-shadow:0 1px 4px rgba(0,0,0,0.15);--e-notice-dismiss-color:#3f444b}.e-notice{position:relative;display:flex;font-family:Roboto,Arial,Helvetica,sans-serif;background:var(--e-notice-bg);border:1px solid var(--e-notice-border-color);border-inline-start-width:4px;box-shadow:var(--e-notice-box-shadow);margin:5px 20px 5px 2px}.e-notice.notice{padding:0}.e-notice:before{display:block;content:"";position:absolute;inset-inline-start:-4px;inset-block-start:-1px;inset-block-end:-1px;width:4px;background-color:var(--e-notice-context-color)}.e-notice--primary{--e-notice-context-color:var(--e-context-primary-color);--e-notice-context-color-dark:var(--e-context-primary-color-dark);--e-notice-context-tint:var(--e-context-primary-tint-1)}.e-notice--success{--e-notice-context-color:var(--e-context-success-color);--e-notice-context-color-dark:var(--e-context-success-color-dark);--e-notice-context-tint:var(--e-context-success-tint-1)}.e-notice--info{--e-notice-context-color:var(--e-context-info-color);--e-notice-context-color-dark:var(--e-context-info-color-dark);--e-notice-context-tint:var(--e-context-info-tint-1)}.e-notice--warning{--e-notice-context-color:var(--e-context-warning-color);--e-notice-context-color-dark:var(--e-context-warning-color-dark);--e-notice-context-tint:var(--e-context-warning-tint-1)}.e-notice--error{--e-notice-context-color:var(--e-context-error-color);--e-notice-context-color-dark:var(--e-context-error-color-dark);--e-notice-context-tint:var(--e-context-error-tint-1)}.e-notice--cta{--e-notice-context-color:var(--e-context-cta-color);--e-notice-context-color-dark:var(--e-context-cta-color-dark);--e-notice-context-tint:var(--e-context-cta-tint-1)}.e-notice--extended{--e-notice-is-extended:1}.e-notice--dismissible{padding-inline-end:38px}.e-notice__aside{overflow:hidden;background-color:var(--e-notice-context-tint);width:calc(var(--e-notice-is-extended, 0) * 50px);text-align:center;padding-block-start:15px;flex-grow:0;flex-shrink:0}.e-notice__icon-wrapper{display:inline-block;font-size:.625rem;max-height:1.5rem;width:1.5rem;line-height:1.5rem;border-radius:100px;background:var(--e-notice-context-color);color:#fff;text-shadow:0 0 3px var(--e-notice-context-color-dark),0 0 1px var(--e-notice-context-color-dark),0 0 1px var(--e-notice-context-color-dark)}.e-notice__content{padding:20px}.e-notice__actions{display:flex}.e-notice__actions>*+*{margin-inline-start:8px}.e-notice__dismiss{width:20px;height:20px;line-height:20px;font-size:.8125rem;text-align:center;background:none;display:block;position:absolute;inset-block-start:0;inset-inline-end:1px;border:none;margin:0;padding:9px;cursor:pointer;font-style:normal}.e-notice__dismiss:before{font-family:eicons;display:inline-block;content:"\e87f";color:var(--e-notice-dismiss-color);width:20px;border-radius:20px;speak:none;text-align:center}.e-notice__dismiss:active:before,.e-notice__dismiss:focus:before,.e-notice__dismiss:hover:before{font-weight:700}.e-notice__dismiss:focus:before{color:#fff;background:var(--e-notice-dismiss-color);outline:none}.e-notice__dismiss:focus{outline:none}.e-notice p{line-height:1.2;padding:0;margin:0}.e-notice p+.e-notice__actions{margin-block-start:1rem}.e-notice h3{font-size:1.0625rem;line-height:1.2;margin:0}.e-notice h3+p{margin-block-start:8px}.elementor-admin-alert{padding:15px;border-inline-start:3px solid transparent;position:relative;font-size:12px;line-height:1.5;text-align:start}.elementor-admin-alert a{color:inherit}.elementor-admin-alert.elementor-alert-info{color:var(--e-a-color-info);background-color:var(--e-a-bg-info);border-color:var(--e-a-color-info)}.elementor-admin-alert.elementor-alert-success{color:var(--e-a-color-success);background-color:var(--e-a-bg-success);border-color:var(--e-a-color-success)}.elementor-admin-alert.elementor-alert-warning{color:var(--e-admin-color-warning);background-color:var(--e-a-bg-warning);border-color:var(--e-a-color-warning)}.elementor-admin-alert.elementor-alert-danger{color:var(--e-a-color-danger);background-color:var(--e-a-bg-danger);border-color:var(--e-a-color-danger)}#elementor-system-info{padding:15px}#elementor-system-info .elementor-system-info-header{display:flex;justify-content:space-between;align-items:center}#elementor-system-info .elementor-system-info-section{margin-block-end:10px}#elementor-system-info .elementor-system-info-section .widefat{white-space:pre}#elementor-system-info .elementor-system-info-section .elementor-log-entries{white-space:pre-wrap}#elementor-system-info .elementor-system-info-section:not(.elementor-system-info-log) tbody td:first-child{width:300px}#elementor-system-info .elementor-system-info-section:not(.elementor-system-info-log) td{white-space:break-spaces}#elementor-system-info .elementor-system-info-field-recommendation{padding-inline-start:10px;color:#7f7f7f}#elementor-system-info .elementor-system-info-plugin-name{color:#000}#elementor-system-info .elementor-system-info-plugin-properties{padding:10px}#elementor-system-info #elementor-system-info-raw-code{width:100%;height:200px}#elementor-system-info #elementor-system-info-raw-code-label{padding:5px;display:block}#elementor-system-info .elementor-warning td:first-child{border-inline-start:3px solid #f59e0b}#elementor-system-info a.box-title-tool{font-size:80%;margin-inline-start:15px;color:#69727d}#elementor-system-info a.box-title-tool:hover{text-decoration:underline}#elementor-system-info #elementor-usage-recalc{font-size:12px;color:#fff;background-color:#9da5ae;padding:4px 18px 5px;border-radius:3px}.dialog-type-alert .dialog-widget-content,.dialog-type-confirm .dialog-widget-content{margin:auto;width:400px;padding:20px}.dialog-type-alert .dialog-header,.dialog-type-confirm .dialog-header{font-size:15px;font-weight:500}.dialog-type-alert .dialog-header:after,.dialog-type-confirm .dialog-header:after{content:"";display:block;border-block-end:var(--e-a-border);padding-block-end:10px;margin-block-end:10px;margin-inline-start:-20px;margin-inline-end:-20px}.dialog-type-alert .dialog-message,.dialog-type-confirm .dialog-message{min-height:50px}.dialog-type-alert .dialog-buttons-wrapper,.dialog-type-confirm .dialog-buttons-wrapper{padding-block-start:10px;display:flex;justify-content:flex-end;gap:15px}.dialog-type-alert .dialog-buttons-wrapper .dialog-button,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button{font-size:12px;font-weight:500;line-height:1.2;padding:8px 16px;outline:none;border:none;border-radius:var(--e-a-border-radius);background-color:var(--e-a-btn-bg);color:var(--e-a-btn-color-invert);transition:var(--e-a-transition-hover)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:hover{border:none}.dialog-type-alert .dialog-buttons-wrapper .dialog-button:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:hover{background-color:var(--e-a-btn-bg-hover);color:var(--e-a-btn-color-invert)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button:active,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:active{background-color:var(--e-a-btn-bg-active)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button:not([disabled]),.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:not([disabled]){cursor:pointer}.dialog-type-alert .dialog-buttons-wrapper .dialog-button:disabled,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:disabled{background-color:var(--e-a-btn-bg-disabled);color:var(--e-a-btn-color-disabled)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button:not(.elementor-button-state) .elementor-state-icon,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:not(.elementor-button-state) .elementor-state-icon{display:none}#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-skip,#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-skip,.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-skip,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt,.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-skip,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt{background:transparent;color:var(--e-a-color-txt)}#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-skip:focus,#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-skip:hover,#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-skip:focus,#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-skip:hover,.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-skip:focus,.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-skip:hover,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel:hover,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt:hover,.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-skip:focus,.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-skip:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt:hover{background:var(--e-a-bg-hover);color:var(--e-a-color-txt-hover)}#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-skip:disabled,#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-skip:disabled,.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-skip:disabled,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel:disabled,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt:disabled,.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-skip:disabled,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel:disabled,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt:disabled{background:transparent;color:var(--e-a-color-txt-disabled)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt-border,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt-border{border:1px solid var(--e-a-color-txt-muted)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-success,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-success,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-success,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-success{background-color:var(--e-a-btn-bg-success)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-success:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-success:hover,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-success:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-success:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-success:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-success:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-success:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-success:hover{background-color:var(--e-a-btn-bg-success-hover)}#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-submit,#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-submit,.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-submit,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-take_over,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary,.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-submit,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-take_over,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary{background-color:var(--e-a-btn-bg-primary);color:var(--e-a-btn-color)}#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-submit:focus,#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-submit:hover,#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-submit:focus,#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-submit:hover,.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-submit:focus,.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-submit:hover,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok:hover,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-take_over:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-take_over:hover,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary:hover,.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-submit:focus,.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-submit:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-take_over:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-take_over:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary:hover{background-color:var(--e-a-btn-bg-primary-hover);color:var(--e-a-btn-color)}#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-submit,#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-skip,#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-submit.dialog-skip,#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-take_over.dialog-skip,#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-submit,#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary.dialog-skip,#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-submit,#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-skip,#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-submit.dialog-skip,#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-take_over.dialog-skip,#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-submit,#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary.dialog-skip,.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-cancel.dialog-submit,.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-ok.dialog-skip,.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-submit.dialog-skip,.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-take_over.dialog-skip,.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.e-btn-txt.dialog-submit,.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.e-primary.dialog-skip,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-ok,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-take_over,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary.dialog-cancel,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary.e-btn-txt,.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-cancel.dialog-submit,.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-ok.dialog-skip,.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-submit.dialog-skip,.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-take_over.dialog-skip,.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.e-btn-txt.dialog-submit,.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.e-primary.dialog-skip,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-ok,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-take_over,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary.dialog-cancel,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary.e-btn-txt{background:transparent;color:var(--e-a-color-primary-bold)}#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-submit:focus,#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-submit:hover,#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-skip:focus,#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-skip:hover,#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-submit.dialog-skip:focus,#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-submit.dialog-skip:hover,#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-take_over.dialog-skip:focus,#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-take_over.dialog-skip:hover,#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-submit:focus,#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-submit:hover,#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary.dialog-skip:focus,#elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary.dialog-skip:hover,#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-submit:focus,#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-submit:hover,#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-skip:focus,#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-skip:hover,#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-submit.dialog-skip:focus,#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-submit.dialog-skip:hover,#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-take_over.dialog-skip:focus,#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-take_over.dialog-skip:hover,#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-submit:focus,#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-submit:hover,#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary.dialog-skip:focus,#elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary.dialog-skip:hover,.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-cancel.dialog-submit:focus,.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-cancel.dialog-submit:hover,.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-ok.dialog-skip:focus,.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-ok.dialog-skip:hover,.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-submit.dialog-skip:focus,.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-submit.dialog-skip:hover,.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-take_over.dialog-skip:focus,.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-take_over.dialog-skip:hover,.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.e-btn-txt.dialog-submit:focus,.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.e-btn-txt.dialog-submit:hover,.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.e-primary.dialog-skip:focus,.dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.e-primary.dialog-skip:hover,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over:hover,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel:hover,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-ok:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-ok:hover,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-take_over:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-take_over:hover,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary.dialog-cancel:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary.dialog-cancel:hover,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary.e-btn-txt:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary.e-btn-txt:hover,.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-cancel.dialog-submit:focus,.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-cancel.dialog-submit:hover,.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-ok.dialog-skip:focus,.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-ok.dialog-skip:hover,.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-submit.dialog-skip:focus,.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-submit.dialog-skip:hover,.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-take_over.dialog-skip:focus,.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-take_over.dialog-skip:hover,.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.e-btn-txt.dialog-submit:focus,.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.e-btn-txt.dialog-submit:hover,.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.e-primary.dialog-skip:focus,.dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.e-primary.dialog-skip:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-ok:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-ok:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-take_over:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-take_over:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary.dialog-cancel:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary.dialog-cancel:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary.e-btn-txt:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary.e-btn-txt:hover{background:var(--e-a-bg-primary)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-accent,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.go-pro,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-accent,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.go-pro{background-color:var(--e-a-btn-bg-accent)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-accent:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-accent:hover,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.go-pro:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.go-pro:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-accent:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-accent:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.go-pro:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.go-pro:hover{background-color:var(--e-a-btn-bg-accent-hover)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-accent:active,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.go-pro:active,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-accent:active,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.go-pro:active{background-color:var(--e-a-btn-bg-accent-active)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-info,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-info,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-info,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-info{background-color:var(--e-a-btn-bg-info)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-info:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-info:hover,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-info:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-info:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-info:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-info:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-info:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-info:hover{background-color:var(--e-a-btn-bg-info-hover)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-warning,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-warning,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-warning,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-warning{background-color:var(--e-a-btn-bg-warning)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-warning:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-warning:hover,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-warning:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-warning:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-warning:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-warning:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-warning:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-warning:hover{background-color:var(--e-a-btn-bg-warning-hover)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-danger,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-danger,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-danger,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-danger{background-color:var(--e-a-btn-bg-danger)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-danger:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-danger:hover,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-danger:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-danger:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-danger:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-danger:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-danger:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-danger:hover{background-color:var(--e-a-btn-bg-danger-hover)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button i,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button i{margin-inline-end:5px}.dialog-type-alert .dialog-buttons-wrapper .dialog-button:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button:hover,.dialog-type-alert .dialog-buttons-wrapper .dialog-button:visited,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:visited{color:initial}@keyframes elementor-rotation{0%{transform:rotate(0deg)}to{transform:rotate(359deg)}}#elementor-deactivate-feedback-dialog-wrapper{display:none}#elementor-deactivate-feedback-modal{color:var(--e-a-color-txt)}#elementor-deactivate-feedback-modal .dialog-widget-content{width:550px}#elementor-deactivate-feedback-modal .dialog-header{padding:18px 15px;box-shadow:0 0 8px rgba(0,0,0,.1);text-align:start}#elementor-deactivate-feedback-modal .dialog-message{padding:30px;padding-block-end:0;text-align:start}#elementor-deactivate-feedback-modal .elementor-deactivate-feedback-dialog-input{margin-block:0;margin-inline:0 15px;box-shadow:none}#elementor-deactivate-feedback-modal .elementor-deactivate-feedback-dialog-input:not(:checked)~.elementor-feedback-text{display:none}#elementor-deactivate-feedback-modal .elementor-deactivate-feedback-dialog-label{display:block;font-size:13px}#elementor-deactivate-feedback-modal .elementor-feedback-text{background-color:transparent;color:var(--e-a-color-txt);margin-block:10px 0;margin-inline:30px 0;padding:5px;box-shadow:none;width:92%}#elementor-deactivate-feedback-modal .dialog-buttons-wrapper{display:flex;justify-content:space-between;padding:20px 30px 30px}#elementor-deactivate-feedback-modal .dialog-submit.elementor-loading:before{display:inline-block;content:"\f463";font:18px dashicons;animation:elementor-rotation 2s linear infinite}#elementor-deactivate-feedback-modal[data-feedback-selected=elementor_pro] .elementor-feedback-text{color:#f59e0b;padding:0}#elementor-deactivate-feedback-modal[data-feedback-selected=elementor_pro] .dialog-submit{display:none}#elementor-deactivate-feedback-dialog-header i{font-size:19px}#elementor-deactivate-feedback-dialog-header-title{font-size:15px;text-transform:uppercase;font-weight:700;padding-inline-start:5px}#elementor-deactivate-feedback-dialog-form-caption{font-weight:700;font-size:15px;line-height:1.4}#elementor-deactivate-feedback-dialog-form-body{padding-block-start:30px;padding-block-end:15px}.elementor-deactivate-feedback-dialog-input-wrapper{display:flex;align-items:center;line-height:2;overflow:hidden}#elementor-hidden-area{display:none}#elementor-import-template-trigger{cursor:pointer}#elementor-import-template-area{display:none;margin:50px 0 30px;text-align:center}#elementor-import-template-form{display:inline-block;margin-block-start:30px;padding:30px 50px;background-color:#fff;border:1px solid #e5e5e5}#elementor-import-template-title{font-size:18px;color:#555d66}.form-table:not(.elementor-maintenance-mode-is-enabled) .elementor-default-hide{display:none}.elementor-maintenance-mode-error{color:red;line-height:1.6;display:none}#tab-fontawesome4_migration.elementor-active~p.submit,#tab-import-export-kit.elementor-active~p.submit,#tab-replace_url.elementor-active~p.submit{display:none}#elementor_replace_url>div{max-width:800px}#elementor_replace_url>div input{margin-block-end:6px}#elementor_rollback>div,#elementor_rollback_pro>div{display:flex}#elementor_rollback>div input,#elementor_rollback>div select,#elementor_rollback_pro>div input,#elementor_rollback_pro>div select{margin-inline-end:6px}.tab-import-export-kit__wrapper{margin:40px 0;max-width:700px}.tab-import-export-kit__container{background-color:#fff;font-size:16px;max-width:700px;padding:30px}.tab-import-export-kit__container:not(:first-child){margin-block-start:5px}.tab-import-export-kit__container p{font-size:16px;margin:20px 0 25px}.tab-import-export-kit__info{font-size:14px}.tab-import-export-kit__container a:not(.elementor-button),.tab-import-export-kit__info a{color:var(--e-a-color-info);text-decoration:underline}.tab-import-export-kit__box{display:flex;justify-content:space-between;align-items:flex-start}.tab-import-export-kit__box h2{font-size:28px;font-weight:400;line-height:1;margin:0}.tab-import-export-kit__box .elementor-button.elementor-button-success{font-weight:700;padding:8px 16px;text-transform:none}.tab-import-export-kit__revert .tab-import-export-kit__kit-item{background-color:hsla(0,0%,100%,.5);box-shadow:0 4px 10px rgba(0,0,0,.05);border-radius:.1875rem;margin-block-end:15px;display:inline-block}.tab-import-export-kit__revert .tab-import-export-kit__kit-item header{border-block-end:1px solid #f1f2f3;padding:.625rem}.tab-import-export-kit__revert .tab-import-export-kit__kit-item h3{font-size:.875rem;margin:0}.tab-import-export-kit__revert .tab-import-export-kit__kit-item img{width:330px;height:315px;padding:.625rem}.tab-import-export-kit__revert .button,.tab-import-export-kit__revert .button:hover{color:#a94442;border-color:#a94442;display:inline-block}#dashboard-widgets .e-dashboard-widget h3.e-heading{font-weight:600;margin-block-end:13px}#dashboard-widgets .e-dashboard-widget .e-divider_bottom{border-block-end:1px solid #eee;margin:0 -12px;padding:6px 12px}#dashboard-widgets .e-dashboard-widget .e-divider_top{border-block-start:1px solid #eee;margin:0 -12px;padding:12px 12px 0}#dashboard-widgets .e-dashboard-widget .e-news-feed-wrap .e-divider_top,#dashboard-widgets .e-dashboard-widget .e-quick-actions-wrap .e-divider_top{padding-block-start:18px;margin-block-start:18px}.e-dashboard-widget .dashicons{color:#606a73}.e-dashboard-widget ul.e-action-list li{margin-block-start:14px}.e-dashboard-widget ul.e-action-list li a{margin-inline-start:5px}.e-dashboard-overview .dashicons{vertical-align:middle;font-size:17px}.e-dashboard-overview .e-overview__header{display:table;width:100%;box-shadow:0 5px 8px rgba(0,0,0,.05);margin:0 -12px 8px;padding:0 12px 12px}.e-dashboard-overview .e-overview__create,.e-dashboard-overview .e-overview__logo,.e-dashboard-overview .e-overview__versions{display:table-cell;vertical-align:middle}.e-dashboard-overview .e-overview__logo{width:30px}.e-dashboard-overview .e-overview__versions{padding:0 10px;font-size:.9em;line-height:1.5}.e-dashboard-overview .e-overview__version{display:block}.e-dashboard-overview .e-overview__create{text-align:end}.e-dashboard-overview .e-overview__feed{font-size:14px;font-weight:500}.e-dashboard-overview .e-overview__post{margin-block-start:10px}.e-dashboard-overview .e-overview__post-link{display:inline-block}.e-dashboard-overview .e-overview__badge{background:#0a875a;color:#fff;font-size:.75em;padding:3px 6px;border-radius:3px;text-transform:uppercase}.e-dashboard-overview .e-overview__post-description{margin:0 0 1.5em}.e-dashboard-overview .e-overview__recently-edited li{color:#72777c}.e-dashboard-overview .e-overview__footer.e-divider_top{padding-block-start:12px;padding-block-end:0}.e-dashboard-overview .e-overview__footer ul{display:flex;list-style:none;margin:0;padding:0}.e-dashboard-overview .e-overview__footer ul li{padding:0 10px;margin:0;border-inline-start:1px solid #ddd}.e-dashboard-overview .e-overview__footer ul li:first-child{padding-inline-start:0;border:none}.e-dashboard-overview .e-overview__ai a,.e-dashboard-overview .e-overview__go-pro a{color:#93003f;font-weight:500}.post-type-elementor_library #elementor-template-library-tabs-wrapper{padding-block-start:2em;margin-block-end:2em}.post-type-elementor_library th#taxonomy-elementor_library_category{width:110px}#elementor-new-template-modal .dialog-message{max-height:70vh}#elementor-new-template-modal .e-hidden{display:none!important}#elementor-new-template-dialog-content{display:flex;align-items:center;height:100%;text-align:start}@media (max-width:1439px){#elementor-new-template-dialog-content{padding:0 50px}}@media (min-width:1440px){#elementor-new-template-dialog-content{padding:0 120px}}#elementor-new-template__description{width:35%;max-width:300px;padding-inline-end:100px}#elementor-new-template__description__title{font-size:30px}#elementor-new-template__description__title span{font-weight:700}#elementor-new-template__description__content{font-size:16px;padding:30px 0}#elementor-new-template__take_a_tour{display:flex;align-items:center;font-size:15px}#elementor-new-template__take_a_tour i{color:var(--e-a-color-accent);font-size:30px}#elementor-new-template__take_a_tour a{padding-inline-start:10px;font-weight:500}#elementor-new-template__form{flex-grow:1;max-width:440px;padding:55px;background-color:var(--e-a-color-white);border-radius:var(--e-a-border-radius);border:var(--e-a-border)}#elementor-new-template__form__title{font-size:23px}#elementor-new-template__form__template-type.elementor-form-field__select{max-width:none}#elementor-new-template__form__template-type-badge{position:absolute;display:flex;align-items:center;justify-content:center;gap:2px;border-radius:2px;background-color:#f1f2f3;padding:4px;font-size:8px;font-weight:500;line-height:1;text-transform:uppercase;inset-block-start:50%;inset-inline-end:28px;transform:translateY(-50%)}#elementor-new-template__form .elementor-form-field__label{display:block;margin:25px 0 7px;font-size:14px;line-height:1}#elementor-new-template__form .elementor-form-field input,#elementor-new-template__form .elementor-form-field select{width:100%;height:50px;padding:10px;font-size:14px;box-shadow:none;border-radius:var(--e-a-border-radius);background:none;border:var(--e-a-border-bold);outline:none}#elementor-new-template__form .elementor-form-field input:focus,#elementor-new-template__form .elementor-form-field select:focus{border-color:var(--e-a-border-color-focus)}#elementor-new-template__form .elementor-form-field__select{-webkit-appearance:none;-moz-appearance:none;appearance:none;cursor:pointer}#elementor-new-template__form .elementor-form-field__select__wrapper{position:relative}#elementor-new-template__form .elementor-form-field__select__wrapper:after{font-family:eicons;content:"\e8ad";position:absolute;inset-block-start:50%;inset-inline-end:10px;transform:translateY(-50%)}#elementor-new-template__form__lock_button,#elementor-new-template__form__submit{display:block;width:100%;height:50px;margin-block-start:24px;box-sizing:border-box;text-align:center}@media (max-width:1024px){#elementor-new-template__description{max-width:250px;padding-inline-end:30px}}@media (max-width:767px){#elementor-new-template__description{display:none}}#elementor-role-manager{max-width:500px;margin-block-start:50px}#elementor-role-manager h3{color:#3f444b;font-weight:400;font-size:22px}#elementor-role-manager .elementor-settings-form-page{padding:0}#elementor-role-manager .elementor-role-row{background:#fff;color:#3f444b;margin-block-end:2px}#elementor-role-manager .elementor-role-row .elementor-role-label{display:flex;padding:15px 20px;font-weight:500;cursor:pointer}#elementor-role-manager .elementor-role-row .elementor-role-label span.elementor-role-name{padding-inline-end:20px}#elementor-role-manager .elementor-role-row .elementor-role-label span.elementor-role-toggle{text-align:end;flex-grow:1}#elementor-role-manager .elementor-role-row .elementor-role-label span.elementor-role-excluded-indicator{color:#9da5ae}#elementor-role-manager .elementor-role-row .elementor-role-controls{background-color:#f9fafa;padding:20px 20px 5px}#elementor-role-manager .elementor-role-row .elementor-role-controls>div{margin-block-end:15px}#elementor-role-manager .elementor-role-row .elementor-role-controls .elementor-role-go-pro{display:flex;align-items:center}#elementor-role-manager .elementor-role-row .elementor-role-controls .elementor-role-go-pro .elementor-role-go-pro__desc{font-weight:500;font-style:italic;flex-grow:1}#elementor-role-manager .elementor-role-row .elementor-role-controls .elementor-role-go-pro .elementor-role-go-pro__link{display:flex}#elementor-role-manager .elementor-role-row .elementor-role-controls-advanced>div+div{margin-block-start:15px}#elementor-role-manager .elementor-role-control-warning{color:var(--e-a-color-danger)}#elementor-beta-tester-modal{color:var(--e-a-color-txt)}#elementor-beta-tester-modal .elementor-templates-modal__header__items-area{color:var(--e-a-color-txt);cursor:pointer}#elementor-beta-tester-modal .elementor-templates-modal__header__items-area:hover .elementor-beta-tester-do-not-show-again,#elementor-beta-tester-modal .elementor-templates-modal__header__items-area:hover .elementor-templates-modal__header__item>i{color:var(--e-a-color-txt-hover)}#elementor-beta-tester-modal .elementor-templates-modal__header__items-area .elementor-templates-modal__header__close{border:none}#elementor-beta-tester-modal .elementor-templates-modal__header__items-area .elementor-beta-tester-do-not-show-again{text-transform:uppercase;font-weight:700;font-size:12px;transition:var(--e-a-transition-hover)}#elementor-beta-tester-modal .dialog-lightbox-widget-content{max-width:500px;height:auto}#elementor-beta-tester-modal .dialog-lightbox-message{padding:40px;height:300px;background-color:var(--e-a-bg-default)}#elementor-beta-tester-form__caption{font-weight:700;font-size:20px}#elementor-beta-tester-form__description{font-size:15px;margin-block-start:10px}#elementor-beta-tester-form__input-wrapper{display:flex;margin-block-start:30px}#elementor-beta-tester-form__input-wrapper .elementor-button{border-start-start-radius:0;border-start-end-radius:3px;border-end-start-radius:0;border-end-end-radius:3px}#elementor-beta-tester-form__email{flex-grow:1;border:var(--e-a-border);border-inline-end:0;border-start-start-radius:3px;border-start-end-radius:0;border-end-start-radius:3px;border-end-end-radius:0;margin:0;padding:10px;height:50px}#elementor-beta-tester-form__terms{margin-block-start:40px;font-size:11px;color:var(--e-a-color-txt-muted)}.e-experiment__title{display:flex;align-items:flex-start;flex-direction:column}.e-experiment__title__indicator{position:absolute;height:10px;width:10px;border-radius:50%;border:2px solid #fff;box-shadow:0 2px 4px rgba(0,0,0,.1);flex-shrink:0;margin-block-start:2px}.e-experiment__title__indicator--active{background:#39b54a}.e-experiment__title__label{margin-inline-start:24px}.e-experiment__title__tag{background:#0085ba;color:#fff;font-size:.8em;padding:3px 6px;line-height:1;border-radius:3px;font-weight:600;margin-block-start:5px;margin-inline-start:24px}.e-experiment__title__tag__secondary{background:rgba(0,0,0,.1);color:inherit}.e-experiment__table-title{margin:30px 0}.e-experiment__dependency,.e-experiment__status{margin-block-start:4px;font-size:.9em;line-height:18px;font-weight:700;font-style:italic}.e-experiment__button.button{margin-block:18px 22px;margin-inline:0 14px}.e-experiment__dependency{color:#21759b}.e-experiment__dependency__title{font-weight:inherit}#tab-experiments .form-table tr{border-block-end:1px solid #dcdcde}#tab-experiments .form-table tr:last-child{border-block-end:none}#tab-experiments .form-table tr .description{font-size:.9em;margin:10px 0;max-width:820px}.e-landing-pages-empty .elementor-blank_state{padding:5em 0 2em}.e-landing-pages-empty .e-trashed-items{text-align:center}.e-feature-promotion{--e-a-top-bar-height:50px;--e-a-content-area-spacing:110px;--e-black:#000;width:1220px;height:calc(100vh - var(--e-a-top-bar-height) - var(--e-a-content-area-spacing));display:grid;grid-template-columns:repeat(2,auto);grid-template-rows:auto;justify-content:space-between;align-items:center;align-content:center;margin:auto;transform:translate(-10px,40px);text-align:center;font-family:var(--e-a-font-family)}.e-feature-promotion_data{grid-column:1/2;grid-row:1/2;display:flex;flex-direction:column;justify-content:center;align-items:self-start;margin-inline-start:15px;padding-inline-end:40px;max-width:608px}.e-feature-promotion_data h3{margin-block-start:0;margin-inline-end:0;margin-block-end:33px;margin-inline-start:0;text-align:start;font-size:1.85rem;font-weight:300;color:var(--e-black);line-height:1.2}.e-feature-promotion_data ul{margin-block-start:0;margin-block-end:1.6rem;text-align:start}.e-feature-promotion_data ul>li{margin-block-start:0;margin-inline-end:9px;margin-block-end:8px;margin-inline-start:8px;display:flex;font-size:1rem;line-height:21px;color:var(--e-black)}.e-feature-promotion_data ul>li:before{content:url("data:image/svg+xml;charset=utf-8,%3Csvg width='25' height='24' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M21.52 6.47a.75.75 0 010 1.06l-10 10a.75.75 0 01-1.06 0l-5-5a.75.75 0 111.06-1.06l4.47 4.47 9.47-9.47a.75.75 0 011.06 0z' fill='%230C0D0E'/%3E%3C/svg%3E");font-size:1.4rem;margin-block-start:-3px;margin-inline-end:9px;margin-block-end:0;margin-inline-start:-9px}.e-feature-promotion_data>.go-pro{display:flex;align-items:center;padding:9px 15px;font-size:.9rem}.e-feature-promotion_data>.side-note{justify-self:baseline;margin-block-start:2rem;text-align:start}.e-feature-promotion_iframe{grid-column:2/3;grid-row:1/2;aspect-ratio:16/9;width:608px;border:none}body.rtl .e-feature-promotion{transform:translateX(10px)}@media (max-width:1410px){.e-feature-promotion{display:flex;flex-direction:column;justify-content:flex-start;width:90%}.e-feature-promotion_data{margin-block-end:2rem;margin-inline-start:unset;padding-inline-end:unset}.e-feature-promotion_iframe{max-width:90%;aspect-ratio:16/9}}.elementor-control-notice{display:flex;justify-content:flex-start;align-items:flex-start;gap:8px;padding:16px;border-radius:3px;border:1px solid var(--notice-control-color,var(--e-a-color-txt));color:var(--e-a-color-txt);font-size:12px;font-weight:400;line-height:1.5;text-align:start;margin-block-start:10px}.elementor-control-notice-type-info{--notice-control-color:var(--e-a-color-info)}.elementor-control-notice-type-success{--notice-control-color:var(--e-a-color-success)}.elementor-control-notice-type-warning{--notice-control-color:var(--e-a-color-warning)}.elementor-control-notice-type-danger{--notice-control-color:var(--e-a-color-danger)}.elementor-control-notice-icon{flex-basis:18px;color:var(--notice-control-color)}.elementor-control-notice-main{display:flex;flex-direction:column;justify-content:flex-start;align-items:flex-start;gap:6px;flex:1}.elementor-control-notice-main-heading{font-weight:700;font-style:italic}.elementor-control-notice-main-content{font-style:italic;line-height:1.5}.elementor-control-notice-main-actions{display:flex;gap:10px;padding-block-start:8px}.elementor-control-notice-main a{color:inherit;font-weight:700;cursor:pointer}.elementor-control-notice-main a:focus,.elementor-control-notice-main a:hover{color:inherit}.elementor-control-notice-dismiss{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:transparent;border:0;padding:0;margin:0;cursor:pointer} \ No newline at end of file diff --git a/wp-content/plugins/elementor/assets/css/app-base-rtl.css b/wp-content/plugins/elementor/assets/css/app-base-rtl.css new file mode 100644 index 0000000..10d40e7 --- /dev/null +++ b/wp-content/plugins/elementor/assets/css/app-base-rtl.css @@ -0,0 +1,107 @@ +/*! elementor - v3.20.0 - 26-03-2024 */ +:root { + --color-box-shadow-color: rgba(0, 0, 0, 0.05); +} + +.eps-theme-dark { + --color-box-shadow-color: rgba(0, 0, 0, 0.1); +} + +.sr-only { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + margin: -1px; + overflow: hidden; + clip: rect(0, 0, 0, 0); + white-space: nowrap; + border: 0; +} + +@media screen and (min-width: 480px) { + .text-start-sm { + text-align: start; + } +} +@media screen and (min-width: 480px) { + .text-center-sm { + text-align: center; + } +} +@media screen and (min-width: 480px) { + .text-end-sm { + text-align: end; + } +} +@media screen and (min-width: 768px) { + .text-start-md { + text-align: start; + } +} +@media screen and (min-width: 768px) { + .text-center-md { + text-align: center; + } +} +@media screen and (min-width: 768px) { + .text-end-md { + text-align: end; + } +} +@media screen and (min-width: 1025px) { + .text-start-lg { + text-align: start; + } +} +@media screen and (min-width: 1025px) { + .text-center-lg { + text-align: center; + } +} +@media screen and (min-width: 1025px) { + .text-end-lg { + text-align: end; + } +} +@media screen and (min-width: 1440px) { + .text-start-xl { + text-align: start; + } +} +@media screen and (min-width: 1440px) { + .text-center-xl { + text-align: center; + } +} +@media screen and (min-width: 1440px) { + .text-end-xl { + text-align: end; + } +} +@media screen and (min-width: 1600px) { + .text-start-xxl { + text-align: start; + } +} +@media screen and (min-width: 1600px) { + .text-center-xxl { + text-align: center; + } +} +@media screen and (min-width: 1600px) { + .text-end-xxl { + text-align: end; + } +} +@keyframes eps-animation-pop { + from { + transform: scale(0.75); + opacity: 0; + } + to { + transform: scale(1); + opacity: 1; + } +} +/*# sourceMappingURL=app-base-rtl.css.map */ \ No newline at end of file diff --git a/wp-content/plugins/elementor/assets/css/app-base-rtl.min.css b/wp-content/plugins/elementor/assets/css/app-base-rtl.min.css new file mode 100644 index 0000000..54e5d5f --- /dev/null +++ b/wp-content/plugins/elementor/assets/css/app-base-rtl.min.css @@ -0,0 +1,2 @@ +/*! elementor - v3.20.0 - 26-03-2024 */ +:root{--color-box-shadow-color:rgba(0,0,0,0.05)}.eps-theme-dark{--color-box-shadow-color:rgba(0,0,0,0.1)}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}@media screen and (min-width:480px){.text-start-sm{text-align:start}}@media screen and (min-width:480px){.text-center-sm{text-align:center}}@media screen and (min-width:480px){.text-end-sm{text-align:end}}@media screen and (min-width:768px){.text-start-md{text-align:start}}@media screen and (min-width:768px){.text-center-md{text-align:center}}@media screen and (min-width:768px){.text-end-md{text-align:end}}@media screen and (min-width:1025px){.text-start-lg{text-align:start}}@media screen and (min-width:1025px){.text-center-lg{text-align:center}}@media screen and (min-width:1025px){.text-end-lg{text-align:end}}@media screen and (min-width:1440px){.text-start-xl{text-align:start}}@media screen and (min-width:1440px){.text-center-xl{text-align:center}}@media screen and (min-width:1440px){.text-end-xl{text-align:end}}@media screen and (min-width:1600px){.text-start-xxl{text-align:start}}@media screen and (min-width:1600px){.text-center-xxl{text-align:center}}@media screen and (min-width:1600px){.text-end-xxl{text-align:end}}@keyframes eps-animation-pop{0%{transform:scale(.75);opacity:0}to{transform:scale(1);opacity:1}} \ No newline at end of file diff --git a/wp-content/plugins/elementor/assets/css/app-base.css b/wp-content/plugins/elementor/assets/css/app-base.css new file mode 100644 index 0000000..13f0f9b --- /dev/null +++ b/wp-content/plugins/elementor/assets/css/app-base.css @@ -0,0 +1,107 @@ +/*! elementor - v3.20.0 - 26-03-2024 */ +:root { + --color-box-shadow-color: rgba(0, 0, 0, 0.05); +} + +.eps-theme-dark { + --color-box-shadow-color: rgba(0, 0, 0, 0.1); +} + +.sr-only { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + margin: -1px; + overflow: hidden; + clip: rect(0, 0, 0, 0); + white-space: nowrap; + border: 0; +} + +@media screen and (min-width: 480px) { + .text-start-sm { + text-align: start; + } +} +@media screen and (min-width: 480px) { + .text-center-sm { + text-align: center; + } +} +@media screen and (min-width: 480px) { + .text-end-sm { + text-align: end; + } +} +@media screen and (min-width: 768px) { + .text-start-md { + text-align: start; + } +} +@media screen and (min-width: 768px) { + .text-center-md { + text-align: center; + } +} +@media screen and (min-width: 768px) { + .text-end-md { + text-align: end; + } +} +@media screen and (min-width: 1025px) { + .text-start-lg { + text-align: start; + } +} +@media screen and (min-width: 1025px) { + .text-center-lg { + text-align: center; + } +} +@media screen and (min-width: 1025px) { + .text-end-lg { + text-align: end; + } +} +@media screen and (min-width: 1440px) { + .text-start-xl { + text-align: start; + } +} +@media screen and (min-width: 1440px) { + .text-center-xl { + text-align: center; + } +} +@media screen and (min-width: 1440px) { + .text-end-xl { + text-align: end; + } +} +@media screen and (min-width: 1600px) { + .text-start-xxl { + text-align: start; + } +} +@media screen and (min-width: 1600px) { + .text-center-xxl { + text-align: center; + } +} +@media screen and (min-width: 1600px) { + .text-end-xxl { + text-align: end; + } +} +@keyframes eps-animation-pop { + from { + transform: scale(0.75); + opacity: 0; + } + to { + transform: scale(1); + opacity: 1; + } +} +/*# sourceMappingURL=app-base.css.map */ \ No newline at end of file diff --git a/wp-content/plugins/elementor/assets/css/app-base.min.css b/wp-content/plugins/elementor/assets/css/app-base.min.css new file mode 100644 index 0000000..54e5d5f --- /dev/null +++ b/wp-content/plugins/elementor/assets/css/app-base.min.css @@ -0,0 +1,2 @@ +/*! elementor - v3.20.0 - 26-03-2024 */ +:root{--color-box-shadow-color:rgba(0,0,0,0.05)}.eps-theme-dark{--color-box-shadow-color:rgba(0,0,0,0.1)}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}@media screen and (min-width:480px){.text-start-sm{text-align:start}}@media screen and (min-width:480px){.text-center-sm{text-align:center}}@media screen and (min-width:480px){.text-end-sm{text-align:end}}@media screen and (min-width:768px){.text-start-md{text-align:start}}@media screen and (min-width:768px){.text-center-md{text-align:center}}@media screen and (min-width:768px){.text-end-md{text-align:end}}@media screen and (min-width:1025px){.text-start-lg{text-align:start}}@media screen and (min-width:1025px){.text-center-lg{text-align:center}}@media screen and (min-width:1025px){.text-end-lg{text-align:end}}@media screen and (min-width:1440px){.text-start-xl{text-align:start}}@media screen and (min-width:1440px){.text-center-xl{text-align:center}}@media screen and (min-width:1440px){.text-end-xl{text-align:end}}@media screen and (min-width:1600px){.text-start-xxl{text-align:start}}@media screen and (min-width:1600px){.text-center-xxl{text-align:center}}@media screen and (min-width:1600px){.text-end-xxl{text-align:end}}@keyframes eps-animation-pop{0%{transform:scale(.75);opacity:0}to{transform:scale(1);opacity:1}} \ No newline at end of file diff --git a/wp-content/plugins/elementor/assets/css/app-rtl.css b/wp-content/plugins/elementor/assets/css/app-rtl.css new file mode 100644 index 0000000..2b972b6 --- /dev/null +++ b/wp-content/plugins/elementor/assets/css/app-rtl.css @@ -0,0 +1,3840 @@ +/*! elementor - v3.20.0 - 26-03-2024 */ +@import "//fonts.googleapis.com/css2?family=Roboto:ital,wght@0,100;0,300;0,400;0,500;0,700;0,900;1,100;1,300;1,400;1,500;1,700;1,900&display=swap"; +@import "//fonts.googleapis.com/css2?family=DM%20Sans&display=swap"; +@import "//fonts.googleapis.com/css2?family=Source%20Serif%20Pro&display=swap"; +:root { + --color-box-shadow-color: rgba(0, 0, 0, 0.05); +} + +.eps-theme-dark { + --color-box-shadow-color: rgba(0, 0, 0, 0.1); +} + +.sr-only { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + margin: -1px; + overflow: hidden; + clip: rect(0, 0, 0, 0); + white-space: nowrap; + border: 0; +} + +@media screen and (min-width: 480px) { + .text-start-sm { + text-align: start; + } +} +@media screen and (min-width: 480px) { + .text-center-sm { + text-align: center; + } +} +@media screen and (min-width: 480px) { + .text-end-sm { + text-align: end; + } +} +@media screen and (min-width: 768px) { + .text-start-md { + text-align: start; + } +} +@media screen and (min-width: 768px) { + .text-center-md { + text-align: center; + } +} +@media screen and (min-width: 768px) { + .text-end-md { + text-align: end; + } +} +@media screen and (min-width: 1025px) { + .text-start-lg { + text-align: start; + } +} +@media screen and (min-width: 1025px) { + .text-center-lg { + text-align: center; + } +} +@media screen and (min-width: 1025px) { + .text-end-lg { + text-align: end; + } +} +@media screen and (min-width: 1440px) { + .text-start-xl { + text-align: start; + } +} +@media screen and (min-width: 1440px) { + .text-center-xl { + text-align: center; + } +} +@media screen and (min-width: 1440px) { + .text-end-xl { + text-align: end; + } +} +@media screen and (min-width: 1600px) { + .text-start-xxl { + text-align: start; + } +} +@media screen and (min-width: 1600px) { + .text-center-xxl { + text-align: center; + } +} +@media screen and (min-width: 1600px) { + .text-end-xxl { + text-align: end; + } +} +@keyframes eps-animation-pop { + from { + transform: scale(0.75); + opacity: 0; + } + to { + transform: scale(1); + opacity: 1; + } +} +/** +TODO: The molecules, atoms and such generics should be at top level, so the styles will be not depended on the order. +EG: '../../../app/assets/styles/generic'. +Auto-import is designed for CSS that not dependent on the loading order. + */ +.eps-button { + display: inline-flex; + --button-line-height: 16px; + --button-padding-y: 0.5em; + --button-padding-x: 1.5em; + --button-primary-background-color: #F3BAFD; + --button-primary-hover-background-color: #F5D0FE; + --button-primary-active-background-color: #F3BAFD; + --button-primary-color: #0C0D0E; + --button-secondary-background-color: #69727D; + --button-secondary-hover-background-color: #525961; + --button-secondary-active-background-color: #3a3f46; + --button-secondary-color: #ffffff; + --button-danger-background-color: #DC2626; + --button-danger-hover-background-color: #b21d1d; + --button-danger-active-background-color: #861616; + --button-danger-color: #ffffff; + --button-cta-background-color: #93003f; + --button-cta-hover-background-color: #600029; + --button-cta-active-background-color: #2d0013; + --button-cta-color: #ffffff; + --button-brand-background-color: #93003f; + --button-brand-hover-background-color: #600029; + --button-brand-active-background-color: #2d0013; + --button-brand-color: #ffffff; + --button-link-background-color: #515962; + --button-link-hover-background-color: #3a4046; + --button-link-active-background-color: #23262a; + --button-link-color: #ffffff; + --button-disabled-background-color: #D5D8DC; + --button-disabled-hover-background-color: #b9bec5; + --button-disabled-active-background-color: #9da4ae; + --button-disabled-color: #ffffff; + color: var(--button-background-color, currentColor); + font-size: var(--button-font-size, inherit); + font-weight: 500; + line-height: var(--button-line-height); + transition: var(--e-a-transition-hover); + cursor: pointer; +} +.eps-button:active { + --button-background-color: var(--button-active-background-color, transparent); +} +.eps-button:hover { + --button-background-color: var(--button-hover-background-color); +} +.eps-theme-dark .eps-button { + --button-primary-background-color: #F3BAFD; + --button-primary-color: #0C0D0E; + --button-primary-hover-background-color: #EB8EFB; + --button-primary-active-background-color: #F3BAFD; + --button-secondary-background-color: #BABFC5; + --button-secondary-color: #fff; + --button-secondary-hover-background-color: #9ea5ae; + --button-secondary-active-background-color: #838c96; + --button-cta-background-color: #93003f; + --button-cta-hover-background-color: #600029; + --button-cta-active-background-color: #2d0013; + --button-cta-color: #fff; + --button-brand-hover-background-color: #600029; + --button-brand-active-background-color: #2d0013; + --button-brand-color: #fff; + --button-brand-background-color: #93003f; + --button-link-background-color: #515962; + --button-link-hover-background-color: #3a4046; + --button-link-active-background-color: #23262a; + --button-link-color: #ffffff; + --button-disabled-background-color: #69727D; + --button-disabled-hover-background-color: #525961; + --button-disabled-active-background-color: #3a3f46; + --button-disabled-color: #fff; +} +.eps-button--contained { + color: var(--button-color); + padding: var(--button-padding-y) var(--button-padding-x); + background-color: var(--button-background-color, transparent); + border: 1px solid var(--button-background-color); +} +.eps-button--contained:hover { + color: var(--button-color); +} +.eps-button--outlined { + display: block; + padding: var(--button-padding-y) var(--button-padding-x); + border: 1px solid var(--button-background-color); +} +.eps-button--contained, .eps-button--outlined { + border-radius: 0.1875rem; +} +.eps-button--underlined { + text-decoration: underline; +} +.eps-button--sm { + --button-font-size: 0.75rem; + --button-line-height: 14px; +} +.eps-button--lg { + --button-font-size: 0.9375rem; + --button-line-height: 18px; +} +.eps-button--primary { + --button-color: var(--button-primary-color); + --button-background-color: var(--button-primary-background-color); + --button-hover-background-color: var(--button-primary-hover-background-color); + --button-active-background-color: var(--button-primary-active-background-color); +} +.eps-button--secondary { + --button-color: var(--button-secondary-color); + --button-background-color: var(--button-secondary-background-color); + --button-hover-background-color: var(--button-secondary-hover-background-color); + --button-active-background-color: var(--button-secondary-active-background-color); +} +.eps-button--danger { + --button-color: var(--button-danger-color); + --button-background-color: var(--button-danger-background-color); + --button-hover-background-color: var(--button-danger-hover-background-color); + --button-active-background-color: var(--button-danger-active-background-color); +} +.eps-button--cta { + --button-color: var(--button-brand-color); + --button-background-color: var(--button-cta-background-color); + --button-hover-background-color: var(--button-cta-hover-background-color); + --button-active-background-color: var(--button-cta-active-background-color); +} +.eps-button--brand { + --button-color: var(--button-cta-color); + --button-background-color: var(--button-cta-background-color); + --button-hover-background-color: var(--button-cta-hover-background-color); + --button-active-background-color: var(--button-cta-active-background-color); +} +.eps-button--link { + --button-color: var(--button-link-color); + --button-background-color: var(--button-link-background-color); + --button-hover-background-color: var(--button-link-hover-background-color); + --button-active-background-color: var(--button-link-active-background-color); +} +.eps-button--disabled, .eps-button[disabled] { + --button-color: var(--button-disabled-color); + --button-background-color: var(--button-disabled-background-color); + --button-hover-background-color: var(--button-disabled-hover-background-color); + --button-active-background-color: var(--button-disabled-active-background-color); + cursor: default; +} + +:root { + --app-background-color: #ffffff; + --app-box-shadow-color: rgba(var(--box-shadow-color, rgba(0, 0, 0, 0.15)), 0.2); + --app-header-color: #1f2124; + --app-logo-color: #ffffff; + --app-logo-background-color: #0C0D0E; + --app-title-color: #0C0D0E; + --app-header-buttons-separator-color: #9DA5AE; + --app-header-buttons-color: #515962; + --app-header-buttons-color-hover: #0C0D0E; + --app-lightbox-background-color: rgba(0, 0, 0, 0.8); +} + +.eps-theme-dark { + --app-background-color: #1f2124; + --app-box-shadow-color: rgba(var(--box-shadow-color, rgba(0, 0, 0, 0.15)), 0.2); + --app-header-color: #D5D8DC; + --app-logo-color: #0C0D0E; + --app-logo-background-color: #ffffff; + --app-title-color: #fff; + --app-header-buttons-separator-color: #818A96; + --app-header-buttons-color: #BABFC5; + --app-header-buttons-color-hover: #9DA5AE; + --app-lightbox-background-color: rgba(0, 0, 0, 0.8); +} + +:root { + --text-muted: #BABFC5; + --disabled: #D5D8DC; + --light: #ffffff; + --dark: #000000; + --cta: #93003f; + --brand: #93003f; + --accent: #F3BAFD; + --primary: #93003f; + --primary-bg: #FAE8FF; + --secondary: #515962; + --info: #2563EB; + --info-bg: #F0F7FF; + --danger: #DC2626; + --danger-bg: #FEF1F4; + --success: #0A875A; + --success-bg: #F2FDF5; + --warning: #F59E0B; + --warning-bg: #FFFBEB; + --body-color: #515962; + --body-bg: #ffffff; + --link-color: #515962; + --link-hover-color: #2e3338; + --hr-color: #E6E8EA; + --box-shadow-color: theme-colors(dark); + --display-1-color: #515962; + --display-2-color: #515962; + --display-3-color: #515962; + --display-4-color: #515962; + --h1-color: #515962; + --h2-color: #515962; + --h3-color: #515962; + --h4-color: #515962; + --h5-color: #515962; + --h6-color: #515962; + --text-base-color: #515962; + --text-xl-color: #515962; + --text-lg-color: #515962; + --text-sm-color: #515962; + --text-xs-color: #515962; + --text-xxs-color: #515962; + --gray-900: #0C0D0E; + --gray-800: #1f2124; + --gray-750: #2b2c31; + --gray-725: #333438; + --gray-700: #3f444b; + --gray-600: #515962; + --gray-500: #69727D; + --gray-400: #818A96; + --gray-300: #9DA5AE; + --gray-200: #BABFC5; + --gray-100: #D5D8DC; + --gray-75: #E6E8EA; + --gray-50: #F1F2F3; + --gray-25: #F9FAFA; +} + +.eps-theme-dark { + --text-muted: #818A96; + --disabled: #69727D; + --light: #fff; + --dark: #000; + --accent: #524CFF; + --cta: #93003f; + --brand: #93003f; + --success: #39b54a; + --success-bg: #032317; + --info: #0077CC; + --info-bg: #0A1A3D; + --warning: #fcb92c; + --warning-bg: #311808; + --danger: #F84343; + --danger-bg: #390A0A; + --body-color: #BABFC5; + --body-bg: #1f2124; + --link-color: #0077CC; + --link-hover-color: #2e3338; + --hr-color: #333438; + --box-shadow-color: rgba(0, 0, 0, 0.15); + --display-1-color: #BABFC5; + --display-2-color: #BABFC5; + --display-3-color: #BABFC5; + --display-4-color: #BABFC5; + --h1-color: #BABFC5; + --h2-color: #BABFC5; + --h3-color: #BABFC5; + --h4-color: #BABFC5; + --h5-color: #BABFC5; + --h6-color: #BABFC5; + --text-base-color: #BABFC5; + --text-xl-color: #BABFC5; + --text-lg-color: #BABFC5; + --text-sm-color: #BABFC5; + --text-xs-color: #BABFC5; + --text-xxs-color: #BABFC5; + --gray-900: #0C0D0E; + --gray-800: #1f2124; + --gray-750: #2b2c31; + --gray-725: #333438; + --gray-700: #3f444b; + --gray-600: #515962; + --gray-500: #69727D; + --gray-400: #818A96; + --gray-300: #9DA5AE; + --gray-200: #BABFC5; + --gray-100: #D5D8DC; + --gray-75: #E6E8EA; + --gray-50: #F1F2F3; + --gray-25: #F9FAFA; +} + +*, +*::before, +*::after { + box-sizing: border-box; +} + +html { + font-family: sans-serif; + line-height: 1.15; + -webkit-text-size-adjust: 100%; + -webkit-tap-highlight-color: rgba(0, 0, 0, 0); +} + +article, aside, figcaption, figure, footer, header, hgroup, main, nav, section { + display: block; +} + +body { + margin: 0; + font-family: Roboto, Arial, Helvetica, Verdana, sans-serif; + font-size: 0.875rem; + font-weight: 400; + line-height: 1.5; + color: var(--body-color); + background-color: var(--body-bg); +} + +[tabindex="-1"]:focus:not(:focus-visible) { + outline: 0 !important; +} + +h1, h2, h3, h4, h5, h6 { + font-size: 100%; + margin: 0; + padding: 0; + line-height: inherit; + font-weight: normal; +} + +p { + margin-block-start: 0; +} + +b, +strong { + font-weight: 700; +} + +small { + font-size: 80%; +} + +a { + --eps-link-color: $eps-link-color; + color: var(--eps-link-color); + background-color: transparent; +} +a, a:active, a:hover, a:focus { + text-decoration: none; +} +a:focus, a:hover { + --eps-link-color: $eps-link-hover-color; + text-decoration: none; +} + +a:not([href]) { + color: inherit; + text-decoration: none; +} +a:not([href]):hover { + color: inherit; + text-decoration: none; +} + +pre, +code, +kbd, +samp { + font-family: monospace; + font-size: 1em; +} + +figure { + margin: 0 0 0; +} + +img { + vertical-align: middle; + border-style: none; +} + +svg { + overflow: hidden; + vertical-align: middle; +} + +button { + border-radius: 0; +} + +button:focus { + outline: 1px dotted; + outline: 5px auto -webkit-focus-ring-color; +} + +input, +button, +select, +optgroup, +textarea { + margin: 0; + font-family: inherit; + font-size: inherit; + line-height: inherit; +} + +button, +input { + overflow: visible; +} + +button, +select { + text-transform: none; +} + +[role=button] { + cursor: pointer; +} + +select { + word-wrap: normal; +} + +button, +[type=button], +[type=reset], +[type=submit] { + -webkit-appearance: button; + -moz-appearance: button; + appearance: button; +} + +button:not(:disabled), +[type=button]:not(:disabled), +[type=reset]:not(:disabled), +[type=submit]:not(:disabled) { + cursor: pointer; +} + +input[type=radio], +input[type=checkbox] { + box-sizing: border-box; + padding: 0; +} + +textarea { + overflow: auto; + resize: vertical; +} + +[hidden] { + display: none !important; +} + +hr { + border: 0 none; + border-block-end: 1px solid var(--hr-color); +} + +.eps-display-1 { + font-size: 1.85rem; + color: var(--display-1-color); + margin-block-start: 0.5rem; + margin-block-end: 0.5rem; +} + +.eps-display-2 { + font-size: 1.85rem; + color: var(--display-2-color); + margin-block-start: 0.5rem; + margin-block-end: 0.5rem; +} + +.eps-display-3 { + font-size: 1.85rem; + color: var(--display-3-color); + margin-block-start: 0; + margin-block-end: 1.25rem; +} + +.eps-display-4 { + font-size: 1.85rem; + color: var(--display-4-color); + margin-block-start: 0.5rem; + margin-block-end: 0.5rem; +} + +h1, +.eps-h1 { + font-size: 1.625rem; + line-height: 1; + color: var(--h1-color); + margin-block-end: 1.25rem; + font-weight: 500; +} + +h2, +.eps-h2 { + font-size: 1.25rem; + line-height: 1.2; + color: var(--h2-color); + margin-block-start: 0; + margin-block-end: 1.25rem; + font-weight: 500; +} + +h3, +.eps-h3 { + font-size: 1rem; + line-height: 1.2; + color: var(--h3-color); + margin-block-start: 0; + margin-block-end: 0.5rem; + font-weight: 500; +} + +h4, +.eps-h4 { + font-size: 0.9375rem; + color: var(--h4-color); + margin-block-start: 0; + margin-block-end: 0.5rem; +} + +h5, +.eps-h5 { + font-size: 0.875rem; + color: var(--h5-color); + margin-block-start: 0; + margin-block-end: 0.5rem; +} + +h6, +.eps-h6 { + font-size: 0.875rem; + color: var(--h-6-color); + margin-block-start: 0; + margin-block-end: 0.5rem; + font-weight: 700; +} + +.eps-text-xxs { + font-size: 0.75rem; + line-height: 1.2; + color: var(--text-xxs-color); + font-weight: 400; +} + +.eps-text-xs { + font-size: 0.75rem; + line-height: 1.5; + color: var(--text-xs-color); + font-weight: 400; +} + +.eps-text { + font-size: 0.875rem; + line-height: 1.5; + color: var(--text-base-color); + font-weight: 400; +} + +.eps-text-sm { + font-size: 0.8125rem; + line-height: 1.5; + color: var(--text-sm-color); + font-weight: 400; +} + +.eps-text-lg { + font-size: 0.9375rem; + line-height: 1.5; + color: var(--text-lg-color); + font-weight: 400; +} + +.eps-text-xl { + font-size: 1rem; + line-height: 1.5; + color: var(--text-xl-color); + font-weight: 400; +} + +.video-wrapper { + position: relative; + padding-block-end: 56.25%; + height: 0; +} +.video-wrapper iframe { + position: absolute; + top: 0; + right: 0; + width: 100%; + height: 100%; +} + +.eps-separator { + margin-block-end: 2.75rem; +} + +.eps-theme-dark { + --e-app-back-button-color: #BABFC5; +} + +.back-button, .e-app-back-button { + --button-background-color: var(--e-app-back-button-color, #69727D); + margin-block-end: 1.5rem; +} +.back-button .eps-icon, .e-app-back-button .eps-icon { + margin-inline-end: 0.3125rem; +} + +.eps-theme-dark { + --input-border-color: --hr-color; +} + +.eps-input { + border: 1px solid var(--hr-color); + border-radius: 0.1875rem; + background: transparent; + color: inherit; + height: 1.875rem; + padding: 0 0.3125rem; +} +.eps-input--block { + width: 100%; +} + +.eps-app { + display: flex; + height: 100vh; + flex-direction: column; + color: var(--body-color); + background-color: var(--app-background-color); + position: absolute; + border-radius: 0; + box-shadow: 2px 8px 23px 3px var(--color-box-shadow-color); + overflow: hidden; + font-family: Roboto, Arial, Helvetica, Verdana, sans-serif; + width: 100%; + max-width: 100%; +} +.eps-app__lightbox { + display: flex; + align-items: center; + justify-content: center; + position: fixed; + height: 100%; + width: 100%; + background-color: var(--app-lightbox-background-color); + z-index: 1040; + bottom: 0; + right: 0; +} +.eps-app__header { + flex-shrink: 0; + font-size: 0.9375rem; + border-block-end: var(--e-a-border); + position: relative; + z-index: 3; + height: 3.125rem; + padding-block: 0; + padding-inline: 1rem; +} +.eps-app__header-buttons { + display: flex; + align-items: center; + flex-direction: row-reverse; + font-size: 1.125rem; +} +.eps-app__header-btn { + padding-inline-start: 1rem; + font-size: 1.125rem; + line-height: 1.25rem; +} +.eps-app__header-btn:hover { + color: var(--app-header-buttons-color-hover); +} +.eps-app__header-btn:first-child { + border-inline-start: 1px solid var(--app-header-buttons-separator-color); +} +.eps-app__header-btn:not(:first-child) { + padding-inline-end: 1rem; +} +.eps-app__logo-title-wrapper { + display: flex; + align-items: center; +} +.eps-app__logo { + display: block; + width: 1.75rem; + height: 1.75rem; + line-height: 1.75rem; + text-align: center; + font-size: calc(0.4 * 1.75rem); + border-radius: 50%; + color: var(--app-logo-color); + background-color: var(--app-logo-background-color); +} +.eps-app__logo:not(:last-child) { + margin-inline-end: 0.625rem; +} +.eps-app__title { + color: var(--app-title-color); + font-size: 0.9375rem; + font-weight: 700; + text-transform: uppercase; + margin-block-end: 0; +} +.eps-app__main { + display: flex; + overflow: hidden; + flex-grow: 1; +} +.eps-app__sidebar { + background-color: var(--app-sidebar-background-color); + padding-block-start: 1.25rem; + width: 30%; + max-width: 17.1875rem; + border-inline-end: var(--e-a-border); + flex-grow: 0; + overflow-y: auto; + z-index: 4; +} +.eps-app__content { + flex-grow: 1; + position: relative; + padding: 2.75rem; + height: 100%; + overflow-y: auto; +} + +.e-app-upload-file__input { + display: none; +} + +.e-app-drop-zone { + --e-app-drop-zone-text-color: #69727D; + --e-app-drop-zone-secondary-text-color: #515962; +} +.e-app-drop-zone__icon { + margin-block-end: 2.75rem; + font-size: 60px; +} +.e-app-drop-zone__text { + color: var(--e-app-drop-zone-text-color); +} +.e-app-drop-zone__secondary-text { + color: var(--e-app-drop-zone-secondary-text-color); +} + +.eps-theme-dark .e-app-drop-zone { + --e-app-drop-zone-text-color: #BABFC5; + --e-app-drop-zone-secondary-text-color: #D5D8DC; +} + +:root { + --info-toggle-color: #9DA5AE; + --info-toggle-hover-color: #69727D; +} + +.eps-theme-dark { + --placeholder-filter: invert(0.8) sepia(1) saturate(0.2) hue-rotate(180deg) contrast(1.25) brightness(1.2); + --info-toggle-color: #818A96; + --info-toggle-hover-color: #BABFC5; +} + +.e-site-part .eps-card__image { + filter: var(--placeholder-filter, none); +} +.e-site-part__info-toggle { + color: var(--info-toggle-color); +} +.e-site-part__info-toggle:hover { + --info-toggle-color: var(--info-toggle-hover-color); +} + +.e-site-editor__header { + margin-block-end: 2.75rem; + border-block-end: 1px solid var(--hr-color); +} + +:root { + --e-elementor-loader-color: #ffffff; + --e-elementor-loader-wrapper-color: #F9FAFA; + --e-elementor-loader-box-color: #E6E8EA; +} + +.eps-theme-dark { + --e-elementor-loader-color: #1f2124; + --e-elementor-loader-wrapper-color: #2b2c31; + --e-elementor-loader-box-color: #3f444b; +} + +.elementor-loading { + background-color: var(--e-elementor-loader-color); + height: 100vh; +} + +.elementor-loader-wrapper { + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + width: 300px; + display: flex; + flex-direction: column; + align-items: center; + gap: 30px; +} + +.elementor-loader { + border-radius: 50%; + padding: 40px; + height: 150px; + width: 150px; + background-color: var(--e-elementor-loader-wrapper-color); + box-sizing: border-box; + box-shadow: 2px 2px 20px 4px rgba(0, 0, 0, 0.02); +} + +.elementor-loader-boxes { + height: 100%; + width: 100%; + position: relative; +} + +.elementor-loader-box { + position: absolute; + background-color: var(--e-elementor-loader-box-color); + animation: load 1.8s linear infinite; +} +.elementor-loader-box:nth-of-type(1) { + width: 20%; + height: 100%; + right: 0; + top: 0; +} +.elementor-loader-box:not(:nth-of-type(1)) { + left: 0; + height: 20%; + width: 60%; +} +.elementor-loader-box:nth-of-type(2) { + top: 0; + animation-delay: calc(1.8s / 4 * -1); +} +.elementor-loader-box:nth-of-type(3) { + top: 40%; + animation-delay: calc(1.8s / 4 * -2); +} +.elementor-loader-box:nth-of-type(4) { + bottom: 0; + animation-delay: calc(1.8s / 4 * -3); +} + +.elementor-loading-title { + color: #9DA5AE; + text-align: center; + text-transform: uppercase; + letter-spacing: 7px; + text-indent: 7px; + font-size: 10px; + width: 100%; +} + +@keyframes load { + 0% { + opacity: 0.3; + } + 50% { + opacity: 1; + } + 100% { + opacity: 0.3; + } +} +.eps-menu__title { + margin-block-start: 2.75rem; + margin-block-end: 1rem; +} + +.e-app-import { + --e-app-import-back-to-library-color: #69727D; + padding-block-end: 1.25rem; +} +.e-app-import__drop-zone { + margin-block-start: 1.25rem; +} +.e-app-import__back-to-library { + color: var(--e-app-import-back-to-library-color); + margin-block-end: 1.5rem; +} +.e-app-import__back-to-library > i { + margin-inline-end: 0.5rem; +} + +.eps-theme-dark .e-app-import { + --e-app-import-back-to-library-color: #BABFC5; +} + +.e-site-editor__promotion-overlay__link { + display: flex; + width: 100%; + height: 100%; + align-items: center; + justify-content: center; + flex-direction: column; + text-decoration: none; +} +.e-site-editor__promotion-overlay__icon { + font-size: 1.25rem; + color: #ffffff; + margin-block-end: 1rem; +} + +.e-app-import-export-wizard-step { + --e-app-import-export-wizard-step-icon-color: #818A96; + --e-app-import-export-wizard-step-text-color: #69727D; + --e-app-import-export-wizard-step-block-end-text-color: #69727D; + height: 100%; + position: relative; + text-align: center; +} +.e-app-import-export-wizard-step__media-container { + height: 140px; + margin: 5.5rem 0 2.75rem; +} +.e-app-import-export-wizard-step__icon { + color: var(--e-app-import-export-wizard-step-icon-color); + font-size: 50px; +} +.e-app-import-export-wizard-step__icon.eicon-loading { + font-size: 1.85rem; +} +.e-app-import-export-wizard-step__heading { + margin-block-end: 1.5rem; +} +.e-app-import-export-wizard-step__description, .e-app-import-export-wizard-step__info { + color: var(--e-app-import-export-wizard-step-text-color); +} +.e-app-import-export-wizard-step__info { + margin-block-start: 1.5rem; +} +.e-app-import-export-wizard-step__content { + text-align: initial; + margin-block-end: 1.25rem; +} +.e-app-import-export-wizard-step__notice { + display: block; + position: sticky; + top: 100%; /* Will prevent text overlapping when window height is too short. */ + color: var(--e-app-import-export-wizard-step-block-end-text-color); + font-style: italic; + margin-block-end: 0; +} + +.eps-theme-dark .e-app-import-export-wizard-step { + --e-app-import-export-wizard-step-icon-color: #818A96; + --e-app-import-export-wizard-step-text-color: #BABFC5; + --e-app-import-export-wizard-step-block-end-text-color: #BABFC5; +} + +.e-app-import-export-page-header { + --e-app-import-export-page-header-heading-color: #515962; + --e-app-import-export-page-header-description-color: #69727D; + margin-block-end: 2.75rem; +} +.e-app-import-export-page-header__content-wrapper { + max-width: 645px; +} +.e-app-import-export-page-header__heading { + color: var(--e-app-import-export-page-header-heading-color); +} +.e-app-import-export-page-header__description { + color: var(--e-app-import-export-page-header-description-color); + margin-block-start: 1.25rem; +} + +.eps-theme-dark .e-app-import-export-page-header { + --e-app-import-export-page-header-heading-color: #D5D8DC; + --e-app-import-export-page-header-description-color: #D5D8DC; +} + +.e-app-export-kit-content { + --e-app-export-kit-content-title-color: #3f444b; + --e-app-export-kit-content-description-color: #515962; + --e-app-export-kit-content-sm-notice-color: #BABFC5; +} +.e-app-export-kit-content__checkbox { + flex-shrink: 0; + margin-inline-end: 0.75rem; +} +.e-app-export-kit-content__title { + color: var(--e-app-export-kit-content-title-color); +} +.e-app-export-kit-content__description { + color: var(--e-app-export-kit-content-description-color); + margin-inline-end: 1.25rem; +} +.e-app-export-kit-content__notice { + margin-block-start: 1rem; +} +.e-app-export-kit-content__small-notice { + font-style: italic; + color: var(--e-app-export-kit-content-sm-notice-color); +} + +.eps-theme-dark .e-app-export-kit-content { + --e-app-export-kit-content-title-color: #D5D8DC; + --e-app-export-kit-content-description-color: #BABFC5; + --e-app-export-kit-content-sm-notice-color: #818A96; +} + +.e-app-wizard-footer { + --e-app-wizard-footer-border-color: #E6E8EA; + padding: 0.5rem; +} +.e-app-wizard-footer__separator { + border-block-start: 1px solid var(--e-app-wizard-footer-border-color); +} + +.eps-theme-dark .e-app-wizard-footer { + --e-app-wizard-footer-border-color: #333438; +} + +.e-app-export-templates-features__locked { + --e-app-export-templates-features-locked-color: #69727D; + color: var(--e-app-export-templates-features-locked-color); +} + +.eps-theme-dark .e-app-export-templates-features__locked { + --e-app-export-templates-features-locked-color: #9DA5AE; +} + +:root { + --color-box-shadow-color: rgba(0, 0, 0, 0.05); +} + +.eps-theme-dark { + --color-box-shadow-color: rgba(0, 0, 0, 0.1); +} + +:root { + --card-background-color-hover: #ffffff; + --card-border: 1px solid #D5D8DC; + --card-header-footer-border: 1px solid var(--e-a-border-color); + --card-header-footer-active-border: 2px solid #BABFC5; + --card-headline-color: #515962; + --card-figure-background-color: #BABFC5; + --card-image-overlay-background-color: rgba(0, 0, 0, 0.2); +} + +.eps-theme-dark { + --card-background-color-hover: #2b2c31; + --card-border: 1px solid #333438; + --card-header-footer-border: 1px solid #333438; + --card-header-footer-active-border: 1px solid #1f2124; + --card-headline-color: #D5D8DC; + --card-figure-background-color: #3f444b; + --card-image-overlay-background-color: rgba(63, 68, 75, 0.5); +} + +.eps-card { + border: var(--card-border); + border-radius: 0.1875rem; + transition: 0.3s; + font-size: 0.75rem; + /* + todo: TBD: Optionally remove headline styling in favor of a global atom depending on variation needs + */ +} +.eps-card__header { + padding: 0.625rem; + border-block-end: var(--card-header-footer-border); + min-height: 2.5rem; + display: flex; + align-items: center; +} +.eps-card__header--padding { + padding: var(--eps-card-header-padding); +} +.eps-card__headline { + color: var(--card-headline-color); + margin-block-end: 0; + font-weight: 500; + flex-grow: 1; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} +.eps-card__body { + padding: 0.625rem 0.625rem; +} +.eps-card__body--padding { + padding: var(--eps-card-body-padding); +} +.eps-card__figure { + background-color: var(--card-figure-background-color); + position: relative; + padding-block-end: var(--card-image-aspect-ratio, 95.6%); + overflow: hidden; + height: 0; +} +.eps-card__image { + width: 100%; + -o-object-fit: contain; + object-fit: contain; + -o-object-position: top; + object-position: top; + position: absolute; + top: 0; + right: 0; +} +.eps-card__image-overlay { + position: absolute; + top: 0; + background-color: var(--card-image-overlay-background-color); + z-index: 1; + width: 100%; + height: 100%; + opacity: 0; + transition: 0.3s; +} +.eps-card__image-overlay:hover { + opacity: 1; +} +.eps-card__footer { + padding: 0.625rem; + border-block-start: var(--card-header-footer-border); + font-size: 0.6875rem; +} +.eps-card__footer--padding { + padding: var(--eps-card-footer-padding); +} + +:root { + --menu-item-color: #515962; + --menu-item-color-hover: #3f444b; + --menu-item-color-active: #0C0D0E; + --menu-item-background-color-hover: #F9FAFA; + --menu-item-background-color-active: #E6E8EA; + --menu-item-action-button-color: #9DA5AE; +} + +.eps-theme-dark { + --menu-item-color: #D5D8DC; + --menu-item-color-hover: #BABFC5; + --menu-item-color-active: #9DA5AE; + --menu-item-background-color-hover: #2b2c31; + --menu-item-background-color-active: #333438; + --menu-item-action-button-color: #818A96; +} + +.eps-menu-item { + display: flex; + align-items: center; + position: relative; + transition: 0.3s; + --action-button-opacity: 0; +} +.eps-menu-item::before { + content: ""; + display: block; + position: absolute; + top: 0; + right: 0; + height: 100%; + width: var(--menu-item-pointer-width); + background-color: #0C0D0E; +} +.eps-menu-item:hover:not(.eps-menu-item--active) { + background-color: var(--menu-item-background-color-hover); + --action-button-opacity: 1; + --menu-item-color: var(--menu-item-color-hover); + --eps-link-color: var(--menu-item-color-hover); +} +.eps-menu-item--active { + background-color: var(--menu-item-background-color-active); + --menu-item-color: var(--menu-item-color-active); + --eps-link-color: var(--menu-item-color-active); +} +.eps-menu-item__link { + padding: 0.5rem 1.875rem; + min-height: 2.75rem; + font-size: 0.75rem; + line-height: 1.2; + flex-grow: 1; + display: flex; + align-items: center; + color: var(--menu-item-color); + --eps-link-color: var(--menu-item-color); +} +.eps-menu-item__link:not(:last-child) { + padding-inline-end: 0; +} +.eps-menu-item__link .eps-icon { + font-size: 1.125rem; + margin-inline-end: 0.75rem; +} +.eps-menu-item__action-button { + opacity: var(--action-button-opacity); + padding: 0.625rem; + transition: 0.3s; + margin-inline-end: 1.25rem; +} +.eps-menu-item--active { + --menu-item-pointer-width: 0.3125rem; +} + +.eps-grid-container { + display: flex; + flex-wrap: wrap; + width: 100%; +} +.eps-grid-container--no-wrap { + flex-wrap: nowrap; +} +.eps-grid-container--wrap-reverse { + flex-wrap: wrap-reverse; +} +.eps-grid-container--spacing { + --grid-row-gutter: calc(-1 * calc(var(--grid-spacing-gutter) * 0.625rem / 10)); + width: var(--grid-spacing-width); + margin: var(--grid-row-gutter); +} +.eps-grid-container--spacing > .eps-grid-item { + padding: var(--grid-spacing-gutter); +} +.eps-grid--direction-row { + flex-direction: row; +} +.eps-grid--direction-row-reverse { + flex-direction: row-reverse; +} +.eps-grid--direction-column { + flex-direction: column; +} +.eps-grid--direction-column-reverse { + flex-direction: column-reverse; +} +.eps-grid--justify-stretch { + justify-content: stretch; +} +.eps-grid--justify-start { + justify-content: flex-start; +} +.eps-grid--justify-center { + justify-content: center; +} +.eps-grid--justify-end { + justify-content: flex-end; +} +.eps-grid--justify-space-between { + justify-content: space-between; +} +.eps-grid--justify-space-around { + justify-content: space-around; +} +.eps-grid--justify-space-evenly { + justify-content: space-evenly; +} +.eps-grid--align-content-stretch { + align-content: stretch; +} +.eps-grid--align-content-start { + align-content: flex-start; +} +.eps-grid--align-content-center { + align-content: center; +} +.eps-grid--align-content-end { + align-content: flex-end; +} +.eps-grid--align-content-space-between { + align-content: space-between; +} +.eps-grid--align-items-start { + align-items: flex-start; +} +.eps-grid--align-items-center { + align-items: center; +} +.eps-grid--align-items-end { + align-items: flex-end; +} +.eps-grid--align-items-baseline { + align-items: baseline; +} +.eps-grid--align-items-stretch { + align-items: stretch; +} + +.eps-grid-item--zero-min-width { + min-width: 0; +} + +@media screen and (min-width: 480px) { + .eps-grid-item-sm { + flex-grow: 1; + max-width: 100%; + flex-basis: 0; + } +} +@media screen and (min-width: 768px) { + .eps-grid-item-md { + flex-grow: 1; + max-width: 100%; + flex-basis: 0; + } +} +@media screen and (min-width: 1025px) { + .eps-grid-item-lg { + flex-grow: 1; + max-width: 100%; + flex-basis: 0; + } +} +@media screen and (min-width: 1440px) { + .eps-grid-item-xl { + flex-grow: 1; + max-width: 100%; + flex-basis: 0; + } +} +@media screen and (min-width: 1600px) { + .eps-grid-item-xxl { + flex-grow: 1; + max-width: 100%; + flex-basis: 0; + } +} +.eps-grid-item-xs-1 { + flex-grow: 0; + max-width: calc(1 / 12 * 100%); + flex-basis: calc(1 / 12 * 100%); +} + +.eps-grid-item-xs-2 { + flex-grow: 0; + max-width: calc(2 / 12 * 100%); + flex-basis: calc(2 / 12 * 100%); +} + +.eps-grid-item-xs-3 { + flex-grow: 0; + max-width: calc(3 / 12 * 100%); + flex-basis: calc(3 / 12 * 100%); +} + +.eps-grid-item-xs-4 { + flex-grow: 0; + max-width: calc(4 / 12 * 100%); + flex-basis: calc(4 / 12 * 100%); +} + +.eps-grid-item-xs-5 { + flex-grow: 0; + max-width: calc(5 / 12 * 100%); + flex-basis: calc(5 / 12 * 100%); +} + +.eps-grid-item-xs-6 { + flex-grow: 0; + max-width: calc(6 / 12 * 100%); + flex-basis: calc(6 / 12 * 100%); +} + +.eps-grid-item-xs-7 { + flex-grow: 0; + max-width: calc(7 / 12 * 100%); + flex-basis: calc(7 / 12 * 100%); +} + +.eps-grid-item-xs-8 { + flex-grow: 0; + max-width: calc(8 / 12 * 100%); + flex-basis: calc(8 / 12 * 100%); +} + +.eps-grid-item-xs-9 { + flex-grow: 0; + max-width: calc(9 / 12 * 100%); + flex-basis: calc(9 / 12 * 100%); +} + +.eps-grid-item-xs-10 { + flex-grow: 0; + max-width: calc(10 / 12 * 100%); + flex-basis: calc(10 / 12 * 100%); +} + +.eps-grid-item-xs-11 { + flex-grow: 0; + max-width: calc(11 / 12 * 100%); + flex-basis: calc(11 / 12 * 100%); +} + +.eps-grid-item-xs-12 { + flex-grow: 0; + max-width: calc(12 / 12 * 100%); + flex-basis: calc(12 / 12 * 100%); +} + +@media screen and (min-width: 480px) { + .eps-grid-item-sm-1 { + flex-grow: 0; + max-width: calc(1 / 12 * 100%); + flex-basis: calc(1 / 12 * 100%); + } + .eps-grid-item-sm-2 { + flex-grow: 0; + max-width: calc(2 / 12 * 100%); + flex-basis: calc(2 / 12 * 100%); + } + .eps-grid-item-sm-3 { + flex-grow: 0; + max-width: calc(3 / 12 * 100%); + flex-basis: calc(3 / 12 * 100%); + } + .eps-grid-item-sm-4 { + flex-grow: 0; + max-width: calc(4 / 12 * 100%); + flex-basis: calc(4 / 12 * 100%); + } + .eps-grid-item-sm-5 { + flex-grow: 0; + max-width: calc(5 / 12 * 100%); + flex-basis: calc(5 / 12 * 100%); + } + .eps-grid-item-sm-6 { + flex-grow: 0; + max-width: calc(6 / 12 * 100%); + flex-basis: calc(6 / 12 * 100%); + } + .eps-grid-item-sm-7 { + flex-grow: 0; + max-width: calc(7 / 12 * 100%); + flex-basis: calc(7 / 12 * 100%); + } + .eps-grid-item-sm-8 { + flex-grow: 0; + max-width: calc(8 / 12 * 100%); + flex-basis: calc(8 / 12 * 100%); + } + .eps-grid-item-sm-9 { + flex-grow: 0; + max-width: calc(9 / 12 * 100%); + flex-basis: calc(9 / 12 * 100%); + } + .eps-grid-item-sm-10 { + flex-grow: 0; + max-width: calc(10 / 12 * 100%); + flex-basis: calc(10 / 12 * 100%); + } + .eps-grid-item-sm-11 { + flex-grow: 0; + max-width: calc(11 / 12 * 100%); + flex-basis: calc(11 / 12 * 100%); + } + .eps-grid-item-sm-12 { + flex-grow: 0; + max-width: calc(12 / 12 * 100%); + flex-basis: calc(12 / 12 * 100%); + } +} +@media screen and (min-width: 768px) { + .eps-grid-item-md-1 { + flex-grow: 0; + max-width: calc(1 / 12 * 100%); + flex-basis: calc(1 / 12 * 100%); + } + .eps-grid-item-md-2 { + flex-grow: 0; + max-width: calc(2 / 12 * 100%); + flex-basis: calc(2 / 12 * 100%); + } + .eps-grid-item-md-3 { + flex-grow: 0; + max-width: calc(3 / 12 * 100%); + flex-basis: calc(3 / 12 * 100%); + } + .eps-grid-item-md-4 { + flex-grow: 0; + max-width: calc(4 / 12 * 100%); + flex-basis: calc(4 / 12 * 100%); + } + .eps-grid-item-md-5 { + flex-grow: 0; + max-width: calc(5 / 12 * 100%); + flex-basis: calc(5 / 12 * 100%); + } + .eps-grid-item-md-6 { + flex-grow: 0; + max-width: calc(6 / 12 * 100%); + flex-basis: calc(6 / 12 * 100%); + } + .eps-grid-item-md-7 { + flex-grow: 0; + max-width: calc(7 / 12 * 100%); + flex-basis: calc(7 / 12 * 100%); + } + .eps-grid-item-md-8 { + flex-grow: 0; + max-width: calc(8 / 12 * 100%); + flex-basis: calc(8 / 12 * 100%); + } + .eps-grid-item-md-9 { + flex-grow: 0; + max-width: calc(9 / 12 * 100%); + flex-basis: calc(9 / 12 * 100%); + } + .eps-grid-item-md-10 { + flex-grow: 0; + max-width: calc(10 / 12 * 100%); + flex-basis: calc(10 / 12 * 100%); + } + .eps-grid-item-md-11 { + flex-grow: 0; + max-width: calc(11 / 12 * 100%); + flex-basis: calc(11 / 12 * 100%); + } + .eps-grid-item-md-12 { + flex-grow: 0; + max-width: calc(12 / 12 * 100%); + flex-basis: calc(12 / 12 * 100%); + } +} +@media screen and (min-width: 1025px) { + .eps-grid-item-lg-1 { + flex-grow: 0; + max-width: calc(1 / 12 * 100%); + flex-basis: calc(1 / 12 * 100%); + } + .eps-grid-item-lg-2 { + flex-grow: 0; + max-width: calc(2 / 12 * 100%); + flex-basis: calc(2 / 12 * 100%); + } + .eps-grid-item-lg-3 { + flex-grow: 0; + max-width: calc(3 / 12 * 100%); + flex-basis: calc(3 / 12 * 100%); + } + .eps-grid-item-lg-4 { + flex-grow: 0; + max-width: calc(4 / 12 * 100%); + flex-basis: calc(4 / 12 * 100%); + } + .eps-grid-item-lg-5 { + flex-grow: 0; + max-width: calc(5 / 12 * 100%); + flex-basis: calc(5 / 12 * 100%); + } + .eps-grid-item-lg-6 { + flex-grow: 0; + max-width: calc(6 / 12 * 100%); + flex-basis: calc(6 / 12 * 100%); + } + .eps-grid-item-lg-7 { + flex-grow: 0; + max-width: calc(7 / 12 * 100%); + flex-basis: calc(7 / 12 * 100%); + } + .eps-grid-item-lg-8 { + flex-grow: 0; + max-width: calc(8 / 12 * 100%); + flex-basis: calc(8 / 12 * 100%); + } + .eps-grid-item-lg-9 { + flex-grow: 0; + max-width: calc(9 / 12 * 100%); + flex-basis: calc(9 / 12 * 100%); + } + .eps-grid-item-lg-10 { + flex-grow: 0; + max-width: calc(10 / 12 * 100%); + flex-basis: calc(10 / 12 * 100%); + } + .eps-grid-item-lg-11 { + flex-grow: 0; + max-width: calc(11 / 12 * 100%); + flex-basis: calc(11 / 12 * 100%); + } + .eps-grid-item-lg-12 { + flex-grow: 0; + max-width: calc(12 / 12 * 100%); + flex-basis: calc(12 / 12 * 100%); + } +} +@media screen and (min-width: 1440px) { + .eps-grid-item-xl-1 { + flex-grow: 0; + max-width: calc(1 / 12 * 100%); + flex-basis: calc(1 / 12 * 100%); + } + .eps-grid-item-xl-2 { + flex-grow: 0; + max-width: calc(2 / 12 * 100%); + flex-basis: calc(2 / 12 * 100%); + } + .eps-grid-item-xl-3 { + flex-grow: 0; + max-width: calc(3 / 12 * 100%); + flex-basis: calc(3 / 12 * 100%); + } + .eps-grid-item-xl-4 { + flex-grow: 0; + max-width: calc(4 / 12 * 100%); + flex-basis: calc(4 / 12 * 100%); + } + .eps-grid-item-xl-5 { + flex-grow: 0; + max-width: calc(5 / 12 * 100%); + flex-basis: calc(5 / 12 * 100%); + } + .eps-grid-item-xl-6 { + flex-grow: 0; + max-width: calc(6 / 12 * 100%); + flex-basis: calc(6 / 12 * 100%); + } + .eps-grid-item-xl-7 { + flex-grow: 0; + max-width: calc(7 / 12 * 100%); + flex-basis: calc(7 / 12 * 100%); + } + .eps-grid-item-xl-8 { + flex-grow: 0; + max-width: calc(8 / 12 * 100%); + flex-basis: calc(8 / 12 * 100%); + } + .eps-grid-item-xl-9 { + flex-grow: 0; + max-width: calc(9 / 12 * 100%); + flex-basis: calc(9 / 12 * 100%); + } + .eps-grid-item-xl-10 { + flex-grow: 0; + max-width: calc(10 / 12 * 100%); + flex-basis: calc(10 / 12 * 100%); + } + .eps-grid-item-xl-11 { + flex-grow: 0; + max-width: calc(11 / 12 * 100%); + flex-basis: calc(11 / 12 * 100%); + } + .eps-grid-item-xl-12 { + flex-grow: 0; + max-width: calc(12 / 12 * 100%); + flex-basis: calc(12 / 12 * 100%); + } +} +@media screen and (min-width: 1600px) { + .eps-grid-item-xxl-1 { + flex-grow: 0; + max-width: calc(1 / 12 * 100%); + flex-basis: calc(1 / 12 * 100%); + } + .eps-grid-item-xxl-2 { + flex-grow: 0; + max-width: calc(2 / 12 * 100%); + flex-basis: calc(2 / 12 * 100%); + } + .eps-grid-item-xxl-3 { + flex-grow: 0; + max-width: calc(3 / 12 * 100%); + flex-basis: calc(3 / 12 * 100%); + } + .eps-grid-item-xxl-4 { + flex-grow: 0; + max-width: calc(4 / 12 * 100%); + flex-basis: calc(4 / 12 * 100%); + } + .eps-grid-item-xxl-5 { + flex-grow: 0; + max-width: calc(5 / 12 * 100%); + flex-basis: calc(5 / 12 * 100%); + } + .eps-grid-item-xxl-6 { + flex-grow: 0; + max-width: calc(6 / 12 * 100%); + flex-basis: calc(6 / 12 * 100%); + } + .eps-grid-item-xxl-7 { + flex-grow: 0; + max-width: calc(7 / 12 * 100%); + flex-basis: calc(7 / 12 * 100%); + } + .eps-grid-item-xxl-8 { + flex-grow: 0; + max-width: calc(8 / 12 * 100%); + flex-basis: calc(8 / 12 * 100%); + } + .eps-grid-item-xxl-9 { + flex-grow: 0; + max-width: calc(9 / 12 * 100%); + flex-basis: calc(9 / 12 * 100%); + } + .eps-grid-item-xxl-10 { + flex-grow: 0; + max-width: calc(10 / 12 * 100%); + flex-basis: calc(10 / 12 * 100%); + } + .eps-grid-item-xxl-11 { + flex-grow: 0; + max-width: calc(11 / 12 * 100%); + flex-basis: calc(11 / 12 * 100%); + } + .eps-grid-item-xxl-12 { + flex-grow: 0; + max-width: calc(12 / 12 * 100%); + flex-basis: calc(12 / 12 * 100%); + } +} +:root { + --menu-title-color: #515962; +} + +.eps-theme-dark { + --menu-title-color: #515962; +} + +.eps-menu ul { + list-style: none; + padding: 0; + margin: 0; +} +.eps-menu ul li { + display: flex; +} +.eps-menu__title { + padding: 0.5rem 1.875rem; + font-size: 0.6875rem; + line-height: 1.2; + text-transform: uppercase; + font-weight: normal; + color: var(--menu-title-color); +} + +:root { + --eps-modal-background-color: #ffffff; + --eps-modal-header-background-color: #2563EB; + --eps-tip-background-color: #F0F7FF; +} + +.eps-theme-dark { + --eps-modal-background-color: #0C0D0E; + --eps-modal-header-background-color: #0077CC; + --eps-tip-background-color: #0A1A3D; +} + +/** ---------------------------------------------------------------- + EPS Modal +---------------------------------------------------------------- */ +.eps-modal { + max-width: 43.75rem; + background: var(--eps-modal-background-color); + border-radius: 0.1875rem; + animation: eps-animation-pop 0.15s cubic-bezier(0.57, 0.53, 0.71, 1.47) forwards; +} +.eps-modal__overlay { + background: rgba(0, 0, 0, 0.5); + position: fixed; + display: flex; + top: 0; + right: 0; + width: 100%; + height: 100%; + align-items: center; + justify-content: center; + z-index: 1030; +} +.eps-modal__header { + font-size: 0.875rem; + background: var(--eps-modal-header-background-color); + height: 2.75rem; + padding: 0.625rem 1rem; + border-radius: 0.1875rem; +} +.eps-modal__header, .eps-modal__header .title { + color: #ffffff; +} +.eps-modal__icon { + margin-inline-end: 0.625rem; +} +.eps-modal__body { + padding: 1.875rem; +} +.eps-modal__tip, .eps-modal .eps-tip { + padding: 0.5rem; + padding-inline-start: 0.75rem; + border-inline-start: 3px solid #2563EB; + background-color: var(--eps-tip-background-color); +} +.eps-modal__tip:not(:last-child), .eps-modal .eps-tip:not(:last-child) { + margin-block-end: 1.875rem; +} +.eps-modal__tip:not(:first-child), .eps-modal .eps-tip:not(:first-child) { + margin-block-start: 1.875rem; +} +.eps-modal__section:not(:first-child) { + margin-block-start: 1.875rem; +} +.eps-modal__close-wrapper { + padding-inline-start: 1rem; + border-inline-start: solid 1px #ffffff; +} + +.eps-add-new-button { + display: inline-flex; + --eps-add-new-button-size: 1.5rem; + line-height: var(--eps-add-new-button-size); + cursor: pointer; +} +.eps-add-new-button .eps-icon { + background-color: #F3BAFD; + color: #0C0D0E; + width: var(--eps-add-new-button-size); + height: var(--eps-add-new-button-size); + border-radius: 100%; + font-size: calc(var(--eps-add-new-button-size) * 0.75); + text-align: center; + line-height: var(--eps-add-new-button-size); +} +.eps-add-new-button span:not(.sr-only) { + margin-inline-start: 0.625rem; + font-weight: 500; +} +.eps-add-new-button--sm { + --eps-add-new-button-size: 1rem; +} + +:root { + --select2-selection-background-color: #ffffff; + --select2-selection-color: #515962; + --select2-selection-border-color: #9DA5AE; + --select2-selection-opened-focused-border-color: #BABFC5; + --select2-single-selection-rendered-color: #515962; + --select2-default-single-selection-background-color: #ffffff; + --select2-default-single-selection-border-color: #9DA5AE; + --select2-default-multiple-selection-background-color: #ffffff; + --select2-default-multiple-selection-choice-background-color: #BABFC5; + --select2-default-multiple-selection-choice-color: #515962; + --select2-default-multiple-selection-choice-border-color: #BABFC5; + --select2-default-multiple-selection-choice-remove-color: #69727D; + --select2-default-multiple-selection-choice-remove-hover-color: #515962; + --select2-default-results-selected-option-background-color: #ffffff; + --select2-default-results-selected-option-color: #515962; + --select2-default-results-highlighted-option-background-color: #5897fb; + --select2-default-results-highlighted-option-color: #ffffff; + --select2-results-selected-option-background-color: #5897fb; + --select2-results-selected-option-color: #ffffff; + --select2-dropdown-background-color: #ffffff; + --select2-dropdown-border-color: #9DA5AE; +} + +.eps-theme-dark { + --select2-selection-background-color: #3f444b; + --select2-selection-color: #D5D8DC; + --select2-selection-border-color: #818A96; + --select2-selection-opened-focused-border-color: #9DA5AE; + --select2-single-selection-rendered-color: #D5D8DC; + --select2-default-single-selection-background-color: #3f444b; + --select2-default-single-selection-border-color: #69727D; + --select2-default-multiple-selection-background-color: #3f444b; + --select2-default-multiple-selection-choice-background-color: #69727D; + --select2-default-multiple-selection-choice-color: #D5D8DC; + --select2-default-multiple-selection-choice-border-color: #69727D; + --select2-default-multiple-selection-choice-remove-color: #BABFC5; + --select2-default-multiple-selection-choice-remove-hover-color: #D5D8DC; + --select2-default-results-selected-option-background-color: #3f444b; + --select2-default-results-selected-option-color: #D5D8DC; + --select2-default-results-highlighted-option-background-color: #69727D; + --select2-default-results-highlighted-option-color: #D5D8DC; + --select2-results-selected-option-background-color: #69727D; + --select2-results-selected-option-color: #D5D8DC; + --select2-dropdown-background-color: #3f444b; + --select2-dropdown-border-color: #818A96; +} + +.select2-container:not(.select2-container--open):not(.select2-container--focus) .select2-selection--single, +.select2-container:not(.select2-container--open):not(.select2-container--focus) .select2-selection--multiple { + background-color: var(--select2-selection-background-color); + color: var(--select2-selection-color); + border-color: var(--select2-selection-border-color); +} +.select2-container.select2-container--open .select2-selection--single, +.select2-container.select2-container--open .select2-selection--multiple, .select2-container.select2-container--focus .select2-selection--single, +.select2-container.select2-container--focus .select2-selection--multiple { + border-color: var(--select2-selection-opened-focused-border-color); +} +.select2-container.select2-container--default .select2-selection--single .select2-selection__rendered { + color: var(--select2-single-selection-rendered-color); +} +.select2-container--default .select2-selection--single { + background-color: var(--select2-default-single-selection-background-color); + border-color: var(--select2-default-single-selection-border-color); +} +.select2-container--default .select2-selection--multiple { + background-color: var(--select2-default-multiple-selection-background-color); +} +.select2-container--default .select2-selection--multiple .select2-selection__choice { + background-color: var(--select2-default-multiple-selection-choice-background-color); + color: var(--select2-default-multiple-selection-choice-color); + border-color: var(--select2-default-multiple-selection-choice-border-color); +} +.select2-container--default .select2-selection--multiple .select2-selection__choice__remove { + color: var(--select2-default-multiple-selection-choice-remove-color); +} +.select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover { + color: var(--select2-default-multiple-selection-choice-remove-hover-color); +} +.select2-container--default .select2-results__option[aria-selected] { + background-color: var(--select2-default-results-selected-option-background-color); + color: var(--select2-default-results-selected-option-color); +} +.select2-container--default .select2-results__option--highlighted[aria-selected] { + background-color: var(--select2-default-results-highlighted-option-background-color); + color: var(--select2-default-results-highlighted-option-color); +} +.select2-container .select2-results__option[aria-selected=true] { + background-color: var(--select2-results-selected-option-background-color); + color: var(--select2-results-selected-option-color); +} +.select2-container .select2-dropdown { + background-color: var(--select2-dropdown-background-color); + border-color: var(--select2-dropdown-border-color); +} + +.eps-notice { + --eps-box-notice-background-color: #F1F2F3; + padding: 0.625rem 1rem; +} +.eps-notice-semantic { + border-inline-start: 3px solid var(--eps-notice-semantic-color); + background-color: var(--eps-notice-semantic-bg); +} +.eps-notice-semantic .eps-notice__icon { + color: var(--eps-notice-semantic-color); + font-size: 1rem; + margin-inline-end: 0.75rem; +} +.eps-notice--warning { + --eps-notice-semantic-color: #F59E0B; + --eps-notice-semantic-bg: #FFFBEB; +} +.eps-notice--danger { + --eps-notice-semantic-color: #DC2626; + --eps-notice-semantic-bg: #FEF1F4; +} +.eps-notice--info { + --eps-notice-semantic-color: #2563EB; + --eps-notice-semantic-bg: #F0F7FF; +} +.eps-notice__text { + margin: 0; + padding: 0; +} +.eps-notice__button-container { + flex-shrink: 0; + margin-inline-start: 1.25rem; + width: auto; +} + +.eps-theme-dark .eps-notice { + --eps-box-notice-background-color: #515962; +} +.eps-theme-dark .eps-notice--warning { + --eps-notice-semantic-bg: #311808; +} +.eps-theme-dark .eps-notice--danger { + --eps-notice-semantic-bg: #390A0A; +} +.eps-theme-dark .eps-notice--info { + --eps-notice-semantic-bg: #0A1A3D; +} + +.eps-list { + --eps-list-item-separated-border-color: #BABFC5; + padding: 0; + margin: 0; + border-radius: 0.1875rem; + border: 1px solid var(--e-a-border-color); + list-style-type: none; +} +.eps-list--padding { + padding: var(--eps-list-padding); +} +.eps-list__item { + padding: 0; +} +.eps-list__item--padding { + padding: var(--eps-list-item-padding); +} +.eps-list--separated .eps-list__item:not(:last-child) { + border-block-end: 1px solid var(--eps-list-item-separated-border-color); +} + +.eps-theme-dark .eps-list { + --eps-list-item-separated-border-color: #3f444b; +} + +:root { + --popover-background-color: #ffffff; + --popover-item-color: #515962; + --popover-item-hover-color: #3f444b; + --popover-item-danger-hover-color: #DC2626; + --popover-item-background-color: #ffffff; + --popover-box-shadow-color: rgba(0, 0, 0, 0.15); + --popover-box-shadow-size: 0px 1px 20px; + --popover-arrow-color: #ffffff; +} + +.eps-theme-dark { + --popover-background-color: #1f2124; + --popover-item-color: #ffffff; + --popover-item-hover-color: #D5D8DC; + --popover-item-danger-hover-color: #F84343; + --popover-item-background-color: #1f2124; + --popover-box-shadow-color: rgba(0, 0, 0, 0.15); + --popover-box-shadow-size: 0px 1px 20px; + --popover-arrow-color: #1f2124; +} + +.eps-popover { + padding: 10px 0; + background-color: var(--popover-background-color); + box-shadow: var(--popover-box-shadow-size) var(--popover-box-shadow-color); + list-style: none; + display: flex; + flex-direction: column; + min-width: 120px; + border-radius: 0.1875rem; + position: absolute; + z-index: 1050; + margin-block-start: 9px; + transform: translateX(-50%); + right: 0.25rem; +} +.eps-popover__background { + position: fixed; + top: 0; + bottom: 0; + right: 0; + left: 0; + z-index: 1030; +} +.eps-popover__container { + position: relative; +} +.eps-popover::before { + content: ""; + display: block; + position: absolute; + width: 16px; + height: 9px; + margin: 0 0.1875rem 9px; + top: -9px; + right: 50%; + transform: translateX(-50%); + border-color: transparent; + border-style: solid; + border-width: 0 calc(16px / 2) 9px calc(16px / 2); + border-block-end-color: var(--popover-arrow-color); +} +.eps-popover__item { + padding: 0.3125rem 1rem; + background-color: var(--popover-item-background-color); + color: var(--popover-item-color); + font-size: 0.6875rem; + font-weight: 500; + line-height: 0.8125rem; + width: 100%; + align-items: center; + cursor: pointer; +} +.eps-popover__item:hover { + color: var(--popover-item-hover-color); +} +.eps-popover__item--danger:hover { + color: var(--popover-item-danger-hover-color); +} +.eps-popover__item .eps-icon { + font-size: inherit; + margin-inline-end: 0.3125rem; +} + +.eps-css-grid { + display: grid; + grid-template-columns: repeat(var(--eps-grid-columns, auto-fill), minmax(var(--eps-grid-col-min-width, 1fr), var(--eps-grid-col-max-width, 1fr))); + grid-gap: var(--eps-grid-spacing); +} + +.eps-box { + --eps-box-color: #1f2124; + --eps-box-input-color: #1f2124; + padding: 0; + border-radius: 0.1875rem; + color: var(--eps-box-color); +} +.eps-box--padding { + padding: var(--eps-box-padding); +} +.eps-box > input { + width: 100%; + outline: 0; + border: 0; + background-color: transparent; + color: var(--eps-box-input-color); +} + +.eps-theme-dark .eps-box { + --eps-box-color: #D5D8DC; + --eps-box-input-color: #D5D8DC; +} + +:root { + --checkbox-border-color: #9DA5AE; + --checkbox-hover-border-color: #8f98a2; + --checkbox-active-border-color: #abb2ba; + --checkbox-background-color: #ffffff; + --checkbox-checked-background-color: #515962; + --checkbox-checked-hover-background-color: #454c54; + --checkbox-checked-active-background-color: #5d6670; + --checkbox-checked-disabled-background-color: #D5D8DC; + --checkbox-indicator-color: #ffffff; + --checkbox-error-background-color: #DC2626; +} + +.eps-theme-dark { + --checkbox-background-color: transparent; +} + +.eps-checkbox { + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + border-radius: 0.1875rem; + width: 15px; + height: 15px; + outline: 0; + background-color: var(--checkbox-background-color); + display: inline-flex; + justify-content: center; + align-items: center; + border: 1px solid var(--checkbox-border-color); +} +.eps-checkbox::after { + display: inline-block; + margin-block-end: calc(0.25 / 2 * 100%); + content: " "; + width: 3px; + height: 6px; + transform: rotate(45deg); +} +.eps-checkbox:hover { + --checkbox-border-color: var(--checkbox-hover-border-color); +} +.eps-checkbox:active { + --checkbox-border-color: var(--checkbox-active-border-color); +} +.eps-checkbox:checked { + --checkbox-background-color: var(--checkbox-checked-background-color); + --checkbox-border-color: var(--checkbox-checked-background-color); +} +.eps-checkbox:checked::after { + border: solid #ffffff; + border-width: 0 1px 1px 0; +} +.eps-checkbox:checked:hover { + --checkbox-background-color: var(--checkbox-checked-hover-background-color); + --checkbox-border-color: var(--checkbox-checked-hover-background-color); +} +.eps-checkbox:checked:active { + --checkbox-background-color: var(--checkbox-checked-active-background-color); + --checkbox-border-color: var(--checkbox-checked-active-background-color); +} +.eps-checkbox:checked:disabled { + --checkbox-background-color: var(--checkbox-checked-disabled-background-color); + --checkbox-border-color: var(--checkbox-checked-disabled-background-color); +} +.eps-checkbox--rounded { + border-radius: 50%; +} +.eps-checkbox--indeterminate { + --checkbox-background-color: var(--checkbox-checked-background-color); + --checkbox-border-color: var(--checkbox-checked-background-color); +} +.eps-checkbox--indeterminate::after { + display: inline-block; + margin-block-end: 0; + content: " "; + width: 7px; + height: 0; + transform: rotate(0deg); + border-block-start: 1px solid #ffffff; +} +.eps-checkbox--error::before, .eps-checkbox--error::after, .eps-checkbox--error:checked::before, .eps-checkbox--error:checked::after { + display: inline-block; + margin-block-end: 0; + content: " "; + width: 7px; + height: 0; + border: solid #ffffff; + border-width: 1px 0 0 0; + position: absolute; +} +.eps-checkbox--error::before, .eps-checkbox--error:checked::before { + transform: rotate(45deg); +} +.eps-checkbox--error::after, .eps-checkbox--error:checked::after { + transform: rotate(-45deg); +} +.eps-checkbox--error, .eps-checkbox--error:hover, .eps-checkbox--error:checked, .eps-checkbox--error:checked:hover { + --checkbox-background-color: var(--checkbox-error-background-color); + --checkbox-border-color: var(--checkbox-error-background-color); +} + +:root { + --e-app-drag-drop-background-color: #ffffff; + --e-app-drag-drop-outline-color: #E6E8EA; +} + +.eps-theme-dark { + --e-app-drag-drop-background-color: #2b2c31; + --e-app-drag-drop-outline-color: #333438; +} + +.e-app-drag-drop { + background-color: var(--e-app-drag-drop-background-color); + outline: 2px dashed var(--e-app-drag-drop-outline-color); + outline-offset: -0.75rem; + margin-block-end: 1.5rem; + padding: 4.125rem; + text-align: center; +} +.e-app-drag-drop--drag-over { + outline-color: #2563EB; +} + +.eps-dialog { + border-radius: 3px; + width: 375px; +} +.eps-dialog__close-button { + position: absolute; + top: -2.75rem; + left: -2.75rem; + margin-block-start: 0.625rem; + margin-inline-end: 0.625rem; + z-index: 1040; + font-size: 1.25rem; + color: #ffffff; +} +.eps-dialog__content { + padding: 1.5rem 1.875rem 1rem; + font-size: 0.75rem; +} +.eps-dialog__title, .eps-dialog__text { + text-align: center; +} +.eps-dialog__buttons { + display: flex; +} +.eps-dialog__button { + flex: 1; + border-block-start: 1px solid var(--hr-color); + line-height: 2.75rem; + text-align: center; + justify-content: center; +} +.eps-dialog__button:last-child:not(:first-child) { + border-inline-start: 1px solid var(--hr-color); +} + +.e-app__popover { + display: none; + position: absolute; + box-shadow: 0 2px 15px rgba(0, 0, 0, 0.3); + border-radius: 6px; + padding: 20px; + width: -moz-fit-content; + width: fit-content; + z-index: 999; + background-color: var(--e-a-bg-default); +} +.e-app__popover:before { + content: ""; + position: absolute; + top: -16px; + left: var(--popover-arrow-offset-end, 22px); + border: 8px solid transparent; + border-block-end-color: #fff; +} + +.eps-inline-link { + color: var(--eps-inline-link-color); + background-color: initial; + border: 0; + padding: 0; +} +.eps-inline-link--color-primary { + --eps-inline-link-color: #0A875A; +} +.eps-inline-link--color-secondary { + --eps-inline-link-color: #818A96; +} +.eps-inline-link--color-danger { + --eps-inline-link-color: #DC2626; +} +.eps-inline-link--color-cta { + --eps-inline-link-color: #93003f; +} +.eps-inline-link--color-link { + --eps-inline-link-color: #515962; +} +.eps-inline-link--color-disabled { + --eps-inline-link-color: #D5D8DC; +} +.eps-inline-link--underline-hover:hover, .eps-inline-link--underline-always, .eps-inline-link--underline-always:hover { + text-decoration: underline; +} +.eps-inline-link--italic { + font-style: italic; +} +.eps-inline-link, .eps-inline-link:focus { + outline: none; +} + +.eps-text-field { + --eps-text-field-color: #515962; + --eps-text-field-background-color: transparent; + --eps-text-field-placeholder-color: #69727D; + --eps-text-field-outlined-border-color: #9DA5AE; + --eps-text-field-outlined-focus-border-color: #515962; + width: 100%; + color: var(--eps-text-field-color); + background-color: var(--eps-text-field-background-color); + border: 0; + margin-block-end: 5px; + outline: none; + font-family: Roboto, Arial, Helvetica, Verdana, sans-serif; + font-size: 0.875rem; + font-weight: 400; + line-height: 1.5; +} +.eps-text-field--outlined { + border-radius: 0.1875rem; + border: 1px solid var(--eps-text-field-outlined-border-color); + padding: 0.625rem; +} +.eps-text-field--outlined:focus { + border-color: var(--eps-text-field-outlined-focus-border-color); +} +.eps-text-field::-moz-placeholder { + color: var(--eps-text-field-placeholder-color); + font-family: Roboto, Arial, Helvetica, Verdana, sans-serif; + font-size: 0.875rem; + font-weight: 400; + line-height: 1.5; +} +.eps-text-field::placeholder { + color: var(--eps-text-field-placeholder-color); + font-family: Roboto, Arial, Helvetica, Verdana, sans-serif; + font-size: 0.875rem; + font-weight: 400; + line-height: 1.5; +} + +.eps-theme-dark .eps-text-field { + --eps-text-field-color: #BABFC5; + --eps-text-field-background-color: transparent; + --eps-text-field-placeholder-color: #9DA5AE; + --eps-text-field-outlined-border-color: #3f444b; + --eps-text-field-outlined-focus-border-color: #9DA5AE; +} +.eps-theme-dark--outlined { + border-color: var(--eps-text-field-outlined-border-color); +} +.eps-theme-dark--outlined:focus { + border-color: var(--eps-text-field-outlined-focus-border-color); +} + +.e-app-import-export-content-layout { + display: flex; + justify-content: center; + height: 100%; +} +.e-app-import-export-content-layout__container { + flex-basis: 1075px; +} + +.e-app-export-complete__kit-content-title { + margin: 2.75rem 0 0.625rem; +} + +.e-app-export-kit-content { + --e-app-export-kit-content-title-color: #3f444b; + --e-app-export-kit-content-description-color: #515962; + --e-app-export-kit-content-sm-notice-color: #BABFC5; +} +.e-app-export-kit-content__checkbox { + flex-shrink: 0; + margin-inline-end: 0.75rem; +} +.e-app-export-kit-content__title { + color: var(--e-app-export-kit-content-title-color); +} +.e-app-export-kit-content__description { + color: var(--e-app-export-kit-content-description-color); + margin-inline-end: 1.25rem; +} +.e-app-export-kit-content__notice { + margin-block-start: 1rem; +} +.e-app-export-kit-content__small-notice { + font-style: italic; + color: var(--e-app-export-kit-content-sm-notice-color); +} + +.eps-theme-dark .e-app-export-kit-content { + --e-app-export-kit-content-title-color: #D5D8DC; + --e-app-export-kit-content-description-color: #BABFC5; + --e-app-export-kit-content-sm-notice-color: #818A96; +} + +.e-app-import-export-kit-data { + --e-app-import-export-kit-data-site-area-color: #3f444b; + --e-app-import-export-kit-data-included-color: #69727D; +} +.e-app-import-export-kit-data__site-area, .e-app-import-export-kit-data__included { + margin-block-end: 0; +} +.e-app-import-export-kit-data__site-area { + color: var(--e-app-import-export-kit-data-site-area-color); + font-weight: bold; +} +.e-app-import-export-kit-data__included { + color: var(--e-app-import-export-kit-data-included-color); +} + +.eps-theme-dark .e-app-import-export-kit-data { + --e-app-import-export-kit-data-site-area-color: #BABFC5; + --e-app-import-export-kit-data-included-color: #9DA5AE; +} + +.e-app-import-resolver { + --e-app-import-resolver-panel-header-background-color: #ffffff; + --e-app-import-resolver-panel-body-background-color: rgba(255, 255, 255, 0.5); + --e-app-import-resolver-conflicts-asset-border-color: #818A96; + --e-app-import-resolver-conflicts-asset-inactive-color: #69727D; + padding-block-end: 1.25rem; +} +.e-app-import-resolver__notice { + margin-block-end: 1.25rem; +} +.e-app-import-resolver__panel, .e-app-import-resolver__panel:hover { + background-color: initial; +} +.e-app-import-resolver__panel-header { + background-color: var(--e-app-import-resolver-panel-header-background-color); +} +.e-app-import-resolver__panel-body { + background-color: var(--e-app-import-resolver-panel-body-background-color); +} +.e-app-import-resolver-conflicts__container { + box-shadow: 0 2px 3px 1px var(--color-box-shadow-color); +} +.e-app-import-resolver-conflicts__checkbox { + flex-shrink: 0; + margin-inline-end: 0.75rem; +} +.e-app-import-resolver-conflicts__title { + line-height: 1; +} +.e-app-import-resolver-conflicts__asset:not(:first-child) { + border-inline-start: 2px solid var(--e-app-import-resolver-conflicts-asset-border-color); + padding-inline-start: 1rem; + margin-inline-start: 1rem; +} +.e-app-import-resolver-conflicts__asset:not(.active) { + color: var(--e-app-import-resolver-conflicts-asset-inactive-color); +} +.e-app-import-resolver-conflicts__edit-template { + margin-inline-start: 0.3125rem; +} + +.eps-theme-dark .e-app-import-resolver { + --e-app-import-resolver-panel-header-background-color: #69727D; + --e-app-import-resolver-panel-body-background-color: rgba(0, 0, 0, 0.05); + --e-app-import-resolver-conflicts-asset-border-color: #818A96; + --e-app-import-resolver-conflicts-asset-inactive-color: #9DA5AE; +} + +.eps-panel { + --eps-panel-header-background-color: transparent; + --eps-panel-body-background-color: transparent; +} +.eps-panel, .eps-panel:hover { + background-color: initial; +} +.eps-panel__header { + background-color: var(--eps-panel-header-background-color); + border-radius: 0.1875rem; +} +.eps-panel__body { + background-color: var(--eps-panel-body-background-color); + border-radius: 0 0 0.1875rem 0.1875rem; +} + +.eps-theme-dark .eps-panel { + --eps-panel-header-background-color: transparent; + --eps-panel-body-background-color: transparent; +} + +.e-app-export-kit { + padding-block-end: 1.25rem; +} +.e-app-export-kit-information { + margin-block-start: 1.25rem; +} +.e-app-export-kit-information__field-header { + margin-block-end: 0.625rem; +} +.e-app-export-kit-information__label { + margin: 0; +} +.e-app-export-kit-information__info-icon { + margin-inline-start: 0.625rem; +} +.e-app-export-kit-info-modal__icon { + padding-inline-start: 0.625rem; +} +.e-app-export-kit-info-modal__heading { + margin-block-end: 1.25rem; +} + +.e-app-import-export-info-modal__section:not(:first-child) { + margin-block-start: 1.875rem; +} +.e-app-import-export-info-modal__heading { + margin-block-end: 1.25rem; +} + +:root { + --eps-badge-background-color: #ffffff; +} + +.eps-theme-dark { + --eps-badge-background-color: #515962; +} + +.eps-badge { + display: inline-block; + background: var(--eps-badge-background-color); + padding: 0 0.5rem; + line-height: 1.8; + box-shadow: 0 3px 6px var(--color-box-shadow-color); + border-radius: 4px; + font-size: 0.75rem; +} +.eps-badge--sm { + font-size: 0.625rem; + border-radius: 3px; + padding: 0 0.3125rem; + line-height: 1.5; +} + +.eps-collapse__title { + cursor: pointer; + padding: 0.3125rem 0; + display: flex; + align-items: center; + justify-content: space-between; + width: 100%; + background: transparent; + border: none; + color: inherit; +} +.eps-collapse__title:focus { + outline: none; +} +.eps-collapse__icon { + transition: all 150ms; + transform: rotate(180deg); +} +.eps-collapse__content { + margin-block-start: 0.625rem; + display: none; +} +.eps-collapse[data-open] .eps-collapse__content { + display: block; +} +.eps-collapse[data-open] .eps-collapse__icon { + transform: rotate(90deg); +} + +.e-kit-library-promotion { + --e-kit-library-promotion-color: tints(600); +} + +.eps-theme-dark .e-kit-library-promotion { + --e-kit-library-promotion-color: dark-tints(400); +} + +.e-kit-library-promotion { + width: 100%; + text-align: center; + margin-block-start: 1.875rem; + color: var(--e-kit-library-promotion-color); +} + +.e-kit-library__error-screen { + margin-block-start: 2.75rem; +} +.e-kit-library__error-screen-title { + margin-block-start: 2.75rem; + margin-block-end: 0; +} +.e-kit-library__error-screen-description { + margin-block-start: 1.5rem; + color: #69727D; + text-align: center; + max-width: 520px; +} + +.e-kit-library__kit-favorite-actions { + padding: 0.3125rem; + transition: 0.3s all; + border-radius: 4px; +} +.e-kit-library__kit-favorite-actions--active { + color: #DC2626; +} +.e-kit-library__kit-favorite-actions--loading { + opacity: 50%; + cursor: default; +} +.e-kit-library__kit-favorite-actions:hover { + background-color: rgba(220, 38, 38, 0.1); +} + +.e-kit-library__filter-indication { + margin-block-start: 1.5rem; + display: flex; + align-items: center; +} +.e-kit-library__filter-indication-text { + margin-block-end: 0; + display: flex; + align-items: center; +} +.e-kit-library__filter-indication-badge { + margin-inline-start: 0.3125rem; + display: flex; + align-items: center; +} +.e-kit-library__filter-indication-badge-remove { + margin-inline-start: 0.3125rem; + font-size: 0.875rem; +} +.e-kit-library__filter-indication-button { + margin-inline-start: 1.5rem; +} + +#eps-app-header-btn-apply, +#eps-app-header-btn-promotion, +#eps-app-header-btn-connect { + margin-inline-start: 0.625rem; + margin-inline-end: 0.625rem; +} + +.e-kit-library__apply-button { + display: flex; + align-items: center; + justify-content: center; + gap: 0.3125rem; +} + +.e-kit-library__kit-item { + --e-kit-library-kit-item-overlay-promotion-button-background-color: #D5D8DC; +} + +.eps-theme-dark .e-kit-library__kit-item { + --e-kit-library-kit-item-overlay-promotion-button-background-color: #515962; +} + +.e-kit-library__kit-item-overlay { + height: 100%; +} +.e-kit-library__kit-item-overlay > *:first-child { + flex: 1; +} +.e-kit-library__kit-item-overlay-overview-button { + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + color: white; + height: 100%; + width: 100%; +} +.e-kit-library__kit-item-overlay-overview-button > i { + font-size: 2rem; + margin-block-end: 5px; +} +.e-kit-library__kit-item-overlay-overview-button > span { + font-size: 0.9rem; +} +.e-kit-library__kit-item-overlay-promotion-button { + display: flex; + width: 100%; + background: white; + align-items: center; + justify-content: center; + padding: 10px; + font-size: 13px; + color: #93003f; + background: var(--e-kit-library-kit-item-overlay-promotion-button-background-color); +} +.e-kit-library__kit-item-overlay-promotion-button > * { + margin: 0 3px; +} +.e-kit-library__kit-item-subscription-plan-badge { + position: absolute; + top: 0; + left: 0; + margin: 0.3125rem; + background-color: var(--e-a-color-brand); + color: #ffffff; + text-transform: uppercase; +} + +:root { + --e-kit-library-header-back-border: 1px solid var(--e-a-border-color); + --e-kit-library-header-back-color: #69727D; +} + +.eps-theme-dark { + --e-kit-library-header-back-border: 1px solid #818A96; + --e-kit-library-header-back-color: #BABFC5; +} + +.e-kit-library__header-back { + color: var(--e-kit-library-header-back-color); + padding-inline-end: 1.25rem; + padding-inline-start: 0.3125rem; + display: inline-flex; + justify-content: center; + align-items: center; + height: 100%; + border-inline-end: var(--e-kit-library-header-back-border); +} +.e-kit-library__header-back-container { + flex: 1; + height: 100%; +} +.e-kit-library__header-back .eps-icon { + transform: rotate(180deg); +} + +.e-kit-library__page-loader { + width: 100%; + height: 100%; + display: grid; + place-items: center; + font-size: 1.85rem; + color: #69727D; +} + +.eps-search-input { + --eps-search-input-background-color: #D5D8DC; + --eps-search-input-background-color-focus: #ffffff; + --eps-search-input-color: #3f444b; + --eps-search-input-placeholder-color: #69727D; +} + +.eps-theme-dark .eps-search-input { + --eps-search-input-background-color: #515962; + --eps-search-input-background-color-focus: #69727D; + --eps-search-input-color: #BABFC5; + --eps-search-input-placeholder-color: #BABFC5; +} + +.eps-search-input { + width: 100%; + font-size: 0.9375rem; + padding: 0.625rem 2.75rem; + border: none; + background: var(--eps-search-input-background-color); + outline: none; + color: var(--eps-search-input-color); + line-height: 1; + height: 2.75rem; +} +.eps-search-input--sm { + font-size: 0.8125rem; + padding: 0.5rem 1.875rem; +} +.eps-search-input:focus { + background: var(--eps-search-input-background-color-focus); +} +.eps-search-input::-moz-placeholder { + color: var(--eps-search-input-placeholder-color); + font-style: italic; +} +.eps-search-input::placeholder { + color: var(--eps-search-input-placeholder-color); + font-style: italic; +} +.eps-search-input__container { + position: relative; +} +.eps-search-input__icon { + font-size: 1.25rem; + padding: 0.625rem; + color: #69727D; + position: absolute; + top: 0; + right: 0; + height: 100%; + display: flex; + align-items: center; + justify-content: center; +} +.eps-search-input__icon--sm { + font-size: 0.75rem; +} +.eps-search-input__clear-icon { + font-size: 0.875rem; + padding: 0.625rem; + color: #69727D; + position: absolute; + top: 0; + left: 0; + height: 100%; + display: flex; + align-items: center; + justify-content: center; +} +.eps-search-input__clear-icon--sm { + font-size: 0.6875rem; +} + +:root { + --eps-sort-select-select-background-color: #D5D8DC; + --eps-sort-select-select-color: #3f444b; + --eps-sort-select-button-background-color: #D5D8DC; + --eps-sort-select-button-border: 1px solid var(--e-a-border-color); +} + +.eps-theme-dark { + --eps-sort-select-select-background-color: #515962; + --eps-sort-select-select-color: #BABFC5; + --eps-sort-select-button-background-color: #515962; + --eps-sort-select-button-border: 1px solid #1f2124; +} + +.eps-sort-select { + width: 100%; + font-size: 0.9375rem; + display: flex; +} +.eps-sort-select__select-wrapper { + flex: 1; + position: relative; +} +.eps-sort-select__select-wrapper::after { + content: "\e8ad"; + font-family: eicons; + position: absolute; + left: 0.625rem; + top: 0; + bottom: 0; + color: #69727D; + display: flex; + align-items: center; + justify-content: center; + pointer-events: none; +} +.eps-sort-select__select { + width: 100%; + padding: 0.625rem 0.625rem; + border: none; + background: var(--eps-sort-select-select-background-color); + outline: none; + color: var(--eps-sort-select-select-color); + line-height: 1; + cursor: pointer; + height: 2.75rem; + -moz-appearance: none; + appearance: none; + -webkit-appearance: none; + border-radius: 0; +} +.eps-sort-select__button { + padding: 0.75rem 0.75rem; + background: var(--eps-sort-select-button-background-color); + border-inline-start: var(--eps-sort-select-button-border); + line-height: 1; + color: #69727D; +} + +.e-kit-library__tags-filter { + --e-kit-library-tags-filter-list-search-background-color: #ffffff; +} + +.eps-theme-dark .e-kit-library__tags-filter { + --e-kit-library-tags-filter-list-search-background-color: #515962; +} + +.e-kit-library__tags-filter { + margin-block-start: 2.75rem; +} +.e-kit-library__tags-filter-list { + margin-block-end: 2.75rem; +} +.e-kit-library__tags-filter-list .eps-collapse__title { + padding-inline-end: 1.875rem; + padding-inline-start: 1.875rem; + text-transform: uppercase; +} +.e-kit-library__tags-filter-list .eps-collapse__content { + margin: 0.3125rem 1.875rem; +} +.e-kit-library__tags-filter-list-container { + max-height: 250px; + overflow: auto; +} +.e-kit-library__tags-filter-list-search { + margin-block-end: 0.625rem; +} +.e-kit-library__tags-filter-list-search .eps-search-input { + background: var(--e-kit-library-tags-filter-list-search-background-color); +} +.e-kit-library__tags-filter-list-item { + padding: 0.625rem 0; + display: flex; + align-items: center; + font-weight: 500; +} +.e-kit-library__tags-filter-list-item input { + margin-inline-end: 0.3125rem; +} + +.e-kit-library #eps-app-header-btn-refetch { + padding: 0; +} + +.e-kit-library-header-info-modal-container { + margin-block-end: 2.75rem; +} + +.e-kit-library__tooltip { + padding: 5px 12px; + color: #ffffff; + background-color: #26292C; + font-size: 10px; +} +.e-kit-library__tooltip:before { + border-block-end-color: #26292C; +} + +.e-kit-library__index-layout-container { + flex-grow: 1; + overflow-y: auto; + display: flex; + flex-direction: column; +} +.e-kit-library__index-layout-heading { + padding: 1.875rem 2.75rem; + position: sticky; + top: -1px; + width: 100%; + z-index: 2; + background-color: var(--app-background-color); + gap: 1.5rem; +} +.e-kit-library__index-layout-heading-search, .e-kit-library__index-layout-heading-sort { + min-width: 265px; +} +.e-kit-library__index-layout-heading-search { + flex: 1; +} +.e-kit-library__index-layout-main { + padding-block-start: 0; + padding-block-end: 1.5rem; + overflow-y: hidden; + height: auto; + flex: 1 0 auto; + display: flex; + flex-direction: column; + justify-content: space-between; +} + +.e-kit-library__tags-filter { + --e-kit-library-item-sidebar-header-title-color: #515962; + --e-kit-library-item-sidebar-description-color: #515962; + --e-kit-library-item-information-text-color: #515962; +} + +.eps-theme-dark .e-kit-library__tags-filter { + --e-kit-library-item-sidebar-header-title-color: #BABFC5; + --e-kit-library-item-sidebar-description-color: #BABFC5; + --e-kit-library-item-information-text-color: #BABFC5; +} + +.e-kit-library__item-sidebar { + padding: 1.5rem 1.875rem; +} +.e-kit-library__item-sidebar-header { + display: flex; + align-items: center; + justify-content: space-between; +} +.e-kit-library__item-sidebar-header-title { + color: var(--e-kit-library-item-sidebar-header-title-color); + margin-block-end: 0; +} +.e-kit-library__item-sidebar-thumbnail { + margin-block-start: 1.5rem; + box-shadow: 0 4px 10px var(--color-box-shadow-color); +} +.e-kit-library__item-sidebar-description { + margin-block-start: 1.5rem; + color: var(--e-kit-library-item-sidebar-description-color); +} +.e-kit-library__item-sidebar-collapse-tags { + margin-block-start: 2.75rem; +} +.e-kit-library__item-sidebar-collapse-info { + margin-block-start: 1.875rem; +} +.e-kit-library__item-sidebar-tags-container { + gap: 0.625rem; +} +.e-kit-library__item-information-text { + font-size: 0.8125rem; + color: var(--e-kit-library-item-information-text-color); + margin-block-end: 0.3125rem; +} + +.e-kit-library { + --e-kit-library-content-overview-group-title-color: #515962; +} + +.eps-theme-dark .e-kit-library { + --e-kit-library-content-overview-group-title-color: #BABFC5; +} + +.e-kit-library__content-overview-group-item { + margin-block-end: 2.75rem; +} +.e-kit-library__content-overview-group-title { + margin-block-end: 1.875rem; + color: var(--e-kit-library-content-overview-group-title-color); +} + +.e-kit-library__preview-responsive-controls { + width: auto; +} +.e-kit-library__preview-responsive-controls-item { + margin: 0 0.3125rem; + color: #69727D; + padding: 0.3125rem; +} +.e-kit-library__preview-responsive-controls-item:hover { + background: rgba(37, 99, 235, 0.1); + border-radius: 3px; + transition: all 0.3s; +} +.e-kit-library__preview-responsive-controls-item--active { + color: #2563EB; +} + +.e-kit-library__preview-loader { + position: absolute; + top: 0; + right: 0; + z-index: 0; +} +.e-kit-library__preview-iframe { + border: none; + transition: all 0.3s; + box-shadow: 0 4px 10px var(--color-box-shadow-color); +} +.e-kit-library__preview-iframe-container { + overflow-y: auto; + position: relative; + z-index: 1; +} + +.e-app-collapse { + --e-app-collapse-icon-color: #515962; +} +.e-app-collapse-toggle { + position: relative; +} +.e-app-collapse-toggle--active { + cursor: pointer; +} +.e-app-collapse-toggle__icon { + color: var(--e-app-collapse-icon-color); + display: flex; + align-items: center; + justify-content: center; + font-size: 0.875rem; + position: absolute; + top: 50%; + left: var(--e-app-collapse-toggle-icon-spacing); + transform: translateY(-50%); +} +.e-app-collapse-toggle__icon:before { + transition: all 0.2s linear; +} +.e-app-collapse-content { + display: none; +} +.e-app-collapse--opened .e-app-collapse-toggle__icon:before { + transform: rotate(-180deg); +} +.e-app-collapse--opened .e-app-collapse-content { + display: block; +} + +[dir=rtl] .e-app-collapse-toggle__icon { + left: initial; + right: var(--e-app-collapse-toggle-icon-spacing); +} + +.eps-theme-dark .e-app-collapse { + --e-app-collapse-icon-color: #BABFC5; +} + +.e-app-import-plugins { + --e-app-import-plugins-selection-section-heading-color: #515962; + padding-block-end: 1.5rem; +} +.e-app-import-plugins__section { + margin-block-start: 1.875rem; +} +.e-app-import-plugins__section-heading { + color: var(--e-app-import-plugins-selection-section-heading-color); + margin-block-end: 1rem; +} +.e-app-import-plugins__versions-notice { + margin-block-end: 0.75rem; +} + +.eps-theme-dark .e-app-import-plugins { + --e-app-import-plugins-selection-section-heading-color: #BABFC5; +} + +.eps-table { + --eps-table-body-color: #3f444b; + border-spacing: 0 2px; + table-layout: fixed; + width: 100%; + border: 1px solid var(--e-a-border-color); + border-radius: 0.1875rem; +} +.eps-table__checkboxes-column { + width: 1.875rem; +} +.eps-table__checkbox { + display: flex; + flex-shrink: 0; +} +.eps-table__cell { + padding: 1rem; +} +.eps-table__head .eps-table__cell { + text-align: start; +} +.eps-table__row { + border-block-end: 1px solid var(--e-a-border-color); +} +.eps-table__row:last-child { + border-block-end: none; +} +.eps-table__body .eps-table__cell:first-child { + border-radius: 0.1875rem 0 0 0.1875rem; +} +.eps-table__body .eps-table__cell:last-child { + border-radius: 0 0.1875rem 0.1875rem 0; +} +.eps-table--selection .eps-table__cell:first-child { + padding-inline-end: 0; +} + +.eps-theme-dark .eps-table { + --eps-table-body-color: #BABFC5; +} + +[dir=rtl] .eps-table__body [dir=rtl] .eps-table__cell:first-child { + border-radius: 0 0.1875rem 0.1875rem 0; +} +[dir=rtl] .eps-table__body [dir=rtl] .eps-table__cell:last-child { + border-radius: 0.1875rem 0 0 0.1875rem; +} + +.e-app-import-plugins-pro-banner { + --e-app-import-plugins-pro-banner-heading-color: #3f444b; + --e-app-import-plugins-pro-banner-description-color: #515962; + margin-block-end: 1.875rem; +} +.e-app-import-plugins-pro-banner__heading { + color: var(--e-app-import-plugins-pro-banner-heading-color); + margin-block-end: 0.625rem; +} +.e-app-import-plugins-pro-banner__description { + color: var(--e-app-import-plugins-pro-banner-description-color); + margin-block-end: 0; +} + +.eps-theme-dark .e-app-import-plugins-pro-banner { + --e-app-import-plugins-pro-banner-heading-color: #9DA5AE; + --e-app-import-plugins-pro-banner-description-color: #BABFC5; +} + +.e-app-export-plugins { + padding-block-end: 1.25rem; +} + +.e-app-import-content { + padding-block-end: 1.25rem; +} +.e-app-import-content__plugins-notice { + margin-block-end: 1.25rem; +} + +.e-app-import-plugins-activation__installing-plugins { + padding: 0.625rem 0; +} +.e-app-import-plugins-activation__plugin-name { + margin-inline-start: 0.5rem; +} +.e-app-import-plugins-activation__plugin-status-item { + margin-block-end: 0.75rem; +} + +.e-app-import-export-plugins-table__cell-content { + margin-block-end: 0; + text-transform: capitalize; +} + +.e-app-import-export-loader { + --e-app-import-export-loader-color: #818A96; + color: var(--e-app-import-export-loader-color); + font-size: 50px; +} +.e-app-import-export-loader.eicon-loading { + font-size: 1.85rem; +} +.e-app-import-export-loader--absolute-center { + position: absolute; + top: 50%; + right: 50%; + transform: translateX(-50%) translateY(-50%); +} + +.eps-theme-dark .e-app-import-export-loader { + --e-app-import-export-loader-color: #818A96; +} + +.e-app-import-export-message-banner { + --e-app-import-export-message-banner-heading-color: #3f444b; + --e-app-import-export-message-banner-description-color: #515962; + margin-block-end: 1.875rem; +} +.e-app-import-export-message-banner__heading { + color: var(--e-app-import-export-message-banner-heading-color); + margin-block-end: 0.625rem; +} +.e-app-import-export-message-banner__description { + color: var(--e-app-import-export-message-banner-description-color); + margin-block-end: 0; +} + +.eps-theme-dark .e-app-import-export-message-banner { + --e-app-import-export-message-banner-heading-color: #9DA5AE; + --e-app-import-export-message-banner-description-color: #BABFC5; +} + +.e-app-import-connect-pro-notice { + margin-block-end: 1.25rem; +} + +.e-app-import-failed-plugins-notice { + margin-block-end: 1.25rem; +} + +.e-onboarding { + font-family: "DM Sans", "Roboto", sans-serif; + color-scheme: light; +} +.e-onboarding .eps-app__main { + justify-content: center; + overflow-y: auto; +} +.e-onboarding__content { + max-width: 1135px; + padding: 2.75rem; + margin: initial; + overflow-y: initial; +} +.e-onboarding__checkbox-label { + display: flex; + line-height: 18px; + margin-block-end: 27px; +} +.e-onboarding__checkbox-input { + margin-inline-end: 14px; + width: 16px; + height: 16px; + border-color: #69727D; + border-radius: 2px; +} +.e-onboarding__checkbox-input:checked { + background-color: #525861; +} +.e-onboarding__checkbox-input:checked::after { + margin-block-end: 15%; + width: 6px; + height: 9px; + border-width: 0 2px 2px 0; +} +.e-onboarding__feature-list { + margin-block-end: 40px; +} +.e-onboarding__text-input { + font-size: 14px; + width: 325px; + padding: 12px 16px; + color: #69727D; + border: 1px solid #9EA5AD; +} +.e-onboarding__text-input:focus-visible { + outline: initial; + border: 1px solid #3A3F45; +} +.e-onboarding__text-input::-moz-placeholder { + color: #C2C7CC; +} +.e-onboarding__text-input::placeholder { + color: #C2C7CC; +} +.e-onboarding__footnote { + margin-block-start: 24px; + width: 325px; + text-align: center; +} +.e-onboarding__footnote a { + text-decoration: underline; + color: #3A3F45; +} + +#e-app ~ #__wp-uploader-id-2 .media-modal { + max-width: 1024px; + max-height: 768px; + margin: auto; +} + +.e-onboarding__page-content { + margin-block-end: 70px; +} +.e-onboarding__page-content-start { + max-width: 675px; + text-align: start; + flex-basis: 555px; + align-self: start; +} +.e-onboarding__page-content-end { + min-width: 440px; + max-width: 540px; +} +.e-onboarding__page-content-end img { + width: 100%; +} +.e-onboarding__page-content-section-title { + font-family: "DM Serif Display", serif; + font-size: 36px; + font-weight: 700; + color: #0C0D0E; +} +.e-onboarding__page-content-section-text { + font-size: 18px; + color: #3A3F45; +} + +.e-onboarding__header-logo .eps-app__logo { + background-color: #0C0D0E; + color: #ffffff; + width: 1.3rem; + height: 1.3rem; + line-height: 1.3rem; + font-size: 0.48rem; +} +.e-onboarding__header-logo .eps-app__logo:not(:last-child) { + margin-inline-end: 7px; +} +.e-onboarding__header-logo img { + width: 104px; +} +.e-onboarding__header .eps-app__header-btn { + display: flex; + align-items: center; + font-size: 13px; +} +.e-onboarding__header .eps-app__header-btn .eps-icon:not(:last-child) { + margin-inline-end: 7px; +} +.e-onboarding__header .eps-button { + color: #0C0D0E; +} +.e-onboarding__header .eps-button__go-pro-btn { + background-color: #93003f; + color: #ffffff; + padding: 4px 8px; + border-radius: 4px; + font-weight: 700; + font-size: 12px; + transition: 0.5s; +} +.e-onboarding__header .eps-button__go-pro-btn:hover { + background: #c60055; +} + +.e-onboarding__go-pro { + width: 288px; + font-size: 12px; + background-color: #ffffff; +} +.e-onboarding__go-pro-title { + font-size: 18px; + font-weight: 700; + color: #93003f; +} +.e-onboarding__go-pro-cta { + display: inline-block; + color: #93003f; + padding: 9px; + border: 1px solid #93003f; +} +.e-onboarding__go-pro-cta.e-onboarding__button { + font-size: 14px; +} +.e-onboarding__go-pro-paragraph:not(:last-child) { + margin-block-end: 20px; +} +.e-onboarding__go-pro-already-have { + text-decoration: underline; +} + +.e-onboarding__progress-bar { + display: flex; + justify-content: center; + margin-block-end: 125px; +} +.e-onboarding__progress-bar-item { + display: flex; + align-items: center; + color: #69727D; + font-size: 0.75rem; +} +.e-onboarding__progress-bar-item-icon { + display: inline-block; + font-family: "DM Serif Display", serif; + text-align: center; + width: 1.1rem; + height: 1.1rem; + line-height: 1rem; + font-size: 0.75rem; + font-weight: bold; + border-radius: 50%; + border: 1px solid #69727D; + margin-inline-end: 8px; + flex-shrink: 0; +} +.e-onboarding__progress-bar-item:not(:last-child) { + margin-inline-end: 22px; +} +.e-onboarding__progress-bar-item:not(:last-child):after { + font-family: "eicons"; + margin-inline-start: 22px; + content: "\e89e"; +} +.e-onboarding__progress-bar-item--active { + color: #D004D4; +} +.e-onboarding__progress-bar-item--active .e-onboarding__progress-bar-item-icon, .e-onboarding__progress-bar-item--completed .e-onboarding__progress-bar-item-icon { + color: #ffffff; + border-color: #D004D4; + background-color: #D004D4; +} +.e-onboarding__progress-bar-item--skipped, .e-onboarding__progress-bar-item--completed { + cursor: pointer; +} +.e-onboarding__progress-bar-item--skipped .e-onboarding__progress-bar-item-icon { + color: #ffffff; + background-color: #69727D; +} + +.e-onboarding__button { + font-size: 18px; + cursor: pointer; + transition: var(--e-a-transition-hover); +} +.e-onboarding__button-action { + color: var(--e-a-btn-color); + background-color: var(--e-a-btn-bg-primary); + min-width: 325px; + padding: 15px 30px; + text-align: center; +} +.e-onboarding__button-action:hover { + background-color: var(--e-a-btn-bg-primary-hover); +} +.e-onboarding__button-skip { + padding: 8px 16px; + color: #515962; +} +.e-onboarding__button-skip:hover { + background-color: #F9FAFA; +} +.e-onboarding__button--disabled { + pointer-events: none; + background-color: #D5D8DC; + color: #9EA5AD; +} +.e-onboarding__button--disabled:hover { + cursor: progress; +} +.e-onboarding__button--processing { + pointer-events: none; + filter: brightness(90%); +} + +.e-onboarding__card { + border: 1px solid #3A3F45; + border-radius: 8px; + padding: 40px 40px; + cursor: pointer; + flex-grow: 1; + display: flex; + flex-direction: column; + align-items: center; +} +.e-onboarding__card-image, .e-onboarding__card-text { + width: 345px; +} +.e-onboarding__card-image { + margin-block-end: 44px; +} +.e-onboarding__card-text { + font-size: 20px; + font-weight: 700; + text-align: center; + color: #0C0D0E; +} +.e-onboarding__card:hover { + box-shadow: 4px 4px 0 0 #000000; +} +.e-onboarding__card:active { + box-shadow: initial; +} + +.e-onboarding__checklist { + padding-inline-start: 0; +} +.e-onboarding__checklist-item { + display: flex; + align-items: center; + font-size: 12px; + margin-block-end: 12px; +} +.e-onboarding__checklist-item .eicon-check-circle { + margin-inline-end: 9px; + font-size: 16px; + font-weight: 600; +} + +.e-onboarding__notice { + display: inline-block; + padding: 12px 14px; + margin-block-end: 16px; + color: #3A3F45; +} +.e-onboarding__notice--error { + background-color: #FDE8EC; +} +.e-onboarding__notice--error i { + font-size: 16px; + color: #B92136; +} +.e-onboarding__notice--success { + background-color: #ECF9F2; +} +.e-onboarding__notice--success i { + color: #117740; +} +.e-onboarding__notice i { + margin-inline-end: 14px; +} +.e-onboarding__notice-empty-spacer { + height: 61px; +} + +.e-onboarding__page-account .e-onboarding__checkbox-label { + margin-block-start: 50px; +} + +.e-onboarding__action-button-text { + margin-inline-start: 10px; +} + +.e-onboarding__site-name-input { + margin-block-start: 80px; +} + +.e-onboarding__page-siteLogo .e-app-upload-file__button { + color: var(--e-a-color-primary-bold); + border-color: var(--e-a-color-primary-bold); +} +.e-onboarding__page-siteLogo .e-app-upload-file__button:hover { + background-color: #FAE8FF; +} +.e-onboarding__drop-zone { + margin-block-start: 3rem; +} +.e-onboarding .eps-display-3 { + font-size: 16px; + margin-block-end: 0.5rem; +} +.e-onboarding .e-app-upload-file__button { + max-width: 198px; + margin: 0 auto; +} +.e-onboarding .e-app-drop-zone__secondary-text { + font-size: 14px; +} +.e-onboarding__logo-container { + position: relative; + margin-block-start: 3rem; + min-height: 120px; + width: -moz-fit-content; + width: fit-content; + display: flex; + align-items: center; + justify-content: center; + min-width: 220px; + border: 1px solid #BABFC5; +} +.e-onboarding__logo-container img { + height: auto; + max-height: 100%; + width: auto; +} +.e-onboarding__logo-remove { + position: absolute; + left: 0; + top: 5px; +} +.e-onboarding__logo-remove i { + font-size: 16px; + width: 15px; +} +.e-onboarding__logo-remove:hover { + cursor: pointer; +} +.e-onboarding__is-uploading { + visibility: hidden; +} + +.e-onboarding__page-goodToGo .e-onboarding__page-content-section-title, +.e-onboarding__page-goodToGo .e-onboarding__page-content-section-text { + text-align: center; +} +.e-onboarding__cards-grid.e-onboarding__page-content { + margin-block-start: 48px; + margin-block-end: 48px; +} +.e-onboarding__cards-grid .e-onboarding__card { + max-width: 555px; +} +.e-onboarding__cards-grid .e-onboarding__card:not(:last-child) { + margin-inline-end: 20px; +} +.e-onboarding__good-to-go-footer { + justify-content: end; +} + +.e-onboarding__upload-pro { + flex-direction: row; + justify-content: center; + font-family: "DM Sans", "Roboto", sans-serif; + text-align: center; +} +.e-onboarding__upload-pro .eps-app__content { + overflow-y: hidden; + max-width: 1113px; + padding: 30px; +} +.e-onboarding__upload-pro-drop-zone { + margin-block-end: 24px; +} +.e-onboarding__upload-pro-drop-zone h1 { + font-family: "Source Serif Pro", "Roboto", sans-serif; +} +.e-onboarding__upload-pro-drop-zone .e-app-drag-drop { + padding: 48px; +} +.e-onboarding__upload-pro-drop-zone .eps-display-3, +.e-onboarding__upload-pro-drop-zone .e-app-drop-zone__text, +.e-onboarding__upload-pro-drop-zone .e-app-drop-zone__secondary-text { + margin-block-end: 12px; +} +.e-onboarding__upload-pro-drop-zone .e-app-upload-file__button { + background-color: #040080; + color: #46F2B6; + padding: 14px 40px; + border-color: #040080; +} +.e-onboarding__upload-pro-get-file { + font-size: 12px; + margin-block-start: 24px; +} +.e-onboarding__upload-pro-get-file a { + text-decoration: underline; +} +.e-onboarding__upload-pro .e-onboarding__notice { + margin-block-end: 0; +} +/*# sourceMappingURL=app-rtl.css.map */ \ No newline at end of file diff --git a/wp-content/plugins/elementor/assets/css/app-rtl.min.css b/wp-content/plugins/elementor/assets/css/app-rtl.min.css new file mode 100644 index 0000000..02d0298 --- /dev/null +++ b/wp-content/plugins/elementor/assets/css/app-rtl.min.css @@ -0,0 +1,2 @@ +/*! elementor - v3.20.0 - 26-03-2024 */ +@import "//fonts.googleapis.com/css2?family=Roboto:ital,wght@0,100;0,300;0,400;0,500;0,700;0,900;1,100;1,300;1,400;1,500;1,700;1,900&display=swap";@import "//fonts.googleapis.com/css2?family=DM%20Sans&display=swap";@import "//fonts.googleapis.com/css2?family=Source%20Serif%20Pro&display=swap";.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}@media screen and (min-width:480px){.text-start-sm{text-align:start}}@media screen and (min-width:480px){.text-center-sm{text-align:center}}@media screen and (min-width:480px){.text-end-sm{text-align:end}}@media screen and (min-width:768px){.text-start-md{text-align:start}}@media screen and (min-width:768px){.text-center-md{text-align:center}}@media screen and (min-width:768px){.text-end-md{text-align:end}}@media screen and (min-width:1025px){.text-start-lg{text-align:start}}@media screen and (min-width:1025px){.text-center-lg{text-align:center}}@media screen and (min-width:1025px){.text-end-lg{text-align:end}}@media screen and (min-width:1440px){.text-start-xl{text-align:start}}@media screen and (min-width:1440px){.text-center-xl{text-align:center}}@media screen and (min-width:1440px){.text-end-xl{text-align:end}}@media screen and (min-width:1600px){.text-start-xxl{text-align:start}}@media screen and (min-width:1600px){.text-center-xxl{text-align:center}}@media screen and (min-width:1600px){.text-end-xxl{text-align:end}}@keyframes eps-animation-pop{0%{transform:scale(.75);opacity:0}to{transform:scale(1);opacity:1}}.eps-button{display:inline-flex;--button-line-height:16px;--button-padding-y:0.5em;--button-padding-x:1.5em;--button-primary-background-color:#f3bafd;--button-primary-hover-background-color:#f5d0fe;--button-primary-active-background-color:#f3bafd;--button-primary-color:#0c0d0e;--button-secondary-background-color:#69727d;--button-secondary-hover-background-color:#525961;--button-secondary-active-background-color:#3a3f46;--button-secondary-color:#fff;--button-danger-background-color:#dc2626;--button-danger-hover-background-color:#b21d1d;--button-danger-active-background-color:#861616;--button-danger-color:#fff;--button-cta-background-color:#93003f;--button-cta-hover-background-color:#600029;--button-cta-active-background-color:#2d0013;--button-cta-color:#fff;--button-brand-background-color:#93003f;--button-brand-hover-background-color:#600029;--button-brand-active-background-color:#2d0013;--button-brand-color:#fff;--button-link-background-color:#515962;--button-link-hover-background-color:#3a4046;--button-link-active-background-color:#23262a;--button-link-color:#fff;--button-disabled-background-color:#d5d8dc;--button-disabled-hover-background-color:#b9bec5;--button-disabled-active-background-color:#9da4ae;--button-disabled-color:#fff;color:var(--button-background-color,currentColor);font-size:var(--button-font-size,inherit);font-weight:500;line-height:var(--button-line-height);transition:var(--e-a-transition-hover);cursor:pointer}.eps-button:active{--button-background-color:var(--button-active-background-color,transparent)}.eps-button:hover{--button-background-color:var(--button-hover-background-color)}.eps-theme-dark .eps-button{--button-primary-background-color:#f3bafd;--button-primary-color:#0c0d0e;--button-primary-hover-background-color:#eb8efb;--button-primary-active-background-color:#f3bafd;--button-secondary-background-color:#babfc5;--button-secondary-color:#fff;--button-secondary-hover-background-color:#9ea5ae;--button-secondary-active-background-color:#838c96;--button-cta-background-color:#93003f;--button-cta-hover-background-color:#600029;--button-cta-active-background-color:#2d0013;--button-cta-color:#fff;--button-brand-hover-background-color:#600029;--button-brand-active-background-color:#2d0013;--button-brand-color:#fff;--button-brand-background-color:#93003f;--button-link-background-color:#515962;--button-link-hover-background-color:#3a4046;--button-link-active-background-color:#23262a;--button-link-color:#fff;--button-disabled-background-color:#69727d;--button-disabled-hover-background-color:#525961;--button-disabled-active-background-color:#3a3f46;--button-disabled-color:#fff}.eps-button--contained{padding:var(--button-padding-y) var(--button-padding-x);background-color:var(--button-background-color,transparent);border:1px solid var(--button-background-color)}.eps-button--contained,.eps-button--contained:hover{color:var(--button-color)}.eps-button--outlined{display:block;padding:var(--button-padding-y) var(--button-padding-x);border:1px solid var(--button-background-color)}.eps-button--contained,.eps-button--outlined{border-radius:.1875rem}.eps-button--underlined{text-decoration:underline}.eps-button--sm{--button-font-size:0.75rem;--button-line-height:14px}.eps-button--lg{--button-font-size:0.9375rem;--button-line-height:18px}.eps-button--primary{--button-color:var(--button-primary-color);--button-background-color:var(--button-primary-background-color);--button-hover-background-color:var(--button-primary-hover-background-color);--button-active-background-color:var(--button-primary-active-background-color)}.eps-button--secondary{--button-color:var(--button-secondary-color);--button-background-color:var(--button-secondary-background-color);--button-hover-background-color:var(--button-secondary-hover-background-color);--button-active-background-color:var(--button-secondary-active-background-color)}.eps-button--danger{--button-color:var(--button-danger-color);--button-background-color:var(--button-danger-background-color);--button-hover-background-color:var(--button-danger-hover-background-color);--button-active-background-color:var(--button-danger-active-background-color)}.eps-button--cta{--button-color:var(--button-brand-color);--button-background-color:var(--button-cta-background-color);--button-hover-background-color:var(--button-cta-hover-background-color);--button-active-background-color:var(--button-cta-active-background-color)}.eps-button--brand{--button-color:var(--button-cta-color);--button-background-color:var(--button-cta-background-color);--button-hover-background-color:var(--button-cta-hover-background-color);--button-active-background-color:var(--button-cta-active-background-color)}.eps-button--link{--button-color:var(--button-link-color);--button-background-color:var(--button-link-background-color);--button-hover-background-color:var(--button-link-hover-background-color);--button-active-background-color:var(--button-link-active-background-color)}.eps-button--disabled,.eps-button[disabled]{--button-color:var(--button-disabled-color);--button-background-color:var(--button-disabled-background-color);--button-hover-background-color:var(--button-disabled-hover-background-color);--button-active-background-color:var(--button-disabled-active-background-color);cursor:default}:root{--app-background-color:#fff;--app-box-shadow-color:rgba(var(--box-shadow-color,rgba(0,0,0,0.15)),0.2);--app-header-color:#1f2124;--app-logo-color:#fff;--app-logo-background-color:#0c0d0e;--app-title-color:#0c0d0e;--app-header-buttons-separator-color:#9da5ae;--app-header-buttons-color:#515962;--app-header-buttons-color-hover:#0c0d0e;--app-lightbox-background-color:rgba(0,0,0,0.8)}.eps-theme-dark{--app-background-color:#1f2124;--app-box-shadow-color:rgba(var(--box-shadow-color,rgba(0,0,0,0.15)),0.2);--app-header-color:#d5d8dc;--app-logo-color:#0c0d0e;--app-logo-background-color:#fff;--app-title-color:#fff;--app-header-buttons-separator-color:#818a96;--app-header-buttons-color:#babfc5;--app-header-buttons-color-hover:#9da5ae;--app-lightbox-background-color:rgba(0,0,0,0.8)}:root{--text-muted:#babfc5;--disabled:#d5d8dc;--accent:#f3bafd;--primary:#93003f;--primary-bg:#fae8ff;--secondary:#515962;--info:#2563eb;--info-bg:#f0f7ff;--danger:#dc2626;--danger-bg:#fef1f4;--success:#0a875a;--success-bg:#f2fdf5;--warning:#f59e0b;--warning-bg:#fffbeb;--body-color:#515962;--body-bg:#fff;--link-color:#515962;--link-hover-color:#2e3338;--hr-color:#e6e8ea;--box-shadow-color:theme-colors(dark);--display-1-color:#515962;--display-2-color:#515962;--display-3-color:#515962;--display-4-color:#515962;--h1-color:#515962;--h2-color:#515962;--h3-color:#515962;--h4-color:#515962;--h5-color:#515962;--h6-color:#515962;--text-base-color:#515962;--text-xl-color:#515962;--text-lg-color:#515962;--text-sm-color:#515962;--text-xs-color:#515962;--text-xxs-color:#515962}.eps-theme-dark,:root{--light:#fff;--dark:#000;--cta:#93003f;--brand:#93003f;--gray-900:#0c0d0e;--gray-800:#1f2124;--gray-750:#2b2c31;--gray-725:#333438;--gray-700:#3f444b;--gray-600:#515962;--gray-500:#69727d;--gray-400:#818a96;--gray-300:#9da5ae;--gray-200:#babfc5;--gray-100:#d5d8dc;--gray-75:#e6e8ea;--gray-50:#f1f2f3;--gray-25:#f9fafa}.eps-theme-dark{--text-muted:#818a96;--disabled:#69727d;--accent:#524cff;--success:#39b54a;--success-bg:#032317;--info:#07c;--info-bg:#0a1a3d;--warning:#fcb92c;--warning-bg:#311808;--danger:#f84343;--danger-bg:#390a0a;--body-color:#babfc5;--body-bg:#1f2124;--link-color:#07c;--link-hover-color:#2e3338;--hr-color:#333438;--box-shadow-color:rgba(0,0,0,0.15);--display-1-color:#babfc5;--display-2-color:#babfc5;--display-3-color:#babfc5;--display-4-color:#babfc5;--h1-color:#babfc5;--h2-color:#babfc5;--h3-color:#babfc5;--h4-color:#babfc5;--h5-color:#babfc5;--h6-color:#babfc5;--text-base-color:#babfc5;--text-xl-color:#babfc5;--text-lg-color:#babfc5;--text-sm-color:#babfc5;--text-xs-color:#babfc5;--text-xxs-color:#babfc5}*,:after,:before{box-sizing:border-box}html{font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:rgba(0,0,0,0)}article,aside,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}body{margin:0;font-family:Roboto,Arial,Helvetica,Verdana,sans-serif;font-size:.875rem;font-weight:400;line-height:1.5;color:var(--body-color);background-color:var(--body-bg)}[tabindex="-1"]:focus:not(:focus-visible){outline:0!important}h1,h2,h3,h4,h5,h6{font-size:100%;margin:0;padding:0;line-height:inherit;font-weight:400}p{margin-block-start:0}b,strong{font-weight:700}small{font-size:80%}a{--eps-link-color:$eps-link-color;color:var(--eps-link-color);background-color:transparent}a,a:active,a:focus,a:hover{text-decoration:none}a:focus,a:hover{--eps-link-color:$eps-link-hover-color}a:not([href]),a:not([href]):hover{color:inherit;text-decoration:none}code,kbd,pre,samp{font-family:monospace;font-size:1em}figure{margin:0}img{border-style:none}img,svg{vertical-align:middle}svg{overflow:hidden}button{border-radius:0}button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,input{overflow:visible}button,select{text-transform:none}[role=button]{cursor:pointer}select{word-wrap:normal}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button;-moz-appearance:button;appearance:button}[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled),button:not(:disabled){cursor:pointer}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}textarea{overflow:auto;resize:vertical}[hidden]{display:none!important}hr{border:0;border-block-end:1px solid var(--hr-color)}.eps-display-1{color:var(--display-1-color)}.eps-display-1,.eps-display-2{font-size:1.85rem;margin-block-start:.5rem;margin-block-end:.5rem}.eps-display-2{color:var(--display-2-color)}.eps-display-3{font-size:1.85rem;color:var(--display-3-color);margin-block-start:0;margin-block-end:1.25rem}.eps-display-4{font-size:1.85rem;color:var(--display-4-color);margin-block-start:.5rem;margin-block-end:.5rem}.eps-h1,h1{font-size:1.625rem;line-height:1;color:var(--h1-color);margin-block-end:1.25rem;font-weight:500}.eps-h2,h2{font-size:1.25rem;color:var(--h2-color);margin-block-end:1.25rem}.eps-h2,.eps-h3,h2,h3{line-height:1.2;margin-block-start:0;font-weight:500}.eps-h3,h3{font-size:1rem;color:var(--h3-color);margin-block-end:.5rem}.eps-h4,h4{font-size:.9375rem;color:var(--h4-color)}.eps-h4,.eps-h5,h4,h5{margin-block-start:0;margin-block-end:.5rem}.eps-h5,h5{font-size:.875rem;color:var(--h5-color)}.eps-h6,h6{font-size:.875rem;color:var(--h-6-color);margin-block-start:0;margin-block-end:.5rem;font-weight:700}.eps-text-xxs{line-height:1.2;color:var(--text-xxs-color)}.eps-text-xs,.eps-text-xxs{font-size:.75rem;font-weight:400}.eps-text-xs{line-height:1.5;color:var(--text-xs-color)}.eps-text{font-size:.875rem;color:var(--text-base-color)}.eps-text,.eps-text-sm{line-height:1.5;font-weight:400}.eps-text-sm{font-size:.8125rem;color:var(--text-sm-color)}.eps-text-lg{font-size:.9375rem;color:var(--text-lg-color)}.eps-text-lg,.eps-text-xl{line-height:1.5;font-weight:400}.eps-text-xl{font-size:1rem;color:var(--text-xl-color)}.video-wrapper{position:relative;padding-block-end:56.25%;height:0}.video-wrapper iframe{position:absolute;top:0;right:0;width:100%;height:100%}.eps-separator{margin-block-end:2.75rem}.eps-theme-dark{--e-app-back-button-color:#babfc5}.back-button,.e-app-back-button{--button-background-color:var(--e-app-back-button-color,#69727d);margin-block-end:1.5rem}.back-button .eps-icon,.e-app-back-button .eps-icon{margin-inline-end:.3125rem}.eps-theme-dark{--input-border-color:--hr-color}.eps-input{border:1px solid var(--hr-color);border-radius:.1875rem;background:transparent;color:inherit;height:1.875rem;padding:0 .3125rem}.eps-input--block{width:100%}.eps-app{display:flex;height:100vh;flex-direction:column;color:var(--body-color);background-color:var(--app-background-color);position:absolute;border-radius:0;box-shadow:2px 8px 23px 3px var(--color-box-shadow-color);overflow:hidden;font-family:Roboto,Arial,Helvetica,Verdana,sans-serif;width:100%;max-width:100%}.eps-app__lightbox{display:flex;align-items:center;justify-content:center;position:fixed;height:100%;width:100%;background-color:var(--app-lightbox-background-color);z-index:1040;bottom:0;right:0}.eps-app__header{flex-shrink:0;font-size:.9375rem;border-block-end:var(--e-a-border);position:relative;z-index:3;height:3.125rem;padding-block:0;padding-inline:1rem}.eps-app__header-buttons{display:flex;align-items:center;flex-direction:row-reverse;font-size:1.125rem}.eps-app__header-btn{padding-inline-start:1rem;font-size:1.125rem;line-height:1.25rem}.eps-app__header-btn:hover{color:var(--app-header-buttons-color-hover)}.eps-app__header-btn:first-child{border-inline-start:1px solid var(--app-header-buttons-separator-color)}.eps-app__header-btn:not(:first-child){padding-inline-end:1rem}.eps-app__logo-title-wrapper{display:flex;align-items:center}.eps-app__logo{display:block;width:1.75rem;height:1.75rem;line-height:1.75rem;text-align:center;font-size:calc(.4 * 1.75rem);border-radius:50%;color:var(--app-logo-color);background-color:var(--app-logo-background-color)}.eps-app__logo:not(:last-child){margin-inline-end:.625rem}.eps-app__title{color:var(--app-title-color);font-size:.9375rem;font-weight:700;text-transform:uppercase;margin-block-end:0}.eps-app__main{display:flex;overflow:hidden;flex-grow:1}.eps-app__sidebar{background-color:var(--app-sidebar-background-color);padding-block-start:1.25rem;width:30%;max-width:17.1875rem;border-inline-end:var(--e-a-border);flex-grow:0;overflow-y:auto;z-index:4}.eps-app__content{flex-grow:1;position:relative;padding:2.75rem;height:100%;overflow-y:auto}.e-app-upload-file__input{display:none}.e-app-drop-zone{--e-app-drop-zone-text-color:#69727d;--e-app-drop-zone-secondary-text-color:#515962}.e-app-drop-zone__icon{margin-block-end:2.75rem;font-size:60px}.e-app-drop-zone__text{color:var(--e-app-drop-zone-text-color)}.e-app-drop-zone__secondary-text{color:var(--e-app-drop-zone-secondary-text-color)}.eps-theme-dark .e-app-drop-zone{--e-app-drop-zone-text-color:#babfc5;--e-app-drop-zone-secondary-text-color:#d5d8dc}:root{--info-toggle-color:#9da5ae;--info-toggle-hover-color:#69727d}.eps-theme-dark{--placeholder-filter:invert(0.8) sepia(1) saturate(0.2) hue-rotate(180deg) contrast(1.25) brightness(1.2);--info-toggle-color:#818a96;--info-toggle-hover-color:#babfc5}.e-site-part .eps-card__image{filter:var(--placeholder-filter,none)}.e-site-part__info-toggle{color:var(--info-toggle-color)}.e-site-part__info-toggle:hover{--info-toggle-color:var(--info-toggle-hover-color)}.e-site-editor__header{margin-block-end:2.75rem;border-block-end:1px solid var(--hr-color)}:root{--e-elementor-loader-color:#fff;--e-elementor-loader-wrapper-color:#f9fafa;--e-elementor-loader-box-color:#e6e8ea}.eps-theme-dark{--e-elementor-loader-color:#1f2124;--e-elementor-loader-wrapper-color:#2b2c31;--e-elementor-loader-box-color:#3f444b}.elementor-loading{background-color:var(--e-elementor-loader-color);height:100vh}.elementor-loader-wrapper{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:300px;display:flex;flex-direction:column;align-items:center;gap:30px}.elementor-loader{border-radius:50%;padding:40px;height:150px;width:150px;background-color:var(--e-elementor-loader-wrapper-color);box-sizing:border-box;box-shadow:2px 2px 20px 4px rgba(0,0,0,.02)}.elementor-loader-boxes{height:100%;width:100%;position:relative}.elementor-loader-box{position:absolute;background-color:var(--e-elementor-loader-box-color);animation:load 1.8s linear infinite}.elementor-loader-box:first-of-type{width:20%;height:100%;right:0;top:0}.elementor-loader-box:not(:first-of-type){left:0;height:20%;width:60%}.elementor-loader-box:nth-of-type(2){top:0;animation-delay:calc(1.8s / 4 * -1)}.elementor-loader-box:nth-of-type(3){top:40%;animation-delay:calc(1.8s / 4 * -2)}.elementor-loader-box:nth-of-type(4){bottom:0;animation-delay:calc(1.8s / 4 * -3)}.elementor-loading-title{color:#9da5ae;text-align:center;text-transform:uppercase;letter-spacing:7px;text-indent:7px;font-size:10px;width:100%}@keyframes load{0%{opacity:.3}50%{opacity:1}to{opacity:.3}}.eps-menu__title{margin-block-start:2.75rem;margin-block-end:1rem}.e-app-import{--e-app-import-back-to-library-color:#69727d;padding-block-end:1.25rem}.e-app-import__drop-zone{margin-block-start:1.25rem}.e-app-import__back-to-library{color:var(--e-app-import-back-to-library-color);margin-block-end:1.5rem}.e-app-import__back-to-library>i{margin-inline-end:.5rem}.eps-theme-dark .e-app-import{--e-app-import-back-to-library-color:#babfc5}.e-site-editor__promotion-overlay__link{display:flex;width:100%;height:100%;align-items:center;justify-content:center;flex-direction:column;text-decoration:none}.e-site-editor__promotion-overlay__icon{font-size:1.25rem;color:#fff;margin-block-end:1rem}.e-app-import-export-wizard-step{--e-app-import-export-wizard-step-icon-color:#818a96;--e-app-import-export-wizard-step-text-color:#69727d;--e-app-import-export-wizard-step-block-end-text-color:#69727d;height:100%;position:relative;text-align:center}.e-app-import-export-wizard-step__media-container{height:140px;margin:5.5rem 0 2.75rem}.e-app-import-export-wizard-step__icon{color:var(--e-app-import-export-wizard-step-icon-color);font-size:50px}.e-app-import-export-wizard-step__icon.eicon-loading{font-size:1.85rem}.e-app-import-export-wizard-step__heading{margin-block-end:1.5rem}.e-app-import-export-wizard-step__description,.e-app-import-export-wizard-step__info{color:var(--e-app-import-export-wizard-step-text-color)}.e-app-import-export-wizard-step__info{margin-block-start:1.5rem}.e-app-import-export-wizard-step__content{text-align:initial;margin-block-end:1.25rem}.e-app-import-export-wizard-step__notice{display:block;position:sticky;top:100%;color:var(--e-app-import-export-wizard-step-block-end-text-color);font-style:italic;margin-block-end:0}.eps-theme-dark .e-app-import-export-wizard-step{--e-app-import-export-wizard-step-icon-color:#818a96;--e-app-import-export-wizard-step-text-color:#babfc5;--e-app-import-export-wizard-step-block-end-text-color:#babfc5}.e-app-import-export-page-header{--e-app-import-export-page-header-heading-color:#515962;--e-app-import-export-page-header-description-color:#69727d;margin-block-end:2.75rem}.e-app-import-export-page-header__content-wrapper{max-width:645px}.e-app-import-export-page-header__heading{color:var(--e-app-import-export-page-header-heading-color)}.e-app-import-export-page-header__description{color:var(--e-app-import-export-page-header-description-color);margin-block-start:1.25rem}.eps-theme-dark .e-app-import-export-page-header{--e-app-import-export-page-header-heading-color:#d5d8dc;--e-app-import-export-page-header-description-color:#d5d8dc}.e-app-wizard-footer{--e-app-wizard-footer-border-color:#e6e8ea;padding:.5rem}.e-app-wizard-footer__separator{border-block-start:1px solid var(--e-app-wizard-footer-border-color)}.eps-theme-dark .e-app-wizard-footer{--e-app-wizard-footer-border-color:#333438}.e-app-export-templates-features__locked{--e-app-export-templates-features-locked-color:#69727d;color:var(--e-app-export-templates-features-locked-color)}.eps-theme-dark .e-app-export-templates-features__locked{--e-app-export-templates-features-locked-color:#9da5ae}:root{--color-box-shadow-color:rgba(0,0,0,0.05)}.eps-theme-dark{--color-box-shadow-color:rgba(0,0,0,0.1)}:root{--card-background-color-hover:#fff;--card-border:1px solid #d5d8dc;--card-header-footer-border:1px solid var(--e-a-border-color);--card-header-footer-active-border:2px solid #babfc5;--card-headline-color:#515962;--card-figure-background-color:#babfc5;--card-image-overlay-background-color:rgba(0,0,0,0.2)}.eps-theme-dark{--card-background-color-hover:#2b2c31;--card-border:1px solid #333438;--card-header-footer-border:1px solid #333438;--card-header-footer-active-border:1px solid #1f2124;--card-headline-color:#d5d8dc;--card-figure-background-color:#3f444b;--card-image-overlay-background-color:rgba(63,68,75,0.5)}.eps-card{border:var(--card-border);border-radius:.1875rem;transition:.3s;font-size:.75rem}.eps-card__header{padding:.625rem;border-block-end:var(--card-header-footer-border);min-height:2.5rem;display:flex;align-items:center}.eps-card__header--padding{padding:var(--eps-card-header-padding)}.eps-card__headline{color:var(--card-headline-color);margin-block-end:0;font-weight:500;flex-grow:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.eps-card__body{padding:.625rem}.eps-card__body--padding{padding:var(--eps-card-body-padding)}.eps-card__figure{background-color:var(--card-figure-background-color);position:relative;padding-block-end:var(--card-image-aspect-ratio,95.6%);overflow:hidden;height:0}.eps-card__image{width:100%;-o-object-fit:contain;object-fit:contain;-o-object-position:top;object-position:top;position:absolute;top:0;right:0}.eps-card__image-overlay{position:absolute;top:0;background-color:var(--card-image-overlay-background-color);z-index:1;width:100%;height:100%;opacity:0;transition:.3s}.eps-card__image-overlay:hover{opacity:1}.eps-card__footer{padding:.625rem;border-block-start:var(--card-header-footer-border);font-size:.6875rem}.eps-card__footer--padding{padding:var(--eps-card-footer-padding)}:root{--menu-item-color:#515962;--menu-item-color-hover:#3f444b;--menu-item-color-active:#0c0d0e;--menu-item-background-color-hover:#f9fafa;--menu-item-background-color-active:#e6e8ea;--menu-item-action-button-color:#9da5ae}.eps-theme-dark{--menu-item-color:#d5d8dc;--menu-item-color-hover:#babfc5;--menu-item-color-active:#9da5ae;--menu-item-background-color-hover:#2b2c31;--menu-item-background-color-active:#333438;--menu-item-action-button-color:#818a96}.eps-menu-item{display:flex;align-items:center;position:relative;transition:.3s;--action-button-opacity:0}.eps-menu-item:before{content:"";display:block;position:absolute;top:0;right:0;height:100%;width:var(--menu-item-pointer-width);background-color:#0c0d0e}.eps-menu-item:hover:not(.eps-menu-item--active){background-color:var(--menu-item-background-color-hover);--action-button-opacity:1;--menu-item-color:var(--menu-item-color-hover);--eps-link-color:var(--menu-item-color-hover)}.eps-menu-item--active{background-color:var(--menu-item-background-color-active);--menu-item-color:var(--menu-item-color-active);--eps-link-color:var(--menu-item-color-active)}.eps-menu-item__link{padding:.5rem 1.875rem;min-height:2.75rem;font-size:.75rem;line-height:1.2;flex-grow:1;display:flex;align-items:center;color:var(--menu-item-color);--eps-link-color:var(--menu-item-color)}.eps-menu-item__link:not(:last-child){padding-inline-end:0}.eps-menu-item__link .eps-icon{font-size:1.125rem;margin-inline-end:.75rem}.eps-menu-item__action-button{opacity:var(--action-button-opacity);padding:.625rem;transition:.3s;margin-inline-end:1.25rem}.eps-menu-item--active{--menu-item-pointer-width:0.3125rem}.eps-grid-container{display:flex;flex-wrap:wrap;width:100%}.eps-grid-container--no-wrap{flex-wrap:nowrap}.eps-grid-container--wrap-reverse{flex-wrap:wrap-reverse}.eps-grid-container--spacing{--grid-row-gutter:calc(-1 * calc(var(--grid-spacing-gutter) * 0.625rem / 10));width:var(--grid-spacing-width);margin:var(--grid-row-gutter)}.eps-grid-container--spacing>.eps-grid-item{padding:var(--grid-spacing-gutter)}.eps-grid--direction-row{flex-direction:row}.eps-grid--direction-row-reverse{flex-direction:row-reverse}.eps-grid--direction-column{flex-direction:column}.eps-grid--direction-column-reverse{flex-direction:column-reverse}.eps-grid--justify-stretch{justify-content:stretch}.eps-grid--justify-start{justify-content:flex-start}.eps-grid--justify-center{justify-content:center}.eps-grid--justify-end{justify-content:flex-end}.eps-grid--justify-space-between{justify-content:space-between}.eps-grid--justify-space-around{justify-content:space-around}.eps-grid--justify-space-evenly{justify-content:space-evenly}.eps-grid--align-content-stretch{align-content:stretch}.eps-grid--align-content-start{align-content:flex-start}.eps-grid--align-content-center{align-content:center}.eps-grid--align-content-end{align-content:flex-end}.eps-grid--align-content-space-between{align-content:space-between}.eps-grid--align-items-start{align-items:flex-start}.eps-grid--align-items-center{align-items:center}.eps-grid--align-items-end{align-items:flex-end}.eps-grid--align-items-baseline{align-items:baseline}.eps-grid--align-items-stretch{align-items:stretch}.eps-grid-item--zero-min-width{min-width:0}@media screen and (min-width:480px){.eps-grid-item-sm{flex-grow:1;max-width:100%;flex-basis:0}}@media screen and (min-width:768px){.eps-grid-item-md{flex-grow:1;max-width:100%;flex-basis:0}}@media screen and (min-width:1025px){.eps-grid-item-lg{flex-grow:1;max-width:100%;flex-basis:0}}@media screen and (min-width:1440px){.eps-grid-item-xl{flex-grow:1;max-width:100%;flex-basis:0}}@media screen and (min-width:1600px){.eps-grid-item-xxl{flex-grow:1;max-width:100%;flex-basis:0}}.eps-grid-item-xs-1{flex-grow:0;max-width:calc(1 / 12 * 100%);flex-basis:calc(1 / 12 * 100%)}.eps-grid-item-xs-2{flex-grow:0;max-width:calc(2 / 12 * 100%);flex-basis:calc(2 / 12 * 100%)}.eps-grid-item-xs-3{flex-grow:0;max-width:calc(3 / 12 * 100%);flex-basis:calc(3 / 12 * 100%)}.eps-grid-item-xs-4{flex-grow:0;max-width:calc(4 / 12 * 100%);flex-basis:calc(4 / 12 * 100%)}.eps-grid-item-xs-5{flex-grow:0;max-width:calc(5 / 12 * 100%);flex-basis:calc(5 / 12 * 100%)}.eps-grid-item-xs-6{flex-grow:0;max-width:calc(6 / 12 * 100%);flex-basis:calc(6 / 12 * 100%)}.eps-grid-item-xs-7{flex-grow:0;max-width:calc(7 / 12 * 100%);flex-basis:calc(7 / 12 * 100%)}.eps-grid-item-xs-8{flex-grow:0;max-width:calc(8 / 12 * 100%);flex-basis:calc(8 / 12 * 100%)}.eps-grid-item-xs-9{flex-grow:0;max-width:calc(9 / 12 * 100%);flex-basis:calc(9 / 12 * 100%)}.eps-grid-item-xs-10{flex-grow:0;max-width:calc(10 / 12 * 100%);flex-basis:calc(10 / 12 * 100%)}.eps-grid-item-xs-11{flex-grow:0;max-width:calc(11 / 12 * 100%);flex-basis:calc(11 / 12 * 100%)}.eps-grid-item-xs-12{flex-grow:0;max-width:calc(12 / 12 * 100%);flex-basis:calc(12 / 12 * 100%)}@media screen and (min-width:480px){.eps-grid-item-sm-1{flex-grow:0;max-width:calc(1 / 12 * 100%);flex-basis:calc(1 / 12 * 100%)}.eps-grid-item-sm-2{flex-grow:0;max-width:calc(2 / 12 * 100%);flex-basis:calc(2 / 12 * 100%)}.eps-grid-item-sm-3{flex-grow:0;max-width:calc(3 / 12 * 100%);flex-basis:calc(3 / 12 * 100%)}.eps-grid-item-sm-4{flex-grow:0;max-width:calc(4 / 12 * 100%);flex-basis:calc(4 / 12 * 100%)}.eps-grid-item-sm-5{flex-grow:0;max-width:calc(5 / 12 * 100%);flex-basis:calc(5 / 12 * 100%)}.eps-grid-item-sm-6{flex-grow:0;max-width:calc(6 / 12 * 100%);flex-basis:calc(6 / 12 * 100%)}.eps-grid-item-sm-7{flex-grow:0;max-width:calc(7 / 12 * 100%);flex-basis:calc(7 / 12 * 100%)}.eps-grid-item-sm-8{flex-grow:0;max-width:calc(8 / 12 * 100%);flex-basis:calc(8 / 12 * 100%)}.eps-grid-item-sm-9{flex-grow:0;max-width:calc(9 / 12 * 100%);flex-basis:calc(9 / 12 * 100%)}.eps-grid-item-sm-10{flex-grow:0;max-width:calc(10 / 12 * 100%);flex-basis:calc(10 / 12 * 100%)}.eps-grid-item-sm-11{flex-grow:0;max-width:calc(11 / 12 * 100%);flex-basis:calc(11 / 12 * 100%)}.eps-grid-item-sm-12{flex-grow:0;max-width:calc(12 / 12 * 100%);flex-basis:calc(12 / 12 * 100%)}}@media screen and (min-width:768px){.eps-grid-item-md-1{flex-grow:0;max-width:calc(1 / 12 * 100%);flex-basis:calc(1 / 12 * 100%)}.eps-grid-item-md-2{flex-grow:0;max-width:calc(2 / 12 * 100%);flex-basis:calc(2 / 12 * 100%)}.eps-grid-item-md-3{flex-grow:0;max-width:calc(3 / 12 * 100%);flex-basis:calc(3 / 12 * 100%)}.eps-grid-item-md-4{flex-grow:0;max-width:calc(4 / 12 * 100%);flex-basis:calc(4 / 12 * 100%)}.eps-grid-item-md-5{flex-grow:0;max-width:calc(5 / 12 * 100%);flex-basis:calc(5 / 12 * 100%)}.eps-grid-item-md-6{flex-grow:0;max-width:calc(6 / 12 * 100%);flex-basis:calc(6 / 12 * 100%)}.eps-grid-item-md-7{flex-grow:0;max-width:calc(7 / 12 * 100%);flex-basis:calc(7 / 12 * 100%)}.eps-grid-item-md-8{flex-grow:0;max-width:calc(8 / 12 * 100%);flex-basis:calc(8 / 12 * 100%)}.eps-grid-item-md-9{flex-grow:0;max-width:calc(9 / 12 * 100%);flex-basis:calc(9 / 12 * 100%)}.eps-grid-item-md-10{flex-grow:0;max-width:calc(10 / 12 * 100%);flex-basis:calc(10 / 12 * 100%)}.eps-grid-item-md-11{flex-grow:0;max-width:calc(11 / 12 * 100%);flex-basis:calc(11 / 12 * 100%)}.eps-grid-item-md-12{flex-grow:0;max-width:calc(12 / 12 * 100%);flex-basis:calc(12 / 12 * 100%)}}@media screen and (min-width:1025px){.eps-grid-item-lg-1{flex-grow:0;max-width:calc(1 / 12 * 100%);flex-basis:calc(1 / 12 * 100%)}.eps-grid-item-lg-2{flex-grow:0;max-width:calc(2 / 12 * 100%);flex-basis:calc(2 / 12 * 100%)}.eps-grid-item-lg-3{flex-grow:0;max-width:calc(3 / 12 * 100%);flex-basis:calc(3 / 12 * 100%)}.eps-grid-item-lg-4{flex-grow:0;max-width:calc(4 / 12 * 100%);flex-basis:calc(4 / 12 * 100%)}.eps-grid-item-lg-5{flex-grow:0;max-width:calc(5 / 12 * 100%);flex-basis:calc(5 / 12 * 100%)}.eps-grid-item-lg-6{flex-grow:0;max-width:calc(6 / 12 * 100%);flex-basis:calc(6 / 12 * 100%)}.eps-grid-item-lg-7{flex-grow:0;max-width:calc(7 / 12 * 100%);flex-basis:calc(7 / 12 * 100%)}.eps-grid-item-lg-8{flex-grow:0;max-width:calc(8 / 12 * 100%);flex-basis:calc(8 / 12 * 100%)}.eps-grid-item-lg-9{flex-grow:0;max-width:calc(9 / 12 * 100%);flex-basis:calc(9 / 12 * 100%)}.eps-grid-item-lg-10{flex-grow:0;max-width:calc(10 / 12 * 100%);flex-basis:calc(10 / 12 * 100%)}.eps-grid-item-lg-11{flex-grow:0;max-width:calc(11 / 12 * 100%);flex-basis:calc(11 / 12 * 100%)}.eps-grid-item-lg-12{flex-grow:0;max-width:calc(12 / 12 * 100%);flex-basis:calc(12 / 12 * 100%)}}@media screen and (min-width:1440px){.eps-grid-item-xl-1{flex-grow:0;max-width:calc(1 / 12 * 100%);flex-basis:calc(1 / 12 * 100%)}.eps-grid-item-xl-2{flex-grow:0;max-width:calc(2 / 12 * 100%);flex-basis:calc(2 / 12 * 100%)}.eps-grid-item-xl-3{flex-grow:0;max-width:calc(3 / 12 * 100%);flex-basis:calc(3 / 12 * 100%)}.eps-grid-item-xl-4{flex-grow:0;max-width:calc(4 / 12 * 100%);flex-basis:calc(4 / 12 * 100%)}.eps-grid-item-xl-5{flex-grow:0;max-width:calc(5 / 12 * 100%);flex-basis:calc(5 / 12 * 100%)}.eps-grid-item-xl-6{flex-grow:0;max-width:calc(6 / 12 * 100%);flex-basis:calc(6 / 12 * 100%)}.eps-grid-item-xl-7{flex-grow:0;max-width:calc(7 / 12 * 100%);flex-basis:calc(7 / 12 * 100%)}.eps-grid-item-xl-8{flex-grow:0;max-width:calc(8 / 12 * 100%);flex-basis:calc(8 / 12 * 100%)}.eps-grid-item-xl-9{flex-grow:0;max-width:calc(9 / 12 * 100%);flex-basis:calc(9 / 12 * 100%)}.eps-grid-item-xl-10{flex-grow:0;max-width:calc(10 / 12 * 100%);flex-basis:calc(10 / 12 * 100%)}.eps-grid-item-xl-11{flex-grow:0;max-width:calc(11 / 12 * 100%);flex-basis:calc(11 / 12 * 100%)}.eps-grid-item-xl-12{flex-grow:0;max-width:calc(12 / 12 * 100%);flex-basis:calc(12 / 12 * 100%)}}@media screen and (min-width:1600px){.eps-grid-item-xxl-1{flex-grow:0;max-width:calc(1 / 12 * 100%);flex-basis:calc(1 / 12 * 100%)}.eps-grid-item-xxl-2{flex-grow:0;max-width:calc(2 / 12 * 100%);flex-basis:calc(2 / 12 * 100%)}.eps-grid-item-xxl-3{flex-grow:0;max-width:calc(3 / 12 * 100%);flex-basis:calc(3 / 12 * 100%)}.eps-grid-item-xxl-4{flex-grow:0;max-width:calc(4 / 12 * 100%);flex-basis:calc(4 / 12 * 100%)}.eps-grid-item-xxl-5{flex-grow:0;max-width:calc(5 / 12 * 100%);flex-basis:calc(5 / 12 * 100%)}.eps-grid-item-xxl-6{flex-grow:0;max-width:calc(6 / 12 * 100%);flex-basis:calc(6 / 12 * 100%)}.eps-grid-item-xxl-7{flex-grow:0;max-width:calc(7 / 12 * 100%);flex-basis:calc(7 / 12 * 100%)}.eps-grid-item-xxl-8{flex-grow:0;max-width:calc(8 / 12 * 100%);flex-basis:calc(8 / 12 * 100%)}.eps-grid-item-xxl-9{flex-grow:0;max-width:calc(9 / 12 * 100%);flex-basis:calc(9 / 12 * 100%)}.eps-grid-item-xxl-10{flex-grow:0;max-width:calc(10 / 12 * 100%);flex-basis:calc(10 / 12 * 100%)}.eps-grid-item-xxl-11{flex-grow:0;max-width:calc(11 / 12 * 100%);flex-basis:calc(11 / 12 * 100%)}.eps-grid-item-xxl-12{flex-grow:0;max-width:calc(12 / 12 * 100%);flex-basis:calc(12 / 12 * 100%)}}.eps-theme-dark,:root{--menu-title-color:#515962}.eps-menu ul{list-style:none;padding:0;margin:0}.eps-menu ul li{display:flex}.eps-menu__title{padding:.5rem 1.875rem;font-size:.6875rem;line-height:1.2;text-transform:uppercase;font-weight:400;color:var(--menu-title-color)}:root{--eps-modal-background-color:#fff;--eps-modal-header-background-color:#2563eb;--eps-tip-background-color:#f0f7ff}.eps-theme-dark{--eps-modal-background-color:#0c0d0e;--eps-modal-header-background-color:#07c;--eps-tip-background-color:#0a1a3d}.eps-modal{max-width:43.75rem;background:var(--eps-modal-background-color);border-radius:.1875rem;animation:eps-animation-pop .15s cubic-bezier(.57,.53,.71,1.47) forwards}.eps-modal__overlay{background:rgba(0,0,0,.5);position:fixed;display:flex;top:0;right:0;width:100%;height:100%;align-items:center;justify-content:center;z-index:1030}.eps-modal__header{font-size:.875rem;background:var(--eps-modal-header-background-color);height:2.75rem;padding:.625rem 1rem;border-radius:.1875rem}.eps-modal__header,.eps-modal__header .title{color:#fff}.eps-modal__icon{margin-inline-end:.625rem}.eps-modal__body{padding:1.875rem}.eps-modal .eps-tip,.eps-modal__tip{padding:.5rem;padding-inline-start:.75rem;border-inline-start:3px solid #2563eb;background-color:var(--eps-tip-background-color)}.eps-modal .eps-tip:not(:last-child),.eps-modal__tip:not(:last-child){margin-block-end:1.875rem}.eps-modal .eps-tip:not(:first-child),.eps-modal__section:not(:first-child),.eps-modal__tip:not(:first-child){margin-block-start:1.875rem}.eps-modal__close-wrapper{padding-inline-start:1rem;border-inline-start:solid 1px #fff}.eps-add-new-button{display:inline-flex;--eps-add-new-button-size:1.5rem;line-height:var(--eps-add-new-button-size);cursor:pointer}.eps-add-new-button .eps-icon{background-color:#f3bafd;color:#0c0d0e;width:var(--eps-add-new-button-size);height:var(--eps-add-new-button-size);border-radius:100%;font-size:calc(var(--eps-add-new-button-size) * .75);text-align:center;line-height:var(--eps-add-new-button-size)}.eps-add-new-button span:not(.sr-only){margin-inline-start:.625rem;font-weight:500}.eps-add-new-button--sm{--eps-add-new-button-size:1rem}:root{--select2-selection-background-color:#fff;--select2-selection-color:#515962;--select2-selection-border-color:#9da5ae;--select2-selection-opened-focused-border-color:#babfc5;--select2-single-selection-rendered-color:#515962;--select2-default-single-selection-background-color:#fff;--select2-default-single-selection-border-color:#9da5ae;--select2-default-multiple-selection-background-color:#fff;--select2-default-multiple-selection-choice-background-color:#babfc5;--select2-default-multiple-selection-choice-color:#515962;--select2-default-multiple-selection-choice-border-color:#babfc5;--select2-default-multiple-selection-choice-remove-color:#69727d;--select2-default-multiple-selection-choice-remove-hover-color:#515962;--select2-default-results-selected-option-background-color:#fff;--select2-default-results-selected-option-color:#515962;--select2-default-results-highlighted-option-background-color:#5897fb;--select2-default-results-highlighted-option-color:#fff;--select2-results-selected-option-background-color:#5897fb;--select2-results-selected-option-color:#fff;--select2-dropdown-background-color:#fff;--select2-dropdown-border-color:#9da5ae}.eps-theme-dark{--select2-selection-background-color:#3f444b;--select2-selection-color:#d5d8dc;--select2-selection-border-color:#818a96;--select2-selection-opened-focused-border-color:#9da5ae;--select2-single-selection-rendered-color:#d5d8dc;--select2-default-single-selection-background-color:#3f444b;--select2-default-single-selection-border-color:#69727d;--select2-default-multiple-selection-background-color:#3f444b;--select2-default-multiple-selection-choice-background-color:#69727d;--select2-default-multiple-selection-choice-color:#d5d8dc;--select2-default-multiple-selection-choice-border-color:#69727d;--select2-default-multiple-selection-choice-remove-color:#babfc5;--select2-default-multiple-selection-choice-remove-hover-color:#d5d8dc;--select2-default-results-selected-option-background-color:#3f444b;--select2-default-results-selected-option-color:#d5d8dc;--select2-default-results-highlighted-option-background-color:#69727d;--select2-default-results-highlighted-option-color:#d5d8dc;--select2-results-selected-option-background-color:#69727d;--select2-results-selected-option-color:#d5d8dc;--select2-dropdown-background-color:#3f444b;--select2-dropdown-border-color:#818a96}.select2-container:not(.select2-container--open):not(.select2-container--focus) .select2-selection--multiple,.select2-container:not(.select2-container--open):not(.select2-container--focus) .select2-selection--single{background-color:var(--select2-selection-background-color);color:var(--select2-selection-color);border-color:var(--select2-selection-border-color)}.select2-container.select2-container--focus .select2-selection--multiple,.select2-container.select2-container--focus .select2-selection--single,.select2-container.select2-container--open .select2-selection--multiple,.select2-container.select2-container--open .select2-selection--single{border-color:var(--select2-selection-opened-focused-border-color)}.select2-container.select2-container--default .select2-selection--single .select2-selection__rendered{color:var(--select2-single-selection-rendered-color)}.select2-container--default .select2-selection--single{background-color:var(--select2-default-single-selection-background-color);border-color:var(--select2-default-single-selection-border-color)}.select2-container--default .select2-selection--multiple{background-color:var(--select2-default-multiple-selection-background-color)}.select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:var(--select2-default-multiple-selection-choice-background-color);color:var(--select2-default-multiple-selection-choice-color);border-color:var(--select2-default-multiple-selection-choice-border-color)}.select2-container--default .select2-selection--multiple .select2-selection__choice__remove{color:var(--select2-default-multiple-selection-choice-remove-color)}.select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover{color:var(--select2-default-multiple-selection-choice-remove-hover-color)}.select2-container--default .select2-results__option[aria-selected]{background-color:var(--select2-default-results-selected-option-background-color);color:var(--select2-default-results-selected-option-color)}.select2-container--default .select2-results__option--highlighted[aria-selected]{background-color:var(--select2-default-results-highlighted-option-background-color);color:var(--select2-default-results-highlighted-option-color)}.select2-container .select2-results__option[aria-selected=true]{background-color:var(--select2-results-selected-option-background-color);color:var(--select2-results-selected-option-color)}.select2-container .select2-dropdown{background-color:var(--select2-dropdown-background-color);border-color:var(--select2-dropdown-border-color)}.eps-notice{--eps-box-notice-background-color:#f1f2f3;padding:.625rem 1rem}.eps-notice-semantic{border-inline-start:3px solid var(--eps-notice-semantic-color);background-color:var(--eps-notice-semantic-bg)}.eps-notice-semantic .eps-notice__icon{color:var(--eps-notice-semantic-color);font-size:1rem;margin-inline-end:.75rem}.eps-notice--warning{--eps-notice-semantic-color:#f59e0b;--eps-notice-semantic-bg:#fffbeb}.eps-notice--danger{--eps-notice-semantic-color:#dc2626;--eps-notice-semantic-bg:#fef1f4}.eps-notice--info{--eps-notice-semantic-color:#2563eb;--eps-notice-semantic-bg:#f0f7ff}.eps-notice__text{margin:0;padding:0}.eps-notice__button-container{flex-shrink:0;margin-inline-start:1.25rem;width:auto}.eps-theme-dark .eps-notice{--eps-box-notice-background-color:#515962}.eps-theme-dark .eps-notice--warning{--eps-notice-semantic-bg:#311808}.eps-theme-dark .eps-notice--danger{--eps-notice-semantic-bg:#390a0a}.eps-theme-dark .eps-notice--info{--eps-notice-semantic-bg:#0a1a3d}.eps-list{--eps-list-item-separated-border-color:#babfc5;padding:0;margin:0;border-radius:.1875rem;border:1px solid var(--e-a-border-color);list-style-type:none}.eps-list--padding{padding:var(--eps-list-padding)}.eps-list__item{padding:0}.eps-list__item--padding{padding:var(--eps-list-item-padding)}.eps-list--separated .eps-list__item:not(:last-child){border-block-end:1px solid var(--eps-list-item-separated-border-color)}.eps-theme-dark .eps-list{--eps-list-item-separated-border-color:#3f444b}:root{--popover-background-color:#fff;--popover-item-color:#515962;--popover-item-hover-color:#3f444b;--popover-item-danger-hover-color:#dc2626;--popover-item-background-color:#fff;--popover-box-shadow-color:rgba(0,0,0,0.15);--popover-box-shadow-size:0px 1px 20px;--popover-arrow-color:#fff}.eps-theme-dark{--popover-background-color:#1f2124;--popover-item-color:#fff;--popover-item-hover-color:#d5d8dc;--popover-item-danger-hover-color:#f84343;--popover-item-background-color:#1f2124;--popover-box-shadow-color:rgba(0,0,0,0.15);--popover-box-shadow-size:0px 1px 20px;--popover-arrow-color:#1f2124}.eps-popover{padding:10px 0;background-color:var(--popover-background-color);box-shadow:var(--popover-box-shadow-size) var(--popover-box-shadow-color);list-style:none;display:flex;flex-direction:column;min-width:120px;border-radius:.1875rem;position:absolute;z-index:1050;margin-block-start:9px;transform:translateX(-50%);right:.25rem}.eps-popover__background{position:fixed;top:0;bottom:0;right:0;left:0;z-index:1030}.eps-popover__container{position:relative}.eps-popover:before{content:"";display:block;position:absolute;width:16px;height:9px;margin:0 .1875rem 9px;top:-9px;right:50%;transform:translateX(-50%);border-color:transparent;border-style:solid;border-width:0 calc(16px / 2) 9px;border-block-end-color:var(--popover-arrow-color)}.eps-popover__item{padding:.3125rem 1rem;background-color:var(--popover-item-background-color);color:var(--popover-item-color);font-size:.6875rem;font-weight:500;line-height:.8125rem;width:100%;align-items:center;cursor:pointer}.eps-popover__item:hover{color:var(--popover-item-hover-color)}.eps-popover__item--danger:hover{color:var(--popover-item-danger-hover-color)}.eps-popover__item .eps-icon{font-size:inherit;margin-inline-end:.3125rem}.eps-css-grid{display:grid;grid-template-columns:repeat(var(--eps-grid-columns,auto-fill),minmax(var(--eps-grid-col-min-width,1fr),var(--eps-grid-col-max-width,1fr)));grid-gap:var(--eps-grid-spacing)}.eps-box{--eps-box-color:#1f2124;--eps-box-input-color:#1f2124;padding:0;border-radius:.1875rem;color:var(--eps-box-color)}.eps-box--padding{padding:var(--eps-box-padding)}.eps-box>input{width:100%;outline:0;border:0;background-color:transparent;color:var(--eps-box-input-color)}.eps-theme-dark .eps-box{--eps-box-color:#d5d8dc;--eps-box-input-color:#d5d8dc}:root{--checkbox-border-color:#9da5ae;--checkbox-hover-border-color:#8f98a2;--checkbox-active-border-color:#abb2ba;--checkbox-background-color:#fff;--checkbox-checked-background-color:#515962;--checkbox-checked-hover-background-color:#454c54;--checkbox-checked-active-background-color:#5d6670;--checkbox-checked-disabled-background-color:#d5d8dc;--checkbox-indicator-color:#fff;--checkbox-error-background-color:#dc2626}.eps-theme-dark{--checkbox-background-color:transparent}.eps-checkbox{-webkit-appearance:none;-moz-appearance:none;appearance:none;border-radius:.1875rem;width:15px;height:15px;outline:0;background-color:var(--checkbox-background-color);display:inline-flex;justify-content:center;align-items:center;border:1px solid var(--checkbox-border-color)}.eps-checkbox:after{display:inline-block;margin-block-end:calc(.25 / 2 * 100%);content:" ";width:3px;height:6px;transform:rotate(45deg)}.eps-checkbox:hover{--checkbox-border-color:var(--checkbox-hover-border-color)}.eps-checkbox:active{--checkbox-border-color:var(--checkbox-active-border-color)}.eps-checkbox:checked{--checkbox-background-color:var(--checkbox-checked-background-color);--checkbox-border-color:var(--checkbox-checked-background-color)}.eps-checkbox:checked:after{border:solid #fff;border-width:0 1px 1px 0}.eps-checkbox:checked:hover{--checkbox-background-color:var(--checkbox-checked-hover-background-color);--checkbox-border-color:var(--checkbox-checked-hover-background-color)}.eps-checkbox:checked:active{--checkbox-background-color:var(--checkbox-checked-active-background-color);--checkbox-border-color:var(--checkbox-checked-active-background-color)}.eps-checkbox:checked:disabled{--checkbox-background-color:var(--checkbox-checked-disabled-background-color);--checkbox-border-color:var(--checkbox-checked-disabled-background-color)}.eps-checkbox--rounded{border-radius:50%}.eps-checkbox--indeterminate{--checkbox-background-color:var(--checkbox-checked-background-color);--checkbox-border-color:var(--checkbox-checked-background-color)}.eps-checkbox--indeterminate:after{display:inline-block;margin-block-end:0;content:" ";width:7px;height:0;transform:rotate(0deg);border-block-start:1px solid #fff}.eps-checkbox--error:after,.eps-checkbox--error:before,.eps-checkbox--error:checked:after,.eps-checkbox--error:checked:before{display:inline-block;margin-block-end:0;content:" ";width:7px;height:0;border:solid #fff;border-width:1px 0 0;position:absolute}.eps-checkbox--error:before,.eps-checkbox--error:checked:before{transform:rotate(45deg)}.eps-checkbox--error:after,.eps-checkbox--error:checked:after{transform:rotate(-45deg)}.eps-checkbox--error,.eps-checkbox--error:checked,.eps-checkbox--error:checked:hover,.eps-checkbox--error:hover{--checkbox-background-color:var(--checkbox-error-background-color);--checkbox-border-color:var(--checkbox-error-background-color)}:root{--e-app-drag-drop-background-color:#fff;--e-app-drag-drop-outline-color:#e6e8ea}.eps-theme-dark{--e-app-drag-drop-background-color:#2b2c31;--e-app-drag-drop-outline-color:#333438}.e-app-drag-drop{background-color:var(--e-app-drag-drop-background-color);outline:2px dashed var(--e-app-drag-drop-outline-color);outline-offset:-.75rem;margin-block-end:1.5rem;padding:4.125rem;text-align:center}.e-app-drag-drop--drag-over{outline-color:#2563eb}.eps-dialog{border-radius:3px;width:375px}.eps-dialog__close-button{position:absolute;top:-2.75rem;left:-2.75rem;margin-block-start:.625rem;margin-inline-end:.625rem;z-index:1040;font-size:1.25rem;color:#fff}.eps-dialog__content{padding:1.5rem 1.875rem 1rem;font-size:.75rem}.eps-dialog__text,.eps-dialog__title{text-align:center}.eps-dialog__buttons{display:flex}.eps-dialog__button{flex:1;border-block-start:1px solid var(--hr-color);line-height:2.75rem;text-align:center;justify-content:center}.eps-dialog__button:last-child:not(:first-child){border-inline-start:1px solid var(--hr-color)}.e-app__popover{display:none;position:absolute;box-shadow:0 2px 15px rgba(0,0,0,.3);border-radius:6px;padding:20px;width:-moz-fit-content;width:fit-content;z-index:999;background-color:var(--e-a-bg-default)}.e-app__popover:before{content:"";position:absolute;top:-16px;left:var(--popover-arrow-offset-end,22px);border:8px solid transparent;border-block-end-color:#fff}.eps-inline-link{color:var(--eps-inline-link-color);background-color:initial;border:0;padding:0}.eps-inline-link--color-primary{--eps-inline-link-color:#0a875a}.eps-inline-link--color-secondary{--eps-inline-link-color:#818a96}.eps-inline-link--color-danger{--eps-inline-link-color:#dc2626}.eps-inline-link--color-cta{--eps-inline-link-color:#93003f}.eps-inline-link--color-link{--eps-inline-link-color:#515962}.eps-inline-link--color-disabled{--eps-inline-link-color:#d5d8dc}.eps-inline-link--underline-always,.eps-inline-link--underline-always:hover,.eps-inline-link--underline-hover:hover{text-decoration:underline}.eps-inline-link--italic{font-style:italic}.eps-inline-link,.eps-inline-link:focus{outline:none}.eps-text-field{--eps-text-field-color:#515962;--eps-text-field-background-color:transparent;--eps-text-field-placeholder-color:#69727d;--eps-text-field-outlined-border-color:#9da5ae;--eps-text-field-outlined-focus-border-color:#515962;width:100%;color:var(--eps-text-field-color);background-color:var(--eps-text-field-background-color);border:0;margin-block-end:5px;outline:none;font-family:Roboto,Arial,Helvetica,Verdana,sans-serif;font-size:.875rem;font-weight:400;line-height:1.5}.eps-text-field--outlined{border-radius:.1875rem;border:1px solid var(--eps-text-field-outlined-border-color);padding:.625rem}.eps-text-field--outlined:focus{border-color:var(--eps-text-field-outlined-focus-border-color)}.eps-text-field::-moz-placeholder{color:var(--eps-text-field-placeholder-color);font-family:Roboto,Arial,Helvetica,Verdana,sans-serif;font-size:.875rem;font-weight:400;line-height:1.5}.eps-text-field::placeholder{color:var(--eps-text-field-placeholder-color);font-family:Roboto,Arial,Helvetica,Verdana,sans-serif;font-size:.875rem;font-weight:400;line-height:1.5}.eps-theme-dark .eps-text-field{--eps-text-field-color:#babfc5;--eps-text-field-background-color:transparent;--eps-text-field-placeholder-color:#9da5ae;--eps-text-field-outlined-border-color:#3f444b;--eps-text-field-outlined-focus-border-color:#9da5ae}.eps-theme-dark--outlined{border-color:var(--eps-text-field-outlined-border-color)}.eps-theme-dark--outlined:focus{border-color:var(--eps-text-field-outlined-focus-border-color)}.e-app-import-export-content-layout{display:flex;justify-content:center;height:100%}.e-app-import-export-content-layout__container{flex-basis:1075px}.e-app-export-complete__kit-content-title{margin:2.75rem 0 .625rem}.e-app-export-kit-content{--e-app-export-kit-content-title-color:#3f444b;--e-app-export-kit-content-description-color:#515962;--e-app-export-kit-content-sm-notice-color:#babfc5}.e-app-export-kit-content__checkbox{flex-shrink:0;margin-inline-end:.75rem}.e-app-export-kit-content__title{color:var(--e-app-export-kit-content-title-color)}.e-app-export-kit-content__description{color:var(--e-app-export-kit-content-description-color);margin-inline-end:1.25rem}.e-app-export-kit-content__notice{margin-block-start:1rem}.e-app-export-kit-content__small-notice{font-style:italic;color:var(--e-app-export-kit-content-sm-notice-color)}.eps-theme-dark .e-app-export-kit-content{--e-app-export-kit-content-title-color:#d5d8dc;--e-app-export-kit-content-description-color:#babfc5;--e-app-export-kit-content-sm-notice-color:#818a96}.e-app-import-export-kit-data{--e-app-import-export-kit-data-site-area-color:#3f444b;--e-app-import-export-kit-data-included-color:#69727d}.e-app-import-export-kit-data__included,.e-app-import-export-kit-data__site-area{margin-block-end:0}.e-app-import-export-kit-data__site-area{color:var(--e-app-import-export-kit-data-site-area-color);font-weight:700}.e-app-import-export-kit-data__included{color:var(--e-app-import-export-kit-data-included-color)}.eps-theme-dark .e-app-import-export-kit-data{--e-app-import-export-kit-data-site-area-color:#babfc5;--e-app-import-export-kit-data-included-color:#9da5ae}.e-app-import-resolver{--e-app-import-resolver-panel-header-background-color:#fff;--e-app-import-resolver-panel-body-background-color:hsla(0,0%,100%,0.5);--e-app-import-resolver-conflicts-asset-border-color:#818a96;--e-app-import-resolver-conflicts-asset-inactive-color:#69727d;padding-block-end:1.25rem}.e-app-import-resolver__notice{margin-block-end:1.25rem}.e-app-import-resolver__panel,.e-app-import-resolver__panel:hover{background-color:initial}.e-app-import-resolver__panel-header{background-color:var(--e-app-import-resolver-panel-header-background-color)}.e-app-import-resolver__panel-body{background-color:var(--e-app-import-resolver-panel-body-background-color)}.e-app-import-resolver-conflicts__container{box-shadow:0 2px 3px 1px var(--color-box-shadow-color)}.e-app-import-resolver-conflicts__checkbox{flex-shrink:0;margin-inline-end:.75rem}.e-app-import-resolver-conflicts__title{line-height:1}.e-app-import-resolver-conflicts__asset:not(:first-child){border-inline-start:2px solid var(--e-app-import-resolver-conflicts-asset-border-color);padding-inline-start:1rem;margin-inline-start:1rem}.e-app-import-resolver-conflicts__asset:not(.active){color:var(--e-app-import-resolver-conflicts-asset-inactive-color)}.e-app-import-resolver-conflicts__edit-template{margin-inline-start:.3125rem}.eps-theme-dark .e-app-import-resolver{--e-app-import-resolver-panel-header-background-color:#69727d;--e-app-import-resolver-panel-body-background-color:rgba(0,0,0,0.05);--e-app-import-resolver-conflicts-asset-border-color:#818a96;--e-app-import-resolver-conflicts-asset-inactive-color:#9da5ae}.eps-panel{--eps-panel-header-background-color:transparent;--eps-panel-body-background-color:transparent}.eps-panel,.eps-panel:hover{background-color:initial}.eps-panel__header{background-color:var(--eps-panel-header-background-color);border-radius:.1875rem}.eps-panel__body{background-color:var(--eps-panel-body-background-color);border-radius:0 0 .1875rem .1875rem}.eps-theme-dark .eps-panel{--eps-panel-header-background-color:transparent;--eps-panel-body-background-color:transparent}.e-app-export-kit{padding-block-end:1.25rem}.e-app-export-kit-information{margin-block-start:1.25rem}.e-app-export-kit-information__field-header{margin-block-end:.625rem}.e-app-export-kit-information__label{margin:0}.e-app-export-kit-information__info-icon{margin-inline-start:.625rem}.e-app-export-kit-info-modal__icon{padding-inline-start:.625rem}.e-app-export-kit-info-modal__heading{margin-block-end:1.25rem}.e-app-import-export-info-modal__section:not(:first-child){margin-block-start:1.875rem}.e-app-import-export-info-modal__heading{margin-block-end:1.25rem}:root{--eps-badge-background-color:#fff}.eps-theme-dark{--eps-badge-background-color:#515962}.eps-badge{display:inline-block;background:var(--eps-badge-background-color);padding:0 .5rem;line-height:1.8;box-shadow:0 3px 6px var(--color-box-shadow-color);border-radius:4px;font-size:.75rem}.eps-badge--sm{font-size:.625rem;border-radius:3px;padding:0 .3125rem;line-height:1.5}.eps-collapse__title{cursor:pointer;padding:.3125rem 0;display:flex;align-items:center;justify-content:space-between;width:100%;background:transparent;border:none;color:inherit}.eps-collapse__title:focus{outline:none}.eps-collapse__icon{transition:all .15s;transform:rotate(180deg)}.eps-collapse__content{margin-block-start:.625rem;display:none}.eps-collapse[data-open] .eps-collapse__content{display:block}.eps-collapse[data-open] .eps-collapse__icon{transform:rotate(90deg)}.e-kit-library-promotion{--e-kit-library-promotion-color:tints(600)}.eps-theme-dark .e-kit-library-promotion{--e-kit-library-promotion-color:dark-tints(400)}.e-kit-library-promotion{width:100%;text-align:center;margin-block-start:1.875rem;color:var(--e-kit-library-promotion-color)}.e-kit-library__error-screen{margin-block-start:2.75rem}.e-kit-library__error-screen-title{margin-block-start:2.75rem;margin-block-end:0}.e-kit-library__error-screen-description{margin-block-start:1.5rem;color:#69727d;text-align:center;max-width:520px}.e-kit-library__kit-favorite-actions{padding:.3125rem;transition:all .3s;border-radius:4px}.e-kit-library__kit-favorite-actions--active{color:#dc2626}.e-kit-library__kit-favorite-actions--loading{opacity:1%;cursor:default}.e-kit-library__kit-favorite-actions:hover{background-color:rgba(220,38,38,.1)}.e-kit-library__filter-indication{margin-block-start:1.5rem;display:flex;align-items:center}.e-kit-library__filter-indication-text{margin-block-end:0;display:flex;align-items:center}.e-kit-library__filter-indication-badge{margin-inline-start:.3125rem;display:flex;align-items:center}.e-kit-library__filter-indication-badge-remove{margin-inline-start:.3125rem;font-size:.875rem}.e-kit-library__filter-indication-button{margin-inline-start:1.5rem}#eps-app-header-btn-apply,#eps-app-header-btn-connect,#eps-app-header-btn-promotion{margin-inline-start:.625rem;margin-inline-end:.625rem}.e-kit-library__apply-button{display:flex;align-items:center;justify-content:center;gap:.3125rem}.e-kit-library__kit-item{--e-kit-library-kit-item-overlay-promotion-button-background-color:#d5d8dc}.eps-theme-dark .e-kit-library__kit-item{--e-kit-library-kit-item-overlay-promotion-button-background-color:#515962}.e-kit-library__kit-item-overlay{height:100%}.e-kit-library__kit-item-overlay>:first-child{flex:1}.e-kit-library__kit-item-overlay-overview-button{display:flex;flex-direction:column;align-items:center;justify-content:center;color:#fff;height:100%;width:100%}.e-kit-library__kit-item-overlay-overview-button>i{font-size:2rem;margin-block-end:5px}.e-kit-library__kit-item-overlay-overview-button>span{font-size:.9rem}.e-kit-library__kit-item-overlay-promotion-button{display:flex;width:100%;background:#fff;align-items:center;justify-content:center;padding:10px;font-size:13px;color:#93003f;background:var(--e-kit-library-kit-item-overlay-promotion-button-background-color)}.e-kit-library__kit-item-overlay-promotion-button>*{margin:0 3px}.e-kit-library__kit-item-subscription-plan-badge{position:absolute;top:0;left:0;margin:.3125rem;background-color:var(--e-a-color-brand);color:#fff;text-transform:uppercase}:root{--e-kit-library-header-back-border:1px solid var(--e-a-border-color);--e-kit-library-header-back-color:#69727d}.eps-theme-dark{--e-kit-library-header-back-border:1px solid #818a96;--e-kit-library-header-back-color:#babfc5}.e-kit-library__header-back{color:var(--e-kit-library-header-back-color);padding-inline-end:1.25rem;padding-inline-start:.3125rem;display:inline-flex;justify-content:center;align-items:center;height:100%;border-inline-end:var(--e-kit-library-header-back-border)}.e-kit-library__header-back-container{flex:1;height:100%}.e-kit-library__header-back .eps-icon{transform:rotate(180deg)}.e-kit-library__page-loader{width:100%;height:100%;display:grid;place-items:center;font-size:1.85rem;color:#69727d}.eps-search-input{--eps-search-input-background-color:#d5d8dc;--eps-search-input-background-color-focus:#fff;--eps-search-input-color:#3f444b;--eps-search-input-placeholder-color:#69727d}.eps-theme-dark .eps-search-input{--eps-search-input-background-color:#515962;--eps-search-input-background-color-focus:#69727d;--eps-search-input-color:#babfc5;--eps-search-input-placeholder-color:#babfc5}.eps-search-input{width:100%;font-size:.9375rem;padding:.625rem 2.75rem;border:none;background:var(--eps-search-input-background-color);outline:none;color:var(--eps-search-input-color);line-height:1;height:2.75rem}.eps-search-input--sm{font-size:.8125rem;padding:.5rem 1.875rem}.eps-search-input:focus{background:var(--eps-search-input-background-color-focus)}.eps-search-input::-moz-placeholder{color:var(--eps-search-input-placeholder-color);font-style:italic}.eps-search-input::placeholder{color:var(--eps-search-input-placeholder-color);font-style:italic}.eps-search-input__container{position:relative}.eps-search-input__icon{font-size:1.25rem;padding:.625rem;color:#69727d;position:absolute;top:0;right:0;height:100%;display:flex;align-items:center;justify-content:center}.eps-search-input__icon--sm{font-size:.75rem}.eps-search-input__clear-icon{font-size:.875rem;padding:.625rem;color:#69727d;position:absolute;top:0;left:0;height:100%;display:flex;align-items:center;justify-content:center}.eps-search-input__clear-icon--sm{font-size:.6875rem}:root{--eps-sort-select-select-background-color:#d5d8dc;--eps-sort-select-select-color:#3f444b;--eps-sort-select-button-background-color:#d5d8dc;--eps-sort-select-button-border:1px solid var(--e-a-border-color)}.eps-theme-dark{--eps-sort-select-select-background-color:#515962;--eps-sort-select-select-color:#babfc5;--eps-sort-select-button-background-color:#515962;--eps-sort-select-button-border:1px solid #1f2124}.eps-sort-select{width:100%;font-size:.9375rem;display:flex}.eps-sort-select__select-wrapper{flex:1;position:relative}.eps-sort-select__select-wrapper:after{content:"\e8ad";font-family:eicons;position:absolute;left:.625rem;top:0;bottom:0;color:#69727d;display:flex;align-items:center;justify-content:center;pointer-events:none}.eps-sort-select__select{width:100%;padding:.625rem;border:none;background:var(--eps-sort-select-select-background-color);outline:none;color:var(--eps-sort-select-select-color);line-height:1;cursor:pointer;height:2.75rem;-moz-appearance:none;appearance:none;-webkit-appearance:none;border-radius:0}.eps-sort-select__button{padding:.75rem;background:var(--eps-sort-select-button-background-color);border-inline-start:var(--eps-sort-select-button-border);line-height:1;color:#69727d}.e-kit-library__tags-filter{--e-kit-library-tags-filter-list-search-background-color:#fff}.eps-theme-dark .e-kit-library__tags-filter{--e-kit-library-tags-filter-list-search-background-color:#515962}.e-kit-library__tags-filter{margin-block-start:2.75rem}.e-kit-library__tags-filter-list{margin-block-end:2.75rem}.e-kit-library__tags-filter-list .eps-collapse__title{padding-inline-end:1.875rem;padding-inline-start:1.875rem;text-transform:uppercase}.e-kit-library__tags-filter-list .eps-collapse__content{margin:.3125rem 1.875rem}.e-kit-library__tags-filter-list-container{max-height:250px;overflow:auto}.e-kit-library__tags-filter-list-search{margin-block-end:.625rem}.e-kit-library__tags-filter-list-search .eps-search-input{background:var(--e-kit-library-tags-filter-list-search-background-color)}.e-kit-library__tags-filter-list-item{padding:.625rem 0;display:flex;align-items:center;font-weight:500}.e-kit-library__tags-filter-list-item input{margin-inline-end:.3125rem}.e-kit-library #eps-app-header-btn-refetch{padding:0}.e-kit-library-header-info-modal-container{margin-block-end:2.75rem}.e-kit-library__tooltip{padding:5px 12px;color:#fff;background-color:#26292c;font-size:10px}.e-kit-library__tooltip:before{border-block-end-color:#26292c}.e-kit-library__index-layout-container{flex-grow:1;overflow-y:auto;display:flex;flex-direction:column}.e-kit-library__index-layout-heading{padding:1.875rem 2.75rem;position:sticky;top:-1px;width:100%;z-index:2;background-color:var(--app-background-color);gap:1.5rem}.e-kit-library__index-layout-heading-search,.e-kit-library__index-layout-heading-sort{min-width:265px}.e-kit-library__index-layout-heading-search{flex:1}.e-kit-library__index-layout-main{padding-block-start:0;padding-block-end:1.5rem;overflow-y:hidden;height:auto;flex:1 0 auto;display:flex;flex-direction:column;justify-content:space-between}.e-kit-library__tags-filter{--e-kit-library-item-sidebar-header-title-color:#515962;--e-kit-library-item-sidebar-description-color:#515962;--e-kit-library-item-information-text-color:#515962}.eps-theme-dark .e-kit-library__tags-filter{--e-kit-library-item-sidebar-header-title-color:#babfc5;--e-kit-library-item-sidebar-description-color:#babfc5;--e-kit-library-item-information-text-color:#babfc5}.e-kit-library__item-sidebar{padding:1.5rem 1.875rem}.e-kit-library__item-sidebar-header{display:flex;align-items:center;justify-content:space-between}.e-kit-library__item-sidebar-header-title{color:var(--e-kit-library-item-sidebar-header-title-color);margin-block-end:0}.e-kit-library__item-sidebar-thumbnail{margin-block-start:1.5rem;box-shadow:0 4px 10px var(--color-box-shadow-color)}.e-kit-library__item-sidebar-description{margin-block-start:1.5rem;color:var(--e-kit-library-item-sidebar-description-color)}.e-kit-library__item-sidebar-collapse-tags{margin-block-start:2.75rem}.e-kit-library__item-sidebar-collapse-info{margin-block-start:1.875rem}.e-kit-library__item-sidebar-tags-container{gap:.625rem}.e-kit-library__item-information-text{font-size:.8125rem;color:var(--e-kit-library-item-information-text-color);margin-block-end:.3125rem}.e-kit-library{--e-kit-library-content-overview-group-title-color:#515962}.eps-theme-dark .e-kit-library{--e-kit-library-content-overview-group-title-color:#babfc5}.e-kit-library__content-overview-group-item{margin-block-end:2.75rem}.e-kit-library__content-overview-group-title{margin-block-end:1.875rem;color:var(--e-kit-library-content-overview-group-title-color)}.e-kit-library__preview-responsive-controls{width:auto}.e-kit-library__preview-responsive-controls-item{margin:0 .3125rem;color:#69727d;padding:.3125rem}.e-kit-library__preview-responsive-controls-item:hover{background:rgba(37,99,235,.1);border-radius:3px;transition:all .3s}.e-kit-library__preview-responsive-controls-item--active{color:#2563eb}.e-kit-library__preview-loader{position:absolute;top:0;right:0;z-index:0}.e-kit-library__preview-iframe{border:none;transition:all .3s;box-shadow:0 4px 10px var(--color-box-shadow-color)}.e-kit-library__preview-iframe-container{overflow-y:auto;position:relative;z-index:1}.e-app-collapse{--e-app-collapse-icon-color:#515962}.e-app-collapse-toggle{position:relative}.e-app-collapse-toggle--active{cursor:pointer}.e-app-collapse-toggle__icon{color:var(--e-app-collapse-icon-color);display:flex;align-items:center;justify-content:center;font-size:.875rem;position:absolute;top:50%;left:var(--e-app-collapse-toggle-icon-spacing);transform:translateY(-50%)}.e-app-collapse-toggle__icon:before{transition:all .2s linear}.e-app-collapse-content{display:none}.e-app-collapse--opened .e-app-collapse-toggle__icon:before{transform:rotate(-180deg)}.e-app-collapse--opened .e-app-collapse-content{display:block}[dir=rtl] .e-app-collapse-toggle__icon{left:auto;right:var(--e-app-collapse-toggle-icon-spacing)}.eps-theme-dark .e-app-collapse{--e-app-collapse-icon-color:#babfc5}.e-app-import-plugins{--e-app-import-plugins-selection-section-heading-color:#515962;padding-block-end:1.5rem}.e-app-import-plugins__section{margin-block-start:1.875rem}.e-app-import-plugins__section-heading{color:var(--e-app-import-plugins-selection-section-heading-color);margin-block-end:1rem}.e-app-import-plugins__versions-notice{margin-block-end:.75rem}.eps-theme-dark .e-app-import-plugins{--e-app-import-plugins-selection-section-heading-color:#babfc5}.eps-table{--eps-table-body-color:#3f444b;border-spacing:0 2px;table-layout:fixed;width:100%;border:1px solid var(--e-a-border-color);border-radius:.1875rem}.eps-table__checkboxes-column{width:1.875rem}.eps-table__checkbox{display:flex;flex-shrink:0}.eps-table__cell{padding:1rem}.eps-table__head .eps-table__cell{text-align:start}.eps-table__row{border-block-end:1px solid var(--e-a-border-color)}.eps-table__row:last-child{border-block-end:none}.eps-table__body .eps-table__cell:first-child{border-radius:.1875rem 0 0 .1875rem}.eps-table__body .eps-table__cell:last-child{border-radius:0 .1875rem .1875rem 0}.eps-table--selection .eps-table__cell:first-child{padding-inline-end:0}.eps-theme-dark .eps-table{--eps-table-body-color:#babfc5}[dir=rtl] .eps-table__body [dir=rtl] .eps-table__cell:first-child{border-radius:0 .1875rem .1875rem 0}[dir=rtl] .eps-table__body [dir=rtl] .eps-table__cell:last-child{border-radius:.1875rem 0 0 .1875rem}.e-app-import-plugins-pro-banner{--e-app-import-plugins-pro-banner-heading-color:#3f444b;--e-app-import-plugins-pro-banner-description-color:#515962;margin-block-end:1.875rem}.e-app-import-plugins-pro-banner__heading{color:var(--e-app-import-plugins-pro-banner-heading-color);margin-block-end:.625rem}.e-app-import-plugins-pro-banner__description{color:var(--e-app-import-plugins-pro-banner-description-color);margin-block-end:0}.eps-theme-dark .e-app-import-plugins-pro-banner{--e-app-import-plugins-pro-banner-heading-color:#9da5ae;--e-app-import-plugins-pro-banner-description-color:#babfc5}.e-app-export-plugins,.e-app-import-content{padding-block-end:1.25rem}.e-app-import-content__plugins-notice{margin-block-end:1.25rem}.e-app-import-plugins-activation__installing-plugins{padding:.625rem 0}.e-app-import-plugins-activation__plugin-name{margin-inline-start:.5rem}.e-app-import-plugins-activation__plugin-status-item{margin-block-end:.75rem}.e-app-import-export-plugins-table__cell-content{margin-block-end:0;text-transform:capitalize}.e-app-import-export-loader{--e-app-import-export-loader-color:#818a96;color:var(--e-app-import-export-loader-color);font-size:50px}.e-app-import-export-loader.eicon-loading{font-size:1.85rem}.e-app-import-export-loader--absolute-center{position:absolute;top:50%;right:50%;transform:translateX(-50%) translateY(-50%)}.eps-theme-dark .e-app-import-export-loader{--e-app-import-export-loader-color:#818a96}.e-app-import-export-message-banner{--e-app-import-export-message-banner-heading-color:#3f444b;--e-app-import-export-message-banner-description-color:#515962;margin-block-end:1.875rem}.e-app-import-export-message-banner__heading{color:var(--e-app-import-export-message-banner-heading-color);margin-block-end:.625rem}.e-app-import-export-message-banner__description{color:var(--e-app-import-export-message-banner-description-color);margin-block-end:0}.eps-theme-dark .e-app-import-export-message-banner{--e-app-import-export-message-banner-heading-color:#9da5ae;--e-app-import-export-message-banner-description-color:#babfc5}.e-app-import-connect-pro-notice,.e-app-import-failed-plugins-notice{margin-block-end:1.25rem}.e-onboarding{font-family:DM Sans,Roboto,sans-serif;color-scheme:light}.e-onboarding .eps-app__main{justify-content:center;overflow-y:auto}.e-onboarding__content{max-width:1135px;padding:2.75rem;margin:initial;overflow-y:initial}.e-onboarding__checkbox-label{display:flex;line-height:18px;margin-block-end:27px}.e-onboarding__checkbox-input{margin-inline-end:14px;width:16px;height:16px;border-color:#69727d;border-radius:2px}.e-onboarding__checkbox-input:checked{background-color:#525861}.e-onboarding__checkbox-input:checked:after{margin-block-end:15%;width:6px;height:9px;border-width:0 2px 2px 0}.e-onboarding__feature-list{margin-block-end:40px}.e-onboarding__text-input{font-size:14px;width:325px;padding:12px 16px;color:#69727d;border:1px solid #9ea5ad}.e-onboarding__text-input:focus-visible{outline:initial;border:1px solid #3a3f45}.e-onboarding__text-input::-moz-placeholder{color:#c2c7cc}.e-onboarding__text-input::placeholder{color:#c2c7cc}.e-onboarding__footnote{margin-block-start:24px;width:325px;text-align:center}.e-onboarding__footnote a{text-decoration:underline;color:#3a3f45}#e-app~#__wp-uploader-id-2 .media-modal{max-width:1024px;max-height:768px;margin:auto}.e-onboarding__page-content{margin-block-end:70px}.e-onboarding__page-content-start{max-width:675px;text-align:start;flex-basis:555px;align-self:start}.e-onboarding__page-content-end{min-width:440px;max-width:540px}.e-onboarding__page-content-end img{width:100%}.e-onboarding__page-content-section-title{font-family:"DM Serif Display",serif;font-size:36px;font-weight:700;color:#0c0d0e}.e-onboarding__page-content-section-text{font-size:18px;color:#3a3f45}.e-onboarding__header-logo .eps-app__logo{background-color:#0c0d0e;color:#fff;width:1.3rem;height:1.3rem;line-height:1.3rem;font-size:.48rem}.e-onboarding__header-logo .eps-app__logo:not(:last-child){margin-inline-end:7px}.e-onboarding__header-logo img{width:104px}.e-onboarding__header .eps-app__header-btn{display:flex;align-items:center;font-size:13px}.e-onboarding__header .eps-app__header-btn .eps-icon:not(:last-child){margin-inline-end:7px}.e-onboarding__header .eps-button{color:#0c0d0e}.e-onboarding__header .eps-button__go-pro-btn{background-color:#93003f;color:#fff;padding:4px 8px;border-radius:4px;font-weight:700;font-size:12px;transition:.5s}.e-onboarding__header .eps-button__go-pro-btn:hover{background:#c60055}.e-onboarding__go-pro{width:288px;font-size:12px;background-color:#fff}.e-onboarding__go-pro-title{font-size:18px;font-weight:700;color:#93003f}.e-onboarding__go-pro-cta{display:inline-block;color:#93003f;padding:9px;border:1px solid #93003f}.e-onboarding__go-pro-cta.e-onboarding__button{font-size:14px}.e-onboarding__go-pro-paragraph:not(:last-child){margin-block-end:20px}.e-onboarding__go-pro-already-have{text-decoration:underline}.e-onboarding__progress-bar{display:flex;justify-content:center;margin-block-end:125px}.e-onboarding__progress-bar-item{display:flex;align-items:center;color:#69727d;font-size:.75rem}.e-onboarding__progress-bar-item-icon{display:inline-block;font-family:"DM Serif Display",serif;text-align:center;width:1.1rem;height:1.1rem;line-height:1rem;font-size:.75rem;font-weight:700;border-radius:50%;border:1px solid #69727d;margin-inline-end:8px;flex-shrink:0}.e-onboarding__progress-bar-item:not(:last-child){margin-inline-end:22px}.e-onboarding__progress-bar-item:not(:last-child):after{font-family:eicons;margin-inline-start:22px;content:"\e89e"}.e-onboarding__progress-bar-item--active{color:#d004d4}.e-onboarding__progress-bar-item--active .e-onboarding__progress-bar-item-icon,.e-onboarding__progress-bar-item--completed .e-onboarding__progress-bar-item-icon{color:#fff;border-color:#d004d4;background-color:#d004d4}.e-onboarding__progress-bar-item--completed,.e-onboarding__progress-bar-item--skipped{cursor:pointer}.e-onboarding__progress-bar-item--skipped .e-onboarding__progress-bar-item-icon{color:#fff;background-color:#69727d}.e-onboarding__button{font-size:18px;cursor:pointer;transition:var(--e-a-transition-hover)}.e-onboarding__button-action{color:var(--e-a-btn-color);background-color:var(--e-a-btn-bg-primary);min-width:325px;padding:15px 30px;text-align:center}.e-onboarding__button-action:hover{background-color:var(--e-a-btn-bg-primary-hover)}.e-onboarding__button-skip{padding:8px 16px;color:#515962}.e-onboarding__button-skip:hover{background-color:#f9fafa}.e-onboarding__button--disabled{pointer-events:none;background-color:#d5d8dc;color:#9ea5ad}.e-onboarding__button--disabled:hover{cursor:progress}.e-onboarding__button--processing{pointer-events:none;filter:brightness(90%)}.e-onboarding__card{border:1px solid #3a3f45;border-radius:8px;padding:40px;cursor:pointer;flex-grow:1;display:flex;flex-direction:column;align-items:center}.e-onboarding__card-image,.e-onboarding__card-text{width:345px}.e-onboarding__card-image{margin-block-end:44px}.e-onboarding__card-text{font-size:20px;font-weight:700;text-align:center;color:#0c0d0e}.e-onboarding__card:hover{box-shadow:4px 4px 0 0 #000}.e-onboarding__card:active{box-shadow:none}.e-onboarding__checklist{padding-inline-start:0}.e-onboarding__checklist-item{display:flex;align-items:center;font-size:12px;margin-block-end:12px}.e-onboarding__checklist-item .eicon-check-circle{margin-inline-end:9px;font-size:16px;font-weight:600}.e-onboarding__notice{display:inline-block;padding:12px 14px;margin-block-end:16px;color:#3a3f45}.e-onboarding__notice--error{background-color:#fde8ec}.e-onboarding__notice--error i{font-size:16px;color:#b92136}.e-onboarding__notice--success{background-color:#ecf9f2}.e-onboarding__notice--success i{color:#117740}.e-onboarding__notice i{margin-inline-end:14px}.e-onboarding__notice-empty-spacer{height:61px}.e-onboarding__page-account .e-onboarding__checkbox-label{margin-block-start:50px}.e-onboarding__action-button-text{margin-inline-start:10px}.e-onboarding__site-name-input{margin-block-start:80px}.e-onboarding__page-siteLogo .e-app-upload-file__button{color:var(--e-a-color-primary-bold);border-color:var(--e-a-color-primary-bold)}.e-onboarding__page-siteLogo .e-app-upload-file__button:hover{background-color:#fae8ff}.e-onboarding__drop-zone{margin-block-start:3rem}.e-onboarding .eps-display-3{font-size:16px;margin-block-end:.5rem}.e-onboarding .e-app-upload-file__button{max-width:198px;margin:0 auto}.e-onboarding .e-app-drop-zone__secondary-text{font-size:14px}.e-onboarding__logo-container{position:relative;margin-block-start:3rem;min-height:120px;width:-moz-fit-content;width:fit-content;display:flex;align-items:center;justify-content:center;min-width:220px;border:1px solid #babfc5}.e-onboarding__logo-container img{height:auto;max-height:100%;width:auto}.e-onboarding__logo-remove{position:absolute;left:0;top:5px}.e-onboarding__logo-remove i{font-size:16px;width:15px}.e-onboarding__logo-remove:hover{cursor:pointer}.e-onboarding__is-uploading{visibility:hidden}.e-onboarding__page-goodToGo .e-onboarding__page-content-section-text,.e-onboarding__page-goodToGo .e-onboarding__page-content-section-title{text-align:center}.e-onboarding__cards-grid.e-onboarding__page-content{margin-block-start:48px;margin-block-end:48px}.e-onboarding__cards-grid .e-onboarding__card{max-width:555px}.e-onboarding__cards-grid .e-onboarding__card:not(:last-child){margin-inline-end:20px}.e-onboarding__good-to-go-footer{justify-content:end}.e-onboarding__upload-pro{flex-direction:row;justify-content:center;font-family:DM Sans,Roboto,sans-serif;text-align:center}.e-onboarding__upload-pro .eps-app__content{overflow-y:hidden;max-width:1113px;padding:30px}.e-onboarding__upload-pro-drop-zone{margin-block-end:24px}.e-onboarding__upload-pro-drop-zone h1{font-family:"Source Serif Pro",Roboto,sans-serif}.e-onboarding__upload-pro-drop-zone .e-app-drag-drop{padding:48px}.e-onboarding__upload-pro-drop-zone .e-app-drop-zone__secondary-text,.e-onboarding__upload-pro-drop-zone .e-app-drop-zone__text,.e-onboarding__upload-pro-drop-zone .eps-display-3{margin-block-end:12px}.e-onboarding__upload-pro-drop-zone .e-app-upload-file__button{background-color:#040080;color:#46f2b6;padding:14px 40px;border-color:#040080}.e-onboarding__upload-pro-get-file{font-size:12px;margin-block-start:24px}.e-onboarding__upload-pro-get-file a{text-decoration:underline}.e-onboarding__upload-pro .e-onboarding__notice{margin-block-end:0} \ No newline at end of file diff --git a/wp-content/plugins/elementor/assets/css/app.css b/wp-content/plugins/elementor/assets/css/app.css new file mode 100644 index 0000000..e227880 --- /dev/null +++ b/wp-content/plugins/elementor/assets/css/app.css @@ -0,0 +1,3840 @@ +/*! elementor - v3.20.0 - 26-03-2024 */ +@import "//fonts.googleapis.com/css2?family=Roboto:ital,wght@0,100;0,300;0,400;0,500;0,700;0,900;1,100;1,300;1,400;1,500;1,700;1,900&display=swap"; +@import "//fonts.googleapis.com/css2?family=DM%20Sans&display=swap"; +@import "//fonts.googleapis.com/css2?family=Source%20Serif%20Pro&display=swap"; +:root { + --color-box-shadow-color: rgba(0, 0, 0, 0.05); +} + +.eps-theme-dark { + --color-box-shadow-color: rgba(0, 0, 0, 0.1); +} + +.sr-only { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + margin: -1px; + overflow: hidden; + clip: rect(0, 0, 0, 0); + white-space: nowrap; + border: 0; +} + +@media screen and (min-width: 480px) { + .text-start-sm { + text-align: start; + } +} +@media screen and (min-width: 480px) { + .text-center-sm { + text-align: center; + } +} +@media screen and (min-width: 480px) { + .text-end-sm { + text-align: end; + } +} +@media screen and (min-width: 768px) { + .text-start-md { + text-align: start; + } +} +@media screen and (min-width: 768px) { + .text-center-md { + text-align: center; + } +} +@media screen and (min-width: 768px) { + .text-end-md { + text-align: end; + } +} +@media screen and (min-width: 1025px) { + .text-start-lg { + text-align: start; + } +} +@media screen and (min-width: 1025px) { + .text-center-lg { + text-align: center; + } +} +@media screen and (min-width: 1025px) { + .text-end-lg { + text-align: end; + } +} +@media screen and (min-width: 1440px) { + .text-start-xl { + text-align: start; + } +} +@media screen and (min-width: 1440px) { + .text-center-xl { + text-align: center; + } +} +@media screen and (min-width: 1440px) { + .text-end-xl { + text-align: end; + } +} +@media screen and (min-width: 1600px) { + .text-start-xxl { + text-align: start; + } +} +@media screen and (min-width: 1600px) { + .text-center-xxl { + text-align: center; + } +} +@media screen and (min-width: 1600px) { + .text-end-xxl { + text-align: end; + } +} +@keyframes eps-animation-pop { + from { + transform: scale(0.75); + opacity: 0; + } + to { + transform: scale(1); + opacity: 1; + } +} +/** +TODO: The molecules, atoms and such generics should be at top level, so the styles will be not depended on the order. +EG: '../../../app/assets/styles/generic'. +Auto-import is designed for CSS that not dependent on the loading order. + */ +.eps-button { + display: inline-flex; + --button-line-height: 16px; + --button-padding-y: 0.5em; + --button-padding-x: 1.5em; + --button-primary-background-color: #F3BAFD; + --button-primary-hover-background-color: #F5D0FE; + --button-primary-active-background-color: #F3BAFD; + --button-primary-color: #0C0D0E; + --button-secondary-background-color: #69727D; + --button-secondary-hover-background-color: #525961; + --button-secondary-active-background-color: #3a3f46; + --button-secondary-color: #ffffff; + --button-danger-background-color: #DC2626; + --button-danger-hover-background-color: #b21d1d; + --button-danger-active-background-color: #861616; + --button-danger-color: #ffffff; + --button-cta-background-color: #93003f; + --button-cta-hover-background-color: #600029; + --button-cta-active-background-color: #2d0013; + --button-cta-color: #ffffff; + --button-brand-background-color: #93003f; + --button-brand-hover-background-color: #600029; + --button-brand-active-background-color: #2d0013; + --button-brand-color: #ffffff; + --button-link-background-color: #515962; + --button-link-hover-background-color: #3a4046; + --button-link-active-background-color: #23262a; + --button-link-color: #ffffff; + --button-disabled-background-color: #D5D8DC; + --button-disabled-hover-background-color: #b9bec5; + --button-disabled-active-background-color: #9da4ae; + --button-disabled-color: #ffffff; + color: var(--button-background-color, currentColor); + font-size: var(--button-font-size, inherit); + font-weight: 500; + line-height: var(--button-line-height); + transition: var(--e-a-transition-hover); + cursor: pointer; +} +.eps-button:active { + --button-background-color: var(--button-active-background-color, transparent); +} +.eps-button:hover { + --button-background-color: var(--button-hover-background-color); +} +.eps-theme-dark .eps-button { + --button-primary-background-color: #F3BAFD; + --button-primary-color: #0C0D0E; + --button-primary-hover-background-color: #EB8EFB; + --button-primary-active-background-color: #F3BAFD; + --button-secondary-background-color: #BABFC5; + --button-secondary-color: #fff; + --button-secondary-hover-background-color: #9ea5ae; + --button-secondary-active-background-color: #838c96; + --button-cta-background-color: #93003f; + --button-cta-hover-background-color: #600029; + --button-cta-active-background-color: #2d0013; + --button-cta-color: #fff; + --button-brand-hover-background-color: #600029; + --button-brand-active-background-color: #2d0013; + --button-brand-color: #fff; + --button-brand-background-color: #93003f; + --button-link-background-color: #515962; + --button-link-hover-background-color: #3a4046; + --button-link-active-background-color: #23262a; + --button-link-color: #ffffff; + --button-disabled-background-color: #69727D; + --button-disabled-hover-background-color: #525961; + --button-disabled-active-background-color: #3a3f46; + --button-disabled-color: #fff; +} +.eps-button--contained { + color: var(--button-color); + padding: var(--button-padding-y) var(--button-padding-x); + background-color: var(--button-background-color, transparent); + border: 1px solid var(--button-background-color); +} +.eps-button--contained:hover { + color: var(--button-color); +} +.eps-button--outlined { + display: block; + padding: var(--button-padding-y) var(--button-padding-x); + border: 1px solid var(--button-background-color); +} +.eps-button--contained, .eps-button--outlined { + border-radius: 0.1875rem; +} +.eps-button--underlined { + text-decoration: underline; +} +.eps-button--sm { + --button-font-size: 0.75rem; + --button-line-height: 14px; +} +.eps-button--lg { + --button-font-size: 0.9375rem; + --button-line-height: 18px; +} +.eps-button--primary { + --button-color: var(--button-primary-color); + --button-background-color: var(--button-primary-background-color); + --button-hover-background-color: var(--button-primary-hover-background-color); + --button-active-background-color: var(--button-primary-active-background-color); +} +.eps-button--secondary { + --button-color: var(--button-secondary-color); + --button-background-color: var(--button-secondary-background-color); + --button-hover-background-color: var(--button-secondary-hover-background-color); + --button-active-background-color: var(--button-secondary-active-background-color); +} +.eps-button--danger { + --button-color: var(--button-danger-color); + --button-background-color: var(--button-danger-background-color); + --button-hover-background-color: var(--button-danger-hover-background-color); + --button-active-background-color: var(--button-danger-active-background-color); +} +.eps-button--cta { + --button-color: var(--button-brand-color); + --button-background-color: var(--button-cta-background-color); + --button-hover-background-color: var(--button-cta-hover-background-color); + --button-active-background-color: var(--button-cta-active-background-color); +} +.eps-button--brand { + --button-color: var(--button-cta-color); + --button-background-color: var(--button-cta-background-color); + --button-hover-background-color: var(--button-cta-hover-background-color); + --button-active-background-color: var(--button-cta-active-background-color); +} +.eps-button--link { + --button-color: var(--button-link-color); + --button-background-color: var(--button-link-background-color); + --button-hover-background-color: var(--button-link-hover-background-color); + --button-active-background-color: var(--button-link-active-background-color); +} +.eps-button--disabled, .eps-button[disabled] { + --button-color: var(--button-disabled-color); + --button-background-color: var(--button-disabled-background-color); + --button-hover-background-color: var(--button-disabled-hover-background-color); + --button-active-background-color: var(--button-disabled-active-background-color); + cursor: default; +} + +:root { + --app-background-color: #ffffff; + --app-box-shadow-color: rgba(var(--box-shadow-color, rgba(0, 0, 0, 0.15)), 0.2); + --app-header-color: #1f2124; + --app-logo-color: #ffffff; + --app-logo-background-color: #0C0D0E; + --app-title-color: #0C0D0E; + --app-header-buttons-separator-color: #9DA5AE; + --app-header-buttons-color: #515962; + --app-header-buttons-color-hover: #0C0D0E; + --app-lightbox-background-color: rgba(0, 0, 0, 0.8); +} + +.eps-theme-dark { + --app-background-color: #1f2124; + --app-box-shadow-color: rgba(var(--box-shadow-color, rgba(0, 0, 0, 0.15)), 0.2); + --app-header-color: #D5D8DC; + --app-logo-color: #0C0D0E; + --app-logo-background-color: #ffffff; + --app-title-color: #fff; + --app-header-buttons-separator-color: #818A96; + --app-header-buttons-color: #BABFC5; + --app-header-buttons-color-hover: #9DA5AE; + --app-lightbox-background-color: rgba(0, 0, 0, 0.8); +} + +:root { + --text-muted: #BABFC5; + --disabled: #D5D8DC; + --light: #ffffff; + --dark: #000000; + --cta: #93003f; + --brand: #93003f; + --accent: #F3BAFD; + --primary: #93003f; + --primary-bg: #FAE8FF; + --secondary: #515962; + --info: #2563EB; + --info-bg: #F0F7FF; + --danger: #DC2626; + --danger-bg: #FEF1F4; + --success: #0A875A; + --success-bg: #F2FDF5; + --warning: #F59E0B; + --warning-bg: #FFFBEB; + --body-color: #515962; + --body-bg: #ffffff; + --link-color: #515962; + --link-hover-color: #2e3338; + --hr-color: #E6E8EA; + --box-shadow-color: theme-colors(dark); + --display-1-color: #515962; + --display-2-color: #515962; + --display-3-color: #515962; + --display-4-color: #515962; + --h1-color: #515962; + --h2-color: #515962; + --h3-color: #515962; + --h4-color: #515962; + --h5-color: #515962; + --h6-color: #515962; + --text-base-color: #515962; + --text-xl-color: #515962; + --text-lg-color: #515962; + --text-sm-color: #515962; + --text-xs-color: #515962; + --text-xxs-color: #515962; + --gray-900: #0C0D0E; + --gray-800: #1f2124; + --gray-750: #2b2c31; + --gray-725: #333438; + --gray-700: #3f444b; + --gray-600: #515962; + --gray-500: #69727D; + --gray-400: #818A96; + --gray-300: #9DA5AE; + --gray-200: #BABFC5; + --gray-100: #D5D8DC; + --gray-75: #E6E8EA; + --gray-50: #F1F2F3; + --gray-25: #F9FAFA; +} + +.eps-theme-dark { + --text-muted: #818A96; + --disabled: #69727D; + --light: #fff; + --dark: #000; + --accent: #524CFF; + --cta: #93003f; + --brand: #93003f; + --success: #39b54a; + --success-bg: #032317; + --info: #0077CC; + --info-bg: #0A1A3D; + --warning: #fcb92c; + --warning-bg: #311808; + --danger: #F84343; + --danger-bg: #390A0A; + --body-color: #BABFC5; + --body-bg: #1f2124; + --link-color: #0077CC; + --link-hover-color: #2e3338; + --hr-color: #333438; + --box-shadow-color: rgba(0, 0, 0, 0.15); + --display-1-color: #BABFC5; + --display-2-color: #BABFC5; + --display-3-color: #BABFC5; + --display-4-color: #BABFC5; + --h1-color: #BABFC5; + --h2-color: #BABFC5; + --h3-color: #BABFC5; + --h4-color: #BABFC5; + --h5-color: #BABFC5; + --h6-color: #BABFC5; + --text-base-color: #BABFC5; + --text-xl-color: #BABFC5; + --text-lg-color: #BABFC5; + --text-sm-color: #BABFC5; + --text-xs-color: #BABFC5; + --text-xxs-color: #BABFC5; + --gray-900: #0C0D0E; + --gray-800: #1f2124; + --gray-750: #2b2c31; + --gray-725: #333438; + --gray-700: #3f444b; + --gray-600: #515962; + --gray-500: #69727D; + --gray-400: #818A96; + --gray-300: #9DA5AE; + --gray-200: #BABFC5; + --gray-100: #D5D8DC; + --gray-75: #E6E8EA; + --gray-50: #F1F2F3; + --gray-25: #F9FAFA; +} + +*, +*::before, +*::after { + box-sizing: border-box; +} + +html { + font-family: sans-serif; + line-height: 1.15; + -webkit-text-size-adjust: 100%; + -webkit-tap-highlight-color: rgba(0, 0, 0, 0); +} + +article, aside, figcaption, figure, footer, header, hgroup, main, nav, section { + display: block; +} + +body { + margin: 0; + font-family: Roboto, Arial, Helvetica, Verdana, sans-serif; + font-size: 0.875rem; + font-weight: 400; + line-height: 1.5; + color: var(--body-color); + background-color: var(--body-bg); +} + +[tabindex="-1"]:focus:not(:focus-visible) { + outline: 0 !important; +} + +h1, h2, h3, h4, h5, h6 { + font-size: 100%; + margin: 0; + padding: 0; + line-height: inherit; + font-weight: normal; +} + +p { + margin-block-start: 0; +} + +b, +strong { + font-weight: 700; +} + +small { + font-size: 80%; +} + +a { + --eps-link-color: $eps-link-color; + color: var(--eps-link-color); + background-color: transparent; +} +a, a:active, a:hover, a:focus { + text-decoration: none; +} +a:focus, a:hover { + --eps-link-color: $eps-link-hover-color; + text-decoration: none; +} + +a:not([href]) { + color: inherit; + text-decoration: none; +} +a:not([href]):hover { + color: inherit; + text-decoration: none; +} + +pre, +code, +kbd, +samp { + font-family: monospace; + font-size: 1em; +} + +figure { + margin: 0 0 0; +} + +img { + vertical-align: middle; + border-style: none; +} + +svg { + overflow: hidden; + vertical-align: middle; +} + +button { + border-radius: 0; +} + +button:focus { + outline: 1px dotted; + outline: 5px auto -webkit-focus-ring-color; +} + +input, +button, +select, +optgroup, +textarea { + margin: 0; + font-family: inherit; + font-size: inherit; + line-height: inherit; +} + +button, +input { + overflow: visible; +} + +button, +select { + text-transform: none; +} + +[role=button] { + cursor: pointer; +} + +select { + word-wrap: normal; +} + +button, +[type=button], +[type=reset], +[type=submit] { + -webkit-appearance: button; + -moz-appearance: button; + appearance: button; +} + +button:not(:disabled), +[type=button]:not(:disabled), +[type=reset]:not(:disabled), +[type=submit]:not(:disabled) { + cursor: pointer; +} + +input[type=radio], +input[type=checkbox] { + box-sizing: border-box; + padding: 0; +} + +textarea { + overflow: auto; + resize: vertical; +} + +[hidden] { + display: none !important; +} + +hr { + border: 0 none; + border-block-end: 1px solid var(--hr-color); +} + +.eps-display-1 { + font-size: 1.85rem; + color: var(--display-1-color); + margin-block-start: 0.5rem; + margin-block-end: 0.5rem; +} + +.eps-display-2 { + font-size: 1.85rem; + color: var(--display-2-color); + margin-block-start: 0.5rem; + margin-block-end: 0.5rem; +} + +.eps-display-3 { + font-size: 1.85rem; + color: var(--display-3-color); + margin-block-start: 0; + margin-block-end: 1.25rem; +} + +.eps-display-4 { + font-size: 1.85rem; + color: var(--display-4-color); + margin-block-start: 0.5rem; + margin-block-end: 0.5rem; +} + +h1, +.eps-h1 { + font-size: 1.625rem; + line-height: 1; + color: var(--h1-color); + margin-block-end: 1.25rem; + font-weight: 500; +} + +h2, +.eps-h2 { + font-size: 1.25rem; + line-height: 1.2; + color: var(--h2-color); + margin-block-start: 0; + margin-block-end: 1.25rem; + font-weight: 500; +} + +h3, +.eps-h3 { + font-size: 1rem; + line-height: 1.2; + color: var(--h3-color); + margin-block-start: 0; + margin-block-end: 0.5rem; + font-weight: 500; +} + +h4, +.eps-h4 { + font-size: 0.9375rem; + color: var(--h4-color); + margin-block-start: 0; + margin-block-end: 0.5rem; +} + +h5, +.eps-h5 { + font-size: 0.875rem; + color: var(--h5-color); + margin-block-start: 0; + margin-block-end: 0.5rem; +} + +h6, +.eps-h6 { + font-size: 0.875rem; + color: var(--h-6-color); + margin-block-start: 0; + margin-block-end: 0.5rem; + font-weight: 700; +} + +.eps-text-xxs { + font-size: 0.75rem; + line-height: 1.2; + color: var(--text-xxs-color); + font-weight: 400; +} + +.eps-text-xs { + font-size: 0.75rem; + line-height: 1.5; + color: var(--text-xs-color); + font-weight: 400; +} + +.eps-text { + font-size: 0.875rem; + line-height: 1.5; + color: var(--text-base-color); + font-weight: 400; +} + +.eps-text-sm { + font-size: 0.8125rem; + line-height: 1.5; + color: var(--text-sm-color); + font-weight: 400; +} + +.eps-text-lg { + font-size: 0.9375rem; + line-height: 1.5; + color: var(--text-lg-color); + font-weight: 400; +} + +.eps-text-xl { + font-size: 1rem; + line-height: 1.5; + color: var(--text-xl-color); + font-weight: 400; +} + +.video-wrapper { + position: relative; + padding-block-end: 56.25%; + height: 0; +} +.video-wrapper iframe { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; +} + +.eps-separator { + margin-block-end: 2.75rem; +} + +.eps-theme-dark { + --e-app-back-button-color: #BABFC5; +} + +.back-button, .e-app-back-button { + --button-background-color: var(--e-app-back-button-color, #69727D); + margin-block-end: 1.5rem; +} +.back-button .eps-icon, .e-app-back-button .eps-icon { + margin-inline-end: 0.3125rem; +} + +.eps-theme-dark { + --input-border-color: --hr-color; +} + +.eps-input { + border: 1px solid var(--hr-color); + border-radius: 0.1875rem; + background: transparent; + color: inherit; + height: 1.875rem; + padding: 0 0.3125rem; +} +.eps-input--block { + width: 100%; +} + +.eps-app { + display: flex; + height: 100vh; + flex-direction: column; + color: var(--body-color); + background-color: var(--app-background-color); + position: absolute; + border-radius: 0; + box-shadow: 2px 8px 23px 3px var(--color-box-shadow-color); + overflow: hidden; + font-family: Roboto, Arial, Helvetica, Verdana, sans-serif; + width: 100%; + max-width: 100%; +} +.eps-app__lightbox { + display: flex; + align-items: center; + justify-content: center; + position: fixed; + height: 100%; + width: 100%; + background-color: var(--app-lightbox-background-color); + z-index: 1040; + bottom: 0; + left: 0; +} +.eps-app__header { + flex-shrink: 0; + font-size: 0.9375rem; + border-block-end: var(--e-a-border); + position: relative; + z-index: 3; + height: 3.125rem; + padding-block: 0; + padding-inline: 1rem; +} +.eps-app__header-buttons { + display: flex; + align-items: center; + flex-direction: row-reverse; + font-size: 1.125rem; +} +.eps-app__header-btn { + padding-inline-start: 1rem; + font-size: 1.125rem; + line-height: 1.25rem; +} +.eps-app__header-btn:hover { + color: var(--app-header-buttons-color-hover); +} +.eps-app__header-btn:first-child { + border-inline-start: 1px solid var(--app-header-buttons-separator-color); +} +.eps-app__header-btn:not(:first-child) { + padding-inline-end: 1rem; +} +.eps-app__logo-title-wrapper { + display: flex; + align-items: center; +} +.eps-app__logo { + display: block; + width: 1.75rem; + height: 1.75rem; + line-height: 1.75rem; + text-align: center; + font-size: calc(0.4 * 1.75rem); + border-radius: 50%; + color: var(--app-logo-color); + background-color: var(--app-logo-background-color); +} +.eps-app__logo:not(:last-child) { + margin-inline-end: 0.625rem; +} +.eps-app__title { + color: var(--app-title-color); + font-size: 0.9375rem; + font-weight: 700; + text-transform: uppercase; + margin-block-end: 0; +} +.eps-app__main { + display: flex; + overflow: hidden; + flex-grow: 1; +} +.eps-app__sidebar { + background-color: var(--app-sidebar-background-color); + padding-block-start: 1.25rem; + width: 30%; + max-width: 17.1875rem; + border-inline-end: var(--e-a-border); + flex-grow: 0; + overflow-y: auto; + z-index: 4; +} +.eps-app__content { + flex-grow: 1; + position: relative; + padding: 2.75rem; + height: 100%; + overflow-y: auto; +} + +.e-app-upload-file__input { + display: none; +} + +.e-app-drop-zone { + --e-app-drop-zone-text-color: #69727D; + --e-app-drop-zone-secondary-text-color: #515962; +} +.e-app-drop-zone__icon { + margin-block-end: 2.75rem; + font-size: 60px; +} +.e-app-drop-zone__text { + color: var(--e-app-drop-zone-text-color); +} +.e-app-drop-zone__secondary-text { + color: var(--e-app-drop-zone-secondary-text-color); +} + +.eps-theme-dark .e-app-drop-zone { + --e-app-drop-zone-text-color: #BABFC5; + --e-app-drop-zone-secondary-text-color: #D5D8DC; +} + +:root { + --info-toggle-color: #9DA5AE; + --info-toggle-hover-color: #69727D; +} + +.eps-theme-dark { + --placeholder-filter: invert(0.8) sepia(1) saturate(0.2) hue-rotate(180deg) contrast(1.25) brightness(1.2); + --info-toggle-color: #818A96; + --info-toggle-hover-color: #BABFC5; +} + +.e-site-part .eps-card__image { + filter: var(--placeholder-filter, none); +} +.e-site-part__info-toggle { + color: var(--info-toggle-color); +} +.e-site-part__info-toggle:hover { + --info-toggle-color: var(--info-toggle-hover-color); +} + +.e-site-editor__header { + margin-block-end: 2.75rem; + border-block-end: 1px solid var(--hr-color); +} + +:root { + --e-elementor-loader-color: #ffffff; + --e-elementor-loader-wrapper-color: #F9FAFA; + --e-elementor-loader-box-color: #E6E8EA; +} + +.eps-theme-dark { + --e-elementor-loader-color: #1f2124; + --e-elementor-loader-wrapper-color: #2b2c31; + --e-elementor-loader-box-color: #3f444b; +} + +.elementor-loading { + background-color: var(--e-elementor-loader-color); + height: 100vh; +} + +.elementor-loader-wrapper { + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + width: 300px; + display: flex; + flex-direction: column; + align-items: center; + gap: 30px; +} + +.elementor-loader { + border-radius: 50%; + padding: 40px; + height: 150px; + width: 150px; + background-color: var(--e-elementor-loader-wrapper-color); + box-sizing: border-box; + box-shadow: 2px 2px 20px 4px rgba(0, 0, 0, 0.02); +} + +.elementor-loader-boxes { + height: 100%; + width: 100%; + position: relative; +} + +.elementor-loader-box { + position: absolute; + background-color: var(--e-elementor-loader-box-color); + animation: load 1.8s linear infinite; +} +.elementor-loader-box:nth-of-type(1) { + width: 20%; + height: 100%; + left: 0; + top: 0; +} +.elementor-loader-box:not(:nth-of-type(1)) { + right: 0; + height: 20%; + width: 60%; +} +.elementor-loader-box:nth-of-type(2) { + top: 0; + animation-delay: calc(1.8s / 4 * -1); +} +.elementor-loader-box:nth-of-type(3) { + top: 40%; + animation-delay: calc(1.8s / 4 * -2); +} +.elementor-loader-box:nth-of-type(4) { + bottom: 0; + animation-delay: calc(1.8s / 4 * -3); +} + +.elementor-loading-title { + color: #9DA5AE; + text-align: center; + text-transform: uppercase; + letter-spacing: 7px; + text-indent: 7px; + font-size: 10px; + width: 100%; +} + +@keyframes load { + 0% { + opacity: 0.3; + } + 50% { + opacity: 1; + } + 100% { + opacity: 0.3; + } +} +.eps-menu__title { + margin-block-start: 2.75rem; + margin-block-end: 1rem; +} + +.e-app-import { + --e-app-import-back-to-library-color: #69727D; + padding-block-end: 1.25rem; +} +.e-app-import__drop-zone { + margin-block-start: 1.25rem; +} +.e-app-import__back-to-library { + color: var(--e-app-import-back-to-library-color); + margin-block-end: 1.5rem; +} +.e-app-import__back-to-library > i { + margin-inline-end: 0.5rem; +} + +.eps-theme-dark .e-app-import { + --e-app-import-back-to-library-color: #BABFC5; +} + +.e-site-editor__promotion-overlay__link { + display: flex; + width: 100%; + height: 100%; + align-items: center; + justify-content: center; + flex-direction: column; + text-decoration: none; +} +.e-site-editor__promotion-overlay__icon { + font-size: 1.25rem; + color: #ffffff; + margin-block-end: 1rem; +} + +.e-app-import-export-wizard-step { + --e-app-import-export-wizard-step-icon-color: #818A96; + --e-app-import-export-wizard-step-text-color: #69727D; + --e-app-import-export-wizard-step-block-end-text-color: #69727D; + height: 100%; + position: relative; + text-align: center; +} +.e-app-import-export-wizard-step__media-container { + height: 140px; + margin: 5.5rem 0 2.75rem; +} +.e-app-import-export-wizard-step__icon { + color: var(--e-app-import-export-wizard-step-icon-color); + font-size: 50px; +} +.e-app-import-export-wizard-step__icon.eicon-loading { + font-size: 1.85rem; +} +.e-app-import-export-wizard-step__heading { + margin-block-end: 1.5rem; +} +.e-app-import-export-wizard-step__description, .e-app-import-export-wizard-step__info { + color: var(--e-app-import-export-wizard-step-text-color); +} +.e-app-import-export-wizard-step__info { + margin-block-start: 1.5rem; +} +.e-app-import-export-wizard-step__content { + text-align: initial; + margin-block-end: 1.25rem; +} +.e-app-import-export-wizard-step__notice { + display: block; + position: sticky; + top: 100%; /* Will prevent text overlapping when window height is too short. */ + color: var(--e-app-import-export-wizard-step-block-end-text-color); + font-style: italic; + margin-block-end: 0; +} + +.eps-theme-dark .e-app-import-export-wizard-step { + --e-app-import-export-wizard-step-icon-color: #818A96; + --e-app-import-export-wizard-step-text-color: #BABFC5; + --e-app-import-export-wizard-step-block-end-text-color: #BABFC5; +} + +.e-app-import-export-page-header { + --e-app-import-export-page-header-heading-color: #515962; + --e-app-import-export-page-header-description-color: #69727D; + margin-block-end: 2.75rem; +} +.e-app-import-export-page-header__content-wrapper { + max-width: 645px; +} +.e-app-import-export-page-header__heading { + color: var(--e-app-import-export-page-header-heading-color); +} +.e-app-import-export-page-header__description { + color: var(--e-app-import-export-page-header-description-color); + margin-block-start: 1.25rem; +} + +.eps-theme-dark .e-app-import-export-page-header { + --e-app-import-export-page-header-heading-color: #D5D8DC; + --e-app-import-export-page-header-description-color: #D5D8DC; +} + +.e-app-export-kit-content { + --e-app-export-kit-content-title-color: #3f444b; + --e-app-export-kit-content-description-color: #515962; + --e-app-export-kit-content-sm-notice-color: #BABFC5; +} +.e-app-export-kit-content__checkbox { + flex-shrink: 0; + margin-inline-end: 0.75rem; +} +.e-app-export-kit-content__title { + color: var(--e-app-export-kit-content-title-color); +} +.e-app-export-kit-content__description { + color: var(--e-app-export-kit-content-description-color); + margin-inline-end: 1.25rem; +} +.e-app-export-kit-content__notice { + margin-block-start: 1rem; +} +.e-app-export-kit-content__small-notice { + font-style: italic; + color: var(--e-app-export-kit-content-sm-notice-color); +} + +.eps-theme-dark .e-app-export-kit-content { + --e-app-export-kit-content-title-color: #D5D8DC; + --e-app-export-kit-content-description-color: #BABFC5; + --e-app-export-kit-content-sm-notice-color: #818A96; +} + +.e-app-wizard-footer { + --e-app-wizard-footer-border-color: #E6E8EA; + padding: 0.5rem; +} +.e-app-wizard-footer__separator { + border-block-start: 1px solid var(--e-app-wizard-footer-border-color); +} + +.eps-theme-dark .e-app-wizard-footer { + --e-app-wizard-footer-border-color: #333438; +} + +.e-app-export-templates-features__locked { + --e-app-export-templates-features-locked-color: #69727D; + color: var(--e-app-export-templates-features-locked-color); +} + +.eps-theme-dark .e-app-export-templates-features__locked { + --e-app-export-templates-features-locked-color: #9DA5AE; +} + +:root { + --color-box-shadow-color: rgba(0, 0, 0, 0.05); +} + +.eps-theme-dark { + --color-box-shadow-color: rgba(0, 0, 0, 0.1); +} + +:root { + --card-background-color-hover: #ffffff; + --card-border: 1px solid #D5D8DC; + --card-header-footer-border: 1px solid var(--e-a-border-color); + --card-header-footer-active-border: 2px solid #BABFC5; + --card-headline-color: #515962; + --card-figure-background-color: #BABFC5; + --card-image-overlay-background-color: rgba(0, 0, 0, 0.2); +} + +.eps-theme-dark { + --card-background-color-hover: #2b2c31; + --card-border: 1px solid #333438; + --card-header-footer-border: 1px solid #333438; + --card-header-footer-active-border: 1px solid #1f2124; + --card-headline-color: #D5D8DC; + --card-figure-background-color: #3f444b; + --card-image-overlay-background-color: rgba(63, 68, 75, 0.5); +} + +.eps-card { + border: var(--card-border); + border-radius: 0.1875rem; + transition: 0.3s; + font-size: 0.75rem; + /* + todo: TBD: Optionally remove headline styling in favor of a global atom depending on variation needs + */ +} +.eps-card__header { + padding: 0.625rem; + border-block-end: var(--card-header-footer-border); + min-height: 2.5rem; + display: flex; + align-items: center; +} +.eps-card__header--padding { + padding: var(--eps-card-header-padding); +} +.eps-card__headline { + color: var(--card-headline-color); + margin-block-end: 0; + font-weight: 500; + flex-grow: 1; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} +.eps-card__body { + padding: 0.625rem 0.625rem; +} +.eps-card__body--padding { + padding: var(--eps-card-body-padding); +} +.eps-card__figure { + background-color: var(--card-figure-background-color); + position: relative; + padding-block-end: var(--card-image-aspect-ratio, 95.6%); + overflow: hidden; + height: 0; +} +.eps-card__image { + width: 100%; + -o-object-fit: contain; + object-fit: contain; + -o-object-position: top; + object-position: top; + position: absolute; + top: 0; + left: 0; +} +.eps-card__image-overlay { + position: absolute; + top: 0; + background-color: var(--card-image-overlay-background-color); + z-index: 1; + width: 100%; + height: 100%; + opacity: 0; + transition: 0.3s; +} +.eps-card__image-overlay:hover { + opacity: 1; +} +.eps-card__footer { + padding: 0.625rem; + border-block-start: var(--card-header-footer-border); + font-size: 0.6875rem; +} +.eps-card__footer--padding { + padding: var(--eps-card-footer-padding); +} + +:root { + --menu-item-color: #515962; + --menu-item-color-hover: #3f444b; + --menu-item-color-active: #0C0D0E; + --menu-item-background-color-hover: #F9FAFA; + --menu-item-background-color-active: #E6E8EA; + --menu-item-action-button-color: #9DA5AE; +} + +.eps-theme-dark { + --menu-item-color: #D5D8DC; + --menu-item-color-hover: #BABFC5; + --menu-item-color-active: #9DA5AE; + --menu-item-background-color-hover: #2b2c31; + --menu-item-background-color-active: #333438; + --menu-item-action-button-color: #818A96; +} + +.eps-menu-item { + display: flex; + align-items: center; + position: relative; + transition: 0.3s; + --action-button-opacity: 0; +} +.eps-menu-item::before { + content: ""; + display: block; + position: absolute; + top: 0; + left: 0; + height: 100%; + width: var(--menu-item-pointer-width); + background-color: #0C0D0E; +} +.eps-menu-item:hover:not(.eps-menu-item--active) { + background-color: var(--menu-item-background-color-hover); + --action-button-opacity: 1; + --menu-item-color: var(--menu-item-color-hover); + --eps-link-color: var(--menu-item-color-hover); +} +.eps-menu-item--active { + background-color: var(--menu-item-background-color-active); + --menu-item-color: var(--menu-item-color-active); + --eps-link-color: var(--menu-item-color-active); +} +.eps-menu-item__link { + padding: 0.5rem 1.875rem; + min-height: 2.75rem; + font-size: 0.75rem; + line-height: 1.2; + flex-grow: 1; + display: flex; + align-items: center; + color: var(--menu-item-color); + --eps-link-color: var(--menu-item-color); +} +.eps-menu-item__link:not(:last-child) { + padding-inline-end: 0; +} +.eps-menu-item__link .eps-icon { + font-size: 1.125rem; + margin-inline-end: 0.75rem; +} +.eps-menu-item__action-button { + opacity: var(--action-button-opacity); + padding: 0.625rem; + transition: 0.3s; + margin-inline-end: 1.25rem; +} +.eps-menu-item--active { + --menu-item-pointer-width: 0.3125rem; +} + +.eps-grid-container { + display: flex; + flex-wrap: wrap; + width: 100%; +} +.eps-grid-container--no-wrap { + flex-wrap: nowrap; +} +.eps-grid-container--wrap-reverse { + flex-wrap: wrap-reverse; +} +.eps-grid-container--spacing { + --grid-row-gutter: calc(-1 * calc(var(--grid-spacing-gutter) * 0.625rem / 10)); + width: var(--grid-spacing-width); + margin: var(--grid-row-gutter); +} +.eps-grid-container--spacing > .eps-grid-item { + padding: var(--grid-spacing-gutter); +} +.eps-grid--direction-row { + flex-direction: row; +} +.eps-grid--direction-row-reverse { + flex-direction: row-reverse; +} +.eps-grid--direction-column { + flex-direction: column; +} +.eps-grid--direction-column-reverse { + flex-direction: column-reverse; +} +.eps-grid--justify-stretch { + justify-content: stretch; +} +.eps-grid--justify-start { + justify-content: flex-start; +} +.eps-grid--justify-center { + justify-content: center; +} +.eps-grid--justify-end { + justify-content: flex-end; +} +.eps-grid--justify-space-between { + justify-content: space-between; +} +.eps-grid--justify-space-around { + justify-content: space-around; +} +.eps-grid--justify-space-evenly { + justify-content: space-evenly; +} +.eps-grid--align-content-stretch { + align-content: stretch; +} +.eps-grid--align-content-start { + align-content: flex-start; +} +.eps-grid--align-content-center { + align-content: center; +} +.eps-grid--align-content-end { + align-content: flex-end; +} +.eps-grid--align-content-space-between { + align-content: space-between; +} +.eps-grid--align-items-start { + align-items: flex-start; +} +.eps-grid--align-items-center { + align-items: center; +} +.eps-grid--align-items-end { + align-items: flex-end; +} +.eps-grid--align-items-baseline { + align-items: baseline; +} +.eps-grid--align-items-stretch { + align-items: stretch; +} + +.eps-grid-item--zero-min-width { + min-width: 0; +} + +@media screen and (min-width: 480px) { + .eps-grid-item-sm { + flex-grow: 1; + max-width: 100%; + flex-basis: 0; + } +} +@media screen and (min-width: 768px) { + .eps-grid-item-md { + flex-grow: 1; + max-width: 100%; + flex-basis: 0; + } +} +@media screen and (min-width: 1025px) { + .eps-grid-item-lg { + flex-grow: 1; + max-width: 100%; + flex-basis: 0; + } +} +@media screen and (min-width: 1440px) { + .eps-grid-item-xl { + flex-grow: 1; + max-width: 100%; + flex-basis: 0; + } +} +@media screen and (min-width: 1600px) { + .eps-grid-item-xxl { + flex-grow: 1; + max-width: 100%; + flex-basis: 0; + } +} +.eps-grid-item-xs-1 { + flex-grow: 0; + max-width: calc(1 / 12 * 100%); + flex-basis: calc(1 / 12 * 100%); +} + +.eps-grid-item-xs-2 { + flex-grow: 0; + max-width: calc(2 / 12 * 100%); + flex-basis: calc(2 / 12 * 100%); +} + +.eps-grid-item-xs-3 { + flex-grow: 0; + max-width: calc(3 / 12 * 100%); + flex-basis: calc(3 / 12 * 100%); +} + +.eps-grid-item-xs-4 { + flex-grow: 0; + max-width: calc(4 / 12 * 100%); + flex-basis: calc(4 / 12 * 100%); +} + +.eps-grid-item-xs-5 { + flex-grow: 0; + max-width: calc(5 / 12 * 100%); + flex-basis: calc(5 / 12 * 100%); +} + +.eps-grid-item-xs-6 { + flex-grow: 0; + max-width: calc(6 / 12 * 100%); + flex-basis: calc(6 / 12 * 100%); +} + +.eps-grid-item-xs-7 { + flex-grow: 0; + max-width: calc(7 / 12 * 100%); + flex-basis: calc(7 / 12 * 100%); +} + +.eps-grid-item-xs-8 { + flex-grow: 0; + max-width: calc(8 / 12 * 100%); + flex-basis: calc(8 / 12 * 100%); +} + +.eps-grid-item-xs-9 { + flex-grow: 0; + max-width: calc(9 / 12 * 100%); + flex-basis: calc(9 / 12 * 100%); +} + +.eps-grid-item-xs-10 { + flex-grow: 0; + max-width: calc(10 / 12 * 100%); + flex-basis: calc(10 / 12 * 100%); +} + +.eps-grid-item-xs-11 { + flex-grow: 0; + max-width: calc(11 / 12 * 100%); + flex-basis: calc(11 / 12 * 100%); +} + +.eps-grid-item-xs-12 { + flex-grow: 0; + max-width: calc(12 / 12 * 100%); + flex-basis: calc(12 / 12 * 100%); +} + +@media screen and (min-width: 480px) { + .eps-grid-item-sm-1 { + flex-grow: 0; + max-width: calc(1 / 12 * 100%); + flex-basis: calc(1 / 12 * 100%); + } + .eps-grid-item-sm-2 { + flex-grow: 0; + max-width: calc(2 / 12 * 100%); + flex-basis: calc(2 / 12 * 100%); + } + .eps-grid-item-sm-3 { + flex-grow: 0; + max-width: calc(3 / 12 * 100%); + flex-basis: calc(3 / 12 * 100%); + } + .eps-grid-item-sm-4 { + flex-grow: 0; + max-width: calc(4 / 12 * 100%); + flex-basis: calc(4 / 12 * 100%); + } + .eps-grid-item-sm-5 { + flex-grow: 0; + max-width: calc(5 / 12 * 100%); + flex-basis: calc(5 / 12 * 100%); + } + .eps-grid-item-sm-6 { + flex-grow: 0; + max-width: calc(6 / 12 * 100%); + flex-basis: calc(6 / 12 * 100%); + } + .eps-grid-item-sm-7 { + flex-grow: 0; + max-width: calc(7 / 12 * 100%); + flex-basis: calc(7 / 12 * 100%); + } + .eps-grid-item-sm-8 { + flex-grow: 0; + max-width: calc(8 / 12 * 100%); + flex-basis: calc(8 / 12 * 100%); + } + .eps-grid-item-sm-9 { + flex-grow: 0; + max-width: calc(9 / 12 * 100%); + flex-basis: calc(9 / 12 * 100%); + } + .eps-grid-item-sm-10 { + flex-grow: 0; + max-width: calc(10 / 12 * 100%); + flex-basis: calc(10 / 12 * 100%); + } + .eps-grid-item-sm-11 { + flex-grow: 0; + max-width: calc(11 / 12 * 100%); + flex-basis: calc(11 / 12 * 100%); + } + .eps-grid-item-sm-12 { + flex-grow: 0; + max-width: calc(12 / 12 * 100%); + flex-basis: calc(12 / 12 * 100%); + } +} +@media screen and (min-width: 768px) { + .eps-grid-item-md-1 { + flex-grow: 0; + max-width: calc(1 / 12 * 100%); + flex-basis: calc(1 / 12 * 100%); + } + .eps-grid-item-md-2 { + flex-grow: 0; + max-width: calc(2 / 12 * 100%); + flex-basis: calc(2 / 12 * 100%); + } + .eps-grid-item-md-3 { + flex-grow: 0; + max-width: calc(3 / 12 * 100%); + flex-basis: calc(3 / 12 * 100%); + } + .eps-grid-item-md-4 { + flex-grow: 0; + max-width: calc(4 / 12 * 100%); + flex-basis: calc(4 / 12 * 100%); + } + .eps-grid-item-md-5 { + flex-grow: 0; + max-width: calc(5 / 12 * 100%); + flex-basis: calc(5 / 12 * 100%); + } + .eps-grid-item-md-6 { + flex-grow: 0; + max-width: calc(6 / 12 * 100%); + flex-basis: calc(6 / 12 * 100%); + } + .eps-grid-item-md-7 { + flex-grow: 0; + max-width: calc(7 / 12 * 100%); + flex-basis: calc(7 / 12 * 100%); + } + .eps-grid-item-md-8 { + flex-grow: 0; + max-width: calc(8 / 12 * 100%); + flex-basis: calc(8 / 12 * 100%); + } + .eps-grid-item-md-9 { + flex-grow: 0; + max-width: calc(9 / 12 * 100%); + flex-basis: calc(9 / 12 * 100%); + } + .eps-grid-item-md-10 { + flex-grow: 0; + max-width: calc(10 / 12 * 100%); + flex-basis: calc(10 / 12 * 100%); + } + .eps-grid-item-md-11 { + flex-grow: 0; + max-width: calc(11 / 12 * 100%); + flex-basis: calc(11 / 12 * 100%); + } + .eps-grid-item-md-12 { + flex-grow: 0; + max-width: calc(12 / 12 * 100%); + flex-basis: calc(12 / 12 * 100%); + } +} +@media screen and (min-width: 1025px) { + .eps-grid-item-lg-1 { + flex-grow: 0; + max-width: calc(1 / 12 * 100%); + flex-basis: calc(1 / 12 * 100%); + } + .eps-grid-item-lg-2 { + flex-grow: 0; + max-width: calc(2 / 12 * 100%); + flex-basis: calc(2 / 12 * 100%); + } + .eps-grid-item-lg-3 { + flex-grow: 0; + max-width: calc(3 / 12 * 100%); + flex-basis: calc(3 / 12 * 100%); + } + .eps-grid-item-lg-4 { + flex-grow: 0; + max-width: calc(4 / 12 * 100%); + flex-basis: calc(4 / 12 * 100%); + } + .eps-grid-item-lg-5 { + flex-grow: 0; + max-width: calc(5 / 12 * 100%); + flex-basis: calc(5 / 12 * 100%); + } + .eps-grid-item-lg-6 { + flex-grow: 0; + max-width: calc(6 / 12 * 100%); + flex-basis: calc(6 / 12 * 100%); + } + .eps-grid-item-lg-7 { + flex-grow: 0; + max-width: calc(7 / 12 * 100%); + flex-basis: calc(7 / 12 * 100%); + } + .eps-grid-item-lg-8 { + flex-grow: 0; + max-width: calc(8 / 12 * 100%); + flex-basis: calc(8 / 12 * 100%); + } + .eps-grid-item-lg-9 { + flex-grow: 0; + max-width: calc(9 / 12 * 100%); + flex-basis: calc(9 / 12 * 100%); + } + .eps-grid-item-lg-10 { + flex-grow: 0; + max-width: calc(10 / 12 * 100%); + flex-basis: calc(10 / 12 * 100%); + } + .eps-grid-item-lg-11 { + flex-grow: 0; + max-width: calc(11 / 12 * 100%); + flex-basis: calc(11 / 12 * 100%); + } + .eps-grid-item-lg-12 { + flex-grow: 0; + max-width: calc(12 / 12 * 100%); + flex-basis: calc(12 / 12 * 100%); + } +} +@media screen and (min-width: 1440px) { + .eps-grid-item-xl-1 { + flex-grow: 0; + max-width: calc(1 / 12 * 100%); + flex-basis: calc(1 / 12 * 100%); + } + .eps-grid-item-xl-2 { + flex-grow: 0; + max-width: calc(2 / 12 * 100%); + flex-basis: calc(2 / 12 * 100%); + } + .eps-grid-item-xl-3 { + flex-grow: 0; + max-width: calc(3 / 12 * 100%); + flex-basis: calc(3 / 12 * 100%); + } + .eps-grid-item-xl-4 { + flex-grow: 0; + max-width: calc(4 / 12 * 100%); + flex-basis: calc(4 / 12 * 100%); + } + .eps-grid-item-xl-5 { + flex-grow: 0; + max-width: calc(5 / 12 * 100%); + flex-basis: calc(5 / 12 * 100%); + } + .eps-grid-item-xl-6 { + flex-grow: 0; + max-width: calc(6 / 12 * 100%); + flex-basis: calc(6 / 12 * 100%); + } + .eps-grid-item-xl-7 { + flex-grow: 0; + max-width: calc(7 / 12 * 100%); + flex-basis: calc(7 / 12 * 100%); + } + .eps-grid-item-xl-8 { + flex-grow: 0; + max-width: calc(8 / 12 * 100%); + flex-basis: calc(8 / 12 * 100%); + } + .eps-grid-item-xl-9 { + flex-grow: 0; + max-width: calc(9 / 12 * 100%); + flex-basis: calc(9 / 12 * 100%); + } + .eps-grid-item-xl-10 { + flex-grow: 0; + max-width: calc(10 / 12 * 100%); + flex-basis: calc(10 / 12 * 100%); + } + .eps-grid-item-xl-11 { + flex-grow: 0; + max-width: calc(11 / 12 * 100%); + flex-basis: calc(11 / 12 * 100%); + } + .eps-grid-item-xl-12 { + flex-grow: 0; + max-width: calc(12 / 12 * 100%); + flex-basis: calc(12 / 12 * 100%); + } +} +@media screen and (min-width: 1600px) { + .eps-grid-item-xxl-1 { + flex-grow: 0; + max-width: calc(1 / 12 * 100%); + flex-basis: calc(1 / 12 * 100%); + } + .eps-grid-item-xxl-2 { + flex-grow: 0; + max-width: calc(2 / 12 * 100%); + flex-basis: calc(2 / 12 * 100%); + } + .eps-grid-item-xxl-3 { + flex-grow: 0; + max-width: calc(3 / 12 * 100%); + flex-basis: calc(3 / 12 * 100%); + } + .eps-grid-item-xxl-4 { + flex-grow: 0; + max-width: calc(4 / 12 * 100%); + flex-basis: calc(4 / 12 * 100%); + } + .eps-grid-item-xxl-5 { + flex-grow: 0; + max-width: calc(5 / 12 * 100%); + flex-basis: calc(5 / 12 * 100%); + } + .eps-grid-item-xxl-6 { + flex-grow: 0; + max-width: calc(6 / 12 * 100%); + flex-basis: calc(6 / 12 * 100%); + } + .eps-grid-item-xxl-7 { + flex-grow: 0; + max-width: calc(7 / 12 * 100%); + flex-basis: calc(7 / 12 * 100%); + } + .eps-grid-item-xxl-8 { + flex-grow: 0; + max-width: calc(8 / 12 * 100%); + flex-basis: calc(8 / 12 * 100%); + } + .eps-grid-item-xxl-9 { + flex-grow: 0; + max-width: calc(9 / 12 * 100%); + flex-basis: calc(9 / 12 * 100%); + } + .eps-grid-item-xxl-10 { + flex-grow: 0; + max-width: calc(10 / 12 * 100%); + flex-basis: calc(10 / 12 * 100%); + } + .eps-grid-item-xxl-11 { + flex-grow: 0; + max-width: calc(11 / 12 * 100%); + flex-basis: calc(11 / 12 * 100%); + } + .eps-grid-item-xxl-12 { + flex-grow: 0; + max-width: calc(12 / 12 * 100%); + flex-basis: calc(12 / 12 * 100%); + } +} +:root { + --menu-title-color: #515962; +} + +.eps-theme-dark { + --menu-title-color: #515962; +} + +.eps-menu ul { + list-style: none; + padding: 0; + margin: 0; +} +.eps-menu ul li { + display: flex; +} +.eps-menu__title { + padding: 0.5rem 1.875rem; + font-size: 0.6875rem; + line-height: 1.2; + text-transform: uppercase; + font-weight: normal; + color: var(--menu-title-color); +} + +:root { + --eps-modal-background-color: #ffffff; + --eps-modal-header-background-color: #2563EB; + --eps-tip-background-color: #F0F7FF; +} + +.eps-theme-dark { + --eps-modal-background-color: #0C0D0E; + --eps-modal-header-background-color: #0077CC; + --eps-tip-background-color: #0A1A3D; +} + +/** ---------------------------------------------------------------- + EPS Modal +---------------------------------------------------------------- */ +.eps-modal { + max-width: 43.75rem; + background: var(--eps-modal-background-color); + border-radius: 0.1875rem; + animation: eps-animation-pop 0.15s cubic-bezier(0.57, 0.53, 0.71, 1.47) forwards; +} +.eps-modal__overlay { + background: rgba(0, 0, 0, 0.5); + position: fixed; + display: flex; + top: 0; + left: 0; + width: 100%; + height: 100%; + align-items: center; + justify-content: center; + z-index: 1030; +} +.eps-modal__header { + font-size: 0.875rem; + background: var(--eps-modal-header-background-color); + height: 2.75rem; + padding: 0.625rem 1rem; + border-radius: 0.1875rem; +} +.eps-modal__header, .eps-modal__header .title { + color: #ffffff; +} +.eps-modal__icon { + margin-inline-end: 0.625rem; +} +.eps-modal__body { + padding: 1.875rem; +} +.eps-modal__tip, .eps-modal .eps-tip { + padding: 0.5rem; + padding-inline-start: 0.75rem; + border-inline-start: 3px solid #2563EB; + background-color: var(--eps-tip-background-color); +} +.eps-modal__tip:not(:last-child), .eps-modal .eps-tip:not(:last-child) { + margin-block-end: 1.875rem; +} +.eps-modal__tip:not(:first-child), .eps-modal .eps-tip:not(:first-child) { + margin-block-start: 1.875rem; +} +.eps-modal__section:not(:first-child) { + margin-block-start: 1.875rem; +} +.eps-modal__close-wrapper { + padding-inline-start: 1rem; + border-inline-start: solid 1px #ffffff; +} + +.eps-add-new-button { + display: inline-flex; + --eps-add-new-button-size: 1.5rem; + line-height: var(--eps-add-new-button-size); + cursor: pointer; +} +.eps-add-new-button .eps-icon { + background-color: #F3BAFD; + color: #0C0D0E; + width: var(--eps-add-new-button-size); + height: var(--eps-add-new-button-size); + border-radius: 100%; + font-size: calc(var(--eps-add-new-button-size) * 0.75); + text-align: center; + line-height: var(--eps-add-new-button-size); +} +.eps-add-new-button span:not(.sr-only) { + margin-inline-start: 0.625rem; + font-weight: 500; +} +.eps-add-new-button--sm { + --eps-add-new-button-size: 1rem; +} + +:root { + --select2-selection-background-color: #ffffff; + --select2-selection-color: #515962; + --select2-selection-border-color: #9DA5AE; + --select2-selection-opened-focused-border-color: #BABFC5; + --select2-single-selection-rendered-color: #515962; + --select2-default-single-selection-background-color: #ffffff; + --select2-default-single-selection-border-color: #9DA5AE; + --select2-default-multiple-selection-background-color: #ffffff; + --select2-default-multiple-selection-choice-background-color: #BABFC5; + --select2-default-multiple-selection-choice-color: #515962; + --select2-default-multiple-selection-choice-border-color: #BABFC5; + --select2-default-multiple-selection-choice-remove-color: #69727D; + --select2-default-multiple-selection-choice-remove-hover-color: #515962; + --select2-default-results-selected-option-background-color: #ffffff; + --select2-default-results-selected-option-color: #515962; + --select2-default-results-highlighted-option-background-color: #5897fb; + --select2-default-results-highlighted-option-color: #ffffff; + --select2-results-selected-option-background-color: #5897fb; + --select2-results-selected-option-color: #ffffff; + --select2-dropdown-background-color: #ffffff; + --select2-dropdown-border-color: #9DA5AE; +} + +.eps-theme-dark { + --select2-selection-background-color: #3f444b; + --select2-selection-color: #D5D8DC; + --select2-selection-border-color: #818A96; + --select2-selection-opened-focused-border-color: #9DA5AE; + --select2-single-selection-rendered-color: #D5D8DC; + --select2-default-single-selection-background-color: #3f444b; + --select2-default-single-selection-border-color: #69727D; + --select2-default-multiple-selection-background-color: #3f444b; + --select2-default-multiple-selection-choice-background-color: #69727D; + --select2-default-multiple-selection-choice-color: #D5D8DC; + --select2-default-multiple-selection-choice-border-color: #69727D; + --select2-default-multiple-selection-choice-remove-color: #BABFC5; + --select2-default-multiple-selection-choice-remove-hover-color: #D5D8DC; + --select2-default-results-selected-option-background-color: #3f444b; + --select2-default-results-selected-option-color: #D5D8DC; + --select2-default-results-highlighted-option-background-color: #69727D; + --select2-default-results-highlighted-option-color: #D5D8DC; + --select2-results-selected-option-background-color: #69727D; + --select2-results-selected-option-color: #D5D8DC; + --select2-dropdown-background-color: #3f444b; + --select2-dropdown-border-color: #818A96; +} + +.select2-container:not(.select2-container--open):not(.select2-container--focus) .select2-selection--single, +.select2-container:not(.select2-container--open):not(.select2-container--focus) .select2-selection--multiple { + background-color: var(--select2-selection-background-color); + color: var(--select2-selection-color); + border-color: var(--select2-selection-border-color); +} +.select2-container.select2-container--open .select2-selection--single, +.select2-container.select2-container--open .select2-selection--multiple, .select2-container.select2-container--focus .select2-selection--single, +.select2-container.select2-container--focus .select2-selection--multiple { + border-color: var(--select2-selection-opened-focused-border-color); +} +.select2-container.select2-container--default .select2-selection--single .select2-selection__rendered { + color: var(--select2-single-selection-rendered-color); +} +.select2-container--default .select2-selection--single { + background-color: var(--select2-default-single-selection-background-color); + border-color: var(--select2-default-single-selection-border-color); +} +.select2-container--default .select2-selection--multiple { + background-color: var(--select2-default-multiple-selection-background-color); +} +.select2-container--default .select2-selection--multiple .select2-selection__choice { + background-color: var(--select2-default-multiple-selection-choice-background-color); + color: var(--select2-default-multiple-selection-choice-color); + border-color: var(--select2-default-multiple-selection-choice-border-color); +} +.select2-container--default .select2-selection--multiple .select2-selection__choice__remove { + color: var(--select2-default-multiple-selection-choice-remove-color); +} +.select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover { + color: var(--select2-default-multiple-selection-choice-remove-hover-color); +} +.select2-container--default .select2-results__option[aria-selected] { + background-color: var(--select2-default-results-selected-option-background-color); + color: var(--select2-default-results-selected-option-color); +} +.select2-container--default .select2-results__option--highlighted[aria-selected] { + background-color: var(--select2-default-results-highlighted-option-background-color); + color: var(--select2-default-results-highlighted-option-color); +} +.select2-container .select2-results__option[aria-selected=true] { + background-color: var(--select2-results-selected-option-background-color); + color: var(--select2-results-selected-option-color); +} +.select2-container .select2-dropdown { + background-color: var(--select2-dropdown-background-color); + border-color: var(--select2-dropdown-border-color); +} + +.eps-notice { + --eps-box-notice-background-color: #F1F2F3; + padding: 0.625rem 1rem; +} +.eps-notice-semantic { + border-inline-start: 3px solid var(--eps-notice-semantic-color); + background-color: var(--eps-notice-semantic-bg); +} +.eps-notice-semantic .eps-notice__icon { + color: var(--eps-notice-semantic-color); + font-size: 1rem; + margin-inline-end: 0.75rem; +} +.eps-notice--warning { + --eps-notice-semantic-color: #F59E0B; + --eps-notice-semantic-bg: #FFFBEB; +} +.eps-notice--danger { + --eps-notice-semantic-color: #DC2626; + --eps-notice-semantic-bg: #FEF1F4; +} +.eps-notice--info { + --eps-notice-semantic-color: #2563EB; + --eps-notice-semantic-bg: #F0F7FF; +} +.eps-notice__text { + margin: 0; + padding: 0; +} +.eps-notice__button-container { + flex-shrink: 0; + margin-inline-start: 1.25rem; + width: auto; +} + +.eps-theme-dark .eps-notice { + --eps-box-notice-background-color: #515962; +} +.eps-theme-dark .eps-notice--warning { + --eps-notice-semantic-bg: #311808; +} +.eps-theme-dark .eps-notice--danger { + --eps-notice-semantic-bg: #390A0A; +} +.eps-theme-dark .eps-notice--info { + --eps-notice-semantic-bg: #0A1A3D; +} + +.eps-list { + --eps-list-item-separated-border-color: #BABFC5; + padding: 0; + margin: 0; + border-radius: 0.1875rem; + border: 1px solid var(--e-a-border-color); + list-style-type: none; +} +.eps-list--padding { + padding: var(--eps-list-padding); +} +.eps-list__item { + padding: 0; +} +.eps-list__item--padding { + padding: var(--eps-list-item-padding); +} +.eps-list--separated .eps-list__item:not(:last-child) { + border-block-end: 1px solid var(--eps-list-item-separated-border-color); +} + +.eps-theme-dark .eps-list { + --eps-list-item-separated-border-color: #3f444b; +} + +:root { + --popover-background-color: #ffffff; + --popover-item-color: #515962; + --popover-item-hover-color: #3f444b; + --popover-item-danger-hover-color: #DC2626; + --popover-item-background-color: #ffffff; + --popover-box-shadow-color: rgba(0, 0, 0, 0.15); + --popover-box-shadow-size: 0px 1px 20px; + --popover-arrow-color: #ffffff; +} + +.eps-theme-dark { + --popover-background-color: #1f2124; + --popover-item-color: #ffffff; + --popover-item-hover-color: #D5D8DC; + --popover-item-danger-hover-color: #F84343; + --popover-item-background-color: #1f2124; + --popover-box-shadow-color: rgba(0, 0, 0, 0.15); + --popover-box-shadow-size: 0px 1px 20px; + --popover-arrow-color: #1f2124; +} + +.eps-popover { + padding: 10px 0; + background-color: var(--popover-background-color); + box-shadow: var(--popover-box-shadow-size) var(--popover-box-shadow-color); + list-style: none; + display: flex; + flex-direction: column; + min-width: 120px; + border-radius: 0.1875rem; + position: absolute; + z-index: 1050; + margin-block-start: 9px; + transform: translateX(-50%); + left: 0.25rem; +} +.eps-popover__background { + position: fixed; + top: 0; + bottom: 0; + left: 0; + right: 0; + z-index: 1030; +} +.eps-popover__container { + position: relative; +} +.eps-popover::before { + content: ""; + display: block; + position: absolute; + width: 16px; + height: 9px; + margin: 0 0.1875rem 9px; + top: -9px; + left: 50%; + transform: translateX(-50%); + border-color: transparent; + border-style: solid; + border-width: 0 calc(16px / 2) 9px calc(16px / 2); + border-block-end-color: var(--popover-arrow-color); +} +.eps-popover__item { + padding: 0.3125rem 1rem; + background-color: var(--popover-item-background-color); + color: var(--popover-item-color); + font-size: 0.6875rem; + font-weight: 500; + line-height: 0.8125rem; + width: 100%; + align-items: center; + cursor: pointer; +} +.eps-popover__item:hover { + color: var(--popover-item-hover-color); +} +.eps-popover__item--danger:hover { + color: var(--popover-item-danger-hover-color); +} +.eps-popover__item .eps-icon { + font-size: inherit; + margin-inline-end: 0.3125rem; +} + +.eps-css-grid { + display: grid; + grid-template-columns: repeat(var(--eps-grid-columns, auto-fill), minmax(var(--eps-grid-col-min-width, 1fr), var(--eps-grid-col-max-width, 1fr))); + grid-gap: var(--eps-grid-spacing); +} + +.eps-box { + --eps-box-color: #1f2124; + --eps-box-input-color: #1f2124; + padding: 0; + border-radius: 0.1875rem; + color: var(--eps-box-color); +} +.eps-box--padding { + padding: var(--eps-box-padding); +} +.eps-box > input { + width: 100%; + outline: 0; + border: 0; + background-color: transparent; + color: var(--eps-box-input-color); +} + +.eps-theme-dark .eps-box { + --eps-box-color: #D5D8DC; + --eps-box-input-color: #D5D8DC; +} + +:root { + --checkbox-border-color: #9DA5AE; + --checkbox-hover-border-color: #8f98a2; + --checkbox-active-border-color: #abb2ba; + --checkbox-background-color: #ffffff; + --checkbox-checked-background-color: #515962; + --checkbox-checked-hover-background-color: #454c54; + --checkbox-checked-active-background-color: #5d6670; + --checkbox-checked-disabled-background-color: #D5D8DC; + --checkbox-indicator-color: #ffffff; + --checkbox-error-background-color: #DC2626; +} + +.eps-theme-dark { + --checkbox-background-color: transparent; +} + +.eps-checkbox { + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + border-radius: 0.1875rem; + width: 15px; + height: 15px; + outline: 0; + background-color: var(--checkbox-background-color); + display: inline-flex; + justify-content: center; + align-items: center; + border: 1px solid var(--checkbox-border-color); +} +.eps-checkbox::after { + display: inline-block; + margin-block-end: calc(0.25 / 2 * 100%); + content: " "; + width: 3px; + height: 6px; + transform: rotate(45deg); +} +.eps-checkbox:hover { + --checkbox-border-color: var(--checkbox-hover-border-color); +} +.eps-checkbox:active { + --checkbox-border-color: var(--checkbox-active-border-color); +} +.eps-checkbox:checked { + --checkbox-background-color: var(--checkbox-checked-background-color); + --checkbox-border-color: var(--checkbox-checked-background-color); +} +.eps-checkbox:checked::after { + border: solid #ffffff; + border-width: 0 1px 1px 0; +} +.eps-checkbox:checked:hover { + --checkbox-background-color: var(--checkbox-checked-hover-background-color); + --checkbox-border-color: var(--checkbox-checked-hover-background-color); +} +.eps-checkbox:checked:active { + --checkbox-background-color: var(--checkbox-checked-active-background-color); + --checkbox-border-color: var(--checkbox-checked-active-background-color); +} +.eps-checkbox:checked:disabled { + --checkbox-background-color: var(--checkbox-checked-disabled-background-color); + --checkbox-border-color: var(--checkbox-checked-disabled-background-color); +} +.eps-checkbox--rounded { + border-radius: 50%; +} +.eps-checkbox--indeterminate { + --checkbox-background-color: var(--checkbox-checked-background-color); + --checkbox-border-color: var(--checkbox-checked-background-color); +} +.eps-checkbox--indeterminate::after { + display: inline-block; + margin-block-end: 0; + content: " "; + width: 7px; + height: 0; + transform: rotate(0deg); + border-block-start: 1px solid #ffffff; +} +.eps-checkbox--error::before, .eps-checkbox--error::after, .eps-checkbox--error:checked::before, .eps-checkbox--error:checked::after { + display: inline-block; + margin-block-end: 0; + content: " "; + width: 7px; + height: 0; + border: solid #ffffff; + border-width: 1px 0 0 0; + position: absolute; +} +.eps-checkbox--error::before, .eps-checkbox--error:checked::before { + transform: rotate(45deg); +} +.eps-checkbox--error::after, .eps-checkbox--error:checked::after { + transform: rotate(-45deg); +} +.eps-checkbox--error, .eps-checkbox--error:hover, .eps-checkbox--error:checked, .eps-checkbox--error:checked:hover { + --checkbox-background-color: var(--checkbox-error-background-color); + --checkbox-border-color: var(--checkbox-error-background-color); +} + +:root { + --e-app-drag-drop-background-color: #ffffff; + --e-app-drag-drop-outline-color: #E6E8EA; +} + +.eps-theme-dark { + --e-app-drag-drop-background-color: #2b2c31; + --e-app-drag-drop-outline-color: #333438; +} + +.e-app-drag-drop { + background-color: var(--e-app-drag-drop-background-color); + outline: 2px dashed var(--e-app-drag-drop-outline-color); + outline-offset: -0.75rem; + margin-block-end: 1.5rem; + padding: 4.125rem; + text-align: center; +} +.e-app-drag-drop--drag-over { + outline-color: #2563EB; +} + +.eps-dialog { + border-radius: 3px; + width: 375px; +} +.eps-dialog__close-button { + position: absolute; + top: -2.75rem; + right: -2.75rem; + margin-block-start: 0.625rem; + margin-inline-end: 0.625rem; + z-index: 1040; + font-size: 1.25rem; + color: #ffffff; +} +.eps-dialog__content { + padding: 1.5rem 1.875rem 1rem; + font-size: 0.75rem; +} +.eps-dialog__title, .eps-dialog__text { + text-align: center; +} +.eps-dialog__buttons { + display: flex; +} +.eps-dialog__button { + flex: 1; + border-block-start: 1px solid var(--hr-color); + line-height: 2.75rem; + text-align: center; + justify-content: center; +} +.eps-dialog__button:last-child:not(:first-child) { + border-inline-start: 1px solid var(--hr-color); +} + +.e-app__popover { + display: none; + position: absolute; + box-shadow: 0 2px 15px rgba(0, 0, 0, 0.3); + border-radius: 6px; + padding: 20px; + width: -moz-fit-content; + width: fit-content; + z-index: 999; + background-color: var(--e-a-bg-default); +} +.e-app__popover:before { + content: ""; + position: absolute; + top: -16px; + right: var(--popover-arrow-offset-end, 22px); + border: 8px solid transparent; + border-block-end-color: #fff; +} + +.eps-inline-link { + color: var(--eps-inline-link-color); + background-color: initial; + border: 0; + padding: 0; +} +.eps-inline-link--color-primary { + --eps-inline-link-color: #0A875A; +} +.eps-inline-link--color-secondary { + --eps-inline-link-color: #818A96; +} +.eps-inline-link--color-danger { + --eps-inline-link-color: #DC2626; +} +.eps-inline-link--color-cta { + --eps-inline-link-color: #93003f; +} +.eps-inline-link--color-link { + --eps-inline-link-color: #515962; +} +.eps-inline-link--color-disabled { + --eps-inline-link-color: #D5D8DC; +} +.eps-inline-link--underline-hover:hover, .eps-inline-link--underline-always, .eps-inline-link--underline-always:hover { + text-decoration: underline; +} +.eps-inline-link--italic { + font-style: italic; +} +.eps-inline-link, .eps-inline-link:focus { + outline: none; +} + +.eps-text-field { + --eps-text-field-color: #515962; + --eps-text-field-background-color: transparent; + --eps-text-field-placeholder-color: #69727D; + --eps-text-field-outlined-border-color: #9DA5AE; + --eps-text-field-outlined-focus-border-color: #515962; + width: 100%; + color: var(--eps-text-field-color); + background-color: var(--eps-text-field-background-color); + border: 0; + margin-block-end: 5px; + outline: none; + font-family: Roboto, Arial, Helvetica, Verdana, sans-serif; + font-size: 0.875rem; + font-weight: 400; + line-height: 1.5; +} +.eps-text-field--outlined { + border-radius: 0.1875rem; + border: 1px solid var(--eps-text-field-outlined-border-color); + padding: 0.625rem; +} +.eps-text-field--outlined:focus { + border-color: var(--eps-text-field-outlined-focus-border-color); +} +.eps-text-field::-moz-placeholder { + color: var(--eps-text-field-placeholder-color); + font-family: Roboto, Arial, Helvetica, Verdana, sans-serif; + font-size: 0.875rem; + font-weight: 400; + line-height: 1.5; +} +.eps-text-field::placeholder { + color: var(--eps-text-field-placeholder-color); + font-family: Roboto, Arial, Helvetica, Verdana, sans-serif; + font-size: 0.875rem; + font-weight: 400; + line-height: 1.5; +} + +.eps-theme-dark .eps-text-field { + --eps-text-field-color: #BABFC5; + --eps-text-field-background-color: transparent; + --eps-text-field-placeholder-color: #9DA5AE; + --eps-text-field-outlined-border-color: #3f444b; + --eps-text-field-outlined-focus-border-color: #9DA5AE; +} +.eps-theme-dark--outlined { + border-color: var(--eps-text-field-outlined-border-color); +} +.eps-theme-dark--outlined:focus { + border-color: var(--eps-text-field-outlined-focus-border-color); +} + +.e-app-import-export-content-layout { + display: flex; + justify-content: center; + height: 100%; +} +.e-app-import-export-content-layout__container { + flex-basis: 1075px; +} + +.e-app-export-complete__kit-content-title { + margin: 2.75rem 0 0.625rem; +} + +.e-app-export-kit-content { + --e-app-export-kit-content-title-color: #3f444b; + --e-app-export-kit-content-description-color: #515962; + --e-app-export-kit-content-sm-notice-color: #BABFC5; +} +.e-app-export-kit-content__checkbox { + flex-shrink: 0; + margin-inline-end: 0.75rem; +} +.e-app-export-kit-content__title { + color: var(--e-app-export-kit-content-title-color); +} +.e-app-export-kit-content__description { + color: var(--e-app-export-kit-content-description-color); + margin-inline-end: 1.25rem; +} +.e-app-export-kit-content__notice { + margin-block-start: 1rem; +} +.e-app-export-kit-content__small-notice { + font-style: italic; + color: var(--e-app-export-kit-content-sm-notice-color); +} + +.eps-theme-dark .e-app-export-kit-content { + --e-app-export-kit-content-title-color: #D5D8DC; + --e-app-export-kit-content-description-color: #BABFC5; + --e-app-export-kit-content-sm-notice-color: #818A96; +} + +.e-app-import-export-kit-data { + --e-app-import-export-kit-data-site-area-color: #3f444b; + --e-app-import-export-kit-data-included-color: #69727D; +} +.e-app-import-export-kit-data__site-area, .e-app-import-export-kit-data__included { + margin-block-end: 0; +} +.e-app-import-export-kit-data__site-area { + color: var(--e-app-import-export-kit-data-site-area-color); + font-weight: bold; +} +.e-app-import-export-kit-data__included { + color: var(--e-app-import-export-kit-data-included-color); +} + +.eps-theme-dark .e-app-import-export-kit-data { + --e-app-import-export-kit-data-site-area-color: #BABFC5; + --e-app-import-export-kit-data-included-color: #9DA5AE; +} + +.e-app-import-resolver { + --e-app-import-resolver-panel-header-background-color: #ffffff; + --e-app-import-resolver-panel-body-background-color: rgba(255, 255, 255, 0.5); + --e-app-import-resolver-conflicts-asset-border-color: #818A96; + --e-app-import-resolver-conflicts-asset-inactive-color: #69727D; + padding-block-end: 1.25rem; +} +.e-app-import-resolver__notice { + margin-block-end: 1.25rem; +} +.e-app-import-resolver__panel, .e-app-import-resolver__panel:hover { + background-color: initial; +} +.e-app-import-resolver__panel-header { + background-color: var(--e-app-import-resolver-panel-header-background-color); +} +.e-app-import-resolver__panel-body { + background-color: var(--e-app-import-resolver-panel-body-background-color); +} +.e-app-import-resolver-conflicts__container { + box-shadow: 0 2px 3px 1px var(--color-box-shadow-color); +} +.e-app-import-resolver-conflicts__checkbox { + flex-shrink: 0; + margin-inline-end: 0.75rem; +} +.e-app-import-resolver-conflicts__title { + line-height: 1; +} +.e-app-import-resolver-conflicts__asset:not(:first-child) { + border-inline-start: 2px solid var(--e-app-import-resolver-conflicts-asset-border-color); + padding-inline-start: 1rem; + margin-inline-start: 1rem; +} +.e-app-import-resolver-conflicts__asset:not(.active) { + color: var(--e-app-import-resolver-conflicts-asset-inactive-color); +} +.e-app-import-resolver-conflicts__edit-template { + margin-inline-start: 0.3125rem; +} + +.eps-theme-dark .e-app-import-resolver { + --e-app-import-resolver-panel-header-background-color: #69727D; + --e-app-import-resolver-panel-body-background-color: rgba(0, 0, 0, 0.05); + --e-app-import-resolver-conflicts-asset-border-color: #818A96; + --e-app-import-resolver-conflicts-asset-inactive-color: #9DA5AE; +} + +.eps-panel { + --eps-panel-header-background-color: transparent; + --eps-panel-body-background-color: transparent; +} +.eps-panel, .eps-panel:hover { + background-color: initial; +} +.eps-panel__header { + background-color: var(--eps-panel-header-background-color); + border-radius: 0.1875rem; +} +.eps-panel__body { + background-color: var(--eps-panel-body-background-color); + border-radius: 0 0 0.1875rem 0.1875rem; +} + +.eps-theme-dark .eps-panel { + --eps-panel-header-background-color: transparent; + --eps-panel-body-background-color: transparent; +} + +.e-app-export-kit { + padding-block-end: 1.25rem; +} +.e-app-export-kit-information { + margin-block-start: 1.25rem; +} +.e-app-export-kit-information__field-header { + margin-block-end: 0.625rem; +} +.e-app-export-kit-information__label { + margin: 0; +} +.e-app-export-kit-information__info-icon { + margin-inline-start: 0.625rem; +} +.e-app-export-kit-info-modal__icon { + padding-inline-start: 0.625rem; +} +.e-app-export-kit-info-modal__heading { + margin-block-end: 1.25rem; +} + +.e-app-import-export-info-modal__section:not(:first-child) { + margin-block-start: 1.875rem; +} +.e-app-import-export-info-modal__heading { + margin-block-end: 1.25rem; +} + +:root { + --eps-badge-background-color: #ffffff; +} + +.eps-theme-dark { + --eps-badge-background-color: #515962; +} + +.eps-badge { + display: inline-block; + background: var(--eps-badge-background-color); + padding: 0 0.5rem; + line-height: 1.8; + box-shadow: 0 3px 6px var(--color-box-shadow-color); + border-radius: 4px; + font-size: 0.75rem; +} +.eps-badge--sm { + font-size: 0.625rem; + border-radius: 3px; + padding: 0 0.3125rem; + line-height: 1.5; +} + +.eps-collapse__title { + cursor: pointer; + padding: 0.3125rem 0; + display: flex; + align-items: center; + justify-content: space-between; + width: 100%; + background: transparent; + border: none; + color: inherit; +} +.eps-collapse__title:focus { + outline: none; +} +.eps-collapse__icon { + transition: all 150ms; + transform: rotate(0deg); +} +.eps-collapse__content { + margin-block-start: 0.625rem; + display: none; +} +.eps-collapse[data-open] .eps-collapse__content { + display: block; +} +.eps-collapse[data-open] .eps-collapse__icon { + transform: rotate(90deg); +} + +.e-kit-library-promotion { + --e-kit-library-promotion-color: tints(600); +} + +.eps-theme-dark .e-kit-library-promotion { + --e-kit-library-promotion-color: dark-tints(400); +} + +.e-kit-library-promotion { + width: 100%; + text-align: center; + margin-block-start: 1.875rem; + color: var(--e-kit-library-promotion-color); +} + +.e-kit-library__error-screen { + margin-block-start: 2.75rem; +} +.e-kit-library__error-screen-title { + margin-block-start: 2.75rem; + margin-block-end: 0; +} +.e-kit-library__error-screen-description { + margin-block-start: 1.5rem; + color: #69727D; + text-align: center; + max-width: 520px; +} + +.e-kit-library__kit-favorite-actions { + padding: 0.3125rem; + transition: 0.3s all; + border-radius: 4px; +} +.e-kit-library__kit-favorite-actions--active { + color: #DC2626; +} +.e-kit-library__kit-favorite-actions--loading { + opacity: 50%; + cursor: default; +} +.e-kit-library__kit-favorite-actions:hover { + background-color: rgba(220, 38, 38, 0.1); +} + +.e-kit-library__filter-indication { + margin-block-start: 1.5rem; + display: flex; + align-items: center; +} +.e-kit-library__filter-indication-text { + margin-block-end: 0; + display: flex; + align-items: center; +} +.e-kit-library__filter-indication-badge { + margin-inline-start: 0.3125rem; + display: flex; + align-items: center; +} +.e-kit-library__filter-indication-badge-remove { + margin-inline-start: 0.3125rem; + font-size: 0.875rem; +} +.e-kit-library__filter-indication-button { + margin-inline-start: 1.5rem; +} + +#eps-app-header-btn-apply, +#eps-app-header-btn-promotion, +#eps-app-header-btn-connect { + margin-inline-start: 0.625rem; + margin-inline-end: 0.625rem; +} + +.e-kit-library__apply-button { + display: flex; + align-items: center; + justify-content: center; + gap: 0.3125rem; +} + +.e-kit-library__kit-item { + --e-kit-library-kit-item-overlay-promotion-button-background-color: #D5D8DC; +} + +.eps-theme-dark .e-kit-library__kit-item { + --e-kit-library-kit-item-overlay-promotion-button-background-color: #515962; +} + +.e-kit-library__kit-item-overlay { + height: 100%; +} +.e-kit-library__kit-item-overlay > *:first-child { + flex: 1; +} +.e-kit-library__kit-item-overlay-overview-button { + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + color: white; + height: 100%; + width: 100%; +} +.e-kit-library__kit-item-overlay-overview-button > i { + font-size: 2rem; + margin-block-end: 5px; +} +.e-kit-library__kit-item-overlay-overview-button > span { + font-size: 0.9rem; +} +.e-kit-library__kit-item-overlay-promotion-button { + display: flex; + width: 100%; + background: white; + align-items: center; + justify-content: center; + padding: 10px; + font-size: 13px; + color: #93003f; + background: var(--e-kit-library-kit-item-overlay-promotion-button-background-color); +} +.e-kit-library__kit-item-overlay-promotion-button > * { + margin: 0 3px; +} +.e-kit-library__kit-item-subscription-plan-badge { + position: absolute; + top: 0; + right: 0; + margin: 0.3125rem; + background-color: var(--e-a-color-brand); + color: #ffffff; + text-transform: uppercase; +} + +:root { + --e-kit-library-header-back-border: 1px solid var(--e-a-border-color); + --e-kit-library-header-back-color: #69727D; +} + +.eps-theme-dark { + --e-kit-library-header-back-border: 1px solid #818A96; + --e-kit-library-header-back-color: #BABFC5; +} + +.e-kit-library__header-back { + color: var(--e-kit-library-header-back-color); + padding-inline-end: 1.25rem; + padding-inline-start: 0.3125rem; + display: inline-flex; + justify-content: center; + align-items: center; + height: 100%; + border-inline-end: var(--e-kit-library-header-back-border); +} +.e-kit-library__header-back-container { + flex: 1; + height: 100%; +} +.e-kit-library__header-back .eps-icon { + transform: rotate(0deg); +} + +.e-kit-library__page-loader { + width: 100%; + height: 100%; + display: grid; + place-items: center; + font-size: 1.85rem; + color: #69727D; +} + +.eps-search-input { + --eps-search-input-background-color: #D5D8DC; + --eps-search-input-background-color-focus: #ffffff; + --eps-search-input-color: #3f444b; + --eps-search-input-placeholder-color: #69727D; +} + +.eps-theme-dark .eps-search-input { + --eps-search-input-background-color: #515962; + --eps-search-input-background-color-focus: #69727D; + --eps-search-input-color: #BABFC5; + --eps-search-input-placeholder-color: #BABFC5; +} + +.eps-search-input { + width: 100%; + font-size: 0.9375rem; + padding: 0.625rem 2.75rem; + border: none; + background: var(--eps-search-input-background-color); + outline: none; + color: var(--eps-search-input-color); + line-height: 1; + height: 2.75rem; +} +.eps-search-input--sm { + font-size: 0.8125rem; + padding: 0.5rem 1.875rem; +} +.eps-search-input:focus { + background: var(--eps-search-input-background-color-focus); +} +.eps-search-input::-moz-placeholder { + color: var(--eps-search-input-placeholder-color); + font-style: italic; +} +.eps-search-input::placeholder { + color: var(--eps-search-input-placeholder-color); + font-style: italic; +} +.eps-search-input__container { + position: relative; +} +.eps-search-input__icon { + font-size: 1.25rem; + padding: 0.625rem; + color: #69727D; + position: absolute; + top: 0; + left: 0; + height: 100%; + display: flex; + align-items: center; + justify-content: center; +} +.eps-search-input__icon--sm { + font-size: 0.75rem; +} +.eps-search-input__clear-icon { + font-size: 0.875rem; + padding: 0.625rem; + color: #69727D; + position: absolute; + top: 0; + right: 0; + height: 100%; + display: flex; + align-items: center; + justify-content: center; +} +.eps-search-input__clear-icon--sm { + font-size: 0.6875rem; +} + +:root { + --eps-sort-select-select-background-color: #D5D8DC; + --eps-sort-select-select-color: #3f444b; + --eps-sort-select-button-background-color: #D5D8DC; + --eps-sort-select-button-border: 1px solid var(--e-a-border-color); +} + +.eps-theme-dark { + --eps-sort-select-select-background-color: #515962; + --eps-sort-select-select-color: #BABFC5; + --eps-sort-select-button-background-color: #515962; + --eps-sort-select-button-border: 1px solid #1f2124; +} + +.eps-sort-select { + width: 100%; + font-size: 0.9375rem; + display: flex; +} +.eps-sort-select__select-wrapper { + flex: 1; + position: relative; +} +.eps-sort-select__select-wrapper::after { + content: "\e8ad"; + font-family: eicons; + position: absolute; + right: 0.625rem; + top: 0; + bottom: 0; + color: #69727D; + display: flex; + align-items: center; + justify-content: center; + pointer-events: none; +} +.eps-sort-select__select { + width: 100%; + padding: 0.625rem 0.625rem; + border: none; + background: var(--eps-sort-select-select-background-color); + outline: none; + color: var(--eps-sort-select-select-color); + line-height: 1; + cursor: pointer; + height: 2.75rem; + -moz-appearance: none; + appearance: none; + -webkit-appearance: none; + border-radius: 0; +} +.eps-sort-select__button { + padding: 0.75rem 0.75rem; + background: var(--eps-sort-select-button-background-color); + border-inline-start: var(--eps-sort-select-button-border); + line-height: 1; + color: #69727D; +} + +.e-kit-library__tags-filter { + --e-kit-library-tags-filter-list-search-background-color: #ffffff; +} + +.eps-theme-dark .e-kit-library__tags-filter { + --e-kit-library-tags-filter-list-search-background-color: #515962; +} + +.e-kit-library__tags-filter { + margin-block-start: 2.75rem; +} +.e-kit-library__tags-filter-list { + margin-block-end: 2.75rem; +} +.e-kit-library__tags-filter-list .eps-collapse__title { + padding-inline-end: 1.875rem; + padding-inline-start: 1.875rem; + text-transform: uppercase; +} +.e-kit-library__tags-filter-list .eps-collapse__content { + margin: 0.3125rem 1.875rem; +} +.e-kit-library__tags-filter-list-container { + max-height: 250px; + overflow: auto; +} +.e-kit-library__tags-filter-list-search { + margin-block-end: 0.625rem; +} +.e-kit-library__tags-filter-list-search .eps-search-input { + background: var(--e-kit-library-tags-filter-list-search-background-color); +} +.e-kit-library__tags-filter-list-item { + padding: 0.625rem 0; + display: flex; + align-items: center; + font-weight: 500; +} +.e-kit-library__tags-filter-list-item input { + margin-inline-end: 0.3125rem; +} + +.e-kit-library #eps-app-header-btn-refetch { + padding: 0; +} + +.e-kit-library-header-info-modal-container { + margin-block-end: 2.75rem; +} + +.e-kit-library__tooltip { + padding: 5px 12px; + color: #ffffff; + background-color: #26292C; + font-size: 10px; +} +.e-kit-library__tooltip:before { + border-block-end-color: #26292C; +} + +.e-kit-library__index-layout-container { + flex-grow: 1; + overflow-y: auto; + display: flex; + flex-direction: column; +} +.e-kit-library__index-layout-heading { + padding: 1.875rem 2.75rem; + position: sticky; + top: -1px; + width: 100%; + z-index: 2; + background-color: var(--app-background-color); + gap: 1.5rem; +} +.e-kit-library__index-layout-heading-search, .e-kit-library__index-layout-heading-sort { + min-width: 265px; +} +.e-kit-library__index-layout-heading-search { + flex: 1; +} +.e-kit-library__index-layout-main { + padding-block-start: 0; + padding-block-end: 1.5rem; + overflow-y: hidden; + height: auto; + flex: 1 0 auto; + display: flex; + flex-direction: column; + justify-content: space-between; +} + +.e-kit-library__tags-filter { + --e-kit-library-item-sidebar-header-title-color: #515962; + --e-kit-library-item-sidebar-description-color: #515962; + --e-kit-library-item-information-text-color: #515962; +} + +.eps-theme-dark .e-kit-library__tags-filter { + --e-kit-library-item-sidebar-header-title-color: #BABFC5; + --e-kit-library-item-sidebar-description-color: #BABFC5; + --e-kit-library-item-information-text-color: #BABFC5; +} + +.e-kit-library__item-sidebar { + padding: 1.5rem 1.875rem; +} +.e-kit-library__item-sidebar-header { + display: flex; + align-items: center; + justify-content: space-between; +} +.e-kit-library__item-sidebar-header-title { + color: var(--e-kit-library-item-sidebar-header-title-color); + margin-block-end: 0; +} +.e-kit-library__item-sidebar-thumbnail { + margin-block-start: 1.5rem; + box-shadow: 0 4px 10px var(--color-box-shadow-color); +} +.e-kit-library__item-sidebar-description { + margin-block-start: 1.5rem; + color: var(--e-kit-library-item-sidebar-description-color); +} +.e-kit-library__item-sidebar-collapse-tags { + margin-block-start: 2.75rem; +} +.e-kit-library__item-sidebar-collapse-info { + margin-block-start: 1.875rem; +} +.e-kit-library__item-sidebar-tags-container { + gap: 0.625rem; +} +.e-kit-library__item-information-text { + font-size: 0.8125rem; + color: var(--e-kit-library-item-information-text-color); + margin-block-end: 0.3125rem; +} + +.e-kit-library { + --e-kit-library-content-overview-group-title-color: #515962; +} + +.eps-theme-dark .e-kit-library { + --e-kit-library-content-overview-group-title-color: #BABFC5; +} + +.e-kit-library__content-overview-group-item { + margin-block-end: 2.75rem; +} +.e-kit-library__content-overview-group-title { + margin-block-end: 1.875rem; + color: var(--e-kit-library-content-overview-group-title-color); +} + +.e-kit-library__preview-responsive-controls { + width: auto; +} +.e-kit-library__preview-responsive-controls-item { + margin: 0 0.3125rem; + color: #69727D; + padding: 0.3125rem; +} +.e-kit-library__preview-responsive-controls-item:hover { + background: rgba(37, 99, 235, 0.1); + border-radius: 3px; + transition: all 0.3s; +} +.e-kit-library__preview-responsive-controls-item--active { + color: #2563EB; +} + +.e-kit-library__preview-loader { + position: absolute; + top: 0; + left: 0; + z-index: 0; +} +.e-kit-library__preview-iframe { + border: none; + transition: all 0.3s; + box-shadow: 0 4px 10px var(--color-box-shadow-color); +} +.e-kit-library__preview-iframe-container { + overflow-y: auto; + position: relative; + z-index: 1; +} + +.e-app-collapse { + --e-app-collapse-icon-color: #515962; +} +.e-app-collapse-toggle { + position: relative; +} +.e-app-collapse-toggle--active { + cursor: pointer; +} +.e-app-collapse-toggle__icon { + color: var(--e-app-collapse-icon-color); + display: flex; + align-items: center; + justify-content: center; + font-size: 0.875rem; + position: absolute; + top: 50%; + right: var(--e-app-collapse-toggle-icon-spacing); + transform: translateY(-50%); +} +.e-app-collapse-toggle__icon:before { + transition: all 0.2s linear; +} +.e-app-collapse-content { + display: none; +} +.e-app-collapse--opened .e-app-collapse-toggle__icon:before { + transform: rotate(-180deg); +} +.e-app-collapse--opened .e-app-collapse-content { + display: block; +} + +[dir=rtl] .e-app-collapse-toggle__icon { + right: initial; + left: var(--e-app-collapse-toggle-icon-spacing); +} + +.eps-theme-dark .e-app-collapse { + --e-app-collapse-icon-color: #BABFC5; +} + +.e-app-import-plugins { + --e-app-import-plugins-selection-section-heading-color: #515962; + padding-block-end: 1.5rem; +} +.e-app-import-plugins__section { + margin-block-start: 1.875rem; +} +.e-app-import-plugins__section-heading { + color: var(--e-app-import-plugins-selection-section-heading-color); + margin-block-end: 1rem; +} +.e-app-import-plugins__versions-notice { + margin-block-end: 0.75rem; +} + +.eps-theme-dark .e-app-import-plugins { + --e-app-import-plugins-selection-section-heading-color: #BABFC5; +} + +.eps-table { + --eps-table-body-color: #3f444b; + border-spacing: 0 2px; + table-layout: fixed; + width: 100%; + border: 1px solid var(--e-a-border-color); + border-radius: 0.1875rem; +} +.eps-table__checkboxes-column { + width: 1.875rem; +} +.eps-table__checkbox { + display: flex; + flex-shrink: 0; +} +.eps-table__cell { + padding: 1rem; +} +.eps-table__head .eps-table__cell { + text-align: start; +} +.eps-table__row { + border-block-end: 1px solid var(--e-a-border-color); +} +.eps-table__row:last-child { + border-block-end: none; +} +.eps-table__body .eps-table__cell:first-child { + border-radius: 0.1875rem 0 0 0.1875rem; +} +.eps-table__body .eps-table__cell:last-child { + border-radius: 0 0.1875rem 0.1875rem 0; +} +.eps-table--selection .eps-table__cell:first-child { + padding-inline-end: 0; +} + +.eps-theme-dark .eps-table { + --eps-table-body-color: #BABFC5; +} + +[dir=rtl] .eps-table__body [dir=rtl] .eps-table__cell:first-child { + border-radius: 0 0.1875rem 0.1875rem 0; +} +[dir=rtl] .eps-table__body [dir=rtl] .eps-table__cell:last-child { + border-radius: 0.1875rem 0 0 0.1875rem; +} + +.e-app-import-plugins-pro-banner { + --e-app-import-plugins-pro-banner-heading-color: #3f444b; + --e-app-import-plugins-pro-banner-description-color: #515962; + margin-block-end: 1.875rem; +} +.e-app-import-plugins-pro-banner__heading { + color: var(--e-app-import-plugins-pro-banner-heading-color); + margin-block-end: 0.625rem; +} +.e-app-import-plugins-pro-banner__description { + color: var(--e-app-import-plugins-pro-banner-description-color); + margin-block-end: 0; +} + +.eps-theme-dark .e-app-import-plugins-pro-banner { + --e-app-import-plugins-pro-banner-heading-color: #9DA5AE; + --e-app-import-plugins-pro-banner-description-color: #BABFC5; +} + +.e-app-export-plugins { + padding-block-end: 1.25rem; +} + +.e-app-import-content { + padding-block-end: 1.25rem; +} +.e-app-import-content__plugins-notice { + margin-block-end: 1.25rem; +} + +.e-app-import-plugins-activation__installing-plugins { + padding: 0.625rem 0; +} +.e-app-import-plugins-activation__plugin-name { + margin-inline-start: 0.5rem; +} +.e-app-import-plugins-activation__plugin-status-item { + margin-block-end: 0.75rem; +} + +.e-app-import-export-plugins-table__cell-content { + margin-block-end: 0; + text-transform: capitalize; +} + +.e-app-import-export-loader { + --e-app-import-export-loader-color: #818A96; + color: var(--e-app-import-export-loader-color); + font-size: 50px; +} +.e-app-import-export-loader.eicon-loading { + font-size: 1.85rem; +} +.e-app-import-export-loader--absolute-center { + position: absolute; + top: 50%; + left: 50%; + transform: translateX(-50%) translateY(-50%); +} + +.eps-theme-dark .e-app-import-export-loader { + --e-app-import-export-loader-color: #818A96; +} + +.e-app-import-export-message-banner { + --e-app-import-export-message-banner-heading-color: #3f444b; + --e-app-import-export-message-banner-description-color: #515962; + margin-block-end: 1.875rem; +} +.e-app-import-export-message-banner__heading { + color: var(--e-app-import-export-message-banner-heading-color); + margin-block-end: 0.625rem; +} +.e-app-import-export-message-banner__description { + color: var(--e-app-import-export-message-banner-description-color); + margin-block-end: 0; +} + +.eps-theme-dark .e-app-import-export-message-banner { + --e-app-import-export-message-banner-heading-color: #9DA5AE; + --e-app-import-export-message-banner-description-color: #BABFC5; +} + +.e-app-import-connect-pro-notice { + margin-block-end: 1.25rem; +} + +.e-app-import-failed-plugins-notice { + margin-block-end: 1.25rem; +} + +.e-onboarding { + font-family: "DM Sans", "Roboto", sans-serif; + color-scheme: light; +} +.e-onboarding .eps-app__main { + justify-content: center; + overflow-y: auto; +} +.e-onboarding__content { + max-width: 1135px; + padding: 2.75rem; + margin: initial; + overflow-y: initial; +} +.e-onboarding__checkbox-label { + display: flex; + line-height: 18px; + margin-block-end: 27px; +} +.e-onboarding__checkbox-input { + margin-inline-end: 14px; + width: 16px; + height: 16px; + border-color: #69727D; + border-radius: 2px; +} +.e-onboarding__checkbox-input:checked { + background-color: #525861; +} +.e-onboarding__checkbox-input:checked::after { + margin-block-end: 15%; + width: 6px; + height: 9px; + border-width: 0 2px 2px 0; +} +.e-onboarding__feature-list { + margin-block-end: 40px; +} +.e-onboarding__text-input { + font-size: 14px; + width: 325px; + padding: 12px 16px; + color: #69727D; + border: 1px solid #9EA5AD; +} +.e-onboarding__text-input:focus-visible { + outline: initial; + border: 1px solid #3A3F45; +} +.e-onboarding__text-input::-moz-placeholder { + color: #C2C7CC; +} +.e-onboarding__text-input::placeholder { + color: #C2C7CC; +} +.e-onboarding__footnote { + margin-block-start: 24px; + width: 325px; + text-align: center; +} +.e-onboarding__footnote a { + text-decoration: underline; + color: #3A3F45; +} + +#e-app ~ #__wp-uploader-id-2 .media-modal { + max-width: 1024px; + max-height: 768px; + margin: auto; +} + +.e-onboarding__page-content { + margin-block-end: 70px; +} +.e-onboarding__page-content-start { + max-width: 675px; + text-align: start; + flex-basis: 555px; + align-self: start; +} +.e-onboarding__page-content-end { + min-width: 440px; + max-width: 540px; +} +.e-onboarding__page-content-end img { + width: 100%; +} +.e-onboarding__page-content-section-title { + font-family: "DM Serif Display", serif; + font-size: 36px; + font-weight: 700; + color: #0C0D0E; +} +.e-onboarding__page-content-section-text { + font-size: 18px; + color: #3A3F45; +} + +.e-onboarding__header-logo .eps-app__logo { + background-color: #0C0D0E; + color: #ffffff; + width: 1.3rem; + height: 1.3rem; + line-height: 1.3rem; + font-size: 0.48rem; +} +.e-onboarding__header-logo .eps-app__logo:not(:last-child) { + margin-inline-end: 7px; +} +.e-onboarding__header-logo img { + width: 104px; +} +.e-onboarding__header .eps-app__header-btn { + display: flex; + align-items: center; + font-size: 13px; +} +.e-onboarding__header .eps-app__header-btn .eps-icon:not(:last-child) { + margin-inline-end: 7px; +} +.e-onboarding__header .eps-button { + color: #0C0D0E; +} +.e-onboarding__header .eps-button__go-pro-btn { + background-color: #93003f; + color: #ffffff; + padding: 4px 8px; + border-radius: 4px; + font-weight: 700; + font-size: 12px; + transition: 0.5s; +} +.e-onboarding__header .eps-button__go-pro-btn:hover { + background: #c60055; +} + +.e-onboarding__go-pro { + width: 288px; + font-size: 12px; + background-color: #ffffff; +} +.e-onboarding__go-pro-title { + font-size: 18px; + font-weight: 700; + color: #93003f; +} +.e-onboarding__go-pro-cta { + display: inline-block; + color: #93003f; + padding: 9px; + border: 1px solid #93003f; +} +.e-onboarding__go-pro-cta.e-onboarding__button { + font-size: 14px; +} +.e-onboarding__go-pro-paragraph:not(:last-child) { + margin-block-end: 20px; +} +.e-onboarding__go-pro-already-have { + text-decoration: underline; +} + +.e-onboarding__progress-bar { + display: flex; + justify-content: center; + margin-block-end: 125px; +} +.e-onboarding__progress-bar-item { + display: flex; + align-items: center; + color: #69727D; + font-size: 0.75rem; +} +.e-onboarding__progress-bar-item-icon { + display: inline-block; + font-family: "DM Serif Display", serif; + text-align: center; + width: 1.1rem; + height: 1.1rem; + line-height: 1rem; + font-size: 0.75rem; + font-weight: bold; + border-radius: 50%; + border: 1px solid #69727D; + margin-inline-end: 8px; + flex-shrink: 0; +} +.e-onboarding__progress-bar-item:not(:last-child) { + margin-inline-end: 22px; +} +.e-onboarding__progress-bar-item:not(:last-child):after { + font-family: "eicons"; + margin-inline-start: 22px; + content: "\e89e"; +} +.e-onboarding__progress-bar-item--active { + color: #D004D4; +} +.e-onboarding__progress-bar-item--active .e-onboarding__progress-bar-item-icon, .e-onboarding__progress-bar-item--completed .e-onboarding__progress-bar-item-icon { + color: #ffffff; + border-color: #D004D4; + background-color: #D004D4; +} +.e-onboarding__progress-bar-item--skipped, .e-onboarding__progress-bar-item--completed { + cursor: pointer; +} +.e-onboarding__progress-bar-item--skipped .e-onboarding__progress-bar-item-icon { + color: #ffffff; + background-color: #69727D; +} + +.e-onboarding__button { + font-size: 18px; + cursor: pointer; + transition: var(--e-a-transition-hover); +} +.e-onboarding__button-action { + color: var(--e-a-btn-color); + background-color: var(--e-a-btn-bg-primary); + min-width: 325px; + padding: 15px 30px; + text-align: center; +} +.e-onboarding__button-action:hover { + background-color: var(--e-a-btn-bg-primary-hover); +} +.e-onboarding__button-skip { + padding: 8px 16px; + color: #515962; +} +.e-onboarding__button-skip:hover { + background-color: #F9FAFA; +} +.e-onboarding__button--disabled { + pointer-events: none; + background-color: #D5D8DC; + color: #9EA5AD; +} +.e-onboarding__button--disabled:hover { + cursor: progress; +} +.e-onboarding__button--processing { + pointer-events: none; + filter: brightness(90%); +} + +.e-onboarding__card { + border: 1px solid #3A3F45; + border-radius: 8px; + padding: 40px 40px; + cursor: pointer; + flex-grow: 1; + display: flex; + flex-direction: column; + align-items: center; +} +.e-onboarding__card-image, .e-onboarding__card-text { + width: 345px; +} +.e-onboarding__card-image { + margin-block-end: 44px; +} +.e-onboarding__card-text { + font-size: 20px; + font-weight: 700; + text-align: center; + color: #0C0D0E; +} +.e-onboarding__card:hover { + box-shadow: 4px 4px 0 0 #000000; +} +.e-onboarding__card:active { + box-shadow: initial; +} + +.e-onboarding__checklist { + padding-inline-start: 0; +} +.e-onboarding__checklist-item { + display: flex; + align-items: center; + font-size: 12px; + margin-block-end: 12px; +} +.e-onboarding__checklist-item .eicon-check-circle { + margin-inline-end: 9px; + font-size: 16px; + font-weight: 600; +} + +.e-onboarding__notice { + display: inline-block; + padding: 12px 14px; + margin-block-end: 16px; + color: #3A3F45; +} +.e-onboarding__notice--error { + background-color: #FDE8EC; +} +.e-onboarding__notice--error i { + font-size: 16px; + color: #B92136; +} +.e-onboarding__notice--success { + background-color: #ECF9F2; +} +.e-onboarding__notice--success i { + color: #117740; +} +.e-onboarding__notice i { + margin-inline-end: 14px; +} +.e-onboarding__notice-empty-spacer { + height: 61px; +} + +.e-onboarding__page-account .e-onboarding__checkbox-label { + margin-block-start: 50px; +} + +.e-onboarding__action-button-text { + margin-inline-start: 10px; +} + +.e-onboarding__site-name-input { + margin-block-start: 80px; +} + +.e-onboarding__page-siteLogo .e-app-upload-file__button { + color: var(--e-a-color-primary-bold); + border-color: var(--e-a-color-primary-bold); +} +.e-onboarding__page-siteLogo .e-app-upload-file__button:hover { + background-color: #FAE8FF; +} +.e-onboarding__drop-zone { + margin-block-start: 3rem; +} +.e-onboarding .eps-display-3 { + font-size: 16px; + margin-block-end: 0.5rem; +} +.e-onboarding .e-app-upload-file__button { + max-width: 198px; + margin: 0 auto; +} +.e-onboarding .e-app-drop-zone__secondary-text { + font-size: 14px; +} +.e-onboarding__logo-container { + position: relative; + margin-block-start: 3rem; + min-height: 120px; + width: -moz-fit-content; + width: fit-content; + display: flex; + align-items: center; + justify-content: center; + min-width: 220px; + border: 1px solid #BABFC5; +} +.e-onboarding__logo-container img { + height: auto; + max-height: 100%; + width: auto; +} +.e-onboarding__logo-remove { + position: absolute; + right: 0; + top: 5px; +} +.e-onboarding__logo-remove i { + font-size: 16px; + width: 15px; +} +.e-onboarding__logo-remove:hover { + cursor: pointer; +} +.e-onboarding__is-uploading { + visibility: hidden; +} + +.e-onboarding__page-goodToGo .e-onboarding__page-content-section-title, +.e-onboarding__page-goodToGo .e-onboarding__page-content-section-text { + text-align: center; +} +.e-onboarding__cards-grid.e-onboarding__page-content { + margin-block-start: 48px; + margin-block-end: 48px; +} +.e-onboarding__cards-grid .e-onboarding__card { + max-width: 555px; +} +.e-onboarding__cards-grid .e-onboarding__card:not(:last-child) { + margin-inline-end: 20px; +} +.e-onboarding__good-to-go-footer { + justify-content: end; +} + +.e-onboarding__upload-pro { + flex-direction: row; + justify-content: center; + font-family: "DM Sans", "Roboto", sans-serif; + text-align: center; +} +.e-onboarding__upload-pro .eps-app__content { + overflow-y: hidden; + max-width: 1113px; + padding: 30px; +} +.e-onboarding__upload-pro-drop-zone { + margin-block-end: 24px; +} +.e-onboarding__upload-pro-drop-zone h1 { + font-family: "Source Serif Pro", "Roboto", sans-serif; +} +.e-onboarding__upload-pro-drop-zone .e-app-drag-drop { + padding: 48px; +} +.e-onboarding__upload-pro-drop-zone .eps-display-3, +.e-onboarding__upload-pro-drop-zone .e-app-drop-zone__text, +.e-onboarding__upload-pro-drop-zone .e-app-drop-zone__secondary-text { + margin-block-end: 12px; +} +.e-onboarding__upload-pro-drop-zone .e-app-upload-file__button { + background-color: #040080; + color: #46F2B6; + padding: 14px 40px; + border-color: #040080; +} +.e-onboarding__upload-pro-get-file { + font-size: 12px; + margin-block-start: 24px; +} +.e-onboarding__upload-pro-get-file a { + text-decoration: underline; +} +.e-onboarding__upload-pro .e-onboarding__notice { + margin-block-end: 0; +} +/*# sourceMappingURL=app.css.map */ \ No newline at end of file diff --git a/wp-content/plugins/elementor/assets/css/app.min.css b/wp-content/plugins/elementor/assets/css/app.min.css new file mode 100644 index 0000000..58eb92e --- /dev/null +++ b/wp-content/plugins/elementor/assets/css/app.min.css @@ -0,0 +1,2 @@ +/*! elementor - v3.20.0 - 26-03-2024 */ +@import "//fonts.googleapis.com/css2?family=Roboto:ital,wght@0,100;0,300;0,400;0,500;0,700;0,900;1,100;1,300;1,400;1,500;1,700;1,900&display=swap";@import "//fonts.googleapis.com/css2?family=DM%20Sans&display=swap";@import "//fonts.googleapis.com/css2?family=Source%20Serif%20Pro&display=swap";.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}@media screen and (min-width:480px){.text-start-sm{text-align:start}}@media screen and (min-width:480px){.text-center-sm{text-align:center}}@media screen and (min-width:480px){.text-end-sm{text-align:end}}@media screen and (min-width:768px){.text-start-md{text-align:start}}@media screen and (min-width:768px){.text-center-md{text-align:center}}@media screen and (min-width:768px){.text-end-md{text-align:end}}@media screen and (min-width:1025px){.text-start-lg{text-align:start}}@media screen and (min-width:1025px){.text-center-lg{text-align:center}}@media screen and (min-width:1025px){.text-end-lg{text-align:end}}@media screen and (min-width:1440px){.text-start-xl{text-align:start}}@media screen and (min-width:1440px){.text-center-xl{text-align:center}}@media screen and (min-width:1440px){.text-end-xl{text-align:end}}@media screen and (min-width:1600px){.text-start-xxl{text-align:start}}@media screen and (min-width:1600px){.text-center-xxl{text-align:center}}@media screen and (min-width:1600px){.text-end-xxl{text-align:end}}@keyframes eps-animation-pop{0%{transform:scale(.75);opacity:0}to{transform:scale(1);opacity:1}}.eps-button{display:inline-flex;--button-line-height:16px;--button-padding-y:0.5em;--button-padding-x:1.5em;--button-primary-background-color:#f3bafd;--button-primary-hover-background-color:#f5d0fe;--button-primary-active-background-color:#f3bafd;--button-primary-color:#0c0d0e;--button-secondary-background-color:#69727d;--button-secondary-hover-background-color:#525961;--button-secondary-active-background-color:#3a3f46;--button-secondary-color:#fff;--button-danger-background-color:#dc2626;--button-danger-hover-background-color:#b21d1d;--button-danger-active-background-color:#861616;--button-danger-color:#fff;--button-cta-background-color:#93003f;--button-cta-hover-background-color:#600029;--button-cta-active-background-color:#2d0013;--button-cta-color:#fff;--button-brand-background-color:#93003f;--button-brand-hover-background-color:#600029;--button-brand-active-background-color:#2d0013;--button-brand-color:#fff;--button-link-background-color:#515962;--button-link-hover-background-color:#3a4046;--button-link-active-background-color:#23262a;--button-link-color:#fff;--button-disabled-background-color:#d5d8dc;--button-disabled-hover-background-color:#b9bec5;--button-disabled-active-background-color:#9da4ae;--button-disabled-color:#fff;color:var(--button-background-color,currentColor);font-size:var(--button-font-size,inherit);font-weight:500;line-height:var(--button-line-height);transition:var(--e-a-transition-hover);cursor:pointer}.eps-button:active{--button-background-color:var(--button-active-background-color,transparent)}.eps-button:hover{--button-background-color:var(--button-hover-background-color)}.eps-theme-dark .eps-button{--button-primary-background-color:#f3bafd;--button-primary-color:#0c0d0e;--button-primary-hover-background-color:#eb8efb;--button-primary-active-background-color:#f3bafd;--button-secondary-background-color:#babfc5;--button-secondary-color:#fff;--button-secondary-hover-background-color:#9ea5ae;--button-secondary-active-background-color:#838c96;--button-cta-background-color:#93003f;--button-cta-hover-background-color:#600029;--button-cta-active-background-color:#2d0013;--button-cta-color:#fff;--button-brand-hover-background-color:#600029;--button-brand-active-background-color:#2d0013;--button-brand-color:#fff;--button-brand-background-color:#93003f;--button-link-background-color:#515962;--button-link-hover-background-color:#3a4046;--button-link-active-background-color:#23262a;--button-link-color:#fff;--button-disabled-background-color:#69727d;--button-disabled-hover-background-color:#525961;--button-disabled-active-background-color:#3a3f46;--button-disabled-color:#fff}.eps-button--contained{padding:var(--button-padding-y) var(--button-padding-x);background-color:var(--button-background-color,transparent);border:1px solid var(--button-background-color)}.eps-button--contained,.eps-button--contained:hover{color:var(--button-color)}.eps-button--outlined{display:block;padding:var(--button-padding-y) var(--button-padding-x);border:1px solid var(--button-background-color)}.eps-button--contained,.eps-button--outlined{border-radius:.1875rem}.eps-button--underlined{text-decoration:underline}.eps-button--sm{--button-font-size:0.75rem;--button-line-height:14px}.eps-button--lg{--button-font-size:0.9375rem;--button-line-height:18px}.eps-button--primary{--button-color:var(--button-primary-color);--button-background-color:var(--button-primary-background-color);--button-hover-background-color:var(--button-primary-hover-background-color);--button-active-background-color:var(--button-primary-active-background-color)}.eps-button--secondary{--button-color:var(--button-secondary-color);--button-background-color:var(--button-secondary-background-color);--button-hover-background-color:var(--button-secondary-hover-background-color);--button-active-background-color:var(--button-secondary-active-background-color)}.eps-button--danger{--button-color:var(--button-danger-color);--button-background-color:var(--button-danger-background-color);--button-hover-background-color:var(--button-danger-hover-background-color);--button-active-background-color:var(--button-danger-active-background-color)}.eps-button--cta{--button-color:var(--button-brand-color);--button-background-color:var(--button-cta-background-color);--button-hover-background-color:var(--button-cta-hover-background-color);--button-active-background-color:var(--button-cta-active-background-color)}.eps-button--brand{--button-color:var(--button-cta-color);--button-background-color:var(--button-cta-background-color);--button-hover-background-color:var(--button-cta-hover-background-color);--button-active-background-color:var(--button-cta-active-background-color)}.eps-button--link{--button-color:var(--button-link-color);--button-background-color:var(--button-link-background-color);--button-hover-background-color:var(--button-link-hover-background-color);--button-active-background-color:var(--button-link-active-background-color)}.eps-button--disabled,.eps-button[disabled]{--button-color:var(--button-disabled-color);--button-background-color:var(--button-disabled-background-color);--button-hover-background-color:var(--button-disabled-hover-background-color);--button-active-background-color:var(--button-disabled-active-background-color);cursor:default}:root{--app-background-color:#fff;--app-box-shadow-color:rgba(var(--box-shadow-color,rgba(0,0,0,0.15)),0.2);--app-header-color:#1f2124;--app-logo-color:#fff;--app-logo-background-color:#0c0d0e;--app-title-color:#0c0d0e;--app-header-buttons-separator-color:#9da5ae;--app-header-buttons-color:#515962;--app-header-buttons-color-hover:#0c0d0e;--app-lightbox-background-color:rgba(0,0,0,0.8)}.eps-theme-dark{--app-background-color:#1f2124;--app-box-shadow-color:rgba(var(--box-shadow-color,rgba(0,0,0,0.15)),0.2);--app-header-color:#d5d8dc;--app-logo-color:#0c0d0e;--app-logo-background-color:#fff;--app-title-color:#fff;--app-header-buttons-separator-color:#818a96;--app-header-buttons-color:#babfc5;--app-header-buttons-color-hover:#9da5ae;--app-lightbox-background-color:rgba(0,0,0,0.8)}:root{--text-muted:#babfc5;--disabled:#d5d8dc;--accent:#f3bafd;--primary:#93003f;--primary-bg:#fae8ff;--secondary:#515962;--info:#2563eb;--info-bg:#f0f7ff;--danger:#dc2626;--danger-bg:#fef1f4;--success:#0a875a;--success-bg:#f2fdf5;--warning:#f59e0b;--warning-bg:#fffbeb;--body-color:#515962;--body-bg:#fff;--link-color:#515962;--link-hover-color:#2e3338;--hr-color:#e6e8ea;--box-shadow-color:theme-colors(dark);--display-1-color:#515962;--display-2-color:#515962;--display-3-color:#515962;--display-4-color:#515962;--h1-color:#515962;--h2-color:#515962;--h3-color:#515962;--h4-color:#515962;--h5-color:#515962;--h6-color:#515962;--text-base-color:#515962;--text-xl-color:#515962;--text-lg-color:#515962;--text-sm-color:#515962;--text-xs-color:#515962;--text-xxs-color:#515962}.eps-theme-dark,:root{--light:#fff;--dark:#000;--cta:#93003f;--brand:#93003f;--gray-900:#0c0d0e;--gray-800:#1f2124;--gray-750:#2b2c31;--gray-725:#333438;--gray-700:#3f444b;--gray-600:#515962;--gray-500:#69727d;--gray-400:#818a96;--gray-300:#9da5ae;--gray-200:#babfc5;--gray-100:#d5d8dc;--gray-75:#e6e8ea;--gray-50:#f1f2f3;--gray-25:#f9fafa}.eps-theme-dark{--text-muted:#818a96;--disabled:#69727d;--accent:#524cff;--success:#39b54a;--success-bg:#032317;--info:#07c;--info-bg:#0a1a3d;--warning:#fcb92c;--warning-bg:#311808;--danger:#f84343;--danger-bg:#390a0a;--body-color:#babfc5;--body-bg:#1f2124;--link-color:#07c;--link-hover-color:#2e3338;--hr-color:#333438;--box-shadow-color:rgba(0,0,0,0.15);--display-1-color:#babfc5;--display-2-color:#babfc5;--display-3-color:#babfc5;--display-4-color:#babfc5;--h1-color:#babfc5;--h2-color:#babfc5;--h3-color:#babfc5;--h4-color:#babfc5;--h5-color:#babfc5;--h6-color:#babfc5;--text-base-color:#babfc5;--text-xl-color:#babfc5;--text-lg-color:#babfc5;--text-sm-color:#babfc5;--text-xs-color:#babfc5;--text-xxs-color:#babfc5}*,:after,:before{box-sizing:border-box}html{font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:rgba(0,0,0,0)}article,aside,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}body{margin:0;font-family:Roboto,Arial,Helvetica,Verdana,sans-serif;font-size:.875rem;font-weight:400;line-height:1.5;color:var(--body-color);background-color:var(--body-bg)}[tabindex="-1"]:focus:not(:focus-visible){outline:0!important}h1,h2,h3,h4,h5,h6{font-size:100%;margin:0;padding:0;line-height:inherit;font-weight:400}p{margin-block-start:0}b,strong{font-weight:700}small{font-size:80%}a{--eps-link-color:$eps-link-color;color:var(--eps-link-color);background-color:transparent}a,a:active,a:focus,a:hover{text-decoration:none}a:focus,a:hover{--eps-link-color:$eps-link-hover-color}a:not([href]),a:not([href]):hover{color:inherit;text-decoration:none}code,kbd,pre,samp{font-family:monospace;font-size:1em}figure{margin:0}img{border-style:none}img,svg{vertical-align:middle}svg{overflow:hidden}button{border-radius:0}button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,input{overflow:visible}button,select{text-transform:none}[role=button]{cursor:pointer}select{word-wrap:normal}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button;-moz-appearance:button;appearance:button}[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled),button:not(:disabled){cursor:pointer}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}textarea{overflow:auto;resize:vertical}[hidden]{display:none!important}hr{border:0;border-block-end:1px solid var(--hr-color)}.eps-display-1{color:var(--display-1-color)}.eps-display-1,.eps-display-2{font-size:1.85rem;margin-block-start:.5rem;margin-block-end:.5rem}.eps-display-2{color:var(--display-2-color)}.eps-display-3{font-size:1.85rem;color:var(--display-3-color);margin-block-start:0;margin-block-end:1.25rem}.eps-display-4{font-size:1.85rem;color:var(--display-4-color);margin-block-start:.5rem;margin-block-end:.5rem}.eps-h1,h1{font-size:1.625rem;line-height:1;color:var(--h1-color);margin-block-end:1.25rem;font-weight:500}.eps-h2,h2{font-size:1.25rem;color:var(--h2-color);margin-block-end:1.25rem}.eps-h2,.eps-h3,h2,h3{line-height:1.2;margin-block-start:0;font-weight:500}.eps-h3,h3{font-size:1rem;color:var(--h3-color);margin-block-end:.5rem}.eps-h4,h4{font-size:.9375rem;color:var(--h4-color)}.eps-h4,.eps-h5,h4,h5{margin-block-start:0;margin-block-end:.5rem}.eps-h5,h5{font-size:.875rem;color:var(--h5-color)}.eps-h6,h6{font-size:.875rem;color:var(--h-6-color);margin-block-start:0;margin-block-end:.5rem;font-weight:700}.eps-text-xxs{line-height:1.2;color:var(--text-xxs-color)}.eps-text-xs,.eps-text-xxs{font-size:.75rem;font-weight:400}.eps-text-xs{line-height:1.5;color:var(--text-xs-color)}.eps-text{font-size:.875rem;color:var(--text-base-color)}.eps-text,.eps-text-sm{line-height:1.5;font-weight:400}.eps-text-sm{font-size:.8125rem;color:var(--text-sm-color)}.eps-text-lg{font-size:.9375rem;color:var(--text-lg-color)}.eps-text-lg,.eps-text-xl{line-height:1.5;font-weight:400}.eps-text-xl{font-size:1rem;color:var(--text-xl-color)}.video-wrapper{position:relative;padding-block-end:56.25%;height:0}.video-wrapper iframe{position:absolute;top:0;left:0;width:100%;height:100%}.eps-separator{margin-block-end:2.75rem}.eps-theme-dark{--e-app-back-button-color:#babfc5}.back-button,.e-app-back-button{--button-background-color:var(--e-app-back-button-color,#69727d);margin-block-end:1.5rem}.back-button .eps-icon,.e-app-back-button .eps-icon{margin-inline-end:.3125rem}.eps-theme-dark{--input-border-color:--hr-color}.eps-input{border:1px solid var(--hr-color);border-radius:.1875rem;background:transparent;color:inherit;height:1.875rem;padding:0 .3125rem}.eps-input--block{width:100%}.eps-app{display:flex;height:100vh;flex-direction:column;color:var(--body-color);background-color:var(--app-background-color);position:absolute;border-radius:0;box-shadow:2px 8px 23px 3px var(--color-box-shadow-color);overflow:hidden;font-family:Roboto,Arial,Helvetica,Verdana,sans-serif;width:100%;max-width:100%}.eps-app__lightbox{display:flex;align-items:center;justify-content:center;position:fixed;height:100%;width:100%;background-color:var(--app-lightbox-background-color);z-index:1040;bottom:0;left:0}.eps-app__header{flex-shrink:0;font-size:.9375rem;border-block-end:var(--e-a-border);position:relative;z-index:3;height:3.125rem;padding-block:0;padding-inline:1rem}.eps-app__header-buttons{display:flex;align-items:center;flex-direction:row-reverse;font-size:1.125rem}.eps-app__header-btn{padding-inline-start:1rem;font-size:1.125rem;line-height:1.25rem}.eps-app__header-btn:hover{color:var(--app-header-buttons-color-hover)}.eps-app__header-btn:first-child{border-inline-start:1px solid var(--app-header-buttons-separator-color)}.eps-app__header-btn:not(:first-child){padding-inline-end:1rem}.eps-app__logo-title-wrapper{display:flex;align-items:center}.eps-app__logo{display:block;width:1.75rem;height:1.75rem;line-height:1.75rem;text-align:center;font-size:calc(.4 * 1.75rem);border-radius:50%;color:var(--app-logo-color);background-color:var(--app-logo-background-color)}.eps-app__logo:not(:last-child){margin-inline-end:.625rem}.eps-app__title{color:var(--app-title-color);font-size:.9375rem;font-weight:700;text-transform:uppercase;margin-block-end:0}.eps-app__main{display:flex;overflow:hidden;flex-grow:1}.eps-app__sidebar{background-color:var(--app-sidebar-background-color);padding-block-start:1.25rem;width:30%;max-width:17.1875rem;border-inline-end:var(--e-a-border);flex-grow:0;overflow-y:auto;z-index:4}.eps-app__content{flex-grow:1;position:relative;padding:2.75rem;height:100%;overflow-y:auto}.e-app-upload-file__input{display:none}.e-app-drop-zone{--e-app-drop-zone-text-color:#69727d;--e-app-drop-zone-secondary-text-color:#515962}.e-app-drop-zone__icon{margin-block-end:2.75rem;font-size:60px}.e-app-drop-zone__text{color:var(--e-app-drop-zone-text-color)}.e-app-drop-zone__secondary-text{color:var(--e-app-drop-zone-secondary-text-color)}.eps-theme-dark .e-app-drop-zone{--e-app-drop-zone-text-color:#babfc5;--e-app-drop-zone-secondary-text-color:#d5d8dc}:root{--info-toggle-color:#9da5ae;--info-toggle-hover-color:#69727d}.eps-theme-dark{--placeholder-filter:invert(0.8) sepia(1) saturate(0.2) hue-rotate(180deg) contrast(1.25) brightness(1.2);--info-toggle-color:#818a96;--info-toggle-hover-color:#babfc5}.e-site-part .eps-card__image{filter:var(--placeholder-filter,none)}.e-site-part__info-toggle{color:var(--info-toggle-color)}.e-site-part__info-toggle:hover{--info-toggle-color:var(--info-toggle-hover-color)}.e-site-editor__header{margin-block-end:2.75rem;border-block-end:1px solid var(--hr-color)}:root{--e-elementor-loader-color:#fff;--e-elementor-loader-wrapper-color:#f9fafa;--e-elementor-loader-box-color:#e6e8ea}.eps-theme-dark{--e-elementor-loader-color:#1f2124;--e-elementor-loader-wrapper-color:#2b2c31;--e-elementor-loader-box-color:#3f444b}.elementor-loading{background-color:var(--e-elementor-loader-color);height:100vh}.elementor-loader-wrapper{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:300px;display:flex;flex-direction:column;align-items:center;gap:30px}.elementor-loader{border-radius:50%;padding:40px;height:150px;width:150px;background-color:var(--e-elementor-loader-wrapper-color);box-sizing:border-box;box-shadow:2px 2px 20px 4px rgba(0,0,0,.02)}.elementor-loader-boxes{height:100%;width:100%;position:relative}.elementor-loader-box{position:absolute;background-color:var(--e-elementor-loader-box-color);animation:load 1.8s linear infinite}.elementor-loader-box:first-of-type{width:20%;height:100%;left:0;top:0}.elementor-loader-box:not(:first-of-type){right:0;height:20%;width:60%}.elementor-loader-box:nth-of-type(2){top:0;animation-delay:calc(1.8s / 4 * -1)}.elementor-loader-box:nth-of-type(3){top:40%;animation-delay:calc(1.8s / 4 * -2)}.elementor-loader-box:nth-of-type(4){bottom:0;animation-delay:calc(1.8s / 4 * -3)}.elementor-loading-title{color:#9da5ae;text-align:center;text-transform:uppercase;letter-spacing:7px;text-indent:7px;font-size:10px;width:100%}@keyframes load{0%{opacity:.3}50%{opacity:1}to{opacity:.3}}.eps-menu__title{margin-block-start:2.75rem;margin-block-end:1rem}.e-app-import{--e-app-import-back-to-library-color:#69727d;padding-block-end:1.25rem}.e-app-import__drop-zone{margin-block-start:1.25rem}.e-app-import__back-to-library{color:var(--e-app-import-back-to-library-color);margin-block-end:1.5rem}.e-app-import__back-to-library>i{margin-inline-end:.5rem}.eps-theme-dark .e-app-import{--e-app-import-back-to-library-color:#babfc5}.e-site-editor__promotion-overlay__link{display:flex;width:100%;height:100%;align-items:center;justify-content:center;flex-direction:column;text-decoration:none}.e-site-editor__promotion-overlay__icon{font-size:1.25rem;color:#fff;margin-block-end:1rem}.e-app-import-export-wizard-step{--e-app-import-export-wizard-step-icon-color:#818a96;--e-app-import-export-wizard-step-text-color:#69727d;--e-app-import-export-wizard-step-block-end-text-color:#69727d;height:100%;position:relative;text-align:center}.e-app-import-export-wizard-step__media-container{height:140px;margin:5.5rem 0 2.75rem}.e-app-import-export-wizard-step__icon{color:var(--e-app-import-export-wizard-step-icon-color);font-size:50px}.e-app-import-export-wizard-step__icon.eicon-loading{font-size:1.85rem}.e-app-import-export-wizard-step__heading{margin-block-end:1.5rem}.e-app-import-export-wizard-step__description,.e-app-import-export-wizard-step__info{color:var(--e-app-import-export-wizard-step-text-color)}.e-app-import-export-wizard-step__info{margin-block-start:1.5rem}.e-app-import-export-wizard-step__content{text-align:initial;margin-block-end:1.25rem}.e-app-import-export-wizard-step__notice{display:block;position:sticky;top:100%;color:var(--e-app-import-export-wizard-step-block-end-text-color);font-style:italic;margin-block-end:0}.eps-theme-dark .e-app-import-export-wizard-step{--e-app-import-export-wizard-step-icon-color:#818a96;--e-app-import-export-wizard-step-text-color:#babfc5;--e-app-import-export-wizard-step-block-end-text-color:#babfc5}.e-app-import-export-page-header{--e-app-import-export-page-header-heading-color:#515962;--e-app-import-export-page-header-description-color:#69727d;margin-block-end:2.75rem}.e-app-import-export-page-header__content-wrapper{max-width:645px}.e-app-import-export-page-header__heading{color:var(--e-app-import-export-page-header-heading-color)}.e-app-import-export-page-header__description{color:var(--e-app-import-export-page-header-description-color);margin-block-start:1.25rem}.eps-theme-dark .e-app-import-export-page-header{--e-app-import-export-page-header-heading-color:#d5d8dc;--e-app-import-export-page-header-description-color:#d5d8dc}.e-app-wizard-footer{--e-app-wizard-footer-border-color:#e6e8ea;padding:.5rem}.e-app-wizard-footer__separator{border-block-start:1px solid var(--e-app-wizard-footer-border-color)}.eps-theme-dark .e-app-wizard-footer{--e-app-wizard-footer-border-color:#333438}.e-app-export-templates-features__locked{--e-app-export-templates-features-locked-color:#69727d;color:var(--e-app-export-templates-features-locked-color)}.eps-theme-dark .e-app-export-templates-features__locked{--e-app-export-templates-features-locked-color:#9da5ae}:root{--color-box-shadow-color:rgba(0,0,0,0.05)}.eps-theme-dark{--color-box-shadow-color:rgba(0,0,0,0.1)}:root{--card-background-color-hover:#fff;--card-border:1px solid #d5d8dc;--card-header-footer-border:1px solid var(--e-a-border-color);--card-header-footer-active-border:2px solid #babfc5;--card-headline-color:#515962;--card-figure-background-color:#babfc5;--card-image-overlay-background-color:rgba(0,0,0,0.2)}.eps-theme-dark{--card-background-color-hover:#2b2c31;--card-border:1px solid #333438;--card-header-footer-border:1px solid #333438;--card-header-footer-active-border:1px solid #1f2124;--card-headline-color:#d5d8dc;--card-figure-background-color:#3f444b;--card-image-overlay-background-color:rgba(63,68,75,0.5)}.eps-card{border:var(--card-border);border-radius:.1875rem;transition:.3s;font-size:.75rem}.eps-card__header{padding:.625rem;border-block-end:var(--card-header-footer-border);min-height:2.5rem;display:flex;align-items:center}.eps-card__header--padding{padding:var(--eps-card-header-padding)}.eps-card__headline{color:var(--card-headline-color);margin-block-end:0;font-weight:500;flex-grow:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.eps-card__body{padding:.625rem}.eps-card__body--padding{padding:var(--eps-card-body-padding)}.eps-card__figure{background-color:var(--card-figure-background-color);position:relative;padding-block-end:var(--card-image-aspect-ratio,95.6%);overflow:hidden;height:0}.eps-card__image{width:100%;-o-object-fit:contain;object-fit:contain;-o-object-position:top;object-position:top;position:absolute;top:0;left:0}.eps-card__image-overlay{position:absolute;top:0;background-color:var(--card-image-overlay-background-color);z-index:1;width:100%;height:100%;opacity:0;transition:.3s}.eps-card__image-overlay:hover{opacity:1}.eps-card__footer{padding:.625rem;border-block-start:var(--card-header-footer-border);font-size:.6875rem}.eps-card__footer--padding{padding:var(--eps-card-footer-padding)}:root{--menu-item-color:#515962;--menu-item-color-hover:#3f444b;--menu-item-color-active:#0c0d0e;--menu-item-background-color-hover:#f9fafa;--menu-item-background-color-active:#e6e8ea;--menu-item-action-button-color:#9da5ae}.eps-theme-dark{--menu-item-color:#d5d8dc;--menu-item-color-hover:#babfc5;--menu-item-color-active:#9da5ae;--menu-item-background-color-hover:#2b2c31;--menu-item-background-color-active:#333438;--menu-item-action-button-color:#818a96}.eps-menu-item{display:flex;align-items:center;position:relative;transition:.3s;--action-button-opacity:0}.eps-menu-item:before{content:"";display:block;position:absolute;top:0;left:0;height:100%;width:var(--menu-item-pointer-width);background-color:#0c0d0e}.eps-menu-item:hover:not(.eps-menu-item--active){background-color:var(--menu-item-background-color-hover);--action-button-opacity:1;--menu-item-color:var(--menu-item-color-hover);--eps-link-color:var(--menu-item-color-hover)}.eps-menu-item--active{background-color:var(--menu-item-background-color-active);--menu-item-color:var(--menu-item-color-active);--eps-link-color:var(--menu-item-color-active)}.eps-menu-item__link{padding:.5rem 1.875rem;min-height:2.75rem;font-size:.75rem;line-height:1.2;flex-grow:1;display:flex;align-items:center;color:var(--menu-item-color);--eps-link-color:var(--menu-item-color)}.eps-menu-item__link:not(:last-child){padding-inline-end:0}.eps-menu-item__link .eps-icon{font-size:1.125rem;margin-inline-end:.75rem}.eps-menu-item__action-button{opacity:var(--action-button-opacity);padding:.625rem;transition:.3s;margin-inline-end:1.25rem}.eps-menu-item--active{--menu-item-pointer-width:0.3125rem}.eps-grid-container{display:flex;flex-wrap:wrap;width:100%}.eps-grid-container--no-wrap{flex-wrap:nowrap}.eps-grid-container--wrap-reverse{flex-wrap:wrap-reverse}.eps-grid-container--spacing{--grid-row-gutter:calc(-1 * calc(var(--grid-spacing-gutter) * 0.625rem / 10));width:var(--grid-spacing-width);margin:var(--grid-row-gutter)}.eps-grid-container--spacing>.eps-grid-item{padding:var(--grid-spacing-gutter)}.eps-grid--direction-row{flex-direction:row}.eps-grid--direction-row-reverse{flex-direction:row-reverse}.eps-grid--direction-column{flex-direction:column}.eps-grid--direction-column-reverse{flex-direction:column-reverse}.eps-grid--justify-stretch{justify-content:stretch}.eps-grid--justify-start{justify-content:flex-start}.eps-grid--justify-center{justify-content:center}.eps-grid--justify-end{justify-content:flex-end}.eps-grid--justify-space-between{justify-content:space-between}.eps-grid--justify-space-around{justify-content:space-around}.eps-grid--justify-space-evenly{justify-content:space-evenly}.eps-grid--align-content-stretch{align-content:stretch}.eps-grid--align-content-start{align-content:flex-start}.eps-grid--align-content-center{align-content:center}.eps-grid--align-content-end{align-content:flex-end}.eps-grid--align-content-space-between{align-content:space-between}.eps-grid--align-items-start{align-items:flex-start}.eps-grid--align-items-center{align-items:center}.eps-grid--align-items-end{align-items:flex-end}.eps-grid--align-items-baseline{align-items:baseline}.eps-grid--align-items-stretch{align-items:stretch}.eps-grid-item--zero-min-width{min-width:0}@media screen and (min-width:480px){.eps-grid-item-sm{flex-grow:1;max-width:100%;flex-basis:0}}@media screen and (min-width:768px){.eps-grid-item-md{flex-grow:1;max-width:100%;flex-basis:0}}@media screen and (min-width:1025px){.eps-grid-item-lg{flex-grow:1;max-width:100%;flex-basis:0}}@media screen and (min-width:1440px){.eps-grid-item-xl{flex-grow:1;max-width:100%;flex-basis:0}}@media screen and (min-width:1600px){.eps-grid-item-xxl{flex-grow:1;max-width:100%;flex-basis:0}}.eps-grid-item-xs-1{flex-grow:0;max-width:calc(1 / 12 * 100%);flex-basis:calc(1 / 12 * 100%)}.eps-grid-item-xs-2{flex-grow:0;max-width:calc(2 / 12 * 100%);flex-basis:calc(2 / 12 * 100%)}.eps-grid-item-xs-3{flex-grow:0;max-width:calc(3 / 12 * 100%);flex-basis:calc(3 / 12 * 100%)}.eps-grid-item-xs-4{flex-grow:0;max-width:calc(4 / 12 * 100%);flex-basis:calc(4 / 12 * 100%)}.eps-grid-item-xs-5{flex-grow:0;max-width:calc(5 / 12 * 100%);flex-basis:calc(5 / 12 * 100%)}.eps-grid-item-xs-6{flex-grow:0;max-width:calc(6 / 12 * 100%);flex-basis:calc(6 / 12 * 100%)}.eps-grid-item-xs-7{flex-grow:0;max-width:calc(7 / 12 * 100%);flex-basis:calc(7 / 12 * 100%)}.eps-grid-item-xs-8{flex-grow:0;max-width:calc(8 / 12 * 100%);flex-basis:calc(8 / 12 * 100%)}.eps-grid-item-xs-9{flex-grow:0;max-width:calc(9 / 12 * 100%);flex-basis:calc(9 / 12 * 100%)}.eps-grid-item-xs-10{flex-grow:0;max-width:calc(10 / 12 * 100%);flex-basis:calc(10 / 12 * 100%)}.eps-grid-item-xs-11{flex-grow:0;max-width:calc(11 / 12 * 100%);flex-basis:calc(11 / 12 * 100%)}.eps-grid-item-xs-12{flex-grow:0;max-width:calc(12 / 12 * 100%);flex-basis:calc(12 / 12 * 100%)}@media screen and (min-width:480px){.eps-grid-item-sm-1{flex-grow:0;max-width:calc(1 / 12 * 100%);flex-basis:calc(1 / 12 * 100%)}.eps-grid-item-sm-2{flex-grow:0;max-width:calc(2 / 12 * 100%);flex-basis:calc(2 / 12 * 100%)}.eps-grid-item-sm-3{flex-grow:0;max-width:calc(3 / 12 * 100%);flex-basis:calc(3 / 12 * 100%)}.eps-grid-item-sm-4{flex-grow:0;max-width:calc(4 / 12 * 100%);flex-basis:calc(4 / 12 * 100%)}.eps-grid-item-sm-5{flex-grow:0;max-width:calc(5 / 12 * 100%);flex-basis:calc(5 / 12 * 100%)}.eps-grid-item-sm-6{flex-grow:0;max-width:calc(6 / 12 * 100%);flex-basis:calc(6 / 12 * 100%)}.eps-grid-item-sm-7{flex-grow:0;max-width:calc(7 / 12 * 100%);flex-basis:calc(7 / 12 * 100%)}.eps-grid-item-sm-8{flex-grow:0;max-width:calc(8 / 12 * 100%);flex-basis:calc(8 / 12 * 100%)}.eps-grid-item-sm-9{flex-grow:0;max-width:calc(9 / 12 * 100%);flex-basis:calc(9 / 12 * 100%)}.eps-grid-item-sm-10{flex-grow:0;max-width:calc(10 / 12 * 100%);flex-basis:calc(10 / 12 * 100%)}.eps-grid-item-sm-11{flex-grow:0;max-width:calc(11 / 12 * 100%);flex-basis:calc(11 / 12 * 100%)}.eps-grid-item-sm-12{flex-grow:0;max-width:calc(12 / 12 * 100%);flex-basis:calc(12 / 12 * 100%)}}@media screen and (min-width:768px){.eps-grid-item-md-1{flex-grow:0;max-width:calc(1 / 12 * 100%);flex-basis:calc(1 / 12 * 100%)}.eps-grid-item-md-2{flex-grow:0;max-width:calc(2 / 12 * 100%);flex-basis:calc(2 / 12 * 100%)}.eps-grid-item-md-3{flex-grow:0;max-width:calc(3 / 12 * 100%);flex-basis:calc(3 / 12 * 100%)}.eps-grid-item-md-4{flex-grow:0;max-width:calc(4 / 12 * 100%);flex-basis:calc(4 / 12 * 100%)}.eps-grid-item-md-5{flex-grow:0;max-width:calc(5 / 12 * 100%);flex-basis:calc(5 / 12 * 100%)}.eps-grid-item-md-6{flex-grow:0;max-width:calc(6 / 12 * 100%);flex-basis:calc(6 / 12 * 100%)}.eps-grid-item-md-7{flex-grow:0;max-width:calc(7 / 12 * 100%);flex-basis:calc(7 / 12 * 100%)}.eps-grid-item-md-8{flex-grow:0;max-width:calc(8 / 12 * 100%);flex-basis:calc(8 / 12 * 100%)}.eps-grid-item-md-9{flex-grow:0;max-width:calc(9 / 12 * 100%);flex-basis:calc(9 / 12 * 100%)}.eps-grid-item-md-10{flex-grow:0;max-width:calc(10 / 12 * 100%);flex-basis:calc(10 / 12 * 100%)}.eps-grid-item-md-11{flex-grow:0;max-width:calc(11 / 12 * 100%);flex-basis:calc(11 / 12 * 100%)}.eps-grid-item-md-12{flex-grow:0;max-width:calc(12 / 12 * 100%);flex-basis:calc(12 / 12 * 100%)}}@media screen and (min-width:1025px){.eps-grid-item-lg-1{flex-grow:0;max-width:calc(1 / 12 * 100%);flex-basis:calc(1 / 12 * 100%)}.eps-grid-item-lg-2{flex-grow:0;max-width:calc(2 / 12 * 100%);flex-basis:calc(2 / 12 * 100%)}.eps-grid-item-lg-3{flex-grow:0;max-width:calc(3 / 12 * 100%);flex-basis:calc(3 / 12 * 100%)}.eps-grid-item-lg-4{flex-grow:0;max-width:calc(4 / 12 * 100%);flex-basis:calc(4 / 12 * 100%)}.eps-grid-item-lg-5{flex-grow:0;max-width:calc(5 / 12 * 100%);flex-basis:calc(5 / 12 * 100%)}.eps-grid-item-lg-6{flex-grow:0;max-width:calc(6 / 12 * 100%);flex-basis:calc(6 / 12 * 100%)}.eps-grid-item-lg-7{flex-grow:0;max-width:calc(7 / 12 * 100%);flex-basis:calc(7 / 12 * 100%)}.eps-grid-item-lg-8{flex-grow:0;max-width:calc(8 / 12 * 100%);flex-basis:calc(8 / 12 * 100%)}.eps-grid-item-lg-9{flex-grow:0;max-width:calc(9 / 12 * 100%);flex-basis:calc(9 / 12 * 100%)}.eps-grid-item-lg-10{flex-grow:0;max-width:calc(10 / 12 * 100%);flex-basis:calc(10 / 12 * 100%)}.eps-grid-item-lg-11{flex-grow:0;max-width:calc(11 / 12 * 100%);flex-basis:calc(11 / 12 * 100%)}.eps-grid-item-lg-12{flex-grow:0;max-width:calc(12 / 12 * 100%);flex-basis:calc(12 / 12 * 100%)}}@media screen and (min-width:1440px){.eps-grid-item-xl-1{flex-grow:0;max-width:calc(1 / 12 * 100%);flex-basis:calc(1 / 12 * 100%)}.eps-grid-item-xl-2{flex-grow:0;max-width:calc(2 / 12 * 100%);flex-basis:calc(2 / 12 * 100%)}.eps-grid-item-xl-3{flex-grow:0;max-width:calc(3 / 12 * 100%);flex-basis:calc(3 / 12 * 100%)}.eps-grid-item-xl-4{flex-grow:0;max-width:calc(4 / 12 * 100%);flex-basis:calc(4 / 12 * 100%)}.eps-grid-item-xl-5{flex-grow:0;max-width:calc(5 / 12 * 100%);flex-basis:calc(5 / 12 * 100%)}.eps-grid-item-xl-6{flex-grow:0;max-width:calc(6 / 12 * 100%);flex-basis:calc(6 / 12 * 100%)}.eps-grid-item-xl-7{flex-grow:0;max-width:calc(7 / 12 * 100%);flex-basis:calc(7 / 12 * 100%)}.eps-grid-item-xl-8{flex-grow:0;max-width:calc(8 / 12 * 100%);flex-basis:calc(8 / 12 * 100%)}.eps-grid-item-xl-9{flex-grow:0;max-width:calc(9 / 12 * 100%);flex-basis:calc(9 / 12 * 100%)}.eps-grid-item-xl-10{flex-grow:0;max-width:calc(10 / 12 * 100%);flex-basis:calc(10 / 12 * 100%)}.eps-grid-item-xl-11{flex-grow:0;max-width:calc(11 / 12 * 100%);flex-basis:calc(11 / 12 * 100%)}.eps-grid-item-xl-12{flex-grow:0;max-width:calc(12 / 12 * 100%);flex-basis:calc(12 / 12 * 100%)}}@media screen and (min-width:1600px){.eps-grid-item-xxl-1{flex-grow:0;max-width:calc(1 / 12 * 100%);flex-basis:calc(1 / 12 * 100%)}.eps-grid-item-xxl-2{flex-grow:0;max-width:calc(2 / 12 * 100%);flex-basis:calc(2 / 12 * 100%)}.eps-grid-item-xxl-3{flex-grow:0;max-width:calc(3 / 12 * 100%);flex-basis:calc(3 / 12 * 100%)}.eps-grid-item-xxl-4{flex-grow:0;max-width:calc(4 / 12 * 100%);flex-basis:calc(4 / 12 * 100%)}.eps-grid-item-xxl-5{flex-grow:0;max-width:calc(5 / 12 * 100%);flex-basis:calc(5 / 12 * 100%)}.eps-grid-item-xxl-6{flex-grow:0;max-width:calc(6 / 12 * 100%);flex-basis:calc(6 / 12 * 100%)}.eps-grid-item-xxl-7{flex-grow:0;max-width:calc(7 / 12 * 100%);flex-basis:calc(7 / 12 * 100%)}.eps-grid-item-xxl-8{flex-grow:0;max-width:calc(8 / 12 * 100%);flex-basis:calc(8 / 12 * 100%)}.eps-grid-item-xxl-9{flex-grow:0;max-width:calc(9 / 12 * 100%);flex-basis:calc(9 / 12 * 100%)}.eps-grid-item-xxl-10{flex-grow:0;max-width:calc(10 / 12 * 100%);flex-basis:calc(10 / 12 * 100%)}.eps-grid-item-xxl-11{flex-grow:0;max-width:calc(11 / 12 * 100%);flex-basis:calc(11 / 12 * 100%)}.eps-grid-item-xxl-12{flex-grow:0;max-width:calc(12 / 12 * 100%);flex-basis:calc(12 / 12 * 100%)}}.eps-theme-dark,:root{--menu-title-color:#515962}.eps-menu ul{list-style:none;padding:0;margin:0}.eps-menu ul li{display:flex}.eps-menu__title{padding:.5rem 1.875rem;font-size:.6875rem;line-height:1.2;text-transform:uppercase;font-weight:400;color:var(--menu-title-color)}:root{--eps-modal-background-color:#fff;--eps-modal-header-background-color:#2563eb;--eps-tip-background-color:#f0f7ff}.eps-theme-dark{--eps-modal-background-color:#0c0d0e;--eps-modal-header-background-color:#07c;--eps-tip-background-color:#0a1a3d}.eps-modal{max-width:43.75rem;background:var(--eps-modal-background-color);border-radius:.1875rem;animation:eps-animation-pop .15s cubic-bezier(.57,.53,.71,1.47) forwards}.eps-modal__overlay{background:rgba(0,0,0,.5);position:fixed;display:flex;top:0;left:0;width:100%;height:100%;align-items:center;justify-content:center;z-index:1030}.eps-modal__header{font-size:.875rem;background:var(--eps-modal-header-background-color);height:2.75rem;padding:.625rem 1rem;border-radius:.1875rem}.eps-modal__header,.eps-modal__header .title{color:#fff}.eps-modal__icon{margin-inline-end:.625rem}.eps-modal__body{padding:1.875rem}.eps-modal .eps-tip,.eps-modal__tip{padding:.5rem;padding-inline-start:.75rem;border-inline-start:3px solid #2563eb;background-color:var(--eps-tip-background-color)}.eps-modal .eps-tip:not(:last-child),.eps-modal__tip:not(:last-child){margin-block-end:1.875rem}.eps-modal .eps-tip:not(:first-child),.eps-modal__section:not(:first-child),.eps-modal__tip:not(:first-child){margin-block-start:1.875rem}.eps-modal__close-wrapper{padding-inline-start:1rem;border-inline-start:solid 1px #fff}.eps-add-new-button{display:inline-flex;--eps-add-new-button-size:1.5rem;line-height:var(--eps-add-new-button-size);cursor:pointer}.eps-add-new-button .eps-icon{background-color:#f3bafd;color:#0c0d0e;width:var(--eps-add-new-button-size);height:var(--eps-add-new-button-size);border-radius:100%;font-size:calc(var(--eps-add-new-button-size) * .75);text-align:center;line-height:var(--eps-add-new-button-size)}.eps-add-new-button span:not(.sr-only){margin-inline-start:.625rem;font-weight:500}.eps-add-new-button--sm{--eps-add-new-button-size:1rem}:root{--select2-selection-background-color:#fff;--select2-selection-color:#515962;--select2-selection-border-color:#9da5ae;--select2-selection-opened-focused-border-color:#babfc5;--select2-single-selection-rendered-color:#515962;--select2-default-single-selection-background-color:#fff;--select2-default-single-selection-border-color:#9da5ae;--select2-default-multiple-selection-background-color:#fff;--select2-default-multiple-selection-choice-background-color:#babfc5;--select2-default-multiple-selection-choice-color:#515962;--select2-default-multiple-selection-choice-border-color:#babfc5;--select2-default-multiple-selection-choice-remove-color:#69727d;--select2-default-multiple-selection-choice-remove-hover-color:#515962;--select2-default-results-selected-option-background-color:#fff;--select2-default-results-selected-option-color:#515962;--select2-default-results-highlighted-option-background-color:#5897fb;--select2-default-results-highlighted-option-color:#fff;--select2-results-selected-option-background-color:#5897fb;--select2-results-selected-option-color:#fff;--select2-dropdown-background-color:#fff;--select2-dropdown-border-color:#9da5ae}.eps-theme-dark{--select2-selection-background-color:#3f444b;--select2-selection-color:#d5d8dc;--select2-selection-border-color:#818a96;--select2-selection-opened-focused-border-color:#9da5ae;--select2-single-selection-rendered-color:#d5d8dc;--select2-default-single-selection-background-color:#3f444b;--select2-default-single-selection-border-color:#69727d;--select2-default-multiple-selection-background-color:#3f444b;--select2-default-multiple-selection-choice-background-color:#69727d;--select2-default-multiple-selection-choice-color:#d5d8dc;--select2-default-multiple-selection-choice-border-color:#69727d;--select2-default-multiple-selection-choice-remove-color:#babfc5;--select2-default-multiple-selection-choice-remove-hover-color:#d5d8dc;--select2-default-results-selected-option-background-color:#3f444b;--select2-default-results-selected-option-color:#d5d8dc;--select2-default-results-highlighted-option-background-color:#69727d;--select2-default-results-highlighted-option-color:#d5d8dc;--select2-results-selected-option-background-color:#69727d;--select2-results-selected-option-color:#d5d8dc;--select2-dropdown-background-color:#3f444b;--select2-dropdown-border-color:#818a96}.select2-container:not(.select2-container--open):not(.select2-container--focus) .select2-selection--multiple,.select2-container:not(.select2-container--open):not(.select2-container--focus) .select2-selection--single{background-color:var(--select2-selection-background-color);color:var(--select2-selection-color);border-color:var(--select2-selection-border-color)}.select2-container.select2-container--focus .select2-selection--multiple,.select2-container.select2-container--focus .select2-selection--single,.select2-container.select2-container--open .select2-selection--multiple,.select2-container.select2-container--open .select2-selection--single{border-color:var(--select2-selection-opened-focused-border-color)}.select2-container.select2-container--default .select2-selection--single .select2-selection__rendered{color:var(--select2-single-selection-rendered-color)}.select2-container--default .select2-selection--single{background-color:var(--select2-default-single-selection-background-color);border-color:var(--select2-default-single-selection-border-color)}.select2-container--default .select2-selection--multiple{background-color:var(--select2-default-multiple-selection-background-color)}.select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:var(--select2-default-multiple-selection-choice-background-color);color:var(--select2-default-multiple-selection-choice-color);border-color:var(--select2-default-multiple-selection-choice-border-color)}.select2-container--default .select2-selection--multiple .select2-selection__choice__remove{color:var(--select2-default-multiple-selection-choice-remove-color)}.select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover{color:var(--select2-default-multiple-selection-choice-remove-hover-color)}.select2-container--default .select2-results__option[aria-selected]{background-color:var(--select2-default-results-selected-option-background-color);color:var(--select2-default-results-selected-option-color)}.select2-container--default .select2-results__option--highlighted[aria-selected]{background-color:var(--select2-default-results-highlighted-option-background-color);color:var(--select2-default-results-highlighted-option-color)}.select2-container .select2-results__option[aria-selected=true]{background-color:var(--select2-results-selected-option-background-color);color:var(--select2-results-selected-option-color)}.select2-container .select2-dropdown{background-color:var(--select2-dropdown-background-color);border-color:var(--select2-dropdown-border-color)}.eps-notice{--eps-box-notice-background-color:#f1f2f3;padding:.625rem 1rem}.eps-notice-semantic{border-inline-start:3px solid var(--eps-notice-semantic-color);background-color:var(--eps-notice-semantic-bg)}.eps-notice-semantic .eps-notice__icon{color:var(--eps-notice-semantic-color);font-size:1rem;margin-inline-end:.75rem}.eps-notice--warning{--eps-notice-semantic-color:#f59e0b;--eps-notice-semantic-bg:#fffbeb}.eps-notice--danger{--eps-notice-semantic-color:#dc2626;--eps-notice-semantic-bg:#fef1f4}.eps-notice--info{--eps-notice-semantic-color:#2563eb;--eps-notice-semantic-bg:#f0f7ff}.eps-notice__text{margin:0;padding:0}.eps-notice__button-container{flex-shrink:0;margin-inline-start:1.25rem;width:auto}.eps-theme-dark .eps-notice{--eps-box-notice-background-color:#515962}.eps-theme-dark .eps-notice--warning{--eps-notice-semantic-bg:#311808}.eps-theme-dark .eps-notice--danger{--eps-notice-semantic-bg:#390a0a}.eps-theme-dark .eps-notice--info{--eps-notice-semantic-bg:#0a1a3d}.eps-list{--eps-list-item-separated-border-color:#babfc5;padding:0;margin:0;border-radius:.1875rem;border:1px solid var(--e-a-border-color);list-style-type:none}.eps-list--padding{padding:var(--eps-list-padding)}.eps-list__item{padding:0}.eps-list__item--padding{padding:var(--eps-list-item-padding)}.eps-list--separated .eps-list__item:not(:last-child){border-block-end:1px solid var(--eps-list-item-separated-border-color)}.eps-theme-dark .eps-list{--eps-list-item-separated-border-color:#3f444b}:root{--popover-background-color:#fff;--popover-item-color:#515962;--popover-item-hover-color:#3f444b;--popover-item-danger-hover-color:#dc2626;--popover-item-background-color:#fff;--popover-box-shadow-color:rgba(0,0,0,0.15);--popover-box-shadow-size:0px 1px 20px;--popover-arrow-color:#fff}.eps-theme-dark{--popover-background-color:#1f2124;--popover-item-color:#fff;--popover-item-hover-color:#d5d8dc;--popover-item-danger-hover-color:#f84343;--popover-item-background-color:#1f2124;--popover-box-shadow-color:rgba(0,0,0,0.15);--popover-box-shadow-size:0px 1px 20px;--popover-arrow-color:#1f2124}.eps-popover{padding:10px 0;background-color:var(--popover-background-color);box-shadow:var(--popover-box-shadow-size) var(--popover-box-shadow-color);list-style:none;display:flex;flex-direction:column;min-width:120px;border-radius:.1875rem;position:absolute;z-index:1050;margin-block-start:9px;transform:translateX(-50%);left:.25rem}.eps-popover__background{position:fixed;top:0;bottom:0;left:0;right:0;z-index:1030}.eps-popover__container{position:relative}.eps-popover:before{content:"";display:block;position:absolute;width:16px;height:9px;margin:0 .1875rem 9px;top:-9px;left:50%;transform:translateX(-50%);border-color:transparent;border-style:solid;border-width:0 calc(16px / 2) 9px;border-block-end-color:var(--popover-arrow-color)}.eps-popover__item{padding:.3125rem 1rem;background-color:var(--popover-item-background-color);color:var(--popover-item-color);font-size:.6875rem;font-weight:500;line-height:.8125rem;width:100%;align-items:center;cursor:pointer}.eps-popover__item:hover{color:var(--popover-item-hover-color)}.eps-popover__item--danger:hover{color:var(--popover-item-danger-hover-color)}.eps-popover__item .eps-icon{font-size:inherit;margin-inline-end:.3125rem}.eps-css-grid{display:grid;grid-template-columns:repeat(var(--eps-grid-columns,auto-fill),minmax(var(--eps-grid-col-min-width,1fr),var(--eps-grid-col-max-width,1fr)));grid-gap:var(--eps-grid-spacing)}.eps-box{--eps-box-color:#1f2124;--eps-box-input-color:#1f2124;padding:0;border-radius:.1875rem;color:var(--eps-box-color)}.eps-box--padding{padding:var(--eps-box-padding)}.eps-box>input{width:100%;outline:0;border:0;background-color:transparent;color:var(--eps-box-input-color)}.eps-theme-dark .eps-box{--eps-box-color:#d5d8dc;--eps-box-input-color:#d5d8dc}:root{--checkbox-border-color:#9da5ae;--checkbox-hover-border-color:#8f98a2;--checkbox-active-border-color:#abb2ba;--checkbox-background-color:#fff;--checkbox-checked-background-color:#515962;--checkbox-checked-hover-background-color:#454c54;--checkbox-checked-active-background-color:#5d6670;--checkbox-checked-disabled-background-color:#d5d8dc;--checkbox-indicator-color:#fff;--checkbox-error-background-color:#dc2626}.eps-theme-dark{--checkbox-background-color:transparent}.eps-checkbox{-webkit-appearance:none;-moz-appearance:none;appearance:none;border-radius:.1875rem;width:15px;height:15px;outline:0;background-color:var(--checkbox-background-color);display:inline-flex;justify-content:center;align-items:center;border:1px solid var(--checkbox-border-color)}.eps-checkbox:after{display:inline-block;margin-block-end:calc(.25 / 2 * 100%);content:" ";width:3px;height:6px;transform:rotate(45deg)}.eps-checkbox:hover{--checkbox-border-color:var(--checkbox-hover-border-color)}.eps-checkbox:active{--checkbox-border-color:var(--checkbox-active-border-color)}.eps-checkbox:checked{--checkbox-background-color:var(--checkbox-checked-background-color);--checkbox-border-color:var(--checkbox-checked-background-color)}.eps-checkbox:checked:after{border:solid #fff;border-width:0 1px 1px 0}.eps-checkbox:checked:hover{--checkbox-background-color:var(--checkbox-checked-hover-background-color);--checkbox-border-color:var(--checkbox-checked-hover-background-color)}.eps-checkbox:checked:active{--checkbox-background-color:var(--checkbox-checked-active-background-color);--checkbox-border-color:var(--checkbox-checked-active-background-color)}.eps-checkbox:checked:disabled{--checkbox-background-color:var(--checkbox-checked-disabled-background-color);--checkbox-border-color:var(--checkbox-checked-disabled-background-color)}.eps-checkbox--rounded{border-radius:50%}.eps-checkbox--indeterminate{--checkbox-background-color:var(--checkbox-checked-background-color);--checkbox-border-color:var(--checkbox-checked-background-color)}.eps-checkbox--indeterminate:after{display:inline-block;margin-block-end:0;content:" ";width:7px;height:0;transform:rotate(0deg);border-block-start:1px solid #fff}.eps-checkbox--error:after,.eps-checkbox--error:before,.eps-checkbox--error:checked:after,.eps-checkbox--error:checked:before{display:inline-block;margin-block-end:0;content:" ";width:7px;height:0;border:solid #fff;border-width:1px 0 0;position:absolute}.eps-checkbox--error:before,.eps-checkbox--error:checked:before{transform:rotate(45deg)}.eps-checkbox--error:after,.eps-checkbox--error:checked:after{transform:rotate(-45deg)}.eps-checkbox--error,.eps-checkbox--error:checked,.eps-checkbox--error:checked:hover,.eps-checkbox--error:hover{--checkbox-background-color:var(--checkbox-error-background-color);--checkbox-border-color:var(--checkbox-error-background-color)}:root{--e-app-drag-drop-background-color:#fff;--e-app-drag-drop-outline-color:#e6e8ea}.eps-theme-dark{--e-app-drag-drop-background-color:#2b2c31;--e-app-drag-drop-outline-color:#333438}.e-app-drag-drop{background-color:var(--e-app-drag-drop-background-color);outline:2px dashed var(--e-app-drag-drop-outline-color);outline-offset:-.75rem;margin-block-end:1.5rem;padding:4.125rem;text-align:center}.e-app-drag-drop--drag-over{outline-color:#2563eb}.eps-dialog{border-radius:3px;width:375px}.eps-dialog__close-button{position:absolute;top:-2.75rem;right:-2.75rem;margin-block-start:.625rem;margin-inline-end:.625rem;z-index:1040;font-size:1.25rem;color:#fff}.eps-dialog__content{padding:1.5rem 1.875rem 1rem;font-size:.75rem}.eps-dialog__text,.eps-dialog__title{text-align:center}.eps-dialog__buttons{display:flex}.eps-dialog__button{flex:1;border-block-start:1px solid var(--hr-color);line-height:2.75rem;text-align:center;justify-content:center}.eps-dialog__button:last-child:not(:first-child){border-inline-start:1px solid var(--hr-color)}.e-app__popover{display:none;position:absolute;box-shadow:0 2px 15px rgba(0,0,0,.3);border-radius:6px;padding:20px;width:-moz-fit-content;width:fit-content;z-index:999;background-color:var(--e-a-bg-default)}.e-app__popover:before{content:"";position:absolute;top:-16px;right:var(--popover-arrow-offset-end,22px);border:8px solid transparent;border-block-end-color:#fff}.eps-inline-link{color:var(--eps-inline-link-color);background-color:initial;border:0;padding:0}.eps-inline-link--color-primary{--eps-inline-link-color:#0a875a}.eps-inline-link--color-secondary{--eps-inline-link-color:#818a96}.eps-inline-link--color-danger{--eps-inline-link-color:#dc2626}.eps-inline-link--color-cta{--eps-inline-link-color:#93003f}.eps-inline-link--color-link{--eps-inline-link-color:#515962}.eps-inline-link--color-disabled{--eps-inline-link-color:#d5d8dc}.eps-inline-link--underline-always,.eps-inline-link--underline-always:hover,.eps-inline-link--underline-hover:hover{text-decoration:underline}.eps-inline-link--italic{font-style:italic}.eps-inline-link,.eps-inline-link:focus{outline:none}.eps-text-field{--eps-text-field-color:#515962;--eps-text-field-background-color:transparent;--eps-text-field-placeholder-color:#69727d;--eps-text-field-outlined-border-color:#9da5ae;--eps-text-field-outlined-focus-border-color:#515962;width:100%;color:var(--eps-text-field-color);background-color:var(--eps-text-field-background-color);border:0;margin-block-end:5px;outline:none;font-family:Roboto,Arial,Helvetica,Verdana,sans-serif;font-size:.875rem;font-weight:400;line-height:1.5}.eps-text-field--outlined{border-radius:.1875rem;border:1px solid var(--eps-text-field-outlined-border-color);padding:.625rem}.eps-text-field--outlined:focus{border-color:var(--eps-text-field-outlined-focus-border-color)}.eps-text-field::-moz-placeholder{color:var(--eps-text-field-placeholder-color);font-family:Roboto,Arial,Helvetica,Verdana,sans-serif;font-size:.875rem;font-weight:400;line-height:1.5}.eps-text-field::placeholder{color:var(--eps-text-field-placeholder-color);font-family:Roboto,Arial,Helvetica,Verdana,sans-serif;font-size:.875rem;font-weight:400;line-height:1.5}.eps-theme-dark .eps-text-field{--eps-text-field-color:#babfc5;--eps-text-field-background-color:transparent;--eps-text-field-placeholder-color:#9da5ae;--eps-text-field-outlined-border-color:#3f444b;--eps-text-field-outlined-focus-border-color:#9da5ae}.eps-theme-dark--outlined{border-color:var(--eps-text-field-outlined-border-color)}.eps-theme-dark--outlined:focus{border-color:var(--eps-text-field-outlined-focus-border-color)}.e-app-import-export-content-layout{display:flex;justify-content:center;height:100%}.e-app-import-export-content-layout__container{flex-basis:1075px}.e-app-export-complete__kit-content-title{margin:2.75rem 0 .625rem}.e-app-export-kit-content{--e-app-export-kit-content-title-color:#3f444b;--e-app-export-kit-content-description-color:#515962;--e-app-export-kit-content-sm-notice-color:#babfc5}.e-app-export-kit-content__checkbox{flex-shrink:0;margin-inline-end:.75rem}.e-app-export-kit-content__title{color:var(--e-app-export-kit-content-title-color)}.e-app-export-kit-content__description{color:var(--e-app-export-kit-content-description-color);margin-inline-end:1.25rem}.e-app-export-kit-content__notice{margin-block-start:1rem}.e-app-export-kit-content__small-notice{font-style:italic;color:var(--e-app-export-kit-content-sm-notice-color)}.eps-theme-dark .e-app-export-kit-content{--e-app-export-kit-content-title-color:#d5d8dc;--e-app-export-kit-content-description-color:#babfc5;--e-app-export-kit-content-sm-notice-color:#818a96}.e-app-import-export-kit-data{--e-app-import-export-kit-data-site-area-color:#3f444b;--e-app-import-export-kit-data-included-color:#69727d}.e-app-import-export-kit-data__included,.e-app-import-export-kit-data__site-area{margin-block-end:0}.e-app-import-export-kit-data__site-area{color:var(--e-app-import-export-kit-data-site-area-color);font-weight:700}.e-app-import-export-kit-data__included{color:var(--e-app-import-export-kit-data-included-color)}.eps-theme-dark .e-app-import-export-kit-data{--e-app-import-export-kit-data-site-area-color:#babfc5;--e-app-import-export-kit-data-included-color:#9da5ae}.e-app-import-resolver{--e-app-import-resolver-panel-header-background-color:#fff;--e-app-import-resolver-panel-body-background-color:hsla(0,0%,100%,0.5);--e-app-import-resolver-conflicts-asset-border-color:#818a96;--e-app-import-resolver-conflicts-asset-inactive-color:#69727d;padding-block-end:1.25rem}.e-app-import-resolver__notice{margin-block-end:1.25rem}.e-app-import-resolver__panel,.e-app-import-resolver__panel:hover{background-color:initial}.e-app-import-resolver__panel-header{background-color:var(--e-app-import-resolver-panel-header-background-color)}.e-app-import-resolver__panel-body{background-color:var(--e-app-import-resolver-panel-body-background-color)}.e-app-import-resolver-conflicts__container{box-shadow:0 2px 3px 1px var(--color-box-shadow-color)}.e-app-import-resolver-conflicts__checkbox{flex-shrink:0;margin-inline-end:.75rem}.e-app-import-resolver-conflicts__title{line-height:1}.e-app-import-resolver-conflicts__asset:not(:first-child){border-inline-start:2px solid var(--e-app-import-resolver-conflicts-asset-border-color);padding-inline-start:1rem;margin-inline-start:1rem}.e-app-import-resolver-conflicts__asset:not(.active){color:var(--e-app-import-resolver-conflicts-asset-inactive-color)}.e-app-import-resolver-conflicts__edit-template{margin-inline-start:.3125rem}.eps-theme-dark .e-app-import-resolver{--e-app-import-resolver-panel-header-background-color:#69727d;--e-app-import-resolver-panel-body-background-color:rgba(0,0,0,0.05);--e-app-import-resolver-conflicts-asset-border-color:#818a96;--e-app-import-resolver-conflicts-asset-inactive-color:#9da5ae}.eps-panel{--eps-panel-header-background-color:transparent;--eps-panel-body-background-color:transparent}.eps-panel,.eps-panel:hover{background-color:initial}.eps-panel__header{background-color:var(--eps-panel-header-background-color);border-radius:.1875rem}.eps-panel__body{background-color:var(--eps-panel-body-background-color);border-radius:0 0 .1875rem .1875rem}.eps-theme-dark .eps-panel{--eps-panel-header-background-color:transparent;--eps-panel-body-background-color:transparent}.e-app-export-kit{padding-block-end:1.25rem}.e-app-export-kit-information{margin-block-start:1.25rem}.e-app-export-kit-information__field-header{margin-block-end:.625rem}.e-app-export-kit-information__label{margin:0}.e-app-export-kit-information__info-icon{margin-inline-start:.625rem}.e-app-export-kit-info-modal__icon{padding-inline-start:.625rem}.e-app-export-kit-info-modal__heading{margin-block-end:1.25rem}.e-app-import-export-info-modal__section:not(:first-child){margin-block-start:1.875rem}.e-app-import-export-info-modal__heading{margin-block-end:1.25rem}:root{--eps-badge-background-color:#fff}.eps-theme-dark{--eps-badge-background-color:#515962}.eps-badge{display:inline-block;background:var(--eps-badge-background-color);padding:0 .5rem;line-height:1.8;box-shadow:0 3px 6px var(--color-box-shadow-color);border-radius:4px;font-size:.75rem}.eps-badge--sm{font-size:.625rem;border-radius:3px;padding:0 .3125rem;line-height:1.5}.eps-collapse__title{cursor:pointer;padding:.3125rem 0;display:flex;align-items:center;justify-content:space-between;width:100%;background:transparent;border:none;color:inherit}.eps-collapse__title:focus{outline:none}.eps-collapse__icon{transition:all .15s;transform:rotate(0deg)}.eps-collapse__content{margin-block-start:.625rem;display:none}.eps-collapse[data-open] .eps-collapse__content{display:block}.eps-collapse[data-open] .eps-collapse__icon{transform:rotate(90deg)}.e-kit-library-promotion{--e-kit-library-promotion-color:tints(600)}.eps-theme-dark .e-kit-library-promotion{--e-kit-library-promotion-color:dark-tints(400)}.e-kit-library-promotion{width:100%;text-align:center;margin-block-start:1.875rem;color:var(--e-kit-library-promotion-color)}.e-kit-library__error-screen{margin-block-start:2.75rem}.e-kit-library__error-screen-title{margin-block-start:2.75rem;margin-block-end:0}.e-kit-library__error-screen-description{margin-block-start:1.5rem;color:#69727d;text-align:center;max-width:520px}.e-kit-library__kit-favorite-actions{padding:.3125rem;transition:all .3s;border-radius:4px}.e-kit-library__kit-favorite-actions--active{color:#dc2626}.e-kit-library__kit-favorite-actions--loading{opacity:1%;cursor:default}.e-kit-library__kit-favorite-actions:hover{background-color:rgba(220,38,38,.1)}.e-kit-library__filter-indication{margin-block-start:1.5rem;display:flex;align-items:center}.e-kit-library__filter-indication-text{margin-block-end:0;display:flex;align-items:center}.e-kit-library__filter-indication-badge{margin-inline-start:.3125rem;display:flex;align-items:center}.e-kit-library__filter-indication-badge-remove{margin-inline-start:.3125rem;font-size:.875rem}.e-kit-library__filter-indication-button{margin-inline-start:1.5rem}#eps-app-header-btn-apply,#eps-app-header-btn-connect,#eps-app-header-btn-promotion{margin-inline-start:.625rem;margin-inline-end:.625rem}.e-kit-library__apply-button{display:flex;align-items:center;justify-content:center;gap:.3125rem}.e-kit-library__kit-item{--e-kit-library-kit-item-overlay-promotion-button-background-color:#d5d8dc}.eps-theme-dark .e-kit-library__kit-item{--e-kit-library-kit-item-overlay-promotion-button-background-color:#515962}.e-kit-library__kit-item-overlay{height:100%}.e-kit-library__kit-item-overlay>:first-child{flex:1}.e-kit-library__kit-item-overlay-overview-button{display:flex;flex-direction:column;align-items:center;justify-content:center;color:#fff;height:100%;width:100%}.e-kit-library__kit-item-overlay-overview-button>i{font-size:2rem;margin-block-end:5px}.e-kit-library__kit-item-overlay-overview-button>span{font-size:.9rem}.e-kit-library__kit-item-overlay-promotion-button{display:flex;width:100%;background:#fff;align-items:center;justify-content:center;padding:10px;font-size:13px;color:#93003f;background:var(--e-kit-library-kit-item-overlay-promotion-button-background-color)}.e-kit-library__kit-item-overlay-promotion-button>*{margin:0 3px}.e-kit-library__kit-item-subscription-plan-badge{position:absolute;top:0;right:0;margin:.3125rem;background-color:var(--e-a-color-brand);color:#fff;text-transform:uppercase}:root{--e-kit-library-header-back-border:1px solid var(--e-a-border-color);--e-kit-library-header-back-color:#69727d}.eps-theme-dark{--e-kit-library-header-back-border:1px solid #818a96;--e-kit-library-header-back-color:#babfc5}.e-kit-library__header-back{color:var(--e-kit-library-header-back-color);padding-inline-end:1.25rem;padding-inline-start:.3125rem;display:inline-flex;justify-content:center;align-items:center;height:100%;border-inline-end:var(--e-kit-library-header-back-border)}.e-kit-library__header-back-container{flex:1;height:100%}.e-kit-library__header-back .eps-icon{transform:rotate(0deg)}.e-kit-library__page-loader{width:100%;height:100%;display:grid;place-items:center;font-size:1.85rem;color:#69727d}.eps-search-input{--eps-search-input-background-color:#d5d8dc;--eps-search-input-background-color-focus:#fff;--eps-search-input-color:#3f444b;--eps-search-input-placeholder-color:#69727d}.eps-theme-dark .eps-search-input{--eps-search-input-background-color:#515962;--eps-search-input-background-color-focus:#69727d;--eps-search-input-color:#babfc5;--eps-search-input-placeholder-color:#babfc5}.eps-search-input{width:100%;font-size:.9375rem;padding:.625rem 2.75rem;border:none;background:var(--eps-search-input-background-color);outline:none;color:var(--eps-search-input-color);line-height:1;height:2.75rem}.eps-search-input--sm{font-size:.8125rem;padding:.5rem 1.875rem}.eps-search-input:focus{background:var(--eps-search-input-background-color-focus)}.eps-search-input::-moz-placeholder{color:var(--eps-search-input-placeholder-color);font-style:italic}.eps-search-input::placeholder{color:var(--eps-search-input-placeholder-color);font-style:italic}.eps-search-input__container{position:relative}.eps-search-input__icon{font-size:1.25rem;padding:.625rem;color:#69727d;position:absolute;top:0;left:0;height:100%;display:flex;align-items:center;justify-content:center}.eps-search-input__icon--sm{font-size:.75rem}.eps-search-input__clear-icon{font-size:.875rem;padding:.625rem;color:#69727d;position:absolute;top:0;right:0;height:100%;display:flex;align-items:center;justify-content:center}.eps-search-input__clear-icon--sm{font-size:.6875rem}:root{--eps-sort-select-select-background-color:#d5d8dc;--eps-sort-select-select-color:#3f444b;--eps-sort-select-button-background-color:#d5d8dc;--eps-sort-select-button-border:1px solid var(--e-a-border-color)}.eps-theme-dark{--eps-sort-select-select-background-color:#515962;--eps-sort-select-select-color:#babfc5;--eps-sort-select-button-background-color:#515962;--eps-sort-select-button-border:1px solid #1f2124}.eps-sort-select{width:100%;font-size:.9375rem;display:flex}.eps-sort-select__select-wrapper{flex:1;position:relative}.eps-sort-select__select-wrapper:after{content:"\e8ad";font-family:eicons;position:absolute;right:.625rem;top:0;bottom:0;color:#69727d;display:flex;align-items:center;justify-content:center;pointer-events:none}.eps-sort-select__select{width:100%;padding:.625rem;border:none;background:var(--eps-sort-select-select-background-color);outline:none;color:var(--eps-sort-select-select-color);line-height:1;cursor:pointer;height:2.75rem;-moz-appearance:none;appearance:none;-webkit-appearance:none;border-radius:0}.eps-sort-select__button{padding:.75rem;background:var(--eps-sort-select-button-background-color);border-inline-start:var(--eps-sort-select-button-border);line-height:1;color:#69727d}.e-kit-library__tags-filter{--e-kit-library-tags-filter-list-search-background-color:#fff}.eps-theme-dark .e-kit-library__tags-filter{--e-kit-library-tags-filter-list-search-background-color:#515962}.e-kit-library__tags-filter{margin-block-start:2.75rem}.e-kit-library__tags-filter-list{margin-block-end:2.75rem}.e-kit-library__tags-filter-list .eps-collapse__title{padding-inline-end:1.875rem;padding-inline-start:1.875rem;text-transform:uppercase}.e-kit-library__tags-filter-list .eps-collapse__content{margin:.3125rem 1.875rem}.e-kit-library__tags-filter-list-container{max-height:250px;overflow:auto}.e-kit-library__tags-filter-list-search{margin-block-end:.625rem}.e-kit-library__tags-filter-list-search .eps-search-input{background:var(--e-kit-library-tags-filter-list-search-background-color)}.e-kit-library__tags-filter-list-item{padding:.625rem 0;display:flex;align-items:center;font-weight:500}.e-kit-library__tags-filter-list-item input{margin-inline-end:.3125rem}.e-kit-library #eps-app-header-btn-refetch{padding:0}.e-kit-library-header-info-modal-container{margin-block-end:2.75rem}.e-kit-library__tooltip{padding:5px 12px;color:#fff;background-color:#26292c;font-size:10px}.e-kit-library__tooltip:before{border-block-end-color:#26292c}.e-kit-library__index-layout-container{flex-grow:1;overflow-y:auto;display:flex;flex-direction:column}.e-kit-library__index-layout-heading{padding:1.875rem 2.75rem;position:sticky;top:-1px;width:100%;z-index:2;background-color:var(--app-background-color);gap:1.5rem}.e-kit-library__index-layout-heading-search,.e-kit-library__index-layout-heading-sort{min-width:265px}.e-kit-library__index-layout-heading-search{flex:1}.e-kit-library__index-layout-main{padding-block-start:0;padding-block-end:1.5rem;overflow-y:hidden;height:auto;flex:1 0 auto;display:flex;flex-direction:column;justify-content:space-between}.e-kit-library__tags-filter{--e-kit-library-item-sidebar-header-title-color:#515962;--e-kit-library-item-sidebar-description-color:#515962;--e-kit-library-item-information-text-color:#515962}.eps-theme-dark .e-kit-library__tags-filter{--e-kit-library-item-sidebar-header-title-color:#babfc5;--e-kit-library-item-sidebar-description-color:#babfc5;--e-kit-library-item-information-text-color:#babfc5}.e-kit-library__item-sidebar{padding:1.5rem 1.875rem}.e-kit-library__item-sidebar-header{display:flex;align-items:center;justify-content:space-between}.e-kit-library__item-sidebar-header-title{color:var(--e-kit-library-item-sidebar-header-title-color);margin-block-end:0}.e-kit-library__item-sidebar-thumbnail{margin-block-start:1.5rem;box-shadow:0 4px 10px var(--color-box-shadow-color)}.e-kit-library__item-sidebar-description{margin-block-start:1.5rem;color:var(--e-kit-library-item-sidebar-description-color)}.e-kit-library__item-sidebar-collapse-tags{margin-block-start:2.75rem}.e-kit-library__item-sidebar-collapse-info{margin-block-start:1.875rem}.e-kit-library__item-sidebar-tags-container{gap:.625rem}.e-kit-library__item-information-text{font-size:.8125rem;color:var(--e-kit-library-item-information-text-color);margin-block-end:.3125rem}.e-kit-library{--e-kit-library-content-overview-group-title-color:#515962}.eps-theme-dark .e-kit-library{--e-kit-library-content-overview-group-title-color:#babfc5}.e-kit-library__content-overview-group-item{margin-block-end:2.75rem}.e-kit-library__content-overview-group-title{margin-block-end:1.875rem;color:var(--e-kit-library-content-overview-group-title-color)}.e-kit-library__preview-responsive-controls{width:auto}.e-kit-library__preview-responsive-controls-item{margin:0 .3125rem;color:#69727d;padding:.3125rem}.e-kit-library__preview-responsive-controls-item:hover{background:rgba(37,99,235,.1);border-radius:3px;transition:all .3s}.e-kit-library__preview-responsive-controls-item--active{color:#2563eb}.e-kit-library__preview-loader{position:absolute;top:0;left:0;z-index:0}.e-kit-library__preview-iframe{border:none;transition:all .3s;box-shadow:0 4px 10px var(--color-box-shadow-color)}.e-kit-library__preview-iframe-container{overflow-y:auto;position:relative;z-index:1}.e-app-collapse{--e-app-collapse-icon-color:#515962}.e-app-collapse-toggle{position:relative}.e-app-collapse-toggle--active{cursor:pointer}.e-app-collapse-toggle__icon{color:var(--e-app-collapse-icon-color);display:flex;align-items:center;justify-content:center;font-size:.875rem;position:absolute;top:50%;right:var(--e-app-collapse-toggle-icon-spacing);transform:translateY(-50%)}.e-app-collapse-toggle__icon:before{transition:all .2s linear}.e-app-collapse-content{display:none}.e-app-collapse--opened .e-app-collapse-toggle__icon:before{transform:rotate(-180deg)}.e-app-collapse--opened .e-app-collapse-content{display:block}[dir=rtl] .e-app-collapse-toggle__icon{right:auto;left:var(--e-app-collapse-toggle-icon-spacing)}.eps-theme-dark .e-app-collapse{--e-app-collapse-icon-color:#babfc5}.e-app-import-plugins{--e-app-import-plugins-selection-section-heading-color:#515962;padding-block-end:1.5rem}.e-app-import-plugins__section{margin-block-start:1.875rem}.e-app-import-plugins__section-heading{color:var(--e-app-import-plugins-selection-section-heading-color);margin-block-end:1rem}.e-app-import-plugins__versions-notice{margin-block-end:.75rem}.eps-theme-dark .e-app-import-plugins{--e-app-import-plugins-selection-section-heading-color:#babfc5}.eps-table{--eps-table-body-color:#3f444b;border-spacing:0 2px;table-layout:fixed;width:100%;border:1px solid var(--e-a-border-color);border-radius:.1875rem}.eps-table__checkboxes-column{width:1.875rem}.eps-table__checkbox{display:flex;flex-shrink:0}.eps-table__cell{padding:1rem}.eps-table__head .eps-table__cell{text-align:start}.eps-table__row{border-block-end:1px solid var(--e-a-border-color)}.eps-table__row:last-child{border-block-end:none}.eps-table__body .eps-table__cell:first-child{border-radius:.1875rem 0 0 .1875rem}.eps-table__body .eps-table__cell:last-child{border-radius:0 .1875rem .1875rem 0}.eps-table--selection .eps-table__cell:first-child{padding-inline-end:0}.eps-theme-dark .eps-table{--eps-table-body-color:#babfc5}[dir=rtl] .eps-table__body [dir=rtl] .eps-table__cell:first-child{border-radius:0 .1875rem .1875rem 0}[dir=rtl] .eps-table__body [dir=rtl] .eps-table__cell:last-child{border-radius:.1875rem 0 0 .1875rem}.e-app-import-plugins-pro-banner{--e-app-import-plugins-pro-banner-heading-color:#3f444b;--e-app-import-plugins-pro-banner-description-color:#515962;margin-block-end:1.875rem}.e-app-import-plugins-pro-banner__heading{color:var(--e-app-import-plugins-pro-banner-heading-color);margin-block-end:.625rem}.e-app-import-plugins-pro-banner__description{color:var(--e-app-import-plugins-pro-banner-description-color);margin-block-end:0}.eps-theme-dark .e-app-import-plugins-pro-banner{--e-app-import-plugins-pro-banner-heading-color:#9da5ae;--e-app-import-plugins-pro-banner-description-color:#babfc5}.e-app-export-plugins,.e-app-import-content{padding-block-end:1.25rem}.e-app-import-content__plugins-notice{margin-block-end:1.25rem}.e-app-import-plugins-activation__installing-plugins{padding:.625rem 0}.e-app-import-plugins-activation__plugin-name{margin-inline-start:.5rem}.e-app-import-plugins-activation__plugin-status-item{margin-block-end:.75rem}.e-app-import-export-plugins-table__cell-content{margin-block-end:0;text-transform:capitalize}.e-app-import-export-loader{--e-app-import-export-loader-color:#818a96;color:var(--e-app-import-export-loader-color);font-size:50px}.e-app-import-export-loader.eicon-loading{font-size:1.85rem}.e-app-import-export-loader--absolute-center{position:absolute;top:50%;left:50%;transform:translateX(-50%) translateY(-50%)}.eps-theme-dark .e-app-import-export-loader{--e-app-import-export-loader-color:#818a96}.e-app-import-export-message-banner{--e-app-import-export-message-banner-heading-color:#3f444b;--e-app-import-export-message-banner-description-color:#515962;margin-block-end:1.875rem}.e-app-import-export-message-banner__heading{color:var(--e-app-import-export-message-banner-heading-color);margin-block-end:.625rem}.e-app-import-export-message-banner__description{color:var(--e-app-import-export-message-banner-description-color);margin-block-end:0}.eps-theme-dark .e-app-import-export-message-banner{--e-app-import-export-message-banner-heading-color:#9da5ae;--e-app-import-export-message-banner-description-color:#babfc5}.e-app-import-connect-pro-notice,.e-app-import-failed-plugins-notice{margin-block-end:1.25rem}.e-onboarding{font-family:DM Sans,Roboto,sans-serif;color-scheme:light}.e-onboarding .eps-app__main{justify-content:center;overflow-y:auto}.e-onboarding__content{max-width:1135px;padding:2.75rem;margin:initial;overflow-y:initial}.e-onboarding__checkbox-label{display:flex;line-height:18px;margin-block-end:27px}.e-onboarding__checkbox-input{margin-inline-end:14px;width:16px;height:16px;border-color:#69727d;border-radius:2px}.e-onboarding__checkbox-input:checked{background-color:#525861}.e-onboarding__checkbox-input:checked:after{margin-block-end:15%;width:6px;height:9px;border-width:0 2px 2px 0}.e-onboarding__feature-list{margin-block-end:40px}.e-onboarding__text-input{font-size:14px;width:325px;padding:12px 16px;color:#69727d;border:1px solid #9ea5ad}.e-onboarding__text-input:focus-visible{outline:initial;border:1px solid #3a3f45}.e-onboarding__text-input::-moz-placeholder{color:#c2c7cc}.e-onboarding__text-input::placeholder{color:#c2c7cc}.e-onboarding__footnote{margin-block-start:24px;width:325px;text-align:center}.e-onboarding__footnote a{text-decoration:underline;color:#3a3f45}#e-app~#__wp-uploader-id-2 .media-modal{max-width:1024px;max-height:768px;margin:auto}.e-onboarding__page-content{margin-block-end:70px}.e-onboarding__page-content-start{max-width:675px;text-align:start;flex-basis:555px;align-self:start}.e-onboarding__page-content-end{min-width:440px;max-width:540px}.e-onboarding__page-content-end img{width:100%}.e-onboarding__page-content-section-title{font-family:"DM Serif Display",serif;font-size:36px;font-weight:700;color:#0c0d0e}.e-onboarding__page-content-section-text{font-size:18px;color:#3a3f45}.e-onboarding__header-logo .eps-app__logo{background-color:#0c0d0e;color:#fff;width:1.3rem;height:1.3rem;line-height:1.3rem;font-size:.48rem}.e-onboarding__header-logo .eps-app__logo:not(:last-child){margin-inline-end:7px}.e-onboarding__header-logo img{width:104px}.e-onboarding__header .eps-app__header-btn{display:flex;align-items:center;font-size:13px}.e-onboarding__header .eps-app__header-btn .eps-icon:not(:last-child){margin-inline-end:7px}.e-onboarding__header .eps-button{color:#0c0d0e}.e-onboarding__header .eps-button__go-pro-btn{background-color:#93003f;color:#fff;padding:4px 8px;border-radius:4px;font-weight:700;font-size:12px;transition:.5s}.e-onboarding__header .eps-button__go-pro-btn:hover{background:#c60055}.e-onboarding__go-pro{width:288px;font-size:12px;background-color:#fff}.e-onboarding__go-pro-title{font-size:18px;font-weight:700;color:#93003f}.e-onboarding__go-pro-cta{display:inline-block;color:#93003f;padding:9px;border:1px solid #93003f}.e-onboarding__go-pro-cta.e-onboarding__button{font-size:14px}.e-onboarding__go-pro-paragraph:not(:last-child){margin-block-end:20px}.e-onboarding__go-pro-already-have{text-decoration:underline}.e-onboarding__progress-bar{display:flex;justify-content:center;margin-block-end:125px}.e-onboarding__progress-bar-item{display:flex;align-items:center;color:#69727d;font-size:.75rem}.e-onboarding__progress-bar-item-icon{display:inline-block;font-family:"DM Serif Display",serif;text-align:center;width:1.1rem;height:1.1rem;line-height:1rem;font-size:.75rem;font-weight:700;border-radius:50%;border:1px solid #69727d;margin-inline-end:8px;flex-shrink:0}.e-onboarding__progress-bar-item:not(:last-child){margin-inline-end:22px}.e-onboarding__progress-bar-item:not(:last-child):after{font-family:eicons;margin-inline-start:22px;content:"\e89e"}.e-onboarding__progress-bar-item--active{color:#d004d4}.e-onboarding__progress-bar-item--active .e-onboarding__progress-bar-item-icon,.e-onboarding__progress-bar-item--completed .e-onboarding__progress-bar-item-icon{color:#fff;border-color:#d004d4;background-color:#d004d4}.e-onboarding__progress-bar-item--completed,.e-onboarding__progress-bar-item--skipped{cursor:pointer}.e-onboarding__progress-bar-item--skipped .e-onboarding__progress-bar-item-icon{color:#fff;background-color:#69727d}.e-onboarding__button{font-size:18px;cursor:pointer;transition:var(--e-a-transition-hover)}.e-onboarding__button-action{color:var(--e-a-btn-color);background-color:var(--e-a-btn-bg-primary);min-width:325px;padding:15px 30px;text-align:center}.e-onboarding__button-action:hover{background-color:var(--e-a-btn-bg-primary-hover)}.e-onboarding__button-skip{padding:8px 16px;color:#515962}.e-onboarding__button-skip:hover{background-color:#f9fafa}.e-onboarding__button--disabled{pointer-events:none;background-color:#d5d8dc;color:#9ea5ad}.e-onboarding__button--disabled:hover{cursor:progress}.e-onboarding__button--processing{pointer-events:none;filter:brightness(90%)}.e-onboarding__card{border:1px solid #3a3f45;border-radius:8px;padding:40px;cursor:pointer;flex-grow:1;display:flex;flex-direction:column;align-items:center}.e-onboarding__card-image,.e-onboarding__card-text{width:345px}.e-onboarding__card-image{margin-block-end:44px}.e-onboarding__card-text{font-size:20px;font-weight:700;text-align:center;color:#0c0d0e}.e-onboarding__card:hover{box-shadow:4px 4px 0 0 #000}.e-onboarding__card:active{box-shadow:none}.e-onboarding__checklist{padding-inline-start:0}.e-onboarding__checklist-item{display:flex;align-items:center;font-size:12px;margin-block-end:12px}.e-onboarding__checklist-item .eicon-check-circle{margin-inline-end:9px;font-size:16px;font-weight:600}.e-onboarding__notice{display:inline-block;padding:12px 14px;margin-block-end:16px;color:#3a3f45}.e-onboarding__notice--error{background-color:#fde8ec}.e-onboarding__notice--error i{font-size:16px;color:#b92136}.e-onboarding__notice--success{background-color:#ecf9f2}.e-onboarding__notice--success i{color:#117740}.e-onboarding__notice i{margin-inline-end:14px}.e-onboarding__notice-empty-spacer{height:61px}.e-onboarding__page-account .e-onboarding__checkbox-label{margin-block-start:50px}.e-onboarding__action-button-text{margin-inline-start:10px}.e-onboarding__site-name-input{margin-block-start:80px}.e-onboarding__page-siteLogo .e-app-upload-file__button{color:var(--e-a-color-primary-bold);border-color:var(--e-a-color-primary-bold)}.e-onboarding__page-siteLogo .e-app-upload-file__button:hover{background-color:#fae8ff}.e-onboarding__drop-zone{margin-block-start:3rem}.e-onboarding .eps-display-3{font-size:16px;margin-block-end:.5rem}.e-onboarding .e-app-upload-file__button{max-width:198px;margin:0 auto}.e-onboarding .e-app-drop-zone__secondary-text{font-size:14px}.e-onboarding__logo-container{position:relative;margin-block-start:3rem;min-height:120px;width:-moz-fit-content;width:fit-content;display:flex;align-items:center;justify-content:center;min-width:220px;border:1px solid #babfc5}.e-onboarding__logo-container img{height:auto;max-height:100%;width:auto}.e-onboarding__logo-remove{position:absolute;right:0;top:5px}.e-onboarding__logo-remove i{font-size:16px;width:15px}.e-onboarding__logo-remove:hover{cursor:pointer}.e-onboarding__is-uploading{visibility:hidden}.e-onboarding__page-goodToGo .e-onboarding__page-content-section-text,.e-onboarding__page-goodToGo .e-onboarding__page-content-section-title{text-align:center}.e-onboarding__cards-grid.e-onboarding__page-content{margin-block-start:48px;margin-block-end:48px}.e-onboarding__cards-grid .e-onboarding__card{max-width:555px}.e-onboarding__cards-grid .e-onboarding__card:not(:last-child){margin-inline-end:20px}.e-onboarding__good-to-go-footer{justify-content:end}.e-onboarding__upload-pro{flex-direction:row;justify-content:center;font-family:DM Sans,Roboto,sans-serif;text-align:center}.e-onboarding__upload-pro .eps-app__content{overflow-y:hidden;max-width:1113px;padding:30px}.e-onboarding__upload-pro-drop-zone{margin-block-end:24px}.e-onboarding__upload-pro-drop-zone h1{font-family:"Source Serif Pro",Roboto,sans-serif}.e-onboarding__upload-pro-drop-zone .e-app-drag-drop{padding:48px}.e-onboarding__upload-pro-drop-zone .e-app-drop-zone__secondary-text,.e-onboarding__upload-pro-drop-zone .e-app-drop-zone__text,.e-onboarding__upload-pro-drop-zone .eps-display-3{margin-block-end:12px}.e-onboarding__upload-pro-drop-zone .e-app-upload-file__button{background-color:#040080;color:#46f2b6;padding:14px 40px;border-color:#040080}.e-onboarding__upload-pro-get-file{font-size:12px;margin-block-start:24px}.e-onboarding__upload-pro-get-file a{text-decoration:underline}.e-onboarding__upload-pro .e-onboarding__notice{margin-block-end:0} \ No newline at end of file diff --git a/wp-content/plugins/elementor/assets/css/common-rtl.css b/wp-content/plugins/elementor/assets/css/common-rtl.css new file mode 100644 index 0000000..c93a459 --- /dev/null +++ b/wp-content/plugins/elementor/assets/css/common-rtl.css @@ -0,0 +1,850 @@ +/*! elementor - v3.20.0 - 26-03-2024 */ +:root { + --e-a-color-white: #ffffff; + --e-a-color-black: #000000; + --e-a-color-logo: #ffffff; + --e-a-color-primary: #F3BAFD; + --e-a-color-primary-bold: #D004D4; + --e-a-color-secondary: #515962; + --e-a-color-success: #0A875A; + --e-a-color-danger: #DC2626; + --e-a-color-info: #2563EB; + --e-a-color-warning: #F59E0B; + --e-a-color-accent: #93003f; + --e-a-color-accent-promotion: #93003f; + --e-a-color-global: #1DDDBF; + --e-a-bg-default: #ffffff; + --e-a-bg-invert: #0C0D0E; + --e-a-bg-hover: #F1F2F3; + --e-a-bg-active: #E6E8EA; + --e-a-bg-active-bold: #D5D8DC; + --e-a-bg-loading: #F9FAFA; + --e-a-bg-logo: #000000; + --e-a-bg-primary: #FAE8FF; + --e-a-bg-secondary: #515962; + --e-a-bg-success: #F2FDF5; + --e-a-bg-info: #F0F7FF; + --e-a-bg-danger: #FEF1F4; + --e-a-bg-warning: #FFFBEB; + --e-a-color-txt: #515962; + --e-a-color-txt-muted: #818A96; + --e-a-color-txt-disabled: #BABFC5; + --e-a-color-txt-invert: #ffffff; + --e-a-color-txt-accent: #0C0D0E; + --e-a-color-txt-hover: #3f444b; + --e-a-color-txt-active: #0C0D0E; + --e-a-border-color: #E6E8EA; + --e-a-border-color-bold: #D5D8DC; + --e-a-border-color-focus: #BABFC5; + --e-a-border-color-accent: #0C0D0E; + --e-a-border: 1px solid var(--e-a-border-color); + --e-a-border-bold: 1px solid var(--e-a-border-color-bold); + --e-a-border-radius: 3px; + --e-a-btn-color: #0C0D0E; + --e-a-btn-color-invert: var(--e-a-color-txt-invert); + --e-a-btn-color-disabled: var(--e-a-color-txt-disabled); + --e-a-btn-bg: #515962; + --e-a-btn-bg-hover: #3a4046; + --e-a-btn-bg-active: #23262a; + --e-a-btn-bg-disabled: #D5D8DC; + --e-a-btn-bg-primary: #F3BAFD; + --e-a-btn-bg-primary-hover: #F5D0FE; + --e-a-btn-bg-primary-active:#F0ABFC; + --e-a-btn-bg-accent: #93003f; + --e-a-btn-bg-accent-hover: #8F1A4C; + --e-a-btn-bg-accent-active: #A93365; + --e-a-btn-bg-info: #2563EB; + --e-a-btn-bg-info-hover: #134cca; + --e-a-btn-bg-info-active: #0e3b9c; + --e-a-btn-bg-success: #0A875A; + --e-a-btn-bg-success-hover: #06583a; + --e-a-btn-bg-success-active:#03281b; + --e-a-btn-bg-warning: #F59E0B; + --e-a-btn-bg-warning-hover: #c57f08; + --e-a-btn-bg-warning-active:#945f06; + --e-a-btn-bg-danger: #DC2626; + --e-a-btn-bg-danger-hover: #b21d1d; + --e-a-btn-bg-danger-active: #861616; + --e-a-dark-bg: #0C0D0E; + --e-a-dark-color-txt: #9DA5AE; + --e-a-dark-color-txt-hover: #D5D8DC; + --e-a-font-family: Roboto, Arial, Helvetica, sans-serif; + --e-a-transition-hover: all .3s; + --e-a-popover-shadow: 0 2px 15px rgba(0, 0, 0, 0.3); + --e-a-dropdown-shadow: 0 0 3px rgba(0, 0, 0, 0.2); +} + +.dialog-widget-content { + background-color: var(--e-a-bg-default); + position: absolute; + border-radius: 3px; + box-shadow: 2px 8px 23px 3px rgba(0, 0, 0, 0.2); + overflow: hidden; +} + +.dialog-message { + line-height: 1.5; + box-sizing: border-box; +} + +.dialog-close-button { + cursor: pointer; + position: absolute; + margin-block-start: 15px; + left: 15px; + color: var(--e-a-color-txt); + font-size: 15px; + line-height: 1; + transition: var(--e-a-transition-hover); +} +.dialog-close-button:hover { + color: var(--e-a-color-txt-hover); +} + +.dialog-prevent-scroll { + overflow: hidden; + max-height: 100vh; +} + +.dialog-type-lightbox { + position: fixed; + height: 100%; + width: 100%; + bottom: 0; + left: 0; + background-color: rgba(0, 0, 0, 0.8); + z-index: 9999; + -webkit-user-select: none; + -moz-user-select: none; + user-select: none; +} + +.elementor-editor-active .elementor-popup-modal { + background-color: initial; +} + +.dialog-type-confirm .dialog-widget-content, +.dialog-type-alert .dialog-widget-content { + margin: auto; + width: 400px; + padding: 20px; +} +.dialog-type-confirm .dialog-header, +.dialog-type-alert .dialog-header { + font-size: 15px; + font-weight: 500; +} +.dialog-type-confirm .dialog-header:after, +.dialog-type-alert .dialog-header:after { + content: ""; + display: block; + border-block-end: var(--e-a-border); + padding-block-end: 10px; + margin-block-end: 10px; + margin-inline-start: -20px; + margin-inline-end: -20px; +} +.dialog-type-confirm .dialog-message, +.dialog-type-alert .dialog-message { + min-height: 50px; +} +.dialog-type-confirm .dialog-buttons-wrapper, +.dialog-type-alert .dialog-buttons-wrapper { + padding-block-start: 10px; + display: flex; + justify-content: flex-end; + gap: 15px; +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button { + font-size: 12px; + font-weight: 500; + line-height: 1.2; + padding: 8px 16px; + outline: none; + border: none; + border-radius: var(--e-a-border-radius); + background-color: var(--e-a-btn-bg); + color: var(--e-a-btn-color-invert); + transition: var(--e-a-transition-hover); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button:hover { + border: none; +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button:focus { + background-color: var(--e-a-btn-bg-hover); + color: var(--e-a-btn-color-invert); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:active, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button:active { + background-color: var(--e-a-btn-bg-active); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:not([disabled]), +.dialog-type-alert .dialog-buttons-wrapper .dialog-button:not([disabled]) { + cursor: pointer; +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:disabled, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button:disabled { + background-color: var(--e-a-btn-bg-disabled); + color: var(--e-a-btn-color-disabled); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:not(.elementor-button-state) .elementor-state-icon, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button:not(.elementor-button-state) .elementor-state-icon { + display: none; +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel { + background: transparent; + color: var(--e-a-color-txt); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel:focus { + background: var(--e-a-bg-hover); + color: var(--e-a-color-txt-hover); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt:disabled, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel:disabled, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt:disabled, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel:disabled { + background: transparent; + color: var(--e-a-color-txt-disabled); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt-border, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt-border { + border: 1px solid var(--e-a-color-txt-muted); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-success, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-success, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-success, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-success { + background-color: var(--e-a-btn-bg-success); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-success:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-success:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-success:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-success:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-success:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-success:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-success:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-success:focus { + background-color: var(--e-a-btn-bg-success-hover); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-take_over, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-take_over, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok { + background-color: var(--e-a-btn-bg-primary); + color: var(--e-a-btn-color); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-take_over:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-take_over:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-take_over:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-take_over:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok:focus { + background-color: var(--e-a-btn-bg-primary-hover); + color: var(--e-a-btn-color); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary.e-btn-txt, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-take_over, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary.dialog-cancel, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-ok, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary.e-btn-txt, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-take_over, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary.dialog-cancel, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-ok, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel { + background: transparent; + color: var(--e-a-color-primary-bold); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary.e-btn-txt:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-take_over:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary.dialog-cancel:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-ok:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary.e-btn-txt:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-take_over:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary.dialog-cancel:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-ok:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary.e-btn-txt:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-take_over:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary.dialog-cancel:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-ok:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary.e-btn-txt:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-take_over:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary.dialog-cancel:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-ok:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel:focus { + background: var(--e-a-bg-primary); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.go-pro, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-accent, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.go-pro, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-accent { + background-color: var(--e-a-btn-bg-accent); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.go-pro:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.go-pro:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-accent:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-accent:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.go-pro:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.go-pro:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-accent:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-accent:focus { + background-color: var(--e-a-btn-bg-accent-hover); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.go-pro:active, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-accent:active, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.go-pro:active, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-accent:active { + background-color: var(--e-a-btn-bg-accent-active); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-info, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-info, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-info, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-info { + background-color: var(--e-a-btn-bg-info); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-info:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-info:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-info:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-info:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-info:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-info:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-info:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-info:focus { + background-color: var(--e-a-btn-bg-info-hover); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-warning, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-warning, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-warning, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-warning { + background-color: var(--e-a-btn-bg-warning); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-warning:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-warning:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-warning:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-warning:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-warning:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-warning:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-warning:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-warning:focus { + background-color: var(--e-a-btn-bg-warning-hover); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-danger, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-danger, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-danger, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-danger { + background-color: var(--e-a-btn-bg-danger); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-danger:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-danger:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-danger:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-danger:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-danger:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-danger:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-danger:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-danger:focus { + background-color: var(--e-a-btn-bg-danger-hover); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button i, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button i { + margin-inline-end: 5px; +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button:visited, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button:visited { + color: initial; +} +.flatpickr-calendar { + width: 280px; +} +.flatpickr-calendar .flatpickr-current-month span.cur-month { + font-weight: 300; +} +.flatpickr-calendar .dayContainer { + width: 280px; + min-width: 280px; + max-width: 280px; +} +.flatpickr-calendar .flatpickr-days { + width: 280px; +} +.flatpickr-calendar .flatpickr-day { + max-width: 37px; + height: 37px; + line-height: 37px; +} + +.elementor-hidden { + display: none; +} + +.elementor-screen-only, +.screen-reader-text, +.screen-reader-text span, +.ui-helper-hidden-accessible { + position: absolute; + top: -10000em; + width: 1px; + height: 1px; + margin: -1px; + padding: 0; + overflow: hidden; + clip: rect(0, 0, 0, 0); + border: 0; +} + +.elementor-clearfix:after { + content: ""; + display: block; + clear: both; + width: 0; + height: 0; +} + +.e-logo-wrapper { + background: var(--e-a-bg-logo); + display: inline-block; + padding: 0.75em; + border-radius: 50%; + line-height: 1; +} +.e-logo-wrapper i { + color: var(--e-a-color-logo); + font-size: 1em; +} + +#elementor-change-exit-preference-dialog .dialog-message a { + cursor: pointer; +} +#elementor-change-exit-preference-dialog .dialog-message > div { + margin-block-end: 10px; +} + +#e-experiments-messages-dialog .dialog-confirm-header { + font-weight: 600; +} + +#e-kit-elements-defaults-create-dialog label { + display: flex; + align-items: center; + justify-content: center; + gap: 10px; + margin-block-start: 20px; +} + +@media (min-width: 1024px) { + body.admin-bar .dialog-lightbox-widget { + height: calc(100vh - 32px); + } +} +@media (max-width: 1024px) { + body.admin-bar .dialog-type-lightbox { + position: sticky; + height: 100vh; + } +} +.elementor-templates-modal .dialog-widget-content { + font-family: Roboto, Arial, Helvetica, sans-serif; + background-color: var(--e-a-bg-default); + width: 100%; +} +@media (max-width: 1439px) { + .elementor-templates-modal .dialog-widget-content { + max-width: 990px; + } +} +@media (min-width: 1440px) { + .elementor-templates-modal .dialog-widget-content { + max-width: 1200px; + } +} +.elementor-templates-modal .dialog-header { + border-block-end: var(--e-a-border); + padding: 0; + z-index: 1; +} +.elementor-templates-modal .dialog-buttons-wrapper { + border-block-start: var(--e-a-border); + padding: 10px; + display: flex; + justify-content: flex-end; + gap: 15px; +} +.elementor-templates-modal .dialog-message { + height: 750px; + max-height: 85vh; + overflow-y: auto; + padding: 20px; +} +.elementor-templates-modal .dialog-content { + height: 100%; + text-align: center; +} +.elementor-templates-modal .dialog-loading { + display: none; +} +.elementor-templates-modal__header { + display: flex; + align-items: center; + justify-content: space-between; + height: 50px; +} +.elementor-templates-modal__header__logo { + line-height: 1; + text-transform: uppercase; + font-weight: bold; + cursor: pointer; +} +.elementor-templates-modal__header__logo-area { + text-align: start; + padding-inline-start: 15px; +} +.elementor-templates-modal__header__logo-area > * { + display: flex; + align-items: center; +} +.elementor-templates-modal__header__logo__icon-wrapper { + margin-inline-end: 10px; + font-size: 12px; +} +.elementor-templates-modal__header__logo__title { + color: var(--e-a-color-txt-active); + padding-block-start: 2px; +} +.elementor-templates-modal__header__items-area { + display: flex; + flex-direction: row-reverse; +} +.elementor-templates-modal__header__item { + position: relative; + display: flex; + align-items: center; + justify-content: center; + box-sizing: content-box; +} +.elementor-templates-modal__header__item > i { + font-size: 20px; + transition: var(--e-a-transition-hover); + cursor: pointer; +} +.elementor-templates-modal__header__item > i:hover { + color: var(--e-a-color-txt-hover); +} +.elementor-templates-modal__header__close--normal { + width: 47px; + border-inline-start: var(--e-a-border); +} +.elementor-templates-modal__header__close--normal i { + font-size: 18px; +} +.elementor-templates-modal__header__close--skip { + padding: 10px; + padding-inline-start: 20px; + margin-inline-end: 10px; + font-size: 11px; + font-weight: normal; + line-height: 1; + border-radius: var(--e-a-border-radius); + cursor: pointer; +} +.elementor-templates-modal__header__close--skip > i { + font-size: inherit; + padding-inline-start: 10px; + margin-inline-start: 15px; + border-inline-start: 1px solid; +} +.elementor-templates-modal__header__close--skip > i:not(:hover) { + color: var(--e-a-color-white); +} +.elementor-templates-modal__sidebar { + flex-shrink: 0; + width: 25%; + border-inline-end: var(--e-a-border); +} +.elementor-templates-modal__content { + flex-grow: 1; +} + +#elementor-toast { + position: absolute; + width: 280px; + padding: 20px; + border-radius: 5px; + color: var(--e-a-dark-color-txt); + background-color: rgba(0, 0, 0, 0.8); + z-index: 10000; +} +#elementor-toast.dialog-position-window { + position: fixed; +} +#elementor-toast .dialog-message { + font-size: 13px; +} +#elementor-toast .dialog-buttons-wrapper { + display: flex; + justify-content: flex-end; +} +#elementor-toast .dialog-buttons-wrapper:not(:empty) { + margin-top: 15px; +} +#elementor-toast .dialog-button { + font-size: 12px; + font-weight: 500; + line-height: 1.2; + padding: 8px 16px; + margin-left: 10px; + color: var(--e-a-dark-color-txt); + border-radius: var(--e-a-border-radius); + transition: var(--e-a-transition-hover); + cursor: pointer; +} +#elementor-toast .dialog-button:hover { + background: var(--e-a-bg-hover); + color: var(--e-a-color-txt-hover); +} +#elementor-toast .dialog-button:last-child { + margin-left: 0; +} + +/* Will select next element after last '.elementor-general-section' */ +#wpadminbar #wp-admin-bar-elementor_edit_page .elementor-general-section + .elementor-second-section { + border-block-start: 1px solid #464b50; + margin-block-start: 6px; +} + +.e-logo-wrapper { + background: var(--e-a-bg-logo); + display: inline-block; + padding: 0.75em; + border-radius: 50%; + line-height: 1; +} +.e-logo-wrapper i { + color: var(--e-a-color-logo); + font-size: 1em; +} + +#elementor-finder__modal { + background: none; + z-index: 99999; +} +#elementor-finder__modal .dialog-widget-content { + width: 650px; + max-width: 98%; + top: 18vh; + left: calc(50% - 650px / 2); +} +#elementor-finder__modal .dialog-content { + text-align: start; +} +#elementor-finder__modal .dialog-message { + height: initial; + min-height: 0; + padding: 0; + text-align: right; +} +#elementor-finder__search { + padding: 15px; + display: flex; +} +#elementor-finder__search i { + font-size: 16px; + margin-inline-end: 15px; +} +#elementor-finder__search__input { + border: none; + background: none; + outline: none; + padding: 0; + margin: 0; + flex-grow: 1; + font-size: 14px; + box-shadow: none; +} +#elementor-finder__search__input::-moz-placeholder { + font-style: italic; + font-weight: 300; +} +#elementor-finder__search__input::placeholder { + font-style: italic; + font-weight: 300; +} +#elementor-finder__results { + max-height: 50vh; + overflow: auto; +} +#elementor-finder__no-results { + display: none; + padding: 20px; +} +#elementor-finder__lock-dialog { + z-index: 100000; +} + +.elementor-finder__results__category { + position: relative; +} +.elementor-finder__results__category__title { + padding: 5px 25px; + font-size: 10px; + border-block-end: var(--e-a-border); +} +.elementor-finder__results__category--dynamic .elementor-finder__results__category__items { + min-height: 26px; +} +.elementor-finder__results__category .eicon-loading { + display: none; + position: absolute; + left: 10px; + top: 30px; + color: var(--e-a-color-info); + font-size: 14px; +} +.elementor-finder__results__item { + display: flex; +} +.elementor-finder__results__item a { + text-decoration: none; + color: inherit; +} +.elementor-finder__results__item.elementor-active { + background-color: var(--e-a-bg-hover); +} +.elementor-finder__results__item.elementor-active a { + color: inherit; +} +.elementor-finder__results__item:not(.elementor-active) .elementor-finder__results__item__actions { + display: none; +} +.elementor-finder__results__item__link { + display: flex; + align-items: center; + height: 35px; + flex-grow: 1; +} +.elementor-finder__results__item__icon { + width: 60px; + text-align: center; + font-size: 17px; +} +.elementor-finder__results__item__title { + font-size: 13px; +} +.elementor-finder__results__item__description { + margin-inline-start: 5px; + font-style: italic; +} +.elementor-finder__results__item__badge { + text-transform: uppercase; + position: absolute; + inset-inline-end: 16px; + font-size: 8px; + font-weight: 500; + display: flex; + align-items: center; + gap: 4px; +} +.elementor-finder__results__item__actions { + display: flex; +} +.elementor-finder__results__item__action { + display: flex; + align-items: center; + justify-content: center; + height: 100%; + width: 35px; +} +.elementor-finder__results__item__action:hover { + background-color: rgba(0, 0, 0, 0.07); +} + +.tipsy { + font-size: 10px; + position: absolute; + padding: 5px; + z-index: 100000; +} + +.tipsy-inner { + background-color: #000; + color: #FFF; + font-weight: 500; + max-width: 200px; + padding: 5px 12px; + text-align: center; + border-radius: 3px; + box-shadow: 0 0 5px 0 rgba(0, 0, 0, 0.5); +} + +.tipsy-arrow { + position: absolute; + width: 0; + height: 0; + line-height: 0; + border: 5px dashed #000; +} + +.tipsy-arrow-n { + border-bottom-color: #000; +} + +.tipsy-arrow-s { + border-top-color: #000; +} + +.tipsy-arrow-e { + border-left-color: #000; +} + +.tipsy-arrow-w { + border-right-color: #000; +} + +.tipsy-n .tipsy-arrow, .tipsy-nw .tipsy-arrow { + border-left-color: transparent; + border-right-color: transparent; + top: 0; + border-bottom-style: solid; + border-top: none; +} + +.tipsy-n .tipsy-arrow { + left: 50%; + margin-left: -5px; +} + +.tipsy-nw .tipsy-arrow { + left: 10px; +} + +.tipsy-ne .tipsy-arrow { + top: 0; + right: 10px; + border-bottom-style: solid; + border-top: none; + border-left-color: transparent; + border-right-color: transparent; +} + +.tipsy-s .tipsy-arrow, .tipsy-se .tipsy-arrow, .tipsy-sw .tipsy-arrow { + bottom: 0; + border-top-style: solid; + border-bottom: none; + border-left-color: transparent; + border-right-color: transparent; +} + +.tipsy-s .tipsy-arrow { + left: 50%; + margin-left: -5px; +} + +.tipsy-sw .tipsy-arrow { + left: 10px; +} + +.tipsy-se .tipsy-arrow { + right: 10px; +} + +.tipsy-e .tipsy-arrow, .tipsy-w .tipsy-arrow { + top: 50%; + margin-top: -5px; + border-top-color: transparent; + border-bottom-color: transparent; +} + +.tipsy-e .tipsy-arrow { + right: 0; + border-left-style: solid; + border-right: none; +} + +.tipsy-w .tipsy-arrow { + left: 0; + border-right-style: solid; + border-left: none; +} +/*# sourceMappingURL=common-rtl.css.map */ \ No newline at end of file diff --git a/wp-content/plugins/elementor/assets/css/common-rtl.min.css b/wp-content/plugins/elementor/assets/css/common-rtl.min.css new file mode 100644 index 0000000..7f6020a --- /dev/null +++ b/wp-content/plugins/elementor/assets/css/common-rtl.min.css @@ -0,0 +1,2 @@ +/*! elementor - v3.20.0 - 26-03-2024 */ +:root{--e-a-color-white:#fff;--e-a-color-black:#000;--e-a-color-logo:#fff;--e-a-color-primary:#f3bafd;--e-a-color-primary-bold:#d004d4;--e-a-color-secondary:#515962;--e-a-color-success:#0a875a;--e-a-color-danger:#dc2626;--e-a-color-info:#2563eb;--e-a-color-warning:#f59e0b;--e-a-color-accent:#93003f;--e-a-color-accent-promotion:#93003f;--e-a-color-global:#1dddbf;--e-a-bg-default:#fff;--e-a-bg-invert:#0c0d0e;--e-a-bg-hover:#f1f2f3;--e-a-bg-active:#e6e8ea;--e-a-bg-active-bold:#d5d8dc;--e-a-bg-loading:#f9fafa;--e-a-bg-logo:#000;--e-a-bg-primary:#fae8ff;--e-a-bg-secondary:#515962;--e-a-bg-success:#f2fdf5;--e-a-bg-info:#f0f7ff;--e-a-bg-danger:#fef1f4;--e-a-bg-warning:#fffbeb;--e-a-color-txt:#515962;--e-a-color-txt-muted:#818a96;--e-a-color-txt-disabled:#babfc5;--e-a-color-txt-invert:#fff;--e-a-color-txt-accent:#0c0d0e;--e-a-color-txt-hover:#3f444b;--e-a-color-txt-active:#0c0d0e;--e-a-border-color:#e6e8ea;--e-a-border-color-bold:#d5d8dc;--e-a-border-color-focus:#babfc5;--e-a-border-color-accent:#0c0d0e;--e-a-border:1px solid var(--e-a-border-color);--e-a-border-bold:1px solid var(--e-a-border-color-bold);--e-a-border-radius:3px;--e-a-btn-color:#0c0d0e;--e-a-btn-color-invert:var(--e-a-color-txt-invert);--e-a-btn-color-disabled:var(--e-a-color-txt-disabled);--e-a-btn-bg:#515962;--e-a-btn-bg-hover:#3a4046;--e-a-btn-bg-active:#23262a;--e-a-btn-bg-disabled:#d5d8dc;--e-a-btn-bg-primary:#f3bafd;--e-a-btn-bg-primary-hover:#f5d0fe;--e-a-btn-bg-primary-active:#f0abfc;--e-a-btn-bg-accent:#93003f;--e-a-btn-bg-accent-hover:#8f1a4c;--e-a-btn-bg-accent-active:#a93365;--e-a-btn-bg-info:#2563eb;--e-a-btn-bg-info-hover:#134cca;--e-a-btn-bg-info-active:#0e3b9c;--e-a-btn-bg-success:#0a875a;--e-a-btn-bg-success-hover:#06583a;--e-a-btn-bg-success-active:#03281b;--e-a-btn-bg-warning:#f59e0b;--e-a-btn-bg-warning-hover:#c57f08;--e-a-btn-bg-warning-active:#945f06;--e-a-btn-bg-danger:#dc2626;--e-a-btn-bg-danger-hover:#b21d1d;--e-a-btn-bg-danger-active:#861616;--e-a-dark-bg:#0c0d0e;--e-a-dark-color-txt:#9da5ae;--e-a-dark-color-txt-hover:#d5d8dc;--e-a-font-family:Roboto,Arial,Helvetica,sans-serif;--e-a-transition-hover:all .3s;--e-a-popover-shadow:0 2px 15px rgba(0,0,0,0.3);--e-a-dropdown-shadow:0 0 3px rgba(0,0,0,0.2)}.dialog-widget-content{background-color:var(--e-a-bg-default);position:absolute;border-radius:3px;box-shadow:2px 8px 23px 3px rgba(0,0,0,.2);overflow:hidden}.dialog-message{line-height:1.5;box-sizing:border-box}.dialog-close-button{cursor:pointer;position:absolute;margin-block-start:15px;left:15px;color:var(--e-a-color-txt);font-size:15px;line-height:1;transition:var(--e-a-transition-hover)}.dialog-close-button:hover{color:var(--e-a-color-txt-hover)}.dialog-prevent-scroll{overflow:hidden;max-height:100vh}.dialog-type-lightbox{position:fixed;height:100%;width:100%;bottom:0;left:0;background-color:rgba(0,0,0,.8);z-index:9999;-webkit-user-select:none;-moz-user-select:none;user-select:none}.elementor-editor-active .elementor-popup-modal{background-color:initial}.dialog-type-alert .dialog-widget-content,.dialog-type-confirm .dialog-widget-content{margin:auto;width:400px;padding:20px}.dialog-type-alert .dialog-header,.dialog-type-confirm .dialog-header{font-size:15px;font-weight:500}.dialog-type-alert .dialog-header:after,.dialog-type-confirm .dialog-header:after{content:"";display:block;border-block-end:var(--e-a-border);padding-block-end:10px;margin-block-end:10px;margin-inline-start:-20px;margin-inline-end:-20px}.dialog-type-alert .dialog-message,.dialog-type-confirm .dialog-message{min-height:50px}.dialog-type-alert .dialog-buttons-wrapper,.dialog-type-confirm .dialog-buttons-wrapper{padding-block-start:10px;display:flex;justify-content:flex-end;gap:15px}.dialog-type-alert .dialog-buttons-wrapper .dialog-button,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button{font-size:12px;font-weight:500;line-height:1.2;padding:8px 16px;outline:none;border:none;border-radius:var(--e-a-border-radius);background-color:var(--e-a-btn-bg);color:var(--e-a-btn-color-invert);transition:var(--e-a-transition-hover)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:hover{border:none}.dialog-type-alert .dialog-buttons-wrapper .dialog-button:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:hover{background-color:var(--e-a-btn-bg-hover);color:var(--e-a-btn-color-invert)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button:active,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:active{background-color:var(--e-a-btn-bg-active)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button:not([disabled]),.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:not([disabled]){cursor:pointer}.dialog-type-alert .dialog-buttons-wrapper .dialog-button:disabled,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:disabled{background-color:var(--e-a-btn-bg-disabled);color:var(--e-a-btn-color-disabled)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button:not(.elementor-button-state) .elementor-state-icon,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:not(.elementor-button-state) .elementor-state-icon{display:none}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt{background:transparent;color:var(--e-a-color-txt)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel:hover,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt:hover{background:var(--e-a-bg-hover);color:var(--e-a-color-txt-hover)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel:disabled,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt:disabled,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel:disabled,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt:disabled{background:transparent;color:var(--e-a-color-txt-disabled)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt-border,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt-border{border:1px solid var(--e-a-color-txt-muted)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-success,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-success,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-success,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-success{background-color:var(--e-a-btn-bg-success)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-success:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-success:hover,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-success:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-success:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-success:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-success:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-success:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-success:hover{background-color:var(--e-a-btn-bg-success-hover)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-take_over,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-take_over,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary{background-color:var(--e-a-btn-bg-primary);color:var(--e-a-btn-color)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok:hover,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-take_over:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-take_over:hover,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-take_over:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-take_over:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary:hover{background-color:var(--e-a-btn-bg-primary-hover);color:var(--e-a-btn-color)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-ok,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-take_over,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary.dialog-cancel,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary.e-btn-txt,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-ok,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-take_over,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary.dialog-cancel,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary.e-btn-txt{background:transparent;color:var(--e-a-color-primary-bold)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over:hover,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel:hover,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-ok:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-ok:hover,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-take_over:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-take_over:hover,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary.dialog-cancel:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary.dialog-cancel:hover,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary.e-btn-txt:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary.e-btn-txt:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-ok:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-ok:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-take_over:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-take_over:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary.dialog-cancel:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary.dialog-cancel:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary.e-btn-txt:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary.e-btn-txt:hover{background:var(--e-a-bg-primary)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-accent,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.go-pro,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-accent,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.go-pro{background-color:var(--e-a-btn-bg-accent)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-accent:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-accent:hover,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.go-pro:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.go-pro:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-accent:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-accent:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.go-pro:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.go-pro:hover{background-color:var(--e-a-btn-bg-accent-hover)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-accent:active,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.go-pro:active,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-accent:active,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.go-pro:active{background-color:var(--e-a-btn-bg-accent-active)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-info,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-info,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-info,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-info{background-color:var(--e-a-btn-bg-info)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-info:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-info:hover,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-info:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-info:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-info:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-info:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-info:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-info:hover{background-color:var(--e-a-btn-bg-info-hover)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-warning,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-warning,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-warning,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-warning{background-color:var(--e-a-btn-bg-warning)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-warning:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-warning:hover,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-warning:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-warning:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-warning:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-warning:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-warning:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-warning:hover{background-color:var(--e-a-btn-bg-warning-hover)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-danger,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-danger,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-danger,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-danger{background-color:var(--e-a-btn-bg-danger)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-danger:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-danger:hover,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-danger:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-danger:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-danger:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-danger:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-danger:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-danger:hover{background-color:var(--e-a-btn-bg-danger-hover)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button i,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button i{margin-inline-end:5px}.dialog-type-alert .dialog-buttons-wrapper .dialog-button:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button:hover,.dialog-type-alert .dialog-buttons-wrapper .dialog-button:visited,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:visited{color:initial}.flatpickr-calendar{width:280px}.flatpickr-calendar .flatpickr-current-month span.cur-month{font-weight:300}.flatpickr-calendar .dayContainer{width:280px;min-width:280px;max-width:280px}.flatpickr-calendar .flatpickr-days{width:280px}.flatpickr-calendar .flatpickr-day{max-width:37px;height:37px;line-height:37px}.elementor-hidden{display:none}.elementor-screen-only,.screen-reader-text,.screen-reader-text span,.ui-helper-hidden-accessible{position:absolute;top:-10000em;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.elementor-clearfix:after{content:"";display:block;clear:both;width:0;height:0}#elementor-change-exit-preference-dialog .dialog-message a{cursor:pointer}#elementor-change-exit-preference-dialog .dialog-message>div{margin-block-end:10px}#e-experiments-messages-dialog .dialog-confirm-header{font-weight:600}#e-kit-elements-defaults-create-dialog label{display:flex;align-items:center;justify-content:center;gap:10px;margin-block-start:20px}@media (min-width:1024px){body.admin-bar .dialog-lightbox-widget{height:calc(100vh - 32px)}}@media (max-width:1024px){body.admin-bar .dialog-type-lightbox{position:sticky;height:100vh}}.elementor-templates-modal .dialog-widget-content{font-family:Roboto,Arial,Helvetica,sans-serif;background-color:var(--e-a-bg-default);width:100%}@media (max-width:1439px){.elementor-templates-modal .dialog-widget-content{max-width:990px}}@media (min-width:1440px){.elementor-templates-modal .dialog-widget-content{max-width:1200px}}.elementor-templates-modal .dialog-header{border-block-end:var(--e-a-border);padding:0;z-index:1}.elementor-templates-modal .dialog-buttons-wrapper{border-block-start:var(--e-a-border);padding:10px;display:flex;justify-content:flex-end;gap:15px}.elementor-templates-modal .dialog-message{height:750px;max-height:85vh;overflow-y:auto;padding:20px}.elementor-templates-modal .dialog-content{height:100%;text-align:center}.elementor-templates-modal .dialog-loading{display:none}.elementor-templates-modal__header{display:flex;align-items:center;justify-content:space-between;height:50px}.elementor-templates-modal__header__logo{line-height:1;text-transform:uppercase;font-weight:700;cursor:pointer}.elementor-templates-modal__header__logo-area{text-align:start;padding-inline-start:15px}.elementor-templates-modal__header__logo-area>*{display:flex;align-items:center}.elementor-templates-modal__header__logo__icon-wrapper{margin-inline-end:10px;font-size:12px}.elementor-templates-modal__header__logo__title{color:var(--e-a-color-txt-active);padding-block-start:2px}.elementor-templates-modal__header__items-area{display:flex;flex-direction:row-reverse}.elementor-templates-modal__header__item{position:relative;display:flex;align-items:center;justify-content:center;box-sizing:content-box}.elementor-templates-modal__header__item>i{font-size:20px;transition:var(--e-a-transition-hover);cursor:pointer}.elementor-templates-modal__header__item>i:hover{color:var(--e-a-color-txt-hover)}.elementor-templates-modal__header__close--normal{width:47px;border-inline-start:var(--e-a-border)}.elementor-templates-modal__header__close--normal i{font-size:18px}.elementor-templates-modal__header__close--skip{padding:10px;padding-inline-start:20px;margin-inline-end:10px;font-size:11px;font-weight:400;line-height:1;border-radius:var(--e-a-border-radius);cursor:pointer}.elementor-templates-modal__header__close--skip>i{font-size:inherit;padding-inline-start:10px;margin-inline-start:15px;border-inline-start:1px solid}.elementor-templates-modal__header__close--skip>i:not(:hover){color:var(--e-a-color-white)}.elementor-templates-modal__sidebar{flex-shrink:0;width:25%;border-inline-end:var(--e-a-border)}.elementor-templates-modal__content{flex-grow:1}#elementor-toast{position:absolute;width:280px;padding:20px;border-radius:5px;color:var(--e-a-dark-color-txt);background-color:rgba(0,0,0,.8);z-index:10000}#elementor-toast.dialog-position-window{position:fixed}#elementor-toast .dialog-message{font-size:13px}#elementor-toast .dialog-buttons-wrapper{display:flex;justify-content:flex-end}#elementor-toast .dialog-buttons-wrapper:not(:empty){margin-top:15px}#elementor-toast .dialog-button{font-size:12px;font-weight:500;line-height:1.2;padding:8px 16px;margin-left:10px;color:var(--e-a-dark-color-txt);border-radius:var(--e-a-border-radius);transition:var(--e-a-transition-hover);cursor:pointer}#elementor-toast .dialog-button:hover{background:var(--e-a-bg-hover);color:var(--e-a-color-txt-hover)}#elementor-toast .dialog-button:last-child{margin-left:0}#wpadminbar #wp-admin-bar-elementor_edit_page .elementor-general-section+.elementor-second-section{border-block-start:1px solid #464b50;margin-block-start:6px}.e-logo-wrapper{background:var(--e-a-bg-logo);display:inline-block;padding:.75em;border-radius:50%;line-height:1}.e-logo-wrapper i{color:var(--e-a-color-logo);font-size:1em}#elementor-finder__modal{background:none;z-index:99999}#elementor-finder__modal .dialog-widget-content{width:650px;max-width:98%;top:18vh;left:calc(50% - 650px / 2)}#elementor-finder__modal .dialog-content{text-align:start}#elementor-finder__modal .dialog-message{height:auto;min-height:0;padding:0;text-align:right}#elementor-finder__search{padding:15px;display:flex}#elementor-finder__search i{font-size:16px;margin-inline-end:15px}#elementor-finder__search__input{border:none;background:none;outline:none;padding:0;margin:0;flex-grow:1;font-size:14px;box-shadow:none}#elementor-finder__search__input::-moz-placeholder{font-style:italic;font-weight:300}#elementor-finder__search__input::placeholder{font-style:italic;font-weight:300}#elementor-finder__results{max-height:50vh;overflow:auto}#elementor-finder__no-results{display:none;padding:20px}#elementor-finder__lock-dialog{z-index:100000}.elementor-finder__results__category{position:relative}.elementor-finder__results__category__title{padding:5px 25px;font-size:10px;border-block-end:var(--e-a-border)}.elementor-finder__results__category--dynamic .elementor-finder__results__category__items{min-height:26px}.elementor-finder__results__category .eicon-loading{display:none;position:absolute;left:10px;top:30px;color:var(--e-a-color-info);font-size:14px}.elementor-finder__results__item{display:flex}.elementor-finder__results__item a{text-decoration:none;color:inherit}.elementor-finder__results__item.elementor-active{background-color:var(--e-a-bg-hover)}.elementor-finder__results__item.elementor-active a{color:inherit}.elementor-finder__results__item:not(.elementor-active) .elementor-finder__results__item__actions{display:none}.elementor-finder__results__item__link{display:flex;align-items:center;height:35px;flex-grow:1}.elementor-finder__results__item__icon{width:60px;text-align:center;font-size:17px}.elementor-finder__results__item__title{font-size:13px}.elementor-finder__results__item__description{margin-inline-start:5px;font-style:italic}.elementor-finder__results__item__badge{text-transform:uppercase;position:absolute;inset-inline-end:16px;font-size:8px;font-weight:500;display:flex;align-items:center;gap:4px}.elementor-finder__results__item__actions{display:flex}.elementor-finder__results__item__action{display:flex;align-items:center;justify-content:center;height:100%;width:35px}.elementor-finder__results__item__action:hover{background-color:rgba(0,0,0,.07)}.tipsy{font-size:10px;position:absolute;padding:5px;z-index:100000}.tipsy-inner{background-color:#000;color:#fff;font-weight:500;max-width:200px;padding:5px 12px;text-align:center;border-radius:3px;box-shadow:0 0 5px 0 rgba(0,0,0,.5)}.tipsy-arrow{position:absolute;width:0;height:0;line-height:0;border:5px dashed #000}.tipsy-arrow-n{border-bottom-color:#000}.tipsy-arrow-s{border-top-color:#000}.tipsy-arrow-e{border-left-color:#000}.tipsy-arrow-w{border-right-color:#000}.tipsy-n .tipsy-arrow,.tipsy-nw .tipsy-arrow{border-left-color:transparent;border-right-color:transparent;top:0;border-bottom-style:solid;border-top:none}.tipsy-n .tipsy-arrow{left:50%;margin-left:-5px}.tipsy-nw .tipsy-arrow{left:10px}.tipsy-ne .tipsy-arrow{top:0;right:10px;border-bottom-style:solid;border-top:none;border-left-color:transparent;border-right-color:transparent}.tipsy-s .tipsy-arrow,.tipsy-se .tipsy-arrow,.tipsy-sw .tipsy-arrow{bottom:0;border-top-style:solid;border-bottom:none;border-left-color:transparent;border-right-color:transparent}.tipsy-s .tipsy-arrow{left:50%;margin-left:-5px}.tipsy-sw .tipsy-arrow{left:10px}.tipsy-se .tipsy-arrow{right:10px}.tipsy-e .tipsy-arrow,.tipsy-w .tipsy-arrow{top:50%;margin-top:-5px;border-top-color:transparent;border-bottom-color:transparent}.tipsy-e .tipsy-arrow{right:0;border-left-style:solid;border-right:none}.tipsy-w .tipsy-arrow{left:0;border-right-style:solid;border-left:none} \ No newline at end of file diff --git a/wp-content/plugins/elementor/assets/css/common.css b/wp-content/plugins/elementor/assets/css/common.css new file mode 100644 index 0000000..688b910 --- /dev/null +++ b/wp-content/plugins/elementor/assets/css/common.css @@ -0,0 +1,775 @@ +/*! elementor - v3.20.0 - 26-03-2024 */ +.dialog-widget-content { + background-color: var(--e-a-bg-default); + position: absolute; + border-radius: 3px; + box-shadow: 2px 8px 23px 3px rgba(0, 0, 0, 0.2); + overflow: hidden; +} + +.dialog-message { + line-height: 1.5; + box-sizing: border-box; +} + +.dialog-close-button { + cursor: pointer; + position: absolute; + margin-block-start: 15px; + right: 15px; + color: var(--e-a-color-txt); + font-size: 15px; + line-height: 1; + transition: var(--e-a-transition-hover); +} +.dialog-close-button:hover { + color: var(--e-a-color-txt-hover); +} + +.dialog-prevent-scroll { + overflow: hidden; + max-height: 100vh; +} + +.dialog-type-lightbox { + position: fixed; + height: 100%; + width: 100%; + bottom: 0; + left: 0; + background-color: rgba(0, 0, 0, 0.8); + z-index: 9999; + -webkit-user-select: none; + -moz-user-select: none; + user-select: none; +} + +.elementor-editor-active .elementor-popup-modal { + background-color: initial; +} + +.dialog-type-confirm .dialog-widget-content, +.dialog-type-alert .dialog-widget-content { + margin: auto; + width: 400px; + padding: 20px; +} +.dialog-type-confirm .dialog-header, +.dialog-type-alert .dialog-header { + font-size: 15px; + font-weight: 500; +} +.dialog-type-confirm .dialog-header:after, +.dialog-type-alert .dialog-header:after { + content: ""; + display: block; + border-block-end: var(--e-a-border); + padding-block-end: 10px; + margin-block-end: 10px; + margin-inline-start: -20px; + margin-inline-end: -20px; +} +.dialog-type-confirm .dialog-message, +.dialog-type-alert .dialog-message { + min-height: 50px; +} +.dialog-type-confirm .dialog-buttons-wrapper, +.dialog-type-alert .dialog-buttons-wrapper { + padding-block-start: 10px; + display: flex; + justify-content: flex-end; + gap: 15px; +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button { + font-size: 12px; + font-weight: 500; + line-height: 1.2; + padding: 8px 16px; + outline: none; + border: none; + border-radius: var(--e-a-border-radius); + background-color: var(--e-a-btn-bg); + color: var(--e-a-btn-color-invert); + transition: var(--e-a-transition-hover); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button:hover { + border: none; +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button:focus { + background-color: var(--e-a-btn-bg-hover); + color: var(--e-a-btn-color-invert); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:active, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button:active { + background-color: var(--e-a-btn-bg-active); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:not([disabled]), +.dialog-type-alert .dialog-buttons-wrapper .dialog-button:not([disabled]) { + cursor: pointer; +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:disabled, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button:disabled { + background-color: var(--e-a-btn-bg-disabled); + color: var(--e-a-btn-color-disabled); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:not(.elementor-button-state) .elementor-state-icon, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button:not(.elementor-button-state) .elementor-state-icon { + display: none; +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel { + background: transparent; + color: var(--e-a-color-txt); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel:focus { + background: var(--e-a-bg-hover); + color: var(--e-a-color-txt-hover); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt:disabled, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel:disabled, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt:disabled, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel:disabled { + background: transparent; + color: var(--e-a-color-txt-disabled); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt-border, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt-border { + border: 1px solid var(--e-a-color-txt-muted); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-success, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-success, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-success, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-success { + background-color: var(--e-a-btn-bg-success); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-success:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-success:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-success:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-success:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-success:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-success:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-success:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-success:focus { + background-color: var(--e-a-btn-bg-success-hover); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-take_over, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-take_over, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok { + background-color: var(--e-a-btn-bg-primary); + color: var(--e-a-btn-color); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-take_over:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-take_over:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-take_over:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-take_over:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok:focus { + background-color: var(--e-a-btn-bg-primary-hover); + color: var(--e-a-btn-color); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary.e-btn-txt, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-take_over, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary.dialog-cancel, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-ok, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary.e-btn-txt, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-take_over, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary.dialog-cancel, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-ok, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel { + background: transparent; + color: var(--e-a-color-primary-bold); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary.e-btn-txt:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-take_over:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary.dialog-cancel:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-ok:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary.e-btn-txt:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-take_over:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary.dialog-cancel:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-ok:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary.e-btn-txt:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-take_over:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary.dialog-cancel:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-ok:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary.e-btn-txt:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-take_over:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary.dialog-cancel:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-ok:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel:focus { + background: var(--e-a-bg-primary); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.go-pro, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-accent, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.go-pro, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-accent { + background-color: var(--e-a-btn-bg-accent); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.go-pro:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.go-pro:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-accent:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-accent:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.go-pro:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.go-pro:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-accent:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-accent:focus { + background-color: var(--e-a-btn-bg-accent-hover); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.go-pro:active, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-accent:active, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.go-pro:active, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-accent:active { + background-color: var(--e-a-btn-bg-accent-active); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-info, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-info, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-info, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-info { + background-color: var(--e-a-btn-bg-info); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-info:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-info:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-info:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-info:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-info:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-info:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-info:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-info:focus { + background-color: var(--e-a-btn-bg-info-hover); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-warning, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-warning, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-warning, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-warning { + background-color: var(--e-a-btn-bg-warning); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-warning:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-warning:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-warning:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-warning:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-warning:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-warning:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-warning:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-warning:focus { + background-color: var(--e-a-btn-bg-warning-hover); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-danger, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-danger, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-danger, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-danger { + background-color: var(--e-a-btn-bg-danger); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-danger:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-danger:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-danger:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-danger:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-danger:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-danger:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-danger:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-danger:focus { + background-color: var(--e-a-btn-bg-danger-hover); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button i, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button i { + margin-inline-end: 5px; +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button:visited, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button:visited { + color: initial; +} +.flatpickr-calendar { + width: 280px; +} +.flatpickr-calendar .flatpickr-current-month span.cur-month { + font-weight: 300; +} +.flatpickr-calendar .dayContainer { + width: 280px; + min-width: 280px; + max-width: 280px; +} +.flatpickr-calendar .flatpickr-days { + width: 280px; +} +.flatpickr-calendar .flatpickr-day { + max-width: 37px; + height: 37px; + line-height: 37px; +} + +.elementor-hidden { + display: none; +} + +.elementor-screen-only, +.screen-reader-text, +.screen-reader-text span, +.ui-helper-hidden-accessible { + position: absolute; + top: -10000em; + width: 1px; + height: 1px; + margin: -1px; + padding: 0; + overflow: hidden; + clip: rect(0, 0, 0, 0); + border: 0; +} + +.elementor-clearfix:after { + content: ""; + display: block; + clear: both; + width: 0; + height: 0; +} + +.e-logo-wrapper { + background: var(--e-a-bg-logo); + display: inline-block; + padding: 0.75em; + border-radius: 50%; + line-height: 1; +} +.e-logo-wrapper i { + color: var(--e-a-color-logo); + font-size: 1em; +} + +#elementor-change-exit-preference-dialog .dialog-message a { + cursor: pointer; +} +#elementor-change-exit-preference-dialog .dialog-message > div { + margin-block-end: 10px; +} + +#e-experiments-messages-dialog .dialog-confirm-header { + font-weight: 600; +} + +#e-kit-elements-defaults-create-dialog label { + display: flex; + align-items: center; + justify-content: center; + gap: 10px; + margin-block-start: 20px; +} + +@media (min-width: 1024px) { + body.admin-bar .dialog-lightbox-widget { + height: calc(100vh - 32px); + } +} +@media (max-width: 1024px) { + body.admin-bar .dialog-type-lightbox { + position: sticky; + height: 100vh; + } +} +.elementor-templates-modal .dialog-widget-content { + font-family: Roboto, Arial, Helvetica, sans-serif; + background-color: var(--e-a-bg-default); + width: 100%; +} +@media (max-width: 1439px) { + .elementor-templates-modal .dialog-widget-content { + max-width: 990px; + } +} +@media (min-width: 1440px) { + .elementor-templates-modal .dialog-widget-content { + max-width: 1200px; + } +} +.elementor-templates-modal .dialog-header { + border-block-end: var(--e-a-border); + padding: 0; + z-index: 1; +} +.elementor-templates-modal .dialog-buttons-wrapper { + border-block-start: var(--e-a-border); + padding: 10px; + display: flex; + justify-content: flex-end; + gap: 15px; +} +.elementor-templates-modal .dialog-message { + height: 750px; + max-height: 85vh; + overflow-y: auto; + padding: 20px; +} +.elementor-templates-modal .dialog-content { + height: 100%; + text-align: center; +} +.elementor-templates-modal .dialog-loading { + display: none; +} +.elementor-templates-modal__header { + display: flex; + align-items: center; + justify-content: space-between; + height: 50px; +} +.elementor-templates-modal__header__logo { + line-height: 1; + text-transform: uppercase; + font-weight: bold; + cursor: pointer; +} +.elementor-templates-modal__header__logo-area { + text-align: start; + padding-inline-start: 15px; +} +.elementor-templates-modal__header__logo-area > * { + display: flex; + align-items: center; +} +.elementor-templates-modal__header__logo__icon-wrapper { + margin-inline-end: 10px; + font-size: 12px; +} +.elementor-templates-modal__header__logo__title { + color: var(--e-a-color-txt-active); + padding-block-start: 2px; +} +.elementor-templates-modal__header__items-area { + display: flex; + flex-direction: row-reverse; +} +.elementor-templates-modal__header__item { + position: relative; + display: flex; + align-items: center; + justify-content: center; + box-sizing: content-box; +} +.elementor-templates-modal__header__item > i { + font-size: 20px; + transition: var(--e-a-transition-hover); + cursor: pointer; +} +.elementor-templates-modal__header__item > i:hover { + color: var(--e-a-color-txt-hover); +} +.elementor-templates-modal__header__close--normal { + width: 47px; + border-inline-start: var(--e-a-border); +} +.elementor-templates-modal__header__close--normal i { + font-size: 18px; +} +.elementor-templates-modal__header__close--skip { + padding: 10px; + padding-inline-start: 20px; + margin-inline-end: 10px; + font-size: 11px; + font-weight: normal; + line-height: 1; + border-radius: var(--e-a-border-radius); + cursor: pointer; +} +.elementor-templates-modal__header__close--skip > i { + font-size: inherit; + padding-inline-start: 10px; + margin-inline-start: 15px; + border-inline-start: 1px solid; +} +.elementor-templates-modal__header__close--skip > i:not(:hover) { + color: var(--e-a-color-white); +} +.elementor-templates-modal__sidebar { + flex-shrink: 0; + width: 25%; + border-inline-end: var(--e-a-border); +} +.elementor-templates-modal__content { + flex-grow: 1; +} + +#elementor-toast { + position: absolute; + width: 280px; + padding: 20px; + border-radius: 5px; + color: var(--e-a-dark-color-txt); + background-color: rgba(0, 0, 0, 0.8); + z-index: 10000; +} +#elementor-toast.dialog-position-window { + position: fixed; +} +#elementor-toast .dialog-message { + font-size: 13px; +} +#elementor-toast .dialog-buttons-wrapper { + display: flex; + justify-content: flex-end; +} +#elementor-toast .dialog-buttons-wrapper:not(:empty) { + margin-top: 15px; +} +#elementor-toast .dialog-button { + font-size: 12px; + font-weight: 500; + line-height: 1.2; + padding: 8px 16px; + margin-right: 10px; + color: var(--e-a-dark-color-txt); + border-radius: var(--e-a-border-radius); + transition: var(--e-a-transition-hover); + cursor: pointer; +} +#elementor-toast .dialog-button:hover { + background: var(--e-a-bg-hover); + color: var(--e-a-color-txt-hover); +} +#elementor-toast .dialog-button:last-child { + margin-right: 0; +} + +/* Will select next element after last '.elementor-general-section' */ +#wpadminbar #wp-admin-bar-elementor_edit_page .elementor-general-section + .elementor-second-section { + border-block-start: 1px solid #464b50; + margin-block-start: 6px; +} + +.e-logo-wrapper { + background: var(--e-a-bg-logo); + display: inline-block; + padding: 0.75em; + border-radius: 50%; + line-height: 1; +} +.e-logo-wrapper i { + color: var(--e-a-color-logo); + font-size: 1em; +} + +#elementor-finder__modal { + background: none; + z-index: 99999; +} +#elementor-finder__modal .dialog-widget-content { + width: 650px; + max-width: 98%; + top: 18vh; + left: calc(50% - 650px / 2); +} +#elementor-finder__modal .dialog-content { + text-align: start; +} +#elementor-finder__modal .dialog-message { + height: initial; + min-height: 0; + padding: 0; + text-align: left; +} +#elementor-finder__search { + padding: 15px; + display: flex; +} +#elementor-finder__search i { + font-size: 16px; + margin-inline-end: 15px; +} +#elementor-finder__search__input { + border: none; + background: none; + outline: none; + padding: 0; + margin: 0; + flex-grow: 1; + font-size: 14px; + box-shadow: none; +} +#elementor-finder__search__input::-moz-placeholder { + font-style: italic; + font-weight: 300; +} +#elementor-finder__search__input::placeholder { + font-style: italic; + font-weight: 300; +} +#elementor-finder__results { + max-height: 50vh; + overflow: auto; +} +#elementor-finder__no-results { + display: none; + padding: 20px; +} +#elementor-finder__lock-dialog { + z-index: 100000; +} + +.elementor-finder__results__category { + position: relative; +} +.elementor-finder__results__category__title { + padding: 5px 25px; + font-size: 10px; + border-block-end: var(--e-a-border); +} +.elementor-finder__results__category--dynamic .elementor-finder__results__category__items { + min-height: 26px; +} +.elementor-finder__results__category .eicon-loading { + display: none; + position: absolute; + right: 10px; + top: 30px; + color: var(--e-a-color-info); + font-size: 14px; +} +.elementor-finder__results__item { + display: flex; +} +.elementor-finder__results__item a { + text-decoration: none; + color: inherit; +} +.elementor-finder__results__item.elementor-active { + background-color: var(--e-a-bg-hover); +} +.elementor-finder__results__item.elementor-active a { + color: inherit; +} +.elementor-finder__results__item:not(.elementor-active) .elementor-finder__results__item__actions { + display: none; +} +.elementor-finder__results__item__link { + display: flex; + align-items: center; + height: 35px; + flex-grow: 1; +} +.elementor-finder__results__item__icon { + width: 60px; + text-align: center; + font-size: 17px; +} +.elementor-finder__results__item__title { + font-size: 13px; +} +.elementor-finder__results__item__description { + margin-inline-start: 5px; + font-style: italic; +} +.elementor-finder__results__item__badge { + text-transform: uppercase; + position: absolute; + inset-inline-end: 16px; + font-size: 8px; + font-weight: 500; + display: flex; + align-items: center; + gap: 4px; +} +.elementor-finder__results__item__actions { + display: flex; +} +.elementor-finder__results__item__action { + display: flex; + align-items: center; + justify-content: center; + height: 100%; + width: 35px; +} +.elementor-finder__results__item__action:hover { + background-color: rgba(0, 0, 0, 0.07); +} + +.tipsy { + font-size: 10px; + position: absolute; + padding: 5px; + z-index: 100000; +} + +.tipsy-inner { + background-color: #000; + color: #FFF; + font-weight: 500; + max-width: 200px; + padding: 5px 12px; + text-align: center; + border-radius: 3px; + box-shadow: 0 0 5px 0 rgba(0, 0, 0, 0.5); +} + +.tipsy-arrow { + position: absolute; + width: 0; + height: 0; + line-height: 0; + border: 5px dashed #000; +} + +.tipsy-arrow-n { + border-bottom-color: #000; +} + +.tipsy-arrow-s { + border-top-color: #000; +} + +.tipsy-arrow-e { + border-left-color: #000; +} + +.tipsy-arrow-w { + border-right-color: #000; +} + +.tipsy-n .tipsy-arrow, .tipsy-nw .tipsy-arrow { + border-left-color: transparent; + border-right-color: transparent; + top: 0; + border-bottom-style: solid; + border-top: none; +} + +.tipsy-n .tipsy-arrow { + left: 50%; + margin-left: -5px; +} + +.tipsy-nw .tipsy-arrow { + left: 10px; +} + +.tipsy-ne .tipsy-arrow { + top: 0; + right: 10px; + border-bottom-style: solid; + border-top: none; + border-left-color: transparent; + border-right-color: transparent; +} + +.tipsy-s .tipsy-arrow, .tipsy-se .tipsy-arrow, .tipsy-sw .tipsy-arrow { + bottom: 0; + border-top-style: solid; + border-bottom: none; + border-left-color: transparent; + border-right-color: transparent; +} + +.tipsy-s .tipsy-arrow { + left: 50%; + margin-left: -5px; +} + +.tipsy-sw .tipsy-arrow { + left: 10px; +} + +.tipsy-se .tipsy-arrow { + right: 10px; +} + +.tipsy-e .tipsy-arrow, .tipsy-w .tipsy-arrow { + top: 50%; + margin-top: -5px; + border-top-color: transparent; + border-bottom-color: transparent; +} + +.tipsy-e .tipsy-arrow { + right: 0; + border-left-style: solid; + border-right: none; +} + +.tipsy-w .tipsy-arrow { + left: 0; + border-right-style: solid; + border-left: none; +} +/*# sourceMappingURL=common.css.map */ \ No newline at end of file diff --git a/wp-content/plugins/elementor/assets/css/common.min.css b/wp-content/plugins/elementor/assets/css/common.min.css new file mode 100644 index 0000000..1e55c1f --- /dev/null +++ b/wp-content/plugins/elementor/assets/css/common.min.css @@ -0,0 +1,2 @@ +/*! elementor - v3.20.0 - 26-03-2024 */ +.dialog-widget-content{background-color:var(--e-a-bg-default);position:absolute;border-radius:3px;box-shadow:2px 8px 23px 3px rgba(0,0,0,.2);overflow:hidden}.dialog-message{line-height:1.5;box-sizing:border-box}.dialog-close-button{cursor:pointer;position:absolute;margin-block-start:15px;right:15px;color:var(--e-a-color-txt);font-size:15px;line-height:1;transition:var(--e-a-transition-hover)}.dialog-close-button:hover{color:var(--e-a-color-txt-hover)}.dialog-prevent-scroll{overflow:hidden;max-height:100vh}.dialog-type-lightbox{position:fixed;height:100%;width:100%;bottom:0;left:0;background-color:rgba(0,0,0,.8);z-index:9999;-webkit-user-select:none;-moz-user-select:none;user-select:none}.elementor-editor-active .elementor-popup-modal{background-color:initial}.dialog-type-alert .dialog-widget-content,.dialog-type-confirm .dialog-widget-content{margin:auto;width:400px;padding:20px}.dialog-type-alert .dialog-header,.dialog-type-confirm .dialog-header{font-size:15px;font-weight:500}.dialog-type-alert .dialog-header:after,.dialog-type-confirm .dialog-header:after{content:"";display:block;border-block-end:var(--e-a-border);padding-block-end:10px;margin-block-end:10px;margin-inline-start:-20px;margin-inline-end:-20px}.dialog-type-alert .dialog-message,.dialog-type-confirm .dialog-message{min-height:50px}.dialog-type-alert .dialog-buttons-wrapper,.dialog-type-confirm .dialog-buttons-wrapper{padding-block-start:10px;display:flex;justify-content:flex-end;gap:15px}.dialog-type-alert .dialog-buttons-wrapper .dialog-button,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button{font-size:12px;font-weight:500;line-height:1.2;padding:8px 16px;outline:none;border:none;border-radius:var(--e-a-border-radius);background-color:var(--e-a-btn-bg);color:var(--e-a-btn-color-invert);transition:var(--e-a-transition-hover)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:hover{border:none}.dialog-type-alert .dialog-buttons-wrapper .dialog-button:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:hover{background-color:var(--e-a-btn-bg-hover);color:var(--e-a-btn-color-invert)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button:active,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:active{background-color:var(--e-a-btn-bg-active)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button:not([disabled]),.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:not([disabled]){cursor:pointer}.dialog-type-alert .dialog-buttons-wrapper .dialog-button:disabled,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:disabled{background-color:var(--e-a-btn-bg-disabled);color:var(--e-a-btn-color-disabled)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button:not(.elementor-button-state) .elementor-state-icon,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:not(.elementor-button-state) .elementor-state-icon{display:none}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt{background:transparent;color:var(--e-a-color-txt)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel:hover,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt:hover{background:var(--e-a-bg-hover);color:var(--e-a-color-txt-hover)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel:disabled,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt:disabled,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel:disabled,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt:disabled{background:transparent;color:var(--e-a-color-txt-disabled)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt-border,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt-border{border:1px solid var(--e-a-color-txt-muted)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-success,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-success,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-success,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-success{background-color:var(--e-a-btn-bg-success)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-success:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-success:hover,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-success:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-success:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-success:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-success:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-success:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-success:hover{background-color:var(--e-a-btn-bg-success-hover)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-take_over,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-take_over,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary{background-color:var(--e-a-btn-bg-primary);color:var(--e-a-btn-color)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok:hover,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-take_over:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-take_over:hover,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-take_over:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-take_over:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary:hover{background-color:var(--e-a-btn-bg-primary-hover);color:var(--e-a-btn-color)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-ok,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-take_over,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary.dialog-cancel,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary.e-btn-txt,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-ok,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-take_over,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary.dialog-cancel,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary.e-btn-txt{background:transparent;color:var(--e-a-color-primary-bold)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over:hover,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel:hover,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-ok:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-ok:hover,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-take_over:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-take_over:hover,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary.dialog-cancel:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary.dialog-cancel:hover,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary.e-btn-txt:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary.e-btn-txt:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-ok:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-ok:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-take_over:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-take_over:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary.dialog-cancel:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary.dialog-cancel:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary.e-btn-txt:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary.e-btn-txt:hover{background:var(--e-a-bg-primary)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-accent,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.go-pro,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-accent,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.go-pro{background-color:var(--e-a-btn-bg-accent)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-accent:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-accent:hover,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.go-pro:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.go-pro:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-accent:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-accent:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.go-pro:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.go-pro:hover{background-color:var(--e-a-btn-bg-accent-hover)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-accent:active,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.go-pro:active,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-accent:active,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.go-pro:active{background-color:var(--e-a-btn-bg-accent-active)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-info,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-info,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-info,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-info{background-color:var(--e-a-btn-bg-info)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-info:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-info:hover,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-info:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-info:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-info:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-info:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-info:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-info:hover{background-color:var(--e-a-btn-bg-info-hover)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-warning,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-warning,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-warning,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-warning{background-color:var(--e-a-btn-bg-warning)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-warning:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-warning:hover,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-warning:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-warning:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-warning:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-warning:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-warning:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-warning:hover{background-color:var(--e-a-btn-bg-warning-hover)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-danger,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-danger,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-danger,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-danger{background-color:var(--e-a-btn-bg-danger)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-danger:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-danger:hover,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-danger:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-danger:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-danger:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-danger:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-danger:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-danger:hover{background-color:var(--e-a-btn-bg-danger-hover)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button i,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button i{margin-inline-end:5px}.dialog-type-alert .dialog-buttons-wrapper .dialog-button:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button:hover,.dialog-type-alert .dialog-buttons-wrapper .dialog-button:visited,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:visited{color:initial}.flatpickr-calendar{width:280px}.flatpickr-calendar .flatpickr-current-month span.cur-month{font-weight:300}.flatpickr-calendar .dayContainer{width:280px;min-width:280px;max-width:280px}.flatpickr-calendar .flatpickr-days{width:280px}.flatpickr-calendar .flatpickr-day{max-width:37px;height:37px;line-height:37px}.elementor-hidden{display:none}.elementor-screen-only,.screen-reader-text,.screen-reader-text span,.ui-helper-hidden-accessible{position:absolute;top:-10000em;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.elementor-clearfix:after{content:"";display:block;clear:both;width:0;height:0}#elementor-change-exit-preference-dialog .dialog-message a{cursor:pointer}#elementor-change-exit-preference-dialog .dialog-message>div{margin-block-end:10px}#e-experiments-messages-dialog .dialog-confirm-header{font-weight:600}#e-kit-elements-defaults-create-dialog label{display:flex;align-items:center;justify-content:center;gap:10px;margin-block-start:20px}@media (min-width:1024px){body.admin-bar .dialog-lightbox-widget{height:calc(100vh - 32px)}}@media (max-width:1024px){body.admin-bar .dialog-type-lightbox{position:sticky;height:100vh}}.elementor-templates-modal .dialog-widget-content{font-family:Roboto,Arial,Helvetica,sans-serif;background-color:var(--e-a-bg-default);width:100%}@media (max-width:1439px){.elementor-templates-modal .dialog-widget-content{max-width:990px}}@media (min-width:1440px){.elementor-templates-modal .dialog-widget-content{max-width:1200px}}.elementor-templates-modal .dialog-header{border-block-end:var(--e-a-border);padding:0;z-index:1}.elementor-templates-modal .dialog-buttons-wrapper{border-block-start:var(--e-a-border);padding:10px;display:flex;justify-content:flex-end;gap:15px}.elementor-templates-modal .dialog-message{height:750px;max-height:85vh;overflow-y:auto;padding:20px}.elementor-templates-modal .dialog-content{height:100%;text-align:center}.elementor-templates-modal .dialog-loading{display:none}.elementor-templates-modal__header{display:flex;align-items:center;justify-content:space-between;height:50px}.elementor-templates-modal__header__logo{line-height:1;text-transform:uppercase;font-weight:700;cursor:pointer}.elementor-templates-modal__header__logo-area{text-align:start;padding-inline-start:15px}.elementor-templates-modal__header__logo-area>*{display:flex;align-items:center}.elementor-templates-modal__header__logo__icon-wrapper{margin-inline-end:10px;font-size:12px}.elementor-templates-modal__header__logo__title{color:var(--e-a-color-txt-active);padding-block-start:2px}.elementor-templates-modal__header__items-area{display:flex;flex-direction:row-reverse}.elementor-templates-modal__header__item{position:relative;display:flex;align-items:center;justify-content:center;box-sizing:content-box}.elementor-templates-modal__header__item>i{font-size:20px;transition:var(--e-a-transition-hover);cursor:pointer}.elementor-templates-modal__header__item>i:hover{color:var(--e-a-color-txt-hover)}.elementor-templates-modal__header__close--normal{width:47px;border-inline-start:var(--e-a-border)}.elementor-templates-modal__header__close--normal i{font-size:18px}.elementor-templates-modal__header__close--skip{padding:10px;padding-inline-start:20px;margin-inline-end:10px;font-size:11px;font-weight:400;line-height:1;border-radius:var(--e-a-border-radius);cursor:pointer}.elementor-templates-modal__header__close--skip>i{font-size:inherit;padding-inline-start:10px;margin-inline-start:15px;border-inline-start:1px solid}.elementor-templates-modal__header__close--skip>i:not(:hover){color:var(--e-a-color-white)}.elementor-templates-modal__sidebar{flex-shrink:0;width:25%;border-inline-end:var(--e-a-border)}.elementor-templates-modal__content{flex-grow:1}#elementor-toast{position:absolute;width:280px;padding:20px;border-radius:5px;color:var(--e-a-dark-color-txt);background-color:rgba(0,0,0,.8);z-index:10000}#elementor-toast.dialog-position-window{position:fixed}#elementor-toast .dialog-message{font-size:13px}#elementor-toast .dialog-buttons-wrapper{display:flex;justify-content:flex-end}#elementor-toast .dialog-buttons-wrapper:not(:empty){margin-top:15px}#elementor-toast .dialog-button{font-size:12px;font-weight:500;line-height:1.2;padding:8px 16px;margin-right:10px;color:var(--e-a-dark-color-txt);border-radius:var(--e-a-border-radius);transition:var(--e-a-transition-hover);cursor:pointer}#elementor-toast .dialog-button:hover{background:var(--e-a-bg-hover);color:var(--e-a-color-txt-hover)}#elementor-toast .dialog-button:last-child{margin-right:0}#wpadminbar #wp-admin-bar-elementor_edit_page .elementor-general-section+.elementor-second-section{border-block-start:1px solid #464b50;margin-block-start:6px}.e-logo-wrapper{background:var(--e-a-bg-logo);display:inline-block;padding:.75em;border-radius:50%;line-height:1}.e-logo-wrapper i{color:var(--e-a-color-logo);font-size:1em}#elementor-finder__modal{background:none;z-index:99999}#elementor-finder__modal .dialog-widget-content{width:650px;max-width:98%;top:18vh;left:calc(50% - 650px / 2)}#elementor-finder__modal .dialog-content{text-align:start}#elementor-finder__modal .dialog-message{height:auto;min-height:0;padding:0;text-align:left}#elementor-finder__search{padding:15px;display:flex}#elementor-finder__search i{font-size:16px;margin-inline-end:15px}#elementor-finder__search__input{border:none;background:none;outline:none;padding:0;margin:0;flex-grow:1;font-size:14px;box-shadow:none}#elementor-finder__search__input::-moz-placeholder{font-style:italic;font-weight:300}#elementor-finder__search__input::placeholder{font-style:italic;font-weight:300}#elementor-finder__results{max-height:50vh;overflow:auto}#elementor-finder__no-results{display:none;padding:20px}#elementor-finder__lock-dialog{z-index:100000}.elementor-finder__results__category{position:relative}.elementor-finder__results__category__title{padding:5px 25px;font-size:10px;border-block-end:var(--e-a-border)}.elementor-finder__results__category--dynamic .elementor-finder__results__category__items{min-height:26px}.elementor-finder__results__category .eicon-loading{display:none;position:absolute;right:10px;top:30px;color:var(--e-a-color-info);font-size:14px}.elementor-finder__results__item{display:flex}.elementor-finder__results__item a{text-decoration:none;color:inherit}.elementor-finder__results__item.elementor-active{background-color:var(--e-a-bg-hover)}.elementor-finder__results__item.elementor-active a{color:inherit}.elementor-finder__results__item:not(.elementor-active) .elementor-finder__results__item__actions{display:none}.elementor-finder__results__item__link{display:flex;align-items:center;height:35px;flex-grow:1}.elementor-finder__results__item__icon{width:60px;text-align:center;font-size:17px}.elementor-finder__results__item__title{font-size:13px}.elementor-finder__results__item__description{margin-inline-start:5px;font-style:italic}.elementor-finder__results__item__badge{text-transform:uppercase;position:absolute;inset-inline-end:16px;font-size:8px;font-weight:500;display:flex;align-items:center;gap:4px}.elementor-finder__results__item__actions{display:flex}.elementor-finder__results__item__action{display:flex;align-items:center;justify-content:center;height:100%;width:35px}.elementor-finder__results__item__action:hover{background-color:rgba(0,0,0,.07)}.tipsy{font-size:10px;position:absolute;padding:5px;z-index:100000}.tipsy-inner{background-color:#000;color:#fff;font-weight:500;max-width:200px;padding:5px 12px;text-align:center;border-radius:3px;box-shadow:0 0 5px 0 rgba(0,0,0,.5)}.tipsy-arrow{position:absolute;width:0;height:0;line-height:0;border:5px dashed #000}.tipsy-arrow-n{border-bottom-color:#000}.tipsy-arrow-s{border-top-color:#000}.tipsy-arrow-e{border-left-color:#000}.tipsy-arrow-w{border-right-color:#000}.tipsy-n .tipsy-arrow,.tipsy-nw .tipsy-arrow{border-left-color:transparent;border-right-color:transparent;top:0;border-bottom-style:solid;border-top:none}.tipsy-n .tipsy-arrow{left:50%;margin-left:-5px}.tipsy-nw .tipsy-arrow{left:10px}.tipsy-ne .tipsy-arrow{top:0;right:10px;border-bottom-style:solid;border-top:none;border-left-color:transparent;border-right-color:transparent}.tipsy-s .tipsy-arrow,.tipsy-se .tipsy-arrow,.tipsy-sw .tipsy-arrow{bottom:0;border-top-style:solid;border-bottom:none;border-left-color:transparent;border-right-color:transparent}.tipsy-s .tipsy-arrow{left:50%;margin-left:-5px}.tipsy-sw .tipsy-arrow{left:10px}.tipsy-se .tipsy-arrow{right:10px}.tipsy-e .tipsy-arrow,.tipsy-w .tipsy-arrow{top:50%;margin-top:-5px;border-top-color:transparent;border-bottom-color:transparent}.tipsy-e .tipsy-arrow{right:0;border-left-style:solid;border-right:none}.tipsy-w .tipsy-arrow{left:0;border-right-style:solid;border-left:none} \ No newline at end of file diff --git a/wp-content/plugins/elementor/assets/css/editor-preview-rtl.css b/wp-content/plugins/elementor/assets/css/editor-preview-rtl.css new file mode 100644 index 0000000..a7c2827 --- /dev/null +++ b/wp-content/plugins/elementor/assets/css/editor-preview-rtl.css @@ -0,0 +1,4735 @@ +/*! elementor - v3.20.0 - 26-03-2024 */ +.dialog-widget-content { + background-color: var(--e-a-bg-default); + position: absolute; + border-radius: 3px; + box-shadow: 2px 8px 23px 3px rgba(0, 0, 0, 0.2); + overflow: hidden; +} + +.dialog-message { + line-height: 1.5; + box-sizing: border-box; +} + +.dialog-close-button { + cursor: pointer; + position: absolute; + margin-block-start: 15px; + left: 15px; + color: var(--e-a-color-txt); + font-size: 15px; + line-height: 1; + transition: var(--e-a-transition-hover); +} +.dialog-close-button:hover { + color: var(--e-a-color-txt-hover); +} + +.dialog-prevent-scroll { + overflow: hidden; + max-height: 100vh; +} + +.dialog-type-lightbox { + position: fixed; + height: 100%; + width: 100%; + bottom: 0; + left: 0; + background-color: rgba(0, 0, 0, 0.8); + z-index: 9999; + -webkit-user-select: none; + -moz-user-select: none; + user-select: none; +} + +.elementor-editor-active .elementor-popup-modal { + background-color: initial; +} + +.dialog-type-confirm .dialog-widget-content, +.dialog-type-alert .dialog-widget-content { + margin: auto; + width: 400px; + padding: 20px; +} +.dialog-type-confirm .dialog-header, +.dialog-type-alert .dialog-header { + font-size: 15px; + font-weight: 500; +} +.dialog-type-confirm .dialog-header:after, +.dialog-type-alert .dialog-header:after { + content: ""; + display: block; + border-block-end: var(--e-a-border); + padding-block-end: 10px; + margin-block-end: 10px; + margin-inline-start: -20px; + margin-inline-end: -20px; +} +.dialog-type-confirm .dialog-message, +.dialog-type-alert .dialog-message { + min-height: 50px; +} +.dialog-type-confirm .dialog-buttons-wrapper, +.dialog-type-alert .dialog-buttons-wrapper { + padding-block-start: 10px; + display: flex; + justify-content: flex-end; + gap: 15px; +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button { + font-size: 12px; + font-weight: 500; + line-height: 1.2; + padding: 8px 16px; + outline: none; + border: none; + border-radius: var(--e-a-border-radius); + background-color: var(--e-a-btn-bg); + color: var(--e-a-btn-color-invert); + transition: var(--e-a-transition-hover); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button:hover { + border: none; +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button:focus { + background-color: var(--e-a-btn-bg-hover); + color: var(--e-a-btn-color-invert); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:active, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button:active { + background-color: var(--e-a-btn-bg-active); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:not([disabled]), +.dialog-type-alert .dialog-buttons-wrapper .dialog-button:not([disabled]) { + cursor: pointer; +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:disabled, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button:disabled { + background-color: var(--e-a-btn-bg-disabled); + color: var(--e-a-btn-color-disabled); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:not(.elementor-button-state) .elementor-state-icon, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button:not(.elementor-button-state) .elementor-state-icon { + display: none; +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel { + background: transparent; + color: var(--e-a-color-txt); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel:focus { + background: var(--e-a-bg-hover); + color: var(--e-a-color-txt-hover); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt:disabled, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel:disabled, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt:disabled, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel:disabled { + background: transparent; + color: var(--e-a-color-txt-disabled); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt-border, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt-border { + border: 1px solid var(--e-a-color-txt-muted); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-success, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-success, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-success, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-success { + background-color: var(--e-a-btn-bg-success); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-success:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-success:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-success:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-success:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-success:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-success:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-success:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-success:focus { + background-color: var(--e-a-btn-bg-success-hover); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-take_over, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-take_over, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok { + background-color: var(--e-a-btn-bg-primary); + color: var(--e-a-btn-color); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-take_over:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-take_over:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-take_over:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-take_over:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok:focus { + background-color: var(--e-a-btn-bg-primary-hover); + color: var(--e-a-btn-color); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary.e-btn-txt, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-take_over, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary.dialog-cancel, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-ok, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary.e-btn-txt, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-take_over, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary.dialog-cancel, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-ok, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel { + background: transparent; + color: var(--e-a-color-primary-bold); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary.e-btn-txt:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-take_over:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary.dialog-cancel:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-ok:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary.e-btn-txt:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-take_over:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary.dialog-cancel:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-ok:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary.e-btn-txt:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-take_over:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary.dialog-cancel:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-ok:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary.e-btn-txt:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-take_over:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary.dialog-cancel:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-ok:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel:focus { + background: var(--e-a-bg-primary); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.go-pro, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-accent, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.go-pro, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-accent { + background-color: var(--e-a-btn-bg-accent); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.go-pro:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.go-pro:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-accent:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-accent:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.go-pro:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.go-pro:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-accent:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-accent:focus { + background-color: var(--e-a-btn-bg-accent-hover); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.go-pro:active, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-accent:active, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.go-pro:active, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-accent:active { + background-color: var(--e-a-btn-bg-accent-active); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-info, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-info, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-info, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-info { + background-color: var(--e-a-btn-bg-info); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-info:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-info:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-info:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-info:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-info:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-info:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-info:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-info:focus { + background-color: var(--e-a-btn-bg-info-hover); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-warning, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-warning, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-warning, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-warning { + background-color: var(--e-a-btn-bg-warning); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-warning:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-warning:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-warning:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-warning:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-warning:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-warning:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-warning:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-warning:focus { + background-color: var(--e-a-btn-bg-warning-hover); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-danger, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-danger, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-danger, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-danger { + background-color: var(--e-a-btn-bg-danger); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-danger:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-danger:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-danger:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-danger:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-danger:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-danger:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-danger:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-danger:focus { + background-color: var(--e-a-btn-bg-danger-hover); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button i, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button i { + margin-inline-end: 5px; +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button:visited, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button:visited { + color: initial; +} +.flatpickr-calendar { + width: 280px; +} +.flatpickr-calendar .flatpickr-current-month span.cur-month { + font-weight: 300; +} +.flatpickr-calendar .dayContainer { + width: 280px; + min-width: 280px; + max-width: 280px; +} +.flatpickr-calendar .flatpickr-days { + width: 280px; +} +.flatpickr-calendar .flatpickr-day { + max-width: 37px; + height: 37px; + line-height: 37px; +} + +.elementor-hidden { + display: none; +} + +.elementor-screen-only, +.screen-reader-text, +.screen-reader-text span, +.ui-helper-hidden-accessible { + position: absolute; + top: -10000em; + width: 1px; + height: 1px; + margin: -1px; + padding: 0; + overflow: hidden; + clip: rect(0, 0, 0, 0); + border: 0; +} + +.elementor-clearfix:after { + content: ""; + display: block; + clear: both; + width: 0; + height: 0; +} + +.e-logo-wrapper { + background: var(--e-a-bg-logo); + display: inline-block; + padding: 0.75em; + border-radius: 50%; + line-height: 1; +} +.e-logo-wrapper i { + color: var(--e-a-color-logo); + font-size: 1em; +} + +:root { + --e-a-color-white: #ffffff; + --e-a-color-black: #000000; + --e-a-color-logo: #ffffff; + --e-a-color-primary: #F3BAFD; + --e-a-color-primary-bold: #D004D4; + --e-a-color-secondary: #515962; + --e-a-color-success: #0A875A; + --e-a-color-danger: #DC2626; + --e-a-color-info: #2563EB; + --e-a-color-warning: #F59E0B; + --e-a-color-accent: #93003f; + --e-a-color-accent-promotion: #93003f; + --e-a-color-global: #1DDDBF; + --e-a-bg-default: #ffffff; + --e-a-bg-invert: #0C0D0E; + --e-a-bg-hover: #F1F2F3; + --e-a-bg-active: #E6E8EA; + --e-a-bg-active-bold: #D5D8DC; + --e-a-bg-loading: #F9FAFA; + --e-a-bg-logo: #000000; + --e-a-bg-primary: #FAE8FF; + --e-a-bg-secondary: #515962; + --e-a-bg-success: #F2FDF5; + --e-a-bg-info: #F0F7FF; + --e-a-bg-danger: #FEF1F4; + --e-a-bg-warning: #FFFBEB; + --e-a-color-txt: #515962; + --e-a-color-txt-muted: #818A96; + --e-a-color-txt-disabled: #BABFC5; + --e-a-color-txt-invert: #ffffff; + --e-a-color-txt-accent: #0C0D0E; + --e-a-color-txt-hover: #3f444b; + --e-a-color-txt-active: #0C0D0E; + --e-a-border-color: #E6E8EA; + --e-a-border-color-bold: #D5D8DC; + --e-a-border-color-focus: #BABFC5; + --e-a-border-color-accent: #0C0D0E; + --e-a-border: 1px solid var(--e-a-border-color); + --e-a-border-bold: 1px solid var(--e-a-border-color-bold); + --e-a-border-radius: 3px; + --e-a-btn-color: #0C0D0E; + --e-a-btn-color-invert: var(--e-a-color-txt-invert); + --e-a-btn-color-disabled: var(--e-a-color-txt-disabled); + --e-a-btn-bg: #515962; + --e-a-btn-bg-hover: #3a4046; + --e-a-btn-bg-active: #23262a; + --e-a-btn-bg-disabled: #D5D8DC; + --e-a-btn-bg-primary: #F3BAFD; + --e-a-btn-bg-primary-hover: #F5D0FE; + --e-a-btn-bg-primary-active:#F0ABFC; + --e-a-btn-bg-accent: #93003f; + --e-a-btn-bg-accent-hover: #8F1A4C; + --e-a-btn-bg-accent-active: #A93365; + --e-a-btn-bg-info: #2563EB; + --e-a-btn-bg-info-hover: #134cca; + --e-a-btn-bg-info-active: #0e3b9c; + --e-a-btn-bg-success: #0A875A; + --e-a-btn-bg-success-hover: #06583a; + --e-a-btn-bg-success-active:#03281b; + --e-a-btn-bg-warning: #F59E0B; + --e-a-btn-bg-warning-hover: #c57f08; + --e-a-btn-bg-warning-active:#945f06; + --e-a-btn-bg-danger: #DC2626; + --e-a-btn-bg-danger-hover: #b21d1d; + --e-a-btn-bg-danger-active: #861616; + --e-a-dark-bg: #0C0D0E; + --e-a-dark-color-txt: #9DA5AE; + --e-a-dark-color-txt-hover: #D5D8DC; + --e-a-font-family: Roboto, Arial, Helvetica, sans-serif; + --e-a-transition-hover: all .3s; + --e-a-popover-shadow: 0 2px 15px rgba(0, 0, 0, 0.3); + --e-a-dropdown-shadow: 0 0 3px rgba(0, 0, 0, 0.2); +} + +.elementor-control-unit-1 { + width: 27px; +} + +.elementor-control-unit-2 { + width: 54px; +} + +.elementor-control-unit-3 { + width: 81px; +} + +.elementor-control-unit-4 { + width: 108px; +} + +.elementor-control-unit-5 { + max-width: 400px; + width: 52%; +} + +.elementor-tags-list { + display: none; + position: absolute; + width: 260px; + max-height: 300px; + overflow: auto; + padding-block-end: 5px; + background-color: var(--e-a-bg-default); + box-shadow: var(--e-a-popover-shadow); + border: var(--e-a-border); + border-radius: 3px; + z-index: 10000; +} +.elementor-tags-list__group-title { + font-weight: bold; + font-size: 12px; + padding: 10px 15px; + display: flex; + align-items: center; +} +.elementor-tags-list__group-title .eicon-info-circle { + padding-inline-end: 5px; + color: var(--e-a-color-primary-bold); + font-size: 14px; +} +.elementor-tags-list__item { + font-size: 10px; + padding: 6px 15px; + cursor: pointer; +} +.elementor-tags-list__item:before { + content: ">"; + font-size: 8px; + padding-inline-end: 5px; +} +.elementor-tags-list__item:hover { + background-color: var(--e-a-bg-hover); +} +.elementor-tags-list__teaser { + border-block-start: 2px solid var(--e-a-border-color); + padding-block-start: 4px; + margin-block-start: 4px; +} +.elementor-tags-list__teaser-text { + padding: 2px 15px 8px; + line-height: 1.5; + font-size: 12px; +} +.elementor-tags-list__teaser-link { + color: var(--e-a-color-primary-bold); + text-decoration: underline; + font-style: italic; + font-weight: bold; +} + +.elementor-dynamic-cover { + display: flex; + align-items: center; + width: 100%; + height: 27px; + box-sizing: border-box; +} +.elementor-dynamic-cover__title { + padding: 0 8px; + flex-grow: 1; + white-space: nowrap; + text-overflow: ellipsis; + overflow: hidden; +} +.elementor-dynamic-cover__settings, .elementor-dynamic-cover__remove { + cursor: pointer; + transition: var(--e-a-transition-hover); +} +.elementor-dynamic-cover__settings:hover, .elementor-dynamic-cover__remove:hover { + color: var(--e-a-color-txt-hover); +} +.elementor-control-type-wysiwyg .elementor-dynamic-cover { + margin-block-start: 10px; +} + +.elementor-tag-settings-popup { + position: absolute; + width: 260px; + background-color: var(--e-a-bg-default); + border: var(--e-a-border); + box-shadow: var(--e-a-popover-shadow); + z-index: 1; +} +.elementor-tag-settings-popup:before { + content: ""; + position: absolute; + top: -20px; + right: 5px; + border: 10px solid transparent; + border-block-end-color: var(--e-a-border-color); +} +.elementor-tag-settings-popup .elementor-control-type-section:first-child { + margin: 0; +} + +.elementor-tag-controls-stack-empty { + background-color: var(--e-a-bg-default); + padding: 10px; + font-size: 13px; + text-align: center; +} + +.elementor-control-dynamic input { + border-start-start-radius: var(--e-a-border-radius); + border-start-end-radius: 0; + border-end-end-radius: 0; + border-end-start-radius: var(--e-a-border-radius); +} +.elementor-control-dynamic-switcher { + display: inline-flex; + align-items: center; + justify-content: center; + flex-shrink: 0; + height: 27px; + cursor: pointer; + border: var(--e-a-border-bold); + background: var(--e-a-bg-default); + border-inline-start-width: 0; + border-start-start-radius: 0; + border-start-end-radius: var(--e-a-border-radius); + border-end-end-radius: var(--e-a-border-radius); + border-end-start-radius: 0; + transition: var(--e-a-transition-hover); +} +.elementor-control-dynamic-switcher:hover { + background-color: var(--e-a-bg-hover); + color: var(--e-a-color-txt-hover); +} +.elementor-control-dynamic-switcher.e-control-tool { + height: 20px; + border: 0; +} +.elementor-control-dynamic-switcher-wrapper { + display: flex; +} +.elementor-control-dynamic-switcher .eicon-database { + font-size: 12px; +} +.elementor-control-dynamic-value .elementor-control-tag-area, +.elementor-control-dynamic-value .elementor-control-dynamic-switcher, +.elementor-control-dynamic-value .e-global__popover-toggle { + display: none; +} + +.elementor-panel-box-content { + padding: 20px 20px 10px; +} + +.elementor-button { + display: inline-block; +} + +.elementor-panel-alert { + background-color: var(--e-a-bg-primary); + padding: 15px; + border-inline-start: 3px solid var(--e-a-color-primary); + position: relative; + font-size: 12px; + font-weight: 300; + font-style: italic; + line-height: 1.5; + text-align: start; + border-start-start-radius: 0; + border-start-end-radius: 3px; + border-end-start-radius: 0; + border-end-end-radius: 3px; +} +.elementor-panel-alert a { + color: inherit; +} +.elementor-panel-alert.elementor-panel-alert-info { + border-color: var(--e-a-color-info); + background: var(--e-a-bg-info); +} +.elementor-panel-alert.elementor-panel-alert-success { + border-color: var(--e-a-color-success); + background: var(--e-a-bg-success); +} +.elementor-panel-alert.elementor-panel-alert-warning { + border-inline-start: 3px solid var(--e-a-color-warning); + background: var(--e-a-bg-warning); +} +.elementor-panel-alert.elementor-panel-alert-danger { + border-color: var(--e-a-color-danger); + background: var(--e-a-bg-danger); +} + +.elementor-descriptor, .elementor-control-field-description { + font-size: 11px; + font-style: italic; + line-height: 1.4; + color: var(--e-a-color-txt-muted); +} + +.elementor-controls-popover { + display: none; + position: absolute; + box-shadow: var(--e-a-popover-shadow); + border-radius: var(--e-a-border-radius); + left: 0; + right: 0; + margin: -4px auto 5px; + padding-block-start: 15px; + width: 90%; + z-index: 10000; + background-color: var(--e-a-bg-default); +} +.elementor-controls-popover:before { + content: ""; + position: absolute; + top: -16px; + left: 22px; + border: 8px solid transparent; + border-block-end-color: var(--e-a-bg-default); +} +.elementor-controls-popover div.elementor-control { + background-color: transparent; +} +.elementor-controls-popover div.elementor-control:before { + content: none; +} + +#elementor-panel-global .elementor-nerd-box .elementor-nerd-box-icon { + margin-block-start: 20px; +} + +.elementor-control { + --control-title-size: 12px; + position: relative; + padding: 0 20px 15px; +} +.elementor-control a { + font-weight: 500; + text-decoration: none; + border-block-end: 1px dotted transparent; + transition: all ease-in-out 0.3s; +} +.elementor-control a:hover { + border-block-end-color: inherit; +} +.elementor-control .elementor-control-content { + display: flex; + flex-direction: column; +} +.elementor-control .elementor-control-title { + font-size: var(--control-title-size); + line-height: 1; + margin-inline-end: 5px; +} +.elementor-control .elementor-control-title:empty { + display: none; +} +.elementor-control .elementor-control-spinner { + display: flex; + align-items: center; +} +.elementor-control.elementor-control-type-divider { + padding: 0; +} +.elementor-control.elementor-control-type-divider .elementor-control-content { + border-width: 0; + border-block-start: var(--e-a-border); + background-color: var(--e-a-bg-default); + height: 15px; +} +.elementor-control.elementor-control-separator-before { + padding-block-start: 15px; +} +.elementor-control.elementor-control-separator-before:before { + content: ""; + position: absolute; + height: 1px; + width: calc(100% - 40px); + top: 0; + right: 20px; + background-color: var(--e-a-border-color); +} +.elementor-control.elementor-control-separator-after:after { + content: ""; + position: absolute; + height: 1px; + width: calc(100% - 40px); + bottom: 0; + right: 20px; + background-color: var(--e-a-border-color); +} +.elementor-control.elementor-control-separator-after + .elementor-control-type-tabs ~ .elementor-control-separator-default, .elementor-control.elementor-control-separator-after:not(.elementor-hidden-control) ~ .elementor-control-separator-default { + padding-block-start: 15px; +} +.elementor-control.elementor-control-deprecated { + color: var(--e-a-color-warning); +} +.elementor-control.elementor-control-deprecated .elementor-control-field-description { + color: var(--e-a-color-warning); +} +.elementor-control.elementor-control-hidden-label > * > .elementor-control-title, .elementor-control.elementor-control-hidden-label > * > * > .elementor-control-title { + display: none; +} +.elementor-control.elementor-hidden-control { + display: none; +} +.elementor-control.elementor-control-type-heading .elementor-control-title { + font-weight: bold; + margin: 0; +} +body:not(.elementor-device-widescreen) .elementor-control.elementor-control-responsive-widescreen { + display: none; +} +body:not(.elementor-device-desktop) .elementor-control.elementor-control-responsive-desktop { + display: none; +} +body:not(.elementor-device-laptop) .elementor-control.elementor-control-responsive-laptop { + display: none; +} +body:not(.elementor-device-tablet_extra) .elementor-control.elementor-control-responsive-tablet_extra { + display: none; +} +body:not(.elementor-device-tablet) .elementor-control.elementor-control-responsive-tablet { + display: none; +} +body:not(.elementor-device-mobile_extra) .elementor-control.elementor-control-responsive-mobile_extra { + display: none; +} +body:not(.elementor-device-mobile) .elementor-control.elementor-control-responsive-mobile { + display: none; +} +.elementor-control-custom_css_pro .elementor-nerd-box-message, .elementor-control-custom_attributes_pro .elementor-nerd-box-message { + margin-block-start: 5px; +} + +.elementor-control.e-open .elementor-panel-heading-toggle .eicon:before, .elementor-control.elementor-active .elementor-panel-heading-toggle .eicon:before, +.elementor-panel-category.e-open .elementor-panel-heading-toggle .eicon:before, +.elementor-panel-category.elementor-active .elementor-panel-heading-toggle .eicon:before, +.elementor-panel-scheme-item.e-open .elementor-panel-heading-toggle .eicon:before, +.elementor-panel-scheme-item.elementor-active .elementor-panel-heading-toggle .eicon:before { + content: "\e92a"; +} +.elementor-control:not(.e-open):not(.elementor-active) .elementor-panel-heading-toggle .eicon:before, +.elementor-panel-category:not(.e-open):not(.elementor-active) .elementor-panel-heading-toggle .eicon:before, +.elementor-panel-scheme-item:not(.e-open):not(.elementor-active) .elementor-panel-heading-toggle .eicon:before { + content: "\e909"; +} + +.elementor-panel-heading { + display: flex; + align-items: center; + gap: 5px; + height: 48px; + padding-inline: 20px; + width: 100%; + border: 0; + border-block-start: var(--e-a-border); + border-block-start-width: 2px; + background-color: transparent; + color: var(--e-a-color-txt-accent); + cursor: pointer; +} +.elementor-panel-heading-toggle { + width: 10px; + display: flex; + flex-direction: column; + align-items: center; +} +.elementor-panel-heading-title { + font-weight: bold; +} +.elementor-panel-heading-promotion { + margin-inline-start: auto; +} +.elementor-panel-heading-promotion a { + color: var(--e-a-color-accent-promotion); + font-family: "Roboto", sans-serif; + font-weight: 500; + font-size: 13px; +} +.elementor-panel-heading-promotion a i { + margin-inline-end: 4px; + font-size: 14px; +} +.elementor-panel-heading-promotion a:hover { + color: var(--e-a-color-accent-promotion); +} +.elementor-panel-heading:focus-visible { + color: var(--e-a-color-txt-hover); +} + +#elementor-controls .elementor-control-type-section:first-child .elementor-panel-heading { + border-block-start: none; +} + +.elementor-control-field { + display: flex; + align-items: center; +} + +.elementor-label-block > .elementor-control-content > .elementor-control-field { + flex-wrap: wrap; +} +.elementor-label-block > .elementor-control-content > .elementor-control-field > .elementor-control-input-wrapper { + width: 100%; + max-width: 100%; + margin-block-start: 10px; +} +.elementor-label-block > .elementor-control-content > .elementor-control-field > .elementor-control-input-wrapper > .elementor-choices label { + width: auto; + flex: 1 1 27px; + display: flex; + align-items: center; + justify-content: center; +} +.elementor-label-block.elementor-control-hidden-label:not(.elementor-control-dynamic) > .elementor-control-content > .elementor-control-field > .elementor-control-input-wrapper { + margin-block-start: 0; +} +.elementor-label-block.elementor-control-hidden-label.elementor-label-block > .elementor-control-content > .elementor-control-field > .elementor-control-input-wrapper { + margin-block-start: 0; +} + +.elementor-label-inline > .elementor-control-content > .elementor-control-field > .elementor-control-title { + flex-shrink: 0; + max-width: 60%; +} +.elementor-label-inline > .elementor-control-content > .elementor-control-field > .elementor-control-input-wrapper { + margin-inline-start: auto; +} + +.elementor-control-field-description { + margin-block-start: 10px; +} + +.elementor-group-control-attachment_alert .elementor-control-field-description { + margin-block-start: 0; +} + +.elementor-control-start-end .eicon-h-align-left, +.elementor-control-start-end .eicon-h-align-right { + transform: rotate(180deg); +} + +.elementor-update-preview { + margin: 15px 15px 0; + display: flex; + align-items: center; +} + +.elementor-update-preview-button-wrapper { + flex-grow: 1; + text-align: end; +} + +.elementor-update-preview-button { + padding: 8px 15px; +} + +.elementor-control-direction-ltr input, +.elementor-control-direction-ltr textarea { + direction: ltr; +} +.elementor-control-direction-rtl input, +.elementor-control-direction-rtl textarea { + direction: rtl; +} + +.elementor-control-responsive-switchers { + --selected-option: 0; + --pointer-position: var(--selected-option); + position: relative; + width: 2.5em; + height: 2.5em; + margin: calc(-2.5em + 12px) 0; + margin-inline-end: 5px; +} +.elementor-control-responsive-switchers__holder { + position: absolute; + width: 100%; + top: 0; + background-color: var(--e-a-bg-default); + border-radius: var(--e-a-border-radius); + transition: 0.15s; + border: 1px solid transparent; +} +.elementor-control-responsive-switchers.elementor-responsive-switchers-open { + z-index: 11000; +} +.elementor-control-responsive-switchers.elementor-responsive-switchers-open .elementor-responsive-switcher { + height: 2.5em; + transform: scale(1); + opacity: 1; +} +.elementor-control-responsive-switchers.elementor-responsive-switchers-open .elementor-responsive-switcher:hover { + color: var(--e-a-color-primary-bold); +} +.elementor-control-responsive-switchers.elementor-responsive-switchers-open .elementor-control-responsive-switchers__holder { + box-shadow: var(--e-a-dropdown-shadow); +} + +.elementor-responsive-switcher { + all: unset; + display: flex; + align-items: center; + justify-content: center; + position: relative; + z-index: 2; + cursor: pointer; + height: 0; + width: 100%; + transform: scale(0); + opacity: 0; + transition: 0.15s; + font-size: 12px; + color: inherit; +} +.elementor-responsive-switcher:hover { + color: var(--e-a-color-primary-bold); +} + +.elementor-device-widescreen .elementor-responsive-switcher.elementor-responsive-switcher-widescreen { + height: 2.5em; + transform: scale(1); + opacity: 1; +} +.elementor-device-widescreen .elementor-responsive-switchers-open:not(:hover) .elementor-responsive-switcher.elementor-responsive-switcher-widescreen { + color: var(--e-a-color-primary-bold); +} + +.elementor-device-desktop .elementor-responsive-switcher.elementor-responsive-switcher-desktop { + height: 2.5em; + transform: scale(1); + opacity: 1; +} +.elementor-device-desktop .elementor-responsive-switchers-open:not(:hover) .elementor-responsive-switcher.elementor-responsive-switcher-desktop { + color: var(--e-a-color-primary-bold); +} + +.elementor-device-laptop .elementor-responsive-switcher.elementor-responsive-switcher-laptop { + height: 2.5em; + transform: scale(1); + opacity: 1; +} +.elementor-device-laptop .elementor-responsive-switchers-open:not(:hover) .elementor-responsive-switcher.elementor-responsive-switcher-laptop { + color: var(--e-a-color-primary-bold); +} + +.elementor-device-tablet_extra .elementor-responsive-switcher.elementor-responsive-switcher-tablet_extra { + height: 2.5em; + transform: scale(1); + opacity: 1; +} +.elementor-device-tablet_extra .elementor-responsive-switchers-open:not(:hover) .elementor-responsive-switcher.elementor-responsive-switcher-tablet_extra { + color: var(--e-a-color-primary-bold); +} + +.elementor-device-tablet .elementor-responsive-switcher.elementor-responsive-switcher-tablet { + height: 2.5em; + transform: scale(1); + opacity: 1; +} +.elementor-device-tablet .elementor-responsive-switchers-open:not(:hover) .elementor-responsive-switcher.elementor-responsive-switcher-tablet { + color: var(--e-a-color-primary-bold); +} + +.elementor-device-mobile_extra .elementor-responsive-switcher.elementor-responsive-switcher-mobile_extra { + height: 2.5em; + transform: scale(1); + opacity: 1; +} +.elementor-device-mobile_extra .elementor-responsive-switchers-open:not(:hover) .elementor-responsive-switcher.elementor-responsive-switcher-mobile_extra { + color: var(--e-a-color-primary-bold); +} + +.elementor-device-mobile .elementor-responsive-switcher.elementor-responsive-switcher-mobile { + height: 2.5em; + transform: scale(1); + opacity: 1; +} +.elementor-device-mobile .elementor-responsive-switchers-open:not(:hover) .elementor-responsive-switcher.elementor-responsive-switcher-mobile { + color: var(--e-a-color-primary-bold); +} + +.e-units-wrapper { + position: relative; + margin-inline-start: auto; +} +.e-units-wrapper .e-units-switcher { + cursor: pointer; + font-size: 10px; + padding: 0.5em; + margin: -0.5em 0; + transition: all ease-in-out 0.15s; +} +.e-units-wrapper .e-units-switcher:hover { + color: var(--e-a-color-primary-bold); + background-color: var(--e-a-bg-hover); + border-radius: var(--e-a-border-radius); +} +.e-units-wrapper .e-units-switcher:not([data-selected=custom]) i.eicon-edit { + display: none; +} +.e-units-wrapper .e-units-switcher[data-selected=custom] span { + display: none; +} +.e-units-wrapper .e-units-switcher i.eicon-angle-right { + transform: rotate(90deg); +} + +.e-units-choices input { + display: none; +} +.e-units-choices input:checked + label { + color: var(--e-a-color-primary-bold); +} +.e-units-choices label { + cursor: pointer; + display: block; +} +.e-units-choices { + display: none; + overflow: hidden; + max-height: 0; + position: absolute; + top: -0.8em; + right: -0.5em; + width: 2.5em; + text-align: center; + background-color: var(--e-a-bg-default); + border-radius: var(--e-a-border-radius); + box-shadow: var(--e-a-dropdown-shadow); + animation-timing-function: linear; + animation-delay: 0s; + animation-fill-mode: forwards; + z-index: 11000; +} +.e-units-choices .elementor-units-choices-label { + display: flex; + align-items: center; + height: 3em; + justify-content: center; + font-size: 10px; + transition: 0.15s; +} +.e-units-choices .elementor-units-choices-label:hover { + color: var(--e-a-color-primary-bold); +} +.e-units-choices.e-units-choices-open { + display: block; + animation-duration: 1s; + animation-name: e-units-choices-open; +} + +.e-units-custom input { + font-family: monospace; + font-size: 0.85em; +} + +@keyframes e-units-choices-open { + from { + max-height: 0; + } + to { + max-height: 100vh; + } +} +.elementor-control-alert { + display: flex; + flex-direction: column; + justify-content: flex-start; + align-items: flex-start; + gap: 8px; +} +.elementor-control-alert-heading { + font-weight: bold; +} + +.elementor-control-type-button .elementor-control-input-wrapper { + text-align: end; +} +.elementor-control-type-button .elementor-button { + width: auto; +} +.elementor-control-type-button .elementor-button.elementor-button-center { + display: block; + margin: 0 auto; +} + +.elementor-control-type-choose.elementor-label-block .elementor-choices { + width: 100%; +} + +.elementor-choices { + display: flex; + height: 27px; + line-height: 27px; + text-align: center; + border-spacing: 1px; + border-radius: var(--e-a-border-radius); + overflow: hidden; +} +.elementor-choices .elementor-choices-label { + border-block-start: var(--e-a-border-bold); + border-block-end: var(--e-a-border-bold); + border-inline-start: var(--e-a-border-bold); + border-inline-end: none; + font-size: 12px; + transition: var(--e-a-transition-hover); + cursor: pointer; + overflow: hidden; +} +.elementor-choices .elementor-choices-label:nth-child(2) { + border-start-start-radius: var(--e-a-border-radius); + border-end-start-radius: var(--e-a-border-radius); +} +.elementor-choices .elementor-choices-label:last-child { + border-inline-end: var(--e-a-border-bold); + border-start-end-radius: var(--e-a-border-radius); + border-end-end-radius: var(--e-a-border-radius); +} +.elementor-choices input { + display: none; +} +.elementor-choices input:hover + .elementor-choices-label { + background-color: var(--e-a-bg-hover); +} +.elementor-choices input.e-choose-placeholder + .elementor-choices-label, .elementor-choices input:checked + .elementor-choices-label { + background-color: var(--e-a-bg-active-bold); + color: var(--e-a-color-txt-accent); +} + +.elementor-label-inline .elementor-choices { + justify-content: flex-end; +} + +.elementor-control-type-color.e-control-global .pickr { + border-start-start-radius: 0; + border-start-end-radius: var(--e-a-border-radius); + border-end-start-radius: 0; + border-end-end-radius: var(--e-a-border-radius); + flex-shrink: 0; + border-color: var(--e-a-border-color-bold); + transition: var(--e-a-transition-hover); +} +.elementor-control-type-color.e-control-global .pickr:hover { + background-color: var(--e-a-bg-hover); +} +.elementor-control-type-color.e-control-global .e-global__popover-toggle:not(.e-global__popover-toggle--active) ~ .pickr { + background-color: var(--e-a-bg-active-bold); +} +.elementor-control-type-color .elementor-control-title { + flex-grow: 1; +} +.elementor-control-type-color .elementor-control-input-wrapper { + display: flex; + justify-content: flex-end; +} + +.elementor-group-control-css-filter .elementor-slider { + height: 6px; + box-shadow: 0 0 1px 1px inset rgba(0, 0, 0, 0.2); +} +.elementor-group-control-css-filter .elementor-control-content > .elementor-control-field > .elementor-control-input-wrapper { + margin-block-start: 0; + margin-block-end: 5px; +} + +.elementor-group-control-blur .elementor-slider { + background: url("../images/blur.png"); + background-size: cover; + background-position: center; +} + +.elementor-group-control-contrast .elementor-slider { + background: url("../images/contrast.png"); + background-size: 100% 100%; +} + +.elementor-group-control-hue .elementor-slider { + background-image: linear-gradient(to right, red, orange, yellow, greenyellow, limegreen, deepskyblue, blue, darkviolet 95%); +} + +.elementor-group-control-saturate .elementor-slider { + background-image: linear-gradient(to right, gray, red); +} + +.elementor-group-control-brightness .elementor-slider { + background-image: linear-gradient(to right, black, white); +} + +.elementor-control-responsive-switchers { + --selected-option: 0; + --pointer-position: var(--selected-option); + position: relative; + width: 2.5em; + height: 2.5em; + margin: calc(-2.5em + 12px) 0; + margin-inline-end: 5px; +} +.elementor-control-responsive-switchers__holder { + position: absolute; + width: 100%; + top: 0; + background-color: var(--e-a-bg-default); + border-radius: var(--e-a-border-radius); + transition: 0.15s; + border: 1px solid transparent; +} +.elementor-control-responsive-switchers.elementor-responsive-switchers-open { + z-index: 11000; +} +.elementor-control-responsive-switchers.elementor-responsive-switchers-open .elementor-responsive-switcher { + height: 2.5em; + transform: scale(1); + opacity: 1; +} +.elementor-control-responsive-switchers.elementor-responsive-switchers-open .elementor-responsive-switcher:hover { + color: var(--e-a-color-primary-bold); +} +.elementor-control-responsive-switchers.elementor-responsive-switchers-open .elementor-control-responsive-switchers__holder { + box-shadow: var(--e-a-dropdown-shadow); +} + +.elementor-responsive-switcher { + all: unset; + display: flex; + align-items: center; + justify-content: center; + position: relative; + z-index: 2; + cursor: pointer; + height: 0; + width: 100%; + transform: scale(0); + opacity: 0; + transition: 0.15s; + font-size: 12px; + color: inherit; +} +.elementor-responsive-switcher:hover { + color: var(--e-a-color-primary-bold); +} + +.elementor-device-widescreen .elementor-responsive-switcher.elementor-responsive-switcher-widescreen { + height: 2.5em; + transform: scale(1); + opacity: 1; +} +.elementor-device-widescreen .elementor-responsive-switchers-open:not(:hover) .elementor-responsive-switcher.elementor-responsive-switcher-widescreen { + color: var(--e-a-color-primary-bold); +} + +.elementor-device-desktop .elementor-responsive-switcher.elementor-responsive-switcher-desktop { + height: 2.5em; + transform: scale(1); + opacity: 1; +} +.elementor-device-desktop .elementor-responsive-switchers-open:not(:hover) .elementor-responsive-switcher.elementor-responsive-switcher-desktop { + color: var(--e-a-color-primary-bold); +} + +.elementor-device-laptop .elementor-responsive-switcher.elementor-responsive-switcher-laptop { + height: 2.5em; + transform: scale(1); + opacity: 1; +} +.elementor-device-laptop .elementor-responsive-switchers-open:not(:hover) .elementor-responsive-switcher.elementor-responsive-switcher-laptop { + color: var(--e-a-color-primary-bold); +} + +.elementor-device-tablet_extra .elementor-responsive-switcher.elementor-responsive-switcher-tablet_extra { + height: 2.5em; + transform: scale(1); + opacity: 1; +} +.elementor-device-tablet_extra .elementor-responsive-switchers-open:not(:hover) .elementor-responsive-switcher.elementor-responsive-switcher-tablet_extra { + color: var(--e-a-color-primary-bold); +} + +.elementor-device-tablet .elementor-responsive-switcher.elementor-responsive-switcher-tablet { + height: 2.5em; + transform: scale(1); + opacity: 1; +} +.elementor-device-tablet .elementor-responsive-switchers-open:not(:hover) .elementor-responsive-switcher.elementor-responsive-switcher-tablet { + color: var(--e-a-color-primary-bold); +} + +.elementor-device-mobile_extra .elementor-responsive-switcher.elementor-responsive-switcher-mobile_extra { + height: 2.5em; + transform: scale(1); + opacity: 1; +} +.elementor-device-mobile_extra .elementor-responsive-switchers-open:not(:hover) .elementor-responsive-switcher.elementor-responsive-switcher-mobile_extra { + color: var(--e-a-color-primary-bold); +} + +.elementor-device-mobile .elementor-responsive-switcher.elementor-responsive-switcher-mobile { + height: 2.5em; + transform: scale(1); + opacity: 1; +} +.elementor-device-mobile .elementor-responsive-switchers-open:not(:hover) .elementor-responsive-switcher.elementor-responsive-switcher-mobile { + color: var(--e-a-color-primary-bold); +} + +.e-units-wrapper { + position: relative; + margin-inline-start: auto; +} +.e-units-wrapper .e-units-switcher { + cursor: pointer; + font-size: 10px; + padding: 0.5em; + margin: -0.5em 0; + transition: all ease-in-out 0.15s; +} +.e-units-wrapper .e-units-switcher:hover { + color: var(--e-a-color-primary-bold); + background-color: var(--e-a-bg-hover); + border-radius: var(--e-a-border-radius); +} +.e-units-wrapper .e-units-switcher:not([data-selected=custom]) i.eicon-edit { + display: none; +} +.e-units-wrapper .e-units-switcher[data-selected=custom] span { + display: none; +} +.e-units-wrapper .e-units-switcher i.eicon-angle-right { + transform: rotate(90deg); +} + +.e-units-choices input { + display: none; +} +.e-units-choices input:checked + label { + color: var(--e-a-color-primary-bold); +} +.e-units-choices label { + cursor: pointer; + display: block; +} +.e-units-choices { + display: none; + overflow: hidden; + max-height: 0; + position: absolute; + top: -0.8em; + right: -0.5em; + width: 2.5em; + text-align: center; + background-color: var(--e-a-bg-default); + border-radius: var(--e-a-border-radius); + box-shadow: var(--e-a-dropdown-shadow); + animation-timing-function: linear; + animation-delay: 0s; + animation-fill-mode: forwards; + z-index: 11000; +} +.e-units-choices .elementor-units-choices-label { + display: flex; + align-items: center; + height: 3em; + justify-content: center; + font-size: 10px; + transition: 0.15s; +} +.e-units-choices .elementor-units-choices-label:hover { + color: var(--e-a-color-primary-bold); +} +.e-units-choices.e-units-choices-open { + display: block; + animation-duration: 1s; + animation-name: e-units-choices-open; +} + +.e-units-custom input { + font-family: monospace; + font-size: 0.85em; +} + +@keyframes e-units-choices-open { + from { + max-height: 0; + } + to { + max-height: 100vh; + } +} +.elementor-control-type-dimensions .elementor-control-dimensions { + display: flex; +} +.elementor-control-type-dimensions li { + flex: 1; + transition: flex-grow 0.3s ease-in-out; +} +.elementor-control-type-dimensions li input, +.elementor-control-type-dimensions li .elementor-link-dimensions { + display: block; + text-align: center; + width: 100%; + height: 27px; +} +.elementor-control-type-dimensions li input { + border-inline-start: none; + border-radius: 0; + padding: var(--e-a-border-radius); +} +.elementor-control-type-dimensions li input:focus { + border-inline-start: var(--e-a-border-bold); + margin-inline-start: -1px; + width: calc(100% + 1px); +} +.elementor-control-type-dimensions li input:focus + .elementor-control-dimension-label { + color: var(--e-a-color-txt); +} +.elementor-control-type-dimensions li .elementor-link-dimensions { + border: var(--e-a-border-bold); + border-inline-start: none; + background-color: var(--e-a-bg-default); + padding: 0; + outline: none; + border-start-start-radius: 0; + border-start-end-radius: var(--e-a-border-radius); + border-end-start-radius: 0; + border-end-end-radius: var(--e-a-border-radius); + cursor: pointer; +} +.elementor-control-type-dimensions li:first-child input { + border-inline-start: 1px solid var(--e-a-border-color-bold); + border-start-start-radius: var(--e-a-border-radius); + border-start-end-radius: 0; + border-end-start-radius: var(--e-a-border-radius); + border-end-end-radius: 0; +} +.elementor-control-type-dimensions li:first-child input:focus { + border-color: var(--e-a-border-color-focus); + margin-inline-start: 0; + width: 100%; +} +.elementor-control-type-dimensions li:last-child { + max-width: 27px; +} +.elementor-control-type-dimensions.e-units-custom li.elementor-control-dimension:focus-within { + flex: 2.5; +} +.elementor-control-type-dimensions .elementor-control-dimension-label { + color: var(--e-a-color-txt-muted); + display: block; + text-align: center; + font-size: 9px; + padding-block-start: 5px; +} +.elementor-control-type-dimensions .elementor-link-dimensions.unlinked { + background-color: var(--e-a-bg-default); +} +.elementor-control-type-dimensions .elementor-link-dimensions.unlinked .elementor-linked { + display: none; +} +.elementor-control-type-dimensions .elementor-link-dimensions:not(.unlinked) { + background-color: var(--e-a-bg-active-bold); + color: var(--e-a-color-txt-accent); + border-color: var(--e-a-border-color-bold); +} +.elementor-control-type-dimensions .elementor-link-dimensions:not(.unlinked) .elementor-unlinked { + display: none; +} + +.elementor-control-responsive-switchers { + --selected-option: 0; + --pointer-position: var(--selected-option); + position: relative; + width: 2.5em; + height: 2.5em; + margin: calc(-2.5em + 12px) 0; + margin-inline-end: 5px; +} +.elementor-control-responsive-switchers__holder { + position: absolute; + width: 100%; + top: 0; + background-color: var(--e-a-bg-default); + border-radius: var(--e-a-border-radius); + transition: 0.15s; + border: 1px solid transparent; +} +.elementor-control-responsive-switchers.elementor-responsive-switchers-open { + z-index: 11000; +} +.elementor-control-responsive-switchers.elementor-responsive-switchers-open .elementor-responsive-switcher { + height: 2.5em; + transform: scale(1); + opacity: 1; +} +.elementor-control-responsive-switchers.elementor-responsive-switchers-open .elementor-responsive-switcher:hover { + color: var(--e-a-color-primary-bold); +} +.elementor-control-responsive-switchers.elementor-responsive-switchers-open .elementor-control-responsive-switchers__holder { + box-shadow: var(--e-a-dropdown-shadow); +} + +.elementor-responsive-switcher { + all: unset; + display: flex; + align-items: center; + justify-content: center; + position: relative; + z-index: 2; + cursor: pointer; + height: 0; + width: 100%; + transform: scale(0); + opacity: 0; + transition: 0.15s; + font-size: 12px; + color: inherit; +} +.elementor-responsive-switcher:hover { + color: var(--e-a-color-primary-bold); +} + +.elementor-device-widescreen .elementor-responsive-switcher.elementor-responsive-switcher-widescreen { + height: 2.5em; + transform: scale(1); + opacity: 1; +} +.elementor-device-widescreen .elementor-responsive-switchers-open:not(:hover) .elementor-responsive-switcher.elementor-responsive-switcher-widescreen { + color: var(--e-a-color-primary-bold); +} + +.elementor-device-desktop .elementor-responsive-switcher.elementor-responsive-switcher-desktop { + height: 2.5em; + transform: scale(1); + opacity: 1; +} +.elementor-device-desktop .elementor-responsive-switchers-open:not(:hover) .elementor-responsive-switcher.elementor-responsive-switcher-desktop { + color: var(--e-a-color-primary-bold); +} + +.elementor-device-laptop .elementor-responsive-switcher.elementor-responsive-switcher-laptop { + height: 2.5em; + transform: scale(1); + opacity: 1; +} +.elementor-device-laptop .elementor-responsive-switchers-open:not(:hover) .elementor-responsive-switcher.elementor-responsive-switcher-laptop { + color: var(--e-a-color-primary-bold); +} + +.elementor-device-tablet_extra .elementor-responsive-switcher.elementor-responsive-switcher-tablet_extra { + height: 2.5em; + transform: scale(1); + opacity: 1; +} +.elementor-device-tablet_extra .elementor-responsive-switchers-open:not(:hover) .elementor-responsive-switcher.elementor-responsive-switcher-tablet_extra { + color: var(--e-a-color-primary-bold); +} + +.elementor-device-tablet .elementor-responsive-switcher.elementor-responsive-switcher-tablet { + height: 2.5em; + transform: scale(1); + opacity: 1; +} +.elementor-device-tablet .elementor-responsive-switchers-open:not(:hover) .elementor-responsive-switcher.elementor-responsive-switcher-tablet { + color: var(--e-a-color-primary-bold); +} + +.elementor-device-mobile_extra .elementor-responsive-switcher.elementor-responsive-switcher-mobile_extra { + height: 2.5em; + transform: scale(1); + opacity: 1; +} +.elementor-device-mobile_extra .elementor-responsive-switchers-open:not(:hover) .elementor-responsive-switcher.elementor-responsive-switcher-mobile_extra { + color: var(--e-a-color-primary-bold); +} + +.elementor-device-mobile .elementor-responsive-switcher.elementor-responsive-switcher-mobile { + height: 2.5em; + transform: scale(1); + opacity: 1; +} +.elementor-device-mobile .elementor-responsive-switchers-open:not(:hover) .elementor-responsive-switcher.elementor-responsive-switcher-mobile { + color: var(--e-a-color-primary-bold); +} + +.e-units-wrapper { + position: relative; + margin-inline-start: auto; +} +.e-units-wrapper .e-units-switcher { + cursor: pointer; + font-size: 10px; + padding: 0.5em; + margin: -0.5em 0; + transition: all ease-in-out 0.15s; +} +.e-units-wrapper .e-units-switcher:hover { + color: var(--e-a-color-primary-bold); + background-color: var(--e-a-bg-hover); + border-radius: var(--e-a-border-radius); +} +.e-units-wrapper .e-units-switcher:not([data-selected=custom]) i.eicon-edit { + display: none; +} +.e-units-wrapper .e-units-switcher[data-selected=custom] span { + display: none; +} +.e-units-wrapper .e-units-switcher i.eicon-angle-right { + transform: rotate(90deg); +} + +.e-units-choices input { + display: none; +} +.e-units-choices input:checked + label { + color: var(--e-a-color-primary-bold); +} +.e-units-choices label { + cursor: pointer; + display: block; +} +.e-units-choices { + display: none; + overflow: hidden; + max-height: 0; + position: absolute; + top: -0.8em; + right: -0.5em; + width: 2.5em; + text-align: center; + background-color: var(--e-a-bg-default); + border-radius: var(--e-a-border-radius); + box-shadow: var(--e-a-dropdown-shadow); + animation-timing-function: linear; + animation-delay: 0s; + animation-fill-mode: forwards; + z-index: 11000; +} +.e-units-choices .elementor-units-choices-label { + display: flex; + align-items: center; + height: 3em; + justify-content: center; + font-size: 10px; + transition: 0.15s; +} +.e-units-choices .elementor-units-choices-label:hover { + color: var(--e-a-color-primary-bold); +} +.e-units-choices.e-units-choices-open { + display: block; + animation-duration: 1s; + animation-name: e-units-choices-open; +} + +.e-units-custom input { + font-family: monospace; + font-size: 0.85em; +} + +@keyframes e-units-choices-open { + from { + max-height: 0; + } + to { + max-height: 100vh; + } +} +.elementor-control-type-gaps .elementor-control-gaps { + display: flex; +} +.elementor-control-type-gaps li { + flex: 1; + transition: flex-grow 0.3s ease-in-out; +} +.elementor-control-type-gaps li input, +.elementor-control-type-gaps li .elementor-link-gaps { + display: block; + text-align: center; + width: 100%; + height: 27px; +} +.elementor-control-type-gaps li input { + border-inline-start: none; + border-radius: 0; + padding: var(--e-a-border-radius); +} +.elementor-control-type-gaps li input:focus { + border-inline-start: var(--e-a-border-bold); + margin-inline-start: -1px; + width: calc(100% + 1px); +} +.elementor-control-type-gaps li input:focus + .elementor-control-gap-label { + color: var(--e-a-color-txt); +} +.elementor-control-type-gaps li .elementor-link-gaps { + border: var(--e-a-border-bold); + border-inline-start: none; + background-color: var(--e-a-bg-default); + padding: 0; + outline: none; + border-start-start-radius: 0; + border-start-end-radius: var(--e-a-border-radius); + border-end-start-radius: 0; + border-end-end-radius: var(--e-a-border-radius); + cursor: pointer; +} +.elementor-control-type-gaps li:first-child input { + border-inline-start: 1px solid var(--e-a-border-color-bold); + border-start-start-radius: var(--e-a-border-radius); + border-start-end-radius: 0; + border-end-start-radius: var(--e-a-border-radius); + border-end-end-radius: 0; +} +.elementor-control-type-gaps li:first-child input:focus { + border-color: var(--e-a-border-color-focus); + margin-inline-start: 0; + width: 100%; +} +.elementor-control-type-gaps li:last-child { + max-width: 27px; +} +.elementor-control-type-gaps.e-units-custom li.elementor-control-gap:focus-within { + flex: 2.5; +} +.elementor-control-type-gaps .elementor-control-gap-label { + color: var(--e-a-color-txt-muted); + display: block; + text-align: center; + font-size: 9px; + padding-block-start: 5px; +} +.elementor-control-type-gaps .elementor-link-gaps.unlinked { + background-color: var(--e-a-bg-default); +} +.elementor-control-type-gaps .elementor-link-gaps.unlinked .elementor-linked { + display: none; +} +.elementor-control-type-gaps .elementor-link-gaps:not(.unlinked) { + background-color: var(--e-a-bg-active-bold); + color: var(--e-a-color-txt-accent); + border-color: var(--e-a-border-color-bold); +} +.elementor-control-type-gaps .elementor-link-gaps:not(.unlinked) .elementor-unlinked { + display: none; +} + +.elementor-control-type-icons .elementor-control-media__preview > * { + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); +} +.elementor-control-type-icons .elementor-control-media__preview i { + font-size: 70px; +} +.elementor-control-type-icons .elementor-control-media__preview svg { + height: 75%; +} +.elementor-control-type-icons .elementor-control-icons--inline__svg i.eicon-upload { + font-size: 15px; +} + +.elementor-control-type-gallery .elementor-control-media__content { + border: var(--e-a-border-bold); + border-radius: 3px; +} +.elementor-control-type-gallery .elementor-control-gallery-status { + font-size: 12px; + height: 27px; + padding-inline-start: 10px; + border-block-end: var(--e-a-border-bold); + display: flex; +} +.elementor-control-type-gallery .elementor-control-gallery-status > * { + display: flex; + align-items: center; +} +.elementor-control-type-gallery .elementor-control-gallery-status-title { + flex-grow: 1; +} +.elementor-control-type-gallery .elementor-control-gallery-content { + position: relative; + overflow: hidden; +} +.elementor-control-type-gallery .elementor-control-gallery-thumbnails { + display: grid; + grid-template-columns: repeat(auto-fill, minmax(48px, 1fr)); + grid-gap: 10px; + cursor: pointer; + padding: 10px; +} +.elementor-control-type-gallery .elementor-control-gallery-thumbnails:hover + .elementor-control-gallery-edit, .elementor-control-type-gallery .elementor-control-gallery-thumbnails:focus + .elementor-control-gallery-edit { + opacity: 1; +} +.elementor-control-type-gallery .elementor-control-gallery-thumbnail { + width: 48px; + height: 48px; + -o-object-fit: cover; + object-fit: cover; + border: var(--e-a-border); +} +.elementor-control-type-gallery .elementor-control-gallery-thumbnail + .unoptimized__image { + outline: 2px solid var(--e-a-btn-bg-danger-active); + opacity: 0.6; +} +.elementor-control-type-gallery .elementor-control-gallery-edit { + position: absolute; + top: 0; + bottom: 0; + left: 0; + right: 0; + background-color: rgba(0, 0, 0, 0.2); + padding: 10px; + font-size: 11px; + transition: all 0.3s ease-in-out; + pointer-events: none; + cursor: pointer; + opacity: 0; +} +.elementor-control-type-gallery .elementor-control-gallery-edit span { + position: absolute; + top: 10px; + left: 10px; + width: 21px; + height: 21px; + color: var(--e-a-color-white); + background-color: rgba(0, 0, 0, 0.5); + box-shadow: 0 0 7px 0 rgba(0, 0, 0, 0.2); + transition: var(--e-a-transition-hover); +} +.elementor-control-type-gallery .elementor-control-gallery-edit span i { + font-size: 11px; + padding: 5px; +} +.elementor-control-type-gallery .elementor-control-gallery-edit span:hover { + background-color: rgba(0, 0, 0, 0.6); +} +.elementor-control-type-gallery .elementor-control-gallery-add { + width: 48px; + height: 48px; + font-size: 14px; +} +.elementor-control-type-gallery .elementor-control-gallery-add i { + margin: 0; +} +.elementor-control-type-gallery.elementor-gallery-empty .elementor-control-gallery-clear, +.elementor-control-type-gallery.elementor-gallery-empty .elementor-control-gallery-thumbnails, +.elementor-control-type-gallery.elementor-gallery-empty .elementor-control-gallery-edit { + display: none; +} +.elementor-control-type-gallery.elementor-gallery-empty .elementor-control-gallery-content { + padding: 10px; +} +.elementor-control-type-gallery.elementor-gallery-has-images .elementor-control-gallery-add { + display: none; +} +.elementor-control-type-gallery.elementor-control-dynamic .elementor-control-gallery-clear { + border-inline-start: var(--e-a-border); +} +.elementor-control-type-gallery .elementor-control-gallery-clear { + color: currentColor; + background-color: transparent; + border: none; + cursor: pointer; + justify-content: center; +} +.elementor-control-type-gallery .elementor-control-gallery-clear:hover, .elementor-control-type-gallery .elementor-control-gallery-clear:focus { + color: var(--e-a-color-danger); +} +.elementor-control-type-gallery .elementor-control-dynamic-switcher { + border-width: 0; + border-inline-start-width: 1px; + border-block-end-width: 1px; + border-radius: 0; +} + +.e-global__popover { + width: 288px; + z-index: 1; + font-size: 12px; + padding-inline-start: 10px; +} +.e-global__popover-toggle { + border: var(--e-a-border-bold); + border-inline-end: 0; + border-start-start-radius: 3px; + border-start-end-radius: 0; + border-end-start-radius: 3px; + border-end-end-radius: 0; + display: flex; + align-items: center; + justify-content: center; + cursor: pointer; + transition: var(--e-a-transition-hover); +} +.e-global__popover-toggle:hover { + background-color: var(--e-a-bg-hover); +} +.e-global__popover-toggle--active { + color: var(--e-a-color-primary-bold); + background-color: var(--e-a-bg-active-bold); +} +.e-global__popover-container { + box-shadow: var(--e-a-popover-shadow); + border-radius: var(--e-a-border-radius); + background-color: var(--e-a-bg-default); +} +.e-global__popover-title { + padding: 15px 20px; + font-weight: 500; + border-block-end: var(--e-a-border); + display: flex; +} +.e-global__popover-title > i { + margin-inline-end: 5px; +} +.e-global__popover-title-text { + flex-grow: 1; +} +.e-global__popover-info { + margin-inline-end: 10px; + display: inline-block; +} +.e-global__popover-info-tooltip { + width: 270px; + z-index: 1; + background-color: rgba(0, 0, 0, 0.9); + color: var(--e-a-color-white); + padding: 20px; + border-radius: 3px; +} +.e-global__popover-info-tooltip:after { + content: ""; + position: absolute; + bottom: -17px; + right: 16px; + border: 10px solid transparent; + border-block-start-color: rgba(0, 0, 0, 0.9); +} +.e-global__popover-info i { + font-size: 13px; +} +.e-global__preview-items-container { + max-height: 260px; + overflow-y: auto; + padding: 5px 0; +} +.e-global__preview-items-container::-webkit-scrollbar { + width: 7px; +} +.e-global__preview-items-container::-webkit-scrollbar-thumb { + background-color: #BABFC5; + border-radius: 10px; +} +.e-global__manage-button { + font-weight: 500; + cursor: pointer; +} +.e-global__typography { + padding-block: 10px; + padding-inline: 35px 20px; + white-space: nowrap; + text-overflow: ellipsis; + overflow: hidden; +} +.e-global__typography.e-global__preview-item--selected:before { + font-family: "eicons"; + font-size: 13px; + content: "\e90e"; + position: absolute; + transform: translateY(-50%); + top: 50%; + inset-inline-start: 13px; +} +.e-global__color { + padding: 10px 20px; + display: flex; + align-items: center; +} +.e-global__color-preview-container { + height: 20px; + width: 20px; + border-radius: 3px; + border: 1px solid rgba(0, 0, 0, 0.1); + margin-inline-end: 10px; + flex-shrink: 0; + position: relative; +} +.e-global__color-preview-color, .e-global__color-preview-transparent-bg { + border-radius: 3px; + height: 100%; + width: 100%; + position: absolute; + top: 0; + left: 0; +} +.e-global__color-preview-transparent-bg { + background-image: linear-gradient(45deg, var(--e-a-border-color-bold) 25%, transparent 0, transparent 75%, var(--e-a-border-color-bold) 0, var(--e-a-border-color-bold)), linear-gradient(45deg, var(--e-a-border-color-bold) 25%, transparent 0, transparent 75%, var(--e-a-border-color-bold) 0, var(--e-a-border-color-bold)); + background-size: 12px 12px; + background-position: 0 0, calc(12px / 2) calc(12px / 2); +} +.e-global__color-title { + flex-grow: 1; + white-space: nowrap; + text-overflow: ellipsis; + overflow: hidden; + padding-inline-end: 10px; +} +.e-global__color-hex { + font-size: 10px; + color: var(--e-a-color-txt-muted); +} +.e-global__color .pcr-button { + background-color: var(--e-a-bg-default); +} +.e-global__color.e-global__preview-item--selected .e-global__color-preview-container { + display: flex; + justify-content: center; + align-items: center; + color: var(--e-a-color-white); +} +.e-global__color.e-global__preview-item--selected .e-global__color-preview-container:before { + font-family: "eicons"; + font-size: 13px; + content: "\e90e"; + text-shadow: 0 0 1px #000; + z-index: 1; +} +.e-global__preview-item { + cursor: pointer; + position: relative; +} +.e-global__preview-item:hover { + background-color: var(--e-a-bg-hover); +} +.e-global__confirm-delete i, .e-global__confirm-message-text i { + color: var(--e-a-color-warning); +} +.e-global__confirm-input-wrapper { + display: flex; + align-items: center; + border: var(--e-a-border); + border-radius: var(--e-a-border-radius); + margin: 15px 0; + padding: 2px; +} +.e-global__confirm-input-wrapper input { + font-family: var(--e-a-font-family); + font-size: 12px; + padding: 2px; + border: 0; +} + +.e-control-global .elementor-control-input-wrapper { + display: flex; + justify-content: flex-end; + max-width: 135px; + width: 100%; +} +.e-control-global.elementor-control .elementor-control-input-wrapper { + display: flex; + flex-direction: row; + align-items: stretch; +} +.e-control-global .elementor-control-spinner { + margin-inline-end: 4px; +} + +.elementor-control-type-hidden { + display: none !important; +} + +.elementor-control-type-icon .select2-selection__rendered .eicon { + margin-inline-end: 3px; +} + +.elementor-control-type-image_dimensions .elementor-control-field-description { + margin: 0 0 15px; + line-height: 1.4; +} +.elementor-control-type-image_dimensions .elementor-control-input-wrapper { + display: flex; + align-items: flex-start; +} +.elementor-control-type-image_dimensions .elementor-image-dimensions-field { + width: 65px; +} +.elementor-control-type-image_dimensions .elementor-image-dimensions-field input:focus + .elementor-image-dimensions-field-description { + color: var(--e-a-color-txt); +} +.elementor-control-type-image_dimensions .elementor-image-dimensions-separator { + width: 20px; + text-align: center; + padding-block-start: 4px; +} +.elementor-control-type-image_dimensions .elementor-image-dimensions-field-description { + display: block; + margin-block-start: 5px; + color: var(--e-a-color-txt-disabled); + font-size: 10px; + text-align: center; +} +.elementor-control-type-image_dimensions .elementor-image-dimensions-apply-button { + margin-inline-start: auto; +} + +.elementor-control-media.e-media-empty .elementor-control-media-area .elementor-control-media__remove, .elementor-control-media.e-media-empty .elementor-control-media-area .elementor-control-media__content__remove { + display: none; +} +.elementor-control-media.e-media-empty-placeholder .e-control-image-size { + display: none; +} +.elementor-control-media:not(.e-media-empty) .elementor-control-media__content__upload-button { + display: none; +} +.elementor-control-media .eicon-plus-circle { + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + color: var(--e-a-color-white); + font-size: 20px; +} +.elementor-control-media__content__upload-button { + background-color: var(--e-a-bg-active-bold); +} +.elementor-control-media__preview { + height: 100%; + background-size: cover; + background-position: center; + padding-block-end: 42.8571%; +} +.elementor-control-media-area { + background-image: linear-gradient(45deg, var(--e-a-border-color-bold) 25%, transparent 0, transparent 75%, var(--e-a-border-color-bold) 0, var(--e-a-border-color-bold)), linear-gradient(45deg, var(--e-a-border-color-bold) 25%, transparent 0, transparent 75%, var(--e-a-border-color-bold) 0, var(--e-a-border-color-bold)); + background-size: 16px 16px; + background-position: 0 0, calc(16px / 2) calc(16px / 2); + background-color: var(--e-a-bg-default); + border: var(--e-a-border-bold); + aspect-ratio: 21/9; +} +.elementor-control-media-area:not(:hover) .elementor-control-media__remove { + display: none; +} +.elementor-control-media-area .eicon-video-camera { + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + color: rgba(255, 255, 255, 0.7); + font-size: 21px; +} +.elementor-control-media .elementor-control-media__content { + aspect-ratio: 21/9; + position: relative; + cursor: pointer; + overflow: hidden; +} +.elementor-control-media .elementor-control-media__content:hover:after { + content: ""; + position: absolute; + top: 0; + bottom: 0; + left: 0; + right: 0; + background-color: rgba(0, 0, 0, 0.2); + pointer-events: none; +} +.elementor-control-media .elementor-control-media__content:not(:hover) .elementor-control-media__tools { + bottom: -30px; +} +.elementor-control-media__content { + transition: all 0.2s ease-in-out; +} +.elementor-control-media__tools { + position: absolute; + bottom: 0; + left: 0; + right: 0; + height: 27px; + transition: all 0.2s ease-in-out; +} +.elementor-control-media__tools > *:not(:first-child) { + margin-inline-start: 1px; +} +.elementor-control-media__tool { + display: flex; + align-items: center; + justify-content: center; + flex-grow: 1; + color: var(--e-a-color-white); + background-color: rgba(0, 0, 0, 0.9); + font-size: 11px; + transition: var(--e-a-transition-hover); +} +.elementor-control-media__tool:hover { + background-color: rgba(0, 0, 0, 0.8); +} +.elementor-control-media__remove { + display: flex; + align-items: center; + justify-content: center; + transition: all 0.3s ease-in-out; +} +.elementor-control-media__content__remove { + position: absolute; + z-index: 1; + top: 10px; + left: 10px; + width: 20px; + height: 20px; + font-size: 11px; + color: var(--e-a-color-white); + background-color: rgba(0, 0, 0, 0.5); + border-radius: var(--e-border-radius); + box-shadow: 0 0 7px 0 rgba(0, 0, 0, 0.2); + transition: var(--e-a-transition-hover); +} +.elementor-control-media__content__remove:hover { + background-color: rgba(0, 0, 0, 0.6); +} +.elementor-control-media.e-media-empty .elementor-control-file-area { + display: none; +} +.elementor-control-media__warnings:empty { + display: none; +} +.elementor-control-media__warnings:not(:empty) { + margin-block-start: 10px; +} +.elementor-control-media__file { + display: flex; + justify-content: space-between; + align-items: center; + width: 100%; + margin-block-start: 10px; + border: var(--e-a-border); +} +.elementor-control-media__file__content { + padding-inline-start: 5px; + font-size: 12px; +} +.elementor-control-media__file__content__label { + color: #9DA5AE; +} +.elementor-control-media__file__content__info { + display: flex; + align-items: center; + font-weight: 500; +} +.elementor-control-media__file__content__info__icon { + margin-inline-end: 5px; +} +.elementor-control-media__file__controls { + display: flex; + border-inline-start: var(--e-a-border); +} +.elementor-control-media__file__controls__upload-button, .elementor-control-media__file__controls__remove { + width: 27px; + height: 27px; + cursor: pointer; + align-items: center; +} +.elementor-control-media__file__controls__upload-button { + display: flex; + justify-content: center; +} +.elementor-control-media__file__controls__remove { + border-inline-end: var(--e-a-border); +} +.elementor-control-media:not(.e-media-empty) .elementor-control-media__file__content__label { + display: none; +} +.elementor-control-media.e-media-empty .elementor-control-media__file__content__info { + display: none; +} +.elementor-control-media.e-media-empty .elementor-control-media__file__controls__remove { + display: none; +} +.elementor-control-media .elementor-control-dynamic-switcher { + border: none; + border-radius: 0; + background-color: rgba(0, 0, 0, 0.9); + color: var(--e-a-color-white); +} +.elementor-control-media .elementor-control-dynamic-switcher:hover { + background-color: rgba(0, 0, 0, 0.8); + color: var(--e-a-color-white); +} +.elementor-control-media .e-control-image-size { + display: flex; + flex-direction: column; + width: 100%; + padding-block-start: 20px; +} +.elementor-control-media .e-control-image-size .elementor-control-input-wrapper { + margin-inline-start: auto; +} + +.elementor-control-type-media.elementor-control-dynamic-value .elementor-control-input-wrapper { + border: none; +} + +.elementor-control:not(.elementor-control-type-icons) .elementor-control-media__preview { + background-color: var(--e-a-bg-active-bold); +} + +.elementor-control-notice { + display: flex; + justify-content: flex-start; + align-items: flex-start; + gap: 8px; + padding: 16px; + border-radius: 3px; + border: 1px solid var(--notice-control-color, var(--e-a-color-txt)); + color: var(--e-a-color-txt); + font-size: 12px; + font-weight: 400; + line-height: 1.5; + text-align: start; + margin-block-start: 10px; +} +.elementor-control-notice-type-info { + --notice-control-color: var(--e-a-color-info); +} +.elementor-control-notice-type-success { + --notice-control-color: var(--e-a-color-success); +} +.elementor-control-notice-type-warning { + --notice-control-color: var(--e-a-color-warning); +} +.elementor-control-notice-type-danger { + --notice-control-color: var(--e-a-color-danger); +} +.elementor-control-notice-icon { + flex-basis: 18px; + color: var(--notice-control-color); +} +.elementor-control-notice-main { + display: flex; + flex-direction: column; + justify-content: flex-start; + align-items: flex-start; + gap: 6px; + flex: 1; +} +.elementor-control-notice-main-heading { + font-weight: 700; + font-style: italic; +} +.elementor-control-notice-main-content { + font-style: italic; + line-height: 1.5; +} +.elementor-control-notice-main-actions { + display: flex; + gap: 10px; + padding-block-start: 8px; +} +.elementor-control-notice-main a { + color: inherit; + font-weight: 700; + cursor: pointer; +} +.elementor-control-notice-main a:hover, .elementor-control-notice-main a:focus { + color: inherit; +} +.elementor-control-notice-dismiss { + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + background-color: transparent; + border: 0; + padding: 0; + margin: 0; + cursor: pointer; +} + +.elementor-control-type-popover_toggle input { + display: none; +} +.elementor-control-type-popover_toggle label { + cursor: pointer; +} +.elementor-control-type-popover_toggle .elementor-control-input-wrapper { + display: flex; + flex-direction: row-reverse; + align-items: center; +} +.elementor-control-type-popover_toggle .elementor-control-popover-toggle-toggle:checked + .elementor-control-popover-toggle-toggle-label { + color: var(--e-a-color-txt-active); + background-color: var(--e-a-bg-active-bold); +} +.elementor-control-type-popover_toggle .elementor-control-popover-toggle-toggle:not(:checked) ~ .elementor-control-popover-toggle-reset-label { + display: none; +} +.elementor-control-type-popover_toggle .elementor-control-popover-toggle-toggle-label { + height: 27px; + display: inline-flex; + align-items: center; + justify-content: center; + border-radius: var(--e-a-border-radius); + border: var(--e-a-border-bold); + transition: var(--e-a-transition-hover); +} +.elementor-control-type-popover_toggle .elementor-control-popover-toggle-toggle-label:hover { + background-color: var(--e-a-bg-hover); +} +.elementor-control-type-popover_toggle .elementor-control-popover-toggle-reset-label { + color: var(--e-a-color-txt-muted); + margin-inline-end: 5px; +} +.elementor-control-type-popover_toggle .elementor-control-popover-toggle-reset-label:hover { + color: var(--e-a-color-txt); +} + +.elementor-controls-popover.e-controls-popover--typography { + padding-block-start: 0; +} + +.e-control-global .elementor-control-popover-toggle-toggle-label { + border-start-start-radius: 0; + border-start-end-radius: var(--e-a-border-radius); + border-end-start-radius: 0; + border-end-end-radius: var(--e-a-border-radius); + flex-shrink: 0; +} + +.elementor-control-type-repeater .elementor-control:not(.elementor-control-type-tab) { + padding-inline-start: 10px; + padding-inline-end: 10px; + padding-block-end: 10px; +} +.elementor-control-type-repeater.elementor-repeater-has-minimum-rows .elementor-repeater-tool-remove { + display: none; +} +.elementor-control-type-repeater .elementor-repeater-fields { + margin: 10px 0; +} +.elementor-control-type-repeater .elementor-repeater-row-controls { + border: var(--e-a-border-bold); + border-block-start-width: 0; + padding-block-start: 15px; +} +.elementor-control-type-repeater .elementor-repeater-row-controls:not(.editable) { + display: none; +} +.elementor-control-type-repeater .elementor-repeater-row-tools { + display: flex; + align-items: center; + width: 100%; + border: 1px solid var(--e-a-border-color-bold); + transition: var(--e-a-transition-hover); +} +.elementor-control-type-repeater .elementor-repeater-row-tools > button { + display: flex; + align-items: center; + justify-content: center; + height: 40px; + border: none; + background-color: transparent; + color: currentColor; + cursor: pointer; +} +.elementor-control-type-repeater .elementor-repeater-row-tools > button:hover, .elementor-control-type-repeater .elementor-repeater-row-tools > button:focus { + background-color: var(--e-a-bg-hover); +} +.elementor-control-type-repeater .elementor-repeater-row-tools .elementor-repeater-row-item-title { + flex: 1; + justify-content: flex-start; + padding: 0 10px; + font-size: var(--control-title-size); + white-space: nowrap; + text-overflow: ellipsis; + overflow: hidden; +} +.elementor-control-type-repeater .elementor-repeater-row-tools .elementor-repeater-row-item-title .eicon, +.elementor-control-type-repeater .elementor-repeater-row-tools .elementor-repeater-row-item-title i, +.elementor-control-type-repeater .elementor-repeater-row-tools .elementor-repeater-row-item-title svg { + margin-inline-end: 5px; +} +.elementor-control-type-repeater .elementor-repeater-row-tools .elementor-repeater-row-item-title img[src$=svg] { + width: 1em; +} +.elementor-control-type-repeater .elementor-repeater-row-tools .elementor-repeater-row-tool { + width: 40px; + border-inline-start: 1px solid var(--e-a-border-color-bold); +} +.elementor-control-type-repeater .elementor-repeater-row-tools .elementor-repeater-row-handle-sortable { + width: 10px; + border-inline-end: 1px solid var(--e-a-border-color-bold); + cursor: move; +} +.elementor-control-type-repeater .elementor-button-wrapper { + text-align: center; + padding-block-start: 5px; +} + +#elementor-controls { + padding-block-start: 15px; +} + +.elementor-control-type-section { + padding: 0; +} +.elementor-control-type-section.e-open { + padding-block-end: 10px; +} +.elementor-control-type-section + .elementor-control:not(.elementor-control-type-section):before { + display: none; +} +.elementor-control-type-section:not(:first-child):not(.elementor-control-type-section + .elementor-control-type-section) { + margin-block-start: 25px; +} + +.elementor-control-type-select .elementor-control-input-wrapper { + position: relative; +} +.elementor-control-type-select .elementor-control-input-wrapper select { + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + font-size: var(--control-title-size); + font-family: inherit; + font-weight: inherit; + font-style: inherit; + text-transform: inherit; + letter-spacing: inherit; + line-height: inherit; + flex-basis: 100%; + padding-inline-start: 5px; + padding-inline-end: 20px; + cursor: pointer; +} +.elementor-control-type-select .elementor-control-input-wrapper select.e-select-placeholder { + color: var(--e-a-color-txt-disabled); +} +.elementor-control-type-select .elementor-control-input-wrapper option.e-option-placeholder { + display: none; +} +.elementor-control-type-select .elementor-control-input-wrapper:after { + font-family: eicons; + content: "\e8ad"; + font-size: 12px; + position: absolute; + top: 50%; + transform: translateY(-50%); + left: 5px; + pointer-events: none; +} +.elementor-control-type-select .elementor-control-field.elementor-control-field-select-small .elementor-control-input-wrapper { + max-width: 80px; +} + +.elementor-shadow-box .elementor-shadow-slider { + margin-block-start: 10px; +} +.elementor-shadow-box .elementor-color-picker-wrapper .elementor-control-title { + flex-grow: 1; +} + +.elementor-control-type-slider.elementor-control-dynamic input { + border-start-start-radius: var(--e-a-border-radius); + border-start-end-radius: 0; + border-end-start-radius: var(--e-a-border-radius); + border-end-end-radius: 0; +} +.elementor-control-type-slider .elementor-control-unit-2 { + width: 21%; +} +.elementor-control-type-slider.elementor-control-type-slider--multiple .elementor-control-input-wrapper { + display: block; +} +.elementor-control-type-slider--multiple { + padding-block-end: 40px; +} +.elementor-control-type-slider--multiple .elementor-slider { + margin-block-start: 12px; + width: 98%; +} +.elementor-control-type-slider--handles-range .elementor-slider .noUi-handle { + border-radius: 0; + width: 10px; + transform: translateY(calc(50% - 14px)) translateX(-4px); +} +.elementor-control-type-slider--handles-range .elementor-slider .noUi-handle:after { + content: ""; + position: absolute; + top: 2px; + height: 12px; + width: 11px; + transform: rotate(45deg); + background-color: var(--e-a-color-white); + border-radius: 3px; +} +.elementor-control-type-slider--handles-range .elementor-slider .noUi-handle-lower:after { + left: 5px; + box-shadow: 2px -2px 3px 0px rgba(0, 0, 0, 0.1); +} +.elementor-control-type-slider--handles-range .elementor-slider .noUi-handle-upper:after { + right: 5px; + box-shadow: -2px 2px 3px 0px rgba(0, 0, 0, 0.1); +} +.elementor-control-type-slider .elementor-control-dynamic-switcher { + border-inline-start-width: 0; + border-start-start-radius: 0; + border-start-end-radius: var(--e-a-border-radius); + border-end-start-radius: 0; + border-end-end-radius: var(--e-a-border-radius); +} +.elementor-control-type-slider .elementor-control-input-wrapper { + display: flex; + align-items: center; +} +.elementor-control-type-slider .elementor-dynamic-cover { + margin-block-start: 10px; +} +.elementor-control-type-slider.e-units-custom .elementor-slider { + display: none; +} +.elementor-control-type-slider.e-units-custom .elementor-slider-input { + width: 100%; + margin: 0; + transition: none; +} + +.elementor-slider { + flex-grow: 1; + height: 4px; + background-color: var(--e-a-border-color-bold); + border-radius: 5px; + position: relative; + cursor: pointer; +} +.elementor-slider-input { + width: 21%; + min-width: 54px; + margin-inline-start: 12px; + transition: width 0.3s ease-in-out; +} +.elementor-slider__extra { + position: relative; +} +.elementor-slider__labels { + display: flex; + justify-content: space-between; +} +.elementor-slider__label { + font-size: 9px; + color: var(--e-a-color-txt-disabled); +} +.elementor-slider__scales { + position: absolute; + display: flex; + justify-content: space-evenly; + width: 100%; + margin-block-start: 4px; +} +.elementor-slider__scale { + width: 1px; + height: 21px; + background-color: var(--e-a-border-color-focus); +} +.elementor-slider .noUi-handle { + height: 16px; + width: 16px; + background-color: var(--e-a-color-white); + left: 0; + transform: translateY(calc(50% - 14px)) translateX(-8px); + position: absolute; + box-shadow: 0 1px 5px rgba(0, 0, 0, 0.3); + border-radius: 50%; +} +.elementor-slider .noUi-connects { + position: absolute; + width: 100%; + height: 4px; +} +.elementor-slider .noUi-connect { + position: absolute; + z-index: 0; + top: 0; + left: 0; + height: 100%; + width: 100%; + will-change: transform; + transform-origin: 0 0; + background-color: var(--e-a-border-color-focus); +} +.elementor-slider .noUi-tooltip { + position: absolute; + top: calc(100% + 5px); + left: calc(50% - 4px); + transform: translateX(-50%); + font-size: 10px; +} + +.elementor-control-type-structure .elementor-control-field { + display: initial; +} +.elementor-control-type-structure .elementor-control-structure-preset { + padding: 3px; + border-radius: var(--e-border-radius); + display: inline-block; + cursor: pointer; + height: 50px; +} +.elementor-control-type-structure .elementor-control-structure-preset svg { + height: 100%; +} +.elementor-control-type-structure .elementor-control-structure-preset path { + fill: var(--e-a-border-color-bold); +} +.elementor-control-type-structure .elementor-control-structure-reset { + padding: 15px 20px 0; + font-size: 11px; + cursor: pointer; + color: var(--e-a-color-txt-muted); + border-block-start: var(--e-a-border); + margin: 0 -20px; +} +.elementor-control-type-structure .elementor-control-structure-reset:hover { + color: var(--e-a-color-txt); +} +.elementor-control-type-structure .elementor-control-structure-title { + margin: 10px -20px 0; +} +.elementor-control-type-structure .elementor-control-structure-title:before { + height: 10px; + box-shadow: inset 0 2px 4px rgba(127, 127, 127, 0.1); +} +.elementor-control-type-structure .elementor-control-structure-presets { + display: flex; + flex-wrap: wrap; + justify-content: space-between; +} +.elementor-control-type-structure .elementor-control-structure-presets input { + display: none; +} +.elementor-control-type-structure .elementor-control-structure-presets input:checked + .elementor-control-structure-preset path { + fill: var(--e-a-border-color-focus); +} +.elementor-control-type-structure .elementor-control-structure-preset-wrapper { + margin-block-end: 15px; +} +.elementor-control-type-structure .elementor-control-structure-preset-title { + text-align: center; + padding-block-start: 5px; + font-style: italic; + font-size: 11px; + color: #9DA5AE; +} + +.elementor-control-type-switcher .elementor-control-input-wrapper { + text-align: end; +} +.elementor-control-type-switcher .elementor-switch { + position: relative; + display: inline-block; + vertical-align: top; + height: 20px; + background-color: var(--e-a-bg-default); + border-radius: 18px; + cursor: pointer; +} +.elementor-control-type-switcher .elementor-switch-input { + display: none; +} +.elementor-control-type-switcher .elementor-switch-label { + position: relative; + display: block; + height: inherit; + font-size: 10px; + background: var(--e-a-bg-active-bold); + border-radius: inherit; + transition: 0.15s ease-out; + transition-property: opacity, background; +} +.elementor-control-type-switcher .elementor-switch-label:before, .elementor-control-type-switcher .elementor-switch-label:after { + position: absolute; + top: 0; + width: 50%; + text-align: center; + line-height: 20px; + transition: inherit; +} +.elementor-control-type-switcher .elementor-switch-label:before { + content: attr(data-off); + right: 5px; + color: var(--e-a-color-txt-muted); +} +.elementor-control-type-switcher .elementor-switch-label:after { + content: attr(data-on); + left: 5px; + color: var(--e-a-btn-color); + opacity: 0; +} +.elementor-control-type-switcher .elementor-switch-input:checked ~ .elementor-switch-label { + background: var(--e-a-btn-bg-primary); +} +.elementor-control-type-switcher .elementor-switch-input:checked ~ .elementor-switch-label:before { + opacity: 0; +} +.elementor-control-type-switcher .elementor-switch-input:checked ~ .elementor-switch-label:after { + opacity: 1; +} +.elementor-control-type-switcher .elementor-switch-handle { + position: absolute; + top: 1px; + left: 1px; + width: 18px; + height: 18px; + background: white; + border-radius: 10px; + transition: left 0.15s ease-out; +} +.elementor-control-type-switcher .elementor-switch-input:checked ~ .elementor-switch-handle { + left: initial; + right: 1px; +} + +.elementor-control-type-tabs { + display: flex; + font-size: var(--control-title-size); +} + +.elementor-control-type-tab { + text-align: center; + width: 100%; + padding: 0; + line-height: 25px; + border-block-start: var(--e-a-border-bold); + border-block-end: var(--e-a-border-bold); + border-inline-end: var(--e-a-border-bold); + transition: var(--e-a-transition-hover); + cursor: pointer; +} +.elementor-control-type-tab:first-child { + border-inline-start: var(--e-a-border-bold); + border-start-start-radius: var(--e-a-border-radius); + border-end-start-radius: var(--e-a-border-radius); +} +.elementor-control-type-tab:last-child { + border-start-end-radius: var(--e-a-border-radius); + border-end-end-radius: var(--e-a-border-radius); +} +.elementor-control-type-tab:hover { + background-color: var(--e-a-bg-hover); +} +.elementor-control-type-tab.e-tab-active { + background-color: var(--e-a-bg-active-bold); + color: var(--e-a-color-txt-accent); +} + +.e-tab-close { + display: none !important; +} + +.elementor-control-type-textarea .elementor-control-dynamic-switcher, +.elementor-control-type-code .elementor-control-dynamic-switcher { + border-inline-start-width: 1px; + border-start-start-radius: 0; + border-start-end-radius: 0; + border-end-end-radius: 0; + border-end-start-radius: var(--e-a-border-radius); +} +.elementor-control-type-textarea:not(.elementor-control-dynamic-value) .elementor-control-dynamic-switcher, +.elementor-control-type-code:not(.elementor-control-dynamic-value) .elementor-control-dynamic-switcher { + position: absolute; + top: 0; + left: 0; + z-index: 1; +} +.elementor-control-type-textarea .elementor-control-input-wrapper, +.elementor-control-type-code .elementor-control-input-wrapper { + position: relative; +} +.elementor-control-type-textarea textarea, +.elementor-control-type-code textarea { + display: block; + font-family: inherit; +} +.elementor-control-type-textarea textarea:focus + .elementor-control-dynamic-switcher, +.elementor-control-type-code textarea:focus + .elementor-control-dynamic-switcher { + display: none; +} +.elementor-control-type-textarea pre:focus-within + .elementor-control-dynamic-switcher, +.elementor-control-type-code pre:focus-within + .elementor-control-dynamic-switcher { + display: none; +} + +.elementor-control-type-url .elementor-control-field { + position: relative; +} +.elementor-control-type-url .elementor-control-input-wrapper { + display: flex; +} +.elementor-control-type-url.elementor-control-dynamic .elementor-control-url-more-options input { + border-radius: var(--e-a-border-radius); +} +.elementor-control-type-url.elementor-control-dynamic-value .e-input-style { + border-start-end-radius: 0; + border-end-end-radius: 0; +} +.elementor-control-type-url.elementor-control-dynamic-value .elementor-control-url-more { + border-start-end-radius: var(--e-a-border-radius); + border-end-end-radius: var(--e-a-border-radius); +} +.elementor-control-type-url .elementor-control-url-more { + display: flex; + align-items: center; + justify-content: center; + flex-shrink: 0; + border: var(--e-a-border-bold); + color: currentColor; + background-color: transparent; + border-inline-start-width: 0; + cursor: pointer; +} +.elementor-control-type-url .elementor-control-url-more i { + font-size: 12px; +} +.elementor-control-type-url .elementor-control-url-more-options { + display: none; + padding-block-start: 10px; +} +.elementor-control-type-url .elementor-control-url-more-options .elementor-control-field-description { + margin-block-start: 10px; +} +.elementor-control-type-url .elementor-control-url-more:hover { + color: var(--e-a-color-txt-hover); +} +.elementor-control-type-url .elementor-control-url-more:focus { + color: var(--e-a-color-txt-active); + border-color: var(--e-a-border-color-focus); +} +.elementor-control-type-url .elementor-control-url-option { + display: flex; + align-items: center; +} +.elementor-control-type-url .elementor-control-url-option:not(:last-child) { + padding-block-end: 10px; +} +.elementor-control-type-url .elementor-control-url-option input, +.elementor-control-type-url .elementor-control-url-option label { + cursor: pointer; +} +.elementor-control-type-url .elementor-control-url-autocomplete-spinner { + display: none; + position: absolute; + top: 5px; + right: 0; + width: 10px; + height: 10px; + font-size: 10px; + color: var(--e-a-color-txt-disabled); +} +.elementor-control-type-url .elementor-control-url__custom-attributes label { + font-size: var(--control-title-size); +} +.elementor-control-type-url .elementor-control-url__custom-attributes input { + width: 100%; + margin-block-start: 10px; +} +.elementor-control-type-url .elementor-input:focus ~ div { + border-color: var(--e-a-border-color-focus); +} + +.elementor-autocomplete-menu { + position: absolute; + background: var(--e-a-bg-default); + border: var(--e-a-border); + margin: 0; + list-style: none; + padding: 4px 0; + height: auto; + width: 100%; + min-width: 260px; + max-width: 300px; + max-height: 200px; + overflow-y: auto; + border-radius: 3px; + transition: var(--e-a-transition-hover); + cursor: default; + z-index: 1; +} +.elementor-autocomplete-menu .ui-menu-item { + display: flex; + justify-content: space-between; + align-self: baseline; + padding: 5px 8px; + font-size: 12px; + width: 100%; + line-height: 1.2; + cursor: pointer; +} +.elementor-autocomplete-menu .ui-menu-item.ui-state-hover, .elementor-autocomplete-menu .ui-menu-item.ui-state-active, .elementor-autocomplete-menu .ui-menu-item.ui-state-focus { + background: var(--e-a-bg-hover); +} +.elementor-autocomplete-menu .elementor-autocomplete-item-info { + font-size: 10px; + padding-block-start: 2px; +} + +.elementor-control-type-wp_widget .widget-inside { + line-height: 2; + background-color: inherit; + display: block; +} +.elementor-control-type-wp_widget .quicktags-toolbar input { + width: auto; +} + +.elementor-control-type-wysiwyg * { + box-sizing: content-box; +} +.elementor-control-type-wysiwyg .wp-editor-container { + border: var(--e-a-border); +} +.elementor-control-type-wysiwyg .wp-editor-tabs { + border: var(--e-a-border-bold); + border-block-end: none; + border-start-start-radius: var(--e-a-border-radius); + border-start-end-radius: var(--e-a-border-radius); + border-end-end-radius: 0; + border-end-start-radius: 0; +} +.elementor-control-type-wysiwyg .wp-editor-tabs button:hover { + background-color: var(--e-a-bg-hover); +} +.elementor-control-type-wysiwyg #insert-media-button { + height: initial; + line-height: 24px; + font-size: 10px; + color: var(--e-a-color-txt); + border-color: var(--e-a-border-color-bold); + background-color: var(--e-a-bg-default); + min-height: initial; +} +.elementor-control-type-wysiwyg .ed_button { + height: 22px; + width: initial; +} +.elementor-control-type-wysiwyg .wp-media-buttons-icon { + height: 14px; + margin: 0; +} +.elementor-control-type-wysiwyg .wp-media-buttons-icon:before { + font-size: 14px; +} +.elementor-control-type-wysiwyg .wp-switch-editor { + position: static; + border: none; + margin: 0; + color: var(--e-a-color-txt); + font-size: 10px; + padding: 3px 9px 4px; +} +.elementor-control-type-wysiwyg .switch-html { + border: solid var(--e-a-border-color-bold); + border-width: 0 1px; +} +.elementor-control-type-wysiwyg .html-active .switch-tmce { + background-color: transparent; +} +.elementor-control-type-wysiwyg .html-active .switch-html { + background-color: var(--e-a-bg-active); +} +.elementor-control-type-wysiwyg .tmce-active .switch-tmce { + background-color: var(--e-a-bg-active); +} +.elementor-control-type-wysiwyg .tmce-active .switch-html { + background-color: transparent; +} +.elementor-control-type-wysiwyg .mce-toolbar-grp, +.elementor-control-type-wysiwyg .quicktags-toolbar { + background-color: var(--e-a-bg-default); +} +.elementor-control-type-wysiwyg .mce-toolbar .mce-btn-group .mce-btn.mce-listbox { + background-color: var(--e-a-bg-default); +} +.elementor-control-type-wysiwyg .mce-toolbar .mce-btn-group .mce-btn.mce-listbox button { + color: var(--e-a-color-txt); +} +.elementor-control-type-wysiwyg .mce-toolbar-grp > div { + padding: 0 3px; +} +.elementor-control-type-wysiwyg .elementor-wp-editor { + box-sizing: border-box; +} +.elementor-control-type-wysiwyg .mce-ico { + color: var(--e-a-color-txt); + font-size: 16px; +} +.elementor-control-type-wysiwyg .mce-btn-group .mce-btn:hover, .elementor-control-type-wysiwyg .mce-btn-group .mce-btn:active, .elementor-control-type-wysiwyg .mce-btn-group .mce-btn.mce-active { + color: var(--e-a-color-txt-active); + background: var(--e-a-bg-hover); + border-color: var(--e-a-border-color); + box-shadow: none; +} +.elementor-control-type-wysiwyg .mce-btn-group .mce-btn:hover i, .elementor-control-type-wysiwyg .mce-btn-group .mce-btn:active i, .elementor-control-type-wysiwyg .mce-btn-group .mce-btn.mce-active i { + color: var(--e-a-color-txt-active); +} +.elementor-control-type-wysiwyg .mce-path { + padding: 5px 10px; +} +.elementor-control-type-wysiwyg .mce-path-item { + font-size: 12px; + color: var(--e-a-color-txt); +} +.elementor-control-type-wysiwyg .mce-top-part:before { + box-shadow: none; +} +.elementor-control-type-wysiwyg .elementor-control-dynamic-switcher { + border: none; +} + +@media screen and (prefers-color-scheme: dark) { + #wp-link-wrap { + color-scheme: light; + --e-a-color-txt: #515962; + --e-a-bg-default: #ffffff; + --e-a-border-color-bold: #D5D8DC; + --e-a-color-primary-bold: #D004D4; + } + #wp-link { + color: var(--e-a-color-txt); + } + #wp-link input { + background-color: var(--e-a-bg-default); + border-color: var(--e-a-border-color-bold); + } + #wp-link input[type=checkbox] { + border-color: var(--e-a-border-color-bold); + } + #wp-link input[type=checkbox]:checked { + background: var(--e-a-color-primary-bold); + } + #wp-link input.button-primary { + background: #2271b1; + border-color: #2271b1; + color: #fff; + } +} +.ui-resizable-n { + top: -5px; +} +.ui-resizable-e { + right: -5px; +} +.ui-resizable-s { + bottom: -5px; +} +.ui-resizable-w { + left: -5px; +} +.ui-resizable-ne { + top: -5px; + right: -5px; +} +.ui-resizable-nw { + top: -5px; + left: -5px; +} +.ui-resizable-se { + bottom: -5px; + right: -5px; +} +.ui-resizable-sw { + bottom: -5px; + left: -5px; +} +.ui-resizable-n, .ui-resizable-s { + left: 0; + height: 10px; + width: 100%; + cursor: ns-resize; +} +.ui-resizable-e, .ui-resizable-w { + top: 0; + height: 100%; + width: 10px; + cursor: ew-resize; +} +.ui-resizable-ne, .ui-resizable-nw, .ui-resizable-se, .ui-resizable-sw { + height: 15px; + width: 15px; +} +.ui-resizable-nw, .ui-resizable-se { + cursor: nwse-resize; +} +.ui-resizable-ne, .ui-resizable-sw { + cursor: nesw-resize; +} +.ui-resizable-handle { + position: absolute; +} +.ui-resizable-resizing { + pointer-events: none; +} + +:root { + --e-p-draggable-color: #F0ABFC; + --e-p-border-section: #F3BAFD; + --e-p-border-section-hover: #F0ABFC; + --e-p-border-section-invert: #0C0D0E; + --e-p-border-con: #F3BAFD; + --e-p-border-con-hover: #F0ABFC; + --e-p-border-con-invert: #0C0D0E; + --e-p-border-column: #9DA5AE; + --e-p-border-column-hover: #818A96; + --e-p-border-column-invert: #0C0D0E; + --e-p-border-con-in: #9DA5AE; + --e-p-border-con-in-hover: #818A96; + --e-p-border-con-in-invert: #0C0D0E; + --e-p-border-widget: #F3BAFD; + --e-p-border-widget-hover: #F0ABFC; + --e-p-border-widget-invert: #0C0D0E; + --e-p-border-global: #5EEAD4; + --e-p-border-global-hover: #1DDDBF; + --e-p-border-global-invert: #0C0D0E; +} + +.elementor-add-section { + all: initial; + display: flex; + max-width: 1160px; + position: relative; + margin-inline: auto; +} +.elementor-add-section:not(.elementor-dragging-on-child) .elementor-add-section-inner { + border: 2px dashed var(--e-a-border-color-bold); + background-color: rgba(255, 255, 255, 0.5); +} +.elementor-add-section.elementor-dragging-on-child .elementor-add-section-inner { + border: 2px dashed var(--e-a-color-primary); +} +.elementor-add-section[data-view=choose-action] .e-view:not(.elementor-add-new-section) { + display: none; +} +.elementor-add-section[data-view=select-preset] .e-view:not(.elementor-select-preset) { + display: none; +} +.elementor-add-section[data-view=select-container-preset] .e-view:not(.e-con-select-preset) { + display: none; +} +.elementor-add-section[data-view=select-type] .e-view:not(.e-con-select-type) { + display: none; +} +.elementor-add-section[data-view=select-container-preset-grid] .e-view:not(.e-con-select-preset-grid) { + display: none; +} + +.elementor-add-section-inner { + text-align: center; + margin: 20px; + padding: 40px 0; + display: flex; + justify-content: center; + flex-grow: 1; +} + +.elementor-add-new-section { + display: flex; + justify-content: center; + flex-wrap: wrap; + gap: 5px; +} + +.elementor-add-section-area-button { + padding: 12px; + height: 40px; + width: 40px; + border-radius: 50%; + font-size: 16px; + display: flex; + outline: none; + border: none; + background-color: var(--e-a-bg-active); + color: var(--e-a-color-black); + transition: var(--e-a-transition-hover); + cursor: pointer; +} +.elementor-add-section-area-button:hover { + background-color: var(--e-a-bg-active-bold); + color: var(--e-a-color-black); +} +.elementor-add-section-area-button i { + margin: 0; +} +.elementor-add-section-area-button.e-button-primary { + background-color: var(--e-a-btn-bg-primary); + color: var(--e-a-btn-color); +} +.elementor-add-section-area-button.e-button-primary:hover { + background-color: var(--e-a-btn-bg-primary-hover); + color: var(--e-a-btn-color); +} + +.elementor-add-section-drag-title, +.elementor-select-preset-title { + font-family: var(--e-a-font-family); + font-size: 13px; + line-height: 1; + color: var(--e-a-color-txt); +} + +.elementor-add-section-drag-title { + font-style: italic; + font-weight: normal; + margin-block-start: 10px; + width: 100%; +} + +.elementor-select-preset-title { + font-weight: 500; + text-transform: uppercase; +} + +.elementor-add-section-close { + right: 40px; +} + +.elementor-add-section-back { + left: 40px; +} + +.elementor-wizard-icon { + position: absolute; + top: 40px; + font-size: 20px; + cursor: pointer; + line-height: 1; + color: var(--e-a-color-txt); +} +.elementor-wizard-icon:hover { + color: var(--e-a-color-txt-hover); +} + +.elementor-select-preset-list { + list-style: none; + padding: 0 25px; + margin: 20px auto 0; + overflow: hidden; + max-width: 700px; +} +.elementor-select-preset-list .elementor-preset { + cursor: pointer; + margin: 0; + padding: 10px; + float: right; + max-width: 33.333%; +} +.elementor-select-preset-list .elementor-preset:not(:hover) path, +.elementor-select-preset-list .elementor-preset:not(:hover) rect { + fill: var(--e-a-bg-active-bold); + transition: 0.3s all; +} +.elementor-select-preset-list .elementor-preset:hover path, +.elementor-select-preset-list .elementor-preset:hover rect { + fill: var(--e-a-color-txt); +} +.elementor-select-preset-list .elementor-preset .e-preset--container { + position: relative; + display: flex; +} +.elementor-select-preset-list .elementor-preset .e-preset--container::before { + content: var(--text); + font-family: var(--e-a-font-family); + font-size: 13px; + font-weight: 500; + position: absolute; + left: 50%; + top: 50%; + color: var(--e-a-color-white); + transform: translate(-50%, -50%); +} +.elementor-select-preset-list .elementor-preset svg { + height: 50px; + width: 100%; + transform: rotate(180deg); +} + +.elementor-add-section[data-view=choose-action] .elementor-add-section-back { + display: none; +} +.elementor-add-section[data-view=select-preset] .elementor-add-section-back { + display: none; +} +.elementor-add-section[data-view=select-type] .elementor-add-section-back { + display: none; +} + +#elementor-add-new-section { + margin: 60px auto; +} +#elementor-add-new-section[data-view=choose-action] .elementor-add-section-close { + display: none; +} + +.elementor-add-section-inline { + margin: 10px auto; + width: 100%; +} + +@keyframes placeholder-section { + 0% { + height: 0; + opacity: 0; + } + 100% { + height: 40px; + opacity: 0.9; + } +} +@keyframes placeholder-widget { + 0% { + height: 0; + opacity: 0; + } + 100% { + height: 10px; + opacity: 0.9; + } +} +@keyframes section-outline { + 0% { + opacity: 0; + } + 100% { + opacity: 1; + } +} +body.elementor-editor-active .elementor.elementor-edit-mode.layout-section .entry-content { + overflow: visible; +} +body.elementor-editor-active .elementor.elementor-edit-mode .article { + overflow: visible; +} +body.elementor-editor-active .elementor.elementor-edit-mode .elementor-element-overlay .elementor-editor-element-settings { + clear: unset; +} +body.elementor-editor-active .elementor.elementor-edit-mode .elementor-element.elementor-section { + overflow: visible; +} + +.elementor-edit-area .animated { + animation-fill-mode: none !important; +} +.elementor-edit-area ul.elementor-editor-element-settings { + word-break: normal; + padding: 0; +} +.elementor-edit-area .gallery { + opacity: 1; +} + +.pen { + position: relative; + outline: none; +} +.pen:not([data-elementor-inline-editing-toolbar=advanced]) { + white-space: pre-wrap; +} +.pen-menu { + box-shadow: 1px 2px 3px -2px #222; + background-color: #3f444b; + position: fixed; + overflow: hidden; + border-radius: 3px; + z-index: 9999; +} +.pen-menu:after { + top: 100%; + content: ""; + position: absolute; + border: 6px solid transparent; + border-block-start-color: #3f444b; + left: 50%; + transform: translateX(-50%); +} +.pen-menu-below:after { + top: 0; + transform: translateX(-50%) translateY(-100%) rotate(180deg); +} +.pen-icon { + position: relative; + display: flex; + align-items: center; + justify-content: center; + height: 35px; + padding: 0 10px; + font-size: 21px; + color: #D5D8DC; + cursor: pointer; + -webkit-user-select: none; + -moz-user-select: none; + user-select: none; +} +.pen-icon:hover { + background: #1f2124; +} +.pen-icon[data-group], .pen-icon[data-action=closeGroup] { + display: none; +} +.pen-icon[data-action=close]:before { + content: ""; + position: absolute; + right: 0; + height: 60%; + width: 1px; + background-color: #1f2124; +} +.pen-icon.active { + background-color: #1f2124; + box-shadow: inset 2px 2px 4px #1f2124; +} +.pen-group-icon:after { + font-family: eicons; + font-size: 12px; + content: "\e92a"; + padding-inline-start: 4px; + color: #2563EB; +} +.pen-input-wrapper { + align-items: center; +} +.pen-input-wrapper .pen-url-input { + font-size: 12px; + line-height: 1.5; + padding: 0; + padding-inline-start: 10px; + padding-inline-end: 10px; + width: 250px; + direction: ltr; +} +.pen-input-wrapper .pen-url-input, .pen-input-wrapper .pen-url-input:focus { + background-color: transparent; + border: none; + outline: none; + box-shadow: none; + color: #fff; +} +.pen-input-wrapper .pen-url-input::-moz-placeholder { + color: #D5D8DC; +} +.pen-input-wrapper .pen-url-input::placeholder { + color: #D5D8DC; +} +.pen-input-label { + margin: 0; + margin-inline-end: -1px; +} +.pen-placeholder:before { + content: attr(data-pen-placeholder); + position: absolute; + font-weight: normal; + color: #757575; + opacity: 0.6; +} +.pen-external-url-checkbox { + display: none; +} +.pen-external-url-checkbox:checked + i { + color: #fff; +} + +.elementor-inline-editing i:not([class]) { + font-style: italic; +} +.elementor-inline-editing b { + font-weight: bold; +} +.elementor-inline-editing u { + text-decoration: underline; +} + +.e-element-color-picker { + --primary-color: #2563EB; + --swatch-size: 25px; + cursor: default; + display: flex; + position: absolute; + width: calc((var(--count) + 1) * var(--swatch-size)); + height: var(--swatch-size); + top: var(--top); + left: var(--left); + right: var(--right, unset); + border-radius: 3px; + opacity: 0; + pointer-events: none; + z-index: 9998; + background-color: var(--primary-color); + padding: 1px; + box-sizing: content-box; + transition: opacity 0.3s, width 0.3s; +} +.e-element-color-picker.e-picker-hidden { + opacity: 0; + pointer-events: none; +} +.e-element-color-picker::before { + content: ""; + flex: 0 1 var(--swatch-size); + max-width: 100%; + height: 100%; + box-sizing: border-box; + text-align: center; +} +.e-element-color-picker::after { + content: "\e91e"; + font-family: "eicons"; + color: #FFF; + font-size: 1rem; + line-height: var(--swatch-size); + position: absolute; + left: 0.3rem; + z-index: -1; +} +.e-element-color-picker__swatch { + flex: 1 0 var(--swatch-size); + max-width: 100%; + height: 100%; + cursor: pointer; + transition: var(--e-a-transition-hover); + position: relative; + overflow: hidden; + border-radius: inherit; + /* Hack to fix transparent `--color` on hover */ + background: linear-gradient(var(--color), var(--color)), linear-gradient(var(--primary-color), var(--primary-color)); +} +.e-element-color-picker__swatch:not(:first-child) { + border-left: 1px solid var(--primary-color); +} +.e-element-color-picker__swatch::before { + content: attr(data-text); + position: absolute; + left: 50%; + top: 50%; + opacity: 0; + color: var(--color); + font-size: 10px; + font-weight: 300; + font-family: Roboto, Arial, Helvetica, sans-serif; + transform: translate(-50%, -50%); + filter: hue-rotate(180deg) grayscale(1) contrast(999) invert(1); + transition: inherit; +} +.e-element-color-picker__swatch:hover { + flex-basis: calc(2 * var(--swatch-size)); + flex-shrink: 0; +} +.e-element-color-picker__swatch:hover::before { + opacity: 1; +} + +.e-ui-state--elements-color-picker-color-picking__on *:not(.e-element-color-picker__swatch) { + cursor: url("../images/eyedropper.svg") 0 20, pointer; +} +.e-ui-state--elements-color-picker-color-picking__on .e-element-color-picker:not(.e-picker-hidden):hover, +.e-ui-state--elements-color-picker-color-picking__on .elementor-element:hover > .e-element-color-picker:not(.e-picker-hidden), +.e-ui-state--elements-color-picker-color-picking__on .elementor-widget-container:hover + .e-element-color-picker:not(.e-picker-hidden) { + opacity: 1; + pointer-events: all; +} +.e-ui-state--elements-color-picker-color-picking__on .elementor-section:hover { + outline: 1px solid #2563EB; +} + +[class^=eicon-flex], [class*=" eicon-flex"] { + transition: 0.3s all; + --is-ltr: 1; + --is-rtl: 0; + --rotation-direction: calc(var(--is-ltr) - var(--is-rtl)); + --is-ltr: 0; + --is-rtl: 1; +} +[class^=eicon-flex].eicon-inline, [class*=" eicon-flex"].eicon-inline { + max-height: 1em; + max-width: 1em; +} +[class^=eicon-flex]:is(.eicon-justify-start-h, .eicon-justify-end-h), [class*=" eicon-flex"]:is(.eicon-justify-start-h, .eicon-justify-end-h) { + --rotation-direction: calc(var(--is-ltr) + var(--is-rtl)); +} +:is(.e-ui-state--document-direction-mode__column, .e-ui-state--document-direction-mode__column-reverse) [class^=eicon-flex]:not(.eicon-wrap):not(.eicon-nowrap):not(.eicon-grow), :is(.e-ui-state--document-direction-mode__column, .e-ui-state--document-direction-mode__column-reverse) [class*=" eicon-flex"]:not(.eicon-wrap):not(.eicon-nowrap):not(.eicon-grow) { + transform: rotate(calc(var(--rotation-direction) * 90deg)); +} +:is(.e-ui-state--document-direction-mode__column, .e-ui-state--document-direction-mode__column-reverse) [class^=eicon-flex]:not(.eicon-wrap):not(.eicon-nowrap):not(.eicon-grow):is(.eicon-align-start-v, .eicon-align-end-v), :is(.e-ui-state--document-direction-mode__column, .e-ui-state--document-direction-mode__column-reverse) [class*=" eicon-flex"]:not(.eicon-wrap):not(.eicon-nowrap):not(.eicon-grow):is(.eicon-align-start-v, .eicon-align-end-v) { + transform: rotate(calc(var(--rotation-direction) * -90deg)); +} +.e-ui-state--document-direction-mode__column-reverse [class^=eicon-flex]:not(.eicon-wrap):not(.eicon-nowrap):not(.eicon-grow):is(.eicon-justify-start-h, .eicon-justify-end-h, .eicon-order-start, .eicon-order-end), .e-ui-state--document-direction-mode__column-reverse [class*=" eicon-flex"]:not(.eicon-wrap):not(.eicon-nowrap):not(.eicon-grow):is(.eicon-justify-start-h, .eicon-justify-end-h, .eicon-order-start, .eicon-order-end) { + transform: rotate(calc(var(--rotation-direction) * -90deg)); +} +.e-ui-state--document-direction-mode__row [class^=eicon-flex]:not(.eicon-wrap):not(.eicon-nowrap):not(.eicon-grow):is(.eicon-justify-start-h, .eicon-justify-end-h, .eicon-order-start, .eicon-order-end), .e-ui-state--document-direction-mode__row [class*=" eicon-flex"]:not(.eicon-wrap):not(.eicon-nowrap):not(.eicon-grow):is(.eicon-justify-start-h, .eicon-justify-end-h, .eicon-order-start, .eicon-order-end) { + transform: rotate(calc(var(--is-rtl) * 180deg)); +} +.e-ui-state--document-direction-mode__row-reverse [class^=eicon-flex]:not(.eicon-wrap):not(.eicon-nowrap):not(.eicon-grow):is(.eicon-justify-start-h, .eicon-justify-end-h, .eicon-order-start, .eicon-order-end), .e-ui-state--document-direction-mode__row-reverse [class*=" eicon-flex"]:not(.eicon-wrap):not(.eicon-nowrap):not(.eicon-grow):is(.eicon-justify-start-h, .eicon-justify-end-h, .eicon-order-start, .eicon-order-end) { + transform: rotate(calc(var(--is-ltr) * 180deg)); +} + +html.elementor-html { + margin-block-start: 0 !important; +} + +.elementor-edit-area { + position: relative; +} + +.elementor.loading { + opacity: 0.5; +} + +.elementor-edit-area-active { + --primary-color: var(--e-p-border-con); + --secondary-color: var(--e-p-border-con-hover); + --outline-color: var(--e-p-border-con-active); +} +.elementor-edit-area-active .e-con { + --primary-color: var(--e-p-border-con); + --secondary-color: var(--e-p-border-con-hover); + --outline-color: var( --outline-color ); +} +.elementor-edit-area-active .e-con.e-dragging-over, .elementor-edit-area-active .e-con.elementor-dragging-on-child, .elementor-edit-area-active .e-con.e-con-boxed.elementor-html5dnd-current-element { + outline: 1px solid var(--outline-color); +} +.elementor-edit-area-active .e-grid-outline { + display: none; +} +.elementor-edit-area-active .elementor-element-editable.e-grid.e-con-full > .e-grid-outline { + padding-block-start: var(--bc-padding-block-start, var(--padding-block-start)); + padding-block-end: var(--bc-padding-block-end, var(--padding-block-end)); + display: grid; + position: absolute; + top: 0; + bottom: 0; + pointer-events: none; + grid-gap: var(--gap); + justify-items: var(--justify-items); + align-items: var(--align-items); + grid-auto-flow: var(--grid-auto-flow); + justify-content: var(--grid-justify-content); + align-content: var(--grid-align-content); + min-height: var(--min-height); + padding-inline-end: var(--bc-padding-inline-end, var(--padding-inline-end)); + padding-inline-start: var(--bc-padding-inline-start, var(--padding-inline-start)); + width: 100%; + left: 0; +} +.elementor-edit-area-active .elementor-element-editable.e-grid.e-con-boxed > .e-con-inner { + position: relative; +} +.elementor-edit-area-active .elementor-element-editable.e-grid.e-con-boxed > .e-con-inner > .e-grid-outline { + padding-block-start: var(--bc-padding-block-start, var(--padding-block-start)); + padding-block-end: var(--bc-padding-block-end, var(--padding-block-end)); + display: grid; + position: absolute; + top: 0; + bottom: 0; + pointer-events: none; + grid-gap: var(--gap); + justify-items: var(--justify-items); + align-items: var(--align-items); + grid-auto-flow: var(--grid-auto-flow); + justify-content: var(--grid-justify-content); + align-content: var(--grid-align-content); + min-height: var(--min-height); + width: var(--width); + margin: 0 auto; +} +.elementor-edit-area-active .elementor-element-editable.e-grid .e-grid-outline-item { + border: 1px dashed #9DA5AE; + pointer-events: none; + width: 100%; + height: 100%; +} +.elementor-edit-area-active .elementor-inner-section:first-child { + margin-block-start: 15px; +} +.elementor-edit-area-active .elementor-widget-wrap.elementor-element-empty { + min-height: 30px; +} +@media (min-width: 768px) { + .elementor-edit-area-active .elementor-widget-wrap.elementor-element-empty { + margin: 10px; + } +} +.elementor-edit-area-active .elementor-column { + min-width: 25px; +} +.elementor-edit-area-active .elementor-widget.elementor-loading { + opacity: 0.3; +} +.elementor-edit-area-active .elementor-widget.elementor-element-edit-mode:hover { + box-shadow: 0 0 0 1px var(--e-p-border-widget); +} +.elementor-edit-area-active .elementor-widget.elementor-element-editable, .elementor-edit-area-active .elementor-widget.elementor-element-editable:hover { + box-shadow: 0 0 0 2px var(--e-p-border-widget); +} +.elementor-edit-area-active .elementor-widget:not(:hover) .elementor-editor-element-settings { + display: none; +} +.elementor-edit-area-active .elementor-widget.ui-draggable-dragging { + pointer-events: none; +} +.elementor-edit-area-active .elementor-editor-element-setting { + cursor: pointer; + display: flex; + align-items: center; + justify-content: center; + padding: 0; + margin: 0; + font-size: 11px; + color: var(--e-p-border-widget-invert); + width: 25px; + transition: var(--e-a-transition-hover); +} +.elementor-edit-area-active .elementor-inline-editing { + min-height: 15px; +} +.elementor-edit-area-active .elementor-edit-hidden { + display: none; +} + +.elementor-section-wrap:empty { + min-height: 25px; +} +.elementor-section-wrap > :first-child > .elementor-element-overlay { + z-index: 9999; +} + +.elementor-element > .elementor-element-overlay { + position: absolute; + top: 0; + left: 0; + letter-spacing: 0; + z-index: 9998; + pointer-events: none; +} +.elementor-element-empty .elementor-sortable-placeholder { + display: none; +} +.elementor-element.elementor-widget-empty { + background-color: rgba(213, 216, 220, 0.8); +} +.elementor-element.elementor-widget-empty .elementor-widget-empty-icon { + color: #BABFC5; + font-size: 22px; + display: block; + text-align: center; + padding: 10px 0; +} +.elementor-element:not(:hover):not(.elementor-element-editable) > .elementor-element-overlay .elementor-editor-element-settings { + display: none; +} +.elementor-element--toggle-edit-tools > .elementor-element-overlay .elementor-editor-element-edit:not(.elementor-active) ~ * { + width: 0; + font-size: 0; +} +.elementor-element[data-side=top]:before, .elementor-element[data-side=bottom] + .elementor-element:before { + content: ""; + background-color: var(--e-p-draggable-color); + transition-timing-function: ease-out; + opacity: 0.9; + height: 10px; + animation: placeholder-widget 500ms; + display: block; +} +.elementor-element[data-side=bottom]:last-child:after { + content: ""; + background-color: var(--e-p-draggable-color); + transition-timing-function: ease-out; + opacity: 0.9; + height: 10px; + animation: placeholder-widget 500ms; + display: block; +} +.elementor-element.elementor-absolute, .elementor-element.elementor-fixed { + cursor: grab; +} +.elementor-element.elementor-absolute:active, .elementor-element.elementor-fixed:active { + cursor: grabbing; +} +.elementor-element.elementor-absolute .eicon-edit:before, .elementor-element.elementor-fixed .eicon-edit:before { + content: "\e902"; +} + +.elementor-editor-element-settings { + position: absolute; + display: flex; + height: 26px; + list-style: none; + margin: 0; + padding: 0; + font-family: var(--e-a-font-family); + font-size: 13px; + font-weight: normal; + font-style: normal; + line-height: 1; + z-index: 1; + pointer-events: all; + transition: var(--e-a-transition-hover); +} + +@media (min-width: 1025px) { + .elementor-editor-element-edit { + cursor: move; + } +} + +.elementor-empty-view { + position: absolute; + top: 0; + bottom: 0; + left: 0; + right: 0; + z-index: 1; +} + +.elementor-first-add { + text-align: center; + border: 1px dashed var(--e-a-border-color-bold); + display: flex; + height: 100%; + width: 100%; + position: absolute; + align-items: center; + justify-content: center; +} +.elementor-first-add .elementor-icon { + font-size: 19px; + color: #9DA5AE; + cursor: pointer; +} + +.elementor-sortable-helper { + position: absolute; + cursor: move; + border: var(--e-a-border); + border-radius: var(--e-a-border-radius); + background-color: var(--e-a-bg-active); + border-color: var(--e-a-border-color-accent); + color: var(--e-a-color-active); + text-align: center; +} +.elementor-sortable-helper .icon { + font-size: 28px; + padding-block-start: 15px; + line-height: 1; +} +.elementor-sortable-helper .title-wrapper { + display: flex; + height: 40px; + align-items: center; + justify-content: center; +} +.elementor-sortable-helper .title { + font-size: 11px; +} + +.elementor-sortable-placeholder:not(.elementor-column-placeholder) { + background-color: var(--e-p-draggable-color); + animation-duration: 250ms; + opacity: 0.9; + width: 100%; + align-self: stretch; +} +.e-con .elementor-first-add .elementor-sortable-placeholder:not(.elementor-column-placeholder) { + align-self: center; +} +.e-swappable--active > .elementor-sortable-placeholder:not(.elementor-column-placeholder) { + display: none; +} + +.elementor-section-placeholder { + height: 40px; + animation-name: placeholder-section; +} + +.elementor-widget-placeholder { + height: 10px; + animation-name: placeholder-widget; +} + +.elementor-draggable-over:not([data-dragged-element=section]):not([data-dragged-is-inner=true]) > .elementor-empty-view > .elementor-first-add:after, +.elementor-first-add.elementor-html5dnd-current-element:after { + content: ""; + background-color: var(--e-p-draggable-color); + transition-timing-function: ease-out; + opacity: 0.9; + height: 10px; + animation: placeholder-widget 500ms; + width: 100%; +} +.e-con .elementor-draggable-over:not([data-dragged-element=section]):not([data-dragged-is-inner=true]) > .elementor-empty-view > .elementor-first-add:after, +.e-con .elementor-first-add.elementor-html5dnd-current-element:after { + display: none; +} +.elementor-draggable-over:not([data-dragged-element=section]):not([data-dragged-is-inner=true]) > .elementor-empty-view > .elementor-first-add .elementor-icon, +.elementor-first-add.elementor-html5dnd-current-element .elementor-icon { + display: none; +} + +.elementor-draggable-over[data-dragged-element=section][data-dragged-is-inner=true] .elementor-inner-column .elementor-sortable-placeholder { + display: none; +} + +.elementor-editor-preview .elementor-element-overlay, +.elementor-editor-preview .elementor-empty, +.elementor-editor-preview .elementor-add-section, +.elementor-editor-preview .elementor-add-section-inline, +.elementor-editor-preview .elementor-empty-view, +.elementor-editor-preview .elementor-widget-empty { + display: none; +} + +.e-preview--show-hidden-elements[data-elementor-device-mode=widescreen] .elementor-edit-area-active .elementor-hidden-widescreen, +.e-preview--show-hidden-elements[data-elementor-device-mode=desktop] .elementor-edit-area-active .elementor-hidden-desktop, +.e-preview--show-hidden-elements[data-elementor-device-mode=laptop] .elementor-edit-area-active .elementor-hidden-laptop, +.e-preview--show-hidden-elements[data-elementor-device-mode=tablet_extra] .elementor-edit-area-active .elementor-hidden-tablet_extra, +.e-preview--show-hidden-elements[data-elementor-device-mode=tablet] .elementor-edit-area-active .elementor-hidden-tablet, +.e-preview--show-hidden-elements[data-elementor-device-mode=mobile_extra] .elementor-edit-area-active .elementor-hidden-mobile_extra, +.e-preview--show-hidden-elements[data-elementor-device-mode=mobile] .elementor-edit-area-active .elementor-hidden-mobile { + display: inherit; + background: repeating-linear-gradient(125deg, rgba(0, 0, 0, 0.05), rgba(0, 0, 0, 0.05) 1px, transparent 2px, transparent 9px); + border: 1px solid rgba(0, 0, 0, 0.02); +} +.e-preview--show-hidden-elements[data-elementor-device-mode=widescreen] .elementor-edit-area-active .elementor-hidden-widescreen.elementor-section > .elementor-element-overlay, .e-preview--show-hidden-elements[data-elementor-device-mode=widescreen] .elementor-edit-area-active .elementor-hidden-widescreen.e-con > .elementor-element-overlay, +.e-preview--show-hidden-elements[data-elementor-device-mode=desktop] .elementor-edit-area-active .elementor-hidden-desktop.elementor-section > .elementor-element-overlay, +.e-preview--show-hidden-elements[data-elementor-device-mode=desktop] .elementor-edit-area-active .elementor-hidden-desktop.e-con > .elementor-element-overlay, +.e-preview--show-hidden-elements[data-elementor-device-mode=laptop] .elementor-edit-area-active .elementor-hidden-laptop.elementor-section > .elementor-element-overlay, +.e-preview--show-hidden-elements[data-elementor-device-mode=laptop] .elementor-edit-area-active .elementor-hidden-laptop.e-con > .elementor-element-overlay, +.e-preview--show-hidden-elements[data-elementor-device-mode=tablet_extra] .elementor-edit-area-active .elementor-hidden-tablet_extra.elementor-section > .elementor-element-overlay, +.e-preview--show-hidden-elements[data-elementor-device-mode=tablet_extra] .elementor-edit-area-active .elementor-hidden-tablet_extra.e-con > .elementor-element-overlay, +.e-preview--show-hidden-elements[data-elementor-device-mode=tablet] .elementor-edit-area-active .elementor-hidden-tablet.elementor-section > .elementor-element-overlay, +.e-preview--show-hidden-elements[data-elementor-device-mode=tablet] .elementor-edit-area-active .elementor-hidden-tablet.e-con > .elementor-element-overlay, +.e-preview--show-hidden-elements[data-elementor-device-mode=mobile_extra] .elementor-edit-area-active .elementor-hidden-mobile_extra.elementor-section > .elementor-element-overlay, +.e-preview--show-hidden-elements[data-elementor-device-mode=mobile_extra] .elementor-edit-area-active .elementor-hidden-mobile_extra.e-con > .elementor-element-overlay, +.e-preview--show-hidden-elements[data-elementor-device-mode=mobile] .elementor-edit-area-active .elementor-hidden-mobile.elementor-section > .elementor-element-overlay, +.e-preview--show-hidden-elements[data-elementor-device-mode=mobile] .elementor-edit-area-active .elementor-hidden-mobile.e-con > .elementor-element-overlay { + background-color: var(--e-a-bg-hover); + mix-blend-mode: color; +} +.e-preview--show-hidden-elements[data-elementor-device-mode=widescreen] .elementor-edit-area-active .elementor-hidden-widescreen.elementor-section:before, .e-preview--show-hidden-elements[data-elementor-device-mode=widescreen] .elementor-edit-area-active .elementor-hidden-widescreen.e-con:before, +.e-preview--show-hidden-elements[data-elementor-device-mode=desktop] .elementor-edit-area-active .elementor-hidden-desktop.elementor-section:before, +.e-preview--show-hidden-elements[data-elementor-device-mode=desktop] .elementor-edit-area-active .elementor-hidden-desktop.e-con:before, +.e-preview--show-hidden-elements[data-elementor-device-mode=laptop] .elementor-edit-area-active .elementor-hidden-laptop.elementor-section:before, +.e-preview--show-hidden-elements[data-elementor-device-mode=laptop] .elementor-edit-area-active .elementor-hidden-laptop.e-con:before, +.e-preview--show-hidden-elements[data-elementor-device-mode=tablet_extra] .elementor-edit-area-active .elementor-hidden-tablet_extra.elementor-section:before, +.e-preview--show-hidden-elements[data-elementor-device-mode=tablet_extra] .elementor-edit-area-active .elementor-hidden-tablet_extra.e-con:before, +.e-preview--show-hidden-elements[data-elementor-device-mode=tablet] .elementor-edit-area-active .elementor-hidden-tablet.elementor-section:before, +.e-preview--show-hidden-elements[data-elementor-device-mode=tablet] .elementor-edit-area-active .elementor-hidden-tablet.e-con:before, +.e-preview--show-hidden-elements[data-elementor-device-mode=mobile_extra] .elementor-edit-area-active .elementor-hidden-mobile_extra.elementor-section:before, +.e-preview--show-hidden-elements[data-elementor-device-mode=mobile_extra] .elementor-edit-area-active .elementor-hidden-mobile_extra.e-con:before, +.e-preview--show-hidden-elements[data-elementor-device-mode=mobile] .elementor-edit-area-active .elementor-hidden-mobile.elementor-section:before, +.e-preview--show-hidden-elements[data-elementor-device-mode=mobile] .elementor-edit-area-active .elementor-hidden-mobile.e-con:before { + content: ""; + display: block; + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + background-color: rgba(255, 255, 255, 0.6); + z-index: 9997; +} +.e-preview--show-hidden-elements[data-elementor-device-mode=widescreen] .elementor-edit-area-active .elementor-hidden-widescreen.e-con, +.e-preview--show-hidden-elements[data-elementor-device-mode=desktop] .elementor-edit-area-active .elementor-hidden-desktop.e-con, +.e-preview--show-hidden-elements[data-elementor-device-mode=laptop] .elementor-edit-area-active .elementor-hidden-laptop.e-con, +.e-preview--show-hidden-elements[data-elementor-device-mode=tablet_extra] .elementor-edit-area-active .elementor-hidden-tablet_extra.e-con, +.e-preview--show-hidden-elements[data-elementor-device-mode=tablet] .elementor-edit-area-active .elementor-hidden-tablet.e-con, +.e-preview--show-hidden-elements[data-elementor-device-mode=mobile_extra] .elementor-edit-area-active .elementor-hidden-mobile_extra.e-con, +.e-preview--show-hidden-elements[data-elementor-device-mode=mobile] .elementor-edit-area-active .elementor-hidden-mobile.e-con { + display: var(--display); +} +.e-preview--show-hidden-elements[data-elementor-device-mode=widescreen] .elementor-edit-area-active .elementor-hidden-widescreen.elementor-inner-section .elementor-container, +.e-preview--show-hidden-elements[data-elementor-device-mode=desktop] .elementor-edit-area-active .elementor-hidden-desktop.elementor-inner-section .elementor-container, +.e-preview--show-hidden-elements[data-elementor-device-mode=laptop] .elementor-edit-area-active .elementor-hidden-laptop.elementor-inner-section .elementor-container, +.e-preview--show-hidden-elements[data-elementor-device-mode=tablet_extra] .elementor-edit-area-active .elementor-hidden-tablet_extra.elementor-inner-section .elementor-container, +.e-preview--show-hidden-elements[data-elementor-device-mode=tablet] .elementor-edit-area-active .elementor-hidden-tablet.elementor-inner-section .elementor-container, +.e-preview--show-hidden-elements[data-elementor-device-mode=mobile_extra] .elementor-edit-area-active .elementor-hidden-mobile_extra.elementor-inner-section .elementor-container, +.e-preview--show-hidden-elements[data-elementor-device-mode=mobile] .elementor-edit-area-active .elementor-hidden-mobile.elementor-inner-section .elementor-container { + width: 100%; +} +.e-preview--show-hidden-elements[data-elementor-device-mode=widescreen] .elementor-edit-area-active .elementor-hidden-widescreen > .elementor-widget-container, .e-preview--show-hidden-elements[data-elementor-device-mode=widescreen] .elementor-edit-area-active .elementor-hidden-widescreen > .elementor-widget-wrap, +.e-preview--show-hidden-elements[data-elementor-device-mode=desktop] .elementor-edit-area-active .elementor-hidden-desktop > .elementor-widget-container, +.e-preview--show-hidden-elements[data-elementor-device-mode=desktop] .elementor-edit-area-active .elementor-hidden-desktop > .elementor-widget-wrap, +.e-preview--show-hidden-elements[data-elementor-device-mode=laptop] .elementor-edit-area-active .elementor-hidden-laptop > .elementor-widget-container, +.e-preview--show-hidden-elements[data-elementor-device-mode=laptop] .elementor-edit-area-active .elementor-hidden-laptop > .elementor-widget-wrap, +.e-preview--show-hidden-elements[data-elementor-device-mode=tablet_extra] .elementor-edit-area-active .elementor-hidden-tablet_extra > .elementor-widget-container, +.e-preview--show-hidden-elements[data-elementor-device-mode=tablet_extra] .elementor-edit-area-active .elementor-hidden-tablet_extra > .elementor-widget-wrap, +.e-preview--show-hidden-elements[data-elementor-device-mode=tablet] .elementor-edit-area-active .elementor-hidden-tablet > .elementor-widget-container, +.e-preview--show-hidden-elements[data-elementor-device-mode=tablet] .elementor-edit-area-active .elementor-hidden-tablet > .elementor-widget-wrap, +.e-preview--show-hidden-elements[data-elementor-device-mode=mobile_extra] .elementor-edit-area-active .elementor-hidden-mobile_extra > .elementor-widget-container, +.e-preview--show-hidden-elements[data-elementor-device-mode=mobile_extra] .elementor-edit-area-active .elementor-hidden-mobile_extra > .elementor-widget-wrap, +.e-preview--show-hidden-elements[data-elementor-device-mode=mobile] .elementor-edit-area-active .elementor-hidden-mobile > .elementor-widget-container, +.e-preview--show-hidden-elements[data-elementor-device-mode=mobile] .elementor-edit-area-active .elementor-hidden-mobile > .elementor-widget-wrap { + filter: opacity(0.4) saturate(0); +} +.e-preview--show-hidden-elements[data-elementor-device-mode=widescreen] .elementor-edit-area-active .elementor-hidden-widescreen.elementor-edit-hidden, +.e-preview--show-hidden-elements[data-elementor-device-mode=desktop] .elementor-edit-area-active .elementor-hidden-desktop.elementor-edit-hidden, +.e-preview--show-hidden-elements[data-elementor-device-mode=laptop] .elementor-edit-area-active .elementor-hidden-laptop.elementor-edit-hidden, +.e-preview--show-hidden-elements[data-elementor-device-mode=tablet_extra] .elementor-edit-area-active .elementor-hidden-tablet_extra.elementor-edit-hidden, +.e-preview--show-hidden-elements[data-elementor-device-mode=tablet] .elementor-edit-area-active .elementor-hidden-tablet.elementor-edit-hidden, +.e-preview--show-hidden-elements[data-elementor-device-mode=mobile_extra] .elementor-edit-area-active .elementor-hidden-mobile_extra.elementor-edit-hidden, +.e-preview--show-hidden-elements[data-elementor-device-mode=mobile] .elementor-edit-area-active .elementor-hidden-mobile.elementor-edit-hidden { + display: none; +} + +.elementor-editor-section-settings, +.elementor-editor-container-settings { + height: 24px; + top: 1px; + left: 50%; + transform: translateX(-50%) translateY(-100%); + background-color: var(--e-p-border-section); + border-start-start-radius: 5px; + border-start-end-radius: 5px; + border-end-start-radius: 0; + border-end-end-radius: 0; +} +.elementor-editor-section-settings i.eicon-handle, +.elementor-editor-container-settings i.eicon-handle { + font-size: 16px; +} +.elementor-editor-section-settings .elementor-editor-element-setting:hover, +.elementor-editor-container-settings .elementor-editor-element-setting:hover { + background-color: var(--e-p-border-section-hover); +} +.elementor-editor-section-settings .elementor-editor-element-setting:first-child, +.elementor-editor-container-settings .elementor-editor-element-setting:first-child { + border-start-start-radius: 5px; + border-start-end-radius: 0; + border-end-start-radius: 0; + border-end-end-radius: 0; +} +.elementor-editor-section-settings .elementor-editor-element-setting:first-child:before, +.elementor-editor-container-settings .elementor-editor-element-setting:first-child:before { + content: ""; + position: absolute; + top: 2px; + left: calc(100% - 1px); + border-block-start: 22px solid transparent; + border-block-end: 0 none transparent; + border-inline-start: 0 none transparent; + border-inline-end: 12px solid var(--e-p-border-section); + transition: var(--e-a-transition-hover); +} +.elementor-editor-section-settings .elementor-editor-element-setting:first-child:hover:before, +.elementor-editor-container-settings .elementor-editor-element-setting:first-child:hover:before { + border-inline-end-color: var(--e-p-border-section-hover); +} +.elementor-editor-section-settings .elementor-editor-element-setting:last-child, +.elementor-editor-container-settings .elementor-editor-element-setting:last-child { + border-start-start-radius: 0; + border-start-end-radius: 5px; + border-end-start-radius: 0; + border-end-end-radius: 0; +} +.elementor-editor-section-settings .elementor-editor-element-setting:last-child:after, +.elementor-editor-container-settings .elementor-editor-element-setting:last-child:after { + content: ""; + position: absolute; + top: 2px; + right: calc(100% - 1px); + border-block-start: 22px solid transparent; + border-block-end: 0 none transparent; + border-inline-start: 12px solid var(--e-p-border-section); + border-inline-end: 0 none transparent; + transition: var(--e-a-transition-hover); +} +.elementor-editor-section-settings .elementor-editor-element-setting:last-child:hover:after, +.elementor-editor-container-settings .elementor-editor-element-setting:last-child:hover:after { + border-inline-start-color: var(--e-p-border-section-hover); +} + +.e-handles-inside > .elementor-element-overlay > .elementor-editor-element-settings, +.elementor-section--handles-inside > .elementor-element-overlay > .elementor-editor-element-settings { + transform: translateX(-50%); + border-start-start-radius: 0; + border-start-end-radius: 0; + border-end-start-radius: 5px; + border-end-end-radius: 5px; +} +.e-handles-inside > .elementor-element-overlay > .elementor-editor-element-settings .elementor-editor-element-setting:first-child, +.elementor-section--handles-inside > .elementor-element-overlay > .elementor-editor-element-settings .elementor-editor-element-setting:first-child { + border-start-start-radius: 0; + border-start-end-radius: 0; + border-end-start-radius: 5px; + border-end-end-radius: 0; +} +.e-handles-inside > .elementor-element-overlay > .elementor-editor-element-settings .elementor-editor-element-setting:first-child:before, +.elementor-section--handles-inside > .elementor-element-overlay > .elementor-editor-element-settings .elementor-editor-element-setting:first-child:before { + top: 0; + border-block-start: 0 none transparent; + border-block-end: 22px solid transparent; + border-inline-start: 0 none transparent; + border-inline-end: 12px solid var(--e-p-border-section); + transition: var(--e-a-transition-hover); +} +.e-handles-inside > .elementor-element-overlay > .elementor-editor-element-settings .elementor-editor-element-setting:last-child, +.elementor-section--handles-inside > .elementor-element-overlay > .elementor-editor-element-settings .elementor-editor-element-setting:last-child { + border-start-start-radius: 0; + border-start-end-radius: 0; + border-end-start-radius: 0; + border-end-end-radius: 5px; +} +.e-handles-inside > .elementor-element-overlay > .elementor-editor-element-settings .elementor-editor-element-setting:last-child:after, +.elementor-section--handles-inside > .elementor-element-overlay > .elementor-editor-element-settings .elementor-editor-element-setting:last-child:after { + top: 0; + border-block-start: 0 none transparent; + border-block-end: 22px solid transparent; + border-inline-start: 12px solid var(--e-p-border-section); + border-inline-end: 0 none transparent; + transition: var(--e-a-transition-hover); +} + +.elementor-column > .elementor-element-overlay { + right: 0; + bottom: 0; +} +.elementor-column > .elementor-element-overlay:after { + position: absolute; + left: 0; + right: 0; + top: 0; + bottom: 0; + outline: 1px dashed var(--e-p-border-column); +} +.elementor-column:hover > .elementor-element-overlay:after { + content: ""; +} +.elementor-column.elementor-element-editable > .elementor-element-overlay:after { + content: ""; + outline: 2px solid var(--e-p-border-column); +} +.elementor-column.elementor-dragging-on-child > .elementor-element-overlay { + border: 1px solid var(--e-p-draggable-color); +} +.elementor-column.elementor-dragging-on-child > .elementor-element-overlay:after { + display: none; +} +.elementor-column > .ui-resizable-e, .elementor-column > .ui-resizable-w { + cursor: col-resize; + width: 7px; + position: absolute; + left: -5px; + top: 0; + height: 100%; +} +.elementor-column:last-of-type > .ui-resizable-e, .elementor-column:last-of-type > .ui-resizable-w { + display: none !important; +} +@media (max-width: 1024px) { + .elementor-column > .ui-resizable-e, .elementor-column > .ui-resizable-w { + display: none !important; + } +} + +.elementor-editor-column-settings { + top: -1px; + right: -1px; + border-start-start-radius: 0; + border-start-end-radius: 0; + border-end-start-radius: 0; + border-end-end-radius: 3px; + overflow: hidden; +} +.elementor-editor-column-settings .elementor-editor-element-setting { + background-color: var(--e-p-border-column); +} +.elementor-editor-column-settings .elementor-editor-element-setting:hover { + background-color: var(--e-p-border-column-hover); +} + +.elementor-column-placeholder { + position: relative; +} +.elementor-column-placeholder:before, .elementor-column-placeholder:after { + content: ""; + position: absolute; + top: 10px; + bottom: 10px; + right: 10px; + left: 10px; +} +.elementor-column-placeholder:before { + border: 1px solid var(--e-p-border-column); +} +.elementor-column-placeholder:after { + border: 1px dashed var(--e-a-color-white); +} + +.elementor-column-percents-tooltip { + position: absolute; + display: none; + pointer-events: none; + top: 50%; + transform: translateY(-50%); + color: #fff; + font-size: 10px; + background-color: var(--e-p-border-column); + width: 40px; + padding: 3.5px 0; + text-align: center; + z-index: 1; + line-height: 1; +} +.elementor-column-percents-tooltip:after { + content: ""; + position: absolute; + width: 0; + height: 0; + border: 8.5px solid transparent; + top: 0; +} +.elementor-column-percents-tooltip[data-side=left] { + border-radius: 3px 0 0 3px; + right: 15px; +} +.elementor-column-percents-tooltip[data-side=left]:after { + left: 100%; + border-left-color: var(--e-p-border-column); + border-right-width: 0; +} +.elementor-column-percents-tooltip[data-side=right] { + border-radius: 0 3px 3px 0; + left: 15px; +} +.elementor-column-percents-tooltip[data-side=right]:after { + right: 100%; + border-right-color: var(--e-p-border-column); + border-left-width: 0; +} + +.elementor-editor-widget-settings { + z-index: 2; + top: -1px; + left: -1px; + flex-direction: row-reverse; + border-start-start-radius: 0; + border-start-end-radius: 0; + border-end-start-radius: 3px; + border-end-end-radius: 0; + overflow: hidden; +} +.elementor-editor-widget-settings .elementor-editor-element-setting { + background-color: var(--e-p-border-widget); +} +.elementor-editor-widget-settings .elementor-editor-element-setting:hover { + background-color: var(--e-p-border-widget-hover); +} + +.e-widget-pro-promotion .elementor-widget-container { + border: 2px dashed var(--e-a-border-color-bold); + background-color: var(--e-a-color-white); + padding: 20px; +} +.e-widget-pro-promotion .e-container { + max-width: 600px; + margin: auto; +} +.e-widget-pro-promotion .e-badge { + border: 1px solid var(--e-a-color-accent); + color: var(--e-a-color-accent); + background: var(--e-a-color-white); + border-radius: 100px; + padding: 4px 12px; + font-size: 0.8em; +} +.e-widget-pro-promotion p { + margin-block-start: 1em; + margin-block-end: 1em; + text-align: center; +} +.e-widget-pro-promotion p img { + display: block; + margin: 0 auto 20px; +} +.e-widget-pro-promotion .e-actions { + display: flex; + justify-content: center; + gap: 10px; +} +.e-widget-pro-promotion .e-btn { + font-size: 14px; + font-weight: 500; + line-height: 1.2; + padding: 8px 16px; + border-radius: var(--e-a-border-radius); + background-color: var(--e-a-btn-bg-accent); + color: var(--e-a-btn-color-invert); + transition: var(--e-a-transition-hover); +} +.e-widget-pro-promotion .e-btn:hover, .e-widget-pro-promotion .e-btn:focus { + background-color: var(--e-a-btn-bg-accent-hover); + color: var(--e-a-btn-color-invert); +} +.e-widget-pro-promotion .e-btn:active { + background-color: var(--e-a-btn-bg-accent-active); +} +.e-widget-pro-promotion .e-btn.e-btn-txt, .e-widget-pro-promotion .dialog-type-confirm .dialog-buttons-wrapper .e-btn.dialog-button.dialog-cancel, .dialog-type-confirm .dialog-buttons-wrapper .e-widget-pro-promotion .e-btn.dialog-button.dialog-cancel, +.e-widget-pro-promotion .dialog-type-alert .dialog-buttons-wrapper .e-btn.dialog-button.dialog-cancel, +.dialog-type-alert .dialog-buttons-wrapper .e-widget-pro-promotion .e-btn.dialog-button.dialog-cancel { + background: transparent; + color: var(--e-a-color-txt); +} +.e-widget-pro-promotion .e-btn.e-btn-txt:hover, .e-widget-pro-promotion .dialog-type-confirm .dialog-buttons-wrapper .e-btn.dialog-button.dialog-cancel:hover, .dialog-type-confirm .dialog-buttons-wrapper .e-widget-pro-promotion .e-btn.dialog-button.dialog-cancel:hover, +.e-widget-pro-promotion .dialog-type-alert .dialog-buttons-wrapper .e-btn.dialog-button.dialog-cancel:hover, +.dialog-type-alert .dialog-buttons-wrapper .e-widget-pro-promotion .e-btn.dialog-button.dialog-cancel:hover, .e-widget-pro-promotion .e-btn.e-btn-txt:focus, .e-widget-pro-promotion .dialog-type-confirm .dialog-buttons-wrapper .e-btn.dialog-button.dialog-cancel:focus, .dialog-type-confirm .dialog-buttons-wrapper .e-widget-pro-promotion .e-btn.dialog-button.dialog-cancel:focus, +.e-widget-pro-promotion .dialog-type-alert .dialog-buttons-wrapper .e-btn.dialog-button.dialog-cancel:focus, +.dialog-type-alert .dialog-buttons-wrapper .e-widget-pro-promotion .e-btn.dialog-button.dialog-cancel:focus { + background: var(--e-a-bg-hover); + color: var(--e-a-color-txt-hover); +} + +.elementor-section > .elementor-element-overlay, +.e-con > .elementor-element-overlay { + right: 0; + bottom: 0; +} +.elementor-section > .elementor-element-overlay:after, +.e-con > .elementor-element-overlay:after { + position: absolute; + left: 1px; + right: 1px; + top: 1px; + bottom: 1px; + outline: 1px solid var(--e-p-border-con); + animation: section-outline 0.75s; +} +.elementor-section:hover > .elementor-element-overlay:after, +.e-con:hover > .elementor-element-overlay:after { + content: ""; +} +.elementor-section.elementor-element-editable > .elementor-element-overlay:after, +.e-con.elementor-element-editable > .elementor-element-overlay:after { + content: ""; + outline-width: 2px; +} + +.e-con .e-con-inner .e-con > .elementor-element-overlay:after { + outline: 1px dashed var(--e-p-border-con-in); +} +.e-con .e-con-inner .e-con.elementor-element-editable > .elementor-element-overlay:after { + outline: 2px solid var(--e-p-border-con-in); +} +.e-con .elementor-empty-view { + position: relative; + width: 100%; + height: 100%; + min-height: 100px; +} +.e-con .elementor-empty-view .elementor-first-add { + width: auto; + height: auto; + inset: 0; +} +.e-con:not(.e-grid) .elementor-empty-view { + min-height: var(--min-height, 100px); +} +.e-con.e-grid .elementor-empty-view { + min-width: 100px; +} +.e-con .elementor-widget-placeholder { + --size: 10px; + --margin-start: calc( -1 * var( --size ) ); + --margin-end: calc( -2 * var( --size ) ); + flex-shrink: 0; + align-self: stretch; + z-index: 1; + pointer-events: none; +} +.e-con.e-con--row > .elementor-widget-placeholder, .e-con.e-con--row > .e-con-inner > .elementor-widget-placeholder { + position: relative; + z-index: 9999; + width: var(--size); + margin-inline-start: var(--margin-start); + height: auto; + min-height: 100%; + animation-name: dnd-placeholder-widget-vertical; + animation-fill-mode: both; +} +.e-con.e-con--row[data-nesting-level]:not([data-nesting-level="0"]) > .elementor-widget-placeholder, .e-con.e-con--row[data-nesting-level]:not([data-nesting-level="0"]) > .e-con-inner > .elementor-widget-placeholder { + margin-inline-end: 0; + margin-inline-start: calc(var(--margin-start) + var(--margin-end)); +} +.e-con.e-con--row[data-nesting-level]:not([data-nesting-level="0"]) > :not(.elementor-element) + .elementor-widget-placeholder, .e-con.e-con--row[data-nesting-level]:not([data-nesting-level="0"]) > .e-con-inner > :not(.elementor-element) + .elementor-widget-placeholder { + margin-inline-end: var(--margin-end); + margin-inline-start: var(--margin-start); +} +.e-con.e-grid.e-con--row .elementor-widget-placeholder.e-dragging-right, .e-con.e-grid.e-con--row .elementor-widget-placeholder.e-dragging-left, .e-con.e-grid.e-con--row > .e-con-inner .elementor-widget-placeholder.e-dragging-right, .e-con.e-grid.e-con--row > .e-con-inner .elementor-widget-placeholder.e-dragging-left { + position: absolute; + width: var(--size); + height: 100%; + top: 0; + animation: grow-in-width 0.15s forwards; +} +.e-con.e-grid.e-con--row .elementor-widget-placeholder.e-dragging-right, .e-con.e-grid.e-con--row > .e-con-inner .elementor-widget-placeholder.e-dragging-right { + right: 0; + left: auto; +} +.e-con.e-grid.e-con--row .elementor-widget-placeholder.e-dragging-left, .e-con.e-grid.e-con--row > .e-con-inner .elementor-widget-placeholder.e-dragging-left { + left: 0; + right: auto; +} +.e-con.e-con--column > .elementor-widget-placeholder, .e-con.e-con--column > .e-con-inner > .elementor-widget-placeholder { + height: var(--size); + margin-block-start: var(--margin-start); + margin-block-end: var(--margin-end); + animation-name: dnd-placeholder-widget-horizontal; +} +.e-con.e-con--column > .elementor-widget-placeholder:nth-last-child(2) { + margin-block-start: calc(2 * var(--margin-start)); + --margin-end: 0; +} +.e-con.e-con--column > .e-con-inner > .elementor-widget-placeholder:last-child { + --margin-end: 0; +} +.e-con .elementor-sortable-helper { + height: 84px; + width: 125px; + z-index: -1; +} +.e-con > .e-con > .elementor-element-overlay .elementor-editor-element-setting, .e-con-inner > .e-con > .elementor-element-overlay .elementor-editor-element-setting, .elementor-widget .e-con > .elementor-element-overlay .elementor-editor-element-setting { + position: relative; + background-color: var(--e-p-border-con-in); +} +.e-con > .e-con > .elementor-element-overlay .elementor-editor-element-setting:hover, .e-con-inner > .e-con > .elementor-element-overlay .elementor-editor-element-setting:hover, .elementor-widget .e-con > .elementor-element-overlay .elementor-editor-element-setting:hover { + background-color: var(--e-p-border-con-in-hover); +} +.e-con > .e-con > .elementor-element-overlay .elementor-editor-element-setting.elementor-editor-element-add, .e-con > .e-con > .elementor-element-overlay .elementor-editor-element-setting.elementor-editor-element-edit + .elementor-editor-element-remove, .e-con > .e-con > .elementor-element-overlay .elementor-editor-element-setting:first-child::before, .e-con > .e-con > .elementor-element-overlay .elementor-editor-element-setting:last-child::after, .e-con-inner > .e-con > .elementor-element-overlay .elementor-editor-element-setting.elementor-editor-element-add, .e-con-inner > .e-con > .elementor-element-overlay .elementor-editor-element-setting.elementor-editor-element-edit + .elementor-editor-element-remove, .e-con-inner > .e-con > .elementor-element-overlay .elementor-editor-element-setting:first-child::before, .e-con-inner > .e-con > .elementor-element-overlay .elementor-editor-element-setting:last-child::after, .elementor-widget .e-con > .elementor-element-overlay .elementor-editor-element-setting.elementor-editor-element-add, .elementor-widget .e-con > .elementor-element-overlay .elementor-editor-element-setting.elementor-editor-element-edit + .elementor-editor-element-remove, .elementor-widget .e-con > .elementor-element-overlay .elementor-editor-element-setting:first-child::before, .elementor-widget .e-con > .elementor-element-overlay .elementor-editor-element-setting:last-child::after { + display: none; +} +.e-con > .e-con > .elementor-element-overlay .elementor-editor-element-setting:not(.elementor-editor-element-edit), .e-con-inner > .e-con > .elementor-element-overlay .elementor-editor-element-setting:not(.elementor-editor-element-edit), .elementor-widget .e-con > .elementor-element-overlay .elementor-editor-element-setting:not(.elementor-editor-element-edit) { + margin-inline-start: -25px; + z-index: -1; + transition: 0.3s all; + will-change: margin-inline-start; +} +.e-con > .e-con > .elementor-element-overlay > .elementor-editor-element-settings:hover > :is(.elementor-editor-element-duplicate, .elementor-editor-element-remove), .e-con-inner > .e-con > .elementor-element-overlay > .elementor-editor-element-settings:hover > :is(.elementor-editor-element-duplicate, .elementor-editor-element-remove), .elementor-widget .e-con > .elementor-element-overlay > .elementor-editor-element-settings:hover > :is(.elementor-editor-element-duplicate, .elementor-editor-element-remove) { + margin-inline-start: 0; +} +.e-con > .e-con > .elementor-element-overlay .elementor-editor-element-settings, .e-con-inner > .e-con > .elementor-element-overlay .elementor-editor-element-settings, .elementor-widget .e-con > .elementor-element-overlay .elementor-editor-element-settings { + inset: initial; + transform: none; + inset-inline-start: 0; + top: 0; + border-radius: 0; + border-end-end-radius: 3px; + height: auto; +} +.e-con > .e-con > .elementor-element-overlay .elementor-editor-element-settings i.eicon-handle::before, .e-con-inner > .e-con > .elementor-element-overlay .elementor-editor-element-settings i.eicon-handle::before, .elementor-widget .e-con > .elementor-element-overlay .elementor-editor-element-settings i.eicon-handle::before { + content: "\e9b4"; + font-size: 20px; + display: block; + padding: 2px; +} + +body.rtl .e-con.e-grid.e-con--row .elementor-widget-placeholder.e-dragging-right, body.rtl .e-con.e-grid.e-con--row > .e-con-inner .elementor-widget-placeholder.e-dragging-right { + left: 0; + right: auto; +} +body.rtl .e-con.e-grid.e-con--row .elementor-widget-placeholder.e-dragging-left, body.rtl .e-con.e-grid.e-con--row > .e-con-inner .elementor-widget-placeholder.e-dragging-left { + right: 0; + left: auto; +} + +@keyframes dnd-placeholder-widget-vertical { + 0% { + transform-origin: 0 50%; + transform: translateX(50%) scaleX(0); + opacity: 0; + } + 100% { + transform-origin: 0 50%; + transform: translateX(50%) scaleX(1); + opacity: 0.9; + } +} +@keyframes dnd-placeholder-widget-horizontal { + 0% { + transform-origin: 50% 0; + transform: scaleY(0); + opacity: 0; + } + 100% { + transform-origin: 50% 0; + transform: scaleY(1); + opacity: 0.9; + } +} +@keyframes grow-in-width { + from { + width: 0; + } + 50% { + width: calc(var(--size) / 2); + } + to { + width: var(--size); + } +} +.e-con-select-preset { + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + gap: 25px; +} +.e-con-select-preset[data-view=choose-preset] > *:not(.e-con-select-preset__inner) { + display: none; +} +.e-con-select-preset[data-view=drop-area] > *:not(.elementor-first-add) { + display: none; +} +.e-con-select-preset__title { + font-family: var(--e-a-font-family); + font-size: 15px; + font-weight: 400; + color: var(--e-a-color-txt); +} +.e-con-select-preset__list { + display: flex; + gap: 20px; + align-items: center; + justify-content: center; + flex-wrap: wrap; + max-width: 650px; +} +.e-con-select-preset__list .e-con-preset { + cursor: pointer; + flex-basis: 90px; +} +.e-con-select-preset__list .e-con-preset svg { + width: 100%; + height: auto; +} +.e-con-select-preset__list .e-con-preset svg:not(.exclude-rtl-scale) { + transform: scaleX(-1); +} +.e-con-select-preset__list .e-con-preset path { + fill: var(--e-a-color-white); +} +.e-con-select-preset__list .e-con-preset rect { + fill: var(--e-a-bg-active-bold); + transition: 0.3s all; +} +.e-con-select-preset__list .e-con-preset:hover rect { + fill: var(--e-a-color-txt); +} +.e-con-select-preset__list .e-con-preset[data-preset=r100] { + transform: scaleX(-1); +} +.e-con-shared-styles { + font-family: var(--e-a-font-family); + line-height: 1; + color: var(--e-a-color-txt); + min-height: 159px; + overflow: hidden; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + gap: 25px; +} +.e-con-select-type__title { + font-size: 15px; + font-weight: 400; +} +.e-con-select-type__icons { + display: flex; + justify-content: center; + flex-wrap: wrap; + gap: 40px; +} +.e-con-select-type__icons__icon { + cursor: pointer; +} +.e-con-select-type__icons__icon svg { + margin-block-end: 10px; + width: 85px; +} +.e-con-select-type__icons__icon svg:hover rect { + fill: var(--e-a-color-txt); +} +.e-con-select-type__icons__icon svg:hover path { + stroke: var(--e-a-color-white); +} +.e-con-select-type__icons__icon__subtitle { + font-size: 14px; + font-weight: 500; +} +.e-con-select-preset-grid__title { + font-size: 15px; + font-weight: 400; +} +.e-con-select-preset-grid__list { + display: flex; + justify-content: center; + flex-wrap: wrap; + gap: 20px; +} +.e-con-select-preset-grid__list svg { + cursor: pointer; +} +.e-con-select-preset-grid__list svg:hover rect { + fill: var(--e-a-color-txt); +} +.e-con-select-preset-grid__list svg:hover path { + stroke: var(--e-a-color-white); +} +.e-con .ui-resizable-e { + right: 0; +} +.e-con .ui-resizable-w { + left: 0; +} +/*# sourceMappingURL=editor-preview-rtl.css.map */ \ No newline at end of file diff --git a/wp-content/plugins/elementor/assets/css/editor-preview-rtl.min.css b/wp-content/plugins/elementor/assets/css/editor-preview-rtl.min.css new file mode 100644 index 0000000..ba08201 --- /dev/null +++ b/wp-content/plugins/elementor/assets/css/editor-preview-rtl.min.css @@ -0,0 +1,2 @@ +/*! elementor - v3.20.0 - 26-03-2024 */ +.dialog-widget-content{background-color:var(--e-a-bg-default);position:absolute;border-radius:3px;box-shadow:2px 8px 23px 3px rgba(0,0,0,.2);overflow:hidden}.dialog-message{line-height:1.5;box-sizing:border-box}.dialog-close-button{cursor:pointer;position:absolute;margin-block-start:15px;left:15px;color:var(--e-a-color-txt);font-size:15px;line-height:1;transition:var(--e-a-transition-hover)}.dialog-close-button:hover{color:var(--e-a-color-txt-hover)}.dialog-prevent-scroll{overflow:hidden;max-height:100vh}.dialog-type-lightbox{position:fixed;height:100%;width:100%;bottom:0;left:0;background-color:rgba(0,0,0,.8);z-index:9999;-webkit-user-select:none;-moz-user-select:none;user-select:none}.elementor-editor-active .elementor-popup-modal{background-color:initial}.dialog-type-alert .dialog-widget-content,.dialog-type-confirm .dialog-widget-content{margin:auto;width:400px;padding:20px}.dialog-type-alert .dialog-header,.dialog-type-confirm .dialog-header{font-size:15px;font-weight:500}.dialog-type-alert .dialog-header:after,.dialog-type-confirm .dialog-header:after{content:"";display:block;border-block-end:var(--e-a-border);padding-block-end:10px;margin-block-end:10px;margin-inline-start:-20px;margin-inline-end:-20px}.dialog-type-alert .dialog-message,.dialog-type-confirm .dialog-message{min-height:50px}.dialog-type-alert .dialog-buttons-wrapper,.dialog-type-confirm .dialog-buttons-wrapper{padding-block-start:10px;display:flex;justify-content:flex-end;gap:15px}.dialog-type-alert .dialog-buttons-wrapper .dialog-button,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button{font-size:12px;font-weight:500;line-height:1.2;padding:8px 16px;outline:none;border:none;border-radius:var(--e-a-border-radius);background-color:var(--e-a-btn-bg);color:var(--e-a-btn-color-invert);transition:var(--e-a-transition-hover)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:hover{border:none}.dialog-type-alert .dialog-buttons-wrapper .dialog-button:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:hover{background-color:var(--e-a-btn-bg-hover);color:var(--e-a-btn-color-invert)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button:active,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:active{background-color:var(--e-a-btn-bg-active)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button:not([disabled]),.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:not([disabled]){cursor:pointer}.dialog-type-alert .dialog-buttons-wrapper .dialog-button:disabled,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:disabled{background-color:var(--e-a-btn-bg-disabled);color:var(--e-a-btn-color-disabled)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button:not(.elementor-button-state) .elementor-state-icon,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:not(.elementor-button-state) .elementor-state-icon{display:none}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt{background:transparent;color:var(--e-a-color-txt)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel:hover,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt:hover{background:var(--e-a-bg-hover);color:var(--e-a-color-txt-hover)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel:disabled,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt:disabled,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel:disabled,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt:disabled{background:transparent;color:var(--e-a-color-txt-disabled)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt-border,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt-border{border:1px solid var(--e-a-color-txt-muted)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-success,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-success,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-success,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-success{background-color:var(--e-a-btn-bg-success)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-success:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-success:hover,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-success:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-success:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-success:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-success:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-success:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-success:hover{background-color:var(--e-a-btn-bg-success-hover)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-take_over,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-take_over,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary{background-color:var(--e-a-btn-bg-primary);color:var(--e-a-btn-color)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok:hover,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-take_over:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-take_over:hover,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-take_over:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-take_over:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary:hover{background-color:var(--e-a-btn-bg-primary-hover);color:var(--e-a-btn-color)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-ok,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-take_over,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary.dialog-cancel,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary.e-btn-txt,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-ok,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-take_over,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary.dialog-cancel,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary.e-btn-txt{background:transparent;color:var(--e-a-color-primary-bold)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over:hover,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel:hover,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-ok:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-ok:hover,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-take_over:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-take_over:hover,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary.dialog-cancel:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary.dialog-cancel:hover,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary.e-btn-txt:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary.e-btn-txt:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-ok:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-ok:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-take_over:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-take_over:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary.dialog-cancel:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary.dialog-cancel:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary.e-btn-txt:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary.e-btn-txt:hover{background:var(--e-a-bg-primary)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-accent,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.go-pro,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-accent,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.go-pro{background-color:var(--e-a-btn-bg-accent)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-accent:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-accent:hover,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.go-pro:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.go-pro:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-accent:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-accent:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.go-pro:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.go-pro:hover{background-color:var(--e-a-btn-bg-accent-hover)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-accent:active,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.go-pro:active,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-accent:active,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.go-pro:active{background-color:var(--e-a-btn-bg-accent-active)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-info,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-info,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-info,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-info{background-color:var(--e-a-btn-bg-info)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-info:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-info:hover,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-info:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-info:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-info:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-info:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-info:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-info:hover{background-color:var(--e-a-btn-bg-info-hover)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-warning,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-warning,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-warning,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-warning{background-color:var(--e-a-btn-bg-warning)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-warning:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-warning:hover,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-warning:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-warning:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-warning:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-warning:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-warning:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-warning:hover{background-color:var(--e-a-btn-bg-warning-hover)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-danger,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-danger,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-danger,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-danger{background-color:var(--e-a-btn-bg-danger)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-danger:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-danger:hover,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-danger:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-danger:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-danger:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-danger:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-danger:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-danger:hover{background-color:var(--e-a-btn-bg-danger-hover)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button i,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button i{margin-inline-end:5px}.dialog-type-alert .dialog-buttons-wrapper .dialog-button:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button:hover,.dialog-type-alert .dialog-buttons-wrapper .dialog-button:visited,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:visited{color:initial}.flatpickr-calendar{width:280px}.flatpickr-calendar .flatpickr-current-month span.cur-month{font-weight:300}.flatpickr-calendar .dayContainer{width:280px;min-width:280px;max-width:280px}.flatpickr-calendar .flatpickr-days{width:280px}.flatpickr-calendar .flatpickr-day{max-width:37px;height:37px;line-height:37px}.elementor-hidden{display:none}.elementor-screen-only,.screen-reader-text,.screen-reader-text span,.ui-helper-hidden-accessible{position:absolute;top:-10000em;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.elementor-clearfix:after{content:"";display:block;clear:both;width:0;height:0}.e-logo-wrapper{background:var(--e-a-bg-logo);display:inline-block;padding:.75em;border-radius:50%;line-height:1}.e-logo-wrapper i{color:var(--e-a-color-logo);font-size:1em}:root{--e-a-color-white:#fff;--e-a-color-black:#000;--e-a-color-logo:#fff;--e-a-color-primary:#f3bafd;--e-a-color-primary-bold:#d004d4;--e-a-color-secondary:#515962;--e-a-color-success:#0a875a;--e-a-color-danger:#dc2626;--e-a-color-info:#2563eb;--e-a-color-warning:#f59e0b;--e-a-color-accent:#93003f;--e-a-color-accent-promotion:#93003f;--e-a-color-global:#1dddbf;--e-a-bg-default:#fff;--e-a-bg-invert:#0c0d0e;--e-a-bg-hover:#f1f2f3;--e-a-bg-active:#e6e8ea;--e-a-bg-active-bold:#d5d8dc;--e-a-bg-loading:#f9fafa;--e-a-bg-logo:#000;--e-a-bg-primary:#fae8ff;--e-a-bg-secondary:#515962;--e-a-bg-success:#f2fdf5;--e-a-bg-info:#f0f7ff;--e-a-bg-danger:#fef1f4;--e-a-bg-warning:#fffbeb;--e-a-color-txt:#515962;--e-a-color-txt-muted:#818a96;--e-a-color-txt-disabled:#babfc5;--e-a-color-txt-invert:#fff;--e-a-color-txt-accent:#0c0d0e;--e-a-color-txt-hover:#3f444b;--e-a-color-txt-active:#0c0d0e;--e-a-border-color:#e6e8ea;--e-a-border-color-bold:#d5d8dc;--e-a-border-color-focus:#babfc5;--e-a-border-color-accent:#0c0d0e;--e-a-border:1px solid var(--e-a-border-color);--e-a-border-bold:1px solid var(--e-a-border-color-bold);--e-a-border-radius:3px;--e-a-btn-color:#0c0d0e;--e-a-btn-color-invert:var(--e-a-color-txt-invert);--e-a-btn-color-disabled:var(--e-a-color-txt-disabled);--e-a-btn-bg:#515962;--e-a-btn-bg-hover:#3a4046;--e-a-btn-bg-active:#23262a;--e-a-btn-bg-disabled:#d5d8dc;--e-a-btn-bg-primary:#f3bafd;--e-a-btn-bg-primary-hover:#f5d0fe;--e-a-btn-bg-primary-active:#f0abfc;--e-a-btn-bg-accent:#93003f;--e-a-btn-bg-accent-hover:#8f1a4c;--e-a-btn-bg-accent-active:#a93365;--e-a-btn-bg-info:#2563eb;--e-a-btn-bg-info-hover:#134cca;--e-a-btn-bg-info-active:#0e3b9c;--e-a-btn-bg-success:#0a875a;--e-a-btn-bg-success-hover:#06583a;--e-a-btn-bg-success-active:#03281b;--e-a-btn-bg-warning:#f59e0b;--e-a-btn-bg-warning-hover:#c57f08;--e-a-btn-bg-warning-active:#945f06;--e-a-btn-bg-danger:#dc2626;--e-a-btn-bg-danger-hover:#b21d1d;--e-a-btn-bg-danger-active:#861616;--e-a-dark-bg:#0c0d0e;--e-a-dark-color-txt:#9da5ae;--e-a-dark-color-txt-hover:#d5d8dc;--e-a-font-family:Roboto,Arial,Helvetica,sans-serif;--e-a-transition-hover:all .3s;--e-a-popover-shadow:0 2px 15px rgba(0,0,0,0.3);--e-a-dropdown-shadow:0 0 3px rgba(0,0,0,0.2)}.elementor-control-unit-1{width:27px}.elementor-control-unit-2{width:54px}.elementor-control-unit-3{width:81px}.elementor-control-unit-4{width:108px}.elementor-control-unit-5{max-width:400px;width:52%}.elementor-tags-list{display:none;position:absolute;width:260px;max-height:300px;overflow:auto;padding-block-end:5px;background-color:var(--e-a-bg-default);box-shadow:var(--e-a-popover-shadow);border:var(--e-a-border);border-radius:3px;z-index:10000}.elementor-tags-list__group-title{font-weight:700;font-size:12px;padding:10px 15px;display:flex;align-items:center}.elementor-tags-list__group-title .eicon-info-circle{padding-inline-end:5px;color:var(--e-a-color-primary-bold);font-size:14px}.elementor-tags-list__item{font-size:10px;padding:6px 15px;cursor:pointer}.elementor-tags-list__item:before{content:">";font-size:8px;padding-inline-end:5px}.elementor-tags-list__item:hover{background-color:var(--e-a-bg-hover)}.elementor-tags-list__teaser{border-block-start:2px solid var(--e-a-border-color);padding-block-start:4px;margin-block-start:4px}.elementor-tags-list__teaser-text{padding:2px 15px 8px;line-height:1.5;font-size:12px}.elementor-tags-list__teaser-link{color:var(--e-a-color-primary-bold);text-decoration:underline;font-style:italic;font-weight:700}.elementor-dynamic-cover{display:flex;align-items:center;width:100%;height:27px;box-sizing:border-box}.elementor-dynamic-cover__title{padding:0 8px;flex-grow:1;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.elementor-dynamic-cover__remove,.elementor-dynamic-cover__settings{cursor:pointer;transition:var(--e-a-transition-hover)}.elementor-dynamic-cover__remove:hover,.elementor-dynamic-cover__settings:hover{color:var(--e-a-color-txt-hover)}.elementor-control-type-wysiwyg .elementor-dynamic-cover{margin-block-start:10px}.elementor-tag-settings-popup{position:absolute;width:260px;background-color:var(--e-a-bg-default);border:var(--e-a-border);box-shadow:var(--e-a-popover-shadow);z-index:1}.elementor-tag-settings-popup:before{content:"";position:absolute;top:-20px;right:5px;border:10px solid transparent;border-block-end-color:var(--e-a-border-color)}.elementor-tag-settings-popup .elementor-control-type-section:first-child{margin:0}.elementor-tag-controls-stack-empty{background-color:var(--e-a-bg-default);padding:10px;font-size:13px;text-align:center}.elementor-control-dynamic input{border-start-start-radius:var(--e-a-border-radius);border-start-end-radius:0;border-end-end-radius:0;border-end-start-radius:var(--e-a-border-radius)}.elementor-control-dynamic-switcher{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;height:27px;cursor:pointer;border:var(--e-a-border-bold);background:var(--e-a-bg-default);border-inline-start-width:0;border-start-start-radius:0;border-start-end-radius:var(--e-a-border-radius);border-end-end-radius:var(--e-a-border-radius);border-end-start-radius:0;transition:var(--e-a-transition-hover)}.elementor-control-dynamic-switcher:hover{background-color:var(--e-a-bg-hover);color:var(--e-a-color-txt-hover)}.elementor-control-dynamic-switcher.e-control-tool{height:20px;border:0}.elementor-control-dynamic-switcher-wrapper{display:flex}.elementor-control-dynamic-switcher .eicon-database{font-size:12px}.elementor-control-dynamic-value .e-global__popover-toggle,.elementor-control-dynamic-value .elementor-control-dynamic-switcher,.elementor-control-dynamic-value .elementor-control-tag-area{display:none}.elementor-panel-box-content{padding:20px 20px 10px}.elementor-button{display:inline-block}.elementor-panel-alert{background-color:var(--e-a-bg-primary);padding:15px;border-inline-start:3px solid var(--e-a-color-primary);position:relative;font-size:12px;font-weight:300;font-style:italic;line-height:1.5;text-align:start;border-start-start-radius:0;border-start-end-radius:3px;border-end-start-radius:0;border-end-end-radius:3px}.elementor-panel-alert a{color:inherit}.elementor-panel-alert.elementor-panel-alert-info{border-color:var(--e-a-color-info);background:var(--e-a-bg-info)}.elementor-panel-alert.elementor-panel-alert-success{border-color:var(--e-a-color-success);background:var(--e-a-bg-success)}.elementor-panel-alert.elementor-panel-alert-warning{border-inline-start:3px solid var(--e-a-color-warning);background:var(--e-a-bg-warning)}.elementor-panel-alert.elementor-panel-alert-danger{border-color:var(--e-a-color-danger);background:var(--e-a-bg-danger)}.elementor-control-field-description,.elementor-descriptor{font-size:11px;font-style:italic;line-height:1.4;color:var(--e-a-color-txt-muted)}.elementor-controls-popover{display:none;position:absolute;box-shadow:var(--e-a-popover-shadow);border-radius:var(--e-a-border-radius);left:0;right:0;margin:-4px auto 5px;padding-block-start:15px;width:90%;z-index:10000;background-color:var(--e-a-bg-default)}.elementor-controls-popover:before{content:"";position:absolute;top:-16px;left:22px;border:8px solid transparent;border-block-end-color:var(--e-a-bg-default)}.elementor-controls-popover div.elementor-control{background-color:transparent}.elementor-controls-popover div.elementor-control:before{content:none}#elementor-panel-global .elementor-nerd-box .elementor-nerd-box-icon{margin-block-start:20px}.elementor-control{--control-title-size:12px;position:relative;padding:0 20px 15px}.elementor-control a{font-weight:500;text-decoration:none;border-block-end:1px dotted transparent;transition:all .3s ease-in-out}.elementor-control a:hover{border-block-end-color:inherit}.elementor-control .elementor-control-content{display:flex;flex-direction:column}.elementor-control .elementor-control-title{font-size:var(--control-title-size);line-height:1;margin-inline-end:5px}.elementor-control .elementor-control-title:empty{display:none}.elementor-control .elementor-control-spinner{display:flex;align-items:center}.elementor-control.elementor-control-type-divider{padding:0}.elementor-control.elementor-control-type-divider .elementor-control-content{border-width:0;border-block-start:var(--e-a-border);background-color:var(--e-a-bg-default);height:15px}.elementor-control.elementor-control-separator-before{padding-block-start:15px}.elementor-control.elementor-control-separator-before:before{content:"";position:absolute;height:1px;width:calc(100% - 40px);top:0;right:20px;background-color:var(--e-a-border-color)}.elementor-control.elementor-control-separator-after:after{content:"";position:absolute;height:1px;width:calc(100% - 40px);bottom:0;right:20px;background-color:var(--e-a-border-color)}.elementor-control.elementor-control-separator-after+.elementor-control-type-tabs~.elementor-control-separator-default,.elementor-control.elementor-control-separator-after:not(.elementor-hidden-control)~.elementor-control-separator-default{padding-block-start:15px}.elementor-control.elementor-control-deprecated,.elementor-control.elementor-control-deprecated .elementor-control-field-description{color:var(--e-a-color-warning)}.elementor-control.elementor-control-hidden-label>*>*>.elementor-control-title,.elementor-control.elementor-control-hidden-label>*>.elementor-control-title,.elementor-control.elementor-hidden-control{display:none}.elementor-control.elementor-control-type-heading .elementor-control-title{font-weight:700;margin:0}body:not(.elementor-device-desktop) .elementor-control.elementor-control-responsive-desktop,body:not(.elementor-device-laptop) .elementor-control.elementor-control-responsive-laptop,body:not(.elementor-device-mobile) .elementor-control.elementor-control-responsive-mobile,body:not(.elementor-device-mobile_extra) .elementor-control.elementor-control-responsive-mobile_extra,body:not(.elementor-device-tablet) .elementor-control.elementor-control-responsive-tablet,body:not(.elementor-device-tablet_extra) .elementor-control.elementor-control-responsive-tablet_extra,body:not(.elementor-device-widescreen) .elementor-control.elementor-control-responsive-widescreen{display:none}.elementor-control-custom_attributes_pro .elementor-nerd-box-message,.elementor-control-custom_css_pro .elementor-nerd-box-message{margin-block-start:5px}.elementor-control.e-open .elementor-panel-heading-toggle .eicon:before,.elementor-control.elementor-active .elementor-panel-heading-toggle .eicon:before,.elementor-panel-category.e-open .elementor-panel-heading-toggle .eicon:before,.elementor-panel-category.elementor-active .elementor-panel-heading-toggle .eicon:before,.elementor-panel-scheme-item.e-open .elementor-panel-heading-toggle .eicon:before,.elementor-panel-scheme-item.elementor-active .elementor-panel-heading-toggle .eicon:before{content:"\e92a"}.elementor-control:not(.e-open):not(.elementor-active) .elementor-panel-heading-toggle .eicon:before,.elementor-panel-category:not(.e-open):not(.elementor-active) .elementor-panel-heading-toggle .eicon:before,.elementor-panel-scheme-item:not(.e-open):not(.elementor-active) .elementor-panel-heading-toggle .eicon:before{content:"\e909"}.elementor-panel-heading{display:flex;align-items:center;gap:5px;height:48px;padding-inline:20px;width:100%;border:0;border-block-start:var(--e-a-border);border-block-start-width:2px;background-color:transparent;color:var(--e-a-color-txt-accent);cursor:pointer}.elementor-panel-heading-toggle{width:10px;display:flex;flex-direction:column;align-items:center}.elementor-panel-heading-title{font-weight:700}.elementor-panel-heading-promotion{margin-inline-start:auto}.elementor-panel-heading-promotion a{color:var(--e-a-color-accent-promotion);font-family:Roboto,sans-serif;font-weight:500;font-size:13px}.elementor-panel-heading-promotion a i{margin-inline-end:4px;font-size:14px}.elementor-panel-heading-promotion a:hover{color:var(--e-a-color-accent-promotion)}.elementor-panel-heading:focus-visible{color:var(--e-a-color-txt-hover)}#elementor-controls .elementor-control-type-section:first-child .elementor-panel-heading{border-block-start:none}.elementor-control-field{display:flex;align-items:center}.elementor-label-block>.elementor-control-content>.elementor-control-field{flex-wrap:wrap}.elementor-label-block>.elementor-control-content>.elementor-control-field>.elementor-control-input-wrapper{width:100%;max-width:100%;margin-block-start:10px}.elementor-label-block>.elementor-control-content>.elementor-control-field>.elementor-control-input-wrapper>.elementor-choices label{width:auto;flex:1 1 27px;display:flex;align-items:center;justify-content:center}.elementor-label-block.elementor-control-hidden-label.elementor-label-block>.elementor-control-content>.elementor-control-field>.elementor-control-input-wrapper,.elementor-label-block.elementor-control-hidden-label:not(.elementor-control-dynamic)>.elementor-control-content>.elementor-control-field>.elementor-control-input-wrapper{margin-block-start:0}.elementor-label-inline>.elementor-control-content>.elementor-control-field>.elementor-control-title{flex-shrink:0;max-width:60%}.elementor-label-inline>.elementor-control-content>.elementor-control-field>.elementor-control-input-wrapper{margin-inline-start:auto}.elementor-control-field-description{margin-block-start:10px}.elementor-group-control-attachment_alert .elementor-control-field-description{margin-block-start:0}.elementor-control-start-end .eicon-h-align-left,.elementor-control-start-end .eicon-h-align-right{transform:rotate(180deg)}.elementor-update-preview{margin:15px 15px 0;display:flex;align-items:center}.elementor-update-preview-button-wrapper{flex-grow:1;text-align:end}.elementor-update-preview-button{padding:8px 15px}.elementor-control-direction-ltr input,.elementor-control-direction-ltr textarea{direction:ltr}.elementor-control-direction-rtl input,.elementor-control-direction-rtl textarea{direction:rtl}.elementor-control-alert{display:flex;flex-direction:column;justify-content:flex-start;align-items:flex-start;gap:8px}.elementor-control-alert-heading{font-weight:700}.elementor-control-type-button .elementor-control-input-wrapper{text-align:end}.elementor-control-type-button .elementor-button{width:auto}.elementor-control-type-button .elementor-button.elementor-button-center{display:block;margin:0 auto}.elementor-control-type-choose.elementor-label-block .elementor-choices{width:100%}.elementor-choices{display:flex;height:27px;line-height:27px;text-align:center;border-spacing:1px;border-radius:var(--e-a-border-radius);overflow:hidden}.elementor-choices .elementor-choices-label{border-block-start:var(--e-a-border-bold);border-block-end:var(--e-a-border-bold);border-inline-start:var(--e-a-border-bold);border-inline-end:none;font-size:12px;transition:var(--e-a-transition-hover);cursor:pointer;overflow:hidden}.elementor-choices .elementor-choices-label:nth-child(2){border-start-start-radius:var(--e-a-border-radius);border-end-start-radius:var(--e-a-border-radius)}.elementor-choices .elementor-choices-label:last-child{border-inline-end:var(--e-a-border-bold);border-start-end-radius:var(--e-a-border-radius);border-end-end-radius:var(--e-a-border-radius)}.elementor-choices input{display:none}.elementor-choices input:hover+.elementor-choices-label{background-color:var(--e-a-bg-hover)}.elementor-choices input.e-choose-placeholder+.elementor-choices-label,.elementor-choices input:checked+.elementor-choices-label{background-color:var(--e-a-bg-active-bold);color:var(--e-a-color-txt-accent)}.elementor-label-inline .elementor-choices{justify-content:flex-end}.elementor-control-type-color.e-control-global .pickr{border-start-start-radius:0;border-start-end-radius:var(--e-a-border-radius);border-end-start-radius:0;border-end-end-radius:var(--e-a-border-radius);flex-shrink:0;border-color:var(--e-a-border-color-bold);transition:var(--e-a-transition-hover)}.elementor-control-type-color.e-control-global .pickr:hover{background-color:var(--e-a-bg-hover)}.elementor-control-type-color.e-control-global .e-global__popover-toggle:not(.e-global__popover-toggle--active)~.pickr{background-color:var(--e-a-bg-active-bold)}.elementor-control-type-color .elementor-control-title{flex-grow:1}.elementor-control-type-color .elementor-control-input-wrapper{display:flex;justify-content:flex-end}.elementor-group-control-css-filter .elementor-slider{height:6px;box-shadow:inset 0 0 1px 1px rgba(0,0,0,.2)}.elementor-group-control-css-filter .elementor-control-content>.elementor-control-field>.elementor-control-input-wrapper{margin-block-start:0;margin-block-end:5px}.elementor-group-control-blur .elementor-slider{background:url(../images/blur.png);background-size:cover;background-position:50%}.elementor-group-control-contrast .elementor-slider{background:url(../images/contrast.png);background-size:100% 100%}.elementor-group-control-hue .elementor-slider{background-image:linear-gradient(90deg,red,orange,#ff0,#adff2f,#32cd32,#00bfff,#00f,#9400d3 95%)}.elementor-group-control-saturate .elementor-slider{background-image:linear-gradient(90deg,grey,red)}.elementor-group-control-brightness .elementor-slider{background-image:linear-gradient(90deg,#000,#fff)}.elementor-control-type-dimensions .elementor-control-dimensions{display:flex}.elementor-control-type-dimensions li{flex:1;transition:flex-grow .3s ease-in-out}.elementor-control-type-dimensions li .elementor-link-dimensions,.elementor-control-type-dimensions li input{display:block;text-align:center;width:100%;height:27px}.elementor-control-type-dimensions li input{border-inline-start:none;border-radius:0;padding:var(--e-a-border-radius)}.elementor-control-type-dimensions li input:focus{border-inline-start:var(--e-a-border-bold);margin-inline-start:-1px;width:calc(100% + 1px)}.elementor-control-type-dimensions li input:focus+.elementor-control-dimension-label{color:var(--e-a-color-txt)}.elementor-control-type-dimensions li .elementor-link-dimensions{border:var(--e-a-border-bold);border-inline-start:none;background-color:var(--e-a-bg-default);padding:0;outline:none;border-start-start-radius:0;border-start-end-radius:var(--e-a-border-radius);border-end-start-radius:0;border-end-end-radius:var(--e-a-border-radius);cursor:pointer}.elementor-control-type-dimensions li:first-child input{border-inline-start:1px solid var(--e-a-border-color-bold);border-start-start-radius:var(--e-a-border-radius);border-start-end-radius:0;border-end-start-radius:var(--e-a-border-radius);border-end-end-radius:0}.elementor-control-type-dimensions li:first-child input:focus{border-color:var(--e-a-border-color-focus);margin-inline-start:0;width:100%}.elementor-control-type-dimensions li:last-child{max-width:27px}.elementor-control-type-dimensions.e-units-custom li.elementor-control-dimension:focus-within{flex:2.5}.elementor-control-type-dimensions .elementor-control-dimension-label{color:var(--e-a-color-txt-muted);display:block;text-align:center;font-size:9px;padding-block-start:5px}.elementor-control-type-dimensions .elementor-link-dimensions.unlinked{background-color:var(--e-a-bg-default)}.elementor-control-type-dimensions .elementor-link-dimensions.unlinked .elementor-linked{display:none}.elementor-control-type-dimensions .elementor-link-dimensions:not(.unlinked){background-color:var(--e-a-bg-active-bold);color:var(--e-a-color-txt-accent);border-color:var(--e-a-border-color-bold)}.elementor-control-type-dimensions .elementor-link-dimensions:not(.unlinked) .elementor-unlinked{display:none}.elementor-control-responsive-switchers{--selected-option:0;--pointer-position:var(--selected-option);position:relative;width:2.5em;height:2.5em;margin:calc(-2.5em + 12px) 0;margin-inline-end:5px}.elementor-control-responsive-switchers__holder{position:absolute;width:100%;top:0;background-color:var(--e-a-bg-default);border-radius:var(--e-a-border-radius);transition:.15s;border:1px solid transparent}.elementor-control-responsive-switchers.elementor-responsive-switchers-open{z-index:11000}.elementor-control-responsive-switchers.elementor-responsive-switchers-open .elementor-responsive-switcher{height:2.5em;transform:scale(1);opacity:1}.elementor-control-responsive-switchers.elementor-responsive-switchers-open .elementor-responsive-switcher:hover{color:var(--e-a-color-primary-bold)}.elementor-control-responsive-switchers.elementor-responsive-switchers-open .elementor-control-responsive-switchers__holder{box-shadow:var(--e-a-dropdown-shadow)}.elementor-responsive-switcher{all:unset;display:flex;align-items:center;justify-content:center;position:relative;z-index:2;cursor:pointer;height:0;width:100%;transform:scale(0);opacity:0;transition:.15s;font-size:12px;color:inherit}.elementor-responsive-switcher:hover{color:var(--e-a-color-primary-bold)}.elementor-device-widescreen .elementor-responsive-switcher.elementor-responsive-switcher-widescreen{height:2.5em;transform:scale(1);opacity:1}.elementor-device-widescreen .elementor-responsive-switchers-open:not(:hover) .elementor-responsive-switcher.elementor-responsive-switcher-widescreen{color:var(--e-a-color-primary-bold)}.elementor-device-desktop .elementor-responsive-switcher.elementor-responsive-switcher-desktop{height:2.5em;transform:scale(1);opacity:1}.elementor-device-desktop .elementor-responsive-switchers-open:not(:hover) .elementor-responsive-switcher.elementor-responsive-switcher-desktop{color:var(--e-a-color-primary-bold)}.elementor-device-laptop .elementor-responsive-switcher.elementor-responsive-switcher-laptop{height:2.5em;transform:scale(1);opacity:1}.elementor-device-laptop .elementor-responsive-switchers-open:not(:hover) .elementor-responsive-switcher.elementor-responsive-switcher-laptop{color:var(--e-a-color-primary-bold)}.elementor-device-tablet_extra .elementor-responsive-switcher.elementor-responsive-switcher-tablet_extra{height:2.5em;transform:scale(1);opacity:1}.elementor-device-tablet_extra .elementor-responsive-switchers-open:not(:hover) .elementor-responsive-switcher.elementor-responsive-switcher-tablet_extra{color:var(--e-a-color-primary-bold)}.elementor-device-tablet .elementor-responsive-switcher.elementor-responsive-switcher-tablet{height:2.5em;transform:scale(1);opacity:1}.elementor-device-tablet .elementor-responsive-switchers-open:not(:hover) .elementor-responsive-switcher.elementor-responsive-switcher-tablet{color:var(--e-a-color-primary-bold)}.elementor-device-mobile_extra .elementor-responsive-switcher.elementor-responsive-switcher-mobile_extra{height:2.5em;transform:scale(1);opacity:1}.elementor-device-mobile_extra .elementor-responsive-switchers-open:not(:hover) .elementor-responsive-switcher.elementor-responsive-switcher-mobile_extra{color:var(--e-a-color-primary-bold)}.elementor-device-mobile .elementor-responsive-switcher.elementor-responsive-switcher-mobile{height:2.5em;transform:scale(1);opacity:1}.elementor-device-mobile .elementor-responsive-switchers-open:not(:hover) .elementor-responsive-switcher.elementor-responsive-switcher-mobile{color:var(--e-a-color-primary-bold)}.e-units-wrapper{position:relative;margin-inline-start:auto}.e-units-wrapper .e-units-switcher{cursor:pointer;font-size:10px;padding:.5em;margin:-.5em 0;transition:all .15s ease-in-out}.e-units-wrapper .e-units-switcher:hover{color:var(--e-a-color-primary-bold);background-color:var(--e-a-bg-hover);border-radius:var(--e-a-border-radius)}.e-units-wrapper .e-units-switcher:not([data-selected=custom]) i.eicon-edit,.e-units-wrapper .e-units-switcher[data-selected=custom] span{display:none}.e-units-wrapper .e-units-switcher i.eicon-angle-right{transform:rotate(90deg)}.e-units-choices input{display:none}.e-units-choices input:checked+label{color:var(--e-a-color-primary-bold)}.e-units-choices label{cursor:pointer;display:block}.e-units-choices{display:none;overflow:hidden;max-height:0;position:absolute;top:-.8em;right:-.5em;width:2.5em;text-align:center;background-color:var(--e-a-bg-default);border-radius:var(--e-a-border-radius);box-shadow:var(--e-a-dropdown-shadow);animation-timing-function:linear;animation-delay:0s;animation-fill-mode:forwards;z-index:11000}.e-units-choices .elementor-units-choices-label{display:flex;align-items:center;height:3em;justify-content:center;font-size:10px;transition:.15s}.e-units-choices .elementor-units-choices-label:hover{color:var(--e-a-color-primary-bold)}.e-units-choices.e-units-choices-open{display:block;animation-duration:1s;animation-name:e-units-choices-open}.e-units-custom input{font-family:monospace;font-size:.85em}@keyframes e-units-choices-open{0%{max-height:0}to{max-height:100vh}}.elementor-control-type-gaps .elementor-control-gaps{display:flex}.elementor-control-type-gaps li{flex:1;transition:flex-grow .3s ease-in-out}.elementor-control-type-gaps li .elementor-link-gaps,.elementor-control-type-gaps li input{display:block;text-align:center;width:100%;height:27px}.elementor-control-type-gaps li input{border-inline-start:none;border-radius:0;padding:var(--e-a-border-radius)}.elementor-control-type-gaps li input:focus{border-inline-start:var(--e-a-border-bold);margin-inline-start:-1px;width:calc(100% + 1px)}.elementor-control-type-gaps li input:focus+.elementor-control-gap-label{color:var(--e-a-color-txt)}.elementor-control-type-gaps li .elementor-link-gaps{border:var(--e-a-border-bold);border-inline-start:none;background-color:var(--e-a-bg-default);padding:0;outline:none;border-start-start-radius:0;border-start-end-radius:var(--e-a-border-radius);border-end-start-radius:0;border-end-end-radius:var(--e-a-border-radius);cursor:pointer}.elementor-control-type-gaps li:first-child input{border-inline-start:1px solid var(--e-a-border-color-bold);border-start-start-radius:var(--e-a-border-radius);border-start-end-radius:0;border-end-start-radius:var(--e-a-border-radius);border-end-end-radius:0}.elementor-control-type-gaps li:first-child input:focus{border-color:var(--e-a-border-color-focus);margin-inline-start:0;width:100%}.elementor-control-type-gaps li:last-child{max-width:27px}.elementor-control-type-gaps.e-units-custom li.elementor-control-gap:focus-within{flex:2.5}.elementor-control-type-gaps .elementor-control-gap-label{color:var(--e-a-color-txt-muted);display:block;text-align:center;font-size:9px;padding-block-start:5px}.elementor-control-type-gaps .elementor-link-gaps.unlinked{background-color:var(--e-a-bg-default)}.elementor-control-type-gaps .elementor-link-gaps.unlinked .elementor-linked{display:none}.elementor-control-type-gaps .elementor-link-gaps:not(.unlinked){background-color:var(--e-a-bg-active-bold);color:var(--e-a-color-txt-accent);border-color:var(--e-a-border-color-bold)}.elementor-control-type-gaps .elementor-link-gaps:not(.unlinked) .elementor-unlinked{display:none}.elementor-control-type-icons .elementor-control-media__preview>*{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.elementor-control-type-icons .elementor-control-media__preview i{font-size:70px}.elementor-control-type-icons .elementor-control-media__preview svg{height:75%}.elementor-control-type-icons .elementor-control-icons--inline__svg i.eicon-upload{font-size:15px}.elementor-control-type-gallery .elementor-control-media__content{border:var(--e-a-border-bold);border-radius:3px}.elementor-control-type-gallery .elementor-control-gallery-status{font-size:12px;height:27px;padding-inline-start:10px;border-block-end:var(--e-a-border-bold);display:flex}.elementor-control-type-gallery .elementor-control-gallery-status>*{display:flex;align-items:center}.elementor-control-type-gallery .elementor-control-gallery-status-title{flex-grow:1}.elementor-control-type-gallery .elementor-control-gallery-content{position:relative;overflow:hidden}.elementor-control-type-gallery .elementor-control-gallery-thumbnails{display:grid;grid-template-columns:repeat(auto-fill,minmax(48px,1fr));grid-gap:10px;cursor:pointer;padding:10px}.elementor-control-type-gallery .elementor-control-gallery-thumbnails:focus+.elementor-control-gallery-edit,.elementor-control-type-gallery .elementor-control-gallery-thumbnails:hover+.elementor-control-gallery-edit{opacity:1}.elementor-control-type-gallery .elementor-control-gallery-thumbnail{width:48px;height:48px;-o-object-fit:cover;object-fit:cover;border:var(--e-a-border)}.elementor-control-type-gallery .elementor-control-gallery-thumbnail+.unoptimized__image{outline:2px solid var(--e-a-btn-bg-danger-active);opacity:.6}.elementor-control-type-gallery .elementor-control-gallery-edit{position:absolute;top:0;bottom:0;left:0;right:0;background-color:rgba(0,0,0,.2);padding:10px;font-size:11px;transition:all .3s ease-in-out;pointer-events:none;cursor:pointer;opacity:0}.elementor-control-type-gallery .elementor-control-gallery-edit span{position:absolute;top:10px;left:10px;width:21px;height:21px;color:var(--e-a-color-white);background-color:rgba(0,0,0,.5);box-shadow:0 0 7px 0 rgba(0,0,0,.2);transition:var(--e-a-transition-hover)}.elementor-control-type-gallery .elementor-control-gallery-edit span i{font-size:11px;padding:5px}.elementor-control-type-gallery .elementor-control-gallery-edit span:hover{background-color:rgba(0,0,0,.6)}.elementor-control-type-gallery .elementor-control-gallery-add{width:48px;height:48px;font-size:14px}.elementor-control-type-gallery .elementor-control-gallery-add i{margin:0}.elementor-control-type-gallery.elementor-gallery-empty .elementor-control-gallery-clear,.elementor-control-type-gallery.elementor-gallery-empty .elementor-control-gallery-edit,.elementor-control-type-gallery.elementor-gallery-empty .elementor-control-gallery-thumbnails{display:none}.elementor-control-type-gallery.elementor-gallery-empty .elementor-control-gallery-content{padding:10px}.elementor-control-type-gallery.elementor-gallery-has-images .elementor-control-gallery-add{display:none}.elementor-control-type-gallery.elementor-control-dynamic .elementor-control-gallery-clear{border-inline-start:var(--e-a-border)}.elementor-control-type-gallery .elementor-control-gallery-clear{color:currentColor;background-color:transparent;border:none;cursor:pointer;justify-content:center}.elementor-control-type-gallery .elementor-control-gallery-clear:focus,.elementor-control-type-gallery .elementor-control-gallery-clear:hover{color:var(--e-a-color-danger)}.elementor-control-type-gallery .elementor-control-dynamic-switcher{border-width:0;border-inline-start-width:1px;border-block-end-width:1px;border-radius:0}.e-global__popover{width:288px;z-index:1;font-size:12px;padding-inline-start:10px}.e-global__popover-toggle{border:var(--e-a-border-bold);border-inline-end:0;border-start-start-radius:3px;border-start-end-radius:0;border-end-start-radius:3px;border-end-end-radius:0;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:var(--e-a-transition-hover)}.e-global__popover-toggle:hover{background-color:var(--e-a-bg-hover)}.e-global__popover-toggle--active{color:var(--e-a-color-primary-bold);background-color:var(--e-a-bg-active-bold)}.e-global__popover-container{box-shadow:var(--e-a-popover-shadow);border-radius:var(--e-a-border-radius);background-color:var(--e-a-bg-default)}.e-global__popover-title{padding:15px 20px;font-weight:500;border-block-end:var(--e-a-border);display:flex}.e-global__popover-title>i{margin-inline-end:5px}.e-global__popover-title-text{flex-grow:1}.e-global__popover-info{margin-inline-end:10px;display:inline-block}.e-global__popover-info-tooltip{width:270px;z-index:1;background-color:rgba(0,0,0,.9);color:var(--e-a-color-white);padding:20px;border-radius:3px}.e-global__popover-info-tooltip:after{content:"";position:absolute;bottom:-17px;right:16px;border:10px solid transparent;border-block-start-color:rgba(0,0,0,.9)}.e-global__popover-info i{font-size:13px}.e-global__preview-items-container{max-height:260px;overflow-y:auto;padding:5px 0}.e-global__preview-items-container::-webkit-scrollbar{width:7px}.e-global__preview-items-container::-webkit-scrollbar-thumb{background-color:#babfc5;border-radius:10px}.e-global__manage-button{font-weight:500;cursor:pointer}.e-global__typography{padding-block:10px;padding-inline:35px 20px;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.e-global__typography.e-global__preview-item--selected:before{font-family:eicons;font-size:13px;content:"\e90e";position:absolute;transform:translateY(-50%);top:50%;inset-inline-start:13px}.e-global__color{padding:10px 20px;display:flex;align-items:center}.e-global__color-preview-container{height:20px;width:20px;border-radius:3px;border:1px solid rgba(0,0,0,.1);margin-inline-end:10px;flex-shrink:0;position:relative}.e-global__color-preview-color,.e-global__color-preview-transparent-bg{border-radius:3px;height:100%;width:100%;position:absolute;top:0;left:0}.e-global__color-preview-transparent-bg{background-image:linear-gradient(45deg,var(--e-a-border-color-bold) 25%,transparent 0,transparent 75%,var(--e-a-border-color-bold) 0,var(--e-a-border-color-bold)),linear-gradient(45deg,var(--e-a-border-color-bold) 25%,transparent 0,transparent 75%,var(--e-a-border-color-bold) 0,var(--e-a-border-color-bold));background-size:12px 12px;background-position:0 0,calc(12px / 2) calc(12px / 2)}.e-global__color-title{flex-grow:1;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;padding-inline-end:10px}.e-global__color-hex{font-size:10px;color:var(--e-a-color-txt-muted)}.e-global__color .pcr-button{background-color:var(--e-a-bg-default)}.e-global__color.e-global__preview-item--selected .e-global__color-preview-container{display:flex;justify-content:center;align-items:center;color:var(--e-a-color-white)}.e-global__color.e-global__preview-item--selected .e-global__color-preview-container:before{font-family:eicons;font-size:13px;content:"\e90e";text-shadow:0 0 1px #000;z-index:1}.e-global__preview-item{cursor:pointer;position:relative}.e-global__preview-item:hover{background-color:var(--e-a-bg-hover)}.e-global__confirm-delete i,.e-global__confirm-message-text i{color:var(--e-a-color-warning)}.e-global__confirm-input-wrapper{display:flex;align-items:center;border:var(--e-a-border);border-radius:var(--e-a-border-radius);margin:15px 0;padding:2px}.e-global__confirm-input-wrapper input{font-family:var(--e-a-font-family);font-size:12px;padding:2px;border:0}.e-control-global .elementor-control-input-wrapper{display:flex;justify-content:flex-end;max-width:135px;width:100%}.e-control-global.elementor-control .elementor-control-input-wrapper{display:flex;flex-direction:row;align-items:stretch}.e-control-global .elementor-control-spinner{margin-inline-end:4px}.elementor-control-type-hidden{display:none!important}.elementor-control-type-icon .select2-selection__rendered .eicon{margin-inline-end:3px}.elementor-control-type-image_dimensions .elementor-control-field-description{margin:0 0 15px;line-height:1.4}.elementor-control-type-image_dimensions .elementor-control-input-wrapper{display:flex;align-items:flex-start}.elementor-control-type-image_dimensions .elementor-image-dimensions-field{width:65px}.elementor-control-type-image_dimensions .elementor-image-dimensions-field input:focus+.elementor-image-dimensions-field-description{color:var(--e-a-color-txt)}.elementor-control-type-image_dimensions .elementor-image-dimensions-separator{width:20px;text-align:center;padding-block-start:4px}.elementor-control-type-image_dimensions .elementor-image-dimensions-field-description{display:block;margin-block-start:5px;color:var(--e-a-color-txt-disabled);font-size:10px;text-align:center}.elementor-control-type-image_dimensions .elementor-image-dimensions-apply-button{margin-inline-start:auto}.elementor-control-media.e-media-empty-placeholder .e-control-image-size,.elementor-control-media.e-media-empty .elementor-control-media-area .elementor-control-media__content__remove,.elementor-control-media.e-media-empty .elementor-control-media-area .elementor-control-media__remove,.elementor-control-media:not(.e-media-empty) .elementor-control-media__content__upload-button{display:none}.elementor-control-media .eicon-plus-circle{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);color:var(--e-a-color-white);font-size:20px}.elementor-control-media__content__upload-button{background-color:var(--e-a-bg-active-bold)}.elementor-control-media__preview{height:100%;background-size:cover;background-position:50%;padding-block-end:42.8571%}.elementor-control-media-area{background-image:linear-gradient(45deg,var(--e-a-border-color-bold) 25%,transparent 0,transparent 75%,var(--e-a-border-color-bold) 0,var(--e-a-border-color-bold)),linear-gradient(45deg,var(--e-a-border-color-bold) 25%,transparent 0,transparent 75%,var(--e-a-border-color-bold) 0,var(--e-a-border-color-bold));background-size:16px 16px;background-position:0 0,calc(16px / 2) calc(16px / 2);background-color:var(--e-a-bg-default);border:var(--e-a-border-bold);aspect-ratio:21/9}.elementor-control-media-area:not(:hover) .elementor-control-media__remove{display:none}.elementor-control-media-area .eicon-video-camera{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);color:hsla(0,0%,100%,.7);font-size:21px}.elementor-control-media .elementor-control-media__content{aspect-ratio:21/9;position:relative;cursor:pointer;overflow:hidden}.elementor-control-media .elementor-control-media__content:hover:after{content:"";position:absolute;top:0;bottom:0;left:0;right:0;background-color:rgba(0,0,0,.2);pointer-events:none}.elementor-control-media .elementor-control-media__content:not(:hover) .elementor-control-media__tools{bottom:-30px}.elementor-control-media__content{transition:all .2s ease-in-out}.elementor-control-media__tools{position:absolute;bottom:0;left:0;right:0;height:27px;transition:all .2s ease-in-out}.elementor-control-media__tools>:not(:first-child){margin-inline-start:1px}.elementor-control-media__tool{display:flex;align-items:center;justify-content:center;flex-grow:1;color:var(--e-a-color-white);background-color:rgba(0,0,0,.9);font-size:11px;transition:var(--e-a-transition-hover)}.elementor-control-media__tool:hover{background-color:rgba(0,0,0,.8)}.elementor-control-media__remove{display:flex;align-items:center;justify-content:center;transition:all .3s ease-in-out}.elementor-control-media__content__remove{position:absolute;z-index:1;top:10px;left:10px;width:20px;height:20px;font-size:11px;color:var(--e-a-color-white);background-color:rgba(0,0,0,.5);border-radius:var(--e-border-radius);box-shadow:0 0 7px 0 rgba(0,0,0,.2);transition:var(--e-a-transition-hover)}.elementor-control-media__content__remove:hover{background-color:rgba(0,0,0,.6)}.elementor-control-media.e-media-empty .elementor-control-file-area,.elementor-control-media__warnings:empty{display:none}.elementor-control-media__warnings:not(:empty){margin-block-start:10px}.elementor-control-media__file{display:flex;justify-content:space-between;align-items:center;width:100%;margin-block-start:10px;border:var(--e-a-border)}.elementor-control-media__file__content{padding-inline-start:5px;font-size:12px}.elementor-control-media__file__content__label{color:#9da5ae}.elementor-control-media__file__content__info{display:flex;align-items:center;font-weight:500}.elementor-control-media__file__content__info__icon{margin-inline-end:5px}.elementor-control-media__file__controls{display:flex;border-inline-start:var(--e-a-border)}.elementor-control-media__file__controls__remove,.elementor-control-media__file__controls__upload-button{width:27px;height:27px;cursor:pointer;align-items:center}.elementor-control-media__file__controls__upload-button{display:flex;justify-content:center}.elementor-control-media__file__controls__remove{border-inline-end:var(--e-a-border)}.elementor-control-media.e-media-empty .elementor-control-media__file__content__info,.elementor-control-media.e-media-empty .elementor-control-media__file__controls__remove,.elementor-control-media:not(.e-media-empty) .elementor-control-media__file__content__label{display:none}.elementor-control-media .elementor-control-dynamic-switcher{border:none;border-radius:0;background-color:rgba(0,0,0,.9);color:var(--e-a-color-white)}.elementor-control-media .elementor-control-dynamic-switcher:hover{background-color:rgba(0,0,0,.8);color:var(--e-a-color-white)}.elementor-control-media .e-control-image-size{display:flex;flex-direction:column;width:100%;padding-block-start:20px}.elementor-control-media .e-control-image-size .elementor-control-input-wrapper{margin-inline-start:auto}.elementor-control-type-media.elementor-control-dynamic-value .elementor-control-input-wrapper{border:none}.elementor-control:not(.elementor-control-type-icons) .elementor-control-media__preview{background-color:var(--e-a-bg-active-bold)}.elementor-control-notice{display:flex;justify-content:flex-start;align-items:flex-start;gap:8px;padding:16px;border-radius:3px;border:1px solid var(--notice-control-color,var(--e-a-color-txt));color:var(--e-a-color-txt);font-size:12px;font-weight:400;line-height:1.5;text-align:start;margin-block-start:10px}.elementor-control-notice-type-info{--notice-control-color:var(--e-a-color-info)}.elementor-control-notice-type-success{--notice-control-color:var(--e-a-color-success)}.elementor-control-notice-type-warning{--notice-control-color:var(--e-a-color-warning)}.elementor-control-notice-type-danger{--notice-control-color:var(--e-a-color-danger)}.elementor-control-notice-icon{flex-basis:18px;color:var(--notice-control-color)}.elementor-control-notice-main{display:flex;flex-direction:column;justify-content:flex-start;align-items:flex-start;gap:6px;flex:1}.elementor-control-notice-main-heading{font-weight:700;font-style:italic}.elementor-control-notice-main-content{font-style:italic;line-height:1.5}.elementor-control-notice-main-actions{display:flex;gap:10px;padding-block-start:8px}.elementor-control-notice-main a{color:inherit;font-weight:700;cursor:pointer}.elementor-control-notice-main a:focus,.elementor-control-notice-main a:hover{color:inherit}.elementor-control-notice-dismiss{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:transparent;border:0;padding:0;margin:0;cursor:pointer}.elementor-control-type-popover_toggle input{display:none}.elementor-control-type-popover_toggle label{cursor:pointer}.elementor-control-type-popover_toggle .elementor-control-input-wrapper{display:flex;flex-direction:row-reverse;align-items:center}.elementor-control-type-popover_toggle .elementor-control-popover-toggle-toggle:checked+.elementor-control-popover-toggle-toggle-label{color:var(--e-a-color-txt-active);background-color:var(--e-a-bg-active-bold)}.elementor-control-type-popover_toggle .elementor-control-popover-toggle-toggle:not(:checked)~.elementor-control-popover-toggle-reset-label{display:none}.elementor-control-type-popover_toggle .elementor-control-popover-toggle-toggle-label{height:27px;display:inline-flex;align-items:center;justify-content:center;border-radius:var(--e-a-border-radius);border:var(--e-a-border-bold);transition:var(--e-a-transition-hover)}.elementor-control-type-popover_toggle .elementor-control-popover-toggle-toggle-label:hover{background-color:var(--e-a-bg-hover)}.elementor-control-type-popover_toggle .elementor-control-popover-toggle-reset-label{color:var(--e-a-color-txt-muted);margin-inline-end:5px}.elementor-control-type-popover_toggle .elementor-control-popover-toggle-reset-label:hover{color:var(--e-a-color-txt)}.elementor-controls-popover.e-controls-popover--typography{padding-block-start:0}.e-control-global .elementor-control-popover-toggle-toggle-label{border-start-start-radius:0;border-start-end-radius:var(--e-a-border-radius);border-end-start-radius:0;border-end-end-radius:var(--e-a-border-radius);flex-shrink:0}.elementor-control-type-repeater .elementor-control:not(.elementor-control-type-tab){padding-inline-start:10px;padding-inline-end:10px;padding-block-end:10px}.elementor-control-type-repeater.elementor-repeater-has-minimum-rows .elementor-repeater-tool-remove{display:none}.elementor-control-type-repeater .elementor-repeater-fields{margin:10px 0}.elementor-control-type-repeater .elementor-repeater-row-controls{border:var(--e-a-border-bold);border-block-start-width:0;padding-block-start:15px}.elementor-control-type-repeater .elementor-repeater-row-controls:not(.editable){display:none}.elementor-control-type-repeater .elementor-repeater-row-tools{display:flex;align-items:center;width:100%;border:1px solid var(--e-a-border-color-bold);transition:var(--e-a-transition-hover)}.elementor-control-type-repeater .elementor-repeater-row-tools>button{display:flex;align-items:center;justify-content:center;height:40px;border:none;background-color:transparent;color:currentColor;cursor:pointer}.elementor-control-type-repeater .elementor-repeater-row-tools>button:focus,.elementor-control-type-repeater .elementor-repeater-row-tools>button:hover{background-color:var(--e-a-bg-hover)}.elementor-control-type-repeater .elementor-repeater-row-tools .elementor-repeater-row-item-title{flex:1;justify-content:flex-start;padding:0 10px;font-size:var(--control-title-size);white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.elementor-control-type-repeater .elementor-repeater-row-tools .elementor-repeater-row-item-title .eicon,.elementor-control-type-repeater .elementor-repeater-row-tools .elementor-repeater-row-item-title i,.elementor-control-type-repeater .elementor-repeater-row-tools .elementor-repeater-row-item-title svg{margin-inline-end:5px}.elementor-control-type-repeater .elementor-repeater-row-tools .elementor-repeater-row-item-title img[src$=svg]{width:1em}.elementor-control-type-repeater .elementor-repeater-row-tools .elementor-repeater-row-tool{width:40px;border-inline-start:1px solid var(--e-a-border-color-bold)}.elementor-control-type-repeater .elementor-repeater-row-tools .elementor-repeater-row-handle-sortable{width:10px;border-inline-end:1px solid var(--e-a-border-color-bold);cursor:move}.elementor-control-type-repeater .elementor-button-wrapper{text-align:center;padding-block-start:5px}#elementor-controls{padding-block-start:15px}.elementor-control-type-section{padding:0}.elementor-control-type-section.e-open{padding-block-end:10px}.elementor-control-type-section+.elementor-control:not(.elementor-control-type-section):before{display:none}.elementor-control-type-section:not(:first-child):not(.elementor-control-type-section+.elementor-control-type-section){margin-block-start:25px}.elementor-control-type-select .elementor-control-input-wrapper{position:relative}.elementor-control-type-select .elementor-control-input-wrapper select{-webkit-appearance:none;-moz-appearance:none;appearance:none;font-size:var(--control-title-size);font-family:inherit;font-weight:inherit;font-style:inherit;text-transform:inherit;letter-spacing:inherit;line-height:inherit;flex-basis:100%;padding-inline-start:5px;padding-inline-end:20px;cursor:pointer}.elementor-control-type-select .elementor-control-input-wrapper select.e-select-placeholder{color:var(--e-a-color-txt-disabled)}.elementor-control-type-select .elementor-control-input-wrapper option.e-option-placeholder{display:none}.elementor-control-type-select .elementor-control-input-wrapper:after{font-family:eicons;content:"\e8ad";font-size:12px;position:absolute;top:50%;transform:translateY(-50%);left:5px;pointer-events:none}.elementor-control-type-select .elementor-control-field.elementor-control-field-select-small .elementor-control-input-wrapper{max-width:80px}.elementor-shadow-box .elementor-shadow-slider{margin-block-start:10px}.elementor-shadow-box .elementor-color-picker-wrapper .elementor-control-title{flex-grow:1}.elementor-control-type-slider.elementor-control-dynamic input{border-start-start-radius:var(--e-a-border-radius);border-start-end-radius:0;border-end-start-radius:var(--e-a-border-radius);border-end-end-radius:0}.elementor-control-type-slider .elementor-control-unit-2{width:21%}.elementor-control-type-slider.elementor-control-type-slider--multiple .elementor-control-input-wrapper{display:block}.elementor-control-type-slider--multiple{padding-block-end:40px}.elementor-control-type-slider--multiple .elementor-slider{margin-block-start:12px;width:98%}.elementor-control-type-slider--handles-range .elementor-slider .noUi-handle{border-radius:0;width:10px;transform:translateY(calc(50% - 14px)) translateX(-4px)}.elementor-control-type-slider--handles-range .elementor-slider .noUi-handle:after{content:"";position:absolute;top:2px;height:12px;width:11px;transform:rotate(45deg);background-color:var(--e-a-color-white);border-radius:3px}.elementor-control-type-slider--handles-range .elementor-slider .noUi-handle-lower:after{left:5px;box-shadow:2px -2px 3px 0 rgba(0,0,0,.1)}.elementor-control-type-slider--handles-range .elementor-slider .noUi-handle-upper:after{right:5px;box-shadow:-2px 2px 3px 0 rgba(0,0,0,.1)}.elementor-control-type-slider .elementor-control-dynamic-switcher{border-inline-start-width:0;border-start-start-radius:0;border-start-end-radius:var(--e-a-border-radius);border-end-start-radius:0;border-end-end-radius:var(--e-a-border-radius)}.elementor-control-type-slider .elementor-control-input-wrapper{display:flex;align-items:center}.elementor-control-type-slider .elementor-dynamic-cover{margin-block-start:10px}.elementor-control-type-slider.e-units-custom .elementor-slider{display:none}.elementor-control-type-slider.e-units-custom .elementor-slider-input{width:100%;margin:0;transition:none}.elementor-slider{flex-grow:1;height:4px;background-color:var(--e-a-border-color-bold);border-radius:5px;position:relative;cursor:pointer}.elementor-slider-input{width:21%;min-width:54px;margin-inline-start:12px;transition:width .3s ease-in-out}.elementor-slider__extra{position:relative}.elementor-slider__labels{display:flex;justify-content:space-between}.elementor-slider__label{font-size:9px;color:var(--e-a-color-txt-disabled)}.elementor-slider__scales{position:absolute;display:flex;justify-content:space-evenly;width:100%;margin-block-start:4px}.elementor-slider__scale{width:1px;height:21px;background-color:var(--e-a-border-color-focus)}.elementor-slider .noUi-handle{height:16px;width:16px;background-color:var(--e-a-color-white);left:0;transform:translateY(calc(50% - 14px)) translateX(-8px);position:absolute;box-shadow:0 1px 5px rgba(0,0,0,.3);border-radius:50%}.elementor-slider .noUi-connects{position:absolute;width:100%;height:4px}.elementor-slider .noUi-connect{position:absolute;z-index:0;top:0;left:0;height:100%;width:100%;will-change:transform;transform-origin:0 0;background-color:var(--e-a-border-color-focus)}.elementor-slider .noUi-tooltip{position:absolute;top:calc(100% + 5px);left:calc(50% - 4px);transform:translateX(-50%);font-size:10px}.elementor-control-type-structure .elementor-control-field{display:initial}.elementor-control-type-structure .elementor-control-structure-preset{padding:3px;border-radius:var(--e-border-radius);display:inline-block;cursor:pointer;height:50px}.elementor-control-type-structure .elementor-control-structure-preset svg{height:100%}.elementor-control-type-structure .elementor-control-structure-preset path{fill:var(--e-a-border-color-bold)}.elementor-control-type-structure .elementor-control-structure-reset{padding:15px 20px 0;font-size:11px;cursor:pointer;color:var(--e-a-color-txt-muted);border-block-start:var(--e-a-border);margin:0 -20px}.elementor-control-type-structure .elementor-control-structure-reset:hover{color:var(--e-a-color-txt)}.elementor-control-type-structure .elementor-control-structure-title{margin:10px -20px 0}.elementor-control-type-structure .elementor-control-structure-title:before{height:10px;box-shadow:inset 0 2px 4px hsla(0,0%,49.8%,.1)}.elementor-control-type-structure .elementor-control-structure-presets{display:flex;flex-wrap:wrap;justify-content:space-between}.elementor-control-type-structure .elementor-control-structure-presets input{display:none}.elementor-control-type-structure .elementor-control-structure-presets input:checked+.elementor-control-structure-preset path{fill:var(--e-a-border-color-focus)}.elementor-control-type-structure .elementor-control-structure-preset-wrapper{margin-block-end:15px}.elementor-control-type-structure .elementor-control-structure-preset-title{text-align:center;padding-block-start:5px;font-style:italic;font-size:11px;color:#9da5ae}.elementor-control-type-switcher .elementor-control-input-wrapper{text-align:end}.elementor-control-type-switcher .elementor-switch{position:relative;display:inline-block;vertical-align:top;height:20px;background-color:var(--e-a-bg-default);border-radius:18px;cursor:pointer}.elementor-control-type-switcher .elementor-switch-input{display:none}.elementor-control-type-switcher .elementor-switch-label{position:relative;display:block;height:inherit;font-size:10px;background:var(--e-a-bg-active-bold);border-radius:inherit;transition:.15s ease-out;transition-property:opacity,background}.elementor-control-type-switcher .elementor-switch-label:after,.elementor-control-type-switcher .elementor-switch-label:before{position:absolute;top:0;width:50%;text-align:center;line-height:20px;transition:inherit}.elementor-control-type-switcher .elementor-switch-label:before{content:attr(data-off);right:5px;color:var(--e-a-color-txt-muted)}.elementor-control-type-switcher .elementor-switch-label:after{content:attr(data-on);left:5px;color:var(--e-a-btn-color);opacity:0}.elementor-control-type-switcher .elementor-switch-input:checked~.elementor-switch-label{background:var(--e-a-btn-bg-primary)}.elementor-control-type-switcher .elementor-switch-input:checked~.elementor-switch-label:before{opacity:0}.elementor-control-type-switcher .elementor-switch-input:checked~.elementor-switch-label:after{opacity:1}.elementor-control-type-switcher .elementor-switch-handle{position:absolute;top:1px;left:1px;width:18px;height:18px;background:#fff;border-radius:10px;transition:left .15s ease-out}.elementor-control-type-switcher .elementor-switch-input:checked~.elementor-switch-handle{left:auto;right:1px}.elementor-control-type-tabs{display:flex;font-size:var(--control-title-size)}.elementor-control-type-tab{text-align:center;width:100%;padding:0;line-height:25px;border-block-start:var(--e-a-border-bold);border-block-end:var(--e-a-border-bold);border-inline-end:var(--e-a-border-bold);transition:var(--e-a-transition-hover);cursor:pointer}.elementor-control-type-tab:first-child{border-inline-start:var(--e-a-border-bold);border-start-start-radius:var(--e-a-border-radius);border-end-start-radius:var(--e-a-border-radius)}.elementor-control-type-tab:last-child{border-start-end-radius:var(--e-a-border-radius);border-end-end-radius:var(--e-a-border-radius)}.elementor-control-type-tab:hover{background-color:var(--e-a-bg-hover)}.elementor-control-type-tab.e-tab-active{background-color:var(--e-a-bg-active-bold);color:var(--e-a-color-txt-accent)}.e-tab-close{display:none!important}.elementor-control-type-code .elementor-control-dynamic-switcher,.elementor-control-type-textarea .elementor-control-dynamic-switcher{border-inline-start-width:1px;border-start-start-radius:0;border-start-end-radius:0;border-end-end-radius:0;border-end-start-radius:var(--e-a-border-radius)}.elementor-control-type-code:not(.elementor-control-dynamic-value) .elementor-control-dynamic-switcher,.elementor-control-type-textarea:not(.elementor-control-dynamic-value) .elementor-control-dynamic-switcher{position:absolute;top:0;left:0;z-index:1}.elementor-control-type-code .elementor-control-input-wrapper,.elementor-control-type-textarea .elementor-control-input-wrapper{position:relative}.elementor-control-type-code textarea,.elementor-control-type-textarea textarea{display:block;font-family:inherit}.elementor-control-type-code textarea:focus+.elementor-control-dynamic-switcher,.elementor-control-type-textarea textarea:focus+.elementor-control-dynamic-switcher{display:none}.elementor-control-type-code pre:focus-within+.elementor-control-dynamic-switcher,.elementor-control-type-textarea pre:focus-within+.elementor-control-dynamic-switcher{display:none}.elementor-control-type-url .elementor-control-field{position:relative}.elementor-control-type-url .elementor-control-input-wrapper{display:flex}.elementor-control-type-url.elementor-control-dynamic .elementor-control-url-more-options input{border-radius:var(--e-a-border-radius)}.elementor-control-type-url.elementor-control-dynamic-value .e-input-style{border-start-end-radius:0;border-end-end-radius:0}.elementor-control-type-url.elementor-control-dynamic-value .elementor-control-url-more{border-start-end-radius:var(--e-a-border-radius);border-end-end-radius:var(--e-a-border-radius)}.elementor-control-type-url .elementor-control-url-more{display:flex;align-items:center;justify-content:center;flex-shrink:0;border:var(--e-a-border-bold);color:currentColor;background-color:transparent;border-inline-start-width:0;cursor:pointer}.elementor-control-type-url .elementor-control-url-more i{font-size:12px}.elementor-control-type-url .elementor-control-url-more-options{display:none;padding-block-start:10px}.elementor-control-type-url .elementor-control-url-more-options .elementor-control-field-description{margin-block-start:10px}.elementor-control-type-url .elementor-control-url-more:hover{color:var(--e-a-color-txt-hover)}.elementor-control-type-url .elementor-control-url-more:focus{color:var(--e-a-color-txt-active);border-color:var(--e-a-border-color-focus)}.elementor-control-type-url .elementor-control-url-option{display:flex;align-items:center}.elementor-control-type-url .elementor-control-url-option:not(:last-child){padding-block-end:10px}.elementor-control-type-url .elementor-control-url-option input,.elementor-control-type-url .elementor-control-url-option label{cursor:pointer}.elementor-control-type-url .elementor-control-url-autocomplete-spinner{display:none;position:absolute;top:5px;right:0;width:10px;height:10px;font-size:10px;color:var(--e-a-color-txt-disabled)}.elementor-control-type-url .elementor-control-url__custom-attributes label{font-size:var(--control-title-size)}.elementor-control-type-url .elementor-control-url__custom-attributes input{width:100%;margin-block-start:10px}.elementor-control-type-url .elementor-input:focus~div{border-color:var(--e-a-border-color-focus)}.elementor-autocomplete-menu{position:absolute;background:var(--e-a-bg-default);border:var(--e-a-border);margin:0;list-style:none;padding:4px 0;height:auto;width:100%;min-width:260px;max-width:300px;max-height:200px;overflow-y:auto;border-radius:3px;transition:var(--e-a-transition-hover);cursor:default;z-index:1}.elementor-autocomplete-menu .ui-menu-item{display:flex;justify-content:space-between;align-self:baseline;padding:5px 8px;font-size:12px;width:100%;line-height:1.2;cursor:pointer}.elementor-autocomplete-menu .ui-menu-item.ui-state-active,.elementor-autocomplete-menu .ui-menu-item.ui-state-focus,.elementor-autocomplete-menu .ui-menu-item.ui-state-hover{background:var(--e-a-bg-hover)}.elementor-autocomplete-menu .elementor-autocomplete-item-info{font-size:10px;padding-block-start:2px}.elementor-control-type-wp_widget .widget-inside{line-height:2;background-color:inherit;display:block}.elementor-control-type-wp_widget .quicktags-toolbar input{width:auto}.elementor-control-type-wysiwyg *{box-sizing:content-box}.elementor-control-type-wysiwyg .wp-editor-container{border:var(--e-a-border)}.elementor-control-type-wysiwyg .wp-editor-tabs{border:var(--e-a-border-bold);border-block-end:none;border-start-start-radius:var(--e-a-border-radius);border-start-end-radius:var(--e-a-border-radius);border-end-end-radius:0;border-end-start-radius:0}.elementor-control-type-wysiwyg .wp-editor-tabs button:hover{background-color:var(--e-a-bg-hover)}.elementor-control-type-wysiwyg #insert-media-button{height:auto;line-height:24px;font-size:10px;color:var(--e-a-color-txt);border-color:var(--e-a-border-color-bold);background-color:var(--e-a-bg-default);min-height:0}.elementor-control-type-wysiwyg .ed_button{height:22px;width:auto}.elementor-control-type-wysiwyg .wp-media-buttons-icon{height:14px;margin:0}.elementor-control-type-wysiwyg .wp-media-buttons-icon:before{font-size:14px}.elementor-control-type-wysiwyg .wp-switch-editor{position:static;border:none;margin:0;color:var(--e-a-color-txt);font-size:10px;padding:3px 9px 4px}.elementor-control-type-wysiwyg .switch-html{border:solid var(--e-a-border-color-bold);border-width:0 1px}.elementor-control-type-wysiwyg .html-active .switch-tmce{background-color:transparent}.elementor-control-type-wysiwyg .html-active .switch-html,.elementor-control-type-wysiwyg .tmce-active .switch-tmce{background-color:var(--e-a-bg-active)}.elementor-control-type-wysiwyg .tmce-active .switch-html{background-color:transparent}.elementor-control-type-wysiwyg .mce-toolbar-grp,.elementor-control-type-wysiwyg .mce-toolbar .mce-btn-group .mce-btn.mce-listbox,.elementor-control-type-wysiwyg .quicktags-toolbar{background-color:var(--e-a-bg-default)}.elementor-control-type-wysiwyg .mce-toolbar .mce-btn-group .mce-btn.mce-listbox button{color:var(--e-a-color-txt)}.elementor-control-type-wysiwyg .mce-toolbar-grp>div{padding:0 3px}.elementor-control-type-wysiwyg .elementor-wp-editor{box-sizing:border-box}.elementor-control-type-wysiwyg .mce-ico{color:var(--e-a-color-txt);font-size:16px}.elementor-control-type-wysiwyg .mce-btn-group .mce-btn.mce-active,.elementor-control-type-wysiwyg .mce-btn-group .mce-btn:active,.elementor-control-type-wysiwyg .mce-btn-group .mce-btn:hover{color:var(--e-a-color-txt-active);background:var(--e-a-bg-hover);border-color:var(--e-a-border-color);box-shadow:none}.elementor-control-type-wysiwyg .mce-btn-group .mce-btn.mce-active i,.elementor-control-type-wysiwyg .mce-btn-group .mce-btn:active i,.elementor-control-type-wysiwyg .mce-btn-group .mce-btn:hover i{color:var(--e-a-color-txt-active)}.elementor-control-type-wysiwyg .mce-path{padding:5px 10px}.elementor-control-type-wysiwyg .mce-path-item{font-size:12px;color:var(--e-a-color-txt)}.elementor-control-type-wysiwyg .mce-top-part:before{box-shadow:none}.elementor-control-type-wysiwyg .elementor-control-dynamic-switcher{border:none}@media screen and (prefers-color-scheme:dark){#wp-link-wrap{color-scheme:light;--e-a-color-txt:#515962;--e-a-bg-default:#fff;--e-a-border-color-bold:#d5d8dc;--e-a-color-primary-bold:#d004d4}#wp-link{color:var(--e-a-color-txt)}#wp-link input{background-color:var(--e-a-bg-default)}#wp-link input,#wp-link input[type=checkbox]{border-color:var(--e-a-border-color-bold)}#wp-link input[type=checkbox]:checked{background:var(--e-a-color-primary-bold)}#wp-link input.button-primary{background:#2271b1;border-color:#2271b1;color:#fff}}.ui-resizable-n{top:-5px}.ui-resizable-e{right:-5px}.ui-resizable-s{bottom:-5px}.ui-resizable-w{left:-5px}.ui-resizable-ne{top:-5px;right:-5px}.ui-resizable-nw{top:-5px;left:-5px}.ui-resizable-se{bottom:-5px;right:-5px}.ui-resizable-sw{bottom:-5px;left:-5px}.ui-resizable-n,.ui-resizable-s{left:0;height:10px;width:100%;cursor:ns-resize}.ui-resizable-e,.ui-resizable-w{top:0;height:100%;width:10px;cursor:ew-resize}.ui-resizable-ne,.ui-resizable-nw,.ui-resizable-se,.ui-resizable-sw{height:15px;width:15px}.ui-resizable-nw,.ui-resizable-se{cursor:nwse-resize}.ui-resizable-ne,.ui-resizable-sw{cursor:nesw-resize}.ui-resizable-handle{position:absolute}.ui-resizable-resizing{pointer-events:none}:root{--e-p-draggable-color:#f0abfc;--e-p-border-section:#f3bafd;--e-p-border-section-hover:#f0abfc;--e-p-border-section-invert:#0c0d0e;--e-p-border-con:#f3bafd;--e-p-border-con-hover:#f0abfc;--e-p-border-con-invert:#0c0d0e;--e-p-border-column:#9da5ae;--e-p-border-column-hover:#818a96;--e-p-border-column-invert:#0c0d0e;--e-p-border-con-in:#9da5ae;--e-p-border-con-in-hover:#818a96;--e-p-border-con-in-invert:#0c0d0e;--e-p-border-widget:#f3bafd;--e-p-border-widget-hover:#f0abfc;--e-p-border-widget-invert:#0c0d0e;--e-p-border-global:#5eead4;--e-p-border-global-hover:#1dddbf;--e-p-border-global-invert:#0c0d0e}.elementor-add-section{all:initial;display:flex;max-width:1160px;position:relative;margin-inline:auto}.elementor-add-section:not(.elementor-dragging-on-child) .elementor-add-section-inner{border:2px dashed var(--e-a-border-color-bold);background-color:hsla(0,0%,100%,.5)}.elementor-add-section.elementor-dragging-on-child .elementor-add-section-inner{border:2px dashed var(--e-a-color-primary)}.elementor-add-section[data-view=choose-action] .e-view:not(.elementor-add-new-section),.elementor-add-section[data-view=select-container-preset-grid] .e-view:not(.e-con-select-preset-grid),.elementor-add-section[data-view=select-container-preset] .e-view:not(.e-con-select-preset),.elementor-add-section[data-view=select-preset] .e-view:not(.elementor-select-preset),.elementor-add-section[data-view=select-type] .e-view:not(.e-con-select-type){display:none}.elementor-add-section-inner{text-align:center;margin:20px;padding:40px 0;display:flex;justify-content:center;flex-grow:1}.elementor-add-new-section{display:flex;justify-content:center;flex-wrap:wrap;gap:5px}.elementor-add-section-area-button{padding:12px;height:40px;width:40px;border-radius:50%;font-size:16px;display:flex;outline:none;border:none;background-color:var(--e-a-bg-active);color:var(--e-a-color-black);transition:var(--e-a-transition-hover);cursor:pointer}.elementor-add-section-area-button:hover{background-color:var(--e-a-bg-active-bold);color:var(--e-a-color-black)}.elementor-add-section-area-button i{margin:0}.elementor-add-section-area-button.e-button-primary{background-color:var(--e-a-btn-bg-primary);color:var(--e-a-btn-color)}.elementor-add-section-area-button.e-button-primary:hover{background-color:var(--e-a-btn-bg-primary-hover);color:var(--e-a-btn-color)}.elementor-add-section-drag-title,.elementor-select-preset-title{font-family:var(--e-a-font-family);font-size:13px;line-height:1;color:var(--e-a-color-txt)}.elementor-add-section-drag-title{font-style:italic;font-weight:400;margin-block-start:10px;width:100%}.elementor-select-preset-title{font-weight:500;text-transform:uppercase}.elementor-add-section-close{right:40px}.elementor-add-section-back{left:40px}.elementor-wizard-icon{position:absolute;top:40px;font-size:20px;cursor:pointer;line-height:1;color:var(--e-a-color-txt)}.elementor-wizard-icon:hover{color:var(--e-a-color-txt-hover)}.elementor-select-preset-list{list-style:none;padding:0 25px;margin:20px auto 0;overflow:hidden;max-width:700px}.elementor-select-preset-list .elementor-preset{cursor:pointer;margin:0;padding:10px;float:right;max-width:33.333%}.elementor-select-preset-list .elementor-preset:not(:hover) path,.elementor-select-preset-list .elementor-preset:not(:hover) rect{fill:var(--e-a-bg-active-bold);transition:all .3s}.elementor-select-preset-list .elementor-preset:hover path,.elementor-select-preset-list .elementor-preset:hover rect{fill:var(--e-a-color-txt)}.elementor-select-preset-list .elementor-preset .e-preset--container{position:relative;display:flex}.elementor-select-preset-list .elementor-preset .e-preset--container:before{content:var(--text);font-family:var(--e-a-font-family);font-size:13px;font-weight:500;position:absolute;left:50%;top:50%;color:var(--e-a-color-white);transform:translate(-50%,-50%)}.elementor-select-preset-list .elementor-preset svg{height:50px;width:100%;transform:rotate(180deg)}.elementor-add-section[data-view=choose-action] .elementor-add-section-back,.elementor-add-section[data-view=select-preset] .elementor-add-section-back,.elementor-add-section[data-view=select-type] .elementor-add-section-back{display:none}#elementor-add-new-section{margin:60px auto}#elementor-add-new-section[data-view=choose-action] .elementor-add-section-close{display:none}.elementor-add-section-inline{margin:10px auto;width:100%}@keyframes placeholder-section{0%{height:0;opacity:0}to{height:40px;opacity:.9}}@keyframes placeholder-widget{0%{height:0;opacity:0}to{height:10px;opacity:.9}}@keyframes section-outline{0%{opacity:0}to{opacity:1}}body.elementor-editor-active .elementor.elementor-edit-mode .article,body.elementor-editor-active .elementor.elementor-edit-mode.layout-section .entry-content{overflow:visible}body.elementor-editor-active .elementor.elementor-edit-mode .elementor-element-overlay .elementor-editor-element-settings{clear:unset}body.elementor-editor-active .elementor.elementor-edit-mode .elementor-element.elementor-section{overflow:visible}.elementor-edit-area .animated{animation-fill-mode:none!important}.elementor-edit-area ul.elementor-editor-element-settings{word-break:normal;padding:0}.elementor-edit-area .gallery{opacity:1}.pen{position:relative;outline:none}.pen:not([data-elementor-inline-editing-toolbar=advanced]){white-space:pre-wrap}.pen-menu{box-shadow:1px 2px 3px -2px #222;background-color:#3f444b;position:fixed;overflow:hidden;border-radius:3px;z-index:9999}.pen-menu:after{top:100%;content:"";position:absolute;border:6px solid transparent;border-block-start-color:#3f444b;left:50%;transform:translateX(-50%)}.pen-menu-below:after{top:0;transform:translateX(-50%) translateY(-100%) rotate(180deg)}.pen-icon{position:relative;display:flex;align-items:center;justify-content:center;height:35px;padding:0 10px;font-size:21px;color:#d5d8dc;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none}.pen-icon:hover{background:#1f2124}.pen-icon[data-action=closeGroup],.pen-icon[data-group]{display:none}.pen-icon[data-action=close]:before{content:"";position:absolute;right:0;height:60%;width:1px;background-color:#1f2124}.pen-icon.active{background-color:#1f2124;box-shadow:inset 2px 2px 4px #1f2124}.pen-group-icon:after{font-family:eicons;font-size:12px;content:"\e92a";padding-inline-start:4px;color:#2563eb}.pen-input-wrapper{align-items:center}.pen-input-wrapper .pen-url-input{font-size:12px;line-height:1.5;padding:0;padding-inline-start:10px;padding-inline-end:10px;width:250px;direction:ltr}.pen-input-wrapper .pen-url-input,.pen-input-wrapper .pen-url-input:focus{background-color:transparent;border:none;outline:none;box-shadow:none;color:#fff}.pen-input-wrapper .pen-url-input::-moz-placeholder{color:#d5d8dc}.pen-input-wrapper .pen-url-input::placeholder{color:#d5d8dc}.pen-input-label{margin:0;margin-inline-end:-1px}.pen-placeholder:before{content:attr(data-pen-placeholder);position:absolute;font-weight:400;color:#757575;opacity:.6}.pen-external-url-checkbox{display:none}.pen-external-url-checkbox:checked+i{color:#fff}.elementor-inline-editing i:not([class]){font-style:italic}.elementor-inline-editing b{font-weight:700}.elementor-inline-editing u{text-decoration:underline}.e-element-color-picker{--primary-color:#2563eb;--swatch-size:25px;cursor:default;display:flex;position:absolute;width:calc((var(--count) + 1) * var(--swatch-size));height:var(--swatch-size);top:var(--top);left:var(--left);right:var(--right,unset);border-radius:3px;z-index:9998;background-color:var(--primary-color);padding:1px;box-sizing:content-box;transition:opacity .3s,width .3s}.e-element-color-picker,.e-element-color-picker.e-picker-hidden{opacity:0;pointer-events:none}.e-element-color-picker:before{content:"";flex:0 1 var(--swatch-size);max-width:100%;height:100%;box-sizing:border-box;text-align:center}.e-element-color-picker:after{content:"\e91e";font-family:eicons;color:#fff;font-size:1rem;line-height:var(--swatch-size);position:absolute;left:.3rem;z-index:-1}.e-element-color-picker__swatch{flex:1 0 var(--swatch-size);max-width:100%;height:100%;cursor:pointer;transition:var(--e-a-transition-hover);position:relative;overflow:hidden;border-radius:inherit;background:linear-gradient(var(--color),var(--color)),linear-gradient(var(--primary-color),var(--primary-color))}.e-element-color-picker__swatch:not(:first-child){border-left:1px solid var(--primary-color)}.e-element-color-picker__swatch:before{content:attr(data-text);position:absolute;left:50%;top:50%;opacity:0;color:var(--color);font-size:10px;font-weight:300;font-family:Roboto,Arial,Helvetica,sans-serif;transform:translate(-50%,-50%);filter:hue-rotate(180deg) grayscale(1) contrast(999) invert(1);transition:inherit}.e-element-color-picker__swatch:hover{flex-basis:calc(2 * var(--swatch-size));flex-shrink:0}.e-element-color-picker__swatch:hover:before{opacity:1}.e-ui-state--elements-color-picker-color-picking__on :not(.e-element-color-picker__swatch){cursor:url(../images/eyedropper.svg) 0 20,pointer}.e-ui-state--elements-color-picker-color-picking__on .e-element-color-picker:not(.e-picker-hidden):hover,.e-ui-state--elements-color-picker-color-picking__on .elementor-element:hover>.e-element-color-picker:not(.e-picker-hidden),.e-ui-state--elements-color-picker-color-picking__on .elementor-widget-container:hover+.e-element-color-picker:not(.e-picker-hidden){opacity:1;pointer-events:all}.e-ui-state--elements-color-picker-color-picking__on .elementor-section:hover{outline:1px solid #2563eb}[class*=" eicon-flex"],[class^=eicon-flex]{transition:all .3s;--is-ltr:1;--is-rtl:0;--rotation-direction:calc(var(--is-ltr) - var(--is-rtl));--is-ltr:0;--is-rtl:1}[class*=" eicon-flex"].eicon-inline,[class^=eicon-flex].eicon-inline{max-height:1em;max-width:1em}[class*=" eicon-flex"]:is(.eicon-justify-start-h,.eicon-justify-end-h),[class^=eicon-flex]:is(.eicon-justify-start-h,.eicon-justify-end-h){--rotation-direction:calc(var(--is-ltr) + var(--is-rtl))}:is(.e-ui-state--document-direction-mode__column,.e-ui-state--document-direction-mode__column-reverse) [class*=" eicon-flex"]:not(.eicon-wrap):not(.eicon-nowrap):not(.eicon-grow),:is(.e-ui-state--document-direction-mode__column,.e-ui-state--document-direction-mode__column-reverse) [class^=eicon-flex]:not(.eicon-wrap):not(.eicon-nowrap):not(.eicon-grow){transform:rotate(calc(var(--rotation-direction) * 90deg))}.e-ui-state--document-direction-mode__column-reverse [class*=" eicon-flex"]:not(.eicon-wrap):not(.eicon-nowrap):not(.eicon-grow):is(.eicon-justify-start-h,.eicon-justify-end-h,.eicon-order-start,.eicon-order-end),.e-ui-state--document-direction-mode__column-reverse [class^=eicon-flex]:not(.eicon-wrap):not(.eicon-nowrap):not(.eicon-grow):is(.eicon-justify-start-h,.eicon-justify-end-h,.eicon-order-start,.eicon-order-end),:is(.e-ui-state--document-direction-mode__column,.e-ui-state--document-direction-mode__column-reverse) [class*=" eicon-flex"]:not(.eicon-wrap):not(.eicon-nowrap):not(.eicon-grow):is(.eicon-align-start-v,.eicon-align-end-v),:is(.e-ui-state--document-direction-mode__column,.e-ui-state--document-direction-mode__column-reverse) [class^=eicon-flex]:not(.eicon-wrap):not(.eicon-nowrap):not(.eicon-grow):is(.eicon-align-start-v,.eicon-align-end-v){transform:rotate(calc(var(--rotation-direction) * -90deg))}.e-ui-state--document-direction-mode__row [class*=" eicon-flex"]:not(.eicon-wrap):not(.eicon-nowrap):not(.eicon-grow):is(.eicon-justify-start-h,.eicon-justify-end-h,.eicon-order-start,.eicon-order-end),.e-ui-state--document-direction-mode__row [class^=eicon-flex]:not(.eicon-wrap):not(.eicon-nowrap):not(.eicon-grow):is(.eicon-justify-start-h,.eicon-justify-end-h,.eicon-order-start,.eicon-order-end){transform:rotate(calc(var(--is-rtl) * 180deg))}.e-ui-state--document-direction-mode__row-reverse [class*=" eicon-flex"]:not(.eicon-wrap):not(.eicon-nowrap):not(.eicon-grow):is(.eicon-justify-start-h,.eicon-justify-end-h,.eicon-order-start,.eicon-order-end),.e-ui-state--document-direction-mode__row-reverse [class^=eicon-flex]:not(.eicon-wrap):not(.eicon-nowrap):not(.eicon-grow):is(.eicon-justify-start-h,.eicon-justify-end-h,.eicon-order-start,.eicon-order-end){transform:rotate(calc(var(--is-ltr) * 180deg))}html.elementor-html{margin-block-start:0!important}.elementor-edit-area{position:relative}.elementor.loading{opacity:.5}.elementor-edit-area-active{--outline-color:var(--e-p-border-con-active)}.elementor-edit-area-active,.elementor-edit-area-active .e-con{--primary-color:var(--e-p-border-con);--secondary-color:var(--e-p-border-con-hover)}.elementor-edit-area-active .e-con{--outline-color:var(--outline-color)}.elementor-edit-area-active .e-con.e-con-boxed.elementor-html5dnd-current-element,.elementor-edit-area-active .e-con.e-dragging-over,.elementor-edit-area-active .e-con.elementor-dragging-on-child{outline:1px solid var(--outline-color)}.elementor-edit-area-active .e-grid-outline{display:none}.elementor-edit-area-active .elementor-element-editable.e-grid.e-con-full>.e-grid-outline{padding-block-start:var(--bc-padding-block-start,var(--padding-block-start));padding-block-end:var(--bc-padding-block-end,var(--padding-block-end));display:grid;position:absolute;top:0;bottom:0;pointer-events:none;grid-gap:var(--gap);justify-items:var(--justify-items);align-items:var(--align-items);grid-auto-flow:var(--grid-auto-flow);justify-content:var(--grid-justify-content);align-content:var(--grid-align-content);min-height:var(--min-height);padding-inline-end:var(--bc-padding-inline-end,var(--padding-inline-end));padding-inline-start:var(--bc-padding-inline-start,var(--padding-inline-start));width:100%;left:0}.elementor-edit-area-active .elementor-element-editable.e-grid.e-con-boxed>.e-con-inner{position:relative}.elementor-edit-area-active .elementor-element-editable.e-grid.e-con-boxed>.e-con-inner>.e-grid-outline{padding-block-start:var(--bc-padding-block-start,var(--padding-block-start));padding-block-end:var(--bc-padding-block-end,var(--padding-block-end));display:grid;position:absolute;top:0;bottom:0;pointer-events:none;grid-gap:var(--gap);justify-items:var(--justify-items);align-items:var(--align-items);grid-auto-flow:var(--grid-auto-flow);justify-content:var(--grid-justify-content);align-content:var(--grid-align-content);min-height:var(--min-height);width:var(--width);margin:0 auto}.elementor-edit-area-active .elementor-element-editable.e-grid .e-grid-outline-item{border:1px dashed #9da5ae;pointer-events:none;width:100%;height:100%}.elementor-edit-area-active .elementor-inner-section:first-child{margin-block-start:15px}.elementor-edit-area-active .elementor-widget-wrap.elementor-element-empty{min-height:30px}@media (min-width:768px){.elementor-edit-area-active .elementor-widget-wrap.elementor-element-empty{margin:10px}}.elementor-edit-area-active .elementor-column{min-width:25px}.elementor-edit-area-active .elementor-widget.elementor-loading{opacity:.3}.elementor-edit-area-active .elementor-widget.elementor-element-edit-mode:hover{box-shadow:0 0 0 1px var(--e-p-border-widget)}.elementor-edit-area-active .elementor-widget.elementor-element-editable,.elementor-edit-area-active .elementor-widget.elementor-element-editable:hover{box-shadow:0 0 0 2px var(--e-p-border-widget)}.elementor-edit-area-active .elementor-widget:not(:hover) .elementor-editor-element-settings{display:none}.elementor-edit-area-active .elementor-widget.ui-draggable-dragging{pointer-events:none}.elementor-edit-area-active .elementor-editor-element-setting{cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0;margin:0;font-size:11px;color:var(--e-p-border-widget-invert);width:25px;transition:var(--e-a-transition-hover)}.elementor-edit-area-active .elementor-inline-editing{min-height:15px}.elementor-edit-area-active .elementor-edit-hidden{display:none}.elementor-section-wrap:empty{min-height:25px}.elementor-section-wrap>:first-child>.elementor-element-overlay{z-index:9999}.elementor-element>.elementor-element-overlay{position:absolute;top:0;left:0;letter-spacing:0;z-index:9998;pointer-events:none}.elementor-element-empty .elementor-sortable-placeholder{display:none}.elementor-element.elementor-widget-empty{background-color:rgba(213,216,220,.8)}.elementor-element.elementor-widget-empty .elementor-widget-empty-icon{color:#babfc5;font-size:22px;display:block;text-align:center;padding:10px 0}.elementor-element:not(:hover):not(.elementor-element-editable)>.elementor-element-overlay .elementor-editor-element-settings{display:none}.elementor-element--toggle-edit-tools>.elementor-element-overlay .elementor-editor-element-edit:not(.elementor-active)~*{width:0;font-size:0}.elementor-element[data-side=bottom]+.elementor-element:before,.elementor-element[data-side=bottom]:last-child:after,.elementor-element[data-side=top]:before{content:"";background-color:var(--e-p-draggable-color);transition-timing-function:ease-out;opacity:.9;height:10px;animation:placeholder-widget .5s;display:block}.elementor-element.elementor-absolute,.elementor-element.elementor-fixed{cursor:grab}.elementor-element.elementor-absolute:active,.elementor-element.elementor-fixed:active{cursor:grabbing}.elementor-element.elementor-absolute .eicon-edit:before,.elementor-element.elementor-fixed .eicon-edit:before{content:"\e902"}.elementor-editor-element-settings{position:absolute;display:flex;height:26px;list-style:none;margin:0;padding:0;font-family:var(--e-a-font-family);font-size:13px;font-weight:400;font-style:normal;line-height:1;z-index:1;pointer-events:all;transition:var(--e-a-transition-hover)}@media (min-width:1025px){.elementor-editor-element-edit{cursor:move}}.elementor-empty-view{position:absolute;top:0;bottom:0;left:0;right:0;z-index:1}.elementor-first-add{text-align:center;border:1px dashed var(--e-a-border-color-bold);display:flex;height:100%;width:100%;position:absolute;align-items:center;justify-content:center}.elementor-first-add .elementor-icon{font-size:19px;color:#9da5ae;cursor:pointer}.elementor-sortable-helper{position:absolute;cursor:move;border:var(--e-a-border);border-radius:var(--e-a-border-radius);background-color:var(--e-a-bg-active);border-color:var(--e-a-border-color-accent);color:var(--e-a-color-active);text-align:center}.elementor-sortable-helper .icon{font-size:28px;padding-block-start:15px;line-height:1}.elementor-sortable-helper .title-wrapper{display:flex;height:40px;align-items:center;justify-content:center}.elementor-sortable-helper .title{font-size:11px}.elementor-sortable-placeholder:not(.elementor-column-placeholder){background-color:var(--e-p-draggable-color);animation-duration:.25s;opacity:.9;width:100%;align-self:stretch}.e-con .elementor-first-add .elementor-sortable-placeholder:not(.elementor-column-placeholder){align-self:center}.e-swappable--active>.elementor-sortable-placeholder:not(.elementor-column-placeholder){display:none}.elementor-section-placeholder{height:40px;animation-name:placeholder-section}.elementor-widget-placeholder{height:10px;animation-name:placeholder-widget}.elementor-draggable-over:not([data-dragged-element=section]):not([data-dragged-is-inner=true])>.elementor-empty-view>.elementor-first-add:after,.elementor-first-add.elementor-html5dnd-current-element:after{content:"";background-color:var(--e-p-draggable-color);transition-timing-function:ease-out;opacity:.9;height:10px;animation:placeholder-widget .5s;width:100%}.e-con .elementor-draggable-over:not([data-dragged-element=section]):not([data-dragged-is-inner=true])>.elementor-empty-view>.elementor-first-add:after,.e-con .elementor-first-add.elementor-html5dnd-current-element:after,.elementor-draggable-over:not([data-dragged-element=section]):not([data-dragged-is-inner=true])>.elementor-empty-view>.elementor-first-add .elementor-icon,.elementor-draggable-over[data-dragged-element=section][data-dragged-is-inner=true] .elementor-inner-column .elementor-sortable-placeholder,.elementor-editor-preview .elementor-add-section,.elementor-editor-preview .elementor-add-section-inline,.elementor-editor-preview .elementor-element-overlay,.elementor-editor-preview .elementor-empty,.elementor-editor-preview .elementor-empty-view,.elementor-editor-preview .elementor-widget-empty,.elementor-first-add.elementor-html5dnd-current-element .elementor-icon{display:none}.e-preview--show-hidden-elements[data-elementor-device-mode=desktop] .elementor-edit-area-active .elementor-hidden-desktop,.e-preview--show-hidden-elements[data-elementor-device-mode=laptop] .elementor-edit-area-active .elementor-hidden-laptop,.e-preview--show-hidden-elements[data-elementor-device-mode=mobile] .elementor-edit-area-active .elementor-hidden-mobile,.e-preview--show-hidden-elements[data-elementor-device-mode=mobile_extra] .elementor-edit-area-active .elementor-hidden-mobile_extra,.e-preview--show-hidden-elements[data-elementor-device-mode=tablet] .elementor-edit-area-active .elementor-hidden-tablet,.e-preview--show-hidden-elements[data-elementor-device-mode=tablet_extra] .elementor-edit-area-active .elementor-hidden-tablet_extra,.e-preview--show-hidden-elements[data-elementor-device-mode=widescreen] .elementor-edit-area-active .elementor-hidden-widescreen{display:inherit;background:repeating-linear-gradient(125deg,rgba(0,0,0,.05),rgba(0,0,0,.05) 1px,transparent 2px,transparent 9px);border:1px solid rgba(0,0,0,.02)}.e-preview--show-hidden-elements[data-elementor-device-mode=desktop] .elementor-edit-area-active .elementor-hidden-desktop.e-con>.elementor-element-overlay,.e-preview--show-hidden-elements[data-elementor-device-mode=desktop] .elementor-edit-area-active .elementor-hidden-desktop.elementor-section>.elementor-element-overlay,.e-preview--show-hidden-elements[data-elementor-device-mode=laptop] .elementor-edit-area-active .elementor-hidden-laptop.e-con>.elementor-element-overlay,.e-preview--show-hidden-elements[data-elementor-device-mode=laptop] .elementor-edit-area-active .elementor-hidden-laptop.elementor-section>.elementor-element-overlay,.e-preview--show-hidden-elements[data-elementor-device-mode=mobile] .elementor-edit-area-active .elementor-hidden-mobile.e-con>.elementor-element-overlay,.e-preview--show-hidden-elements[data-elementor-device-mode=mobile] .elementor-edit-area-active .elementor-hidden-mobile.elementor-section>.elementor-element-overlay,.e-preview--show-hidden-elements[data-elementor-device-mode=mobile_extra] .elementor-edit-area-active .elementor-hidden-mobile_extra.e-con>.elementor-element-overlay,.e-preview--show-hidden-elements[data-elementor-device-mode=mobile_extra] .elementor-edit-area-active .elementor-hidden-mobile_extra.elementor-section>.elementor-element-overlay,.e-preview--show-hidden-elements[data-elementor-device-mode=tablet] .elementor-edit-area-active .elementor-hidden-tablet.e-con>.elementor-element-overlay,.e-preview--show-hidden-elements[data-elementor-device-mode=tablet] .elementor-edit-area-active .elementor-hidden-tablet.elementor-section>.elementor-element-overlay,.e-preview--show-hidden-elements[data-elementor-device-mode=tablet_extra] .elementor-edit-area-active .elementor-hidden-tablet_extra.e-con>.elementor-element-overlay,.e-preview--show-hidden-elements[data-elementor-device-mode=tablet_extra] .elementor-edit-area-active .elementor-hidden-tablet_extra.elementor-section>.elementor-element-overlay,.e-preview--show-hidden-elements[data-elementor-device-mode=widescreen] .elementor-edit-area-active .elementor-hidden-widescreen.e-con>.elementor-element-overlay,.e-preview--show-hidden-elements[data-elementor-device-mode=widescreen] .elementor-edit-area-active .elementor-hidden-widescreen.elementor-section>.elementor-element-overlay{background-color:var(--e-a-bg-hover);mix-blend-mode:color}.e-preview--show-hidden-elements[data-elementor-device-mode=desktop] .elementor-edit-area-active .elementor-hidden-desktop.e-con:before,.e-preview--show-hidden-elements[data-elementor-device-mode=desktop] .elementor-edit-area-active .elementor-hidden-desktop.elementor-section:before,.e-preview--show-hidden-elements[data-elementor-device-mode=laptop] .elementor-edit-area-active .elementor-hidden-laptop.e-con:before,.e-preview--show-hidden-elements[data-elementor-device-mode=laptop] .elementor-edit-area-active .elementor-hidden-laptop.elementor-section:before,.e-preview--show-hidden-elements[data-elementor-device-mode=mobile] .elementor-edit-area-active .elementor-hidden-mobile.e-con:before,.e-preview--show-hidden-elements[data-elementor-device-mode=mobile] .elementor-edit-area-active .elementor-hidden-mobile.elementor-section:before,.e-preview--show-hidden-elements[data-elementor-device-mode=mobile_extra] .elementor-edit-area-active .elementor-hidden-mobile_extra.e-con:before,.e-preview--show-hidden-elements[data-elementor-device-mode=mobile_extra] .elementor-edit-area-active .elementor-hidden-mobile_extra.elementor-section:before,.e-preview--show-hidden-elements[data-elementor-device-mode=tablet] .elementor-edit-area-active .elementor-hidden-tablet.e-con:before,.e-preview--show-hidden-elements[data-elementor-device-mode=tablet] .elementor-edit-area-active .elementor-hidden-tablet.elementor-section:before,.e-preview--show-hidden-elements[data-elementor-device-mode=tablet_extra] .elementor-edit-area-active .elementor-hidden-tablet_extra.e-con:before,.e-preview--show-hidden-elements[data-elementor-device-mode=tablet_extra] .elementor-edit-area-active .elementor-hidden-tablet_extra.elementor-section:before,.e-preview--show-hidden-elements[data-elementor-device-mode=widescreen] .elementor-edit-area-active .elementor-hidden-widescreen.e-con:before,.e-preview--show-hidden-elements[data-elementor-device-mode=widescreen] .elementor-edit-area-active .elementor-hidden-widescreen.elementor-section:before{content:"";display:block;position:absolute;top:0;left:0;width:100%;height:100%;background-color:hsla(0,0%,100%,.6);z-index:9997}.e-preview--show-hidden-elements[data-elementor-device-mode=desktop] .elementor-edit-area-active .elementor-hidden-desktop.e-con,.e-preview--show-hidden-elements[data-elementor-device-mode=laptop] .elementor-edit-area-active .elementor-hidden-laptop.e-con,.e-preview--show-hidden-elements[data-elementor-device-mode=mobile] .elementor-edit-area-active .elementor-hidden-mobile.e-con,.e-preview--show-hidden-elements[data-elementor-device-mode=mobile_extra] .elementor-edit-area-active .elementor-hidden-mobile_extra.e-con,.e-preview--show-hidden-elements[data-elementor-device-mode=tablet] .elementor-edit-area-active .elementor-hidden-tablet.e-con,.e-preview--show-hidden-elements[data-elementor-device-mode=tablet_extra] .elementor-edit-area-active .elementor-hidden-tablet_extra.e-con,.e-preview--show-hidden-elements[data-elementor-device-mode=widescreen] .elementor-edit-area-active .elementor-hidden-widescreen.e-con{display:var(--display)}.e-preview--show-hidden-elements[data-elementor-device-mode=desktop] .elementor-edit-area-active .elementor-hidden-desktop.elementor-inner-section .elementor-container,.e-preview--show-hidden-elements[data-elementor-device-mode=laptop] .elementor-edit-area-active .elementor-hidden-laptop.elementor-inner-section .elementor-container,.e-preview--show-hidden-elements[data-elementor-device-mode=mobile] .elementor-edit-area-active .elementor-hidden-mobile.elementor-inner-section .elementor-container,.e-preview--show-hidden-elements[data-elementor-device-mode=mobile_extra] .elementor-edit-area-active .elementor-hidden-mobile_extra.elementor-inner-section .elementor-container,.e-preview--show-hidden-elements[data-elementor-device-mode=tablet] .elementor-edit-area-active .elementor-hidden-tablet.elementor-inner-section .elementor-container,.e-preview--show-hidden-elements[data-elementor-device-mode=tablet_extra] .elementor-edit-area-active .elementor-hidden-tablet_extra.elementor-inner-section .elementor-container,.e-preview--show-hidden-elements[data-elementor-device-mode=widescreen] .elementor-edit-area-active .elementor-hidden-widescreen.elementor-inner-section .elementor-container{width:100%}.e-preview--show-hidden-elements[data-elementor-device-mode=desktop] .elementor-edit-area-active .elementor-hidden-desktop>.elementor-widget-container,.e-preview--show-hidden-elements[data-elementor-device-mode=desktop] .elementor-edit-area-active .elementor-hidden-desktop>.elementor-widget-wrap,.e-preview--show-hidden-elements[data-elementor-device-mode=laptop] .elementor-edit-area-active .elementor-hidden-laptop>.elementor-widget-container,.e-preview--show-hidden-elements[data-elementor-device-mode=laptop] .elementor-edit-area-active .elementor-hidden-laptop>.elementor-widget-wrap,.e-preview--show-hidden-elements[data-elementor-device-mode=mobile] .elementor-edit-area-active .elementor-hidden-mobile>.elementor-widget-container,.e-preview--show-hidden-elements[data-elementor-device-mode=mobile] .elementor-edit-area-active .elementor-hidden-mobile>.elementor-widget-wrap,.e-preview--show-hidden-elements[data-elementor-device-mode=mobile_extra] .elementor-edit-area-active .elementor-hidden-mobile_extra>.elementor-widget-container,.e-preview--show-hidden-elements[data-elementor-device-mode=mobile_extra] .elementor-edit-area-active .elementor-hidden-mobile_extra>.elementor-widget-wrap,.e-preview--show-hidden-elements[data-elementor-device-mode=tablet] .elementor-edit-area-active .elementor-hidden-tablet>.elementor-widget-container,.e-preview--show-hidden-elements[data-elementor-device-mode=tablet] .elementor-edit-area-active .elementor-hidden-tablet>.elementor-widget-wrap,.e-preview--show-hidden-elements[data-elementor-device-mode=tablet_extra] .elementor-edit-area-active .elementor-hidden-tablet_extra>.elementor-widget-container,.e-preview--show-hidden-elements[data-elementor-device-mode=tablet_extra] .elementor-edit-area-active .elementor-hidden-tablet_extra>.elementor-widget-wrap,.e-preview--show-hidden-elements[data-elementor-device-mode=widescreen] .elementor-edit-area-active .elementor-hidden-widescreen>.elementor-widget-container,.e-preview--show-hidden-elements[data-elementor-device-mode=widescreen] .elementor-edit-area-active .elementor-hidden-widescreen>.elementor-widget-wrap{filter:opacity(.4) saturate(0)}.e-preview--show-hidden-elements[data-elementor-device-mode=desktop] .elementor-edit-area-active .elementor-hidden-desktop.elementor-edit-hidden,.e-preview--show-hidden-elements[data-elementor-device-mode=laptop] .elementor-edit-area-active .elementor-hidden-laptop.elementor-edit-hidden,.e-preview--show-hidden-elements[data-elementor-device-mode=mobile] .elementor-edit-area-active .elementor-hidden-mobile.elementor-edit-hidden,.e-preview--show-hidden-elements[data-elementor-device-mode=mobile_extra] .elementor-edit-area-active .elementor-hidden-mobile_extra.elementor-edit-hidden,.e-preview--show-hidden-elements[data-elementor-device-mode=tablet] .elementor-edit-area-active .elementor-hidden-tablet.elementor-edit-hidden,.e-preview--show-hidden-elements[data-elementor-device-mode=tablet_extra] .elementor-edit-area-active .elementor-hidden-tablet_extra.elementor-edit-hidden,.e-preview--show-hidden-elements[data-elementor-device-mode=widescreen] .elementor-edit-area-active .elementor-hidden-widescreen.elementor-edit-hidden{display:none}.elementor-editor-container-settings,.elementor-editor-section-settings{height:24px;top:1px;left:50%;transform:translateX(-50%) translateY(-100%);background-color:var(--e-p-border-section);border-start-start-radius:5px;border-start-end-radius:5px;border-end-start-radius:0;border-end-end-radius:0}.elementor-editor-container-settings i.eicon-handle,.elementor-editor-section-settings i.eicon-handle{font-size:16px}.elementor-editor-container-settings .elementor-editor-element-setting:hover,.elementor-editor-section-settings .elementor-editor-element-setting:hover{background-color:var(--e-p-border-section-hover)}.elementor-editor-container-settings .elementor-editor-element-setting:first-child,.elementor-editor-section-settings .elementor-editor-element-setting:first-child{border-start-start-radius:5px;border-start-end-radius:0;border-end-start-radius:0;border-end-end-radius:0}.elementor-editor-container-settings .elementor-editor-element-setting:first-child:before,.elementor-editor-section-settings .elementor-editor-element-setting:first-child:before{content:"";position:absolute;top:2px;left:calc(100% - 1px);border-block-start:22px solid transparent;border-block-end:0 none transparent;border-inline-start:0 none transparent;border-inline-end:12px solid var(--e-p-border-section);transition:var(--e-a-transition-hover)}.elementor-editor-container-settings .elementor-editor-element-setting:first-child:hover:before,.elementor-editor-section-settings .elementor-editor-element-setting:first-child:hover:before{border-inline-end-color:var(--e-p-border-section-hover)}.elementor-editor-container-settings .elementor-editor-element-setting:last-child,.elementor-editor-section-settings .elementor-editor-element-setting:last-child{border-start-start-radius:0;border-start-end-radius:5px;border-end-start-radius:0;border-end-end-radius:0}.elementor-editor-container-settings .elementor-editor-element-setting:last-child:after,.elementor-editor-section-settings .elementor-editor-element-setting:last-child:after{content:"";position:absolute;top:2px;right:calc(100% - 1px);border-block-start:22px solid transparent;border-block-end:0 none transparent;border-inline-start:12px solid var(--e-p-border-section);border-inline-end:0 none transparent;transition:var(--e-a-transition-hover)}.elementor-editor-container-settings .elementor-editor-element-setting:last-child:hover:after,.elementor-editor-section-settings .elementor-editor-element-setting:last-child:hover:after{border-inline-start-color:var(--e-p-border-section-hover)}.e-handles-inside>.elementor-element-overlay>.elementor-editor-element-settings,.elementor-section--handles-inside>.elementor-element-overlay>.elementor-editor-element-settings{transform:translateX(-50%);border-start-start-radius:0;border-start-end-radius:0;border-end-start-radius:5px;border-end-end-radius:5px}.e-handles-inside>.elementor-element-overlay>.elementor-editor-element-settings .elementor-editor-element-setting:first-child,.elementor-section--handles-inside>.elementor-element-overlay>.elementor-editor-element-settings .elementor-editor-element-setting:first-child{border-start-start-radius:0;border-start-end-radius:0;border-end-start-radius:5px;border-end-end-radius:0}.e-handles-inside>.elementor-element-overlay>.elementor-editor-element-settings .elementor-editor-element-setting:first-child:before,.elementor-section--handles-inside>.elementor-element-overlay>.elementor-editor-element-settings .elementor-editor-element-setting:first-child:before{top:0;border-block-start:0 none transparent;border-block-end:22px solid transparent;border-inline-start:0 none transparent;border-inline-end:12px solid var(--e-p-border-section);transition:var(--e-a-transition-hover)}.e-handles-inside>.elementor-element-overlay>.elementor-editor-element-settings .elementor-editor-element-setting:last-child,.elementor-section--handles-inside>.elementor-element-overlay>.elementor-editor-element-settings .elementor-editor-element-setting:last-child{border-start-start-radius:0;border-start-end-radius:0;border-end-start-radius:0;border-end-end-radius:5px}.e-handles-inside>.elementor-element-overlay>.elementor-editor-element-settings .elementor-editor-element-setting:last-child:after,.elementor-section--handles-inside>.elementor-element-overlay>.elementor-editor-element-settings .elementor-editor-element-setting:last-child:after{top:0;border-block-start:0 none transparent;border-block-end:22px solid transparent;border-inline-start:12px solid var(--e-p-border-section);border-inline-end:0 none transparent;transition:var(--e-a-transition-hover)}.elementor-column>.elementor-element-overlay{right:0;bottom:0}.elementor-column>.elementor-element-overlay:after{position:absolute;left:0;right:0;top:0;bottom:0;outline:1px dashed var(--e-p-border-column)}.elementor-column:hover>.elementor-element-overlay:after{content:""}.elementor-column.elementor-element-editable>.elementor-element-overlay:after{content:"";outline:2px solid var(--e-p-border-column)}.elementor-column.elementor-dragging-on-child>.elementor-element-overlay{border:1px solid var(--e-p-draggable-color)}.elementor-column.elementor-dragging-on-child>.elementor-element-overlay:after{display:none}.elementor-column>.ui-resizable-e,.elementor-column>.ui-resizable-w{cursor:col-resize;width:7px;position:absolute;left:-5px;top:0;height:100%}.elementor-column:last-of-type>.ui-resizable-e,.elementor-column:last-of-type>.ui-resizable-w{display:none!important}@media (max-width:1024px){.elementor-column>.ui-resizable-e,.elementor-column>.ui-resizable-w{display:none!important}}.elementor-editor-column-settings{top:-1px;right:-1px;border-start-start-radius:0;border-start-end-radius:0;border-end-start-radius:0;border-end-end-radius:3px;overflow:hidden}.elementor-editor-column-settings .elementor-editor-element-setting{background-color:var(--e-p-border-column)}.elementor-editor-column-settings .elementor-editor-element-setting:hover{background-color:var(--e-p-border-column-hover)}.elementor-column-placeholder{position:relative}.elementor-column-placeholder:after,.elementor-column-placeholder:before{content:"";position:absolute;top:10px;bottom:10px;right:10px;left:10px}.elementor-column-placeholder:before{border:1px solid var(--e-p-border-column)}.elementor-column-placeholder:after{border:1px dashed var(--e-a-color-white)}.elementor-column-percents-tooltip{position:absolute;display:none;pointer-events:none;top:50%;transform:translateY(-50%);color:#fff;font-size:10px;background-color:var(--e-p-border-column);width:40px;padding:3.5px 0;text-align:center;z-index:1;line-height:1}.elementor-column-percents-tooltip:after{content:"";position:absolute;width:0;height:0;border:8.5px solid transparent;top:0}.elementor-column-percents-tooltip[data-side=left]{border-radius:3px 0 0 3px;right:15px}.elementor-column-percents-tooltip[data-side=left]:after{left:100%;border-left-color:var(--e-p-border-column);border-right-width:0}.elementor-column-percents-tooltip[data-side=right]{border-radius:0 3px 3px 0;left:15px}.elementor-column-percents-tooltip[data-side=right]:after{right:100%;border-right-color:var(--e-p-border-column);border-left-width:0}.elementor-editor-widget-settings{z-index:2;top:-1px;left:-1px;flex-direction:row-reverse;border-start-start-radius:0;border-start-end-radius:0;border-end-start-radius:3px;border-end-end-radius:0;overflow:hidden}.elementor-editor-widget-settings .elementor-editor-element-setting{background-color:var(--e-p-border-widget)}.elementor-editor-widget-settings .elementor-editor-element-setting:hover{background-color:var(--e-p-border-widget-hover)}.e-widget-pro-promotion .elementor-widget-container{border:2px dashed var(--e-a-border-color-bold);background-color:var(--e-a-color-white);padding:20px}.e-widget-pro-promotion .e-container{max-width:600px;margin:auto}.e-widget-pro-promotion .e-badge{border:1px solid var(--e-a-color-accent);color:var(--e-a-color-accent);background:var(--e-a-color-white);border-radius:100px;padding:4px 12px;font-size:.8em}.e-widget-pro-promotion p{margin-block-start:1em;margin-block-end:1em;text-align:center}.e-widget-pro-promotion p img{display:block;margin:0 auto 20px}.e-widget-pro-promotion .e-actions{display:flex;justify-content:center;gap:10px}.e-widget-pro-promotion .e-btn{font-size:14px;font-weight:500;line-height:1.2;padding:8px 16px;border-radius:var(--e-a-border-radius);background-color:var(--e-a-btn-bg-accent);color:var(--e-a-btn-color-invert);transition:var(--e-a-transition-hover)}.e-widget-pro-promotion .e-btn:focus,.e-widget-pro-promotion .e-btn:hover{background-color:var(--e-a-btn-bg-accent-hover);color:var(--e-a-btn-color-invert)}.e-widget-pro-promotion .e-btn:active{background-color:var(--e-a-btn-bg-accent-active)}.dialog-type-alert .dialog-buttons-wrapper .e-widget-pro-promotion .e-btn.dialog-button.dialog-cancel,.dialog-type-confirm .dialog-buttons-wrapper .e-widget-pro-promotion .e-btn.dialog-button.dialog-cancel,.e-widget-pro-promotion .dialog-type-alert .dialog-buttons-wrapper .e-btn.dialog-button.dialog-cancel,.e-widget-pro-promotion .dialog-type-confirm .dialog-buttons-wrapper .e-btn.dialog-button.dialog-cancel,.e-widget-pro-promotion .e-btn.e-btn-txt{background:transparent;color:var(--e-a-color-txt)}.dialog-type-alert .dialog-buttons-wrapper .e-widget-pro-promotion .e-btn.dialog-button.dialog-cancel:focus,.dialog-type-alert .dialog-buttons-wrapper .e-widget-pro-promotion .e-btn.dialog-button.dialog-cancel:hover,.dialog-type-confirm .dialog-buttons-wrapper .e-widget-pro-promotion .e-btn.dialog-button.dialog-cancel:focus,.dialog-type-confirm .dialog-buttons-wrapper .e-widget-pro-promotion .e-btn.dialog-button.dialog-cancel:hover,.e-widget-pro-promotion .dialog-type-alert .dialog-buttons-wrapper .e-btn.dialog-button.dialog-cancel:focus,.e-widget-pro-promotion .dialog-type-alert .dialog-buttons-wrapper .e-btn.dialog-button.dialog-cancel:hover,.e-widget-pro-promotion .dialog-type-confirm .dialog-buttons-wrapper .e-btn.dialog-button.dialog-cancel:focus,.e-widget-pro-promotion .dialog-type-confirm .dialog-buttons-wrapper .e-btn.dialog-button.dialog-cancel:hover,.e-widget-pro-promotion .e-btn.e-btn-txt:focus,.e-widget-pro-promotion .e-btn.e-btn-txt:hover{background:var(--e-a-bg-hover);color:var(--e-a-color-txt-hover)}.e-con>.elementor-element-overlay,.elementor-section>.elementor-element-overlay{right:0;bottom:0}.e-con>.elementor-element-overlay:after,.elementor-section>.elementor-element-overlay:after{position:absolute;left:1px;right:1px;top:1px;bottom:1px;outline:1px solid var(--e-p-border-con);animation:section-outline .75s}.e-con:hover>.elementor-element-overlay:after,.elementor-section:hover>.elementor-element-overlay:after{content:""}.e-con.elementor-element-editable>.elementor-element-overlay:after,.elementor-section.elementor-element-editable>.elementor-element-overlay:after{content:"";outline-width:2px}.e-con .e-con-inner .e-con>.elementor-element-overlay:after{outline:1px dashed var(--e-p-border-con-in)}.e-con .e-con-inner .e-con.elementor-element-editable>.elementor-element-overlay:after{outline:2px solid var(--e-p-border-con-in)}.e-con .elementor-empty-view{position:relative;width:100%;height:100%;min-height:100px}.e-con .elementor-empty-view .elementor-first-add{width:auto;height:auto;inset:0}.e-con:not(.e-grid) .elementor-empty-view{min-height:var(--min-height,100px)}.e-con.e-grid .elementor-empty-view{min-width:100px}.e-con .elementor-widget-placeholder{--size:10px;--margin-start:calc(-1 * var(--size));--margin-end:calc(-2 * var(--size));flex-shrink:0;align-self:stretch;z-index:1;pointer-events:none}.e-con.e-con--row>.e-con-inner>.elementor-widget-placeholder,.e-con.e-con--row>.elementor-widget-placeholder{position:relative;z-index:9999;width:var(--size);margin-inline-start:var(--margin-start);height:auto;min-height:100%;animation-name:dnd-placeholder-widget-vertical;animation-fill-mode:both}.e-con.e-con--row[data-nesting-level]:not([data-nesting-level="0"])>.e-con-inner>.elementor-widget-placeholder,.e-con.e-con--row[data-nesting-level]:not([data-nesting-level="0"])>.elementor-widget-placeholder{margin-inline-end:0;margin-inline-start:calc(var(--margin-start) + var(--margin-end))}.e-con.e-con--row[data-nesting-level]:not([data-nesting-level="0"])>.e-con-inner>:not(.elementor-element)+.elementor-widget-placeholder,.e-con.e-con--row[data-nesting-level]:not([data-nesting-level="0"])>:not(.elementor-element)+.elementor-widget-placeholder{margin-inline-end:var(--margin-end);margin-inline-start:var(--margin-start)}.e-con.e-grid.e-con--row .elementor-widget-placeholder.e-dragging-left,.e-con.e-grid.e-con--row .elementor-widget-placeholder.e-dragging-right,.e-con.e-grid.e-con--row>.e-con-inner .elementor-widget-placeholder.e-dragging-left,.e-con.e-grid.e-con--row>.e-con-inner .elementor-widget-placeholder.e-dragging-right{position:absolute;width:var(--size);height:100%;top:0;animation:grow-in-width .15s forwards}.e-con.e-grid.e-con--row .elementor-widget-placeholder.e-dragging-right,.e-con.e-grid.e-con--row>.e-con-inner .elementor-widget-placeholder.e-dragging-right{right:0;left:auto}.e-con.e-grid.e-con--row .elementor-widget-placeholder.e-dragging-left,.e-con.e-grid.e-con--row>.e-con-inner .elementor-widget-placeholder.e-dragging-left{left:0;right:auto}.e-con.e-con--column>.e-con-inner>.elementor-widget-placeholder,.e-con.e-con--column>.elementor-widget-placeholder{height:var(--size);margin-block-start:var(--margin-start);margin-block-end:var(--margin-end);animation-name:dnd-placeholder-widget-horizontal}.e-con.e-con--column>.elementor-widget-placeholder:nth-last-child(2){margin-block-start:calc(2 * var(--margin-start));--margin-end:0}.e-con.e-con--column>.e-con-inner>.elementor-widget-placeholder:last-child{--margin-end:0}.e-con .elementor-sortable-helper{height:84px;width:125px;z-index:-1}.e-con-inner>.e-con>.elementor-element-overlay .elementor-editor-element-setting,.e-con>.e-con>.elementor-element-overlay .elementor-editor-element-setting,.elementor-widget .e-con>.elementor-element-overlay .elementor-editor-element-setting{position:relative;background-color:var(--e-p-border-con-in)}.e-con-inner>.e-con>.elementor-element-overlay .elementor-editor-element-setting:hover,.e-con>.e-con>.elementor-element-overlay .elementor-editor-element-setting:hover,.elementor-widget .e-con>.elementor-element-overlay .elementor-editor-element-setting:hover{background-color:var(--e-p-border-con-in-hover)}.e-con-inner>.e-con>.elementor-element-overlay .elementor-editor-element-setting.elementor-editor-element-add,.e-con-inner>.e-con>.elementor-element-overlay .elementor-editor-element-setting.elementor-editor-element-edit+.elementor-editor-element-remove,.e-con-inner>.e-con>.elementor-element-overlay .elementor-editor-element-setting:first-child:before,.e-con-inner>.e-con>.elementor-element-overlay .elementor-editor-element-setting:last-child:after,.e-con>.e-con>.elementor-element-overlay .elementor-editor-element-setting.elementor-editor-element-add,.e-con>.e-con>.elementor-element-overlay .elementor-editor-element-setting.elementor-editor-element-edit+.elementor-editor-element-remove,.e-con>.e-con>.elementor-element-overlay .elementor-editor-element-setting:first-child:before,.e-con>.e-con>.elementor-element-overlay .elementor-editor-element-setting:last-child:after,.elementor-widget .e-con>.elementor-element-overlay .elementor-editor-element-setting.elementor-editor-element-add,.elementor-widget .e-con>.elementor-element-overlay .elementor-editor-element-setting.elementor-editor-element-edit+.elementor-editor-element-remove,.elementor-widget .e-con>.elementor-element-overlay .elementor-editor-element-setting:first-child:before,.elementor-widget .e-con>.elementor-element-overlay .elementor-editor-element-setting:last-child:after{display:none}.e-con-inner>.e-con>.elementor-element-overlay .elementor-editor-element-setting:not(.elementor-editor-element-edit),.e-con>.e-con>.elementor-element-overlay .elementor-editor-element-setting:not(.elementor-editor-element-edit),.elementor-widget .e-con>.elementor-element-overlay .elementor-editor-element-setting:not(.elementor-editor-element-edit){margin-inline-start:-25px;z-index:-1;transition:all .3s;will-change:margin-inline-start}.e-con-inner>.e-con>.elementor-element-overlay>.elementor-editor-element-settings:hover>:is(.elementor-editor-element-duplicate,.elementor-editor-element-remove),.e-con>.e-con>.elementor-element-overlay>.elementor-editor-element-settings:hover>:is(.elementor-editor-element-duplicate,.elementor-editor-element-remove),.elementor-widget .e-con>.elementor-element-overlay>.elementor-editor-element-settings:hover>:is(.elementor-editor-element-duplicate,.elementor-editor-element-remove){margin-inline-start:0}.e-con-inner>.e-con>.elementor-element-overlay .elementor-editor-element-settings,.e-con>.e-con>.elementor-element-overlay .elementor-editor-element-settings,.elementor-widget .e-con>.elementor-element-overlay .elementor-editor-element-settings{inset:auto;transform:none;inset-inline-start:0;top:0;border-radius:0;border-end-end-radius:3px;height:auto}.e-con-inner>.e-con>.elementor-element-overlay .elementor-editor-element-settings i.eicon-handle:before,.e-con>.e-con>.elementor-element-overlay .elementor-editor-element-settings i.eicon-handle:before,.elementor-widget .e-con>.elementor-element-overlay .elementor-editor-element-settings i.eicon-handle:before{content:"\e9b4";font-size:20px;display:block;padding:2px}body.rtl .e-con.e-grid.e-con--row .elementor-widget-placeholder.e-dragging-right,body.rtl .e-con.e-grid.e-con--row>.e-con-inner .elementor-widget-placeholder.e-dragging-right{left:0;right:auto}body.rtl .e-con.e-grid.e-con--row .elementor-widget-placeholder.e-dragging-left,body.rtl .e-con.e-grid.e-con--row>.e-con-inner .elementor-widget-placeholder.e-dragging-left{right:0;left:auto}@keyframes dnd-placeholder-widget-vertical{0%{transform-origin:0 50%;transform:translateX(50%) scaleX(0);opacity:0}to{transform-origin:0 50%;transform:translateX(50%) scaleX(1);opacity:.9}}@keyframes dnd-placeholder-widget-horizontal{0%{transform-origin:50% 0;transform:scaleY(0);opacity:0}to{transform-origin:50% 0;transform:scaleY(1);opacity:.9}}@keyframes grow-in-width{0%{width:0}50%{width:calc(var(--size) / 2)}to{width:var(--size)}}.e-con-select-preset{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:25px}.e-con-select-preset[data-view=choose-preset]>:not(.e-con-select-preset__inner),.e-con-select-preset[data-view=drop-area]>:not(.elementor-first-add){display:none}.e-con-select-preset__title{font-family:var(--e-a-font-family);font-size:15px;font-weight:400;color:var(--e-a-color-txt)}.e-con-select-preset__list{display:flex;gap:20px;align-items:center;justify-content:center;flex-wrap:wrap;max-width:650px}.e-con-select-preset__list .e-con-preset{cursor:pointer;flex-basis:90px}.e-con-select-preset__list .e-con-preset svg{width:100%;height:auto}.e-con-select-preset__list .e-con-preset svg:not(.exclude-rtl-scale){transform:scaleX(-1)}.e-con-select-preset__list .e-con-preset path{fill:var(--e-a-color-white)}.e-con-select-preset__list .e-con-preset rect{fill:var(--e-a-bg-active-bold);transition:all .3s}.e-con-select-preset__list .e-con-preset:hover rect{fill:var(--e-a-color-txt)}.e-con-select-preset__list .e-con-preset[data-preset=r100]{transform:scaleX(-1)}.e-con-shared-styles{font-family:var(--e-a-font-family);line-height:1;color:var(--e-a-color-txt);min-height:159px;overflow:hidden;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:25px}.e-con-select-type__title{font-size:15px;font-weight:400}.e-con-select-type__icons{display:flex;justify-content:center;flex-wrap:wrap;gap:40px}.e-con-select-type__icons__icon{cursor:pointer}.e-con-select-type__icons__icon svg{margin-block-end:10px;width:85px}.e-con-select-type__icons__icon svg:hover rect{fill:var(--e-a-color-txt)}.e-con-select-type__icons__icon svg:hover path{stroke:var(--e-a-color-white)}.e-con-select-type__icons__icon__subtitle{font-size:14px;font-weight:500}.e-con-select-preset-grid__title{font-size:15px;font-weight:400}.e-con-select-preset-grid__list{display:flex;justify-content:center;flex-wrap:wrap;gap:20px}.e-con-select-preset-grid__list svg{cursor:pointer}.e-con-select-preset-grid__list svg:hover rect{fill:var(--e-a-color-txt)}.e-con-select-preset-grid__list svg:hover path{stroke:var(--e-a-color-white)}.e-con .ui-resizable-e{right:0}.e-con .ui-resizable-w{left:0} \ No newline at end of file diff --git a/wp-content/plugins/elementor/assets/css/editor-preview.css b/wp-content/plugins/elementor/assets/css/editor-preview.css new file mode 100644 index 0000000..74c7507 --- /dev/null +++ b/wp-content/plugins/elementor/assets/css/editor-preview.css @@ -0,0 +1,4721 @@ +/*! elementor - v3.20.0 - 26-03-2024 */ +.dialog-widget-content { + background-color: var(--e-a-bg-default); + position: absolute; + border-radius: 3px; + box-shadow: 2px 8px 23px 3px rgba(0, 0, 0, 0.2); + overflow: hidden; +} + +.dialog-message { + line-height: 1.5; + box-sizing: border-box; +} + +.dialog-close-button { + cursor: pointer; + position: absolute; + margin-block-start: 15px; + right: 15px; + color: var(--e-a-color-txt); + font-size: 15px; + line-height: 1; + transition: var(--e-a-transition-hover); +} +.dialog-close-button:hover { + color: var(--e-a-color-txt-hover); +} + +.dialog-prevent-scroll { + overflow: hidden; + max-height: 100vh; +} + +.dialog-type-lightbox { + position: fixed; + height: 100%; + width: 100%; + bottom: 0; + left: 0; + background-color: rgba(0, 0, 0, 0.8); + z-index: 9999; + -webkit-user-select: none; + -moz-user-select: none; + user-select: none; +} + +.elementor-editor-active .elementor-popup-modal { + background-color: initial; +} + +.dialog-type-confirm .dialog-widget-content, +.dialog-type-alert .dialog-widget-content { + margin: auto; + width: 400px; + padding: 20px; +} +.dialog-type-confirm .dialog-header, +.dialog-type-alert .dialog-header { + font-size: 15px; + font-weight: 500; +} +.dialog-type-confirm .dialog-header:after, +.dialog-type-alert .dialog-header:after { + content: ""; + display: block; + border-block-end: var(--e-a-border); + padding-block-end: 10px; + margin-block-end: 10px; + margin-inline-start: -20px; + margin-inline-end: -20px; +} +.dialog-type-confirm .dialog-message, +.dialog-type-alert .dialog-message { + min-height: 50px; +} +.dialog-type-confirm .dialog-buttons-wrapper, +.dialog-type-alert .dialog-buttons-wrapper { + padding-block-start: 10px; + display: flex; + justify-content: flex-end; + gap: 15px; +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button { + font-size: 12px; + font-weight: 500; + line-height: 1.2; + padding: 8px 16px; + outline: none; + border: none; + border-radius: var(--e-a-border-radius); + background-color: var(--e-a-btn-bg); + color: var(--e-a-btn-color-invert); + transition: var(--e-a-transition-hover); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button:hover { + border: none; +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button:focus { + background-color: var(--e-a-btn-bg-hover); + color: var(--e-a-btn-color-invert); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:active, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button:active { + background-color: var(--e-a-btn-bg-active); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:not([disabled]), +.dialog-type-alert .dialog-buttons-wrapper .dialog-button:not([disabled]) { + cursor: pointer; +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:disabled, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button:disabled { + background-color: var(--e-a-btn-bg-disabled); + color: var(--e-a-btn-color-disabled); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:not(.elementor-button-state) .elementor-state-icon, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button:not(.elementor-button-state) .elementor-state-icon { + display: none; +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel { + background: transparent; + color: var(--e-a-color-txt); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel:focus { + background: var(--e-a-bg-hover); + color: var(--e-a-color-txt-hover); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt:disabled, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel:disabled, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt:disabled, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel:disabled { + background: transparent; + color: var(--e-a-color-txt-disabled); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt-border, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt-border { + border: 1px solid var(--e-a-color-txt-muted); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-success, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-success, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-success, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-success { + background-color: var(--e-a-btn-bg-success); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-success:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-success:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-success:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-success:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-success:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-success:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-success:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-success:focus { + background-color: var(--e-a-btn-bg-success-hover); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-take_over, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-take_over, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok { + background-color: var(--e-a-btn-bg-primary); + color: var(--e-a-btn-color); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-take_over:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-take_over:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-take_over:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-take_over:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok:focus { + background-color: var(--e-a-btn-bg-primary-hover); + color: var(--e-a-btn-color); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary.e-btn-txt, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-take_over, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary.dialog-cancel, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-ok, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary.e-btn-txt, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-take_over, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary.dialog-cancel, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-ok, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel { + background: transparent; + color: var(--e-a-color-primary-bold); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary.e-btn-txt:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-take_over:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary.dialog-cancel:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-ok:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary.e-btn-txt:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-take_over:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary.dialog-cancel:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-ok:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary.e-btn-txt:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-take_over:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary.dialog-cancel:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-ok:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary.e-btn-txt:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-take_over:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary.dialog-cancel:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-ok:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel:focus { + background: var(--e-a-bg-primary); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.go-pro, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-accent, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.go-pro, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-accent { + background-color: var(--e-a-btn-bg-accent); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.go-pro:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.go-pro:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-accent:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-accent:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.go-pro:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.go-pro:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-accent:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-accent:focus { + background-color: var(--e-a-btn-bg-accent-hover); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.go-pro:active, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-accent:active, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.go-pro:active, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-accent:active { + background-color: var(--e-a-btn-bg-accent-active); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-info, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-info, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-info, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-info { + background-color: var(--e-a-btn-bg-info); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-info:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-info:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-info:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-info:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-info:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-info:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-info:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-info:focus { + background-color: var(--e-a-btn-bg-info-hover); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-warning, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-warning, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-warning, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-warning { + background-color: var(--e-a-btn-bg-warning); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-warning:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-warning:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-warning:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-warning:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-warning:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-warning:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-warning:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-warning:focus { + background-color: var(--e-a-btn-bg-warning-hover); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-danger, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-danger, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-danger, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-danger { + background-color: var(--e-a-btn-bg-danger); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-danger:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-danger:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-danger:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-danger:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-danger:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-danger:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-danger:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-danger:focus { + background-color: var(--e-a-btn-bg-danger-hover); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button i, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button i { + margin-inline-end: 5px; +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button:visited, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button:visited { + color: initial; +} +.flatpickr-calendar { + width: 280px; +} +.flatpickr-calendar .flatpickr-current-month span.cur-month { + font-weight: 300; +} +.flatpickr-calendar .dayContainer { + width: 280px; + min-width: 280px; + max-width: 280px; +} +.flatpickr-calendar .flatpickr-days { + width: 280px; +} +.flatpickr-calendar .flatpickr-day { + max-width: 37px; + height: 37px; + line-height: 37px; +} + +.elementor-hidden { + display: none; +} + +.elementor-screen-only, +.screen-reader-text, +.screen-reader-text span, +.ui-helper-hidden-accessible { + position: absolute; + top: -10000em; + width: 1px; + height: 1px; + margin: -1px; + padding: 0; + overflow: hidden; + clip: rect(0, 0, 0, 0); + border: 0; +} + +.elementor-clearfix:after { + content: ""; + display: block; + clear: both; + width: 0; + height: 0; +} + +.e-logo-wrapper { + background: var(--e-a-bg-logo); + display: inline-block; + padding: 0.75em; + border-radius: 50%; + line-height: 1; +} +.e-logo-wrapper i { + color: var(--e-a-color-logo); + font-size: 1em; +} + +:root { + --e-a-color-white: #ffffff; + --e-a-color-black: #000000; + --e-a-color-logo: #ffffff; + --e-a-color-primary: #F3BAFD; + --e-a-color-primary-bold: #D004D4; + --e-a-color-secondary: #515962; + --e-a-color-success: #0A875A; + --e-a-color-danger: #DC2626; + --e-a-color-info: #2563EB; + --e-a-color-warning: #F59E0B; + --e-a-color-accent: #93003f; + --e-a-color-accent-promotion: #93003f; + --e-a-color-global: #1DDDBF; + --e-a-bg-default: #ffffff; + --e-a-bg-invert: #0C0D0E; + --e-a-bg-hover: #F1F2F3; + --e-a-bg-active: #E6E8EA; + --e-a-bg-active-bold: #D5D8DC; + --e-a-bg-loading: #F9FAFA; + --e-a-bg-logo: #000000; + --e-a-bg-primary: #FAE8FF; + --e-a-bg-secondary: #515962; + --e-a-bg-success: #F2FDF5; + --e-a-bg-info: #F0F7FF; + --e-a-bg-danger: #FEF1F4; + --e-a-bg-warning: #FFFBEB; + --e-a-color-txt: #515962; + --e-a-color-txt-muted: #818A96; + --e-a-color-txt-disabled: #BABFC5; + --e-a-color-txt-invert: #ffffff; + --e-a-color-txt-accent: #0C0D0E; + --e-a-color-txt-hover: #3f444b; + --e-a-color-txt-active: #0C0D0E; + --e-a-border-color: #E6E8EA; + --e-a-border-color-bold: #D5D8DC; + --e-a-border-color-focus: #BABFC5; + --e-a-border-color-accent: #0C0D0E; + --e-a-border: 1px solid var(--e-a-border-color); + --e-a-border-bold: 1px solid var(--e-a-border-color-bold); + --e-a-border-radius: 3px; + --e-a-btn-color: #0C0D0E; + --e-a-btn-color-invert: var(--e-a-color-txt-invert); + --e-a-btn-color-disabled: var(--e-a-color-txt-disabled); + --e-a-btn-bg: #515962; + --e-a-btn-bg-hover: #3a4046; + --e-a-btn-bg-active: #23262a; + --e-a-btn-bg-disabled: #D5D8DC; + --e-a-btn-bg-primary: #F3BAFD; + --e-a-btn-bg-primary-hover: #F5D0FE; + --e-a-btn-bg-primary-active:#F0ABFC; + --e-a-btn-bg-accent: #93003f; + --e-a-btn-bg-accent-hover: #8F1A4C; + --e-a-btn-bg-accent-active: #A93365; + --e-a-btn-bg-info: #2563EB; + --e-a-btn-bg-info-hover: #134cca; + --e-a-btn-bg-info-active: #0e3b9c; + --e-a-btn-bg-success: #0A875A; + --e-a-btn-bg-success-hover: #06583a; + --e-a-btn-bg-success-active:#03281b; + --e-a-btn-bg-warning: #F59E0B; + --e-a-btn-bg-warning-hover: #c57f08; + --e-a-btn-bg-warning-active:#945f06; + --e-a-btn-bg-danger: #DC2626; + --e-a-btn-bg-danger-hover: #b21d1d; + --e-a-btn-bg-danger-active: #861616; + --e-a-dark-bg: #0C0D0E; + --e-a-dark-color-txt: #9DA5AE; + --e-a-dark-color-txt-hover: #D5D8DC; + --e-a-font-family: Roboto, Arial, Helvetica, sans-serif; + --e-a-transition-hover: all .3s; + --e-a-popover-shadow: 0 2px 15px rgba(0, 0, 0, 0.3); + --e-a-dropdown-shadow: 0 0 3px rgba(0, 0, 0, 0.2); +} + +.elementor-control-unit-1 { + width: 27px; +} + +.elementor-control-unit-2 { + width: 54px; +} + +.elementor-control-unit-3 { + width: 81px; +} + +.elementor-control-unit-4 { + width: 108px; +} + +.elementor-control-unit-5 { + max-width: 400px; + width: 52%; +} + +.elementor-tags-list { + display: none; + position: absolute; + width: 260px; + max-height: 300px; + overflow: auto; + padding-block-end: 5px; + background-color: var(--e-a-bg-default); + box-shadow: var(--e-a-popover-shadow); + border: var(--e-a-border); + border-radius: 3px; + z-index: 10000; +} +.elementor-tags-list__group-title { + font-weight: bold; + font-size: 12px; + padding: 10px 15px; + display: flex; + align-items: center; +} +.elementor-tags-list__group-title .eicon-info-circle { + padding-inline-end: 5px; + color: var(--e-a-color-primary-bold); + font-size: 14px; +} +.elementor-tags-list__item { + font-size: 10px; + padding: 6px 15px; + cursor: pointer; +} +.elementor-tags-list__item:before { + content: ">"; + font-size: 8px; + padding-inline-end: 5px; +} +.elementor-tags-list__item:hover { + background-color: var(--e-a-bg-hover); +} +.elementor-tags-list__teaser { + border-block-start: 2px solid var(--e-a-border-color); + padding-block-start: 4px; + margin-block-start: 4px; +} +.elementor-tags-list__teaser-text { + padding: 2px 15px 8px; + line-height: 1.5; + font-size: 12px; +} +.elementor-tags-list__teaser-link { + color: var(--e-a-color-primary-bold); + text-decoration: underline; + font-style: italic; + font-weight: bold; +} + +.elementor-dynamic-cover { + display: flex; + align-items: center; + width: 100%; + height: 27px; + box-sizing: border-box; +} +.elementor-dynamic-cover__title { + padding: 0 8px; + flex-grow: 1; + white-space: nowrap; + text-overflow: ellipsis; + overflow: hidden; +} +.elementor-dynamic-cover__settings, .elementor-dynamic-cover__remove { + cursor: pointer; + transition: var(--e-a-transition-hover); +} +.elementor-dynamic-cover__settings:hover, .elementor-dynamic-cover__remove:hover { + color: var(--e-a-color-txt-hover); +} +.elementor-control-type-wysiwyg .elementor-dynamic-cover { + margin-block-start: 10px; +} + +.elementor-tag-settings-popup { + position: absolute; + width: 260px; + background-color: var(--e-a-bg-default); + border: var(--e-a-border); + box-shadow: var(--e-a-popover-shadow); + z-index: 1; +} +.elementor-tag-settings-popup:before { + content: ""; + position: absolute; + top: -20px; + left: 5px; + border: 10px solid transparent; + border-block-end-color: var(--e-a-border-color); +} +.elementor-tag-settings-popup .elementor-control-type-section:first-child { + margin: 0; +} + +.elementor-tag-controls-stack-empty { + background-color: var(--e-a-bg-default); + padding: 10px; + font-size: 13px; + text-align: center; +} + +.elementor-control-dynamic input { + border-start-start-radius: var(--e-a-border-radius); + border-start-end-radius: 0; + border-end-end-radius: 0; + border-end-start-radius: var(--e-a-border-radius); +} +.elementor-control-dynamic-switcher { + display: inline-flex; + align-items: center; + justify-content: center; + flex-shrink: 0; + height: 27px; + cursor: pointer; + border: var(--e-a-border-bold); + background: var(--e-a-bg-default); + border-inline-start-width: 0; + border-start-start-radius: 0; + border-start-end-radius: var(--e-a-border-radius); + border-end-end-radius: var(--e-a-border-radius); + border-end-start-radius: 0; + transition: var(--e-a-transition-hover); +} +.elementor-control-dynamic-switcher:hover { + background-color: var(--e-a-bg-hover); + color: var(--e-a-color-txt-hover); +} +.elementor-control-dynamic-switcher.e-control-tool { + height: 20px; + border: 0; +} +.elementor-control-dynamic-switcher-wrapper { + display: flex; +} +.elementor-control-dynamic-switcher .eicon-database { + font-size: 12px; +} +.elementor-control-dynamic-value .elementor-control-tag-area, +.elementor-control-dynamic-value .elementor-control-dynamic-switcher, +.elementor-control-dynamic-value .e-global__popover-toggle { + display: none; +} + +.elementor-panel-box-content { + padding: 20px 20px 10px; +} + +.elementor-button { + display: inline-block; +} + +.elementor-panel-alert { + background-color: var(--e-a-bg-primary); + padding: 15px; + border-inline-start: 3px solid var(--e-a-color-primary); + position: relative; + font-size: 12px; + font-weight: 300; + font-style: italic; + line-height: 1.5; + text-align: start; + border-start-start-radius: 0; + border-start-end-radius: 3px; + border-end-start-radius: 0; + border-end-end-radius: 3px; +} +.elementor-panel-alert a { + color: inherit; +} +.elementor-panel-alert.elementor-panel-alert-info { + border-color: var(--e-a-color-info); + background: var(--e-a-bg-info); +} +.elementor-panel-alert.elementor-panel-alert-success { + border-color: var(--e-a-color-success); + background: var(--e-a-bg-success); +} +.elementor-panel-alert.elementor-panel-alert-warning { + border-inline-start: 3px solid var(--e-a-color-warning); + background: var(--e-a-bg-warning); +} +.elementor-panel-alert.elementor-panel-alert-danger { + border-color: var(--e-a-color-danger); + background: var(--e-a-bg-danger); +} + +.elementor-descriptor, .elementor-control-field-description { + font-size: 11px; + font-style: italic; + line-height: 1.4; + color: var(--e-a-color-txt-muted); +} + +.elementor-controls-popover { + display: none; + position: absolute; + box-shadow: var(--e-a-popover-shadow); + border-radius: var(--e-a-border-radius); + left: 0; + right: 0; + margin: -4px auto 5px; + padding-block-start: 15px; + width: 90%; + z-index: 10000; + background-color: var(--e-a-bg-default); +} +.elementor-controls-popover:before { + content: ""; + position: absolute; + top: -16px; + right: 22px; + border: 8px solid transparent; + border-block-end-color: var(--e-a-bg-default); +} +.elementor-controls-popover div.elementor-control { + background-color: transparent; +} +.elementor-controls-popover div.elementor-control:before { + content: none; +} + +#elementor-panel-global .elementor-nerd-box .elementor-nerd-box-icon { + margin-block-start: 20px; +} + +.elementor-control { + --control-title-size: 12px; + position: relative; + padding: 0 20px 15px; +} +.elementor-control a { + font-weight: 500; + text-decoration: none; + border-block-end: 1px dotted transparent; + transition: all ease-in-out 0.3s; +} +.elementor-control a:hover { + border-block-end-color: inherit; +} +.elementor-control .elementor-control-content { + display: flex; + flex-direction: column; +} +.elementor-control .elementor-control-title { + font-size: var(--control-title-size); + line-height: 1; + margin-inline-end: 5px; +} +.elementor-control .elementor-control-title:empty { + display: none; +} +.elementor-control .elementor-control-spinner { + display: flex; + align-items: center; +} +.elementor-control.elementor-control-type-divider { + padding: 0; +} +.elementor-control.elementor-control-type-divider .elementor-control-content { + border-width: 0; + border-block-start: var(--e-a-border); + background-color: var(--e-a-bg-default); + height: 15px; +} +.elementor-control.elementor-control-separator-before { + padding-block-start: 15px; +} +.elementor-control.elementor-control-separator-before:before { + content: ""; + position: absolute; + height: 1px; + width: calc(100% - 40px); + top: 0; + left: 20px; + background-color: var(--e-a-border-color); +} +.elementor-control.elementor-control-separator-after:after { + content: ""; + position: absolute; + height: 1px; + width: calc(100% - 40px); + bottom: 0; + left: 20px; + background-color: var(--e-a-border-color); +} +.elementor-control.elementor-control-separator-after + .elementor-control-type-tabs ~ .elementor-control-separator-default, .elementor-control.elementor-control-separator-after:not(.elementor-hidden-control) ~ .elementor-control-separator-default { + padding-block-start: 15px; +} +.elementor-control.elementor-control-deprecated { + color: var(--e-a-color-warning); +} +.elementor-control.elementor-control-deprecated .elementor-control-field-description { + color: var(--e-a-color-warning); +} +.elementor-control.elementor-control-hidden-label > * > .elementor-control-title, .elementor-control.elementor-control-hidden-label > * > * > .elementor-control-title { + display: none; +} +.elementor-control.elementor-hidden-control { + display: none; +} +.elementor-control.elementor-control-type-heading .elementor-control-title { + font-weight: bold; + margin: 0; +} +body:not(.elementor-device-widescreen) .elementor-control.elementor-control-responsive-widescreen { + display: none; +} +body:not(.elementor-device-desktop) .elementor-control.elementor-control-responsive-desktop { + display: none; +} +body:not(.elementor-device-laptop) .elementor-control.elementor-control-responsive-laptop { + display: none; +} +body:not(.elementor-device-tablet_extra) .elementor-control.elementor-control-responsive-tablet_extra { + display: none; +} +body:not(.elementor-device-tablet) .elementor-control.elementor-control-responsive-tablet { + display: none; +} +body:not(.elementor-device-mobile_extra) .elementor-control.elementor-control-responsive-mobile_extra { + display: none; +} +body:not(.elementor-device-mobile) .elementor-control.elementor-control-responsive-mobile { + display: none; +} +.elementor-control-custom_css_pro .elementor-nerd-box-message, .elementor-control-custom_attributes_pro .elementor-nerd-box-message { + margin-block-start: 5px; +} + +.elementor-control.e-open .elementor-panel-heading-toggle .eicon:before, .elementor-control.elementor-active .elementor-panel-heading-toggle .eicon:before, +.elementor-panel-category.e-open .elementor-panel-heading-toggle .eicon:before, +.elementor-panel-category.elementor-active .elementor-panel-heading-toggle .eicon:before, +.elementor-panel-scheme-item.e-open .elementor-panel-heading-toggle .eicon:before, +.elementor-panel-scheme-item.elementor-active .elementor-panel-heading-toggle .eicon:before { + content: "\e92a"; +} +.elementor-control:not(.e-open):not(.elementor-active) .elementor-panel-heading-toggle .eicon:before, +.elementor-panel-category:not(.e-open):not(.elementor-active) .elementor-panel-heading-toggle .eicon:before, +.elementor-panel-scheme-item:not(.e-open):not(.elementor-active) .elementor-panel-heading-toggle .eicon:before { + content: "\e90a"; +} + +.elementor-panel-heading { + display: flex; + align-items: center; + gap: 5px; + height: 48px; + padding-inline: 20px; + width: 100%; + border: 0; + border-block-start: var(--e-a-border); + border-block-start-width: 2px; + background-color: transparent; + color: var(--e-a-color-txt-accent); + cursor: pointer; +} +.elementor-panel-heading-toggle { + width: 10px; + display: flex; + flex-direction: column; + align-items: center; +} +.elementor-panel-heading-title { + font-weight: bold; +} +.elementor-panel-heading-promotion { + margin-inline-start: auto; +} +.elementor-panel-heading-promotion a { + color: var(--e-a-color-accent-promotion); + font-family: "Roboto", sans-serif; + font-weight: 500; + font-size: 13px; +} +.elementor-panel-heading-promotion a i { + margin-inline-end: 4px; + font-size: 14px; +} +.elementor-panel-heading-promotion a:hover { + color: var(--e-a-color-accent-promotion); +} +.elementor-panel-heading:focus-visible { + color: var(--e-a-color-txt-hover); +} + +#elementor-controls .elementor-control-type-section:first-child .elementor-panel-heading { + border-block-start: none; +} + +.elementor-control-field { + display: flex; + align-items: center; +} + +.elementor-label-block > .elementor-control-content > .elementor-control-field { + flex-wrap: wrap; +} +.elementor-label-block > .elementor-control-content > .elementor-control-field > .elementor-control-input-wrapper { + width: 100%; + max-width: 100%; + margin-block-start: 10px; +} +.elementor-label-block > .elementor-control-content > .elementor-control-field > .elementor-control-input-wrapper > .elementor-choices label { + width: auto; + flex: 1 1 27px; + display: flex; + align-items: center; + justify-content: center; +} +.elementor-label-block.elementor-control-hidden-label:not(.elementor-control-dynamic) > .elementor-control-content > .elementor-control-field > .elementor-control-input-wrapper { + margin-block-start: 0; +} +.elementor-label-block.elementor-control-hidden-label.elementor-label-block > .elementor-control-content > .elementor-control-field > .elementor-control-input-wrapper { + margin-block-start: 0; +} + +.elementor-label-inline > .elementor-control-content > .elementor-control-field > .elementor-control-title { + flex-shrink: 0; + max-width: 60%; +} +.elementor-label-inline > .elementor-control-content > .elementor-control-field > .elementor-control-input-wrapper { + margin-inline-start: auto; +} + +.elementor-control-field-description { + margin-block-start: 10px; +} + +.elementor-group-control-attachment_alert .elementor-control-field-description { + margin-block-start: 0; +} + +.elementor-update-preview { + margin: 15px 15px 0; + display: flex; + align-items: center; +} + +.elementor-update-preview-button-wrapper { + flex-grow: 1; + text-align: end; +} + +.elementor-update-preview-button { + padding: 8px 15px; +} + +.elementor-control-direction-ltr input, +.elementor-control-direction-ltr textarea { + direction: ltr; +} +.elementor-control-direction-rtl input, +.elementor-control-direction-rtl textarea { + direction: rtl; +} + +.elementor-control-responsive-switchers { + --selected-option: 0; + --pointer-position: var(--selected-option); + position: relative; + width: 2.5em; + height: 2.5em; + margin: calc(-2.5em + 12px) 0; + margin-inline-end: 5px; +} +.elementor-control-responsive-switchers__holder { + position: absolute; + width: 100%; + top: 0; + background-color: var(--e-a-bg-default); + border-radius: var(--e-a-border-radius); + transition: 0.15s; + border: 1px solid transparent; +} +.elementor-control-responsive-switchers.elementor-responsive-switchers-open { + z-index: 11000; +} +.elementor-control-responsive-switchers.elementor-responsive-switchers-open .elementor-responsive-switcher { + height: 2.5em; + transform: scale(1); + opacity: 1; +} +.elementor-control-responsive-switchers.elementor-responsive-switchers-open .elementor-responsive-switcher:hover { + color: var(--e-a-color-primary-bold); +} +.elementor-control-responsive-switchers.elementor-responsive-switchers-open .elementor-control-responsive-switchers__holder { + box-shadow: var(--e-a-dropdown-shadow); +} + +.elementor-responsive-switcher { + all: unset; + display: flex; + align-items: center; + justify-content: center; + position: relative; + z-index: 2; + cursor: pointer; + height: 0; + width: 100%; + transform: scale(0); + opacity: 0; + transition: 0.15s; + font-size: 12px; + color: inherit; +} +.elementor-responsive-switcher:hover { + color: var(--e-a-color-primary-bold); +} + +.elementor-device-widescreen .elementor-responsive-switcher.elementor-responsive-switcher-widescreen { + height: 2.5em; + transform: scale(1); + opacity: 1; +} +.elementor-device-widescreen .elementor-responsive-switchers-open:not(:hover) .elementor-responsive-switcher.elementor-responsive-switcher-widescreen { + color: var(--e-a-color-primary-bold); +} + +.elementor-device-desktop .elementor-responsive-switcher.elementor-responsive-switcher-desktop { + height: 2.5em; + transform: scale(1); + opacity: 1; +} +.elementor-device-desktop .elementor-responsive-switchers-open:not(:hover) .elementor-responsive-switcher.elementor-responsive-switcher-desktop { + color: var(--e-a-color-primary-bold); +} + +.elementor-device-laptop .elementor-responsive-switcher.elementor-responsive-switcher-laptop { + height: 2.5em; + transform: scale(1); + opacity: 1; +} +.elementor-device-laptop .elementor-responsive-switchers-open:not(:hover) .elementor-responsive-switcher.elementor-responsive-switcher-laptop { + color: var(--e-a-color-primary-bold); +} + +.elementor-device-tablet_extra .elementor-responsive-switcher.elementor-responsive-switcher-tablet_extra { + height: 2.5em; + transform: scale(1); + opacity: 1; +} +.elementor-device-tablet_extra .elementor-responsive-switchers-open:not(:hover) .elementor-responsive-switcher.elementor-responsive-switcher-tablet_extra { + color: var(--e-a-color-primary-bold); +} + +.elementor-device-tablet .elementor-responsive-switcher.elementor-responsive-switcher-tablet { + height: 2.5em; + transform: scale(1); + opacity: 1; +} +.elementor-device-tablet .elementor-responsive-switchers-open:not(:hover) .elementor-responsive-switcher.elementor-responsive-switcher-tablet { + color: var(--e-a-color-primary-bold); +} + +.elementor-device-mobile_extra .elementor-responsive-switcher.elementor-responsive-switcher-mobile_extra { + height: 2.5em; + transform: scale(1); + opacity: 1; +} +.elementor-device-mobile_extra .elementor-responsive-switchers-open:not(:hover) .elementor-responsive-switcher.elementor-responsive-switcher-mobile_extra { + color: var(--e-a-color-primary-bold); +} + +.elementor-device-mobile .elementor-responsive-switcher.elementor-responsive-switcher-mobile { + height: 2.5em; + transform: scale(1); + opacity: 1; +} +.elementor-device-mobile .elementor-responsive-switchers-open:not(:hover) .elementor-responsive-switcher.elementor-responsive-switcher-mobile { + color: var(--e-a-color-primary-bold); +} + +.e-units-wrapper { + position: relative; + margin-inline-start: auto; +} +.e-units-wrapper .e-units-switcher { + cursor: pointer; + font-size: 10px; + padding: 0.5em; + margin: -0.5em 0; + transition: all ease-in-out 0.15s; +} +.e-units-wrapper .e-units-switcher:hover { + color: var(--e-a-color-primary-bold); + background-color: var(--e-a-bg-hover); + border-radius: var(--e-a-border-radius); +} +.e-units-wrapper .e-units-switcher:not([data-selected=custom]) i.eicon-edit { + display: none; +} +.e-units-wrapper .e-units-switcher[data-selected=custom] span { + display: none; +} +.e-units-wrapper .e-units-switcher i.eicon-angle-right { + transform: rotate(90deg); +} + +.e-units-choices input { + display: none; +} +.e-units-choices input:checked + label { + color: var(--e-a-color-primary-bold); +} +.e-units-choices label { + cursor: pointer; + display: block; +} +.e-units-choices { + display: none; + overflow: hidden; + max-height: 0; + position: absolute; + top: -0.8em; + left: -0.5em; + width: 2.5em; + text-align: center; + background-color: var(--e-a-bg-default); + border-radius: var(--e-a-border-radius); + box-shadow: var(--e-a-dropdown-shadow); + animation-timing-function: linear; + animation-delay: 0s; + animation-fill-mode: forwards; + z-index: 11000; +} +.e-units-choices .elementor-units-choices-label { + display: flex; + align-items: center; + height: 3em; + justify-content: center; + font-size: 10px; + transition: 0.15s; +} +.e-units-choices .elementor-units-choices-label:hover { + color: var(--e-a-color-primary-bold); +} +.e-units-choices.e-units-choices-open { + display: block; + animation-duration: 1s; + animation-name: e-units-choices-open; +} + +.e-units-custom input { + font-family: monospace; + font-size: 0.85em; +} + +@keyframes e-units-choices-open { + from { + max-height: 0; + } + to { + max-height: 100vh; + } +} +.elementor-control-alert { + display: flex; + flex-direction: column; + justify-content: flex-start; + align-items: flex-start; + gap: 8px; +} +.elementor-control-alert-heading { + font-weight: bold; +} + +.elementor-control-type-button .elementor-control-input-wrapper { + text-align: end; +} +.elementor-control-type-button .elementor-button { + width: auto; +} +.elementor-control-type-button .elementor-button.elementor-button-center { + display: block; + margin: 0 auto; +} + +.elementor-control-type-choose.elementor-label-block .elementor-choices { + width: 100%; +} + +.elementor-choices { + display: flex; + height: 27px; + line-height: 27px; + text-align: center; + border-spacing: 1px; + border-radius: var(--e-a-border-radius); + overflow: hidden; +} +.elementor-choices .elementor-choices-label { + border-block-start: var(--e-a-border-bold); + border-block-end: var(--e-a-border-bold); + border-inline-start: var(--e-a-border-bold); + border-inline-end: none; + font-size: 12px; + transition: var(--e-a-transition-hover); + cursor: pointer; + overflow: hidden; +} +.elementor-choices .elementor-choices-label:nth-child(2) { + border-start-start-radius: var(--e-a-border-radius); + border-end-start-radius: var(--e-a-border-radius); +} +.elementor-choices .elementor-choices-label:last-child { + border-inline-end: var(--e-a-border-bold); + border-start-end-radius: var(--e-a-border-radius); + border-end-end-radius: var(--e-a-border-radius); +} +.elementor-choices input { + display: none; +} +.elementor-choices input:hover + .elementor-choices-label { + background-color: var(--e-a-bg-hover); +} +.elementor-choices input.e-choose-placeholder + .elementor-choices-label, .elementor-choices input:checked + .elementor-choices-label { + background-color: var(--e-a-bg-active-bold); + color: var(--e-a-color-txt-accent); +} + +.elementor-label-inline .elementor-choices { + justify-content: flex-end; +} + +.elementor-control-type-color.e-control-global .pickr { + border-start-start-radius: 0; + border-start-end-radius: var(--e-a-border-radius); + border-end-start-radius: 0; + border-end-end-radius: var(--e-a-border-radius); + flex-shrink: 0; + border-color: var(--e-a-border-color-bold); + transition: var(--e-a-transition-hover); +} +.elementor-control-type-color.e-control-global .pickr:hover { + background-color: var(--e-a-bg-hover); +} +.elementor-control-type-color.e-control-global .e-global__popover-toggle:not(.e-global__popover-toggle--active) ~ .pickr { + background-color: var(--e-a-bg-active-bold); +} +.elementor-control-type-color .elementor-control-title { + flex-grow: 1; +} +.elementor-control-type-color .elementor-control-input-wrapper { + display: flex; + justify-content: flex-end; +} + +.elementor-group-control-css-filter .elementor-slider { + height: 6px; + box-shadow: 0 0 1px 1px inset rgba(0, 0, 0, 0.2); +} +.elementor-group-control-css-filter .elementor-control-content > .elementor-control-field > .elementor-control-input-wrapper { + margin-block-start: 0; + margin-block-end: 5px; +} + +.elementor-group-control-blur .elementor-slider { + background: url("../images/blur.png"); + background-size: cover; + background-position: center; +} + +.elementor-group-control-contrast .elementor-slider { + background: url("../images/contrast.png"); + background-size: 100% 100%; +} + +.elementor-group-control-hue .elementor-slider { + background-image: linear-gradient(to right, red, orange, yellow, greenyellow, limegreen, deepskyblue, blue, darkviolet 95%); +} + +.elementor-group-control-saturate .elementor-slider { + background-image: linear-gradient(to right, gray, red); +} + +.elementor-group-control-brightness .elementor-slider { + background-image: linear-gradient(to right, black, white); +} + +.elementor-control-responsive-switchers { + --selected-option: 0; + --pointer-position: var(--selected-option); + position: relative; + width: 2.5em; + height: 2.5em; + margin: calc(-2.5em + 12px) 0; + margin-inline-end: 5px; +} +.elementor-control-responsive-switchers__holder { + position: absolute; + width: 100%; + top: 0; + background-color: var(--e-a-bg-default); + border-radius: var(--e-a-border-radius); + transition: 0.15s; + border: 1px solid transparent; +} +.elementor-control-responsive-switchers.elementor-responsive-switchers-open { + z-index: 11000; +} +.elementor-control-responsive-switchers.elementor-responsive-switchers-open .elementor-responsive-switcher { + height: 2.5em; + transform: scale(1); + opacity: 1; +} +.elementor-control-responsive-switchers.elementor-responsive-switchers-open .elementor-responsive-switcher:hover { + color: var(--e-a-color-primary-bold); +} +.elementor-control-responsive-switchers.elementor-responsive-switchers-open .elementor-control-responsive-switchers__holder { + box-shadow: var(--e-a-dropdown-shadow); +} + +.elementor-responsive-switcher { + all: unset; + display: flex; + align-items: center; + justify-content: center; + position: relative; + z-index: 2; + cursor: pointer; + height: 0; + width: 100%; + transform: scale(0); + opacity: 0; + transition: 0.15s; + font-size: 12px; + color: inherit; +} +.elementor-responsive-switcher:hover { + color: var(--e-a-color-primary-bold); +} + +.elementor-device-widescreen .elementor-responsive-switcher.elementor-responsive-switcher-widescreen { + height: 2.5em; + transform: scale(1); + opacity: 1; +} +.elementor-device-widescreen .elementor-responsive-switchers-open:not(:hover) .elementor-responsive-switcher.elementor-responsive-switcher-widescreen { + color: var(--e-a-color-primary-bold); +} + +.elementor-device-desktop .elementor-responsive-switcher.elementor-responsive-switcher-desktop { + height: 2.5em; + transform: scale(1); + opacity: 1; +} +.elementor-device-desktop .elementor-responsive-switchers-open:not(:hover) .elementor-responsive-switcher.elementor-responsive-switcher-desktop { + color: var(--e-a-color-primary-bold); +} + +.elementor-device-laptop .elementor-responsive-switcher.elementor-responsive-switcher-laptop { + height: 2.5em; + transform: scale(1); + opacity: 1; +} +.elementor-device-laptop .elementor-responsive-switchers-open:not(:hover) .elementor-responsive-switcher.elementor-responsive-switcher-laptop { + color: var(--e-a-color-primary-bold); +} + +.elementor-device-tablet_extra .elementor-responsive-switcher.elementor-responsive-switcher-tablet_extra { + height: 2.5em; + transform: scale(1); + opacity: 1; +} +.elementor-device-tablet_extra .elementor-responsive-switchers-open:not(:hover) .elementor-responsive-switcher.elementor-responsive-switcher-tablet_extra { + color: var(--e-a-color-primary-bold); +} + +.elementor-device-tablet .elementor-responsive-switcher.elementor-responsive-switcher-tablet { + height: 2.5em; + transform: scale(1); + opacity: 1; +} +.elementor-device-tablet .elementor-responsive-switchers-open:not(:hover) .elementor-responsive-switcher.elementor-responsive-switcher-tablet { + color: var(--e-a-color-primary-bold); +} + +.elementor-device-mobile_extra .elementor-responsive-switcher.elementor-responsive-switcher-mobile_extra { + height: 2.5em; + transform: scale(1); + opacity: 1; +} +.elementor-device-mobile_extra .elementor-responsive-switchers-open:not(:hover) .elementor-responsive-switcher.elementor-responsive-switcher-mobile_extra { + color: var(--e-a-color-primary-bold); +} + +.elementor-device-mobile .elementor-responsive-switcher.elementor-responsive-switcher-mobile { + height: 2.5em; + transform: scale(1); + opacity: 1; +} +.elementor-device-mobile .elementor-responsive-switchers-open:not(:hover) .elementor-responsive-switcher.elementor-responsive-switcher-mobile { + color: var(--e-a-color-primary-bold); +} + +.e-units-wrapper { + position: relative; + margin-inline-start: auto; +} +.e-units-wrapper .e-units-switcher { + cursor: pointer; + font-size: 10px; + padding: 0.5em; + margin: -0.5em 0; + transition: all ease-in-out 0.15s; +} +.e-units-wrapper .e-units-switcher:hover { + color: var(--e-a-color-primary-bold); + background-color: var(--e-a-bg-hover); + border-radius: var(--e-a-border-radius); +} +.e-units-wrapper .e-units-switcher:not([data-selected=custom]) i.eicon-edit { + display: none; +} +.e-units-wrapper .e-units-switcher[data-selected=custom] span { + display: none; +} +.e-units-wrapper .e-units-switcher i.eicon-angle-right { + transform: rotate(90deg); +} + +.e-units-choices input { + display: none; +} +.e-units-choices input:checked + label { + color: var(--e-a-color-primary-bold); +} +.e-units-choices label { + cursor: pointer; + display: block; +} +.e-units-choices { + display: none; + overflow: hidden; + max-height: 0; + position: absolute; + top: -0.8em; + left: -0.5em; + width: 2.5em; + text-align: center; + background-color: var(--e-a-bg-default); + border-radius: var(--e-a-border-radius); + box-shadow: var(--e-a-dropdown-shadow); + animation-timing-function: linear; + animation-delay: 0s; + animation-fill-mode: forwards; + z-index: 11000; +} +.e-units-choices .elementor-units-choices-label { + display: flex; + align-items: center; + height: 3em; + justify-content: center; + font-size: 10px; + transition: 0.15s; +} +.e-units-choices .elementor-units-choices-label:hover { + color: var(--e-a-color-primary-bold); +} +.e-units-choices.e-units-choices-open { + display: block; + animation-duration: 1s; + animation-name: e-units-choices-open; +} + +.e-units-custom input { + font-family: monospace; + font-size: 0.85em; +} + +@keyframes e-units-choices-open { + from { + max-height: 0; + } + to { + max-height: 100vh; + } +} +.elementor-control-type-dimensions .elementor-control-dimensions { + display: flex; +} +.elementor-control-type-dimensions li { + flex: 1; + transition: flex-grow 0.3s ease-in-out; +} +.elementor-control-type-dimensions li input, +.elementor-control-type-dimensions li .elementor-link-dimensions { + display: block; + text-align: center; + width: 100%; + height: 27px; +} +.elementor-control-type-dimensions li input { + border-inline-start: none; + border-radius: 0; + padding: var(--e-a-border-radius); +} +.elementor-control-type-dimensions li input:focus { + border-inline-start: var(--e-a-border-bold); + margin-inline-start: -1px; + width: calc(100% + 1px); +} +.elementor-control-type-dimensions li input:focus + .elementor-control-dimension-label { + color: var(--e-a-color-txt); +} +.elementor-control-type-dimensions li .elementor-link-dimensions { + border: var(--e-a-border-bold); + border-inline-start: none; + background-color: var(--e-a-bg-default); + padding: 0; + outline: none; + border-start-start-radius: 0; + border-start-end-radius: var(--e-a-border-radius); + border-end-start-radius: 0; + border-end-end-radius: var(--e-a-border-radius); + cursor: pointer; +} +.elementor-control-type-dimensions li:first-child input { + border-inline-start: 1px solid var(--e-a-border-color-bold); + border-start-start-radius: var(--e-a-border-radius); + border-start-end-radius: 0; + border-end-start-radius: var(--e-a-border-radius); + border-end-end-radius: 0; +} +.elementor-control-type-dimensions li:first-child input:focus { + border-color: var(--e-a-border-color-focus); + margin-inline-start: 0; + width: 100%; +} +.elementor-control-type-dimensions li:last-child { + max-width: 27px; +} +.elementor-control-type-dimensions.e-units-custom li.elementor-control-dimension:focus-within { + flex: 2.5; +} +.elementor-control-type-dimensions .elementor-control-dimension-label { + color: var(--e-a-color-txt-muted); + display: block; + text-align: center; + font-size: 9px; + padding-block-start: 5px; +} +.elementor-control-type-dimensions .elementor-link-dimensions.unlinked { + background-color: var(--e-a-bg-default); +} +.elementor-control-type-dimensions .elementor-link-dimensions.unlinked .elementor-linked { + display: none; +} +.elementor-control-type-dimensions .elementor-link-dimensions:not(.unlinked) { + background-color: var(--e-a-bg-active-bold); + color: var(--e-a-color-txt-accent); + border-color: var(--e-a-border-color-bold); +} +.elementor-control-type-dimensions .elementor-link-dimensions:not(.unlinked) .elementor-unlinked { + display: none; +} + +.elementor-control-responsive-switchers { + --selected-option: 0; + --pointer-position: var(--selected-option); + position: relative; + width: 2.5em; + height: 2.5em; + margin: calc(-2.5em + 12px) 0; + margin-inline-end: 5px; +} +.elementor-control-responsive-switchers__holder { + position: absolute; + width: 100%; + top: 0; + background-color: var(--e-a-bg-default); + border-radius: var(--e-a-border-radius); + transition: 0.15s; + border: 1px solid transparent; +} +.elementor-control-responsive-switchers.elementor-responsive-switchers-open { + z-index: 11000; +} +.elementor-control-responsive-switchers.elementor-responsive-switchers-open .elementor-responsive-switcher { + height: 2.5em; + transform: scale(1); + opacity: 1; +} +.elementor-control-responsive-switchers.elementor-responsive-switchers-open .elementor-responsive-switcher:hover { + color: var(--e-a-color-primary-bold); +} +.elementor-control-responsive-switchers.elementor-responsive-switchers-open .elementor-control-responsive-switchers__holder { + box-shadow: var(--e-a-dropdown-shadow); +} + +.elementor-responsive-switcher { + all: unset; + display: flex; + align-items: center; + justify-content: center; + position: relative; + z-index: 2; + cursor: pointer; + height: 0; + width: 100%; + transform: scale(0); + opacity: 0; + transition: 0.15s; + font-size: 12px; + color: inherit; +} +.elementor-responsive-switcher:hover { + color: var(--e-a-color-primary-bold); +} + +.elementor-device-widescreen .elementor-responsive-switcher.elementor-responsive-switcher-widescreen { + height: 2.5em; + transform: scale(1); + opacity: 1; +} +.elementor-device-widescreen .elementor-responsive-switchers-open:not(:hover) .elementor-responsive-switcher.elementor-responsive-switcher-widescreen { + color: var(--e-a-color-primary-bold); +} + +.elementor-device-desktop .elementor-responsive-switcher.elementor-responsive-switcher-desktop { + height: 2.5em; + transform: scale(1); + opacity: 1; +} +.elementor-device-desktop .elementor-responsive-switchers-open:not(:hover) .elementor-responsive-switcher.elementor-responsive-switcher-desktop { + color: var(--e-a-color-primary-bold); +} + +.elementor-device-laptop .elementor-responsive-switcher.elementor-responsive-switcher-laptop { + height: 2.5em; + transform: scale(1); + opacity: 1; +} +.elementor-device-laptop .elementor-responsive-switchers-open:not(:hover) .elementor-responsive-switcher.elementor-responsive-switcher-laptop { + color: var(--e-a-color-primary-bold); +} + +.elementor-device-tablet_extra .elementor-responsive-switcher.elementor-responsive-switcher-tablet_extra { + height: 2.5em; + transform: scale(1); + opacity: 1; +} +.elementor-device-tablet_extra .elementor-responsive-switchers-open:not(:hover) .elementor-responsive-switcher.elementor-responsive-switcher-tablet_extra { + color: var(--e-a-color-primary-bold); +} + +.elementor-device-tablet .elementor-responsive-switcher.elementor-responsive-switcher-tablet { + height: 2.5em; + transform: scale(1); + opacity: 1; +} +.elementor-device-tablet .elementor-responsive-switchers-open:not(:hover) .elementor-responsive-switcher.elementor-responsive-switcher-tablet { + color: var(--e-a-color-primary-bold); +} + +.elementor-device-mobile_extra .elementor-responsive-switcher.elementor-responsive-switcher-mobile_extra { + height: 2.5em; + transform: scale(1); + opacity: 1; +} +.elementor-device-mobile_extra .elementor-responsive-switchers-open:not(:hover) .elementor-responsive-switcher.elementor-responsive-switcher-mobile_extra { + color: var(--e-a-color-primary-bold); +} + +.elementor-device-mobile .elementor-responsive-switcher.elementor-responsive-switcher-mobile { + height: 2.5em; + transform: scale(1); + opacity: 1; +} +.elementor-device-mobile .elementor-responsive-switchers-open:not(:hover) .elementor-responsive-switcher.elementor-responsive-switcher-mobile { + color: var(--e-a-color-primary-bold); +} + +.e-units-wrapper { + position: relative; + margin-inline-start: auto; +} +.e-units-wrapper .e-units-switcher { + cursor: pointer; + font-size: 10px; + padding: 0.5em; + margin: -0.5em 0; + transition: all ease-in-out 0.15s; +} +.e-units-wrapper .e-units-switcher:hover { + color: var(--e-a-color-primary-bold); + background-color: var(--e-a-bg-hover); + border-radius: var(--e-a-border-radius); +} +.e-units-wrapper .e-units-switcher:not([data-selected=custom]) i.eicon-edit { + display: none; +} +.e-units-wrapper .e-units-switcher[data-selected=custom] span { + display: none; +} +.e-units-wrapper .e-units-switcher i.eicon-angle-right { + transform: rotate(90deg); +} + +.e-units-choices input { + display: none; +} +.e-units-choices input:checked + label { + color: var(--e-a-color-primary-bold); +} +.e-units-choices label { + cursor: pointer; + display: block; +} +.e-units-choices { + display: none; + overflow: hidden; + max-height: 0; + position: absolute; + top: -0.8em; + left: -0.5em; + width: 2.5em; + text-align: center; + background-color: var(--e-a-bg-default); + border-radius: var(--e-a-border-radius); + box-shadow: var(--e-a-dropdown-shadow); + animation-timing-function: linear; + animation-delay: 0s; + animation-fill-mode: forwards; + z-index: 11000; +} +.e-units-choices .elementor-units-choices-label { + display: flex; + align-items: center; + height: 3em; + justify-content: center; + font-size: 10px; + transition: 0.15s; +} +.e-units-choices .elementor-units-choices-label:hover { + color: var(--e-a-color-primary-bold); +} +.e-units-choices.e-units-choices-open { + display: block; + animation-duration: 1s; + animation-name: e-units-choices-open; +} + +.e-units-custom input { + font-family: monospace; + font-size: 0.85em; +} + +@keyframes e-units-choices-open { + from { + max-height: 0; + } + to { + max-height: 100vh; + } +} +.elementor-control-type-gaps .elementor-control-gaps { + display: flex; +} +.elementor-control-type-gaps li { + flex: 1; + transition: flex-grow 0.3s ease-in-out; +} +.elementor-control-type-gaps li input, +.elementor-control-type-gaps li .elementor-link-gaps { + display: block; + text-align: center; + width: 100%; + height: 27px; +} +.elementor-control-type-gaps li input { + border-inline-start: none; + border-radius: 0; + padding: var(--e-a-border-radius); +} +.elementor-control-type-gaps li input:focus { + border-inline-start: var(--e-a-border-bold); + margin-inline-start: -1px; + width: calc(100% + 1px); +} +.elementor-control-type-gaps li input:focus + .elementor-control-gap-label { + color: var(--e-a-color-txt); +} +.elementor-control-type-gaps li .elementor-link-gaps { + border: var(--e-a-border-bold); + border-inline-start: none; + background-color: var(--e-a-bg-default); + padding: 0; + outline: none; + border-start-start-radius: 0; + border-start-end-radius: var(--e-a-border-radius); + border-end-start-radius: 0; + border-end-end-radius: var(--e-a-border-radius); + cursor: pointer; +} +.elementor-control-type-gaps li:first-child input { + border-inline-start: 1px solid var(--e-a-border-color-bold); + border-start-start-radius: var(--e-a-border-radius); + border-start-end-radius: 0; + border-end-start-radius: var(--e-a-border-radius); + border-end-end-radius: 0; +} +.elementor-control-type-gaps li:first-child input:focus { + border-color: var(--e-a-border-color-focus); + margin-inline-start: 0; + width: 100%; +} +.elementor-control-type-gaps li:last-child { + max-width: 27px; +} +.elementor-control-type-gaps.e-units-custom li.elementor-control-gap:focus-within { + flex: 2.5; +} +.elementor-control-type-gaps .elementor-control-gap-label { + color: var(--e-a-color-txt-muted); + display: block; + text-align: center; + font-size: 9px; + padding-block-start: 5px; +} +.elementor-control-type-gaps .elementor-link-gaps.unlinked { + background-color: var(--e-a-bg-default); +} +.elementor-control-type-gaps .elementor-link-gaps.unlinked .elementor-linked { + display: none; +} +.elementor-control-type-gaps .elementor-link-gaps:not(.unlinked) { + background-color: var(--e-a-bg-active-bold); + color: var(--e-a-color-txt-accent); + border-color: var(--e-a-border-color-bold); +} +.elementor-control-type-gaps .elementor-link-gaps:not(.unlinked) .elementor-unlinked { + display: none; +} + +.elementor-control-type-icons .elementor-control-media__preview > * { + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); +} +.elementor-control-type-icons .elementor-control-media__preview i { + font-size: 70px; +} +.elementor-control-type-icons .elementor-control-media__preview svg { + height: 75%; +} +.elementor-control-type-icons .elementor-control-icons--inline__svg i.eicon-upload { + font-size: 15px; +} + +.elementor-control-type-gallery .elementor-control-media__content { + border: var(--e-a-border-bold); + border-radius: 3px; +} +.elementor-control-type-gallery .elementor-control-gallery-status { + font-size: 12px; + height: 27px; + padding-inline-start: 10px; + border-block-end: var(--e-a-border-bold); + display: flex; +} +.elementor-control-type-gallery .elementor-control-gallery-status > * { + display: flex; + align-items: center; +} +.elementor-control-type-gallery .elementor-control-gallery-status-title { + flex-grow: 1; +} +.elementor-control-type-gallery .elementor-control-gallery-content { + position: relative; + overflow: hidden; +} +.elementor-control-type-gallery .elementor-control-gallery-thumbnails { + display: grid; + grid-template-columns: repeat(auto-fill, minmax(48px, 1fr)); + grid-gap: 10px; + cursor: pointer; + padding: 10px; +} +.elementor-control-type-gallery .elementor-control-gallery-thumbnails:hover + .elementor-control-gallery-edit, .elementor-control-type-gallery .elementor-control-gallery-thumbnails:focus + .elementor-control-gallery-edit { + opacity: 1; +} +.elementor-control-type-gallery .elementor-control-gallery-thumbnail { + width: 48px; + height: 48px; + -o-object-fit: cover; + object-fit: cover; + border: var(--e-a-border); +} +.elementor-control-type-gallery .elementor-control-gallery-thumbnail + .unoptimized__image { + outline: 2px solid var(--e-a-btn-bg-danger-active); + opacity: 0.6; +} +.elementor-control-type-gallery .elementor-control-gallery-edit { + position: absolute; + top: 0; + bottom: 0; + left: 0; + right: 0; + background-color: rgba(0, 0, 0, 0.2); + padding: 10px; + font-size: 11px; + transition: all 0.3s ease-in-out; + pointer-events: none; + cursor: pointer; + opacity: 0; +} +.elementor-control-type-gallery .elementor-control-gallery-edit span { + position: absolute; + top: 10px; + right: 10px; + width: 21px; + height: 21px; + color: var(--e-a-color-white); + background-color: rgba(0, 0, 0, 0.5); + box-shadow: 0 0 7px 0 rgba(0, 0, 0, 0.2); + transition: var(--e-a-transition-hover); +} +.elementor-control-type-gallery .elementor-control-gallery-edit span i { + font-size: 11px; + padding: 5px; +} +.elementor-control-type-gallery .elementor-control-gallery-edit span:hover { + background-color: rgba(0, 0, 0, 0.6); +} +.elementor-control-type-gallery .elementor-control-gallery-add { + width: 48px; + height: 48px; + font-size: 14px; +} +.elementor-control-type-gallery .elementor-control-gallery-add i { + margin: 0; +} +.elementor-control-type-gallery.elementor-gallery-empty .elementor-control-gallery-clear, +.elementor-control-type-gallery.elementor-gallery-empty .elementor-control-gallery-thumbnails, +.elementor-control-type-gallery.elementor-gallery-empty .elementor-control-gallery-edit { + display: none; +} +.elementor-control-type-gallery.elementor-gallery-empty .elementor-control-gallery-content { + padding: 10px; +} +.elementor-control-type-gallery.elementor-gallery-has-images .elementor-control-gallery-add { + display: none; +} +.elementor-control-type-gallery.elementor-control-dynamic .elementor-control-gallery-clear { + border-inline-start: var(--e-a-border); +} +.elementor-control-type-gallery .elementor-control-gallery-clear { + color: currentColor; + background-color: transparent; + border: none; + cursor: pointer; + justify-content: center; +} +.elementor-control-type-gallery .elementor-control-gallery-clear:hover, .elementor-control-type-gallery .elementor-control-gallery-clear:focus { + color: var(--e-a-color-danger); +} +.elementor-control-type-gallery .elementor-control-dynamic-switcher { + border-width: 0; + border-inline-start-width: 1px; + border-block-end-width: 1px; + border-radius: 0; +} + +.e-global__popover { + width: 288px; + z-index: 1; + font-size: 12px; + padding-inline-start: 10px; +} +.e-global__popover-toggle { + border: var(--e-a-border-bold); + border-inline-end: 0; + border-start-start-radius: 3px; + border-start-end-radius: 0; + border-end-start-radius: 3px; + border-end-end-radius: 0; + display: flex; + align-items: center; + justify-content: center; + cursor: pointer; + transition: var(--e-a-transition-hover); +} +.e-global__popover-toggle:hover { + background-color: var(--e-a-bg-hover); +} +.e-global__popover-toggle--active { + color: var(--e-a-color-primary-bold); + background-color: var(--e-a-bg-active-bold); +} +.e-global__popover-container { + box-shadow: var(--e-a-popover-shadow); + border-radius: var(--e-a-border-radius); + background-color: var(--e-a-bg-default); +} +.e-global__popover-title { + padding: 15px 20px; + font-weight: 500; + border-block-end: var(--e-a-border); + display: flex; +} +.e-global__popover-title > i { + margin-inline-end: 5px; +} +.e-global__popover-title-text { + flex-grow: 1; +} +.e-global__popover-info { + margin-inline-end: 10px; + display: inline-block; +} +.e-global__popover-info-tooltip { + width: 270px; + z-index: 1; + background-color: rgba(0, 0, 0, 0.9); + color: var(--e-a-color-white); + padding: 20px; + border-radius: 3px; +} +.e-global__popover-info-tooltip:after { + content: ""; + position: absolute; + bottom: -17px; + left: 16px; + border: 10px solid transparent; + border-block-start-color: rgba(0, 0, 0, 0.9); +} +.e-global__popover-info i { + font-size: 13px; +} +.e-global__preview-items-container { + max-height: 260px; + overflow-y: auto; + padding: 5px 0; +} +.e-global__preview-items-container::-webkit-scrollbar { + width: 7px; +} +.e-global__preview-items-container::-webkit-scrollbar-thumb { + background-color: #BABFC5; + border-radius: 10px; +} +.e-global__manage-button { + font-weight: 500; + cursor: pointer; +} +.e-global__typography { + padding-block: 10px; + padding-inline: 35px 20px; + white-space: nowrap; + text-overflow: ellipsis; + overflow: hidden; +} +.e-global__typography.e-global__preview-item--selected:before { + font-family: "eicons"; + font-size: 13px; + content: "\e90e"; + position: absolute; + transform: translateY(-50%); + top: 50%; + inset-inline-start: 13px; +} +.e-global__color { + padding: 10px 20px; + display: flex; + align-items: center; +} +.e-global__color-preview-container { + height: 20px; + width: 20px; + border-radius: 3px; + border: 1px solid rgba(0, 0, 0, 0.1); + margin-inline-end: 10px; + flex-shrink: 0; + position: relative; +} +.e-global__color-preview-color, .e-global__color-preview-transparent-bg { + border-radius: 3px; + height: 100%; + width: 100%; + position: absolute; + top: 0; + left: 0; +} +.e-global__color-preview-transparent-bg { + background-image: linear-gradient(45deg, var(--e-a-border-color-bold) 25%, transparent 0, transparent 75%, var(--e-a-border-color-bold) 0, var(--e-a-border-color-bold)), linear-gradient(45deg, var(--e-a-border-color-bold) 25%, transparent 0, transparent 75%, var(--e-a-border-color-bold) 0, var(--e-a-border-color-bold)); + background-size: 12px 12px; + background-position: 0 0, calc(12px / 2) calc(12px / 2); +} +.e-global__color-title { + flex-grow: 1; + white-space: nowrap; + text-overflow: ellipsis; + overflow: hidden; + padding-inline-end: 10px; +} +.e-global__color-hex { + font-size: 10px; + color: var(--e-a-color-txt-muted); +} +.e-global__color .pcr-button { + background-color: var(--e-a-bg-default); +} +.e-global__color.e-global__preview-item--selected .e-global__color-preview-container { + display: flex; + justify-content: center; + align-items: center; + color: var(--e-a-color-white); +} +.e-global__color.e-global__preview-item--selected .e-global__color-preview-container:before { + font-family: "eicons"; + font-size: 13px; + content: "\e90e"; + text-shadow: 0 0 1px #000; + z-index: 1; +} +.e-global__preview-item { + cursor: pointer; + position: relative; +} +.e-global__preview-item:hover { + background-color: var(--e-a-bg-hover); +} +.e-global__confirm-delete i, .e-global__confirm-message-text i { + color: var(--e-a-color-warning); +} +.e-global__confirm-input-wrapper { + display: flex; + align-items: center; + border: var(--e-a-border); + border-radius: var(--e-a-border-radius); + margin: 15px 0; + padding: 2px; +} +.e-global__confirm-input-wrapper input { + font-family: var(--e-a-font-family); + font-size: 12px; + padding: 2px; + border: 0; +} + +.e-control-global .elementor-control-input-wrapper { + display: flex; + justify-content: flex-end; + max-width: 135px; + width: 100%; +} +.e-control-global.elementor-control .elementor-control-input-wrapper { + display: flex; + flex-direction: row; + align-items: stretch; +} +.e-control-global .elementor-control-spinner { + margin-inline-end: 4px; +} + +.elementor-control-type-hidden { + display: none !important; +} + +.elementor-control-type-icon .select2-selection__rendered .eicon { + margin-inline-end: 3px; +} + +.elementor-control-type-image_dimensions .elementor-control-field-description { + margin: 0 0 15px; + line-height: 1.4; +} +.elementor-control-type-image_dimensions .elementor-control-input-wrapper { + display: flex; + align-items: flex-start; +} +.elementor-control-type-image_dimensions .elementor-image-dimensions-field { + width: 65px; +} +.elementor-control-type-image_dimensions .elementor-image-dimensions-field input:focus + .elementor-image-dimensions-field-description { + color: var(--e-a-color-txt); +} +.elementor-control-type-image_dimensions .elementor-image-dimensions-separator { + width: 20px; + text-align: center; + padding-block-start: 4px; +} +.elementor-control-type-image_dimensions .elementor-image-dimensions-field-description { + display: block; + margin-block-start: 5px; + color: var(--e-a-color-txt-disabled); + font-size: 10px; + text-align: center; +} +.elementor-control-type-image_dimensions .elementor-image-dimensions-apply-button { + margin-inline-start: auto; +} + +.elementor-control-media.e-media-empty .elementor-control-media-area .elementor-control-media__remove, .elementor-control-media.e-media-empty .elementor-control-media-area .elementor-control-media__content__remove { + display: none; +} +.elementor-control-media.e-media-empty-placeholder .e-control-image-size { + display: none; +} +.elementor-control-media:not(.e-media-empty) .elementor-control-media__content__upload-button { + display: none; +} +.elementor-control-media .eicon-plus-circle { + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + color: var(--e-a-color-white); + font-size: 20px; +} +.elementor-control-media__content__upload-button { + background-color: var(--e-a-bg-active-bold); +} +.elementor-control-media__preview { + height: 100%; + background-size: cover; + background-position: center; + padding-block-end: 42.8571%; +} +.elementor-control-media-area { + background-image: linear-gradient(45deg, var(--e-a-border-color-bold) 25%, transparent 0, transparent 75%, var(--e-a-border-color-bold) 0, var(--e-a-border-color-bold)), linear-gradient(45deg, var(--e-a-border-color-bold) 25%, transparent 0, transparent 75%, var(--e-a-border-color-bold) 0, var(--e-a-border-color-bold)); + background-size: 16px 16px; + background-position: 0 0, calc(16px / 2) calc(16px / 2); + background-color: var(--e-a-bg-default); + border: var(--e-a-border-bold); + aspect-ratio: 21/9; +} +.elementor-control-media-area:not(:hover) .elementor-control-media__remove { + display: none; +} +.elementor-control-media-area .eicon-video-camera { + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + color: rgba(255, 255, 255, 0.7); + font-size: 21px; +} +.elementor-control-media .elementor-control-media__content { + aspect-ratio: 21/9; + position: relative; + cursor: pointer; + overflow: hidden; +} +.elementor-control-media .elementor-control-media__content:hover:after { + content: ""; + position: absolute; + top: 0; + bottom: 0; + left: 0; + right: 0; + background-color: rgba(0, 0, 0, 0.2); + pointer-events: none; +} +.elementor-control-media .elementor-control-media__content:not(:hover) .elementor-control-media__tools { + bottom: -30px; +} +.elementor-control-media__content { + transition: all 0.2s ease-in-out; +} +.elementor-control-media__tools { + position: absolute; + bottom: 0; + left: 0; + right: 0; + height: 27px; + transition: all 0.2s ease-in-out; +} +.elementor-control-media__tools > *:not(:first-child) { + margin-inline-start: 1px; +} +.elementor-control-media__tool { + display: flex; + align-items: center; + justify-content: center; + flex-grow: 1; + color: var(--e-a-color-white); + background-color: rgba(0, 0, 0, 0.9); + font-size: 11px; + transition: var(--e-a-transition-hover); +} +.elementor-control-media__tool:hover { + background-color: rgba(0, 0, 0, 0.8); +} +.elementor-control-media__remove { + display: flex; + align-items: center; + justify-content: center; + transition: all 0.3s ease-in-out; +} +.elementor-control-media__content__remove { + position: absolute; + z-index: 1; + top: 10px; + right: 10px; + width: 20px; + height: 20px; + font-size: 11px; + color: var(--e-a-color-white); + background-color: rgba(0, 0, 0, 0.5); + border-radius: var(--e-border-radius); + box-shadow: 0 0 7px 0 rgba(0, 0, 0, 0.2); + transition: var(--e-a-transition-hover); +} +.elementor-control-media__content__remove:hover { + background-color: rgba(0, 0, 0, 0.6); +} +.elementor-control-media.e-media-empty .elementor-control-file-area { + display: none; +} +.elementor-control-media__warnings:empty { + display: none; +} +.elementor-control-media__warnings:not(:empty) { + margin-block-start: 10px; +} +.elementor-control-media__file { + display: flex; + justify-content: space-between; + align-items: center; + width: 100%; + margin-block-start: 10px; + border: var(--e-a-border); +} +.elementor-control-media__file__content { + padding-inline-start: 5px; + font-size: 12px; +} +.elementor-control-media__file__content__label { + color: #9DA5AE; +} +.elementor-control-media__file__content__info { + display: flex; + align-items: center; + font-weight: 500; +} +.elementor-control-media__file__content__info__icon { + margin-inline-end: 5px; +} +.elementor-control-media__file__controls { + display: flex; + border-inline-start: var(--e-a-border); +} +.elementor-control-media__file__controls__upload-button, .elementor-control-media__file__controls__remove { + width: 27px; + height: 27px; + cursor: pointer; + align-items: center; +} +.elementor-control-media__file__controls__upload-button { + display: flex; + justify-content: center; +} +.elementor-control-media__file__controls__remove { + border-inline-end: var(--e-a-border); +} +.elementor-control-media:not(.e-media-empty) .elementor-control-media__file__content__label { + display: none; +} +.elementor-control-media.e-media-empty .elementor-control-media__file__content__info { + display: none; +} +.elementor-control-media.e-media-empty .elementor-control-media__file__controls__remove { + display: none; +} +.elementor-control-media .elementor-control-dynamic-switcher { + border: none; + border-radius: 0; + background-color: rgba(0, 0, 0, 0.9); + color: var(--e-a-color-white); +} +.elementor-control-media .elementor-control-dynamic-switcher:hover { + background-color: rgba(0, 0, 0, 0.8); + color: var(--e-a-color-white); +} +.elementor-control-media .e-control-image-size { + display: flex; + flex-direction: column; + width: 100%; + padding-block-start: 20px; +} +.elementor-control-media .e-control-image-size .elementor-control-input-wrapper { + margin-inline-start: auto; +} + +.elementor-control-type-media.elementor-control-dynamic-value .elementor-control-input-wrapper { + border: none; +} + +.elementor-control:not(.elementor-control-type-icons) .elementor-control-media__preview { + background-color: var(--e-a-bg-active-bold); +} + +.elementor-control-notice { + display: flex; + justify-content: flex-start; + align-items: flex-start; + gap: 8px; + padding: 16px; + border-radius: 3px; + border: 1px solid var(--notice-control-color, var(--e-a-color-txt)); + color: var(--e-a-color-txt); + font-size: 12px; + font-weight: 400; + line-height: 1.5; + text-align: start; + margin-block-start: 10px; +} +.elementor-control-notice-type-info { + --notice-control-color: var(--e-a-color-info); +} +.elementor-control-notice-type-success { + --notice-control-color: var(--e-a-color-success); +} +.elementor-control-notice-type-warning { + --notice-control-color: var(--e-a-color-warning); +} +.elementor-control-notice-type-danger { + --notice-control-color: var(--e-a-color-danger); +} +.elementor-control-notice-icon { + flex-basis: 18px; + color: var(--notice-control-color); +} +.elementor-control-notice-main { + display: flex; + flex-direction: column; + justify-content: flex-start; + align-items: flex-start; + gap: 6px; + flex: 1; +} +.elementor-control-notice-main-heading { + font-weight: 700; + font-style: italic; +} +.elementor-control-notice-main-content { + font-style: italic; + line-height: 1.5; +} +.elementor-control-notice-main-actions { + display: flex; + gap: 10px; + padding-block-start: 8px; +} +.elementor-control-notice-main a { + color: inherit; + font-weight: 700; + cursor: pointer; +} +.elementor-control-notice-main a:hover, .elementor-control-notice-main a:focus { + color: inherit; +} +.elementor-control-notice-dismiss { + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + background-color: transparent; + border: 0; + padding: 0; + margin: 0; + cursor: pointer; +} + +.elementor-control-type-popover_toggle input { + display: none; +} +.elementor-control-type-popover_toggle label { + cursor: pointer; +} +.elementor-control-type-popover_toggle .elementor-control-input-wrapper { + display: flex; + flex-direction: row-reverse; + align-items: center; +} +.elementor-control-type-popover_toggle .elementor-control-popover-toggle-toggle:checked + .elementor-control-popover-toggle-toggle-label { + color: var(--e-a-color-txt-active); + background-color: var(--e-a-bg-active-bold); +} +.elementor-control-type-popover_toggle .elementor-control-popover-toggle-toggle:not(:checked) ~ .elementor-control-popover-toggle-reset-label { + display: none; +} +.elementor-control-type-popover_toggle .elementor-control-popover-toggle-toggle-label { + height: 27px; + display: inline-flex; + align-items: center; + justify-content: center; + border-radius: var(--e-a-border-radius); + border: var(--e-a-border-bold); + transition: var(--e-a-transition-hover); +} +.elementor-control-type-popover_toggle .elementor-control-popover-toggle-toggle-label:hover { + background-color: var(--e-a-bg-hover); +} +.elementor-control-type-popover_toggle .elementor-control-popover-toggle-reset-label { + color: var(--e-a-color-txt-muted); + margin-inline-end: 5px; +} +.elementor-control-type-popover_toggle .elementor-control-popover-toggle-reset-label:hover { + color: var(--e-a-color-txt); +} + +.elementor-controls-popover.e-controls-popover--typography { + padding-block-start: 0; +} + +.e-control-global .elementor-control-popover-toggle-toggle-label { + border-start-start-radius: 0; + border-start-end-radius: var(--e-a-border-radius); + border-end-start-radius: 0; + border-end-end-radius: var(--e-a-border-radius); + flex-shrink: 0; +} + +.elementor-control-type-repeater .elementor-control:not(.elementor-control-type-tab) { + padding-inline-start: 10px; + padding-inline-end: 10px; + padding-block-end: 10px; +} +.elementor-control-type-repeater.elementor-repeater-has-minimum-rows .elementor-repeater-tool-remove { + display: none; +} +.elementor-control-type-repeater .elementor-repeater-fields { + margin: 10px 0; +} +.elementor-control-type-repeater .elementor-repeater-row-controls { + border: var(--e-a-border-bold); + border-block-start-width: 0; + padding-block-start: 15px; +} +.elementor-control-type-repeater .elementor-repeater-row-controls:not(.editable) { + display: none; +} +.elementor-control-type-repeater .elementor-repeater-row-tools { + display: flex; + align-items: center; + width: 100%; + border: 1px solid var(--e-a-border-color-bold); + transition: var(--e-a-transition-hover); +} +.elementor-control-type-repeater .elementor-repeater-row-tools > button { + display: flex; + align-items: center; + justify-content: center; + height: 40px; + border: none; + background-color: transparent; + color: currentColor; + cursor: pointer; +} +.elementor-control-type-repeater .elementor-repeater-row-tools > button:hover, .elementor-control-type-repeater .elementor-repeater-row-tools > button:focus { + background-color: var(--e-a-bg-hover); +} +.elementor-control-type-repeater .elementor-repeater-row-tools .elementor-repeater-row-item-title { + flex: 1; + justify-content: flex-start; + padding: 0 10px; + font-size: var(--control-title-size); + white-space: nowrap; + text-overflow: ellipsis; + overflow: hidden; +} +.elementor-control-type-repeater .elementor-repeater-row-tools .elementor-repeater-row-item-title .eicon, +.elementor-control-type-repeater .elementor-repeater-row-tools .elementor-repeater-row-item-title i, +.elementor-control-type-repeater .elementor-repeater-row-tools .elementor-repeater-row-item-title svg { + margin-inline-end: 5px; +} +.elementor-control-type-repeater .elementor-repeater-row-tools .elementor-repeater-row-item-title img[src$=svg] { + width: 1em; +} +.elementor-control-type-repeater .elementor-repeater-row-tools .elementor-repeater-row-tool { + width: 40px; + border-inline-start: 1px solid var(--e-a-border-color-bold); +} +.elementor-control-type-repeater .elementor-repeater-row-tools .elementor-repeater-row-handle-sortable { + width: 10px; + border-inline-end: 1px solid var(--e-a-border-color-bold); + cursor: move; +} +.elementor-control-type-repeater .elementor-button-wrapper { + text-align: center; + padding-block-start: 5px; +} + +#elementor-controls { + padding-block-start: 15px; +} + +.elementor-control-type-section { + padding: 0; +} +.elementor-control-type-section.e-open { + padding-block-end: 10px; +} +.elementor-control-type-section + .elementor-control:not(.elementor-control-type-section):before { + display: none; +} +.elementor-control-type-section:not(:first-child):not(.elementor-control-type-section + .elementor-control-type-section) { + margin-block-start: 25px; +} + +.elementor-control-type-select .elementor-control-input-wrapper { + position: relative; +} +.elementor-control-type-select .elementor-control-input-wrapper select { + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + font-size: var(--control-title-size); + font-family: inherit; + font-weight: inherit; + font-style: inherit; + text-transform: inherit; + letter-spacing: inherit; + line-height: inherit; + flex-basis: 100%; + padding-inline-start: 5px; + padding-inline-end: 20px; + cursor: pointer; +} +.elementor-control-type-select .elementor-control-input-wrapper select.e-select-placeholder { + color: var(--e-a-color-txt-disabled); +} +.elementor-control-type-select .elementor-control-input-wrapper option.e-option-placeholder { + display: none; +} +.elementor-control-type-select .elementor-control-input-wrapper:after { + font-family: eicons; + content: "\e8ad"; + font-size: 12px; + position: absolute; + top: 50%; + transform: translateY(-50%); + right: 5px; + pointer-events: none; +} +.elementor-control-type-select .elementor-control-field.elementor-control-field-select-small .elementor-control-input-wrapper { + max-width: 80px; +} + +.elementor-shadow-box .elementor-shadow-slider { + margin-block-start: 10px; +} +.elementor-shadow-box .elementor-color-picker-wrapper .elementor-control-title { + flex-grow: 1; +} + +.elementor-control-type-slider.elementor-control-dynamic input { + border-start-start-radius: var(--e-a-border-radius); + border-start-end-radius: 0; + border-end-start-radius: var(--e-a-border-radius); + border-end-end-radius: 0; +} +.elementor-control-type-slider .elementor-control-unit-2 { + width: 21%; +} +.elementor-control-type-slider.elementor-control-type-slider--multiple .elementor-control-input-wrapper { + display: block; +} +.elementor-control-type-slider--multiple { + padding-block-end: 40px; +} +.elementor-control-type-slider--multiple .elementor-slider { + margin-block-start: 12px; + width: 98%; +} +.elementor-control-type-slider--handles-range .elementor-slider .noUi-handle { + border-radius: 0; + width: 10px; + transform: translateY(calc(50% - 14px)) translateX(4px); +} +.elementor-control-type-slider--handles-range .elementor-slider .noUi-handle:after { + content: ""; + position: absolute; + top: 2px; + height: 12px; + width: 11px; + transform: rotate(45deg); + background-color: var(--e-a-color-white); + border-radius: 3px; +} +.elementor-control-type-slider--handles-range .elementor-slider .noUi-handle-lower:after { + left: 5px; + box-shadow: 2px -2px 3px 0px rgba(0, 0, 0, 0.1); +} +.elementor-control-type-slider--handles-range .elementor-slider .noUi-handle-upper:after { + right: 5px; + box-shadow: -2px 2px 3px 0px rgba(0, 0, 0, 0.1); +} +.elementor-control-type-slider .elementor-control-dynamic-switcher { + border-inline-start-width: 0; + border-start-start-radius: 0; + border-start-end-radius: var(--e-a-border-radius); + border-end-start-radius: 0; + border-end-end-radius: var(--e-a-border-radius); +} +.elementor-control-type-slider .elementor-control-input-wrapper { + display: flex; + align-items: center; +} +.elementor-control-type-slider .elementor-dynamic-cover { + margin-block-start: 10px; +} +.elementor-control-type-slider.e-units-custom .elementor-slider { + display: none; +} +.elementor-control-type-slider.e-units-custom .elementor-slider-input { + width: 100%; + margin: 0; + transition: none; +} + +.elementor-slider { + flex-grow: 1; + height: 4px; + background-color: var(--e-a-border-color-bold); + border-radius: 5px; + position: relative; + cursor: pointer; +} +.elementor-slider-input { + width: 21%; + min-width: 54px; + margin-inline-start: 12px; + transition: width 0.3s ease-in-out; +} +.elementor-slider__extra { + position: relative; +} +.elementor-slider__labels { + display: flex; + justify-content: space-between; +} +.elementor-slider__label { + font-size: 9px; + color: var(--e-a-color-txt-disabled); +} +.elementor-slider__scales { + position: absolute; + display: flex; + justify-content: space-evenly; + width: 100%; + margin-block-start: 4px; +} +.elementor-slider__scale { + width: 1px; + height: 21px; + background-color: var(--e-a-border-color-focus); +} +.elementor-slider .noUi-handle { + height: 16px; + width: 16px; + background-color: var(--e-a-color-white); + right: 0; + transform: translateY(calc(50% - 14px)) translateX(8px); + position: absolute; + box-shadow: 0 1px 5px rgba(0, 0, 0, 0.3); + border-radius: 50%; +} +.elementor-slider .noUi-connects { + position: absolute; + width: 100%; + height: 4px; +} +.elementor-slider .noUi-connect { + position: absolute; + z-index: 0; + top: 0; + left: 0; + height: 100%; + width: 100%; + will-change: transform; + transform-origin: 0 0; + background-color: var(--e-a-border-color-focus); +} +.elementor-slider .noUi-tooltip { + position: absolute; + top: calc(100% + 5px); + left: calc(50% - 4px); + transform: translateX(-50%); + font-size: 10px; +} + +.elementor-control-type-structure .elementor-control-field { + display: initial; +} +.elementor-control-type-structure .elementor-control-structure-preset { + padding: 3px; + border-radius: var(--e-border-radius); + display: inline-block; + cursor: pointer; + height: 50px; +} +.elementor-control-type-structure .elementor-control-structure-preset svg { + height: 100%; +} +.elementor-control-type-structure .elementor-control-structure-preset path { + fill: var(--e-a-border-color-bold); +} +.elementor-control-type-structure .elementor-control-structure-reset { + padding: 15px 20px 0; + font-size: 11px; + cursor: pointer; + color: var(--e-a-color-txt-muted); + border-block-start: var(--e-a-border); + margin: 0 -20px; +} +.elementor-control-type-structure .elementor-control-structure-reset:hover { + color: var(--e-a-color-txt); +} +.elementor-control-type-structure .elementor-control-structure-title { + margin: 10px -20px 0; +} +.elementor-control-type-structure .elementor-control-structure-title:before { + height: 10px; + box-shadow: inset 0 2px 4px rgba(127, 127, 127, 0.1); +} +.elementor-control-type-structure .elementor-control-structure-presets { + display: flex; + flex-wrap: wrap; + justify-content: space-between; +} +.elementor-control-type-structure .elementor-control-structure-presets input { + display: none; +} +.elementor-control-type-structure .elementor-control-structure-presets input:checked + .elementor-control-structure-preset path { + fill: var(--e-a-border-color-focus); +} +.elementor-control-type-structure .elementor-control-structure-preset-wrapper { + margin-block-end: 15px; +} +.elementor-control-type-structure .elementor-control-structure-preset-title { + text-align: center; + padding-block-start: 5px; + font-style: italic; + font-size: 11px; + color: #9DA5AE; +} + +.elementor-control-type-switcher .elementor-control-input-wrapper { + text-align: end; +} +.elementor-control-type-switcher .elementor-switch { + position: relative; + display: inline-block; + vertical-align: top; + height: 20px; + background-color: var(--e-a-bg-default); + border-radius: 18px; + cursor: pointer; +} +.elementor-control-type-switcher .elementor-switch-input { + display: none; +} +.elementor-control-type-switcher .elementor-switch-label { + position: relative; + display: block; + height: inherit; + font-size: 10px; + background: var(--e-a-bg-active-bold); + border-radius: inherit; + transition: 0.15s ease-out; + transition-property: opacity, background; +} +.elementor-control-type-switcher .elementor-switch-label:before, .elementor-control-type-switcher .elementor-switch-label:after { + position: absolute; + top: 0; + width: 50%; + text-align: center; + line-height: 20px; + transition: inherit; +} +.elementor-control-type-switcher .elementor-switch-label:before { + content: attr(data-off); + right: 5px; + color: var(--e-a-color-txt-muted); +} +.elementor-control-type-switcher .elementor-switch-label:after { + content: attr(data-on); + left: 5px; + color: var(--e-a-btn-color); + opacity: 0; +} +.elementor-control-type-switcher .elementor-switch-input:checked ~ .elementor-switch-label { + background: var(--e-a-btn-bg-primary); +} +.elementor-control-type-switcher .elementor-switch-input:checked ~ .elementor-switch-label:before { + opacity: 0; +} +.elementor-control-type-switcher .elementor-switch-input:checked ~ .elementor-switch-label:after { + opacity: 1; +} +.elementor-control-type-switcher .elementor-switch-handle { + position: absolute; + top: 1px; + left: 1px; + width: 18px; + height: 18px; + background: white; + border-radius: 10px; + transition: left 0.15s ease-out; +} +.elementor-control-type-switcher .elementor-switch-input:checked ~ .elementor-switch-handle { + left: initial; + right: 1px; +} + +.elementor-control-type-tabs { + display: flex; + font-size: var(--control-title-size); +} + +.elementor-control-type-tab { + text-align: center; + width: 100%; + padding: 0; + line-height: 25px; + border-block-start: var(--e-a-border-bold); + border-block-end: var(--e-a-border-bold); + border-inline-end: var(--e-a-border-bold); + transition: var(--e-a-transition-hover); + cursor: pointer; +} +.elementor-control-type-tab:first-child { + border-inline-start: var(--e-a-border-bold); + border-start-start-radius: var(--e-a-border-radius); + border-end-start-radius: var(--e-a-border-radius); +} +.elementor-control-type-tab:last-child { + border-start-end-radius: var(--e-a-border-radius); + border-end-end-radius: var(--e-a-border-radius); +} +.elementor-control-type-tab:hover { + background-color: var(--e-a-bg-hover); +} +.elementor-control-type-tab.e-tab-active { + background-color: var(--e-a-bg-active-bold); + color: var(--e-a-color-txt-accent); +} + +.e-tab-close { + display: none !important; +} + +.elementor-control-type-textarea .elementor-control-dynamic-switcher, +.elementor-control-type-code .elementor-control-dynamic-switcher { + border-inline-start-width: 1px; + border-start-start-radius: 0; + border-start-end-radius: 0; + border-end-end-radius: 0; + border-end-start-radius: var(--e-a-border-radius); +} +.elementor-control-type-textarea:not(.elementor-control-dynamic-value) .elementor-control-dynamic-switcher, +.elementor-control-type-code:not(.elementor-control-dynamic-value) .elementor-control-dynamic-switcher { + position: absolute; + top: 0; + right: 0; + z-index: 1; +} +.elementor-control-type-textarea .elementor-control-input-wrapper, +.elementor-control-type-code .elementor-control-input-wrapper { + position: relative; +} +.elementor-control-type-textarea textarea, +.elementor-control-type-code textarea { + display: block; + font-family: inherit; +} +.elementor-control-type-textarea textarea:focus + .elementor-control-dynamic-switcher, +.elementor-control-type-code textarea:focus + .elementor-control-dynamic-switcher { + display: none; +} +.elementor-control-type-textarea pre:focus-within + .elementor-control-dynamic-switcher, +.elementor-control-type-code pre:focus-within + .elementor-control-dynamic-switcher { + display: none; +} + +.elementor-control-type-url .elementor-control-field { + position: relative; +} +.elementor-control-type-url .elementor-control-input-wrapper { + display: flex; +} +.elementor-control-type-url.elementor-control-dynamic .elementor-control-url-more-options input { + border-radius: var(--e-a-border-radius); +} +.elementor-control-type-url.elementor-control-dynamic-value .e-input-style { + border-start-end-radius: 0; + border-end-end-radius: 0; +} +.elementor-control-type-url.elementor-control-dynamic-value .elementor-control-url-more { + border-start-end-radius: var(--e-a-border-radius); + border-end-end-radius: var(--e-a-border-radius); +} +.elementor-control-type-url .elementor-control-url-more { + display: flex; + align-items: center; + justify-content: center; + flex-shrink: 0; + border: var(--e-a-border-bold); + color: currentColor; + background-color: transparent; + border-inline-start-width: 0; + cursor: pointer; +} +.elementor-control-type-url .elementor-control-url-more i { + font-size: 12px; +} +.elementor-control-type-url .elementor-control-url-more-options { + display: none; + padding-block-start: 10px; +} +.elementor-control-type-url .elementor-control-url-more-options .elementor-control-field-description { + margin-block-start: 10px; +} +.elementor-control-type-url .elementor-control-url-more:hover { + color: var(--e-a-color-txt-hover); +} +.elementor-control-type-url .elementor-control-url-more:focus { + color: var(--e-a-color-txt-active); + border-color: var(--e-a-border-color-focus); +} +.elementor-control-type-url .elementor-control-url-option { + display: flex; + align-items: center; +} +.elementor-control-type-url .elementor-control-url-option:not(:last-child) { + padding-block-end: 10px; +} +.elementor-control-type-url .elementor-control-url-option input, +.elementor-control-type-url .elementor-control-url-option label { + cursor: pointer; +} +.elementor-control-type-url .elementor-control-url-autocomplete-spinner { + display: none; + position: absolute; + top: 5px; + right: 0; + width: 10px; + height: 10px; + font-size: 10px; + color: var(--e-a-color-txt-disabled); +} +.elementor-control-type-url .elementor-control-url__custom-attributes label { + font-size: var(--control-title-size); +} +.elementor-control-type-url .elementor-control-url__custom-attributes input { + width: 100%; + margin-block-start: 10px; +} +.elementor-control-type-url .elementor-input:focus ~ div { + border-color: var(--e-a-border-color-focus); +} + +.elementor-autocomplete-menu { + position: absolute; + background: var(--e-a-bg-default); + border: var(--e-a-border); + margin: 0; + list-style: none; + padding: 4px 0; + height: auto; + width: 100%; + min-width: 260px; + max-width: 300px; + max-height: 200px; + overflow-y: auto; + border-radius: 3px; + transition: var(--e-a-transition-hover); + cursor: default; + z-index: 1; +} +.elementor-autocomplete-menu .ui-menu-item { + display: flex; + justify-content: space-between; + align-self: baseline; + padding: 5px 8px; + font-size: 12px; + width: 100%; + line-height: 1.2; + cursor: pointer; +} +.elementor-autocomplete-menu .ui-menu-item.ui-state-hover, .elementor-autocomplete-menu .ui-menu-item.ui-state-active, .elementor-autocomplete-menu .ui-menu-item.ui-state-focus { + background: var(--e-a-bg-hover); +} +.elementor-autocomplete-menu .elementor-autocomplete-item-info { + font-size: 10px; + padding-block-start: 2px; +} + +.elementor-control-type-wp_widget .widget-inside { + line-height: 2; + background-color: inherit; + display: block; +} +.elementor-control-type-wp_widget .quicktags-toolbar input { + width: auto; +} + +.elementor-control-type-wysiwyg * { + box-sizing: content-box; +} +.elementor-control-type-wysiwyg .wp-editor-container { + border: var(--e-a-border); +} +.elementor-control-type-wysiwyg .wp-editor-tabs { + border: var(--e-a-border-bold); + border-block-end: none; + border-start-start-radius: var(--e-a-border-radius); + border-start-end-radius: var(--e-a-border-radius); + border-end-end-radius: 0; + border-end-start-radius: 0; +} +.elementor-control-type-wysiwyg .wp-editor-tabs button:hover { + background-color: var(--e-a-bg-hover); +} +.elementor-control-type-wysiwyg #insert-media-button { + height: initial; + line-height: 24px; + font-size: 10px; + color: var(--e-a-color-txt); + border-color: var(--e-a-border-color-bold); + background-color: var(--e-a-bg-default); + min-height: initial; +} +.elementor-control-type-wysiwyg .ed_button { + height: 22px; + width: initial; +} +.elementor-control-type-wysiwyg .wp-media-buttons-icon { + height: 14px; + margin: 0; +} +.elementor-control-type-wysiwyg .wp-media-buttons-icon:before { + font-size: 14px; +} +.elementor-control-type-wysiwyg .wp-switch-editor { + position: static; + border: none; + margin: 0; + color: var(--e-a-color-txt); + font-size: 10px; + padding: 3px 9px 4px; +} +.elementor-control-type-wysiwyg .switch-html { + border: solid var(--e-a-border-color-bold); + border-width: 0 1px; +} +.elementor-control-type-wysiwyg .html-active .switch-tmce { + background-color: transparent; +} +.elementor-control-type-wysiwyg .html-active .switch-html { + background-color: var(--e-a-bg-active); +} +.elementor-control-type-wysiwyg .tmce-active .switch-tmce { + background-color: var(--e-a-bg-active); +} +.elementor-control-type-wysiwyg .tmce-active .switch-html { + background-color: transparent; +} +.elementor-control-type-wysiwyg .mce-toolbar-grp, +.elementor-control-type-wysiwyg .quicktags-toolbar { + background-color: var(--e-a-bg-default); +} +.elementor-control-type-wysiwyg .mce-toolbar .mce-btn-group .mce-btn.mce-listbox { + background-color: var(--e-a-bg-default); +} +.elementor-control-type-wysiwyg .mce-toolbar .mce-btn-group .mce-btn.mce-listbox button { + color: var(--e-a-color-txt); +} +.elementor-control-type-wysiwyg .mce-toolbar-grp > div { + padding: 0 3px; +} +.elementor-control-type-wysiwyg .elementor-wp-editor { + box-sizing: border-box; +} +.elementor-control-type-wysiwyg .mce-ico { + color: var(--e-a-color-txt); + font-size: 16px; +} +.elementor-control-type-wysiwyg .mce-btn-group .mce-btn:hover, .elementor-control-type-wysiwyg .mce-btn-group .mce-btn:active, .elementor-control-type-wysiwyg .mce-btn-group .mce-btn.mce-active { + color: var(--e-a-color-txt-active); + background: var(--e-a-bg-hover); + border-color: var(--e-a-border-color); + box-shadow: none; +} +.elementor-control-type-wysiwyg .mce-btn-group .mce-btn:hover i, .elementor-control-type-wysiwyg .mce-btn-group .mce-btn:active i, .elementor-control-type-wysiwyg .mce-btn-group .mce-btn.mce-active i { + color: var(--e-a-color-txt-active); +} +.elementor-control-type-wysiwyg .mce-path { + padding: 5px 10px; +} +.elementor-control-type-wysiwyg .mce-path-item { + font-size: 12px; + color: var(--e-a-color-txt); +} +.elementor-control-type-wysiwyg .mce-top-part:before { + box-shadow: none; +} +.elementor-control-type-wysiwyg .elementor-control-dynamic-switcher { + border: none; +} + +@media screen and (prefers-color-scheme: dark) { + #wp-link-wrap { + color-scheme: light; + --e-a-color-txt: #515962; + --e-a-bg-default: #ffffff; + --e-a-border-color-bold: #D5D8DC; + --e-a-color-primary-bold: #D004D4; + } + #wp-link { + color: var(--e-a-color-txt); + } + #wp-link input { + background-color: var(--e-a-bg-default); + border-color: var(--e-a-border-color-bold); + } + #wp-link input[type=checkbox] { + border-color: var(--e-a-border-color-bold); + } + #wp-link input[type=checkbox]:checked { + background: var(--e-a-color-primary-bold); + } + #wp-link input.button-primary { + background: #2271b1; + border-color: #2271b1; + color: #fff; + } +} +.ui-resizable-n { + top: -5px; +} +.ui-resizable-e { + right: -5px; +} +.ui-resizable-s { + bottom: -5px; +} +.ui-resizable-w { + left: -5px; +} +.ui-resizable-ne { + top: -5px; + right: -5px; +} +.ui-resizable-nw { + top: -5px; + left: -5px; +} +.ui-resizable-se { + bottom: -5px; + right: -5px; +} +.ui-resizable-sw { + bottom: -5px; + left: -5px; +} +.ui-resizable-n, .ui-resizable-s { + left: 0; + height: 10px; + width: 100%; + cursor: ns-resize; +} +.ui-resizable-e, .ui-resizable-w { + top: 0; + height: 100%; + width: 10px; + cursor: ew-resize; +} +.ui-resizable-ne, .ui-resizable-nw, .ui-resizable-se, .ui-resizable-sw { + height: 15px; + width: 15px; +} +.ui-resizable-nw, .ui-resizable-se { + cursor: nwse-resize; +} +.ui-resizable-ne, .ui-resizable-sw { + cursor: nesw-resize; +} +.ui-resizable-handle { + position: absolute; +} +.ui-resizable-resizing { + pointer-events: none; +} + +:root { + --e-p-draggable-color: #F0ABFC; + --e-p-border-section: #F3BAFD; + --e-p-border-section-hover: #F0ABFC; + --e-p-border-section-invert: #0C0D0E; + --e-p-border-con: #F3BAFD; + --e-p-border-con-hover: #F0ABFC; + --e-p-border-con-invert: #0C0D0E; + --e-p-border-column: #9DA5AE; + --e-p-border-column-hover: #818A96; + --e-p-border-column-invert: #0C0D0E; + --e-p-border-con-in: #9DA5AE; + --e-p-border-con-in-hover: #818A96; + --e-p-border-con-in-invert: #0C0D0E; + --e-p-border-widget: #F3BAFD; + --e-p-border-widget-hover: #F0ABFC; + --e-p-border-widget-invert: #0C0D0E; + --e-p-border-global: #5EEAD4; + --e-p-border-global-hover: #1DDDBF; + --e-p-border-global-invert: #0C0D0E; +} + +.elementor-add-section { + all: initial; + display: flex; + max-width: 1160px; + position: relative; + margin-inline: auto; +} +.elementor-add-section:not(.elementor-dragging-on-child) .elementor-add-section-inner { + border: 2px dashed var(--e-a-border-color-bold); + background-color: rgba(255, 255, 255, 0.5); +} +.elementor-add-section.elementor-dragging-on-child .elementor-add-section-inner { + border: 2px dashed var(--e-a-color-primary); +} +.elementor-add-section[data-view=choose-action] .e-view:not(.elementor-add-new-section) { + display: none; +} +.elementor-add-section[data-view=select-preset] .e-view:not(.elementor-select-preset) { + display: none; +} +.elementor-add-section[data-view=select-container-preset] .e-view:not(.e-con-select-preset) { + display: none; +} +.elementor-add-section[data-view=select-type] .e-view:not(.e-con-select-type) { + display: none; +} +.elementor-add-section[data-view=select-container-preset-grid] .e-view:not(.e-con-select-preset-grid) { + display: none; +} + +.elementor-add-section-inner { + text-align: center; + margin: 20px; + padding: 40px 0; + display: flex; + justify-content: center; + flex-grow: 1; +} + +.elementor-add-new-section { + display: flex; + justify-content: center; + flex-wrap: wrap; + gap: 5px; +} + +.elementor-add-section-area-button { + padding: 12px; + height: 40px; + width: 40px; + border-radius: 50%; + font-size: 16px; + display: flex; + outline: none; + border: none; + background-color: var(--e-a-bg-active); + color: var(--e-a-color-black); + transition: var(--e-a-transition-hover); + cursor: pointer; +} +.elementor-add-section-area-button:hover { + background-color: var(--e-a-bg-active-bold); + color: var(--e-a-color-black); +} +.elementor-add-section-area-button i { + margin: 0; +} +.elementor-add-section-area-button.e-button-primary { + background-color: var(--e-a-btn-bg-primary); + color: var(--e-a-btn-color); +} +.elementor-add-section-area-button.e-button-primary:hover { + background-color: var(--e-a-btn-bg-primary-hover); + color: var(--e-a-btn-color); +} + +.elementor-add-section-drag-title, +.elementor-select-preset-title { + font-family: var(--e-a-font-family); + font-size: 13px; + line-height: 1; + color: var(--e-a-color-txt); +} + +.elementor-add-section-drag-title { + font-style: italic; + font-weight: normal; + margin-block-start: 10px; + width: 100%; +} + +.elementor-select-preset-title { + font-weight: 500; + text-transform: uppercase; +} + +.elementor-add-section-close { + right: 40px; +} + +.elementor-add-section-back { + left: 40px; +} + +.elementor-wizard-icon { + position: absolute; + top: 40px; + font-size: 20px; + cursor: pointer; + line-height: 1; + color: var(--e-a-color-txt); +} +.elementor-wizard-icon:hover { + color: var(--e-a-color-txt-hover); +} + +.elementor-select-preset-list { + list-style: none; + padding: 0 25px; + margin: 20px auto 0; + overflow: hidden; + max-width: 700px; +} +.elementor-select-preset-list .elementor-preset { + cursor: pointer; + margin: 0; + padding: 10px; + float: left; + max-width: 33.333%; +} +.elementor-select-preset-list .elementor-preset:not(:hover) path, +.elementor-select-preset-list .elementor-preset:not(:hover) rect { + fill: var(--e-a-bg-active-bold); + transition: 0.3s all; +} +.elementor-select-preset-list .elementor-preset:hover path, +.elementor-select-preset-list .elementor-preset:hover rect { + fill: var(--e-a-color-txt); +} +.elementor-select-preset-list .elementor-preset .e-preset--container { + position: relative; + display: flex; +} +.elementor-select-preset-list .elementor-preset .e-preset--container::before { + content: var(--text); + font-family: var(--e-a-font-family); + font-size: 13px; + font-weight: 500; + position: absolute; + left: 50%; + top: 50%; + color: var(--e-a-color-white); + transform: translate(-50%, -50%); +} +.elementor-select-preset-list .elementor-preset svg { + height: 50px; + width: 100%; +} + +.elementor-add-section[data-view=choose-action] .elementor-add-section-back { + display: none; +} +.elementor-add-section[data-view=select-preset] .elementor-add-section-back { + display: none; +} +.elementor-add-section[data-view=select-type] .elementor-add-section-back { + display: none; +} + +#elementor-add-new-section { + margin: 60px auto; +} +#elementor-add-new-section[data-view=choose-action] .elementor-add-section-close { + display: none; +} + +.elementor-add-section-inline { + margin: 10px auto; + width: 100%; +} + +@keyframes placeholder-section { + 0% { + height: 0; + opacity: 0; + } + 100% { + height: 40px; + opacity: 0.9; + } +} +@keyframes placeholder-widget { + 0% { + height: 0; + opacity: 0; + } + 100% { + height: 10px; + opacity: 0.9; + } +} +@keyframes section-outline { + 0% { + opacity: 0; + } + 100% { + opacity: 1; + } +} +body.elementor-editor-active .elementor.elementor-edit-mode.layout-section .entry-content { + overflow: visible; +} +body.elementor-editor-active .elementor.elementor-edit-mode .article { + overflow: visible; +} +body.elementor-editor-active .elementor.elementor-edit-mode .elementor-element-overlay .elementor-editor-element-settings { + clear: unset; +} +body.elementor-editor-active .elementor.elementor-edit-mode .elementor-element.elementor-section { + overflow: visible; +} + +.elementor-edit-area .animated { + animation-fill-mode: none !important; +} +.elementor-edit-area ul.elementor-editor-element-settings { + word-break: normal; + padding: 0; +} +.elementor-edit-area .gallery { + opacity: 1; +} + +.pen { + position: relative; + outline: none; +} +.pen:not([data-elementor-inline-editing-toolbar=advanced]) { + white-space: pre-wrap; +} +.pen-menu { + box-shadow: 1px 2px 3px -2px #222; + background-color: #3f444b; + position: fixed; + overflow: hidden; + border-radius: 3px; + z-index: 9999; +} +.pen-menu:after { + top: 100%; + content: ""; + position: absolute; + border: 6px solid transparent; + border-block-start-color: #3f444b; + left: 50%; + transform: translateX(-50%); +} +.pen-menu-below:after { + top: 0; + transform: translateX(-50%) translateY(-100%) rotate(180deg); +} +.pen-icon { + position: relative; + display: flex; + align-items: center; + justify-content: center; + height: 35px; + padding: 0 10px; + font-size: 21px; + color: #D5D8DC; + cursor: pointer; + -webkit-user-select: none; + -moz-user-select: none; + user-select: none; +} +.pen-icon:hover { + background: #1f2124; +} +.pen-icon[data-group], .pen-icon[data-action=closeGroup] { + display: none; +} +.pen-icon[data-action=close]:before { + content: ""; + position: absolute; + left: 0; + height: 60%; + width: 1px; + background-color: #1f2124; +} +.pen-icon.active { + background-color: #1f2124; + box-shadow: inset 2px 2px 4px #1f2124; +} +.pen-group-icon:after { + font-family: eicons; + font-size: 12px; + content: "\e92a"; + padding-inline-start: 4px; + color: #2563EB; +} +.pen-input-wrapper { + align-items: center; +} +.pen-input-wrapper .pen-url-input { + font-size: 12px; + line-height: 1.5; + padding: 0; + padding-inline-start: 10px; + padding-inline-end: 10px; + width: 250px; + direction: ltr; +} +.pen-input-wrapper .pen-url-input, .pen-input-wrapper .pen-url-input:focus { + background-color: transparent; + border: none; + outline: none; + box-shadow: none; + color: #fff; +} +.pen-input-wrapper .pen-url-input::-moz-placeholder { + color: #D5D8DC; +} +.pen-input-wrapper .pen-url-input::placeholder { + color: #D5D8DC; +} +.pen-input-label { + margin: 0; + margin-inline-end: -1px; +} +.pen-placeholder:before { + content: attr(data-pen-placeholder); + position: absolute; + font-weight: normal; + color: #757575; + opacity: 0.6; +} +.pen-external-url-checkbox { + display: none; +} +.pen-external-url-checkbox:checked + i { + color: #fff; +} + +.elementor-inline-editing i:not([class]) { + font-style: italic; +} +.elementor-inline-editing b { + font-weight: bold; +} +.elementor-inline-editing u { + text-decoration: underline; +} + +.e-element-color-picker { + --primary-color: #2563EB; + --swatch-size: 25px; + cursor: default; + display: flex; + position: absolute; + width: calc((var(--count) + 1) * var(--swatch-size)); + height: var(--swatch-size); + top: var(--top); + left: var(--left); + right: var(--right, unset); + border-radius: 3px; + opacity: 0; + pointer-events: none; + z-index: 9998; + background-color: var(--primary-color); + padding: 1px; + box-sizing: content-box; + transition: opacity 0.3s, width 0.3s; +} +.e-element-color-picker.e-picker-hidden { + opacity: 0; + pointer-events: none; +} +.e-element-color-picker::before { + content: ""; + flex: 0 1 var(--swatch-size); + max-width: 100%; + height: 100%; + box-sizing: border-box; + text-align: center; +} +.e-element-color-picker::after { + content: "\e91e"; + font-family: "eicons"; + color: #FFF; + font-size: 1rem; + line-height: var(--swatch-size); + position: absolute; + left: 0.3rem; + z-index: -1; +} +.e-element-color-picker__swatch { + flex: 1 0 var(--swatch-size); + max-width: 100%; + height: 100%; + cursor: pointer; + transition: var(--e-a-transition-hover); + position: relative; + overflow: hidden; + border-radius: inherit; + /* Hack to fix transparent `--color` on hover */ + background: linear-gradient(var(--color), var(--color)), linear-gradient(var(--primary-color), var(--primary-color)); +} +.e-element-color-picker__swatch:not(:first-child) { + border-left: 1px solid var(--primary-color); +} +.e-element-color-picker__swatch::before { + content: attr(data-text); + position: absolute; + left: 50%; + top: 50%; + opacity: 0; + color: var(--color); + font-size: 10px; + font-weight: 300; + font-family: Roboto, Arial, Helvetica, sans-serif; + transform: translate(-50%, -50%); + filter: hue-rotate(180deg) grayscale(1) contrast(999) invert(1); + transition: inherit; +} +.e-element-color-picker__swatch:hover { + flex-basis: calc(2 * var(--swatch-size)); + flex-shrink: 0; +} +.e-element-color-picker__swatch:hover::before { + opacity: 1; +} + +.e-ui-state--elements-color-picker-color-picking__on *:not(.e-element-color-picker__swatch) { + cursor: url("../images/eyedropper.svg") 0 20, pointer; +} +.e-ui-state--elements-color-picker-color-picking__on .e-element-color-picker:not(.e-picker-hidden):hover, +.e-ui-state--elements-color-picker-color-picking__on .elementor-element:hover > .e-element-color-picker:not(.e-picker-hidden), +.e-ui-state--elements-color-picker-color-picking__on .elementor-widget-container:hover + .e-element-color-picker:not(.e-picker-hidden) { + opacity: 1; + pointer-events: all; +} +.e-ui-state--elements-color-picker-color-picking__on .elementor-section:hover { + outline: 1px solid #2563EB; +} + +[class^=eicon-flex], [class*=" eicon-flex"] { + transition: 0.3s all; + --is-ltr: 1; + --is-rtl: 0; + --rotation-direction: calc(var(--is-ltr) - var(--is-rtl)); +} +[class^=eicon-flex].eicon-inline, [class*=" eicon-flex"].eicon-inline { + max-height: 1em; + max-width: 1em; +} +[class^=eicon-flex]:is(.eicon-justify-start-h, .eicon-justify-end-h), [class*=" eicon-flex"]:is(.eicon-justify-start-h, .eicon-justify-end-h) { + --rotation-direction: calc(var(--is-ltr) + var(--is-rtl)); +} +:is(.e-ui-state--document-direction-mode__column, .e-ui-state--document-direction-mode__column-reverse) [class^=eicon-flex]:not(.eicon-wrap):not(.eicon-nowrap):not(.eicon-grow), :is(.e-ui-state--document-direction-mode__column, .e-ui-state--document-direction-mode__column-reverse) [class*=" eicon-flex"]:not(.eicon-wrap):not(.eicon-nowrap):not(.eicon-grow) { + transform: rotate(calc(var(--rotation-direction) * 90deg)); +} +:is(.e-ui-state--document-direction-mode__column, .e-ui-state--document-direction-mode__column-reverse) [class^=eicon-flex]:not(.eicon-wrap):not(.eicon-nowrap):not(.eicon-grow):is(.eicon-align-start-v, .eicon-align-end-v), :is(.e-ui-state--document-direction-mode__column, .e-ui-state--document-direction-mode__column-reverse) [class*=" eicon-flex"]:not(.eicon-wrap):not(.eicon-nowrap):not(.eicon-grow):is(.eicon-align-start-v, .eicon-align-end-v) { + transform: rotate(calc(var(--rotation-direction) * -90deg)); +} +.e-ui-state--document-direction-mode__column-reverse [class^=eicon-flex]:not(.eicon-wrap):not(.eicon-nowrap):not(.eicon-grow):is(.eicon-justify-start-h, .eicon-justify-end-h, .eicon-order-start, .eicon-order-end), .e-ui-state--document-direction-mode__column-reverse [class*=" eicon-flex"]:not(.eicon-wrap):not(.eicon-nowrap):not(.eicon-grow):is(.eicon-justify-start-h, .eicon-justify-end-h, .eicon-order-start, .eicon-order-end) { + transform: rotate(calc(var(--rotation-direction) * -90deg)); +} +.e-ui-state--document-direction-mode__row [class^=eicon-flex]:not(.eicon-wrap):not(.eicon-nowrap):not(.eicon-grow):is(.eicon-justify-start-h, .eicon-justify-end-h, .eicon-order-start, .eicon-order-end), .e-ui-state--document-direction-mode__row [class*=" eicon-flex"]:not(.eicon-wrap):not(.eicon-nowrap):not(.eicon-grow):is(.eicon-justify-start-h, .eicon-justify-end-h, .eicon-order-start, .eicon-order-end) { + transform: rotate(calc(var(--is-rtl) * 180deg)); +} +.e-ui-state--document-direction-mode__row-reverse [class^=eicon-flex]:not(.eicon-wrap):not(.eicon-nowrap):not(.eicon-grow):is(.eicon-justify-start-h, .eicon-justify-end-h, .eicon-order-start, .eicon-order-end), .e-ui-state--document-direction-mode__row-reverse [class*=" eicon-flex"]:not(.eicon-wrap):not(.eicon-nowrap):not(.eicon-grow):is(.eicon-justify-start-h, .eicon-justify-end-h, .eicon-order-start, .eicon-order-end) { + transform: rotate(calc(var(--is-ltr) * 180deg)); +} + +html.elementor-html { + margin-block-start: 0 !important; +} + +.elementor-edit-area { + position: relative; +} + +.elementor.loading { + opacity: 0.5; +} + +.elementor-edit-area-active { + --primary-color: var(--e-p-border-con); + --secondary-color: var(--e-p-border-con-hover); + --outline-color: var(--e-p-border-con-active); +} +.elementor-edit-area-active .e-con { + --primary-color: var(--e-p-border-con); + --secondary-color: var(--e-p-border-con-hover); + --outline-color: var( --outline-color ); +} +.elementor-edit-area-active .e-con.e-dragging-over, .elementor-edit-area-active .e-con.elementor-dragging-on-child, .elementor-edit-area-active .e-con.e-con-boxed.elementor-html5dnd-current-element { + outline: 1px solid var(--outline-color); +} +.elementor-edit-area-active .e-grid-outline { + display: none; +} +.elementor-edit-area-active .elementor-element-editable.e-grid.e-con-full > .e-grid-outline { + padding-block-start: var(--bc-padding-block-start, var(--padding-block-start)); + padding-block-end: var(--bc-padding-block-end, var(--padding-block-end)); + display: grid; + position: absolute; + top: 0; + bottom: 0; + pointer-events: none; + grid-gap: var(--gap); + justify-items: var(--justify-items); + align-items: var(--align-items); + grid-auto-flow: var(--grid-auto-flow); + justify-content: var(--grid-justify-content); + align-content: var(--grid-align-content); + min-height: var(--min-height); + padding-inline-end: var(--bc-padding-inline-end, var(--padding-inline-end)); + padding-inline-start: var(--bc-padding-inline-start, var(--padding-inline-start)); + width: 100%; + left: 0; +} +.elementor-edit-area-active .elementor-element-editable.e-grid.e-con-boxed > .e-con-inner { + position: relative; +} +.elementor-edit-area-active .elementor-element-editable.e-grid.e-con-boxed > .e-con-inner > .e-grid-outline { + padding-block-start: var(--bc-padding-block-start, var(--padding-block-start)); + padding-block-end: var(--bc-padding-block-end, var(--padding-block-end)); + display: grid; + position: absolute; + top: 0; + bottom: 0; + pointer-events: none; + grid-gap: var(--gap); + justify-items: var(--justify-items); + align-items: var(--align-items); + grid-auto-flow: var(--grid-auto-flow); + justify-content: var(--grid-justify-content); + align-content: var(--grid-align-content); + min-height: var(--min-height); + width: var(--width); + margin: 0 auto; +} +.elementor-edit-area-active .elementor-element-editable.e-grid .e-grid-outline-item { + border: 1px dashed #9DA5AE; + pointer-events: none; + width: 100%; + height: 100%; +} +.elementor-edit-area-active .elementor-inner-section:first-child { + margin-block-start: 15px; +} +.elementor-edit-area-active .elementor-widget-wrap.elementor-element-empty { + min-height: 30px; +} +@media (min-width: 768px) { + .elementor-edit-area-active .elementor-widget-wrap.elementor-element-empty { + margin: 10px; + } +} +.elementor-edit-area-active .elementor-column { + min-width: 25px; +} +.elementor-edit-area-active .elementor-widget.elementor-loading { + opacity: 0.3; +} +.elementor-edit-area-active .elementor-widget.elementor-element-edit-mode:hover { + box-shadow: 0 0 0 1px var(--e-p-border-widget); +} +.elementor-edit-area-active .elementor-widget.elementor-element-editable, .elementor-edit-area-active .elementor-widget.elementor-element-editable:hover { + box-shadow: 0 0 0 2px var(--e-p-border-widget); +} +.elementor-edit-area-active .elementor-widget:not(:hover) .elementor-editor-element-settings { + display: none; +} +.elementor-edit-area-active .elementor-widget.ui-draggable-dragging { + pointer-events: none; +} +.elementor-edit-area-active .elementor-editor-element-setting { + cursor: pointer; + display: flex; + align-items: center; + justify-content: center; + padding: 0; + margin: 0; + font-size: 11px; + color: var(--e-p-border-widget-invert); + width: 25px; + transition: var(--e-a-transition-hover); +} +.elementor-edit-area-active .elementor-inline-editing { + min-height: 15px; +} +.elementor-edit-area-active .elementor-edit-hidden { + display: none; +} + +.elementor-section-wrap:empty { + min-height: 25px; +} +.elementor-section-wrap > :first-child > .elementor-element-overlay { + z-index: 9999; +} + +.elementor-element > .elementor-element-overlay { + position: absolute; + top: 0; + right: 0; + letter-spacing: 0; + z-index: 9998; + pointer-events: none; +} +.elementor-element-empty .elementor-sortable-placeholder { + display: none; +} +.elementor-element.elementor-widget-empty { + background-color: rgba(213, 216, 220, 0.8); +} +.elementor-element.elementor-widget-empty .elementor-widget-empty-icon { + color: #BABFC5; + font-size: 22px; + display: block; + text-align: center; + padding: 10px 0; +} +.elementor-element:not(:hover):not(.elementor-element-editable) > .elementor-element-overlay .elementor-editor-element-settings { + display: none; +} +.elementor-element--toggle-edit-tools > .elementor-element-overlay .elementor-editor-element-edit:not(.elementor-active) ~ * { + width: 0; + font-size: 0; +} +.elementor-element[data-side=top]:before, .elementor-element[data-side=bottom] + .elementor-element:before { + content: ""; + background-color: var(--e-p-draggable-color); + transition-timing-function: ease-out; + opacity: 0.9; + height: 10px; + animation: placeholder-widget 500ms; + display: block; +} +.elementor-element[data-side=bottom]:last-child:after { + content: ""; + background-color: var(--e-p-draggable-color); + transition-timing-function: ease-out; + opacity: 0.9; + height: 10px; + animation: placeholder-widget 500ms; + display: block; +} +.elementor-element.elementor-absolute, .elementor-element.elementor-fixed { + cursor: grab; +} +.elementor-element.elementor-absolute:active, .elementor-element.elementor-fixed:active { + cursor: grabbing; +} +.elementor-element.elementor-absolute .eicon-edit:before, .elementor-element.elementor-fixed .eicon-edit:before { + content: "\e902"; +} + +.elementor-editor-element-settings { + position: absolute; + display: flex; + height: 26px; + list-style: none; + margin: 0; + padding: 0; + font-family: var(--e-a-font-family); + font-size: 13px; + font-weight: normal; + font-style: normal; + line-height: 1; + z-index: 1; + pointer-events: all; + transition: var(--e-a-transition-hover); +} + +@media (min-width: 1025px) { + .elementor-editor-element-edit { + cursor: move; + } +} + +.elementor-empty-view { + position: absolute; + top: 0; + bottom: 0; + left: 0; + right: 0; + z-index: 1; +} + +.elementor-first-add { + text-align: center; + border: 1px dashed var(--e-a-border-color-bold); + display: flex; + height: 100%; + width: 100%; + position: absolute; + align-items: center; + justify-content: center; +} +.elementor-first-add .elementor-icon { + font-size: 19px; + color: #9DA5AE; + cursor: pointer; +} + +.elementor-sortable-helper { + position: absolute; + cursor: move; + border: var(--e-a-border); + border-radius: var(--e-a-border-radius); + background-color: var(--e-a-bg-active); + border-color: var(--e-a-border-color-accent); + color: var(--e-a-color-active); + text-align: center; +} +.elementor-sortable-helper .icon { + font-size: 28px; + padding-block-start: 15px; + line-height: 1; +} +.elementor-sortable-helper .title-wrapper { + display: flex; + height: 40px; + align-items: center; + justify-content: center; +} +.elementor-sortable-helper .title { + font-size: 11px; +} + +.elementor-sortable-placeholder:not(.elementor-column-placeholder) { + background-color: var(--e-p-draggable-color); + animation-duration: 250ms; + opacity: 0.9; + width: 100%; + align-self: stretch; +} +.e-con .elementor-first-add .elementor-sortable-placeholder:not(.elementor-column-placeholder) { + align-self: center; +} +.e-swappable--active > .elementor-sortable-placeholder:not(.elementor-column-placeholder) { + display: none; +} + +.elementor-section-placeholder { + height: 40px; + animation-name: placeholder-section; +} + +.elementor-widget-placeholder { + height: 10px; + animation-name: placeholder-widget; +} + +.elementor-draggable-over:not([data-dragged-element=section]):not([data-dragged-is-inner=true]) > .elementor-empty-view > .elementor-first-add:after, +.elementor-first-add.elementor-html5dnd-current-element:after { + content: ""; + background-color: var(--e-p-draggable-color); + transition-timing-function: ease-out; + opacity: 0.9; + height: 10px; + animation: placeholder-widget 500ms; + width: 100%; +} +.e-con .elementor-draggable-over:not([data-dragged-element=section]):not([data-dragged-is-inner=true]) > .elementor-empty-view > .elementor-first-add:after, +.e-con .elementor-first-add.elementor-html5dnd-current-element:after { + display: none; +} +.elementor-draggable-over:not([data-dragged-element=section]):not([data-dragged-is-inner=true]) > .elementor-empty-view > .elementor-first-add .elementor-icon, +.elementor-first-add.elementor-html5dnd-current-element .elementor-icon { + display: none; +} + +.elementor-draggable-over[data-dragged-element=section][data-dragged-is-inner=true] .elementor-inner-column .elementor-sortable-placeholder { + display: none; +} + +.elementor-editor-preview .elementor-element-overlay, +.elementor-editor-preview .elementor-empty, +.elementor-editor-preview .elementor-add-section, +.elementor-editor-preview .elementor-add-section-inline, +.elementor-editor-preview .elementor-empty-view, +.elementor-editor-preview .elementor-widget-empty { + display: none; +} + +.e-preview--show-hidden-elements[data-elementor-device-mode=widescreen] .elementor-edit-area-active .elementor-hidden-widescreen, +.e-preview--show-hidden-elements[data-elementor-device-mode=desktop] .elementor-edit-area-active .elementor-hidden-desktop, +.e-preview--show-hidden-elements[data-elementor-device-mode=laptop] .elementor-edit-area-active .elementor-hidden-laptop, +.e-preview--show-hidden-elements[data-elementor-device-mode=tablet_extra] .elementor-edit-area-active .elementor-hidden-tablet_extra, +.e-preview--show-hidden-elements[data-elementor-device-mode=tablet] .elementor-edit-area-active .elementor-hidden-tablet, +.e-preview--show-hidden-elements[data-elementor-device-mode=mobile_extra] .elementor-edit-area-active .elementor-hidden-mobile_extra, +.e-preview--show-hidden-elements[data-elementor-device-mode=mobile] .elementor-edit-area-active .elementor-hidden-mobile { + display: inherit; + background: repeating-linear-gradient(125deg, rgba(0, 0, 0, 0.05), rgba(0, 0, 0, 0.05) 1px, transparent 2px, transparent 9px); + border: 1px solid rgba(0, 0, 0, 0.02); +} +.e-preview--show-hidden-elements[data-elementor-device-mode=widescreen] .elementor-edit-area-active .elementor-hidden-widescreen.elementor-section > .elementor-element-overlay, .e-preview--show-hidden-elements[data-elementor-device-mode=widescreen] .elementor-edit-area-active .elementor-hidden-widescreen.e-con > .elementor-element-overlay, +.e-preview--show-hidden-elements[data-elementor-device-mode=desktop] .elementor-edit-area-active .elementor-hidden-desktop.elementor-section > .elementor-element-overlay, +.e-preview--show-hidden-elements[data-elementor-device-mode=desktop] .elementor-edit-area-active .elementor-hidden-desktop.e-con > .elementor-element-overlay, +.e-preview--show-hidden-elements[data-elementor-device-mode=laptop] .elementor-edit-area-active .elementor-hidden-laptop.elementor-section > .elementor-element-overlay, +.e-preview--show-hidden-elements[data-elementor-device-mode=laptop] .elementor-edit-area-active .elementor-hidden-laptop.e-con > .elementor-element-overlay, +.e-preview--show-hidden-elements[data-elementor-device-mode=tablet_extra] .elementor-edit-area-active .elementor-hidden-tablet_extra.elementor-section > .elementor-element-overlay, +.e-preview--show-hidden-elements[data-elementor-device-mode=tablet_extra] .elementor-edit-area-active .elementor-hidden-tablet_extra.e-con > .elementor-element-overlay, +.e-preview--show-hidden-elements[data-elementor-device-mode=tablet] .elementor-edit-area-active .elementor-hidden-tablet.elementor-section > .elementor-element-overlay, +.e-preview--show-hidden-elements[data-elementor-device-mode=tablet] .elementor-edit-area-active .elementor-hidden-tablet.e-con > .elementor-element-overlay, +.e-preview--show-hidden-elements[data-elementor-device-mode=mobile_extra] .elementor-edit-area-active .elementor-hidden-mobile_extra.elementor-section > .elementor-element-overlay, +.e-preview--show-hidden-elements[data-elementor-device-mode=mobile_extra] .elementor-edit-area-active .elementor-hidden-mobile_extra.e-con > .elementor-element-overlay, +.e-preview--show-hidden-elements[data-elementor-device-mode=mobile] .elementor-edit-area-active .elementor-hidden-mobile.elementor-section > .elementor-element-overlay, +.e-preview--show-hidden-elements[data-elementor-device-mode=mobile] .elementor-edit-area-active .elementor-hidden-mobile.e-con > .elementor-element-overlay { + background-color: var(--e-a-bg-hover); + mix-blend-mode: color; +} +.e-preview--show-hidden-elements[data-elementor-device-mode=widescreen] .elementor-edit-area-active .elementor-hidden-widescreen.elementor-section:before, .e-preview--show-hidden-elements[data-elementor-device-mode=widescreen] .elementor-edit-area-active .elementor-hidden-widescreen.e-con:before, +.e-preview--show-hidden-elements[data-elementor-device-mode=desktop] .elementor-edit-area-active .elementor-hidden-desktop.elementor-section:before, +.e-preview--show-hidden-elements[data-elementor-device-mode=desktop] .elementor-edit-area-active .elementor-hidden-desktop.e-con:before, +.e-preview--show-hidden-elements[data-elementor-device-mode=laptop] .elementor-edit-area-active .elementor-hidden-laptop.elementor-section:before, +.e-preview--show-hidden-elements[data-elementor-device-mode=laptop] .elementor-edit-area-active .elementor-hidden-laptop.e-con:before, +.e-preview--show-hidden-elements[data-elementor-device-mode=tablet_extra] .elementor-edit-area-active .elementor-hidden-tablet_extra.elementor-section:before, +.e-preview--show-hidden-elements[data-elementor-device-mode=tablet_extra] .elementor-edit-area-active .elementor-hidden-tablet_extra.e-con:before, +.e-preview--show-hidden-elements[data-elementor-device-mode=tablet] .elementor-edit-area-active .elementor-hidden-tablet.elementor-section:before, +.e-preview--show-hidden-elements[data-elementor-device-mode=tablet] .elementor-edit-area-active .elementor-hidden-tablet.e-con:before, +.e-preview--show-hidden-elements[data-elementor-device-mode=mobile_extra] .elementor-edit-area-active .elementor-hidden-mobile_extra.elementor-section:before, +.e-preview--show-hidden-elements[data-elementor-device-mode=mobile_extra] .elementor-edit-area-active .elementor-hidden-mobile_extra.e-con:before, +.e-preview--show-hidden-elements[data-elementor-device-mode=mobile] .elementor-edit-area-active .elementor-hidden-mobile.elementor-section:before, +.e-preview--show-hidden-elements[data-elementor-device-mode=mobile] .elementor-edit-area-active .elementor-hidden-mobile.e-con:before { + content: ""; + display: block; + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + background-color: rgba(255, 255, 255, 0.6); + z-index: 9997; +} +.e-preview--show-hidden-elements[data-elementor-device-mode=widescreen] .elementor-edit-area-active .elementor-hidden-widescreen.e-con, +.e-preview--show-hidden-elements[data-elementor-device-mode=desktop] .elementor-edit-area-active .elementor-hidden-desktop.e-con, +.e-preview--show-hidden-elements[data-elementor-device-mode=laptop] .elementor-edit-area-active .elementor-hidden-laptop.e-con, +.e-preview--show-hidden-elements[data-elementor-device-mode=tablet_extra] .elementor-edit-area-active .elementor-hidden-tablet_extra.e-con, +.e-preview--show-hidden-elements[data-elementor-device-mode=tablet] .elementor-edit-area-active .elementor-hidden-tablet.e-con, +.e-preview--show-hidden-elements[data-elementor-device-mode=mobile_extra] .elementor-edit-area-active .elementor-hidden-mobile_extra.e-con, +.e-preview--show-hidden-elements[data-elementor-device-mode=mobile] .elementor-edit-area-active .elementor-hidden-mobile.e-con { + display: var(--display); +} +.e-preview--show-hidden-elements[data-elementor-device-mode=widescreen] .elementor-edit-area-active .elementor-hidden-widescreen.elementor-inner-section .elementor-container, +.e-preview--show-hidden-elements[data-elementor-device-mode=desktop] .elementor-edit-area-active .elementor-hidden-desktop.elementor-inner-section .elementor-container, +.e-preview--show-hidden-elements[data-elementor-device-mode=laptop] .elementor-edit-area-active .elementor-hidden-laptop.elementor-inner-section .elementor-container, +.e-preview--show-hidden-elements[data-elementor-device-mode=tablet_extra] .elementor-edit-area-active .elementor-hidden-tablet_extra.elementor-inner-section .elementor-container, +.e-preview--show-hidden-elements[data-elementor-device-mode=tablet] .elementor-edit-area-active .elementor-hidden-tablet.elementor-inner-section .elementor-container, +.e-preview--show-hidden-elements[data-elementor-device-mode=mobile_extra] .elementor-edit-area-active .elementor-hidden-mobile_extra.elementor-inner-section .elementor-container, +.e-preview--show-hidden-elements[data-elementor-device-mode=mobile] .elementor-edit-area-active .elementor-hidden-mobile.elementor-inner-section .elementor-container { + width: 100%; +} +.e-preview--show-hidden-elements[data-elementor-device-mode=widescreen] .elementor-edit-area-active .elementor-hidden-widescreen > .elementor-widget-container, .e-preview--show-hidden-elements[data-elementor-device-mode=widescreen] .elementor-edit-area-active .elementor-hidden-widescreen > .elementor-widget-wrap, +.e-preview--show-hidden-elements[data-elementor-device-mode=desktop] .elementor-edit-area-active .elementor-hidden-desktop > .elementor-widget-container, +.e-preview--show-hidden-elements[data-elementor-device-mode=desktop] .elementor-edit-area-active .elementor-hidden-desktop > .elementor-widget-wrap, +.e-preview--show-hidden-elements[data-elementor-device-mode=laptop] .elementor-edit-area-active .elementor-hidden-laptop > .elementor-widget-container, +.e-preview--show-hidden-elements[data-elementor-device-mode=laptop] .elementor-edit-area-active .elementor-hidden-laptop > .elementor-widget-wrap, +.e-preview--show-hidden-elements[data-elementor-device-mode=tablet_extra] .elementor-edit-area-active .elementor-hidden-tablet_extra > .elementor-widget-container, +.e-preview--show-hidden-elements[data-elementor-device-mode=tablet_extra] .elementor-edit-area-active .elementor-hidden-tablet_extra > .elementor-widget-wrap, +.e-preview--show-hidden-elements[data-elementor-device-mode=tablet] .elementor-edit-area-active .elementor-hidden-tablet > .elementor-widget-container, +.e-preview--show-hidden-elements[data-elementor-device-mode=tablet] .elementor-edit-area-active .elementor-hidden-tablet > .elementor-widget-wrap, +.e-preview--show-hidden-elements[data-elementor-device-mode=mobile_extra] .elementor-edit-area-active .elementor-hidden-mobile_extra > .elementor-widget-container, +.e-preview--show-hidden-elements[data-elementor-device-mode=mobile_extra] .elementor-edit-area-active .elementor-hidden-mobile_extra > .elementor-widget-wrap, +.e-preview--show-hidden-elements[data-elementor-device-mode=mobile] .elementor-edit-area-active .elementor-hidden-mobile > .elementor-widget-container, +.e-preview--show-hidden-elements[data-elementor-device-mode=mobile] .elementor-edit-area-active .elementor-hidden-mobile > .elementor-widget-wrap { + filter: opacity(0.4) saturate(0); +} +.e-preview--show-hidden-elements[data-elementor-device-mode=widescreen] .elementor-edit-area-active .elementor-hidden-widescreen.elementor-edit-hidden, +.e-preview--show-hidden-elements[data-elementor-device-mode=desktop] .elementor-edit-area-active .elementor-hidden-desktop.elementor-edit-hidden, +.e-preview--show-hidden-elements[data-elementor-device-mode=laptop] .elementor-edit-area-active .elementor-hidden-laptop.elementor-edit-hidden, +.e-preview--show-hidden-elements[data-elementor-device-mode=tablet_extra] .elementor-edit-area-active .elementor-hidden-tablet_extra.elementor-edit-hidden, +.e-preview--show-hidden-elements[data-elementor-device-mode=tablet] .elementor-edit-area-active .elementor-hidden-tablet.elementor-edit-hidden, +.e-preview--show-hidden-elements[data-elementor-device-mode=mobile_extra] .elementor-edit-area-active .elementor-hidden-mobile_extra.elementor-edit-hidden, +.e-preview--show-hidden-elements[data-elementor-device-mode=mobile] .elementor-edit-area-active .elementor-hidden-mobile.elementor-edit-hidden { + display: none; +} + +.elementor-editor-section-settings, +.elementor-editor-container-settings { + height: 24px; + top: 1px; + left: 50%; + transform: translateX(-50%) translateY(-100%); + background-color: var(--e-p-border-section); + border-start-start-radius: 5px; + border-start-end-radius: 5px; + border-end-start-radius: 0; + border-end-end-radius: 0; +} +.elementor-editor-section-settings i.eicon-handle, +.elementor-editor-container-settings i.eicon-handle { + font-size: 16px; +} +.elementor-editor-section-settings .elementor-editor-element-setting:hover, +.elementor-editor-container-settings .elementor-editor-element-setting:hover { + background-color: var(--e-p-border-section-hover); +} +.elementor-editor-section-settings .elementor-editor-element-setting:first-child, +.elementor-editor-container-settings .elementor-editor-element-setting:first-child { + border-start-start-radius: 5px; + border-start-end-radius: 0; + border-end-start-radius: 0; + border-end-end-radius: 0; +} +.elementor-editor-section-settings .elementor-editor-element-setting:first-child:before, +.elementor-editor-container-settings .elementor-editor-element-setting:first-child:before { + content: ""; + position: absolute; + top: 2px; + right: calc(100% - 1px); + border-block-start: 22px solid transparent; + border-block-end: 0 none transparent; + border-inline-start: 0 none transparent; + border-inline-end: 12px solid var(--e-p-border-section); + transition: var(--e-a-transition-hover); +} +.elementor-editor-section-settings .elementor-editor-element-setting:first-child:hover:before, +.elementor-editor-container-settings .elementor-editor-element-setting:first-child:hover:before { + border-inline-end-color: var(--e-p-border-section-hover); +} +.elementor-editor-section-settings .elementor-editor-element-setting:last-child, +.elementor-editor-container-settings .elementor-editor-element-setting:last-child { + border-start-start-radius: 0; + border-start-end-radius: 5px; + border-end-start-radius: 0; + border-end-end-radius: 0; +} +.elementor-editor-section-settings .elementor-editor-element-setting:last-child:after, +.elementor-editor-container-settings .elementor-editor-element-setting:last-child:after { + content: ""; + position: absolute; + top: 2px; + left: calc(100% - 1px); + border-block-start: 22px solid transparent; + border-block-end: 0 none transparent; + border-inline-start: 12px solid var(--e-p-border-section); + border-inline-end: 0 none transparent; + transition: var(--e-a-transition-hover); +} +.elementor-editor-section-settings .elementor-editor-element-setting:last-child:hover:after, +.elementor-editor-container-settings .elementor-editor-element-setting:last-child:hover:after { + border-inline-start-color: var(--e-p-border-section-hover); +} + +.e-handles-inside > .elementor-element-overlay > .elementor-editor-element-settings, +.elementor-section--handles-inside > .elementor-element-overlay > .elementor-editor-element-settings { + transform: translateX(-50%); + border-start-start-radius: 0; + border-start-end-radius: 0; + border-end-start-radius: 5px; + border-end-end-radius: 5px; +} +.e-handles-inside > .elementor-element-overlay > .elementor-editor-element-settings .elementor-editor-element-setting:first-child, +.elementor-section--handles-inside > .elementor-element-overlay > .elementor-editor-element-settings .elementor-editor-element-setting:first-child { + border-start-start-radius: 0; + border-start-end-radius: 0; + border-end-start-radius: 5px; + border-end-end-radius: 0; +} +.e-handles-inside > .elementor-element-overlay > .elementor-editor-element-settings .elementor-editor-element-setting:first-child:before, +.elementor-section--handles-inside > .elementor-element-overlay > .elementor-editor-element-settings .elementor-editor-element-setting:first-child:before { + top: 0; + border-block-start: 0 none transparent; + border-block-end: 22px solid transparent; + border-inline-start: 0 none transparent; + border-inline-end: 12px solid var(--e-p-border-section); + transition: var(--e-a-transition-hover); +} +.e-handles-inside > .elementor-element-overlay > .elementor-editor-element-settings .elementor-editor-element-setting:last-child, +.elementor-section--handles-inside > .elementor-element-overlay > .elementor-editor-element-settings .elementor-editor-element-setting:last-child { + border-start-start-radius: 0; + border-start-end-radius: 0; + border-end-start-radius: 0; + border-end-end-radius: 5px; +} +.e-handles-inside > .elementor-element-overlay > .elementor-editor-element-settings .elementor-editor-element-setting:last-child:after, +.elementor-section--handles-inside > .elementor-element-overlay > .elementor-editor-element-settings .elementor-editor-element-setting:last-child:after { + top: 0; + border-block-start: 0 none transparent; + border-block-end: 22px solid transparent; + border-inline-start: 12px solid var(--e-p-border-section); + border-inline-end: 0 none transparent; + transition: var(--e-a-transition-hover); +} + +.elementor-column > .elementor-element-overlay { + left: 0; + bottom: 0; +} +.elementor-column > .elementor-element-overlay:after { + position: absolute; + left: 0; + right: 0; + top: 0; + bottom: 0; + outline: 1px dashed var(--e-p-border-column); +} +.elementor-column:hover > .elementor-element-overlay:after { + content: ""; +} +.elementor-column.elementor-element-editable > .elementor-element-overlay:after { + content: ""; + outline: 2px solid var(--e-p-border-column); +} +.elementor-column.elementor-dragging-on-child > .elementor-element-overlay { + border: 1px solid var(--e-p-draggable-color); +} +.elementor-column.elementor-dragging-on-child > .elementor-element-overlay:after { + display: none; +} +.elementor-column > .ui-resizable-e, .elementor-column > .ui-resizable-w { + cursor: col-resize; + width: 7px; + position: absolute; + right: -5px; + top: 0; + height: 100%; +} +.elementor-column:last-of-type > .ui-resizable-e, .elementor-column:last-of-type > .ui-resizable-w { + display: none !important; +} +@media (max-width: 1024px) { + .elementor-column > .ui-resizable-e, .elementor-column > .ui-resizable-w { + display: none !important; + } +} + +.elementor-editor-column-settings { + top: -1px; + left: -1px; + border-start-start-radius: 0; + border-start-end-radius: 0; + border-end-start-radius: 0; + border-end-end-radius: 3px; + overflow: hidden; +} +.elementor-editor-column-settings .elementor-editor-element-setting { + background-color: var(--e-p-border-column); +} +.elementor-editor-column-settings .elementor-editor-element-setting:hover { + background-color: var(--e-p-border-column-hover); +} + +.elementor-column-placeholder { + position: relative; +} +.elementor-column-placeholder:before, .elementor-column-placeholder:after { + content: ""; + position: absolute; + top: 10px; + bottom: 10px; + right: 10px; + left: 10px; +} +.elementor-column-placeholder:before { + border: 1px solid var(--e-p-border-column); +} +.elementor-column-placeholder:after { + border: 1px dashed var(--e-a-color-white); +} + +.elementor-column-percents-tooltip { + position: absolute; + display: none; + pointer-events: none; + top: 50%; + transform: translateY(-50%); + color: #fff; + font-size: 10px; + background-color: var(--e-p-border-column); + width: 40px; + padding: 3.5px 0; + text-align: center; + z-index: 1; + line-height: 1; +} +.elementor-column-percents-tooltip:after { + content: ""; + position: absolute; + width: 0; + height: 0; + border: 8.5px solid transparent; + top: 0; +} +.elementor-column-percents-tooltip[data-side=left] { + border-radius: 3px 0 0 3px; + right: 15px; +} +.elementor-column-percents-tooltip[data-side=left]:after { + left: 100%; + border-left-color: var(--e-p-border-column); + border-right-width: 0; +} +.elementor-column-percents-tooltip[data-side=right] { + border-radius: 0 3px 3px 0; + left: 15px; +} +.elementor-column-percents-tooltip[data-side=right]:after { + right: 100%; + border-right-color: var(--e-p-border-column); + border-left-width: 0; +} + +.elementor-editor-widget-settings { + z-index: 2; + top: -1px; + right: -1px; + flex-direction: row-reverse; + border-start-start-radius: 0; + border-start-end-radius: 0; + border-end-start-radius: 3px; + border-end-end-radius: 0; + overflow: hidden; +} +.elementor-editor-widget-settings .elementor-editor-element-setting { + background-color: var(--e-p-border-widget); +} +.elementor-editor-widget-settings .elementor-editor-element-setting:hover { + background-color: var(--e-p-border-widget-hover); +} + +.e-widget-pro-promotion .elementor-widget-container { + border: 2px dashed var(--e-a-border-color-bold); + background-color: var(--e-a-color-white); + padding: 20px; +} +.e-widget-pro-promotion .e-container { + max-width: 600px; + margin: auto; +} +.e-widget-pro-promotion .e-badge { + border: 1px solid var(--e-a-color-accent); + color: var(--e-a-color-accent); + background: var(--e-a-color-white); + border-radius: 100px; + padding: 4px 12px; + font-size: 0.8em; +} +.e-widget-pro-promotion p { + margin-block-start: 1em; + margin-block-end: 1em; + text-align: center; +} +.e-widget-pro-promotion p img { + display: block; + margin: 0 auto 20px; +} +.e-widget-pro-promotion .e-actions { + display: flex; + justify-content: center; + gap: 10px; +} +.e-widget-pro-promotion .e-btn { + font-size: 14px; + font-weight: 500; + line-height: 1.2; + padding: 8px 16px; + border-radius: var(--e-a-border-radius); + background-color: var(--e-a-btn-bg-accent); + color: var(--e-a-btn-color-invert); + transition: var(--e-a-transition-hover); +} +.e-widget-pro-promotion .e-btn:hover, .e-widget-pro-promotion .e-btn:focus { + background-color: var(--e-a-btn-bg-accent-hover); + color: var(--e-a-btn-color-invert); +} +.e-widget-pro-promotion .e-btn:active { + background-color: var(--e-a-btn-bg-accent-active); +} +.e-widget-pro-promotion .e-btn.e-btn-txt, .e-widget-pro-promotion .dialog-type-confirm .dialog-buttons-wrapper .e-btn.dialog-button.dialog-cancel, .dialog-type-confirm .dialog-buttons-wrapper .e-widget-pro-promotion .e-btn.dialog-button.dialog-cancel, +.e-widget-pro-promotion .dialog-type-alert .dialog-buttons-wrapper .e-btn.dialog-button.dialog-cancel, +.dialog-type-alert .dialog-buttons-wrapper .e-widget-pro-promotion .e-btn.dialog-button.dialog-cancel { + background: transparent; + color: var(--e-a-color-txt); +} +.e-widget-pro-promotion .e-btn.e-btn-txt:hover, .e-widget-pro-promotion .dialog-type-confirm .dialog-buttons-wrapper .e-btn.dialog-button.dialog-cancel:hover, .dialog-type-confirm .dialog-buttons-wrapper .e-widget-pro-promotion .e-btn.dialog-button.dialog-cancel:hover, +.e-widget-pro-promotion .dialog-type-alert .dialog-buttons-wrapper .e-btn.dialog-button.dialog-cancel:hover, +.dialog-type-alert .dialog-buttons-wrapper .e-widget-pro-promotion .e-btn.dialog-button.dialog-cancel:hover, .e-widget-pro-promotion .e-btn.e-btn-txt:focus, .e-widget-pro-promotion .dialog-type-confirm .dialog-buttons-wrapper .e-btn.dialog-button.dialog-cancel:focus, .dialog-type-confirm .dialog-buttons-wrapper .e-widget-pro-promotion .e-btn.dialog-button.dialog-cancel:focus, +.e-widget-pro-promotion .dialog-type-alert .dialog-buttons-wrapper .e-btn.dialog-button.dialog-cancel:focus, +.dialog-type-alert .dialog-buttons-wrapper .e-widget-pro-promotion .e-btn.dialog-button.dialog-cancel:focus { + background: var(--e-a-bg-hover); + color: var(--e-a-color-txt-hover); +} + +.elementor-section > .elementor-element-overlay, +.e-con > .elementor-element-overlay { + left: 0; + bottom: 0; +} +.elementor-section > .elementor-element-overlay:after, +.e-con > .elementor-element-overlay:after { + position: absolute; + left: 1px; + right: 1px; + top: 1px; + bottom: 1px; + outline: 1px solid var(--e-p-border-con); + animation: section-outline 0.75s; +} +.elementor-section:hover > .elementor-element-overlay:after, +.e-con:hover > .elementor-element-overlay:after { + content: ""; +} +.elementor-section.elementor-element-editable > .elementor-element-overlay:after, +.e-con.elementor-element-editable > .elementor-element-overlay:after { + content: ""; + outline-width: 2px; +} + +.e-con .e-con-inner .e-con > .elementor-element-overlay:after { + outline: 1px dashed var(--e-p-border-con-in); +} +.e-con .e-con-inner .e-con.elementor-element-editable > .elementor-element-overlay:after { + outline: 2px solid var(--e-p-border-con-in); +} +.e-con .elementor-empty-view { + position: relative; + width: 100%; + height: 100%; + min-height: 100px; +} +.e-con .elementor-empty-view .elementor-first-add { + width: auto; + height: auto; + inset: 0; +} +.e-con:not(.e-grid) .elementor-empty-view { + min-height: var(--min-height, 100px); +} +.e-con.e-grid .elementor-empty-view { + min-width: 100px; +} +.e-con .elementor-widget-placeholder { + --size: 10px; + --margin-start: calc( -1 * var( --size ) ); + --margin-end: calc( -2 * var( --size ) ); + flex-shrink: 0; + align-self: stretch; + z-index: 1; + pointer-events: none; +} +.e-con.e-con--row > .elementor-widget-placeholder, .e-con.e-con--row > .e-con-inner > .elementor-widget-placeholder { + position: relative; + z-index: 9999; + width: var(--size); + margin-inline-start: var(--margin-start); + height: auto; + min-height: 100%; + animation-name: dnd-placeholder-widget-vertical; + animation-fill-mode: both; +} +.e-con.e-con--row[data-nesting-level]:not([data-nesting-level="0"]) > .elementor-widget-placeholder, .e-con.e-con--row[data-nesting-level]:not([data-nesting-level="0"]) > .e-con-inner > .elementor-widget-placeholder { + margin-inline-end: 0; + margin-inline-start: calc(var(--margin-start) + var(--margin-end)); +} +.e-con.e-con--row[data-nesting-level]:not([data-nesting-level="0"]) > :not(.elementor-element) + .elementor-widget-placeholder, .e-con.e-con--row[data-nesting-level]:not([data-nesting-level="0"]) > .e-con-inner > :not(.elementor-element) + .elementor-widget-placeholder { + margin-inline-end: var(--margin-end); + margin-inline-start: var(--margin-start); +} +.e-con.e-grid.e-con--row .elementor-widget-placeholder.e-dragging-right, .e-con.e-grid.e-con--row .elementor-widget-placeholder.e-dragging-left, .e-con.e-grid.e-con--row > .e-con-inner .elementor-widget-placeholder.e-dragging-right, .e-con.e-grid.e-con--row > .e-con-inner .elementor-widget-placeholder.e-dragging-left { + position: absolute; + width: var(--size); + height: 100%; + top: 0; + animation: grow-in-width 0.15s forwards; +} +.e-con.e-grid.e-con--row .elementor-widget-placeholder.e-dragging-right, .e-con.e-grid.e-con--row > .e-con-inner .elementor-widget-placeholder.e-dragging-right { + right: 0; + left: auto; +} +.e-con.e-grid.e-con--row .elementor-widget-placeholder.e-dragging-left, .e-con.e-grid.e-con--row > .e-con-inner .elementor-widget-placeholder.e-dragging-left { + left: 0; + right: auto; +} +.e-con.e-con--column > .elementor-widget-placeholder, .e-con.e-con--column > .e-con-inner > .elementor-widget-placeholder { + height: var(--size); + margin-block-start: var(--margin-start); + margin-block-end: var(--margin-end); + animation-name: dnd-placeholder-widget-horizontal; +} +.e-con.e-con--column > .elementor-widget-placeholder:nth-last-child(2) { + margin-block-start: calc(2 * var(--margin-start)); + --margin-end: 0; +} +.e-con.e-con--column > .e-con-inner > .elementor-widget-placeholder:last-child { + --margin-end: 0; +} +.e-con .elementor-sortable-helper { + height: 84px; + width: 125px; + z-index: -1; +} +.e-con > .e-con > .elementor-element-overlay .elementor-editor-element-setting, .e-con-inner > .e-con > .elementor-element-overlay .elementor-editor-element-setting, .elementor-widget .e-con > .elementor-element-overlay .elementor-editor-element-setting { + position: relative; + background-color: var(--e-p-border-con-in); +} +.e-con > .e-con > .elementor-element-overlay .elementor-editor-element-setting:hover, .e-con-inner > .e-con > .elementor-element-overlay .elementor-editor-element-setting:hover, .elementor-widget .e-con > .elementor-element-overlay .elementor-editor-element-setting:hover { + background-color: var(--e-p-border-con-in-hover); +} +.e-con > .e-con > .elementor-element-overlay .elementor-editor-element-setting.elementor-editor-element-add, .e-con > .e-con > .elementor-element-overlay .elementor-editor-element-setting.elementor-editor-element-edit + .elementor-editor-element-remove, .e-con > .e-con > .elementor-element-overlay .elementor-editor-element-setting:first-child::before, .e-con > .e-con > .elementor-element-overlay .elementor-editor-element-setting:last-child::after, .e-con-inner > .e-con > .elementor-element-overlay .elementor-editor-element-setting.elementor-editor-element-add, .e-con-inner > .e-con > .elementor-element-overlay .elementor-editor-element-setting.elementor-editor-element-edit + .elementor-editor-element-remove, .e-con-inner > .e-con > .elementor-element-overlay .elementor-editor-element-setting:first-child::before, .e-con-inner > .e-con > .elementor-element-overlay .elementor-editor-element-setting:last-child::after, .elementor-widget .e-con > .elementor-element-overlay .elementor-editor-element-setting.elementor-editor-element-add, .elementor-widget .e-con > .elementor-element-overlay .elementor-editor-element-setting.elementor-editor-element-edit + .elementor-editor-element-remove, .elementor-widget .e-con > .elementor-element-overlay .elementor-editor-element-setting:first-child::before, .elementor-widget .e-con > .elementor-element-overlay .elementor-editor-element-setting:last-child::after { + display: none; +} +.e-con > .e-con > .elementor-element-overlay .elementor-editor-element-setting:not(.elementor-editor-element-edit), .e-con-inner > .e-con > .elementor-element-overlay .elementor-editor-element-setting:not(.elementor-editor-element-edit), .elementor-widget .e-con > .elementor-element-overlay .elementor-editor-element-setting:not(.elementor-editor-element-edit) { + margin-inline-start: -25px; + z-index: -1; + transition: 0.3s all; + will-change: margin-inline-start; +} +.e-con > .e-con > .elementor-element-overlay > .elementor-editor-element-settings:hover > :is(.elementor-editor-element-duplicate, .elementor-editor-element-remove), .e-con-inner > .e-con > .elementor-element-overlay > .elementor-editor-element-settings:hover > :is(.elementor-editor-element-duplicate, .elementor-editor-element-remove), .elementor-widget .e-con > .elementor-element-overlay > .elementor-editor-element-settings:hover > :is(.elementor-editor-element-duplicate, .elementor-editor-element-remove) { + margin-inline-start: 0; +} +.e-con > .e-con > .elementor-element-overlay .elementor-editor-element-settings, .e-con-inner > .e-con > .elementor-element-overlay .elementor-editor-element-settings, .elementor-widget .e-con > .elementor-element-overlay .elementor-editor-element-settings { + inset: initial; + transform: none; + inset-inline-start: 0; + top: 0; + border-radius: 0; + border-end-end-radius: 3px; + height: auto; +} +.e-con > .e-con > .elementor-element-overlay .elementor-editor-element-settings i.eicon-handle::before, .e-con-inner > .e-con > .elementor-element-overlay .elementor-editor-element-settings i.eicon-handle::before, .elementor-widget .e-con > .elementor-element-overlay .elementor-editor-element-settings i.eicon-handle::before { + content: "\e9b4"; + font-size: 20px; + display: block; + padding: 2px; +} + +body.rtl .e-con.e-grid.e-con--row .elementor-widget-placeholder.e-dragging-right, body.rtl .e-con.e-grid.e-con--row > .e-con-inner .elementor-widget-placeholder.e-dragging-right { + left: 0; + right: auto; +} +body.rtl .e-con.e-grid.e-con--row .elementor-widget-placeholder.e-dragging-left, body.rtl .e-con.e-grid.e-con--row > .e-con-inner .elementor-widget-placeholder.e-dragging-left { + right: 0; + left: auto; +} + +@keyframes dnd-placeholder-widget-vertical { + 0% { + transform-origin: 0 50%; + transform: translateX(50%) scaleX(0); + opacity: 0; + } + 100% { + transform-origin: 0 50%; + transform: translateX(50%) scaleX(1); + opacity: 0.9; + } +} +@keyframes dnd-placeholder-widget-horizontal { + 0% { + transform-origin: 50% 0; + transform: scaleY(0); + opacity: 0; + } + 100% { + transform-origin: 50% 0; + transform: scaleY(1); + opacity: 0.9; + } +} +@keyframes grow-in-width { + from { + width: 0; + } + 50% { + width: calc(var(--size) / 2); + } + to { + width: var(--size); + } +} +.e-con-select-preset { + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + gap: 25px; +} +.e-con-select-preset[data-view=choose-preset] > *:not(.e-con-select-preset__inner) { + display: none; +} +.e-con-select-preset[data-view=drop-area] > *:not(.elementor-first-add) { + display: none; +} +.e-con-select-preset__title { + font-family: var(--e-a-font-family); + font-size: 15px; + font-weight: 400; + color: var(--e-a-color-txt); +} +.e-con-select-preset__list { + display: flex; + gap: 20px; + align-items: center; + justify-content: center; + flex-wrap: wrap; + max-width: 650px; +} +.e-con-select-preset__list .e-con-preset { + cursor: pointer; + flex-basis: 90px; +} +.e-con-select-preset__list .e-con-preset svg { + width: 100%; + height: auto; +} +.e-con-select-preset__list .e-con-preset path { + fill: var(--e-a-color-white); +} +.e-con-select-preset__list .e-con-preset rect { + fill: var(--e-a-bg-active-bold); + transition: 0.3s all; +} +.e-con-select-preset__list .e-con-preset:hover rect { + fill: var(--e-a-color-txt); +} +.e-con-shared-styles { + font-family: var(--e-a-font-family); + line-height: 1; + color: var(--e-a-color-txt); + min-height: 159px; + overflow: hidden; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + gap: 25px; +} +.e-con-select-type__title { + font-size: 15px; + font-weight: 400; +} +.e-con-select-type__icons { + display: flex; + justify-content: center; + flex-wrap: wrap; + gap: 40px; +} +.e-con-select-type__icons__icon { + cursor: pointer; +} +.e-con-select-type__icons__icon svg { + margin-block-end: 10px; + width: 85px; +} +.e-con-select-type__icons__icon svg:hover rect { + fill: var(--e-a-color-txt); +} +.e-con-select-type__icons__icon svg:hover path { + stroke: var(--e-a-color-white); +} +.e-con-select-type__icons__icon__subtitle { + font-size: 14px; + font-weight: 500; +} +.e-con-select-preset-grid__title { + font-size: 15px; + font-weight: 400; +} +.e-con-select-preset-grid__list { + display: flex; + justify-content: center; + flex-wrap: wrap; + gap: 20px; +} +.e-con-select-preset-grid__list svg { + cursor: pointer; +} +.e-con-select-preset-grid__list svg:hover rect { + fill: var(--e-a-color-txt); +} +.e-con-select-preset-grid__list svg:hover path { + stroke: var(--e-a-color-white); +} +.e-con .ui-resizable-e { + right: 0; +} +.e-con .ui-resizable-w { + left: 0; +} +/*# sourceMappingURL=editor-preview.css.map */ \ No newline at end of file diff --git a/wp-content/plugins/elementor/assets/css/editor-preview.min.css b/wp-content/plugins/elementor/assets/css/editor-preview.min.css new file mode 100644 index 0000000..2039077 --- /dev/null +++ b/wp-content/plugins/elementor/assets/css/editor-preview.min.css @@ -0,0 +1,2 @@ +/*! elementor - v3.20.0 - 26-03-2024 */ +.dialog-widget-content{background-color:var(--e-a-bg-default);position:absolute;border-radius:3px;box-shadow:2px 8px 23px 3px rgba(0,0,0,.2);overflow:hidden}.dialog-message{line-height:1.5;box-sizing:border-box}.dialog-close-button{cursor:pointer;position:absolute;margin-block-start:15px;right:15px;color:var(--e-a-color-txt);font-size:15px;line-height:1;transition:var(--e-a-transition-hover)}.dialog-close-button:hover{color:var(--e-a-color-txt-hover)}.dialog-prevent-scroll{overflow:hidden;max-height:100vh}.dialog-type-lightbox{position:fixed;height:100%;width:100%;bottom:0;left:0;background-color:rgba(0,0,0,.8);z-index:9999;-webkit-user-select:none;-moz-user-select:none;user-select:none}.elementor-editor-active .elementor-popup-modal{background-color:initial}.dialog-type-alert .dialog-widget-content,.dialog-type-confirm .dialog-widget-content{margin:auto;width:400px;padding:20px}.dialog-type-alert .dialog-header,.dialog-type-confirm .dialog-header{font-size:15px;font-weight:500}.dialog-type-alert .dialog-header:after,.dialog-type-confirm .dialog-header:after{content:"";display:block;border-block-end:var(--e-a-border);padding-block-end:10px;margin-block-end:10px;margin-inline-start:-20px;margin-inline-end:-20px}.dialog-type-alert .dialog-message,.dialog-type-confirm .dialog-message{min-height:50px}.dialog-type-alert .dialog-buttons-wrapper,.dialog-type-confirm .dialog-buttons-wrapper{padding-block-start:10px;display:flex;justify-content:flex-end;gap:15px}.dialog-type-alert .dialog-buttons-wrapper .dialog-button,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button{font-size:12px;font-weight:500;line-height:1.2;padding:8px 16px;outline:none;border:none;border-radius:var(--e-a-border-radius);background-color:var(--e-a-btn-bg);color:var(--e-a-btn-color-invert);transition:var(--e-a-transition-hover)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:hover{border:none}.dialog-type-alert .dialog-buttons-wrapper .dialog-button:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:hover{background-color:var(--e-a-btn-bg-hover);color:var(--e-a-btn-color-invert)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button:active,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:active{background-color:var(--e-a-btn-bg-active)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button:not([disabled]),.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:not([disabled]){cursor:pointer}.dialog-type-alert .dialog-buttons-wrapper .dialog-button:disabled,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:disabled{background-color:var(--e-a-btn-bg-disabled);color:var(--e-a-btn-color-disabled)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button:not(.elementor-button-state) .elementor-state-icon,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:not(.elementor-button-state) .elementor-state-icon{display:none}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt{background:transparent;color:var(--e-a-color-txt)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel:hover,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt:hover{background:var(--e-a-bg-hover);color:var(--e-a-color-txt-hover)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel:disabled,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt:disabled,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel:disabled,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt:disabled{background:transparent;color:var(--e-a-color-txt-disabled)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt-border,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt-border{border:1px solid var(--e-a-color-txt-muted)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-success,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-success,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-success,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-success{background-color:var(--e-a-btn-bg-success)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-success:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-success:hover,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-success:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-success:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-success:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-success:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-success:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-success:hover{background-color:var(--e-a-btn-bg-success-hover)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-take_over,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-take_over,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary{background-color:var(--e-a-btn-bg-primary);color:var(--e-a-btn-color)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok:hover,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-take_over:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-take_over:hover,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-take_over:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-take_over:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary:hover{background-color:var(--e-a-btn-bg-primary-hover);color:var(--e-a-btn-color)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-ok,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-take_over,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary.dialog-cancel,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary.e-btn-txt,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-ok,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-take_over,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary.dialog-cancel,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary.e-btn-txt{background:transparent;color:var(--e-a-color-primary-bold)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over:hover,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel:hover,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-ok:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-ok:hover,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-take_over:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-take_over:hover,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary.dialog-cancel:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary.dialog-cancel:hover,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary.e-btn-txt:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary.e-btn-txt:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-ok:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-ok:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-take_over:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-take_over:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary.dialog-cancel:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary.dialog-cancel:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary.e-btn-txt:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary.e-btn-txt:hover{background:var(--e-a-bg-primary)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-accent,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.go-pro,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-accent,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.go-pro{background-color:var(--e-a-btn-bg-accent)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-accent:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-accent:hover,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.go-pro:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.go-pro:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-accent:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-accent:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.go-pro:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.go-pro:hover{background-color:var(--e-a-btn-bg-accent-hover)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-accent:active,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.go-pro:active,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-accent:active,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.go-pro:active{background-color:var(--e-a-btn-bg-accent-active)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-info,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-info,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-info,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-info{background-color:var(--e-a-btn-bg-info)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-info:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-info:hover,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-info:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-info:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-info:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-info:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-info:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-info:hover{background-color:var(--e-a-btn-bg-info-hover)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-warning,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-warning,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-warning,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-warning{background-color:var(--e-a-btn-bg-warning)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-warning:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-warning:hover,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-warning:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-warning:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-warning:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-warning:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-warning:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-warning:hover{background-color:var(--e-a-btn-bg-warning-hover)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-danger,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-danger,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-danger,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-danger{background-color:var(--e-a-btn-bg-danger)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-danger:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-danger:hover,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-danger:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-danger:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-danger:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-danger:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-danger:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-danger:hover{background-color:var(--e-a-btn-bg-danger-hover)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button i,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button i{margin-inline-end:5px}.dialog-type-alert .dialog-buttons-wrapper .dialog-button:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button:hover,.dialog-type-alert .dialog-buttons-wrapper .dialog-button:visited,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:visited{color:initial}.flatpickr-calendar{width:280px}.flatpickr-calendar .flatpickr-current-month span.cur-month{font-weight:300}.flatpickr-calendar .dayContainer{width:280px;min-width:280px;max-width:280px}.flatpickr-calendar .flatpickr-days{width:280px}.flatpickr-calendar .flatpickr-day{max-width:37px;height:37px;line-height:37px}.elementor-hidden{display:none}.elementor-screen-only,.screen-reader-text,.screen-reader-text span,.ui-helper-hidden-accessible{position:absolute;top:-10000em;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.elementor-clearfix:after{content:"";display:block;clear:both;width:0;height:0}.e-logo-wrapper{background:var(--e-a-bg-logo);display:inline-block;padding:.75em;border-radius:50%;line-height:1}.e-logo-wrapper i{color:var(--e-a-color-logo);font-size:1em}:root{--e-a-color-white:#fff;--e-a-color-black:#000;--e-a-color-logo:#fff;--e-a-color-primary:#f3bafd;--e-a-color-primary-bold:#d004d4;--e-a-color-secondary:#515962;--e-a-color-success:#0a875a;--e-a-color-danger:#dc2626;--e-a-color-info:#2563eb;--e-a-color-warning:#f59e0b;--e-a-color-accent:#93003f;--e-a-color-accent-promotion:#93003f;--e-a-color-global:#1dddbf;--e-a-bg-default:#fff;--e-a-bg-invert:#0c0d0e;--e-a-bg-hover:#f1f2f3;--e-a-bg-active:#e6e8ea;--e-a-bg-active-bold:#d5d8dc;--e-a-bg-loading:#f9fafa;--e-a-bg-logo:#000;--e-a-bg-primary:#fae8ff;--e-a-bg-secondary:#515962;--e-a-bg-success:#f2fdf5;--e-a-bg-info:#f0f7ff;--e-a-bg-danger:#fef1f4;--e-a-bg-warning:#fffbeb;--e-a-color-txt:#515962;--e-a-color-txt-muted:#818a96;--e-a-color-txt-disabled:#babfc5;--e-a-color-txt-invert:#fff;--e-a-color-txt-accent:#0c0d0e;--e-a-color-txt-hover:#3f444b;--e-a-color-txt-active:#0c0d0e;--e-a-border-color:#e6e8ea;--e-a-border-color-bold:#d5d8dc;--e-a-border-color-focus:#babfc5;--e-a-border-color-accent:#0c0d0e;--e-a-border:1px solid var(--e-a-border-color);--e-a-border-bold:1px solid var(--e-a-border-color-bold);--e-a-border-radius:3px;--e-a-btn-color:#0c0d0e;--e-a-btn-color-invert:var(--e-a-color-txt-invert);--e-a-btn-color-disabled:var(--e-a-color-txt-disabled);--e-a-btn-bg:#515962;--e-a-btn-bg-hover:#3a4046;--e-a-btn-bg-active:#23262a;--e-a-btn-bg-disabled:#d5d8dc;--e-a-btn-bg-primary:#f3bafd;--e-a-btn-bg-primary-hover:#f5d0fe;--e-a-btn-bg-primary-active:#f0abfc;--e-a-btn-bg-accent:#93003f;--e-a-btn-bg-accent-hover:#8f1a4c;--e-a-btn-bg-accent-active:#a93365;--e-a-btn-bg-info:#2563eb;--e-a-btn-bg-info-hover:#134cca;--e-a-btn-bg-info-active:#0e3b9c;--e-a-btn-bg-success:#0a875a;--e-a-btn-bg-success-hover:#06583a;--e-a-btn-bg-success-active:#03281b;--e-a-btn-bg-warning:#f59e0b;--e-a-btn-bg-warning-hover:#c57f08;--e-a-btn-bg-warning-active:#945f06;--e-a-btn-bg-danger:#dc2626;--e-a-btn-bg-danger-hover:#b21d1d;--e-a-btn-bg-danger-active:#861616;--e-a-dark-bg:#0c0d0e;--e-a-dark-color-txt:#9da5ae;--e-a-dark-color-txt-hover:#d5d8dc;--e-a-font-family:Roboto,Arial,Helvetica,sans-serif;--e-a-transition-hover:all .3s;--e-a-popover-shadow:0 2px 15px rgba(0,0,0,0.3);--e-a-dropdown-shadow:0 0 3px rgba(0,0,0,0.2)}.elementor-control-unit-1{width:27px}.elementor-control-unit-2{width:54px}.elementor-control-unit-3{width:81px}.elementor-control-unit-4{width:108px}.elementor-control-unit-5{max-width:400px;width:52%}.elementor-tags-list{display:none;position:absolute;width:260px;max-height:300px;overflow:auto;padding-block-end:5px;background-color:var(--e-a-bg-default);box-shadow:var(--e-a-popover-shadow);border:var(--e-a-border);border-radius:3px;z-index:10000}.elementor-tags-list__group-title{font-weight:700;font-size:12px;padding:10px 15px;display:flex;align-items:center}.elementor-tags-list__group-title .eicon-info-circle{padding-inline-end:5px;color:var(--e-a-color-primary-bold);font-size:14px}.elementor-tags-list__item{font-size:10px;padding:6px 15px;cursor:pointer}.elementor-tags-list__item:before{content:">";font-size:8px;padding-inline-end:5px}.elementor-tags-list__item:hover{background-color:var(--e-a-bg-hover)}.elementor-tags-list__teaser{border-block-start:2px solid var(--e-a-border-color);padding-block-start:4px;margin-block-start:4px}.elementor-tags-list__teaser-text{padding:2px 15px 8px;line-height:1.5;font-size:12px}.elementor-tags-list__teaser-link{color:var(--e-a-color-primary-bold);text-decoration:underline;font-style:italic;font-weight:700}.elementor-dynamic-cover{display:flex;align-items:center;width:100%;height:27px;box-sizing:border-box}.elementor-dynamic-cover__title{padding:0 8px;flex-grow:1;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.elementor-dynamic-cover__remove,.elementor-dynamic-cover__settings{cursor:pointer;transition:var(--e-a-transition-hover)}.elementor-dynamic-cover__remove:hover,.elementor-dynamic-cover__settings:hover{color:var(--e-a-color-txt-hover)}.elementor-control-type-wysiwyg .elementor-dynamic-cover{margin-block-start:10px}.elementor-tag-settings-popup{position:absolute;width:260px;background-color:var(--e-a-bg-default);border:var(--e-a-border);box-shadow:var(--e-a-popover-shadow);z-index:1}.elementor-tag-settings-popup:before{content:"";position:absolute;top:-20px;left:5px;border:10px solid transparent;border-block-end-color:var(--e-a-border-color)}.elementor-tag-settings-popup .elementor-control-type-section:first-child{margin:0}.elementor-tag-controls-stack-empty{background-color:var(--e-a-bg-default);padding:10px;font-size:13px;text-align:center}.elementor-control-dynamic input{border-start-start-radius:var(--e-a-border-radius);border-start-end-radius:0;border-end-end-radius:0;border-end-start-radius:var(--e-a-border-radius)}.elementor-control-dynamic-switcher{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;height:27px;cursor:pointer;border:var(--e-a-border-bold);background:var(--e-a-bg-default);border-inline-start-width:0;border-start-start-radius:0;border-start-end-radius:var(--e-a-border-radius);border-end-end-radius:var(--e-a-border-radius);border-end-start-radius:0;transition:var(--e-a-transition-hover)}.elementor-control-dynamic-switcher:hover{background-color:var(--e-a-bg-hover);color:var(--e-a-color-txt-hover)}.elementor-control-dynamic-switcher.e-control-tool{height:20px;border:0}.elementor-control-dynamic-switcher-wrapper{display:flex}.elementor-control-dynamic-switcher .eicon-database{font-size:12px}.elementor-control-dynamic-value .e-global__popover-toggle,.elementor-control-dynamic-value .elementor-control-dynamic-switcher,.elementor-control-dynamic-value .elementor-control-tag-area{display:none}.elementor-panel-box-content{padding:20px 20px 10px}.elementor-button{display:inline-block}.elementor-panel-alert{background-color:var(--e-a-bg-primary);padding:15px;border-inline-start:3px solid var(--e-a-color-primary);position:relative;font-size:12px;font-weight:300;font-style:italic;line-height:1.5;text-align:start;border-start-start-radius:0;border-start-end-radius:3px;border-end-start-radius:0;border-end-end-radius:3px}.elementor-panel-alert a{color:inherit}.elementor-panel-alert.elementor-panel-alert-info{border-color:var(--e-a-color-info);background:var(--e-a-bg-info)}.elementor-panel-alert.elementor-panel-alert-success{border-color:var(--e-a-color-success);background:var(--e-a-bg-success)}.elementor-panel-alert.elementor-panel-alert-warning{border-inline-start:3px solid var(--e-a-color-warning);background:var(--e-a-bg-warning)}.elementor-panel-alert.elementor-panel-alert-danger{border-color:var(--e-a-color-danger);background:var(--e-a-bg-danger)}.elementor-control-field-description,.elementor-descriptor{font-size:11px;font-style:italic;line-height:1.4;color:var(--e-a-color-txt-muted)}.elementor-controls-popover{display:none;position:absolute;box-shadow:var(--e-a-popover-shadow);border-radius:var(--e-a-border-radius);left:0;right:0;margin:-4px auto 5px;padding-block-start:15px;width:90%;z-index:10000;background-color:var(--e-a-bg-default)}.elementor-controls-popover:before{content:"";position:absolute;top:-16px;right:22px;border:8px solid transparent;border-block-end-color:var(--e-a-bg-default)}.elementor-controls-popover div.elementor-control{background-color:transparent}.elementor-controls-popover div.elementor-control:before{content:none}#elementor-panel-global .elementor-nerd-box .elementor-nerd-box-icon{margin-block-start:20px}.elementor-control{--control-title-size:12px;position:relative;padding:0 20px 15px}.elementor-control a{font-weight:500;text-decoration:none;border-block-end:1px dotted transparent;transition:all .3s ease-in-out}.elementor-control a:hover{border-block-end-color:inherit}.elementor-control .elementor-control-content{display:flex;flex-direction:column}.elementor-control .elementor-control-title{font-size:var(--control-title-size);line-height:1;margin-inline-end:5px}.elementor-control .elementor-control-title:empty{display:none}.elementor-control .elementor-control-spinner{display:flex;align-items:center}.elementor-control.elementor-control-type-divider{padding:0}.elementor-control.elementor-control-type-divider .elementor-control-content{border-width:0;border-block-start:var(--e-a-border);background-color:var(--e-a-bg-default);height:15px}.elementor-control.elementor-control-separator-before{padding-block-start:15px}.elementor-control.elementor-control-separator-before:before{content:"";position:absolute;height:1px;width:calc(100% - 40px);top:0;left:20px;background-color:var(--e-a-border-color)}.elementor-control.elementor-control-separator-after:after{content:"";position:absolute;height:1px;width:calc(100% - 40px);bottom:0;left:20px;background-color:var(--e-a-border-color)}.elementor-control.elementor-control-separator-after+.elementor-control-type-tabs~.elementor-control-separator-default,.elementor-control.elementor-control-separator-after:not(.elementor-hidden-control)~.elementor-control-separator-default{padding-block-start:15px}.elementor-control.elementor-control-deprecated,.elementor-control.elementor-control-deprecated .elementor-control-field-description{color:var(--e-a-color-warning)}.elementor-control.elementor-control-hidden-label>*>*>.elementor-control-title,.elementor-control.elementor-control-hidden-label>*>.elementor-control-title,.elementor-control.elementor-hidden-control{display:none}.elementor-control.elementor-control-type-heading .elementor-control-title{font-weight:700;margin:0}body:not(.elementor-device-desktop) .elementor-control.elementor-control-responsive-desktop,body:not(.elementor-device-laptop) .elementor-control.elementor-control-responsive-laptop,body:not(.elementor-device-mobile) .elementor-control.elementor-control-responsive-mobile,body:not(.elementor-device-mobile_extra) .elementor-control.elementor-control-responsive-mobile_extra,body:not(.elementor-device-tablet) .elementor-control.elementor-control-responsive-tablet,body:not(.elementor-device-tablet_extra) .elementor-control.elementor-control-responsive-tablet_extra,body:not(.elementor-device-widescreen) .elementor-control.elementor-control-responsive-widescreen{display:none}.elementor-control-custom_attributes_pro .elementor-nerd-box-message,.elementor-control-custom_css_pro .elementor-nerd-box-message{margin-block-start:5px}.elementor-control.e-open .elementor-panel-heading-toggle .eicon:before,.elementor-control.elementor-active .elementor-panel-heading-toggle .eicon:before,.elementor-panel-category.e-open .elementor-panel-heading-toggle .eicon:before,.elementor-panel-category.elementor-active .elementor-panel-heading-toggle .eicon:before,.elementor-panel-scheme-item.e-open .elementor-panel-heading-toggle .eicon:before,.elementor-panel-scheme-item.elementor-active .elementor-panel-heading-toggle .eicon:before{content:"\e92a"}.elementor-control:not(.e-open):not(.elementor-active) .elementor-panel-heading-toggle .eicon:before,.elementor-panel-category:not(.e-open):not(.elementor-active) .elementor-panel-heading-toggle .eicon:before,.elementor-panel-scheme-item:not(.e-open):not(.elementor-active) .elementor-panel-heading-toggle .eicon:before{content:"\e90a"}.elementor-panel-heading{display:flex;align-items:center;gap:5px;height:48px;padding-inline:20px;width:100%;border:0;border-block-start:var(--e-a-border);border-block-start-width:2px;background-color:transparent;color:var(--e-a-color-txt-accent);cursor:pointer}.elementor-panel-heading-toggle{width:10px;display:flex;flex-direction:column;align-items:center}.elementor-panel-heading-title{font-weight:700}.elementor-panel-heading-promotion{margin-inline-start:auto}.elementor-panel-heading-promotion a{color:var(--e-a-color-accent-promotion);font-family:Roboto,sans-serif;font-weight:500;font-size:13px}.elementor-panel-heading-promotion a i{margin-inline-end:4px;font-size:14px}.elementor-panel-heading-promotion a:hover{color:var(--e-a-color-accent-promotion)}.elementor-panel-heading:focus-visible{color:var(--e-a-color-txt-hover)}#elementor-controls .elementor-control-type-section:first-child .elementor-panel-heading{border-block-start:none}.elementor-control-field{display:flex;align-items:center}.elementor-label-block>.elementor-control-content>.elementor-control-field{flex-wrap:wrap}.elementor-label-block>.elementor-control-content>.elementor-control-field>.elementor-control-input-wrapper{width:100%;max-width:100%;margin-block-start:10px}.elementor-label-block>.elementor-control-content>.elementor-control-field>.elementor-control-input-wrapper>.elementor-choices label{width:auto;flex:1 1 27px;display:flex;align-items:center;justify-content:center}.elementor-label-block.elementor-control-hidden-label.elementor-label-block>.elementor-control-content>.elementor-control-field>.elementor-control-input-wrapper,.elementor-label-block.elementor-control-hidden-label:not(.elementor-control-dynamic)>.elementor-control-content>.elementor-control-field>.elementor-control-input-wrapper{margin-block-start:0}.elementor-label-inline>.elementor-control-content>.elementor-control-field>.elementor-control-title{flex-shrink:0;max-width:60%}.elementor-label-inline>.elementor-control-content>.elementor-control-field>.elementor-control-input-wrapper{margin-inline-start:auto}.elementor-control-field-description{margin-block-start:10px}.elementor-group-control-attachment_alert .elementor-control-field-description{margin-block-start:0}.elementor-update-preview{margin:15px 15px 0;display:flex;align-items:center}.elementor-update-preview-button-wrapper{flex-grow:1;text-align:end}.elementor-update-preview-button{padding:8px 15px}.elementor-control-direction-ltr input,.elementor-control-direction-ltr textarea{direction:ltr}.elementor-control-direction-rtl input,.elementor-control-direction-rtl textarea{direction:rtl}.elementor-control-alert{display:flex;flex-direction:column;justify-content:flex-start;align-items:flex-start;gap:8px}.elementor-control-alert-heading{font-weight:700}.elementor-control-type-button .elementor-control-input-wrapper{text-align:end}.elementor-control-type-button .elementor-button{width:auto}.elementor-control-type-button .elementor-button.elementor-button-center{display:block;margin:0 auto}.elementor-control-type-choose.elementor-label-block .elementor-choices{width:100%}.elementor-choices{display:flex;height:27px;line-height:27px;text-align:center;border-spacing:1px;border-radius:var(--e-a-border-radius);overflow:hidden}.elementor-choices .elementor-choices-label{border-block-start:var(--e-a-border-bold);border-block-end:var(--e-a-border-bold);border-inline-start:var(--e-a-border-bold);border-inline-end:none;font-size:12px;transition:var(--e-a-transition-hover);cursor:pointer;overflow:hidden}.elementor-choices .elementor-choices-label:nth-child(2){border-start-start-radius:var(--e-a-border-radius);border-end-start-radius:var(--e-a-border-radius)}.elementor-choices .elementor-choices-label:last-child{border-inline-end:var(--e-a-border-bold);border-start-end-radius:var(--e-a-border-radius);border-end-end-radius:var(--e-a-border-radius)}.elementor-choices input{display:none}.elementor-choices input:hover+.elementor-choices-label{background-color:var(--e-a-bg-hover)}.elementor-choices input.e-choose-placeholder+.elementor-choices-label,.elementor-choices input:checked+.elementor-choices-label{background-color:var(--e-a-bg-active-bold);color:var(--e-a-color-txt-accent)}.elementor-label-inline .elementor-choices{justify-content:flex-end}.elementor-control-type-color.e-control-global .pickr{border-start-start-radius:0;border-start-end-radius:var(--e-a-border-radius);border-end-start-radius:0;border-end-end-radius:var(--e-a-border-radius);flex-shrink:0;border-color:var(--e-a-border-color-bold);transition:var(--e-a-transition-hover)}.elementor-control-type-color.e-control-global .pickr:hover{background-color:var(--e-a-bg-hover)}.elementor-control-type-color.e-control-global .e-global__popover-toggle:not(.e-global__popover-toggle--active)~.pickr{background-color:var(--e-a-bg-active-bold)}.elementor-control-type-color .elementor-control-title{flex-grow:1}.elementor-control-type-color .elementor-control-input-wrapper{display:flex;justify-content:flex-end}.elementor-group-control-css-filter .elementor-slider{height:6px;box-shadow:inset 0 0 1px 1px rgba(0,0,0,.2)}.elementor-group-control-css-filter .elementor-control-content>.elementor-control-field>.elementor-control-input-wrapper{margin-block-start:0;margin-block-end:5px}.elementor-group-control-blur .elementor-slider{background:url(../images/blur.png);background-size:cover;background-position:50%}.elementor-group-control-contrast .elementor-slider{background:url(../images/contrast.png);background-size:100% 100%}.elementor-group-control-hue .elementor-slider{background-image:linear-gradient(90deg,red,orange,#ff0,#adff2f,#32cd32,#00bfff,#00f,#9400d3 95%)}.elementor-group-control-saturate .elementor-slider{background-image:linear-gradient(90deg,grey,red)}.elementor-group-control-brightness .elementor-slider{background-image:linear-gradient(90deg,#000,#fff)}.elementor-control-type-dimensions .elementor-control-dimensions{display:flex}.elementor-control-type-dimensions li{flex:1;transition:flex-grow .3s ease-in-out}.elementor-control-type-dimensions li .elementor-link-dimensions,.elementor-control-type-dimensions li input{display:block;text-align:center;width:100%;height:27px}.elementor-control-type-dimensions li input{border-inline-start:none;border-radius:0;padding:var(--e-a-border-radius)}.elementor-control-type-dimensions li input:focus{border-inline-start:var(--e-a-border-bold);margin-inline-start:-1px;width:calc(100% + 1px)}.elementor-control-type-dimensions li input:focus+.elementor-control-dimension-label{color:var(--e-a-color-txt)}.elementor-control-type-dimensions li .elementor-link-dimensions{border:var(--e-a-border-bold);border-inline-start:none;background-color:var(--e-a-bg-default);padding:0;outline:none;border-start-start-radius:0;border-start-end-radius:var(--e-a-border-radius);border-end-start-radius:0;border-end-end-radius:var(--e-a-border-radius);cursor:pointer}.elementor-control-type-dimensions li:first-child input{border-inline-start:1px solid var(--e-a-border-color-bold);border-start-start-radius:var(--e-a-border-radius);border-start-end-radius:0;border-end-start-radius:var(--e-a-border-radius);border-end-end-radius:0}.elementor-control-type-dimensions li:first-child input:focus{border-color:var(--e-a-border-color-focus);margin-inline-start:0;width:100%}.elementor-control-type-dimensions li:last-child{max-width:27px}.elementor-control-type-dimensions.e-units-custom li.elementor-control-dimension:focus-within{flex:2.5}.elementor-control-type-dimensions .elementor-control-dimension-label{color:var(--e-a-color-txt-muted);display:block;text-align:center;font-size:9px;padding-block-start:5px}.elementor-control-type-dimensions .elementor-link-dimensions.unlinked{background-color:var(--e-a-bg-default)}.elementor-control-type-dimensions .elementor-link-dimensions.unlinked .elementor-linked{display:none}.elementor-control-type-dimensions .elementor-link-dimensions:not(.unlinked){background-color:var(--e-a-bg-active-bold);color:var(--e-a-color-txt-accent);border-color:var(--e-a-border-color-bold)}.elementor-control-type-dimensions .elementor-link-dimensions:not(.unlinked) .elementor-unlinked{display:none}.elementor-control-responsive-switchers{--selected-option:0;--pointer-position:var(--selected-option);position:relative;width:2.5em;height:2.5em;margin:calc(-2.5em + 12px) 0;margin-inline-end:5px}.elementor-control-responsive-switchers__holder{position:absolute;width:100%;top:0;background-color:var(--e-a-bg-default);border-radius:var(--e-a-border-radius);transition:.15s;border:1px solid transparent}.elementor-control-responsive-switchers.elementor-responsive-switchers-open{z-index:11000}.elementor-control-responsive-switchers.elementor-responsive-switchers-open .elementor-responsive-switcher{height:2.5em;transform:scale(1);opacity:1}.elementor-control-responsive-switchers.elementor-responsive-switchers-open .elementor-responsive-switcher:hover{color:var(--e-a-color-primary-bold)}.elementor-control-responsive-switchers.elementor-responsive-switchers-open .elementor-control-responsive-switchers__holder{box-shadow:var(--e-a-dropdown-shadow)}.elementor-responsive-switcher{all:unset;display:flex;align-items:center;justify-content:center;position:relative;z-index:2;cursor:pointer;height:0;width:100%;transform:scale(0);opacity:0;transition:.15s;font-size:12px;color:inherit}.elementor-responsive-switcher:hover{color:var(--e-a-color-primary-bold)}.elementor-device-widescreen .elementor-responsive-switcher.elementor-responsive-switcher-widescreen{height:2.5em;transform:scale(1);opacity:1}.elementor-device-widescreen .elementor-responsive-switchers-open:not(:hover) .elementor-responsive-switcher.elementor-responsive-switcher-widescreen{color:var(--e-a-color-primary-bold)}.elementor-device-desktop .elementor-responsive-switcher.elementor-responsive-switcher-desktop{height:2.5em;transform:scale(1);opacity:1}.elementor-device-desktop .elementor-responsive-switchers-open:not(:hover) .elementor-responsive-switcher.elementor-responsive-switcher-desktop{color:var(--e-a-color-primary-bold)}.elementor-device-laptop .elementor-responsive-switcher.elementor-responsive-switcher-laptop{height:2.5em;transform:scale(1);opacity:1}.elementor-device-laptop .elementor-responsive-switchers-open:not(:hover) .elementor-responsive-switcher.elementor-responsive-switcher-laptop{color:var(--e-a-color-primary-bold)}.elementor-device-tablet_extra .elementor-responsive-switcher.elementor-responsive-switcher-tablet_extra{height:2.5em;transform:scale(1);opacity:1}.elementor-device-tablet_extra .elementor-responsive-switchers-open:not(:hover) .elementor-responsive-switcher.elementor-responsive-switcher-tablet_extra{color:var(--e-a-color-primary-bold)}.elementor-device-tablet .elementor-responsive-switcher.elementor-responsive-switcher-tablet{height:2.5em;transform:scale(1);opacity:1}.elementor-device-tablet .elementor-responsive-switchers-open:not(:hover) .elementor-responsive-switcher.elementor-responsive-switcher-tablet{color:var(--e-a-color-primary-bold)}.elementor-device-mobile_extra .elementor-responsive-switcher.elementor-responsive-switcher-mobile_extra{height:2.5em;transform:scale(1);opacity:1}.elementor-device-mobile_extra .elementor-responsive-switchers-open:not(:hover) .elementor-responsive-switcher.elementor-responsive-switcher-mobile_extra{color:var(--e-a-color-primary-bold)}.elementor-device-mobile .elementor-responsive-switcher.elementor-responsive-switcher-mobile{height:2.5em;transform:scale(1);opacity:1}.elementor-device-mobile .elementor-responsive-switchers-open:not(:hover) .elementor-responsive-switcher.elementor-responsive-switcher-mobile{color:var(--e-a-color-primary-bold)}.e-units-wrapper{position:relative;margin-inline-start:auto}.e-units-wrapper .e-units-switcher{cursor:pointer;font-size:10px;padding:.5em;margin:-.5em 0;transition:all .15s ease-in-out}.e-units-wrapper .e-units-switcher:hover{color:var(--e-a-color-primary-bold);background-color:var(--e-a-bg-hover);border-radius:var(--e-a-border-radius)}.e-units-wrapper .e-units-switcher:not([data-selected=custom]) i.eicon-edit,.e-units-wrapper .e-units-switcher[data-selected=custom] span{display:none}.e-units-wrapper .e-units-switcher i.eicon-angle-right{transform:rotate(90deg)}.e-units-choices input{display:none}.e-units-choices input:checked+label{color:var(--e-a-color-primary-bold)}.e-units-choices label{cursor:pointer;display:block}.e-units-choices{display:none;overflow:hidden;max-height:0;position:absolute;top:-.8em;left:-.5em;width:2.5em;text-align:center;background-color:var(--e-a-bg-default);border-radius:var(--e-a-border-radius);box-shadow:var(--e-a-dropdown-shadow);animation-timing-function:linear;animation-delay:0s;animation-fill-mode:forwards;z-index:11000}.e-units-choices .elementor-units-choices-label{display:flex;align-items:center;height:3em;justify-content:center;font-size:10px;transition:.15s}.e-units-choices .elementor-units-choices-label:hover{color:var(--e-a-color-primary-bold)}.e-units-choices.e-units-choices-open{display:block;animation-duration:1s;animation-name:e-units-choices-open}.e-units-custom input{font-family:monospace;font-size:.85em}@keyframes e-units-choices-open{0%{max-height:0}to{max-height:100vh}}.elementor-control-type-gaps .elementor-control-gaps{display:flex}.elementor-control-type-gaps li{flex:1;transition:flex-grow .3s ease-in-out}.elementor-control-type-gaps li .elementor-link-gaps,.elementor-control-type-gaps li input{display:block;text-align:center;width:100%;height:27px}.elementor-control-type-gaps li input{border-inline-start:none;border-radius:0;padding:var(--e-a-border-radius)}.elementor-control-type-gaps li input:focus{border-inline-start:var(--e-a-border-bold);margin-inline-start:-1px;width:calc(100% + 1px)}.elementor-control-type-gaps li input:focus+.elementor-control-gap-label{color:var(--e-a-color-txt)}.elementor-control-type-gaps li .elementor-link-gaps{border:var(--e-a-border-bold);border-inline-start:none;background-color:var(--e-a-bg-default);padding:0;outline:none;border-start-start-radius:0;border-start-end-radius:var(--e-a-border-radius);border-end-start-radius:0;border-end-end-radius:var(--e-a-border-radius);cursor:pointer}.elementor-control-type-gaps li:first-child input{border-inline-start:1px solid var(--e-a-border-color-bold);border-start-start-radius:var(--e-a-border-radius);border-start-end-radius:0;border-end-start-radius:var(--e-a-border-radius);border-end-end-radius:0}.elementor-control-type-gaps li:first-child input:focus{border-color:var(--e-a-border-color-focus);margin-inline-start:0;width:100%}.elementor-control-type-gaps li:last-child{max-width:27px}.elementor-control-type-gaps.e-units-custom li.elementor-control-gap:focus-within{flex:2.5}.elementor-control-type-gaps .elementor-control-gap-label{color:var(--e-a-color-txt-muted);display:block;text-align:center;font-size:9px;padding-block-start:5px}.elementor-control-type-gaps .elementor-link-gaps.unlinked{background-color:var(--e-a-bg-default)}.elementor-control-type-gaps .elementor-link-gaps.unlinked .elementor-linked{display:none}.elementor-control-type-gaps .elementor-link-gaps:not(.unlinked){background-color:var(--e-a-bg-active-bold);color:var(--e-a-color-txt-accent);border-color:var(--e-a-border-color-bold)}.elementor-control-type-gaps .elementor-link-gaps:not(.unlinked) .elementor-unlinked{display:none}.elementor-control-type-icons .elementor-control-media__preview>*{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.elementor-control-type-icons .elementor-control-media__preview i{font-size:70px}.elementor-control-type-icons .elementor-control-media__preview svg{height:75%}.elementor-control-type-icons .elementor-control-icons--inline__svg i.eicon-upload{font-size:15px}.elementor-control-type-gallery .elementor-control-media__content{border:var(--e-a-border-bold);border-radius:3px}.elementor-control-type-gallery .elementor-control-gallery-status{font-size:12px;height:27px;padding-inline-start:10px;border-block-end:var(--e-a-border-bold);display:flex}.elementor-control-type-gallery .elementor-control-gallery-status>*{display:flex;align-items:center}.elementor-control-type-gallery .elementor-control-gallery-status-title{flex-grow:1}.elementor-control-type-gallery .elementor-control-gallery-content{position:relative;overflow:hidden}.elementor-control-type-gallery .elementor-control-gallery-thumbnails{display:grid;grid-template-columns:repeat(auto-fill,minmax(48px,1fr));grid-gap:10px;cursor:pointer;padding:10px}.elementor-control-type-gallery .elementor-control-gallery-thumbnails:focus+.elementor-control-gallery-edit,.elementor-control-type-gallery .elementor-control-gallery-thumbnails:hover+.elementor-control-gallery-edit{opacity:1}.elementor-control-type-gallery .elementor-control-gallery-thumbnail{width:48px;height:48px;-o-object-fit:cover;object-fit:cover;border:var(--e-a-border)}.elementor-control-type-gallery .elementor-control-gallery-thumbnail+.unoptimized__image{outline:2px solid var(--e-a-btn-bg-danger-active);opacity:.6}.elementor-control-type-gallery .elementor-control-gallery-edit{position:absolute;top:0;bottom:0;left:0;right:0;background-color:rgba(0,0,0,.2);padding:10px;font-size:11px;transition:all .3s ease-in-out;pointer-events:none;cursor:pointer;opacity:0}.elementor-control-type-gallery .elementor-control-gallery-edit span{position:absolute;top:10px;right:10px;width:21px;height:21px;color:var(--e-a-color-white);background-color:rgba(0,0,0,.5);box-shadow:0 0 7px 0 rgba(0,0,0,.2);transition:var(--e-a-transition-hover)}.elementor-control-type-gallery .elementor-control-gallery-edit span i{font-size:11px;padding:5px}.elementor-control-type-gallery .elementor-control-gallery-edit span:hover{background-color:rgba(0,0,0,.6)}.elementor-control-type-gallery .elementor-control-gallery-add{width:48px;height:48px;font-size:14px}.elementor-control-type-gallery .elementor-control-gallery-add i{margin:0}.elementor-control-type-gallery.elementor-gallery-empty .elementor-control-gallery-clear,.elementor-control-type-gallery.elementor-gallery-empty .elementor-control-gallery-edit,.elementor-control-type-gallery.elementor-gallery-empty .elementor-control-gallery-thumbnails{display:none}.elementor-control-type-gallery.elementor-gallery-empty .elementor-control-gallery-content{padding:10px}.elementor-control-type-gallery.elementor-gallery-has-images .elementor-control-gallery-add{display:none}.elementor-control-type-gallery.elementor-control-dynamic .elementor-control-gallery-clear{border-inline-start:var(--e-a-border)}.elementor-control-type-gallery .elementor-control-gallery-clear{color:currentColor;background-color:transparent;border:none;cursor:pointer;justify-content:center}.elementor-control-type-gallery .elementor-control-gallery-clear:focus,.elementor-control-type-gallery .elementor-control-gallery-clear:hover{color:var(--e-a-color-danger)}.elementor-control-type-gallery .elementor-control-dynamic-switcher{border-width:0;border-inline-start-width:1px;border-block-end-width:1px;border-radius:0}.e-global__popover{width:288px;z-index:1;font-size:12px;padding-inline-start:10px}.e-global__popover-toggle{border:var(--e-a-border-bold);border-inline-end:0;border-start-start-radius:3px;border-start-end-radius:0;border-end-start-radius:3px;border-end-end-radius:0;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:var(--e-a-transition-hover)}.e-global__popover-toggle:hover{background-color:var(--e-a-bg-hover)}.e-global__popover-toggle--active{color:var(--e-a-color-primary-bold);background-color:var(--e-a-bg-active-bold)}.e-global__popover-container{box-shadow:var(--e-a-popover-shadow);border-radius:var(--e-a-border-radius);background-color:var(--e-a-bg-default)}.e-global__popover-title{padding:15px 20px;font-weight:500;border-block-end:var(--e-a-border);display:flex}.e-global__popover-title>i{margin-inline-end:5px}.e-global__popover-title-text{flex-grow:1}.e-global__popover-info{margin-inline-end:10px;display:inline-block}.e-global__popover-info-tooltip{width:270px;z-index:1;background-color:rgba(0,0,0,.9);color:var(--e-a-color-white);padding:20px;border-radius:3px}.e-global__popover-info-tooltip:after{content:"";position:absolute;bottom:-17px;left:16px;border:10px solid transparent;border-block-start-color:rgba(0,0,0,.9)}.e-global__popover-info i{font-size:13px}.e-global__preview-items-container{max-height:260px;overflow-y:auto;padding:5px 0}.e-global__preview-items-container::-webkit-scrollbar{width:7px}.e-global__preview-items-container::-webkit-scrollbar-thumb{background-color:#babfc5;border-radius:10px}.e-global__manage-button{font-weight:500;cursor:pointer}.e-global__typography{padding-block:10px;padding-inline:35px 20px;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.e-global__typography.e-global__preview-item--selected:before{font-family:eicons;font-size:13px;content:"\e90e";position:absolute;transform:translateY(-50%);top:50%;inset-inline-start:13px}.e-global__color{padding:10px 20px;display:flex;align-items:center}.e-global__color-preview-container{height:20px;width:20px;border-radius:3px;border:1px solid rgba(0,0,0,.1);margin-inline-end:10px;flex-shrink:0;position:relative}.e-global__color-preview-color,.e-global__color-preview-transparent-bg{border-radius:3px;height:100%;width:100%;position:absolute;top:0;left:0}.e-global__color-preview-transparent-bg{background-image:linear-gradient(45deg,var(--e-a-border-color-bold) 25%,transparent 0,transparent 75%,var(--e-a-border-color-bold) 0,var(--e-a-border-color-bold)),linear-gradient(45deg,var(--e-a-border-color-bold) 25%,transparent 0,transparent 75%,var(--e-a-border-color-bold) 0,var(--e-a-border-color-bold));background-size:12px 12px;background-position:0 0,calc(12px / 2) calc(12px / 2)}.e-global__color-title{flex-grow:1;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;padding-inline-end:10px}.e-global__color-hex{font-size:10px;color:var(--e-a-color-txt-muted)}.e-global__color .pcr-button{background-color:var(--e-a-bg-default)}.e-global__color.e-global__preview-item--selected .e-global__color-preview-container{display:flex;justify-content:center;align-items:center;color:var(--e-a-color-white)}.e-global__color.e-global__preview-item--selected .e-global__color-preview-container:before{font-family:eicons;font-size:13px;content:"\e90e";text-shadow:0 0 1px #000;z-index:1}.e-global__preview-item{cursor:pointer;position:relative}.e-global__preview-item:hover{background-color:var(--e-a-bg-hover)}.e-global__confirm-delete i,.e-global__confirm-message-text i{color:var(--e-a-color-warning)}.e-global__confirm-input-wrapper{display:flex;align-items:center;border:var(--e-a-border);border-radius:var(--e-a-border-radius);margin:15px 0;padding:2px}.e-global__confirm-input-wrapper input{font-family:var(--e-a-font-family);font-size:12px;padding:2px;border:0}.e-control-global .elementor-control-input-wrapper{display:flex;justify-content:flex-end;max-width:135px;width:100%}.e-control-global.elementor-control .elementor-control-input-wrapper{display:flex;flex-direction:row;align-items:stretch}.e-control-global .elementor-control-spinner{margin-inline-end:4px}.elementor-control-type-hidden{display:none!important}.elementor-control-type-icon .select2-selection__rendered .eicon{margin-inline-end:3px}.elementor-control-type-image_dimensions .elementor-control-field-description{margin:0 0 15px;line-height:1.4}.elementor-control-type-image_dimensions .elementor-control-input-wrapper{display:flex;align-items:flex-start}.elementor-control-type-image_dimensions .elementor-image-dimensions-field{width:65px}.elementor-control-type-image_dimensions .elementor-image-dimensions-field input:focus+.elementor-image-dimensions-field-description{color:var(--e-a-color-txt)}.elementor-control-type-image_dimensions .elementor-image-dimensions-separator{width:20px;text-align:center;padding-block-start:4px}.elementor-control-type-image_dimensions .elementor-image-dimensions-field-description{display:block;margin-block-start:5px;color:var(--e-a-color-txt-disabled);font-size:10px;text-align:center}.elementor-control-type-image_dimensions .elementor-image-dimensions-apply-button{margin-inline-start:auto}.elementor-control-media.e-media-empty-placeholder .e-control-image-size,.elementor-control-media.e-media-empty .elementor-control-media-area .elementor-control-media__content__remove,.elementor-control-media.e-media-empty .elementor-control-media-area .elementor-control-media__remove,.elementor-control-media:not(.e-media-empty) .elementor-control-media__content__upload-button{display:none}.elementor-control-media .eicon-plus-circle{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);color:var(--e-a-color-white);font-size:20px}.elementor-control-media__content__upload-button{background-color:var(--e-a-bg-active-bold)}.elementor-control-media__preview{height:100%;background-size:cover;background-position:50%;padding-block-end:42.8571%}.elementor-control-media-area{background-image:linear-gradient(45deg,var(--e-a-border-color-bold) 25%,transparent 0,transparent 75%,var(--e-a-border-color-bold) 0,var(--e-a-border-color-bold)),linear-gradient(45deg,var(--e-a-border-color-bold) 25%,transparent 0,transparent 75%,var(--e-a-border-color-bold) 0,var(--e-a-border-color-bold));background-size:16px 16px;background-position:0 0,calc(16px / 2) calc(16px / 2);background-color:var(--e-a-bg-default);border:var(--e-a-border-bold);aspect-ratio:21/9}.elementor-control-media-area:not(:hover) .elementor-control-media__remove{display:none}.elementor-control-media-area .eicon-video-camera{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);color:hsla(0,0%,100%,.7);font-size:21px}.elementor-control-media .elementor-control-media__content{aspect-ratio:21/9;position:relative;cursor:pointer;overflow:hidden}.elementor-control-media .elementor-control-media__content:hover:after{content:"";position:absolute;top:0;bottom:0;left:0;right:0;background-color:rgba(0,0,0,.2);pointer-events:none}.elementor-control-media .elementor-control-media__content:not(:hover) .elementor-control-media__tools{bottom:-30px}.elementor-control-media__content{transition:all .2s ease-in-out}.elementor-control-media__tools{position:absolute;bottom:0;left:0;right:0;height:27px;transition:all .2s ease-in-out}.elementor-control-media__tools>:not(:first-child){margin-inline-start:1px}.elementor-control-media__tool{display:flex;align-items:center;justify-content:center;flex-grow:1;color:var(--e-a-color-white);background-color:rgba(0,0,0,.9);font-size:11px;transition:var(--e-a-transition-hover)}.elementor-control-media__tool:hover{background-color:rgba(0,0,0,.8)}.elementor-control-media__remove{display:flex;align-items:center;justify-content:center;transition:all .3s ease-in-out}.elementor-control-media__content__remove{position:absolute;z-index:1;top:10px;right:10px;width:20px;height:20px;font-size:11px;color:var(--e-a-color-white);background-color:rgba(0,0,0,.5);border-radius:var(--e-border-radius);box-shadow:0 0 7px 0 rgba(0,0,0,.2);transition:var(--e-a-transition-hover)}.elementor-control-media__content__remove:hover{background-color:rgba(0,0,0,.6)}.elementor-control-media.e-media-empty .elementor-control-file-area,.elementor-control-media__warnings:empty{display:none}.elementor-control-media__warnings:not(:empty){margin-block-start:10px}.elementor-control-media__file{display:flex;justify-content:space-between;align-items:center;width:100%;margin-block-start:10px;border:var(--e-a-border)}.elementor-control-media__file__content{padding-inline-start:5px;font-size:12px}.elementor-control-media__file__content__label{color:#9da5ae}.elementor-control-media__file__content__info{display:flex;align-items:center;font-weight:500}.elementor-control-media__file__content__info__icon{margin-inline-end:5px}.elementor-control-media__file__controls{display:flex;border-inline-start:var(--e-a-border)}.elementor-control-media__file__controls__remove,.elementor-control-media__file__controls__upload-button{width:27px;height:27px;cursor:pointer;align-items:center}.elementor-control-media__file__controls__upload-button{display:flex;justify-content:center}.elementor-control-media__file__controls__remove{border-inline-end:var(--e-a-border)}.elementor-control-media.e-media-empty .elementor-control-media__file__content__info,.elementor-control-media.e-media-empty .elementor-control-media__file__controls__remove,.elementor-control-media:not(.e-media-empty) .elementor-control-media__file__content__label{display:none}.elementor-control-media .elementor-control-dynamic-switcher{border:none;border-radius:0;background-color:rgba(0,0,0,.9);color:var(--e-a-color-white)}.elementor-control-media .elementor-control-dynamic-switcher:hover{background-color:rgba(0,0,0,.8);color:var(--e-a-color-white)}.elementor-control-media .e-control-image-size{display:flex;flex-direction:column;width:100%;padding-block-start:20px}.elementor-control-media .e-control-image-size .elementor-control-input-wrapper{margin-inline-start:auto}.elementor-control-type-media.elementor-control-dynamic-value .elementor-control-input-wrapper{border:none}.elementor-control:not(.elementor-control-type-icons) .elementor-control-media__preview{background-color:var(--e-a-bg-active-bold)}.elementor-control-notice{display:flex;justify-content:flex-start;align-items:flex-start;gap:8px;padding:16px;border-radius:3px;border:1px solid var(--notice-control-color,var(--e-a-color-txt));color:var(--e-a-color-txt);font-size:12px;font-weight:400;line-height:1.5;text-align:start;margin-block-start:10px}.elementor-control-notice-type-info{--notice-control-color:var(--e-a-color-info)}.elementor-control-notice-type-success{--notice-control-color:var(--e-a-color-success)}.elementor-control-notice-type-warning{--notice-control-color:var(--e-a-color-warning)}.elementor-control-notice-type-danger{--notice-control-color:var(--e-a-color-danger)}.elementor-control-notice-icon{flex-basis:18px;color:var(--notice-control-color)}.elementor-control-notice-main{display:flex;flex-direction:column;justify-content:flex-start;align-items:flex-start;gap:6px;flex:1}.elementor-control-notice-main-heading{font-weight:700;font-style:italic}.elementor-control-notice-main-content{font-style:italic;line-height:1.5}.elementor-control-notice-main-actions{display:flex;gap:10px;padding-block-start:8px}.elementor-control-notice-main a{color:inherit;font-weight:700;cursor:pointer}.elementor-control-notice-main a:focus,.elementor-control-notice-main a:hover{color:inherit}.elementor-control-notice-dismiss{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:transparent;border:0;padding:0;margin:0;cursor:pointer}.elementor-control-type-popover_toggle input{display:none}.elementor-control-type-popover_toggle label{cursor:pointer}.elementor-control-type-popover_toggle .elementor-control-input-wrapper{display:flex;flex-direction:row-reverse;align-items:center}.elementor-control-type-popover_toggle .elementor-control-popover-toggle-toggle:checked+.elementor-control-popover-toggle-toggle-label{color:var(--e-a-color-txt-active);background-color:var(--e-a-bg-active-bold)}.elementor-control-type-popover_toggle .elementor-control-popover-toggle-toggle:not(:checked)~.elementor-control-popover-toggle-reset-label{display:none}.elementor-control-type-popover_toggle .elementor-control-popover-toggle-toggle-label{height:27px;display:inline-flex;align-items:center;justify-content:center;border-radius:var(--e-a-border-radius);border:var(--e-a-border-bold);transition:var(--e-a-transition-hover)}.elementor-control-type-popover_toggle .elementor-control-popover-toggle-toggle-label:hover{background-color:var(--e-a-bg-hover)}.elementor-control-type-popover_toggle .elementor-control-popover-toggle-reset-label{color:var(--e-a-color-txt-muted);margin-inline-end:5px}.elementor-control-type-popover_toggle .elementor-control-popover-toggle-reset-label:hover{color:var(--e-a-color-txt)}.elementor-controls-popover.e-controls-popover--typography{padding-block-start:0}.e-control-global .elementor-control-popover-toggle-toggle-label{border-start-start-radius:0;border-start-end-radius:var(--e-a-border-radius);border-end-start-radius:0;border-end-end-radius:var(--e-a-border-radius);flex-shrink:0}.elementor-control-type-repeater .elementor-control:not(.elementor-control-type-tab){padding-inline-start:10px;padding-inline-end:10px;padding-block-end:10px}.elementor-control-type-repeater.elementor-repeater-has-minimum-rows .elementor-repeater-tool-remove{display:none}.elementor-control-type-repeater .elementor-repeater-fields{margin:10px 0}.elementor-control-type-repeater .elementor-repeater-row-controls{border:var(--e-a-border-bold);border-block-start-width:0;padding-block-start:15px}.elementor-control-type-repeater .elementor-repeater-row-controls:not(.editable){display:none}.elementor-control-type-repeater .elementor-repeater-row-tools{display:flex;align-items:center;width:100%;border:1px solid var(--e-a-border-color-bold);transition:var(--e-a-transition-hover)}.elementor-control-type-repeater .elementor-repeater-row-tools>button{display:flex;align-items:center;justify-content:center;height:40px;border:none;background-color:transparent;color:currentColor;cursor:pointer}.elementor-control-type-repeater .elementor-repeater-row-tools>button:focus,.elementor-control-type-repeater .elementor-repeater-row-tools>button:hover{background-color:var(--e-a-bg-hover)}.elementor-control-type-repeater .elementor-repeater-row-tools .elementor-repeater-row-item-title{flex:1;justify-content:flex-start;padding:0 10px;font-size:var(--control-title-size);white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.elementor-control-type-repeater .elementor-repeater-row-tools .elementor-repeater-row-item-title .eicon,.elementor-control-type-repeater .elementor-repeater-row-tools .elementor-repeater-row-item-title i,.elementor-control-type-repeater .elementor-repeater-row-tools .elementor-repeater-row-item-title svg{margin-inline-end:5px}.elementor-control-type-repeater .elementor-repeater-row-tools .elementor-repeater-row-item-title img[src$=svg]{width:1em}.elementor-control-type-repeater .elementor-repeater-row-tools .elementor-repeater-row-tool{width:40px;border-inline-start:1px solid var(--e-a-border-color-bold)}.elementor-control-type-repeater .elementor-repeater-row-tools .elementor-repeater-row-handle-sortable{width:10px;border-inline-end:1px solid var(--e-a-border-color-bold);cursor:move}.elementor-control-type-repeater .elementor-button-wrapper{text-align:center;padding-block-start:5px}#elementor-controls{padding-block-start:15px}.elementor-control-type-section{padding:0}.elementor-control-type-section.e-open{padding-block-end:10px}.elementor-control-type-section+.elementor-control:not(.elementor-control-type-section):before{display:none}.elementor-control-type-section:not(:first-child):not(.elementor-control-type-section+.elementor-control-type-section){margin-block-start:25px}.elementor-control-type-select .elementor-control-input-wrapper{position:relative}.elementor-control-type-select .elementor-control-input-wrapper select{-webkit-appearance:none;-moz-appearance:none;appearance:none;font-size:var(--control-title-size);font-family:inherit;font-weight:inherit;font-style:inherit;text-transform:inherit;letter-spacing:inherit;line-height:inherit;flex-basis:100%;padding-inline-start:5px;padding-inline-end:20px;cursor:pointer}.elementor-control-type-select .elementor-control-input-wrapper select.e-select-placeholder{color:var(--e-a-color-txt-disabled)}.elementor-control-type-select .elementor-control-input-wrapper option.e-option-placeholder{display:none}.elementor-control-type-select .elementor-control-input-wrapper:after{font-family:eicons;content:"\e8ad";font-size:12px;position:absolute;top:50%;transform:translateY(-50%);right:5px;pointer-events:none}.elementor-control-type-select .elementor-control-field.elementor-control-field-select-small .elementor-control-input-wrapper{max-width:80px}.elementor-shadow-box .elementor-shadow-slider{margin-block-start:10px}.elementor-shadow-box .elementor-color-picker-wrapper .elementor-control-title{flex-grow:1}.elementor-control-type-slider.elementor-control-dynamic input{border-start-start-radius:var(--e-a-border-radius);border-start-end-radius:0;border-end-start-radius:var(--e-a-border-radius);border-end-end-radius:0}.elementor-control-type-slider .elementor-control-unit-2{width:21%}.elementor-control-type-slider.elementor-control-type-slider--multiple .elementor-control-input-wrapper{display:block}.elementor-control-type-slider--multiple{padding-block-end:40px}.elementor-control-type-slider--multiple .elementor-slider{margin-block-start:12px;width:98%}.elementor-control-type-slider--handles-range .elementor-slider .noUi-handle{border-radius:0;width:10px;transform:translateY(calc(50% - 14px)) translateX(4px)}.elementor-control-type-slider--handles-range .elementor-slider .noUi-handle:after{content:"";position:absolute;top:2px;height:12px;width:11px;transform:rotate(45deg);background-color:var(--e-a-color-white);border-radius:3px}.elementor-control-type-slider--handles-range .elementor-slider .noUi-handle-lower:after{left:5px;box-shadow:2px -2px 3px 0 rgba(0,0,0,.1)}.elementor-control-type-slider--handles-range .elementor-slider .noUi-handle-upper:after{right:5px;box-shadow:-2px 2px 3px 0 rgba(0,0,0,.1)}.elementor-control-type-slider .elementor-control-dynamic-switcher{border-inline-start-width:0;border-start-start-radius:0;border-start-end-radius:var(--e-a-border-radius);border-end-start-radius:0;border-end-end-radius:var(--e-a-border-radius)}.elementor-control-type-slider .elementor-control-input-wrapper{display:flex;align-items:center}.elementor-control-type-slider .elementor-dynamic-cover{margin-block-start:10px}.elementor-control-type-slider.e-units-custom .elementor-slider{display:none}.elementor-control-type-slider.e-units-custom .elementor-slider-input{width:100%;margin:0;transition:none}.elementor-slider{flex-grow:1;height:4px;background-color:var(--e-a-border-color-bold);border-radius:5px;position:relative;cursor:pointer}.elementor-slider-input{width:21%;min-width:54px;margin-inline-start:12px;transition:width .3s ease-in-out}.elementor-slider__extra{position:relative}.elementor-slider__labels{display:flex;justify-content:space-between}.elementor-slider__label{font-size:9px;color:var(--e-a-color-txt-disabled)}.elementor-slider__scales{position:absolute;display:flex;justify-content:space-evenly;width:100%;margin-block-start:4px}.elementor-slider__scale{width:1px;height:21px;background-color:var(--e-a-border-color-focus)}.elementor-slider .noUi-handle{height:16px;width:16px;background-color:var(--e-a-color-white);right:0;transform:translateY(calc(50% - 14px)) translateX(8px);position:absolute;box-shadow:0 1px 5px rgba(0,0,0,.3);border-radius:50%}.elementor-slider .noUi-connects{position:absolute;width:100%;height:4px}.elementor-slider .noUi-connect{position:absolute;z-index:0;top:0;left:0;height:100%;width:100%;will-change:transform;transform-origin:0 0;background-color:var(--e-a-border-color-focus)}.elementor-slider .noUi-tooltip{position:absolute;top:calc(100% + 5px);left:calc(50% - 4px);transform:translateX(-50%);font-size:10px}.elementor-control-type-structure .elementor-control-field{display:initial}.elementor-control-type-structure .elementor-control-structure-preset{padding:3px;border-radius:var(--e-border-radius);display:inline-block;cursor:pointer;height:50px}.elementor-control-type-structure .elementor-control-structure-preset svg{height:100%}.elementor-control-type-structure .elementor-control-structure-preset path{fill:var(--e-a-border-color-bold)}.elementor-control-type-structure .elementor-control-structure-reset{padding:15px 20px 0;font-size:11px;cursor:pointer;color:var(--e-a-color-txt-muted);border-block-start:var(--e-a-border);margin:0 -20px}.elementor-control-type-structure .elementor-control-structure-reset:hover{color:var(--e-a-color-txt)}.elementor-control-type-structure .elementor-control-structure-title{margin:10px -20px 0}.elementor-control-type-structure .elementor-control-structure-title:before{height:10px;box-shadow:inset 0 2px 4px hsla(0,0%,49.8%,.1)}.elementor-control-type-structure .elementor-control-structure-presets{display:flex;flex-wrap:wrap;justify-content:space-between}.elementor-control-type-structure .elementor-control-structure-presets input{display:none}.elementor-control-type-structure .elementor-control-structure-presets input:checked+.elementor-control-structure-preset path{fill:var(--e-a-border-color-focus)}.elementor-control-type-structure .elementor-control-structure-preset-wrapper{margin-block-end:15px}.elementor-control-type-structure .elementor-control-structure-preset-title{text-align:center;padding-block-start:5px;font-style:italic;font-size:11px;color:#9da5ae}.elementor-control-type-switcher .elementor-control-input-wrapper{text-align:end}.elementor-control-type-switcher .elementor-switch{position:relative;display:inline-block;vertical-align:top;height:20px;background-color:var(--e-a-bg-default);border-radius:18px;cursor:pointer}.elementor-control-type-switcher .elementor-switch-input{display:none}.elementor-control-type-switcher .elementor-switch-label{position:relative;display:block;height:inherit;font-size:10px;background:var(--e-a-bg-active-bold);border-radius:inherit;transition:.15s ease-out;transition-property:opacity,background}.elementor-control-type-switcher .elementor-switch-label:after,.elementor-control-type-switcher .elementor-switch-label:before{position:absolute;top:0;width:50%;text-align:center;line-height:20px;transition:inherit}.elementor-control-type-switcher .elementor-switch-label:before{content:attr(data-off);right:5px;color:var(--e-a-color-txt-muted)}.elementor-control-type-switcher .elementor-switch-label:after{content:attr(data-on);left:5px;color:var(--e-a-btn-color);opacity:0}.elementor-control-type-switcher .elementor-switch-input:checked~.elementor-switch-label{background:var(--e-a-btn-bg-primary)}.elementor-control-type-switcher .elementor-switch-input:checked~.elementor-switch-label:before{opacity:0}.elementor-control-type-switcher .elementor-switch-input:checked~.elementor-switch-label:after{opacity:1}.elementor-control-type-switcher .elementor-switch-handle{position:absolute;top:1px;left:1px;width:18px;height:18px;background:#fff;border-radius:10px;transition:left .15s ease-out}.elementor-control-type-switcher .elementor-switch-input:checked~.elementor-switch-handle{left:auto;right:1px}.elementor-control-type-tabs{display:flex;font-size:var(--control-title-size)}.elementor-control-type-tab{text-align:center;width:100%;padding:0;line-height:25px;border-block-start:var(--e-a-border-bold);border-block-end:var(--e-a-border-bold);border-inline-end:var(--e-a-border-bold);transition:var(--e-a-transition-hover);cursor:pointer}.elementor-control-type-tab:first-child{border-inline-start:var(--e-a-border-bold);border-start-start-radius:var(--e-a-border-radius);border-end-start-radius:var(--e-a-border-radius)}.elementor-control-type-tab:last-child{border-start-end-radius:var(--e-a-border-radius);border-end-end-radius:var(--e-a-border-radius)}.elementor-control-type-tab:hover{background-color:var(--e-a-bg-hover)}.elementor-control-type-tab.e-tab-active{background-color:var(--e-a-bg-active-bold);color:var(--e-a-color-txt-accent)}.e-tab-close{display:none!important}.elementor-control-type-code .elementor-control-dynamic-switcher,.elementor-control-type-textarea .elementor-control-dynamic-switcher{border-inline-start-width:1px;border-start-start-radius:0;border-start-end-radius:0;border-end-end-radius:0;border-end-start-radius:var(--e-a-border-radius)}.elementor-control-type-code:not(.elementor-control-dynamic-value) .elementor-control-dynamic-switcher,.elementor-control-type-textarea:not(.elementor-control-dynamic-value) .elementor-control-dynamic-switcher{position:absolute;top:0;right:0;z-index:1}.elementor-control-type-code .elementor-control-input-wrapper,.elementor-control-type-textarea .elementor-control-input-wrapper{position:relative}.elementor-control-type-code textarea,.elementor-control-type-textarea textarea{display:block;font-family:inherit}.elementor-control-type-code textarea:focus+.elementor-control-dynamic-switcher,.elementor-control-type-textarea textarea:focus+.elementor-control-dynamic-switcher{display:none}.elementor-control-type-code pre:focus-within+.elementor-control-dynamic-switcher,.elementor-control-type-textarea pre:focus-within+.elementor-control-dynamic-switcher{display:none}.elementor-control-type-url .elementor-control-field{position:relative}.elementor-control-type-url .elementor-control-input-wrapper{display:flex}.elementor-control-type-url.elementor-control-dynamic .elementor-control-url-more-options input{border-radius:var(--e-a-border-radius)}.elementor-control-type-url.elementor-control-dynamic-value .e-input-style{border-start-end-radius:0;border-end-end-radius:0}.elementor-control-type-url.elementor-control-dynamic-value .elementor-control-url-more{border-start-end-radius:var(--e-a-border-radius);border-end-end-radius:var(--e-a-border-radius)}.elementor-control-type-url .elementor-control-url-more{display:flex;align-items:center;justify-content:center;flex-shrink:0;border:var(--e-a-border-bold);color:currentColor;background-color:transparent;border-inline-start-width:0;cursor:pointer}.elementor-control-type-url .elementor-control-url-more i{font-size:12px}.elementor-control-type-url .elementor-control-url-more-options{display:none;padding-block-start:10px}.elementor-control-type-url .elementor-control-url-more-options .elementor-control-field-description{margin-block-start:10px}.elementor-control-type-url .elementor-control-url-more:hover{color:var(--e-a-color-txt-hover)}.elementor-control-type-url .elementor-control-url-more:focus{color:var(--e-a-color-txt-active);border-color:var(--e-a-border-color-focus)}.elementor-control-type-url .elementor-control-url-option{display:flex;align-items:center}.elementor-control-type-url .elementor-control-url-option:not(:last-child){padding-block-end:10px}.elementor-control-type-url .elementor-control-url-option input,.elementor-control-type-url .elementor-control-url-option label{cursor:pointer}.elementor-control-type-url .elementor-control-url-autocomplete-spinner{display:none;position:absolute;top:5px;right:0;width:10px;height:10px;font-size:10px;color:var(--e-a-color-txt-disabled)}.elementor-control-type-url .elementor-control-url__custom-attributes label{font-size:var(--control-title-size)}.elementor-control-type-url .elementor-control-url__custom-attributes input{width:100%;margin-block-start:10px}.elementor-control-type-url .elementor-input:focus~div{border-color:var(--e-a-border-color-focus)}.elementor-autocomplete-menu{position:absolute;background:var(--e-a-bg-default);border:var(--e-a-border);margin:0;list-style:none;padding:4px 0;height:auto;width:100%;min-width:260px;max-width:300px;max-height:200px;overflow-y:auto;border-radius:3px;transition:var(--e-a-transition-hover);cursor:default;z-index:1}.elementor-autocomplete-menu .ui-menu-item{display:flex;justify-content:space-between;align-self:baseline;padding:5px 8px;font-size:12px;width:100%;line-height:1.2;cursor:pointer}.elementor-autocomplete-menu .ui-menu-item.ui-state-active,.elementor-autocomplete-menu .ui-menu-item.ui-state-focus,.elementor-autocomplete-menu .ui-menu-item.ui-state-hover{background:var(--e-a-bg-hover)}.elementor-autocomplete-menu .elementor-autocomplete-item-info{font-size:10px;padding-block-start:2px}.elementor-control-type-wp_widget .widget-inside{line-height:2;background-color:inherit;display:block}.elementor-control-type-wp_widget .quicktags-toolbar input{width:auto}.elementor-control-type-wysiwyg *{box-sizing:content-box}.elementor-control-type-wysiwyg .wp-editor-container{border:var(--e-a-border)}.elementor-control-type-wysiwyg .wp-editor-tabs{border:var(--e-a-border-bold);border-block-end:none;border-start-start-radius:var(--e-a-border-radius);border-start-end-radius:var(--e-a-border-radius);border-end-end-radius:0;border-end-start-radius:0}.elementor-control-type-wysiwyg .wp-editor-tabs button:hover{background-color:var(--e-a-bg-hover)}.elementor-control-type-wysiwyg #insert-media-button{height:auto;line-height:24px;font-size:10px;color:var(--e-a-color-txt);border-color:var(--e-a-border-color-bold);background-color:var(--e-a-bg-default);min-height:0}.elementor-control-type-wysiwyg .ed_button{height:22px;width:auto}.elementor-control-type-wysiwyg .wp-media-buttons-icon{height:14px;margin:0}.elementor-control-type-wysiwyg .wp-media-buttons-icon:before{font-size:14px}.elementor-control-type-wysiwyg .wp-switch-editor{position:static;border:none;margin:0;color:var(--e-a-color-txt);font-size:10px;padding:3px 9px 4px}.elementor-control-type-wysiwyg .switch-html{border:solid var(--e-a-border-color-bold);border-width:0 1px}.elementor-control-type-wysiwyg .html-active .switch-tmce{background-color:transparent}.elementor-control-type-wysiwyg .html-active .switch-html,.elementor-control-type-wysiwyg .tmce-active .switch-tmce{background-color:var(--e-a-bg-active)}.elementor-control-type-wysiwyg .tmce-active .switch-html{background-color:transparent}.elementor-control-type-wysiwyg .mce-toolbar-grp,.elementor-control-type-wysiwyg .mce-toolbar .mce-btn-group .mce-btn.mce-listbox,.elementor-control-type-wysiwyg .quicktags-toolbar{background-color:var(--e-a-bg-default)}.elementor-control-type-wysiwyg .mce-toolbar .mce-btn-group .mce-btn.mce-listbox button{color:var(--e-a-color-txt)}.elementor-control-type-wysiwyg .mce-toolbar-grp>div{padding:0 3px}.elementor-control-type-wysiwyg .elementor-wp-editor{box-sizing:border-box}.elementor-control-type-wysiwyg .mce-ico{color:var(--e-a-color-txt);font-size:16px}.elementor-control-type-wysiwyg .mce-btn-group .mce-btn.mce-active,.elementor-control-type-wysiwyg .mce-btn-group .mce-btn:active,.elementor-control-type-wysiwyg .mce-btn-group .mce-btn:hover{color:var(--e-a-color-txt-active);background:var(--e-a-bg-hover);border-color:var(--e-a-border-color);box-shadow:none}.elementor-control-type-wysiwyg .mce-btn-group .mce-btn.mce-active i,.elementor-control-type-wysiwyg .mce-btn-group .mce-btn:active i,.elementor-control-type-wysiwyg .mce-btn-group .mce-btn:hover i{color:var(--e-a-color-txt-active)}.elementor-control-type-wysiwyg .mce-path{padding:5px 10px}.elementor-control-type-wysiwyg .mce-path-item{font-size:12px;color:var(--e-a-color-txt)}.elementor-control-type-wysiwyg .mce-top-part:before{box-shadow:none}.elementor-control-type-wysiwyg .elementor-control-dynamic-switcher{border:none}@media screen and (prefers-color-scheme:dark){#wp-link-wrap{color-scheme:light;--e-a-color-txt:#515962;--e-a-bg-default:#fff;--e-a-border-color-bold:#d5d8dc;--e-a-color-primary-bold:#d004d4}#wp-link{color:var(--e-a-color-txt)}#wp-link input{background-color:var(--e-a-bg-default)}#wp-link input,#wp-link input[type=checkbox]{border-color:var(--e-a-border-color-bold)}#wp-link input[type=checkbox]:checked{background:var(--e-a-color-primary-bold)}#wp-link input.button-primary{background:#2271b1;border-color:#2271b1;color:#fff}}.ui-resizable-n{top:-5px}.ui-resizable-e{right:-5px}.ui-resizable-s{bottom:-5px}.ui-resizable-w{left:-5px}.ui-resizable-ne{top:-5px;right:-5px}.ui-resizable-nw{top:-5px;left:-5px}.ui-resizable-se{bottom:-5px;right:-5px}.ui-resizable-sw{bottom:-5px;left:-5px}.ui-resizable-n,.ui-resizable-s{left:0;height:10px;width:100%;cursor:ns-resize}.ui-resizable-e,.ui-resizable-w{top:0;height:100%;width:10px;cursor:ew-resize}.ui-resizable-ne,.ui-resizable-nw,.ui-resizable-se,.ui-resizable-sw{height:15px;width:15px}.ui-resizable-nw,.ui-resizable-se{cursor:nwse-resize}.ui-resizable-ne,.ui-resizable-sw{cursor:nesw-resize}.ui-resizable-handle{position:absolute}.ui-resizable-resizing{pointer-events:none}:root{--e-p-draggable-color:#f0abfc;--e-p-border-section:#f3bafd;--e-p-border-section-hover:#f0abfc;--e-p-border-section-invert:#0c0d0e;--e-p-border-con:#f3bafd;--e-p-border-con-hover:#f0abfc;--e-p-border-con-invert:#0c0d0e;--e-p-border-column:#9da5ae;--e-p-border-column-hover:#818a96;--e-p-border-column-invert:#0c0d0e;--e-p-border-con-in:#9da5ae;--e-p-border-con-in-hover:#818a96;--e-p-border-con-in-invert:#0c0d0e;--e-p-border-widget:#f3bafd;--e-p-border-widget-hover:#f0abfc;--e-p-border-widget-invert:#0c0d0e;--e-p-border-global:#5eead4;--e-p-border-global-hover:#1dddbf;--e-p-border-global-invert:#0c0d0e}.elementor-add-section{all:initial;display:flex;max-width:1160px;position:relative;margin-inline:auto}.elementor-add-section:not(.elementor-dragging-on-child) .elementor-add-section-inner{border:2px dashed var(--e-a-border-color-bold);background-color:hsla(0,0%,100%,.5)}.elementor-add-section.elementor-dragging-on-child .elementor-add-section-inner{border:2px dashed var(--e-a-color-primary)}.elementor-add-section[data-view=choose-action] .e-view:not(.elementor-add-new-section),.elementor-add-section[data-view=select-container-preset-grid] .e-view:not(.e-con-select-preset-grid),.elementor-add-section[data-view=select-container-preset] .e-view:not(.e-con-select-preset),.elementor-add-section[data-view=select-preset] .e-view:not(.elementor-select-preset),.elementor-add-section[data-view=select-type] .e-view:not(.e-con-select-type){display:none}.elementor-add-section-inner{text-align:center;margin:20px;padding:40px 0;display:flex;justify-content:center;flex-grow:1}.elementor-add-new-section{display:flex;justify-content:center;flex-wrap:wrap;gap:5px}.elementor-add-section-area-button{padding:12px;height:40px;width:40px;border-radius:50%;font-size:16px;display:flex;outline:none;border:none;background-color:var(--e-a-bg-active);color:var(--e-a-color-black);transition:var(--e-a-transition-hover);cursor:pointer}.elementor-add-section-area-button:hover{background-color:var(--e-a-bg-active-bold);color:var(--e-a-color-black)}.elementor-add-section-area-button i{margin:0}.elementor-add-section-area-button.e-button-primary{background-color:var(--e-a-btn-bg-primary);color:var(--e-a-btn-color)}.elementor-add-section-area-button.e-button-primary:hover{background-color:var(--e-a-btn-bg-primary-hover);color:var(--e-a-btn-color)}.elementor-add-section-drag-title,.elementor-select-preset-title{font-family:var(--e-a-font-family);font-size:13px;line-height:1;color:var(--e-a-color-txt)}.elementor-add-section-drag-title{font-style:italic;font-weight:400;margin-block-start:10px;width:100%}.elementor-select-preset-title{font-weight:500;text-transform:uppercase}.elementor-add-section-close{right:40px}.elementor-add-section-back{left:40px}.elementor-wizard-icon{position:absolute;top:40px;font-size:20px;cursor:pointer;line-height:1;color:var(--e-a-color-txt)}.elementor-wizard-icon:hover{color:var(--e-a-color-txt-hover)}.elementor-select-preset-list{list-style:none;padding:0 25px;margin:20px auto 0;overflow:hidden;max-width:700px}.elementor-select-preset-list .elementor-preset{cursor:pointer;margin:0;padding:10px;float:left;max-width:33.333%}.elementor-select-preset-list .elementor-preset:not(:hover) path,.elementor-select-preset-list .elementor-preset:not(:hover) rect{fill:var(--e-a-bg-active-bold);transition:all .3s}.elementor-select-preset-list .elementor-preset:hover path,.elementor-select-preset-list .elementor-preset:hover rect{fill:var(--e-a-color-txt)}.elementor-select-preset-list .elementor-preset .e-preset--container{position:relative;display:flex}.elementor-select-preset-list .elementor-preset .e-preset--container:before{content:var(--text);font-family:var(--e-a-font-family);font-size:13px;font-weight:500;position:absolute;left:50%;top:50%;color:var(--e-a-color-white);transform:translate(-50%,-50%)}.elementor-select-preset-list .elementor-preset svg{height:50px;width:100%}.elementor-add-section[data-view=choose-action] .elementor-add-section-back,.elementor-add-section[data-view=select-preset] .elementor-add-section-back,.elementor-add-section[data-view=select-type] .elementor-add-section-back{display:none}#elementor-add-new-section{margin:60px auto}#elementor-add-new-section[data-view=choose-action] .elementor-add-section-close{display:none}.elementor-add-section-inline{margin:10px auto;width:100%}@keyframes placeholder-section{0%{height:0;opacity:0}to{height:40px;opacity:.9}}@keyframes placeholder-widget{0%{height:0;opacity:0}to{height:10px;opacity:.9}}@keyframes section-outline{0%{opacity:0}to{opacity:1}}body.elementor-editor-active .elementor.elementor-edit-mode .article,body.elementor-editor-active .elementor.elementor-edit-mode.layout-section .entry-content{overflow:visible}body.elementor-editor-active .elementor.elementor-edit-mode .elementor-element-overlay .elementor-editor-element-settings{clear:unset}body.elementor-editor-active .elementor.elementor-edit-mode .elementor-element.elementor-section{overflow:visible}.elementor-edit-area .animated{animation-fill-mode:none!important}.elementor-edit-area ul.elementor-editor-element-settings{word-break:normal;padding:0}.elementor-edit-area .gallery{opacity:1}.pen{position:relative;outline:none}.pen:not([data-elementor-inline-editing-toolbar=advanced]){white-space:pre-wrap}.pen-menu{box-shadow:1px 2px 3px -2px #222;background-color:#3f444b;position:fixed;overflow:hidden;border-radius:3px;z-index:9999}.pen-menu:after{top:100%;content:"";position:absolute;border:6px solid transparent;border-block-start-color:#3f444b;left:50%;transform:translateX(-50%)}.pen-menu-below:after{top:0;transform:translateX(-50%) translateY(-100%) rotate(180deg)}.pen-icon{position:relative;display:flex;align-items:center;justify-content:center;height:35px;padding:0 10px;font-size:21px;color:#d5d8dc;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none}.pen-icon:hover{background:#1f2124}.pen-icon[data-action=closeGroup],.pen-icon[data-group]{display:none}.pen-icon[data-action=close]:before{content:"";position:absolute;left:0;height:60%;width:1px;background-color:#1f2124}.pen-icon.active{background-color:#1f2124;box-shadow:inset 2px 2px 4px #1f2124}.pen-group-icon:after{font-family:eicons;font-size:12px;content:"\e92a";padding-inline-start:4px;color:#2563eb}.pen-input-wrapper{align-items:center}.pen-input-wrapper .pen-url-input{font-size:12px;line-height:1.5;padding:0;padding-inline-start:10px;padding-inline-end:10px;width:250px;direction:ltr}.pen-input-wrapper .pen-url-input,.pen-input-wrapper .pen-url-input:focus{background-color:transparent;border:none;outline:none;box-shadow:none;color:#fff}.pen-input-wrapper .pen-url-input::-moz-placeholder{color:#d5d8dc}.pen-input-wrapper .pen-url-input::placeholder{color:#d5d8dc}.pen-input-label{margin:0;margin-inline-end:-1px}.pen-placeholder:before{content:attr(data-pen-placeholder);position:absolute;font-weight:400;color:#757575;opacity:.6}.pen-external-url-checkbox{display:none}.pen-external-url-checkbox:checked+i{color:#fff}.elementor-inline-editing i:not([class]){font-style:italic}.elementor-inline-editing b{font-weight:700}.elementor-inline-editing u{text-decoration:underline}.e-element-color-picker{--primary-color:#2563eb;--swatch-size:25px;cursor:default;display:flex;position:absolute;width:calc((var(--count) + 1) * var(--swatch-size));height:var(--swatch-size);top:var(--top);left:var(--left);right:var(--right,unset);border-radius:3px;z-index:9998;background-color:var(--primary-color);padding:1px;box-sizing:content-box;transition:opacity .3s,width .3s}.e-element-color-picker,.e-element-color-picker.e-picker-hidden{opacity:0;pointer-events:none}.e-element-color-picker:before{content:"";flex:0 1 var(--swatch-size);max-width:100%;height:100%;box-sizing:border-box;text-align:center}.e-element-color-picker:after{content:"\e91e";font-family:eicons;color:#fff;font-size:1rem;line-height:var(--swatch-size);position:absolute;left:.3rem;z-index:-1}.e-element-color-picker__swatch{flex:1 0 var(--swatch-size);max-width:100%;height:100%;cursor:pointer;transition:var(--e-a-transition-hover);position:relative;overflow:hidden;border-radius:inherit;background:linear-gradient(var(--color),var(--color)),linear-gradient(var(--primary-color),var(--primary-color))}.e-element-color-picker__swatch:not(:first-child){border-left:1px solid var(--primary-color)}.e-element-color-picker__swatch:before{content:attr(data-text);position:absolute;left:50%;top:50%;opacity:0;color:var(--color);font-size:10px;font-weight:300;font-family:Roboto,Arial,Helvetica,sans-serif;transform:translate(-50%,-50%);filter:hue-rotate(180deg) grayscale(1) contrast(999) invert(1);transition:inherit}.e-element-color-picker__swatch:hover{flex-basis:calc(2 * var(--swatch-size));flex-shrink:0}.e-element-color-picker__swatch:hover:before{opacity:1}.e-ui-state--elements-color-picker-color-picking__on :not(.e-element-color-picker__swatch){cursor:url(../images/eyedropper.svg) 0 20,pointer}.e-ui-state--elements-color-picker-color-picking__on .e-element-color-picker:not(.e-picker-hidden):hover,.e-ui-state--elements-color-picker-color-picking__on .elementor-element:hover>.e-element-color-picker:not(.e-picker-hidden),.e-ui-state--elements-color-picker-color-picking__on .elementor-widget-container:hover+.e-element-color-picker:not(.e-picker-hidden){opacity:1;pointer-events:all}.e-ui-state--elements-color-picker-color-picking__on .elementor-section:hover{outline:1px solid #2563eb}[class*=" eicon-flex"],[class^=eicon-flex]{transition:all .3s;--is-ltr:1;--is-rtl:0;--rotation-direction:calc(var(--is-ltr) - var(--is-rtl))}[class*=" eicon-flex"].eicon-inline,[class^=eicon-flex].eicon-inline{max-height:1em;max-width:1em}[class*=" eicon-flex"]:is(.eicon-justify-start-h,.eicon-justify-end-h),[class^=eicon-flex]:is(.eicon-justify-start-h,.eicon-justify-end-h){--rotation-direction:calc(var(--is-ltr) + var(--is-rtl))}:is(.e-ui-state--document-direction-mode__column,.e-ui-state--document-direction-mode__column-reverse) [class*=" eicon-flex"]:not(.eicon-wrap):not(.eicon-nowrap):not(.eicon-grow),:is(.e-ui-state--document-direction-mode__column,.e-ui-state--document-direction-mode__column-reverse) [class^=eicon-flex]:not(.eicon-wrap):not(.eicon-nowrap):not(.eicon-grow){transform:rotate(calc(var(--rotation-direction) * 90deg))}.e-ui-state--document-direction-mode__column-reverse [class*=" eicon-flex"]:not(.eicon-wrap):not(.eicon-nowrap):not(.eicon-grow):is(.eicon-justify-start-h,.eicon-justify-end-h,.eicon-order-start,.eicon-order-end),.e-ui-state--document-direction-mode__column-reverse [class^=eicon-flex]:not(.eicon-wrap):not(.eicon-nowrap):not(.eicon-grow):is(.eicon-justify-start-h,.eicon-justify-end-h,.eicon-order-start,.eicon-order-end),:is(.e-ui-state--document-direction-mode__column,.e-ui-state--document-direction-mode__column-reverse) [class*=" eicon-flex"]:not(.eicon-wrap):not(.eicon-nowrap):not(.eicon-grow):is(.eicon-align-start-v,.eicon-align-end-v),:is(.e-ui-state--document-direction-mode__column,.e-ui-state--document-direction-mode__column-reverse) [class^=eicon-flex]:not(.eicon-wrap):not(.eicon-nowrap):not(.eicon-grow):is(.eicon-align-start-v,.eicon-align-end-v){transform:rotate(calc(var(--rotation-direction) * -90deg))}.e-ui-state--document-direction-mode__row [class*=" eicon-flex"]:not(.eicon-wrap):not(.eicon-nowrap):not(.eicon-grow):is(.eicon-justify-start-h,.eicon-justify-end-h,.eicon-order-start,.eicon-order-end),.e-ui-state--document-direction-mode__row [class^=eicon-flex]:not(.eicon-wrap):not(.eicon-nowrap):not(.eicon-grow):is(.eicon-justify-start-h,.eicon-justify-end-h,.eicon-order-start,.eicon-order-end){transform:rotate(calc(var(--is-rtl) * 180deg))}.e-ui-state--document-direction-mode__row-reverse [class*=" eicon-flex"]:not(.eicon-wrap):not(.eicon-nowrap):not(.eicon-grow):is(.eicon-justify-start-h,.eicon-justify-end-h,.eicon-order-start,.eicon-order-end),.e-ui-state--document-direction-mode__row-reverse [class^=eicon-flex]:not(.eicon-wrap):not(.eicon-nowrap):not(.eicon-grow):is(.eicon-justify-start-h,.eicon-justify-end-h,.eicon-order-start,.eicon-order-end){transform:rotate(calc(var(--is-ltr) * 180deg))}html.elementor-html{margin-block-start:0!important}.elementor-edit-area{position:relative}.elementor.loading{opacity:.5}.elementor-edit-area-active{--outline-color:var(--e-p-border-con-active)}.elementor-edit-area-active,.elementor-edit-area-active .e-con{--primary-color:var(--e-p-border-con);--secondary-color:var(--e-p-border-con-hover)}.elementor-edit-area-active .e-con{--outline-color:var(--outline-color)}.elementor-edit-area-active .e-con.e-con-boxed.elementor-html5dnd-current-element,.elementor-edit-area-active .e-con.e-dragging-over,.elementor-edit-area-active .e-con.elementor-dragging-on-child{outline:1px solid var(--outline-color)}.elementor-edit-area-active .e-grid-outline{display:none}.elementor-edit-area-active .elementor-element-editable.e-grid.e-con-full>.e-grid-outline{padding-block-start:var(--bc-padding-block-start,var(--padding-block-start));padding-block-end:var(--bc-padding-block-end,var(--padding-block-end));display:grid;position:absolute;top:0;bottom:0;pointer-events:none;grid-gap:var(--gap);justify-items:var(--justify-items);align-items:var(--align-items);grid-auto-flow:var(--grid-auto-flow);justify-content:var(--grid-justify-content);align-content:var(--grid-align-content);min-height:var(--min-height);padding-inline-end:var(--bc-padding-inline-end,var(--padding-inline-end));padding-inline-start:var(--bc-padding-inline-start,var(--padding-inline-start));width:100%;left:0}.elementor-edit-area-active .elementor-element-editable.e-grid.e-con-boxed>.e-con-inner{position:relative}.elementor-edit-area-active .elementor-element-editable.e-grid.e-con-boxed>.e-con-inner>.e-grid-outline{padding-block-start:var(--bc-padding-block-start,var(--padding-block-start));padding-block-end:var(--bc-padding-block-end,var(--padding-block-end));display:grid;position:absolute;top:0;bottom:0;pointer-events:none;grid-gap:var(--gap);justify-items:var(--justify-items);align-items:var(--align-items);grid-auto-flow:var(--grid-auto-flow);justify-content:var(--grid-justify-content);align-content:var(--grid-align-content);min-height:var(--min-height);width:var(--width);margin:0 auto}.elementor-edit-area-active .elementor-element-editable.e-grid .e-grid-outline-item{border:1px dashed #9da5ae;pointer-events:none;width:100%;height:100%}.elementor-edit-area-active .elementor-inner-section:first-child{margin-block-start:15px}.elementor-edit-area-active .elementor-widget-wrap.elementor-element-empty{min-height:30px}@media (min-width:768px){.elementor-edit-area-active .elementor-widget-wrap.elementor-element-empty{margin:10px}}.elementor-edit-area-active .elementor-column{min-width:25px}.elementor-edit-area-active .elementor-widget.elementor-loading{opacity:.3}.elementor-edit-area-active .elementor-widget.elementor-element-edit-mode:hover{box-shadow:0 0 0 1px var(--e-p-border-widget)}.elementor-edit-area-active .elementor-widget.elementor-element-editable,.elementor-edit-area-active .elementor-widget.elementor-element-editable:hover{box-shadow:0 0 0 2px var(--e-p-border-widget)}.elementor-edit-area-active .elementor-widget:not(:hover) .elementor-editor-element-settings{display:none}.elementor-edit-area-active .elementor-widget.ui-draggable-dragging{pointer-events:none}.elementor-edit-area-active .elementor-editor-element-setting{cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0;margin:0;font-size:11px;color:var(--e-p-border-widget-invert);width:25px;transition:var(--e-a-transition-hover)}.elementor-edit-area-active .elementor-inline-editing{min-height:15px}.elementor-edit-area-active .elementor-edit-hidden{display:none}.elementor-section-wrap:empty{min-height:25px}.elementor-section-wrap>:first-child>.elementor-element-overlay{z-index:9999}.elementor-element>.elementor-element-overlay{position:absolute;top:0;right:0;letter-spacing:0;z-index:9998;pointer-events:none}.elementor-element-empty .elementor-sortable-placeholder{display:none}.elementor-element.elementor-widget-empty{background-color:rgba(213,216,220,.8)}.elementor-element.elementor-widget-empty .elementor-widget-empty-icon{color:#babfc5;font-size:22px;display:block;text-align:center;padding:10px 0}.elementor-element:not(:hover):not(.elementor-element-editable)>.elementor-element-overlay .elementor-editor-element-settings{display:none}.elementor-element--toggle-edit-tools>.elementor-element-overlay .elementor-editor-element-edit:not(.elementor-active)~*{width:0;font-size:0}.elementor-element[data-side=bottom]+.elementor-element:before,.elementor-element[data-side=bottom]:last-child:after,.elementor-element[data-side=top]:before{content:"";background-color:var(--e-p-draggable-color);transition-timing-function:ease-out;opacity:.9;height:10px;animation:placeholder-widget .5s;display:block}.elementor-element.elementor-absolute,.elementor-element.elementor-fixed{cursor:grab}.elementor-element.elementor-absolute:active,.elementor-element.elementor-fixed:active{cursor:grabbing}.elementor-element.elementor-absolute .eicon-edit:before,.elementor-element.elementor-fixed .eicon-edit:before{content:"\e902"}.elementor-editor-element-settings{position:absolute;display:flex;height:26px;list-style:none;margin:0;padding:0;font-family:var(--e-a-font-family);font-size:13px;font-weight:400;font-style:normal;line-height:1;z-index:1;pointer-events:all;transition:var(--e-a-transition-hover)}@media (min-width:1025px){.elementor-editor-element-edit{cursor:move}}.elementor-empty-view{position:absolute;top:0;bottom:0;left:0;right:0;z-index:1}.elementor-first-add{text-align:center;border:1px dashed var(--e-a-border-color-bold);display:flex;height:100%;width:100%;position:absolute;align-items:center;justify-content:center}.elementor-first-add .elementor-icon{font-size:19px;color:#9da5ae;cursor:pointer}.elementor-sortable-helper{position:absolute;cursor:move;border:var(--e-a-border);border-radius:var(--e-a-border-radius);background-color:var(--e-a-bg-active);border-color:var(--e-a-border-color-accent);color:var(--e-a-color-active);text-align:center}.elementor-sortable-helper .icon{font-size:28px;padding-block-start:15px;line-height:1}.elementor-sortable-helper .title-wrapper{display:flex;height:40px;align-items:center;justify-content:center}.elementor-sortable-helper .title{font-size:11px}.elementor-sortable-placeholder:not(.elementor-column-placeholder){background-color:var(--e-p-draggable-color);animation-duration:.25s;opacity:.9;width:100%;align-self:stretch}.e-con .elementor-first-add .elementor-sortable-placeholder:not(.elementor-column-placeholder){align-self:center}.e-swappable--active>.elementor-sortable-placeholder:not(.elementor-column-placeholder){display:none}.elementor-section-placeholder{height:40px;animation-name:placeholder-section}.elementor-widget-placeholder{height:10px;animation-name:placeholder-widget}.elementor-draggable-over:not([data-dragged-element=section]):not([data-dragged-is-inner=true])>.elementor-empty-view>.elementor-first-add:after,.elementor-first-add.elementor-html5dnd-current-element:after{content:"";background-color:var(--e-p-draggable-color);transition-timing-function:ease-out;opacity:.9;height:10px;animation:placeholder-widget .5s;width:100%}.e-con .elementor-draggable-over:not([data-dragged-element=section]):not([data-dragged-is-inner=true])>.elementor-empty-view>.elementor-first-add:after,.e-con .elementor-first-add.elementor-html5dnd-current-element:after,.elementor-draggable-over:not([data-dragged-element=section]):not([data-dragged-is-inner=true])>.elementor-empty-view>.elementor-first-add .elementor-icon,.elementor-draggable-over[data-dragged-element=section][data-dragged-is-inner=true] .elementor-inner-column .elementor-sortable-placeholder,.elementor-editor-preview .elementor-add-section,.elementor-editor-preview .elementor-add-section-inline,.elementor-editor-preview .elementor-element-overlay,.elementor-editor-preview .elementor-empty,.elementor-editor-preview .elementor-empty-view,.elementor-editor-preview .elementor-widget-empty,.elementor-first-add.elementor-html5dnd-current-element .elementor-icon{display:none}.e-preview--show-hidden-elements[data-elementor-device-mode=desktop] .elementor-edit-area-active .elementor-hidden-desktop,.e-preview--show-hidden-elements[data-elementor-device-mode=laptop] .elementor-edit-area-active .elementor-hidden-laptop,.e-preview--show-hidden-elements[data-elementor-device-mode=mobile] .elementor-edit-area-active .elementor-hidden-mobile,.e-preview--show-hidden-elements[data-elementor-device-mode=mobile_extra] .elementor-edit-area-active .elementor-hidden-mobile_extra,.e-preview--show-hidden-elements[data-elementor-device-mode=tablet] .elementor-edit-area-active .elementor-hidden-tablet,.e-preview--show-hidden-elements[data-elementor-device-mode=tablet_extra] .elementor-edit-area-active .elementor-hidden-tablet_extra,.e-preview--show-hidden-elements[data-elementor-device-mode=widescreen] .elementor-edit-area-active .elementor-hidden-widescreen{display:inherit;background:repeating-linear-gradient(125deg,rgba(0,0,0,.05),rgba(0,0,0,.05) 1px,transparent 2px,transparent 9px);border:1px solid rgba(0,0,0,.02)}.e-preview--show-hidden-elements[data-elementor-device-mode=desktop] .elementor-edit-area-active .elementor-hidden-desktop.e-con>.elementor-element-overlay,.e-preview--show-hidden-elements[data-elementor-device-mode=desktop] .elementor-edit-area-active .elementor-hidden-desktop.elementor-section>.elementor-element-overlay,.e-preview--show-hidden-elements[data-elementor-device-mode=laptop] .elementor-edit-area-active .elementor-hidden-laptop.e-con>.elementor-element-overlay,.e-preview--show-hidden-elements[data-elementor-device-mode=laptop] .elementor-edit-area-active .elementor-hidden-laptop.elementor-section>.elementor-element-overlay,.e-preview--show-hidden-elements[data-elementor-device-mode=mobile] .elementor-edit-area-active .elementor-hidden-mobile.e-con>.elementor-element-overlay,.e-preview--show-hidden-elements[data-elementor-device-mode=mobile] .elementor-edit-area-active .elementor-hidden-mobile.elementor-section>.elementor-element-overlay,.e-preview--show-hidden-elements[data-elementor-device-mode=mobile_extra] .elementor-edit-area-active .elementor-hidden-mobile_extra.e-con>.elementor-element-overlay,.e-preview--show-hidden-elements[data-elementor-device-mode=mobile_extra] .elementor-edit-area-active .elementor-hidden-mobile_extra.elementor-section>.elementor-element-overlay,.e-preview--show-hidden-elements[data-elementor-device-mode=tablet] .elementor-edit-area-active .elementor-hidden-tablet.e-con>.elementor-element-overlay,.e-preview--show-hidden-elements[data-elementor-device-mode=tablet] .elementor-edit-area-active .elementor-hidden-tablet.elementor-section>.elementor-element-overlay,.e-preview--show-hidden-elements[data-elementor-device-mode=tablet_extra] .elementor-edit-area-active .elementor-hidden-tablet_extra.e-con>.elementor-element-overlay,.e-preview--show-hidden-elements[data-elementor-device-mode=tablet_extra] .elementor-edit-area-active .elementor-hidden-tablet_extra.elementor-section>.elementor-element-overlay,.e-preview--show-hidden-elements[data-elementor-device-mode=widescreen] .elementor-edit-area-active .elementor-hidden-widescreen.e-con>.elementor-element-overlay,.e-preview--show-hidden-elements[data-elementor-device-mode=widescreen] .elementor-edit-area-active .elementor-hidden-widescreen.elementor-section>.elementor-element-overlay{background-color:var(--e-a-bg-hover);mix-blend-mode:color}.e-preview--show-hidden-elements[data-elementor-device-mode=desktop] .elementor-edit-area-active .elementor-hidden-desktop.e-con:before,.e-preview--show-hidden-elements[data-elementor-device-mode=desktop] .elementor-edit-area-active .elementor-hidden-desktop.elementor-section:before,.e-preview--show-hidden-elements[data-elementor-device-mode=laptop] .elementor-edit-area-active .elementor-hidden-laptop.e-con:before,.e-preview--show-hidden-elements[data-elementor-device-mode=laptop] .elementor-edit-area-active .elementor-hidden-laptop.elementor-section:before,.e-preview--show-hidden-elements[data-elementor-device-mode=mobile] .elementor-edit-area-active .elementor-hidden-mobile.e-con:before,.e-preview--show-hidden-elements[data-elementor-device-mode=mobile] .elementor-edit-area-active .elementor-hidden-mobile.elementor-section:before,.e-preview--show-hidden-elements[data-elementor-device-mode=mobile_extra] .elementor-edit-area-active .elementor-hidden-mobile_extra.e-con:before,.e-preview--show-hidden-elements[data-elementor-device-mode=mobile_extra] .elementor-edit-area-active .elementor-hidden-mobile_extra.elementor-section:before,.e-preview--show-hidden-elements[data-elementor-device-mode=tablet] .elementor-edit-area-active .elementor-hidden-tablet.e-con:before,.e-preview--show-hidden-elements[data-elementor-device-mode=tablet] .elementor-edit-area-active .elementor-hidden-tablet.elementor-section:before,.e-preview--show-hidden-elements[data-elementor-device-mode=tablet_extra] .elementor-edit-area-active .elementor-hidden-tablet_extra.e-con:before,.e-preview--show-hidden-elements[data-elementor-device-mode=tablet_extra] .elementor-edit-area-active .elementor-hidden-tablet_extra.elementor-section:before,.e-preview--show-hidden-elements[data-elementor-device-mode=widescreen] .elementor-edit-area-active .elementor-hidden-widescreen.e-con:before,.e-preview--show-hidden-elements[data-elementor-device-mode=widescreen] .elementor-edit-area-active .elementor-hidden-widescreen.elementor-section:before{content:"";display:block;position:absolute;top:0;left:0;width:100%;height:100%;background-color:hsla(0,0%,100%,.6);z-index:9997}.e-preview--show-hidden-elements[data-elementor-device-mode=desktop] .elementor-edit-area-active .elementor-hidden-desktop.e-con,.e-preview--show-hidden-elements[data-elementor-device-mode=laptop] .elementor-edit-area-active .elementor-hidden-laptop.e-con,.e-preview--show-hidden-elements[data-elementor-device-mode=mobile] .elementor-edit-area-active .elementor-hidden-mobile.e-con,.e-preview--show-hidden-elements[data-elementor-device-mode=mobile_extra] .elementor-edit-area-active .elementor-hidden-mobile_extra.e-con,.e-preview--show-hidden-elements[data-elementor-device-mode=tablet] .elementor-edit-area-active .elementor-hidden-tablet.e-con,.e-preview--show-hidden-elements[data-elementor-device-mode=tablet_extra] .elementor-edit-area-active .elementor-hidden-tablet_extra.e-con,.e-preview--show-hidden-elements[data-elementor-device-mode=widescreen] .elementor-edit-area-active .elementor-hidden-widescreen.e-con{display:var(--display)}.e-preview--show-hidden-elements[data-elementor-device-mode=desktop] .elementor-edit-area-active .elementor-hidden-desktop.elementor-inner-section .elementor-container,.e-preview--show-hidden-elements[data-elementor-device-mode=laptop] .elementor-edit-area-active .elementor-hidden-laptop.elementor-inner-section .elementor-container,.e-preview--show-hidden-elements[data-elementor-device-mode=mobile] .elementor-edit-area-active .elementor-hidden-mobile.elementor-inner-section .elementor-container,.e-preview--show-hidden-elements[data-elementor-device-mode=mobile_extra] .elementor-edit-area-active .elementor-hidden-mobile_extra.elementor-inner-section .elementor-container,.e-preview--show-hidden-elements[data-elementor-device-mode=tablet] .elementor-edit-area-active .elementor-hidden-tablet.elementor-inner-section .elementor-container,.e-preview--show-hidden-elements[data-elementor-device-mode=tablet_extra] .elementor-edit-area-active .elementor-hidden-tablet_extra.elementor-inner-section .elementor-container,.e-preview--show-hidden-elements[data-elementor-device-mode=widescreen] .elementor-edit-area-active .elementor-hidden-widescreen.elementor-inner-section .elementor-container{width:100%}.e-preview--show-hidden-elements[data-elementor-device-mode=desktop] .elementor-edit-area-active .elementor-hidden-desktop>.elementor-widget-container,.e-preview--show-hidden-elements[data-elementor-device-mode=desktop] .elementor-edit-area-active .elementor-hidden-desktop>.elementor-widget-wrap,.e-preview--show-hidden-elements[data-elementor-device-mode=laptop] .elementor-edit-area-active .elementor-hidden-laptop>.elementor-widget-container,.e-preview--show-hidden-elements[data-elementor-device-mode=laptop] .elementor-edit-area-active .elementor-hidden-laptop>.elementor-widget-wrap,.e-preview--show-hidden-elements[data-elementor-device-mode=mobile] .elementor-edit-area-active .elementor-hidden-mobile>.elementor-widget-container,.e-preview--show-hidden-elements[data-elementor-device-mode=mobile] .elementor-edit-area-active .elementor-hidden-mobile>.elementor-widget-wrap,.e-preview--show-hidden-elements[data-elementor-device-mode=mobile_extra] .elementor-edit-area-active .elementor-hidden-mobile_extra>.elementor-widget-container,.e-preview--show-hidden-elements[data-elementor-device-mode=mobile_extra] .elementor-edit-area-active .elementor-hidden-mobile_extra>.elementor-widget-wrap,.e-preview--show-hidden-elements[data-elementor-device-mode=tablet] .elementor-edit-area-active .elementor-hidden-tablet>.elementor-widget-container,.e-preview--show-hidden-elements[data-elementor-device-mode=tablet] .elementor-edit-area-active .elementor-hidden-tablet>.elementor-widget-wrap,.e-preview--show-hidden-elements[data-elementor-device-mode=tablet_extra] .elementor-edit-area-active .elementor-hidden-tablet_extra>.elementor-widget-container,.e-preview--show-hidden-elements[data-elementor-device-mode=tablet_extra] .elementor-edit-area-active .elementor-hidden-tablet_extra>.elementor-widget-wrap,.e-preview--show-hidden-elements[data-elementor-device-mode=widescreen] .elementor-edit-area-active .elementor-hidden-widescreen>.elementor-widget-container,.e-preview--show-hidden-elements[data-elementor-device-mode=widescreen] .elementor-edit-area-active .elementor-hidden-widescreen>.elementor-widget-wrap{filter:opacity(.4) saturate(0)}.e-preview--show-hidden-elements[data-elementor-device-mode=desktop] .elementor-edit-area-active .elementor-hidden-desktop.elementor-edit-hidden,.e-preview--show-hidden-elements[data-elementor-device-mode=laptop] .elementor-edit-area-active .elementor-hidden-laptop.elementor-edit-hidden,.e-preview--show-hidden-elements[data-elementor-device-mode=mobile] .elementor-edit-area-active .elementor-hidden-mobile.elementor-edit-hidden,.e-preview--show-hidden-elements[data-elementor-device-mode=mobile_extra] .elementor-edit-area-active .elementor-hidden-mobile_extra.elementor-edit-hidden,.e-preview--show-hidden-elements[data-elementor-device-mode=tablet] .elementor-edit-area-active .elementor-hidden-tablet.elementor-edit-hidden,.e-preview--show-hidden-elements[data-elementor-device-mode=tablet_extra] .elementor-edit-area-active .elementor-hidden-tablet_extra.elementor-edit-hidden,.e-preview--show-hidden-elements[data-elementor-device-mode=widescreen] .elementor-edit-area-active .elementor-hidden-widescreen.elementor-edit-hidden{display:none}.elementor-editor-container-settings,.elementor-editor-section-settings{height:24px;top:1px;left:50%;transform:translateX(-50%) translateY(-100%);background-color:var(--e-p-border-section);border-start-start-radius:5px;border-start-end-radius:5px;border-end-start-radius:0;border-end-end-radius:0}.elementor-editor-container-settings i.eicon-handle,.elementor-editor-section-settings i.eicon-handle{font-size:16px}.elementor-editor-container-settings .elementor-editor-element-setting:hover,.elementor-editor-section-settings .elementor-editor-element-setting:hover{background-color:var(--e-p-border-section-hover)}.elementor-editor-container-settings .elementor-editor-element-setting:first-child,.elementor-editor-section-settings .elementor-editor-element-setting:first-child{border-start-start-radius:5px;border-start-end-radius:0;border-end-start-radius:0;border-end-end-radius:0}.elementor-editor-container-settings .elementor-editor-element-setting:first-child:before,.elementor-editor-section-settings .elementor-editor-element-setting:first-child:before{content:"";position:absolute;top:2px;right:calc(100% - 1px);border-block-start:22px solid transparent;border-block-end:0 none transparent;border-inline-start:0 none transparent;border-inline-end:12px solid var(--e-p-border-section);transition:var(--e-a-transition-hover)}.elementor-editor-container-settings .elementor-editor-element-setting:first-child:hover:before,.elementor-editor-section-settings .elementor-editor-element-setting:first-child:hover:before{border-inline-end-color:var(--e-p-border-section-hover)}.elementor-editor-container-settings .elementor-editor-element-setting:last-child,.elementor-editor-section-settings .elementor-editor-element-setting:last-child{border-start-start-radius:0;border-start-end-radius:5px;border-end-start-radius:0;border-end-end-radius:0}.elementor-editor-container-settings .elementor-editor-element-setting:last-child:after,.elementor-editor-section-settings .elementor-editor-element-setting:last-child:after{content:"";position:absolute;top:2px;left:calc(100% - 1px);border-block-start:22px solid transparent;border-block-end:0 none transparent;border-inline-start:12px solid var(--e-p-border-section);border-inline-end:0 none transparent;transition:var(--e-a-transition-hover)}.elementor-editor-container-settings .elementor-editor-element-setting:last-child:hover:after,.elementor-editor-section-settings .elementor-editor-element-setting:last-child:hover:after{border-inline-start-color:var(--e-p-border-section-hover)}.e-handles-inside>.elementor-element-overlay>.elementor-editor-element-settings,.elementor-section--handles-inside>.elementor-element-overlay>.elementor-editor-element-settings{transform:translateX(-50%);border-start-start-radius:0;border-start-end-radius:0;border-end-start-radius:5px;border-end-end-radius:5px}.e-handles-inside>.elementor-element-overlay>.elementor-editor-element-settings .elementor-editor-element-setting:first-child,.elementor-section--handles-inside>.elementor-element-overlay>.elementor-editor-element-settings .elementor-editor-element-setting:first-child{border-start-start-radius:0;border-start-end-radius:0;border-end-start-radius:5px;border-end-end-radius:0}.e-handles-inside>.elementor-element-overlay>.elementor-editor-element-settings .elementor-editor-element-setting:first-child:before,.elementor-section--handles-inside>.elementor-element-overlay>.elementor-editor-element-settings .elementor-editor-element-setting:first-child:before{top:0;border-block-start:0 none transparent;border-block-end:22px solid transparent;border-inline-start:0 none transparent;border-inline-end:12px solid var(--e-p-border-section);transition:var(--e-a-transition-hover)}.e-handles-inside>.elementor-element-overlay>.elementor-editor-element-settings .elementor-editor-element-setting:last-child,.elementor-section--handles-inside>.elementor-element-overlay>.elementor-editor-element-settings .elementor-editor-element-setting:last-child{border-start-start-radius:0;border-start-end-radius:0;border-end-start-radius:0;border-end-end-radius:5px}.e-handles-inside>.elementor-element-overlay>.elementor-editor-element-settings .elementor-editor-element-setting:last-child:after,.elementor-section--handles-inside>.elementor-element-overlay>.elementor-editor-element-settings .elementor-editor-element-setting:last-child:after{top:0;border-block-start:0 none transparent;border-block-end:22px solid transparent;border-inline-start:12px solid var(--e-p-border-section);border-inline-end:0 none transparent;transition:var(--e-a-transition-hover)}.elementor-column>.elementor-element-overlay{left:0;bottom:0}.elementor-column>.elementor-element-overlay:after{position:absolute;left:0;right:0;top:0;bottom:0;outline:1px dashed var(--e-p-border-column)}.elementor-column:hover>.elementor-element-overlay:after{content:""}.elementor-column.elementor-element-editable>.elementor-element-overlay:after{content:"";outline:2px solid var(--e-p-border-column)}.elementor-column.elementor-dragging-on-child>.elementor-element-overlay{border:1px solid var(--e-p-draggable-color)}.elementor-column.elementor-dragging-on-child>.elementor-element-overlay:after{display:none}.elementor-column>.ui-resizable-e,.elementor-column>.ui-resizable-w{cursor:col-resize;width:7px;position:absolute;right:-5px;top:0;height:100%}.elementor-column:last-of-type>.ui-resizable-e,.elementor-column:last-of-type>.ui-resizable-w{display:none!important}@media (max-width:1024px){.elementor-column>.ui-resizable-e,.elementor-column>.ui-resizable-w{display:none!important}}.elementor-editor-column-settings{top:-1px;left:-1px;border-start-start-radius:0;border-start-end-radius:0;border-end-start-radius:0;border-end-end-radius:3px;overflow:hidden}.elementor-editor-column-settings .elementor-editor-element-setting{background-color:var(--e-p-border-column)}.elementor-editor-column-settings .elementor-editor-element-setting:hover{background-color:var(--e-p-border-column-hover)}.elementor-column-placeholder{position:relative}.elementor-column-placeholder:after,.elementor-column-placeholder:before{content:"";position:absolute;top:10px;bottom:10px;right:10px;left:10px}.elementor-column-placeholder:before{border:1px solid var(--e-p-border-column)}.elementor-column-placeholder:after{border:1px dashed var(--e-a-color-white)}.elementor-column-percents-tooltip{position:absolute;display:none;pointer-events:none;top:50%;transform:translateY(-50%);color:#fff;font-size:10px;background-color:var(--e-p-border-column);width:40px;padding:3.5px 0;text-align:center;z-index:1;line-height:1}.elementor-column-percents-tooltip:after{content:"";position:absolute;width:0;height:0;border:8.5px solid transparent;top:0}.elementor-column-percents-tooltip[data-side=left]{border-radius:3px 0 0 3px;right:15px}.elementor-column-percents-tooltip[data-side=left]:after{left:100%;border-left-color:var(--e-p-border-column);border-right-width:0}.elementor-column-percents-tooltip[data-side=right]{border-radius:0 3px 3px 0;left:15px}.elementor-column-percents-tooltip[data-side=right]:after{right:100%;border-right-color:var(--e-p-border-column);border-left-width:0}.elementor-editor-widget-settings{z-index:2;top:-1px;right:-1px;flex-direction:row-reverse;border-start-start-radius:0;border-start-end-radius:0;border-end-start-radius:3px;border-end-end-radius:0;overflow:hidden}.elementor-editor-widget-settings .elementor-editor-element-setting{background-color:var(--e-p-border-widget)}.elementor-editor-widget-settings .elementor-editor-element-setting:hover{background-color:var(--e-p-border-widget-hover)}.e-widget-pro-promotion .elementor-widget-container{border:2px dashed var(--e-a-border-color-bold);background-color:var(--e-a-color-white);padding:20px}.e-widget-pro-promotion .e-container{max-width:600px;margin:auto}.e-widget-pro-promotion .e-badge{border:1px solid var(--e-a-color-accent);color:var(--e-a-color-accent);background:var(--e-a-color-white);border-radius:100px;padding:4px 12px;font-size:.8em}.e-widget-pro-promotion p{margin-block-start:1em;margin-block-end:1em;text-align:center}.e-widget-pro-promotion p img{display:block;margin:0 auto 20px}.e-widget-pro-promotion .e-actions{display:flex;justify-content:center;gap:10px}.e-widget-pro-promotion .e-btn{font-size:14px;font-weight:500;line-height:1.2;padding:8px 16px;border-radius:var(--e-a-border-radius);background-color:var(--e-a-btn-bg-accent);color:var(--e-a-btn-color-invert);transition:var(--e-a-transition-hover)}.e-widget-pro-promotion .e-btn:focus,.e-widget-pro-promotion .e-btn:hover{background-color:var(--e-a-btn-bg-accent-hover);color:var(--e-a-btn-color-invert)}.e-widget-pro-promotion .e-btn:active{background-color:var(--e-a-btn-bg-accent-active)}.dialog-type-alert .dialog-buttons-wrapper .e-widget-pro-promotion .e-btn.dialog-button.dialog-cancel,.dialog-type-confirm .dialog-buttons-wrapper .e-widget-pro-promotion .e-btn.dialog-button.dialog-cancel,.e-widget-pro-promotion .dialog-type-alert .dialog-buttons-wrapper .e-btn.dialog-button.dialog-cancel,.e-widget-pro-promotion .dialog-type-confirm .dialog-buttons-wrapper .e-btn.dialog-button.dialog-cancel,.e-widget-pro-promotion .e-btn.e-btn-txt{background:transparent;color:var(--e-a-color-txt)}.dialog-type-alert .dialog-buttons-wrapper .e-widget-pro-promotion .e-btn.dialog-button.dialog-cancel:focus,.dialog-type-alert .dialog-buttons-wrapper .e-widget-pro-promotion .e-btn.dialog-button.dialog-cancel:hover,.dialog-type-confirm .dialog-buttons-wrapper .e-widget-pro-promotion .e-btn.dialog-button.dialog-cancel:focus,.dialog-type-confirm .dialog-buttons-wrapper .e-widget-pro-promotion .e-btn.dialog-button.dialog-cancel:hover,.e-widget-pro-promotion .dialog-type-alert .dialog-buttons-wrapper .e-btn.dialog-button.dialog-cancel:focus,.e-widget-pro-promotion .dialog-type-alert .dialog-buttons-wrapper .e-btn.dialog-button.dialog-cancel:hover,.e-widget-pro-promotion .dialog-type-confirm .dialog-buttons-wrapper .e-btn.dialog-button.dialog-cancel:focus,.e-widget-pro-promotion .dialog-type-confirm .dialog-buttons-wrapper .e-btn.dialog-button.dialog-cancel:hover,.e-widget-pro-promotion .e-btn.e-btn-txt:focus,.e-widget-pro-promotion .e-btn.e-btn-txt:hover{background:var(--e-a-bg-hover);color:var(--e-a-color-txt-hover)}.e-con>.elementor-element-overlay,.elementor-section>.elementor-element-overlay{left:0;bottom:0}.e-con>.elementor-element-overlay:after,.elementor-section>.elementor-element-overlay:after{position:absolute;left:1px;right:1px;top:1px;bottom:1px;outline:1px solid var(--e-p-border-con);animation:section-outline .75s}.e-con:hover>.elementor-element-overlay:after,.elementor-section:hover>.elementor-element-overlay:after{content:""}.e-con.elementor-element-editable>.elementor-element-overlay:after,.elementor-section.elementor-element-editable>.elementor-element-overlay:after{content:"";outline-width:2px}.e-con .e-con-inner .e-con>.elementor-element-overlay:after{outline:1px dashed var(--e-p-border-con-in)}.e-con .e-con-inner .e-con.elementor-element-editable>.elementor-element-overlay:after{outline:2px solid var(--e-p-border-con-in)}.e-con .elementor-empty-view{position:relative;width:100%;height:100%;min-height:100px}.e-con .elementor-empty-view .elementor-first-add{width:auto;height:auto;inset:0}.e-con:not(.e-grid) .elementor-empty-view{min-height:var(--min-height,100px)}.e-con.e-grid .elementor-empty-view{min-width:100px}.e-con .elementor-widget-placeholder{--size:10px;--margin-start:calc(-1 * var(--size));--margin-end:calc(-2 * var(--size));flex-shrink:0;align-self:stretch;z-index:1;pointer-events:none}.e-con.e-con--row>.e-con-inner>.elementor-widget-placeholder,.e-con.e-con--row>.elementor-widget-placeholder{position:relative;z-index:9999;width:var(--size);margin-inline-start:var(--margin-start);height:auto;min-height:100%;animation-name:dnd-placeholder-widget-vertical;animation-fill-mode:both}.e-con.e-con--row[data-nesting-level]:not([data-nesting-level="0"])>.e-con-inner>.elementor-widget-placeholder,.e-con.e-con--row[data-nesting-level]:not([data-nesting-level="0"])>.elementor-widget-placeholder{margin-inline-end:0;margin-inline-start:calc(var(--margin-start) + var(--margin-end))}.e-con.e-con--row[data-nesting-level]:not([data-nesting-level="0"])>.e-con-inner>:not(.elementor-element)+.elementor-widget-placeholder,.e-con.e-con--row[data-nesting-level]:not([data-nesting-level="0"])>:not(.elementor-element)+.elementor-widget-placeholder{margin-inline-end:var(--margin-end);margin-inline-start:var(--margin-start)}.e-con.e-grid.e-con--row .elementor-widget-placeholder.e-dragging-left,.e-con.e-grid.e-con--row .elementor-widget-placeholder.e-dragging-right,.e-con.e-grid.e-con--row>.e-con-inner .elementor-widget-placeholder.e-dragging-left,.e-con.e-grid.e-con--row>.e-con-inner .elementor-widget-placeholder.e-dragging-right{position:absolute;width:var(--size);height:100%;top:0;animation:grow-in-width .15s forwards}.e-con.e-grid.e-con--row .elementor-widget-placeholder.e-dragging-right,.e-con.e-grid.e-con--row>.e-con-inner .elementor-widget-placeholder.e-dragging-right{right:0;left:auto}.e-con.e-grid.e-con--row .elementor-widget-placeholder.e-dragging-left,.e-con.e-grid.e-con--row>.e-con-inner .elementor-widget-placeholder.e-dragging-left{left:0;right:auto}.e-con.e-con--column>.e-con-inner>.elementor-widget-placeholder,.e-con.e-con--column>.elementor-widget-placeholder{height:var(--size);margin-block-start:var(--margin-start);margin-block-end:var(--margin-end);animation-name:dnd-placeholder-widget-horizontal}.e-con.e-con--column>.elementor-widget-placeholder:nth-last-child(2){margin-block-start:calc(2 * var(--margin-start));--margin-end:0}.e-con.e-con--column>.e-con-inner>.elementor-widget-placeholder:last-child{--margin-end:0}.e-con .elementor-sortable-helper{height:84px;width:125px;z-index:-1}.e-con-inner>.e-con>.elementor-element-overlay .elementor-editor-element-setting,.e-con>.e-con>.elementor-element-overlay .elementor-editor-element-setting,.elementor-widget .e-con>.elementor-element-overlay .elementor-editor-element-setting{position:relative;background-color:var(--e-p-border-con-in)}.e-con-inner>.e-con>.elementor-element-overlay .elementor-editor-element-setting:hover,.e-con>.e-con>.elementor-element-overlay .elementor-editor-element-setting:hover,.elementor-widget .e-con>.elementor-element-overlay .elementor-editor-element-setting:hover{background-color:var(--e-p-border-con-in-hover)}.e-con-inner>.e-con>.elementor-element-overlay .elementor-editor-element-setting.elementor-editor-element-add,.e-con-inner>.e-con>.elementor-element-overlay .elementor-editor-element-setting.elementor-editor-element-edit+.elementor-editor-element-remove,.e-con-inner>.e-con>.elementor-element-overlay .elementor-editor-element-setting:first-child:before,.e-con-inner>.e-con>.elementor-element-overlay .elementor-editor-element-setting:last-child:after,.e-con>.e-con>.elementor-element-overlay .elementor-editor-element-setting.elementor-editor-element-add,.e-con>.e-con>.elementor-element-overlay .elementor-editor-element-setting.elementor-editor-element-edit+.elementor-editor-element-remove,.e-con>.e-con>.elementor-element-overlay .elementor-editor-element-setting:first-child:before,.e-con>.e-con>.elementor-element-overlay .elementor-editor-element-setting:last-child:after,.elementor-widget .e-con>.elementor-element-overlay .elementor-editor-element-setting.elementor-editor-element-add,.elementor-widget .e-con>.elementor-element-overlay .elementor-editor-element-setting.elementor-editor-element-edit+.elementor-editor-element-remove,.elementor-widget .e-con>.elementor-element-overlay .elementor-editor-element-setting:first-child:before,.elementor-widget .e-con>.elementor-element-overlay .elementor-editor-element-setting:last-child:after{display:none}.e-con-inner>.e-con>.elementor-element-overlay .elementor-editor-element-setting:not(.elementor-editor-element-edit),.e-con>.e-con>.elementor-element-overlay .elementor-editor-element-setting:not(.elementor-editor-element-edit),.elementor-widget .e-con>.elementor-element-overlay .elementor-editor-element-setting:not(.elementor-editor-element-edit){margin-inline-start:-25px;z-index:-1;transition:all .3s;will-change:margin-inline-start}.e-con-inner>.e-con>.elementor-element-overlay>.elementor-editor-element-settings:hover>:is(.elementor-editor-element-duplicate,.elementor-editor-element-remove),.e-con>.e-con>.elementor-element-overlay>.elementor-editor-element-settings:hover>:is(.elementor-editor-element-duplicate,.elementor-editor-element-remove),.elementor-widget .e-con>.elementor-element-overlay>.elementor-editor-element-settings:hover>:is(.elementor-editor-element-duplicate,.elementor-editor-element-remove){margin-inline-start:0}.e-con-inner>.e-con>.elementor-element-overlay .elementor-editor-element-settings,.e-con>.e-con>.elementor-element-overlay .elementor-editor-element-settings,.elementor-widget .e-con>.elementor-element-overlay .elementor-editor-element-settings{inset:auto;transform:none;inset-inline-start:0;top:0;border-radius:0;border-end-end-radius:3px;height:auto}.e-con-inner>.e-con>.elementor-element-overlay .elementor-editor-element-settings i.eicon-handle:before,.e-con>.e-con>.elementor-element-overlay .elementor-editor-element-settings i.eicon-handle:before,.elementor-widget .e-con>.elementor-element-overlay .elementor-editor-element-settings i.eicon-handle:before{content:"\e9b4";font-size:20px;display:block;padding:2px}body.rtl .e-con.e-grid.e-con--row .elementor-widget-placeholder.e-dragging-right,body.rtl .e-con.e-grid.e-con--row>.e-con-inner .elementor-widget-placeholder.e-dragging-right{left:0;right:auto}body.rtl .e-con.e-grid.e-con--row .elementor-widget-placeholder.e-dragging-left,body.rtl .e-con.e-grid.e-con--row>.e-con-inner .elementor-widget-placeholder.e-dragging-left{right:0;left:auto}@keyframes dnd-placeholder-widget-vertical{0%{transform-origin:0 50%;transform:translateX(50%) scaleX(0);opacity:0}to{transform-origin:0 50%;transform:translateX(50%) scaleX(1);opacity:.9}}@keyframes dnd-placeholder-widget-horizontal{0%{transform-origin:50% 0;transform:scaleY(0);opacity:0}to{transform-origin:50% 0;transform:scaleY(1);opacity:.9}}@keyframes grow-in-width{0%{width:0}50%{width:calc(var(--size) / 2)}to{width:var(--size)}}.e-con-select-preset{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:25px}.e-con-select-preset[data-view=choose-preset]>:not(.e-con-select-preset__inner),.e-con-select-preset[data-view=drop-area]>:not(.elementor-first-add){display:none}.e-con-select-preset__title{font-family:var(--e-a-font-family);font-size:15px;font-weight:400;color:var(--e-a-color-txt)}.e-con-select-preset__list{display:flex;gap:20px;align-items:center;justify-content:center;flex-wrap:wrap;max-width:650px}.e-con-select-preset__list .e-con-preset{cursor:pointer;flex-basis:90px}.e-con-select-preset__list .e-con-preset svg{width:100%;height:auto}.e-con-select-preset__list .e-con-preset path{fill:var(--e-a-color-white)}.e-con-select-preset__list .e-con-preset rect{fill:var(--e-a-bg-active-bold);transition:all .3s}.e-con-select-preset__list .e-con-preset:hover rect{fill:var(--e-a-color-txt)}.e-con-shared-styles{font-family:var(--e-a-font-family);line-height:1;color:var(--e-a-color-txt);min-height:159px;overflow:hidden;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:25px}.e-con-select-type__title{font-size:15px;font-weight:400}.e-con-select-type__icons{display:flex;justify-content:center;flex-wrap:wrap;gap:40px}.e-con-select-type__icons__icon{cursor:pointer}.e-con-select-type__icons__icon svg{margin-block-end:10px;width:85px}.e-con-select-type__icons__icon svg:hover rect{fill:var(--e-a-color-txt)}.e-con-select-type__icons__icon svg:hover path{stroke:var(--e-a-color-white)}.e-con-select-type__icons__icon__subtitle{font-size:14px;font-weight:500}.e-con-select-preset-grid__title{font-size:15px;font-weight:400}.e-con-select-preset-grid__list{display:flex;justify-content:center;flex-wrap:wrap;gap:20px}.e-con-select-preset-grid__list svg{cursor:pointer}.e-con-select-preset-grid__list svg:hover rect{fill:var(--e-a-color-txt)}.e-con-select-preset-grid__list svg:hover path{stroke:var(--e-a-color-white)}.e-con .ui-resizable-e{right:0}.e-con .ui-resizable-w{left:0} \ No newline at end of file diff --git a/wp-content/plugins/elementor/assets/css/editor-rtl.css b/wp-content/plugins/elementor/assets/css/editor-rtl.css new file mode 100644 index 0000000..c4a76cb --- /dev/null +++ b/wp-content/plugins/elementor/assets/css/editor-rtl.css @@ -0,0 +1,6401 @@ +/*! elementor - v3.20.0 - 26-03-2024 */ +.elementor-control-unit-1 { + width: 27px; +} + +.elementor-control-unit-2 { + width: 54px; +} + +.elementor-control-unit-3 { + width: 81px; +} + +.elementor-control-unit-4 { + width: 108px; +} + +.elementor-control-unit-5 { + max-width: 400px; + width: 52%; +} + +*, :before, :after { + margin: 0; + padding: 0; + box-sizing: border-box; +} + +body, +html { + height: 100%; +} + +html { + background-color: var(--e-a-bg-loading); +} + +iframe, +img { + border: 0 none; +} + +li { + list-style: none; +} + +a { + text-decoration: none; +} + +body { + background-color: var(--e-a-bg-default); + color: var(--e-a-color-txt); + font-family: var(--e-a-font-family); + font-size: 13px; + font-weight: normal; + line-height: 1; + text-decoration: none; + text-transform: none; + overflow: hidden; +} +body:after { + content: ""; + position: absolute; + top: 0; + left: 0; + height: 100%; + width: 0; + background-color: var(--e-a-bg-default); + transition: width 0.5s; +} +body a { + color: var(--e-a-color-info); +} +body a:hover { + color: var(--e-a-color-primary-bold); +} +body.elementor-editor-active #elementor-mode-switcher-preview .eicon:before { + content: "\e89e"; +} +body.elementor-editor-preview { + --e-preview-width: 100%; +} +body.elementor-editor-preview #elementor-mode-switcher-preview .eicon:before { + content: "\e89f"; +} +body.elementor-navigator--dock-hint:after { + width: 30px; +} + +#elementor-editor-wrapper { + display: flex; + width: 100%; + height: 100vh; +} + +#elementor-panel:not(.ui-resizable-resizing), +#elementor-preview:not(.ui-resizable-resizing) { + transition: margin 0.5s ease-in-out, width 0.5s ease-in-out; +} + +#elementor-loading { + position: fixed; + top: 0; + left: 0; + bottom: 0; + right: 0; + background: var(--e-a-bg-default); + z-index: 9999; +} + +#elementor-preview-loading { + display: flex; + align-items: center; + justify-content: center; + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + background-color: var(--e-a-bg-default); +} +#elementor-preview-loading i { + color: var(--e-a-color-txt-disabled); + font-size: 50px; +} + +.elementor-nerd-box { + padding: 30px; + text-align: center; +} +.elementor-nerd-box-icon { + width: 100px; +} +.elementor-nerd-box-title { + margin-block-start: 20px; + font-size: 16px; + font-weight: bold; + line-height: 1.4; +} +.elementor-nerd-box-message { + margin-block-start: 5px; + line-height: 1.8; + font-size: 11px; +} +.elementor-nerd-box .elementor-button { + margin-block-start: 20px; +} +.elementor-nerd-box--upsale { + padding: 15px 30px 30px; +} +.elementor-nerd-box--upsale .elementor-nerd-box-title { + font-weight: 500; + line-height: 1.2; +} +.elementor-nerd-box--upsale .elementor-nerd-box-message { + line-height: 1.5; +} + +.eicon-nerd:hover:before { + content: "\e8b7"; +} +.eicon-nerd:active:before { + content: "\e8b6"; +} + +.e-group-control-header { + display: flex; + justify-content: space-between; + align-items: center; + font-weight: bold; + font-size: 12px; + padding: 10px; + box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1); + margin-block-end: 15px; +} + +.e-control-tools { + display: flex; +} + +.e-control-tool { + width: 20px; + height: 20px; + display: inline-flex; + border-radius: 3px; + margin: 0 3px 0; + border: 0; + position: relative; + background-color: var(--e-a-bg-default); +} +.e-control-tool:not(.e-control-tool-disabled) { + box-shadow: 0 1px 5px rgba(0, 0, 0, 0.1); + cursor: pointer; +} +.e-control-tool-disabled { + background: var(--e-a-bg-default); + pointer-events: none; +} +.e-control-tool-disabled i { + color: var(--e-a-color-txt-disabled); +} +.e-control-tool i { + position: absolute; + top: 50%; + left: 50%; + transform: translateX(-50%) translateY(-50%); + color: var(--e-a-color-txt-default); + font-size: 13px; +} + +i.eicon-tilted { + transform: rotate(90deg); +} + +.elementor-loader-wrapper { + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + width: 300px; + display: flex; + flex-direction: column; + align-items: center; + gap: 30px; +} + +.elementor-loader { + border-radius: 50%; + padding: 40px; + height: 150px; + width: 150px; + background-color: var(--e-a-bg-active); + box-sizing: border-box; + box-shadow: 2px 2px 20px 4px rgba(0, 0, 0, 0.02); +} + +.elementor-loader-boxes { + height: 100%; + width: 100%; + position: relative; +} + +.elementor-loader-box { + position: absolute; + background-color: var(--e-a-color-txt-hover); + animation: load 1.8s linear infinite; +} +.elementor-loader-box:nth-of-type(1) { + width: 20%; + height: 100%; + left: 0; + top: 0; +} +.elementor-loader-box:not(:nth-of-type(1)) { + right: 0; + height: 20%; + width: 60%; +} +.elementor-loader-box:nth-of-type(2) { + top: 0; + animation-delay: calc(1.8s / 4 * -1); +} +.elementor-loader-box:nth-of-type(3) { + top: 40%; + animation-delay: calc(1.8s / 4 * -2); +} +.elementor-loader-box:nth-of-type(4) { + bottom: 0; + animation-delay: calc(1.8s / 4 * -3); +} + +.elementor-loading-title { + color: var(--e-a-color-txt); + text-align: center; + text-transform: uppercase; + letter-spacing: 7px; + text-indent: 7px; + font-size: 10px; + width: 100%; +} + +input, +select, +textarea, +.e-input-style { + color: var(--e-a-color-txt); + border-radius: var(--e-a-border-radius); + font-size: 12px; + width: 100%; + background: none; + background-color: var(--e-a-bg-default); + box-shadow: none; + border: var(--e-a-border-bold); + outline: none; +} +input:focus, input:focus + .elementor-control-dynamic-switcher, +select:focus, +select:focus + .elementor-control-dynamic-switcher, +textarea:focus, +textarea:focus + .elementor-control-dynamic-switcher, +.e-input-style:focus, +.e-input-style:focus + .elementor-control-dynamic-switcher { + border-color: var(--e-a-border-color-focus); +} + +.elementor-error input, +.elementor-error select, +.elementor-error textarea { + border-color: var(--e-a-color-danger); +} + +input { + min-width: 0; +} + +input, textarea, .e-input-style { + padding: 5px; +} + +textarea, .e-input-style { + resize: vertical; +} + +input[type=checkbox], +input[type=radio] { + height: auto; + width: auto; +} + +input[type=checkbox] { + margin: 0; + padding: 0; + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + outline: none; + content: none; + height: 15px; + border-radius: var(--e-a-border-radius); + margin-inline-end: 5px; + width: 15px; + border: var(--e-a-border-bold); + display: inline-flex; + align-items: center; + justify-content: center; +} +input[type=checkbox]:checked { + background: var(--e-a-color-primary-bold); + border: none; +} +input[type=checkbox]:checked:before { + display: block; + content: ""; + width: 4px; + height: 7px; + border: solid white; + border-width: 0 2px 2px 0; + transform: rotate(45deg); +} + +input[disabled] { + background-color: var(--e-a-bg-hover); + cursor: not-allowed; + opacity: 1; +} + +select { + outline: none; + height: 27px; +} + +/* + * Container style + */ +.ps { + overflow: hidden !important; + overflow-anchor: none; + touch-action: auto; +} + +/* + * Scrollbar rail styles + */ +.ps__rail-y { + display: none; + opacity: 0; + transition: background-color 0.2s linear, opacity 0.2s linear; + width: 15px; + /* there must be 'right' or 'left' for ps__rail-y */ + right: 0; + left: initial !important; + /* please don't change 'position' */ + position: absolute; +} + +.ps--active-y > .ps__rail-y { + display: block; + background-color: transparent; +} + +.ps:hover > .ps__rail-y, +.ps--focus > .ps__rail-y, +.ps--scrolling-y > .ps__rail-y { + opacity: 0.6; +} + +.ps .ps__rail-y:hover, +.ps .ps__rail-y:focus, +.ps .ps__rail-y.ps--clicking { + opacity: 0.9; +} + +.ps__thumb-y { + background-color: #aaa; + border-radius: 6px; + transition: background-color 0.2s linear, width 0.2s ease-in-out; + width: 6px; + /* there must be 'right' for ps__thumb-y */ + right: 2px; + /* please don't change 'position' */ + position: absolute; +} + +.ps__rail-y:hover > .ps__thumb-y, +.ps__rail-y:focus > .ps__thumb-y, +.ps__rail-y.ps--clicking .ps__thumb-y { + background-color: #999; + width: 6px; +} + +/* Make clicks pass-through */ +#nprogress { + pointer-events: none; +} + +#nprogress .bar { + background: #D004D4; + position: fixed; + z-index: 1031; + top: 0; + left: 0; + width: 100%; + height: 2px; +} + +/* Fancy blur effect */ +#nprogress .peg { + display: block; + position: absolute; + right: 0; + width: 100px; + height: 100%; + box-shadow: 0 0 10px #D004D4, 0 0 5px #D004D4; + opacity: 1; + transform: rotate(3deg) translate(0px, -4px); +} + +/* Remove these to get rid of the spinner */ +#nprogress .spinner { + display: none; + position: fixed; + z-index: 1031; + top: 15px; + right: 15px; +} + +#nprogress .spinner-icon { + width: 18px; + height: 18px; + box-sizing: border-box; + border: solid 2px transparent; + border-block-start-color: #D004D4; + border-inline-start-color: #D004D4; + border-radius: 50%; + animation: nprogress-spinner 400ms linear infinite; +} + +.nprogress-custom-parent { + overflow: hidden; + position: relative; +} + +.nprogress-custom-parent #nprogress .spinner, +.nprogress-custom-parent #nprogress .bar { + position: absolute; +} + +@keyframes nprogress-spinner { + 0% { + transform: rotate(0deg); + } + 100% { + transform: rotate(360deg); + } +} +#nprogress .bar, +#nprogress .spinner { + z-index: 100000; +} + +:root { + --e-is-preview-mode: 0; +} +@media (max-width: 1439px) { + :root { + --e-editor-panel-width: 280px; + } +} +@media (min-width: 1440px) { + :root { + --e-editor-panel-width: 300px; + } +} + +.elementor-panel { + position: relative; + height: 100%; + margin-inline-start: calc(-1 * var(--e-editor-panel-width) * var(--e-is-preview-mode)); + width: var(--e-editor-panel-width); + overflow: visible; + background-color: var(--e-a-bg-default); + z-index: 1; + font-family: var(--e-a-font-family); + font-size: 13px; + right: 0; +} +.elementor-panel h1, +.elementor-panel h2, +.elementor-panel h3, +.elementor-panel h4, +.elementor-panel h5, +.elementor-panel h6 { + font-size: 100%; + font-weight: normal; +} +.elementor-panel abbr, +.elementor-panel acronym { + border: 0; + font-variant: normal; +} +.elementor-panel sup { + vertical-align: text-top; +} +.elementor-panel sub { + vertical-align: text-bottom; +} +.elementor-panel img { + max-width: 100%; + height: auto; + border: 0; +} +.elementor-panel :focus { + outline: 0; +} +.elementor-panel .elementor-panel-box-content { + padding: 20px 20px 10px; +} +.elementor-panel .elementor-button { + display: inline-block; +} +.elementor-panel .elementor-panel-alert { + background-color: var(--e-a-bg-primary); + padding: 15px; + border-inline-start: 3px solid var(--e-a-color-primary); + position: relative; + font-size: 12px; + font-weight: 300; + font-style: italic; + line-height: 1.5; + text-align: start; + border-start-start-radius: 0; + border-start-end-radius: 3px; + border-end-start-radius: 0; + border-end-end-radius: 3px; +} +.elementor-panel .elementor-panel-alert a { + color: inherit; +} +.elementor-panel .elementor-panel-alert.elementor-panel-alert-info { + border-color: var(--e-a-color-info); + background: var(--e-a-bg-info); +} +.elementor-panel .elementor-panel-alert.elementor-panel-alert-success { + border-color: var(--e-a-color-success); + background: var(--e-a-bg-success); +} +.elementor-panel .elementor-panel-alert.elementor-panel-alert-warning { + border-inline-start: 3px solid var(--e-a-color-warning); + background: var(--e-a-bg-warning); +} +.elementor-panel .elementor-panel-alert.elementor-panel-alert-danger { + border-color: var(--e-a-color-danger); + background: var(--e-a-bg-danger); +} +.elementor-panel .elementor-descriptor, .elementor-panel .elementor-control-field-description { + font-size: 11px; + font-style: italic; + line-height: 1.4; + color: var(--e-a-color-txt-muted); +} +.elementor-panel .elementor-controls-popover { + display: none; + position: absolute; + box-shadow: var(--e-a-popover-shadow); + border-radius: var(--e-a-border-radius); + left: 0; + right: 0; + margin: -4px auto 5px; + padding-block-start: 15px; + width: 90%; + z-index: 10000; + background-color: var(--e-a-bg-default); +} +.elementor-panel .elementor-controls-popover:before { + content: ""; + position: absolute; + top: -16px; + left: 22px; + border: 8px solid transparent; + border-block-end-color: var(--e-a-bg-default); +} +.elementor-panel .elementor-controls-popover div.elementor-control { + background-color: transparent; +} +.elementor-panel .elementor-controls-popover div.elementor-control:before { + content: none; +} +.elementor-panel #elementor-panel-global .elementor-nerd-box .elementor-nerd-box-icon { + margin-block-start: 20px; +} +.elementor-editor-preview .elementor-panel { + --e-is-preview-mode: 1; +} +.elementor-editor-preview .elementor-panel > .ui-resizable-e, +.elementor-editor-preview .elementor-panel > .ui-resizable-w { + display: none; +} +.elementor-editor-preview .elementor-panel #elementor-panel-elements-wrapper { + display: flex; + flex-direction: column; +} +.elementor-panel .ps__rail-y { + z-index: 2; +} +.elementor-panel .elementor-responsive-panel { + padding: 0 15px; + display: grid; + gap: 10px; + grid-template-columns: repeat(auto-fill, minmax(min(135px, 50% - 5px), 1fr)); +} +.elementor-panel .elementor-responsive-panel > .e-responsive-panel-stretch { + grid-column: 1/-1; +} +.elementor-panel #elementor-panel-header { + display: flex; + align-items: center; + justify-content: space-between; + height: 40px; + width: 100%; + background-color: var(--e-a-dark-bg); + color: var(--e-a-color-white); +} +.elementor-panel #elementor-panel-header > * { + display: flex; + align-items: center; + justify-content: center; +} +.elementor-panel .elementor-header-button { + width: 40px; + border: 0; + color: currentColor; + background-color: transparent; +} +.elementor-panel .elementor-header-button .elementor-icon { + cursor: pointer; + display: block; + font-size: 19px; + height: 40px; + line-height: 40px; + transition: var(--e-a-transition-hover); +} +.elementor-panel .elementor-header-button .elementor-icon.eicon-menu-bar { + font-size: 18px; +} +.elementor-panel .elementor-header-button:hover, .elementor-panel .elementor-header-button:focus { + color: var(--e-a-dark-color-txt-hover); +} +.elementor-panel #elementor-panel-header-title { + flex: 1; + font-size: 15px; + font-weight: 700; +} +.elementor-panel #elementor-panel-header-title img { + width: 90px; +} +.elementor-panel #elementor-panel-elements-categories { + padding-block-end: 10px; + position: relative; +} +.elementor-panel .elementor-panel-category { + position: relative; + border-block-end: var(--e-a-border); +} +.elementor-panel .elementor-panel-category .elementor-panel-heading { + padding: 0 15px; + border: none; + background-color: transparent; +} +.elementor-panel .elementor-panel-category.elementor-active .elementor-panel-heading { + border: none; +} +.elementor-panel .elementor-panel-category-items { + padding-block-end: 20px; +} +.elementor-panel .elementor-panel-category-items-empty { + grid-column-start: 1; + grid-column-end: 3; +} +.elementor-panel #elementor-panel-page-menu { + padding: 25px 15px; +} +.elementor-panel .elementor-panel-menu-group-title { + text-transform: uppercase; + font-size: 11px; +} +.elementor-panel .elementor-panel-menu-items { + border: var(--e-a-border); + margin: 15px 0 25px; + border-radius: 5px; + overflow: hidden; +} +.elementor-panel .elementor-panel-menu-item { + display: flex; + align-items: center; + width: 100%; + height: 40px; + transition: var(--e-a-transition-hover); + border: 0; + background-color: transparent; + cursor: pointer; +} +.elementor-panel .elementor-panel-menu-item:not(:last-child) { + border-block-end: var(--e-a-border); +} +.elementor-panel .elementor-panel-menu-item:hover, .elementor-panel .elementor-panel-menu-item:focus { + background-color: var(--e-a-bg-hover); +} +.elementor-panel .elementor-panel-menu-item:active { + background-color: var(--e-a-bg-active); + color: var(--e-a-color-txt-accent); +} +.elementor-panel .elementor-panel-menu-item-icon { + text-align: center; + width: 30px; + flex-shrink: 0; + padding: 10px 0; + margin: 0 10px; + font-size: 19px; +} +.elementor-panel .elementor-panel-menu-item-title { + display: flex; + flex-grow: 1; + font-weight: 500; + justify-content: space-between; +} +.elementor-panel .elementor-panel-menu-item-title-badge { + margin: 0 10px; + background: var(--e-a-color-white); + border-radius: var(--e-a-border-radius); +} +.elementor-panel .elementor-panel-menu-item-title > span { + color: var(--e-a-color-accent); +} +.elementor-panel .elementor-panel-menu-item a { + display: flex; + align-items: center; + color: inherit; + width: 100%; + height: 100%; + padding-inline-start: 10px; + padding: 10px 0; +} +.elementor-panel .elementor-control.elementor-control-clear_page { + background-color: transparent; +} +.elementor-panel .elementor-control.elementor-control-clear_page .elementor-control-raw-html { + display: flex; + align-items: center; + justify-content: space-between; +} +.elementor-panel .elementor-panel-navigation { + display: flex; + width: 100%; + border-block-end: var(--e-a-border); +} +.elementor-panel .elementor-panel-navigation .elementor-panel-navigation-tab { + all: unset; + flex: auto; + transition: var(--e-a-transition-hover); + border-block-end: 3px solid transparent; + cursor: pointer; +} +.elementor-panel .elementor-panel-navigation .elementor-panel-navigation-tab:hover, .elementor-panel .elementor-panel-navigation .elementor-panel-navigation-tab:focus { + background-color: var(--e-a-bg-hover); +} +.elementor-panel .elementor-panel-navigation .elementor-panel-navigation-tab:focus { + outline: 0; +} +.elementor-panel .elementor-panel-navigation .elementor-panel-navigation-tab.elementor-active { + border-color: var(--e-a-border-color-accent); + color: var(--e-a-color-txt-accent); +} +.elementor-panel .elementor-panel-navigation .elementor-panel-navigation-tab.elementor-active a, +.elementor-panel .elementor-panel-navigation .elementor-panel-navigation-tab.elementor-active span { + color: var(--e-a-color-txt-accent); +} +.elementor-panel .elementor-panel-navigation .elementor-panel-navigation-tab a, +.elementor-panel .elementor-panel-navigation .elementor-panel-navigation-tab span { + color: inherit; + display: block; + text-align: center; + padding: 12px 0 8px; + font-size: 10px; +} +.elementor-panel .elementor-panel-navigation .elementor-panel-navigation-tab a:before, +.elementor-panel .elementor-panel-navigation .elementor-panel-navigation-tab span:before { + font-family: eicons; + font-size: 16px; + display: block; + margin-block-end: 8px; +} +.elementor-panel .elementor-tab-control-content a:before, +.elementor-panel .elementor-tab-control-content span:before { + content: "\e92c"; +} +.elementor-panel .elementor-tab-control-style a:before, +.elementor-panel .elementor-tab-control-style span:before { + content: "\e921"; +} +.elementor-panel .elementor-tab-control-advanced a:before, +.elementor-panel .elementor-tab-control-advanced span:before, +.elementor-panel .elementor-tab-control-settings a:before, +.elementor-panel .elementor-tab-control-settings span:before, +.elementor-panel .elementor-tab-control-general_style a:before, +.elementor-panel .elementor-tab-control-general_style span:before { + content: "\e916"; +} +.elementor-panel .elementor-tab-control-responsive a:before, +.elementor-panel .elementor-tab-control-responsive span:before { + content: "\e885"; +} +.elementor-panel .elementor-tab-control-lightbox a:before, +.elementor-panel .elementor-tab-control-lightbox span:before { + content: "\e922"; +} +.elementor-panel .elementor-tab-control-layout a:before, +.elementor-panel .elementor-tab-control-layout span:before, +.elementor-panel .elementor-tab-control-column a:before, +.elementor-panel .elementor-tab-control-column span:before { + content: "\e899"; +} +.elementor-panel #elementor-panel__editor__help { + padding: 50px 25px; + display: flex; + align-items: center; + justify-content: center; +} +.elementor-panel #elementor-panel__editor__help__link { + display: inline-flex; + align-items: center; + justify-content: center; + font-size: 85%; + line-height: 2; + padding-inline-start: 5px; + color: inherit; + font-weight: 500; + transition: var(--e-a-transition-hover); +} +.elementor-panel #elementor-panel__editor__help__link:hover, .elementor-panel #elementor-panel__editor__help__link:focus { + color: var(--e-a-color-info); +} +.elementor-panel #elementor-panel__editor__help__link i { + padding: 0 5px; + font-size: 125%; + position: relative; +} +.elementor-panel #elementor-panel__editor__help__link i:after { + content: ""; + position: absolute; + height: 13px; + width: 13px; + top: 3px; + bottom: 0; + right: 8px; + left: 0; + border-radius: 50%; + z-index: -1; +} +.elementor-panel #elementor-panel-footer { + position: relative; + height: 40px; + background-color: var(--e-a-dark-bg); + color: var(--e-a-dark-color-txt); +} +.elementor-panel #elementor-panel-footer-tools { + display: flex; + justify-content: space-between; + height: 100%; +} +.elementor-panel .elementor-panel-footer-tool { + display: flex; + align-items: center; + justify-content: center; + width: 15%; + cursor: pointer; + transition: var(--e-a-transition-hover); + border: 0; + color: currentColor; + background-color: transparent; +} +.elementor-panel .elementor-panel-footer-tool i { + font-size: 15px; +} +.elementor-panel .elementor-panel-footer-tool #elementor-panel-saver-button-save-options i.eicon-chevron-right { + margin: auto; + transform: rotate(270deg); +} +.elementor-panel .elementor-panel-footer-tool #elementor-panel-saver-button-save-options.elementor-disabled { + cursor: inherit; +} +.elementor-panel .elementor-panel-footer-tool:not(.e-open):hover, .elementor-panel .elementor-panel-footer-tool:not(.e-open):focus { + color: var(--e-a-dark-color-txt-hover); +} +.elementor-panel .elementor-panel-footer-tool:not(.e-open) .elementor-panel-footer-sub-menu-wrapper { + display: none; +} +.elementor-panel #elementor-panel-footer-saver-publish { + width: 30%; + margin-inline-start: auto; +} +.elementor-panel #elementor-panel-footer-saver-publish .elementor-button-state i { + margin-inline-end: 0; +} +.elementor-panel #elementor-panel-footer-saver-publish .elementor-button-state #elementor-panel-saver-button-publish-label { + display: none; +} +.elementor-panel #elementor-panel-footer-saver-options { + width: 10%; +} +.elementor-panel #elementor-panel-footer-saver-options .elementor-last-edited-wrapper { + font-size: 11px; + font-style: italic; + padding: 5px 0 15px; +} +.elementor-panel #elementor-panel-footer-saver-options .elementor-last-edited-wrapper:not(.elementor-state-active) .elementor-state-icon { + display: none; +} +.elementor-panel #elementor-panel-footer-saver-options .elementor-last-edited-wrapper time { + border-block-end: 1px dotted transparent; + transition: all ease-in-out 0.3s; + cursor: pointer; +} +.elementor-panel #elementor-panel-footer-saver-options .elementor-last-edited-wrapper time:hover { + border-block-end-color: inherit; +} +.elementor-panel #elementor-panel-footer-saver-options.e-open i.eicon-chevron-right { + transform: rotate(90deg); +} +.elementor-panel #elementor-panel-saver-button-publish, .elementor-panel #elementor-panel-saver-button-save-options { + padding: 0; + font-size: 11px; + height: 100%; + width: 100%; + border-radius: 0; +} +.elementor-panel #elementor-panel-saver-button-publish.elementor-disabled, .elementor-panel #elementor-panel-saver-button-save-options.elementor-disabled { + background-color: #1f2124; + color: #9DA5AE; +} +.elementor-panel #elementor-panel-saver-button-publish:not(.elementor-disabled) { + border-inline-end: 1px solid #F0ABFC; +} +.elementor-panel #elementor-panel-saver-button-publish.elementor-disabled { + border-inline-end: 1px solid #3f444b; +} +.elementor-panel .elementor-panel-footer-sub-menu-wrapper { + position: absolute; + bottom: 100%; + left: 0; + width: 100%; + background-color: #1f2124; + padding: 10px; + box-shadow: -2px -5px 8px rgba(0, 0, 0, 0.1); + cursor: default; + z-index: 10000; +} +.elementor-panel .elementor-panel-footer-sub-menu { + border-radius: var(--e-border-radius); + overflow: hidden; + border: 1px solid #3f444b; +} +.elementor-panel .elementor-panel-footer-sub-menu-item { + display: flex; + height: 40px; + color: #D5D8DC; + align-items: center; + -moz-column-gap: 10px; + column-gap: 10px; + padding: 0 20px; + transition: var(--e-a-transition-hover); + cursor: pointer; +} +.elementor-panel .elementor-panel-footer-sub-menu-item.elementor-disabled { + cursor: default; + color: #69727D; +} +.elementor-panel .elementor-panel-footer-sub-menu-item:not(:last-child) { + border-block-end: 1px solid #3f444b; +} +.elementor-panel .elementor-panel-footer-sub-menu-item:hover { + background-color: rgba(255, 255, 255, 0.1); +} +.elementor-panel .elementor-panel-footer-sub-menu-item.active { + background-color: rgba(255, 255, 255, 0.2); +} + +#elementor-panel-elements-navigation .elementor-panel-navigation-tab { + text-align: center; + padding: 10px 0; + font-size: 12px; + cursor: pointer; +} + +#elementor-panel-elements { + overflow: hidden; +} + +#elementor-panel-state-loading { + display: none; +} +body.elementor-panel-loading #elementor-panel-state-loading { + position: absolute; + top: 0; + left: 0; + height: 100%; + width: 100%; + display: flex; + align-items: center; + justify-content: center; + background-color: rgba(255, 255, 255, 0.5); + z-index: 2; +} +#elementor-panel-state-loading .eicon-loading { + font-size: 25px; + color: var(--e-a-color-txt-accent); +} + +#elementor-panel-elements-search-area { + background-color: var(--e-a-bg-default); + position: sticky; + top: 0; + padding: 15px; + z-index: 1; +} + +#elementor-panel-elements-search-wrapper { + position: relative; +} + +#elementor-panel-elements-search-input { + font-size: 11px; + padding-block: 10px; + padding-inline: 29px 10px; + font-style: italic; + border: var(--e-a-border-bold); + border-radius: 0; + transition: all 1s; + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; +} +#elementor-panel-elements-search-input + i { + position: absolute; + right: 10px; + top: 50%; + color: var(--e-a-color-txt-disabled); + transform: translateY(-50%); +} +#elementor-panel-elements-search-input:focus { + border-color: var(--e-a-border-color-focus); + padding-inline-end: 15px; +} + +.elementor-panel .elementor-element { + font-family: var(--e-a-font-family); + color: var(--e-a-color-txt); + line-height: 1; + text-align: center; + border: var(--e-a-border-bold); + border-radius: 3px; + cursor: move; + position: relative; + transition: var(--e-a-transition-hover); + width: 100%; + background-color: transparent; +} +.elementor-panel .elementor-element--promotion .elementor-element { + cursor: pointer; + -webkit-user-select: none; + -moz-user-select: none; + user-select: none; +} +.elementor-panel .elementor-element:hover, .elementor-panel .elementor-element:focus { + background-color: var(--e-a-bg-hover); + border-color: var(--e-a-border-color-bold); +} +.elementor-panel .elementor-element:hover > .eicon-lock, .elementor-panel .elementor-element:focus > .eicon-lock { + color: var(--e-a-color-accent); +} +.elementor-panel .elementor-element .icon { + font-size: 28px; + padding-block-start: 15px; +} +.elementor-panel .elementor-element .title-wrapper { + display: flex; + height: 40px; + align-items: center; + justify-content: center; +} +.elementor-panel .elementor-element .title { + font-size: 12px; +} +.elementor-panel .elementor-element > .eicon-lock { + position: absolute; + top: 5px; + left: 5px; + color: var(--e-a-color-txt-disabled); +} +.elementor-panel .elementor-element:active { + background-color: var(--e-a-bg-hover); + border-color: var(--e-a-border-color-accent); + color: var(--e-a-color-txt-accent); +} + +#elementor-element--promotion__dialog { + position: absolute; + width: 300px; + z-index: 1; + background-color: var(--e-a-bg-default); + box-shadow: var(--e-a-popover-shadow); + border-radius: var(--e-a-border-radius); +} +#elementor-element--promotion__dialog:after { + content: ""; + position: absolute; + top: 15px; + left: 100%; + transform: scaleY(0.7); + border: 10px solid transparent; + border-inline-end-color: var(--e-a-bg-default); +} +#elementor-element--promotion__dialog__title { + font-size: 14px; +} +#elementor-element--promotion__dialog .dialog-header { + display: flex; + padding: 20px; + border-block-end: var(--e-a-border); + font-weight: 500; +} +#elementor-element--promotion__dialog .dialog-header .eicon-pro-icon { + flex-grow: 1; + margin-inline-start: 10px; + font-size: 14px; + color: var(--e-a-color-accent); +} +#elementor-element--promotion__dialog .dialog-header .eicon-close { + cursor: pointer; + color: var(--e-a-color-txt-disabled); +} +#elementor-element--promotion__dialog .dialog-header .eicon-close:hover { + color: var(--e-a-color-txt-muted); +} +#elementor-element--promotion__dialog .dialog-message { + padding: 20px; +} +#elementor-element--promotion__dialog .dialog-buttons-wrapper { + padding: 0 20px 20px; +} +#elementor-element--promotion__dialog .dialog-button { + padding: 7px 25px; + font-size: 12px; +} + +.dialog-tooltip-widget { + position: absolute; + width: 300px; + z-index: 1; + background-color: #ffffff; + box-shadow: 0 2px 15px rgba(0, 0, 0, 0.3); + border-radius: 3px; +} +.dialog-tooltip-widget:after { + content: ""; + position: absolute; + top: 15px; + left: 100%; + transform: scaleY(0.7); + border: 10px solid transparent; + border-inline-end-color: #ffffff; +} +.dialog-tooltip-widget__title { + font-size: 14px; +} +.dialog-tooltip-widget .dialog-tooltip-header { + display: flex; + padding: 20px 20px 0; + color: #0C0D0E; + border-block-end: 1px solid #ffffff; + font-weight: 500; +} +.dialog-tooltip-widget .dialog-tooltip-header .eicon-pro-icon { + flex-grow: 1; + margin-inline-start: 10px; + font-size: 14px; + color: #93003f; +} +.dialog-tooltip-widget .dialog-tooltip-header .eicon-close { + cursor: pointer; + margin-inline-start: auto; + color: #9DA5AE; +} +.dialog-tooltip-widget .dialog-tooltip-message { + padding: 20px; +} +.dialog-tooltip-widget .dialog-tooltip-buttons-wrapper { + padding: 0 20px 20px 20px; + text-align: end; +} +.dialog-tooltip-widget .dialog-tooltip-button { + padding: 7px 25px; + font-size: 12px; +} +.dialog-tooltip-widget .dialog-tooltip-button::-moz-focus-inner { + border: 0; +} + +#elementor-panel-inner { + position: relative; + height: 100%; + display: flex; + flex-direction: column; + box-shadow: 0 0 5px 0 rgba(0, 0, 0, 0.1); +} + +#elementor-panel-content-wrapper { + position: relative; + width: 100%; + flex: 1; +} + +.elementor-panel-container { + clear: both; + padding-inline-start: 15px; + padding-inline-end: 15px; +} + +#elementor-panel-get-pro-elements .elementor-nerd-box-message { + margin-block-start: 10px; +} +#elementor-panel-get-pro-elements .elementor-nerd-box-icon { + margin-block-start: 20px; +} + +#elementor-panel-get-pro-elements-sticky { + position: sticky; + bottom: 0; + font-size: 14px; + font-weight: 400; + line-height: 1.6; + margin-block-end: -10px; +} +#elementor-panel-get-pro-elements-sticky .elementor-get-pro-sticky-message { + margin-top: -14px; + min-height: 40px; + display: block; + padding: 9px min(35px, 5%); + gap: 10px; + background-color: var(--e-a-color-white); + color: var(--e-a-color-black); + text-align: center; + box-shadow: 0px -10px 14px -6px rgba(0, 0, 0, 0.05); +} +#elementor-panel-get-pro-elements-sticky .elementor-get-pro-sticky-message a { + display: inline-block; + font-size: 13px; + font-weight: 500; + color: var(--e-a-btn-bg-accent); +} +#elementor-panel-get-pro-elements-sticky img { + margin-left: 17px; +} + +#elementor-panel-notice-wrapper .elementor-panel-notice { + width: 90%; + margin: 0 auto; + font-style: unset; + margin-block-end: 15px; +} +#elementor-panel-notice-wrapper .elementor-panel-notice a { + font-weight: bold; + font-style: italic; + border-block-end: 2px dotted var(--e-a-color-info); + display: inline-block; +} + +body.e-has-notification:not(.e-route-panel-menu) #elementor-panel-header-menu-button, +body.e-has-notification .elementor-panel-menu-item.elementor-panel-menu-item-notification-center .elementor-panel-menu-item-icon { + position: relative; +} +body.e-has-notification:not(.e-route-panel-menu) #elementor-panel-header-menu-button:after, +body.e-has-notification .elementor-panel-menu-item.elementor-panel-menu-item-notification-center .elementor-panel-menu-item-icon:after { + position: absolute; + content: ""; + display: block; + background: var(--e-a-color-primary); + border-radius: 50%; + width: 8px; + height: 8px; + top: 5px; + right: 5px; +} + +.media-modal.wp-core-ui { + color-scheme: light; + color: #515962; +} +.media-modal.wp-core-ui select { + width: initial; + padding-inline: 8px; +} +.media-modal.wp-core-ui fieldset { + padding: 0; + border: 0; +} + +.elementor-control { + --control-title-size: 12px; + position: relative; + padding: 0 20px 15px; +} +.elementor-control a { + font-weight: 500; + text-decoration: none; + border-block-end: 1px dotted transparent; + transition: all ease-in-out 0.3s; +} +.elementor-control a:hover { + border-block-end-color: inherit; +} +.elementor-control .elementor-control-content { + display: flex; + flex-direction: column; +} +.elementor-control .elementor-control-title { + font-size: var(--control-title-size); + line-height: 1; + margin-inline-end: 5px; +} +.elementor-control .elementor-control-title:empty { + display: none; +} +.elementor-control .elementor-control-spinner { + display: flex; + align-items: center; +} +.elementor-control.elementor-control-type-divider { + padding: 0; +} +.elementor-control.elementor-control-type-divider .elementor-control-content { + border-width: 0; + border-block-start: var(--e-a-border); + background-color: var(--e-a-bg-default); + height: 15px; +} +.elementor-control.elementor-control-separator-before { + padding-block-start: 15px; +} +.elementor-control.elementor-control-separator-before:before { + content: ""; + position: absolute; + height: 1px; + width: calc(100% - 40px); + top: 0; + right: 20px; + background-color: var(--e-a-border-color); +} +.elementor-control.elementor-control-separator-after:after { + content: ""; + position: absolute; + height: 1px; + width: calc(100% - 40px); + bottom: 0; + right: 20px; + background-color: var(--e-a-border-color); +} +.elementor-control.elementor-control-separator-after + .elementor-control-type-tabs ~ .elementor-control-separator-default, .elementor-control.elementor-control-separator-after:not(.elementor-hidden-control) ~ .elementor-control-separator-default { + padding-block-start: 15px; +} +.elementor-control.elementor-control-deprecated { + color: var(--e-a-color-warning); +} +.elementor-control.elementor-control-deprecated .elementor-control-field-description { + color: var(--e-a-color-warning); +} +.elementor-control.elementor-control-hidden-label > * > .elementor-control-title, .elementor-control.elementor-control-hidden-label > * > * > .elementor-control-title { + display: none; +} +.elementor-control.elementor-hidden-control { + display: none; +} +.elementor-control.elementor-control-type-heading .elementor-control-title { + font-weight: bold; + margin: 0; +} +body:not(.elementor-device-widescreen) .elementor-control.elementor-control-responsive-widescreen { + display: none; +} +body:not(.elementor-device-desktop) .elementor-control.elementor-control-responsive-desktop { + display: none; +} +body:not(.elementor-device-laptop) .elementor-control.elementor-control-responsive-laptop { + display: none; +} +body:not(.elementor-device-tablet_extra) .elementor-control.elementor-control-responsive-tablet_extra { + display: none; +} +body:not(.elementor-device-tablet) .elementor-control.elementor-control-responsive-tablet { + display: none; +} +body:not(.elementor-device-mobile_extra) .elementor-control.elementor-control-responsive-mobile_extra { + display: none; +} +body:not(.elementor-device-mobile) .elementor-control.elementor-control-responsive-mobile { + display: none; +} +.elementor-control-custom_css_pro .elementor-nerd-box-message, .elementor-control-custom_attributes_pro .elementor-nerd-box-message { + margin-block-start: 5px; +} + +.elementor-control.e-open .elementor-panel-heading-toggle .eicon:before, .elementor-control.elementor-active .elementor-panel-heading-toggle .eicon:before, +.elementor-panel-category.e-open .elementor-panel-heading-toggle .eicon:before, +.elementor-panel-category.elementor-active .elementor-panel-heading-toggle .eicon:before, +.elementor-panel-scheme-item.e-open .elementor-panel-heading-toggle .eicon:before, +.elementor-panel-scheme-item.elementor-active .elementor-panel-heading-toggle .eicon:before { + content: "\e92a"; +} +.elementor-control:not(.e-open):not(.elementor-active) .elementor-panel-heading-toggle .eicon:before, +.elementor-panel-category:not(.e-open):not(.elementor-active) .elementor-panel-heading-toggle .eicon:before, +.elementor-panel-scheme-item:not(.e-open):not(.elementor-active) .elementor-panel-heading-toggle .eicon:before { + content: "\e909"; +} + +.elementor-panel-heading { + display: flex; + align-items: center; + gap: 5px; + height: 48px; + padding-inline: 20px; + width: 100%; + border: 0; + border-block-start: var(--e-a-border); + border-block-start-width: 2px; + background-color: transparent; + color: var(--e-a-color-txt-accent); + cursor: pointer; +} +.elementor-panel-heading-toggle { + width: 10px; + display: flex; + flex-direction: column; + align-items: center; +} +.elementor-panel-heading-title { + font-weight: bold; +} +.elementor-panel-heading-promotion { + margin-inline-start: auto; +} +.elementor-panel-heading-promotion a { + color: var(--e-a-color-accent-promotion); + font-family: "Roboto", sans-serif; + font-weight: 500; + font-size: 13px; +} +.elementor-panel-heading-promotion a i { + margin-inline-end: 4px; + font-size: 14px; +} +.elementor-panel-heading-promotion a:hover { + color: var(--e-a-color-accent-promotion); +} +.elementor-panel-heading:focus-visible { + color: var(--e-a-color-txt-hover); +} + +#elementor-controls .elementor-control-type-section:first-child .elementor-panel-heading { + border-block-start: none; +} + +.elementor-control-field { + display: flex; + align-items: center; +} + +.elementor-label-block > .elementor-control-content > .elementor-control-field { + flex-wrap: wrap; +} +.elementor-label-block > .elementor-control-content > .elementor-control-field > .elementor-control-input-wrapper { + width: 100%; + max-width: 100%; + margin-block-start: 10px; +} +.elementor-label-block > .elementor-control-content > .elementor-control-field > .elementor-control-input-wrapper > .elementor-choices label { + width: auto; + flex: 1 1 27px; + display: flex; + align-items: center; + justify-content: center; +} +.elementor-label-block.elementor-control-hidden-label:not(.elementor-control-dynamic) > .elementor-control-content > .elementor-control-field > .elementor-control-input-wrapper { + margin-block-start: 0; +} +.elementor-label-block.elementor-control-hidden-label.elementor-label-block > .elementor-control-content > .elementor-control-field > .elementor-control-input-wrapper { + margin-block-start: 0; +} + +.elementor-label-inline > .elementor-control-content > .elementor-control-field > .elementor-control-title { + flex-shrink: 0; + max-width: 60%; +} +.elementor-label-inline > .elementor-control-content > .elementor-control-field > .elementor-control-input-wrapper { + margin-inline-start: auto; +} + +.elementor-control-field-description { + margin-block-start: 10px; +} + +.elementor-group-control-attachment_alert .elementor-control-field-description { + margin-block-start: 0; +} + +.elementor-control-start-end .eicon-h-align-left, +.elementor-control-start-end .eicon-h-align-right { + transform: rotate(180deg); +} + +.elementor-update-preview { + margin: 15px 15px 0; + display: flex; + align-items: center; +} + +.elementor-update-preview-button-wrapper { + flex-grow: 1; + text-align: end; +} + +.elementor-update-preview-button { + padding: 8px 15px; +} + +.elementor-control-direction-ltr input, +.elementor-control-direction-ltr textarea { + direction: ltr; +} +.elementor-control-direction-rtl input, +.elementor-control-direction-rtl textarea { + direction: rtl; +} + +.elementor-control-responsive-switchers { + --selected-option: 0; + --pointer-position: var(--selected-option); + position: relative; + width: 2.5em; + height: 2.5em; + margin: calc(-2.5em + 12px) 0; + margin-inline-end: 5px; +} +.elementor-control-responsive-switchers__holder { + position: absolute; + width: 100%; + top: 0; + background-color: var(--e-a-bg-default); + border-radius: var(--e-a-border-radius); + transition: 0.15s; + border: 1px solid transparent; +} +.elementor-control-responsive-switchers.elementor-responsive-switchers-open { + z-index: 11000; +} +.elementor-control-responsive-switchers.elementor-responsive-switchers-open .elementor-responsive-switcher { + height: 2.5em; + transform: scale(1); + opacity: 1; +} +.elementor-control-responsive-switchers.elementor-responsive-switchers-open .elementor-responsive-switcher:hover { + color: var(--e-a-color-primary-bold); +} +.elementor-control-responsive-switchers.elementor-responsive-switchers-open .elementor-control-responsive-switchers__holder { + box-shadow: var(--e-a-dropdown-shadow); +} + +.elementor-responsive-switcher { + all: unset; + display: flex; + align-items: center; + justify-content: center; + position: relative; + z-index: 2; + cursor: pointer; + height: 0; + width: 100%; + transform: scale(0); + opacity: 0; + transition: 0.15s; + font-size: 12px; + color: inherit; +} +.elementor-responsive-switcher:hover { + color: var(--e-a-color-primary-bold); +} + +.elementor-device-widescreen .elementor-responsive-switcher.elementor-responsive-switcher-widescreen { + height: 2.5em; + transform: scale(1); + opacity: 1; +} +.elementor-device-widescreen .elementor-responsive-switchers-open:not(:hover) .elementor-responsive-switcher.elementor-responsive-switcher-widescreen { + color: var(--e-a-color-primary-bold); +} + +.elementor-device-desktop .elementor-responsive-switcher.elementor-responsive-switcher-desktop { + height: 2.5em; + transform: scale(1); + opacity: 1; +} +.elementor-device-desktop .elementor-responsive-switchers-open:not(:hover) .elementor-responsive-switcher.elementor-responsive-switcher-desktop { + color: var(--e-a-color-primary-bold); +} + +.elementor-device-laptop .elementor-responsive-switcher.elementor-responsive-switcher-laptop { + height: 2.5em; + transform: scale(1); + opacity: 1; +} +.elementor-device-laptop .elementor-responsive-switchers-open:not(:hover) .elementor-responsive-switcher.elementor-responsive-switcher-laptop { + color: var(--e-a-color-primary-bold); +} + +.elementor-device-tablet_extra .elementor-responsive-switcher.elementor-responsive-switcher-tablet_extra { + height: 2.5em; + transform: scale(1); + opacity: 1; +} +.elementor-device-tablet_extra .elementor-responsive-switchers-open:not(:hover) .elementor-responsive-switcher.elementor-responsive-switcher-tablet_extra { + color: var(--e-a-color-primary-bold); +} + +.elementor-device-tablet .elementor-responsive-switcher.elementor-responsive-switcher-tablet { + height: 2.5em; + transform: scale(1); + opacity: 1; +} +.elementor-device-tablet .elementor-responsive-switchers-open:not(:hover) .elementor-responsive-switcher.elementor-responsive-switcher-tablet { + color: var(--e-a-color-primary-bold); +} + +.elementor-device-mobile_extra .elementor-responsive-switcher.elementor-responsive-switcher-mobile_extra { + height: 2.5em; + transform: scale(1); + opacity: 1; +} +.elementor-device-mobile_extra .elementor-responsive-switchers-open:not(:hover) .elementor-responsive-switcher.elementor-responsive-switcher-mobile_extra { + color: var(--e-a-color-primary-bold); +} + +.elementor-device-mobile .elementor-responsive-switcher.elementor-responsive-switcher-mobile { + height: 2.5em; + transform: scale(1); + opacity: 1; +} +.elementor-device-mobile .elementor-responsive-switchers-open:not(:hover) .elementor-responsive-switcher.elementor-responsive-switcher-mobile { + color: var(--e-a-color-primary-bold); +} + +.e-units-wrapper { + position: relative; + margin-inline-start: auto; +} +.e-units-wrapper .e-units-switcher { + cursor: pointer; + font-size: 10px; + padding: 0.5em; + margin: -0.5em 0; + transition: all ease-in-out 0.15s; +} +.e-units-wrapper .e-units-switcher:hover { + color: var(--e-a-color-primary-bold); + background-color: var(--e-a-bg-hover); + border-radius: var(--e-a-border-radius); +} +.e-units-wrapper .e-units-switcher:not([data-selected=custom]) i.eicon-edit { + display: none; +} +.e-units-wrapper .e-units-switcher[data-selected=custom] span { + display: none; +} +.e-units-wrapper .e-units-switcher i.eicon-angle-right { + transform: rotate(90deg); +} + +.e-units-choices input { + display: none; +} +.e-units-choices input:checked + label { + color: var(--e-a-color-primary-bold); +} +.e-units-choices label { + cursor: pointer; + display: block; +} +.e-units-choices { + display: none; + overflow: hidden; + max-height: 0; + position: absolute; + top: -0.8em; + right: -0.5em; + width: 2.5em; + text-align: center; + background-color: var(--e-a-bg-default); + border-radius: var(--e-a-border-radius); + box-shadow: var(--e-a-dropdown-shadow); + animation-timing-function: linear; + animation-delay: 0s; + animation-fill-mode: forwards; + z-index: 11000; +} +.e-units-choices .elementor-units-choices-label { + display: flex; + align-items: center; + height: 3em; + justify-content: center; + font-size: 10px; + transition: 0.15s; +} +.e-units-choices .elementor-units-choices-label:hover { + color: var(--e-a-color-primary-bold); +} +.e-units-choices.e-units-choices-open { + display: block; + animation-duration: 1s; + animation-name: e-units-choices-open; +} + +.e-units-custom input { + font-family: monospace; + font-size: 0.85em; +} + +@keyframes e-units-choices-open { + from { + max-height: 0; + } + to { + max-height: 100vh; + } +} +.elementor-control-alert { + display: flex; + flex-direction: column; + justify-content: flex-start; + align-items: flex-start; + gap: 8px; +} +.elementor-control-alert-heading { + font-weight: bold; +} + +.elementor-control-type-button .elementor-control-input-wrapper { + text-align: end; +} +.elementor-control-type-button .elementor-button { + width: auto; +} +.elementor-control-type-button .elementor-button.elementor-button-center { + display: block; + margin: 0 auto; +} + +.elementor-control-type-choose.elementor-label-block .elementor-choices { + width: 100%; +} + +.elementor-choices { + display: flex; + height: 27px; + line-height: 27px; + text-align: center; + border-spacing: 1px; + border-radius: var(--e-a-border-radius); + overflow: hidden; +} +.elementor-choices .elementor-choices-label { + border-block-start: var(--e-a-border-bold); + border-block-end: var(--e-a-border-bold); + border-inline-start: var(--e-a-border-bold); + border-inline-end: none; + font-size: 12px; + transition: var(--e-a-transition-hover); + cursor: pointer; + overflow: hidden; +} +.elementor-choices .elementor-choices-label:nth-child(2) { + border-start-start-radius: var(--e-a-border-radius); + border-end-start-radius: var(--e-a-border-radius); +} +.elementor-choices .elementor-choices-label:last-child { + border-inline-end: var(--e-a-border-bold); + border-start-end-radius: var(--e-a-border-radius); + border-end-end-radius: var(--e-a-border-radius); +} +.elementor-choices input { + display: none; +} +.elementor-choices input:hover + .elementor-choices-label { + background-color: var(--e-a-bg-hover); +} +.elementor-choices input.e-choose-placeholder + .elementor-choices-label, .elementor-choices input:checked + .elementor-choices-label { + background-color: var(--e-a-bg-active-bold); + color: var(--e-a-color-txt-accent); +} + +.elementor-label-inline .elementor-choices { + justify-content: flex-end; +} + +.elementor-control-type-color.e-control-global .pickr { + border-start-start-radius: 0; + border-start-end-radius: var(--e-a-border-radius); + border-end-start-radius: 0; + border-end-end-radius: var(--e-a-border-radius); + flex-shrink: 0; + border-color: var(--e-a-border-color-bold); + transition: var(--e-a-transition-hover); +} +.elementor-control-type-color.e-control-global .pickr:hover { + background-color: var(--e-a-bg-hover); +} +.elementor-control-type-color.e-control-global .e-global__popover-toggle:not(.e-global__popover-toggle--active) ~ .pickr { + background-color: var(--e-a-bg-active-bold); +} +.elementor-control-type-color .elementor-control-title { + flex-grow: 1; +} +.elementor-control-type-color .elementor-control-input-wrapper { + display: flex; + justify-content: flex-end; +} + +.elementor-group-control-css-filter .elementor-slider { + height: 6px; + box-shadow: 0 0 1px 1px inset rgba(0, 0, 0, 0.2); +} +.elementor-group-control-css-filter .elementor-control-content > .elementor-control-field > .elementor-control-input-wrapper { + margin-block-start: 0; + margin-block-end: 5px; +} + +.elementor-group-control-blur .elementor-slider { + background: url("../images/blur.png"); + background-size: cover; + background-position: center; +} + +.elementor-group-control-contrast .elementor-slider { + background: url("../images/contrast.png"); + background-size: 100% 100%; +} + +.elementor-group-control-hue .elementor-slider { + background-image: linear-gradient(to right, red, orange, yellow, greenyellow, limegreen, deepskyblue, blue, darkviolet 95%); +} + +.elementor-group-control-saturate .elementor-slider { + background-image: linear-gradient(to right, gray, red); +} + +.elementor-group-control-brightness .elementor-slider { + background-image: linear-gradient(to right, black, white); +} + +.elementor-control-responsive-switchers { + --selected-option: 0; + --pointer-position: var(--selected-option); + position: relative; + width: 2.5em; + height: 2.5em; + margin: calc(-2.5em + 12px) 0; + margin-inline-end: 5px; +} +.elementor-control-responsive-switchers__holder { + position: absolute; + width: 100%; + top: 0; + background-color: var(--e-a-bg-default); + border-radius: var(--e-a-border-radius); + transition: 0.15s; + border: 1px solid transparent; +} +.elementor-control-responsive-switchers.elementor-responsive-switchers-open { + z-index: 11000; +} +.elementor-control-responsive-switchers.elementor-responsive-switchers-open .elementor-responsive-switcher { + height: 2.5em; + transform: scale(1); + opacity: 1; +} +.elementor-control-responsive-switchers.elementor-responsive-switchers-open .elementor-responsive-switcher:hover { + color: var(--e-a-color-primary-bold); +} +.elementor-control-responsive-switchers.elementor-responsive-switchers-open .elementor-control-responsive-switchers__holder { + box-shadow: var(--e-a-dropdown-shadow); +} + +.elementor-responsive-switcher { + all: unset; + display: flex; + align-items: center; + justify-content: center; + position: relative; + z-index: 2; + cursor: pointer; + height: 0; + width: 100%; + transform: scale(0); + opacity: 0; + transition: 0.15s; + font-size: 12px; + color: inherit; +} +.elementor-responsive-switcher:hover { + color: var(--e-a-color-primary-bold); +} + +.elementor-device-widescreen .elementor-responsive-switcher.elementor-responsive-switcher-widescreen { + height: 2.5em; + transform: scale(1); + opacity: 1; +} +.elementor-device-widescreen .elementor-responsive-switchers-open:not(:hover) .elementor-responsive-switcher.elementor-responsive-switcher-widescreen { + color: var(--e-a-color-primary-bold); +} + +.elementor-device-desktop .elementor-responsive-switcher.elementor-responsive-switcher-desktop { + height: 2.5em; + transform: scale(1); + opacity: 1; +} +.elementor-device-desktop .elementor-responsive-switchers-open:not(:hover) .elementor-responsive-switcher.elementor-responsive-switcher-desktop { + color: var(--e-a-color-primary-bold); +} + +.elementor-device-laptop .elementor-responsive-switcher.elementor-responsive-switcher-laptop { + height: 2.5em; + transform: scale(1); + opacity: 1; +} +.elementor-device-laptop .elementor-responsive-switchers-open:not(:hover) .elementor-responsive-switcher.elementor-responsive-switcher-laptop { + color: var(--e-a-color-primary-bold); +} + +.elementor-device-tablet_extra .elementor-responsive-switcher.elementor-responsive-switcher-tablet_extra { + height: 2.5em; + transform: scale(1); + opacity: 1; +} +.elementor-device-tablet_extra .elementor-responsive-switchers-open:not(:hover) .elementor-responsive-switcher.elementor-responsive-switcher-tablet_extra { + color: var(--e-a-color-primary-bold); +} + +.elementor-device-tablet .elementor-responsive-switcher.elementor-responsive-switcher-tablet { + height: 2.5em; + transform: scale(1); + opacity: 1; +} +.elementor-device-tablet .elementor-responsive-switchers-open:not(:hover) .elementor-responsive-switcher.elementor-responsive-switcher-tablet { + color: var(--e-a-color-primary-bold); +} + +.elementor-device-mobile_extra .elementor-responsive-switcher.elementor-responsive-switcher-mobile_extra { + height: 2.5em; + transform: scale(1); + opacity: 1; +} +.elementor-device-mobile_extra .elementor-responsive-switchers-open:not(:hover) .elementor-responsive-switcher.elementor-responsive-switcher-mobile_extra { + color: var(--e-a-color-primary-bold); +} + +.elementor-device-mobile .elementor-responsive-switcher.elementor-responsive-switcher-mobile { + height: 2.5em; + transform: scale(1); + opacity: 1; +} +.elementor-device-mobile .elementor-responsive-switchers-open:not(:hover) .elementor-responsive-switcher.elementor-responsive-switcher-mobile { + color: var(--e-a-color-primary-bold); +} + +.e-units-wrapper { + position: relative; + margin-inline-start: auto; +} +.e-units-wrapper .e-units-switcher { + cursor: pointer; + font-size: 10px; + padding: 0.5em; + margin: -0.5em 0; + transition: all ease-in-out 0.15s; +} +.e-units-wrapper .e-units-switcher:hover { + color: var(--e-a-color-primary-bold); + background-color: var(--e-a-bg-hover); + border-radius: var(--e-a-border-radius); +} +.e-units-wrapper .e-units-switcher:not([data-selected=custom]) i.eicon-edit { + display: none; +} +.e-units-wrapper .e-units-switcher[data-selected=custom] span { + display: none; +} +.e-units-wrapper .e-units-switcher i.eicon-angle-right { + transform: rotate(90deg); +} + +.e-units-choices input { + display: none; +} +.e-units-choices input:checked + label { + color: var(--e-a-color-primary-bold); +} +.e-units-choices label { + cursor: pointer; + display: block; +} +.e-units-choices { + display: none; + overflow: hidden; + max-height: 0; + position: absolute; + top: -0.8em; + right: -0.5em; + width: 2.5em; + text-align: center; + background-color: var(--e-a-bg-default); + border-radius: var(--e-a-border-radius); + box-shadow: var(--e-a-dropdown-shadow); + animation-timing-function: linear; + animation-delay: 0s; + animation-fill-mode: forwards; + z-index: 11000; +} +.e-units-choices .elementor-units-choices-label { + display: flex; + align-items: center; + height: 3em; + justify-content: center; + font-size: 10px; + transition: 0.15s; +} +.e-units-choices .elementor-units-choices-label:hover { + color: var(--e-a-color-primary-bold); +} +.e-units-choices.e-units-choices-open { + display: block; + animation-duration: 1s; + animation-name: e-units-choices-open; +} + +.e-units-custom input { + font-family: monospace; + font-size: 0.85em; +} + +@keyframes e-units-choices-open { + from { + max-height: 0; + } + to { + max-height: 100vh; + } +} +.elementor-control-type-dimensions .elementor-control-dimensions { + display: flex; +} +.elementor-control-type-dimensions li { + flex: 1; + transition: flex-grow 0.3s ease-in-out; +} +.elementor-control-type-dimensions li input, +.elementor-control-type-dimensions li .elementor-link-dimensions { + display: block; + text-align: center; + width: 100%; + height: 27px; +} +.elementor-control-type-dimensions li input { + border-inline-start: none; + border-radius: 0; + padding: var(--e-a-border-radius); +} +.elementor-control-type-dimensions li input:focus { + border-inline-start: var(--e-a-border-bold); + margin-inline-start: -1px; + width: calc(100% + 1px); +} +.elementor-control-type-dimensions li input:focus + .elementor-control-dimension-label { + color: var(--e-a-color-txt); +} +.elementor-control-type-dimensions li .elementor-link-dimensions { + border: var(--e-a-border-bold); + border-inline-start: none; + background-color: var(--e-a-bg-default); + padding: 0; + outline: none; + border-start-start-radius: 0; + border-start-end-radius: var(--e-a-border-radius); + border-end-start-radius: 0; + border-end-end-radius: var(--e-a-border-radius); + cursor: pointer; +} +.elementor-control-type-dimensions li:first-child input { + border-inline-start: 1px solid var(--e-a-border-color-bold); + border-start-start-radius: var(--e-a-border-radius); + border-start-end-radius: 0; + border-end-start-radius: var(--e-a-border-radius); + border-end-end-radius: 0; +} +.elementor-control-type-dimensions li:first-child input:focus { + border-color: var(--e-a-border-color-focus); + margin-inline-start: 0; + width: 100%; +} +.elementor-control-type-dimensions li:last-child { + max-width: 27px; +} +.elementor-control-type-dimensions.e-units-custom li.elementor-control-dimension:focus-within { + flex: 2.5; +} +.elementor-control-type-dimensions .elementor-control-dimension-label { + color: var(--e-a-color-txt-muted); + display: block; + text-align: center; + font-size: 9px; + padding-block-start: 5px; +} +.elementor-control-type-dimensions .elementor-link-dimensions.unlinked { + background-color: var(--e-a-bg-default); +} +.elementor-control-type-dimensions .elementor-link-dimensions.unlinked .elementor-linked { + display: none; +} +.elementor-control-type-dimensions .elementor-link-dimensions:not(.unlinked) { + background-color: var(--e-a-bg-active-bold); + color: var(--e-a-color-txt-accent); + border-color: var(--e-a-border-color-bold); +} +.elementor-control-type-dimensions .elementor-link-dimensions:not(.unlinked) .elementor-unlinked { + display: none; +} + +.elementor-control-responsive-switchers { + --selected-option: 0; + --pointer-position: var(--selected-option); + position: relative; + width: 2.5em; + height: 2.5em; + margin: calc(-2.5em + 12px) 0; + margin-inline-end: 5px; +} +.elementor-control-responsive-switchers__holder { + position: absolute; + width: 100%; + top: 0; + background-color: var(--e-a-bg-default); + border-radius: var(--e-a-border-radius); + transition: 0.15s; + border: 1px solid transparent; +} +.elementor-control-responsive-switchers.elementor-responsive-switchers-open { + z-index: 11000; +} +.elementor-control-responsive-switchers.elementor-responsive-switchers-open .elementor-responsive-switcher { + height: 2.5em; + transform: scale(1); + opacity: 1; +} +.elementor-control-responsive-switchers.elementor-responsive-switchers-open .elementor-responsive-switcher:hover { + color: var(--e-a-color-primary-bold); +} +.elementor-control-responsive-switchers.elementor-responsive-switchers-open .elementor-control-responsive-switchers__holder { + box-shadow: var(--e-a-dropdown-shadow); +} + +.elementor-responsive-switcher { + all: unset; + display: flex; + align-items: center; + justify-content: center; + position: relative; + z-index: 2; + cursor: pointer; + height: 0; + width: 100%; + transform: scale(0); + opacity: 0; + transition: 0.15s; + font-size: 12px; + color: inherit; +} +.elementor-responsive-switcher:hover { + color: var(--e-a-color-primary-bold); +} + +.elementor-device-widescreen .elementor-responsive-switcher.elementor-responsive-switcher-widescreen { + height: 2.5em; + transform: scale(1); + opacity: 1; +} +.elementor-device-widescreen .elementor-responsive-switchers-open:not(:hover) .elementor-responsive-switcher.elementor-responsive-switcher-widescreen { + color: var(--e-a-color-primary-bold); +} + +.elementor-device-desktop .elementor-responsive-switcher.elementor-responsive-switcher-desktop { + height: 2.5em; + transform: scale(1); + opacity: 1; +} +.elementor-device-desktop .elementor-responsive-switchers-open:not(:hover) .elementor-responsive-switcher.elementor-responsive-switcher-desktop { + color: var(--e-a-color-primary-bold); +} + +.elementor-device-laptop .elementor-responsive-switcher.elementor-responsive-switcher-laptop { + height: 2.5em; + transform: scale(1); + opacity: 1; +} +.elementor-device-laptop .elementor-responsive-switchers-open:not(:hover) .elementor-responsive-switcher.elementor-responsive-switcher-laptop { + color: var(--e-a-color-primary-bold); +} + +.elementor-device-tablet_extra .elementor-responsive-switcher.elementor-responsive-switcher-tablet_extra { + height: 2.5em; + transform: scale(1); + opacity: 1; +} +.elementor-device-tablet_extra .elementor-responsive-switchers-open:not(:hover) .elementor-responsive-switcher.elementor-responsive-switcher-tablet_extra { + color: var(--e-a-color-primary-bold); +} + +.elementor-device-tablet .elementor-responsive-switcher.elementor-responsive-switcher-tablet { + height: 2.5em; + transform: scale(1); + opacity: 1; +} +.elementor-device-tablet .elementor-responsive-switchers-open:not(:hover) .elementor-responsive-switcher.elementor-responsive-switcher-tablet { + color: var(--e-a-color-primary-bold); +} + +.elementor-device-mobile_extra .elementor-responsive-switcher.elementor-responsive-switcher-mobile_extra { + height: 2.5em; + transform: scale(1); + opacity: 1; +} +.elementor-device-mobile_extra .elementor-responsive-switchers-open:not(:hover) .elementor-responsive-switcher.elementor-responsive-switcher-mobile_extra { + color: var(--e-a-color-primary-bold); +} + +.elementor-device-mobile .elementor-responsive-switcher.elementor-responsive-switcher-mobile { + height: 2.5em; + transform: scale(1); + opacity: 1; +} +.elementor-device-mobile .elementor-responsive-switchers-open:not(:hover) .elementor-responsive-switcher.elementor-responsive-switcher-mobile { + color: var(--e-a-color-primary-bold); +} + +.e-units-wrapper { + position: relative; + margin-inline-start: auto; +} +.e-units-wrapper .e-units-switcher { + cursor: pointer; + font-size: 10px; + padding: 0.5em; + margin: -0.5em 0; + transition: all ease-in-out 0.15s; +} +.e-units-wrapper .e-units-switcher:hover { + color: var(--e-a-color-primary-bold); + background-color: var(--e-a-bg-hover); + border-radius: var(--e-a-border-radius); +} +.e-units-wrapper .e-units-switcher:not([data-selected=custom]) i.eicon-edit { + display: none; +} +.e-units-wrapper .e-units-switcher[data-selected=custom] span { + display: none; +} +.e-units-wrapper .e-units-switcher i.eicon-angle-right { + transform: rotate(90deg); +} + +.e-units-choices input { + display: none; +} +.e-units-choices input:checked + label { + color: var(--e-a-color-primary-bold); +} +.e-units-choices label { + cursor: pointer; + display: block; +} +.e-units-choices { + display: none; + overflow: hidden; + max-height: 0; + position: absolute; + top: -0.8em; + right: -0.5em; + width: 2.5em; + text-align: center; + background-color: var(--e-a-bg-default); + border-radius: var(--e-a-border-radius); + box-shadow: var(--e-a-dropdown-shadow); + animation-timing-function: linear; + animation-delay: 0s; + animation-fill-mode: forwards; + z-index: 11000; +} +.e-units-choices .elementor-units-choices-label { + display: flex; + align-items: center; + height: 3em; + justify-content: center; + font-size: 10px; + transition: 0.15s; +} +.e-units-choices .elementor-units-choices-label:hover { + color: var(--e-a-color-primary-bold); +} +.e-units-choices.e-units-choices-open { + display: block; + animation-duration: 1s; + animation-name: e-units-choices-open; +} + +.e-units-custom input { + font-family: monospace; + font-size: 0.85em; +} + +@keyframes e-units-choices-open { + from { + max-height: 0; + } + to { + max-height: 100vh; + } +} +.elementor-control-type-gaps .elementor-control-gaps { + display: flex; +} +.elementor-control-type-gaps li { + flex: 1; + transition: flex-grow 0.3s ease-in-out; +} +.elementor-control-type-gaps li input, +.elementor-control-type-gaps li .elementor-link-gaps { + display: block; + text-align: center; + width: 100%; + height: 27px; +} +.elementor-control-type-gaps li input { + border-inline-start: none; + border-radius: 0; + padding: var(--e-a-border-radius); +} +.elementor-control-type-gaps li input:focus { + border-inline-start: var(--e-a-border-bold); + margin-inline-start: -1px; + width: calc(100% + 1px); +} +.elementor-control-type-gaps li input:focus + .elementor-control-gap-label { + color: var(--e-a-color-txt); +} +.elementor-control-type-gaps li .elementor-link-gaps { + border: var(--e-a-border-bold); + border-inline-start: none; + background-color: var(--e-a-bg-default); + padding: 0; + outline: none; + border-start-start-radius: 0; + border-start-end-radius: var(--e-a-border-radius); + border-end-start-radius: 0; + border-end-end-radius: var(--e-a-border-radius); + cursor: pointer; +} +.elementor-control-type-gaps li:first-child input { + border-inline-start: 1px solid var(--e-a-border-color-bold); + border-start-start-radius: var(--e-a-border-radius); + border-start-end-radius: 0; + border-end-start-radius: var(--e-a-border-radius); + border-end-end-radius: 0; +} +.elementor-control-type-gaps li:first-child input:focus { + border-color: var(--e-a-border-color-focus); + margin-inline-start: 0; + width: 100%; +} +.elementor-control-type-gaps li:last-child { + max-width: 27px; +} +.elementor-control-type-gaps.e-units-custom li.elementor-control-gap:focus-within { + flex: 2.5; +} +.elementor-control-type-gaps .elementor-control-gap-label { + color: var(--e-a-color-txt-muted); + display: block; + text-align: center; + font-size: 9px; + padding-block-start: 5px; +} +.elementor-control-type-gaps .elementor-link-gaps.unlinked { + background-color: var(--e-a-bg-default); +} +.elementor-control-type-gaps .elementor-link-gaps.unlinked .elementor-linked { + display: none; +} +.elementor-control-type-gaps .elementor-link-gaps:not(.unlinked) { + background-color: var(--e-a-bg-active-bold); + color: var(--e-a-color-txt-accent); + border-color: var(--e-a-border-color-bold); +} +.elementor-control-type-gaps .elementor-link-gaps:not(.unlinked) .elementor-unlinked { + display: none; +} + +.elementor-control-type-icons .elementor-control-media__preview > * { + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); +} +.elementor-control-type-icons .elementor-control-media__preview i { + font-size: 70px; +} +.elementor-control-type-icons .elementor-control-media__preview svg { + height: 75%; +} +.elementor-control-type-icons .elementor-control-icons--inline__svg i.eicon-upload { + font-size: 15px; +} + +.elementor-control-type-gallery .elementor-control-media__content { + border: var(--e-a-border-bold); + border-radius: 3px; +} +.elementor-control-type-gallery .elementor-control-gallery-status { + font-size: 12px; + height: 27px; + padding-inline-start: 10px; + border-block-end: var(--e-a-border-bold); + display: flex; +} +.elementor-control-type-gallery .elementor-control-gallery-status > * { + display: flex; + align-items: center; +} +.elementor-control-type-gallery .elementor-control-gallery-status-title { + flex-grow: 1; +} +.elementor-control-type-gallery .elementor-control-gallery-content { + position: relative; + overflow: hidden; +} +.elementor-control-type-gallery .elementor-control-gallery-thumbnails { + display: grid; + grid-template-columns: repeat(auto-fill, minmax(48px, 1fr)); + grid-gap: 10px; + cursor: pointer; + padding: 10px; +} +.elementor-control-type-gallery .elementor-control-gallery-thumbnails:hover + .elementor-control-gallery-edit, .elementor-control-type-gallery .elementor-control-gallery-thumbnails:focus + .elementor-control-gallery-edit { + opacity: 1; +} +.elementor-control-type-gallery .elementor-control-gallery-thumbnail { + width: 48px; + height: 48px; + -o-object-fit: cover; + object-fit: cover; + border: var(--e-a-border); +} +.elementor-control-type-gallery .elementor-control-gallery-thumbnail + .unoptimized__image { + outline: 2px solid var(--e-a-btn-bg-danger-active); + opacity: 0.6; +} +.elementor-control-type-gallery .elementor-control-gallery-edit { + position: absolute; + top: 0; + bottom: 0; + left: 0; + right: 0; + background-color: rgba(0, 0, 0, 0.2); + padding: 10px; + font-size: 11px; + transition: all 0.3s ease-in-out; + pointer-events: none; + cursor: pointer; + opacity: 0; +} +.elementor-control-type-gallery .elementor-control-gallery-edit span { + position: absolute; + top: 10px; + left: 10px; + width: 21px; + height: 21px; + color: var(--e-a-color-white); + background-color: rgba(0, 0, 0, 0.5); + box-shadow: 0 0 7px 0 rgba(0, 0, 0, 0.2); + transition: var(--e-a-transition-hover); +} +.elementor-control-type-gallery .elementor-control-gallery-edit span i { + font-size: 11px; + padding: 5px; +} +.elementor-control-type-gallery .elementor-control-gallery-edit span:hover { + background-color: rgba(0, 0, 0, 0.6); +} +.elementor-control-type-gallery .elementor-control-gallery-add { + width: 48px; + height: 48px; + font-size: 14px; +} +.elementor-control-type-gallery .elementor-control-gallery-add i { + margin: 0; +} +.elementor-control-type-gallery.elementor-gallery-empty .elementor-control-gallery-clear, +.elementor-control-type-gallery.elementor-gallery-empty .elementor-control-gallery-thumbnails, +.elementor-control-type-gallery.elementor-gallery-empty .elementor-control-gallery-edit { + display: none; +} +.elementor-control-type-gallery.elementor-gallery-empty .elementor-control-gallery-content { + padding: 10px; +} +.elementor-control-type-gallery.elementor-gallery-has-images .elementor-control-gallery-add { + display: none; +} +.elementor-control-type-gallery.elementor-control-dynamic .elementor-control-gallery-clear { + border-inline-start: var(--e-a-border); +} +.elementor-control-type-gallery .elementor-control-gallery-clear { + color: currentColor; + background-color: transparent; + border: none; + cursor: pointer; + justify-content: center; +} +.elementor-control-type-gallery .elementor-control-gallery-clear:hover, .elementor-control-type-gallery .elementor-control-gallery-clear:focus { + color: var(--e-a-color-danger); +} +.elementor-control-type-gallery .elementor-control-dynamic-switcher { + border-width: 0; + border-inline-start-width: 1px; + border-block-end-width: 1px; + border-radius: 0; +} + +.e-global__popover { + width: 288px; + z-index: 1; + font-size: 12px; + padding-inline-start: 10px; +} +.e-global__popover-toggle { + border: var(--e-a-border-bold); + border-inline-end: 0; + border-start-start-radius: 3px; + border-start-end-radius: 0; + border-end-start-radius: 3px; + border-end-end-radius: 0; + display: flex; + align-items: center; + justify-content: center; + cursor: pointer; + transition: var(--e-a-transition-hover); +} +.e-global__popover-toggle:hover { + background-color: var(--e-a-bg-hover); +} +.e-global__popover-toggle--active { + color: var(--e-a-color-primary-bold); + background-color: var(--e-a-bg-active-bold); +} +.e-global__popover-container { + box-shadow: var(--e-a-popover-shadow); + border-radius: var(--e-a-border-radius); + background-color: var(--e-a-bg-default); +} +.e-global__popover-title { + padding: 15px 20px; + font-weight: 500; + border-block-end: var(--e-a-border); + display: flex; +} +.e-global__popover-title > i { + margin-inline-end: 5px; +} +.e-global__popover-title-text { + flex-grow: 1; +} +.e-global__popover-info { + margin-inline-end: 10px; + display: inline-block; +} +.e-global__popover-info-tooltip { + width: 270px; + z-index: 1; + background-color: rgba(0, 0, 0, 0.9); + color: var(--e-a-color-white); + padding: 20px; + border-radius: 3px; +} +.e-global__popover-info-tooltip:after { + content: ""; + position: absolute; + bottom: -17px; + right: 16px; + border: 10px solid transparent; + border-block-start-color: rgba(0, 0, 0, 0.9); +} +.e-global__popover-info i { + font-size: 13px; +} +.e-global__preview-items-container { + max-height: 260px; + overflow-y: auto; + padding: 5px 0; +} +.e-global__preview-items-container::-webkit-scrollbar { + width: 7px; +} +.e-global__preview-items-container::-webkit-scrollbar-thumb { + background-color: #BABFC5; + border-radius: 10px; +} +.e-global__manage-button { + font-weight: 500; + cursor: pointer; +} +.e-global__typography { + padding-block: 10px; + padding-inline: 35px 20px; + white-space: nowrap; + text-overflow: ellipsis; + overflow: hidden; +} +.e-global__typography.e-global__preview-item--selected:before { + font-family: "eicons"; + font-size: 13px; + content: "\e90e"; + position: absolute; + transform: translateY(-50%); + top: 50%; + inset-inline-start: 13px; +} +.e-global__color { + padding: 10px 20px; + display: flex; + align-items: center; +} +.e-global__color-preview-container { + height: 20px; + width: 20px; + border-radius: 3px; + border: 1px solid rgba(0, 0, 0, 0.1); + margin-inline-end: 10px; + flex-shrink: 0; + position: relative; +} +.e-global__color-preview-color, .e-global__color-preview-transparent-bg { + border-radius: 3px; + height: 100%; + width: 100%; + position: absolute; + top: 0; + left: 0; +} +.e-global__color-preview-transparent-bg { + background-image: linear-gradient(45deg, var(--e-a-border-color-bold) 25%, transparent 0, transparent 75%, var(--e-a-border-color-bold) 0, var(--e-a-border-color-bold)), linear-gradient(45deg, var(--e-a-border-color-bold) 25%, transparent 0, transparent 75%, var(--e-a-border-color-bold) 0, var(--e-a-border-color-bold)); + background-size: 12px 12px; + background-position: 0 0, calc(12px / 2) calc(12px / 2); +} +.e-global__color-title { + flex-grow: 1; + white-space: nowrap; + text-overflow: ellipsis; + overflow: hidden; + padding-inline-end: 10px; +} +.e-global__color-hex { + font-size: 10px; + color: var(--e-a-color-txt-muted); +} +.e-global__color .pcr-button { + background-color: var(--e-a-bg-default); +} +.e-global__color.e-global__preview-item--selected .e-global__color-preview-container { + display: flex; + justify-content: center; + align-items: center; + color: var(--e-a-color-white); +} +.e-global__color.e-global__preview-item--selected .e-global__color-preview-container:before { + font-family: "eicons"; + font-size: 13px; + content: "\e90e"; + text-shadow: 0 0 1px #000; + z-index: 1; +} +.e-global__preview-item { + cursor: pointer; + position: relative; +} +.e-global__preview-item:hover { + background-color: var(--e-a-bg-hover); +} +.e-global__confirm-delete i, .e-global__confirm-message-text i { + color: var(--e-a-color-warning); +} +.e-global__confirm-input-wrapper { + display: flex; + align-items: center; + border: var(--e-a-border); + border-radius: var(--e-a-border-radius); + margin: 15px 0; + padding: 2px; +} +.e-global__confirm-input-wrapper input { + font-family: var(--e-a-font-family); + font-size: 12px; + padding: 2px; + border: 0; +} + +.e-control-global .elementor-control-input-wrapper { + display: flex; + justify-content: flex-end; + max-width: 135px; + width: 100%; +} +.e-control-global.elementor-control .elementor-control-input-wrapper { + display: flex; + flex-direction: row; + align-items: stretch; +} +.e-control-global .elementor-control-spinner { + margin-inline-end: 4px; +} + +.elementor-control-type-hidden { + display: none !important; +} + +.elementor-control-type-icon .select2-selection__rendered .eicon { + margin-inline-end: 3px; +} + +.elementor-control-type-image_dimensions .elementor-control-field-description { + margin: 0 0 15px; + line-height: 1.4; +} +.elementor-control-type-image_dimensions .elementor-control-input-wrapper { + display: flex; + align-items: flex-start; +} +.elementor-control-type-image_dimensions .elementor-image-dimensions-field { + width: 65px; +} +.elementor-control-type-image_dimensions .elementor-image-dimensions-field input:focus + .elementor-image-dimensions-field-description { + color: var(--e-a-color-txt); +} +.elementor-control-type-image_dimensions .elementor-image-dimensions-separator { + width: 20px; + text-align: center; + padding-block-start: 4px; +} +.elementor-control-type-image_dimensions .elementor-image-dimensions-field-description { + display: block; + margin-block-start: 5px; + color: var(--e-a-color-txt-disabled); + font-size: 10px; + text-align: center; +} +.elementor-control-type-image_dimensions .elementor-image-dimensions-apply-button { + margin-inline-start: auto; +} + +.elementor-control-media.e-media-empty .elementor-control-media-area .elementor-control-media__remove, .elementor-control-media.e-media-empty .elementor-control-media-area .elementor-control-media__content__remove { + display: none; +} +.elementor-control-media.e-media-empty-placeholder .e-control-image-size { + display: none; +} +.elementor-control-media:not(.e-media-empty) .elementor-control-media__content__upload-button { + display: none; +} +.elementor-control-media .eicon-plus-circle { + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + color: var(--e-a-color-white); + font-size: 20px; +} +.elementor-control-media__content__upload-button { + background-color: var(--e-a-bg-active-bold); +} +.elementor-control-media__preview { + height: 100%; + background-size: cover; + background-position: center; + padding-block-end: 42.8571%; +} +.elementor-control-media-area { + background-image: linear-gradient(45deg, var(--e-a-border-color-bold) 25%, transparent 0, transparent 75%, var(--e-a-border-color-bold) 0, var(--e-a-border-color-bold)), linear-gradient(45deg, var(--e-a-border-color-bold) 25%, transparent 0, transparent 75%, var(--e-a-border-color-bold) 0, var(--e-a-border-color-bold)); + background-size: 16px 16px; + background-position: 0 0, calc(16px / 2) calc(16px / 2); + background-color: var(--e-a-bg-default); + border: var(--e-a-border-bold); + aspect-ratio: 21/9; +} +.elementor-control-media-area:not(:hover) .elementor-control-media__remove { + display: none; +} +.elementor-control-media-area .eicon-video-camera { + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + color: rgba(255, 255, 255, 0.7); + font-size: 21px; +} +.elementor-control-media .elementor-control-media__content { + aspect-ratio: 21/9; + position: relative; + cursor: pointer; + overflow: hidden; +} +.elementor-control-media .elementor-control-media__content:hover:after { + content: ""; + position: absolute; + top: 0; + bottom: 0; + left: 0; + right: 0; + background-color: rgba(0, 0, 0, 0.2); + pointer-events: none; +} +.elementor-control-media .elementor-control-media__content:not(:hover) .elementor-control-media__tools { + bottom: -30px; +} +.elementor-control-media__content { + transition: all 0.2s ease-in-out; +} +.elementor-control-media__tools { + position: absolute; + bottom: 0; + left: 0; + right: 0; + height: 27px; + transition: all 0.2s ease-in-out; +} +.elementor-control-media__tools > *:not(:first-child) { + margin-inline-start: 1px; +} +.elementor-control-media__tool { + display: flex; + align-items: center; + justify-content: center; + flex-grow: 1; + color: var(--e-a-color-white); + background-color: rgba(0, 0, 0, 0.9); + font-size: 11px; + transition: var(--e-a-transition-hover); +} +.elementor-control-media__tool:hover { + background-color: rgba(0, 0, 0, 0.8); +} +.elementor-control-media__remove { + display: flex; + align-items: center; + justify-content: center; + transition: all 0.3s ease-in-out; +} +.elementor-control-media__content__remove { + position: absolute; + z-index: 1; + top: 10px; + left: 10px; + width: 20px; + height: 20px; + font-size: 11px; + color: var(--e-a-color-white); + background-color: rgba(0, 0, 0, 0.5); + border-radius: var(--e-border-radius); + box-shadow: 0 0 7px 0 rgba(0, 0, 0, 0.2); + transition: var(--e-a-transition-hover); +} +.elementor-control-media__content__remove:hover { + background-color: rgba(0, 0, 0, 0.6); +} +.elementor-control-media.e-media-empty .elementor-control-file-area { + display: none; +} +.elementor-control-media__warnings:empty { + display: none; +} +.elementor-control-media__warnings:not(:empty) { + margin-block-start: 10px; +} +.elementor-control-media__file { + display: flex; + justify-content: space-between; + align-items: center; + width: 100%; + margin-block-start: 10px; + border: var(--e-a-border); +} +.elementor-control-media__file__content { + padding-inline-start: 5px; + font-size: 12px; +} +.elementor-control-media__file__content__label { + color: #9DA5AE; +} +.elementor-control-media__file__content__info { + display: flex; + align-items: center; + font-weight: 500; +} +.elementor-control-media__file__content__info__icon { + margin-inline-end: 5px; +} +.elementor-control-media__file__controls { + display: flex; + border-inline-start: var(--e-a-border); +} +.elementor-control-media__file__controls__upload-button, .elementor-control-media__file__controls__remove { + width: 27px; + height: 27px; + cursor: pointer; + align-items: center; +} +.elementor-control-media__file__controls__upload-button { + display: flex; + justify-content: center; +} +.elementor-control-media__file__controls__remove { + border-inline-end: var(--e-a-border); +} +.elementor-control-media:not(.e-media-empty) .elementor-control-media__file__content__label { + display: none; +} +.elementor-control-media.e-media-empty .elementor-control-media__file__content__info { + display: none; +} +.elementor-control-media.e-media-empty .elementor-control-media__file__controls__remove { + display: none; +} +.elementor-control-media .elementor-control-dynamic-switcher { + border: none; + border-radius: 0; + background-color: rgba(0, 0, 0, 0.9); + color: var(--e-a-color-white); +} +.elementor-control-media .elementor-control-dynamic-switcher:hover { + background-color: rgba(0, 0, 0, 0.8); + color: var(--e-a-color-white); +} +.elementor-control-media .e-control-image-size { + display: flex; + flex-direction: column; + width: 100%; + padding-block-start: 20px; +} +.elementor-control-media .e-control-image-size .elementor-control-input-wrapper { + margin-inline-start: auto; +} + +.elementor-control-type-media.elementor-control-dynamic-value .elementor-control-input-wrapper { + border: none; +} + +.elementor-control:not(.elementor-control-type-icons) .elementor-control-media__preview { + background-color: var(--e-a-bg-active-bold); +} + +.elementor-control-notice { + display: flex; + justify-content: flex-start; + align-items: flex-start; + gap: 8px; + padding: 16px; + border-radius: 3px; + border: 1px solid var(--notice-control-color, var(--e-a-color-txt)); + color: var(--e-a-color-txt); + font-size: 12px; + font-weight: 400; + line-height: 1.5; + text-align: start; + margin-block-start: 10px; +} +.elementor-control-notice-type-info { + --notice-control-color: var(--e-a-color-info); +} +.elementor-control-notice-type-success { + --notice-control-color: var(--e-a-color-success); +} +.elementor-control-notice-type-warning { + --notice-control-color: var(--e-a-color-warning); +} +.elementor-control-notice-type-danger { + --notice-control-color: var(--e-a-color-danger); +} +.elementor-control-notice-icon { + flex-basis: 18px; + color: var(--notice-control-color); +} +.elementor-control-notice-main { + display: flex; + flex-direction: column; + justify-content: flex-start; + align-items: flex-start; + gap: 6px; + flex: 1; +} +.elementor-control-notice-main-heading { + font-weight: 700; + font-style: italic; +} +.elementor-control-notice-main-content { + font-style: italic; + line-height: 1.5; +} +.elementor-control-notice-main-actions { + display: flex; + gap: 10px; + padding-block-start: 8px; +} +.elementor-control-notice-main a { + color: inherit; + font-weight: 700; + cursor: pointer; +} +.elementor-control-notice-main a:hover, .elementor-control-notice-main a:focus { + color: inherit; +} +.elementor-control-notice-dismiss { + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + background-color: transparent; + border: 0; + padding: 0; + margin: 0; + cursor: pointer; +} + +.elementor-control-type-popover_toggle input { + display: none; +} +.elementor-control-type-popover_toggle label { + cursor: pointer; +} +.elementor-control-type-popover_toggle .elementor-control-input-wrapper { + display: flex; + flex-direction: row-reverse; + align-items: center; +} +.elementor-control-type-popover_toggle .elementor-control-popover-toggle-toggle:checked + .elementor-control-popover-toggle-toggle-label { + color: var(--e-a-color-txt-active); + background-color: var(--e-a-bg-active-bold); +} +.elementor-control-type-popover_toggle .elementor-control-popover-toggle-toggle:not(:checked) ~ .elementor-control-popover-toggle-reset-label { + display: none; +} +.elementor-control-type-popover_toggle .elementor-control-popover-toggle-toggle-label { + height: 27px; + display: inline-flex; + align-items: center; + justify-content: center; + border-radius: var(--e-a-border-radius); + border: var(--e-a-border-bold); + transition: var(--e-a-transition-hover); +} +.elementor-control-type-popover_toggle .elementor-control-popover-toggle-toggle-label:hover { + background-color: var(--e-a-bg-hover); +} +.elementor-control-type-popover_toggle .elementor-control-popover-toggle-reset-label { + color: var(--e-a-color-txt-muted); + margin-inline-end: 5px; +} +.elementor-control-type-popover_toggle .elementor-control-popover-toggle-reset-label:hover { + color: var(--e-a-color-txt); +} + +.elementor-controls-popover.e-controls-popover--typography { + padding-block-start: 0; +} + +.e-control-global .elementor-control-popover-toggle-toggle-label { + border-start-start-radius: 0; + border-start-end-radius: var(--e-a-border-radius); + border-end-start-radius: 0; + border-end-end-radius: var(--e-a-border-radius); + flex-shrink: 0; +} + +.elementor-control-type-repeater .elementor-control:not(.elementor-control-type-tab) { + padding-inline-start: 10px; + padding-inline-end: 10px; + padding-block-end: 10px; +} +.elementor-control-type-repeater.elementor-repeater-has-minimum-rows .elementor-repeater-tool-remove { + display: none; +} +.elementor-control-type-repeater .elementor-repeater-fields { + margin: 10px 0; +} +.elementor-control-type-repeater .elementor-repeater-row-controls { + border: var(--e-a-border-bold); + border-block-start-width: 0; + padding-block-start: 15px; +} +.elementor-control-type-repeater .elementor-repeater-row-controls:not(.editable) { + display: none; +} +.elementor-control-type-repeater .elementor-repeater-row-tools { + display: flex; + align-items: center; + width: 100%; + border: 1px solid var(--e-a-border-color-bold); + transition: var(--e-a-transition-hover); +} +.elementor-control-type-repeater .elementor-repeater-row-tools > button { + display: flex; + align-items: center; + justify-content: center; + height: 40px; + border: none; + background-color: transparent; + color: currentColor; + cursor: pointer; +} +.elementor-control-type-repeater .elementor-repeater-row-tools > button:hover, .elementor-control-type-repeater .elementor-repeater-row-tools > button:focus { + background-color: var(--e-a-bg-hover); +} +.elementor-control-type-repeater .elementor-repeater-row-tools .elementor-repeater-row-item-title { + flex: 1; + justify-content: flex-start; + padding: 0 10px; + font-size: var(--control-title-size); + white-space: nowrap; + text-overflow: ellipsis; + overflow: hidden; +} +.elementor-control-type-repeater .elementor-repeater-row-tools .elementor-repeater-row-item-title .eicon, +.elementor-control-type-repeater .elementor-repeater-row-tools .elementor-repeater-row-item-title i, +.elementor-control-type-repeater .elementor-repeater-row-tools .elementor-repeater-row-item-title svg { + margin-inline-end: 5px; +} +.elementor-control-type-repeater .elementor-repeater-row-tools .elementor-repeater-row-item-title img[src$=svg] { + width: 1em; +} +.elementor-control-type-repeater .elementor-repeater-row-tools .elementor-repeater-row-tool { + width: 40px; + border-inline-start: 1px solid var(--e-a-border-color-bold); +} +.elementor-control-type-repeater .elementor-repeater-row-tools .elementor-repeater-row-handle-sortable { + width: 10px; + border-inline-end: 1px solid var(--e-a-border-color-bold); + cursor: move; +} +.elementor-control-type-repeater .elementor-button-wrapper { + text-align: center; + padding-block-start: 5px; +} + +#elementor-controls { + padding-block-start: 15px; +} + +.elementor-control-type-section { + padding: 0; +} +.elementor-control-type-section.e-open { + padding-block-end: 10px; +} +.elementor-control-type-section + .elementor-control:not(.elementor-control-type-section):before { + display: none; +} +.elementor-control-type-section:not(:first-child):not(.elementor-control-type-section + .elementor-control-type-section) { + margin-block-start: 25px; +} + +.elementor-control-type-select .elementor-control-input-wrapper { + position: relative; +} +.elementor-control-type-select .elementor-control-input-wrapper select { + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + font-size: var(--control-title-size); + font-family: inherit; + font-weight: inherit; + font-style: inherit; + text-transform: inherit; + letter-spacing: inherit; + line-height: inherit; + flex-basis: 100%; + padding-inline-start: 5px; + padding-inline-end: 20px; + cursor: pointer; +} +.elementor-control-type-select .elementor-control-input-wrapper select.e-select-placeholder { + color: var(--e-a-color-txt-disabled); +} +.elementor-control-type-select .elementor-control-input-wrapper option.e-option-placeholder { + display: none; +} +.elementor-control-type-select .elementor-control-input-wrapper:after { + font-family: eicons; + content: "\e8ad"; + font-size: 12px; + position: absolute; + top: 50%; + transform: translateY(-50%); + left: 5px; + pointer-events: none; +} +.elementor-control-type-select .elementor-control-field.elementor-control-field-select-small .elementor-control-input-wrapper { + max-width: 80px; +} + +.elementor-shadow-box .elementor-shadow-slider { + margin-block-start: 10px; +} +.elementor-shadow-box .elementor-color-picker-wrapper .elementor-control-title { + flex-grow: 1; +} + +.elementor-control-type-slider.elementor-control-dynamic input { + border-start-start-radius: var(--e-a-border-radius); + border-start-end-radius: 0; + border-end-start-radius: var(--e-a-border-radius); + border-end-end-radius: 0; +} +.elementor-control-type-slider .elementor-control-unit-2 { + width: 21%; +} +.elementor-control-type-slider.elementor-control-type-slider--multiple .elementor-control-input-wrapper { + display: block; +} +.elementor-control-type-slider--multiple { + padding-block-end: 40px; +} +.elementor-control-type-slider--multiple .elementor-slider { + margin-block-start: 12px; + width: 98%; +} +.elementor-control-type-slider--handles-range .elementor-slider .noUi-handle { + border-radius: 0; + width: 10px; + transform: translateY(calc(50% - 14px)) translateX(-4px); +} +.elementor-control-type-slider--handles-range .elementor-slider .noUi-handle:after { + content: ""; + position: absolute; + top: 2px; + height: 12px; + width: 11px; + transform: rotate(45deg); + background-color: var(--e-a-color-white); + border-radius: 3px; +} +.elementor-control-type-slider--handles-range .elementor-slider .noUi-handle-lower:after { + left: 5px; + box-shadow: 2px -2px 3px 0px rgba(0, 0, 0, 0.1); +} +.elementor-control-type-slider--handles-range .elementor-slider .noUi-handle-upper:after { + right: 5px; + box-shadow: -2px 2px 3px 0px rgba(0, 0, 0, 0.1); +} +.elementor-control-type-slider .elementor-control-dynamic-switcher { + border-inline-start-width: 0; + border-start-start-radius: 0; + border-start-end-radius: var(--e-a-border-radius); + border-end-start-radius: 0; + border-end-end-radius: var(--e-a-border-radius); +} +.elementor-control-type-slider .elementor-control-input-wrapper { + display: flex; + align-items: center; +} +.elementor-control-type-slider .elementor-dynamic-cover { + margin-block-start: 10px; +} +.elementor-control-type-slider.e-units-custom .elementor-slider { + display: none; +} +.elementor-control-type-slider.e-units-custom .elementor-slider-input { + width: 100%; + margin: 0; + transition: none; +} + +.elementor-slider { + flex-grow: 1; + height: 4px; + background-color: var(--e-a-border-color-bold); + border-radius: 5px; + position: relative; + cursor: pointer; +} +.elementor-slider-input { + width: 21%; + min-width: 54px; + margin-inline-start: 12px; + transition: width 0.3s ease-in-out; +} +.elementor-slider__extra { + position: relative; +} +.elementor-slider__labels { + display: flex; + justify-content: space-between; +} +.elementor-slider__label { + font-size: 9px; + color: var(--e-a-color-txt-disabled); +} +.elementor-slider__scales { + position: absolute; + display: flex; + justify-content: space-evenly; + width: 100%; + margin-block-start: 4px; +} +.elementor-slider__scale { + width: 1px; + height: 21px; + background-color: var(--e-a-border-color-focus); +} +.elementor-slider .noUi-handle { + height: 16px; + width: 16px; + background-color: var(--e-a-color-white); + left: 0; + transform: translateY(calc(50% - 14px)) translateX(-8px); + position: absolute; + box-shadow: 0 1px 5px rgba(0, 0, 0, 0.3); + border-radius: 50%; +} +.elementor-slider .noUi-connects { + position: absolute; + width: 100%; + height: 4px; +} +.elementor-slider .noUi-connect { + position: absolute; + z-index: 0; + top: 0; + left: 0; + height: 100%; + width: 100%; + will-change: transform; + transform-origin: 0 0; + background-color: var(--e-a-border-color-focus); +} +.elementor-slider .noUi-tooltip { + position: absolute; + top: calc(100% + 5px); + left: calc(50% - 4px); + transform: translateX(-50%); + font-size: 10px; +} + +.elementor-control-type-structure .elementor-control-field { + display: initial; +} +.elementor-control-type-structure .elementor-control-structure-preset { + padding: 3px; + border-radius: var(--e-border-radius); + display: inline-block; + cursor: pointer; + height: 50px; +} +.elementor-control-type-structure .elementor-control-structure-preset svg { + height: 100%; +} +.elementor-control-type-structure .elementor-control-structure-preset path { + fill: var(--e-a-border-color-bold); +} +.elementor-control-type-structure .elementor-control-structure-reset { + padding: 15px 20px 0; + font-size: 11px; + cursor: pointer; + color: var(--e-a-color-txt-muted); + border-block-start: var(--e-a-border); + margin: 0 -20px; +} +.elementor-control-type-structure .elementor-control-structure-reset:hover { + color: var(--e-a-color-txt); +} +.elementor-control-type-structure .elementor-control-structure-title { + margin: 10px -20px 0; +} +.elementor-control-type-structure .elementor-control-structure-title:before { + height: 10px; + box-shadow: inset 0 2px 4px rgba(127, 127, 127, 0.1); +} +.elementor-control-type-structure .elementor-control-structure-presets { + display: flex; + flex-wrap: wrap; + justify-content: space-between; +} +.elementor-control-type-structure .elementor-control-structure-presets input { + display: none; +} +.elementor-control-type-structure .elementor-control-structure-presets input:checked + .elementor-control-structure-preset path { + fill: var(--e-a-border-color-focus); +} +.elementor-control-type-structure .elementor-control-structure-preset-wrapper { + margin-block-end: 15px; +} +.elementor-control-type-structure .elementor-control-structure-preset-title { + text-align: center; + padding-block-start: 5px; + font-style: italic; + font-size: 11px; + color: #9DA5AE; +} + +.elementor-control-type-switcher .elementor-control-input-wrapper { + text-align: end; +} +.elementor-control-type-switcher .elementor-switch { + position: relative; + display: inline-block; + vertical-align: top; + height: 20px; + background-color: var(--e-a-bg-default); + border-radius: 18px; + cursor: pointer; +} +.elementor-control-type-switcher .elementor-switch-input { + display: none; +} +.elementor-control-type-switcher .elementor-switch-label { + position: relative; + display: block; + height: inherit; + font-size: 10px; + background: var(--e-a-bg-active-bold); + border-radius: inherit; + transition: 0.15s ease-out; + transition-property: opacity, background; +} +.elementor-control-type-switcher .elementor-switch-label:before, .elementor-control-type-switcher .elementor-switch-label:after { + position: absolute; + top: 0; + width: 50%; + text-align: center; + line-height: 20px; + transition: inherit; +} +.elementor-control-type-switcher .elementor-switch-label:before { + content: attr(data-off); + right: 5px; + color: var(--e-a-color-txt-muted); +} +.elementor-control-type-switcher .elementor-switch-label:after { + content: attr(data-on); + left: 5px; + color: var(--e-a-btn-color); + opacity: 0; +} +.elementor-control-type-switcher .elementor-switch-input:checked ~ .elementor-switch-label { + background: var(--e-a-btn-bg-primary); +} +.elementor-control-type-switcher .elementor-switch-input:checked ~ .elementor-switch-label:before { + opacity: 0; +} +.elementor-control-type-switcher .elementor-switch-input:checked ~ .elementor-switch-label:after { + opacity: 1; +} +.elementor-control-type-switcher .elementor-switch-handle { + position: absolute; + top: 1px; + left: 1px; + width: 18px; + height: 18px; + background: white; + border-radius: 10px; + transition: left 0.15s ease-out; +} +.elementor-control-type-switcher .elementor-switch-input:checked ~ .elementor-switch-handle { + left: initial; + right: 1px; +} + +.elementor-control-type-tabs { + display: flex; + font-size: var(--control-title-size); +} + +.elementor-control-type-tab { + text-align: center; + width: 100%; + padding: 0; + line-height: 25px; + border-block-start: var(--e-a-border-bold); + border-block-end: var(--e-a-border-bold); + border-inline-end: var(--e-a-border-bold); + transition: var(--e-a-transition-hover); + cursor: pointer; +} +.elementor-control-type-tab:first-child { + border-inline-start: var(--e-a-border-bold); + border-start-start-radius: var(--e-a-border-radius); + border-end-start-radius: var(--e-a-border-radius); +} +.elementor-control-type-tab:last-child { + border-start-end-radius: var(--e-a-border-radius); + border-end-end-radius: var(--e-a-border-radius); +} +.elementor-control-type-tab:hover { + background-color: var(--e-a-bg-hover); +} +.elementor-control-type-tab.e-tab-active { + background-color: var(--e-a-bg-active-bold); + color: var(--e-a-color-txt-accent); +} + +.e-tab-close { + display: none !important; +} + +.elementor-control-type-textarea .elementor-control-dynamic-switcher, +.elementor-control-type-code .elementor-control-dynamic-switcher { + border-inline-start-width: 1px; + border-start-start-radius: 0; + border-start-end-radius: 0; + border-end-end-radius: 0; + border-end-start-radius: var(--e-a-border-radius); +} +.elementor-control-type-textarea:not(.elementor-control-dynamic-value) .elementor-control-dynamic-switcher, +.elementor-control-type-code:not(.elementor-control-dynamic-value) .elementor-control-dynamic-switcher { + position: absolute; + top: 0; + left: 0; + z-index: 1; +} +.elementor-control-type-textarea .elementor-control-input-wrapper, +.elementor-control-type-code .elementor-control-input-wrapper { + position: relative; +} +.elementor-control-type-textarea textarea, +.elementor-control-type-code textarea { + display: block; + font-family: inherit; +} +.elementor-control-type-textarea textarea:focus + .elementor-control-dynamic-switcher, +.elementor-control-type-code textarea:focus + .elementor-control-dynamic-switcher { + display: none; +} +.elementor-control-type-textarea pre:focus-within + .elementor-control-dynamic-switcher, +.elementor-control-type-code pre:focus-within + .elementor-control-dynamic-switcher { + display: none; +} + +.elementor-control-type-url .elementor-control-field { + position: relative; +} +.elementor-control-type-url .elementor-control-input-wrapper { + display: flex; +} +.elementor-control-type-url.elementor-control-dynamic .elementor-control-url-more-options input { + border-radius: var(--e-a-border-radius); +} +.elementor-control-type-url.elementor-control-dynamic-value .e-input-style { + border-start-end-radius: 0; + border-end-end-radius: 0; +} +.elementor-control-type-url.elementor-control-dynamic-value .elementor-control-url-more { + border-start-end-radius: var(--e-a-border-radius); + border-end-end-radius: var(--e-a-border-radius); +} +.elementor-control-type-url .elementor-control-url-more { + display: flex; + align-items: center; + justify-content: center; + flex-shrink: 0; + border: var(--e-a-border-bold); + color: currentColor; + background-color: transparent; + border-inline-start-width: 0; + cursor: pointer; +} +.elementor-control-type-url .elementor-control-url-more i { + font-size: 12px; +} +.elementor-control-type-url .elementor-control-url-more-options { + display: none; + padding-block-start: 10px; +} +.elementor-control-type-url .elementor-control-url-more-options .elementor-control-field-description { + margin-block-start: 10px; +} +.elementor-control-type-url .elementor-control-url-more:hover { + color: var(--e-a-color-txt-hover); +} +.elementor-control-type-url .elementor-control-url-more:focus { + color: var(--e-a-color-txt-active); + border-color: var(--e-a-border-color-focus); +} +.elementor-control-type-url .elementor-control-url-option { + display: flex; + align-items: center; +} +.elementor-control-type-url .elementor-control-url-option:not(:last-child) { + padding-block-end: 10px; +} +.elementor-control-type-url .elementor-control-url-option input, +.elementor-control-type-url .elementor-control-url-option label { + cursor: pointer; +} +.elementor-control-type-url .elementor-control-url-autocomplete-spinner { + display: none; + position: absolute; + top: 5px; + right: 0; + width: 10px; + height: 10px; + font-size: 10px; + color: var(--e-a-color-txt-disabled); +} +.elementor-control-type-url .elementor-control-url__custom-attributes label { + font-size: var(--control-title-size); +} +.elementor-control-type-url .elementor-control-url__custom-attributes input { + width: 100%; + margin-block-start: 10px; +} +.elementor-control-type-url .elementor-input:focus ~ div { + border-color: var(--e-a-border-color-focus); +} + +.elementor-autocomplete-menu { + position: absolute; + background: var(--e-a-bg-default); + border: var(--e-a-border); + margin: 0; + list-style: none; + padding: 4px 0; + height: auto; + width: 100%; + min-width: 260px; + max-width: 300px; + max-height: 200px; + overflow-y: auto; + border-radius: 3px; + transition: var(--e-a-transition-hover); + cursor: default; + z-index: 1; +} +.elementor-autocomplete-menu .ui-menu-item { + display: flex; + justify-content: space-between; + align-self: baseline; + padding: 5px 8px; + font-size: 12px; + width: 100%; + line-height: 1.2; + cursor: pointer; +} +.elementor-autocomplete-menu .ui-menu-item.ui-state-hover, .elementor-autocomplete-menu .ui-menu-item.ui-state-active, .elementor-autocomplete-menu .ui-menu-item.ui-state-focus { + background: var(--e-a-bg-hover); +} +.elementor-autocomplete-menu .elementor-autocomplete-item-info { + font-size: 10px; + padding-block-start: 2px; +} + +.elementor-control-type-wp_widget .widget-inside { + line-height: 2; + background-color: inherit; + display: block; +} +.elementor-control-type-wp_widget .quicktags-toolbar input { + width: auto; +} + +.elementor-control-type-wysiwyg * { + box-sizing: content-box; +} +.elementor-control-type-wysiwyg .wp-editor-container { + border: var(--e-a-border); +} +.elementor-control-type-wysiwyg .wp-editor-tabs { + border: var(--e-a-border-bold); + border-block-end: none; + border-start-start-radius: var(--e-a-border-radius); + border-start-end-radius: var(--e-a-border-radius); + border-end-end-radius: 0; + border-end-start-radius: 0; +} +.elementor-control-type-wysiwyg .wp-editor-tabs button:hover { + background-color: var(--e-a-bg-hover); +} +.elementor-control-type-wysiwyg #insert-media-button { + height: initial; + line-height: 24px; + font-size: 10px; + color: var(--e-a-color-txt); + border-color: var(--e-a-border-color-bold); + background-color: var(--e-a-bg-default); + min-height: initial; +} +.elementor-control-type-wysiwyg .ed_button { + height: 22px; + width: initial; +} +.elementor-control-type-wysiwyg .wp-media-buttons-icon { + height: 14px; + margin: 0; +} +.elementor-control-type-wysiwyg .wp-media-buttons-icon:before { + font-size: 14px; +} +.elementor-control-type-wysiwyg .wp-switch-editor { + position: static; + border: none; + margin: 0; + color: var(--e-a-color-txt); + font-size: 10px; + padding: 3px 9px 4px; +} +.elementor-control-type-wysiwyg .switch-html { + border: solid var(--e-a-border-color-bold); + border-width: 0 1px; +} +.elementor-control-type-wysiwyg .html-active .switch-tmce { + background-color: transparent; +} +.elementor-control-type-wysiwyg .html-active .switch-html { + background-color: var(--e-a-bg-active); +} +.elementor-control-type-wysiwyg .tmce-active .switch-tmce { + background-color: var(--e-a-bg-active); +} +.elementor-control-type-wysiwyg .tmce-active .switch-html { + background-color: transparent; +} +.elementor-control-type-wysiwyg .mce-toolbar-grp, +.elementor-control-type-wysiwyg .quicktags-toolbar { + background-color: var(--e-a-bg-default); +} +.elementor-control-type-wysiwyg .mce-toolbar .mce-btn-group .mce-btn.mce-listbox { + background-color: var(--e-a-bg-default); +} +.elementor-control-type-wysiwyg .mce-toolbar .mce-btn-group .mce-btn.mce-listbox button { + color: var(--e-a-color-txt); +} +.elementor-control-type-wysiwyg .mce-toolbar-grp > div { + padding: 0 3px; +} +.elementor-control-type-wysiwyg .elementor-wp-editor { + box-sizing: border-box; +} +.elementor-control-type-wysiwyg .mce-ico { + color: var(--e-a-color-txt); + font-size: 16px; +} +.elementor-control-type-wysiwyg .mce-btn-group .mce-btn:hover, .elementor-control-type-wysiwyg .mce-btn-group .mce-btn:active, .elementor-control-type-wysiwyg .mce-btn-group .mce-btn.mce-active { + color: var(--e-a-color-txt-active); + background: var(--e-a-bg-hover); + border-color: var(--e-a-border-color); + box-shadow: none; +} +.elementor-control-type-wysiwyg .mce-btn-group .mce-btn:hover i, .elementor-control-type-wysiwyg .mce-btn-group .mce-btn:active i, .elementor-control-type-wysiwyg .mce-btn-group .mce-btn.mce-active i { + color: var(--e-a-color-txt-active); +} +.elementor-control-type-wysiwyg .mce-path { + padding: 5px 10px; +} +.elementor-control-type-wysiwyg .mce-path-item { + font-size: 12px; + color: var(--e-a-color-txt); +} +.elementor-control-type-wysiwyg .mce-top-part:before { + box-shadow: none; +} +.elementor-control-type-wysiwyg .elementor-control-dynamic-switcher { + border: none; +} + +@media screen and (prefers-color-scheme: dark) { + #wp-link-wrap { + color-scheme: light; + --e-a-color-txt: #515962; + --e-a-bg-default: #ffffff; + --e-a-border-color-bold: #D5D8DC; + --e-a-color-primary-bold: #D004D4; + } + #wp-link { + color: var(--e-a-color-txt); + } + #wp-link input { + background-color: var(--e-a-bg-default); + border-color: var(--e-a-border-color-bold); + } + #wp-link input[type=checkbox] { + border-color: var(--e-a-border-color-bold); + } + #wp-link input[type=checkbox]:checked { + background: var(--e-a-color-primary-bold); + } + #wp-link input.button-primary { + background: #2271b1; + border-color: #2271b1; + color: #fff; + } +} +#elementor-mode-switcher { + --e-a-mode-switcher-width: 15px; + --e-a-mode-switcher-height: 50px; + --e-a-mode-switcher-icon-size: 15px; + position: absolute; + right: 100%; + top: 50%; + transform: translateY(-50%); + background-color: var(--e-a-bg-default); + box-shadow: -3px 1px 3px rgba(0, 0, 0, 0.05); + transition: 0.3s opacity; +} +#elementor-mode-switcher:hover { + background-color: var(--e-a-bg-hover); +} +#elementor-mode-switcher:focus-within { + background-color: var(--e-a-bg-active); +} +.e-panel-block-interactions #elementor-mode-switcher { + opacity: 0; + pointer-events: none; +} +#elementor-mode-switcher-preview i { + display: flex; + flex-direction: column; + justify-content: center; + width: var(--e-a-mode-switcher-width); + height: var(--e-a-mode-switcher-height); + font-size: var(--e-a-mode-switcher-icon-size); + cursor: pointer; +} +#elementor-mode-switcher-preview-input { + display: none; +} + +.elementor-revision-item__wrapper { + display: flex; + align-items: center; + text-align: start; + width: 100%; + border: var(--e-a-border); + border-radius: var(--e-a-border-radius); + padding: 10px 15px; + margin-block-end: 10px; + font-size: 11px; + transition: var(--e-a-transition-hover); + background-color: transparent; +} +.elementor-revision-item__wrapper:hover, .elementor-revision-item__wrapper:focus { + background-color: var(--e-a-bg-hover); +} +.elementor-revision-item-loading .elementor-revision-item__tools-current { + display: none; +} +.elementor-revision-item:not(.elementor-revision-item-loading) .elementor-revision-item__tools-spinner { + display: none; +} +.elementor-revision-item__gravatar { + border-radius: 50%; + overflow: hidden; +} +.elementor-revision-item__gravatar img { + display: block; +} +.elementor-revision-item__details { + padding-inline-start: 15px; + flex-grow: 1; + cursor: pointer; +} +.elementor-revision-meta { + padding-block-start: 5px; + font-size: 10px; + font-weight: bold; +} +.elementor-revision-current-preview .elementor-revision-item__wrapper { + border-color: var(--e-a-border-color-accent); + background-color: var(--e-a-bg-active); +} + +#elementor-panel-revisions-loading { + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); +} +#elementor-panel-revisions-loading .eicon-loading { + font-size: 50px; +} + +.elementor-panel-revisions-buttons { + display: flex; + justify-content: space-between; + padding: 15px 20px; + border-block-end: var(--e-a-border); +} + +.elementor-history-item { + display: flex; + align-items: center; + text-align: start; + border: var(--e-a-border); + border-radius: var(--e-a-border-radius); + padding: 10px 15px; + margin-block-end: 10px; + width: 100%; + font-size: 11px; + line-height: 1.4; + background-color: transparent; + cursor: pointer; + transition: var(--e-a-transition-hover); +} +.elementor-history-item:hover:not(.elementor-history-item-current), .elementor-history-item:focus:not(.elementor-history-item-current) { + background-color: var(--e-a-bg-hover); + color: var(--e-a-txt-color-hover); +} +.elementor-history-item:hover:not(.elementor-history-item-current) .elementor-history-item__icon .eicon:before, .elementor-history-item:focus:not(.elementor-history-item-current) .elementor-history-item__icon .eicon:before { + content: "\e924"; +} +.elementor-history-item-current { + border-color: var(--e-a-border-color-accent); + background-color: var(--e-a-bg-active); + color: var(--e-a-txt-color-active); +} +.elementor-history-item-current .elementor-history-item__icon .eicon:before, .elementor-history-item-current:hover .elementor-history-item__icon .eicon:before, .elementor-history-item-current:focus .elementor-history-item__icon .eicon:before { + content: "\e90e"; +} +.elementor-history-item__details { + width: 95%; +} +.elementor-history-item__title { + font-weight: bold; +} +.elementor-history-item__subtitle, .elementor-history-item__action { + font-weight: lighter; +} +.elementor-history-item__action { + font-style: italic; + text-decoration: underline; +} +.elementor-history-revisions-message { + font-size: 11px; + text-align: center; + padding-block-start: 5px; +} + +#elementor-panel-history { + padding: 20px; + padding-block-end: 15px; +} +#elementor-panel-history.elementor-empty .elementor-history-revisions-message { + padding-block-start: 20px; +} +#elementor-panel-history:not(.elementor-empty) { + margin-block-start: 10px; +} + +#elementor-panel-history-no-items, +#elementor-panel-revisions-no-revisions { + text-align: center; +} +#elementor-panel-history-no-items .elementor-nerd-box-icon, +#elementor-panel-revisions-no-revisions .elementor-nerd-box-icon { + margin-block-start: 20px; +} + +.e-control-display-conditions-promotion__wrapper { + display: flex; + justify-content: space-between; +} +.e-control-display-conditions-promotion__wrapper:hover .eicon-lock.e-control-display-conditions-promotion { + color: var(--e-a-color-accent); +} +.e-control-display-conditions-promotion__description { + display: flex; + align-self: center; +} +.e-control-display-conditions-promotion__text { + display: inline-block; +} +.e-control-display-conditions-promotion__lock-wrapper { + width: 2.5rem; + display: flex; + justify-content: center; + align-items: center; +} +.e-control-display-conditions-promotion.eicon-flow { + align-self: flex-end; + cursor: pointer; + border: var(--e-a-border-bold); + border-radius: var(--e-a-border-radius); + padding: 5px; +} +.e-control-display-conditions-promotion.eicon-flow.filled { + background-color: var(--e-a-bg-active); + color: #E73CF6; +} + +.e-control-motion-effects-promotion__wrapper:hover .eicon-lock { + color: var(--e-a-color-accent); +} +.e-control-motion-effects-promotion__wrapper .select-promotion { + display: flex; + flex-direction: column; + justify-content: center; + padding-inline-start: 5px; + padding-inline-end: 20px; + cursor: pointer; + height: 27px; + width: 100%; + color: var(--e-a-color-txt); + border-radius: var(--e-a-border-radius); + background-color: var(--e-a-bg-default); + box-shadow: none; + border: var(--e-a-border-bold); + font-size: var(--control-title-size); +} +.e-control-motion-effects-promotion__lock-wrapper { + width: 2.5rem; + display: flex; + justify-content: center; + align-items: center; +} + +.e-link-promotion { + font-family: "Roboto", sans-serif; + font-weight: 500; + color: #93003f; +} +.e-link-promotion:hover { + color: #93003f; +} + +.elementor-panel #elementor-panel-header #elementor-panel-header-kit-close, +.elementor-panel #elementor-panel-header #elementor-panel-header-kit-back { + display: none; +} + +.elementor-editor-kit .elementor-panel #elementor-panel-header #elementor-panel-header-kit-close, +.elementor-editor-kit .elementor-panel #elementor-panel-header #elementor-panel-header-kit-back { + display: flex; +} +body:not(.e-routes-has-history) #elementor-panel-header-kit-back { + pointer-events: none; + visibility: hidden; +} + +.elementor-editor-kit .elementor-panel #elementor-panel-page-settings .elementor-panel-navigation { + display: none; +} +.elementor-editor-kit .elementor-panel #elementor-panel-page-menu { + padding: 25px 15px 0; +} +.elementor-editor-kit #elementor-panel-header-add-button, +.elementor-editor-kit #elementor-panel-header-menu-button, +.elementor-editor-kit #elementor-panel-footer-sub-menu-item-save-template, +.elementor-editor-kit #elementor-panel-footer-navigator { + display: none; +} + +.elementor-control-type-global-style-repeater .elementor-repeater-fields { + margin-block-end: 15px; + position: relative; +} +.elementor-control-type-global-style-repeater .elementor-repeater-fields.ui-sortable-helper { + background-color: var(--e-a-bg-default); +} +.elementor-control-type-global-style-repeater .elementor-repeater-row-controls { + display: flex; + align-items: center; +} +.elementor-control-type-global-style-repeater .elementor-repeater-row-tool { + cursor: pointer; + color: var(--e-a-color-txt); + background-color: transparent; + border: none; + padding: 5px; +} +.elementor-control-type-global-style-repeater .elementor-repeater-row-tool:focus, .elementor-control-type-global-style-repeater .elementor-repeater-row-tool:hover { + color: var(--e-a-color-txt-hover); +} +.elementor-control-type-global-style-repeater .elementor-control { + padding: 0; +} +.elementor-control-type-global-style-repeater .elementor-control-title { + flex-grow: 1; +} +.elementor-control-type-global-style-repeater .elementor-control-title input { + max-width: 135px; +} +.elementor-control-type-global-style-repeater .elementor-control-title input:not(:focus) { + background: none; + border: none; +} +.elementor-control-type-global-style-repeater .elementor-control-input-wrapper { + display: flex; + align-items: center; + min-width: 81px; +} +.elementor-control-type-global-style-repeater .elementor-control-input-wrapper:hover .e-global-colors__color-value { + display: none; +} +.elementor-control-type-global-style-repeater .elementor-control-input-wrapper:not(:hover) .elementor-repeater-tool-remove, .elementor-control-type-global-style-repeater .elementor-control-input-wrapper:not(:hover) .elementor-repeater-tool-remove--disabled, .elementor-control-type-global-style-repeater .elementor-control-input-wrapper:not(:hover) .elementor-repeater-tool-sort { + display: none; +} +.elementor-control-type-global-style-repeater .elementor-repeater-row-controls > .elementor-control > .elementor-control-content > .elementor-control-field > .elementor-control-input-wrapper { + margin-block-start: 0; +} +.elementor-control-type-global-style-repeater .elementor-controls-popover { + align-self: end; + margin-block-start: 35px; + top: 0; + width: 100%; +} +.elementor-control-type-global-style-repeater .elementor-controls-popover:before { + left: 5px; +} +.elementor-control-type-global-style-repeater .elementor-controls-popover .elementor-control { + padding: 0 20px 15px; +} +.elementor-control-type-global-style-repeater .elementor-controls-popover .elementor-control-title { + flex-grow: initial; +} +.elementor-control-type-global-style-repeater .elementor-button-wrapper { + text-align: center; + border-block-start: var(--e-a-border); + padding-block-start: 15px; +} +.elementor-control-type-global-style-repeater .pickr, +.elementor-control-type-global-style-repeater .elementor-control-popover-toggle-toggle-label { + margin-inline-start: 5px; +} +.elementor-control-type-global-style-repeater .e-sortable-placeholder { + background-color: var(--e-a-color-info); + opacity: 0.9; + width: 100%; + margin: 8px 0; + height: 2px; +} +.elementor-control-system_colors, .elementor-control-system_typography { + padding-block-end: 0; +} + +.e-global-colors__color-value { + font-size: 10px; + padding: 0 5px; + text-align: end; + white-space: nowrap; + text-overflow: ellipsis; + overflow: hidden; +} + +@keyframes load { + 0% { + opacity: 0.3; + } + 50% { + opacity: 1; + } + 100% { + opacity: 0.3; + } +} +@keyframes fadeIn { + from { + opacity: 0; + } + to { + opacity: 1; + } +} +@keyframes mover { + 0% { + transform: translateY(0); + } + 100% { + transform: translateY(-5px); + } +} +@keyframes slideDown { + 0% { + transform: translateY(-30px); + } + 100% { + transform: translateY(0); + } +} +.elementor-button, +.e-btn { + font-size: 12px; + font-weight: 500; + line-height: 1.2; + padding: 8px 16px; + outline: none; + border: none; + border-radius: var(--e-a-border-radius); + background-color: var(--e-a-btn-bg); + color: var(--e-a-btn-color-invert); + transition: var(--e-a-transition-hover); +} +.elementor-button:hover, +.e-btn:hover { + border: none; +} +.elementor-button:hover, .elementor-button:focus, +.e-btn:hover, +.e-btn:focus { + background-color: var(--e-a-btn-bg-hover); + color: var(--e-a-btn-color-invert); +} +.elementor-button:active, +.e-btn:active { + background-color: var(--e-a-btn-bg-active); +} +.elementor-button:not([disabled]), +.e-btn:not([disabled]) { + cursor: pointer; +} +.elementor-button:disabled, +.e-btn:disabled { + background-color: var(--e-a-btn-bg-disabled); + color: var(--e-a-btn-color-disabled); +} +.elementor-button:not(.elementor-button-state) .elementor-state-icon, +.e-btn:not(.elementor-button-state) .elementor-state-icon { + display: none; +} +.elementor-button.e-btn-txt, +.e-btn.e-btn-txt { + background: transparent; + color: var(--e-a-color-txt); +} +.elementor-button.e-btn-txt:hover, .elementor-button.e-btn-txt:focus, +.e-btn.e-btn-txt:hover, +.e-btn.e-btn-txt:focus { + background: var(--e-a-bg-hover); + color: var(--e-a-color-txt-hover); +} +.elementor-button.e-btn-txt:disabled, +.e-btn.e-btn-txt:disabled { + background: transparent; + color: var(--e-a-color-txt-disabled); +} +.elementor-button.e-btn-txt-border, +.e-btn.e-btn-txt-border { + border: 1px solid var(--e-a-color-txt-muted); +} +.elementor-button.elementor-button-success, .elementor-button.e-success, +.e-btn.elementor-button-success, +.e-btn.e-success { + background-color: var(--e-a-btn-bg-success); +} +.elementor-button.elementor-button-success:hover, .elementor-button.elementor-button-success:focus, .elementor-button.e-success:hover, .elementor-button.e-success:focus, +.e-btn.elementor-button-success:hover, +.e-btn.elementor-button-success:focus, +.e-btn.e-success:hover, +.e-btn.e-success:focus { + background-color: var(--e-a-btn-bg-success-hover); +} +.elementor-button.e-primary, +.e-btn.e-primary { + background-color: var(--e-a-btn-bg-primary); + color: var(--e-a-btn-color); +} +.elementor-button.e-primary:hover, .elementor-button.e-primary:focus, +.e-btn.e-primary:hover, +.e-btn.e-primary:focus { + background-color: var(--e-a-btn-bg-primary-hover); + color: var(--e-a-btn-color); +} +.elementor-button.e-primary.e-btn-txt, +.e-btn.e-primary.e-btn-txt { + background: transparent; + color: var(--e-a-color-primary-bold); +} +.elementor-button.e-primary.e-btn-txt:hover, .elementor-button.e-primary.e-btn-txt:focus, +.e-btn.e-primary.e-btn-txt:hover, +.e-btn.e-primary.e-btn-txt:focus { + background: var(--e-a-bg-primary); +} +.elementor-button.go-pro, .elementor-button.e-accent, +.e-btn.go-pro, +.e-btn.e-accent { + background-color: var(--e-a-btn-bg-accent); +} +.elementor-button.go-pro:hover, .elementor-button.go-pro:focus, .elementor-button.e-accent:hover, .elementor-button.e-accent:focus, +.e-btn.go-pro:hover, +.e-btn.go-pro:focus, +.e-btn.e-accent:hover, +.e-btn.e-accent:focus { + background-color: var(--e-a-btn-bg-accent-hover); +} +.elementor-button.go-pro:active, .elementor-button.e-accent:active, +.e-btn.go-pro:active, +.e-btn.e-accent:active { + background-color: var(--e-a-btn-bg-accent-active); +} +.elementor-button.elementor-button-info, .elementor-button.e-info, +.e-btn.elementor-button-info, +.e-btn.e-info { + background-color: var(--e-a-btn-bg-info); +} +.elementor-button.elementor-button-info:hover, .elementor-button.elementor-button-info:focus, .elementor-button.e-info:hover, .elementor-button.e-info:focus, +.e-btn.elementor-button-info:hover, +.e-btn.elementor-button-info:focus, +.e-btn.e-info:hover, +.e-btn.e-info:focus { + background-color: var(--e-a-btn-bg-info-hover); +} +.elementor-button.elementor-button-warning, .elementor-button.e-warning, +.e-btn.elementor-button-warning, +.e-btn.e-warning { + background-color: var(--e-a-btn-bg-warning); +} +.elementor-button.elementor-button-warning:hover, .elementor-button.elementor-button-warning:focus, .elementor-button.e-warning:hover, .elementor-button.e-warning:focus, +.e-btn.elementor-button-warning:hover, +.e-btn.elementor-button-warning:focus, +.e-btn.e-warning:hover, +.e-btn.e-warning:focus { + background-color: var(--e-a-btn-bg-warning-hover); +} +.elementor-button.elementor-button-danger, .elementor-button.e-danger, +.e-btn.elementor-button-danger, +.e-btn.e-danger { + background-color: var(--e-a-btn-bg-danger); +} +.elementor-button.elementor-button-danger:hover, .elementor-button.elementor-button-danger:focus, .elementor-button.e-danger:hover, .elementor-button.e-danger:focus, +.e-btn.elementor-button-danger:hover, +.e-btn.elementor-button-danger:focus, +.e-btn.e-danger:hover, +.e-btn.e-danger:focus { + background-color: var(--e-a-btn-bg-danger-hover); +} +.elementor-button i, +.e-btn i { + margin-inline-end: 5px; +} + +body { + --e-preview-width: calc(100% - var(--e-editor-panel-width, 300px)); +} +body.elementor-navigator-docked { + --e-preview-width: calc(100% - var(--e-editor-panel-width, 300px) - var(--e-editor-navigator-width, 0px)); +} +body.elementor-device-desktop #elementor-preview { + overflow-y: hidden; + align-items: flex-start; +} +body:not(.elementor-device-desktop) body { + overflow-y: auto; +} + +#elementor-preview { + background-color: #333; + height: 100%; + border: 0; + width: var(--e-preview-width); + display: flex; + flex-direction: column; + justify-content: flex-start; + align-items: center; + position: relative; + direction: ltr; +} +#elementor-preview > div { + direction: rtl; +} + +#elementor-preview-responsive-wrapper { + transform-origin: top center; + padding: 20px; + transform: scale(var(--e-preview-scale, 1)); +} +.elementor-device-desktop #elementor-preview-responsive-wrapper { + min-width: 1025px; + width: 100%; + height: 100%; + padding: 0; + position: relative; +} +body.e-is-device-mode:not(.elementor-device-desktop) #elementor-preview-responsive-wrapper { + width: var(--e-editor-preview-width); + height: var(--e-editor-preview-height); + margin: 0 max((100vw - var(--e-editor-panel-width) - var(--e-editor-preview-width)) / 2, 20px); + box-sizing: content-box; + position: relative; + max-height: calc(100vh - 80px); +} +body.e-is-device-mode:not(.elementor-device-desktop) #elementor-preview-responsive-wrapper .ui-resizable-handle { + display: flex !important; +} +#elementor-preview-responsive-wrapper:not(.ui-resizable-resizing) { + transition: 0.3s ease-in-out; +} +#elementor-preview-responsive-wrapper .ui-resizable-handle { + top: 0; +} +#elementor-preview-responsive-wrapper .ui-resizable-handle.ui-resizable-s { + top: auto; + bottom: 0; +} +#elementor-preview-responsive-wrapper .ui-resizable-n, #elementor-preview-responsive-wrapper .ui-resizable-s { + align-items: center; + justify-content: center; + height: 20px; +} +#elementor-preview-responsive-wrapper .ui-resizable-n:before, #elementor-preview-responsive-wrapper .ui-resizable-s:before { + content: ""; + display: block; + background-color: rgba(255, 255, 255, 0.2); + width: 50px; + height: 4px; + border-radius: 3px; + transition: all 0.2s ease-in-out; +} +#elementor-preview-responsive-wrapper .ui-resizable-n:hover:before, #elementor-preview-responsive-wrapper .ui-resizable-s:hover:before { + background-color: rgba(255, 255, 255, 0.6); + width: 100px; +} +#elementor-preview-responsive-wrapper .ui-resizable-e, +#elementor-preview-responsive-wrapper .ui-resizable-w { + align-items: center; + justify-content: center; + width: 20px; +} +#elementor-preview-responsive-wrapper .ui-resizable-e:before, +#elementor-preview-responsive-wrapper .ui-resizable-w:before { + content: ""; + display: block; + background-color: rgba(255, 255, 255, 0.2); + width: 4px; + height: 50px; + border-radius: 3px; + transition: all 0.2s ease-in-out; +} +#elementor-preview-responsive-wrapper .ui-resizable-e:hover:before, +#elementor-preview-responsive-wrapper .ui-resizable-w:hover:before { + background-color: rgba(255, 255, 255, 0.6); + height: 100px; +} +#elementor-preview-responsive-wrapper.ui-resizable-resizing .ui-resizable-handle:before { + background-color: rgba(255, 255, 255, 0.9); +} +#elementor-preview-responsive-wrapper .ui-resizable-s { + bottom: 0; +} +#elementor-preview-responsive-wrapper .ui-resizable-e { + right: 0; +} +#elementor-preview-responsive-wrapper .ui-resizable-w { + left: 0; +} + +#elementor-preview-iframe { + width: 100%; + height: 100%; + background-color: #fff; + box-shadow: 0 0 3px rgba(0, 0, 0, 0.3), 0 0 20px rgba(0, 0, 0, 0.15); +} + +#elementor-template-library-modal a.elementor-template-library-blank-footer-link { + font-style: normal; + text-decoration: underline; +} +#elementor-template-library-modal .dialog-buttons-wrapper { + display: none; +} +#elementor-template-library-modal .select2-container { + z-index: 0; +} +#elementor-template-library-modal .dialog-message { + overflow-y: scroll; +} + +#elementor-template-library-header-menu { + text-align: center; +} + +.elementor-template-library-menu-item { + display: inline-block; + padding: 17px 20px; + border-block-end: 3px solid transparent; + cursor: pointer; +} +.elementor-template-library-menu-item:hover { + background-color: var(--e-a-bg-hover); + border-color: var(--e-a-bg-hover); +} +.elementor-template-library-menu-item.elementor-active { + border-color: var(--e-a-border-color-accent); + color: var(--e-a-color-txt-accent); +} + +#elementor-template-library-header-actions { + display: flex; +} +#elementor-template-library-header-actions > div { + padding-inline-end: 16px; +} + +#elementor-template-library-header-preview-insert-wrapper { + cursor: default; + padding: 0 10px; +} + +.elementor-template-library-template-insert + .elementor-template-library-template-generate-variation { + margin-inline-start: 4px; +} + +#elementor-template-library-header-preview-back { + padding-block: 16.5px 15px; + padding-inline: 0 16.5px; + border-inline-end: var(--e-a-border); + cursor: pointer; + transition: color 0.5s; +} +#elementor-template-library-header-preview-back:hover { + color: var(--e-a-color-txt-hover); +} +#elementor-template-library-header-preview-back i { + padding-inline-end: 10px; + font-size: 18px; +} +#elementor-template-library-header-preview-back i:before { + content: "\e87d"; +} + +#elementor-template-library-templates[data-template-source=local] #elementor-template-library-templates-container { + margin-block-start: 10px; + margin-block-end: 45px; + border-block-start: var(--e-a-border); +} +#elementor-template-library-templates[data-template-source=local] .elementor-template-library-order-input:checked + .elementor-template-library-order-label { + color: var(--e-a-color-txt-active); +} +#elementor-template-library-templates[data-template-source=remote] #elementor-template-library-templates-container { + margin: 10px -15px 0; +} +#elementor-template-library-templates[data-template-source=remote] .elementor-template-library-order-input:checked + .elementor-template-library-order-label { + color: var(--e-a-color-txt-active); +} +#elementor-template-library-templates[data-template-source=empty] #elementor-template-library-order-toolbar-local, +#elementor-template-library-templates[data-template-source=empty] #elementor-template-library-footer-banner { + display: none; +} +#elementor-template-library-templates.elementor-templates-filter-active #elementor-template-library-footer-banner { + display: none; +} +#elementor-template-library-templates .elementor-template-library-order-input { + display: none; +} +#elementor-template-library-templates .elementor-template-library-order-input:checked + .elementor-template-library-order-label { + padding-inline-end: 8px; +} +#elementor-template-library-templates .elementor-template-library-order-input:checked + .elementor-template-library-order-label:after { + font-family: eicons; + content: "\e8ae"; + margin-inline-start: 3px; +} +#elementor-template-library-templates .elementor-template-library-order-input:checked.elementor-template-library-order-reverse + .elementor-template-library-order-label:after { + content: "\e8ad"; +} + +#elementor-template-library-templates-container { + display: flex; + flex-wrap: wrap; + align-items: flex-start; +} + +#elementor-template-library-toolbar { + display: flex; + justify-content: space-between; + align-items: center; +} + +.elementor-template-library-filter-toolbar { + display: flex; + align-items: center; +} + +#elementor-template-library-filter-toolbar-remote { + font-size: 11px; +} + +#elementor-template-library-order { + display: flex; + border-inline-end: var(--e-a-border); +} + +.elementor-template-library-order-label { + text-transform: uppercase; + padding-inline-end: 22px; + -webkit-user-select: none; + -moz-user-select: none; + user-select: none; +} + +label.elementor-template-library-order-label { + cursor: pointer; +} +label.elementor-template-library-order-label:hover { + color: var(--e-a-color-txt-hover); +} + +#elementor-template-library-filter .select2 { + text-align: start; + width: calc(27px * 5) !important; +} +#elementor-template-library-filter .select2-selection__rendered { + text-transform: capitalize; +} + +#select2-elementor-template-library-filter-subtype-results .select2-results__option { + text-transform: capitalize; + text-align: start; + padding-inline-start: 5px; +} + +#elementor-template-library-my-favorites { + flex-grow: 1; + text-align: start; + padding-inline-start: 20px; +} + +#elementor-template-library-filter-my-favorites { + display: none; +} +#elementor-template-library-filter-my-favorites:checked + #elementor-template-library-filter-my-favorites-label { + color: var(--e-a-color-txt-active); +} +#elementor-template-library-filter-my-favorites:checked + #elementor-template-library-filter-my-favorites-label i:after { + color: var(--e-a-color-primary-bold); + content: "\e93f"; +} + +#elementor-template-library-filter-my-favorites-label { + cursor: pointer; + text-transform: uppercase; +} +#elementor-template-library-filter-my-favorites-label:hover { + color: var(--e-a-color-txt-hover); +} +#elementor-template-library-filter-my-favorites-label:hover i:after { + color: var(--e-a-color-primary-bold); +} +#elementor-template-library-filter-my-favorites-label i { + padding-inline-end: 5px; +} +#elementor-template-library-filter-my-favorites-label i:after { + content: "\e923"; +} + +#elementor-template-library-filter-text-wrapper { + width: 200px; + position: relative; +} +#elementor-template-library-filter-text-wrapper i { + position: absolute; + top: 50%; + left: 0; + transform: translateY(-50%); +} + +#elementor-template-library-filter-text { + border: none; + border-block-end: var(--e-a-border-bold); + border-radius: 0; + font-size: 11px; + padding: 8px 15px 8px 0; + transition: border 0.5s; +} +#elementor-template-library-filter-text:focus { + border-color: var(--e-a-border-color-focus); +} +#elementor-template-library-filter-text::-moz-placeholder { + font-weight: 300; + text-transform: uppercase; +} +#elementor-template-library-filter-text::placeholder { + font-weight: 300; + text-transform: uppercase; +} + +.elementor-template-library-template-remote { + margin: calc(30px / 2); + padding: 8px; + border: var(--e-a-border); + border-radius: 3px; +} +.elementor-template-library-template-remote:hover { + background-color: var(--e-a-bg-hover); +} +.elementor-template-library-template-remote:hover .elementor-template-library-template-name { + display: none; +} +.elementor-template-library-template-remote:not(:hover) .elementor-template-library-template-preview { + opacity: 0; +} +.elementor-template-library-template-remote:not(:hover) .elementor-template-library-favorite, +.elementor-template-library-template-remote:not(:hover) .elementor-template-library-template-action { + display: none; +} +.elementor-template-library-template-remote.elementor-template-library-pro-template .elementor-template-library-template-body:before { + content: var(--elementor-template-library-subscription-plan-label); + background-color: var(--e-a-color-accent); + color: var(--e-a-color-white); + position: absolute; + text-transform: uppercase; + line-height: 1; + top: 5px; + left: 5px; + padding: 3px 5px; + font-size: 8px; + border-radius: 2px; +} +.elementor-template-library-template-remote:not(.elementor-template-library-template-page):not(.elementor-template-library-template-lp) { + position: relative; + width: calc(33.333% - 30px); + overflow: hidden; +} +.elementor-template-library-template-remote:not(.elementor-template-library-template-page):not(.elementor-template-library-template-lp) img { + display: block; + width: 100%; +} +.elementor-template-library-template-remote:not(.elementor-template-library-template-page):not(.elementor-template-library-template-lp) .elementor-template-library-template-footer { + position: absolute; + width: 100%; + bottom: 0; + right: 0; + padding: 10px; + background-color: var(--e-a-bg-default); + transition: transform 0.5s; +} +.elementor-template-library-template-remote:not(.elementor-template-library-template-page):not(.elementor-template-library-template-lp) .elementor-template-library-template-name { + display: none; +} +.elementor-template-library-template-remote:not(.elementor-template-library-template-page):not(.elementor-template-library-template-lp):not(:hover) .elementor-template-library-template-footer { + transform: translateY(100%); +} +.elementor-template-library-template-remote .elementor-template-library-template-body { + position: relative; +} +@media (max-width: 1025px) { + .elementor-template-library-template-remote .elementor-template-library-template-body { + height: 300px; + } +} +.elementor-template-library-template-remote .elementor-template-library-template-screenshot { + height: 100%; + background-size: cover; + background-position-x: 50%; + box-shadow: inset 0px -2px 15px -6px rgba(0, 0, 0, 0.07); +} +.elementor-template-library-template-remote .elementor-template-library-template-preview { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + background-color: rgba(0, 0, 0, 0.5); + transition: opacity 0.5s; + cursor: pointer; +} +.elementor-template-library-template-remote .elementor-template-library-template-preview i { + font-size: 20px; + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); +} +.elementor-template-library-template-remote .elementor-template-library-template-footer { + display: flex; + justify-content: space-between; + font-size: 11px; + line-height: 1; + height: 40px; + align-items: center; +} +.elementor-template-library-template-remote .elementor-template-library-template-name { + text-align: start; + flex-grow: 1; + white-space: nowrap; + text-overflow: ellipsis; + overflow: hidden; + padding-inline-end: 5px; +} +.elementor-template-library-template-remote .elementor-template-library-favorite { + margin-inline-start: auto; +} +.elementor-template-library-template-remote .elementor-template-library-template-favorite-input { + display: none; +} +.elementor-template-library-template-remote .elementor-template-library-template-favorite-input:checked + .elementor-template-library-template-favorite-label i:before { + content: "\e93f"; + color: var(--e-a-color-primary-bold); +} +.elementor-template-library-template-remote .elementor-template-library-template-favorite-label { + font-size: 15px; + cursor: pointer; +} +.elementor-template-library-template-remote .elementor-template-library-template-favorite-label:hover i { + color: var(--e-a-color-primary-bold); +} + +@media (max-width: 1439px) { + .elementor-template-library-template-page, + .elementor-template-library-template-lp { + width: calc(25% - 30px); + } +} +@media (min-width: 1440px) { + .elementor-template-library-template-page, + .elementor-template-library-template-lp { + width: calc(20% - 30px); + } +} +@media (max-width: 1025px) { + .elementor-template-library-template-page, + .elementor-template-library-template-lp { + width: calc(33.333% - 30px); + } +} +.elementor-template-library-template-page .elementor-template-library-template-body, +.elementor-template-library-template-lp .elementor-template-library-template-body { + height: 200px; +} + +#elementor-template-library-order-toolbar-local, +.elementor-template-library-template-local { + display: flex; + align-items: center; + padding: 0 25px; + text-align: start; +} + +#elementor-template-library-order-toolbar-local { + margin-block-start: 30px; +} +#elementor-template-library-order-toolbar-local .elementor-template-library-order-label { + line-height: 1; + font-size: 10px; + font-weight: 500; +} + +.elementor-template-library-template-local { + height: 50px; + width: 100%; + margin-block-start: 1px; + transition: background-color 0.3s linear; +} +.elementor-template-library-template-local:hover { + background-color: var(--e-a-bg-hover); +} +.elementor-template-library-template-local:first-child { + border-start-start-radius: 3px; + border-start-end-radius: 3px; + border-end-start-radius: 0; + border-end-end-radius: 0; +} +.elementor-template-library-template-local:last-child { + border-start-start-radius: 0; + border-start-end-radius: 0; + border-end-start-radius: 3px; + border-end-end-radius: 3px; +} +.elementor-template-library-template-local .elementor-template-library-template-name { + font-weight: 500; +} +.elementor-template-library-template-local .elementor-template-library-template-name, +.elementor-template-library-template-local .elementor-template-library-template-meta { + padding-inline-end: 20px; +} +.elementor-template-library-template-local .elementor-template-library-template-name, +.elementor-template-library-template-local .elementor-template-library-template-meta, +.elementor-template-library-template-local .elementor-template-library-template-preview, +.elementor-template-library-template-local .elementor-template-library-template-action { + white-space: nowrap; + text-overflow: ellipsis; + overflow: hidden; +} +.elementor-template-library-template-local .elementor-template-library-template-controls { + position: relative; + display: flex; + align-items: center; +} +.elementor-template-library-template-local .elementor-template-library-template-controls > div { + cursor: pointer; + transition: color 0.5s; +} +.elementor-template-library-template-local .elementor-template-library-template-insert i { + margin-inline-end: 3px; +} +.elementor-template-library-template-local .elementor-template-library-template-control-title { + margin-inline-start: 6px; +} +.elementor-template-library-template-local .elementor-template-library-template-more .elementor-template-library-template-delete:hover { + color: var(--e-a-color-danger); +} +.elementor-template-library-template-local .elementor-template-library-template-more { + display: none; + position: absolute; + background-color: var(--e-a-bg-default); + padding: 3px 20px; + border-radius: var(--e-a-border-radius); + box-shadow: 1px 3px 11px rgba(0, 0, 0, 0.3); + top: 100%; + left: 0; + transform: translateX(-65%) translateY(-7px); + z-index: 1; +} +.elementor-template-library-template-local .elementor-template-library-template-more:before { + content: ""; + position: absolute; + border: solid transparent; + border-width: 8px 4px; + border-block-end-color: var(--e-a-color-white); + transform: translateY(-100%); +} +.elementor-template-library-template-local .elementor-template-library-template-more > div { + margin: 10px 0; + font-size: 11px; +} +.elementor-template-library-template-local .elementor-template-library-template-more a { + color: var(--e-a-color-txt); +} +.elementor-template-library-template-local .elementor-template-library-template-more-toggle { + flex-grow: 1; + text-align: end; +} +.elementor-template-library-template-local .elementor-template-library-template-more-toggle i { + font-size: 16px; +} + +#elementor-template-library-preview { + height: 100%; + overflow: hidden; +} +#elementor-template-library-preview iframe { + height: 150%; + transform: scale(0.666) translateX(25%) translateY(-25%); +} +@media (max-width: 1439px) { + #elementor-template-library-preview iframe { + width: 1440px; + } +} +@media (min-width: 1440px) { + #elementor-template-library-preview iframe { + width: 1730px; + } +} + +.elementor-template-library-blank-icon { + font-size: 64px; + margin-block-start: 45px; + line-height: 1; +} +.elementor-template-library-blank-icon img { + width: 70px; +} +.elementor-template-library-blank-icon .elementor-template-library-no-results { + width: 200px; +} + +.elementor-template-library-blank-title { + font-size: 30px; + margin-block-start: 20px; +} +@media (max-width: 1439px) { + .elementor-template-library-blank-title { + font-size: 25px; + } +} + +.elementor-template-library-blank-message { + font-size: 18px; + margin-block-start: 15px; + font-weight: 300; +} +@media (max-width: 1439px) { + .elementor-template-library-blank-message { + font-size: 16px; + margin-block-start: 10px; + } +} + +#elementor-template-library-save-template-form { + margin-block-start: 40px; + display: flex; + align-items: center; + justify-content: center; +} +#elementor-template-library-save-template-form > * { + height: 55px; + font-size: 16px; +} + +#elementor-template-library-save-template-name { + width: 500px; + padding-inline-start: 25px; + border-start-start-radius: 3px; + border-start-end-radius: 0; + border-end-start-radius: 3px; + border-end-end-radius: 0; +} + +#elementor-template-library-save-template-submit { + width: 150px; + border-start-start-radius: 0; + border-start-end-radius: 3px; + border-end-start-radius: 0; + border-end-end-radius: 3px; +} + +#elementor-template-library-import-form { + width: 95%; + padding: 60px; + border: 2px dashed var(--e-a-border-color-bold); + margin: 35px auto; + transition: var(--e-a-transition-hover); +} +#elementor-template-library-import-form-or { + margin-block-start: 15px; + font-size: 18px; +} +#elementor-template-library-import-form-label { + margin-block-start: 20px; + padding: 15px 35px; + display: inline-block; +} +#elementor-template-library-import-form-input { + display: none; +} +#elementor-template-library-import-form.elementor-drag-over { + border-color: var(--e-a-color-primary); +} +#elementor-template-library-import .elementor-template-library-blank-icon { + margin-block-start: 0; +} +#elementor-template-library-import .elementor-template-library-blank-message { + margin-block-start: 20px; +} + +.e-route-library-connect #elementor-template-library-modal .dialog-message { + max-height: 95vh; + padding: 100px 0 0; + min-height: 550px; +} + +#elementor-template-library-connect-logo { + font-size: 20px; +} +#elementor-template-library-connect__button { + display: inline-block; + position: relative; + z-index: 1; + margin-block-start: 25px; + padding: 12px 24px; + font-size: 14px; +} +#elementor-template-library-connect__background-image-left-1 { + right: 22.4%; + bottom: -29%; + animation: 1.5s fadeIn, 1.5s slideDown, 3.5s mover 1.5s infinite alternate; +} +#elementor-template-library-connect__background-image-left-2 { + right: 46.25%; + bottom: -15.5%; + animation: 3s fadeIn, 3s slideDown, 2s mover 3s infinite alternate; +} +#elementor-template-library-connect__background-image-right-1 { + left: 37%; + bottom: -41%; + animation: 2.5s fadeIn, 2.5s slideDown, 2s mover 2.5s infinite alternate; +} +#elementor-template-library-connect__background-image-right-2 { + left: 48%; + bottom: -12.5%; + animation: 1.5s fadeIn, 1.5s slideDown, 1.5s mover 1.5s infinite alternate; +} + +.elementor-template-library-connect__background-image { + position: absolute; +} + +.elementor-template-library-blank-footer { + position: absolute; + bottom: 70px; + left: 50%; + transform: translateX(-50%); + font-style: italic; + color: var(--e-a-color-txt-muted); +} +@media (max-height: 700px) { + .elementor-template-library-blank-footer { + display: none; + } +} + +#elementor-template-library-footer-banner { + padding-block-end: 45px; +} +#elementor-template-library-footer-banner i { + font-size: 56px; + margin-block-start: 40px; +} +#elementor-template-library-footer-banner .elementor-nerd-box-icon { + margin-block-start: 70px; +} + +#elementor-template-library-templates-empty { + width: 100%; + margin-block-start: 40px; +} + +#elementor-template-library-error-dialog .dialog-message { + text-align: start; +} + +#elementor-template-library-error-info { + margin-block-start: 10px; +} + +@media (max-width: 1439px) { + .elementor-template-library-local-column-1 { + width: 33%; + } + .elementor-template-library-local-column-2 { + width: 10%; + } + .elementor-template-library-local-column-3 { + width: 15%; + } + .elementor-template-library-local-column-4 { + width: 15%; + } + .elementor-template-library-local-column-5 { + width: 27%; + } +} +@media (min-width: 1440px) { + .elementor-template-library-local-column-1 { + width: 25%; + } + .elementor-template-library-local-column-2 { + width: 17%; + } + .elementor-template-library-local-column-3 { + width: 17%; + } + .elementor-template-library-local-column-4 { + width: 17%; + } + .elementor-template-library-local-column-5 { + width: 24%; + } +} +@media (max-width: 1024px) { + .elementor-template-library-local-column-3 { + display: none; + } + .elementor-template-library-local-column-5 { + width: 41%; + } +} +.elementor-tags-list { + display: none; + position: absolute; + width: 260px; + max-height: 300px; + overflow: auto; + padding-block-end: 5px; + background-color: var(--e-a-bg-default); + box-shadow: var(--e-a-popover-shadow); + border: var(--e-a-border); + border-radius: 3px; + z-index: 10000; +} +.elementor-tags-list__group-title { + font-weight: bold; + font-size: 12px; + padding: 10px 15px; + display: flex; + align-items: center; +} +.elementor-tags-list__group-title .eicon-info-circle { + padding-inline-end: 5px; + color: var(--e-a-color-primary-bold); + font-size: 14px; +} +.elementor-tags-list__item { + font-size: 10px; + padding: 6px 15px; + cursor: pointer; +} +.elementor-tags-list__item:before { + content: ">"; + font-size: 8px; + padding-inline-end: 5px; +} +.elementor-tags-list__item:hover { + background-color: var(--e-a-bg-hover); +} +.elementor-tags-list__teaser { + border-block-start: 2px solid var(--e-a-border-color); + padding-block-start: 4px; + margin-block-start: 4px; +} +.elementor-tags-list__teaser-text { + padding: 2px 15px 8px; + line-height: 1.5; + font-size: 12px; +} +.elementor-tags-list__teaser-link { + color: var(--e-a-color-primary-bold); + text-decoration: underline; + font-style: italic; + font-weight: bold; +} + +.elementor-dynamic-cover { + display: flex; + align-items: center; + width: 100%; + height: 27px; + box-sizing: border-box; +} +.elementor-dynamic-cover__title { + padding: 0 8px; + flex-grow: 1; + white-space: nowrap; + text-overflow: ellipsis; + overflow: hidden; +} +.elementor-dynamic-cover__settings, .elementor-dynamic-cover__remove { + cursor: pointer; + transition: var(--e-a-transition-hover); +} +.elementor-dynamic-cover__settings:hover, .elementor-dynamic-cover__remove:hover { + color: var(--e-a-color-txt-hover); +} +.elementor-control-type-wysiwyg .elementor-dynamic-cover { + margin-block-start: 10px; +} + +.elementor-tag-settings-popup { + position: absolute; + width: 260px; + background-color: var(--e-a-bg-default); + border: var(--e-a-border); + box-shadow: var(--e-a-popover-shadow); + z-index: 1; +} +.elementor-tag-settings-popup:before { + content: ""; + position: absolute; + top: -20px; + right: 5px; + border: 10px solid transparent; + border-block-end-color: var(--e-a-border-color); +} +.elementor-tag-settings-popup .elementor-control-type-section:first-child { + margin: 0; +} + +.elementor-tag-controls-stack-empty { + background-color: var(--e-a-bg-default); + padding: 10px; + font-size: 13px; + text-align: center; +} + +.elementor-control-dynamic input { + border-start-start-radius: var(--e-a-border-radius); + border-start-end-radius: 0; + border-end-end-radius: 0; + border-end-start-radius: var(--e-a-border-radius); +} +.elementor-control-dynamic-switcher { + display: inline-flex; + align-items: center; + justify-content: center; + flex-shrink: 0; + height: 27px; + cursor: pointer; + border: var(--e-a-border-bold); + background: var(--e-a-bg-default); + border-inline-start-width: 0; + border-start-start-radius: 0; + border-start-end-radius: var(--e-a-border-radius); + border-end-end-radius: var(--e-a-border-radius); + border-end-start-radius: 0; + transition: var(--e-a-transition-hover); +} +.elementor-control-dynamic-switcher:hover { + background-color: var(--e-a-bg-hover); + color: var(--e-a-color-txt-hover); +} +.elementor-control-dynamic-switcher.e-control-tool { + height: 20px; + border: 0; +} +.elementor-control-dynamic-switcher-wrapper { + display: flex; +} +.elementor-control-dynamic-switcher .eicon-database { + font-size: 12px; +} +.elementor-control-dynamic-value .elementor-control-tag-area, +.elementor-control-dynamic-value .elementor-control-dynamic-switcher, +.elementor-control-dynamic-value .e-global__popover-toggle { + display: none; +} + +.elementor-context-menu { + position: absolute; + width: 250px; + padding: 5px 0px; + background-color: var(--e-a-bg-default); + border-radius: var(--e-a-border-radius); + box-shadow: var(--e-a-popover-shadow); + -webkit-user-select: none; + -moz-user-select: none; + user-select: none; + z-index: 101; +} +.elementor-context-menu-list { + display: flex; + flex-direction: column; +} +.elementor-context-menu-list__group { + display: flex; + flex-direction: column; +} +.elementor-context-menu-list__group:not(:last-child) { + border-block-end: var(--e-a-border); +} +.elementor-context-menu-list__item { + padding: 12px 20px; + display: flex; + gap: 16px; + cursor: pointer; + transition: var(--e-a-transition-hover); + align-items: center; +} +.elementor-context-menu-list__item--disabled { + cursor: default; + opacity: 0.5; + color: var(--e-a-color-disabled); +} +.elementor-context-menu-list__item:not(.elementor-context-menu-list__item--disabled):hover, .elementor-context-menu-list__item:not(.elementor-context-menu-list__item--disabled):focus { + background-color: var(--e-a-bg-hover); + color: var(--e-a-color-hover); +} +.elementor-context-menu-list__item__icon { + display: none; + width: 20px; +} +.elementor-context-menu-list__item__title { + flex-grow: 1; + white-space: nowrap; + text-overflow: ellipsis; + overflow: hidden; +} +.elementor-context-menu-list__item__shortcut { + color: var(--e-a-color-txt-muted); +} +.elementor-context-menu-list__item__shortcut--link-fullwidth { + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + z-index: 2; + cursor: pointer; +} +.elementor-context-menu-list__item__title, .elementor-context-menu-list__item__shortcut { + font-size: 14px; + font-style: normal; + font-weight: 400; + line-height: 1; + position: relative; +} +.elementor-context-menu-list__item.elementor-context-menu-list__item-delete:not(.elementor-context-menu-list__item--disabled):hover > *, .elementor-context-menu-list__item.elementor-context-menu-list__item-delete:not(.elementor-context-menu-list__item--disabled):focus > * { + color: var(--e-global-color-danger); +} +.elementor-context-menu .eicon-pro-icon { + color: var(--e-global-color-accent); +} + +#elementor-hotkeys { + text-align: start; +} +#elementor-hotkeys__modal .dialog-buttons-wrapper { + display: none; +} +#elementor-hotkeys__content { + display: flex; + justify-content: space-between; + gap: 70px; + padding: 20px 30px; + width: 100%; + overflow: hidden; +} +@media (max-width: 1024px) { + #elementor-hotkeys__content { + flex-direction: column; + gap: 20px; + padding: 20px; + } +} + +.elementor-hotkeys__col { + display: flex; + flex-direction: column; + gap: 20px; + width: 100%; +} +.elementor-hotkeys__header { + font-weight: 500; +} +.elementor-hotkeys__item { + display: flex; + align-items: center; + padding: 20px 10px; +} +.elementor-hotkeys__item:not(:last-child) { + border-block-end: var(--e-a-border); +} +.elementor-hotkeys__item--label { + font-size: 13px; + font-weight: 400; + flex-grow: 1; +} +.elementor-hotkeys__item--shortcut { + flex-grow: 0; + display: flex; + gap: 27px; +} +@media (max-width: 1024px) { + .elementor-hotkeys__item--shortcut { + gap: 23px; + } +} +.elementor-hotkeys__item--shortcut kbd { + position: relative; + font-family: unset; + background-color: var(--e-a-bg-active); + padding: 5px 12px; + border-radius: var(--e-a-border-radius); +} +@media (max-width: 1024px) { + .elementor-hotkeys__item--shortcut kbd { + padding: 4px 9px; + } +} +.elementor-hotkeys__item--shortcut kbd:not(:last-of-type)::after { + content: "+"; + position: absolute; + left: 0; + width: 9px; + text-align: center; + margin-inline-end: -18px; +} +@media (max-width: 1024px) { + .elementor-hotkeys__item--shortcut kbd:not(:last-of-type)::after { + margin-inline-end: -16px; + } +} + +.ui-resizable-n { + top: -5px; +} +.ui-resizable-e { + right: -5px; +} +.ui-resizable-s { + bottom: -5px; +} +.ui-resizable-w { + left: -5px; +} +.ui-resizable-ne { + top: -5px; + right: -5px; +} +.ui-resizable-nw { + top: -5px; + left: -5px; +} +.ui-resizable-se { + bottom: -5px; + right: -5px; +} +.ui-resizable-sw { + bottom: -5px; + left: -5px; +} +.ui-resizable-n, .ui-resizable-s { + left: 0; + height: 10px; + width: 100%; + cursor: ns-resize; +} +.ui-resizable-e, .ui-resizable-w { + top: 0; + height: 100%; + width: 10px; + cursor: ew-resize; +} +.ui-resizable-ne, .ui-resizable-nw, .ui-resizable-se, .ui-resizable-sw { + height: 15px; + width: 15px; +} +.ui-resizable-nw, .ui-resizable-se { + cursor: nwse-resize; +} +.ui-resizable-ne, .ui-resizable-sw { + cursor: nesw-resize; +} +.ui-resizable-handle { + position: absolute; +} +.ui-resizable-resizing { + pointer-events: none; +} + +body { + --e-editor-navigator-width: 240px; +} + +#elementor-navigator { + position: fixed; + top: 100px; + width: var(--e-editor-navigator-width); + height: 50vh; + left: 30px; + background-color: var(--e-a-bg-default); + border: var(--e-a-border); + box-shadow: 0 2px 20px 0 rgba(0, 0, 0, 0.1); + -webkit-user-select: none; + -moz-user-select: none; + user-select: none; + overflow: hidden; + z-index: 100; + display: none; +} +body.elementor-navigator-docked #elementor-navigator { + top: 0; + left: 0; + height: 100%; +} +body:not(.elementor-navigator-docked) #elementor-navigator { + border-radius: 5px; +} +#elementor-navigator__inner { + height: 100%; +} +#elementor-navigator__header { + display: flex; + align-items: stretch; + border-block-end: var(--e-a-border); + color: var(--e-a-color-txt-accent); +} +#elementor-navigator__header__title { + flex: 1; + text-align: center; + font-size: 13px; + font-weight: 400; + padding: 10px 0; + cursor: move; +} +#elementor-navigator__close, #elementor-navigator__toggle-all { + color: var(--e-a-color-txt); + background-color: transparent; + border: none; + outline: 0; + padding: 10px; + cursor: pointer; + transition: color 0.5s; +} +#elementor-navigator__close:hover, #elementor-navigator__toggle-all:hover { + color: var(--e-a-color-txt-hover); +} +#elementor-navigator__close:focus, #elementor-navigator__toggle-all:focus { + color: var(--e-a-color-txt-active); +} +#elementor-navigator__toggle-all { + font-size: 13px; +} +#elementor-navigator__close { + font-size: 11px; +} +#elementor-navigator__elements { + height: calc(100% - 49px); + overflow: auto; + position: relative; +} +.elementor-navigator-docked #elementor-navigator__elements { + height: calc(100% - 35px); +} +#elementor-navigator__elements .elementor-nerd-box { + padding: 25px; +} +#elementor-navigator__elements > .elementor-navigator__element-section { + border-block-end: var(--e-a-border); +} +#elementor-navigator__elements.elementor-navigator-list__promotion { + height: calc(100% - 80px); +} +#elementor-navigator__footer { + position: absolute; + width: 100%; + left: 0; + bottom: 0; + text-align: center; +} +#elementor-navigator__footer__resize-bar { + border-block-start: var(--e-a-border); +} +.elementor-navigator-docked #elementor-navigator__footer__resize-bar { + display: none; +} +#elementor-navigator__footer__promotion { + font-size: 12px; + padding: 4px 17px; + line-height: 22px; + font-family: "Roboto", sans-serif; + color: var(--e-a-bg-logo); +} +#elementor-navigator__footer__promotion a { + color: var(--e-a-color-accent-promotion); +} + +.elementor-navigator__item { + position: relative; + display: flex; + height: 30px; + cursor: pointer; + transition: padding 0.5s linear; + overflow: hidden; +} +.elementor-navigator__item:hover, .elementor-navigator__item:focus { + background-color: var(--e-a-bg-hover); +} +.elementor-navigator__item:active { + background-color: var(--e-a-bg-active); + color: var(--e-a-color-txt-accent); +} +.elementor-navigator__item[data-locked=true] { + cursor: not-allowed; +} +.elementor-navigator__item:not(.elementor-active) .elementor-navigator__element__list-toggle i { + transform: rotate(90deg); +} +.elementor-navigator__item > * { + display: flex; + align-items: center; +} +.elementor-navigator__item + .elementor-navigator__elements { + display: none; +} +.elementor-navigator__elements > .elementor-navigator__element-section, +.elementor-navigator__elements > .elementor-navigator__element-container:not(:last-child) { + border-block-end: var(--e-a-border); +} +.elementor-navigator__elements .elementor-empty-view { + padding: 10px; +} +.elementor-navigator__elements .elementor-empty-view__title { + margin-inline-start: 23px; + font-size: 10px; + font-style: italic; +} +.elementor-navigator__elements .ui-sortable-helper { + box-shadow: 1px 2px 5px 0 rgba(0, 0, 0, 0.1); + transform: rotate(4deg); + background-color: var(--e-a-bg-active); + color: var(--e-a-color-txt-accent); + pointer-events: none; +} +.elementor-navigator__elements .ui-sortable-placeholder { + background-color: var(--e-a-bg-hover); +} +.elementor-navigator__element.elementor-dragging-on-child > .elementor-navigator__elements > .elementor-empty-view { + border-block-start: var(--e-a-border); +} +.elementor-navigator__element.elementor-dragging-on-child > .elementor-navigator__elements > .elementor-empty-view .elementor-empty-view__title { + display: none; +} +.elementor-navigator__element.elementor-dragging-on-child > .elementor-navigator__elements > .elementor-empty-view + .ui-sortable-placeholder { + display: none; +} +.elementor-navigator__element:not(.elementor-navigator__element--has-children) .elementor-navigator__element__list-toggle { + visibility: hidden; +} +.elementor-navigator__element:not(.elementor-navigator__element--hidden) > .elementor-navigator__item .elementor-navigator__element__toggle { + color: var(--e-a-color-txt-default); +} +.elementor-navigator__element:not(.elementor-navigator__element--hidden) > .elementor-navigator__item .elementor-navigator__element__toggle:hover { + color: var(--e-a-color-txt-hover); +} +.elementor-navigator__element:not(.elementor-navigator__element--hidden) > .elementor-navigator__item:not(:hover) .elementor-navigator__element__toggle { + display: none; +} +.elementor-navigator__element:not(.elementor-navigator__element--hidden) > .elementor-navigator__item.elementor-editing { + background-color: var(--e-a-bg-active); +} +.elementor-navigator__element__list-toggle { + margin-inline-end: 7px; + transition: transform 0.3s; +} +.elementor-navigator__element__element-type { + margin-inline-end: 8px; + font-size: 14px; +} +.elementor-navigator__element__title { + flex-grow: 1; + overflow: hidden; +} +.elementor-navigator__element__title__text { + white-space: nowrap; + -webkit-user-select: text; + -moz-user-select: text; + user-select: text; +} +.elementor-navigator__element__title__text[contenteditable=true] { + outline: none; + background-color: var(--e-a-bg-hover); + padding: var(--e-admin-border-radius); + border: var(--e-a-border); +} +.elementor-navigator__element__title__text:not([contenteditable=true]) { + padding: 3px 0; + white-space: nowrap; + text-overflow: ellipsis; + overflow: hidden; +} +.elementor-navigator__element__toggle { + position: absolute; + left: 15px; + height: 100%; + z-index: 0; + font-size: 13px; +} +.elementor-navigator__element__indicators { + position: relative; + transition: transform 0.5s; + padding-inline-start: 5px; + z-index: 91; +} +.elementor-navigator__element__indicators:not(:hover) { + transform: translateX(calc(-100% + 8px)); +} +.elementor-navigator__element__indicator { + height: 100%; + width: 31px; + display: inline-flex; + align-items: center; + justify-content: center; + color: var(--e-a-color-txt); + background-color: var(--e-a-bg-default); + border-inline-start: var(--e-a-border); +} +.elementor-navigator__element__indicator:first-child { + border-inline-start: 3px solid var(--e-a-border-color-accent); +} +.elementor-editing .elementor-navigator__element__indicator:first-child { + border-color: #242729; +} +.elementor-navigator__element__indicator:hover { + color: var(--e-a-color-txt-hover); +} +.elementor-navigator__element--hidden .elementor-navigator__element__title, +.elementor-navigator__element--hidden .elementor-navigator__element__toggle { + opacity: 0.5; +} + +.e-notice-bar { + position: absolute; + width: 100%; + bottom: 0; + display: flex; + align-items: center; + height: 40px; + color: #fff; + background-color: var(--e-a-color-accent); + padding: 0 25px; +} +.e-notice-bar__message a { + text-decoration: underline; + color: var(--e-a-color-txt-invert); +} +.e-notice-bar__message a:hover { + color: #D5D8DC; +} +.e-notice-bar__primary_action { + margin-inline: 12px; +} +.e-notice-bar__primary_action a { + background: #ffffff; + border-radius: 3px; + color: #93003f; + padding: 4px 10px; + font-size: 11px; +} +.e-notice-bar__primary_action a:hover { + color: #47001e; + background: #F1F2F3; +} +.e-notice-bar__secondary_message, .e-notice-bar__secondary_action { + font-size: 11px; +} +.e-notice-bar__secondary_action { + margin-inline: 4px; +} +.e-notice-bar__secondary_action a { + color: #ffffff; + text-decoration: underline; +} +.e-notice-bar__secondary_action a:hover { + color: #F1F2F3; +} +.e-notice-bar__close { + cursor: pointer; + margin-inline-start: auto; +} +.e-notice-bar__icon { + margin-inline-end: 8px; +} +.e-notice-bar i { + font-size: 16px; + opacity: 0.9; +} +.e-notice-bar i:hover { + color: #D5D8DC; +} +.e-notice-bar a, +.e-notice-bar i { + transition: var(--e-a-transition-hover); +} + +body:not(.elementor-device-desktop) #e-notice-bar { + display: none; +} + +#elementor-fatal-error-dialog .dialog-message a { + text-decoration: underline; +} + +#elementor-preview-debug-link-text { + display: inline-block; +} + +#elementor-icons-manager-modal .dialog-message { + padding: 0; + height: 700px; +} +#elementor-icons-manager-modal .dialog-content { + display: flex; +} +#elementor-icons-manager__wrapper { + display: flex; +} +@media (max-width: 479px) { + #elementor-icons-manager__sidebar { + display: none; + } +} +#elementor-icons-manager__tab-links { + margin-block-start: 30px; +} +#elementor-icons-manager__upload { + margin: 20px 45px; + padding-block-start: 35px; + border-block-start: var(--e-a-border); + display: flex; + align-items: center; + justify-content: space-between; +} +@media (max-width: 1439px) { + #elementor-icons-manager__upload { + margin: 20px 25px; + } +} +#elementor-icons-manager__main { + display: flex; + flex-direction: column; + padding: 30px 80px 0; +} +@media (max-width: 1439px) { + #elementor-icons-manager__main { + padding: 30px 50px 0; + } +} +@media (max-width: 479px) { + #elementor-icons-manager__main { + width: 100%; + } +} +#elementor-icons-manager__search { + position: relative; +} +#elementor-icons-manager__search input { + padding: 8px 15px; + background-color: transparent; +} +#elementor-icons-manager__search i { + position: absolute; + top: 50%; + transform: translateY(-50%); + left: 15px; +} +#elementor-icons-manager__tab__wrapper { + overflow: auto; + margin: 25px -15px 0; + padding: 0 15px 15px; +} +#elementor-icons-manager__tab__title { + color: var(--e-a-color-txt); + font-size: 16px; + font-weight: 500; + text-align: start; +} +@media (max-width: 479px) { + #elementor-icons-manager__tab__title { + display: none; + } +} +#elementor-icons-manager__tab__content { + display: grid; + grid-template-columns: repeat(7, 1fr); + grid-gap: 20px; + margin: 20px 0; +} +@media (max-width: 1439px) { + #elementor-icons-manager__tab__content { + grid-template-columns: repeat(6, 1fr); + } +} +@media (max-width: 1024px) { + #elementor-icons-manager__tab__content { + grid-template-columns: repeat(5, 1fr); + } +} +@media (max-width: 767px) { + #elementor-icons-manager__tab__content { + grid-template-columns: repeat(4, 1fr); + } +} +@media (max-width: 479px) { + #elementor-icons-manager__tab__content { + grid-template-columns: repeat(3, 1fr); + } +} +#elementor-icons-manager__promotion { + display: flex; + align-items: center; + flex-direction: column; + padding-block-start: 70px; +} +#elementor-icons-manager__promotion__icon { + font-size: 60px; +} +#elementor-icons-manager__promotion__text { + width: 300px; + font-size: 16px; + padding-block-start: 25px; +} +#elementor-icons-manager__promotion__link { + margin-block-start: 20px; +} + +.elementor-icons-manager__tab-link { + padding-block: 15px; + padding-inline: 45px 0; + font-size: 12px; + text-align: start; + cursor: pointer; + position: relative; +} +.elementor-icons-manager__tab-link i { + font-size: 20px; + padding-inline-end: 15px; +} +@media (max-width: 1024px) { + .elementor-icons-manager__tab-link i { + display: none; + } +} +.elementor-icons-manager__tab-link:hover { + background-color: var(--e-a-bg-hover); +} +.elementor-icons-manager__tab-link.elementor-active { + background-color: var(--e-a-bg-active); + color: var(--e-a-color-txt-accent); +} +.elementor-icons-manager__tab-link.elementor-active:after { + content: ""; + position: absolute; + height: 100%; + width: 3px; + top: 0; + right: 0; + background-color: var(--e-a-border-color-accent); +} +.elementor-icons-manager__tab__item { + position: relative; + height: 0; + padding-block-end: 100%; + border: var(--e-a-border); + border-radius: 3px; + cursor: pointer; + transition: var(--e-a-transition-hover); + overflow: hidden; +} +.elementor-icons-manager__tab__item:hover { + background-color: var(--e-a-bg-hover); +} +.elementor-icons-manager__tab__item.elementor-selected { + background-color: var(--e-a-bg-active); + border-color: var(--e-a-border-color-accent); + color: var(--e-a-color-txt-accent); +} +.elementor-icons-manager__tab__item__content { + display: flex; + flex-direction: column; + align-items: center; + width: 100%; + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + padding: 1px; +} +.elementor-icons-manager__tab__item__icon { + font-size: 25px; +} +.elementor-icons-manager__tab__item__name { + font-size: 11px; + padding: 13px 20px 0; + max-width: 100%; + white-space: nowrap; + text-overflow: ellipsis; + overflow: hidden; +} + +.elementor-color-picker__header { + display: flex; + justify-content: space-between; + align-items: center; + font-weight: bold; + padding: 10px; + box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1); +} + +.e-color-picker__tools { + display: flex; +} + +.e-control-color--no-value .pcr-button { + background-image: linear-gradient(135deg, transparent 46%, #ff3030 50%, transparent 54%); + background-size: cover; + background-color: transparent; +} + +.pickr { + border: var(--e-a-border); + height: 27px; +} +.pickr .pcr-button { + height: 100%; + width: 100%; + border-radius: var(--e-a-border-radius); +} +.pickr .pcr-button:before, .pickr .pcr-button:after { + height: 12px; + width: 12px; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); +} + +.pcr-app { + background-color: var(--e-a-bg-default); + color: var(--e-a-color-txt); + box-shadow: var(--e-a-popover-shadow); + font-family: var(--e-a-font-family); +} +.pcr-app[data-theme=monolith] { + padding: 0; + width: 270px; +} +.pcr-app[data-theme=monolith] .pcr-selection .pcr-color-opacity, +.pcr-app[data-theme=monolith] .pcr-selection .pcr-color-chooser { + height: 8px; +} +.pcr-app[data-theme=monolith] .pcr-selection .pcr-color-palette { + height: 150px; +} +.pcr-app .pcr-interaction { + padding-block-end: 20px; +} +.pcr-app .pcr-interaction input.pcr-result { + border: var(--e-a-border); + color: var(--e-a-color-txt); + border-radius: var(--e-a-border-radius); + margin: 0; + background-color: transparent; +} +.pcr-app .pcr-interaction input.pcr-result:focus { + box-shadow: none; + border-color: var(--e-a-border-color-bold); +} +.pcr-app .pcr-interaction input.pcr-type { + all: unset; + font-size: 10px; + color: var(--e-a-color-txt-muted); + padding-inline-start: 5px; + cursor: pointer; +} +.pcr-app .pcr-interaction input.pcr-type.active { + background-color: transparent; + color: var(--e-a-color-txt-accent); +} +.pcr-selection, .pcr-interaction { + padding: 0 20px; +} +.pcr-selection { + padding-block-start: 20px; +} +.pcr .elementor-control-dynamic-switcher { + height: 20px; + border: 0; +} + +.select2-container { + width: 100% !important; + outline: none; + z-index: 9999; + font-size: 12px; +} +.select2-container .e-select2-placeholder { + color: var(--e-a-color-txt-muted); +} +.select2-container.select2-container--default .select2-selection--single { + height: 27px; + background-color: transparent; +} +.select2-container.select2-container--default .select2-selection--single .select2-selection__rendered { + color: var(--e-a-color-txt); + line-height: 27px; +} +.select2-container.select2-container--default .select2-results__option--highlighted[aria-selected] { + background-color: var(--e-a-bg-hover); + color: var(--e-a-color-txt-hover); +} +.select2-container.select2-container--default .select2-selection--multiple { + background-color: var(--e-a-bg-default); + min-height: 27px; + line-height: 0; +} +.select2-container.select2-container--default .select2-selection--multiple .select2-selection__clear { + display: none; +} +.select2-container.select2-container--default .select2-selection--multiple .select2-selection__choice { + background-color: var(--e-a-btn-bg); + color: var(--e-a-btn-color-invert); + line-height: 1.2; + font-size: 10px; + border: none; + border-radius: 0; + padding: 2px 3px; +} +.select2-container.select2-container--default .select2-selection--multiple .select2-selection__choice.select2-selection__e-plus-button { + cursor: pointer; + width: 16.67px; + text-indent: -9999px; + position: relative; +} +.select2-container.select2-container--default .select2-selection--multiple .select2-selection__choice.select2-selection__e-plus-button:after { + content: "\e815"; + font-family: "eicons"; + color: var(--e-a-btn-color-invert); + text-indent: 0; + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + display: flex; + justify-content: center; + align-items: center; +} +.select2-container.select2-container--default .select2-selection--multiple .select2-selection__rendered { + padding-block-end: 5px; +} +.select2-container.select2-container--default .select2-selection--multiple .select2-selection__choice__remove { + color: var(--e-a-btn-color-invert); + margin-inline-end: 3px; +} +.select2-container:not(.select2-container--open):not(.select2-container--focus) .select2-selection--single, +.select2-container:not(.select2-container--open):not(.select2-container--focus) .select2-selection--multiple { + background-color: var(--e-a-bg-default); + color: var(--e-a-color-txt); + border-color: var(--e-a-border-color); +} +.select2-container.select2-container--open .select2-selection--single, +.select2-container.select2-container--open .select2-selection--multiple, .select2-container.select2-container--focus .select2-selection--single, +.select2-container.select2-container--focus .select2-selection--multiple { + border-color: var(--e-a-border-color-bold); +} + +.select2-selection { + outline: none; +} +.select2-selection--single { + height: 27px; +} + +.select2-selection__arrow { + height: 27px; + top: 0; +} + +.select2-results__option[aria-selected=true] { + background-color: var(--e-a-bg-active); + color: var(--e-a-color-txt-active); +} +.select2-results__option[aria-selected=true]:not(.select2-results__option--highlighted) { + background-color: var(--e-a-bg-active); +} + +.select2-dropdown { + border-color: var(--e-a-border-color); + background-color: var(--e-a-bg-default); + color: var(--e-a-color-txt); + box-shadow: var(--e-a-dropdown-shadow); +} +.select2-dropdown .select2-search__field { + outline: none; +} + +.e-ui-state--document-scrubbing-mode__on, .e-ui-state--document-scrubbing-mode__on * { + cursor: ew-resize; +} +.e-ui-state--document-scrubbing-mode__on input.e-scrubbing--active, .e-ui-state--document-scrubbing-mode__on input.e-scrubbing--active:focus { + box-shadow: 0 0 0 1px #0e3b9c inset; +} +.e-ui-state--document-scrubbing-mode__on label.e-scrubbing--active { + color: #0e3b9c; + -webkit-user-select: none; + -moz-user-select: none; + user-select: none; +} +.e-ui-state--document-scrubbing-mode__on iframe { + pointer-events: none; +} + +label.e-scrubbing-over { + cursor: ew-resize; +} + +#elementor-paste-area-dialog { + text-align: center; +} +#elementor-paste-area-dialog .dialog-header { + padding-block-start: 60px; + font-size: 30px; +} +#elementor-paste-area-dialog .dialog-message { + padding: 0 15px 15px; + font-size: 15px; + position: relative; +} +#elementor-paste-area-dialog #elementor-paste-area-dialog__input { + background: transparent; + color: transparent; + border-color: transparent; + padding: 0; + margin: 0; + height: 100px; + position: absolute; + top: -60px; + left: 0; + right: 0; +} +#elementor-paste-area-dialog #elementor-paste-area-dialog__input:focus { + border-color: transparent; + outline: none; +} +#elementor-paste-area-dialog .dialog-widget-content { + width: 400px; +} +#elementor-paste-area-dialog .dialog-widget-content .eicon-loading { + display: none; +} +#elementor-paste-area-dialog .dialog-widget-content.e-state-loading .eicon-loading { + display: block; + margin-block-start: 15px; +} +#elementor-paste-area-dialog #elementor-paste-area-dialog__error { + color: var(--e-a-color-danger); + font-size: 12px; +} +#elementor-paste-area-dialog #elementor-paste-area-dialog__error:before { + content: ""; + border-block-start: var(--e-a-border); + display: block; + margin: 10px -15px; +} + +[class^=eicon-flex], [class*=" eicon-flex"] { + transition: 0.3s all; + --is-ltr: 1; + --is-rtl: 0; + --rotation-direction: calc(var(--is-ltr) - var(--is-rtl)); + --is-ltr: 0; + --is-rtl: 1; +} +[class^=eicon-flex].eicon-inline, [class*=" eicon-flex"].eicon-inline { + max-height: 1em; + max-width: 1em; +} +[class^=eicon-flex]:is(.eicon-justify-start-h, .eicon-justify-end-h), [class*=" eicon-flex"]:is(.eicon-justify-start-h, .eicon-justify-end-h) { + --rotation-direction: calc(var(--is-ltr) + var(--is-rtl)); +} +:is(.e-ui-state--document-direction-mode__column, .e-ui-state--document-direction-mode__column-reverse) [class^=eicon-flex]:not(.eicon-wrap):not(.eicon-nowrap):not(.eicon-grow), :is(.e-ui-state--document-direction-mode__column, .e-ui-state--document-direction-mode__column-reverse) [class*=" eicon-flex"]:not(.eicon-wrap):not(.eicon-nowrap):not(.eicon-grow) { + transform: rotate(calc(var(--rotation-direction) * 90deg)); +} +:is(.e-ui-state--document-direction-mode__column, .e-ui-state--document-direction-mode__column-reverse) [class^=eicon-flex]:not(.eicon-wrap):not(.eicon-nowrap):not(.eicon-grow):is(.eicon-align-start-v, .eicon-align-end-v), :is(.e-ui-state--document-direction-mode__column, .e-ui-state--document-direction-mode__column-reverse) [class*=" eicon-flex"]:not(.eicon-wrap):not(.eicon-nowrap):not(.eicon-grow):is(.eicon-align-start-v, .eicon-align-end-v) { + transform: rotate(calc(var(--rotation-direction) * -90deg)); +} +.e-ui-state--document-direction-mode__column-reverse [class^=eicon-flex]:not(.eicon-wrap):not(.eicon-nowrap):not(.eicon-grow):is(.eicon-justify-start-h, .eicon-justify-end-h, .eicon-order-start, .eicon-order-end), .e-ui-state--document-direction-mode__column-reverse [class*=" eicon-flex"]:not(.eicon-wrap):not(.eicon-nowrap):not(.eicon-grow):is(.eicon-justify-start-h, .eicon-justify-end-h, .eicon-order-start, .eicon-order-end) { + transform: rotate(calc(var(--rotation-direction) * -90deg)); +} +.e-ui-state--document-direction-mode__row [class^=eicon-flex]:not(.eicon-wrap):not(.eicon-nowrap):not(.eicon-grow):is(.eicon-justify-start-h, .eicon-justify-end-h, .eicon-order-start, .eicon-order-end), .e-ui-state--document-direction-mode__row [class*=" eicon-flex"]:not(.eicon-wrap):not(.eicon-nowrap):not(.eicon-grow):is(.eicon-justify-start-h, .eicon-justify-end-h, .eicon-order-start, .eicon-order-end) { + transform: rotate(calc(var(--is-rtl) * 180deg)); +} +.e-ui-state--document-direction-mode__row-reverse [class^=eicon-flex]:not(.eicon-wrap):not(.eicon-nowrap):not(.eicon-grow):is(.eicon-justify-start-h, .eicon-justify-end-h, .eicon-order-start, .eicon-order-end), .e-ui-state--document-direction-mode__row-reverse [class*=" eicon-flex"]:not(.eicon-wrap):not(.eicon-nowrap):not(.eicon-grow):is(.eicon-justify-start-h, .eicon-justify-end-h, .eicon-order-start, .eicon-order-end) { + transform: rotate(calc(var(--is-ltr) * 180deg)); +} +/*# sourceMappingURL=editor-rtl.css.map */ \ No newline at end of file diff --git a/wp-content/plugins/elementor/assets/css/editor-rtl.min.css b/wp-content/plugins/elementor/assets/css/editor-rtl.min.css new file mode 100644 index 0000000..a474169 --- /dev/null +++ b/wp-content/plugins/elementor/assets/css/editor-rtl.min.css @@ -0,0 +1,2 @@ +/*! elementor - v3.20.0 - 26-03-2024 */ +.elementor-control-unit-1{width:27px}.elementor-control-unit-2{width:54px}.elementor-control-unit-3{width:81px}.elementor-control-unit-4{width:108px}.elementor-control-unit-5{max-width:400px;width:52%}*,:after,:before{margin:0;padding:0;box-sizing:border-box}body,html{height:100%}html{background-color:var(--e-a-bg-loading)}iframe,img{border:0}li{list-style:none}a,body{text-decoration:none}body{color:var(--e-a-color-txt);font-family:var(--e-a-font-family);font-size:13px;font-weight:400;line-height:1;text-transform:none;overflow:hidden}body,body:after{background-color:var(--e-a-bg-default)}body:after{content:"";position:absolute;top:0;left:0;height:100%;width:0;transition:width .5s}body a{color:var(--e-a-color-info)}body a:hover{color:var(--e-a-color-primary-bold)}body.elementor-editor-active #elementor-mode-switcher-preview .eicon:before{content:"\e89e"}body.elementor-editor-preview{--e-preview-width:100%}body.elementor-editor-preview #elementor-mode-switcher-preview .eicon:before{content:"\e89f"}body.elementor-navigator--dock-hint:after{width:30px}#elementor-editor-wrapper{display:flex;width:100%;height:100vh}#elementor-panel:not(.ui-resizable-resizing),#elementor-preview:not(.ui-resizable-resizing){transition:margin .5s ease-in-out,width .5s ease-in-out}#elementor-loading{position:fixed;top:0;left:0;bottom:0;right:0;background:var(--e-a-bg-default);z-index:9999}#elementor-preview-loading{display:flex;align-items:center;justify-content:center;position:absolute;top:0;left:0;width:100%;height:100%;background-color:var(--e-a-bg-default)}#elementor-preview-loading i{color:var(--e-a-color-txt-disabled);font-size:50px}.elementor-nerd-box{padding:30px;text-align:center}.elementor-nerd-box-icon{width:100px}.elementor-nerd-box-title{margin-block-start:20px;font-size:16px;font-weight:700;line-height:1.4}.elementor-nerd-box-message{margin-block-start:5px;line-height:1.8;font-size:11px}.elementor-nerd-box .elementor-button{margin-block-start:20px}.elementor-nerd-box--upsale{padding:15px 30px 30px}.elementor-nerd-box--upsale .elementor-nerd-box-title{font-weight:500;line-height:1.2}.elementor-nerd-box--upsale .elementor-nerd-box-message{line-height:1.5}.eicon-nerd:hover:before{content:"\e8b7"}.eicon-nerd:active:before{content:"\e8b6"}.e-group-control-header{display:flex;justify-content:space-between;align-items:center;font-weight:700;font-size:12px;padding:10px;box-shadow:0 2px 8px rgba(0,0,0,.1);margin-block-end:15px}.e-control-tools{display:flex}.e-control-tool{width:20px;height:20px;display:inline-flex;border-radius:3px;margin:0 3px;border:0;position:relative;background-color:var(--e-a-bg-default)}.e-control-tool:not(.e-control-tool-disabled){box-shadow:0 1px 5px rgba(0,0,0,.1);cursor:pointer}.e-control-tool-disabled{background:var(--e-a-bg-default);pointer-events:none}.e-control-tool-disabled i{color:var(--e-a-color-txt-disabled)}.e-control-tool i{position:absolute;top:50%;left:50%;transform:translateX(-50%) translateY(-50%);color:var(--e-a-color-txt-default);font-size:13px}i.eicon-tilted{transform:rotate(90deg)}.elementor-loader-wrapper{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:300px;display:flex;flex-direction:column;align-items:center;gap:30px}.elementor-loader{border-radius:50%;padding:40px;height:150px;width:150px;background-color:var(--e-a-bg-active);box-sizing:border-box;box-shadow:2px 2px 20px 4px rgba(0,0,0,.02)}.elementor-loader-boxes{height:100%;width:100%;position:relative}.elementor-loader-box{position:absolute;background-color:var(--e-a-color-txt-hover);animation:load 1.8s linear infinite}.elementor-loader-box:first-of-type{width:20%;height:100%;left:0;top:0}.elementor-loader-box:not(:first-of-type){right:0;height:20%;width:60%}.elementor-loader-box:nth-of-type(2){top:0;animation-delay:calc(1.8s / 4 * -1)}.elementor-loader-box:nth-of-type(3){top:40%;animation-delay:calc(1.8s / 4 * -2)}.elementor-loader-box:nth-of-type(4){bottom:0;animation-delay:calc(1.8s / 4 * -3)}.elementor-loading-title{color:var(--e-a-color-txt);text-align:center;text-transform:uppercase;letter-spacing:7px;text-indent:7px;font-size:10px;width:100%}.e-input-style,input,select,textarea{color:var(--e-a-color-txt);border-radius:var(--e-a-border-radius);font-size:12px;width:100%;background:none;background-color:var(--e-a-bg-default);box-shadow:none;border:var(--e-a-border-bold);outline:none}.e-input-style:focus,.e-input-style:focus+.elementor-control-dynamic-switcher,input:focus,input:focus+.elementor-control-dynamic-switcher,select:focus,select:focus+.elementor-control-dynamic-switcher,textarea:focus,textarea:focus+.elementor-control-dynamic-switcher{border-color:var(--e-a-border-color-focus)}.elementor-error input,.elementor-error select,.elementor-error textarea{border-color:var(--e-a-color-danger)}input{min-width:0}.e-input-style,input,textarea{padding:5px}.e-input-style,textarea{resize:vertical}input[type=checkbox],input[type=radio]{height:auto;width:auto}input[type=checkbox]{margin:0;padding:0;-webkit-appearance:none;-moz-appearance:none;appearance:none;outline:none;content:none;height:15px;border-radius:var(--e-a-border-radius);margin-inline-end:5px;width:15px;border:var(--e-a-border-bold);display:inline-flex;align-items:center;justify-content:center}input[type=checkbox]:checked{background:var(--e-a-color-primary-bold);border:none}input[type=checkbox]:checked:before{display:block;content:"";width:4px;height:7px;border:solid #fff;border-width:0 2px 2px 0;transform:rotate(45deg)}input[disabled]{background-color:var(--e-a-bg-hover);cursor:not-allowed;opacity:1}select{outline:none;height:27px}.ps{overflow:hidden!important;overflow-anchor:none;touch-action:auto}.ps__rail-y{display:none;opacity:0;transition:background-color .2s linear,opacity .2s linear;width:15px;right:0;left:auto!important;position:absolute}.ps--active-y>.ps__rail-y{display:block;background-color:transparent}.ps--focus>.ps__rail-y,.ps--scrolling-y>.ps__rail-y,.ps:hover>.ps__rail-y{opacity:.6}.ps .ps__rail-y.ps--clicking,.ps .ps__rail-y:focus,.ps .ps__rail-y:hover{opacity:.9}.ps__thumb-y{background-color:#aaa;border-radius:6px;transition:background-color .2s linear,width .2s ease-in-out;width:6px;right:2px;position:absolute}.ps__rail-y.ps--clicking .ps__thumb-y,.ps__rail-y:focus>.ps__thumb-y,.ps__rail-y:hover>.ps__thumb-y{background-color:#999;width:6px}#nprogress{pointer-events:none}#nprogress .bar{background:#d004d4;position:fixed;z-index:1031;top:0;left:0;width:100%;height:2px}#nprogress .peg{display:block;position:absolute;right:0;width:100px;height:100%;box-shadow:0 0 10px #d004d4,0 0 5px #d004d4;opacity:1;transform:rotate(3deg) translateY(-4px)}#nprogress .spinner{display:none;position:fixed;z-index:1031;top:15px;right:15px}#nprogress .spinner-icon{width:18px;height:18px;box-sizing:border-box;border:2px solid transparent;border-block-start-color:#d004d4;border-inline-start-color:#d004d4;border-radius:50%;animation:nprogress-spinner .4s linear infinite}.nprogress-custom-parent{overflow:hidden;position:relative}.nprogress-custom-parent #nprogress .bar,.nprogress-custom-parent #nprogress .spinner{position:absolute}@keyframes nprogress-spinner{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}#nprogress .bar,#nprogress .spinner{z-index:100000}:root{--e-is-preview-mode:0}@media (max-width:1439px){:root{--e-editor-panel-width:280px}}@media (min-width:1440px){:root{--e-editor-panel-width:300px}}.elementor-panel{position:relative;height:100%;margin-inline-start:calc(-1 * var(--e-editor-panel-width) * var(--e-is-preview-mode));width:var(--e-editor-panel-width);overflow:visible;background-color:var(--e-a-bg-default);z-index:1;font-family:var(--e-a-font-family);font-size:13px;right:0}.elementor-panel h1,.elementor-panel h2,.elementor-panel h3,.elementor-panel h4,.elementor-panel h5,.elementor-panel h6{font-size:100%;font-weight:400}.elementor-panel abbr,.elementor-panel acronym{border:0;font-variant:normal}.elementor-panel sup{vertical-align:text-top}.elementor-panel sub{vertical-align:text-bottom}.elementor-panel img{max-width:100%;height:auto;border:0}.elementor-panel :focus{outline:0}.elementor-panel .elementor-panel-box-content{padding:20px 20px 10px}.elementor-panel .elementor-button{display:inline-block}.elementor-panel .elementor-panel-alert{background-color:var(--e-a-bg-primary);padding:15px;border-inline-start:3px solid var(--e-a-color-primary);position:relative;font-size:12px;font-weight:300;font-style:italic;line-height:1.5;text-align:start;border-start-start-radius:0;border-start-end-radius:3px;border-end-start-radius:0;border-end-end-radius:3px}.elementor-panel .elementor-panel-alert a{color:inherit}.elementor-panel .elementor-panel-alert.elementor-panel-alert-info{border-color:var(--e-a-color-info);background:var(--e-a-bg-info)}.elementor-panel .elementor-panel-alert.elementor-panel-alert-success{border-color:var(--e-a-color-success);background:var(--e-a-bg-success)}.elementor-panel .elementor-panel-alert.elementor-panel-alert-warning{border-inline-start:3px solid var(--e-a-color-warning);background:var(--e-a-bg-warning)}.elementor-panel .elementor-panel-alert.elementor-panel-alert-danger{border-color:var(--e-a-color-danger);background:var(--e-a-bg-danger)}.elementor-panel .elementor-control-field-description,.elementor-panel .elementor-descriptor{font-size:11px;font-style:italic;line-height:1.4;color:var(--e-a-color-txt-muted)}.elementor-panel .elementor-controls-popover{display:none;position:absolute;box-shadow:var(--e-a-popover-shadow);border-radius:var(--e-a-border-radius);left:0;right:0;margin:-4px auto 5px;padding-block-start:15px;width:90%;z-index:10000;background-color:var(--e-a-bg-default)}.elementor-panel .elementor-controls-popover:before{content:"";position:absolute;top:-16px;left:22px;border:8px solid transparent;border-block-end-color:var(--e-a-bg-default)}.elementor-panel .elementor-controls-popover div.elementor-control{background-color:transparent}.elementor-panel .elementor-controls-popover div.elementor-control:before{content:none}.elementor-panel #elementor-panel-global .elementor-nerd-box .elementor-nerd-box-icon{margin-block-start:20px}.elementor-editor-preview .elementor-panel{--e-is-preview-mode:1}.elementor-editor-preview .elementor-panel>.ui-resizable-e,.elementor-editor-preview .elementor-panel>.ui-resizable-w{display:none}.elementor-editor-preview .elementor-panel #elementor-panel-elements-wrapper{display:flex;flex-direction:column}.elementor-panel .ps__rail-y{z-index:2}.elementor-panel .elementor-responsive-panel{padding:0 15px;display:grid;gap:10px;grid-template-columns:repeat(auto-fill,minmax(min(135px,50% - 5px),1fr))}.elementor-panel .elementor-responsive-panel>.e-responsive-panel-stretch{grid-column:1/-1}.elementor-panel #elementor-panel-header{display:flex;align-items:center;justify-content:space-between;height:40px;width:100%;background-color:var(--e-a-dark-bg);color:var(--e-a-color-white)}.elementor-panel #elementor-panel-header>*{display:flex;align-items:center;justify-content:center}.elementor-panel .elementor-header-button{width:40px;border:0;color:currentColor;background-color:transparent}.elementor-panel .elementor-header-button .elementor-icon{cursor:pointer;display:block;font-size:19px;height:40px;line-height:40px;transition:var(--e-a-transition-hover)}.elementor-panel .elementor-header-button .elementor-icon.eicon-menu-bar{font-size:18px}.elementor-panel .elementor-header-button:focus,.elementor-panel .elementor-header-button:hover{color:var(--e-a-dark-color-txt-hover)}.elementor-panel #elementor-panel-header-title{flex:1;font-size:15px;font-weight:700}.elementor-panel #elementor-panel-header-title img{width:90px}.elementor-panel #elementor-panel-elements-categories{padding-block-end:10px;position:relative}.elementor-panel .elementor-panel-category{position:relative;border-block-end:var(--e-a-border)}.elementor-panel .elementor-panel-category .elementor-panel-heading{padding:0 15px;border:none;background-color:transparent}.elementor-panel .elementor-panel-category.elementor-active .elementor-panel-heading{border:none}.elementor-panel .elementor-panel-category-items{padding-block-end:20px}.elementor-panel .elementor-panel-category-items-empty{grid-column-start:1;grid-column-end:3}.elementor-panel #elementor-panel-page-menu{padding:25px 15px}.elementor-panel .elementor-panel-menu-group-title{text-transform:uppercase;font-size:11px}.elementor-panel .elementor-panel-menu-items{border:var(--e-a-border);margin:15px 0 25px;border-radius:5px;overflow:hidden}.elementor-panel .elementor-panel-menu-item{display:flex;align-items:center;width:100%;height:40px;transition:var(--e-a-transition-hover);border:0;background-color:transparent;cursor:pointer}.elementor-panel .elementor-panel-menu-item:not(:last-child){border-block-end:var(--e-a-border)}.elementor-panel .elementor-panel-menu-item:focus,.elementor-panel .elementor-panel-menu-item:hover{background-color:var(--e-a-bg-hover)}.elementor-panel .elementor-panel-menu-item:active{background-color:var(--e-a-bg-active);color:var(--e-a-color-txt-accent)}.elementor-panel .elementor-panel-menu-item-icon{text-align:center;width:30px;flex-shrink:0;padding:10px 0;margin:0 10px;font-size:19px}.elementor-panel .elementor-panel-menu-item-title{display:flex;flex-grow:1;font-weight:500;justify-content:space-between}.elementor-panel .elementor-panel-menu-item-title-badge{margin:0 10px;background:var(--e-a-color-white);border-radius:var(--e-a-border-radius)}.elementor-panel .elementor-panel-menu-item-title>span{color:var(--e-a-color-accent)}.elementor-panel .elementor-panel-menu-item a{display:flex;align-items:center;color:inherit;width:100%;height:100%;padding-inline-start:10px;padding:10px 0}.elementor-panel .elementor-control.elementor-control-clear_page{background-color:transparent}.elementor-panel .elementor-control.elementor-control-clear_page .elementor-control-raw-html{display:flex;align-items:center;justify-content:space-between}.elementor-panel .elementor-panel-navigation{display:flex;width:100%;border-block-end:var(--e-a-border)}.elementor-panel .elementor-panel-navigation .elementor-panel-navigation-tab{all:unset;flex:auto;transition:var(--e-a-transition-hover);border-block-end:3px solid transparent;cursor:pointer}.elementor-panel .elementor-panel-navigation .elementor-panel-navigation-tab:focus,.elementor-panel .elementor-panel-navigation .elementor-panel-navigation-tab:hover{background-color:var(--e-a-bg-hover)}.elementor-panel .elementor-panel-navigation .elementor-panel-navigation-tab:focus{outline:0}.elementor-panel .elementor-panel-navigation .elementor-panel-navigation-tab.elementor-active{border-color:var(--e-a-border-color-accent);color:var(--e-a-color-txt-accent)}.elementor-panel .elementor-panel-navigation .elementor-panel-navigation-tab.elementor-active a,.elementor-panel .elementor-panel-navigation .elementor-panel-navigation-tab.elementor-active span{color:var(--e-a-color-txt-accent)}.elementor-panel .elementor-panel-navigation .elementor-panel-navigation-tab a,.elementor-panel .elementor-panel-navigation .elementor-panel-navigation-tab span{color:inherit;display:block;text-align:center;padding:12px 0 8px;font-size:10px}.elementor-panel .elementor-panel-navigation .elementor-panel-navigation-tab a:before,.elementor-panel .elementor-panel-navigation .elementor-panel-navigation-tab span:before{font-family:eicons;font-size:16px;display:block;margin-block-end:8px}.elementor-panel .elementor-tab-control-content a:before,.elementor-panel .elementor-tab-control-content span:before{content:"\e92c"}.elementor-panel .elementor-tab-control-style a:before,.elementor-panel .elementor-tab-control-style span:before{content:"\e921"}.elementor-panel .elementor-tab-control-advanced a:before,.elementor-panel .elementor-tab-control-advanced span:before,.elementor-panel .elementor-tab-control-general_style a:before,.elementor-panel .elementor-tab-control-general_style span:before,.elementor-panel .elementor-tab-control-settings a:before,.elementor-panel .elementor-tab-control-settings span:before{content:"\e916"}.elementor-panel .elementor-tab-control-responsive a:before,.elementor-panel .elementor-tab-control-responsive span:before{content:"\e885"}.elementor-panel .elementor-tab-control-lightbox a:before,.elementor-panel .elementor-tab-control-lightbox span:before{content:"\e922"}.elementor-panel .elementor-tab-control-column a:before,.elementor-panel .elementor-tab-control-column span:before,.elementor-panel .elementor-tab-control-layout a:before,.elementor-panel .elementor-tab-control-layout span:before{content:"\e899"}.elementor-panel #elementor-panel__editor__help{padding:50px 25px;display:flex;align-items:center;justify-content:center}.elementor-panel #elementor-panel__editor__help__link{display:inline-flex;align-items:center;justify-content:center;font-size:85%;line-height:2;padding-inline-start:5px;color:inherit;font-weight:500;transition:var(--e-a-transition-hover)}.elementor-panel #elementor-panel__editor__help__link:focus,.elementor-panel #elementor-panel__editor__help__link:hover{color:var(--e-a-color-info)}.elementor-panel #elementor-panel__editor__help__link i{padding:0 5px;font-size:125%;position:relative}.elementor-panel #elementor-panel__editor__help__link i:after{content:"";position:absolute;height:13px;width:13px;top:3px;bottom:0;right:8px;left:0;border-radius:50%;z-index:-1}.elementor-panel #elementor-panel-footer{position:relative;height:40px;background-color:var(--e-a-dark-bg);color:var(--e-a-dark-color-txt)}.elementor-panel #elementor-panel-footer-tools{display:flex;justify-content:space-between;height:100%}.elementor-panel .elementor-panel-footer-tool{display:flex;align-items:center;justify-content:center;width:15%;cursor:pointer;transition:var(--e-a-transition-hover);border:0;color:currentColor;background-color:transparent}.elementor-panel .elementor-panel-footer-tool i{font-size:15px}.elementor-panel .elementor-panel-footer-tool #elementor-panel-saver-button-save-options i.eicon-chevron-right{margin:auto;transform:rotate(270deg)}.elementor-panel .elementor-panel-footer-tool #elementor-panel-saver-button-save-options.elementor-disabled{cursor:inherit}.elementor-panel .elementor-panel-footer-tool:not(.e-open):focus,.elementor-panel .elementor-panel-footer-tool:not(.e-open):hover{color:var(--e-a-dark-color-txt-hover)}.elementor-panel .elementor-panel-footer-tool:not(.e-open) .elementor-panel-footer-sub-menu-wrapper{display:none}.elementor-panel #elementor-panel-footer-saver-publish{width:30%;margin-inline-start:auto}.elementor-panel #elementor-panel-footer-saver-publish .elementor-button-state i{margin-inline-end:0}.elementor-panel #elementor-panel-footer-saver-publish .elementor-button-state #elementor-panel-saver-button-publish-label{display:none}.elementor-panel #elementor-panel-footer-saver-options{width:10%}.elementor-panel #elementor-panel-footer-saver-options .elementor-last-edited-wrapper{font-size:11px;font-style:italic;padding:5px 0 15px}.elementor-panel #elementor-panel-footer-saver-options .elementor-last-edited-wrapper:not(.elementor-state-active) .elementor-state-icon{display:none}.elementor-panel #elementor-panel-footer-saver-options .elementor-last-edited-wrapper time{border-block-end:1px dotted transparent;transition:all .3s ease-in-out;cursor:pointer}.elementor-panel #elementor-panel-footer-saver-options .elementor-last-edited-wrapper time:hover{border-block-end-color:inherit}.elementor-panel #elementor-panel-footer-saver-options.e-open i.eicon-chevron-right{transform:rotate(90deg)}.elementor-panel #elementor-panel-saver-button-publish,.elementor-panel #elementor-panel-saver-button-save-options{padding:0;font-size:11px;height:100%;width:100%;border-radius:0}.elementor-panel #elementor-panel-saver-button-publish.elementor-disabled,.elementor-panel #elementor-panel-saver-button-save-options.elementor-disabled{background-color:#1f2124;color:#9da5ae}.elementor-panel #elementor-panel-saver-button-publish:not(.elementor-disabled){border-inline-end:1px solid #f0abfc}.elementor-panel #elementor-panel-saver-button-publish.elementor-disabled{border-inline-end:1px solid #3f444b}.elementor-panel .elementor-panel-footer-sub-menu-wrapper{position:absolute;bottom:100%;left:0;width:100%;background-color:#1f2124;padding:10px;box-shadow:-2px -5px 8px rgba(0,0,0,.1);cursor:default;z-index:10000}.elementor-panel .elementor-panel-footer-sub-menu{border-radius:var(--e-border-radius);overflow:hidden;border:1px solid #3f444b}.elementor-panel .elementor-panel-footer-sub-menu-item{display:flex;height:40px;color:#d5d8dc;align-items:center;-moz-column-gap:10px;column-gap:10px;padding:0 20px;transition:var(--e-a-transition-hover);cursor:pointer}.elementor-panel .elementor-panel-footer-sub-menu-item.elementor-disabled{cursor:default;color:#69727d}.elementor-panel .elementor-panel-footer-sub-menu-item:not(:last-child){border-block-end:1px solid #3f444b}.elementor-panel .elementor-panel-footer-sub-menu-item:hover{background-color:hsla(0,0%,100%,.1)}.elementor-panel .elementor-panel-footer-sub-menu-item.active{background-color:hsla(0,0%,100%,.2)}#elementor-panel-elements-navigation .elementor-panel-navigation-tab{text-align:center;padding:10px 0;font-size:12px;cursor:pointer}#elementor-panel-elements{overflow:hidden}#elementor-panel-state-loading{display:none}body.elementor-panel-loading #elementor-panel-state-loading{position:absolute;top:0;left:0;height:100%;width:100%;display:flex;align-items:center;justify-content:center;background-color:hsla(0,0%,100%,.5);z-index:2}#elementor-panel-state-loading .eicon-loading{font-size:25px;color:var(--e-a-color-txt-accent)}#elementor-panel-elements-search-area{background-color:var(--e-a-bg-default);position:sticky;top:0;padding:15px;z-index:1}#elementor-panel-elements-search-wrapper{position:relative}#elementor-panel-elements-search-input{font-size:11px;padding-block:10px;padding-inline:29px 10px;font-style:italic;border:var(--e-a-border-bold);border-radius:0;transition:all 1s;-webkit-appearance:none;-moz-appearance:none;appearance:none}#elementor-panel-elements-search-input+i{position:absolute;right:10px;top:50%;color:var(--e-a-color-txt-disabled);transform:translateY(-50%)}#elementor-panel-elements-search-input:focus{border-color:var(--e-a-border-color-focus);padding-inline-end:15px}.elementor-panel .elementor-element{font-family:var(--e-a-font-family);color:var(--e-a-color-txt);line-height:1;text-align:center;border:var(--e-a-border-bold);border-radius:3px;cursor:move;position:relative;transition:var(--e-a-transition-hover);width:100%;background-color:transparent}.elementor-panel .elementor-element--promotion .elementor-element{cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none}.elementor-panel .elementor-element:focus,.elementor-panel .elementor-element:hover{background-color:var(--e-a-bg-hover);border-color:var(--e-a-border-color-bold)}.elementor-panel .elementor-element:focus>.eicon-lock,.elementor-panel .elementor-element:hover>.eicon-lock{color:var(--e-a-color-accent)}.elementor-panel .elementor-element .icon{font-size:28px;padding-block-start:15px}.elementor-panel .elementor-element .title-wrapper{display:flex;height:40px;align-items:center;justify-content:center}.elementor-panel .elementor-element .title{font-size:12px}.elementor-panel .elementor-element>.eicon-lock{position:absolute;top:5px;left:5px;color:var(--e-a-color-txt-disabled)}.elementor-panel .elementor-element:active{background-color:var(--e-a-bg-hover);border-color:var(--e-a-border-color-accent);color:var(--e-a-color-txt-accent)}#elementor-element--promotion__dialog{position:absolute;width:300px;z-index:1;background-color:var(--e-a-bg-default);box-shadow:var(--e-a-popover-shadow);border-radius:var(--e-a-border-radius)}#elementor-element--promotion__dialog:after{content:"";position:absolute;top:15px;left:100%;transform:scaleY(.7);border:10px solid transparent;border-inline-end-color:var(--e-a-bg-default)}#elementor-element--promotion__dialog__title{font-size:14px}#elementor-element--promotion__dialog .dialog-header{display:flex;padding:20px;border-block-end:var(--e-a-border);font-weight:500}#elementor-element--promotion__dialog .dialog-header .eicon-pro-icon{flex-grow:1;margin-inline-start:10px;font-size:14px;color:var(--e-a-color-accent)}#elementor-element--promotion__dialog .dialog-header .eicon-close{cursor:pointer;color:var(--e-a-color-txt-disabled)}#elementor-element--promotion__dialog .dialog-header .eicon-close:hover{color:var(--e-a-color-txt-muted)}#elementor-element--promotion__dialog .dialog-message{padding:20px}#elementor-element--promotion__dialog .dialog-buttons-wrapper{padding:0 20px 20px}#elementor-element--promotion__dialog .dialog-button{padding:7px 25px;font-size:12px}.dialog-tooltip-widget{position:absolute;width:300px;z-index:1;background-color:#fff;box-shadow:0 2px 15px rgba(0,0,0,.3);border-radius:3px}.dialog-tooltip-widget:after{content:"";position:absolute;top:15px;left:100%;transform:scaleY(.7);border:10px solid transparent;border-inline-end-color:#fff}.dialog-tooltip-widget__title{font-size:14px}.dialog-tooltip-widget .dialog-tooltip-header{display:flex;padding:20px 20px 0;color:#0c0d0e;border-block-end:1px solid #fff;font-weight:500}.dialog-tooltip-widget .dialog-tooltip-header .eicon-pro-icon{flex-grow:1;margin-inline-start:10px;font-size:14px;color:#93003f}.dialog-tooltip-widget .dialog-tooltip-header .eicon-close{cursor:pointer;margin-inline-start:auto;color:#9da5ae}.dialog-tooltip-widget .dialog-tooltip-message{padding:20px}.dialog-tooltip-widget .dialog-tooltip-buttons-wrapper{padding:0 20px 20px;text-align:end}.dialog-tooltip-widget .dialog-tooltip-button{padding:7px 25px;font-size:12px}.dialog-tooltip-widget .dialog-tooltip-button::-moz-focus-inner{border:0}#elementor-panel-inner{position:relative;height:100%;display:flex;flex-direction:column;box-shadow:0 0 5px 0 rgba(0,0,0,.1)}#elementor-panel-content-wrapper{position:relative;width:100%;flex:1}.elementor-panel-container{clear:both;padding-inline-start:15px;padding-inline-end:15px}#elementor-panel-get-pro-elements .elementor-nerd-box-message{margin-block-start:10px}#elementor-panel-get-pro-elements .elementor-nerd-box-icon{margin-block-start:20px}#elementor-panel-get-pro-elements-sticky{position:sticky;bottom:0;font-size:14px;font-weight:400;line-height:1.6;margin-block-end:-10px}#elementor-panel-get-pro-elements-sticky .elementor-get-pro-sticky-message{margin-top:-14px;min-height:40px;display:block;padding:9px min(35px,5%);gap:10px;background-color:var(--e-a-color-white);color:var(--e-a-color-black);text-align:center;box-shadow:0 -10px 14px -6px rgba(0,0,0,.05)}#elementor-panel-get-pro-elements-sticky .elementor-get-pro-sticky-message a{display:inline-block;font-size:13px;font-weight:500;color:var(--e-a-btn-bg-accent)}#elementor-panel-get-pro-elements-sticky img{margin-left:17px}#elementor-panel-notice-wrapper .elementor-panel-notice{width:90%;margin:0 auto;font-style:unset;margin-block-end:15px}#elementor-panel-notice-wrapper .elementor-panel-notice a{font-weight:700;font-style:italic;border-block-end:2px dotted var(--e-a-color-info);display:inline-block}body.e-has-notification .elementor-panel-menu-item.elementor-panel-menu-item-notification-center .elementor-panel-menu-item-icon,body.e-has-notification:not(.e-route-panel-menu) #elementor-panel-header-menu-button{position:relative}body.e-has-notification .elementor-panel-menu-item.elementor-panel-menu-item-notification-center .elementor-panel-menu-item-icon:after,body.e-has-notification:not(.e-route-panel-menu) #elementor-panel-header-menu-button:after{position:absolute;content:"";display:block;background:var(--e-a-color-primary);border-radius:50%;width:8px;height:8px;top:5px;right:5px}.media-modal.wp-core-ui{color-scheme:light;color:#515962}.media-modal.wp-core-ui select{width:auto;padding-inline:8px}.media-modal.wp-core-ui fieldset{padding:0;border:0}.elementor-control{--control-title-size:12px;position:relative;padding:0 20px 15px}.elementor-control a{font-weight:500;text-decoration:none;border-block-end:1px dotted transparent;transition:all .3s ease-in-out}.elementor-control a:hover{border-block-end-color:inherit}.elementor-control .elementor-control-content{display:flex;flex-direction:column}.elementor-control .elementor-control-title{font-size:var(--control-title-size);line-height:1;margin-inline-end:5px}.elementor-control .elementor-control-title:empty{display:none}.elementor-control .elementor-control-spinner{display:flex;align-items:center}.elementor-control.elementor-control-type-divider{padding:0}.elementor-control.elementor-control-type-divider .elementor-control-content{border-width:0;border-block-start:var(--e-a-border);background-color:var(--e-a-bg-default);height:15px}.elementor-control.elementor-control-separator-before{padding-block-start:15px}.elementor-control.elementor-control-separator-before:before{content:"";position:absolute;height:1px;width:calc(100% - 40px);top:0;right:20px;background-color:var(--e-a-border-color)}.elementor-control.elementor-control-separator-after:after{content:"";position:absolute;height:1px;width:calc(100% - 40px);bottom:0;right:20px;background-color:var(--e-a-border-color)}.elementor-control.elementor-control-separator-after+.elementor-control-type-tabs~.elementor-control-separator-default,.elementor-control.elementor-control-separator-after:not(.elementor-hidden-control)~.elementor-control-separator-default{padding-block-start:15px}.elementor-control.elementor-control-deprecated,.elementor-control.elementor-control-deprecated .elementor-control-field-description{color:var(--e-a-color-warning)}.elementor-control.elementor-control-hidden-label>*>*>.elementor-control-title,.elementor-control.elementor-control-hidden-label>*>.elementor-control-title,.elementor-control.elementor-hidden-control{display:none}.elementor-control.elementor-control-type-heading .elementor-control-title{font-weight:700;margin:0}body:not(.elementor-device-desktop) .elementor-control.elementor-control-responsive-desktop,body:not(.elementor-device-laptop) .elementor-control.elementor-control-responsive-laptop,body:not(.elementor-device-mobile) .elementor-control.elementor-control-responsive-mobile,body:not(.elementor-device-mobile_extra) .elementor-control.elementor-control-responsive-mobile_extra,body:not(.elementor-device-tablet) .elementor-control.elementor-control-responsive-tablet,body:not(.elementor-device-tablet_extra) .elementor-control.elementor-control-responsive-tablet_extra,body:not(.elementor-device-widescreen) .elementor-control.elementor-control-responsive-widescreen{display:none}.elementor-control-custom_attributes_pro .elementor-nerd-box-message,.elementor-control-custom_css_pro .elementor-nerd-box-message{margin-block-start:5px}.elementor-control.e-open .elementor-panel-heading-toggle .eicon:before,.elementor-control.elementor-active .elementor-panel-heading-toggle .eicon:before,.elementor-panel-category.e-open .elementor-panel-heading-toggle .eicon:before,.elementor-panel-category.elementor-active .elementor-panel-heading-toggle .eicon:before,.elementor-panel-scheme-item.e-open .elementor-panel-heading-toggle .eicon:before,.elementor-panel-scheme-item.elementor-active .elementor-panel-heading-toggle .eicon:before{content:"\e92a"}.elementor-control:not(.e-open):not(.elementor-active) .elementor-panel-heading-toggle .eicon:before,.elementor-panel-category:not(.e-open):not(.elementor-active) .elementor-panel-heading-toggle .eicon:before,.elementor-panel-scheme-item:not(.e-open):not(.elementor-active) .elementor-panel-heading-toggle .eicon:before{content:"\e909"}.elementor-panel-heading{display:flex;align-items:center;gap:5px;height:48px;padding-inline:20px;width:100%;border:0;border-block-start:var(--e-a-border);border-block-start-width:2px;background-color:transparent;color:var(--e-a-color-txt-accent);cursor:pointer}.elementor-panel-heading-toggle{width:10px;display:flex;flex-direction:column;align-items:center}.elementor-panel-heading-title{font-weight:700}.elementor-panel-heading-promotion{margin-inline-start:auto}.elementor-panel-heading-promotion a{color:var(--e-a-color-accent-promotion);font-family:Roboto,sans-serif;font-weight:500;font-size:13px}.elementor-panel-heading-promotion a i{margin-inline-end:4px;font-size:14px}.elementor-panel-heading-promotion a:hover{color:var(--e-a-color-accent-promotion)}.elementor-panel-heading:focus-visible{color:var(--e-a-color-txt-hover)}#elementor-controls .elementor-control-type-section:first-child .elementor-panel-heading{border-block-start:none}.elementor-control-field{display:flex;align-items:center}.elementor-label-block>.elementor-control-content>.elementor-control-field{flex-wrap:wrap}.elementor-label-block>.elementor-control-content>.elementor-control-field>.elementor-control-input-wrapper{width:100%;max-width:100%;margin-block-start:10px}.elementor-label-block>.elementor-control-content>.elementor-control-field>.elementor-control-input-wrapper>.elementor-choices label{width:auto;flex:1 1 27px;display:flex;align-items:center;justify-content:center}.elementor-label-block.elementor-control-hidden-label.elementor-label-block>.elementor-control-content>.elementor-control-field>.elementor-control-input-wrapper,.elementor-label-block.elementor-control-hidden-label:not(.elementor-control-dynamic)>.elementor-control-content>.elementor-control-field>.elementor-control-input-wrapper{margin-block-start:0}.elementor-label-inline>.elementor-control-content>.elementor-control-field>.elementor-control-title{flex-shrink:0;max-width:60%}.elementor-label-inline>.elementor-control-content>.elementor-control-field>.elementor-control-input-wrapper{margin-inline-start:auto}.elementor-control-field-description{margin-block-start:10px}.elementor-group-control-attachment_alert .elementor-control-field-description{margin-block-start:0}.elementor-control-start-end .eicon-h-align-left,.elementor-control-start-end .eicon-h-align-right{transform:rotate(180deg)}.elementor-update-preview{margin:15px 15px 0;display:flex;align-items:center}.elementor-update-preview-button-wrapper{flex-grow:1;text-align:end}.elementor-update-preview-button{padding:8px 15px}.elementor-control-direction-ltr input,.elementor-control-direction-ltr textarea{direction:ltr}.elementor-control-direction-rtl input,.elementor-control-direction-rtl textarea{direction:rtl}.elementor-control-alert{display:flex;flex-direction:column;justify-content:flex-start;align-items:flex-start;gap:8px}.elementor-control-alert-heading{font-weight:700}.elementor-control-type-button .elementor-control-input-wrapper{text-align:end}.elementor-control-type-button .elementor-button{width:auto}.elementor-control-type-button .elementor-button.elementor-button-center{display:block;margin:0 auto}.elementor-control-type-choose.elementor-label-block .elementor-choices{width:100%}.elementor-choices{display:flex;height:27px;line-height:27px;text-align:center;border-spacing:1px;border-radius:var(--e-a-border-radius);overflow:hidden}.elementor-choices .elementor-choices-label{border-block-start:var(--e-a-border-bold);border-block-end:var(--e-a-border-bold);border-inline-start:var(--e-a-border-bold);border-inline-end:none;font-size:12px;transition:var(--e-a-transition-hover);cursor:pointer;overflow:hidden}.elementor-choices .elementor-choices-label:nth-child(2){border-start-start-radius:var(--e-a-border-radius);border-end-start-radius:var(--e-a-border-radius)}.elementor-choices .elementor-choices-label:last-child{border-inline-end:var(--e-a-border-bold);border-start-end-radius:var(--e-a-border-radius);border-end-end-radius:var(--e-a-border-radius)}.elementor-choices input{display:none}.elementor-choices input:hover+.elementor-choices-label{background-color:var(--e-a-bg-hover)}.elementor-choices input.e-choose-placeholder+.elementor-choices-label,.elementor-choices input:checked+.elementor-choices-label{background-color:var(--e-a-bg-active-bold);color:var(--e-a-color-txt-accent)}.elementor-label-inline .elementor-choices{justify-content:flex-end}.elementor-control-type-color.e-control-global .pickr{border-start-start-radius:0;border-start-end-radius:var(--e-a-border-radius);border-end-start-radius:0;border-end-end-radius:var(--e-a-border-radius);flex-shrink:0;border-color:var(--e-a-border-color-bold);transition:var(--e-a-transition-hover)}.elementor-control-type-color.e-control-global .pickr:hover{background-color:var(--e-a-bg-hover)}.elementor-control-type-color.e-control-global .e-global__popover-toggle:not(.e-global__popover-toggle--active)~.pickr{background-color:var(--e-a-bg-active-bold)}.elementor-control-type-color .elementor-control-title{flex-grow:1}.elementor-control-type-color .elementor-control-input-wrapper{display:flex;justify-content:flex-end}.elementor-group-control-css-filter .elementor-slider{height:6px;box-shadow:inset 0 0 1px 1px rgba(0,0,0,.2)}.elementor-group-control-css-filter .elementor-control-content>.elementor-control-field>.elementor-control-input-wrapper{margin-block-start:0;margin-block-end:5px}.elementor-group-control-blur .elementor-slider{background:url(../images/blur.png);background-size:cover;background-position:50%}.elementor-group-control-contrast .elementor-slider{background:url(../images/contrast.png);background-size:100% 100%}.elementor-group-control-hue .elementor-slider{background-image:linear-gradient(90deg,red,orange,#ff0,#adff2f,#32cd32,#00bfff,#00f,#9400d3 95%)}.elementor-group-control-saturate .elementor-slider{background-image:linear-gradient(90deg,grey,red)}.elementor-group-control-brightness .elementor-slider{background-image:linear-gradient(90deg,#000,#fff)}.elementor-control-type-dimensions .elementor-control-dimensions{display:flex}.elementor-control-type-dimensions li{flex:1;transition:flex-grow .3s ease-in-out}.elementor-control-type-dimensions li .elementor-link-dimensions,.elementor-control-type-dimensions li input{display:block;text-align:center;width:100%;height:27px}.elementor-control-type-dimensions li input{border-inline-start:none;border-radius:0;padding:var(--e-a-border-radius)}.elementor-control-type-dimensions li input:focus{border-inline-start:var(--e-a-border-bold);margin-inline-start:-1px;width:calc(100% + 1px)}.elementor-control-type-dimensions li input:focus+.elementor-control-dimension-label{color:var(--e-a-color-txt)}.elementor-control-type-dimensions li .elementor-link-dimensions{border:var(--e-a-border-bold);border-inline-start:none;background-color:var(--e-a-bg-default);padding:0;outline:none;border-start-start-radius:0;border-start-end-radius:var(--e-a-border-radius);border-end-start-radius:0;border-end-end-radius:var(--e-a-border-radius);cursor:pointer}.elementor-control-type-dimensions li:first-child input{border-inline-start:1px solid var(--e-a-border-color-bold);border-start-start-radius:var(--e-a-border-radius);border-start-end-radius:0;border-end-start-radius:var(--e-a-border-radius);border-end-end-radius:0}.elementor-control-type-dimensions li:first-child input:focus{border-color:var(--e-a-border-color-focus);margin-inline-start:0;width:100%}.elementor-control-type-dimensions li:last-child{max-width:27px}.elementor-control-type-dimensions.e-units-custom li.elementor-control-dimension:focus-within{flex:2.5}.elementor-control-type-dimensions .elementor-control-dimension-label{color:var(--e-a-color-txt-muted);display:block;text-align:center;font-size:9px;padding-block-start:5px}.elementor-control-type-dimensions .elementor-link-dimensions.unlinked{background-color:var(--e-a-bg-default)}.elementor-control-type-dimensions .elementor-link-dimensions.unlinked .elementor-linked{display:none}.elementor-control-type-dimensions .elementor-link-dimensions:not(.unlinked){background-color:var(--e-a-bg-active-bold);color:var(--e-a-color-txt-accent);border-color:var(--e-a-border-color-bold)}.elementor-control-type-dimensions .elementor-link-dimensions:not(.unlinked) .elementor-unlinked{display:none}.elementor-control-responsive-switchers{--selected-option:0;--pointer-position:var(--selected-option);position:relative;width:2.5em;height:2.5em;margin:calc(-2.5em + 12px) 0;margin-inline-end:5px}.elementor-control-responsive-switchers__holder{position:absolute;width:100%;top:0;background-color:var(--e-a-bg-default);border-radius:var(--e-a-border-radius);transition:.15s;border:1px solid transparent}.elementor-control-responsive-switchers.elementor-responsive-switchers-open{z-index:11000}.elementor-control-responsive-switchers.elementor-responsive-switchers-open .elementor-responsive-switcher{height:2.5em;transform:scale(1);opacity:1}.elementor-control-responsive-switchers.elementor-responsive-switchers-open .elementor-responsive-switcher:hover{color:var(--e-a-color-primary-bold)}.elementor-control-responsive-switchers.elementor-responsive-switchers-open .elementor-control-responsive-switchers__holder{box-shadow:var(--e-a-dropdown-shadow)}.elementor-responsive-switcher{all:unset;display:flex;align-items:center;justify-content:center;position:relative;z-index:2;cursor:pointer;height:0;width:100%;transform:scale(0);opacity:0;transition:.15s;font-size:12px;color:inherit}.elementor-responsive-switcher:hover{color:var(--e-a-color-primary-bold)}.elementor-device-widescreen .elementor-responsive-switcher.elementor-responsive-switcher-widescreen{height:2.5em;transform:scale(1);opacity:1}.elementor-device-widescreen .elementor-responsive-switchers-open:not(:hover) .elementor-responsive-switcher.elementor-responsive-switcher-widescreen{color:var(--e-a-color-primary-bold)}.elementor-device-desktop .elementor-responsive-switcher.elementor-responsive-switcher-desktop{height:2.5em;transform:scale(1);opacity:1}.elementor-device-desktop .elementor-responsive-switchers-open:not(:hover) .elementor-responsive-switcher.elementor-responsive-switcher-desktop{color:var(--e-a-color-primary-bold)}.elementor-device-laptop .elementor-responsive-switcher.elementor-responsive-switcher-laptop{height:2.5em;transform:scale(1);opacity:1}.elementor-device-laptop .elementor-responsive-switchers-open:not(:hover) .elementor-responsive-switcher.elementor-responsive-switcher-laptop{color:var(--e-a-color-primary-bold)}.elementor-device-tablet_extra .elementor-responsive-switcher.elementor-responsive-switcher-tablet_extra{height:2.5em;transform:scale(1);opacity:1}.elementor-device-tablet_extra .elementor-responsive-switchers-open:not(:hover) .elementor-responsive-switcher.elementor-responsive-switcher-tablet_extra{color:var(--e-a-color-primary-bold)}.elementor-device-tablet .elementor-responsive-switcher.elementor-responsive-switcher-tablet{height:2.5em;transform:scale(1);opacity:1}.elementor-device-tablet .elementor-responsive-switchers-open:not(:hover) .elementor-responsive-switcher.elementor-responsive-switcher-tablet{color:var(--e-a-color-primary-bold)}.elementor-device-mobile_extra .elementor-responsive-switcher.elementor-responsive-switcher-mobile_extra{height:2.5em;transform:scale(1);opacity:1}.elementor-device-mobile_extra .elementor-responsive-switchers-open:not(:hover) .elementor-responsive-switcher.elementor-responsive-switcher-mobile_extra{color:var(--e-a-color-primary-bold)}.elementor-device-mobile .elementor-responsive-switcher.elementor-responsive-switcher-mobile{height:2.5em;transform:scale(1);opacity:1}.elementor-device-mobile .elementor-responsive-switchers-open:not(:hover) .elementor-responsive-switcher.elementor-responsive-switcher-mobile{color:var(--e-a-color-primary-bold)}.e-units-wrapper{position:relative;margin-inline-start:auto}.e-units-wrapper .e-units-switcher{cursor:pointer;font-size:10px;padding:.5em;margin:-.5em 0;transition:all .15s ease-in-out}.e-units-wrapper .e-units-switcher:hover{color:var(--e-a-color-primary-bold);background-color:var(--e-a-bg-hover);border-radius:var(--e-a-border-radius)}.e-units-wrapper .e-units-switcher:not([data-selected=custom]) i.eicon-edit,.e-units-wrapper .e-units-switcher[data-selected=custom] span{display:none}.e-units-wrapper .e-units-switcher i.eicon-angle-right{transform:rotate(90deg)}.e-units-choices input{display:none}.e-units-choices input:checked+label{color:var(--e-a-color-primary-bold)}.e-units-choices label{cursor:pointer;display:block}.e-units-choices{display:none;overflow:hidden;max-height:0;position:absolute;top:-.8em;right:-.5em;width:2.5em;text-align:center;background-color:var(--e-a-bg-default);border-radius:var(--e-a-border-radius);box-shadow:var(--e-a-dropdown-shadow);animation-timing-function:linear;animation-delay:0s;animation-fill-mode:forwards;z-index:11000}.e-units-choices .elementor-units-choices-label{display:flex;align-items:center;height:3em;justify-content:center;font-size:10px;transition:.15s}.e-units-choices .elementor-units-choices-label:hover{color:var(--e-a-color-primary-bold)}.e-units-choices.e-units-choices-open{display:block;animation-duration:1s;animation-name:e-units-choices-open}.e-units-custom input{font-family:monospace;font-size:.85em}@keyframes e-units-choices-open{0%{max-height:0}to{max-height:100vh}}.elementor-control-type-gaps .elementor-control-gaps{display:flex}.elementor-control-type-gaps li{flex:1;transition:flex-grow .3s ease-in-out}.elementor-control-type-gaps li .elementor-link-gaps,.elementor-control-type-gaps li input{display:block;text-align:center;width:100%;height:27px}.elementor-control-type-gaps li input{border-inline-start:none;border-radius:0;padding:var(--e-a-border-radius)}.elementor-control-type-gaps li input:focus{border-inline-start:var(--e-a-border-bold);margin-inline-start:-1px;width:calc(100% + 1px)}.elementor-control-type-gaps li input:focus+.elementor-control-gap-label{color:var(--e-a-color-txt)}.elementor-control-type-gaps li .elementor-link-gaps{border:var(--e-a-border-bold);border-inline-start:none;background-color:var(--e-a-bg-default);padding:0;outline:none;border-start-start-radius:0;border-start-end-radius:var(--e-a-border-radius);border-end-start-radius:0;border-end-end-radius:var(--e-a-border-radius);cursor:pointer}.elementor-control-type-gaps li:first-child input{border-inline-start:1px solid var(--e-a-border-color-bold);border-start-start-radius:var(--e-a-border-radius);border-start-end-radius:0;border-end-start-radius:var(--e-a-border-radius);border-end-end-radius:0}.elementor-control-type-gaps li:first-child input:focus{border-color:var(--e-a-border-color-focus);margin-inline-start:0;width:100%}.elementor-control-type-gaps li:last-child{max-width:27px}.elementor-control-type-gaps.e-units-custom li.elementor-control-gap:focus-within{flex:2.5}.elementor-control-type-gaps .elementor-control-gap-label{color:var(--e-a-color-txt-muted);display:block;text-align:center;font-size:9px;padding-block-start:5px}.elementor-control-type-gaps .elementor-link-gaps.unlinked{background-color:var(--e-a-bg-default)}.elementor-control-type-gaps .elementor-link-gaps.unlinked .elementor-linked{display:none}.elementor-control-type-gaps .elementor-link-gaps:not(.unlinked){background-color:var(--e-a-bg-active-bold);color:var(--e-a-color-txt-accent);border-color:var(--e-a-border-color-bold)}.elementor-control-type-gaps .elementor-link-gaps:not(.unlinked) .elementor-unlinked{display:none}.elementor-control-type-icons .elementor-control-media__preview>*{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.elementor-control-type-icons .elementor-control-media__preview i{font-size:70px}.elementor-control-type-icons .elementor-control-media__preview svg{height:75%}.elementor-control-type-icons .elementor-control-icons--inline__svg i.eicon-upload{font-size:15px}.elementor-control-type-gallery .elementor-control-media__content{border:var(--e-a-border-bold);border-radius:3px}.elementor-control-type-gallery .elementor-control-gallery-status{font-size:12px;height:27px;padding-inline-start:10px;border-block-end:var(--e-a-border-bold);display:flex}.elementor-control-type-gallery .elementor-control-gallery-status>*{display:flex;align-items:center}.elementor-control-type-gallery .elementor-control-gallery-status-title{flex-grow:1}.elementor-control-type-gallery .elementor-control-gallery-content{position:relative;overflow:hidden}.elementor-control-type-gallery .elementor-control-gallery-thumbnails{display:grid;grid-template-columns:repeat(auto-fill,minmax(48px,1fr));grid-gap:10px;cursor:pointer;padding:10px}.elementor-control-type-gallery .elementor-control-gallery-thumbnails:focus+.elementor-control-gallery-edit,.elementor-control-type-gallery .elementor-control-gallery-thumbnails:hover+.elementor-control-gallery-edit{opacity:1}.elementor-control-type-gallery .elementor-control-gallery-thumbnail{width:48px;height:48px;-o-object-fit:cover;object-fit:cover;border:var(--e-a-border)}.elementor-control-type-gallery .elementor-control-gallery-thumbnail+.unoptimized__image{outline:2px solid var(--e-a-btn-bg-danger-active);opacity:.6}.elementor-control-type-gallery .elementor-control-gallery-edit{position:absolute;top:0;bottom:0;left:0;right:0;background-color:rgba(0,0,0,.2);padding:10px;font-size:11px;transition:all .3s ease-in-out;pointer-events:none;cursor:pointer;opacity:0}.elementor-control-type-gallery .elementor-control-gallery-edit span{position:absolute;top:10px;left:10px;width:21px;height:21px;color:var(--e-a-color-white);background-color:rgba(0,0,0,.5);box-shadow:0 0 7px 0 rgba(0,0,0,.2);transition:var(--e-a-transition-hover)}.elementor-control-type-gallery .elementor-control-gallery-edit span i{font-size:11px;padding:5px}.elementor-control-type-gallery .elementor-control-gallery-edit span:hover{background-color:rgba(0,0,0,.6)}.elementor-control-type-gallery .elementor-control-gallery-add{width:48px;height:48px;font-size:14px}.elementor-control-type-gallery .elementor-control-gallery-add i{margin:0}.elementor-control-type-gallery.elementor-gallery-empty .elementor-control-gallery-clear,.elementor-control-type-gallery.elementor-gallery-empty .elementor-control-gallery-edit,.elementor-control-type-gallery.elementor-gallery-empty .elementor-control-gallery-thumbnails{display:none}.elementor-control-type-gallery.elementor-gallery-empty .elementor-control-gallery-content{padding:10px}.elementor-control-type-gallery.elementor-gallery-has-images .elementor-control-gallery-add{display:none}.elementor-control-type-gallery.elementor-control-dynamic .elementor-control-gallery-clear{border-inline-start:var(--e-a-border)}.elementor-control-type-gallery .elementor-control-gallery-clear{color:currentColor;background-color:transparent;border:none;cursor:pointer;justify-content:center}.elementor-control-type-gallery .elementor-control-gallery-clear:focus,.elementor-control-type-gallery .elementor-control-gallery-clear:hover{color:var(--e-a-color-danger)}.elementor-control-type-gallery .elementor-control-dynamic-switcher{border-width:0;border-inline-start-width:1px;border-block-end-width:1px;border-radius:0}.e-global__popover{width:288px;z-index:1;font-size:12px;padding-inline-start:10px}.e-global__popover-toggle{border:var(--e-a-border-bold);border-inline-end:0;border-start-start-radius:3px;border-start-end-radius:0;border-end-start-radius:3px;border-end-end-radius:0;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:var(--e-a-transition-hover)}.e-global__popover-toggle:hover{background-color:var(--e-a-bg-hover)}.e-global__popover-toggle--active{color:var(--e-a-color-primary-bold);background-color:var(--e-a-bg-active-bold)}.e-global__popover-container{box-shadow:var(--e-a-popover-shadow);border-radius:var(--e-a-border-radius);background-color:var(--e-a-bg-default)}.e-global__popover-title{padding:15px 20px;font-weight:500;border-block-end:var(--e-a-border);display:flex}.e-global__popover-title>i{margin-inline-end:5px}.e-global__popover-title-text{flex-grow:1}.e-global__popover-info{margin-inline-end:10px;display:inline-block}.e-global__popover-info-tooltip{width:270px;z-index:1;background-color:rgba(0,0,0,.9);color:var(--e-a-color-white);padding:20px;border-radius:3px}.e-global__popover-info-tooltip:after{content:"";position:absolute;bottom:-17px;right:16px;border:10px solid transparent;border-block-start-color:rgba(0,0,0,.9)}.e-global__popover-info i{font-size:13px}.e-global__preview-items-container{max-height:260px;overflow-y:auto;padding:5px 0}.e-global__preview-items-container::-webkit-scrollbar{width:7px}.e-global__preview-items-container::-webkit-scrollbar-thumb{background-color:#babfc5;border-radius:10px}.e-global__manage-button{font-weight:500;cursor:pointer}.e-global__typography{padding-block:10px;padding-inline:35px 20px;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.e-global__typography.e-global__preview-item--selected:before{font-family:eicons;font-size:13px;content:"\e90e";position:absolute;transform:translateY(-50%);top:50%;inset-inline-start:13px}.e-global__color{padding:10px 20px;display:flex;align-items:center}.e-global__color-preview-container{height:20px;width:20px;border-radius:3px;border:1px solid rgba(0,0,0,.1);margin-inline-end:10px;flex-shrink:0;position:relative}.e-global__color-preview-color,.e-global__color-preview-transparent-bg{border-radius:3px;height:100%;width:100%;position:absolute;top:0;left:0}.e-global__color-preview-transparent-bg{background-image:linear-gradient(45deg,var(--e-a-border-color-bold) 25%,transparent 0,transparent 75%,var(--e-a-border-color-bold) 0,var(--e-a-border-color-bold)),linear-gradient(45deg,var(--e-a-border-color-bold) 25%,transparent 0,transparent 75%,var(--e-a-border-color-bold) 0,var(--e-a-border-color-bold));background-size:12px 12px;background-position:0 0,calc(12px / 2) calc(12px / 2)}.e-global__color-title{flex-grow:1;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;padding-inline-end:10px}.e-global__color-hex{font-size:10px;color:var(--e-a-color-txt-muted)}.e-global__color .pcr-button{background-color:var(--e-a-bg-default)}.e-global__color.e-global__preview-item--selected .e-global__color-preview-container{display:flex;justify-content:center;align-items:center;color:var(--e-a-color-white)}.e-global__color.e-global__preview-item--selected .e-global__color-preview-container:before{font-family:eicons;font-size:13px;content:"\e90e";text-shadow:0 0 1px #000;z-index:1}.e-global__preview-item{cursor:pointer;position:relative}.e-global__preview-item:hover{background-color:var(--e-a-bg-hover)}.e-global__confirm-delete i,.e-global__confirm-message-text i{color:var(--e-a-color-warning)}.e-global__confirm-input-wrapper{display:flex;align-items:center;border:var(--e-a-border);border-radius:var(--e-a-border-radius);margin:15px 0;padding:2px}.e-global__confirm-input-wrapper input{font-family:var(--e-a-font-family);font-size:12px;padding:2px;border:0}.e-control-global .elementor-control-input-wrapper{display:flex;justify-content:flex-end;max-width:135px;width:100%}.e-control-global.elementor-control .elementor-control-input-wrapper{display:flex;flex-direction:row;align-items:stretch}.e-control-global .elementor-control-spinner{margin-inline-end:4px}.elementor-control-type-hidden{display:none!important}.elementor-control-type-icon .select2-selection__rendered .eicon{margin-inline-end:3px}.elementor-control-type-image_dimensions .elementor-control-field-description{margin:0 0 15px;line-height:1.4}.elementor-control-type-image_dimensions .elementor-control-input-wrapper{display:flex;align-items:flex-start}.elementor-control-type-image_dimensions .elementor-image-dimensions-field{width:65px}.elementor-control-type-image_dimensions .elementor-image-dimensions-field input:focus+.elementor-image-dimensions-field-description{color:var(--e-a-color-txt)}.elementor-control-type-image_dimensions .elementor-image-dimensions-separator{width:20px;text-align:center;padding-block-start:4px}.elementor-control-type-image_dimensions .elementor-image-dimensions-field-description{display:block;margin-block-start:5px;color:var(--e-a-color-txt-disabled);font-size:10px;text-align:center}.elementor-control-type-image_dimensions .elementor-image-dimensions-apply-button{margin-inline-start:auto}.elementor-control-media.e-media-empty-placeholder .e-control-image-size,.elementor-control-media.e-media-empty .elementor-control-media-area .elementor-control-media__content__remove,.elementor-control-media.e-media-empty .elementor-control-media-area .elementor-control-media__remove,.elementor-control-media:not(.e-media-empty) .elementor-control-media__content__upload-button{display:none}.elementor-control-media .eicon-plus-circle{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);color:var(--e-a-color-white);font-size:20px}.elementor-control-media__content__upload-button{background-color:var(--e-a-bg-active-bold)}.elementor-control-media__preview{height:100%;background-size:cover;background-position:50%;padding-block-end:42.8571%}.elementor-control-media-area{background-image:linear-gradient(45deg,var(--e-a-border-color-bold) 25%,transparent 0,transparent 75%,var(--e-a-border-color-bold) 0,var(--e-a-border-color-bold)),linear-gradient(45deg,var(--e-a-border-color-bold) 25%,transparent 0,transparent 75%,var(--e-a-border-color-bold) 0,var(--e-a-border-color-bold));background-size:16px 16px;background-position:0 0,calc(16px / 2) calc(16px / 2);background-color:var(--e-a-bg-default);border:var(--e-a-border-bold);aspect-ratio:21/9}.elementor-control-media-area:not(:hover) .elementor-control-media__remove{display:none}.elementor-control-media-area .eicon-video-camera{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);color:hsla(0,0%,100%,.7);font-size:21px}.elementor-control-media .elementor-control-media__content{aspect-ratio:21/9;position:relative;cursor:pointer;overflow:hidden}.elementor-control-media .elementor-control-media__content:hover:after{content:"";position:absolute;top:0;bottom:0;left:0;right:0;background-color:rgba(0,0,0,.2);pointer-events:none}.elementor-control-media .elementor-control-media__content:not(:hover) .elementor-control-media__tools{bottom:-30px}.elementor-control-media__content{transition:all .2s ease-in-out}.elementor-control-media__tools{position:absolute;bottom:0;left:0;right:0;height:27px;transition:all .2s ease-in-out}.elementor-control-media__tools>:not(:first-child){margin-inline-start:1px}.elementor-control-media__tool{display:flex;align-items:center;justify-content:center;flex-grow:1;color:var(--e-a-color-white);background-color:rgba(0,0,0,.9);font-size:11px;transition:var(--e-a-transition-hover)}.elementor-control-media__tool:hover{background-color:rgba(0,0,0,.8)}.elementor-control-media__remove{display:flex;align-items:center;justify-content:center;transition:all .3s ease-in-out}.elementor-control-media__content__remove{position:absolute;z-index:1;top:10px;left:10px;width:20px;height:20px;font-size:11px;color:var(--e-a-color-white);background-color:rgba(0,0,0,.5);border-radius:var(--e-border-radius);box-shadow:0 0 7px 0 rgba(0,0,0,.2);transition:var(--e-a-transition-hover)}.elementor-control-media__content__remove:hover{background-color:rgba(0,0,0,.6)}.elementor-control-media.e-media-empty .elementor-control-file-area,.elementor-control-media__warnings:empty{display:none}.elementor-control-media__warnings:not(:empty){margin-block-start:10px}.elementor-control-media__file{display:flex;justify-content:space-between;align-items:center;width:100%;margin-block-start:10px;border:var(--e-a-border)}.elementor-control-media__file__content{padding-inline-start:5px;font-size:12px}.elementor-control-media__file__content__label{color:#9da5ae}.elementor-control-media__file__content__info{display:flex;align-items:center;font-weight:500}.elementor-control-media__file__content__info__icon{margin-inline-end:5px}.elementor-control-media__file__controls{display:flex;border-inline-start:var(--e-a-border)}.elementor-control-media__file__controls__remove,.elementor-control-media__file__controls__upload-button{width:27px;height:27px;cursor:pointer;align-items:center}.elementor-control-media__file__controls__upload-button{display:flex;justify-content:center}.elementor-control-media__file__controls__remove{border-inline-end:var(--e-a-border)}.elementor-control-media.e-media-empty .elementor-control-media__file__content__info,.elementor-control-media.e-media-empty .elementor-control-media__file__controls__remove,.elementor-control-media:not(.e-media-empty) .elementor-control-media__file__content__label{display:none}.elementor-control-media .elementor-control-dynamic-switcher{border:none;border-radius:0;background-color:rgba(0,0,0,.9);color:var(--e-a-color-white)}.elementor-control-media .elementor-control-dynamic-switcher:hover{background-color:rgba(0,0,0,.8);color:var(--e-a-color-white)}.elementor-control-media .e-control-image-size{display:flex;flex-direction:column;width:100%;padding-block-start:20px}.elementor-control-media .e-control-image-size .elementor-control-input-wrapper{margin-inline-start:auto}.elementor-control-type-media.elementor-control-dynamic-value .elementor-control-input-wrapper{border:none}.elementor-control:not(.elementor-control-type-icons) .elementor-control-media__preview{background-color:var(--e-a-bg-active-bold)}.elementor-control-notice{display:flex;justify-content:flex-start;align-items:flex-start;gap:8px;padding:16px;border-radius:3px;border:1px solid var(--notice-control-color,var(--e-a-color-txt));color:var(--e-a-color-txt);font-size:12px;font-weight:400;line-height:1.5;text-align:start;margin-block-start:10px}.elementor-control-notice-type-info{--notice-control-color:var(--e-a-color-info)}.elementor-control-notice-type-success{--notice-control-color:var(--e-a-color-success)}.elementor-control-notice-type-warning{--notice-control-color:var(--e-a-color-warning)}.elementor-control-notice-type-danger{--notice-control-color:var(--e-a-color-danger)}.elementor-control-notice-icon{flex-basis:18px;color:var(--notice-control-color)}.elementor-control-notice-main{display:flex;flex-direction:column;justify-content:flex-start;align-items:flex-start;gap:6px;flex:1}.elementor-control-notice-main-heading{font-weight:700;font-style:italic}.elementor-control-notice-main-content{font-style:italic;line-height:1.5}.elementor-control-notice-main-actions{display:flex;gap:10px;padding-block-start:8px}.elementor-control-notice-main a{color:inherit;font-weight:700;cursor:pointer}.elementor-control-notice-main a:focus,.elementor-control-notice-main a:hover{color:inherit}.elementor-control-notice-dismiss{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:transparent;border:0;padding:0;margin:0;cursor:pointer}.elementor-control-type-popover_toggle input{display:none}.elementor-control-type-popover_toggle label{cursor:pointer}.elementor-control-type-popover_toggle .elementor-control-input-wrapper{display:flex;flex-direction:row-reverse;align-items:center}.elementor-control-type-popover_toggle .elementor-control-popover-toggle-toggle:checked+.elementor-control-popover-toggle-toggle-label{color:var(--e-a-color-txt-active);background-color:var(--e-a-bg-active-bold)}.elementor-control-type-popover_toggle .elementor-control-popover-toggle-toggle:not(:checked)~.elementor-control-popover-toggle-reset-label{display:none}.elementor-control-type-popover_toggle .elementor-control-popover-toggle-toggle-label{height:27px;display:inline-flex;align-items:center;justify-content:center;border-radius:var(--e-a-border-radius);border:var(--e-a-border-bold);transition:var(--e-a-transition-hover)}.elementor-control-type-popover_toggle .elementor-control-popover-toggle-toggle-label:hover{background-color:var(--e-a-bg-hover)}.elementor-control-type-popover_toggle .elementor-control-popover-toggle-reset-label{color:var(--e-a-color-txt-muted);margin-inline-end:5px}.elementor-control-type-popover_toggle .elementor-control-popover-toggle-reset-label:hover{color:var(--e-a-color-txt)}.elementor-controls-popover.e-controls-popover--typography{padding-block-start:0}.e-control-global .elementor-control-popover-toggle-toggle-label{border-start-start-radius:0;border-start-end-radius:var(--e-a-border-radius);border-end-start-radius:0;border-end-end-radius:var(--e-a-border-radius);flex-shrink:0}.elementor-control-type-repeater .elementor-control:not(.elementor-control-type-tab){padding-inline-start:10px;padding-inline-end:10px;padding-block-end:10px}.elementor-control-type-repeater.elementor-repeater-has-minimum-rows .elementor-repeater-tool-remove{display:none}.elementor-control-type-repeater .elementor-repeater-fields{margin:10px 0}.elementor-control-type-repeater .elementor-repeater-row-controls{border:var(--e-a-border-bold);border-block-start-width:0;padding-block-start:15px}.elementor-control-type-repeater .elementor-repeater-row-controls:not(.editable){display:none}.elementor-control-type-repeater .elementor-repeater-row-tools{display:flex;align-items:center;width:100%;border:1px solid var(--e-a-border-color-bold);transition:var(--e-a-transition-hover)}.elementor-control-type-repeater .elementor-repeater-row-tools>button{display:flex;align-items:center;justify-content:center;height:40px;border:none;background-color:transparent;color:currentColor;cursor:pointer}.elementor-control-type-repeater .elementor-repeater-row-tools>button:focus,.elementor-control-type-repeater .elementor-repeater-row-tools>button:hover{background-color:var(--e-a-bg-hover)}.elementor-control-type-repeater .elementor-repeater-row-tools .elementor-repeater-row-item-title{flex:1;justify-content:flex-start;padding:0 10px;font-size:var(--control-title-size);white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.elementor-control-type-repeater .elementor-repeater-row-tools .elementor-repeater-row-item-title .eicon,.elementor-control-type-repeater .elementor-repeater-row-tools .elementor-repeater-row-item-title i,.elementor-control-type-repeater .elementor-repeater-row-tools .elementor-repeater-row-item-title svg{margin-inline-end:5px}.elementor-control-type-repeater .elementor-repeater-row-tools .elementor-repeater-row-item-title img[src$=svg]{width:1em}.elementor-control-type-repeater .elementor-repeater-row-tools .elementor-repeater-row-tool{width:40px;border-inline-start:1px solid var(--e-a-border-color-bold)}.elementor-control-type-repeater .elementor-repeater-row-tools .elementor-repeater-row-handle-sortable{width:10px;border-inline-end:1px solid var(--e-a-border-color-bold);cursor:move}.elementor-control-type-repeater .elementor-button-wrapper{text-align:center;padding-block-start:5px}#elementor-controls{padding-block-start:15px}.elementor-control-type-section{padding:0}.elementor-control-type-section.e-open{padding-block-end:10px}.elementor-control-type-section+.elementor-control:not(.elementor-control-type-section):before{display:none}.elementor-control-type-section:not(:first-child):not(.elementor-control-type-section+.elementor-control-type-section){margin-block-start:25px}.elementor-control-type-select .elementor-control-input-wrapper{position:relative}.elementor-control-type-select .elementor-control-input-wrapper select{-webkit-appearance:none;-moz-appearance:none;appearance:none;font-size:var(--control-title-size);font-family:inherit;font-weight:inherit;font-style:inherit;text-transform:inherit;letter-spacing:inherit;line-height:inherit;flex-basis:100%;padding-inline-start:5px;padding-inline-end:20px;cursor:pointer}.elementor-control-type-select .elementor-control-input-wrapper select.e-select-placeholder{color:var(--e-a-color-txt-disabled)}.elementor-control-type-select .elementor-control-input-wrapper option.e-option-placeholder{display:none}.elementor-control-type-select .elementor-control-input-wrapper:after{font-family:eicons;content:"\e8ad";font-size:12px;position:absolute;top:50%;transform:translateY(-50%);left:5px;pointer-events:none}.elementor-control-type-select .elementor-control-field.elementor-control-field-select-small .elementor-control-input-wrapper{max-width:80px}.elementor-shadow-box .elementor-shadow-slider{margin-block-start:10px}.elementor-shadow-box .elementor-color-picker-wrapper .elementor-control-title{flex-grow:1}.elementor-control-type-slider.elementor-control-dynamic input{border-start-start-radius:var(--e-a-border-radius);border-start-end-radius:0;border-end-start-radius:var(--e-a-border-radius);border-end-end-radius:0}.elementor-control-type-slider .elementor-control-unit-2{width:21%}.elementor-control-type-slider.elementor-control-type-slider--multiple .elementor-control-input-wrapper{display:block}.elementor-control-type-slider--multiple{padding-block-end:40px}.elementor-control-type-slider--multiple .elementor-slider{margin-block-start:12px;width:98%}.elementor-control-type-slider--handles-range .elementor-slider .noUi-handle{border-radius:0;width:10px;transform:translateY(calc(50% - 14px)) translateX(-4px)}.elementor-control-type-slider--handles-range .elementor-slider .noUi-handle:after{content:"";position:absolute;top:2px;height:12px;width:11px;transform:rotate(45deg);background-color:var(--e-a-color-white);border-radius:3px}.elementor-control-type-slider--handles-range .elementor-slider .noUi-handle-lower:after{left:5px;box-shadow:2px -2px 3px 0 rgba(0,0,0,.1)}.elementor-control-type-slider--handles-range .elementor-slider .noUi-handle-upper:after{right:5px;box-shadow:-2px 2px 3px 0 rgba(0,0,0,.1)}.elementor-control-type-slider .elementor-control-dynamic-switcher{border-inline-start-width:0;border-start-start-radius:0;border-start-end-radius:var(--e-a-border-radius);border-end-start-radius:0;border-end-end-radius:var(--e-a-border-radius)}.elementor-control-type-slider .elementor-control-input-wrapper{display:flex;align-items:center}.elementor-control-type-slider .elementor-dynamic-cover{margin-block-start:10px}.elementor-control-type-slider.e-units-custom .elementor-slider{display:none}.elementor-control-type-slider.e-units-custom .elementor-slider-input{width:100%;margin:0;transition:none}.elementor-slider{flex-grow:1;height:4px;background-color:var(--e-a-border-color-bold);border-radius:5px;position:relative;cursor:pointer}.elementor-slider-input{width:21%;min-width:54px;margin-inline-start:12px;transition:width .3s ease-in-out}.elementor-slider__extra{position:relative}.elementor-slider__labels{display:flex;justify-content:space-between}.elementor-slider__label{font-size:9px;color:var(--e-a-color-txt-disabled)}.elementor-slider__scales{position:absolute;display:flex;justify-content:space-evenly;width:100%;margin-block-start:4px}.elementor-slider__scale{width:1px;height:21px;background-color:var(--e-a-border-color-focus)}.elementor-slider .noUi-handle{height:16px;width:16px;background-color:var(--e-a-color-white);left:0;transform:translateY(calc(50% - 14px)) translateX(-8px);position:absolute;box-shadow:0 1px 5px rgba(0,0,0,.3);border-radius:50%}.elementor-slider .noUi-connects{position:absolute;width:100%;height:4px}.elementor-slider .noUi-connect{position:absolute;z-index:0;top:0;left:0;height:100%;width:100%;will-change:transform;transform-origin:0 0;background-color:var(--e-a-border-color-focus)}.elementor-slider .noUi-tooltip{position:absolute;top:calc(100% + 5px);left:calc(50% - 4px);transform:translateX(-50%);font-size:10px}.elementor-control-type-structure .elementor-control-field{display:initial}.elementor-control-type-structure .elementor-control-structure-preset{padding:3px;border-radius:var(--e-border-radius);display:inline-block;cursor:pointer;height:50px}.elementor-control-type-structure .elementor-control-structure-preset svg{height:100%}.elementor-control-type-structure .elementor-control-structure-preset path{fill:var(--e-a-border-color-bold)}.elementor-control-type-structure .elementor-control-structure-reset{padding:15px 20px 0;font-size:11px;cursor:pointer;color:var(--e-a-color-txt-muted);border-block-start:var(--e-a-border);margin:0 -20px}.elementor-control-type-structure .elementor-control-structure-reset:hover{color:var(--e-a-color-txt)}.elementor-control-type-structure .elementor-control-structure-title{margin:10px -20px 0}.elementor-control-type-structure .elementor-control-structure-title:before{height:10px;box-shadow:inset 0 2px 4px hsla(0,0%,49.8%,.1)}.elementor-control-type-structure .elementor-control-structure-presets{display:flex;flex-wrap:wrap;justify-content:space-between}.elementor-control-type-structure .elementor-control-structure-presets input{display:none}.elementor-control-type-structure .elementor-control-structure-presets input:checked+.elementor-control-structure-preset path{fill:var(--e-a-border-color-focus)}.elementor-control-type-structure .elementor-control-structure-preset-wrapper{margin-block-end:15px}.elementor-control-type-structure .elementor-control-structure-preset-title{text-align:center;padding-block-start:5px;font-style:italic;font-size:11px;color:#9da5ae}.elementor-control-type-switcher .elementor-control-input-wrapper{text-align:end}.elementor-control-type-switcher .elementor-switch{position:relative;display:inline-block;vertical-align:top;height:20px;background-color:var(--e-a-bg-default);border-radius:18px;cursor:pointer}.elementor-control-type-switcher .elementor-switch-input{display:none}.elementor-control-type-switcher .elementor-switch-label{position:relative;display:block;height:inherit;font-size:10px;background:var(--e-a-bg-active-bold);border-radius:inherit;transition:.15s ease-out;transition-property:opacity,background}.elementor-control-type-switcher .elementor-switch-label:after,.elementor-control-type-switcher .elementor-switch-label:before{position:absolute;top:0;width:50%;text-align:center;line-height:20px;transition:inherit}.elementor-control-type-switcher .elementor-switch-label:before{content:attr(data-off);right:5px;color:var(--e-a-color-txt-muted)}.elementor-control-type-switcher .elementor-switch-label:after{content:attr(data-on);left:5px;color:var(--e-a-btn-color);opacity:0}.elementor-control-type-switcher .elementor-switch-input:checked~.elementor-switch-label{background:var(--e-a-btn-bg-primary)}.elementor-control-type-switcher .elementor-switch-input:checked~.elementor-switch-label:before{opacity:0}.elementor-control-type-switcher .elementor-switch-input:checked~.elementor-switch-label:after{opacity:1}.elementor-control-type-switcher .elementor-switch-handle{position:absolute;top:1px;left:1px;width:18px;height:18px;background:#fff;border-radius:10px;transition:left .15s ease-out}.elementor-control-type-switcher .elementor-switch-input:checked~.elementor-switch-handle{left:auto;right:1px}.elementor-control-type-tabs{display:flex;font-size:var(--control-title-size)}.elementor-control-type-tab{text-align:center;width:100%;padding:0;line-height:25px;border-block-start:var(--e-a-border-bold);border-block-end:var(--e-a-border-bold);border-inline-end:var(--e-a-border-bold);transition:var(--e-a-transition-hover);cursor:pointer}.elementor-control-type-tab:first-child{border-inline-start:var(--e-a-border-bold);border-start-start-radius:var(--e-a-border-radius);border-end-start-radius:var(--e-a-border-radius)}.elementor-control-type-tab:last-child{border-start-end-radius:var(--e-a-border-radius);border-end-end-radius:var(--e-a-border-radius)}.elementor-control-type-tab:hover{background-color:var(--e-a-bg-hover)}.elementor-control-type-tab.e-tab-active{background-color:var(--e-a-bg-active-bold);color:var(--e-a-color-txt-accent)}.e-tab-close{display:none!important}.elementor-control-type-code .elementor-control-dynamic-switcher,.elementor-control-type-textarea .elementor-control-dynamic-switcher{border-inline-start-width:1px;border-start-start-radius:0;border-start-end-radius:0;border-end-end-radius:0;border-end-start-radius:var(--e-a-border-radius)}.elementor-control-type-code:not(.elementor-control-dynamic-value) .elementor-control-dynamic-switcher,.elementor-control-type-textarea:not(.elementor-control-dynamic-value) .elementor-control-dynamic-switcher{position:absolute;top:0;left:0;z-index:1}.elementor-control-type-code .elementor-control-input-wrapper,.elementor-control-type-textarea .elementor-control-input-wrapper{position:relative}.elementor-control-type-code textarea,.elementor-control-type-textarea textarea{display:block;font-family:inherit}.elementor-control-type-code textarea:focus+.elementor-control-dynamic-switcher,.elementor-control-type-textarea textarea:focus+.elementor-control-dynamic-switcher{display:none}.elementor-control-type-code pre:focus-within+.elementor-control-dynamic-switcher,.elementor-control-type-textarea pre:focus-within+.elementor-control-dynamic-switcher{display:none}.elementor-control-type-url .elementor-control-field{position:relative}.elementor-control-type-url .elementor-control-input-wrapper{display:flex}.elementor-control-type-url.elementor-control-dynamic .elementor-control-url-more-options input{border-radius:var(--e-a-border-radius)}.elementor-control-type-url.elementor-control-dynamic-value .e-input-style{border-start-end-radius:0;border-end-end-radius:0}.elementor-control-type-url.elementor-control-dynamic-value .elementor-control-url-more{border-start-end-radius:var(--e-a-border-radius);border-end-end-radius:var(--e-a-border-radius)}.elementor-control-type-url .elementor-control-url-more{display:flex;align-items:center;justify-content:center;flex-shrink:0;border:var(--e-a-border-bold);color:currentColor;background-color:transparent;border-inline-start-width:0;cursor:pointer}.elementor-control-type-url .elementor-control-url-more i{font-size:12px}.elementor-control-type-url .elementor-control-url-more-options{display:none;padding-block-start:10px}.elementor-control-type-url .elementor-control-url-more-options .elementor-control-field-description{margin-block-start:10px}.elementor-control-type-url .elementor-control-url-more:hover{color:var(--e-a-color-txt-hover)}.elementor-control-type-url .elementor-control-url-more:focus{color:var(--e-a-color-txt-active);border-color:var(--e-a-border-color-focus)}.elementor-control-type-url .elementor-control-url-option{display:flex;align-items:center}.elementor-control-type-url .elementor-control-url-option:not(:last-child){padding-block-end:10px}.elementor-control-type-url .elementor-control-url-option input,.elementor-control-type-url .elementor-control-url-option label{cursor:pointer}.elementor-control-type-url .elementor-control-url-autocomplete-spinner{display:none;position:absolute;top:5px;right:0;width:10px;height:10px;font-size:10px;color:var(--e-a-color-txt-disabled)}.elementor-control-type-url .elementor-control-url__custom-attributes label{font-size:var(--control-title-size)}.elementor-control-type-url .elementor-control-url__custom-attributes input{width:100%;margin-block-start:10px}.elementor-control-type-url .elementor-input:focus~div{border-color:var(--e-a-border-color-focus)}.elementor-autocomplete-menu{position:absolute;background:var(--e-a-bg-default);border:var(--e-a-border);margin:0;list-style:none;padding:4px 0;height:auto;width:100%;min-width:260px;max-width:300px;max-height:200px;overflow-y:auto;border-radius:3px;transition:var(--e-a-transition-hover);cursor:default;z-index:1}.elementor-autocomplete-menu .ui-menu-item{display:flex;justify-content:space-between;align-self:baseline;padding:5px 8px;font-size:12px;width:100%;line-height:1.2;cursor:pointer}.elementor-autocomplete-menu .ui-menu-item.ui-state-active,.elementor-autocomplete-menu .ui-menu-item.ui-state-focus,.elementor-autocomplete-menu .ui-menu-item.ui-state-hover{background:var(--e-a-bg-hover)}.elementor-autocomplete-menu .elementor-autocomplete-item-info{font-size:10px;padding-block-start:2px}.elementor-control-type-wp_widget .widget-inside{line-height:2;background-color:inherit;display:block}.elementor-control-type-wp_widget .quicktags-toolbar input{width:auto}.elementor-control-type-wysiwyg *{box-sizing:content-box}.elementor-control-type-wysiwyg .wp-editor-container{border:var(--e-a-border)}.elementor-control-type-wysiwyg .wp-editor-tabs{border:var(--e-a-border-bold);border-block-end:none;border-start-start-radius:var(--e-a-border-radius);border-start-end-radius:var(--e-a-border-radius);border-end-end-radius:0;border-end-start-radius:0}.elementor-control-type-wysiwyg .wp-editor-tabs button:hover{background-color:var(--e-a-bg-hover)}.elementor-control-type-wysiwyg #insert-media-button{height:auto;line-height:24px;font-size:10px;color:var(--e-a-color-txt);border-color:var(--e-a-border-color-bold);background-color:var(--e-a-bg-default);min-height:0}.elementor-control-type-wysiwyg .ed_button{height:22px;width:auto}.elementor-control-type-wysiwyg .wp-media-buttons-icon{height:14px;margin:0}.elementor-control-type-wysiwyg .wp-media-buttons-icon:before{font-size:14px}.elementor-control-type-wysiwyg .wp-switch-editor{position:static;border:none;margin:0;color:var(--e-a-color-txt);font-size:10px;padding:3px 9px 4px}.elementor-control-type-wysiwyg .switch-html{border:solid var(--e-a-border-color-bold);border-width:0 1px}.elementor-control-type-wysiwyg .html-active .switch-tmce{background-color:transparent}.elementor-control-type-wysiwyg .html-active .switch-html,.elementor-control-type-wysiwyg .tmce-active .switch-tmce{background-color:var(--e-a-bg-active)}.elementor-control-type-wysiwyg .tmce-active .switch-html{background-color:transparent}.elementor-control-type-wysiwyg .mce-toolbar-grp,.elementor-control-type-wysiwyg .mce-toolbar .mce-btn-group .mce-btn.mce-listbox,.elementor-control-type-wysiwyg .quicktags-toolbar{background-color:var(--e-a-bg-default)}.elementor-control-type-wysiwyg .mce-toolbar .mce-btn-group .mce-btn.mce-listbox button{color:var(--e-a-color-txt)}.elementor-control-type-wysiwyg .mce-toolbar-grp>div{padding:0 3px}.elementor-control-type-wysiwyg .elementor-wp-editor{box-sizing:border-box}.elementor-control-type-wysiwyg .mce-ico{color:var(--e-a-color-txt);font-size:16px}.elementor-control-type-wysiwyg .mce-btn-group .mce-btn.mce-active,.elementor-control-type-wysiwyg .mce-btn-group .mce-btn:active,.elementor-control-type-wysiwyg .mce-btn-group .mce-btn:hover{color:var(--e-a-color-txt-active);background:var(--e-a-bg-hover);border-color:var(--e-a-border-color);box-shadow:none}.elementor-control-type-wysiwyg .mce-btn-group .mce-btn.mce-active i,.elementor-control-type-wysiwyg .mce-btn-group .mce-btn:active i,.elementor-control-type-wysiwyg .mce-btn-group .mce-btn:hover i{color:var(--e-a-color-txt-active)}.elementor-control-type-wysiwyg .mce-path{padding:5px 10px}.elementor-control-type-wysiwyg .mce-path-item{font-size:12px;color:var(--e-a-color-txt)}.elementor-control-type-wysiwyg .mce-top-part:before{box-shadow:none}.elementor-control-type-wysiwyg .elementor-control-dynamic-switcher{border:none}@media screen and (prefers-color-scheme:dark){#wp-link-wrap{color-scheme:light;--e-a-color-txt:#515962;--e-a-bg-default:#fff;--e-a-border-color-bold:#d5d8dc;--e-a-color-primary-bold:#d004d4}#wp-link{color:var(--e-a-color-txt)}#wp-link input{background-color:var(--e-a-bg-default)}#wp-link input,#wp-link input[type=checkbox]{border-color:var(--e-a-border-color-bold)}#wp-link input[type=checkbox]:checked{background:var(--e-a-color-primary-bold)}#wp-link input.button-primary{background:#2271b1;border-color:#2271b1;color:#fff}}#elementor-mode-switcher{--e-a-mode-switcher-width:15px;--e-a-mode-switcher-height:50px;--e-a-mode-switcher-icon-size:15px;position:absolute;right:100%;top:50%;transform:translateY(-50%);background-color:var(--e-a-bg-default);box-shadow:-3px 1px 3px rgba(0,0,0,.05);transition:opacity .3s}#elementor-mode-switcher:hover{background-color:var(--e-a-bg-hover)}#elementor-mode-switcher:focus-within{background-color:var(--e-a-bg-active)}.e-panel-block-interactions #elementor-mode-switcher{opacity:0;pointer-events:none}#elementor-mode-switcher-preview i{display:flex;flex-direction:column;justify-content:center;width:var(--e-a-mode-switcher-width);height:var(--e-a-mode-switcher-height);font-size:var(--e-a-mode-switcher-icon-size);cursor:pointer}#elementor-mode-switcher-preview-input{display:none}.elementor-revision-item__wrapper{display:flex;align-items:center;text-align:start;width:100%;border:var(--e-a-border);border-radius:var(--e-a-border-radius);padding:10px 15px;margin-block-end:10px;font-size:11px;transition:var(--e-a-transition-hover);background-color:transparent}.elementor-revision-item__wrapper:focus,.elementor-revision-item__wrapper:hover{background-color:var(--e-a-bg-hover)}.elementor-revision-item-loading .elementor-revision-item__tools-current,.elementor-revision-item:not(.elementor-revision-item-loading) .elementor-revision-item__tools-spinner{display:none}.elementor-revision-item__gravatar{border-radius:50%;overflow:hidden}.elementor-revision-item__gravatar img{display:block}.elementor-revision-item__details{padding-inline-start:15px;flex-grow:1;cursor:pointer}.elementor-revision-meta{padding-block-start:5px;font-size:10px;font-weight:700}.elementor-revision-current-preview .elementor-revision-item__wrapper{border-color:var(--e-a-border-color-accent);background-color:var(--e-a-bg-active)}#elementor-panel-revisions-loading{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}#elementor-panel-revisions-loading .eicon-loading{font-size:50px}.elementor-panel-revisions-buttons{display:flex;justify-content:space-between;padding:15px 20px;border-block-end:var(--e-a-border)}.elementor-history-item{display:flex;align-items:center;text-align:start;border:var(--e-a-border);border-radius:var(--e-a-border-radius);padding:10px 15px;margin-block-end:10px;width:100%;font-size:11px;line-height:1.4;background-color:transparent;cursor:pointer;transition:var(--e-a-transition-hover)}.elementor-history-item:focus:not(.elementor-history-item-current),.elementor-history-item:hover:not(.elementor-history-item-current){background-color:var(--e-a-bg-hover);color:var(--e-a-txt-color-hover)}.elementor-history-item:focus:not(.elementor-history-item-current) .elementor-history-item__icon .eicon:before,.elementor-history-item:hover:not(.elementor-history-item-current) .elementor-history-item__icon .eicon:before{content:"\e924"}.elementor-history-item-current{border-color:var(--e-a-border-color-accent);background-color:var(--e-a-bg-active);color:var(--e-a-txt-color-active)}.elementor-history-item-current .elementor-history-item__icon .eicon:before,.elementor-history-item-current:focus .elementor-history-item__icon .eicon:before,.elementor-history-item-current:hover .elementor-history-item__icon .eicon:before{content:"\e90e"}.elementor-history-item__details{width:95%}.elementor-history-item__title{font-weight:700}.elementor-history-item__action,.elementor-history-item__subtitle{font-weight:lighter}.elementor-history-item__action{font-style:italic;text-decoration:underline}.elementor-history-revisions-message{font-size:11px;text-align:center;padding-block-start:5px}#elementor-panel-history{padding:20px;padding-block-end:15px}#elementor-panel-history.elementor-empty .elementor-history-revisions-message{padding-block-start:20px}#elementor-panel-history:not(.elementor-empty){margin-block-start:10px}#elementor-panel-history-no-items,#elementor-panel-revisions-no-revisions{text-align:center}#elementor-panel-history-no-items .elementor-nerd-box-icon,#elementor-panel-revisions-no-revisions .elementor-nerd-box-icon{margin-block-start:20px}.e-control-display-conditions-promotion__wrapper{display:flex;justify-content:space-between}.e-control-display-conditions-promotion__wrapper:hover .eicon-lock.e-control-display-conditions-promotion{color:var(--e-a-color-accent)}.e-control-display-conditions-promotion__description{display:flex;align-self:center}.e-control-display-conditions-promotion__text{display:inline-block}.e-control-display-conditions-promotion__lock-wrapper{width:2.5rem;display:flex;justify-content:center;align-items:center}.e-control-display-conditions-promotion.eicon-flow{align-self:flex-end;cursor:pointer;border:var(--e-a-border-bold);border-radius:var(--e-a-border-radius);padding:5px}.e-control-display-conditions-promotion.eicon-flow.filled{background-color:var(--e-a-bg-active);color:#e73cf6}.e-control-motion-effects-promotion__wrapper:hover .eicon-lock{color:var(--e-a-color-accent)}.e-control-motion-effects-promotion__wrapper .select-promotion{display:flex;flex-direction:column;justify-content:center;padding-inline-start:5px;padding-inline-end:20px;cursor:pointer;height:27px;width:100%;color:var(--e-a-color-txt);border-radius:var(--e-a-border-radius);background-color:var(--e-a-bg-default);box-shadow:none;border:var(--e-a-border-bold);font-size:var(--control-title-size)}.e-control-motion-effects-promotion__lock-wrapper{width:2.5rem;display:flex;justify-content:center;align-items:center}.e-link-promotion{font-family:Roboto,sans-serif;font-weight:500;color:#93003f}.e-link-promotion:hover{color:#93003f}.elementor-panel #elementor-panel-header #elementor-panel-header-kit-back,.elementor-panel #elementor-panel-header #elementor-panel-header-kit-close{display:none}.elementor-editor-kit .elementor-panel #elementor-panel-header #elementor-panel-header-kit-back,.elementor-editor-kit .elementor-panel #elementor-panel-header #elementor-panel-header-kit-close{display:flex}body:not(.e-routes-has-history) #elementor-panel-header-kit-back{pointer-events:none;visibility:hidden}.elementor-editor-kit .elementor-panel #elementor-panel-page-settings .elementor-panel-navigation{display:none}.elementor-editor-kit .elementor-panel #elementor-panel-page-menu{padding:25px 15px 0}.elementor-editor-kit #elementor-panel-footer-navigator,.elementor-editor-kit #elementor-panel-footer-sub-menu-item-save-template,.elementor-editor-kit #elementor-panel-header-add-button,.elementor-editor-kit #elementor-panel-header-menu-button{display:none}.elementor-control-type-global-style-repeater .elementor-repeater-fields{margin-block-end:15px;position:relative}.elementor-control-type-global-style-repeater .elementor-repeater-fields.ui-sortable-helper{background-color:var(--e-a-bg-default)}.elementor-control-type-global-style-repeater .elementor-repeater-row-controls{display:flex;align-items:center}.elementor-control-type-global-style-repeater .elementor-repeater-row-tool{cursor:pointer;color:var(--e-a-color-txt);background-color:transparent;border:none;padding:5px}.elementor-control-type-global-style-repeater .elementor-repeater-row-tool:focus,.elementor-control-type-global-style-repeater .elementor-repeater-row-tool:hover{color:var(--e-a-color-txt-hover)}.elementor-control-type-global-style-repeater .elementor-control{padding:0}.elementor-control-type-global-style-repeater .elementor-control-title{flex-grow:1}.elementor-control-type-global-style-repeater .elementor-control-title input{max-width:135px}.elementor-control-type-global-style-repeater .elementor-control-title input:not(:focus){background:none;border:none}.elementor-control-type-global-style-repeater .elementor-control-input-wrapper{display:flex;align-items:center;min-width:81px}.elementor-control-type-global-style-repeater .elementor-control-input-wrapper:hover .e-global-colors__color-value,.elementor-control-type-global-style-repeater .elementor-control-input-wrapper:not(:hover) .elementor-repeater-tool-remove,.elementor-control-type-global-style-repeater .elementor-control-input-wrapper:not(:hover) .elementor-repeater-tool-remove--disabled,.elementor-control-type-global-style-repeater .elementor-control-input-wrapper:not(:hover) .elementor-repeater-tool-sort{display:none}.elementor-control-type-global-style-repeater .elementor-repeater-row-controls>.elementor-control>.elementor-control-content>.elementor-control-field>.elementor-control-input-wrapper{margin-block-start:0}.elementor-control-type-global-style-repeater .elementor-controls-popover{align-self:end;margin-block-start:35px;top:0;width:100%}.elementor-control-type-global-style-repeater .elementor-controls-popover:before{left:5px}.elementor-control-type-global-style-repeater .elementor-controls-popover .elementor-control{padding:0 20px 15px}.elementor-control-type-global-style-repeater .elementor-controls-popover .elementor-control-title{flex-grow:0}.elementor-control-type-global-style-repeater .elementor-button-wrapper{text-align:center;border-block-start:var(--e-a-border);padding-block-start:15px}.elementor-control-type-global-style-repeater .elementor-control-popover-toggle-toggle-label,.elementor-control-type-global-style-repeater .pickr{margin-inline-start:5px}.elementor-control-type-global-style-repeater .e-sortable-placeholder{background-color:var(--e-a-color-info);opacity:.9;width:100%;margin:8px 0;height:2px}.elementor-control-system_colors,.elementor-control-system_typography{padding-block-end:0}.e-global-colors__color-value{font-size:10px;padding:0 5px;text-align:end;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}@keyframes load{0%{opacity:.3}50%{opacity:1}to{opacity:.3}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes mover{0%{transform:translateY(0)}to{transform:translateY(-5px)}}@keyframes slideDown{0%{transform:translateY(-30px)}to{transform:translateY(0)}}.e-btn,.elementor-button{font-size:12px;font-weight:500;line-height:1.2;padding:8px 16px;outline:none;border:none;border-radius:var(--e-a-border-radius);background-color:var(--e-a-btn-bg);color:var(--e-a-btn-color-invert);transition:var(--e-a-transition-hover)}.e-btn:hover,.elementor-button:hover{border:none}.e-btn:focus,.e-btn:hover,.elementor-button:focus,.elementor-button:hover{background-color:var(--e-a-btn-bg-hover);color:var(--e-a-btn-color-invert)}.e-btn:active,.elementor-button:active{background-color:var(--e-a-btn-bg-active)}.e-btn:not([disabled]),.elementor-button:not([disabled]){cursor:pointer}.e-btn:disabled,.elementor-button:disabled{background-color:var(--e-a-btn-bg-disabled);color:var(--e-a-btn-color-disabled)}.e-btn:not(.elementor-button-state) .elementor-state-icon,.elementor-button:not(.elementor-button-state) .elementor-state-icon{display:none}.e-btn.e-btn-txt,.elementor-button.e-btn-txt{background:transparent;color:var(--e-a-color-txt)}.e-btn.e-btn-txt:focus,.e-btn.e-btn-txt:hover,.elementor-button.e-btn-txt:focus,.elementor-button.e-btn-txt:hover{background:var(--e-a-bg-hover);color:var(--e-a-color-txt-hover)}.e-btn.e-btn-txt:disabled,.elementor-button.e-btn-txt:disabled{background:transparent;color:var(--e-a-color-txt-disabled)}.e-btn.e-btn-txt-border,.elementor-button.e-btn-txt-border{border:1px solid var(--e-a-color-txt-muted)}.e-btn.e-success,.e-btn.elementor-button-success,.elementor-button.e-success,.elementor-button.elementor-button-success{background-color:var(--e-a-btn-bg-success)}.e-btn.e-success:focus,.e-btn.e-success:hover,.e-btn.elementor-button-success:focus,.e-btn.elementor-button-success:hover,.elementor-button.e-success:focus,.elementor-button.e-success:hover,.elementor-button.elementor-button-success:focus,.elementor-button.elementor-button-success:hover{background-color:var(--e-a-btn-bg-success-hover)}.e-btn.e-primary,.elementor-button.e-primary{background-color:var(--e-a-btn-bg-primary);color:var(--e-a-btn-color)}.e-btn.e-primary:focus,.e-btn.e-primary:hover,.elementor-button.e-primary:focus,.elementor-button.e-primary:hover{background-color:var(--e-a-btn-bg-primary-hover);color:var(--e-a-btn-color)}.e-btn.e-primary.e-btn-txt,.elementor-button.e-primary.e-btn-txt{background:transparent;color:var(--e-a-color-primary-bold)}.e-btn.e-primary.e-btn-txt:focus,.e-btn.e-primary.e-btn-txt:hover,.elementor-button.e-primary.e-btn-txt:focus,.elementor-button.e-primary.e-btn-txt:hover{background:var(--e-a-bg-primary)}.e-btn.e-accent,.e-btn.go-pro,.elementor-button.e-accent,.elementor-button.go-pro{background-color:var(--e-a-btn-bg-accent)}.e-btn.e-accent:focus,.e-btn.e-accent:hover,.e-btn.go-pro:focus,.e-btn.go-pro:hover,.elementor-button.e-accent:focus,.elementor-button.e-accent:hover,.elementor-button.go-pro:focus,.elementor-button.go-pro:hover{background-color:var(--e-a-btn-bg-accent-hover)}.e-btn.e-accent:active,.e-btn.go-pro:active,.elementor-button.e-accent:active,.elementor-button.go-pro:active{background-color:var(--e-a-btn-bg-accent-active)}.e-btn.e-info,.e-btn.elementor-button-info,.elementor-button.e-info,.elementor-button.elementor-button-info{background-color:var(--e-a-btn-bg-info)}.e-btn.e-info:focus,.e-btn.e-info:hover,.e-btn.elementor-button-info:focus,.e-btn.elementor-button-info:hover,.elementor-button.e-info:focus,.elementor-button.e-info:hover,.elementor-button.elementor-button-info:focus,.elementor-button.elementor-button-info:hover{background-color:var(--e-a-btn-bg-info-hover)}.e-btn.e-warning,.e-btn.elementor-button-warning,.elementor-button.e-warning,.elementor-button.elementor-button-warning{background-color:var(--e-a-btn-bg-warning)}.e-btn.e-warning:focus,.e-btn.e-warning:hover,.e-btn.elementor-button-warning:focus,.e-btn.elementor-button-warning:hover,.elementor-button.e-warning:focus,.elementor-button.e-warning:hover,.elementor-button.elementor-button-warning:focus,.elementor-button.elementor-button-warning:hover{background-color:var(--e-a-btn-bg-warning-hover)}.e-btn.e-danger,.e-btn.elementor-button-danger,.elementor-button.e-danger,.elementor-button.elementor-button-danger{background-color:var(--e-a-btn-bg-danger)}.e-btn.e-danger:focus,.e-btn.e-danger:hover,.e-btn.elementor-button-danger:focus,.e-btn.elementor-button-danger:hover,.elementor-button.e-danger:focus,.elementor-button.e-danger:hover,.elementor-button.elementor-button-danger:focus,.elementor-button.elementor-button-danger:hover{background-color:var(--e-a-btn-bg-danger-hover)}.e-btn i,.elementor-button i{margin-inline-end:5px}body{--e-preview-width:calc(100% - var(--e-editor-panel-width, 300px))}body.elementor-navigator-docked{--e-preview-width:calc(100% - var(--e-editor-panel-width, 300px) - var(--e-editor-navigator-width, 0px))}body.elementor-device-desktop #elementor-preview{overflow-y:hidden;align-items:flex-start}body:not(.elementor-device-desktop) body{overflow-y:auto}#elementor-preview{background-color:#333;height:100%;border:0;width:var(--e-preview-width);display:flex;flex-direction:column;justify-content:flex-start;align-items:center;position:relative;direction:ltr}#elementor-preview>div{direction:rtl}#elementor-preview-responsive-wrapper{transform-origin:top center;padding:20px;transform:scale(var(--e-preview-scale,1))}.elementor-device-desktop #elementor-preview-responsive-wrapper{min-width:1025px;width:100%;height:100%;padding:0;position:relative}body.e-is-device-mode:not(.elementor-device-desktop) #elementor-preview-responsive-wrapper{width:var(--e-editor-preview-width);height:var(--e-editor-preview-height);margin:0 max((100vw - var(--e-editor-panel-width) - var(--e-editor-preview-width))/2,20px);box-sizing:content-box;position:relative;max-height:calc(100vh - 80px)}body.e-is-device-mode:not(.elementor-device-desktop) #elementor-preview-responsive-wrapper .ui-resizable-handle{display:flex!important}#elementor-preview-responsive-wrapper:not(.ui-resizable-resizing){transition:.3s ease-in-out}#elementor-preview-responsive-wrapper .ui-resizable-handle{top:0}#elementor-preview-responsive-wrapper .ui-resizable-handle.ui-resizable-s{top:auto;bottom:0}#elementor-preview-responsive-wrapper .ui-resizable-n,#elementor-preview-responsive-wrapper .ui-resizable-s{align-items:center;justify-content:center;height:20px}#elementor-preview-responsive-wrapper .ui-resizable-n:before,#elementor-preview-responsive-wrapper .ui-resizable-s:before{content:"";display:block;background-color:hsla(0,0%,100%,.2);width:50px;height:4px;border-radius:3px;transition:all .2s ease-in-out}#elementor-preview-responsive-wrapper .ui-resizable-n:hover:before,#elementor-preview-responsive-wrapper .ui-resizable-s:hover:before{background-color:hsla(0,0%,100%,.6);width:100px}#elementor-preview-responsive-wrapper .ui-resizable-e,#elementor-preview-responsive-wrapper .ui-resizable-w{align-items:center;justify-content:center;width:20px}#elementor-preview-responsive-wrapper .ui-resizable-e:before,#elementor-preview-responsive-wrapper .ui-resizable-w:before{content:"";display:block;background-color:hsla(0,0%,100%,.2);width:4px;height:50px;border-radius:3px;transition:all .2s ease-in-out}#elementor-preview-responsive-wrapper .ui-resizable-e:hover:before,#elementor-preview-responsive-wrapper .ui-resizable-w:hover:before{background-color:hsla(0,0%,100%,.6);height:100px}#elementor-preview-responsive-wrapper.ui-resizable-resizing .ui-resizable-handle:before{background-color:hsla(0,0%,100%,.9)}#elementor-preview-responsive-wrapper .ui-resizable-s{bottom:0}#elementor-preview-responsive-wrapper .ui-resizable-e{right:0}#elementor-preview-responsive-wrapper .ui-resizable-w{left:0}#elementor-preview-iframe{width:100%;height:100%;background-color:#fff;box-shadow:0 0 3px rgba(0,0,0,.3),0 0 20px rgba(0,0,0,.15)}#elementor-template-library-modal a.elementor-template-library-blank-footer-link{font-style:normal;text-decoration:underline}#elementor-template-library-modal .dialog-buttons-wrapper{display:none}#elementor-template-library-modal .select2-container{z-index:0}#elementor-template-library-modal .dialog-message{overflow-y:scroll}#elementor-template-library-header-menu{text-align:center}.elementor-template-library-menu-item{display:inline-block;padding:17px 20px;border-block-end:3px solid transparent;cursor:pointer}.elementor-template-library-menu-item:hover{background-color:var(--e-a-bg-hover);border-color:var(--e-a-bg-hover)}.elementor-template-library-menu-item.elementor-active{border-color:var(--e-a-border-color-accent);color:var(--e-a-color-txt-accent)}#elementor-template-library-header-actions{display:flex}#elementor-template-library-header-actions>div{padding-inline-end:16px}#elementor-template-library-header-preview-insert-wrapper{cursor:default;padding:0 10px}.elementor-template-library-template-insert+.elementor-template-library-template-generate-variation{margin-inline-start:4px}#elementor-template-library-header-preview-back{padding-block:16.5px 15px;padding-inline:0 16.5px;border-inline-end:var(--e-a-border);cursor:pointer;transition:color .5s}#elementor-template-library-header-preview-back:hover{color:var(--e-a-color-txt-hover)}#elementor-template-library-header-preview-back i{padding-inline-end:10px;font-size:18px}#elementor-template-library-header-preview-back i:before{content:"\e87d"}#elementor-template-library-templates[data-template-source=local] #elementor-template-library-templates-container{margin-block-start:10px;margin-block-end:45px;border-block-start:var(--e-a-border)}#elementor-template-library-templates[data-template-source=local] .elementor-template-library-order-input:checked+.elementor-template-library-order-label{color:var(--e-a-color-txt-active)}#elementor-template-library-templates[data-template-source=remote] #elementor-template-library-templates-container{margin:10px -15px 0}#elementor-template-library-templates[data-template-source=remote] .elementor-template-library-order-input:checked+.elementor-template-library-order-label{color:var(--e-a-color-txt-active)}#elementor-template-library-templates .elementor-template-library-order-input,#elementor-template-library-templates.elementor-templates-filter-active #elementor-template-library-footer-banner,#elementor-template-library-templates[data-template-source=empty] #elementor-template-library-footer-banner,#elementor-template-library-templates[data-template-source=empty] #elementor-template-library-order-toolbar-local{display:none}#elementor-template-library-templates .elementor-template-library-order-input:checked+.elementor-template-library-order-label{padding-inline-end:8px}#elementor-template-library-templates .elementor-template-library-order-input:checked+.elementor-template-library-order-label:after{font-family:eicons;content:"\e8ae";margin-inline-start:3px}#elementor-template-library-templates .elementor-template-library-order-input:checked.elementor-template-library-order-reverse+.elementor-template-library-order-label:after{content:"\e8ad"}#elementor-template-library-templates-container{display:flex;flex-wrap:wrap;align-items:flex-start}#elementor-template-library-toolbar{display:flex;justify-content:space-between;align-items:center}.elementor-template-library-filter-toolbar{display:flex;align-items:center}#elementor-template-library-filter-toolbar-remote{font-size:11px}#elementor-template-library-order{display:flex;border-inline-end:var(--e-a-border)}.elementor-template-library-order-label{text-transform:uppercase;padding-inline-end:22px;-webkit-user-select:none;-moz-user-select:none;user-select:none}label.elementor-template-library-order-label{cursor:pointer}label.elementor-template-library-order-label:hover{color:var(--e-a-color-txt-hover)}#elementor-template-library-filter .select2{text-align:start;width:calc(27px * 5)!important}#elementor-template-library-filter .select2-selection__rendered{text-transform:capitalize}#select2-elementor-template-library-filter-subtype-results .select2-results__option{text-transform:capitalize;text-align:start;padding-inline-start:5px}#elementor-template-library-my-favorites{flex-grow:1;text-align:start;padding-inline-start:20px}#elementor-template-library-filter-my-favorites{display:none}#elementor-template-library-filter-my-favorites:checked+#elementor-template-library-filter-my-favorites-label{color:var(--e-a-color-txt-active)}#elementor-template-library-filter-my-favorites:checked+#elementor-template-library-filter-my-favorites-label i:after{color:var(--e-a-color-primary-bold);content:"\e93f"}#elementor-template-library-filter-my-favorites-label{cursor:pointer;text-transform:uppercase}#elementor-template-library-filter-my-favorites-label:hover{color:var(--e-a-color-txt-hover)}#elementor-template-library-filter-my-favorites-label:hover i:after{color:var(--e-a-color-primary-bold)}#elementor-template-library-filter-my-favorites-label i{padding-inline-end:5px}#elementor-template-library-filter-my-favorites-label i:after{content:"\e923"}#elementor-template-library-filter-text-wrapper{width:200px;position:relative}#elementor-template-library-filter-text-wrapper i{position:absolute;top:50%;left:0;transform:translateY(-50%)}#elementor-template-library-filter-text{border:none;border-block-end:var(--e-a-border-bold);border-radius:0;font-size:11px;padding:8px 15px 8px 0;transition:border .5s}#elementor-template-library-filter-text:focus{border-color:var(--e-a-border-color-focus)}#elementor-template-library-filter-text::-moz-placeholder{font-weight:300;text-transform:uppercase}#elementor-template-library-filter-text::placeholder{font-weight:300;text-transform:uppercase}.elementor-template-library-template-remote{margin:calc(30px / 2);padding:8px;border:var(--e-a-border);border-radius:3px}.elementor-template-library-template-remote:hover{background-color:var(--e-a-bg-hover)}.elementor-template-library-template-remote:hover .elementor-template-library-template-name{display:none}.elementor-template-library-template-remote:not(:hover) .elementor-template-library-template-preview{opacity:0}.elementor-template-library-template-remote:not(:hover) .elementor-template-library-favorite,.elementor-template-library-template-remote:not(:hover) .elementor-template-library-template-action{display:none}.elementor-template-library-template-remote.elementor-template-library-pro-template .elementor-template-library-template-body:before{content:var(--elementor-template-library-subscription-plan-label);background-color:var(--e-a-color-accent);color:var(--e-a-color-white);position:absolute;text-transform:uppercase;line-height:1;top:5px;left:5px;padding:3px 5px;font-size:8px;border-radius:2px}.elementor-template-library-template-remote:not(.elementor-template-library-template-page):not(.elementor-template-library-template-lp){position:relative;width:calc(33.333% - 30px);overflow:hidden}.elementor-template-library-template-remote:not(.elementor-template-library-template-page):not(.elementor-template-library-template-lp) img{display:block;width:100%}.elementor-template-library-template-remote:not(.elementor-template-library-template-page):not(.elementor-template-library-template-lp) .elementor-template-library-template-footer{position:absolute;width:100%;bottom:0;right:0;padding:10px;background-color:var(--e-a-bg-default);transition:transform .5s}.elementor-template-library-template-remote:not(.elementor-template-library-template-page):not(.elementor-template-library-template-lp) .elementor-template-library-template-name{display:none}.elementor-template-library-template-remote:not(.elementor-template-library-template-page):not(.elementor-template-library-template-lp):not(:hover) .elementor-template-library-template-footer{transform:translateY(100%)}.elementor-template-library-template-remote .elementor-template-library-template-body{position:relative}@media (max-width:1025px){.elementor-template-library-template-remote .elementor-template-library-template-body{height:300px}}.elementor-template-library-template-remote .elementor-template-library-template-screenshot{height:100%;background-size:cover;background-position-x:50%;box-shadow:inset 0 -2px 15px -6px rgba(0,0,0,.07)}.elementor-template-library-template-remote .elementor-template-library-template-preview{position:absolute;top:0;left:0;width:100%;height:100%;background-color:rgba(0,0,0,.5);transition:opacity .5s;cursor:pointer}.elementor-template-library-template-remote .elementor-template-library-template-preview i{font-size:20px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.elementor-template-library-template-remote .elementor-template-library-template-footer{display:flex;justify-content:space-between;font-size:11px;line-height:1;height:40px;align-items:center}.elementor-template-library-template-remote .elementor-template-library-template-name{text-align:start;flex-grow:1;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;padding-inline-end:5px}.elementor-template-library-template-remote .elementor-template-library-favorite{margin-inline-start:auto}.elementor-template-library-template-remote .elementor-template-library-template-favorite-input{display:none}.elementor-template-library-template-remote .elementor-template-library-template-favorite-input:checked+.elementor-template-library-template-favorite-label i:before{content:"\e93f";color:var(--e-a-color-primary-bold)}.elementor-template-library-template-remote .elementor-template-library-template-favorite-label{font-size:15px;cursor:pointer}.elementor-template-library-template-remote .elementor-template-library-template-favorite-label:hover i{color:var(--e-a-color-primary-bold)}@media (max-width:1439px){.elementor-template-library-template-lp,.elementor-template-library-template-page{width:calc(25% - 30px)}}@media (min-width:1440px){.elementor-template-library-template-lp,.elementor-template-library-template-page{width:calc(20% - 30px)}}@media (max-width:1025px){.elementor-template-library-template-lp,.elementor-template-library-template-page{width:calc(33.333% - 30px)}}.elementor-template-library-template-lp .elementor-template-library-template-body,.elementor-template-library-template-page .elementor-template-library-template-body{height:200px}#elementor-template-library-order-toolbar-local,.elementor-template-library-template-local{display:flex;align-items:center;padding:0 25px;text-align:start}#elementor-template-library-order-toolbar-local{margin-block-start:30px}#elementor-template-library-order-toolbar-local .elementor-template-library-order-label{line-height:1;font-size:10px;font-weight:500}.elementor-template-library-template-local{height:50px;width:100%;margin-block-start:1px;transition:background-color .3s linear}.elementor-template-library-template-local:hover{background-color:var(--e-a-bg-hover)}.elementor-template-library-template-local:first-child{border-start-start-radius:3px;border-start-end-radius:3px;border-end-start-radius:0;border-end-end-radius:0}.elementor-template-library-template-local:last-child{border-start-start-radius:0;border-start-end-radius:0;border-end-start-radius:3px;border-end-end-radius:3px}.elementor-template-library-template-local .elementor-template-library-template-name{font-weight:500}.elementor-template-library-template-local .elementor-template-library-template-meta,.elementor-template-library-template-local .elementor-template-library-template-name{padding-inline-end:20px}.elementor-template-library-template-local .elementor-template-library-template-action,.elementor-template-library-template-local .elementor-template-library-template-meta,.elementor-template-library-template-local .elementor-template-library-template-name,.elementor-template-library-template-local .elementor-template-library-template-preview{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.elementor-template-library-template-local .elementor-template-library-template-controls{position:relative;display:flex;align-items:center}.elementor-template-library-template-local .elementor-template-library-template-controls>div{cursor:pointer;transition:color .5s}.elementor-template-library-template-local .elementor-template-library-template-insert i{margin-inline-end:3px}.elementor-template-library-template-local .elementor-template-library-template-control-title{margin-inline-start:6px}.elementor-template-library-template-local .elementor-template-library-template-more .elementor-template-library-template-delete:hover{color:var(--e-a-color-danger)}.elementor-template-library-template-local .elementor-template-library-template-more{display:none;position:absolute;background-color:var(--e-a-bg-default);padding:3px 20px;border-radius:var(--e-a-border-radius);box-shadow:1px 3px 11px rgba(0,0,0,.3);top:100%;left:0;transform:translateX(-65%) translateY(-7px);z-index:1}.elementor-template-library-template-local .elementor-template-library-template-more:before{content:"";position:absolute;border:solid transparent;border-width:8px 4px;border-block-end-color:var(--e-a-color-white);transform:translateY(-100%)}.elementor-template-library-template-local .elementor-template-library-template-more>div{margin:10px 0;font-size:11px}.elementor-template-library-template-local .elementor-template-library-template-more a{color:var(--e-a-color-txt)}.elementor-template-library-template-local .elementor-template-library-template-more-toggle{flex-grow:1;text-align:end}.elementor-template-library-template-local .elementor-template-library-template-more-toggle i{font-size:16px}#elementor-template-library-preview{height:100%;overflow:hidden}#elementor-template-library-preview iframe{height:150%;transform:scale(.666) translateX(25%) translateY(-25%)}@media (max-width:1439px){#elementor-template-library-preview iframe{width:1440px}}@media (min-width:1440px){#elementor-template-library-preview iframe{width:1730px}}.elementor-template-library-blank-icon{font-size:64px;margin-block-start:45px;line-height:1}.elementor-template-library-blank-icon img{width:70px}.elementor-template-library-blank-icon .elementor-template-library-no-results{width:200px}.elementor-template-library-blank-title{font-size:30px;margin-block-start:20px}@media (max-width:1439px){.elementor-template-library-blank-title{font-size:25px}}.elementor-template-library-blank-message{font-size:18px;margin-block-start:15px;font-weight:300}@media (max-width:1439px){.elementor-template-library-blank-message{font-size:16px;margin-block-start:10px}}#elementor-template-library-save-template-form{margin-block-start:40px;display:flex;align-items:center;justify-content:center}#elementor-template-library-save-template-form>*{height:55px;font-size:16px}#elementor-template-library-save-template-name{width:500px;padding-inline-start:25px;border-start-start-radius:3px;border-start-end-radius:0;border-end-start-radius:3px;border-end-end-radius:0}#elementor-template-library-save-template-submit{width:150px;border-start-start-radius:0;border-start-end-radius:3px;border-end-start-radius:0;border-end-end-radius:3px}#elementor-template-library-import-form{width:95%;padding:60px;border:2px dashed var(--e-a-border-color-bold);margin:35px auto;transition:var(--e-a-transition-hover)}#elementor-template-library-import-form-or{margin-block-start:15px;font-size:18px}#elementor-template-library-import-form-label{margin-block-start:20px;padding:15px 35px;display:inline-block}#elementor-template-library-import-form-input{display:none}#elementor-template-library-import-form.elementor-drag-over{border-color:var(--e-a-color-primary)}#elementor-template-library-import .elementor-template-library-blank-icon{margin-block-start:0}#elementor-template-library-import .elementor-template-library-blank-message{margin-block-start:20px}.e-route-library-connect #elementor-template-library-modal .dialog-message{max-height:95vh;padding:100px 0 0;min-height:550px}#elementor-template-library-connect-logo{font-size:20px}#elementor-template-library-connect__button{display:inline-block;position:relative;z-index:1;margin-block-start:25px;padding:12px 24px;font-size:14px}#elementor-template-library-connect__background-image-left-1{right:22.4%;bottom:-29%;animation:fadeIn 1.5s,slideDown 1.5s,mover 3.5s 1.5s infinite alternate}#elementor-template-library-connect__background-image-left-2{right:46.25%;bottom:-15.5%;animation:fadeIn 3s,slideDown 3s,mover 2s 3s infinite alternate}#elementor-template-library-connect__background-image-right-1{left:37%;bottom:-41%;animation:fadeIn 2.5s,slideDown 2.5s,mover 2s 2.5s infinite alternate}#elementor-template-library-connect__background-image-right-2{left:48%;bottom:-12.5%;animation:fadeIn 1.5s,slideDown 1.5s,mover 1.5s 1.5s infinite alternate}.elementor-template-library-connect__background-image{position:absolute}.elementor-template-library-blank-footer{position:absolute;bottom:70px;left:50%;transform:translateX(-50%);font-style:italic;color:var(--e-a-color-txt-muted)}@media (max-height:700px){.elementor-template-library-blank-footer{display:none}}#elementor-template-library-footer-banner{padding-block-end:45px}#elementor-template-library-footer-banner i{font-size:56px;margin-block-start:40px}#elementor-template-library-footer-banner .elementor-nerd-box-icon{margin-block-start:70px}#elementor-template-library-templates-empty{width:100%;margin-block-start:40px}#elementor-template-library-error-dialog .dialog-message{text-align:start}#elementor-template-library-error-info{margin-block-start:10px}@media (max-width:1439px){.elementor-template-library-local-column-1{width:33%}.elementor-template-library-local-column-2{width:10%}.elementor-template-library-local-column-3,.elementor-template-library-local-column-4{width:15%}.elementor-template-library-local-column-5{width:27%}}@media (min-width:1440px){.elementor-template-library-local-column-1{width:25%}.elementor-template-library-local-column-2,.elementor-template-library-local-column-3,.elementor-template-library-local-column-4{width:17%}.elementor-template-library-local-column-5{width:24%}}@media (max-width:1024px){.elementor-template-library-local-column-3{display:none}.elementor-template-library-local-column-5{width:41%}}.elementor-tags-list{display:none;position:absolute;width:260px;max-height:300px;overflow:auto;padding-block-end:5px;background-color:var(--e-a-bg-default);box-shadow:var(--e-a-popover-shadow);border:var(--e-a-border);border-radius:3px;z-index:10000}.elementor-tags-list__group-title{font-weight:700;font-size:12px;padding:10px 15px;display:flex;align-items:center}.elementor-tags-list__group-title .eicon-info-circle{padding-inline-end:5px;color:var(--e-a-color-primary-bold);font-size:14px}.elementor-tags-list__item{font-size:10px;padding:6px 15px;cursor:pointer}.elementor-tags-list__item:before{content:">";font-size:8px;padding-inline-end:5px}.elementor-tags-list__item:hover{background-color:var(--e-a-bg-hover)}.elementor-tags-list__teaser{border-block-start:2px solid var(--e-a-border-color);padding-block-start:4px;margin-block-start:4px}.elementor-tags-list__teaser-text{padding:2px 15px 8px;line-height:1.5;font-size:12px}.elementor-tags-list__teaser-link{color:var(--e-a-color-primary-bold);text-decoration:underline;font-style:italic;font-weight:700}.elementor-dynamic-cover{display:flex;align-items:center;width:100%;height:27px;box-sizing:border-box}.elementor-dynamic-cover__title{padding:0 8px;flex-grow:1;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.elementor-dynamic-cover__remove,.elementor-dynamic-cover__settings{cursor:pointer;transition:var(--e-a-transition-hover)}.elementor-dynamic-cover__remove:hover,.elementor-dynamic-cover__settings:hover{color:var(--e-a-color-txt-hover)}.elementor-control-type-wysiwyg .elementor-dynamic-cover{margin-block-start:10px}.elementor-tag-settings-popup{position:absolute;width:260px;background-color:var(--e-a-bg-default);border:var(--e-a-border);box-shadow:var(--e-a-popover-shadow);z-index:1}.elementor-tag-settings-popup:before{content:"";position:absolute;top:-20px;right:5px;border:10px solid transparent;border-block-end-color:var(--e-a-border-color)}.elementor-tag-settings-popup .elementor-control-type-section:first-child{margin:0}.elementor-tag-controls-stack-empty{background-color:var(--e-a-bg-default);padding:10px;font-size:13px;text-align:center}.elementor-control-dynamic input{border-start-start-radius:var(--e-a-border-radius);border-start-end-radius:0;border-end-end-radius:0;border-end-start-radius:var(--e-a-border-radius)}.elementor-control-dynamic-switcher{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;height:27px;cursor:pointer;border:var(--e-a-border-bold);background:var(--e-a-bg-default);border-inline-start-width:0;border-start-start-radius:0;border-start-end-radius:var(--e-a-border-radius);border-end-end-radius:var(--e-a-border-radius);border-end-start-radius:0;transition:var(--e-a-transition-hover)}.elementor-control-dynamic-switcher:hover{background-color:var(--e-a-bg-hover);color:var(--e-a-color-txt-hover)}.elementor-control-dynamic-switcher.e-control-tool{height:20px;border:0}.elementor-control-dynamic-switcher-wrapper{display:flex}.elementor-control-dynamic-switcher .eicon-database{font-size:12px}.elementor-control-dynamic-value .e-global__popover-toggle,.elementor-control-dynamic-value .elementor-control-dynamic-switcher,.elementor-control-dynamic-value .elementor-control-tag-area{display:none}.elementor-context-menu{position:absolute;width:250px;padding:5px 0;background-color:var(--e-a-bg-default);border-radius:var(--e-a-border-radius);box-shadow:var(--e-a-popover-shadow);-webkit-user-select:none;-moz-user-select:none;user-select:none;z-index:101}.elementor-context-menu-list,.elementor-context-menu-list__group{display:flex;flex-direction:column}.elementor-context-menu-list__group:not(:last-child){border-block-end:var(--e-a-border)}.elementor-context-menu-list__item{padding:12px 20px;display:flex;gap:16px;cursor:pointer;transition:var(--e-a-transition-hover);align-items:center}.elementor-context-menu-list__item--disabled{cursor:default;opacity:.5;color:var(--e-a-color-disabled)}.elementor-context-menu-list__item:not(.elementor-context-menu-list__item--disabled):focus,.elementor-context-menu-list__item:not(.elementor-context-menu-list__item--disabled):hover{background-color:var(--e-a-bg-hover);color:var(--e-a-color-hover)}.elementor-context-menu-list__item__icon{display:none;width:20px}.elementor-context-menu-list__item__title{flex-grow:1;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.elementor-context-menu-list__item__shortcut{color:var(--e-a-color-txt-muted)}.elementor-context-menu-list__item__shortcut--link-fullwidth{position:absolute;left:0;top:0;width:100%;height:100%;z-index:2;cursor:pointer}.elementor-context-menu-list__item__shortcut,.elementor-context-menu-list__item__title{font-size:14px;font-style:normal;font-weight:400;line-height:1;position:relative}.elementor-context-menu-list__item.elementor-context-menu-list__item-delete:not(.elementor-context-menu-list__item--disabled):focus>*,.elementor-context-menu-list__item.elementor-context-menu-list__item-delete:not(.elementor-context-menu-list__item--disabled):hover>*{color:var(--e-global-color-danger)}.elementor-context-menu .eicon-pro-icon{color:var(--e-global-color-accent)}#elementor-hotkeys{text-align:start}#elementor-hotkeys__modal .dialog-buttons-wrapper{display:none}#elementor-hotkeys__content{display:flex;justify-content:space-between;gap:70px;padding:20px 30px;width:100%;overflow:hidden}@media (max-width:1024px){#elementor-hotkeys__content{flex-direction:column;gap:20px;padding:20px}}.elementor-hotkeys__col{display:flex;flex-direction:column;gap:20px;width:100%}.elementor-hotkeys__header{font-weight:500}.elementor-hotkeys__item{display:flex;align-items:center;padding:20px 10px}.elementor-hotkeys__item:not(:last-child){border-block-end:var(--e-a-border)}.elementor-hotkeys__item--label{font-size:13px;font-weight:400;flex-grow:1}.elementor-hotkeys__item--shortcut{flex-grow:0;display:flex;gap:27px}@media (max-width:1024px){.elementor-hotkeys__item--shortcut{gap:23px}}.elementor-hotkeys__item--shortcut kbd{position:relative;font-family:unset;background-color:var(--e-a-bg-active);padding:5px 12px;border-radius:var(--e-a-border-radius)}@media (max-width:1024px){.elementor-hotkeys__item--shortcut kbd{padding:4px 9px}}.elementor-hotkeys__item--shortcut kbd:not(:last-of-type):after{content:"+";position:absolute;left:0;width:9px;text-align:center;margin-inline-end:-18px}@media (max-width:1024px){.elementor-hotkeys__item--shortcut kbd:not(:last-of-type):after{margin-inline-end:-16px}}.ui-resizable-n{top:-5px}.ui-resizable-e{right:-5px}.ui-resizable-s{bottom:-5px}.ui-resizable-w{left:-5px}.ui-resizable-ne{top:-5px;right:-5px}.ui-resizable-nw{top:-5px;left:-5px}.ui-resizable-se{bottom:-5px;right:-5px}.ui-resizable-sw{bottom:-5px;left:-5px}.ui-resizable-n,.ui-resizable-s{left:0;height:10px;width:100%;cursor:ns-resize}.ui-resizable-e,.ui-resizable-w{top:0;height:100%;width:10px;cursor:ew-resize}.ui-resizable-ne,.ui-resizable-nw,.ui-resizable-se,.ui-resizable-sw{height:15px;width:15px}.ui-resizable-nw,.ui-resizable-se{cursor:nwse-resize}.ui-resizable-ne,.ui-resizable-sw{cursor:nesw-resize}.ui-resizable-handle{position:absolute}.ui-resizable-resizing{pointer-events:none}body{--e-editor-navigator-width:240px}#elementor-navigator{position:fixed;top:100px;width:var(--e-editor-navigator-width);height:50vh;left:30px;background-color:var(--e-a-bg-default);border:var(--e-a-border);box-shadow:0 2px 20px 0 rgba(0,0,0,.1);-webkit-user-select:none;-moz-user-select:none;user-select:none;overflow:hidden;z-index:100;display:none}body.elementor-navigator-docked #elementor-navigator{top:0;left:0;height:100%}body:not(.elementor-navigator-docked) #elementor-navigator{border-radius:5px}#elementor-navigator__inner{height:100%}#elementor-navigator__header{display:flex;align-items:stretch;border-block-end:var(--e-a-border);color:var(--e-a-color-txt-accent)}#elementor-navigator__header__title{flex:1;text-align:center;font-size:13px;font-weight:400;padding:10px 0;cursor:move}#elementor-navigator__close,#elementor-navigator__toggle-all{color:var(--e-a-color-txt);background-color:transparent;border:none;outline:0;padding:10px;cursor:pointer;transition:color .5s}#elementor-navigator__close:hover,#elementor-navigator__toggle-all:hover{color:var(--e-a-color-txt-hover)}#elementor-navigator__close:focus,#elementor-navigator__toggle-all:focus{color:var(--e-a-color-txt-active)}#elementor-navigator__toggle-all{font-size:13px}#elementor-navigator__close{font-size:11px}#elementor-navigator__elements{height:calc(100% - 49px);overflow:auto;position:relative}.elementor-navigator-docked #elementor-navigator__elements{height:calc(100% - 35px)}#elementor-navigator__elements .elementor-nerd-box{padding:25px}#elementor-navigator__elements>.elementor-navigator__element-section{border-block-end:var(--e-a-border)}#elementor-navigator__elements.elementor-navigator-list__promotion{height:calc(100% - 80px)}#elementor-navigator__footer{position:absolute;width:100%;left:0;bottom:0;text-align:center}#elementor-navigator__footer__resize-bar{border-block-start:var(--e-a-border)}.elementor-navigator-docked #elementor-navigator__footer__resize-bar{display:none}#elementor-navigator__footer__promotion{font-size:12px;padding:4px 17px;line-height:22px;font-family:Roboto,sans-serif;color:var(--e-a-bg-logo)}#elementor-navigator__footer__promotion a{color:var(--e-a-color-accent-promotion)}.elementor-navigator__item{position:relative;display:flex;height:30px;cursor:pointer;transition:padding .5s linear;overflow:hidden}.elementor-navigator__item:focus,.elementor-navigator__item:hover{background-color:var(--e-a-bg-hover)}.elementor-navigator__item:active{background-color:var(--e-a-bg-active);color:var(--e-a-color-txt-accent)}.elementor-navigator__item[data-locked=true]{cursor:not-allowed}.elementor-navigator__item:not(.elementor-active) .elementor-navigator__element__list-toggle i{transform:rotate(90deg)}.elementor-navigator__item>*{display:flex;align-items:center}.elementor-navigator__item+.elementor-navigator__elements{display:none}.elementor-navigator__elements>.elementor-navigator__element-container:not(:last-child),.elementor-navigator__elements>.elementor-navigator__element-section{border-block-end:var(--e-a-border)}.elementor-navigator__elements .elementor-empty-view{padding:10px}.elementor-navigator__elements .elementor-empty-view__title{margin-inline-start:23px;font-size:10px;font-style:italic}.elementor-navigator__elements .ui-sortable-helper{box-shadow:1px 2px 5px 0 rgba(0,0,0,.1);transform:rotate(4deg);background-color:var(--e-a-bg-active);color:var(--e-a-color-txt-accent);pointer-events:none}.elementor-navigator__elements .ui-sortable-placeholder{background-color:var(--e-a-bg-hover)}.elementor-navigator__element.elementor-dragging-on-child>.elementor-navigator__elements>.elementor-empty-view{border-block-start:var(--e-a-border)}.elementor-navigator__element.elementor-dragging-on-child>.elementor-navigator__elements>.elementor-empty-view+.ui-sortable-placeholder,.elementor-navigator__element.elementor-dragging-on-child>.elementor-navigator__elements>.elementor-empty-view .elementor-empty-view__title{display:none}.elementor-navigator__element:not(.elementor-navigator__element--has-children) .elementor-navigator__element__list-toggle{visibility:hidden}.elementor-navigator__element:not(.elementor-navigator__element--hidden)>.elementor-navigator__item .elementor-navigator__element__toggle{color:var(--e-a-color-txt-default)}.elementor-navigator__element:not(.elementor-navigator__element--hidden)>.elementor-navigator__item .elementor-navigator__element__toggle:hover{color:var(--e-a-color-txt-hover)}.elementor-navigator__element:not(.elementor-navigator__element--hidden)>.elementor-navigator__item:not(:hover) .elementor-navigator__element__toggle{display:none}.elementor-navigator__element:not(.elementor-navigator__element--hidden)>.elementor-navigator__item.elementor-editing{background-color:var(--e-a-bg-active)}.elementor-navigator__element__list-toggle{margin-inline-end:7px;transition:transform .3s}.elementor-navigator__element__element-type{margin-inline-end:8px;font-size:14px}.elementor-navigator__element__title{flex-grow:1;overflow:hidden}.elementor-navigator__element__title__text{white-space:nowrap;-webkit-user-select:text;-moz-user-select:text;user-select:text}.elementor-navigator__element__title__text[contenteditable=true]{outline:none;background-color:var(--e-a-bg-hover);padding:var(--e-admin-border-radius);border:var(--e-a-border)}.elementor-navigator__element__title__text:not([contenteditable=true]){padding:3px 0;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.elementor-navigator__element__toggle{position:absolute;left:15px;height:100%;z-index:0;font-size:13px}.elementor-navigator__element__indicators{position:relative;transition:transform .5s;padding-inline-start:5px;z-index:91}.elementor-navigator__element__indicators:not(:hover){transform:translateX(calc(-100% + 8px))}.elementor-navigator__element__indicator{height:100%;width:31px;display:inline-flex;align-items:center;justify-content:center;color:var(--e-a-color-txt);background-color:var(--e-a-bg-default);border-inline-start:var(--e-a-border)}.elementor-navigator__element__indicator:first-child{border-inline-start:3px solid var(--e-a-border-color-accent)}.elementor-editing .elementor-navigator__element__indicator:first-child{border-color:#242729}.elementor-navigator__element__indicator:hover{color:var(--e-a-color-txt-hover)}.elementor-navigator__element--hidden .elementor-navigator__element__title,.elementor-navigator__element--hidden .elementor-navigator__element__toggle{opacity:.5}.e-notice-bar{position:absolute;width:100%;bottom:0;display:flex;align-items:center;height:40px;color:#fff;background-color:var(--e-a-color-accent);padding:0 25px}.e-notice-bar__message a{text-decoration:underline;color:var(--e-a-color-txt-invert)}.e-notice-bar__message a:hover{color:#d5d8dc}.e-notice-bar__primary_action{margin-inline:12px}.e-notice-bar__primary_action a{background:#fff;border-radius:3px;color:#93003f;padding:4px 10px;font-size:11px}.e-notice-bar__primary_action a:hover{color:#47001e;background:#f1f2f3}.e-notice-bar__secondary_action,.e-notice-bar__secondary_message{font-size:11px}.e-notice-bar__secondary_action{margin-inline:4px}.e-notice-bar__secondary_action a{color:#fff;text-decoration:underline}.e-notice-bar__secondary_action a:hover{color:#f1f2f3}.e-notice-bar__close{cursor:pointer;margin-inline-start:auto}.e-notice-bar__icon{margin-inline-end:8px}.e-notice-bar i{font-size:16px;opacity:.9}.e-notice-bar i:hover{color:#d5d8dc}.e-notice-bar a,.e-notice-bar i{transition:var(--e-a-transition-hover)}body:not(.elementor-device-desktop) #e-notice-bar{display:none}#elementor-fatal-error-dialog .dialog-message a{text-decoration:underline}#elementor-preview-debug-link-text{display:inline-block}#elementor-icons-manager-modal .dialog-message{padding:0;height:700px}#elementor-icons-manager-modal .dialog-content,#elementor-icons-manager__wrapper{display:flex}@media (max-width:479px){#elementor-icons-manager__sidebar{display:none}}#elementor-icons-manager__tab-links{margin-block-start:30px}#elementor-icons-manager__upload{margin:20px 45px;padding-block-start:35px;border-block-start:var(--e-a-border);display:flex;align-items:center;justify-content:space-between}@media (max-width:1439px){#elementor-icons-manager__upload{margin:20px 25px}}#elementor-icons-manager__main{display:flex;flex-direction:column;padding:30px 80px 0}@media (max-width:1439px){#elementor-icons-manager__main{padding:30px 50px 0}}@media (max-width:479px){#elementor-icons-manager__main{width:100%}}#elementor-icons-manager__search{position:relative}#elementor-icons-manager__search input{padding:8px 15px;background-color:transparent}#elementor-icons-manager__search i{position:absolute;top:50%;transform:translateY(-50%);left:15px}#elementor-icons-manager__tab__wrapper{overflow:auto;margin:25px -15px 0;padding:0 15px 15px}#elementor-icons-manager__tab__title{color:var(--e-a-color-txt);font-size:16px;font-weight:500;text-align:start}@media (max-width:479px){#elementor-icons-manager__tab__title{display:none}}#elementor-icons-manager__tab__content{display:grid;grid-template-columns:repeat(7,1fr);grid-gap:20px;margin:20px 0}@media (max-width:1439px){#elementor-icons-manager__tab__content{grid-template-columns:repeat(6,1fr)}}@media (max-width:1024px){#elementor-icons-manager__tab__content{grid-template-columns:repeat(5,1fr)}}@media (max-width:767px){#elementor-icons-manager__tab__content{grid-template-columns:repeat(4,1fr)}}@media (max-width:479px){#elementor-icons-manager__tab__content{grid-template-columns:repeat(3,1fr)}}#elementor-icons-manager__promotion{display:flex;align-items:center;flex-direction:column;padding-block-start:70px}#elementor-icons-manager__promotion__icon{font-size:60px}#elementor-icons-manager__promotion__text{width:300px;font-size:16px;padding-block-start:25px}#elementor-icons-manager__promotion__link{margin-block-start:20px}.elementor-icons-manager__tab-link{padding-block:15px;padding-inline:45px 0;font-size:12px;text-align:start;cursor:pointer;position:relative}.elementor-icons-manager__tab-link i{font-size:20px;padding-inline-end:15px}@media (max-width:1024px){.elementor-icons-manager__tab-link i{display:none}}.elementor-icons-manager__tab-link:hover{background-color:var(--e-a-bg-hover)}.elementor-icons-manager__tab-link.elementor-active{background-color:var(--e-a-bg-active);color:var(--e-a-color-txt-accent)}.elementor-icons-manager__tab-link.elementor-active:after{content:"";position:absolute;height:100%;width:3px;top:0;right:0;background-color:var(--e-a-border-color-accent)}.elementor-icons-manager__tab__item{position:relative;height:0;padding-block-end:100%;border:var(--e-a-border);border-radius:3px;cursor:pointer;transition:var(--e-a-transition-hover);overflow:hidden}.elementor-icons-manager__tab__item:hover{background-color:var(--e-a-bg-hover)}.elementor-icons-manager__tab__item.elementor-selected{background-color:var(--e-a-bg-active);border-color:var(--e-a-border-color-accent);color:var(--e-a-color-txt-accent)}.elementor-icons-manager__tab__item__content{display:flex;flex-direction:column;align-items:center;width:100%;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);padding:1px}.elementor-icons-manager__tab__item__icon{font-size:25px}.elementor-icons-manager__tab__item__name{font-size:11px;padding:13px 20px 0;max-width:100%;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.elementor-color-picker__header{display:flex;justify-content:space-between;align-items:center;font-weight:700;padding:10px;box-shadow:0 2px 8px rgba(0,0,0,.1)}.e-color-picker__tools{display:flex}.e-control-color--no-value .pcr-button{background-image:linear-gradient(135deg,transparent 46%,#ff3030 50%,transparent 54%);background-size:cover;background-color:transparent}.pickr{border:var(--e-a-border);height:27px}.pickr .pcr-button{height:100%;width:100%;border-radius:var(--e-a-border-radius)}.pickr .pcr-button:after,.pickr .pcr-button:before{height:12px;width:12px;top:50%;left:50%;transform:translate(-50%,-50%)}.pcr-app{background-color:var(--e-a-bg-default);color:var(--e-a-color-txt);box-shadow:var(--e-a-popover-shadow);font-family:var(--e-a-font-family)}.pcr-app[data-theme=monolith]{padding:0;width:270px}.pcr-app[data-theme=monolith] .pcr-selection .pcr-color-chooser,.pcr-app[data-theme=monolith] .pcr-selection .pcr-color-opacity{height:8px}.pcr-app[data-theme=monolith] .pcr-selection .pcr-color-palette{height:150px}.pcr-app .pcr-interaction{padding-block-end:20px}.pcr-app .pcr-interaction input.pcr-result{border:var(--e-a-border);color:var(--e-a-color-txt);border-radius:var(--e-a-border-radius);margin:0;background-color:transparent}.pcr-app .pcr-interaction input.pcr-result:focus{box-shadow:none;border-color:var(--e-a-border-color-bold)}.pcr-app .pcr-interaction input.pcr-type{all:unset;font-size:10px;color:var(--e-a-color-txt-muted);padding-inline-start:5px;cursor:pointer}.pcr-app .pcr-interaction input.pcr-type.active{background-color:transparent;color:var(--e-a-color-txt-accent)}.pcr-interaction,.pcr-selection{padding:0 20px}.pcr-selection{padding-block-start:20px}.pcr .elementor-control-dynamic-switcher{height:20px;border:0}.select2-container{width:100%!important;outline:none;z-index:9999;font-size:12px}.select2-container .e-select2-placeholder{color:var(--e-a-color-txt-muted)}.select2-container.select2-container--default .select2-selection--single{height:27px;background-color:transparent}.select2-container.select2-container--default .select2-selection--single .select2-selection__rendered{color:var(--e-a-color-txt);line-height:27px}.select2-container.select2-container--default .select2-results__option--highlighted[aria-selected]{background-color:var(--e-a-bg-hover);color:var(--e-a-color-txt-hover)}.select2-container.select2-container--default .select2-selection--multiple{background-color:var(--e-a-bg-default);min-height:27px;line-height:0}.select2-container.select2-container--default .select2-selection--multiple .select2-selection__clear{display:none}.select2-container.select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:var(--e-a-btn-bg);color:var(--e-a-btn-color-invert);line-height:1.2;font-size:10px;border:none;border-radius:0;padding:2px 3px}.select2-container.select2-container--default .select2-selection--multiple .select2-selection__choice.select2-selection__e-plus-button{cursor:pointer;width:16.67px;text-indent:-9999px;position:relative}.select2-container.select2-container--default .select2-selection--multiple .select2-selection__choice.select2-selection__e-plus-button:after{content:"\e815";font-family:eicons;color:var(--e-a-btn-color-invert);text-indent:0;position:absolute;left:0;top:0;width:100%;height:100%;display:flex;justify-content:center;align-items:center}.select2-container.select2-container--default .select2-selection--multiple .select2-selection__rendered{padding-block-end:5px}.select2-container.select2-container--default .select2-selection--multiple .select2-selection__choice__remove{color:var(--e-a-btn-color-invert);margin-inline-end:3px}.select2-container:not(.select2-container--open):not(.select2-container--focus) .select2-selection--multiple,.select2-container:not(.select2-container--open):not(.select2-container--focus) .select2-selection--single{background-color:var(--e-a-bg-default);color:var(--e-a-color-txt);border-color:var(--e-a-border-color)}.select2-container.select2-container--focus .select2-selection--multiple,.select2-container.select2-container--focus .select2-selection--single,.select2-container.select2-container--open .select2-selection--multiple,.select2-container.select2-container--open .select2-selection--single{border-color:var(--e-a-border-color-bold)}.select2-selection{outline:none}.select2-selection--single{height:27px}.select2-selection__arrow{height:27px;top:0}.select2-results__option[aria-selected=true]{background-color:var(--e-a-bg-active);color:var(--e-a-color-txt-active)}.select2-results__option[aria-selected=true]:not(.select2-results__option--highlighted){background-color:var(--e-a-bg-active)}.select2-dropdown{border-color:var(--e-a-border-color);background-color:var(--e-a-bg-default);color:var(--e-a-color-txt);box-shadow:var(--e-a-dropdown-shadow)}.select2-dropdown .select2-search__field{outline:none}.e-ui-state--document-scrubbing-mode__on,.e-ui-state--document-scrubbing-mode__on *{cursor:ew-resize}.e-ui-state--document-scrubbing-mode__on input.e-scrubbing--active,.e-ui-state--document-scrubbing-mode__on input.e-scrubbing--active:focus{box-shadow:inset 0 0 0 1px #0e3b9c}.e-ui-state--document-scrubbing-mode__on label.e-scrubbing--active{color:#0e3b9c;-webkit-user-select:none;-moz-user-select:none;user-select:none}.e-ui-state--document-scrubbing-mode__on iframe{pointer-events:none}label.e-scrubbing-over{cursor:ew-resize}#elementor-paste-area-dialog{text-align:center}#elementor-paste-area-dialog .dialog-header{padding-block-start:60px;font-size:30px}#elementor-paste-area-dialog .dialog-message{padding:0 15px 15px;font-size:15px;position:relative}#elementor-paste-area-dialog #elementor-paste-area-dialog__input{background:transparent;color:transparent;border-color:transparent;padding:0;margin:0;height:100px;position:absolute;top:-60px;left:0;right:0}#elementor-paste-area-dialog #elementor-paste-area-dialog__input:focus{border-color:transparent;outline:none}#elementor-paste-area-dialog .dialog-widget-content{width:400px}#elementor-paste-area-dialog .dialog-widget-content .eicon-loading{display:none}#elementor-paste-area-dialog .dialog-widget-content.e-state-loading .eicon-loading{display:block;margin-block-start:15px}#elementor-paste-area-dialog #elementor-paste-area-dialog__error{color:var(--e-a-color-danger);font-size:12px}#elementor-paste-area-dialog #elementor-paste-area-dialog__error:before{content:"";border-block-start:var(--e-a-border);display:block;margin:10px -15px}[class*=" eicon-flex"],[class^=eicon-flex]{transition:all .3s;--is-ltr:1;--is-rtl:0;--rotation-direction:calc(var(--is-ltr) - var(--is-rtl));--is-ltr:0;--is-rtl:1}[class*=" eicon-flex"].eicon-inline,[class^=eicon-flex].eicon-inline{max-height:1em;max-width:1em}[class*=" eicon-flex"]:is(.eicon-justify-start-h,.eicon-justify-end-h),[class^=eicon-flex]:is(.eicon-justify-start-h,.eicon-justify-end-h){--rotation-direction:calc(var(--is-ltr) + var(--is-rtl))}:is(.e-ui-state--document-direction-mode__column,.e-ui-state--document-direction-mode__column-reverse) [class*=" eicon-flex"]:not(.eicon-wrap):not(.eicon-nowrap):not(.eicon-grow),:is(.e-ui-state--document-direction-mode__column,.e-ui-state--document-direction-mode__column-reverse) [class^=eicon-flex]:not(.eicon-wrap):not(.eicon-nowrap):not(.eicon-grow){transform:rotate(calc(var(--rotation-direction) * 90deg))}.e-ui-state--document-direction-mode__column-reverse [class*=" eicon-flex"]:not(.eicon-wrap):not(.eicon-nowrap):not(.eicon-grow):is(.eicon-justify-start-h,.eicon-justify-end-h,.eicon-order-start,.eicon-order-end),.e-ui-state--document-direction-mode__column-reverse [class^=eicon-flex]:not(.eicon-wrap):not(.eicon-nowrap):not(.eicon-grow):is(.eicon-justify-start-h,.eicon-justify-end-h,.eicon-order-start,.eicon-order-end),:is(.e-ui-state--document-direction-mode__column,.e-ui-state--document-direction-mode__column-reverse) [class*=" eicon-flex"]:not(.eicon-wrap):not(.eicon-nowrap):not(.eicon-grow):is(.eicon-align-start-v,.eicon-align-end-v),:is(.e-ui-state--document-direction-mode__column,.e-ui-state--document-direction-mode__column-reverse) [class^=eicon-flex]:not(.eicon-wrap):not(.eicon-nowrap):not(.eicon-grow):is(.eicon-align-start-v,.eicon-align-end-v){transform:rotate(calc(var(--rotation-direction) * -90deg))}.e-ui-state--document-direction-mode__row [class*=" eicon-flex"]:not(.eicon-wrap):not(.eicon-nowrap):not(.eicon-grow):is(.eicon-justify-start-h,.eicon-justify-end-h,.eicon-order-start,.eicon-order-end),.e-ui-state--document-direction-mode__row [class^=eicon-flex]:not(.eicon-wrap):not(.eicon-nowrap):not(.eicon-grow):is(.eicon-justify-start-h,.eicon-justify-end-h,.eicon-order-start,.eicon-order-end){transform:rotate(calc(var(--is-rtl) * 180deg))}.e-ui-state--document-direction-mode__row-reverse [class*=" eicon-flex"]:not(.eicon-wrap):not(.eicon-nowrap):not(.eicon-grow):is(.eicon-justify-start-h,.eicon-justify-end-h,.eicon-order-start,.eicon-order-end),.e-ui-state--document-direction-mode__row-reverse [class^=eicon-flex]:not(.eicon-wrap):not(.eicon-nowrap):not(.eicon-grow):is(.eicon-justify-start-h,.eicon-justify-end-h,.eicon-order-start,.eicon-order-end){transform:rotate(calc(var(--is-ltr) * 180deg))} \ No newline at end of file diff --git a/wp-content/plugins/elementor/assets/css/editor-v2-overrides.css b/wp-content/plugins/elementor/assets/css/editor-v2-overrides.css new file mode 100644 index 0000000..f739dc6 --- /dev/null +++ b/wp-content/plugins/elementor/assets/css/editor-v2-overrides.css @@ -0,0 +1,46 @@ +/*! elementor - v3.20.0 - 26-03-2024 */ +/** + * Here should be only styles that related to the Editor v1, and should be overridden when using the Editor v2. + */ +body { + --editor-v2-top-bar-height: 48px; +} + +#elementor-editor-wrapper { + height: calc(100vh - var(--editor-v2-top-bar-height)); +} + +body.elementor-navigator-docked #elementor-navigator { + height: calc(100% - var(--editor-v2-top-bar-height)); + top: var(--editor-v2-top-bar-height); +} + +.elementor-panel #elementor-panel-header-menu-button, +.elementor-panel #elementor-panel-header-add-button, +.elementor-panel #elementor-panel-footer { + display: none; +} + +.elementor-panel #elementor-panel-header { + font-weight: 700; + background-color: var(--e-a-bg-default); + color: var(--e-a-color-txt-accent); + border-block-end: var(--e-a-border); + height: 48px; +} + +.elementor-control-type-wysiwyg .mce-fullscreen { + inset: var(--editor-v2-top-bar-height) 0 0 0; +} +.elementor-control-type-wysiwyg .mce-fullscreen > .mce-container-body { + display: flex; + flex-direction: column; + height: 100%; +} +.elementor-control-type-wysiwyg .mce-fullscreen > .mce-container-body > .mce-edit-area { + flex-grow: 1; +} +.elementor-control-type-wysiwyg .mce-fullscreen > .mce-container-body > .mce-edit-area > iframe { + height: 100% !important; +} +/*# sourceMappingURL=editor-v2-overrides.css.map */ \ No newline at end of file diff --git a/wp-content/plugins/elementor/assets/css/editor-v2-overrides.min.css b/wp-content/plugins/elementor/assets/css/editor-v2-overrides.min.css new file mode 100644 index 0000000..89017f8 --- /dev/null +++ b/wp-content/plugins/elementor/assets/css/editor-v2-overrides.min.css @@ -0,0 +1,2 @@ +/*! elementor - v3.20.0 - 26-03-2024 */ +body{--editor-v2-top-bar-height:48px}#elementor-editor-wrapper{height:calc(100vh - var(--editor-v2-top-bar-height))}body.elementor-navigator-docked #elementor-navigator{height:calc(100% - var(--editor-v2-top-bar-height));top:var(--editor-v2-top-bar-height)}.elementor-panel #elementor-panel-footer,.elementor-panel #elementor-panel-header-add-button,.elementor-panel #elementor-panel-header-menu-button{display:none}.elementor-panel #elementor-panel-header{font-weight:700;background-color:var(--e-a-bg-default);color:var(--e-a-color-txt-accent);border-block-end:var(--e-a-border);height:48px}.elementor-control-type-wysiwyg .mce-fullscreen{inset:var(--editor-v2-top-bar-height) 0 0 0}.elementor-control-type-wysiwyg .mce-fullscreen>.mce-container-body{display:flex;flex-direction:column;height:100%}.elementor-control-type-wysiwyg .mce-fullscreen>.mce-container-body>.mce-edit-area{flex-grow:1}.elementor-control-type-wysiwyg .mce-fullscreen>.mce-container-body>.mce-edit-area>iframe{height:100%!important} \ No newline at end of file diff --git a/wp-content/plugins/elementor/assets/css/editor.css b/wp-content/plugins/elementor/assets/css/editor.css new file mode 100644 index 0000000..395791d --- /dev/null +++ b/wp-content/plugins/elementor/assets/css/editor.css @@ -0,0 +1,6390 @@ +/*! elementor - v3.20.0 - 26-03-2024 */ +.elementor-control-unit-1 { + width: 27px; +} + +.elementor-control-unit-2 { + width: 54px; +} + +.elementor-control-unit-3 { + width: 81px; +} + +.elementor-control-unit-4 { + width: 108px; +} + +.elementor-control-unit-5 { + max-width: 400px; + width: 52%; +} + +*, :before, :after { + margin: 0; + padding: 0; + box-sizing: border-box; +} + +body, +html { + height: 100%; +} + +html { + background-color: var(--e-a-bg-loading); +} + +iframe, +img { + border: 0 none; +} + +li { + list-style: none; +} + +a { + text-decoration: none; +} + +body { + background-color: var(--e-a-bg-default); + color: var(--e-a-color-txt); + font-family: var(--e-a-font-family); + font-size: 13px; + font-weight: normal; + line-height: 1; + text-decoration: none; + text-transform: none; + overflow: hidden; +} +body:after { + content: ""; + position: absolute; + top: 0; + right: 0; + height: 100%; + width: 0; + background-color: var(--e-a-bg-default); + transition: width 0.5s; +} +body a { + color: var(--e-a-color-info); +} +body a:hover { + color: var(--e-a-color-primary-bold); +} +body.elementor-editor-active #elementor-mode-switcher-preview .eicon:before { + content: "\e89f"; +} +body.elementor-editor-preview { + --e-preview-width: 100%; +} +body.elementor-editor-preview #elementor-mode-switcher-preview .eicon:before { + content: "\e89e"; +} +body.elementor-navigator--dock-hint:after { + width: 30px; +} + +#elementor-editor-wrapper { + display: flex; + width: 100%; + height: 100vh; +} + +#elementor-panel:not(.ui-resizable-resizing), +#elementor-preview:not(.ui-resizable-resizing) { + transition: margin 0.5s ease-in-out, width 0.5s ease-in-out; +} + +#elementor-loading { + position: fixed; + top: 0; + left: 0; + bottom: 0; + right: 0; + background: var(--e-a-bg-default); + z-index: 9999; +} + +#elementor-preview-loading { + display: flex; + align-items: center; + justify-content: center; + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + background-color: var(--e-a-bg-default); +} +#elementor-preview-loading i { + color: var(--e-a-color-txt-disabled); + font-size: 50px; +} + +.elementor-nerd-box { + padding: 30px; + text-align: center; +} +.elementor-nerd-box-icon { + width: 100px; +} +.elementor-nerd-box-title { + margin-block-start: 20px; + font-size: 16px; + font-weight: bold; + line-height: 1.4; +} +.elementor-nerd-box-message { + margin-block-start: 5px; + line-height: 1.8; + font-size: 11px; +} +.elementor-nerd-box .elementor-button { + margin-block-start: 20px; +} +.elementor-nerd-box--upsale { + padding: 15px 30px 30px; +} +.elementor-nerd-box--upsale .elementor-nerd-box-title { + font-weight: 500; + line-height: 1.2; +} +.elementor-nerd-box--upsale .elementor-nerd-box-message { + line-height: 1.5; +} + +.eicon-nerd:hover:before { + content: "\e8b7"; +} +.eicon-nerd:active:before { + content: "\e8b6"; +} + +.e-group-control-header { + display: flex; + justify-content: space-between; + align-items: center; + font-weight: bold; + font-size: 12px; + padding: 10px; + box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1); + margin-block-end: 15px; +} + +.e-control-tools { + display: flex; +} + +.e-control-tool { + width: 20px; + height: 20px; + display: inline-flex; + border-radius: 3px; + margin: 0 3px 0; + border: 0; + position: relative; + background-color: var(--e-a-bg-default); +} +.e-control-tool:not(.e-control-tool-disabled) { + box-shadow: 0 1px 5px rgba(0, 0, 0, 0.1); + cursor: pointer; +} +.e-control-tool-disabled { + background: var(--e-a-bg-default); + pointer-events: none; +} +.e-control-tool-disabled i { + color: var(--e-a-color-txt-disabled); +} +.e-control-tool i { + position: absolute; + top: 50%; + left: 50%; + transform: translateX(-50%) translateY(-50%); + color: var(--e-a-color-txt-default); + font-size: 13px; +} + +i.eicon-tilted { + transform: rotate(90deg); +} + +.elementor-loader-wrapper { + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + width: 300px; + display: flex; + flex-direction: column; + align-items: center; + gap: 30px; +} + +.elementor-loader { + border-radius: 50%; + padding: 40px; + height: 150px; + width: 150px; + background-color: var(--e-a-bg-active); + box-sizing: border-box; + box-shadow: 2px 2px 20px 4px rgba(0, 0, 0, 0.02); +} + +.elementor-loader-boxes { + height: 100%; + width: 100%; + position: relative; +} + +.elementor-loader-box { + position: absolute; + background-color: var(--e-a-color-txt-hover); + animation: load 1.8s linear infinite; +} +.elementor-loader-box:nth-of-type(1) { + width: 20%; + height: 100%; + left: 0; + top: 0; +} +.elementor-loader-box:not(:nth-of-type(1)) { + right: 0; + height: 20%; + width: 60%; +} +.elementor-loader-box:nth-of-type(2) { + top: 0; + animation-delay: calc(1.8s / 4 * -1); +} +.elementor-loader-box:nth-of-type(3) { + top: 40%; + animation-delay: calc(1.8s / 4 * -2); +} +.elementor-loader-box:nth-of-type(4) { + bottom: 0; + animation-delay: calc(1.8s / 4 * -3); +} + +.elementor-loading-title { + color: var(--e-a-color-txt); + text-align: center; + text-transform: uppercase; + letter-spacing: 7px; + text-indent: 7px; + font-size: 10px; + width: 100%; +} + +input, +select, +textarea, +.e-input-style { + color: var(--e-a-color-txt); + border-radius: var(--e-a-border-radius); + font-size: 12px; + width: 100%; + background: none; + background-color: var(--e-a-bg-default); + box-shadow: none; + border: var(--e-a-border-bold); + outline: none; +} +input:focus, input:focus + .elementor-control-dynamic-switcher, +select:focus, +select:focus + .elementor-control-dynamic-switcher, +textarea:focus, +textarea:focus + .elementor-control-dynamic-switcher, +.e-input-style:focus, +.e-input-style:focus + .elementor-control-dynamic-switcher { + border-color: var(--e-a-border-color-focus); +} + +.elementor-error input, +.elementor-error select, +.elementor-error textarea { + border-color: var(--e-a-color-danger); +} + +input { + min-width: 0; +} + +input, textarea, .e-input-style { + padding: 5px; +} + +textarea, .e-input-style { + resize: vertical; +} + +input[type=checkbox], +input[type=radio] { + height: auto; + width: auto; +} + +input[type=checkbox] { + margin: 0; + padding: 0; + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + outline: none; + content: none; + height: 15px; + border-radius: var(--e-a-border-radius); + margin-inline-end: 5px; + width: 15px; + border: var(--e-a-border-bold); + display: inline-flex; + align-items: center; + justify-content: center; +} +input[type=checkbox]:checked { + background: var(--e-a-color-primary-bold); + border: none; +} +input[type=checkbox]:checked:before { + display: block; + content: ""; + width: 4px; + height: 7px; + border: solid white; + border-width: 0 2px 2px 0; + transform: rotate(45deg); +} + +input[disabled] { + background-color: var(--e-a-bg-hover); + cursor: not-allowed; + opacity: 1; +} + +select { + outline: none; + height: 27px; +} + +/* + * Container style + */ +.ps { + overflow: hidden !important; + overflow-anchor: none; + touch-action: auto; +} + +/* + * Scrollbar rail styles + */ +.ps__rail-y { + display: none; + opacity: 0; + transition: background-color 0.2s linear, opacity 0.2s linear; + width: 15px; + /* there must be 'right' or 'left' for ps__rail-y */ + right: 0; + left: initial !important; + /* please don't change 'position' */ + position: absolute; +} + +.ps--active-y > .ps__rail-y { + display: block; + background-color: transparent; +} + +.ps:hover > .ps__rail-y, +.ps--focus > .ps__rail-y, +.ps--scrolling-y > .ps__rail-y { + opacity: 0.6; +} + +.ps .ps__rail-y:hover, +.ps .ps__rail-y:focus, +.ps .ps__rail-y.ps--clicking { + opacity: 0.9; +} + +.ps__thumb-y { + background-color: #aaa; + border-radius: 6px; + transition: background-color 0.2s linear, width 0.2s ease-in-out; + width: 6px; + /* there must be 'right' for ps__thumb-y */ + right: 2px; + /* please don't change 'position' */ + position: absolute; +} + +.ps__rail-y:hover > .ps__thumb-y, +.ps__rail-y:focus > .ps__thumb-y, +.ps__rail-y.ps--clicking .ps__thumb-y { + background-color: #999; + width: 6px; +} + +/* Make clicks pass-through */ +#nprogress { + pointer-events: none; +} + +#nprogress .bar { + background: #D004D4; + position: fixed; + z-index: 1031; + top: 0; + left: 0; + width: 100%; + height: 2px; +} + +/* Fancy blur effect */ +#nprogress .peg { + display: block; + position: absolute; + right: 0; + width: 100px; + height: 100%; + box-shadow: 0 0 10px #D004D4, 0 0 5px #D004D4; + opacity: 1; + transform: rotate(3deg) translate(0px, -4px); +} + +/* Remove these to get rid of the spinner */ +#nprogress .spinner { + display: none; + position: fixed; + z-index: 1031; + top: 15px; + right: 15px; +} + +#nprogress .spinner-icon { + width: 18px; + height: 18px; + box-sizing: border-box; + border: solid 2px transparent; + border-block-start-color: #D004D4; + border-inline-start-color: #D004D4; + border-radius: 50%; + animation: nprogress-spinner 400ms linear infinite; +} + +.nprogress-custom-parent { + overflow: hidden; + position: relative; +} + +.nprogress-custom-parent #nprogress .spinner, +.nprogress-custom-parent #nprogress .bar { + position: absolute; +} + +@keyframes nprogress-spinner { + 0% { + transform: rotate(0deg); + } + 100% { + transform: rotate(360deg); + } +} +#nprogress .bar, +#nprogress .spinner { + z-index: 100000; +} + +:root { + --e-is-preview-mode: 0; +} +@media (max-width: 1439px) { + :root { + --e-editor-panel-width: 280px; + } +} +@media (min-width: 1440px) { + :root { + --e-editor-panel-width: 300px; + } +} + +.elementor-panel { + position: relative; + height: 100%; + margin-inline-start: calc(-1 * var(--e-editor-panel-width) * var(--e-is-preview-mode)); + width: var(--e-editor-panel-width); + overflow: visible; + background-color: var(--e-a-bg-default); + z-index: 1; + font-family: var(--e-a-font-family); + font-size: 13px; + left: 0; +} +.elementor-panel h1, +.elementor-panel h2, +.elementor-panel h3, +.elementor-panel h4, +.elementor-panel h5, +.elementor-panel h6 { + font-size: 100%; + font-weight: normal; +} +.elementor-panel abbr, +.elementor-panel acronym { + border: 0; + font-variant: normal; +} +.elementor-panel sup { + vertical-align: text-top; +} +.elementor-panel sub { + vertical-align: text-bottom; +} +.elementor-panel img { + max-width: 100%; + height: auto; + border: 0; +} +.elementor-panel :focus { + outline: 0; +} +.elementor-panel .elementor-panel-box-content { + padding: 20px 20px 10px; +} +.elementor-panel .elementor-button { + display: inline-block; +} +.elementor-panel .elementor-panel-alert { + background-color: var(--e-a-bg-primary); + padding: 15px; + border-inline-start: 3px solid var(--e-a-color-primary); + position: relative; + font-size: 12px; + font-weight: 300; + font-style: italic; + line-height: 1.5; + text-align: start; + border-start-start-radius: 0; + border-start-end-radius: 3px; + border-end-start-radius: 0; + border-end-end-radius: 3px; +} +.elementor-panel .elementor-panel-alert a { + color: inherit; +} +.elementor-panel .elementor-panel-alert.elementor-panel-alert-info { + border-color: var(--e-a-color-info); + background: var(--e-a-bg-info); +} +.elementor-panel .elementor-panel-alert.elementor-panel-alert-success { + border-color: var(--e-a-color-success); + background: var(--e-a-bg-success); +} +.elementor-panel .elementor-panel-alert.elementor-panel-alert-warning { + border-inline-start: 3px solid var(--e-a-color-warning); + background: var(--e-a-bg-warning); +} +.elementor-panel .elementor-panel-alert.elementor-panel-alert-danger { + border-color: var(--e-a-color-danger); + background: var(--e-a-bg-danger); +} +.elementor-panel .elementor-descriptor, .elementor-panel .elementor-control-field-description { + font-size: 11px; + font-style: italic; + line-height: 1.4; + color: var(--e-a-color-txt-muted); +} +.elementor-panel .elementor-controls-popover { + display: none; + position: absolute; + box-shadow: var(--e-a-popover-shadow); + border-radius: var(--e-a-border-radius); + left: 0; + right: 0; + margin: -4px auto 5px; + padding-block-start: 15px; + width: 90%; + z-index: 10000; + background-color: var(--e-a-bg-default); +} +.elementor-panel .elementor-controls-popover:before { + content: ""; + position: absolute; + top: -16px; + right: 22px; + border: 8px solid transparent; + border-block-end-color: var(--e-a-bg-default); +} +.elementor-panel .elementor-controls-popover div.elementor-control { + background-color: transparent; +} +.elementor-panel .elementor-controls-popover div.elementor-control:before { + content: none; +} +.elementor-panel #elementor-panel-global .elementor-nerd-box .elementor-nerd-box-icon { + margin-block-start: 20px; +} +.elementor-editor-preview .elementor-panel { + --e-is-preview-mode: 1; +} +.elementor-editor-preview .elementor-panel > .ui-resizable-e, +.elementor-editor-preview .elementor-panel > .ui-resizable-w { + display: none; +} +.elementor-editor-preview .elementor-panel #elementor-panel-elements-wrapper { + display: flex; + flex-direction: column; +} +.elementor-panel .ps__rail-y { + z-index: 2; +} +.elementor-panel .elementor-responsive-panel { + padding: 0 15px; + display: grid; + gap: 10px; + grid-template-columns: repeat(auto-fill, minmax(min(135px, 50% - 5px), 1fr)); +} +.elementor-panel .elementor-responsive-panel > .e-responsive-panel-stretch { + grid-column: 1/-1; +} +.elementor-panel #elementor-panel-header { + display: flex; + align-items: center; + justify-content: space-between; + height: 40px; + width: 100%; + background-color: var(--e-a-dark-bg); + color: var(--e-a-color-white); +} +.elementor-panel #elementor-panel-header > * { + display: flex; + align-items: center; + justify-content: center; +} +.elementor-panel .elementor-header-button { + width: 40px; + border: 0; + color: currentColor; + background-color: transparent; +} +.elementor-panel .elementor-header-button .elementor-icon { + cursor: pointer; + display: block; + font-size: 19px; + height: 40px; + line-height: 40px; + transition: var(--e-a-transition-hover); +} +.elementor-panel .elementor-header-button .elementor-icon.eicon-menu-bar { + font-size: 18px; +} +.elementor-panel .elementor-header-button:hover, .elementor-panel .elementor-header-button:focus { + color: var(--e-a-dark-color-txt-hover); +} +.elementor-panel #elementor-panel-header-title { + flex: 1; + font-size: 15px; + font-weight: 700; +} +.elementor-panel #elementor-panel-header-title img { + width: 90px; +} +.elementor-panel #elementor-panel-elements-categories { + padding-block-end: 10px; + position: relative; +} +.elementor-panel .elementor-panel-category { + position: relative; + border-block-end: var(--e-a-border); +} +.elementor-panel .elementor-panel-category .elementor-panel-heading { + padding: 0 15px; + border: none; + background-color: transparent; +} +.elementor-panel .elementor-panel-category.elementor-active .elementor-panel-heading { + border: none; +} +.elementor-panel .elementor-panel-category-items { + padding-block-end: 20px; +} +.elementor-panel .elementor-panel-category-items-empty { + grid-column-start: 1; + grid-column-end: 3; +} +.elementor-panel #elementor-panel-page-menu { + padding: 25px 15px; +} +.elementor-panel .elementor-panel-menu-group-title { + text-transform: uppercase; + font-size: 11px; +} +.elementor-panel .elementor-panel-menu-items { + border: var(--e-a-border); + margin: 15px 0 25px; + border-radius: 5px; + overflow: hidden; +} +.elementor-panel .elementor-panel-menu-item { + display: flex; + align-items: center; + width: 100%; + height: 40px; + transition: var(--e-a-transition-hover); + border: 0; + background-color: transparent; + cursor: pointer; +} +.elementor-panel .elementor-panel-menu-item:not(:last-child) { + border-block-end: var(--e-a-border); +} +.elementor-panel .elementor-panel-menu-item:hover, .elementor-panel .elementor-panel-menu-item:focus { + background-color: var(--e-a-bg-hover); +} +.elementor-panel .elementor-panel-menu-item:active { + background-color: var(--e-a-bg-active); + color: var(--e-a-color-txt-accent); +} +.elementor-panel .elementor-panel-menu-item-icon { + text-align: center; + width: 30px; + flex-shrink: 0; + padding: 10px 0; + margin: 0 10px; + font-size: 19px; +} +.elementor-panel .elementor-panel-menu-item-title { + display: flex; + flex-grow: 1; + font-weight: 500; + justify-content: space-between; +} +.elementor-panel .elementor-panel-menu-item-title-badge { + margin: 0 10px; + background: var(--e-a-color-white); + border-radius: var(--e-a-border-radius); +} +.elementor-panel .elementor-panel-menu-item-title > span { + color: var(--e-a-color-accent); +} +.elementor-panel .elementor-panel-menu-item a { + display: flex; + align-items: center; + color: inherit; + width: 100%; + height: 100%; + padding-inline-start: 10px; + padding: 10px 0; +} +.elementor-panel .elementor-control.elementor-control-clear_page { + background-color: transparent; +} +.elementor-panel .elementor-control.elementor-control-clear_page .elementor-control-raw-html { + display: flex; + align-items: center; + justify-content: space-between; +} +.elementor-panel .elementor-panel-navigation { + display: flex; + width: 100%; + border-block-end: var(--e-a-border); +} +.elementor-panel .elementor-panel-navigation .elementor-panel-navigation-tab { + all: unset; + flex: auto; + transition: var(--e-a-transition-hover); + border-block-end: 3px solid transparent; + cursor: pointer; +} +.elementor-panel .elementor-panel-navigation .elementor-panel-navigation-tab:hover, .elementor-panel .elementor-panel-navigation .elementor-panel-navigation-tab:focus { + background-color: var(--e-a-bg-hover); +} +.elementor-panel .elementor-panel-navigation .elementor-panel-navigation-tab:focus { + outline: 0; +} +.elementor-panel .elementor-panel-navigation .elementor-panel-navigation-tab.elementor-active { + border-color: var(--e-a-border-color-accent); + color: var(--e-a-color-txt-accent); +} +.elementor-panel .elementor-panel-navigation .elementor-panel-navigation-tab.elementor-active a, +.elementor-panel .elementor-panel-navigation .elementor-panel-navigation-tab.elementor-active span { + color: var(--e-a-color-txt-accent); +} +.elementor-panel .elementor-panel-navigation .elementor-panel-navigation-tab a, +.elementor-panel .elementor-panel-navigation .elementor-panel-navigation-tab span { + color: inherit; + display: block; + text-align: center; + padding: 12px 0 8px; + font-size: 10px; +} +.elementor-panel .elementor-panel-navigation .elementor-panel-navigation-tab a:before, +.elementor-panel .elementor-panel-navigation .elementor-panel-navigation-tab span:before { + font-family: eicons; + font-size: 16px; + display: block; + margin-block-end: 8px; +} +.elementor-panel .elementor-tab-control-content a:before, +.elementor-panel .elementor-tab-control-content span:before { + content: "\e92c"; +} +.elementor-panel .elementor-tab-control-style a:before, +.elementor-panel .elementor-tab-control-style span:before { + content: "\e921"; +} +.elementor-panel .elementor-tab-control-advanced a:before, +.elementor-panel .elementor-tab-control-advanced span:before, +.elementor-panel .elementor-tab-control-settings a:before, +.elementor-panel .elementor-tab-control-settings span:before, +.elementor-panel .elementor-tab-control-general_style a:before, +.elementor-panel .elementor-tab-control-general_style span:before { + content: "\e916"; +} +.elementor-panel .elementor-tab-control-responsive a:before, +.elementor-panel .elementor-tab-control-responsive span:before { + content: "\e885"; +} +.elementor-panel .elementor-tab-control-lightbox a:before, +.elementor-panel .elementor-tab-control-lightbox span:before { + content: "\e922"; +} +.elementor-panel .elementor-tab-control-layout a:before, +.elementor-panel .elementor-tab-control-layout span:before, +.elementor-panel .elementor-tab-control-column a:before, +.elementor-panel .elementor-tab-control-column span:before { + content: "\e899"; +} +.elementor-panel #elementor-panel__editor__help { + padding: 50px 25px; + display: flex; + align-items: center; + justify-content: center; +} +.elementor-panel #elementor-panel__editor__help__link { + display: inline-flex; + align-items: center; + justify-content: center; + font-size: 85%; + line-height: 2; + padding-inline-start: 5px; + color: inherit; + font-weight: 500; + transition: var(--e-a-transition-hover); +} +.elementor-panel #elementor-panel__editor__help__link:hover, .elementor-panel #elementor-panel__editor__help__link:focus { + color: var(--e-a-color-info); +} +.elementor-panel #elementor-panel__editor__help__link i { + padding: 0 5px; + font-size: 125%; + position: relative; +} +.elementor-panel #elementor-panel__editor__help__link i:after { + content: ""; + position: absolute; + height: 13px; + width: 13px; + top: 3px; + bottom: 0; + left: 8px; + right: 0; + border-radius: 50%; + z-index: -1; +} +.elementor-panel #elementor-panel-footer { + position: relative; + height: 40px; + background-color: var(--e-a-dark-bg); + color: var(--e-a-dark-color-txt); +} +.elementor-panel #elementor-panel-footer-tools { + display: flex; + justify-content: space-between; + height: 100%; +} +.elementor-panel .elementor-panel-footer-tool { + display: flex; + align-items: center; + justify-content: center; + width: 15%; + cursor: pointer; + transition: var(--e-a-transition-hover); + border: 0; + color: currentColor; + background-color: transparent; +} +.elementor-panel .elementor-panel-footer-tool i { + font-size: 15px; +} +.elementor-panel .elementor-panel-footer-tool #elementor-panel-saver-button-save-options i.eicon-chevron-right { + margin: auto; + transform: rotate(270deg); +} +.elementor-panel .elementor-panel-footer-tool #elementor-panel-saver-button-save-options.elementor-disabled { + cursor: inherit; +} +.elementor-panel .elementor-panel-footer-tool:not(.e-open):hover, .elementor-panel .elementor-panel-footer-tool:not(.e-open):focus { + color: var(--e-a-dark-color-txt-hover); +} +.elementor-panel .elementor-panel-footer-tool:not(.e-open) .elementor-panel-footer-sub-menu-wrapper { + display: none; +} +.elementor-panel #elementor-panel-footer-saver-publish { + width: 30%; + margin-inline-start: auto; +} +.elementor-panel #elementor-panel-footer-saver-publish .elementor-button-state i { + margin-inline-end: 0; +} +.elementor-panel #elementor-panel-footer-saver-publish .elementor-button-state #elementor-panel-saver-button-publish-label { + display: none; +} +.elementor-panel #elementor-panel-footer-saver-options { + width: 10%; +} +.elementor-panel #elementor-panel-footer-saver-options .elementor-last-edited-wrapper { + font-size: 11px; + font-style: italic; + padding: 5px 0 15px; +} +.elementor-panel #elementor-panel-footer-saver-options .elementor-last-edited-wrapper:not(.elementor-state-active) .elementor-state-icon { + display: none; +} +.elementor-panel #elementor-panel-footer-saver-options .elementor-last-edited-wrapper time { + border-block-end: 1px dotted transparent; + transition: all ease-in-out 0.3s; + cursor: pointer; +} +.elementor-panel #elementor-panel-footer-saver-options .elementor-last-edited-wrapper time:hover { + border-block-end-color: inherit; +} +.elementor-panel #elementor-panel-footer-saver-options.e-open i.eicon-chevron-right { + transform: rotate(90deg); +} +.elementor-panel #elementor-panel-saver-button-publish, .elementor-panel #elementor-panel-saver-button-save-options { + padding: 0; + font-size: 11px; + height: 100%; + width: 100%; + border-radius: 0; +} +.elementor-panel #elementor-panel-saver-button-publish.elementor-disabled, .elementor-panel #elementor-panel-saver-button-save-options.elementor-disabled { + background-color: #1f2124; + color: #9DA5AE; +} +.elementor-panel #elementor-panel-saver-button-publish:not(.elementor-disabled) { + border-inline-end: 1px solid #F0ABFC; +} +.elementor-panel #elementor-panel-saver-button-publish.elementor-disabled { + border-inline-end: 1px solid #3f444b; +} +.elementor-panel .elementor-panel-footer-sub-menu-wrapper { + position: absolute; + bottom: 100%; + left: 0; + width: 100%; + background-color: #1f2124; + padding: 10px; + box-shadow: -2px -5px 8px rgba(0, 0, 0, 0.1); + cursor: default; + z-index: 10000; +} +.elementor-panel .elementor-panel-footer-sub-menu { + border-radius: var(--e-border-radius); + overflow: hidden; + border: 1px solid #3f444b; +} +.elementor-panel .elementor-panel-footer-sub-menu-item { + display: flex; + height: 40px; + color: #D5D8DC; + align-items: center; + -moz-column-gap: 10px; + column-gap: 10px; + padding: 0 20px; + transition: var(--e-a-transition-hover); + cursor: pointer; +} +.elementor-panel .elementor-panel-footer-sub-menu-item.elementor-disabled { + cursor: default; + color: #69727D; +} +.elementor-panel .elementor-panel-footer-sub-menu-item:not(:last-child) { + border-block-end: 1px solid #3f444b; +} +.elementor-panel .elementor-panel-footer-sub-menu-item:hover { + background-color: rgba(255, 255, 255, 0.1); +} +.elementor-panel .elementor-panel-footer-sub-menu-item.active { + background-color: rgba(255, 255, 255, 0.2); +} + +#elementor-panel-elements-navigation .elementor-panel-navigation-tab { + text-align: center; + padding: 10px 0; + font-size: 12px; + cursor: pointer; +} + +#elementor-panel-elements { + overflow: hidden; +} + +#elementor-panel-state-loading { + display: none; +} +body.elementor-panel-loading #elementor-panel-state-loading { + position: absolute; + top: 0; + left: 0; + height: 100%; + width: 100%; + display: flex; + align-items: center; + justify-content: center; + background-color: rgba(255, 255, 255, 0.5); + z-index: 2; +} +#elementor-panel-state-loading .eicon-loading { + font-size: 25px; + color: var(--e-a-color-txt-accent); +} + +#elementor-panel-elements-search-area { + background-color: var(--e-a-bg-default); + position: sticky; + top: 0; + padding: 15px; + z-index: 1; +} + +#elementor-panel-elements-search-wrapper { + position: relative; +} + +#elementor-panel-elements-search-input { + font-size: 11px; + padding-block: 10px; + padding-inline: 29px 10px; + font-style: italic; + border: var(--e-a-border-bold); + border-radius: 0; + transition: all 1s; + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; +} +#elementor-panel-elements-search-input + i { + position: absolute; + left: 10px; + top: 50%; + color: var(--e-a-color-txt-disabled); + transform: translateY(-50%); +} +#elementor-panel-elements-search-input:focus { + border-color: var(--e-a-border-color-focus); + padding-inline-end: 15px; +} + +.elementor-panel .elementor-element { + font-family: var(--e-a-font-family); + color: var(--e-a-color-txt); + line-height: 1; + text-align: center; + border: var(--e-a-border-bold); + border-radius: 3px; + cursor: move; + position: relative; + transition: var(--e-a-transition-hover); + width: 100%; + background-color: transparent; +} +.elementor-panel .elementor-element--promotion .elementor-element { + cursor: pointer; + -webkit-user-select: none; + -moz-user-select: none; + user-select: none; +} +.elementor-panel .elementor-element:hover, .elementor-panel .elementor-element:focus { + background-color: var(--e-a-bg-hover); + border-color: var(--e-a-border-color-bold); +} +.elementor-panel .elementor-element:hover > .eicon-lock, .elementor-panel .elementor-element:focus > .eicon-lock { + color: var(--e-a-color-accent); +} +.elementor-panel .elementor-element .icon { + font-size: 28px; + padding-block-start: 15px; +} +.elementor-panel .elementor-element .title-wrapper { + display: flex; + height: 40px; + align-items: center; + justify-content: center; +} +.elementor-panel .elementor-element .title { + font-size: 12px; +} +.elementor-panel .elementor-element > .eicon-lock { + position: absolute; + top: 5px; + right: 5px; + color: var(--e-a-color-txt-disabled); +} +.elementor-panel .elementor-element:active { + background-color: var(--e-a-bg-hover); + border-color: var(--e-a-border-color-accent); + color: var(--e-a-color-txt-accent); +} + +#elementor-element--promotion__dialog { + position: absolute; + width: 300px; + z-index: 1; + background-color: var(--e-a-bg-default); + box-shadow: var(--e-a-popover-shadow); + border-radius: var(--e-a-border-radius); +} +#elementor-element--promotion__dialog:after { + content: ""; + position: absolute; + top: 15px; + right: 100%; + transform: scaleY(0.7); + border: 10px solid transparent; + border-inline-end-color: var(--e-a-bg-default); +} +#elementor-element--promotion__dialog__title { + font-size: 14px; +} +#elementor-element--promotion__dialog .dialog-header { + display: flex; + padding: 20px; + border-block-end: var(--e-a-border); + font-weight: 500; +} +#elementor-element--promotion__dialog .dialog-header .eicon-pro-icon { + flex-grow: 1; + margin-inline-start: 10px; + font-size: 14px; + color: var(--e-a-color-accent); +} +#elementor-element--promotion__dialog .dialog-header .eicon-close { + cursor: pointer; + color: var(--e-a-color-txt-disabled); +} +#elementor-element--promotion__dialog .dialog-header .eicon-close:hover { + color: var(--e-a-color-txt-muted); +} +#elementor-element--promotion__dialog .dialog-message { + padding: 20px; +} +#elementor-element--promotion__dialog .dialog-buttons-wrapper { + padding: 0 20px 20px; +} +#elementor-element--promotion__dialog .dialog-button { + padding: 7px 25px; + font-size: 12px; +} + +.dialog-tooltip-widget { + position: absolute; + width: 300px; + z-index: 1; + background-color: #ffffff; + box-shadow: 0 2px 15px rgba(0, 0, 0, 0.3); + border-radius: 3px; +} +.dialog-tooltip-widget:after { + content: ""; + position: absolute; + top: 15px; + right: 100%; + transform: scaleY(0.7); + border: 10px solid transparent; + border-inline-end-color: #ffffff; +} +.dialog-tooltip-widget__title { + font-size: 14px; +} +.dialog-tooltip-widget .dialog-tooltip-header { + display: flex; + padding: 20px 20px 0; + color: #0C0D0E; + border-block-end: 1px solid #ffffff; + font-weight: 500; +} +.dialog-tooltip-widget .dialog-tooltip-header .eicon-pro-icon { + flex-grow: 1; + margin-inline-start: 10px; + font-size: 14px; + color: #93003f; +} +.dialog-tooltip-widget .dialog-tooltip-header .eicon-close { + cursor: pointer; + margin-inline-start: auto; + color: #9DA5AE; +} +.dialog-tooltip-widget .dialog-tooltip-message { + padding: 20px; +} +.dialog-tooltip-widget .dialog-tooltip-buttons-wrapper { + padding: 0 20px 20px 20px; + text-align: end; +} +.dialog-tooltip-widget .dialog-tooltip-button { + padding: 7px 25px; + font-size: 12px; +} +.dialog-tooltip-widget .dialog-tooltip-button::-moz-focus-inner { + border: 0; +} + +#elementor-panel-inner { + position: relative; + height: 100%; + display: flex; + flex-direction: column; + box-shadow: 0 0 5px 0 rgba(0, 0, 0, 0.1); +} + +#elementor-panel-content-wrapper { + position: relative; + width: 100%; + flex: 1; +} + +.elementor-panel-container { + clear: both; + padding-inline-start: 15px; + padding-inline-end: 15px; +} + +#elementor-panel-get-pro-elements .elementor-nerd-box-message { + margin-block-start: 10px; +} +#elementor-panel-get-pro-elements .elementor-nerd-box-icon { + margin-block-start: 20px; +} + +#elementor-panel-get-pro-elements-sticky { + position: sticky; + bottom: 0; + font-size: 14px; + font-weight: 400; + line-height: 1.6; + margin-block-end: -10px; +} +#elementor-panel-get-pro-elements-sticky .elementor-get-pro-sticky-message { + margin-top: -14px; + min-height: 40px; + display: block; + padding: 9px min(35px, 5%); + gap: 10px; + background-color: var(--e-a-color-white); + color: var(--e-a-color-black); + text-align: center; + box-shadow: 0px -10px 14px -6px rgba(0, 0, 0, 0.05); +} +#elementor-panel-get-pro-elements-sticky .elementor-get-pro-sticky-message a { + display: inline-block; + font-size: 13px; + font-weight: 500; + color: var(--e-a-btn-bg-accent); +} +#elementor-panel-get-pro-elements-sticky img { + margin-left: 17px; +} + +#elementor-panel-notice-wrapper .elementor-panel-notice { + width: 90%; + margin: 0 auto; + font-style: unset; + margin-block-end: 15px; +} +#elementor-panel-notice-wrapper .elementor-panel-notice a { + font-weight: bold; + font-style: italic; + border-block-end: 2px dotted var(--e-a-color-info); + display: inline-block; +} + +body.e-has-notification:not(.e-route-panel-menu) #elementor-panel-header-menu-button, +body.e-has-notification .elementor-panel-menu-item.elementor-panel-menu-item-notification-center .elementor-panel-menu-item-icon { + position: relative; +} +body.e-has-notification:not(.e-route-panel-menu) #elementor-panel-header-menu-button:after, +body.e-has-notification .elementor-panel-menu-item.elementor-panel-menu-item-notification-center .elementor-panel-menu-item-icon:after { + position: absolute; + content: ""; + display: block; + background: var(--e-a-color-primary); + border-radius: 50%; + width: 8px; + height: 8px; + top: 5px; + right: 5px; +} + +.media-modal.wp-core-ui { + color-scheme: light; + color: #515962; +} +.media-modal.wp-core-ui select { + width: initial; + padding-inline: 8px; +} +.media-modal.wp-core-ui fieldset { + padding: 0; + border: 0; +} + +.elementor-control { + --control-title-size: 12px; + position: relative; + padding: 0 20px 15px; +} +.elementor-control a { + font-weight: 500; + text-decoration: none; + border-block-end: 1px dotted transparent; + transition: all ease-in-out 0.3s; +} +.elementor-control a:hover { + border-block-end-color: inherit; +} +.elementor-control .elementor-control-content { + display: flex; + flex-direction: column; +} +.elementor-control .elementor-control-title { + font-size: var(--control-title-size); + line-height: 1; + margin-inline-end: 5px; +} +.elementor-control .elementor-control-title:empty { + display: none; +} +.elementor-control .elementor-control-spinner { + display: flex; + align-items: center; +} +.elementor-control.elementor-control-type-divider { + padding: 0; +} +.elementor-control.elementor-control-type-divider .elementor-control-content { + border-width: 0; + border-block-start: var(--e-a-border); + background-color: var(--e-a-bg-default); + height: 15px; +} +.elementor-control.elementor-control-separator-before { + padding-block-start: 15px; +} +.elementor-control.elementor-control-separator-before:before { + content: ""; + position: absolute; + height: 1px; + width: calc(100% - 40px); + top: 0; + left: 20px; + background-color: var(--e-a-border-color); +} +.elementor-control.elementor-control-separator-after:after { + content: ""; + position: absolute; + height: 1px; + width: calc(100% - 40px); + bottom: 0; + left: 20px; + background-color: var(--e-a-border-color); +} +.elementor-control.elementor-control-separator-after + .elementor-control-type-tabs ~ .elementor-control-separator-default, .elementor-control.elementor-control-separator-after:not(.elementor-hidden-control) ~ .elementor-control-separator-default { + padding-block-start: 15px; +} +.elementor-control.elementor-control-deprecated { + color: var(--e-a-color-warning); +} +.elementor-control.elementor-control-deprecated .elementor-control-field-description { + color: var(--e-a-color-warning); +} +.elementor-control.elementor-control-hidden-label > * > .elementor-control-title, .elementor-control.elementor-control-hidden-label > * > * > .elementor-control-title { + display: none; +} +.elementor-control.elementor-hidden-control { + display: none; +} +.elementor-control.elementor-control-type-heading .elementor-control-title { + font-weight: bold; + margin: 0; +} +body:not(.elementor-device-widescreen) .elementor-control.elementor-control-responsive-widescreen { + display: none; +} +body:not(.elementor-device-desktop) .elementor-control.elementor-control-responsive-desktop { + display: none; +} +body:not(.elementor-device-laptop) .elementor-control.elementor-control-responsive-laptop { + display: none; +} +body:not(.elementor-device-tablet_extra) .elementor-control.elementor-control-responsive-tablet_extra { + display: none; +} +body:not(.elementor-device-tablet) .elementor-control.elementor-control-responsive-tablet { + display: none; +} +body:not(.elementor-device-mobile_extra) .elementor-control.elementor-control-responsive-mobile_extra { + display: none; +} +body:not(.elementor-device-mobile) .elementor-control.elementor-control-responsive-mobile { + display: none; +} +.elementor-control-custom_css_pro .elementor-nerd-box-message, .elementor-control-custom_attributes_pro .elementor-nerd-box-message { + margin-block-start: 5px; +} + +.elementor-control.e-open .elementor-panel-heading-toggle .eicon:before, .elementor-control.elementor-active .elementor-panel-heading-toggle .eicon:before, +.elementor-panel-category.e-open .elementor-panel-heading-toggle .eicon:before, +.elementor-panel-category.elementor-active .elementor-panel-heading-toggle .eicon:before, +.elementor-panel-scheme-item.e-open .elementor-panel-heading-toggle .eicon:before, +.elementor-panel-scheme-item.elementor-active .elementor-panel-heading-toggle .eicon:before { + content: "\e92a"; +} +.elementor-control:not(.e-open):not(.elementor-active) .elementor-panel-heading-toggle .eicon:before, +.elementor-panel-category:not(.e-open):not(.elementor-active) .elementor-panel-heading-toggle .eicon:before, +.elementor-panel-scheme-item:not(.e-open):not(.elementor-active) .elementor-panel-heading-toggle .eicon:before { + content: "\e90a"; +} + +.elementor-panel-heading { + display: flex; + align-items: center; + gap: 5px; + height: 48px; + padding-inline: 20px; + width: 100%; + border: 0; + border-block-start: var(--e-a-border); + border-block-start-width: 2px; + background-color: transparent; + color: var(--e-a-color-txt-accent); + cursor: pointer; +} +.elementor-panel-heading-toggle { + width: 10px; + display: flex; + flex-direction: column; + align-items: center; +} +.elementor-panel-heading-title { + font-weight: bold; +} +.elementor-panel-heading-promotion { + margin-inline-start: auto; +} +.elementor-panel-heading-promotion a { + color: var(--e-a-color-accent-promotion); + font-family: "Roboto", sans-serif; + font-weight: 500; + font-size: 13px; +} +.elementor-panel-heading-promotion a i { + margin-inline-end: 4px; + font-size: 14px; +} +.elementor-panel-heading-promotion a:hover { + color: var(--e-a-color-accent-promotion); +} +.elementor-panel-heading:focus-visible { + color: var(--e-a-color-txt-hover); +} + +#elementor-controls .elementor-control-type-section:first-child .elementor-panel-heading { + border-block-start: none; +} + +.elementor-control-field { + display: flex; + align-items: center; +} + +.elementor-label-block > .elementor-control-content > .elementor-control-field { + flex-wrap: wrap; +} +.elementor-label-block > .elementor-control-content > .elementor-control-field > .elementor-control-input-wrapper { + width: 100%; + max-width: 100%; + margin-block-start: 10px; +} +.elementor-label-block > .elementor-control-content > .elementor-control-field > .elementor-control-input-wrapper > .elementor-choices label { + width: auto; + flex: 1 1 27px; + display: flex; + align-items: center; + justify-content: center; +} +.elementor-label-block.elementor-control-hidden-label:not(.elementor-control-dynamic) > .elementor-control-content > .elementor-control-field > .elementor-control-input-wrapper { + margin-block-start: 0; +} +.elementor-label-block.elementor-control-hidden-label.elementor-label-block > .elementor-control-content > .elementor-control-field > .elementor-control-input-wrapper { + margin-block-start: 0; +} + +.elementor-label-inline > .elementor-control-content > .elementor-control-field > .elementor-control-title { + flex-shrink: 0; + max-width: 60%; +} +.elementor-label-inline > .elementor-control-content > .elementor-control-field > .elementor-control-input-wrapper { + margin-inline-start: auto; +} + +.elementor-control-field-description { + margin-block-start: 10px; +} + +.elementor-group-control-attachment_alert .elementor-control-field-description { + margin-block-start: 0; +} + +.elementor-update-preview { + margin: 15px 15px 0; + display: flex; + align-items: center; +} + +.elementor-update-preview-button-wrapper { + flex-grow: 1; + text-align: end; +} + +.elementor-update-preview-button { + padding: 8px 15px; +} + +.elementor-control-direction-ltr input, +.elementor-control-direction-ltr textarea { + direction: ltr; +} +.elementor-control-direction-rtl input, +.elementor-control-direction-rtl textarea { + direction: rtl; +} + +.elementor-control-responsive-switchers { + --selected-option: 0; + --pointer-position: var(--selected-option); + position: relative; + width: 2.5em; + height: 2.5em; + margin: calc(-2.5em + 12px) 0; + margin-inline-end: 5px; +} +.elementor-control-responsive-switchers__holder { + position: absolute; + width: 100%; + top: 0; + background-color: var(--e-a-bg-default); + border-radius: var(--e-a-border-radius); + transition: 0.15s; + border: 1px solid transparent; +} +.elementor-control-responsive-switchers.elementor-responsive-switchers-open { + z-index: 11000; +} +.elementor-control-responsive-switchers.elementor-responsive-switchers-open .elementor-responsive-switcher { + height: 2.5em; + transform: scale(1); + opacity: 1; +} +.elementor-control-responsive-switchers.elementor-responsive-switchers-open .elementor-responsive-switcher:hover { + color: var(--e-a-color-primary-bold); +} +.elementor-control-responsive-switchers.elementor-responsive-switchers-open .elementor-control-responsive-switchers__holder { + box-shadow: var(--e-a-dropdown-shadow); +} + +.elementor-responsive-switcher { + all: unset; + display: flex; + align-items: center; + justify-content: center; + position: relative; + z-index: 2; + cursor: pointer; + height: 0; + width: 100%; + transform: scale(0); + opacity: 0; + transition: 0.15s; + font-size: 12px; + color: inherit; +} +.elementor-responsive-switcher:hover { + color: var(--e-a-color-primary-bold); +} + +.elementor-device-widescreen .elementor-responsive-switcher.elementor-responsive-switcher-widescreen { + height: 2.5em; + transform: scale(1); + opacity: 1; +} +.elementor-device-widescreen .elementor-responsive-switchers-open:not(:hover) .elementor-responsive-switcher.elementor-responsive-switcher-widescreen { + color: var(--e-a-color-primary-bold); +} + +.elementor-device-desktop .elementor-responsive-switcher.elementor-responsive-switcher-desktop { + height: 2.5em; + transform: scale(1); + opacity: 1; +} +.elementor-device-desktop .elementor-responsive-switchers-open:not(:hover) .elementor-responsive-switcher.elementor-responsive-switcher-desktop { + color: var(--e-a-color-primary-bold); +} + +.elementor-device-laptop .elementor-responsive-switcher.elementor-responsive-switcher-laptop { + height: 2.5em; + transform: scale(1); + opacity: 1; +} +.elementor-device-laptop .elementor-responsive-switchers-open:not(:hover) .elementor-responsive-switcher.elementor-responsive-switcher-laptop { + color: var(--e-a-color-primary-bold); +} + +.elementor-device-tablet_extra .elementor-responsive-switcher.elementor-responsive-switcher-tablet_extra { + height: 2.5em; + transform: scale(1); + opacity: 1; +} +.elementor-device-tablet_extra .elementor-responsive-switchers-open:not(:hover) .elementor-responsive-switcher.elementor-responsive-switcher-tablet_extra { + color: var(--e-a-color-primary-bold); +} + +.elementor-device-tablet .elementor-responsive-switcher.elementor-responsive-switcher-tablet { + height: 2.5em; + transform: scale(1); + opacity: 1; +} +.elementor-device-tablet .elementor-responsive-switchers-open:not(:hover) .elementor-responsive-switcher.elementor-responsive-switcher-tablet { + color: var(--e-a-color-primary-bold); +} + +.elementor-device-mobile_extra .elementor-responsive-switcher.elementor-responsive-switcher-mobile_extra { + height: 2.5em; + transform: scale(1); + opacity: 1; +} +.elementor-device-mobile_extra .elementor-responsive-switchers-open:not(:hover) .elementor-responsive-switcher.elementor-responsive-switcher-mobile_extra { + color: var(--e-a-color-primary-bold); +} + +.elementor-device-mobile .elementor-responsive-switcher.elementor-responsive-switcher-mobile { + height: 2.5em; + transform: scale(1); + opacity: 1; +} +.elementor-device-mobile .elementor-responsive-switchers-open:not(:hover) .elementor-responsive-switcher.elementor-responsive-switcher-mobile { + color: var(--e-a-color-primary-bold); +} + +.e-units-wrapper { + position: relative; + margin-inline-start: auto; +} +.e-units-wrapper .e-units-switcher { + cursor: pointer; + font-size: 10px; + padding: 0.5em; + margin: -0.5em 0; + transition: all ease-in-out 0.15s; +} +.e-units-wrapper .e-units-switcher:hover { + color: var(--e-a-color-primary-bold); + background-color: var(--e-a-bg-hover); + border-radius: var(--e-a-border-radius); +} +.e-units-wrapper .e-units-switcher:not([data-selected=custom]) i.eicon-edit { + display: none; +} +.e-units-wrapper .e-units-switcher[data-selected=custom] span { + display: none; +} +.e-units-wrapper .e-units-switcher i.eicon-angle-right { + transform: rotate(90deg); +} + +.e-units-choices input { + display: none; +} +.e-units-choices input:checked + label { + color: var(--e-a-color-primary-bold); +} +.e-units-choices label { + cursor: pointer; + display: block; +} +.e-units-choices { + display: none; + overflow: hidden; + max-height: 0; + position: absolute; + top: -0.8em; + left: -0.5em; + width: 2.5em; + text-align: center; + background-color: var(--e-a-bg-default); + border-radius: var(--e-a-border-radius); + box-shadow: var(--e-a-dropdown-shadow); + animation-timing-function: linear; + animation-delay: 0s; + animation-fill-mode: forwards; + z-index: 11000; +} +.e-units-choices .elementor-units-choices-label { + display: flex; + align-items: center; + height: 3em; + justify-content: center; + font-size: 10px; + transition: 0.15s; +} +.e-units-choices .elementor-units-choices-label:hover { + color: var(--e-a-color-primary-bold); +} +.e-units-choices.e-units-choices-open { + display: block; + animation-duration: 1s; + animation-name: e-units-choices-open; +} + +.e-units-custom input { + font-family: monospace; + font-size: 0.85em; +} + +@keyframes e-units-choices-open { + from { + max-height: 0; + } + to { + max-height: 100vh; + } +} +.elementor-control-alert { + display: flex; + flex-direction: column; + justify-content: flex-start; + align-items: flex-start; + gap: 8px; +} +.elementor-control-alert-heading { + font-weight: bold; +} + +.elementor-control-type-button .elementor-control-input-wrapper { + text-align: end; +} +.elementor-control-type-button .elementor-button { + width: auto; +} +.elementor-control-type-button .elementor-button.elementor-button-center { + display: block; + margin: 0 auto; +} + +.elementor-control-type-choose.elementor-label-block .elementor-choices { + width: 100%; +} + +.elementor-choices { + display: flex; + height: 27px; + line-height: 27px; + text-align: center; + border-spacing: 1px; + border-radius: var(--e-a-border-radius); + overflow: hidden; +} +.elementor-choices .elementor-choices-label { + border-block-start: var(--e-a-border-bold); + border-block-end: var(--e-a-border-bold); + border-inline-start: var(--e-a-border-bold); + border-inline-end: none; + font-size: 12px; + transition: var(--e-a-transition-hover); + cursor: pointer; + overflow: hidden; +} +.elementor-choices .elementor-choices-label:nth-child(2) { + border-start-start-radius: var(--e-a-border-radius); + border-end-start-radius: var(--e-a-border-radius); +} +.elementor-choices .elementor-choices-label:last-child { + border-inline-end: var(--e-a-border-bold); + border-start-end-radius: var(--e-a-border-radius); + border-end-end-radius: var(--e-a-border-radius); +} +.elementor-choices input { + display: none; +} +.elementor-choices input:hover + .elementor-choices-label { + background-color: var(--e-a-bg-hover); +} +.elementor-choices input.e-choose-placeholder + .elementor-choices-label, .elementor-choices input:checked + .elementor-choices-label { + background-color: var(--e-a-bg-active-bold); + color: var(--e-a-color-txt-accent); +} + +.elementor-label-inline .elementor-choices { + justify-content: flex-end; +} + +.elementor-control-type-color.e-control-global .pickr { + border-start-start-radius: 0; + border-start-end-radius: var(--e-a-border-radius); + border-end-start-radius: 0; + border-end-end-radius: var(--e-a-border-radius); + flex-shrink: 0; + border-color: var(--e-a-border-color-bold); + transition: var(--e-a-transition-hover); +} +.elementor-control-type-color.e-control-global .pickr:hover { + background-color: var(--e-a-bg-hover); +} +.elementor-control-type-color.e-control-global .e-global__popover-toggle:not(.e-global__popover-toggle--active) ~ .pickr { + background-color: var(--e-a-bg-active-bold); +} +.elementor-control-type-color .elementor-control-title { + flex-grow: 1; +} +.elementor-control-type-color .elementor-control-input-wrapper { + display: flex; + justify-content: flex-end; +} + +.elementor-group-control-css-filter .elementor-slider { + height: 6px; + box-shadow: 0 0 1px 1px inset rgba(0, 0, 0, 0.2); +} +.elementor-group-control-css-filter .elementor-control-content > .elementor-control-field > .elementor-control-input-wrapper { + margin-block-start: 0; + margin-block-end: 5px; +} + +.elementor-group-control-blur .elementor-slider { + background: url("../images/blur.png"); + background-size: cover; + background-position: center; +} + +.elementor-group-control-contrast .elementor-slider { + background: url("../images/contrast.png"); + background-size: 100% 100%; +} + +.elementor-group-control-hue .elementor-slider { + background-image: linear-gradient(to right, red, orange, yellow, greenyellow, limegreen, deepskyblue, blue, darkviolet 95%); +} + +.elementor-group-control-saturate .elementor-slider { + background-image: linear-gradient(to right, gray, red); +} + +.elementor-group-control-brightness .elementor-slider { + background-image: linear-gradient(to right, black, white); +} + +.elementor-control-responsive-switchers { + --selected-option: 0; + --pointer-position: var(--selected-option); + position: relative; + width: 2.5em; + height: 2.5em; + margin: calc(-2.5em + 12px) 0; + margin-inline-end: 5px; +} +.elementor-control-responsive-switchers__holder { + position: absolute; + width: 100%; + top: 0; + background-color: var(--e-a-bg-default); + border-radius: var(--e-a-border-radius); + transition: 0.15s; + border: 1px solid transparent; +} +.elementor-control-responsive-switchers.elementor-responsive-switchers-open { + z-index: 11000; +} +.elementor-control-responsive-switchers.elementor-responsive-switchers-open .elementor-responsive-switcher { + height: 2.5em; + transform: scale(1); + opacity: 1; +} +.elementor-control-responsive-switchers.elementor-responsive-switchers-open .elementor-responsive-switcher:hover { + color: var(--e-a-color-primary-bold); +} +.elementor-control-responsive-switchers.elementor-responsive-switchers-open .elementor-control-responsive-switchers__holder { + box-shadow: var(--e-a-dropdown-shadow); +} + +.elementor-responsive-switcher { + all: unset; + display: flex; + align-items: center; + justify-content: center; + position: relative; + z-index: 2; + cursor: pointer; + height: 0; + width: 100%; + transform: scale(0); + opacity: 0; + transition: 0.15s; + font-size: 12px; + color: inherit; +} +.elementor-responsive-switcher:hover { + color: var(--e-a-color-primary-bold); +} + +.elementor-device-widescreen .elementor-responsive-switcher.elementor-responsive-switcher-widescreen { + height: 2.5em; + transform: scale(1); + opacity: 1; +} +.elementor-device-widescreen .elementor-responsive-switchers-open:not(:hover) .elementor-responsive-switcher.elementor-responsive-switcher-widescreen { + color: var(--e-a-color-primary-bold); +} + +.elementor-device-desktop .elementor-responsive-switcher.elementor-responsive-switcher-desktop { + height: 2.5em; + transform: scale(1); + opacity: 1; +} +.elementor-device-desktop .elementor-responsive-switchers-open:not(:hover) .elementor-responsive-switcher.elementor-responsive-switcher-desktop { + color: var(--e-a-color-primary-bold); +} + +.elementor-device-laptop .elementor-responsive-switcher.elementor-responsive-switcher-laptop { + height: 2.5em; + transform: scale(1); + opacity: 1; +} +.elementor-device-laptop .elementor-responsive-switchers-open:not(:hover) .elementor-responsive-switcher.elementor-responsive-switcher-laptop { + color: var(--e-a-color-primary-bold); +} + +.elementor-device-tablet_extra .elementor-responsive-switcher.elementor-responsive-switcher-tablet_extra { + height: 2.5em; + transform: scale(1); + opacity: 1; +} +.elementor-device-tablet_extra .elementor-responsive-switchers-open:not(:hover) .elementor-responsive-switcher.elementor-responsive-switcher-tablet_extra { + color: var(--e-a-color-primary-bold); +} + +.elementor-device-tablet .elementor-responsive-switcher.elementor-responsive-switcher-tablet { + height: 2.5em; + transform: scale(1); + opacity: 1; +} +.elementor-device-tablet .elementor-responsive-switchers-open:not(:hover) .elementor-responsive-switcher.elementor-responsive-switcher-tablet { + color: var(--e-a-color-primary-bold); +} + +.elementor-device-mobile_extra .elementor-responsive-switcher.elementor-responsive-switcher-mobile_extra { + height: 2.5em; + transform: scale(1); + opacity: 1; +} +.elementor-device-mobile_extra .elementor-responsive-switchers-open:not(:hover) .elementor-responsive-switcher.elementor-responsive-switcher-mobile_extra { + color: var(--e-a-color-primary-bold); +} + +.elementor-device-mobile .elementor-responsive-switcher.elementor-responsive-switcher-mobile { + height: 2.5em; + transform: scale(1); + opacity: 1; +} +.elementor-device-mobile .elementor-responsive-switchers-open:not(:hover) .elementor-responsive-switcher.elementor-responsive-switcher-mobile { + color: var(--e-a-color-primary-bold); +} + +.e-units-wrapper { + position: relative; + margin-inline-start: auto; +} +.e-units-wrapper .e-units-switcher { + cursor: pointer; + font-size: 10px; + padding: 0.5em; + margin: -0.5em 0; + transition: all ease-in-out 0.15s; +} +.e-units-wrapper .e-units-switcher:hover { + color: var(--e-a-color-primary-bold); + background-color: var(--e-a-bg-hover); + border-radius: var(--e-a-border-radius); +} +.e-units-wrapper .e-units-switcher:not([data-selected=custom]) i.eicon-edit { + display: none; +} +.e-units-wrapper .e-units-switcher[data-selected=custom] span { + display: none; +} +.e-units-wrapper .e-units-switcher i.eicon-angle-right { + transform: rotate(90deg); +} + +.e-units-choices input { + display: none; +} +.e-units-choices input:checked + label { + color: var(--e-a-color-primary-bold); +} +.e-units-choices label { + cursor: pointer; + display: block; +} +.e-units-choices { + display: none; + overflow: hidden; + max-height: 0; + position: absolute; + top: -0.8em; + left: -0.5em; + width: 2.5em; + text-align: center; + background-color: var(--e-a-bg-default); + border-radius: var(--e-a-border-radius); + box-shadow: var(--e-a-dropdown-shadow); + animation-timing-function: linear; + animation-delay: 0s; + animation-fill-mode: forwards; + z-index: 11000; +} +.e-units-choices .elementor-units-choices-label { + display: flex; + align-items: center; + height: 3em; + justify-content: center; + font-size: 10px; + transition: 0.15s; +} +.e-units-choices .elementor-units-choices-label:hover { + color: var(--e-a-color-primary-bold); +} +.e-units-choices.e-units-choices-open { + display: block; + animation-duration: 1s; + animation-name: e-units-choices-open; +} + +.e-units-custom input { + font-family: monospace; + font-size: 0.85em; +} + +@keyframes e-units-choices-open { + from { + max-height: 0; + } + to { + max-height: 100vh; + } +} +.elementor-control-type-dimensions .elementor-control-dimensions { + display: flex; +} +.elementor-control-type-dimensions li { + flex: 1; + transition: flex-grow 0.3s ease-in-out; +} +.elementor-control-type-dimensions li input, +.elementor-control-type-dimensions li .elementor-link-dimensions { + display: block; + text-align: center; + width: 100%; + height: 27px; +} +.elementor-control-type-dimensions li input { + border-inline-start: none; + border-radius: 0; + padding: var(--e-a-border-radius); +} +.elementor-control-type-dimensions li input:focus { + border-inline-start: var(--e-a-border-bold); + margin-inline-start: -1px; + width: calc(100% + 1px); +} +.elementor-control-type-dimensions li input:focus + .elementor-control-dimension-label { + color: var(--e-a-color-txt); +} +.elementor-control-type-dimensions li .elementor-link-dimensions { + border: var(--e-a-border-bold); + border-inline-start: none; + background-color: var(--e-a-bg-default); + padding: 0; + outline: none; + border-start-start-radius: 0; + border-start-end-radius: var(--e-a-border-radius); + border-end-start-radius: 0; + border-end-end-radius: var(--e-a-border-radius); + cursor: pointer; +} +.elementor-control-type-dimensions li:first-child input { + border-inline-start: 1px solid var(--e-a-border-color-bold); + border-start-start-radius: var(--e-a-border-radius); + border-start-end-radius: 0; + border-end-start-radius: var(--e-a-border-radius); + border-end-end-radius: 0; +} +.elementor-control-type-dimensions li:first-child input:focus { + border-color: var(--e-a-border-color-focus); + margin-inline-start: 0; + width: 100%; +} +.elementor-control-type-dimensions li:last-child { + max-width: 27px; +} +.elementor-control-type-dimensions.e-units-custom li.elementor-control-dimension:focus-within { + flex: 2.5; +} +.elementor-control-type-dimensions .elementor-control-dimension-label { + color: var(--e-a-color-txt-muted); + display: block; + text-align: center; + font-size: 9px; + padding-block-start: 5px; +} +.elementor-control-type-dimensions .elementor-link-dimensions.unlinked { + background-color: var(--e-a-bg-default); +} +.elementor-control-type-dimensions .elementor-link-dimensions.unlinked .elementor-linked { + display: none; +} +.elementor-control-type-dimensions .elementor-link-dimensions:not(.unlinked) { + background-color: var(--e-a-bg-active-bold); + color: var(--e-a-color-txt-accent); + border-color: var(--e-a-border-color-bold); +} +.elementor-control-type-dimensions .elementor-link-dimensions:not(.unlinked) .elementor-unlinked { + display: none; +} + +.elementor-control-responsive-switchers { + --selected-option: 0; + --pointer-position: var(--selected-option); + position: relative; + width: 2.5em; + height: 2.5em; + margin: calc(-2.5em + 12px) 0; + margin-inline-end: 5px; +} +.elementor-control-responsive-switchers__holder { + position: absolute; + width: 100%; + top: 0; + background-color: var(--e-a-bg-default); + border-radius: var(--e-a-border-radius); + transition: 0.15s; + border: 1px solid transparent; +} +.elementor-control-responsive-switchers.elementor-responsive-switchers-open { + z-index: 11000; +} +.elementor-control-responsive-switchers.elementor-responsive-switchers-open .elementor-responsive-switcher { + height: 2.5em; + transform: scale(1); + opacity: 1; +} +.elementor-control-responsive-switchers.elementor-responsive-switchers-open .elementor-responsive-switcher:hover { + color: var(--e-a-color-primary-bold); +} +.elementor-control-responsive-switchers.elementor-responsive-switchers-open .elementor-control-responsive-switchers__holder { + box-shadow: var(--e-a-dropdown-shadow); +} + +.elementor-responsive-switcher { + all: unset; + display: flex; + align-items: center; + justify-content: center; + position: relative; + z-index: 2; + cursor: pointer; + height: 0; + width: 100%; + transform: scale(0); + opacity: 0; + transition: 0.15s; + font-size: 12px; + color: inherit; +} +.elementor-responsive-switcher:hover { + color: var(--e-a-color-primary-bold); +} + +.elementor-device-widescreen .elementor-responsive-switcher.elementor-responsive-switcher-widescreen { + height: 2.5em; + transform: scale(1); + opacity: 1; +} +.elementor-device-widescreen .elementor-responsive-switchers-open:not(:hover) .elementor-responsive-switcher.elementor-responsive-switcher-widescreen { + color: var(--e-a-color-primary-bold); +} + +.elementor-device-desktop .elementor-responsive-switcher.elementor-responsive-switcher-desktop { + height: 2.5em; + transform: scale(1); + opacity: 1; +} +.elementor-device-desktop .elementor-responsive-switchers-open:not(:hover) .elementor-responsive-switcher.elementor-responsive-switcher-desktop { + color: var(--e-a-color-primary-bold); +} + +.elementor-device-laptop .elementor-responsive-switcher.elementor-responsive-switcher-laptop { + height: 2.5em; + transform: scale(1); + opacity: 1; +} +.elementor-device-laptop .elementor-responsive-switchers-open:not(:hover) .elementor-responsive-switcher.elementor-responsive-switcher-laptop { + color: var(--e-a-color-primary-bold); +} + +.elementor-device-tablet_extra .elementor-responsive-switcher.elementor-responsive-switcher-tablet_extra { + height: 2.5em; + transform: scale(1); + opacity: 1; +} +.elementor-device-tablet_extra .elementor-responsive-switchers-open:not(:hover) .elementor-responsive-switcher.elementor-responsive-switcher-tablet_extra { + color: var(--e-a-color-primary-bold); +} + +.elementor-device-tablet .elementor-responsive-switcher.elementor-responsive-switcher-tablet { + height: 2.5em; + transform: scale(1); + opacity: 1; +} +.elementor-device-tablet .elementor-responsive-switchers-open:not(:hover) .elementor-responsive-switcher.elementor-responsive-switcher-tablet { + color: var(--e-a-color-primary-bold); +} + +.elementor-device-mobile_extra .elementor-responsive-switcher.elementor-responsive-switcher-mobile_extra { + height: 2.5em; + transform: scale(1); + opacity: 1; +} +.elementor-device-mobile_extra .elementor-responsive-switchers-open:not(:hover) .elementor-responsive-switcher.elementor-responsive-switcher-mobile_extra { + color: var(--e-a-color-primary-bold); +} + +.elementor-device-mobile .elementor-responsive-switcher.elementor-responsive-switcher-mobile { + height: 2.5em; + transform: scale(1); + opacity: 1; +} +.elementor-device-mobile .elementor-responsive-switchers-open:not(:hover) .elementor-responsive-switcher.elementor-responsive-switcher-mobile { + color: var(--e-a-color-primary-bold); +} + +.e-units-wrapper { + position: relative; + margin-inline-start: auto; +} +.e-units-wrapper .e-units-switcher { + cursor: pointer; + font-size: 10px; + padding: 0.5em; + margin: -0.5em 0; + transition: all ease-in-out 0.15s; +} +.e-units-wrapper .e-units-switcher:hover { + color: var(--e-a-color-primary-bold); + background-color: var(--e-a-bg-hover); + border-radius: var(--e-a-border-radius); +} +.e-units-wrapper .e-units-switcher:not([data-selected=custom]) i.eicon-edit { + display: none; +} +.e-units-wrapper .e-units-switcher[data-selected=custom] span { + display: none; +} +.e-units-wrapper .e-units-switcher i.eicon-angle-right { + transform: rotate(90deg); +} + +.e-units-choices input { + display: none; +} +.e-units-choices input:checked + label { + color: var(--e-a-color-primary-bold); +} +.e-units-choices label { + cursor: pointer; + display: block; +} +.e-units-choices { + display: none; + overflow: hidden; + max-height: 0; + position: absolute; + top: -0.8em; + left: -0.5em; + width: 2.5em; + text-align: center; + background-color: var(--e-a-bg-default); + border-radius: var(--e-a-border-radius); + box-shadow: var(--e-a-dropdown-shadow); + animation-timing-function: linear; + animation-delay: 0s; + animation-fill-mode: forwards; + z-index: 11000; +} +.e-units-choices .elementor-units-choices-label { + display: flex; + align-items: center; + height: 3em; + justify-content: center; + font-size: 10px; + transition: 0.15s; +} +.e-units-choices .elementor-units-choices-label:hover { + color: var(--e-a-color-primary-bold); +} +.e-units-choices.e-units-choices-open { + display: block; + animation-duration: 1s; + animation-name: e-units-choices-open; +} + +.e-units-custom input { + font-family: monospace; + font-size: 0.85em; +} + +@keyframes e-units-choices-open { + from { + max-height: 0; + } + to { + max-height: 100vh; + } +} +.elementor-control-type-gaps .elementor-control-gaps { + display: flex; +} +.elementor-control-type-gaps li { + flex: 1; + transition: flex-grow 0.3s ease-in-out; +} +.elementor-control-type-gaps li input, +.elementor-control-type-gaps li .elementor-link-gaps { + display: block; + text-align: center; + width: 100%; + height: 27px; +} +.elementor-control-type-gaps li input { + border-inline-start: none; + border-radius: 0; + padding: var(--e-a-border-radius); +} +.elementor-control-type-gaps li input:focus { + border-inline-start: var(--e-a-border-bold); + margin-inline-start: -1px; + width: calc(100% + 1px); +} +.elementor-control-type-gaps li input:focus + .elementor-control-gap-label { + color: var(--e-a-color-txt); +} +.elementor-control-type-gaps li .elementor-link-gaps { + border: var(--e-a-border-bold); + border-inline-start: none; + background-color: var(--e-a-bg-default); + padding: 0; + outline: none; + border-start-start-radius: 0; + border-start-end-radius: var(--e-a-border-radius); + border-end-start-radius: 0; + border-end-end-radius: var(--e-a-border-radius); + cursor: pointer; +} +.elementor-control-type-gaps li:first-child input { + border-inline-start: 1px solid var(--e-a-border-color-bold); + border-start-start-radius: var(--e-a-border-radius); + border-start-end-radius: 0; + border-end-start-radius: var(--e-a-border-radius); + border-end-end-radius: 0; +} +.elementor-control-type-gaps li:first-child input:focus { + border-color: var(--e-a-border-color-focus); + margin-inline-start: 0; + width: 100%; +} +.elementor-control-type-gaps li:last-child { + max-width: 27px; +} +.elementor-control-type-gaps.e-units-custom li.elementor-control-gap:focus-within { + flex: 2.5; +} +.elementor-control-type-gaps .elementor-control-gap-label { + color: var(--e-a-color-txt-muted); + display: block; + text-align: center; + font-size: 9px; + padding-block-start: 5px; +} +.elementor-control-type-gaps .elementor-link-gaps.unlinked { + background-color: var(--e-a-bg-default); +} +.elementor-control-type-gaps .elementor-link-gaps.unlinked .elementor-linked { + display: none; +} +.elementor-control-type-gaps .elementor-link-gaps:not(.unlinked) { + background-color: var(--e-a-bg-active-bold); + color: var(--e-a-color-txt-accent); + border-color: var(--e-a-border-color-bold); +} +.elementor-control-type-gaps .elementor-link-gaps:not(.unlinked) .elementor-unlinked { + display: none; +} + +.elementor-control-type-icons .elementor-control-media__preview > * { + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); +} +.elementor-control-type-icons .elementor-control-media__preview i { + font-size: 70px; +} +.elementor-control-type-icons .elementor-control-media__preview svg { + height: 75%; +} +.elementor-control-type-icons .elementor-control-icons--inline__svg i.eicon-upload { + font-size: 15px; +} + +.elementor-control-type-gallery .elementor-control-media__content { + border: var(--e-a-border-bold); + border-radius: 3px; +} +.elementor-control-type-gallery .elementor-control-gallery-status { + font-size: 12px; + height: 27px; + padding-inline-start: 10px; + border-block-end: var(--e-a-border-bold); + display: flex; +} +.elementor-control-type-gallery .elementor-control-gallery-status > * { + display: flex; + align-items: center; +} +.elementor-control-type-gallery .elementor-control-gallery-status-title { + flex-grow: 1; +} +.elementor-control-type-gallery .elementor-control-gallery-content { + position: relative; + overflow: hidden; +} +.elementor-control-type-gallery .elementor-control-gallery-thumbnails { + display: grid; + grid-template-columns: repeat(auto-fill, minmax(48px, 1fr)); + grid-gap: 10px; + cursor: pointer; + padding: 10px; +} +.elementor-control-type-gallery .elementor-control-gallery-thumbnails:hover + .elementor-control-gallery-edit, .elementor-control-type-gallery .elementor-control-gallery-thumbnails:focus + .elementor-control-gallery-edit { + opacity: 1; +} +.elementor-control-type-gallery .elementor-control-gallery-thumbnail { + width: 48px; + height: 48px; + -o-object-fit: cover; + object-fit: cover; + border: var(--e-a-border); +} +.elementor-control-type-gallery .elementor-control-gallery-thumbnail + .unoptimized__image { + outline: 2px solid var(--e-a-btn-bg-danger-active); + opacity: 0.6; +} +.elementor-control-type-gallery .elementor-control-gallery-edit { + position: absolute; + top: 0; + bottom: 0; + left: 0; + right: 0; + background-color: rgba(0, 0, 0, 0.2); + padding: 10px; + font-size: 11px; + transition: all 0.3s ease-in-out; + pointer-events: none; + cursor: pointer; + opacity: 0; +} +.elementor-control-type-gallery .elementor-control-gallery-edit span { + position: absolute; + top: 10px; + right: 10px; + width: 21px; + height: 21px; + color: var(--e-a-color-white); + background-color: rgba(0, 0, 0, 0.5); + box-shadow: 0 0 7px 0 rgba(0, 0, 0, 0.2); + transition: var(--e-a-transition-hover); +} +.elementor-control-type-gallery .elementor-control-gallery-edit span i { + font-size: 11px; + padding: 5px; +} +.elementor-control-type-gallery .elementor-control-gallery-edit span:hover { + background-color: rgba(0, 0, 0, 0.6); +} +.elementor-control-type-gallery .elementor-control-gallery-add { + width: 48px; + height: 48px; + font-size: 14px; +} +.elementor-control-type-gallery .elementor-control-gallery-add i { + margin: 0; +} +.elementor-control-type-gallery.elementor-gallery-empty .elementor-control-gallery-clear, +.elementor-control-type-gallery.elementor-gallery-empty .elementor-control-gallery-thumbnails, +.elementor-control-type-gallery.elementor-gallery-empty .elementor-control-gallery-edit { + display: none; +} +.elementor-control-type-gallery.elementor-gallery-empty .elementor-control-gallery-content { + padding: 10px; +} +.elementor-control-type-gallery.elementor-gallery-has-images .elementor-control-gallery-add { + display: none; +} +.elementor-control-type-gallery.elementor-control-dynamic .elementor-control-gallery-clear { + border-inline-start: var(--e-a-border); +} +.elementor-control-type-gallery .elementor-control-gallery-clear { + color: currentColor; + background-color: transparent; + border: none; + cursor: pointer; + justify-content: center; +} +.elementor-control-type-gallery .elementor-control-gallery-clear:hover, .elementor-control-type-gallery .elementor-control-gallery-clear:focus { + color: var(--e-a-color-danger); +} +.elementor-control-type-gallery .elementor-control-dynamic-switcher { + border-width: 0; + border-inline-start-width: 1px; + border-block-end-width: 1px; + border-radius: 0; +} + +.e-global__popover { + width: 288px; + z-index: 1; + font-size: 12px; + padding-inline-start: 10px; +} +.e-global__popover-toggle { + border: var(--e-a-border-bold); + border-inline-end: 0; + border-start-start-radius: 3px; + border-start-end-radius: 0; + border-end-start-radius: 3px; + border-end-end-radius: 0; + display: flex; + align-items: center; + justify-content: center; + cursor: pointer; + transition: var(--e-a-transition-hover); +} +.e-global__popover-toggle:hover { + background-color: var(--e-a-bg-hover); +} +.e-global__popover-toggle--active { + color: var(--e-a-color-primary-bold); + background-color: var(--e-a-bg-active-bold); +} +.e-global__popover-container { + box-shadow: var(--e-a-popover-shadow); + border-radius: var(--e-a-border-radius); + background-color: var(--e-a-bg-default); +} +.e-global__popover-title { + padding: 15px 20px; + font-weight: 500; + border-block-end: var(--e-a-border); + display: flex; +} +.e-global__popover-title > i { + margin-inline-end: 5px; +} +.e-global__popover-title-text { + flex-grow: 1; +} +.e-global__popover-info { + margin-inline-end: 10px; + display: inline-block; +} +.e-global__popover-info-tooltip { + width: 270px; + z-index: 1; + background-color: rgba(0, 0, 0, 0.9); + color: var(--e-a-color-white); + padding: 20px; + border-radius: 3px; +} +.e-global__popover-info-tooltip:after { + content: ""; + position: absolute; + bottom: -17px; + left: 16px; + border: 10px solid transparent; + border-block-start-color: rgba(0, 0, 0, 0.9); +} +.e-global__popover-info i { + font-size: 13px; +} +.e-global__preview-items-container { + max-height: 260px; + overflow-y: auto; + padding: 5px 0; +} +.e-global__preview-items-container::-webkit-scrollbar { + width: 7px; +} +.e-global__preview-items-container::-webkit-scrollbar-thumb { + background-color: #BABFC5; + border-radius: 10px; +} +.e-global__manage-button { + font-weight: 500; + cursor: pointer; +} +.e-global__typography { + padding-block: 10px; + padding-inline: 35px 20px; + white-space: nowrap; + text-overflow: ellipsis; + overflow: hidden; +} +.e-global__typography.e-global__preview-item--selected:before { + font-family: "eicons"; + font-size: 13px; + content: "\e90e"; + position: absolute; + transform: translateY(-50%); + top: 50%; + inset-inline-start: 13px; +} +.e-global__color { + padding: 10px 20px; + display: flex; + align-items: center; +} +.e-global__color-preview-container { + height: 20px; + width: 20px; + border-radius: 3px; + border: 1px solid rgba(0, 0, 0, 0.1); + margin-inline-end: 10px; + flex-shrink: 0; + position: relative; +} +.e-global__color-preview-color, .e-global__color-preview-transparent-bg { + border-radius: 3px; + height: 100%; + width: 100%; + position: absolute; + top: 0; + left: 0; +} +.e-global__color-preview-transparent-bg { + background-image: linear-gradient(45deg, var(--e-a-border-color-bold) 25%, transparent 0, transparent 75%, var(--e-a-border-color-bold) 0, var(--e-a-border-color-bold)), linear-gradient(45deg, var(--e-a-border-color-bold) 25%, transparent 0, transparent 75%, var(--e-a-border-color-bold) 0, var(--e-a-border-color-bold)); + background-size: 12px 12px; + background-position: 0 0, calc(12px / 2) calc(12px / 2); +} +.e-global__color-title { + flex-grow: 1; + white-space: nowrap; + text-overflow: ellipsis; + overflow: hidden; + padding-inline-end: 10px; +} +.e-global__color-hex { + font-size: 10px; + color: var(--e-a-color-txt-muted); +} +.e-global__color .pcr-button { + background-color: var(--e-a-bg-default); +} +.e-global__color.e-global__preview-item--selected .e-global__color-preview-container { + display: flex; + justify-content: center; + align-items: center; + color: var(--e-a-color-white); +} +.e-global__color.e-global__preview-item--selected .e-global__color-preview-container:before { + font-family: "eicons"; + font-size: 13px; + content: "\e90e"; + text-shadow: 0 0 1px #000; + z-index: 1; +} +.e-global__preview-item { + cursor: pointer; + position: relative; +} +.e-global__preview-item:hover { + background-color: var(--e-a-bg-hover); +} +.e-global__confirm-delete i, .e-global__confirm-message-text i { + color: var(--e-a-color-warning); +} +.e-global__confirm-input-wrapper { + display: flex; + align-items: center; + border: var(--e-a-border); + border-radius: var(--e-a-border-radius); + margin: 15px 0; + padding: 2px; +} +.e-global__confirm-input-wrapper input { + font-family: var(--e-a-font-family); + font-size: 12px; + padding: 2px; + border: 0; +} + +.e-control-global .elementor-control-input-wrapper { + display: flex; + justify-content: flex-end; + max-width: 135px; + width: 100%; +} +.e-control-global.elementor-control .elementor-control-input-wrapper { + display: flex; + flex-direction: row; + align-items: stretch; +} +.e-control-global .elementor-control-spinner { + margin-inline-end: 4px; +} + +.elementor-control-type-hidden { + display: none !important; +} + +.elementor-control-type-icon .select2-selection__rendered .eicon { + margin-inline-end: 3px; +} + +.elementor-control-type-image_dimensions .elementor-control-field-description { + margin: 0 0 15px; + line-height: 1.4; +} +.elementor-control-type-image_dimensions .elementor-control-input-wrapper { + display: flex; + align-items: flex-start; +} +.elementor-control-type-image_dimensions .elementor-image-dimensions-field { + width: 65px; +} +.elementor-control-type-image_dimensions .elementor-image-dimensions-field input:focus + .elementor-image-dimensions-field-description { + color: var(--e-a-color-txt); +} +.elementor-control-type-image_dimensions .elementor-image-dimensions-separator { + width: 20px; + text-align: center; + padding-block-start: 4px; +} +.elementor-control-type-image_dimensions .elementor-image-dimensions-field-description { + display: block; + margin-block-start: 5px; + color: var(--e-a-color-txt-disabled); + font-size: 10px; + text-align: center; +} +.elementor-control-type-image_dimensions .elementor-image-dimensions-apply-button { + margin-inline-start: auto; +} + +.elementor-control-media.e-media-empty .elementor-control-media-area .elementor-control-media__remove, .elementor-control-media.e-media-empty .elementor-control-media-area .elementor-control-media__content__remove { + display: none; +} +.elementor-control-media.e-media-empty-placeholder .e-control-image-size { + display: none; +} +.elementor-control-media:not(.e-media-empty) .elementor-control-media__content__upload-button { + display: none; +} +.elementor-control-media .eicon-plus-circle { + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + color: var(--e-a-color-white); + font-size: 20px; +} +.elementor-control-media__content__upload-button { + background-color: var(--e-a-bg-active-bold); +} +.elementor-control-media__preview { + height: 100%; + background-size: cover; + background-position: center; + padding-block-end: 42.8571%; +} +.elementor-control-media-area { + background-image: linear-gradient(45deg, var(--e-a-border-color-bold) 25%, transparent 0, transparent 75%, var(--e-a-border-color-bold) 0, var(--e-a-border-color-bold)), linear-gradient(45deg, var(--e-a-border-color-bold) 25%, transparent 0, transparent 75%, var(--e-a-border-color-bold) 0, var(--e-a-border-color-bold)); + background-size: 16px 16px; + background-position: 0 0, calc(16px / 2) calc(16px / 2); + background-color: var(--e-a-bg-default); + border: var(--e-a-border-bold); + aspect-ratio: 21/9; +} +.elementor-control-media-area:not(:hover) .elementor-control-media__remove { + display: none; +} +.elementor-control-media-area .eicon-video-camera { + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + color: rgba(255, 255, 255, 0.7); + font-size: 21px; +} +.elementor-control-media .elementor-control-media__content { + aspect-ratio: 21/9; + position: relative; + cursor: pointer; + overflow: hidden; +} +.elementor-control-media .elementor-control-media__content:hover:after { + content: ""; + position: absolute; + top: 0; + bottom: 0; + left: 0; + right: 0; + background-color: rgba(0, 0, 0, 0.2); + pointer-events: none; +} +.elementor-control-media .elementor-control-media__content:not(:hover) .elementor-control-media__tools { + bottom: -30px; +} +.elementor-control-media__content { + transition: all 0.2s ease-in-out; +} +.elementor-control-media__tools { + position: absolute; + bottom: 0; + left: 0; + right: 0; + height: 27px; + transition: all 0.2s ease-in-out; +} +.elementor-control-media__tools > *:not(:first-child) { + margin-inline-start: 1px; +} +.elementor-control-media__tool { + display: flex; + align-items: center; + justify-content: center; + flex-grow: 1; + color: var(--e-a-color-white); + background-color: rgba(0, 0, 0, 0.9); + font-size: 11px; + transition: var(--e-a-transition-hover); +} +.elementor-control-media__tool:hover { + background-color: rgba(0, 0, 0, 0.8); +} +.elementor-control-media__remove { + display: flex; + align-items: center; + justify-content: center; + transition: all 0.3s ease-in-out; +} +.elementor-control-media__content__remove { + position: absolute; + z-index: 1; + top: 10px; + right: 10px; + width: 20px; + height: 20px; + font-size: 11px; + color: var(--e-a-color-white); + background-color: rgba(0, 0, 0, 0.5); + border-radius: var(--e-border-radius); + box-shadow: 0 0 7px 0 rgba(0, 0, 0, 0.2); + transition: var(--e-a-transition-hover); +} +.elementor-control-media__content__remove:hover { + background-color: rgba(0, 0, 0, 0.6); +} +.elementor-control-media.e-media-empty .elementor-control-file-area { + display: none; +} +.elementor-control-media__warnings:empty { + display: none; +} +.elementor-control-media__warnings:not(:empty) { + margin-block-start: 10px; +} +.elementor-control-media__file { + display: flex; + justify-content: space-between; + align-items: center; + width: 100%; + margin-block-start: 10px; + border: var(--e-a-border); +} +.elementor-control-media__file__content { + padding-inline-start: 5px; + font-size: 12px; +} +.elementor-control-media__file__content__label { + color: #9DA5AE; +} +.elementor-control-media__file__content__info { + display: flex; + align-items: center; + font-weight: 500; +} +.elementor-control-media__file__content__info__icon { + margin-inline-end: 5px; +} +.elementor-control-media__file__controls { + display: flex; + border-inline-start: var(--e-a-border); +} +.elementor-control-media__file__controls__upload-button, .elementor-control-media__file__controls__remove { + width: 27px; + height: 27px; + cursor: pointer; + align-items: center; +} +.elementor-control-media__file__controls__upload-button { + display: flex; + justify-content: center; +} +.elementor-control-media__file__controls__remove { + border-inline-end: var(--e-a-border); +} +.elementor-control-media:not(.e-media-empty) .elementor-control-media__file__content__label { + display: none; +} +.elementor-control-media.e-media-empty .elementor-control-media__file__content__info { + display: none; +} +.elementor-control-media.e-media-empty .elementor-control-media__file__controls__remove { + display: none; +} +.elementor-control-media .elementor-control-dynamic-switcher { + border: none; + border-radius: 0; + background-color: rgba(0, 0, 0, 0.9); + color: var(--e-a-color-white); +} +.elementor-control-media .elementor-control-dynamic-switcher:hover { + background-color: rgba(0, 0, 0, 0.8); + color: var(--e-a-color-white); +} +.elementor-control-media .e-control-image-size { + display: flex; + flex-direction: column; + width: 100%; + padding-block-start: 20px; +} +.elementor-control-media .e-control-image-size .elementor-control-input-wrapper { + margin-inline-start: auto; +} + +.elementor-control-type-media.elementor-control-dynamic-value .elementor-control-input-wrapper { + border: none; +} + +.elementor-control:not(.elementor-control-type-icons) .elementor-control-media__preview { + background-color: var(--e-a-bg-active-bold); +} + +.elementor-control-notice { + display: flex; + justify-content: flex-start; + align-items: flex-start; + gap: 8px; + padding: 16px; + border-radius: 3px; + border: 1px solid var(--notice-control-color, var(--e-a-color-txt)); + color: var(--e-a-color-txt); + font-size: 12px; + font-weight: 400; + line-height: 1.5; + text-align: start; + margin-block-start: 10px; +} +.elementor-control-notice-type-info { + --notice-control-color: var(--e-a-color-info); +} +.elementor-control-notice-type-success { + --notice-control-color: var(--e-a-color-success); +} +.elementor-control-notice-type-warning { + --notice-control-color: var(--e-a-color-warning); +} +.elementor-control-notice-type-danger { + --notice-control-color: var(--e-a-color-danger); +} +.elementor-control-notice-icon { + flex-basis: 18px; + color: var(--notice-control-color); +} +.elementor-control-notice-main { + display: flex; + flex-direction: column; + justify-content: flex-start; + align-items: flex-start; + gap: 6px; + flex: 1; +} +.elementor-control-notice-main-heading { + font-weight: 700; + font-style: italic; +} +.elementor-control-notice-main-content { + font-style: italic; + line-height: 1.5; +} +.elementor-control-notice-main-actions { + display: flex; + gap: 10px; + padding-block-start: 8px; +} +.elementor-control-notice-main a { + color: inherit; + font-weight: 700; + cursor: pointer; +} +.elementor-control-notice-main a:hover, .elementor-control-notice-main a:focus { + color: inherit; +} +.elementor-control-notice-dismiss { + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + background-color: transparent; + border: 0; + padding: 0; + margin: 0; + cursor: pointer; +} + +.elementor-control-type-popover_toggle input { + display: none; +} +.elementor-control-type-popover_toggle label { + cursor: pointer; +} +.elementor-control-type-popover_toggle .elementor-control-input-wrapper { + display: flex; + flex-direction: row-reverse; + align-items: center; +} +.elementor-control-type-popover_toggle .elementor-control-popover-toggle-toggle:checked + .elementor-control-popover-toggle-toggle-label { + color: var(--e-a-color-txt-active); + background-color: var(--e-a-bg-active-bold); +} +.elementor-control-type-popover_toggle .elementor-control-popover-toggle-toggle:not(:checked) ~ .elementor-control-popover-toggle-reset-label { + display: none; +} +.elementor-control-type-popover_toggle .elementor-control-popover-toggle-toggle-label { + height: 27px; + display: inline-flex; + align-items: center; + justify-content: center; + border-radius: var(--e-a-border-radius); + border: var(--e-a-border-bold); + transition: var(--e-a-transition-hover); +} +.elementor-control-type-popover_toggle .elementor-control-popover-toggle-toggle-label:hover { + background-color: var(--e-a-bg-hover); +} +.elementor-control-type-popover_toggle .elementor-control-popover-toggle-reset-label { + color: var(--e-a-color-txt-muted); + margin-inline-end: 5px; +} +.elementor-control-type-popover_toggle .elementor-control-popover-toggle-reset-label:hover { + color: var(--e-a-color-txt); +} + +.elementor-controls-popover.e-controls-popover--typography { + padding-block-start: 0; +} + +.e-control-global .elementor-control-popover-toggle-toggle-label { + border-start-start-radius: 0; + border-start-end-radius: var(--e-a-border-radius); + border-end-start-radius: 0; + border-end-end-radius: var(--e-a-border-radius); + flex-shrink: 0; +} + +.elementor-control-type-repeater .elementor-control:not(.elementor-control-type-tab) { + padding-inline-start: 10px; + padding-inline-end: 10px; + padding-block-end: 10px; +} +.elementor-control-type-repeater.elementor-repeater-has-minimum-rows .elementor-repeater-tool-remove { + display: none; +} +.elementor-control-type-repeater .elementor-repeater-fields { + margin: 10px 0; +} +.elementor-control-type-repeater .elementor-repeater-row-controls { + border: var(--e-a-border-bold); + border-block-start-width: 0; + padding-block-start: 15px; +} +.elementor-control-type-repeater .elementor-repeater-row-controls:not(.editable) { + display: none; +} +.elementor-control-type-repeater .elementor-repeater-row-tools { + display: flex; + align-items: center; + width: 100%; + border: 1px solid var(--e-a-border-color-bold); + transition: var(--e-a-transition-hover); +} +.elementor-control-type-repeater .elementor-repeater-row-tools > button { + display: flex; + align-items: center; + justify-content: center; + height: 40px; + border: none; + background-color: transparent; + color: currentColor; + cursor: pointer; +} +.elementor-control-type-repeater .elementor-repeater-row-tools > button:hover, .elementor-control-type-repeater .elementor-repeater-row-tools > button:focus { + background-color: var(--e-a-bg-hover); +} +.elementor-control-type-repeater .elementor-repeater-row-tools .elementor-repeater-row-item-title { + flex: 1; + justify-content: flex-start; + padding: 0 10px; + font-size: var(--control-title-size); + white-space: nowrap; + text-overflow: ellipsis; + overflow: hidden; +} +.elementor-control-type-repeater .elementor-repeater-row-tools .elementor-repeater-row-item-title .eicon, +.elementor-control-type-repeater .elementor-repeater-row-tools .elementor-repeater-row-item-title i, +.elementor-control-type-repeater .elementor-repeater-row-tools .elementor-repeater-row-item-title svg { + margin-inline-end: 5px; +} +.elementor-control-type-repeater .elementor-repeater-row-tools .elementor-repeater-row-item-title img[src$=svg] { + width: 1em; +} +.elementor-control-type-repeater .elementor-repeater-row-tools .elementor-repeater-row-tool { + width: 40px; + border-inline-start: 1px solid var(--e-a-border-color-bold); +} +.elementor-control-type-repeater .elementor-repeater-row-tools .elementor-repeater-row-handle-sortable { + width: 10px; + border-inline-end: 1px solid var(--e-a-border-color-bold); + cursor: move; +} +.elementor-control-type-repeater .elementor-button-wrapper { + text-align: center; + padding-block-start: 5px; +} + +#elementor-controls { + padding-block-start: 15px; +} + +.elementor-control-type-section { + padding: 0; +} +.elementor-control-type-section.e-open { + padding-block-end: 10px; +} +.elementor-control-type-section + .elementor-control:not(.elementor-control-type-section):before { + display: none; +} +.elementor-control-type-section:not(:first-child):not(.elementor-control-type-section + .elementor-control-type-section) { + margin-block-start: 25px; +} + +.elementor-control-type-select .elementor-control-input-wrapper { + position: relative; +} +.elementor-control-type-select .elementor-control-input-wrapper select { + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + font-size: var(--control-title-size); + font-family: inherit; + font-weight: inherit; + font-style: inherit; + text-transform: inherit; + letter-spacing: inherit; + line-height: inherit; + flex-basis: 100%; + padding-inline-start: 5px; + padding-inline-end: 20px; + cursor: pointer; +} +.elementor-control-type-select .elementor-control-input-wrapper select.e-select-placeholder { + color: var(--e-a-color-txt-disabled); +} +.elementor-control-type-select .elementor-control-input-wrapper option.e-option-placeholder { + display: none; +} +.elementor-control-type-select .elementor-control-input-wrapper:after { + font-family: eicons; + content: "\e8ad"; + font-size: 12px; + position: absolute; + top: 50%; + transform: translateY(-50%); + right: 5px; + pointer-events: none; +} +.elementor-control-type-select .elementor-control-field.elementor-control-field-select-small .elementor-control-input-wrapper { + max-width: 80px; +} + +.elementor-shadow-box .elementor-shadow-slider { + margin-block-start: 10px; +} +.elementor-shadow-box .elementor-color-picker-wrapper .elementor-control-title { + flex-grow: 1; +} + +.elementor-control-type-slider.elementor-control-dynamic input { + border-start-start-radius: var(--e-a-border-radius); + border-start-end-radius: 0; + border-end-start-radius: var(--e-a-border-radius); + border-end-end-radius: 0; +} +.elementor-control-type-slider .elementor-control-unit-2 { + width: 21%; +} +.elementor-control-type-slider.elementor-control-type-slider--multiple .elementor-control-input-wrapper { + display: block; +} +.elementor-control-type-slider--multiple { + padding-block-end: 40px; +} +.elementor-control-type-slider--multiple .elementor-slider { + margin-block-start: 12px; + width: 98%; +} +.elementor-control-type-slider--handles-range .elementor-slider .noUi-handle { + border-radius: 0; + width: 10px; + transform: translateY(calc(50% - 14px)) translateX(4px); +} +.elementor-control-type-slider--handles-range .elementor-slider .noUi-handle:after { + content: ""; + position: absolute; + top: 2px; + height: 12px; + width: 11px; + transform: rotate(45deg); + background-color: var(--e-a-color-white); + border-radius: 3px; +} +.elementor-control-type-slider--handles-range .elementor-slider .noUi-handle-lower:after { + left: 5px; + box-shadow: 2px -2px 3px 0px rgba(0, 0, 0, 0.1); +} +.elementor-control-type-slider--handles-range .elementor-slider .noUi-handle-upper:after { + right: 5px; + box-shadow: -2px 2px 3px 0px rgba(0, 0, 0, 0.1); +} +.elementor-control-type-slider .elementor-control-dynamic-switcher { + border-inline-start-width: 0; + border-start-start-radius: 0; + border-start-end-radius: var(--e-a-border-radius); + border-end-start-radius: 0; + border-end-end-radius: var(--e-a-border-radius); +} +.elementor-control-type-slider .elementor-control-input-wrapper { + display: flex; + align-items: center; +} +.elementor-control-type-slider .elementor-dynamic-cover { + margin-block-start: 10px; +} +.elementor-control-type-slider.e-units-custom .elementor-slider { + display: none; +} +.elementor-control-type-slider.e-units-custom .elementor-slider-input { + width: 100%; + margin: 0; + transition: none; +} + +.elementor-slider { + flex-grow: 1; + height: 4px; + background-color: var(--e-a-border-color-bold); + border-radius: 5px; + position: relative; + cursor: pointer; +} +.elementor-slider-input { + width: 21%; + min-width: 54px; + margin-inline-start: 12px; + transition: width 0.3s ease-in-out; +} +.elementor-slider__extra { + position: relative; +} +.elementor-slider__labels { + display: flex; + justify-content: space-between; +} +.elementor-slider__label { + font-size: 9px; + color: var(--e-a-color-txt-disabled); +} +.elementor-slider__scales { + position: absolute; + display: flex; + justify-content: space-evenly; + width: 100%; + margin-block-start: 4px; +} +.elementor-slider__scale { + width: 1px; + height: 21px; + background-color: var(--e-a-border-color-focus); +} +.elementor-slider .noUi-handle { + height: 16px; + width: 16px; + background-color: var(--e-a-color-white); + right: 0; + transform: translateY(calc(50% - 14px)) translateX(8px); + position: absolute; + box-shadow: 0 1px 5px rgba(0, 0, 0, 0.3); + border-radius: 50%; +} +.elementor-slider .noUi-connects { + position: absolute; + width: 100%; + height: 4px; +} +.elementor-slider .noUi-connect { + position: absolute; + z-index: 0; + top: 0; + left: 0; + height: 100%; + width: 100%; + will-change: transform; + transform-origin: 0 0; + background-color: var(--e-a-border-color-focus); +} +.elementor-slider .noUi-tooltip { + position: absolute; + top: calc(100% + 5px); + left: calc(50% - 4px); + transform: translateX(-50%); + font-size: 10px; +} + +.elementor-control-type-structure .elementor-control-field { + display: initial; +} +.elementor-control-type-structure .elementor-control-structure-preset { + padding: 3px; + border-radius: var(--e-border-radius); + display: inline-block; + cursor: pointer; + height: 50px; +} +.elementor-control-type-structure .elementor-control-structure-preset svg { + height: 100%; +} +.elementor-control-type-structure .elementor-control-structure-preset path { + fill: var(--e-a-border-color-bold); +} +.elementor-control-type-structure .elementor-control-structure-reset { + padding: 15px 20px 0; + font-size: 11px; + cursor: pointer; + color: var(--e-a-color-txt-muted); + border-block-start: var(--e-a-border); + margin: 0 -20px; +} +.elementor-control-type-structure .elementor-control-structure-reset:hover { + color: var(--e-a-color-txt); +} +.elementor-control-type-structure .elementor-control-structure-title { + margin: 10px -20px 0; +} +.elementor-control-type-structure .elementor-control-structure-title:before { + height: 10px; + box-shadow: inset 0 2px 4px rgba(127, 127, 127, 0.1); +} +.elementor-control-type-structure .elementor-control-structure-presets { + display: flex; + flex-wrap: wrap; + justify-content: space-between; +} +.elementor-control-type-structure .elementor-control-structure-presets input { + display: none; +} +.elementor-control-type-structure .elementor-control-structure-presets input:checked + .elementor-control-structure-preset path { + fill: var(--e-a-border-color-focus); +} +.elementor-control-type-structure .elementor-control-structure-preset-wrapper { + margin-block-end: 15px; +} +.elementor-control-type-structure .elementor-control-structure-preset-title { + text-align: center; + padding-block-start: 5px; + font-style: italic; + font-size: 11px; + color: #9DA5AE; +} + +.elementor-control-type-switcher .elementor-control-input-wrapper { + text-align: end; +} +.elementor-control-type-switcher .elementor-switch { + position: relative; + display: inline-block; + vertical-align: top; + height: 20px; + background-color: var(--e-a-bg-default); + border-radius: 18px; + cursor: pointer; +} +.elementor-control-type-switcher .elementor-switch-input { + display: none; +} +.elementor-control-type-switcher .elementor-switch-label { + position: relative; + display: block; + height: inherit; + font-size: 10px; + background: var(--e-a-bg-active-bold); + border-radius: inherit; + transition: 0.15s ease-out; + transition-property: opacity, background; +} +.elementor-control-type-switcher .elementor-switch-label:before, .elementor-control-type-switcher .elementor-switch-label:after { + position: absolute; + top: 0; + width: 50%; + text-align: center; + line-height: 20px; + transition: inherit; +} +.elementor-control-type-switcher .elementor-switch-label:before { + content: attr(data-off); + right: 5px; + color: var(--e-a-color-txt-muted); +} +.elementor-control-type-switcher .elementor-switch-label:after { + content: attr(data-on); + left: 5px; + color: var(--e-a-btn-color); + opacity: 0; +} +.elementor-control-type-switcher .elementor-switch-input:checked ~ .elementor-switch-label { + background: var(--e-a-btn-bg-primary); +} +.elementor-control-type-switcher .elementor-switch-input:checked ~ .elementor-switch-label:before { + opacity: 0; +} +.elementor-control-type-switcher .elementor-switch-input:checked ~ .elementor-switch-label:after { + opacity: 1; +} +.elementor-control-type-switcher .elementor-switch-handle { + position: absolute; + top: 1px; + left: 1px; + width: 18px; + height: 18px; + background: white; + border-radius: 10px; + transition: left 0.15s ease-out; +} +.elementor-control-type-switcher .elementor-switch-input:checked ~ .elementor-switch-handle { + left: initial; + right: 1px; +} + +.elementor-control-type-tabs { + display: flex; + font-size: var(--control-title-size); +} + +.elementor-control-type-tab { + text-align: center; + width: 100%; + padding: 0; + line-height: 25px; + border-block-start: var(--e-a-border-bold); + border-block-end: var(--e-a-border-bold); + border-inline-end: var(--e-a-border-bold); + transition: var(--e-a-transition-hover); + cursor: pointer; +} +.elementor-control-type-tab:first-child { + border-inline-start: var(--e-a-border-bold); + border-start-start-radius: var(--e-a-border-radius); + border-end-start-radius: var(--e-a-border-radius); +} +.elementor-control-type-tab:last-child { + border-start-end-radius: var(--e-a-border-radius); + border-end-end-radius: var(--e-a-border-radius); +} +.elementor-control-type-tab:hover { + background-color: var(--e-a-bg-hover); +} +.elementor-control-type-tab.e-tab-active { + background-color: var(--e-a-bg-active-bold); + color: var(--e-a-color-txt-accent); +} + +.e-tab-close { + display: none !important; +} + +.elementor-control-type-textarea .elementor-control-dynamic-switcher, +.elementor-control-type-code .elementor-control-dynamic-switcher { + border-inline-start-width: 1px; + border-start-start-radius: 0; + border-start-end-radius: 0; + border-end-end-radius: 0; + border-end-start-radius: var(--e-a-border-radius); +} +.elementor-control-type-textarea:not(.elementor-control-dynamic-value) .elementor-control-dynamic-switcher, +.elementor-control-type-code:not(.elementor-control-dynamic-value) .elementor-control-dynamic-switcher { + position: absolute; + top: 0; + right: 0; + z-index: 1; +} +.elementor-control-type-textarea .elementor-control-input-wrapper, +.elementor-control-type-code .elementor-control-input-wrapper { + position: relative; +} +.elementor-control-type-textarea textarea, +.elementor-control-type-code textarea { + display: block; + font-family: inherit; +} +.elementor-control-type-textarea textarea:focus + .elementor-control-dynamic-switcher, +.elementor-control-type-code textarea:focus + .elementor-control-dynamic-switcher { + display: none; +} +.elementor-control-type-textarea pre:focus-within + .elementor-control-dynamic-switcher, +.elementor-control-type-code pre:focus-within + .elementor-control-dynamic-switcher { + display: none; +} + +.elementor-control-type-url .elementor-control-field { + position: relative; +} +.elementor-control-type-url .elementor-control-input-wrapper { + display: flex; +} +.elementor-control-type-url.elementor-control-dynamic .elementor-control-url-more-options input { + border-radius: var(--e-a-border-radius); +} +.elementor-control-type-url.elementor-control-dynamic-value .e-input-style { + border-start-end-radius: 0; + border-end-end-radius: 0; +} +.elementor-control-type-url.elementor-control-dynamic-value .elementor-control-url-more { + border-start-end-radius: var(--e-a-border-radius); + border-end-end-radius: var(--e-a-border-radius); +} +.elementor-control-type-url .elementor-control-url-more { + display: flex; + align-items: center; + justify-content: center; + flex-shrink: 0; + border: var(--e-a-border-bold); + color: currentColor; + background-color: transparent; + border-inline-start-width: 0; + cursor: pointer; +} +.elementor-control-type-url .elementor-control-url-more i { + font-size: 12px; +} +.elementor-control-type-url .elementor-control-url-more-options { + display: none; + padding-block-start: 10px; +} +.elementor-control-type-url .elementor-control-url-more-options .elementor-control-field-description { + margin-block-start: 10px; +} +.elementor-control-type-url .elementor-control-url-more:hover { + color: var(--e-a-color-txt-hover); +} +.elementor-control-type-url .elementor-control-url-more:focus { + color: var(--e-a-color-txt-active); + border-color: var(--e-a-border-color-focus); +} +.elementor-control-type-url .elementor-control-url-option { + display: flex; + align-items: center; +} +.elementor-control-type-url .elementor-control-url-option:not(:last-child) { + padding-block-end: 10px; +} +.elementor-control-type-url .elementor-control-url-option input, +.elementor-control-type-url .elementor-control-url-option label { + cursor: pointer; +} +.elementor-control-type-url .elementor-control-url-autocomplete-spinner { + display: none; + position: absolute; + top: 5px; + right: 0; + width: 10px; + height: 10px; + font-size: 10px; + color: var(--e-a-color-txt-disabled); +} +.elementor-control-type-url .elementor-control-url__custom-attributes label { + font-size: var(--control-title-size); +} +.elementor-control-type-url .elementor-control-url__custom-attributes input { + width: 100%; + margin-block-start: 10px; +} +.elementor-control-type-url .elementor-input:focus ~ div { + border-color: var(--e-a-border-color-focus); +} + +.elementor-autocomplete-menu { + position: absolute; + background: var(--e-a-bg-default); + border: var(--e-a-border); + margin: 0; + list-style: none; + padding: 4px 0; + height: auto; + width: 100%; + min-width: 260px; + max-width: 300px; + max-height: 200px; + overflow-y: auto; + border-radius: 3px; + transition: var(--e-a-transition-hover); + cursor: default; + z-index: 1; +} +.elementor-autocomplete-menu .ui-menu-item { + display: flex; + justify-content: space-between; + align-self: baseline; + padding: 5px 8px; + font-size: 12px; + width: 100%; + line-height: 1.2; + cursor: pointer; +} +.elementor-autocomplete-menu .ui-menu-item.ui-state-hover, .elementor-autocomplete-menu .ui-menu-item.ui-state-active, .elementor-autocomplete-menu .ui-menu-item.ui-state-focus { + background: var(--e-a-bg-hover); +} +.elementor-autocomplete-menu .elementor-autocomplete-item-info { + font-size: 10px; + padding-block-start: 2px; +} + +.elementor-control-type-wp_widget .widget-inside { + line-height: 2; + background-color: inherit; + display: block; +} +.elementor-control-type-wp_widget .quicktags-toolbar input { + width: auto; +} + +.elementor-control-type-wysiwyg * { + box-sizing: content-box; +} +.elementor-control-type-wysiwyg .wp-editor-container { + border: var(--e-a-border); +} +.elementor-control-type-wysiwyg .wp-editor-tabs { + border: var(--e-a-border-bold); + border-block-end: none; + border-start-start-radius: var(--e-a-border-radius); + border-start-end-radius: var(--e-a-border-radius); + border-end-end-radius: 0; + border-end-start-radius: 0; +} +.elementor-control-type-wysiwyg .wp-editor-tabs button:hover { + background-color: var(--e-a-bg-hover); +} +.elementor-control-type-wysiwyg #insert-media-button { + height: initial; + line-height: 24px; + font-size: 10px; + color: var(--e-a-color-txt); + border-color: var(--e-a-border-color-bold); + background-color: var(--e-a-bg-default); + min-height: initial; +} +.elementor-control-type-wysiwyg .ed_button { + height: 22px; + width: initial; +} +.elementor-control-type-wysiwyg .wp-media-buttons-icon { + height: 14px; + margin: 0; +} +.elementor-control-type-wysiwyg .wp-media-buttons-icon:before { + font-size: 14px; +} +.elementor-control-type-wysiwyg .wp-switch-editor { + position: static; + border: none; + margin: 0; + color: var(--e-a-color-txt); + font-size: 10px; + padding: 3px 9px 4px; +} +.elementor-control-type-wysiwyg .switch-html { + border: solid var(--e-a-border-color-bold); + border-width: 0 1px; +} +.elementor-control-type-wysiwyg .html-active .switch-tmce { + background-color: transparent; +} +.elementor-control-type-wysiwyg .html-active .switch-html { + background-color: var(--e-a-bg-active); +} +.elementor-control-type-wysiwyg .tmce-active .switch-tmce { + background-color: var(--e-a-bg-active); +} +.elementor-control-type-wysiwyg .tmce-active .switch-html { + background-color: transparent; +} +.elementor-control-type-wysiwyg .mce-toolbar-grp, +.elementor-control-type-wysiwyg .quicktags-toolbar { + background-color: var(--e-a-bg-default); +} +.elementor-control-type-wysiwyg .mce-toolbar .mce-btn-group .mce-btn.mce-listbox { + background-color: var(--e-a-bg-default); +} +.elementor-control-type-wysiwyg .mce-toolbar .mce-btn-group .mce-btn.mce-listbox button { + color: var(--e-a-color-txt); +} +.elementor-control-type-wysiwyg .mce-toolbar-grp > div { + padding: 0 3px; +} +.elementor-control-type-wysiwyg .elementor-wp-editor { + box-sizing: border-box; +} +.elementor-control-type-wysiwyg .mce-ico { + color: var(--e-a-color-txt); + font-size: 16px; +} +.elementor-control-type-wysiwyg .mce-btn-group .mce-btn:hover, .elementor-control-type-wysiwyg .mce-btn-group .mce-btn:active, .elementor-control-type-wysiwyg .mce-btn-group .mce-btn.mce-active { + color: var(--e-a-color-txt-active); + background: var(--e-a-bg-hover); + border-color: var(--e-a-border-color); + box-shadow: none; +} +.elementor-control-type-wysiwyg .mce-btn-group .mce-btn:hover i, .elementor-control-type-wysiwyg .mce-btn-group .mce-btn:active i, .elementor-control-type-wysiwyg .mce-btn-group .mce-btn.mce-active i { + color: var(--e-a-color-txt-active); +} +.elementor-control-type-wysiwyg .mce-path { + padding: 5px 10px; +} +.elementor-control-type-wysiwyg .mce-path-item { + font-size: 12px; + color: var(--e-a-color-txt); +} +.elementor-control-type-wysiwyg .mce-top-part:before { + box-shadow: none; +} +.elementor-control-type-wysiwyg .elementor-control-dynamic-switcher { + border: none; +} + +@media screen and (prefers-color-scheme: dark) { + #wp-link-wrap { + color-scheme: light; + --e-a-color-txt: #515962; + --e-a-bg-default: #ffffff; + --e-a-border-color-bold: #D5D8DC; + --e-a-color-primary-bold: #D004D4; + } + #wp-link { + color: var(--e-a-color-txt); + } + #wp-link input { + background-color: var(--e-a-bg-default); + border-color: var(--e-a-border-color-bold); + } + #wp-link input[type=checkbox] { + border-color: var(--e-a-border-color-bold); + } + #wp-link input[type=checkbox]:checked { + background: var(--e-a-color-primary-bold); + } + #wp-link input.button-primary { + background: #2271b1; + border-color: #2271b1; + color: #fff; + } +} +#elementor-mode-switcher { + --e-a-mode-switcher-width: 15px; + --e-a-mode-switcher-height: 50px; + --e-a-mode-switcher-icon-size: 15px; + position: absolute; + left: 100%; + top: 50%; + transform: translateY(-50%); + background-color: var(--e-a-bg-default); + box-shadow: 3px 1px 3px rgba(0, 0, 0, 0.05); + transition: 0.3s opacity; +} +#elementor-mode-switcher:hover { + background-color: var(--e-a-bg-hover); +} +#elementor-mode-switcher:focus-within { + background-color: var(--e-a-bg-active); +} +.e-panel-block-interactions #elementor-mode-switcher { + opacity: 0; + pointer-events: none; +} +#elementor-mode-switcher-preview i { + display: flex; + flex-direction: column; + justify-content: center; + width: var(--e-a-mode-switcher-width); + height: var(--e-a-mode-switcher-height); + font-size: var(--e-a-mode-switcher-icon-size); + cursor: pointer; +} +#elementor-mode-switcher-preview-input { + display: none; +} + +.elementor-revision-item__wrapper { + display: flex; + align-items: center; + text-align: start; + width: 100%; + border: var(--e-a-border); + border-radius: var(--e-a-border-radius); + padding: 10px 15px; + margin-block-end: 10px; + font-size: 11px; + transition: var(--e-a-transition-hover); + background-color: transparent; +} +.elementor-revision-item__wrapper:hover, .elementor-revision-item__wrapper:focus { + background-color: var(--e-a-bg-hover); +} +.elementor-revision-item-loading .elementor-revision-item__tools-current { + display: none; +} +.elementor-revision-item:not(.elementor-revision-item-loading) .elementor-revision-item__tools-spinner { + display: none; +} +.elementor-revision-item__gravatar { + border-radius: 50%; + overflow: hidden; +} +.elementor-revision-item__gravatar img { + display: block; +} +.elementor-revision-item__details { + padding-inline-start: 15px; + flex-grow: 1; + cursor: pointer; +} +.elementor-revision-meta { + padding-block-start: 5px; + font-size: 10px; + font-weight: bold; +} +.elementor-revision-current-preview .elementor-revision-item__wrapper { + border-color: var(--e-a-border-color-accent); + background-color: var(--e-a-bg-active); +} + +#elementor-panel-revisions-loading { + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); +} +#elementor-panel-revisions-loading .eicon-loading { + font-size: 50px; +} + +.elementor-panel-revisions-buttons { + display: flex; + justify-content: space-between; + padding: 15px 20px; + border-block-end: var(--e-a-border); +} + +.elementor-history-item { + display: flex; + align-items: center; + text-align: start; + border: var(--e-a-border); + border-radius: var(--e-a-border-radius); + padding: 10px 15px; + margin-block-end: 10px; + width: 100%; + font-size: 11px; + line-height: 1.4; + background-color: transparent; + cursor: pointer; + transition: var(--e-a-transition-hover); +} +.elementor-history-item:hover:not(.elementor-history-item-current), .elementor-history-item:focus:not(.elementor-history-item-current) { + background-color: var(--e-a-bg-hover); + color: var(--e-a-txt-color-hover); +} +.elementor-history-item:hover:not(.elementor-history-item-current) .elementor-history-item__icon .eicon:before, .elementor-history-item:focus:not(.elementor-history-item-current) .elementor-history-item__icon .eicon:before { + content: "\e924"; +} +.elementor-history-item-current { + border-color: var(--e-a-border-color-accent); + background-color: var(--e-a-bg-active); + color: var(--e-a-txt-color-active); +} +.elementor-history-item-current .elementor-history-item__icon .eicon:before, .elementor-history-item-current:hover .elementor-history-item__icon .eicon:before, .elementor-history-item-current:focus .elementor-history-item__icon .eicon:before { + content: "\e90e"; +} +.elementor-history-item__details { + width: 95%; +} +.elementor-history-item__title { + font-weight: bold; +} +.elementor-history-item__subtitle, .elementor-history-item__action { + font-weight: lighter; +} +.elementor-history-item__action { + font-style: italic; + text-decoration: underline; +} +.elementor-history-revisions-message { + font-size: 11px; + text-align: center; + padding-block-start: 5px; +} + +#elementor-panel-history { + padding: 20px; + padding-block-end: 15px; +} +#elementor-panel-history.elementor-empty .elementor-history-revisions-message { + padding-block-start: 20px; +} +#elementor-panel-history:not(.elementor-empty) { + margin-block-start: 10px; +} + +#elementor-panel-history-no-items, +#elementor-panel-revisions-no-revisions { + text-align: center; +} +#elementor-panel-history-no-items .elementor-nerd-box-icon, +#elementor-panel-revisions-no-revisions .elementor-nerd-box-icon { + margin-block-start: 20px; +} + +.e-control-display-conditions-promotion__wrapper { + display: flex; + justify-content: space-between; +} +.e-control-display-conditions-promotion__wrapper:hover .eicon-lock.e-control-display-conditions-promotion { + color: var(--e-a-color-accent); +} +.e-control-display-conditions-promotion__description { + display: flex; + align-self: center; +} +.e-control-display-conditions-promotion__text { + display: inline-block; +} +.e-control-display-conditions-promotion__lock-wrapper { + width: 2.5rem; + display: flex; + justify-content: center; + align-items: center; +} +.e-control-display-conditions-promotion.eicon-flow { + align-self: flex-end; + cursor: pointer; + border: var(--e-a-border-bold); + border-radius: var(--e-a-border-radius); + padding: 5px; +} +.e-control-display-conditions-promotion.eicon-flow.filled { + background-color: var(--e-a-bg-active); + color: #E73CF6; +} + +.e-control-motion-effects-promotion__wrapper:hover .eicon-lock { + color: var(--e-a-color-accent); +} +.e-control-motion-effects-promotion__wrapper .select-promotion { + display: flex; + flex-direction: column; + justify-content: center; + padding-inline-start: 5px; + padding-inline-end: 20px; + cursor: pointer; + height: 27px; + width: 100%; + color: var(--e-a-color-txt); + border-radius: var(--e-a-border-radius); + background-color: var(--e-a-bg-default); + box-shadow: none; + border: var(--e-a-border-bold); + font-size: var(--control-title-size); +} +.e-control-motion-effects-promotion__lock-wrapper { + width: 2.5rem; + display: flex; + justify-content: center; + align-items: center; +} + +.e-link-promotion { + font-family: "Roboto", sans-serif; + font-weight: 500; + color: #93003f; +} +.e-link-promotion:hover { + color: #93003f; +} + +.elementor-panel #elementor-panel-header #elementor-panel-header-kit-close, +.elementor-panel #elementor-panel-header #elementor-panel-header-kit-back { + display: none; +} + +.elementor-editor-kit .elementor-panel #elementor-panel-header #elementor-panel-header-kit-close, +.elementor-editor-kit .elementor-panel #elementor-panel-header #elementor-panel-header-kit-back { + display: flex; +} +body:not(.e-routes-has-history) #elementor-panel-header-kit-back { + pointer-events: none; + visibility: hidden; +} + +.elementor-editor-kit .elementor-panel #elementor-panel-page-settings .elementor-panel-navigation { + display: none; +} +.elementor-editor-kit .elementor-panel #elementor-panel-page-menu { + padding: 25px 15px 0; +} +.elementor-editor-kit #elementor-panel-header-add-button, +.elementor-editor-kit #elementor-panel-header-menu-button, +.elementor-editor-kit #elementor-panel-footer-sub-menu-item-save-template, +.elementor-editor-kit #elementor-panel-footer-navigator { + display: none; +} + +.elementor-control-type-global-style-repeater .elementor-repeater-fields { + margin-block-end: 15px; + position: relative; +} +.elementor-control-type-global-style-repeater .elementor-repeater-fields.ui-sortable-helper { + background-color: var(--e-a-bg-default); +} +.elementor-control-type-global-style-repeater .elementor-repeater-row-controls { + display: flex; + align-items: center; +} +.elementor-control-type-global-style-repeater .elementor-repeater-row-tool { + cursor: pointer; + color: var(--e-a-color-txt); + background-color: transparent; + border: none; + padding: 5px; +} +.elementor-control-type-global-style-repeater .elementor-repeater-row-tool:focus, .elementor-control-type-global-style-repeater .elementor-repeater-row-tool:hover { + color: var(--e-a-color-txt-hover); +} +.elementor-control-type-global-style-repeater .elementor-control { + padding: 0; +} +.elementor-control-type-global-style-repeater .elementor-control-title { + flex-grow: 1; +} +.elementor-control-type-global-style-repeater .elementor-control-title input { + max-width: 135px; +} +.elementor-control-type-global-style-repeater .elementor-control-title input:not(:focus) { + background: none; + border: none; +} +.elementor-control-type-global-style-repeater .elementor-control-input-wrapper { + display: flex; + align-items: center; + min-width: 81px; +} +.elementor-control-type-global-style-repeater .elementor-control-input-wrapper:hover .e-global-colors__color-value { + display: none; +} +.elementor-control-type-global-style-repeater .elementor-control-input-wrapper:not(:hover) .elementor-repeater-tool-remove, .elementor-control-type-global-style-repeater .elementor-control-input-wrapper:not(:hover) .elementor-repeater-tool-remove--disabled, .elementor-control-type-global-style-repeater .elementor-control-input-wrapper:not(:hover) .elementor-repeater-tool-sort { + display: none; +} +.elementor-control-type-global-style-repeater .elementor-repeater-row-controls > .elementor-control > .elementor-control-content > .elementor-control-field > .elementor-control-input-wrapper { + margin-block-start: 0; +} +.elementor-control-type-global-style-repeater .elementor-controls-popover { + align-self: end; + margin-block-start: 35px; + top: 0; + width: 100%; +} +.elementor-control-type-global-style-repeater .elementor-controls-popover:before { + right: 5px; +} +.elementor-control-type-global-style-repeater .elementor-controls-popover .elementor-control { + padding: 0 20px 15px; +} +.elementor-control-type-global-style-repeater .elementor-controls-popover .elementor-control-title { + flex-grow: initial; +} +.elementor-control-type-global-style-repeater .elementor-button-wrapper { + text-align: center; + border-block-start: var(--e-a-border); + padding-block-start: 15px; +} +.elementor-control-type-global-style-repeater .pickr, +.elementor-control-type-global-style-repeater .elementor-control-popover-toggle-toggle-label { + margin-inline-start: 5px; +} +.elementor-control-type-global-style-repeater .e-sortable-placeholder { + background-color: var(--e-a-color-info); + opacity: 0.9; + width: 100%; + margin: 8px 0; + height: 2px; +} +.elementor-control-system_colors, .elementor-control-system_typography { + padding-block-end: 0; +} + +.e-global-colors__color-value { + font-size: 10px; + padding: 0 5px; + text-align: end; + white-space: nowrap; + text-overflow: ellipsis; + overflow: hidden; +} + +@keyframes load { + 0% { + opacity: 0.3; + } + 50% { + opacity: 1; + } + 100% { + opacity: 0.3; + } +} +@keyframes fadeIn { + from { + opacity: 0; + } + to { + opacity: 1; + } +} +@keyframes mover { + 0% { + transform: translateY(0); + } + 100% { + transform: translateY(-5px); + } +} +@keyframes slideDown { + 0% { + transform: translateY(-30px); + } + 100% { + transform: translateY(0); + } +} +.elementor-button, +.e-btn { + font-size: 12px; + font-weight: 500; + line-height: 1.2; + padding: 8px 16px; + outline: none; + border: none; + border-radius: var(--e-a-border-radius); + background-color: var(--e-a-btn-bg); + color: var(--e-a-btn-color-invert); + transition: var(--e-a-transition-hover); +} +.elementor-button:hover, +.e-btn:hover { + border: none; +} +.elementor-button:hover, .elementor-button:focus, +.e-btn:hover, +.e-btn:focus { + background-color: var(--e-a-btn-bg-hover); + color: var(--e-a-btn-color-invert); +} +.elementor-button:active, +.e-btn:active { + background-color: var(--e-a-btn-bg-active); +} +.elementor-button:not([disabled]), +.e-btn:not([disabled]) { + cursor: pointer; +} +.elementor-button:disabled, +.e-btn:disabled { + background-color: var(--e-a-btn-bg-disabled); + color: var(--e-a-btn-color-disabled); +} +.elementor-button:not(.elementor-button-state) .elementor-state-icon, +.e-btn:not(.elementor-button-state) .elementor-state-icon { + display: none; +} +.elementor-button.e-btn-txt, +.e-btn.e-btn-txt { + background: transparent; + color: var(--e-a-color-txt); +} +.elementor-button.e-btn-txt:hover, .elementor-button.e-btn-txt:focus, +.e-btn.e-btn-txt:hover, +.e-btn.e-btn-txt:focus { + background: var(--e-a-bg-hover); + color: var(--e-a-color-txt-hover); +} +.elementor-button.e-btn-txt:disabled, +.e-btn.e-btn-txt:disabled { + background: transparent; + color: var(--e-a-color-txt-disabled); +} +.elementor-button.e-btn-txt-border, +.e-btn.e-btn-txt-border { + border: 1px solid var(--e-a-color-txt-muted); +} +.elementor-button.elementor-button-success, .elementor-button.e-success, +.e-btn.elementor-button-success, +.e-btn.e-success { + background-color: var(--e-a-btn-bg-success); +} +.elementor-button.elementor-button-success:hover, .elementor-button.elementor-button-success:focus, .elementor-button.e-success:hover, .elementor-button.e-success:focus, +.e-btn.elementor-button-success:hover, +.e-btn.elementor-button-success:focus, +.e-btn.e-success:hover, +.e-btn.e-success:focus { + background-color: var(--e-a-btn-bg-success-hover); +} +.elementor-button.e-primary, +.e-btn.e-primary { + background-color: var(--e-a-btn-bg-primary); + color: var(--e-a-btn-color); +} +.elementor-button.e-primary:hover, .elementor-button.e-primary:focus, +.e-btn.e-primary:hover, +.e-btn.e-primary:focus { + background-color: var(--e-a-btn-bg-primary-hover); + color: var(--e-a-btn-color); +} +.elementor-button.e-primary.e-btn-txt, +.e-btn.e-primary.e-btn-txt { + background: transparent; + color: var(--e-a-color-primary-bold); +} +.elementor-button.e-primary.e-btn-txt:hover, .elementor-button.e-primary.e-btn-txt:focus, +.e-btn.e-primary.e-btn-txt:hover, +.e-btn.e-primary.e-btn-txt:focus { + background: var(--e-a-bg-primary); +} +.elementor-button.go-pro, .elementor-button.e-accent, +.e-btn.go-pro, +.e-btn.e-accent { + background-color: var(--e-a-btn-bg-accent); +} +.elementor-button.go-pro:hover, .elementor-button.go-pro:focus, .elementor-button.e-accent:hover, .elementor-button.e-accent:focus, +.e-btn.go-pro:hover, +.e-btn.go-pro:focus, +.e-btn.e-accent:hover, +.e-btn.e-accent:focus { + background-color: var(--e-a-btn-bg-accent-hover); +} +.elementor-button.go-pro:active, .elementor-button.e-accent:active, +.e-btn.go-pro:active, +.e-btn.e-accent:active { + background-color: var(--e-a-btn-bg-accent-active); +} +.elementor-button.elementor-button-info, .elementor-button.e-info, +.e-btn.elementor-button-info, +.e-btn.e-info { + background-color: var(--e-a-btn-bg-info); +} +.elementor-button.elementor-button-info:hover, .elementor-button.elementor-button-info:focus, .elementor-button.e-info:hover, .elementor-button.e-info:focus, +.e-btn.elementor-button-info:hover, +.e-btn.elementor-button-info:focus, +.e-btn.e-info:hover, +.e-btn.e-info:focus { + background-color: var(--e-a-btn-bg-info-hover); +} +.elementor-button.elementor-button-warning, .elementor-button.e-warning, +.e-btn.elementor-button-warning, +.e-btn.e-warning { + background-color: var(--e-a-btn-bg-warning); +} +.elementor-button.elementor-button-warning:hover, .elementor-button.elementor-button-warning:focus, .elementor-button.e-warning:hover, .elementor-button.e-warning:focus, +.e-btn.elementor-button-warning:hover, +.e-btn.elementor-button-warning:focus, +.e-btn.e-warning:hover, +.e-btn.e-warning:focus { + background-color: var(--e-a-btn-bg-warning-hover); +} +.elementor-button.elementor-button-danger, .elementor-button.e-danger, +.e-btn.elementor-button-danger, +.e-btn.e-danger { + background-color: var(--e-a-btn-bg-danger); +} +.elementor-button.elementor-button-danger:hover, .elementor-button.elementor-button-danger:focus, .elementor-button.e-danger:hover, .elementor-button.e-danger:focus, +.e-btn.elementor-button-danger:hover, +.e-btn.elementor-button-danger:focus, +.e-btn.e-danger:hover, +.e-btn.e-danger:focus { + background-color: var(--e-a-btn-bg-danger-hover); +} +.elementor-button i, +.e-btn i { + margin-inline-end: 5px; +} + +body { + --e-preview-width: calc(100% - var(--e-editor-panel-width, 300px)); +} +body.elementor-navigator-docked { + --e-preview-width: calc(100% - var(--e-editor-panel-width, 300px) - var(--e-editor-navigator-width, 0px)); +} +body.elementor-device-desktop #elementor-preview { + overflow-y: hidden; + align-items: flex-start; +} +body:not(.elementor-device-desktop) body { + overflow-y: auto; +} + +#elementor-preview { + background-color: #333; + height: 100%; + border: 0; + width: var(--e-preview-width); + display: flex; + flex-direction: column; + justify-content: flex-start; + align-items: center; + position: relative; +} + +#elementor-preview-responsive-wrapper { + transform-origin: top center; + padding: 20px; + transform: scale(var(--e-preview-scale, 1)); +} +.elementor-device-desktop #elementor-preview-responsive-wrapper { + min-width: 1025px; + width: 100%; + height: 100%; + padding: 0; + position: relative; +} +body.e-is-device-mode:not(.elementor-device-desktop) #elementor-preview-responsive-wrapper { + width: var(--e-editor-preview-width); + height: var(--e-editor-preview-height); + margin: 0 max((100vw - var(--e-editor-panel-width) - var(--e-editor-preview-width)) / 2, 20px); + box-sizing: content-box; + position: relative; + max-height: calc(100vh - 80px); +} +body.e-is-device-mode:not(.elementor-device-desktop) #elementor-preview-responsive-wrapper .ui-resizable-handle { + display: flex !important; +} +#elementor-preview-responsive-wrapper:not(.ui-resizable-resizing) { + transition: 0.3s ease-in-out; +} +#elementor-preview-responsive-wrapper .ui-resizable-handle { + top: 0; +} +#elementor-preview-responsive-wrapper .ui-resizable-handle.ui-resizable-s { + top: auto; + bottom: 0; +} +#elementor-preview-responsive-wrapper .ui-resizable-n, #elementor-preview-responsive-wrapper .ui-resizable-s { + align-items: center; + justify-content: center; + height: 20px; +} +#elementor-preview-responsive-wrapper .ui-resizable-n:before, #elementor-preview-responsive-wrapper .ui-resizable-s:before { + content: ""; + display: block; + background-color: rgba(255, 255, 255, 0.2); + width: 50px; + height: 4px; + border-radius: 3px; + transition: all 0.2s ease-in-out; +} +#elementor-preview-responsive-wrapper .ui-resizable-n:hover:before, #elementor-preview-responsive-wrapper .ui-resizable-s:hover:before { + background-color: rgba(255, 255, 255, 0.6); + width: 100px; +} +#elementor-preview-responsive-wrapper .ui-resizable-e, +#elementor-preview-responsive-wrapper .ui-resizable-w { + align-items: center; + justify-content: center; + width: 20px; +} +#elementor-preview-responsive-wrapper .ui-resizable-e:before, +#elementor-preview-responsive-wrapper .ui-resizable-w:before { + content: ""; + display: block; + background-color: rgba(255, 255, 255, 0.2); + width: 4px; + height: 50px; + border-radius: 3px; + transition: all 0.2s ease-in-out; +} +#elementor-preview-responsive-wrapper .ui-resizable-e:hover:before, +#elementor-preview-responsive-wrapper .ui-resizable-w:hover:before { + background-color: rgba(255, 255, 255, 0.6); + height: 100px; +} +#elementor-preview-responsive-wrapper.ui-resizable-resizing .ui-resizable-handle:before { + background-color: rgba(255, 255, 255, 0.9); +} +#elementor-preview-responsive-wrapper .ui-resizable-s { + bottom: 0; +} +#elementor-preview-responsive-wrapper .ui-resizable-e { + right: 0; +} +#elementor-preview-responsive-wrapper .ui-resizable-w { + left: 0; +} + +#elementor-preview-iframe { + width: 100%; + height: 100%; + background-color: #fff; + box-shadow: 0 0 3px rgba(0, 0, 0, 0.3), 0 0 20px rgba(0, 0, 0, 0.15); +} + +#elementor-template-library-modal a.elementor-template-library-blank-footer-link { + font-style: normal; + text-decoration: underline; +} +#elementor-template-library-modal .dialog-buttons-wrapper { + display: none; +} +#elementor-template-library-modal .select2-container { + z-index: 0; +} +#elementor-template-library-modal .dialog-message { + overflow-y: scroll; +} + +#elementor-template-library-header-menu { + text-align: center; +} + +.elementor-template-library-menu-item { + display: inline-block; + padding: 17px 20px; + border-block-end: 3px solid transparent; + cursor: pointer; +} +.elementor-template-library-menu-item:hover { + background-color: var(--e-a-bg-hover); + border-color: var(--e-a-bg-hover); +} +.elementor-template-library-menu-item.elementor-active { + border-color: var(--e-a-border-color-accent); + color: var(--e-a-color-txt-accent); +} + +#elementor-template-library-header-actions { + display: flex; +} +#elementor-template-library-header-actions > div { + padding-inline-end: 16px; +} + +#elementor-template-library-header-preview-insert-wrapper { + cursor: default; + padding: 0 10px; +} + +.elementor-template-library-template-insert + .elementor-template-library-template-generate-variation { + margin-inline-start: 4px; +} + +#elementor-template-library-header-preview-back { + padding-block: 16.5px 15px; + padding-inline: 0 16.5px; + border-inline-end: var(--e-a-border); + cursor: pointer; + transition: color 0.5s; +} +#elementor-template-library-header-preview-back:hover { + color: var(--e-a-color-txt-hover); +} +#elementor-template-library-header-preview-back i { + padding-inline-end: 10px; + font-size: 18px; +} +#elementor-template-library-header-preview-back i:before { + content: "\e87e"; +} + +#elementor-template-library-templates[data-template-source=local] #elementor-template-library-templates-container { + margin-block-start: 10px; + margin-block-end: 45px; + border-block-start: var(--e-a-border); +} +#elementor-template-library-templates[data-template-source=local] .elementor-template-library-order-input:checked + .elementor-template-library-order-label { + color: var(--e-a-color-txt-active); +} +#elementor-template-library-templates[data-template-source=remote] #elementor-template-library-templates-container { + margin: 10px -15px 0; +} +#elementor-template-library-templates[data-template-source=remote] .elementor-template-library-order-input:checked + .elementor-template-library-order-label { + color: var(--e-a-color-txt-active); +} +#elementor-template-library-templates[data-template-source=empty] #elementor-template-library-order-toolbar-local, +#elementor-template-library-templates[data-template-source=empty] #elementor-template-library-footer-banner { + display: none; +} +#elementor-template-library-templates.elementor-templates-filter-active #elementor-template-library-footer-banner { + display: none; +} +#elementor-template-library-templates .elementor-template-library-order-input { + display: none; +} +#elementor-template-library-templates .elementor-template-library-order-input:checked + .elementor-template-library-order-label { + padding-inline-end: 8px; +} +#elementor-template-library-templates .elementor-template-library-order-input:checked + .elementor-template-library-order-label:after { + font-family: eicons; + content: "\e8ae"; + margin-inline-start: 3px; +} +#elementor-template-library-templates .elementor-template-library-order-input:checked.elementor-template-library-order-reverse + .elementor-template-library-order-label:after { + content: "\e8ad"; +} + +#elementor-template-library-templates-container { + display: flex; + flex-wrap: wrap; + align-items: flex-start; +} + +#elementor-template-library-toolbar { + display: flex; + justify-content: space-between; + align-items: center; +} + +.elementor-template-library-filter-toolbar { + display: flex; + align-items: center; +} + +#elementor-template-library-filter-toolbar-remote { + font-size: 11px; +} + +#elementor-template-library-order { + display: flex; + border-inline-end: var(--e-a-border); +} + +.elementor-template-library-order-label { + text-transform: uppercase; + padding-inline-end: 22px; + -webkit-user-select: none; + -moz-user-select: none; + user-select: none; +} + +label.elementor-template-library-order-label { + cursor: pointer; +} +label.elementor-template-library-order-label:hover { + color: var(--e-a-color-txt-hover); +} + +#elementor-template-library-filter .select2 { + text-align: start; + width: calc(27px * 5) !important; +} +#elementor-template-library-filter .select2-selection__rendered { + text-transform: capitalize; +} + +#select2-elementor-template-library-filter-subtype-results .select2-results__option { + text-transform: capitalize; + text-align: start; + padding-inline-start: 5px; +} + +#elementor-template-library-my-favorites { + flex-grow: 1; + text-align: start; + padding-inline-start: 20px; +} + +#elementor-template-library-filter-my-favorites { + display: none; +} +#elementor-template-library-filter-my-favorites:checked + #elementor-template-library-filter-my-favorites-label { + color: var(--e-a-color-txt-active); +} +#elementor-template-library-filter-my-favorites:checked + #elementor-template-library-filter-my-favorites-label i:after { + color: var(--e-a-color-primary-bold); + content: "\e93f"; +} + +#elementor-template-library-filter-my-favorites-label { + cursor: pointer; + text-transform: uppercase; +} +#elementor-template-library-filter-my-favorites-label:hover { + color: var(--e-a-color-txt-hover); +} +#elementor-template-library-filter-my-favorites-label:hover i:after { + color: var(--e-a-color-primary-bold); +} +#elementor-template-library-filter-my-favorites-label i { + padding-inline-end: 5px; +} +#elementor-template-library-filter-my-favorites-label i:after { + content: "\e923"; +} + +#elementor-template-library-filter-text-wrapper { + width: 200px; + position: relative; +} +#elementor-template-library-filter-text-wrapper i { + position: absolute; + top: 50%; + right: 0; + transform: translateY(-50%); +} + +#elementor-template-library-filter-text { + border: none; + border-block-end: var(--e-a-border-bold); + border-radius: 0; + font-size: 11px; + padding: 8px 15px 8px 0; + transition: border 0.5s; +} +#elementor-template-library-filter-text:focus { + border-color: var(--e-a-border-color-focus); +} +#elementor-template-library-filter-text::-moz-placeholder { + font-weight: 300; + text-transform: uppercase; +} +#elementor-template-library-filter-text::placeholder { + font-weight: 300; + text-transform: uppercase; +} + +.elementor-template-library-template-remote { + margin: calc(30px / 2); + padding: 8px; + border: var(--e-a-border); + border-radius: 3px; +} +.elementor-template-library-template-remote:hover { + background-color: var(--e-a-bg-hover); +} +.elementor-template-library-template-remote:hover .elementor-template-library-template-name { + display: none; +} +.elementor-template-library-template-remote:not(:hover) .elementor-template-library-template-preview { + opacity: 0; +} +.elementor-template-library-template-remote:not(:hover) .elementor-template-library-favorite, +.elementor-template-library-template-remote:not(:hover) .elementor-template-library-template-action { + display: none; +} +.elementor-template-library-template-remote.elementor-template-library-pro-template .elementor-template-library-template-body:before { + content: var(--elementor-template-library-subscription-plan-label); + background-color: var(--e-a-color-accent); + color: var(--e-a-color-white); + position: absolute; + text-transform: uppercase; + line-height: 1; + top: 5px; + right: 5px; + padding: 3px 5px; + font-size: 8px; + border-radius: 2px; +} +.elementor-template-library-template-remote:not(.elementor-template-library-template-page):not(.elementor-template-library-template-lp) { + position: relative; + width: calc(33.333% - 30px); + overflow: hidden; +} +.elementor-template-library-template-remote:not(.elementor-template-library-template-page):not(.elementor-template-library-template-lp) img { + display: block; + width: 100%; +} +.elementor-template-library-template-remote:not(.elementor-template-library-template-page):not(.elementor-template-library-template-lp) .elementor-template-library-template-footer { + position: absolute; + width: 100%; + bottom: 0; + left: 0; + padding: 10px; + background-color: var(--e-a-bg-default); + transition: transform 0.5s; +} +.elementor-template-library-template-remote:not(.elementor-template-library-template-page):not(.elementor-template-library-template-lp) .elementor-template-library-template-name { + display: none; +} +.elementor-template-library-template-remote:not(.elementor-template-library-template-page):not(.elementor-template-library-template-lp):not(:hover) .elementor-template-library-template-footer { + transform: translateY(100%); +} +.elementor-template-library-template-remote .elementor-template-library-template-body { + position: relative; +} +@media (max-width: 1025px) { + .elementor-template-library-template-remote .elementor-template-library-template-body { + height: 300px; + } +} +.elementor-template-library-template-remote .elementor-template-library-template-screenshot { + height: 100%; + background-size: cover; + background-position-x: 50%; + box-shadow: inset 0px -2px 15px -6px rgba(0, 0, 0, 0.07); +} +.elementor-template-library-template-remote .elementor-template-library-template-preview { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + background-color: rgba(0, 0, 0, 0.5); + transition: opacity 0.5s; + cursor: pointer; +} +.elementor-template-library-template-remote .elementor-template-library-template-preview i { + font-size: 20px; + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); +} +.elementor-template-library-template-remote .elementor-template-library-template-footer { + display: flex; + justify-content: space-between; + font-size: 11px; + line-height: 1; + height: 40px; + align-items: center; +} +.elementor-template-library-template-remote .elementor-template-library-template-name { + text-align: start; + flex-grow: 1; + white-space: nowrap; + text-overflow: ellipsis; + overflow: hidden; + padding-inline-end: 5px; +} +.elementor-template-library-template-remote .elementor-template-library-favorite { + margin-inline-start: auto; +} +.elementor-template-library-template-remote .elementor-template-library-template-favorite-input { + display: none; +} +.elementor-template-library-template-remote .elementor-template-library-template-favorite-input:checked + .elementor-template-library-template-favorite-label i:before { + content: "\e93f"; + color: var(--e-a-color-primary-bold); +} +.elementor-template-library-template-remote .elementor-template-library-template-favorite-label { + font-size: 15px; + cursor: pointer; +} +.elementor-template-library-template-remote .elementor-template-library-template-favorite-label:hover i { + color: var(--e-a-color-primary-bold); +} + +@media (max-width: 1439px) { + .elementor-template-library-template-page, + .elementor-template-library-template-lp { + width: calc(25% - 30px); + } +} +@media (min-width: 1440px) { + .elementor-template-library-template-page, + .elementor-template-library-template-lp { + width: calc(20% - 30px); + } +} +@media (max-width: 1025px) { + .elementor-template-library-template-page, + .elementor-template-library-template-lp { + width: calc(33.333% - 30px); + } +} +.elementor-template-library-template-page .elementor-template-library-template-body, +.elementor-template-library-template-lp .elementor-template-library-template-body { + height: 200px; +} + +#elementor-template-library-order-toolbar-local, +.elementor-template-library-template-local { + display: flex; + align-items: center; + padding: 0 25px; + text-align: start; +} + +#elementor-template-library-order-toolbar-local { + margin-block-start: 30px; +} +#elementor-template-library-order-toolbar-local .elementor-template-library-order-label { + line-height: 1; + font-size: 10px; + font-weight: 500; +} + +.elementor-template-library-template-local { + height: 50px; + width: 100%; + margin-block-start: 1px; + transition: background-color 0.3s linear; +} +.elementor-template-library-template-local:hover { + background-color: var(--e-a-bg-hover); +} +.elementor-template-library-template-local:first-child { + border-start-start-radius: 3px; + border-start-end-radius: 3px; + border-end-start-radius: 0; + border-end-end-radius: 0; +} +.elementor-template-library-template-local:last-child { + border-start-start-radius: 0; + border-start-end-radius: 0; + border-end-start-radius: 3px; + border-end-end-radius: 3px; +} +.elementor-template-library-template-local .elementor-template-library-template-name { + font-weight: 500; +} +.elementor-template-library-template-local .elementor-template-library-template-name, +.elementor-template-library-template-local .elementor-template-library-template-meta { + padding-inline-end: 20px; +} +.elementor-template-library-template-local .elementor-template-library-template-name, +.elementor-template-library-template-local .elementor-template-library-template-meta, +.elementor-template-library-template-local .elementor-template-library-template-preview, +.elementor-template-library-template-local .elementor-template-library-template-action { + white-space: nowrap; + text-overflow: ellipsis; + overflow: hidden; +} +.elementor-template-library-template-local .elementor-template-library-template-controls { + position: relative; + display: flex; + align-items: center; +} +.elementor-template-library-template-local .elementor-template-library-template-controls > div { + cursor: pointer; + transition: color 0.5s; +} +.elementor-template-library-template-local .elementor-template-library-template-insert i { + margin-inline-end: 3px; +} +.elementor-template-library-template-local .elementor-template-library-template-control-title { + margin-inline-start: 6px; +} +.elementor-template-library-template-local .elementor-template-library-template-more .elementor-template-library-template-delete:hover { + color: var(--e-a-color-danger); +} +.elementor-template-library-template-local .elementor-template-library-template-more { + display: none; + position: absolute; + background-color: var(--e-a-bg-default); + padding: 3px 20px; + border-radius: var(--e-a-border-radius); + box-shadow: 1px 3px 11px rgba(0, 0, 0, 0.3); + top: 100%; + right: 0; + transform: translateX(65%) translateY(-7px); + z-index: 1; +} +.elementor-template-library-template-local .elementor-template-library-template-more:before { + content: ""; + position: absolute; + border: solid transparent; + border-width: 8px 4px; + border-block-end-color: var(--e-a-color-white); + transform: translateY(-100%); +} +.elementor-template-library-template-local .elementor-template-library-template-more > div { + margin: 10px 0; + font-size: 11px; +} +.elementor-template-library-template-local .elementor-template-library-template-more a { + color: var(--e-a-color-txt); +} +.elementor-template-library-template-local .elementor-template-library-template-more-toggle { + flex-grow: 1; + text-align: end; +} +.elementor-template-library-template-local .elementor-template-library-template-more-toggle i { + font-size: 16px; +} + +#elementor-template-library-preview { + height: 100%; + overflow: hidden; +} +#elementor-template-library-preview iframe { + height: 150%; + transform: scale(0.666) translateX(-25%) translateY(-25%); +} +@media (max-width: 1439px) { + #elementor-template-library-preview iframe { + width: 1440px; + } +} +@media (min-width: 1440px) { + #elementor-template-library-preview iframe { + width: 1730px; + } +} + +.elementor-template-library-blank-icon { + font-size: 64px; + margin-block-start: 45px; + line-height: 1; +} +.elementor-template-library-blank-icon img { + width: 70px; +} +.elementor-template-library-blank-icon .elementor-template-library-no-results { + width: 200px; +} + +.elementor-template-library-blank-title { + font-size: 30px; + margin-block-start: 20px; +} +@media (max-width: 1439px) { + .elementor-template-library-blank-title { + font-size: 25px; + } +} + +.elementor-template-library-blank-message { + font-size: 18px; + margin-block-start: 15px; + font-weight: 300; +} +@media (max-width: 1439px) { + .elementor-template-library-blank-message { + font-size: 16px; + margin-block-start: 10px; + } +} + +#elementor-template-library-save-template-form { + margin-block-start: 40px; + display: flex; + align-items: center; + justify-content: center; +} +#elementor-template-library-save-template-form > * { + height: 55px; + font-size: 16px; +} + +#elementor-template-library-save-template-name { + width: 500px; + padding-inline-start: 25px; + border-start-start-radius: 3px; + border-start-end-radius: 0; + border-end-start-radius: 3px; + border-end-end-radius: 0; +} + +#elementor-template-library-save-template-submit { + width: 150px; + border-start-start-radius: 0; + border-start-end-radius: 3px; + border-end-start-radius: 0; + border-end-end-radius: 3px; +} + +#elementor-template-library-import-form { + width: 95%; + padding: 60px; + border: 2px dashed var(--e-a-border-color-bold); + margin: 35px auto; + transition: var(--e-a-transition-hover); +} +#elementor-template-library-import-form-or { + margin-block-start: 15px; + font-size: 18px; +} +#elementor-template-library-import-form-label { + margin-block-start: 20px; + padding: 15px 35px; + display: inline-block; +} +#elementor-template-library-import-form-input { + display: none; +} +#elementor-template-library-import-form.elementor-drag-over { + border-color: var(--e-a-color-primary); +} +#elementor-template-library-import .elementor-template-library-blank-icon { + margin-block-start: 0; +} +#elementor-template-library-import .elementor-template-library-blank-message { + margin-block-start: 20px; +} + +.e-route-library-connect #elementor-template-library-modal .dialog-message { + max-height: 95vh; + padding: 100px 0 0; + min-height: 550px; +} + +#elementor-template-library-connect-logo { + font-size: 20px; +} +#elementor-template-library-connect__button { + display: inline-block; + position: relative; + z-index: 1; + margin-block-start: 25px; + padding: 12px 24px; + font-size: 14px; +} +#elementor-template-library-connect__background-image-left-1 { + right: 22.4%; + bottom: -29%; + animation: 1.5s fadeIn, 1.5s slideDown, 3.5s mover 1.5s infinite alternate; +} +#elementor-template-library-connect__background-image-left-2 { + right: 46.25%; + bottom: -15.5%; + animation: 3s fadeIn, 3s slideDown, 2s mover 3s infinite alternate; +} +#elementor-template-library-connect__background-image-right-1 { + left: 37%; + bottom: -41%; + animation: 2.5s fadeIn, 2.5s slideDown, 2s mover 2.5s infinite alternate; +} +#elementor-template-library-connect__background-image-right-2 { + left: 48%; + bottom: -12.5%; + animation: 1.5s fadeIn, 1.5s slideDown, 1.5s mover 1.5s infinite alternate; +} + +.elementor-template-library-connect__background-image { + position: absolute; +} + +.elementor-template-library-blank-footer { + position: absolute; + bottom: 70px; + left: 50%; + transform: translateX(-50%); + font-style: italic; + color: var(--e-a-color-txt-muted); +} +@media (max-height: 700px) { + .elementor-template-library-blank-footer { + display: none; + } +} + +#elementor-template-library-footer-banner { + padding-block-end: 45px; +} +#elementor-template-library-footer-banner i { + font-size: 56px; + margin-block-start: 40px; +} +#elementor-template-library-footer-banner .elementor-nerd-box-icon { + margin-block-start: 70px; +} + +#elementor-template-library-templates-empty { + width: 100%; + margin-block-start: 40px; +} + +#elementor-template-library-error-dialog .dialog-message { + text-align: start; +} + +#elementor-template-library-error-info { + margin-block-start: 10px; +} + +@media (max-width: 1439px) { + .elementor-template-library-local-column-1 { + width: 33%; + } + .elementor-template-library-local-column-2 { + width: 10%; + } + .elementor-template-library-local-column-3 { + width: 15%; + } + .elementor-template-library-local-column-4 { + width: 15%; + } + .elementor-template-library-local-column-5 { + width: 27%; + } +} +@media (min-width: 1440px) { + .elementor-template-library-local-column-1 { + width: 25%; + } + .elementor-template-library-local-column-2 { + width: 17%; + } + .elementor-template-library-local-column-3 { + width: 17%; + } + .elementor-template-library-local-column-4 { + width: 17%; + } + .elementor-template-library-local-column-5 { + width: 24%; + } +} +@media (max-width: 1024px) { + .elementor-template-library-local-column-3 { + display: none; + } + .elementor-template-library-local-column-5 { + width: 41%; + } +} +.elementor-tags-list { + display: none; + position: absolute; + width: 260px; + max-height: 300px; + overflow: auto; + padding-block-end: 5px; + background-color: var(--e-a-bg-default); + box-shadow: var(--e-a-popover-shadow); + border: var(--e-a-border); + border-radius: 3px; + z-index: 10000; +} +.elementor-tags-list__group-title { + font-weight: bold; + font-size: 12px; + padding: 10px 15px; + display: flex; + align-items: center; +} +.elementor-tags-list__group-title .eicon-info-circle { + padding-inline-end: 5px; + color: var(--e-a-color-primary-bold); + font-size: 14px; +} +.elementor-tags-list__item { + font-size: 10px; + padding: 6px 15px; + cursor: pointer; +} +.elementor-tags-list__item:before { + content: ">"; + font-size: 8px; + padding-inline-end: 5px; +} +.elementor-tags-list__item:hover { + background-color: var(--e-a-bg-hover); +} +.elementor-tags-list__teaser { + border-block-start: 2px solid var(--e-a-border-color); + padding-block-start: 4px; + margin-block-start: 4px; +} +.elementor-tags-list__teaser-text { + padding: 2px 15px 8px; + line-height: 1.5; + font-size: 12px; +} +.elementor-tags-list__teaser-link { + color: var(--e-a-color-primary-bold); + text-decoration: underline; + font-style: italic; + font-weight: bold; +} + +.elementor-dynamic-cover { + display: flex; + align-items: center; + width: 100%; + height: 27px; + box-sizing: border-box; +} +.elementor-dynamic-cover__title { + padding: 0 8px; + flex-grow: 1; + white-space: nowrap; + text-overflow: ellipsis; + overflow: hidden; +} +.elementor-dynamic-cover__settings, .elementor-dynamic-cover__remove { + cursor: pointer; + transition: var(--e-a-transition-hover); +} +.elementor-dynamic-cover__settings:hover, .elementor-dynamic-cover__remove:hover { + color: var(--e-a-color-txt-hover); +} +.elementor-control-type-wysiwyg .elementor-dynamic-cover { + margin-block-start: 10px; +} + +.elementor-tag-settings-popup { + position: absolute; + width: 260px; + background-color: var(--e-a-bg-default); + border: var(--e-a-border); + box-shadow: var(--e-a-popover-shadow); + z-index: 1; +} +.elementor-tag-settings-popup:before { + content: ""; + position: absolute; + top: -20px; + left: 5px; + border: 10px solid transparent; + border-block-end-color: var(--e-a-border-color); +} +.elementor-tag-settings-popup .elementor-control-type-section:first-child { + margin: 0; +} + +.elementor-tag-controls-stack-empty { + background-color: var(--e-a-bg-default); + padding: 10px; + font-size: 13px; + text-align: center; +} + +.elementor-control-dynamic input { + border-start-start-radius: var(--e-a-border-radius); + border-start-end-radius: 0; + border-end-end-radius: 0; + border-end-start-radius: var(--e-a-border-radius); +} +.elementor-control-dynamic-switcher { + display: inline-flex; + align-items: center; + justify-content: center; + flex-shrink: 0; + height: 27px; + cursor: pointer; + border: var(--e-a-border-bold); + background: var(--e-a-bg-default); + border-inline-start-width: 0; + border-start-start-radius: 0; + border-start-end-radius: var(--e-a-border-radius); + border-end-end-radius: var(--e-a-border-radius); + border-end-start-radius: 0; + transition: var(--e-a-transition-hover); +} +.elementor-control-dynamic-switcher:hover { + background-color: var(--e-a-bg-hover); + color: var(--e-a-color-txt-hover); +} +.elementor-control-dynamic-switcher.e-control-tool { + height: 20px; + border: 0; +} +.elementor-control-dynamic-switcher-wrapper { + display: flex; +} +.elementor-control-dynamic-switcher .eicon-database { + font-size: 12px; +} +.elementor-control-dynamic-value .elementor-control-tag-area, +.elementor-control-dynamic-value .elementor-control-dynamic-switcher, +.elementor-control-dynamic-value .e-global__popover-toggle { + display: none; +} + +.elementor-context-menu { + position: absolute; + width: 250px; + padding: 5px 0px; + background-color: var(--e-a-bg-default); + border-radius: var(--e-a-border-radius); + box-shadow: var(--e-a-popover-shadow); + -webkit-user-select: none; + -moz-user-select: none; + user-select: none; + z-index: 101; +} +.elementor-context-menu-list { + display: flex; + flex-direction: column; +} +.elementor-context-menu-list__group { + display: flex; + flex-direction: column; +} +.elementor-context-menu-list__group:not(:last-child) { + border-block-end: var(--e-a-border); +} +.elementor-context-menu-list__item { + padding: 12px 20px; + display: flex; + gap: 16px; + cursor: pointer; + transition: var(--e-a-transition-hover); + align-items: center; +} +.elementor-context-menu-list__item--disabled { + cursor: default; + opacity: 0.5; + color: var(--e-a-color-disabled); +} +.elementor-context-menu-list__item:not(.elementor-context-menu-list__item--disabled):hover, .elementor-context-menu-list__item:not(.elementor-context-menu-list__item--disabled):focus { + background-color: var(--e-a-bg-hover); + color: var(--e-a-color-hover); +} +.elementor-context-menu-list__item__icon { + display: none; + width: 20px; +} +.elementor-context-menu-list__item__title { + flex-grow: 1; + white-space: nowrap; + text-overflow: ellipsis; + overflow: hidden; +} +.elementor-context-menu-list__item__shortcut { + color: var(--e-a-color-txt-muted); +} +.elementor-context-menu-list__item__shortcut--link-fullwidth { + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + z-index: 2; + cursor: pointer; +} +.elementor-context-menu-list__item__title, .elementor-context-menu-list__item__shortcut { + font-size: 14px; + font-style: normal; + font-weight: 400; + line-height: 1; + position: relative; +} +.elementor-context-menu-list__item.elementor-context-menu-list__item-delete:not(.elementor-context-menu-list__item--disabled):hover > *, .elementor-context-menu-list__item.elementor-context-menu-list__item-delete:not(.elementor-context-menu-list__item--disabled):focus > * { + color: var(--e-global-color-danger); +} +.elementor-context-menu .eicon-pro-icon { + color: var(--e-global-color-accent); +} + +#elementor-hotkeys { + text-align: start; +} +#elementor-hotkeys__modal .dialog-buttons-wrapper { + display: none; +} +#elementor-hotkeys__content { + display: flex; + justify-content: space-between; + gap: 70px; + padding: 20px 30px; + width: 100%; + overflow: hidden; +} +@media (max-width: 1024px) { + #elementor-hotkeys__content { + flex-direction: column; + gap: 20px; + padding: 20px; + } +} + +.elementor-hotkeys__col { + display: flex; + flex-direction: column; + gap: 20px; + width: 100%; +} +.elementor-hotkeys__header { + font-weight: 500; +} +.elementor-hotkeys__item { + display: flex; + align-items: center; + padding: 20px 10px; +} +.elementor-hotkeys__item:not(:last-child) { + border-block-end: var(--e-a-border); +} +.elementor-hotkeys__item--label { + font-size: 13px; + font-weight: 400; + flex-grow: 1; +} +.elementor-hotkeys__item--shortcut { + flex-grow: 0; + display: flex; + gap: 27px; +} +@media (max-width: 1024px) { + .elementor-hotkeys__item--shortcut { + gap: 23px; + } +} +.elementor-hotkeys__item--shortcut kbd { + position: relative; + font-family: unset; + background-color: var(--e-a-bg-active); + padding: 5px 12px; + border-radius: var(--e-a-border-radius); +} +@media (max-width: 1024px) { + .elementor-hotkeys__item--shortcut kbd { + padding: 4px 9px; + } +} +.elementor-hotkeys__item--shortcut kbd:not(:last-of-type)::after { + content: "+"; + position: absolute; + right: 0; + width: 9px; + text-align: center; + margin-inline-end: -18px; +} +@media (max-width: 1024px) { + .elementor-hotkeys__item--shortcut kbd:not(:last-of-type)::after { + margin-inline-end: -16px; + } +} + +.ui-resizable-n { + top: -5px; +} +.ui-resizable-e { + right: -5px; +} +.ui-resizable-s { + bottom: -5px; +} +.ui-resizable-w { + left: -5px; +} +.ui-resizable-ne { + top: -5px; + right: -5px; +} +.ui-resizable-nw { + top: -5px; + left: -5px; +} +.ui-resizable-se { + bottom: -5px; + right: -5px; +} +.ui-resizable-sw { + bottom: -5px; + left: -5px; +} +.ui-resizable-n, .ui-resizable-s { + left: 0; + height: 10px; + width: 100%; + cursor: ns-resize; +} +.ui-resizable-e, .ui-resizable-w { + top: 0; + height: 100%; + width: 10px; + cursor: ew-resize; +} +.ui-resizable-ne, .ui-resizable-nw, .ui-resizable-se, .ui-resizable-sw { + height: 15px; + width: 15px; +} +.ui-resizable-nw, .ui-resizable-se { + cursor: nwse-resize; +} +.ui-resizable-ne, .ui-resizable-sw { + cursor: nesw-resize; +} +.ui-resizable-handle { + position: absolute; +} +.ui-resizable-resizing { + pointer-events: none; +} + +body { + --e-editor-navigator-width: 240px; +} + +#elementor-navigator { + position: fixed; + top: 100px; + width: var(--e-editor-navigator-width); + height: 50vh; + right: 30px; + background-color: var(--e-a-bg-default); + border: var(--e-a-border); + box-shadow: 0 2px 20px 0 rgba(0, 0, 0, 0.1); + -webkit-user-select: none; + -moz-user-select: none; + user-select: none; + overflow: hidden; + z-index: 100; + display: none; +} +body.elementor-navigator-docked #elementor-navigator { + top: 0; + right: 0; + height: 100%; +} +body:not(.elementor-navigator-docked) #elementor-navigator { + border-radius: 5px; +} +#elementor-navigator__inner { + height: 100%; +} +#elementor-navigator__header { + display: flex; + align-items: stretch; + border-block-end: var(--e-a-border); + color: var(--e-a-color-txt-accent); +} +#elementor-navigator__header__title { + flex: 1; + text-align: center; + font-size: 13px; + font-weight: 400; + padding: 10px 0; + cursor: move; +} +#elementor-navigator__close, #elementor-navigator__toggle-all { + color: var(--e-a-color-txt); + background-color: transparent; + border: none; + outline: 0; + padding: 10px; + cursor: pointer; + transition: color 0.5s; +} +#elementor-navigator__close:hover, #elementor-navigator__toggle-all:hover { + color: var(--e-a-color-txt-hover); +} +#elementor-navigator__close:focus, #elementor-navigator__toggle-all:focus { + color: var(--e-a-color-txt-active); +} +#elementor-navigator__toggle-all { + font-size: 13px; +} +#elementor-navigator__close { + font-size: 11px; +} +#elementor-navigator__elements { + height: calc(100% - 49px); + overflow: auto; + position: relative; +} +.elementor-navigator-docked #elementor-navigator__elements { + height: calc(100% - 35px); +} +#elementor-navigator__elements .elementor-nerd-box { + padding: 25px; +} +#elementor-navigator__elements > .elementor-navigator__element-section { + border-block-end: var(--e-a-border); +} +#elementor-navigator__elements.elementor-navigator-list__promotion { + height: calc(100% - 80px); +} +#elementor-navigator__footer { + position: absolute; + width: 100%; + left: 0; + bottom: 0; + text-align: center; +} +#elementor-navigator__footer__resize-bar { + border-block-start: var(--e-a-border); +} +.elementor-navigator-docked #elementor-navigator__footer__resize-bar { + display: none; +} +#elementor-navigator__footer__promotion { + font-size: 12px; + padding: 4px 17px; + line-height: 22px; + font-family: "Roboto", sans-serif; + color: var(--e-a-bg-logo); +} +#elementor-navigator__footer__promotion a { + color: var(--e-a-color-accent-promotion); +} + +.elementor-navigator__item { + position: relative; + display: flex; + height: 30px; + cursor: pointer; + transition: padding 0.5s linear; + overflow: hidden; +} +.elementor-navigator__item:hover, .elementor-navigator__item:focus { + background-color: var(--e-a-bg-hover); +} +.elementor-navigator__item:active { + background-color: var(--e-a-bg-active); + color: var(--e-a-color-txt-accent); +} +.elementor-navigator__item[data-locked=true] { + cursor: not-allowed; +} +.elementor-navigator__item:not(.elementor-active) .elementor-navigator__element__list-toggle i { + transform: rotate(-90deg); +} +.elementor-navigator__item > * { + display: flex; + align-items: center; +} +.elementor-navigator__item + .elementor-navigator__elements { + display: none; +} +.elementor-navigator__elements > .elementor-navigator__element-section, +.elementor-navigator__elements > .elementor-navigator__element-container:not(:last-child) { + border-block-end: var(--e-a-border); +} +.elementor-navigator__elements .elementor-empty-view { + padding: 10px; +} +.elementor-navigator__elements .elementor-empty-view__title { + margin-inline-start: 23px; + font-size: 10px; + font-style: italic; +} +.elementor-navigator__elements .ui-sortable-helper { + box-shadow: 1px 2px 5px 0 rgba(0, 0, 0, 0.1); + transform: rotate(4deg); + background-color: var(--e-a-bg-active); + color: var(--e-a-color-txt-accent); + pointer-events: none; +} +.elementor-navigator__elements .ui-sortable-placeholder { + background-color: var(--e-a-bg-hover); +} +.elementor-navigator__element.elementor-dragging-on-child > .elementor-navigator__elements > .elementor-empty-view { + border-block-start: var(--e-a-border); +} +.elementor-navigator__element.elementor-dragging-on-child > .elementor-navigator__elements > .elementor-empty-view .elementor-empty-view__title { + display: none; +} +.elementor-navigator__element.elementor-dragging-on-child > .elementor-navigator__elements > .elementor-empty-view + .ui-sortable-placeholder { + display: none; +} +.elementor-navigator__element:not(.elementor-navigator__element--has-children) .elementor-navigator__element__list-toggle { + visibility: hidden; +} +.elementor-navigator__element:not(.elementor-navigator__element--hidden) > .elementor-navigator__item .elementor-navigator__element__toggle { + color: var(--e-a-color-txt-default); +} +.elementor-navigator__element:not(.elementor-navigator__element--hidden) > .elementor-navigator__item .elementor-navigator__element__toggle:hover { + color: var(--e-a-color-txt-hover); +} +.elementor-navigator__element:not(.elementor-navigator__element--hidden) > .elementor-navigator__item:not(:hover) .elementor-navigator__element__toggle { + display: none; +} +.elementor-navigator__element:not(.elementor-navigator__element--hidden) > .elementor-navigator__item.elementor-editing { + background-color: var(--e-a-bg-active); +} +.elementor-navigator__element__list-toggle { + margin-inline-end: 7px; + transition: transform 0.3s; +} +.elementor-navigator__element__element-type { + margin-inline-end: 8px; + font-size: 14px; +} +.elementor-navigator__element__title { + flex-grow: 1; + overflow: hidden; +} +.elementor-navigator__element__title__text { + white-space: nowrap; + -webkit-user-select: text; + -moz-user-select: text; + user-select: text; +} +.elementor-navigator__element__title__text[contenteditable=true] { + outline: none; + background-color: var(--e-a-bg-hover); + padding: var(--e-admin-border-radius); + border: var(--e-a-border); +} +.elementor-navigator__element__title__text:not([contenteditable=true]) { + padding: 3px 0; + white-space: nowrap; + text-overflow: ellipsis; + overflow: hidden; +} +.elementor-navigator__element__toggle { + position: absolute; + right: 15px; + height: 100%; + z-index: 0; + font-size: 13px; +} +.elementor-navigator__element__indicators { + position: relative; + transition: transform 0.5s; + padding-inline-start: 5px; + z-index: 91; +} +.elementor-navigator__element__indicators:not(:hover) { + transform: translateX(calc(100% - 8px)); +} +.elementor-navigator__element__indicator { + height: 100%; + width: 31px; + display: inline-flex; + align-items: center; + justify-content: center; + color: var(--e-a-color-txt); + background-color: var(--e-a-bg-default); + border-inline-start: var(--e-a-border); +} +.elementor-navigator__element__indicator:first-child { + border-inline-start: 3px solid var(--e-a-border-color-accent); +} +.elementor-editing .elementor-navigator__element__indicator:first-child { + border-color: #242729; +} +.elementor-navigator__element__indicator:hover { + color: var(--e-a-color-txt-hover); +} +.elementor-navigator__element--hidden .elementor-navigator__element__title, +.elementor-navigator__element--hidden .elementor-navigator__element__toggle { + opacity: 0.5; +} + +.e-notice-bar { + position: absolute; + width: 100%; + bottom: 0; + display: flex; + align-items: center; + height: 40px; + color: #fff; + background-color: var(--e-a-color-accent); + padding: 0 25px; +} +.e-notice-bar__message a { + text-decoration: underline; + color: var(--e-a-color-txt-invert); +} +.e-notice-bar__message a:hover { + color: #D5D8DC; +} +.e-notice-bar__primary_action { + margin-inline: 12px; +} +.e-notice-bar__primary_action a { + background: #ffffff; + border-radius: 3px; + color: #93003f; + padding: 4px 10px; + font-size: 11px; +} +.e-notice-bar__primary_action a:hover { + color: #47001e; + background: #F1F2F3; +} +.e-notice-bar__secondary_message, .e-notice-bar__secondary_action { + font-size: 11px; +} +.e-notice-bar__secondary_action { + margin-inline: 4px; +} +.e-notice-bar__secondary_action a { + color: #ffffff; + text-decoration: underline; +} +.e-notice-bar__secondary_action a:hover { + color: #F1F2F3; +} +.e-notice-bar__close { + cursor: pointer; + margin-inline-start: auto; +} +.e-notice-bar__icon { + margin-inline-end: 8px; +} +.e-notice-bar i { + font-size: 16px; + opacity: 0.9; +} +.e-notice-bar i:hover { + color: #D5D8DC; +} +.e-notice-bar a, +.e-notice-bar i { + transition: var(--e-a-transition-hover); +} + +body:not(.elementor-device-desktop) #e-notice-bar { + display: none; +} + +#elementor-fatal-error-dialog .dialog-message a { + text-decoration: underline; +} + +#elementor-preview-debug-link-text { + display: inline-block; +} + +#elementor-icons-manager-modal .dialog-message { + padding: 0; + height: 700px; +} +#elementor-icons-manager-modal .dialog-content { + display: flex; +} +#elementor-icons-manager__wrapper { + display: flex; +} +@media (max-width: 479px) { + #elementor-icons-manager__sidebar { + display: none; + } +} +#elementor-icons-manager__tab-links { + margin-block-start: 30px; +} +#elementor-icons-manager__upload { + margin: 20px 45px; + padding-block-start: 35px; + border-block-start: var(--e-a-border); + display: flex; + align-items: center; + justify-content: space-between; +} +@media (max-width: 1439px) { + #elementor-icons-manager__upload { + margin: 20px 25px; + } +} +#elementor-icons-manager__main { + display: flex; + flex-direction: column; + padding: 30px 80px 0; +} +@media (max-width: 1439px) { + #elementor-icons-manager__main { + padding: 30px 50px 0; + } +} +@media (max-width: 479px) { + #elementor-icons-manager__main { + width: 100%; + } +} +#elementor-icons-manager__search { + position: relative; +} +#elementor-icons-manager__search input { + padding: 8px 15px; + background-color: transparent; +} +#elementor-icons-manager__search i { + position: absolute; + top: 50%; + transform: translateY(-50%); + right: 15px; +} +#elementor-icons-manager__tab__wrapper { + overflow: auto; + margin: 25px -15px 0; + padding: 0 15px 15px; +} +#elementor-icons-manager__tab__title { + color: var(--e-a-color-txt); + font-size: 16px; + font-weight: 500; + text-align: start; +} +@media (max-width: 479px) { + #elementor-icons-manager__tab__title { + display: none; + } +} +#elementor-icons-manager__tab__content { + display: grid; + grid-template-columns: repeat(7, 1fr); + grid-gap: 20px; + margin: 20px 0; +} +@media (max-width: 1439px) { + #elementor-icons-manager__tab__content { + grid-template-columns: repeat(6, 1fr); + } +} +@media (max-width: 1024px) { + #elementor-icons-manager__tab__content { + grid-template-columns: repeat(5, 1fr); + } +} +@media (max-width: 767px) { + #elementor-icons-manager__tab__content { + grid-template-columns: repeat(4, 1fr); + } +} +@media (max-width: 479px) { + #elementor-icons-manager__tab__content { + grid-template-columns: repeat(3, 1fr); + } +} +#elementor-icons-manager__promotion { + display: flex; + align-items: center; + flex-direction: column; + padding-block-start: 70px; +} +#elementor-icons-manager__promotion__icon { + font-size: 60px; +} +#elementor-icons-manager__promotion__text { + width: 300px; + font-size: 16px; + padding-block-start: 25px; +} +#elementor-icons-manager__promotion__link { + margin-block-start: 20px; +} + +.elementor-icons-manager__tab-link { + padding-block: 15px; + padding-inline: 45px 0; + font-size: 12px; + text-align: start; + cursor: pointer; + position: relative; +} +.elementor-icons-manager__tab-link i { + font-size: 20px; + padding-inline-end: 15px; +} +@media (max-width: 1024px) { + .elementor-icons-manager__tab-link i { + display: none; + } +} +.elementor-icons-manager__tab-link:hover { + background-color: var(--e-a-bg-hover); +} +.elementor-icons-manager__tab-link.elementor-active { + background-color: var(--e-a-bg-active); + color: var(--e-a-color-txt-accent); +} +.elementor-icons-manager__tab-link.elementor-active:after { + content: ""; + position: absolute; + height: 100%; + width: 3px; + top: 0; + left: 0; + background-color: var(--e-a-border-color-accent); +} +.elementor-icons-manager__tab__item { + position: relative; + height: 0; + padding-block-end: 100%; + border: var(--e-a-border); + border-radius: 3px; + cursor: pointer; + transition: var(--e-a-transition-hover); + overflow: hidden; +} +.elementor-icons-manager__tab__item:hover { + background-color: var(--e-a-bg-hover); +} +.elementor-icons-manager__tab__item.elementor-selected { + background-color: var(--e-a-bg-active); + border-color: var(--e-a-border-color-accent); + color: var(--e-a-color-txt-accent); +} +.elementor-icons-manager__tab__item__content { + display: flex; + flex-direction: column; + align-items: center; + width: 100%; + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + padding: 1px; +} +.elementor-icons-manager__tab__item__icon { + font-size: 25px; +} +.elementor-icons-manager__tab__item__name { + font-size: 11px; + padding: 13px 20px 0; + max-width: 100%; + white-space: nowrap; + text-overflow: ellipsis; + overflow: hidden; +} + +.elementor-color-picker__header { + display: flex; + justify-content: space-between; + align-items: center; + font-weight: bold; + padding: 10px; + box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1); +} + +.e-color-picker__tools { + display: flex; +} + +.e-control-color--no-value .pcr-button { + background-image: linear-gradient(135deg, transparent 46%, #ff3030 50%, transparent 54%); + background-size: cover; + background-color: transparent; +} + +.pickr { + border: var(--e-a-border); + height: 27px; +} +.pickr .pcr-button { + height: 100%; + width: 100%; + border-radius: var(--e-a-border-radius); +} +.pickr .pcr-button:before, .pickr .pcr-button:after { + height: 12px; + width: 12px; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); +} + +.pcr-app { + background-color: var(--e-a-bg-default); + color: var(--e-a-color-txt); + box-shadow: var(--e-a-popover-shadow); + font-family: var(--e-a-font-family); +} +.pcr-app[data-theme=monolith] { + padding: 0; + width: 270px; +} +.pcr-app[data-theme=monolith] .pcr-selection .pcr-color-opacity, +.pcr-app[data-theme=monolith] .pcr-selection .pcr-color-chooser { + height: 8px; +} +.pcr-app[data-theme=monolith] .pcr-selection .pcr-color-palette { + height: 150px; +} +.pcr-app .pcr-interaction { + padding-block-end: 20px; +} +.pcr-app .pcr-interaction input.pcr-result { + border: var(--e-a-border); + color: var(--e-a-color-txt); + border-radius: var(--e-a-border-radius); + margin: 0; + background-color: transparent; +} +.pcr-app .pcr-interaction input.pcr-result:focus { + box-shadow: none; + border-color: var(--e-a-border-color-bold); +} +.pcr-app .pcr-interaction input.pcr-type { + all: unset; + font-size: 10px; + color: var(--e-a-color-txt-muted); + padding-inline-start: 5px; + cursor: pointer; +} +.pcr-app .pcr-interaction input.pcr-type.active { + background-color: transparent; + color: var(--e-a-color-txt-accent); +} +.pcr-selection, .pcr-interaction { + padding: 0 20px; +} +.pcr-selection { + padding-block-start: 20px; +} +.pcr .elementor-control-dynamic-switcher { + height: 20px; + border: 0; +} + +.select2-container { + width: 100% !important; + outline: none; + z-index: 9999; + font-size: 12px; +} +.select2-container .e-select2-placeholder { + color: var(--e-a-color-txt-muted); +} +.select2-container.select2-container--default .select2-selection--single { + height: 27px; + background-color: transparent; +} +.select2-container.select2-container--default .select2-selection--single .select2-selection__rendered { + color: var(--e-a-color-txt); + line-height: 27px; +} +.select2-container.select2-container--default .select2-results__option--highlighted[aria-selected] { + background-color: var(--e-a-bg-hover); + color: var(--e-a-color-txt-hover); +} +.select2-container.select2-container--default .select2-selection--multiple { + background-color: var(--e-a-bg-default); + min-height: 27px; + line-height: 0; +} +.select2-container.select2-container--default .select2-selection--multiple .select2-selection__clear { + display: none; +} +.select2-container.select2-container--default .select2-selection--multiple .select2-selection__choice { + background-color: var(--e-a-btn-bg); + color: var(--e-a-btn-color-invert); + line-height: 1.2; + font-size: 10px; + border: none; + border-radius: 0; + padding: 2px 3px; +} +.select2-container.select2-container--default .select2-selection--multiple .select2-selection__choice.select2-selection__e-plus-button { + cursor: pointer; + width: 16.67px; + text-indent: -9999px; + position: relative; +} +.select2-container.select2-container--default .select2-selection--multiple .select2-selection__choice.select2-selection__e-plus-button:after { + content: "\e815"; + font-family: "eicons"; + color: var(--e-a-btn-color-invert); + text-indent: 0; + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + display: flex; + justify-content: center; + align-items: center; +} +.select2-container.select2-container--default .select2-selection--multiple .select2-selection__rendered { + padding-block-end: 5px; +} +.select2-container.select2-container--default .select2-selection--multiple .select2-selection__choice__remove { + color: var(--e-a-btn-color-invert); + margin-inline-end: 3px; +} +.select2-container:not(.select2-container--open):not(.select2-container--focus) .select2-selection--single, +.select2-container:not(.select2-container--open):not(.select2-container--focus) .select2-selection--multiple { + background-color: var(--e-a-bg-default); + color: var(--e-a-color-txt); + border-color: var(--e-a-border-color); +} +.select2-container.select2-container--open .select2-selection--single, +.select2-container.select2-container--open .select2-selection--multiple, .select2-container.select2-container--focus .select2-selection--single, +.select2-container.select2-container--focus .select2-selection--multiple { + border-color: var(--e-a-border-color-bold); +} + +.select2-selection { + outline: none; +} +.select2-selection--single { + height: 27px; +} + +.select2-selection__arrow { + height: 27px; + top: 0; +} + +.select2-results__option[aria-selected=true] { + background-color: var(--e-a-bg-active); + color: var(--e-a-color-txt-active); +} +.select2-results__option[aria-selected=true]:not(.select2-results__option--highlighted) { + background-color: var(--e-a-bg-active); +} + +.select2-dropdown { + border-color: var(--e-a-border-color); + background-color: var(--e-a-bg-default); + color: var(--e-a-color-txt); + box-shadow: var(--e-a-dropdown-shadow); +} +.select2-dropdown .select2-search__field { + outline: none; +} + +.e-ui-state--document-scrubbing-mode__on, .e-ui-state--document-scrubbing-mode__on * { + cursor: ew-resize; +} +.e-ui-state--document-scrubbing-mode__on input.e-scrubbing--active, .e-ui-state--document-scrubbing-mode__on input.e-scrubbing--active:focus { + box-shadow: 0 0 0 1px #0e3b9c inset; +} +.e-ui-state--document-scrubbing-mode__on label.e-scrubbing--active { + color: #0e3b9c; + -webkit-user-select: none; + -moz-user-select: none; + user-select: none; +} +.e-ui-state--document-scrubbing-mode__on iframe { + pointer-events: none; +} + +label.e-scrubbing-over { + cursor: ew-resize; +} + +#elementor-paste-area-dialog { + text-align: center; +} +#elementor-paste-area-dialog .dialog-header { + padding-block-start: 60px; + font-size: 30px; +} +#elementor-paste-area-dialog .dialog-message { + padding: 0 15px 15px; + font-size: 15px; + position: relative; +} +#elementor-paste-area-dialog #elementor-paste-area-dialog__input { + background: transparent; + color: transparent; + border-color: transparent; + padding: 0; + margin: 0; + height: 100px; + position: absolute; + top: -60px; + left: 0; + right: 0; +} +#elementor-paste-area-dialog #elementor-paste-area-dialog__input:focus { + border-color: transparent; + outline: none; +} +#elementor-paste-area-dialog .dialog-widget-content { + width: 400px; +} +#elementor-paste-area-dialog .dialog-widget-content .eicon-loading { + display: none; +} +#elementor-paste-area-dialog .dialog-widget-content.e-state-loading .eicon-loading { + display: block; + margin-block-start: 15px; +} +#elementor-paste-area-dialog #elementor-paste-area-dialog__error { + color: var(--e-a-color-danger); + font-size: 12px; +} +#elementor-paste-area-dialog #elementor-paste-area-dialog__error:before { + content: ""; + border-block-start: var(--e-a-border); + display: block; + margin: 10px -15px; +} + +[class^=eicon-flex], [class*=" eicon-flex"] { + transition: 0.3s all; + --is-ltr: 1; + --is-rtl: 0; + --rotation-direction: calc(var(--is-ltr) - var(--is-rtl)); +} +[class^=eicon-flex].eicon-inline, [class*=" eicon-flex"].eicon-inline { + max-height: 1em; + max-width: 1em; +} +[class^=eicon-flex]:is(.eicon-justify-start-h, .eicon-justify-end-h), [class*=" eicon-flex"]:is(.eicon-justify-start-h, .eicon-justify-end-h) { + --rotation-direction: calc(var(--is-ltr) + var(--is-rtl)); +} +:is(.e-ui-state--document-direction-mode__column, .e-ui-state--document-direction-mode__column-reverse) [class^=eicon-flex]:not(.eicon-wrap):not(.eicon-nowrap):not(.eicon-grow), :is(.e-ui-state--document-direction-mode__column, .e-ui-state--document-direction-mode__column-reverse) [class*=" eicon-flex"]:not(.eicon-wrap):not(.eicon-nowrap):not(.eicon-grow) { + transform: rotate(calc(var(--rotation-direction) * 90deg)); +} +:is(.e-ui-state--document-direction-mode__column, .e-ui-state--document-direction-mode__column-reverse) [class^=eicon-flex]:not(.eicon-wrap):not(.eicon-nowrap):not(.eicon-grow):is(.eicon-align-start-v, .eicon-align-end-v), :is(.e-ui-state--document-direction-mode__column, .e-ui-state--document-direction-mode__column-reverse) [class*=" eicon-flex"]:not(.eicon-wrap):not(.eicon-nowrap):not(.eicon-grow):is(.eicon-align-start-v, .eicon-align-end-v) { + transform: rotate(calc(var(--rotation-direction) * -90deg)); +} +.e-ui-state--document-direction-mode__column-reverse [class^=eicon-flex]:not(.eicon-wrap):not(.eicon-nowrap):not(.eicon-grow):is(.eicon-justify-start-h, .eicon-justify-end-h, .eicon-order-start, .eicon-order-end), .e-ui-state--document-direction-mode__column-reverse [class*=" eicon-flex"]:not(.eicon-wrap):not(.eicon-nowrap):not(.eicon-grow):is(.eicon-justify-start-h, .eicon-justify-end-h, .eicon-order-start, .eicon-order-end) { + transform: rotate(calc(var(--rotation-direction) * -90deg)); +} +.e-ui-state--document-direction-mode__row [class^=eicon-flex]:not(.eicon-wrap):not(.eicon-nowrap):not(.eicon-grow):is(.eicon-justify-start-h, .eicon-justify-end-h, .eicon-order-start, .eicon-order-end), .e-ui-state--document-direction-mode__row [class*=" eicon-flex"]:not(.eicon-wrap):not(.eicon-nowrap):not(.eicon-grow):is(.eicon-justify-start-h, .eicon-justify-end-h, .eicon-order-start, .eicon-order-end) { + transform: rotate(calc(var(--is-rtl) * 180deg)); +} +.e-ui-state--document-direction-mode__row-reverse [class^=eicon-flex]:not(.eicon-wrap):not(.eicon-nowrap):not(.eicon-grow):is(.eicon-justify-start-h, .eicon-justify-end-h, .eicon-order-start, .eicon-order-end), .e-ui-state--document-direction-mode__row-reverse [class*=" eicon-flex"]:not(.eicon-wrap):not(.eicon-nowrap):not(.eicon-grow):is(.eicon-justify-start-h, .eicon-justify-end-h, .eicon-order-start, .eicon-order-end) { + transform: rotate(calc(var(--is-ltr) * 180deg)); +} +/*# sourceMappingURL=editor.css.map */ \ No newline at end of file diff --git a/wp-content/plugins/elementor/assets/css/editor.min.css b/wp-content/plugins/elementor/assets/css/editor.min.css new file mode 100644 index 0000000..d4ef385 --- /dev/null +++ b/wp-content/plugins/elementor/assets/css/editor.min.css @@ -0,0 +1,2 @@ +/*! elementor - v3.20.0 - 26-03-2024 */ +.elementor-control-unit-1{width:27px}.elementor-control-unit-2{width:54px}.elementor-control-unit-3{width:81px}.elementor-control-unit-4{width:108px}.elementor-control-unit-5{max-width:400px;width:52%}*,:after,:before{margin:0;padding:0;box-sizing:border-box}body,html{height:100%}html{background-color:var(--e-a-bg-loading)}iframe,img{border:0}li{list-style:none}a,body{text-decoration:none}body{color:var(--e-a-color-txt);font-family:var(--e-a-font-family);font-size:13px;font-weight:400;line-height:1;text-transform:none;overflow:hidden}body,body:after{background-color:var(--e-a-bg-default)}body:after{content:"";position:absolute;top:0;right:0;height:100%;width:0;transition:width .5s}body a{color:var(--e-a-color-info)}body a:hover{color:var(--e-a-color-primary-bold)}body.elementor-editor-active #elementor-mode-switcher-preview .eicon:before{content:"\e89f"}body.elementor-editor-preview{--e-preview-width:100%}body.elementor-editor-preview #elementor-mode-switcher-preview .eicon:before{content:"\e89e"}body.elementor-navigator--dock-hint:after{width:30px}#elementor-editor-wrapper{display:flex;width:100%;height:100vh}#elementor-panel:not(.ui-resizable-resizing),#elementor-preview:not(.ui-resizable-resizing){transition:margin .5s ease-in-out,width .5s ease-in-out}#elementor-loading{position:fixed;top:0;left:0;bottom:0;right:0;background:var(--e-a-bg-default);z-index:9999}#elementor-preview-loading{display:flex;align-items:center;justify-content:center;position:absolute;top:0;left:0;width:100%;height:100%;background-color:var(--e-a-bg-default)}#elementor-preview-loading i{color:var(--e-a-color-txt-disabled);font-size:50px}.elementor-nerd-box{padding:30px;text-align:center}.elementor-nerd-box-icon{width:100px}.elementor-nerd-box-title{margin-block-start:20px;font-size:16px;font-weight:700;line-height:1.4}.elementor-nerd-box-message{margin-block-start:5px;line-height:1.8;font-size:11px}.elementor-nerd-box .elementor-button{margin-block-start:20px}.elementor-nerd-box--upsale{padding:15px 30px 30px}.elementor-nerd-box--upsale .elementor-nerd-box-title{font-weight:500;line-height:1.2}.elementor-nerd-box--upsale .elementor-nerd-box-message{line-height:1.5}.eicon-nerd:hover:before{content:"\e8b7"}.eicon-nerd:active:before{content:"\e8b6"}.e-group-control-header{display:flex;justify-content:space-between;align-items:center;font-weight:700;font-size:12px;padding:10px;box-shadow:0 2px 8px rgba(0,0,0,.1);margin-block-end:15px}.e-control-tools{display:flex}.e-control-tool{width:20px;height:20px;display:inline-flex;border-radius:3px;margin:0 3px;border:0;position:relative;background-color:var(--e-a-bg-default)}.e-control-tool:not(.e-control-tool-disabled){box-shadow:0 1px 5px rgba(0,0,0,.1);cursor:pointer}.e-control-tool-disabled{background:var(--e-a-bg-default);pointer-events:none}.e-control-tool-disabled i{color:var(--e-a-color-txt-disabled)}.e-control-tool i{position:absolute;top:50%;left:50%;transform:translateX(-50%) translateY(-50%);color:var(--e-a-color-txt-default);font-size:13px}i.eicon-tilted{transform:rotate(90deg)}.elementor-loader-wrapper{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:300px;display:flex;flex-direction:column;align-items:center;gap:30px}.elementor-loader{border-radius:50%;padding:40px;height:150px;width:150px;background-color:var(--e-a-bg-active);box-sizing:border-box;box-shadow:2px 2px 20px 4px rgba(0,0,0,.02)}.elementor-loader-boxes{height:100%;width:100%;position:relative}.elementor-loader-box{position:absolute;background-color:var(--e-a-color-txt-hover);animation:load 1.8s linear infinite}.elementor-loader-box:first-of-type{width:20%;height:100%;left:0;top:0}.elementor-loader-box:not(:first-of-type){right:0;height:20%;width:60%}.elementor-loader-box:nth-of-type(2){top:0;animation-delay:calc(1.8s / 4 * -1)}.elementor-loader-box:nth-of-type(3){top:40%;animation-delay:calc(1.8s / 4 * -2)}.elementor-loader-box:nth-of-type(4){bottom:0;animation-delay:calc(1.8s / 4 * -3)}.elementor-loading-title{color:var(--e-a-color-txt);text-align:center;text-transform:uppercase;letter-spacing:7px;text-indent:7px;font-size:10px;width:100%}.e-input-style,input,select,textarea{color:var(--e-a-color-txt);border-radius:var(--e-a-border-radius);font-size:12px;width:100%;background:none;background-color:var(--e-a-bg-default);box-shadow:none;border:var(--e-a-border-bold);outline:none}.e-input-style:focus,.e-input-style:focus+.elementor-control-dynamic-switcher,input:focus,input:focus+.elementor-control-dynamic-switcher,select:focus,select:focus+.elementor-control-dynamic-switcher,textarea:focus,textarea:focus+.elementor-control-dynamic-switcher{border-color:var(--e-a-border-color-focus)}.elementor-error input,.elementor-error select,.elementor-error textarea{border-color:var(--e-a-color-danger)}input{min-width:0}.e-input-style,input,textarea{padding:5px}.e-input-style,textarea{resize:vertical}input[type=checkbox],input[type=radio]{height:auto;width:auto}input[type=checkbox]{margin:0;padding:0;-webkit-appearance:none;-moz-appearance:none;appearance:none;outline:none;content:none;height:15px;border-radius:var(--e-a-border-radius);margin-inline-end:5px;width:15px;border:var(--e-a-border-bold);display:inline-flex;align-items:center;justify-content:center}input[type=checkbox]:checked{background:var(--e-a-color-primary-bold);border:none}input[type=checkbox]:checked:before{display:block;content:"";width:4px;height:7px;border:solid #fff;border-width:0 2px 2px 0;transform:rotate(45deg)}input[disabled]{background-color:var(--e-a-bg-hover);cursor:not-allowed;opacity:1}select{outline:none;height:27px}.ps{overflow:hidden!important;overflow-anchor:none;touch-action:auto}.ps__rail-y{display:none;opacity:0;transition:background-color .2s linear,opacity .2s linear;width:15px;right:0;left:auto!important;position:absolute}.ps--active-y>.ps__rail-y{display:block;background-color:transparent}.ps--focus>.ps__rail-y,.ps--scrolling-y>.ps__rail-y,.ps:hover>.ps__rail-y{opacity:.6}.ps .ps__rail-y.ps--clicking,.ps .ps__rail-y:focus,.ps .ps__rail-y:hover{opacity:.9}.ps__thumb-y{background-color:#aaa;border-radius:6px;transition:background-color .2s linear,width .2s ease-in-out;width:6px;right:2px;position:absolute}.ps__rail-y.ps--clicking .ps__thumb-y,.ps__rail-y:focus>.ps__thumb-y,.ps__rail-y:hover>.ps__thumb-y{background-color:#999;width:6px}#nprogress{pointer-events:none}#nprogress .bar{background:#d004d4;position:fixed;z-index:1031;top:0;left:0;width:100%;height:2px}#nprogress .peg{display:block;position:absolute;right:0;width:100px;height:100%;box-shadow:0 0 10px #d004d4,0 0 5px #d004d4;opacity:1;transform:rotate(3deg) translateY(-4px)}#nprogress .spinner{display:none;position:fixed;z-index:1031;top:15px;right:15px}#nprogress .spinner-icon{width:18px;height:18px;box-sizing:border-box;border:2px solid transparent;border-block-start-color:#d004d4;border-inline-start-color:#d004d4;border-radius:50%;animation:nprogress-spinner .4s linear infinite}.nprogress-custom-parent{overflow:hidden;position:relative}.nprogress-custom-parent #nprogress .bar,.nprogress-custom-parent #nprogress .spinner{position:absolute}@keyframes nprogress-spinner{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}#nprogress .bar,#nprogress .spinner{z-index:100000}:root{--e-is-preview-mode:0}@media (max-width:1439px){:root{--e-editor-panel-width:280px}}@media (min-width:1440px){:root{--e-editor-panel-width:300px}}.elementor-panel{position:relative;height:100%;margin-inline-start:calc(-1 * var(--e-editor-panel-width) * var(--e-is-preview-mode));width:var(--e-editor-panel-width);overflow:visible;background-color:var(--e-a-bg-default);z-index:1;font-family:var(--e-a-font-family);font-size:13px;left:0}.elementor-panel h1,.elementor-panel h2,.elementor-panel h3,.elementor-panel h4,.elementor-panel h5,.elementor-panel h6{font-size:100%;font-weight:400}.elementor-panel abbr,.elementor-panel acronym{border:0;font-variant:normal}.elementor-panel sup{vertical-align:text-top}.elementor-panel sub{vertical-align:text-bottom}.elementor-panel img{max-width:100%;height:auto;border:0}.elementor-panel :focus{outline:0}.elementor-panel .elementor-panel-box-content{padding:20px 20px 10px}.elementor-panel .elementor-button{display:inline-block}.elementor-panel .elementor-panel-alert{background-color:var(--e-a-bg-primary);padding:15px;border-inline-start:3px solid var(--e-a-color-primary);position:relative;font-size:12px;font-weight:300;font-style:italic;line-height:1.5;text-align:start;border-start-start-radius:0;border-start-end-radius:3px;border-end-start-radius:0;border-end-end-radius:3px}.elementor-panel .elementor-panel-alert a{color:inherit}.elementor-panel .elementor-panel-alert.elementor-panel-alert-info{border-color:var(--e-a-color-info);background:var(--e-a-bg-info)}.elementor-panel .elementor-panel-alert.elementor-panel-alert-success{border-color:var(--e-a-color-success);background:var(--e-a-bg-success)}.elementor-panel .elementor-panel-alert.elementor-panel-alert-warning{border-inline-start:3px solid var(--e-a-color-warning);background:var(--e-a-bg-warning)}.elementor-panel .elementor-panel-alert.elementor-panel-alert-danger{border-color:var(--e-a-color-danger);background:var(--e-a-bg-danger)}.elementor-panel .elementor-control-field-description,.elementor-panel .elementor-descriptor{font-size:11px;font-style:italic;line-height:1.4;color:var(--e-a-color-txt-muted)}.elementor-panel .elementor-controls-popover{display:none;position:absolute;box-shadow:var(--e-a-popover-shadow);border-radius:var(--e-a-border-radius);left:0;right:0;margin:-4px auto 5px;padding-block-start:15px;width:90%;z-index:10000;background-color:var(--e-a-bg-default)}.elementor-panel .elementor-controls-popover:before{content:"";position:absolute;top:-16px;right:22px;border:8px solid transparent;border-block-end-color:var(--e-a-bg-default)}.elementor-panel .elementor-controls-popover div.elementor-control{background-color:transparent}.elementor-panel .elementor-controls-popover div.elementor-control:before{content:none}.elementor-panel #elementor-panel-global .elementor-nerd-box .elementor-nerd-box-icon{margin-block-start:20px}.elementor-editor-preview .elementor-panel{--e-is-preview-mode:1}.elementor-editor-preview .elementor-panel>.ui-resizable-e,.elementor-editor-preview .elementor-panel>.ui-resizable-w{display:none}.elementor-editor-preview .elementor-panel #elementor-panel-elements-wrapper{display:flex;flex-direction:column}.elementor-panel .ps__rail-y{z-index:2}.elementor-panel .elementor-responsive-panel{padding:0 15px;display:grid;gap:10px;grid-template-columns:repeat(auto-fill,minmax(min(135px,50% - 5px),1fr))}.elementor-panel .elementor-responsive-panel>.e-responsive-panel-stretch{grid-column:1/-1}.elementor-panel #elementor-panel-header{display:flex;align-items:center;justify-content:space-between;height:40px;width:100%;background-color:var(--e-a-dark-bg);color:var(--e-a-color-white)}.elementor-panel #elementor-panel-header>*{display:flex;align-items:center;justify-content:center}.elementor-panel .elementor-header-button{width:40px;border:0;color:currentColor;background-color:transparent}.elementor-panel .elementor-header-button .elementor-icon{cursor:pointer;display:block;font-size:19px;height:40px;line-height:40px;transition:var(--e-a-transition-hover)}.elementor-panel .elementor-header-button .elementor-icon.eicon-menu-bar{font-size:18px}.elementor-panel .elementor-header-button:focus,.elementor-panel .elementor-header-button:hover{color:var(--e-a-dark-color-txt-hover)}.elementor-panel #elementor-panel-header-title{flex:1;font-size:15px;font-weight:700}.elementor-panel #elementor-panel-header-title img{width:90px}.elementor-panel #elementor-panel-elements-categories{padding-block-end:10px;position:relative}.elementor-panel .elementor-panel-category{position:relative;border-block-end:var(--e-a-border)}.elementor-panel .elementor-panel-category .elementor-panel-heading{padding:0 15px;border:none;background-color:transparent}.elementor-panel .elementor-panel-category.elementor-active .elementor-panel-heading{border:none}.elementor-panel .elementor-panel-category-items{padding-block-end:20px}.elementor-panel .elementor-panel-category-items-empty{grid-column-start:1;grid-column-end:3}.elementor-panel #elementor-panel-page-menu{padding:25px 15px}.elementor-panel .elementor-panel-menu-group-title{text-transform:uppercase;font-size:11px}.elementor-panel .elementor-panel-menu-items{border:var(--e-a-border);margin:15px 0 25px;border-radius:5px;overflow:hidden}.elementor-panel .elementor-panel-menu-item{display:flex;align-items:center;width:100%;height:40px;transition:var(--e-a-transition-hover);border:0;background-color:transparent;cursor:pointer}.elementor-panel .elementor-panel-menu-item:not(:last-child){border-block-end:var(--e-a-border)}.elementor-panel .elementor-panel-menu-item:focus,.elementor-panel .elementor-panel-menu-item:hover{background-color:var(--e-a-bg-hover)}.elementor-panel .elementor-panel-menu-item:active{background-color:var(--e-a-bg-active);color:var(--e-a-color-txt-accent)}.elementor-panel .elementor-panel-menu-item-icon{text-align:center;width:30px;flex-shrink:0;padding:10px 0;margin:0 10px;font-size:19px}.elementor-panel .elementor-panel-menu-item-title{display:flex;flex-grow:1;font-weight:500;justify-content:space-between}.elementor-panel .elementor-panel-menu-item-title-badge{margin:0 10px;background:var(--e-a-color-white);border-radius:var(--e-a-border-radius)}.elementor-panel .elementor-panel-menu-item-title>span{color:var(--e-a-color-accent)}.elementor-panel .elementor-panel-menu-item a{display:flex;align-items:center;color:inherit;width:100%;height:100%;padding-inline-start:10px;padding:10px 0}.elementor-panel .elementor-control.elementor-control-clear_page{background-color:transparent}.elementor-panel .elementor-control.elementor-control-clear_page .elementor-control-raw-html{display:flex;align-items:center;justify-content:space-between}.elementor-panel .elementor-panel-navigation{display:flex;width:100%;border-block-end:var(--e-a-border)}.elementor-panel .elementor-panel-navigation .elementor-panel-navigation-tab{all:unset;flex:auto;transition:var(--e-a-transition-hover);border-block-end:3px solid transparent;cursor:pointer}.elementor-panel .elementor-panel-navigation .elementor-panel-navigation-tab:focus,.elementor-panel .elementor-panel-navigation .elementor-panel-navigation-tab:hover{background-color:var(--e-a-bg-hover)}.elementor-panel .elementor-panel-navigation .elementor-panel-navigation-tab:focus{outline:0}.elementor-panel .elementor-panel-navigation .elementor-panel-navigation-tab.elementor-active{border-color:var(--e-a-border-color-accent);color:var(--e-a-color-txt-accent)}.elementor-panel .elementor-panel-navigation .elementor-panel-navigation-tab.elementor-active a,.elementor-panel .elementor-panel-navigation .elementor-panel-navigation-tab.elementor-active span{color:var(--e-a-color-txt-accent)}.elementor-panel .elementor-panel-navigation .elementor-panel-navigation-tab a,.elementor-panel .elementor-panel-navigation .elementor-panel-navigation-tab span{color:inherit;display:block;text-align:center;padding:12px 0 8px;font-size:10px}.elementor-panel .elementor-panel-navigation .elementor-panel-navigation-tab a:before,.elementor-panel .elementor-panel-navigation .elementor-panel-navigation-tab span:before{font-family:eicons;font-size:16px;display:block;margin-block-end:8px}.elementor-panel .elementor-tab-control-content a:before,.elementor-panel .elementor-tab-control-content span:before{content:"\e92c"}.elementor-panel .elementor-tab-control-style a:before,.elementor-panel .elementor-tab-control-style span:before{content:"\e921"}.elementor-panel .elementor-tab-control-advanced a:before,.elementor-panel .elementor-tab-control-advanced span:before,.elementor-panel .elementor-tab-control-general_style a:before,.elementor-panel .elementor-tab-control-general_style span:before,.elementor-panel .elementor-tab-control-settings a:before,.elementor-panel .elementor-tab-control-settings span:before{content:"\e916"}.elementor-panel .elementor-tab-control-responsive a:before,.elementor-panel .elementor-tab-control-responsive span:before{content:"\e885"}.elementor-panel .elementor-tab-control-lightbox a:before,.elementor-panel .elementor-tab-control-lightbox span:before{content:"\e922"}.elementor-panel .elementor-tab-control-column a:before,.elementor-panel .elementor-tab-control-column span:before,.elementor-panel .elementor-tab-control-layout a:before,.elementor-panel .elementor-tab-control-layout span:before{content:"\e899"}.elementor-panel #elementor-panel__editor__help{padding:50px 25px;display:flex;align-items:center;justify-content:center}.elementor-panel #elementor-panel__editor__help__link{display:inline-flex;align-items:center;justify-content:center;font-size:85%;line-height:2;padding-inline-start:5px;color:inherit;font-weight:500;transition:var(--e-a-transition-hover)}.elementor-panel #elementor-panel__editor__help__link:focus,.elementor-panel #elementor-panel__editor__help__link:hover{color:var(--e-a-color-info)}.elementor-panel #elementor-panel__editor__help__link i{padding:0 5px;font-size:125%;position:relative}.elementor-panel #elementor-panel__editor__help__link i:after{content:"";position:absolute;height:13px;width:13px;top:3px;bottom:0;left:8px;right:0;border-radius:50%;z-index:-1}.elementor-panel #elementor-panel-footer{position:relative;height:40px;background-color:var(--e-a-dark-bg);color:var(--e-a-dark-color-txt)}.elementor-panel #elementor-panel-footer-tools{display:flex;justify-content:space-between;height:100%}.elementor-panel .elementor-panel-footer-tool{display:flex;align-items:center;justify-content:center;width:15%;cursor:pointer;transition:var(--e-a-transition-hover);border:0;color:currentColor;background-color:transparent}.elementor-panel .elementor-panel-footer-tool i{font-size:15px}.elementor-panel .elementor-panel-footer-tool #elementor-panel-saver-button-save-options i.eicon-chevron-right{margin:auto;transform:rotate(270deg)}.elementor-panel .elementor-panel-footer-tool #elementor-panel-saver-button-save-options.elementor-disabled{cursor:inherit}.elementor-panel .elementor-panel-footer-tool:not(.e-open):focus,.elementor-panel .elementor-panel-footer-tool:not(.e-open):hover{color:var(--e-a-dark-color-txt-hover)}.elementor-panel .elementor-panel-footer-tool:not(.e-open) .elementor-panel-footer-sub-menu-wrapper{display:none}.elementor-panel #elementor-panel-footer-saver-publish{width:30%;margin-inline-start:auto}.elementor-panel #elementor-panel-footer-saver-publish .elementor-button-state i{margin-inline-end:0}.elementor-panel #elementor-panel-footer-saver-publish .elementor-button-state #elementor-panel-saver-button-publish-label{display:none}.elementor-panel #elementor-panel-footer-saver-options{width:10%}.elementor-panel #elementor-panel-footer-saver-options .elementor-last-edited-wrapper{font-size:11px;font-style:italic;padding:5px 0 15px}.elementor-panel #elementor-panel-footer-saver-options .elementor-last-edited-wrapper:not(.elementor-state-active) .elementor-state-icon{display:none}.elementor-panel #elementor-panel-footer-saver-options .elementor-last-edited-wrapper time{border-block-end:1px dotted transparent;transition:all .3s ease-in-out;cursor:pointer}.elementor-panel #elementor-panel-footer-saver-options .elementor-last-edited-wrapper time:hover{border-block-end-color:inherit}.elementor-panel #elementor-panel-footer-saver-options.e-open i.eicon-chevron-right{transform:rotate(90deg)}.elementor-panel #elementor-panel-saver-button-publish,.elementor-panel #elementor-panel-saver-button-save-options{padding:0;font-size:11px;height:100%;width:100%;border-radius:0}.elementor-panel #elementor-panel-saver-button-publish.elementor-disabled,.elementor-panel #elementor-panel-saver-button-save-options.elementor-disabled{background-color:#1f2124;color:#9da5ae}.elementor-panel #elementor-panel-saver-button-publish:not(.elementor-disabled){border-inline-end:1px solid #f0abfc}.elementor-panel #elementor-panel-saver-button-publish.elementor-disabled{border-inline-end:1px solid #3f444b}.elementor-panel .elementor-panel-footer-sub-menu-wrapper{position:absolute;bottom:100%;left:0;width:100%;background-color:#1f2124;padding:10px;box-shadow:-2px -5px 8px rgba(0,0,0,.1);cursor:default;z-index:10000}.elementor-panel .elementor-panel-footer-sub-menu{border-radius:var(--e-border-radius);overflow:hidden;border:1px solid #3f444b}.elementor-panel .elementor-panel-footer-sub-menu-item{display:flex;height:40px;color:#d5d8dc;align-items:center;-moz-column-gap:10px;column-gap:10px;padding:0 20px;transition:var(--e-a-transition-hover);cursor:pointer}.elementor-panel .elementor-panel-footer-sub-menu-item.elementor-disabled{cursor:default;color:#69727d}.elementor-panel .elementor-panel-footer-sub-menu-item:not(:last-child){border-block-end:1px solid #3f444b}.elementor-panel .elementor-panel-footer-sub-menu-item:hover{background-color:hsla(0,0%,100%,.1)}.elementor-panel .elementor-panel-footer-sub-menu-item.active{background-color:hsla(0,0%,100%,.2)}#elementor-panel-elements-navigation .elementor-panel-navigation-tab{text-align:center;padding:10px 0;font-size:12px;cursor:pointer}#elementor-panel-elements{overflow:hidden}#elementor-panel-state-loading{display:none}body.elementor-panel-loading #elementor-panel-state-loading{position:absolute;top:0;left:0;height:100%;width:100%;display:flex;align-items:center;justify-content:center;background-color:hsla(0,0%,100%,.5);z-index:2}#elementor-panel-state-loading .eicon-loading{font-size:25px;color:var(--e-a-color-txt-accent)}#elementor-panel-elements-search-area{background-color:var(--e-a-bg-default);position:sticky;top:0;padding:15px;z-index:1}#elementor-panel-elements-search-wrapper{position:relative}#elementor-panel-elements-search-input{font-size:11px;padding-block:10px;padding-inline:29px 10px;font-style:italic;border:var(--e-a-border-bold);border-radius:0;transition:all 1s;-webkit-appearance:none;-moz-appearance:none;appearance:none}#elementor-panel-elements-search-input+i{position:absolute;left:10px;top:50%;color:var(--e-a-color-txt-disabled);transform:translateY(-50%)}#elementor-panel-elements-search-input:focus{border-color:var(--e-a-border-color-focus);padding-inline-end:15px}.elementor-panel .elementor-element{font-family:var(--e-a-font-family);color:var(--e-a-color-txt);line-height:1;text-align:center;border:var(--e-a-border-bold);border-radius:3px;cursor:move;position:relative;transition:var(--e-a-transition-hover);width:100%;background-color:transparent}.elementor-panel .elementor-element--promotion .elementor-element{cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none}.elementor-panel .elementor-element:focus,.elementor-panel .elementor-element:hover{background-color:var(--e-a-bg-hover);border-color:var(--e-a-border-color-bold)}.elementor-panel .elementor-element:focus>.eicon-lock,.elementor-panel .elementor-element:hover>.eicon-lock{color:var(--e-a-color-accent)}.elementor-panel .elementor-element .icon{font-size:28px;padding-block-start:15px}.elementor-panel .elementor-element .title-wrapper{display:flex;height:40px;align-items:center;justify-content:center}.elementor-panel .elementor-element .title{font-size:12px}.elementor-panel .elementor-element>.eicon-lock{position:absolute;top:5px;right:5px;color:var(--e-a-color-txt-disabled)}.elementor-panel .elementor-element:active{background-color:var(--e-a-bg-hover);border-color:var(--e-a-border-color-accent);color:var(--e-a-color-txt-accent)}#elementor-element--promotion__dialog{position:absolute;width:300px;z-index:1;background-color:var(--e-a-bg-default);box-shadow:var(--e-a-popover-shadow);border-radius:var(--e-a-border-radius)}#elementor-element--promotion__dialog:after{content:"";position:absolute;top:15px;right:100%;transform:scaleY(.7);border:10px solid transparent;border-inline-end-color:var(--e-a-bg-default)}#elementor-element--promotion__dialog__title{font-size:14px}#elementor-element--promotion__dialog .dialog-header{display:flex;padding:20px;border-block-end:var(--e-a-border);font-weight:500}#elementor-element--promotion__dialog .dialog-header .eicon-pro-icon{flex-grow:1;margin-inline-start:10px;font-size:14px;color:var(--e-a-color-accent)}#elementor-element--promotion__dialog .dialog-header .eicon-close{cursor:pointer;color:var(--e-a-color-txt-disabled)}#elementor-element--promotion__dialog .dialog-header .eicon-close:hover{color:var(--e-a-color-txt-muted)}#elementor-element--promotion__dialog .dialog-message{padding:20px}#elementor-element--promotion__dialog .dialog-buttons-wrapper{padding:0 20px 20px}#elementor-element--promotion__dialog .dialog-button{padding:7px 25px;font-size:12px}.dialog-tooltip-widget{position:absolute;width:300px;z-index:1;background-color:#fff;box-shadow:0 2px 15px rgba(0,0,0,.3);border-radius:3px}.dialog-tooltip-widget:after{content:"";position:absolute;top:15px;right:100%;transform:scaleY(.7);border:10px solid transparent;border-inline-end-color:#fff}.dialog-tooltip-widget__title{font-size:14px}.dialog-tooltip-widget .dialog-tooltip-header{display:flex;padding:20px 20px 0;color:#0c0d0e;border-block-end:1px solid #fff;font-weight:500}.dialog-tooltip-widget .dialog-tooltip-header .eicon-pro-icon{flex-grow:1;margin-inline-start:10px;font-size:14px;color:#93003f}.dialog-tooltip-widget .dialog-tooltip-header .eicon-close{cursor:pointer;margin-inline-start:auto;color:#9da5ae}.dialog-tooltip-widget .dialog-tooltip-message{padding:20px}.dialog-tooltip-widget .dialog-tooltip-buttons-wrapper{padding:0 20px 20px;text-align:end}.dialog-tooltip-widget .dialog-tooltip-button{padding:7px 25px;font-size:12px}.dialog-tooltip-widget .dialog-tooltip-button::-moz-focus-inner{border:0}#elementor-panel-inner{position:relative;height:100%;display:flex;flex-direction:column;box-shadow:0 0 5px 0 rgba(0,0,0,.1)}#elementor-panel-content-wrapper{position:relative;width:100%;flex:1}.elementor-panel-container{clear:both;padding-inline-start:15px;padding-inline-end:15px}#elementor-panel-get-pro-elements .elementor-nerd-box-message{margin-block-start:10px}#elementor-panel-get-pro-elements .elementor-nerd-box-icon{margin-block-start:20px}#elementor-panel-get-pro-elements-sticky{position:sticky;bottom:0;font-size:14px;font-weight:400;line-height:1.6;margin-block-end:-10px}#elementor-panel-get-pro-elements-sticky .elementor-get-pro-sticky-message{margin-top:-14px;min-height:40px;display:block;padding:9px min(35px,5%);gap:10px;background-color:var(--e-a-color-white);color:var(--e-a-color-black);text-align:center;box-shadow:0 -10px 14px -6px rgba(0,0,0,.05)}#elementor-panel-get-pro-elements-sticky .elementor-get-pro-sticky-message a{display:inline-block;font-size:13px;font-weight:500;color:var(--e-a-btn-bg-accent)}#elementor-panel-get-pro-elements-sticky img{margin-left:17px}#elementor-panel-notice-wrapper .elementor-panel-notice{width:90%;margin:0 auto;font-style:unset;margin-block-end:15px}#elementor-panel-notice-wrapper .elementor-panel-notice a{font-weight:700;font-style:italic;border-block-end:2px dotted var(--e-a-color-info);display:inline-block}body.e-has-notification .elementor-panel-menu-item.elementor-panel-menu-item-notification-center .elementor-panel-menu-item-icon,body.e-has-notification:not(.e-route-panel-menu) #elementor-panel-header-menu-button{position:relative}body.e-has-notification .elementor-panel-menu-item.elementor-panel-menu-item-notification-center .elementor-panel-menu-item-icon:after,body.e-has-notification:not(.e-route-panel-menu) #elementor-panel-header-menu-button:after{position:absolute;content:"";display:block;background:var(--e-a-color-primary);border-radius:50%;width:8px;height:8px;top:5px;right:5px}.media-modal.wp-core-ui{color-scheme:light;color:#515962}.media-modal.wp-core-ui select{width:auto;padding-inline:8px}.media-modal.wp-core-ui fieldset{padding:0;border:0}.elementor-control{--control-title-size:12px;position:relative;padding:0 20px 15px}.elementor-control a{font-weight:500;text-decoration:none;border-block-end:1px dotted transparent;transition:all .3s ease-in-out}.elementor-control a:hover{border-block-end-color:inherit}.elementor-control .elementor-control-content{display:flex;flex-direction:column}.elementor-control .elementor-control-title{font-size:var(--control-title-size);line-height:1;margin-inline-end:5px}.elementor-control .elementor-control-title:empty{display:none}.elementor-control .elementor-control-spinner{display:flex;align-items:center}.elementor-control.elementor-control-type-divider{padding:0}.elementor-control.elementor-control-type-divider .elementor-control-content{border-width:0;border-block-start:var(--e-a-border);background-color:var(--e-a-bg-default);height:15px}.elementor-control.elementor-control-separator-before{padding-block-start:15px}.elementor-control.elementor-control-separator-before:before{content:"";position:absolute;height:1px;width:calc(100% - 40px);top:0;left:20px;background-color:var(--e-a-border-color)}.elementor-control.elementor-control-separator-after:after{content:"";position:absolute;height:1px;width:calc(100% - 40px);bottom:0;left:20px;background-color:var(--e-a-border-color)}.elementor-control.elementor-control-separator-after+.elementor-control-type-tabs~.elementor-control-separator-default,.elementor-control.elementor-control-separator-after:not(.elementor-hidden-control)~.elementor-control-separator-default{padding-block-start:15px}.elementor-control.elementor-control-deprecated,.elementor-control.elementor-control-deprecated .elementor-control-field-description{color:var(--e-a-color-warning)}.elementor-control.elementor-control-hidden-label>*>*>.elementor-control-title,.elementor-control.elementor-control-hidden-label>*>.elementor-control-title,.elementor-control.elementor-hidden-control{display:none}.elementor-control.elementor-control-type-heading .elementor-control-title{font-weight:700;margin:0}body:not(.elementor-device-desktop) .elementor-control.elementor-control-responsive-desktop,body:not(.elementor-device-laptop) .elementor-control.elementor-control-responsive-laptop,body:not(.elementor-device-mobile) .elementor-control.elementor-control-responsive-mobile,body:not(.elementor-device-mobile_extra) .elementor-control.elementor-control-responsive-mobile_extra,body:not(.elementor-device-tablet) .elementor-control.elementor-control-responsive-tablet,body:not(.elementor-device-tablet_extra) .elementor-control.elementor-control-responsive-tablet_extra,body:not(.elementor-device-widescreen) .elementor-control.elementor-control-responsive-widescreen{display:none}.elementor-control-custom_attributes_pro .elementor-nerd-box-message,.elementor-control-custom_css_pro .elementor-nerd-box-message{margin-block-start:5px}.elementor-control.e-open .elementor-panel-heading-toggle .eicon:before,.elementor-control.elementor-active .elementor-panel-heading-toggle .eicon:before,.elementor-panel-category.e-open .elementor-panel-heading-toggle .eicon:before,.elementor-panel-category.elementor-active .elementor-panel-heading-toggle .eicon:before,.elementor-panel-scheme-item.e-open .elementor-panel-heading-toggle .eicon:before,.elementor-panel-scheme-item.elementor-active .elementor-panel-heading-toggle .eicon:before{content:"\e92a"}.elementor-control:not(.e-open):not(.elementor-active) .elementor-panel-heading-toggle .eicon:before,.elementor-panel-category:not(.e-open):not(.elementor-active) .elementor-panel-heading-toggle .eicon:before,.elementor-panel-scheme-item:not(.e-open):not(.elementor-active) .elementor-panel-heading-toggle .eicon:before{content:"\e90a"}.elementor-panel-heading{display:flex;align-items:center;gap:5px;height:48px;padding-inline:20px;width:100%;border:0;border-block-start:var(--e-a-border);border-block-start-width:2px;background-color:transparent;color:var(--e-a-color-txt-accent);cursor:pointer}.elementor-panel-heading-toggle{width:10px;display:flex;flex-direction:column;align-items:center}.elementor-panel-heading-title{font-weight:700}.elementor-panel-heading-promotion{margin-inline-start:auto}.elementor-panel-heading-promotion a{color:var(--e-a-color-accent-promotion);font-family:Roboto,sans-serif;font-weight:500;font-size:13px}.elementor-panel-heading-promotion a i{margin-inline-end:4px;font-size:14px}.elementor-panel-heading-promotion a:hover{color:var(--e-a-color-accent-promotion)}.elementor-panel-heading:focus-visible{color:var(--e-a-color-txt-hover)}#elementor-controls .elementor-control-type-section:first-child .elementor-panel-heading{border-block-start:none}.elementor-control-field{display:flex;align-items:center}.elementor-label-block>.elementor-control-content>.elementor-control-field{flex-wrap:wrap}.elementor-label-block>.elementor-control-content>.elementor-control-field>.elementor-control-input-wrapper{width:100%;max-width:100%;margin-block-start:10px}.elementor-label-block>.elementor-control-content>.elementor-control-field>.elementor-control-input-wrapper>.elementor-choices label{width:auto;flex:1 1 27px;display:flex;align-items:center;justify-content:center}.elementor-label-block.elementor-control-hidden-label.elementor-label-block>.elementor-control-content>.elementor-control-field>.elementor-control-input-wrapper,.elementor-label-block.elementor-control-hidden-label:not(.elementor-control-dynamic)>.elementor-control-content>.elementor-control-field>.elementor-control-input-wrapper{margin-block-start:0}.elementor-label-inline>.elementor-control-content>.elementor-control-field>.elementor-control-title{flex-shrink:0;max-width:60%}.elementor-label-inline>.elementor-control-content>.elementor-control-field>.elementor-control-input-wrapper{margin-inline-start:auto}.elementor-control-field-description{margin-block-start:10px}.elementor-group-control-attachment_alert .elementor-control-field-description{margin-block-start:0}.elementor-update-preview{margin:15px 15px 0;display:flex;align-items:center}.elementor-update-preview-button-wrapper{flex-grow:1;text-align:end}.elementor-update-preview-button{padding:8px 15px}.elementor-control-direction-ltr input,.elementor-control-direction-ltr textarea{direction:ltr}.elementor-control-direction-rtl input,.elementor-control-direction-rtl textarea{direction:rtl}.elementor-control-alert{display:flex;flex-direction:column;justify-content:flex-start;align-items:flex-start;gap:8px}.elementor-control-alert-heading{font-weight:700}.elementor-control-type-button .elementor-control-input-wrapper{text-align:end}.elementor-control-type-button .elementor-button{width:auto}.elementor-control-type-button .elementor-button.elementor-button-center{display:block;margin:0 auto}.elementor-control-type-choose.elementor-label-block .elementor-choices{width:100%}.elementor-choices{display:flex;height:27px;line-height:27px;text-align:center;border-spacing:1px;border-radius:var(--e-a-border-radius);overflow:hidden}.elementor-choices .elementor-choices-label{border-block-start:var(--e-a-border-bold);border-block-end:var(--e-a-border-bold);border-inline-start:var(--e-a-border-bold);border-inline-end:none;font-size:12px;transition:var(--e-a-transition-hover);cursor:pointer;overflow:hidden}.elementor-choices .elementor-choices-label:nth-child(2){border-start-start-radius:var(--e-a-border-radius);border-end-start-radius:var(--e-a-border-radius)}.elementor-choices .elementor-choices-label:last-child{border-inline-end:var(--e-a-border-bold);border-start-end-radius:var(--e-a-border-radius);border-end-end-radius:var(--e-a-border-radius)}.elementor-choices input{display:none}.elementor-choices input:hover+.elementor-choices-label{background-color:var(--e-a-bg-hover)}.elementor-choices input.e-choose-placeholder+.elementor-choices-label,.elementor-choices input:checked+.elementor-choices-label{background-color:var(--e-a-bg-active-bold);color:var(--e-a-color-txt-accent)}.elementor-label-inline .elementor-choices{justify-content:flex-end}.elementor-control-type-color.e-control-global .pickr{border-start-start-radius:0;border-start-end-radius:var(--e-a-border-radius);border-end-start-radius:0;border-end-end-radius:var(--e-a-border-radius);flex-shrink:0;border-color:var(--e-a-border-color-bold);transition:var(--e-a-transition-hover)}.elementor-control-type-color.e-control-global .pickr:hover{background-color:var(--e-a-bg-hover)}.elementor-control-type-color.e-control-global .e-global__popover-toggle:not(.e-global__popover-toggle--active)~.pickr{background-color:var(--e-a-bg-active-bold)}.elementor-control-type-color .elementor-control-title{flex-grow:1}.elementor-control-type-color .elementor-control-input-wrapper{display:flex;justify-content:flex-end}.elementor-group-control-css-filter .elementor-slider{height:6px;box-shadow:inset 0 0 1px 1px rgba(0,0,0,.2)}.elementor-group-control-css-filter .elementor-control-content>.elementor-control-field>.elementor-control-input-wrapper{margin-block-start:0;margin-block-end:5px}.elementor-group-control-blur .elementor-slider{background:url(../images/blur.png);background-size:cover;background-position:50%}.elementor-group-control-contrast .elementor-slider{background:url(../images/contrast.png);background-size:100% 100%}.elementor-group-control-hue .elementor-slider{background-image:linear-gradient(90deg,red,orange,#ff0,#adff2f,#32cd32,#00bfff,#00f,#9400d3 95%)}.elementor-group-control-saturate .elementor-slider{background-image:linear-gradient(90deg,grey,red)}.elementor-group-control-brightness .elementor-slider{background-image:linear-gradient(90deg,#000,#fff)}.elementor-control-type-dimensions .elementor-control-dimensions{display:flex}.elementor-control-type-dimensions li{flex:1;transition:flex-grow .3s ease-in-out}.elementor-control-type-dimensions li .elementor-link-dimensions,.elementor-control-type-dimensions li input{display:block;text-align:center;width:100%;height:27px}.elementor-control-type-dimensions li input{border-inline-start:none;border-radius:0;padding:var(--e-a-border-radius)}.elementor-control-type-dimensions li input:focus{border-inline-start:var(--e-a-border-bold);margin-inline-start:-1px;width:calc(100% + 1px)}.elementor-control-type-dimensions li input:focus+.elementor-control-dimension-label{color:var(--e-a-color-txt)}.elementor-control-type-dimensions li .elementor-link-dimensions{border:var(--e-a-border-bold);border-inline-start:none;background-color:var(--e-a-bg-default);padding:0;outline:none;border-start-start-radius:0;border-start-end-radius:var(--e-a-border-radius);border-end-start-radius:0;border-end-end-radius:var(--e-a-border-radius);cursor:pointer}.elementor-control-type-dimensions li:first-child input{border-inline-start:1px solid var(--e-a-border-color-bold);border-start-start-radius:var(--e-a-border-radius);border-start-end-radius:0;border-end-start-radius:var(--e-a-border-radius);border-end-end-radius:0}.elementor-control-type-dimensions li:first-child input:focus{border-color:var(--e-a-border-color-focus);margin-inline-start:0;width:100%}.elementor-control-type-dimensions li:last-child{max-width:27px}.elementor-control-type-dimensions.e-units-custom li.elementor-control-dimension:focus-within{flex:2.5}.elementor-control-type-dimensions .elementor-control-dimension-label{color:var(--e-a-color-txt-muted);display:block;text-align:center;font-size:9px;padding-block-start:5px}.elementor-control-type-dimensions .elementor-link-dimensions.unlinked{background-color:var(--e-a-bg-default)}.elementor-control-type-dimensions .elementor-link-dimensions.unlinked .elementor-linked{display:none}.elementor-control-type-dimensions .elementor-link-dimensions:not(.unlinked){background-color:var(--e-a-bg-active-bold);color:var(--e-a-color-txt-accent);border-color:var(--e-a-border-color-bold)}.elementor-control-type-dimensions .elementor-link-dimensions:not(.unlinked) .elementor-unlinked{display:none}.elementor-control-responsive-switchers{--selected-option:0;--pointer-position:var(--selected-option);position:relative;width:2.5em;height:2.5em;margin:calc(-2.5em + 12px) 0;margin-inline-end:5px}.elementor-control-responsive-switchers__holder{position:absolute;width:100%;top:0;background-color:var(--e-a-bg-default);border-radius:var(--e-a-border-radius);transition:.15s;border:1px solid transparent}.elementor-control-responsive-switchers.elementor-responsive-switchers-open{z-index:11000}.elementor-control-responsive-switchers.elementor-responsive-switchers-open .elementor-responsive-switcher{height:2.5em;transform:scale(1);opacity:1}.elementor-control-responsive-switchers.elementor-responsive-switchers-open .elementor-responsive-switcher:hover{color:var(--e-a-color-primary-bold)}.elementor-control-responsive-switchers.elementor-responsive-switchers-open .elementor-control-responsive-switchers__holder{box-shadow:var(--e-a-dropdown-shadow)}.elementor-responsive-switcher{all:unset;display:flex;align-items:center;justify-content:center;position:relative;z-index:2;cursor:pointer;height:0;width:100%;transform:scale(0);opacity:0;transition:.15s;font-size:12px;color:inherit}.elementor-responsive-switcher:hover{color:var(--e-a-color-primary-bold)}.elementor-device-widescreen .elementor-responsive-switcher.elementor-responsive-switcher-widescreen{height:2.5em;transform:scale(1);opacity:1}.elementor-device-widescreen .elementor-responsive-switchers-open:not(:hover) .elementor-responsive-switcher.elementor-responsive-switcher-widescreen{color:var(--e-a-color-primary-bold)}.elementor-device-desktop .elementor-responsive-switcher.elementor-responsive-switcher-desktop{height:2.5em;transform:scale(1);opacity:1}.elementor-device-desktop .elementor-responsive-switchers-open:not(:hover) .elementor-responsive-switcher.elementor-responsive-switcher-desktop{color:var(--e-a-color-primary-bold)}.elementor-device-laptop .elementor-responsive-switcher.elementor-responsive-switcher-laptop{height:2.5em;transform:scale(1);opacity:1}.elementor-device-laptop .elementor-responsive-switchers-open:not(:hover) .elementor-responsive-switcher.elementor-responsive-switcher-laptop{color:var(--e-a-color-primary-bold)}.elementor-device-tablet_extra .elementor-responsive-switcher.elementor-responsive-switcher-tablet_extra{height:2.5em;transform:scale(1);opacity:1}.elementor-device-tablet_extra .elementor-responsive-switchers-open:not(:hover) .elementor-responsive-switcher.elementor-responsive-switcher-tablet_extra{color:var(--e-a-color-primary-bold)}.elementor-device-tablet .elementor-responsive-switcher.elementor-responsive-switcher-tablet{height:2.5em;transform:scale(1);opacity:1}.elementor-device-tablet .elementor-responsive-switchers-open:not(:hover) .elementor-responsive-switcher.elementor-responsive-switcher-tablet{color:var(--e-a-color-primary-bold)}.elementor-device-mobile_extra .elementor-responsive-switcher.elementor-responsive-switcher-mobile_extra{height:2.5em;transform:scale(1);opacity:1}.elementor-device-mobile_extra .elementor-responsive-switchers-open:not(:hover) .elementor-responsive-switcher.elementor-responsive-switcher-mobile_extra{color:var(--e-a-color-primary-bold)}.elementor-device-mobile .elementor-responsive-switcher.elementor-responsive-switcher-mobile{height:2.5em;transform:scale(1);opacity:1}.elementor-device-mobile .elementor-responsive-switchers-open:not(:hover) .elementor-responsive-switcher.elementor-responsive-switcher-mobile{color:var(--e-a-color-primary-bold)}.e-units-wrapper{position:relative;margin-inline-start:auto}.e-units-wrapper .e-units-switcher{cursor:pointer;font-size:10px;padding:.5em;margin:-.5em 0;transition:all .15s ease-in-out}.e-units-wrapper .e-units-switcher:hover{color:var(--e-a-color-primary-bold);background-color:var(--e-a-bg-hover);border-radius:var(--e-a-border-radius)}.e-units-wrapper .e-units-switcher:not([data-selected=custom]) i.eicon-edit,.e-units-wrapper .e-units-switcher[data-selected=custom] span{display:none}.e-units-wrapper .e-units-switcher i.eicon-angle-right{transform:rotate(90deg)}.e-units-choices input{display:none}.e-units-choices input:checked+label{color:var(--e-a-color-primary-bold)}.e-units-choices label{cursor:pointer;display:block}.e-units-choices{display:none;overflow:hidden;max-height:0;position:absolute;top:-.8em;left:-.5em;width:2.5em;text-align:center;background-color:var(--e-a-bg-default);border-radius:var(--e-a-border-radius);box-shadow:var(--e-a-dropdown-shadow);animation-timing-function:linear;animation-delay:0s;animation-fill-mode:forwards;z-index:11000}.e-units-choices .elementor-units-choices-label{display:flex;align-items:center;height:3em;justify-content:center;font-size:10px;transition:.15s}.e-units-choices .elementor-units-choices-label:hover{color:var(--e-a-color-primary-bold)}.e-units-choices.e-units-choices-open{display:block;animation-duration:1s;animation-name:e-units-choices-open}.e-units-custom input{font-family:monospace;font-size:.85em}@keyframes e-units-choices-open{0%{max-height:0}to{max-height:100vh}}.elementor-control-type-gaps .elementor-control-gaps{display:flex}.elementor-control-type-gaps li{flex:1;transition:flex-grow .3s ease-in-out}.elementor-control-type-gaps li .elementor-link-gaps,.elementor-control-type-gaps li input{display:block;text-align:center;width:100%;height:27px}.elementor-control-type-gaps li input{border-inline-start:none;border-radius:0;padding:var(--e-a-border-radius)}.elementor-control-type-gaps li input:focus{border-inline-start:var(--e-a-border-bold);margin-inline-start:-1px;width:calc(100% + 1px)}.elementor-control-type-gaps li input:focus+.elementor-control-gap-label{color:var(--e-a-color-txt)}.elementor-control-type-gaps li .elementor-link-gaps{border:var(--e-a-border-bold);border-inline-start:none;background-color:var(--e-a-bg-default);padding:0;outline:none;border-start-start-radius:0;border-start-end-radius:var(--e-a-border-radius);border-end-start-radius:0;border-end-end-radius:var(--e-a-border-radius);cursor:pointer}.elementor-control-type-gaps li:first-child input{border-inline-start:1px solid var(--e-a-border-color-bold);border-start-start-radius:var(--e-a-border-radius);border-start-end-radius:0;border-end-start-radius:var(--e-a-border-radius);border-end-end-radius:0}.elementor-control-type-gaps li:first-child input:focus{border-color:var(--e-a-border-color-focus);margin-inline-start:0;width:100%}.elementor-control-type-gaps li:last-child{max-width:27px}.elementor-control-type-gaps.e-units-custom li.elementor-control-gap:focus-within{flex:2.5}.elementor-control-type-gaps .elementor-control-gap-label{color:var(--e-a-color-txt-muted);display:block;text-align:center;font-size:9px;padding-block-start:5px}.elementor-control-type-gaps .elementor-link-gaps.unlinked{background-color:var(--e-a-bg-default)}.elementor-control-type-gaps .elementor-link-gaps.unlinked .elementor-linked{display:none}.elementor-control-type-gaps .elementor-link-gaps:not(.unlinked){background-color:var(--e-a-bg-active-bold);color:var(--e-a-color-txt-accent);border-color:var(--e-a-border-color-bold)}.elementor-control-type-gaps .elementor-link-gaps:not(.unlinked) .elementor-unlinked{display:none}.elementor-control-type-icons .elementor-control-media__preview>*{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.elementor-control-type-icons .elementor-control-media__preview i{font-size:70px}.elementor-control-type-icons .elementor-control-media__preview svg{height:75%}.elementor-control-type-icons .elementor-control-icons--inline__svg i.eicon-upload{font-size:15px}.elementor-control-type-gallery .elementor-control-media__content{border:var(--e-a-border-bold);border-radius:3px}.elementor-control-type-gallery .elementor-control-gallery-status{font-size:12px;height:27px;padding-inline-start:10px;border-block-end:var(--e-a-border-bold);display:flex}.elementor-control-type-gallery .elementor-control-gallery-status>*{display:flex;align-items:center}.elementor-control-type-gallery .elementor-control-gallery-status-title{flex-grow:1}.elementor-control-type-gallery .elementor-control-gallery-content{position:relative;overflow:hidden}.elementor-control-type-gallery .elementor-control-gallery-thumbnails{display:grid;grid-template-columns:repeat(auto-fill,minmax(48px,1fr));grid-gap:10px;cursor:pointer;padding:10px}.elementor-control-type-gallery .elementor-control-gallery-thumbnails:focus+.elementor-control-gallery-edit,.elementor-control-type-gallery .elementor-control-gallery-thumbnails:hover+.elementor-control-gallery-edit{opacity:1}.elementor-control-type-gallery .elementor-control-gallery-thumbnail{width:48px;height:48px;-o-object-fit:cover;object-fit:cover;border:var(--e-a-border)}.elementor-control-type-gallery .elementor-control-gallery-thumbnail+.unoptimized__image{outline:2px solid var(--e-a-btn-bg-danger-active);opacity:.6}.elementor-control-type-gallery .elementor-control-gallery-edit{position:absolute;top:0;bottom:0;left:0;right:0;background-color:rgba(0,0,0,.2);padding:10px;font-size:11px;transition:all .3s ease-in-out;pointer-events:none;cursor:pointer;opacity:0}.elementor-control-type-gallery .elementor-control-gallery-edit span{position:absolute;top:10px;right:10px;width:21px;height:21px;color:var(--e-a-color-white);background-color:rgba(0,0,0,.5);box-shadow:0 0 7px 0 rgba(0,0,0,.2);transition:var(--e-a-transition-hover)}.elementor-control-type-gallery .elementor-control-gallery-edit span i{font-size:11px;padding:5px}.elementor-control-type-gallery .elementor-control-gallery-edit span:hover{background-color:rgba(0,0,0,.6)}.elementor-control-type-gallery .elementor-control-gallery-add{width:48px;height:48px;font-size:14px}.elementor-control-type-gallery .elementor-control-gallery-add i{margin:0}.elementor-control-type-gallery.elementor-gallery-empty .elementor-control-gallery-clear,.elementor-control-type-gallery.elementor-gallery-empty .elementor-control-gallery-edit,.elementor-control-type-gallery.elementor-gallery-empty .elementor-control-gallery-thumbnails{display:none}.elementor-control-type-gallery.elementor-gallery-empty .elementor-control-gallery-content{padding:10px}.elementor-control-type-gallery.elementor-gallery-has-images .elementor-control-gallery-add{display:none}.elementor-control-type-gallery.elementor-control-dynamic .elementor-control-gallery-clear{border-inline-start:var(--e-a-border)}.elementor-control-type-gallery .elementor-control-gallery-clear{color:currentColor;background-color:transparent;border:none;cursor:pointer;justify-content:center}.elementor-control-type-gallery .elementor-control-gallery-clear:focus,.elementor-control-type-gallery .elementor-control-gallery-clear:hover{color:var(--e-a-color-danger)}.elementor-control-type-gallery .elementor-control-dynamic-switcher{border-width:0;border-inline-start-width:1px;border-block-end-width:1px;border-radius:0}.e-global__popover{width:288px;z-index:1;font-size:12px;padding-inline-start:10px}.e-global__popover-toggle{border:var(--e-a-border-bold);border-inline-end:0;border-start-start-radius:3px;border-start-end-radius:0;border-end-start-radius:3px;border-end-end-radius:0;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:var(--e-a-transition-hover)}.e-global__popover-toggle:hover{background-color:var(--e-a-bg-hover)}.e-global__popover-toggle--active{color:var(--e-a-color-primary-bold);background-color:var(--e-a-bg-active-bold)}.e-global__popover-container{box-shadow:var(--e-a-popover-shadow);border-radius:var(--e-a-border-radius);background-color:var(--e-a-bg-default)}.e-global__popover-title{padding:15px 20px;font-weight:500;border-block-end:var(--e-a-border);display:flex}.e-global__popover-title>i{margin-inline-end:5px}.e-global__popover-title-text{flex-grow:1}.e-global__popover-info{margin-inline-end:10px;display:inline-block}.e-global__popover-info-tooltip{width:270px;z-index:1;background-color:rgba(0,0,0,.9);color:var(--e-a-color-white);padding:20px;border-radius:3px}.e-global__popover-info-tooltip:after{content:"";position:absolute;bottom:-17px;left:16px;border:10px solid transparent;border-block-start-color:rgba(0,0,0,.9)}.e-global__popover-info i{font-size:13px}.e-global__preview-items-container{max-height:260px;overflow-y:auto;padding:5px 0}.e-global__preview-items-container::-webkit-scrollbar{width:7px}.e-global__preview-items-container::-webkit-scrollbar-thumb{background-color:#babfc5;border-radius:10px}.e-global__manage-button{font-weight:500;cursor:pointer}.e-global__typography{padding-block:10px;padding-inline:35px 20px;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.e-global__typography.e-global__preview-item--selected:before{font-family:eicons;font-size:13px;content:"\e90e";position:absolute;transform:translateY(-50%);top:50%;inset-inline-start:13px}.e-global__color{padding:10px 20px;display:flex;align-items:center}.e-global__color-preview-container{height:20px;width:20px;border-radius:3px;border:1px solid rgba(0,0,0,.1);margin-inline-end:10px;flex-shrink:0;position:relative}.e-global__color-preview-color,.e-global__color-preview-transparent-bg{border-radius:3px;height:100%;width:100%;position:absolute;top:0;left:0}.e-global__color-preview-transparent-bg{background-image:linear-gradient(45deg,var(--e-a-border-color-bold) 25%,transparent 0,transparent 75%,var(--e-a-border-color-bold) 0,var(--e-a-border-color-bold)),linear-gradient(45deg,var(--e-a-border-color-bold) 25%,transparent 0,transparent 75%,var(--e-a-border-color-bold) 0,var(--e-a-border-color-bold));background-size:12px 12px;background-position:0 0,calc(12px / 2) calc(12px / 2)}.e-global__color-title{flex-grow:1;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;padding-inline-end:10px}.e-global__color-hex{font-size:10px;color:var(--e-a-color-txt-muted)}.e-global__color .pcr-button{background-color:var(--e-a-bg-default)}.e-global__color.e-global__preview-item--selected .e-global__color-preview-container{display:flex;justify-content:center;align-items:center;color:var(--e-a-color-white)}.e-global__color.e-global__preview-item--selected .e-global__color-preview-container:before{font-family:eicons;font-size:13px;content:"\e90e";text-shadow:0 0 1px #000;z-index:1}.e-global__preview-item{cursor:pointer;position:relative}.e-global__preview-item:hover{background-color:var(--e-a-bg-hover)}.e-global__confirm-delete i,.e-global__confirm-message-text i{color:var(--e-a-color-warning)}.e-global__confirm-input-wrapper{display:flex;align-items:center;border:var(--e-a-border);border-radius:var(--e-a-border-radius);margin:15px 0;padding:2px}.e-global__confirm-input-wrapper input{font-family:var(--e-a-font-family);font-size:12px;padding:2px;border:0}.e-control-global .elementor-control-input-wrapper{display:flex;justify-content:flex-end;max-width:135px;width:100%}.e-control-global.elementor-control .elementor-control-input-wrapper{display:flex;flex-direction:row;align-items:stretch}.e-control-global .elementor-control-spinner{margin-inline-end:4px}.elementor-control-type-hidden{display:none!important}.elementor-control-type-icon .select2-selection__rendered .eicon{margin-inline-end:3px}.elementor-control-type-image_dimensions .elementor-control-field-description{margin:0 0 15px;line-height:1.4}.elementor-control-type-image_dimensions .elementor-control-input-wrapper{display:flex;align-items:flex-start}.elementor-control-type-image_dimensions .elementor-image-dimensions-field{width:65px}.elementor-control-type-image_dimensions .elementor-image-dimensions-field input:focus+.elementor-image-dimensions-field-description{color:var(--e-a-color-txt)}.elementor-control-type-image_dimensions .elementor-image-dimensions-separator{width:20px;text-align:center;padding-block-start:4px}.elementor-control-type-image_dimensions .elementor-image-dimensions-field-description{display:block;margin-block-start:5px;color:var(--e-a-color-txt-disabled);font-size:10px;text-align:center}.elementor-control-type-image_dimensions .elementor-image-dimensions-apply-button{margin-inline-start:auto}.elementor-control-media.e-media-empty-placeholder .e-control-image-size,.elementor-control-media.e-media-empty .elementor-control-media-area .elementor-control-media__content__remove,.elementor-control-media.e-media-empty .elementor-control-media-area .elementor-control-media__remove,.elementor-control-media:not(.e-media-empty) .elementor-control-media__content__upload-button{display:none}.elementor-control-media .eicon-plus-circle{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);color:var(--e-a-color-white);font-size:20px}.elementor-control-media__content__upload-button{background-color:var(--e-a-bg-active-bold)}.elementor-control-media__preview{height:100%;background-size:cover;background-position:50%;padding-block-end:42.8571%}.elementor-control-media-area{background-image:linear-gradient(45deg,var(--e-a-border-color-bold) 25%,transparent 0,transparent 75%,var(--e-a-border-color-bold) 0,var(--e-a-border-color-bold)),linear-gradient(45deg,var(--e-a-border-color-bold) 25%,transparent 0,transparent 75%,var(--e-a-border-color-bold) 0,var(--e-a-border-color-bold));background-size:16px 16px;background-position:0 0,calc(16px / 2) calc(16px / 2);background-color:var(--e-a-bg-default);border:var(--e-a-border-bold);aspect-ratio:21/9}.elementor-control-media-area:not(:hover) .elementor-control-media__remove{display:none}.elementor-control-media-area .eicon-video-camera{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);color:hsla(0,0%,100%,.7);font-size:21px}.elementor-control-media .elementor-control-media__content{aspect-ratio:21/9;position:relative;cursor:pointer;overflow:hidden}.elementor-control-media .elementor-control-media__content:hover:after{content:"";position:absolute;top:0;bottom:0;left:0;right:0;background-color:rgba(0,0,0,.2);pointer-events:none}.elementor-control-media .elementor-control-media__content:not(:hover) .elementor-control-media__tools{bottom:-30px}.elementor-control-media__content{transition:all .2s ease-in-out}.elementor-control-media__tools{position:absolute;bottom:0;left:0;right:0;height:27px;transition:all .2s ease-in-out}.elementor-control-media__tools>:not(:first-child){margin-inline-start:1px}.elementor-control-media__tool{display:flex;align-items:center;justify-content:center;flex-grow:1;color:var(--e-a-color-white);background-color:rgba(0,0,0,.9);font-size:11px;transition:var(--e-a-transition-hover)}.elementor-control-media__tool:hover{background-color:rgba(0,0,0,.8)}.elementor-control-media__remove{display:flex;align-items:center;justify-content:center;transition:all .3s ease-in-out}.elementor-control-media__content__remove{position:absolute;z-index:1;top:10px;right:10px;width:20px;height:20px;font-size:11px;color:var(--e-a-color-white);background-color:rgba(0,0,0,.5);border-radius:var(--e-border-radius);box-shadow:0 0 7px 0 rgba(0,0,0,.2);transition:var(--e-a-transition-hover)}.elementor-control-media__content__remove:hover{background-color:rgba(0,0,0,.6)}.elementor-control-media.e-media-empty .elementor-control-file-area,.elementor-control-media__warnings:empty{display:none}.elementor-control-media__warnings:not(:empty){margin-block-start:10px}.elementor-control-media__file{display:flex;justify-content:space-between;align-items:center;width:100%;margin-block-start:10px;border:var(--e-a-border)}.elementor-control-media__file__content{padding-inline-start:5px;font-size:12px}.elementor-control-media__file__content__label{color:#9da5ae}.elementor-control-media__file__content__info{display:flex;align-items:center;font-weight:500}.elementor-control-media__file__content__info__icon{margin-inline-end:5px}.elementor-control-media__file__controls{display:flex;border-inline-start:var(--e-a-border)}.elementor-control-media__file__controls__remove,.elementor-control-media__file__controls__upload-button{width:27px;height:27px;cursor:pointer;align-items:center}.elementor-control-media__file__controls__upload-button{display:flex;justify-content:center}.elementor-control-media__file__controls__remove{border-inline-end:var(--e-a-border)}.elementor-control-media.e-media-empty .elementor-control-media__file__content__info,.elementor-control-media.e-media-empty .elementor-control-media__file__controls__remove,.elementor-control-media:not(.e-media-empty) .elementor-control-media__file__content__label{display:none}.elementor-control-media .elementor-control-dynamic-switcher{border:none;border-radius:0;background-color:rgba(0,0,0,.9);color:var(--e-a-color-white)}.elementor-control-media .elementor-control-dynamic-switcher:hover{background-color:rgba(0,0,0,.8);color:var(--e-a-color-white)}.elementor-control-media .e-control-image-size{display:flex;flex-direction:column;width:100%;padding-block-start:20px}.elementor-control-media .e-control-image-size .elementor-control-input-wrapper{margin-inline-start:auto}.elementor-control-type-media.elementor-control-dynamic-value .elementor-control-input-wrapper{border:none}.elementor-control:not(.elementor-control-type-icons) .elementor-control-media__preview{background-color:var(--e-a-bg-active-bold)}.elementor-control-notice{display:flex;justify-content:flex-start;align-items:flex-start;gap:8px;padding:16px;border-radius:3px;border:1px solid var(--notice-control-color,var(--e-a-color-txt));color:var(--e-a-color-txt);font-size:12px;font-weight:400;line-height:1.5;text-align:start;margin-block-start:10px}.elementor-control-notice-type-info{--notice-control-color:var(--e-a-color-info)}.elementor-control-notice-type-success{--notice-control-color:var(--e-a-color-success)}.elementor-control-notice-type-warning{--notice-control-color:var(--e-a-color-warning)}.elementor-control-notice-type-danger{--notice-control-color:var(--e-a-color-danger)}.elementor-control-notice-icon{flex-basis:18px;color:var(--notice-control-color)}.elementor-control-notice-main{display:flex;flex-direction:column;justify-content:flex-start;align-items:flex-start;gap:6px;flex:1}.elementor-control-notice-main-heading{font-weight:700;font-style:italic}.elementor-control-notice-main-content{font-style:italic;line-height:1.5}.elementor-control-notice-main-actions{display:flex;gap:10px;padding-block-start:8px}.elementor-control-notice-main a{color:inherit;font-weight:700;cursor:pointer}.elementor-control-notice-main a:focus,.elementor-control-notice-main a:hover{color:inherit}.elementor-control-notice-dismiss{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:transparent;border:0;padding:0;margin:0;cursor:pointer}.elementor-control-type-popover_toggle input{display:none}.elementor-control-type-popover_toggle label{cursor:pointer}.elementor-control-type-popover_toggle .elementor-control-input-wrapper{display:flex;flex-direction:row-reverse;align-items:center}.elementor-control-type-popover_toggle .elementor-control-popover-toggle-toggle:checked+.elementor-control-popover-toggle-toggle-label{color:var(--e-a-color-txt-active);background-color:var(--e-a-bg-active-bold)}.elementor-control-type-popover_toggle .elementor-control-popover-toggle-toggle:not(:checked)~.elementor-control-popover-toggle-reset-label{display:none}.elementor-control-type-popover_toggle .elementor-control-popover-toggle-toggle-label{height:27px;display:inline-flex;align-items:center;justify-content:center;border-radius:var(--e-a-border-radius);border:var(--e-a-border-bold);transition:var(--e-a-transition-hover)}.elementor-control-type-popover_toggle .elementor-control-popover-toggle-toggle-label:hover{background-color:var(--e-a-bg-hover)}.elementor-control-type-popover_toggle .elementor-control-popover-toggle-reset-label{color:var(--e-a-color-txt-muted);margin-inline-end:5px}.elementor-control-type-popover_toggle .elementor-control-popover-toggle-reset-label:hover{color:var(--e-a-color-txt)}.elementor-controls-popover.e-controls-popover--typography{padding-block-start:0}.e-control-global .elementor-control-popover-toggle-toggle-label{border-start-start-radius:0;border-start-end-radius:var(--e-a-border-radius);border-end-start-radius:0;border-end-end-radius:var(--e-a-border-radius);flex-shrink:0}.elementor-control-type-repeater .elementor-control:not(.elementor-control-type-tab){padding-inline-start:10px;padding-inline-end:10px;padding-block-end:10px}.elementor-control-type-repeater.elementor-repeater-has-minimum-rows .elementor-repeater-tool-remove{display:none}.elementor-control-type-repeater .elementor-repeater-fields{margin:10px 0}.elementor-control-type-repeater .elementor-repeater-row-controls{border:var(--e-a-border-bold);border-block-start-width:0;padding-block-start:15px}.elementor-control-type-repeater .elementor-repeater-row-controls:not(.editable){display:none}.elementor-control-type-repeater .elementor-repeater-row-tools{display:flex;align-items:center;width:100%;border:1px solid var(--e-a-border-color-bold);transition:var(--e-a-transition-hover)}.elementor-control-type-repeater .elementor-repeater-row-tools>button{display:flex;align-items:center;justify-content:center;height:40px;border:none;background-color:transparent;color:currentColor;cursor:pointer}.elementor-control-type-repeater .elementor-repeater-row-tools>button:focus,.elementor-control-type-repeater .elementor-repeater-row-tools>button:hover{background-color:var(--e-a-bg-hover)}.elementor-control-type-repeater .elementor-repeater-row-tools .elementor-repeater-row-item-title{flex:1;justify-content:flex-start;padding:0 10px;font-size:var(--control-title-size);white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.elementor-control-type-repeater .elementor-repeater-row-tools .elementor-repeater-row-item-title .eicon,.elementor-control-type-repeater .elementor-repeater-row-tools .elementor-repeater-row-item-title i,.elementor-control-type-repeater .elementor-repeater-row-tools .elementor-repeater-row-item-title svg{margin-inline-end:5px}.elementor-control-type-repeater .elementor-repeater-row-tools .elementor-repeater-row-item-title img[src$=svg]{width:1em}.elementor-control-type-repeater .elementor-repeater-row-tools .elementor-repeater-row-tool{width:40px;border-inline-start:1px solid var(--e-a-border-color-bold)}.elementor-control-type-repeater .elementor-repeater-row-tools .elementor-repeater-row-handle-sortable{width:10px;border-inline-end:1px solid var(--e-a-border-color-bold);cursor:move}.elementor-control-type-repeater .elementor-button-wrapper{text-align:center;padding-block-start:5px}#elementor-controls{padding-block-start:15px}.elementor-control-type-section{padding:0}.elementor-control-type-section.e-open{padding-block-end:10px}.elementor-control-type-section+.elementor-control:not(.elementor-control-type-section):before{display:none}.elementor-control-type-section:not(:first-child):not(.elementor-control-type-section+.elementor-control-type-section){margin-block-start:25px}.elementor-control-type-select .elementor-control-input-wrapper{position:relative}.elementor-control-type-select .elementor-control-input-wrapper select{-webkit-appearance:none;-moz-appearance:none;appearance:none;font-size:var(--control-title-size);font-family:inherit;font-weight:inherit;font-style:inherit;text-transform:inherit;letter-spacing:inherit;line-height:inherit;flex-basis:100%;padding-inline-start:5px;padding-inline-end:20px;cursor:pointer}.elementor-control-type-select .elementor-control-input-wrapper select.e-select-placeholder{color:var(--e-a-color-txt-disabled)}.elementor-control-type-select .elementor-control-input-wrapper option.e-option-placeholder{display:none}.elementor-control-type-select .elementor-control-input-wrapper:after{font-family:eicons;content:"\e8ad";font-size:12px;position:absolute;top:50%;transform:translateY(-50%);right:5px;pointer-events:none}.elementor-control-type-select .elementor-control-field.elementor-control-field-select-small .elementor-control-input-wrapper{max-width:80px}.elementor-shadow-box .elementor-shadow-slider{margin-block-start:10px}.elementor-shadow-box .elementor-color-picker-wrapper .elementor-control-title{flex-grow:1}.elementor-control-type-slider.elementor-control-dynamic input{border-start-start-radius:var(--e-a-border-radius);border-start-end-radius:0;border-end-start-radius:var(--e-a-border-radius);border-end-end-radius:0}.elementor-control-type-slider .elementor-control-unit-2{width:21%}.elementor-control-type-slider.elementor-control-type-slider--multiple .elementor-control-input-wrapper{display:block}.elementor-control-type-slider--multiple{padding-block-end:40px}.elementor-control-type-slider--multiple .elementor-slider{margin-block-start:12px;width:98%}.elementor-control-type-slider--handles-range .elementor-slider .noUi-handle{border-radius:0;width:10px;transform:translateY(calc(50% - 14px)) translateX(4px)}.elementor-control-type-slider--handles-range .elementor-slider .noUi-handle:after{content:"";position:absolute;top:2px;height:12px;width:11px;transform:rotate(45deg);background-color:var(--e-a-color-white);border-radius:3px}.elementor-control-type-slider--handles-range .elementor-slider .noUi-handle-lower:after{left:5px;box-shadow:2px -2px 3px 0 rgba(0,0,0,.1)}.elementor-control-type-slider--handles-range .elementor-slider .noUi-handle-upper:after{right:5px;box-shadow:-2px 2px 3px 0 rgba(0,0,0,.1)}.elementor-control-type-slider .elementor-control-dynamic-switcher{border-inline-start-width:0;border-start-start-radius:0;border-start-end-radius:var(--e-a-border-radius);border-end-start-radius:0;border-end-end-radius:var(--e-a-border-radius)}.elementor-control-type-slider .elementor-control-input-wrapper{display:flex;align-items:center}.elementor-control-type-slider .elementor-dynamic-cover{margin-block-start:10px}.elementor-control-type-slider.e-units-custom .elementor-slider{display:none}.elementor-control-type-slider.e-units-custom .elementor-slider-input{width:100%;margin:0;transition:none}.elementor-slider{flex-grow:1;height:4px;background-color:var(--e-a-border-color-bold);border-radius:5px;position:relative;cursor:pointer}.elementor-slider-input{width:21%;min-width:54px;margin-inline-start:12px;transition:width .3s ease-in-out}.elementor-slider__extra{position:relative}.elementor-slider__labels{display:flex;justify-content:space-between}.elementor-slider__label{font-size:9px;color:var(--e-a-color-txt-disabled)}.elementor-slider__scales{position:absolute;display:flex;justify-content:space-evenly;width:100%;margin-block-start:4px}.elementor-slider__scale{width:1px;height:21px;background-color:var(--e-a-border-color-focus)}.elementor-slider .noUi-handle{height:16px;width:16px;background-color:var(--e-a-color-white);right:0;transform:translateY(calc(50% - 14px)) translateX(8px);position:absolute;box-shadow:0 1px 5px rgba(0,0,0,.3);border-radius:50%}.elementor-slider .noUi-connects{position:absolute;width:100%;height:4px}.elementor-slider .noUi-connect{position:absolute;z-index:0;top:0;left:0;height:100%;width:100%;will-change:transform;transform-origin:0 0;background-color:var(--e-a-border-color-focus)}.elementor-slider .noUi-tooltip{position:absolute;top:calc(100% + 5px);left:calc(50% - 4px);transform:translateX(-50%);font-size:10px}.elementor-control-type-structure .elementor-control-field{display:initial}.elementor-control-type-structure .elementor-control-structure-preset{padding:3px;border-radius:var(--e-border-radius);display:inline-block;cursor:pointer;height:50px}.elementor-control-type-structure .elementor-control-structure-preset svg{height:100%}.elementor-control-type-structure .elementor-control-structure-preset path{fill:var(--e-a-border-color-bold)}.elementor-control-type-structure .elementor-control-structure-reset{padding:15px 20px 0;font-size:11px;cursor:pointer;color:var(--e-a-color-txt-muted);border-block-start:var(--e-a-border);margin:0 -20px}.elementor-control-type-structure .elementor-control-structure-reset:hover{color:var(--e-a-color-txt)}.elementor-control-type-structure .elementor-control-structure-title{margin:10px -20px 0}.elementor-control-type-structure .elementor-control-structure-title:before{height:10px;box-shadow:inset 0 2px 4px hsla(0,0%,49.8%,.1)}.elementor-control-type-structure .elementor-control-structure-presets{display:flex;flex-wrap:wrap;justify-content:space-between}.elementor-control-type-structure .elementor-control-structure-presets input{display:none}.elementor-control-type-structure .elementor-control-structure-presets input:checked+.elementor-control-structure-preset path{fill:var(--e-a-border-color-focus)}.elementor-control-type-structure .elementor-control-structure-preset-wrapper{margin-block-end:15px}.elementor-control-type-structure .elementor-control-structure-preset-title{text-align:center;padding-block-start:5px;font-style:italic;font-size:11px;color:#9da5ae}.elementor-control-type-switcher .elementor-control-input-wrapper{text-align:end}.elementor-control-type-switcher .elementor-switch{position:relative;display:inline-block;vertical-align:top;height:20px;background-color:var(--e-a-bg-default);border-radius:18px;cursor:pointer}.elementor-control-type-switcher .elementor-switch-input{display:none}.elementor-control-type-switcher .elementor-switch-label{position:relative;display:block;height:inherit;font-size:10px;background:var(--e-a-bg-active-bold);border-radius:inherit;transition:.15s ease-out;transition-property:opacity,background}.elementor-control-type-switcher .elementor-switch-label:after,.elementor-control-type-switcher .elementor-switch-label:before{position:absolute;top:0;width:50%;text-align:center;line-height:20px;transition:inherit}.elementor-control-type-switcher .elementor-switch-label:before{content:attr(data-off);right:5px;color:var(--e-a-color-txt-muted)}.elementor-control-type-switcher .elementor-switch-label:after{content:attr(data-on);left:5px;color:var(--e-a-btn-color);opacity:0}.elementor-control-type-switcher .elementor-switch-input:checked~.elementor-switch-label{background:var(--e-a-btn-bg-primary)}.elementor-control-type-switcher .elementor-switch-input:checked~.elementor-switch-label:before{opacity:0}.elementor-control-type-switcher .elementor-switch-input:checked~.elementor-switch-label:after{opacity:1}.elementor-control-type-switcher .elementor-switch-handle{position:absolute;top:1px;left:1px;width:18px;height:18px;background:#fff;border-radius:10px;transition:left .15s ease-out}.elementor-control-type-switcher .elementor-switch-input:checked~.elementor-switch-handle{left:auto;right:1px}.elementor-control-type-tabs{display:flex;font-size:var(--control-title-size)}.elementor-control-type-tab{text-align:center;width:100%;padding:0;line-height:25px;border-block-start:var(--e-a-border-bold);border-block-end:var(--e-a-border-bold);border-inline-end:var(--e-a-border-bold);transition:var(--e-a-transition-hover);cursor:pointer}.elementor-control-type-tab:first-child{border-inline-start:var(--e-a-border-bold);border-start-start-radius:var(--e-a-border-radius);border-end-start-radius:var(--e-a-border-radius)}.elementor-control-type-tab:last-child{border-start-end-radius:var(--e-a-border-radius);border-end-end-radius:var(--e-a-border-radius)}.elementor-control-type-tab:hover{background-color:var(--e-a-bg-hover)}.elementor-control-type-tab.e-tab-active{background-color:var(--e-a-bg-active-bold);color:var(--e-a-color-txt-accent)}.e-tab-close{display:none!important}.elementor-control-type-code .elementor-control-dynamic-switcher,.elementor-control-type-textarea .elementor-control-dynamic-switcher{border-inline-start-width:1px;border-start-start-radius:0;border-start-end-radius:0;border-end-end-radius:0;border-end-start-radius:var(--e-a-border-radius)}.elementor-control-type-code:not(.elementor-control-dynamic-value) .elementor-control-dynamic-switcher,.elementor-control-type-textarea:not(.elementor-control-dynamic-value) .elementor-control-dynamic-switcher{position:absolute;top:0;right:0;z-index:1}.elementor-control-type-code .elementor-control-input-wrapper,.elementor-control-type-textarea .elementor-control-input-wrapper{position:relative}.elementor-control-type-code textarea,.elementor-control-type-textarea textarea{display:block;font-family:inherit}.elementor-control-type-code textarea:focus+.elementor-control-dynamic-switcher,.elementor-control-type-textarea textarea:focus+.elementor-control-dynamic-switcher{display:none}.elementor-control-type-code pre:focus-within+.elementor-control-dynamic-switcher,.elementor-control-type-textarea pre:focus-within+.elementor-control-dynamic-switcher{display:none}.elementor-control-type-url .elementor-control-field{position:relative}.elementor-control-type-url .elementor-control-input-wrapper{display:flex}.elementor-control-type-url.elementor-control-dynamic .elementor-control-url-more-options input{border-radius:var(--e-a-border-radius)}.elementor-control-type-url.elementor-control-dynamic-value .e-input-style{border-start-end-radius:0;border-end-end-radius:0}.elementor-control-type-url.elementor-control-dynamic-value .elementor-control-url-more{border-start-end-radius:var(--e-a-border-radius);border-end-end-radius:var(--e-a-border-radius)}.elementor-control-type-url .elementor-control-url-more{display:flex;align-items:center;justify-content:center;flex-shrink:0;border:var(--e-a-border-bold);color:currentColor;background-color:transparent;border-inline-start-width:0;cursor:pointer}.elementor-control-type-url .elementor-control-url-more i{font-size:12px}.elementor-control-type-url .elementor-control-url-more-options{display:none;padding-block-start:10px}.elementor-control-type-url .elementor-control-url-more-options .elementor-control-field-description{margin-block-start:10px}.elementor-control-type-url .elementor-control-url-more:hover{color:var(--e-a-color-txt-hover)}.elementor-control-type-url .elementor-control-url-more:focus{color:var(--e-a-color-txt-active);border-color:var(--e-a-border-color-focus)}.elementor-control-type-url .elementor-control-url-option{display:flex;align-items:center}.elementor-control-type-url .elementor-control-url-option:not(:last-child){padding-block-end:10px}.elementor-control-type-url .elementor-control-url-option input,.elementor-control-type-url .elementor-control-url-option label{cursor:pointer}.elementor-control-type-url .elementor-control-url-autocomplete-spinner{display:none;position:absolute;top:5px;right:0;width:10px;height:10px;font-size:10px;color:var(--e-a-color-txt-disabled)}.elementor-control-type-url .elementor-control-url__custom-attributes label{font-size:var(--control-title-size)}.elementor-control-type-url .elementor-control-url__custom-attributes input{width:100%;margin-block-start:10px}.elementor-control-type-url .elementor-input:focus~div{border-color:var(--e-a-border-color-focus)}.elementor-autocomplete-menu{position:absolute;background:var(--e-a-bg-default);border:var(--e-a-border);margin:0;list-style:none;padding:4px 0;height:auto;width:100%;min-width:260px;max-width:300px;max-height:200px;overflow-y:auto;border-radius:3px;transition:var(--e-a-transition-hover);cursor:default;z-index:1}.elementor-autocomplete-menu .ui-menu-item{display:flex;justify-content:space-between;align-self:baseline;padding:5px 8px;font-size:12px;width:100%;line-height:1.2;cursor:pointer}.elementor-autocomplete-menu .ui-menu-item.ui-state-active,.elementor-autocomplete-menu .ui-menu-item.ui-state-focus,.elementor-autocomplete-menu .ui-menu-item.ui-state-hover{background:var(--e-a-bg-hover)}.elementor-autocomplete-menu .elementor-autocomplete-item-info{font-size:10px;padding-block-start:2px}.elementor-control-type-wp_widget .widget-inside{line-height:2;background-color:inherit;display:block}.elementor-control-type-wp_widget .quicktags-toolbar input{width:auto}.elementor-control-type-wysiwyg *{box-sizing:content-box}.elementor-control-type-wysiwyg .wp-editor-container{border:var(--e-a-border)}.elementor-control-type-wysiwyg .wp-editor-tabs{border:var(--e-a-border-bold);border-block-end:none;border-start-start-radius:var(--e-a-border-radius);border-start-end-radius:var(--e-a-border-radius);border-end-end-radius:0;border-end-start-radius:0}.elementor-control-type-wysiwyg .wp-editor-tabs button:hover{background-color:var(--e-a-bg-hover)}.elementor-control-type-wysiwyg #insert-media-button{height:auto;line-height:24px;font-size:10px;color:var(--e-a-color-txt);border-color:var(--e-a-border-color-bold);background-color:var(--e-a-bg-default);min-height:0}.elementor-control-type-wysiwyg .ed_button{height:22px;width:auto}.elementor-control-type-wysiwyg .wp-media-buttons-icon{height:14px;margin:0}.elementor-control-type-wysiwyg .wp-media-buttons-icon:before{font-size:14px}.elementor-control-type-wysiwyg .wp-switch-editor{position:static;border:none;margin:0;color:var(--e-a-color-txt);font-size:10px;padding:3px 9px 4px}.elementor-control-type-wysiwyg .switch-html{border:solid var(--e-a-border-color-bold);border-width:0 1px}.elementor-control-type-wysiwyg .html-active .switch-tmce{background-color:transparent}.elementor-control-type-wysiwyg .html-active .switch-html,.elementor-control-type-wysiwyg .tmce-active .switch-tmce{background-color:var(--e-a-bg-active)}.elementor-control-type-wysiwyg .tmce-active .switch-html{background-color:transparent}.elementor-control-type-wysiwyg .mce-toolbar-grp,.elementor-control-type-wysiwyg .mce-toolbar .mce-btn-group .mce-btn.mce-listbox,.elementor-control-type-wysiwyg .quicktags-toolbar{background-color:var(--e-a-bg-default)}.elementor-control-type-wysiwyg .mce-toolbar .mce-btn-group .mce-btn.mce-listbox button{color:var(--e-a-color-txt)}.elementor-control-type-wysiwyg .mce-toolbar-grp>div{padding:0 3px}.elementor-control-type-wysiwyg .elementor-wp-editor{box-sizing:border-box}.elementor-control-type-wysiwyg .mce-ico{color:var(--e-a-color-txt);font-size:16px}.elementor-control-type-wysiwyg .mce-btn-group .mce-btn.mce-active,.elementor-control-type-wysiwyg .mce-btn-group .mce-btn:active,.elementor-control-type-wysiwyg .mce-btn-group .mce-btn:hover{color:var(--e-a-color-txt-active);background:var(--e-a-bg-hover);border-color:var(--e-a-border-color);box-shadow:none}.elementor-control-type-wysiwyg .mce-btn-group .mce-btn.mce-active i,.elementor-control-type-wysiwyg .mce-btn-group .mce-btn:active i,.elementor-control-type-wysiwyg .mce-btn-group .mce-btn:hover i{color:var(--e-a-color-txt-active)}.elementor-control-type-wysiwyg .mce-path{padding:5px 10px}.elementor-control-type-wysiwyg .mce-path-item{font-size:12px;color:var(--e-a-color-txt)}.elementor-control-type-wysiwyg .mce-top-part:before{box-shadow:none}.elementor-control-type-wysiwyg .elementor-control-dynamic-switcher{border:none}@media screen and (prefers-color-scheme:dark){#wp-link-wrap{color-scheme:light;--e-a-color-txt:#515962;--e-a-bg-default:#fff;--e-a-border-color-bold:#d5d8dc;--e-a-color-primary-bold:#d004d4}#wp-link{color:var(--e-a-color-txt)}#wp-link input{background-color:var(--e-a-bg-default)}#wp-link input,#wp-link input[type=checkbox]{border-color:var(--e-a-border-color-bold)}#wp-link input[type=checkbox]:checked{background:var(--e-a-color-primary-bold)}#wp-link input.button-primary{background:#2271b1;border-color:#2271b1;color:#fff}}#elementor-mode-switcher{--e-a-mode-switcher-width:15px;--e-a-mode-switcher-height:50px;--e-a-mode-switcher-icon-size:15px;position:absolute;left:100%;top:50%;transform:translateY(-50%);background-color:var(--e-a-bg-default);box-shadow:3px 1px 3px rgba(0,0,0,.05);transition:opacity .3s}#elementor-mode-switcher:hover{background-color:var(--e-a-bg-hover)}#elementor-mode-switcher:focus-within{background-color:var(--e-a-bg-active)}.e-panel-block-interactions #elementor-mode-switcher{opacity:0;pointer-events:none}#elementor-mode-switcher-preview i{display:flex;flex-direction:column;justify-content:center;width:var(--e-a-mode-switcher-width);height:var(--e-a-mode-switcher-height);font-size:var(--e-a-mode-switcher-icon-size);cursor:pointer}#elementor-mode-switcher-preview-input{display:none}.elementor-revision-item__wrapper{display:flex;align-items:center;text-align:start;width:100%;border:var(--e-a-border);border-radius:var(--e-a-border-radius);padding:10px 15px;margin-block-end:10px;font-size:11px;transition:var(--e-a-transition-hover);background-color:transparent}.elementor-revision-item__wrapper:focus,.elementor-revision-item__wrapper:hover{background-color:var(--e-a-bg-hover)}.elementor-revision-item-loading .elementor-revision-item__tools-current,.elementor-revision-item:not(.elementor-revision-item-loading) .elementor-revision-item__tools-spinner{display:none}.elementor-revision-item__gravatar{border-radius:50%;overflow:hidden}.elementor-revision-item__gravatar img{display:block}.elementor-revision-item__details{padding-inline-start:15px;flex-grow:1;cursor:pointer}.elementor-revision-meta{padding-block-start:5px;font-size:10px;font-weight:700}.elementor-revision-current-preview .elementor-revision-item__wrapper{border-color:var(--e-a-border-color-accent);background-color:var(--e-a-bg-active)}#elementor-panel-revisions-loading{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}#elementor-panel-revisions-loading .eicon-loading{font-size:50px}.elementor-panel-revisions-buttons{display:flex;justify-content:space-between;padding:15px 20px;border-block-end:var(--e-a-border)}.elementor-history-item{display:flex;align-items:center;text-align:start;border:var(--e-a-border);border-radius:var(--e-a-border-radius);padding:10px 15px;margin-block-end:10px;width:100%;font-size:11px;line-height:1.4;background-color:transparent;cursor:pointer;transition:var(--e-a-transition-hover)}.elementor-history-item:focus:not(.elementor-history-item-current),.elementor-history-item:hover:not(.elementor-history-item-current){background-color:var(--e-a-bg-hover);color:var(--e-a-txt-color-hover)}.elementor-history-item:focus:not(.elementor-history-item-current) .elementor-history-item__icon .eicon:before,.elementor-history-item:hover:not(.elementor-history-item-current) .elementor-history-item__icon .eicon:before{content:"\e924"}.elementor-history-item-current{border-color:var(--e-a-border-color-accent);background-color:var(--e-a-bg-active);color:var(--e-a-txt-color-active)}.elementor-history-item-current .elementor-history-item__icon .eicon:before,.elementor-history-item-current:focus .elementor-history-item__icon .eicon:before,.elementor-history-item-current:hover .elementor-history-item__icon .eicon:before{content:"\e90e"}.elementor-history-item__details{width:95%}.elementor-history-item__title{font-weight:700}.elementor-history-item__action,.elementor-history-item__subtitle{font-weight:lighter}.elementor-history-item__action{font-style:italic;text-decoration:underline}.elementor-history-revisions-message{font-size:11px;text-align:center;padding-block-start:5px}#elementor-panel-history{padding:20px;padding-block-end:15px}#elementor-panel-history.elementor-empty .elementor-history-revisions-message{padding-block-start:20px}#elementor-panel-history:not(.elementor-empty){margin-block-start:10px}#elementor-panel-history-no-items,#elementor-panel-revisions-no-revisions{text-align:center}#elementor-panel-history-no-items .elementor-nerd-box-icon,#elementor-panel-revisions-no-revisions .elementor-nerd-box-icon{margin-block-start:20px}.e-control-display-conditions-promotion__wrapper{display:flex;justify-content:space-between}.e-control-display-conditions-promotion__wrapper:hover .eicon-lock.e-control-display-conditions-promotion{color:var(--e-a-color-accent)}.e-control-display-conditions-promotion__description{display:flex;align-self:center}.e-control-display-conditions-promotion__text{display:inline-block}.e-control-display-conditions-promotion__lock-wrapper{width:2.5rem;display:flex;justify-content:center;align-items:center}.e-control-display-conditions-promotion.eicon-flow{align-self:flex-end;cursor:pointer;border:var(--e-a-border-bold);border-radius:var(--e-a-border-radius);padding:5px}.e-control-display-conditions-promotion.eicon-flow.filled{background-color:var(--e-a-bg-active);color:#e73cf6}.e-control-motion-effects-promotion__wrapper:hover .eicon-lock{color:var(--e-a-color-accent)}.e-control-motion-effects-promotion__wrapper .select-promotion{display:flex;flex-direction:column;justify-content:center;padding-inline-start:5px;padding-inline-end:20px;cursor:pointer;height:27px;width:100%;color:var(--e-a-color-txt);border-radius:var(--e-a-border-radius);background-color:var(--e-a-bg-default);box-shadow:none;border:var(--e-a-border-bold);font-size:var(--control-title-size)}.e-control-motion-effects-promotion__lock-wrapper{width:2.5rem;display:flex;justify-content:center;align-items:center}.e-link-promotion{font-family:Roboto,sans-serif;font-weight:500;color:#93003f}.e-link-promotion:hover{color:#93003f}.elementor-panel #elementor-panel-header #elementor-panel-header-kit-back,.elementor-panel #elementor-panel-header #elementor-panel-header-kit-close{display:none}.elementor-editor-kit .elementor-panel #elementor-panel-header #elementor-panel-header-kit-back,.elementor-editor-kit .elementor-panel #elementor-panel-header #elementor-panel-header-kit-close{display:flex}body:not(.e-routes-has-history) #elementor-panel-header-kit-back{pointer-events:none;visibility:hidden}.elementor-editor-kit .elementor-panel #elementor-panel-page-settings .elementor-panel-navigation{display:none}.elementor-editor-kit .elementor-panel #elementor-panel-page-menu{padding:25px 15px 0}.elementor-editor-kit #elementor-panel-footer-navigator,.elementor-editor-kit #elementor-panel-footer-sub-menu-item-save-template,.elementor-editor-kit #elementor-panel-header-add-button,.elementor-editor-kit #elementor-panel-header-menu-button{display:none}.elementor-control-type-global-style-repeater .elementor-repeater-fields{margin-block-end:15px;position:relative}.elementor-control-type-global-style-repeater .elementor-repeater-fields.ui-sortable-helper{background-color:var(--e-a-bg-default)}.elementor-control-type-global-style-repeater .elementor-repeater-row-controls{display:flex;align-items:center}.elementor-control-type-global-style-repeater .elementor-repeater-row-tool{cursor:pointer;color:var(--e-a-color-txt);background-color:transparent;border:none;padding:5px}.elementor-control-type-global-style-repeater .elementor-repeater-row-tool:focus,.elementor-control-type-global-style-repeater .elementor-repeater-row-tool:hover{color:var(--e-a-color-txt-hover)}.elementor-control-type-global-style-repeater .elementor-control{padding:0}.elementor-control-type-global-style-repeater .elementor-control-title{flex-grow:1}.elementor-control-type-global-style-repeater .elementor-control-title input{max-width:135px}.elementor-control-type-global-style-repeater .elementor-control-title input:not(:focus){background:none;border:none}.elementor-control-type-global-style-repeater .elementor-control-input-wrapper{display:flex;align-items:center;min-width:81px}.elementor-control-type-global-style-repeater .elementor-control-input-wrapper:hover .e-global-colors__color-value,.elementor-control-type-global-style-repeater .elementor-control-input-wrapper:not(:hover) .elementor-repeater-tool-remove,.elementor-control-type-global-style-repeater .elementor-control-input-wrapper:not(:hover) .elementor-repeater-tool-remove--disabled,.elementor-control-type-global-style-repeater .elementor-control-input-wrapper:not(:hover) .elementor-repeater-tool-sort{display:none}.elementor-control-type-global-style-repeater .elementor-repeater-row-controls>.elementor-control>.elementor-control-content>.elementor-control-field>.elementor-control-input-wrapper{margin-block-start:0}.elementor-control-type-global-style-repeater .elementor-controls-popover{align-self:end;margin-block-start:35px;top:0;width:100%}.elementor-control-type-global-style-repeater .elementor-controls-popover:before{right:5px}.elementor-control-type-global-style-repeater .elementor-controls-popover .elementor-control{padding:0 20px 15px}.elementor-control-type-global-style-repeater .elementor-controls-popover .elementor-control-title{flex-grow:0}.elementor-control-type-global-style-repeater .elementor-button-wrapper{text-align:center;border-block-start:var(--e-a-border);padding-block-start:15px}.elementor-control-type-global-style-repeater .elementor-control-popover-toggle-toggle-label,.elementor-control-type-global-style-repeater .pickr{margin-inline-start:5px}.elementor-control-type-global-style-repeater .e-sortable-placeholder{background-color:var(--e-a-color-info);opacity:.9;width:100%;margin:8px 0;height:2px}.elementor-control-system_colors,.elementor-control-system_typography{padding-block-end:0}.e-global-colors__color-value{font-size:10px;padding:0 5px;text-align:end;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}@keyframes load{0%{opacity:.3}50%{opacity:1}to{opacity:.3}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes mover{0%{transform:translateY(0)}to{transform:translateY(-5px)}}@keyframes slideDown{0%{transform:translateY(-30px)}to{transform:translateY(0)}}.e-btn,.elementor-button{font-size:12px;font-weight:500;line-height:1.2;padding:8px 16px;outline:none;border:none;border-radius:var(--e-a-border-radius);background-color:var(--e-a-btn-bg);color:var(--e-a-btn-color-invert);transition:var(--e-a-transition-hover)}.e-btn:hover,.elementor-button:hover{border:none}.e-btn:focus,.e-btn:hover,.elementor-button:focus,.elementor-button:hover{background-color:var(--e-a-btn-bg-hover);color:var(--e-a-btn-color-invert)}.e-btn:active,.elementor-button:active{background-color:var(--e-a-btn-bg-active)}.e-btn:not([disabled]),.elementor-button:not([disabled]){cursor:pointer}.e-btn:disabled,.elementor-button:disabled{background-color:var(--e-a-btn-bg-disabled);color:var(--e-a-btn-color-disabled)}.e-btn:not(.elementor-button-state) .elementor-state-icon,.elementor-button:not(.elementor-button-state) .elementor-state-icon{display:none}.e-btn.e-btn-txt,.elementor-button.e-btn-txt{background:transparent;color:var(--e-a-color-txt)}.e-btn.e-btn-txt:focus,.e-btn.e-btn-txt:hover,.elementor-button.e-btn-txt:focus,.elementor-button.e-btn-txt:hover{background:var(--e-a-bg-hover);color:var(--e-a-color-txt-hover)}.e-btn.e-btn-txt:disabled,.elementor-button.e-btn-txt:disabled{background:transparent;color:var(--e-a-color-txt-disabled)}.e-btn.e-btn-txt-border,.elementor-button.e-btn-txt-border{border:1px solid var(--e-a-color-txt-muted)}.e-btn.e-success,.e-btn.elementor-button-success,.elementor-button.e-success,.elementor-button.elementor-button-success{background-color:var(--e-a-btn-bg-success)}.e-btn.e-success:focus,.e-btn.e-success:hover,.e-btn.elementor-button-success:focus,.e-btn.elementor-button-success:hover,.elementor-button.e-success:focus,.elementor-button.e-success:hover,.elementor-button.elementor-button-success:focus,.elementor-button.elementor-button-success:hover{background-color:var(--e-a-btn-bg-success-hover)}.e-btn.e-primary,.elementor-button.e-primary{background-color:var(--e-a-btn-bg-primary);color:var(--e-a-btn-color)}.e-btn.e-primary:focus,.e-btn.e-primary:hover,.elementor-button.e-primary:focus,.elementor-button.e-primary:hover{background-color:var(--e-a-btn-bg-primary-hover);color:var(--e-a-btn-color)}.e-btn.e-primary.e-btn-txt,.elementor-button.e-primary.e-btn-txt{background:transparent;color:var(--e-a-color-primary-bold)}.e-btn.e-primary.e-btn-txt:focus,.e-btn.e-primary.e-btn-txt:hover,.elementor-button.e-primary.e-btn-txt:focus,.elementor-button.e-primary.e-btn-txt:hover{background:var(--e-a-bg-primary)}.e-btn.e-accent,.e-btn.go-pro,.elementor-button.e-accent,.elementor-button.go-pro{background-color:var(--e-a-btn-bg-accent)}.e-btn.e-accent:focus,.e-btn.e-accent:hover,.e-btn.go-pro:focus,.e-btn.go-pro:hover,.elementor-button.e-accent:focus,.elementor-button.e-accent:hover,.elementor-button.go-pro:focus,.elementor-button.go-pro:hover{background-color:var(--e-a-btn-bg-accent-hover)}.e-btn.e-accent:active,.e-btn.go-pro:active,.elementor-button.e-accent:active,.elementor-button.go-pro:active{background-color:var(--e-a-btn-bg-accent-active)}.e-btn.e-info,.e-btn.elementor-button-info,.elementor-button.e-info,.elementor-button.elementor-button-info{background-color:var(--e-a-btn-bg-info)}.e-btn.e-info:focus,.e-btn.e-info:hover,.e-btn.elementor-button-info:focus,.e-btn.elementor-button-info:hover,.elementor-button.e-info:focus,.elementor-button.e-info:hover,.elementor-button.elementor-button-info:focus,.elementor-button.elementor-button-info:hover{background-color:var(--e-a-btn-bg-info-hover)}.e-btn.e-warning,.e-btn.elementor-button-warning,.elementor-button.e-warning,.elementor-button.elementor-button-warning{background-color:var(--e-a-btn-bg-warning)}.e-btn.e-warning:focus,.e-btn.e-warning:hover,.e-btn.elementor-button-warning:focus,.e-btn.elementor-button-warning:hover,.elementor-button.e-warning:focus,.elementor-button.e-warning:hover,.elementor-button.elementor-button-warning:focus,.elementor-button.elementor-button-warning:hover{background-color:var(--e-a-btn-bg-warning-hover)}.e-btn.e-danger,.e-btn.elementor-button-danger,.elementor-button.e-danger,.elementor-button.elementor-button-danger{background-color:var(--e-a-btn-bg-danger)}.e-btn.e-danger:focus,.e-btn.e-danger:hover,.e-btn.elementor-button-danger:focus,.e-btn.elementor-button-danger:hover,.elementor-button.e-danger:focus,.elementor-button.e-danger:hover,.elementor-button.elementor-button-danger:focus,.elementor-button.elementor-button-danger:hover{background-color:var(--e-a-btn-bg-danger-hover)}.e-btn i,.elementor-button i{margin-inline-end:5px}body{--e-preview-width:calc(100% - var(--e-editor-panel-width, 300px))}body.elementor-navigator-docked{--e-preview-width:calc(100% - var(--e-editor-panel-width, 300px) - var(--e-editor-navigator-width, 0px))}body.elementor-device-desktop #elementor-preview{overflow-y:hidden;align-items:flex-start}body:not(.elementor-device-desktop) body{overflow-y:auto}#elementor-preview{background-color:#333;height:100%;border:0;width:var(--e-preview-width);display:flex;flex-direction:column;justify-content:flex-start;align-items:center;position:relative}#elementor-preview-responsive-wrapper{transform-origin:top center;padding:20px;transform:scale(var(--e-preview-scale,1))}.elementor-device-desktop #elementor-preview-responsive-wrapper{min-width:1025px;width:100%;height:100%;padding:0;position:relative}body.e-is-device-mode:not(.elementor-device-desktop) #elementor-preview-responsive-wrapper{width:var(--e-editor-preview-width);height:var(--e-editor-preview-height);margin:0 max((100vw - var(--e-editor-panel-width) - var(--e-editor-preview-width))/2,20px);box-sizing:content-box;position:relative;max-height:calc(100vh - 80px)}body.e-is-device-mode:not(.elementor-device-desktop) #elementor-preview-responsive-wrapper .ui-resizable-handle{display:flex!important}#elementor-preview-responsive-wrapper:not(.ui-resizable-resizing){transition:.3s ease-in-out}#elementor-preview-responsive-wrapper .ui-resizable-handle{top:0}#elementor-preview-responsive-wrapper .ui-resizable-handle.ui-resizable-s{top:auto;bottom:0}#elementor-preview-responsive-wrapper .ui-resizable-n,#elementor-preview-responsive-wrapper .ui-resizable-s{align-items:center;justify-content:center;height:20px}#elementor-preview-responsive-wrapper .ui-resizable-n:before,#elementor-preview-responsive-wrapper .ui-resizable-s:before{content:"";display:block;background-color:hsla(0,0%,100%,.2);width:50px;height:4px;border-radius:3px;transition:all .2s ease-in-out}#elementor-preview-responsive-wrapper .ui-resizable-n:hover:before,#elementor-preview-responsive-wrapper .ui-resizable-s:hover:before{background-color:hsla(0,0%,100%,.6);width:100px}#elementor-preview-responsive-wrapper .ui-resizable-e,#elementor-preview-responsive-wrapper .ui-resizable-w{align-items:center;justify-content:center;width:20px}#elementor-preview-responsive-wrapper .ui-resizable-e:before,#elementor-preview-responsive-wrapper .ui-resizable-w:before{content:"";display:block;background-color:hsla(0,0%,100%,.2);width:4px;height:50px;border-radius:3px;transition:all .2s ease-in-out}#elementor-preview-responsive-wrapper .ui-resizable-e:hover:before,#elementor-preview-responsive-wrapper .ui-resizable-w:hover:before{background-color:hsla(0,0%,100%,.6);height:100px}#elementor-preview-responsive-wrapper.ui-resizable-resizing .ui-resizable-handle:before{background-color:hsla(0,0%,100%,.9)}#elementor-preview-responsive-wrapper .ui-resizable-s{bottom:0}#elementor-preview-responsive-wrapper .ui-resizable-e{right:0}#elementor-preview-responsive-wrapper .ui-resizable-w{left:0}#elementor-preview-iframe{width:100%;height:100%;background-color:#fff;box-shadow:0 0 3px rgba(0,0,0,.3),0 0 20px rgba(0,0,0,.15)}#elementor-template-library-modal a.elementor-template-library-blank-footer-link{font-style:normal;text-decoration:underline}#elementor-template-library-modal .dialog-buttons-wrapper{display:none}#elementor-template-library-modal .select2-container{z-index:0}#elementor-template-library-modal .dialog-message{overflow-y:scroll}#elementor-template-library-header-menu{text-align:center}.elementor-template-library-menu-item{display:inline-block;padding:17px 20px;border-block-end:3px solid transparent;cursor:pointer}.elementor-template-library-menu-item:hover{background-color:var(--e-a-bg-hover);border-color:var(--e-a-bg-hover)}.elementor-template-library-menu-item.elementor-active{border-color:var(--e-a-border-color-accent);color:var(--e-a-color-txt-accent)}#elementor-template-library-header-actions{display:flex}#elementor-template-library-header-actions>div{padding-inline-end:16px}#elementor-template-library-header-preview-insert-wrapper{cursor:default;padding:0 10px}.elementor-template-library-template-insert+.elementor-template-library-template-generate-variation{margin-inline-start:4px}#elementor-template-library-header-preview-back{padding-block:16.5px 15px;padding-inline:0 16.5px;border-inline-end:var(--e-a-border);cursor:pointer;transition:color .5s}#elementor-template-library-header-preview-back:hover{color:var(--e-a-color-txt-hover)}#elementor-template-library-header-preview-back i{padding-inline-end:10px;font-size:18px}#elementor-template-library-header-preview-back i:before{content:"\e87e"}#elementor-template-library-templates[data-template-source=local] #elementor-template-library-templates-container{margin-block-start:10px;margin-block-end:45px;border-block-start:var(--e-a-border)}#elementor-template-library-templates[data-template-source=local] .elementor-template-library-order-input:checked+.elementor-template-library-order-label{color:var(--e-a-color-txt-active)}#elementor-template-library-templates[data-template-source=remote] #elementor-template-library-templates-container{margin:10px -15px 0}#elementor-template-library-templates[data-template-source=remote] .elementor-template-library-order-input:checked+.elementor-template-library-order-label{color:var(--e-a-color-txt-active)}#elementor-template-library-templates .elementor-template-library-order-input,#elementor-template-library-templates.elementor-templates-filter-active #elementor-template-library-footer-banner,#elementor-template-library-templates[data-template-source=empty] #elementor-template-library-footer-banner,#elementor-template-library-templates[data-template-source=empty] #elementor-template-library-order-toolbar-local{display:none}#elementor-template-library-templates .elementor-template-library-order-input:checked+.elementor-template-library-order-label{padding-inline-end:8px}#elementor-template-library-templates .elementor-template-library-order-input:checked+.elementor-template-library-order-label:after{font-family:eicons;content:"\e8ae";margin-inline-start:3px}#elementor-template-library-templates .elementor-template-library-order-input:checked.elementor-template-library-order-reverse+.elementor-template-library-order-label:after{content:"\e8ad"}#elementor-template-library-templates-container{display:flex;flex-wrap:wrap;align-items:flex-start}#elementor-template-library-toolbar{display:flex;justify-content:space-between;align-items:center}.elementor-template-library-filter-toolbar{display:flex;align-items:center}#elementor-template-library-filter-toolbar-remote{font-size:11px}#elementor-template-library-order{display:flex;border-inline-end:var(--e-a-border)}.elementor-template-library-order-label{text-transform:uppercase;padding-inline-end:22px;-webkit-user-select:none;-moz-user-select:none;user-select:none}label.elementor-template-library-order-label{cursor:pointer}label.elementor-template-library-order-label:hover{color:var(--e-a-color-txt-hover)}#elementor-template-library-filter .select2{text-align:start;width:calc(27px * 5)!important}#elementor-template-library-filter .select2-selection__rendered{text-transform:capitalize}#select2-elementor-template-library-filter-subtype-results .select2-results__option{text-transform:capitalize;text-align:start;padding-inline-start:5px}#elementor-template-library-my-favorites{flex-grow:1;text-align:start;padding-inline-start:20px}#elementor-template-library-filter-my-favorites{display:none}#elementor-template-library-filter-my-favorites:checked+#elementor-template-library-filter-my-favorites-label{color:var(--e-a-color-txt-active)}#elementor-template-library-filter-my-favorites:checked+#elementor-template-library-filter-my-favorites-label i:after{color:var(--e-a-color-primary-bold);content:"\e93f"}#elementor-template-library-filter-my-favorites-label{cursor:pointer;text-transform:uppercase}#elementor-template-library-filter-my-favorites-label:hover{color:var(--e-a-color-txt-hover)}#elementor-template-library-filter-my-favorites-label:hover i:after{color:var(--e-a-color-primary-bold)}#elementor-template-library-filter-my-favorites-label i{padding-inline-end:5px}#elementor-template-library-filter-my-favorites-label i:after{content:"\e923"}#elementor-template-library-filter-text-wrapper{width:200px;position:relative}#elementor-template-library-filter-text-wrapper i{position:absolute;top:50%;right:0;transform:translateY(-50%)}#elementor-template-library-filter-text{border:none;border-block-end:var(--e-a-border-bold);border-radius:0;font-size:11px;padding:8px 15px 8px 0;transition:border .5s}#elementor-template-library-filter-text:focus{border-color:var(--e-a-border-color-focus)}#elementor-template-library-filter-text::-moz-placeholder{font-weight:300;text-transform:uppercase}#elementor-template-library-filter-text::placeholder{font-weight:300;text-transform:uppercase}.elementor-template-library-template-remote{margin:calc(30px / 2);padding:8px;border:var(--e-a-border);border-radius:3px}.elementor-template-library-template-remote:hover{background-color:var(--e-a-bg-hover)}.elementor-template-library-template-remote:hover .elementor-template-library-template-name{display:none}.elementor-template-library-template-remote:not(:hover) .elementor-template-library-template-preview{opacity:0}.elementor-template-library-template-remote:not(:hover) .elementor-template-library-favorite,.elementor-template-library-template-remote:not(:hover) .elementor-template-library-template-action{display:none}.elementor-template-library-template-remote.elementor-template-library-pro-template .elementor-template-library-template-body:before{content:var(--elementor-template-library-subscription-plan-label);background-color:var(--e-a-color-accent);color:var(--e-a-color-white);position:absolute;text-transform:uppercase;line-height:1;top:5px;right:5px;padding:3px 5px;font-size:8px;border-radius:2px}.elementor-template-library-template-remote:not(.elementor-template-library-template-page):not(.elementor-template-library-template-lp){position:relative;width:calc(33.333% - 30px);overflow:hidden}.elementor-template-library-template-remote:not(.elementor-template-library-template-page):not(.elementor-template-library-template-lp) img{display:block;width:100%}.elementor-template-library-template-remote:not(.elementor-template-library-template-page):not(.elementor-template-library-template-lp) .elementor-template-library-template-footer{position:absolute;width:100%;bottom:0;left:0;padding:10px;background-color:var(--e-a-bg-default);transition:transform .5s}.elementor-template-library-template-remote:not(.elementor-template-library-template-page):not(.elementor-template-library-template-lp) .elementor-template-library-template-name{display:none}.elementor-template-library-template-remote:not(.elementor-template-library-template-page):not(.elementor-template-library-template-lp):not(:hover) .elementor-template-library-template-footer{transform:translateY(100%)}.elementor-template-library-template-remote .elementor-template-library-template-body{position:relative}@media (max-width:1025px){.elementor-template-library-template-remote .elementor-template-library-template-body{height:300px}}.elementor-template-library-template-remote .elementor-template-library-template-screenshot{height:100%;background-size:cover;background-position-x:50%;box-shadow:inset 0 -2px 15px -6px rgba(0,0,0,.07)}.elementor-template-library-template-remote .elementor-template-library-template-preview{position:absolute;top:0;left:0;width:100%;height:100%;background-color:rgba(0,0,0,.5);transition:opacity .5s;cursor:pointer}.elementor-template-library-template-remote .elementor-template-library-template-preview i{font-size:20px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.elementor-template-library-template-remote .elementor-template-library-template-footer{display:flex;justify-content:space-between;font-size:11px;line-height:1;height:40px;align-items:center}.elementor-template-library-template-remote .elementor-template-library-template-name{text-align:start;flex-grow:1;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;padding-inline-end:5px}.elementor-template-library-template-remote .elementor-template-library-favorite{margin-inline-start:auto}.elementor-template-library-template-remote .elementor-template-library-template-favorite-input{display:none}.elementor-template-library-template-remote .elementor-template-library-template-favorite-input:checked+.elementor-template-library-template-favorite-label i:before{content:"\e93f";color:var(--e-a-color-primary-bold)}.elementor-template-library-template-remote .elementor-template-library-template-favorite-label{font-size:15px;cursor:pointer}.elementor-template-library-template-remote .elementor-template-library-template-favorite-label:hover i{color:var(--e-a-color-primary-bold)}@media (max-width:1439px){.elementor-template-library-template-lp,.elementor-template-library-template-page{width:calc(25% - 30px)}}@media (min-width:1440px){.elementor-template-library-template-lp,.elementor-template-library-template-page{width:calc(20% - 30px)}}@media (max-width:1025px){.elementor-template-library-template-lp,.elementor-template-library-template-page{width:calc(33.333% - 30px)}}.elementor-template-library-template-lp .elementor-template-library-template-body,.elementor-template-library-template-page .elementor-template-library-template-body{height:200px}#elementor-template-library-order-toolbar-local,.elementor-template-library-template-local{display:flex;align-items:center;padding:0 25px;text-align:start}#elementor-template-library-order-toolbar-local{margin-block-start:30px}#elementor-template-library-order-toolbar-local .elementor-template-library-order-label{line-height:1;font-size:10px;font-weight:500}.elementor-template-library-template-local{height:50px;width:100%;margin-block-start:1px;transition:background-color .3s linear}.elementor-template-library-template-local:hover{background-color:var(--e-a-bg-hover)}.elementor-template-library-template-local:first-child{border-start-start-radius:3px;border-start-end-radius:3px;border-end-start-radius:0;border-end-end-radius:0}.elementor-template-library-template-local:last-child{border-start-start-radius:0;border-start-end-radius:0;border-end-start-radius:3px;border-end-end-radius:3px}.elementor-template-library-template-local .elementor-template-library-template-name{font-weight:500}.elementor-template-library-template-local .elementor-template-library-template-meta,.elementor-template-library-template-local .elementor-template-library-template-name{padding-inline-end:20px}.elementor-template-library-template-local .elementor-template-library-template-action,.elementor-template-library-template-local .elementor-template-library-template-meta,.elementor-template-library-template-local .elementor-template-library-template-name,.elementor-template-library-template-local .elementor-template-library-template-preview{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.elementor-template-library-template-local .elementor-template-library-template-controls{position:relative;display:flex;align-items:center}.elementor-template-library-template-local .elementor-template-library-template-controls>div{cursor:pointer;transition:color .5s}.elementor-template-library-template-local .elementor-template-library-template-insert i{margin-inline-end:3px}.elementor-template-library-template-local .elementor-template-library-template-control-title{margin-inline-start:6px}.elementor-template-library-template-local .elementor-template-library-template-more .elementor-template-library-template-delete:hover{color:var(--e-a-color-danger)}.elementor-template-library-template-local .elementor-template-library-template-more{display:none;position:absolute;background-color:var(--e-a-bg-default);padding:3px 20px;border-radius:var(--e-a-border-radius);box-shadow:1px 3px 11px rgba(0,0,0,.3);top:100%;right:0;transform:translateX(65%) translateY(-7px);z-index:1}.elementor-template-library-template-local .elementor-template-library-template-more:before{content:"";position:absolute;border:solid transparent;border-width:8px 4px;border-block-end-color:var(--e-a-color-white);transform:translateY(-100%)}.elementor-template-library-template-local .elementor-template-library-template-more>div{margin:10px 0;font-size:11px}.elementor-template-library-template-local .elementor-template-library-template-more a{color:var(--e-a-color-txt)}.elementor-template-library-template-local .elementor-template-library-template-more-toggle{flex-grow:1;text-align:end}.elementor-template-library-template-local .elementor-template-library-template-more-toggle i{font-size:16px}#elementor-template-library-preview{height:100%;overflow:hidden}#elementor-template-library-preview iframe{height:150%;transform:scale(.666) translateX(-25%) translateY(-25%)}@media (max-width:1439px){#elementor-template-library-preview iframe{width:1440px}}@media (min-width:1440px){#elementor-template-library-preview iframe{width:1730px}}.elementor-template-library-blank-icon{font-size:64px;margin-block-start:45px;line-height:1}.elementor-template-library-blank-icon img{width:70px}.elementor-template-library-blank-icon .elementor-template-library-no-results{width:200px}.elementor-template-library-blank-title{font-size:30px;margin-block-start:20px}@media (max-width:1439px){.elementor-template-library-blank-title{font-size:25px}}.elementor-template-library-blank-message{font-size:18px;margin-block-start:15px;font-weight:300}@media (max-width:1439px){.elementor-template-library-blank-message{font-size:16px;margin-block-start:10px}}#elementor-template-library-save-template-form{margin-block-start:40px;display:flex;align-items:center;justify-content:center}#elementor-template-library-save-template-form>*{height:55px;font-size:16px}#elementor-template-library-save-template-name{width:500px;padding-inline-start:25px;border-start-start-radius:3px;border-start-end-radius:0;border-end-start-radius:3px;border-end-end-radius:0}#elementor-template-library-save-template-submit{width:150px;border-start-start-radius:0;border-start-end-radius:3px;border-end-start-radius:0;border-end-end-radius:3px}#elementor-template-library-import-form{width:95%;padding:60px;border:2px dashed var(--e-a-border-color-bold);margin:35px auto;transition:var(--e-a-transition-hover)}#elementor-template-library-import-form-or{margin-block-start:15px;font-size:18px}#elementor-template-library-import-form-label{margin-block-start:20px;padding:15px 35px;display:inline-block}#elementor-template-library-import-form-input{display:none}#elementor-template-library-import-form.elementor-drag-over{border-color:var(--e-a-color-primary)}#elementor-template-library-import .elementor-template-library-blank-icon{margin-block-start:0}#elementor-template-library-import .elementor-template-library-blank-message{margin-block-start:20px}.e-route-library-connect #elementor-template-library-modal .dialog-message{max-height:95vh;padding:100px 0 0;min-height:550px}#elementor-template-library-connect-logo{font-size:20px}#elementor-template-library-connect__button{display:inline-block;position:relative;z-index:1;margin-block-start:25px;padding:12px 24px;font-size:14px}#elementor-template-library-connect__background-image-left-1{right:22.4%;bottom:-29%;animation:fadeIn 1.5s,slideDown 1.5s,mover 3.5s 1.5s infinite alternate}#elementor-template-library-connect__background-image-left-2{right:46.25%;bottom:-15.5%;animation:fadeIn 3s,slideDown 3s,mover 2s 3s infinite alternate}#elementor-template-library-connect__background-image-right-1{left:37%;bottom:-41%;animation:fadeIn 2.5s,slideDown 2.5s,mover 2s 2.5s infinite alternate}#elementor-template-library-connect__background-image-right-2{left:48%;bottom:-12.5%;animation:fadeIn 1.5s,slideDown 1.5s,mover 1.5s 1.5s infinite alternate}.elementor-template-library-connect__background-image{position:absolute}.elementor-template-library-blank-footer{position:absolute;bottom:70px;left:50%;transform:translateX(-50%);font-style:italic;color:var(--e-a-color-txt-muted)}@media (max-height:700px){.elementor-template-library-blank-footer{display:none}}#elementor-template-library-footer-banner{padding-block-end:45px}#elementor-template-library-footer-banner i{font-size:56px;margin-block-start:40px}#elementor-template-library-footer-banner .elementor-nerd-box-icon{margin-block-start:70px}#elementor-template-library-templates-empty{width:100%;margin-block-start:40px}#elementor-template-library-error-dialog .dialog-message{text-align:start}#elementor-template-library-error-info{margin-block-start:10px}@media (max-width:1439px){.elementor-template-library-local-column-1{width:33%}.elementor-template-library-local-column-2{width:10%}.elementor-template-library-local-column-3,.elementor-template-library-local-column-4{width:15%}.elementor-template-library-local-column-5{width:27%}}@media (min-width:1440px){.elementor-template-library-local-column-1{width:25%}.elementor-template-library-local-column-2,.elementor-template-library-local-column-3,.elementor-template-library-local-column-4{width:17%}.elementor-template-library-local-column-5{width:24%}}@media (max-width:1024px){.elementor-template-library-local-column-3{display:none}.elementor-template-library-local-column-5{width:41%}}.elementor-tags-list{display:none;position:absolute;width:260px;max-height:300px;overflow:auto;padding-block-end:5px;background-color:var(--e-a-bg-default);box-shadow:var(--e-a-popover-shadow);border:var(--e-a-border);border-radius:3px;z-index:10000}.elementor-tags-list__group-title{font-weight:700;font-size:12px;padding:10px 15px;display:flex;align-items:center}.elementor-tags-list__group-title .eicon-info-circle{padding-inline-end:5px;color:var(--e-a-color-primary-bold);font-size:14px}.elementor-tags-list__item{font-size:10px;padding:6px 15px;cursor:pointer}.elementor-tags-list__item:before{content:">";font-size:8px;padding-inline-end:5px}.elementor-tags-list__item:hover{background-color:var(--e-a-bg-hover)}.elementor-tags-list__teaser{border-block-start:2px solid var(--e-a-border-color);padding-block-start:4px;margin-block-start:4px}.elementor-tags-list__teaser-text{padding:2px 15px 8px;line-height:1.5;font-size:12px}.elementor-tags-list__teaser-link{color:var(--e-a-color-primary-bold);text-decoration:underline;font-style:italic;font-weight:700}.elementor-dynamic-cover{display:flex;align-items:center;width:100%;height:27px;box-sizing:border-box}.elementor-dynamic-cover__title{padding:0 8px;flex-grow:1;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.elementor-dynamic-cover__remove,.elementor-dynamic-cover__settings{cursor:pointer;transition:var(--e-a-transition-hover)}.elementor-dynamic-cover__remove:hover,.elementor-dynamic-cover__settings:hover{color:var(--e-a-color-txt-hover)}.elementor-control-type-wysiwyg .elementor-dynamic-cover{margin-block-start:10px}.elementor-tag-settings-popup{position:absolute;width:260px;background-color:var(--e-a-bg-default);border:var(--e-a-border);box-shadow:var(--e-a-popover-shadow);z-index:1}.elementor-tag-settings-popup:before{content:"";position:absolute;top:-20px;left:5px;border:10px solid transparent;border-block-end-color:var(--e-a-border-color)}.elementor-tag-settings-popup .elementor-control-type-section:first-child{margin:0}.elementor-tag-controls-stack-empty{background-color:var(--e-a-bg-default);padding:10px;font-size:13px;text-align:center}.elementor-control-dynamic input{border-start-start-radius:var(--e-a-border-radius);border-start-end-radius:0;border-end-end-radius:0;border-end-start-radius:var(--e-a-border-radius)}.elementor-control-dynamic-switcher{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;height:27px;cursor:pointer;border:var(--e-a-border-bold);background:var(--e-a-bg-default);border-inline-start-width:0;border-start-start-radius:0;border-start-end-radius:var(--e-a-border-radius);border-end-end-radius:var(--e-a-border-radius);border-end-start-radius:0;transition:var(--e-a-transition-hover)}.elementor-control-dynamic-switcher:hover{background-color:var(--e-a-bg-hover);color:var(--e-a-color-txt-hover)}.elementor-control-dynamic-switcher.e-control-tool{height:20px;border:0}.elementor-control-dynamic-switcher-wrapper{display:flex}.elementor-control-dynamic-switcher .eicon-database{font-size:12px}.elementor-control-dynamic-value .e-global__popover-toggle,.elementor-control-dynamic-value .elementor-control-dynamic-switcher,.elementor-control-dynamic-value .elementor-control-tag-area{display:none}.elementor-context-menu{position:absolute;width:250px;padding:5px 0;background-color:var(--e-a-bg-default);border-radius:var(--e-a-border-radius);box-shadow:var(--e-a-popover-shadow);-webkit-user-select:none;-moz-user-select:none;user-select:none;z-index:101}.elementor-context-menu-list,.elementor-context-menu-list__group{display:flex;flex-direction:column}.elementor-context-menu-list__group:not(:last-child){border-block-end:var(--e-a-border)}.elementor-context-menu-list__item{padding:12px 20px;display:flex;gap:16px;cursor:pointer;transition:var(--e-a-transition-hover);align-items:center}.elementor-context-menu-list__item--disabled{cursor:default;opacity:.5;color:var(--e-a-color-disabled)}.elementor-context-menu-list__item:not(.elementor-context-menu-list__item--disabled):focus,.elementor-context-menu-list__item:not(.elementor-context-menu-list__item--disabled):hover{background-color:var(--e-a-bg-hover);color:var(--e-a-color-hover)}.elementor-context-menu-list__item__icon{display:none;width:20px}.elementor-context-menu-list__item__title{flex-grow:1;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.elementor-context-menu-list__item__shortcut{color:var(--e-a-color-txt-muted)}.elementor-context-menu-list__item__shortcut--link-fullwidth{position:absolute;left:0;top:0;width:100%;height:100%;z-index:2;cursor:pointer}.elementor-context-menu-list__item__shortcut,.elementor-context-menu-list__item__title{font-size:14px;font-style:normal;font-weight:400;line-height:1;position:relative}.elementor-context-menu-list__item.elementor-context-menu-list__item-delete:not(.elementor-context-menu-list__item--disabled):focus>*,.elementor-context-menu-list__item.elementor-context-menu-list__item-delete:not(.elementor-context-menu-list__item--disabled):hover>*{color:var(--e-global-color-danger)}.elementor-context-menu .eicon-pro-icon{color:var(--e-global-color-accent)}#elementor-hotkeys{text-align:start}#elementor-hotkeys__modal .dialog-buttons-wrapper{display:none}#elementor-hotkeys__content{display:flex;justify-content:space-between;gap:70px;padding:20px 30px;width:100%;overflow:hidden}@media (max-width:1024px){#elementor-hotkeys__content{flex-direction:column;gap:20px;padding:20px}}.elementor-hotkeys__col{display:flex;flex-direction:column;gap:20px;width:100%}.elementor-hotkeys__header{font-weight:500}.elementor-hotkeys__item{display:flex;align-items:center;padding:20px 10px}.elementor-hotkeys__item:not(:last-child){border-block-end:var(--e-a-border)}.elementor-hotkeys__item--label{font-size:13px;font-weight:400;flex-grow:1}.elementor-hotkeys__item--shortcut{flex-grow:0;display:flex;gap:27px}@media (max-width:1024px){.elementor-hotkeys__item--shortcut{gap:23px}}.elementor-hotkeys__item--shortcut kbd{position:relative;font-family:unset;background-color:var(--e-a-bg-active);padding:5px 12px;border-radius:var(--e-a-border-radius)}@media (max-width:1024px){.elementor-hotkeys__item--shortcut kbd{padding:4px 9px}}.elementor-hotkeys__item--shortcut kbd:not(:last-of-type):after{content:"+";position:absolute;right:0;width:9px;text-align:center;margin-inline-end:-18px}@media (max-width:1024px){.elementor-hotkeys__item--shortcut kbd:not(:last-of-type):after{margin-inline-end:-16px}}.ui-resizable-n{top:-5px}.ui-resizable-e{right:-5px}.ui-resizable-s{bottom:-5px}.ui-resizable-w{left:-5px}.ui-resizable-ne{top:-5px;right:-5px}.ui-resizable-nw{top:-5px;left:-5px}.ui-resizable-se{bottom:-5px;right:-5px}.ui-resizable-sw{bottom:-5px;left:-5px}.ui-resizable-n,.ui-resizable-s{left:0;height:10px;width:100%;cursor:ns-resize}.ui-resizable-e,.ui-resizable-w{top:0;height:100%;width:10px;cursor:ew-resize}.ui-resizable-ne,.ui-resizable-nw,.ui-resizable-se,.ui-resizable-sw{height:15px;width:15px}.ui-resizable-nw,.ui-resizable-se{cursor:nwse-resize}.ui-resizable-ne,.ui-resizable-sw{cursor:nesw-resize}.ui-resizable-handle{position:absolute}.ui-resizable-resizing{pointer-events:none}body{--e-editor-navigator-width:240px}#elementor-navigator{position:fixed;top:100px;width:var(--e-editor-navigator-width);height:50vh;right:30px;background-color:var(--e-a-bg-default);border:var(--e-a-border);box-shadow:0 2px 20px 0 rgba(0,0,0,.1);-webkit-user-select:none;-moz-user-select:none;user-select:none;overflow:hidden;z-index:100;display:none}body.elementor-navigator-docked #elementor-navigator{top:0;right:0;height:100%}body:not(.elementor-navigator-docked) #elementor-navigator{border-radius:5px}#elementor-navigator__inner{height:100%}#elementor-navigator__header{display:flex;align-items:stretch;border-block-end:var(--e-a-border);color:var(--e-a-color-txt-accent)}#elementor-navigator__header__title{flex:1;text-align:center;font-size:13px;font-weight:400;padding:10px 0;cursor:move}#elementor-navigator__close,#elementor-navigator__toggle-all{color:var(--e-a-color-txt);background-color:transparent;border:none;outline:0;padding:10px;cursor:pointer;transition:color .5s}#elementor-navigator__close:hover,#elementor-navigator__toggle-all:hover{color:var(--e-a-color-txt-hover)}#elementor-navigator__close:focus,#elementor-navigator__toggle-all:focus{color:var(--e-a-color-txt-active)}#elementor-navigator__toggle-all{font-size:13px}#elementor-navigator__close{font-size:11px}#elementor-navigator__elements{height:calc(100% - 49px);overflow:auto;position:relative}.elementor-navigator-docked #elementor-navigator__elements{height:calc(100% - 35px)}#elementor-navigator__elements .elementor-nerd-box{padding:25px}#elementor-navigator__elements>.elementor-navigator__element-section{border-block-end:var(--e-a-border)}#elementor-navigator__elements.elementor-navigator-list__promotion{height:calc(100% - 80px)}#elementor-navigator__footer{position:absolute;width:100%;left:0;bottom:0;text-align:center}#elementor-navigator__footer__resize-bar{border-block-start:var(--e-a-border)}.elementor-navigator-docked #elementor-navigator__footer__resize-bar{display:none}#elementor-navigator__footer__promotion{font-size:12px;padding:4px 17px;line-height:22px;font-family:Roboto,sans-serif;color:var(--e-a-bg-logo)}#elementor-navigator__footer__promotion a{color:var(--e-a-color-accent-promotion)}.elementor-navigator__item{position:relative;display:flex;height:30px;cursor:pointer;transition:padding .5s linear;overflow:hidden}.elementor-navigator__item:focus,.elementor-navigator__item:hover{background-color:var(--e-a-bg-hover)}.elementor-navigator__item:active{background-color:var(--e-a-bg-active);color:var(--e-a-color-txt-accent)}.elementor-navigator__item[data-locked=true]{cursor:not-allowed}.elementor-navigator__item:not(.elementor-active) .elementor-navigator__element__list-toggle i{transform:rotate(-90deg)}.elementor-navigator__item>*{display:flex;align-items:center}.elementor-navigator__item+.elementor-navigator__elements{display:none}.elementor-navigator__elements>.elementor-navigator__element-container:not(:last-child),.elementor-navigator__elements>.elementor-navigator__element-section{border-block-end:var(--e-a-border)}.elementor-navigator__elements .elementor-empty-view{padding:10px}.elementor-navigator__elements .elementor-empty-view__title{margin-inline-start:23px;font-size:10px;font-style:italic}.elementor-navigator__elements .ui-sortable-helper{box-shadow:1px 2px 5px 0 rgba(0,0,0,.1);transform:rotate(4deg);background-color:var(--e-a-bg-active);color:var(--e-a-color-txt-accent);pointer-events:none}.elementor-navigator__elements .ui-sortable-placeholder{background-color:var(--e-a-bg-hover)}.elementor-navigator__element.elementor-dragging-on-child>.elementor-navigator__elements>.elementor-empty-view{border-block-start:var(--e-a-border)}.elementor-navigator__element.elementor-dragging-on-child>.elementor-navigator__elements>.elementor-empty-view+.ui-sortable-placeholder,.elementor-navigator__element.elementor-dragging-on-child>.elementor-navigator__elements>.elementor-empty-view .elementor-empty-view__title{display:none}.elementor-navigator__element:not(.elementor-navigator__element--has-children) .elementor-navigator__element__list-toggle{visibility:hidden}.elementor-navigator__element:not(.elementor-navigator__element--hidden)>.elementor-navigator__item .elementor-navigator__element__toggle{color:var(--e-a-color-txt-default)}.elementor-navigator__element:not(.elementor-navigator__element--hidden)>.elementor-navigator__item .elementor-navigator__element__toggle:hover{color:var(--e-a-color-txt-hover)}.elementor-navigator__element:not(.elementor-navigator__element--hidden)>.elementor-navigator__item:not(:hover) .elementor-navigator__element__toggle{display:none}.elementor-navigator__element:not(.elementor-navigator__element--hidden)>.elementor-navigator__item.elementor-editing{background-color:var(--e-a-bg-active)}.elementor-navigator__element__list-toggle{margin-inline-end:7px;transition:transform .3s}.elementor-navigator__element__element-type{margin-inline-end:8px;font-size:14px}.elementor-navigator__element__title{flex-grow:1;overflow:hidden}.elementor-navigator__element__title__text{white-space:nowrap;-webkit-user-select:text;-moz-user-select:text;user-select:text}.elementor-navigator__element__title__text[contenteditable=true]{outline:none;background-color:var(--e-a-bg-hover);padding:var(--e-admin-border-radius);border:var(--e-a-border)}.elementor-navigator__element__title__text:not([contenteditable=true]){padding:3px 0;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.elementor-navigator__element__toggle{position:absolute;right:15px;height:100%;z-index:0;font-size:13px}.elementor-navigator__element__indicators{position:relative;transition:transform .5s;padding-inline-start:5px;z-index:91}.elementor-navigator__element__indicators:not(:hover){transform:translateX(calc(100% - 8px))}.elementor-navigator__element__indicator{height:100%;width:31px;display:inline-flex;align-items:center;justify-content:center;color:var(--e-a-color-txt);background-color:var(--e-a-bg-default);border-inline-start:var(--e-a-border)}.elementor-navigator__element__indicator:first-child{border-inline-start:3px solid var(--e-a-border-color-accent)}.elementor-editing .elementor-navigator__element__indicator:first-child{border-color:#242729}.elementor-navigator__element__indicator:hover{color:var(--e-a-color-txt-hover)}.elementor-navigator__element--hidden .elementor-navigator__element__title,.elementor-navigator__element--hidden .elementor-navigator__element__toggle{opacity:.5}.e-notice-bar{position:absolute;width:100%;bottom:0;display:flex;align-items:center;height:40px;color:#fff;background-color:var(--e-a-color-accent);padding:0 25px}.e-notice-bar__message a{text-decoration:underline;color:var(--e-a-color-txt-invert)}.e-notice-bar__message a:hover{color:#d5d8dc}.e-notice-bar__primary_action{margin-inline:12px}.e-notice-bar__primary_action a{background:#fff;border-radius:3px;color:#93003f;padding:4px 10px;font-size:11px}.e-notice-bar__primary_action a:hover{color:#47001e;background:#f1f2f3}.e-notice-bar__secondary_action,.e-notice-bar__secondary_message{font-size:11px}.e-notice-bar__secondary_action{margin-inline:4px}.e-notice-bar__secondary_action a{color:#fff;text-decoration:underline}.e-notice-bar__secondary_action a:hover{color:#f1f2f3}.e-notice-bar__close{cursor:pointer;margin-inline-start:auto}.e-notice-bar__icon{margin-inline-end:8px}.e-notice-bar i{font-size:16px;opacity:.9}.e-notice-bar i:hover{color:#d5d8dc}.e-notice-bar a,.e-notice-bar i{transition:var(--e-a-transition-hover)}body:not(.elementor-device-desktop) #e-notice-bar{display:none}#elementor-fatal-error-dialog .dialog-message a{text-decoration:underline}#elementor-preview-debug-link-text{display:inline-block}#elementor-icons-manager-modal .dialog-message{padding:0;height:700px}#elementor-icons-manager-modal .dialog-content,#elementor-icons-manager__wrapper{display:flex}@media (max-width:479px){#elementor-icons-manager__sidebar{display:none}}#elementor-icons-manager__tab-links{margin-block-start:30px}#elementor-icons-manager__upload{margin:20px 45px;padding-block-start:35px;border-block-start:var(--e-a-border);display:flex;align-items:center;justify-content:space-between}@media (max-width:1439px){#elementor-icons-manager__upload{margin:20px 25px}}#elementor-icons-manager__main{display:flex;flex-direction:column;padding:30px 80px 0}@media (max-width:1439px){#elementor-icons-manager__main{padding:30px 50px 0}}@media (max-width:479px){#elementor-icons-manager__main{width:100%}}#elementor-icons-manager__search{position:relative}#elementor-icons-manager__search input{padding:8px 15px;background-color:transparent}#elementor-icons-manager__search i{position:absolute;top:50%;transform:translateY(-50%);right:15px}#elementor-icons-manager__tab__wrapper{overflow:auto;margin:25px -15px 0;padding:0 15px 15px}#elementor-icons-manager__tab__title{color:var(--e-a-color-txt);font-size:16px;font-weight:500;text-align:start}@media (max-width:479px){#elementor-icons-manager__tab__title{display:none}}#elementor-icons-manager__tab__content{display:grid;grid-template-columns:repeat(7,1fr);grid-gap:20px;margin:20px 0}@media (max-width:1439px){#elementor-icons-manager__tab__content{grid-template-columns:repeat(6,1fr)}}@media (max-width:1024px){#elementor-icons-manager__tab__content{grid-template-columns:repeat(5,1fr)}}@media (max-width:767px){#elementor-icons-manager__tab__content{grid-template-columns:repeat(4,1fr)}}@media (max-width:479px){#elementor-icons-manager__tab__content{grid-template-columns:repeat(3,1fr)}}#elementor-icons-manager__promotion{display:flex;align-items:center;flex-direction:column;padding-block-start:70px}#elementor-icons-manager__promotion__icon{font-size:60px}#elementor-icons-manager__promotion__text{width:300px;font-size:16px;padding-block-start:25px}#elementor-icons-manager__promotion__link{margin-block-start:20px}.elementor-icons-manager__tab-link{padding-block:15px;padding-inline:45px 0;font-size:12px;text-align:start;cursor:pointer;position:relative}.elementor-icons-manager__tab-link i{font-size:20px;padding-inline-end:15px}@media (max-width:1024px){.elementor-icons-manager__tab-link i{display:none}}.elementor-icons-manager__tab-link:hover{background-color:var(--e-a-bg-hover)}.elementor-icons-manager__tab-link.elementor-active{background-color:var(--e-a-bg-active);color:var(--e-a-color-txt-accent)}.elementor-icons-manager__tab-link.elementor-active:after{content:"";position:absolute;height:100%;width:3px;top:0;left:0;background-color:var(--e-a-border-color-accent)}.elementor-icons-manager__tab__item{position:relative;height:0;padding-block-end:100%;border:var(--e-a-border);border-radius:3px;cursor:pointer;transition:var(--e-a-transition-hover);overflow:hidden}.elementor-icons-manager__tab__item:hover{background-color:var(--e-a-bg-hover)}.elementor-icons-manager__tab__item.elementor-selected{background-color:var(--e-a-bg-active);border-color:var(--e-a-border-color-accent);color:var(--e-a-color-txt-accent)}.elementor-icons-manager__tab__item__content{display:flex;flex-direction:column;align-items:center;width:100%;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);padding:1px}.elementor-icons-manager__tab__item__icon{font-size:25px}.elementor-icons-manager__tab__item__name{font-size:11px;padding:13px 20px 0;max-width:100%;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.elementor-color-picker__header{display:flex;justify-content:space-between;align-items:center;font-weight:700;padding:10px;box-shadow:0 2px 8px rgba(0,0,0,.1)}.e-color-picker__tools{display:flex}.e-control-color--no-value .pcr-button{background-image:linear-gradient(135deg,transparent 46%,#ff3030 50%,transparent 54%);background-size:cover;background-color:transparent}.pickr{border:var(--e-a-border);height:27px}.pickr .pcr-button{height:100%;width:100%;border-radius:var(--e-a-border-radius)}.pickr .pcr-button:after,.pickr .pcr-button:before{height:12px;width:12px;top:50%;left:50%;transform:translate(-50%,-50%)}.pcr-app{background-color:var(--e-a-bg-default);color:var(--e-a-color-txt);box-shadow:var(--e-a-popover-shadow);font-family:var(--e-a-font-family)}.pcr-app[data-theme=monolith]{padding:0;width:270px}.pcr-app[data-theme=monolith] .pcr-selection .pcr-color-chooser,.pcr-app[data-theme=monolith] .pcr-selection .pcr-color-opacity{height:8px}.pcr-app[data-theme=monolith] .pcr-selection .pcr-color-palette{height:150px}.pcr-app .pcr-interaction{padding-block-end:20px}.pcr-app .pcr-interaction input.pcr-result{border:var(--e-a-border);color:var(--e-a-color-txt);border-radius:var(--e-a-border-radius);margin:0;background-color:transparent}.pcr-app .pcr-interaction input.pcr-result:focus{box-shadow:none;border-color:var(--e-a-border-color-bold)}.pcr-app .pcr-interaction input.pcr-type{all:unset;font-size:10px;color:var(--e-a-color-txt-muted);padding-inline-start:5px;cursor:pointer}.pcr-app .pcr-interaction input.pcr-type.active{background-color:transparent;color:var(--e-a-color-txt-accent)}.pcr-interaction,.pcr-selection{padding:0 20px}.pcr-selection{padding-block-start:20px}.pcr .elementor-control-dynamic-switcher{height:20px;border:0}.select2-container{width:100%!important;outline:none;z-index:9999;font-size:12px}.select2-container .e-select2-placeholder{color:var(--e-a-color-txt-muted)}.select2-container.select2-container--default .select2-selection--single{height:27px;background-color:transparent}.select2-container.select2-container--default .select2-selection--single .select2-selection__rendered{color:var(--e-a-color-txt);line-height:27px}.select2-container.select2-container--default .select2-results__option--highlighted[aria-selected]{background-color:var(--e-a-bg-hover);color:var(--e-a-color-txt-hover)}.select2-container.select2-container--default .select2-selection--multiple{background-color:var(--e-a-bg-default);min-height:27px;line-height:0}.select2-container.select2-container--default .select2-selection--multiple .select2-selection__clear{display:none}.select2-container.select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:var(--e-a-btn-bg);color:var(--e-a-btn-color-invert);line-height:1.2;font-size:10px;border:none;border-radius:0;padding:2px 3px}.select2-container.select2-container--default .select2-selection--multiple .select2-selection__choice.select2-selection__e-plus-button{cursor:pointer;width:16.67px;text-indent:-9999px;position:relative}.select2-container.select2-container--default .select2-selection--multiple .select2-selection__choice.select2-selection__e-plus-button:after{content:"\e815";font-family:eicons;color:var(--e-a-btn-color-invert);text-indent:0;position:absolute;left:0;top:0;width:100%;height:100%;display:flex;justify-content:center;align-items:center}.select2-container.select2-container--default .select2-selection--multiple .select2-selection__rendered{padding-block-end:5px}.select2-container.select2-container--default .select2-selection--multiple .select2-selection__choice__remove{color:var(--e-a-btn-color-invert);margin-inline-end:3px}.select2-container:not(.select2-container--open):not(.select2-container--focus) .select2-selection--multiple,.select2-container:not(.select2-container--open):not(.select2-container--focus) .select2-selection--single{background-color:var(--e-a-bg-default);color:var(--e-a-color-txt);border-color:var(--e-a-border-color)}.select2-container.select2-container--focus .select2-selection--multiple,.select2-container.select2-container--focus .select2-selection--single,.select2-container.select2-container--open .select2-selection--multiple,.select2-container.select2-container--open .select2-selection--single{border-color:var(--e-a-border-color-bold)}.select2-selection{outline:none}.select2-selection--single{height:27px}.select2-selection__arrow{height:27px;top:0}.select2-results__option[aria-selected=true]{background-color:var(--e-a-bg-active);color:var(--e-a-color-txt-active)}.select2-results__option[aria-selected=true]:not(.select2-results__option--highlighted){background-color:var(--e-a-bg-active)}.select2-dropdown{border-color:var(--e-a-border-color);background-color:var(--e-a-bg-default);color:var(--e-a-color-txt);box-shadow:var(--e-a-dropdown-shadow)}.select2-dropdown .select2-search__field{outline:none}.e-ui-state--document-scrubbing-mode__on,.e-ui-state--document-scrubbing-mode__on *{cursor:ew-resize}.e-ui-state--document-scrubbing-mode__on input.e-scrubbing--active,.e-ui-state--document-scrubbing-mode__on input.e-scrubbing--active:focus{box-shadow:inset 0 0 0 1px #0e3b9c}.e-ui-state--document-scrubbing-mode__on label.e-scrubbing--active{color:#0e3b9c;-webkit-user-select:none;-moz-user-select:none;user-select:none}.e-ui-state--document-scrubbing-mode__on iframe{pointer-events:none}label.e-scrubbing-over{cursor:ew-resize}#elementor-paste-area-dialog{text-align:center}#elementor-paste-area-dialog .dialog-header{padding-block-start:60px;font-size:30px}#elementor-paste-area-dialog .dialog-message{padding:0 15px 15px;font-size:15px;position:relative}#elementor-paste-area-dialog #elementor-paste-area-dialog__input{background:transparent;color:transparent;border-color:transparent;padding:0;margin:0;height:100px;position:absolute;top:-60px;left:0;right:0}#elementor-paste-area-dialog #elementor-paste-area-dialog__input:focus{border-color:transparent;outline:none}#elementor-paste-area-dialog .dialog-widget-content{width:400px}#elementor-paste-area-dialog .dialog-widget-content .eicon-loading{display:none}#elementor-paste-area-dialog .dialog-widget-content.e-state-loading .eicon-loading{display:block;margin-block-start:15px}#elementor-paste-area-dialog #elementor-paste-area-dialog__error{color:var(--e-a-color-danger);font-size:12px}#elementor-paste-area-dialog #elementor-paste-area-dialog__error:before{content:"";border-block-start:var(--e-a-border);display:block;margin:10px -15px}[class*=" eicon-flex"],[class^=eicon-flex]{transition:all .3s;--is-ltr:1;--is-rtl:0;--rotation-direction:calc(var(--is-ltr) - var(--is-rtl))}[class*=" eicon-flex"].eicon-inline,[class^=eicon-flex].eicon-inline{max-height:1em;max-width:1em}[class*=" eicon-flex"]:is(.eicon-justify-start-h,.eicon-justify-end-h),[class^=eicon-flex]:is(.eicon-justify-start-h,.eicon-justify-end-h){--rotation-direction:calc(var(--is-ltr) + var(--is-rtl))}:is(.e-ui-state--document-direction-mode__column,.e-ui-state--document-direction-mode__column-reverse) [class*=" eicon-flex"]:not(.eicon-wrap):not(.eicon-nowrap):not(.eicon-grow),:is(.e-ui-state--document-direction-mode__column,.e-ui-state--document-direction-mode__column-reverse) [class^=eicon-flex]:not(.eicon-wrap):not(.eicon-nowrap):not(.eicon-grow){transform:rotate(calc(var(--rotation-direction) * 90deg))}.e-ui-state--document-direction-mode__column-reverse [class*=" eicon-flex"]:not(.eicon-wrap):not(.eicon-nowrap):not(.eicon-grow):is(.eicon-justify-start-h,.eicon-justify-end-h,.eicon-order-start,.eicon-order-end),.e-ui-state--document-direction-mode__column-reverse [class^=eicon-flex]:not(.eicon-wrap):not(.eicon-nowrap):not(.eicon-grow):is(.eicon-justify-start-h,.eicon-justify-end-h,.eicon-order-start,.eicon-order-end),:is(.e-ui-state--document-direction-mode__column,.e-ui-state--document-direction-mode__column-reverse) [class*=" eicon-flex"]:not(.eicon-wrap):not(.eicon-nowrap):not(.eicon-grow):is(.eicon-align-start-v,.eicon-align-end-v),:is(.e-ui-state--document-direction-mode__column,.e-ui-state--document-direction-mode__column-reverse) [class^=eicon-flex]:not(.eicon-wrap):not(.eicon-nowrap):not(.eicon-grow):is(.eicon-align-start-v,.eicon-align-end-v){transform:rotate(calc(var(--rotation-direction) * -90deg))}.e-ui-state--document-direction-mode__row [class*=" eicon-flex"]:not(.eicon-wrap):not(.eicon-nowrap):not(.eicon-grow):is(.eicon-justify-start-h,.eicon-justify-end-h,.eicon-order-start,.eicon-order-end),.e-ui-state--document-direction-mode__row [class^=eicon-flex]:not(.eicon-wrap):not(.eicon-nowrap):not(.eicon-grow):is(.eicon-justify-start-h,.eicon-justify-end-h,.eicon-order-start,.eicon-order-end){transform:rotate(calc(var(--is-rtl) * 180deg))}.e-ui-state--document-direction-mode__row-reverse [class*=" eicon-flex"]:not(.eicon-wrap):not(.eicon-nowrap):not(.eicon-grow):is(.eicon-justify-start-h,.eicon-justify-end-h,.eicon-order-start,.eicon-order-end),.e-ui-state--document-direction-mode__row-reverse [class^=eicon-flex]:not(.eicon-wrap):not(.eicon-nowrap):not(.eicon-grow):is(.eicon-justify-start-h,.eicon-justify-end-h,.eicon-order-start,.eicon-order-end){transform:rotate(calc(var(--is-ltr) * 180deg))} \ No newline at end of file diff --git a/wp-content/plugins/elementor/assets/css/frontend-lite-rtl.css b/wp-content/plugins/elementor/assets/css/frontend-lite-rtl.css new file mode 100644 index 0000000..695e121 --- /dev/null +++ b/wp-content/plugins/elementor/assets/css/frontend-lite-rtl.css @@ -0,0 +1,3787 @@ +/*! elementor - v3.20.0 - 26-03-2024 */ +.dialog-widget-content { + background-color: var(--e-a-bg-default); + position: absolute; + border-radius: 3px; + box-shadow: 2px 8px 23px 3px rgba(0, 0, 0, 0.2); + overflow: hidden; +} + +.dialog-message { + line-height: 1.5; + box-sizing: border-box; +} + +.dialog-close-button { + cursor: pointer; + position: absolute; + margin-block-start: 15px; + left: 15px; + color: var(--e-a-color-txt); + font-size: 15px; + line-height: 1; + transition: var(--e-a-transition-hover); +} +.dialog-close-button:hover { + color: var(--e-a-color-txt-hover); +} + +.dialog-prevent-scroll { + overflow: hidden; + max-height: 100vh; +} + +.dialog-type-lightbox { + position: fixed; + height: 100%; + width: 100%; + bottom: 0; + left: 0; + background-color: rgba(0, 0, 0, 0.8); + z-index: 9999; + -webkit-user-select: none; + -moz-user-select: none; + user-select: none; +} + +.elementor-editor-active .elementor-popup-modal { + background-color: initial; +} + +.dialog-type-confirm .dialog-widget-content, +.dialog-type-alert .dialog-widget-content { + margin: auto; + width: 400px; + padding: 20px; +} +.dialog-type-confirm .dialog-header, +.dialog-type-alert .dialog-header { + font-size: 15px; + font-weight: 500; +} +.dialog-type-confirm .dialog-header:after, +.dialog-type-alert .dialog-header:after { + content: ""; + display: block; + border-block-end: var(--e-a-border); + padding-block-end: 10px; + margin-block-end: 10px; + margin-inline-start: -20px; + margin-inline-end: -20px; +} +.dialog-type-confirm .dialog-message, +.dialog-type-alert .dialog-message { + min-height: 50px; +} +.dialog-type-confirm .dialog-buttons-wrapper, +.dialog-type-alert .dialog-buttons-wrapper { + padding-block-start: 10px; + display: flex; + justify-content: flex-end; + gap: 15px; +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button { + font-size: 12px; + font-weight: 500; + line-height: 1.2; + padding: 8px 16px; + outline: none; + border: none; + border-radius: var(--e-a-border-radius); + background-color: var(--e-a-btn-bg); + color: var(--e-a-btn-color-invert); + transition: var(--e-a-transition-hover); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button:hover { + border: none; +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button:focus { + background-color: var(--e-a-btn-bg-hover); + color: var(--e-a-btn-color-invert); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:active, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button:active { + background-color: var(--e-a-btn-bg-active); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:not([disabled]), +.dialog-type-alert .dialog-buttons-wrapper .dialog-button:not([disabled]) { + cursor: pointer; +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:disabled, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button:disabled { + background-color: var(--e-a-btn-bg-disabled); + color: var(--e-a-btn-color-disabled); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:not(.elementor-button-state) .elementor-state-icon, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button:not(.elementor-button-state) .elementor-state-icon { + display: none; +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel { + background: transparent; + color: var(--e-a-color-txt); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel:focus { + background: var(--e-a-bg-hover); + color: var(--e-a-color-txt-hover); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt:disabled, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel:disabled, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt:disabled, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel:disabled { + background: transparent; + color: var(--e-a-color-txt-disabled); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt-border, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt-border { + border: 1px solid var(--e-a-color-txt-muted); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-success, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-success, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-success, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-success { + background-color: var(--e-a-btn-bg-success); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-success:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-success:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-success:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-success:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-success:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-success:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-success:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-success:focus { + background-color: var(--e-a-btn-bg-success-hover); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-take_over, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-take_over, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok { + background-color: var(--e-a-btn-bg-primary); + color: var(--e-a-btn-color); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-take_over:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-take_over:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-take_over:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-take_over:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok:focus { + background-color: var(--e-a-btn-bg-primary-hover); + color: var(--e-a-btn-color); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary.e-btn-txt, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-take_over, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary.dialog-cancel, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-ok, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary.e-btn-txt, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-take_over, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary.dialog-cancel, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-ok, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel { + background: transparent; + color: var(--e-a-color-primary-bold); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary.e-btn-txt:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-take_over:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary.dialog-cancel:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-ok:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary.e-btn-txt:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-take_over:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary.dialog-cancel:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-ok:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary.e-btn-txt:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-take_over:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary.dialog-cancel:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-ok:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary.e-btn-txt:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-take_over:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary.dialog-cancel:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-ok:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel:focus { + background: var(--e-a-bg-primary); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.go-pro, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-accent, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.go-pro, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-accent { + background-color: var(--e-a-btn-bg-accent); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.go-pro:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.go-pro:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-accent:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-accent:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.go-pro:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.go-pro:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-accent:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-accent:focus { + background-color: var(--e-a-btn-bg-accent-hover); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.go-pro:active, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-accent:active, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.go-pro:active, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-accent:active { + background-color: var(--e-a-btn-bg-accent-active); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-info, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-info, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-info, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-info { + background-color: var(--e-a-btn-bg-info); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-info:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-info:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-info:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-info:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-info:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-info:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-info:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-info:focus { + background-color: var(--e-a-btn-bg-info-hover); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-warning, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-warning, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-warning, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-warning { + background-color: var(--e-a-btn-bg-warning); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-warning:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-warning:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-warning:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-warning:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-warning:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-warning:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-warning:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-warning:focus { + background-color: var(--e-a-btn-bg-warning-hover); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-danger, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-danger, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-danger, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-danger { + background-color: var(--e-a-btn-bg-danger); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-danger:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-danger:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-danger:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-danger:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-danger:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-danger:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-danger:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-danger:focus { + background-color: var(--e-a-btn-bg-danger-hover); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button i, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button i { + margin-inline-end: 5px; +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button:visited, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button:visited { + color: initial; +} +.flatpickr-calendar { + width: 280px; +} +.flatpickr-calendar .flatpickr-current-month span.cur-month { + font-weight: 300; +} +.flatpickr-calendar .dayContainer { + width: 280px; + min-width: 280px; + max-width: 280px; +} +.flatpickr-calendar .flatpickr-days { + width: 280px; +} +.flatpickr-calendar .flatpickr-day { + max-width: 37px; + height: 37px; + line-height: 37px; +} + +.elementor-hidden { + display: none; +} + +.elementor-screen-only, +.screen-reader-text, +.screen-reader-text span, +.ui-helper-hidden-accessible { + position: absolute; + top: -10000em; + width: 1px; + height: 1px; + margin: -1px; + padding: 0; + overflow: hidden; + clip: rect(0, 0, 0, 0); + border: 0; +} + +.elementor-clearfix:after { + content: ""; + display: block; + clear: both; + width: 0; + height: 0; +} + +.e-logo-wrapper { + background: var(--e-a-bg-logo); + display: inline-block; + padding: 0.75em; + border-radius: 50%; + line-height: 1; +} +.e-logo-wrapper i { + color: var(--e-a-color-logo); + font-size: 1em; +} + +.elementor *, .elementor *:before, .elementor *:after { + box-sizing: border-box; +} +.elementor a { + box-shadow: none; + text-decoration: none; +} +.elementor hr { + margin: 0; + background-color: transparent; +} +.elementor img { + height: auto; + max-width: 100%; + border: none; + border-radius: 0; + box-shadow: none; +} +.elementor .elementor-widget:not(.elementor-widget-text-editor):not(.elementor-widget-theme-post-content) figure { + margin: 0; +} +.elementor embed, +.elementor iframe, +.elementor object, +.elementor video { + max-width: 100%; + width: 100%; + margin: 0; + line-height: 1; + border: none; +} +.elementor .elementor-background-video-container, +.elementor .elementor-background-holder, +.elementor .elementor-background { + height: 100%; + width: 100%; + top: 0; + left: 0; + position: absolute; + overflow: hidden; + z-index: 0; + direction: ltr; +} +.elementor .elementor-background-video-container { + transition: opacity 1s; + pointer-events: none; +} +.elementor .elementor-background-video-container.elementor-loading { + opacity: 0; +} +.elementor .elementor-background-video-embed { + max-width: none; +} +.elementor .elementor-background-video-embed, .elementor .elementor-background-video-hosted { + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); +} +.elementor .elementor-background-video { + max-width: none; + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); +} +.elementor .elementor-html5-video { + -o-object-fit: cover; + object-fit: cover; +} +.elementor .elementor-background-overlay { + height: 100%; + width: 100%; + top: 0; + left: 0; + position: absolute; +} +.elementor .elementor-background-slideshow { + position: absolute; + width: 100%; + height: 100%; + z-index: 0; + top: 0; + right: 0; +} +.elementor .elementor-background-slideshow__slide__image { + width: 100%; + height: 100%; + background-position: center center; + background-size: cover; +} + +.elementor-widget-wrap > .elementor-element.elementor-absolute, +.e-con > .elementor-element.elementor-absolute, +.e-con-inner > .elementor-element.elementor-absolute { + position: absolute; +} +.elementor-widget-wrap > .elementor-element.elementor-fixed, +.e-con > .elementor-element.elementor-fixed, +.e-con-inner > .elementor-element.elementor-fixed { + position: fixed; +} + +.elementor-widget-wrap .elementor-element.elementor-widget__width-auto, .elementor-widget-wrap .elementor-element.elementor-widget__width-initial { + max-width: 100%; +} +@media (max-width: 1024px) { + .elementor-widget-wrap .elementor-element.elementor-widget-tablet__width-auto, .elementor-widget-wrap .elementor-element.elementor-widget-tablet__width-initial { + max-width: 100%; + } +} +@media (max-width: 767px) { + .elementor-widget-wrap .elementor-element.elementor-widget-mobile__width-auto, .elementor-widget-wrap .elementor-element.elementor-widget-mobile__width-initial { + max-width: 100%; + } +} + +.elementor-element { + --flex-direction: initial; + --flex-wrap: initial; + --justify-content: initial; + --align-items: initial; + --align-content: initial; + --gap: initial; + --flex-basis: initial; + --flex-grow: initial; + --flex-shrink: initial; + --order: initial; + --align-self: initial; + flex-basis: var(--flex-basis); + flex-grow: var(--flex-grow); + flex-shrink: var(--flex-shrink); + order: var(--order); + align-self: var(--align-self); +} +.elementor-element.elementor-absolute, .elementor-element.elementor-fixed { + z-index: 1; +} +.elementor-element:where(.e-con-full, .elementor-widget) { + flex-direction: var(--flex-direction); + flex-wrap: var(--flex-wrap); + justify-content: var(--justify-content); + align-items: var(--align-items); + align-content: var(--align-content); + gap: var(--gap); +} + +.elementor-invisible { + visibility: hidden; +} + +.elementor-align-center { + text-align: center; +} +.elementor-align-center .elementor-button { + width: auto; +} +.elementor-align-right { + text-align: right; +} +.elementor-align-right .elementor-button { + width: auto; +} +.elementor-align-left { + text-align: left; +} +.elementor-align-left .elementor-button { + width: auto; +} +.elementor-align-justify .elementor-button { + width: 100%; +} + +.elementor-custom-embed-play { + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); +} +.elementor-custom-embed-play i { + font-size: 100px; + color: #fff; + text-shadow: 1px 0 6px rgba(0, 0, 0, 0.3); +} +.elementor-custom-embed-play svg { + height: 100px; + width: 100px; + fill: #fff; + filter: drop-shadow(1px 0 6px rgba(0, 0, 0, 0.3)); +} +.elementor-custom-embed-play i, +.elementor-custom-embed-play svg { + opacity: 0.8; + transition: all 0.5s; +} +.elementor-custom-embed-play.elementor-playing i { + font-family: eicons; +} +.elementor-custom-embed-play.elementor-playing i:before { + content: "\e8fb"; +} +.elementor-custom-embed-play.elementor-playing i, +.elementor-custom-embed-play.elementor-playing svg { + animation: eicon-spin 2s infinite linear; +} + +.elementor-tag { + display: inline-flex; +} + +.elementor-ken-burns { + transition-property: transform; + transition-duration: 10s; + transition-timing-function: linear; +} +.elementor-ken-burns--out { + transform: scale(1.3); +} +.elementor-ken-burns--active { + transition-duration: 20s; +} +.elementor-ken-burns--active.elementor-ken-burns--out { + transform: scale(1); +} +.elementor-ken-burns--active.elementor-ken-burns--in { + transform: scale(1.3); +} + +@media (min-width: -1) { + .elementor-widescreen-align-center { + text-align: center; + } + .elementor-widescreen-align-center .elementor-button { + width: auto; + } + .elementor-widescreen-align-right { + text-align: right; + } + .elementor-widescreen-align-right .elementor-button { + width: auto; + } + .elementor-widescreen-align-left { + text-align: left; + } + .elementor-widescreen-align-left .elementor-button { + width: auto; + } + .elementor-widescreen-align-justify .elementor-button { + width: 100%; + } +} +@media (max-width: -1) { + .elementor-laptop-align-center { + text-align: center; + } + .elementor-laptop-align-center .elementor-button { + width: auto; + } + .elementor-laptop-align-right { + text-align: right; + } + .elementor-laptop-align-right .elementor-button { + width: auto; + } + .elementor-laptop-align-left { + text-align: left; + } + .elementor-laptop-align-left .elementor-button { + width: auto; + } + .elementor-laptop-align-justify .elementor-button { + width: 100%; + } +} +@media (max-width: -1) { + .elementor-tablet_extra-align-center { + text-align: center; + } + .elementor-tablet_extra-align-center .elementor-button { + width: auto; + } + .elementor-tablet_extra-align-right { + text-align: right; + } + .elementor-tablet_extra-align-right .elementor-button { + width: auto; + } + .elementor-tablet_extra-align-left { + text-align: left; + } + .elementor-tablet_extra-align-left .elementor-button { + width: auto; + } + .elementor-tablet_extra-align-justify .elementor-button { + width: 100%; + } +} +@media (max-width: 1024px) { + .elementor-tablet-align-center { + text-align: center; + } + .elementor-tablet-align-center .elementor-button { + width: auto; + } + .elementor-tablet-align-right { + text-align: right; + } + .elementor-tablet-align-right .elementor-button { + width: auto; + } + .elementor-tablet-align-left { + text-align: left; + } + .elementor-tablet-align-left .elementor-button { + width: auto; + } + .elementor-tablet-align-justify .elementor-button { + width: 100%; + } +} +@media (max-width: -1) { + .elementor-mobile_extra-align-center { + text-align: center; + } + .elementor-mobile_extra-align-center .elementor-button { + width: auto; + } + .elementor-mobile_extra-align-right { + text-align: right; + } + .elementor-mobile_extra-align-right .elementor-button { + width: auto; + } + .elementor-mobile_extra-align-left { + text-align: left; + } + .elementor-mobile_extra-align-left .elementor-button { + width: auto; + } + .elementor-mobile_extra-align-justify .elementor-button { + width: 100%; + } +} +@media (max-width: 767px) { + .elementor-mobile-align-center { + text-align: center; + } + .elementor-mobile-align-center .elementor-button { + width: auto; + } + .elementor-mobile-align-right { + text-align: right; + } + .elementor-mobile-align-right .elementor-button { + width: auto; + } + .elementor-mobile-align-left { + text-align: left; + } + .elementor-mobile-align-left .elementor-button { + width: auto; + } + .elementor-mobile-align-justify .elementor-button { + width: 100%; + } +} +:root { + --page-title-display: block; +} + +.elementor-page-title, h1.entry-title { + display: var(--page-title-display); +} + +@keyframes eicon-spin { + 0% { + transform: rotate(0deg); + } + 100% { + transform: rotate(359deg); + } +} +.eicon-animation-spin { + animation: eicon-spin 2s infinite linear; +} + +.elementor-section { + position: relative; +} +.elementor-section .elementor-container { + display: flex; + margin-right: auto; + margin-left: auto; + position: relative; +} +@media (max-width: 1024px) { + .elementor-section .elementor-container { + flex-wrap: wrap; + } +} +.elementor-section.elementor-section-boxed > .elementor-container { + max-width: 1140px; +} +.elementor-section.elementor-section-stretched { + position: relative; + width: 100%; +} +.elementor-section.elementor-section-items-top > .elementor-container { + align-items: flex-start; +} +.elementor-section.elementor-section-items-middle > .elementor-container { + align-items: center; +} +.elementor-section.elementor-section-items-bottom > .elementor-container { + align-items: flex-end; +} +@media (min-width: 768px) { + .elementor-section.elementor-section-height-full { + height: 100vh; + } + .elementor-section.elementor-section-height-full > .elementor-container { + height: 100%; + } +} + +.elementor-bc-flex-widget .elementor-section-content-top > .elementor-container > .elementor-column > .elementor-widget-wrap { + align-items: flex-start; +} +.elementor-bc-flex-widget .elementor-section-content-middle > .elementor-container > .elementor-column > .elementor-widget-wrap { + align-items: center; +} +.elementor-bc-flex-widget .elementor-section-content-bottom > .elementor-container > .elementor-column > .elementor-widget-wrap { + align-items: flex-end; +} + +.elementor-row { + width: 100%; + display: flex; +} +@media (max-width: 1024px) { + .elementor-row { + flex-wrap: wrap; + } +} + +.elementor-widget-wrap { + position: relative; + width: 100%; + flex-wrap: wrap; + align-content: flex-start; +} +.elementor:not(.elementor-bc-flex-widget) .elementor-widget-wrap { + display: flex; +} +.elementor-widget-wrap > .elementor-element { + width: 100%; +} +.elementor-widget-wrap.e-swiper-container { + width: calc(100% - (var(--e-column-margin-left, 0px) + var(--e-column-margin-right, 0px))); +} + +.elementor-widget { + position: relative; +} +.elementor-widget:not(:last-child) { + margin-bottom: 20px; +} +.elementor-widget:not(:last-child).elementor-widget__width-auto, .elementor-widget:not(:last-child).elementor-widget__width-initial, .elementor-widget:not(:last-child).elementor-absolute { + margin-bottom: 0; +} + +.elementor-column { + position: relative; + min-height: 1px; + display: flex; +} + +.elementor-column-wrap { + width: 100%; + position: relative; + display: flex; +} + +.elementor-column-gap-narrow > .elementor-column > .elementor-element-populated { + padding: 5px; +} +.elementor-column-gap-default > .elementor-column > .elementor-element-populated { + padding: 10px; +} +.elementor-column-gap-extended > .elementor-column > .elementor-element-populated { + padding: 15px; +} +.elementor-column-gap-wide > .elementor-column > .elementor-element-populated { + padding: 20px; +} +.elementor-column-gap-wider > .elementor-column > .elementor-element-populated { + padding: 30px; +} + +.elementor-inner-section .elementor-column-gap-no .elementor-element-populated { + padding: 0; +} + +@media (min-width: 768px) { + .elementor-column.elementor-col-10, .elementor-column[data-col="10"] { + width: 10%; + } + .elementor-column.elementor-col-11, .elementor-column[data-col="11"] { + width: 11.111%; + } + .elementor-column.elementor-col-12, .elementor-column[data-col="12"] { + width: 12.5%; + } + .elementor-column.elementor-col-14, .elementor-column[data-col="14"] { + width: 14.285%; + } + .elementor-column.elementor-col-16, .elementor-column[data-col="16"] { + width: 16.666%; + } + .elementor-column.elementor-col-20, .elementor-column[data-col="20"] { + width: 20%; + } + .elementor-column.elementor-col-25, .elementor-column[data-col="25"] { + width: 25%; + } + .elementor-column.elementor-col-30, .elementor-column[data-col="30"] { + width: 30%; + } + .elementor-column.elementor-col-33, .elementor-column[data-col="33"] { + width: 33.333%; + } + .elementor-column.elementor-col-40, .elementor-column[data-col="40"] { + width: 40%; + } + .elementor-column.elementor-col-50, .elementor-column[data-col="50"] { + width: 50%; + } + .elementor-column.elementor-col-60, .elementor-column[data-col="60"] { + width: 60%; + } + .elementor-column.elementor-col-66, .elementor-column[data-col="66"] { + width: 66.666%; + } + .elementor-column.elementor-col-70, .elementor-column[data-col="70"] { + width: 70%; + } + .elementor-column.elementor-col-75, .elementor-column[data-col="75"] { + width: 75%; + } + .elementor-column.elementor-col-80, .elementor-column[data-col="80"] { + width: 80%; + } + .elementor-column.elementor-col-83, .elementor-column[data-col="83"] { + width: 83.333%; + } + .elementor-column.elementor-col-90, .elementor-column[data-col="90"] { + width: 90%; + } + .elementor-column.elementor-col-100, .elementor-column[data-col="100"] { + width: 100%; + } +} +@media (max-width: 479px) { + .elementor-column.elementor-xs-10 { + width: 10%; + } + .elementor-column.elementor-xs-11 { + width: 11.111%; + } + .elementor-column.elementor-xs-12 { + width: 12.5%; + } + .elementor-column.elementor-xs-14 { + width: 14.285%; + } + .elementor-column.elementor-xs-16 { + width: 16.666%; + } + .elementor-column.elementor-xs-20 { + width: 20%; + } + .elementor-column.elementor-xs-25 { + width: 25%; + } + .elementor-column.elementor-xs-30 { + width: 30%; + } + .elementor-column.elementor-xs-33 { + width: 33.333%; + } + .elementor-column.elementor-xs-40 { + width: 40%; + } + .elementor-column.elementor-xs-50 { + width: 50%; + } + .elementor-column.elementor-xs-60 { + width: 60%; + } + .elementor-column.elementor-xs-66 { + width: 66.666%; + } + .elementor-column.elementor-xs-70 { + width: 70%; + } + .elementor-column.elementor-xs-75 { + width: 75%; + } + .elementor-column.elementor-xs-80 { + width: 80%; + } + .elementor-column.elementor-xs-83 { + width: 83.333%; + } + .elementor-column.elementor-xs-90 { + width: 90%; + } + .elementor-column.elementor-xs-100 { + width: 100%; + } +} +@media (max-width: 767px) { + .elementor-column.elementor-sm-10 { + width: 10%; + } + .elementor-column.elementor-sm-11 { + width: 11.111%; + } + .elementor-column.elementor-sm-12 { + width: 12.5%; + } + .elementor-column.elementor-sm-14 { + width: 14.285%; + } + .elementor-column.elementor-sm-16 { + width: 16.666%; + } + .elementor-column.elementor-sm-20 { + width: 20%; + } + .elementor-column.elementor-sm-25 { + width: 25%; + } + .elementor-column.elementor-sm-30 { + width: 30%; + } + .elementor-column.elementor-sm-33 { + width: 33.333%; + } + .elementor-column.elementor-sm-40 { + width: 40%; + } + .elementor-column.elementor-sm-50 { + width: 50%; + } + .elementor-column.elementor-sm-60 { + width: 60%; + } + .elementor-column.elementor-sm-66 { + width: 66.666%; + } + .elementor-column.elementor-sm-70 { + width: 70%; + } + .elementor-column.elementor-sm-75 { + width: 75%; + } + .elementor-column.elementor-sm-80 { + width: 80%; + } + .elementor-column.elementor-sm-83 { + width: 83.333%; + } + .elementor-column.elementor-sm-90 { + width: 90%; + } + .elementor-column.elementor-sm-100 { + width: 100%; + } +} +@media (min-width: 768px) and (max-width: 1024px) { + .elementor-column.elementor-md-10 { + width: 10%; + } + .elementor-column.elementor-md-11 { + width: 11.111%; + } + .elementor-column.elementor-md-12 { + width: 12.5%; + } + .elementor-column.elementor-md-14 { + width: 14.285%; + } + .elementor-column.elementor-md-16 { + width: 16.666%; + } + .elementor-column.elementor-md-20 { + width: 20%; + } + .elementor-column.elementor-md-25 { + width: 25%; + } + .elementor-column.elementor-md-30 { + width: 30%; + } + .elementor-column.elementor-md-33 { + width: 33.333%; + } + .elementor-column.elementor-md-40 { + width: 40%; + } + .elementor-column.elementor-md-50 { + width: 50%; + } + .elementor-column.elementor-md-60 { + width: 60%; + } + .elementor-column.elementor-md-66 { + width: 66.666%; + } + .elementor-column.elementor-md-70 { + width: 70%; + } + .elementor-column.elementor-md-75 { + width: 75%; + } + .elementor-column.elementor-md-80 { + width: 80%; + } + .elementor-column.elementor-md-83 { + width: 83.333%; + } + .elementor-column.elementor-md-90 { + width: 90%; + } + .elementor-column.elementor-md-100 { + width: 100%; + } +} + +@media (min-width: -1) { + .elementor-reverse-widescreen > .elementor-container > :nth-child(1) { + order: 10; + } + .elementor-reverse-widescreen > .elementor-container > :nth-child(2) { + order: 9; + } + .elementor-reverse-widescreen > .elementor-container > :nth-child(3) { + order: 8; + } + .elementor-reverse-widescreen > .elementor-container > :nth-child(4) { + order: 7; + } + .elementor-reverse-widescreen > .elementor-container > :nth-child(5) { + order: 6; + } + .elementor-reverse-widescreen > .elementor-container > :nth-child(6) { + order: 5; + } + .elementor-reverse-widescreen > .elementor-container > :nth-child(7) { + order: 4; + } + .elementor-reverse-widescreen > .elementor-container > :nth-child(8) { + order: 3; + } + .elementor-reverse-widescreen > .elementor-container > :nth-child(9) { + order: 2; + } + .elementor-reverse-widescreen > .elementor-container > :nth-child(10) { + order: 1; + } +} +@media (min-width: 1025px) and (max-width: -1) { + .elementor-reverse-laptop > .elementor-container > :nth-child(1) { + order: 10; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(2) { + order: 9; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(3) { + order: 8; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(4) { + order: 7; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(5) { + order: 6; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(6) { + order: 5; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(7) { + order: 4; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(8) { + order: 3; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(9) { + order: 2; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(10) { + order: 1; + } +} +@media (min-width: -1) and (max-width: -1) { + .elementor-reverse-laptop > .elementor-container > :nth-child(1) { + order: 10; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(2) { + order: 9; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(3) { + order: 8; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(4) { + order: 7; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(5) { + order: 6; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(6) { + order: 5; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(7) { + order: 4; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(8) { + order: 3; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(9) { + order: 2; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(10) { + order: 1; + } +} +@media (min-width: 1025px) and (max-width: -1) { + .elementor-reverse-laptop > .elementor-container > :nth-child(1) { + order: initial; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(2) { + order: initial; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(3) { + order: initial; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(4) { + order: initial; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(5) { + order: initial; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(6) { + order: initial; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(7) { + order: initial; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(8) { + order: initial; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(9) { + order: initial; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(10) { + order: initial; + } + .elementor-reverse-tablet_extra > .elementor-container > :nth-child(1) { + order: 10; + } + .elementor-reverse-tablet_extra > .elementor-container > :nth-child(2) { + order: 9; + } + .elementor-reverse-tablet_extra > .elementor-container > :nth-child(3) { + order: 8; + } + .elementor-reverse-tablet_extra > .elementor-container > :nth-child(4) { + order: 7; + } + .elementor-reverse-tablet_extra > .elementor-container > :nth-child(5) { + order: 6; + } + .elementor-reverse-tablet_extra > .elementor-container > :nth-child(6) { + order: 5; + } + .elementor-reverse-tablet_extra > .elementor-container > :nth-child(7) { + order: 4; + } + .elementor-reverse-tablet_extra > .elementor-container > :nth-child(8) { + order: 3; + } + .elementor-reverse-tablet_extra > .elementor-container > :nth-child(9) { + order: 2; + } + .elementor-reverse-tablet_extra > .elementor-container > :nth-child(10) { + order: 1; + } +} +@media (min-width: 768px) and (max-width: 1024px) { + .elementor-reverse-tablet > .elementor-container > :nth-child(1) { + order: 10; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(2) { + order: 9; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(3) { + order: 8; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(4) { + order: 7; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(5) { + order: 6; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(6) { + order: 5; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(7) { + order: 4; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(8) { + order: 3; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(9) { + order: 2; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(10) { + order: 1; + } +} +@media (min-width: -1) and (max-width: 1024px) { + .elementor-reverse-tablet > .elementor-container > :nth-child(1) { + order: 10; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(2) { + order: 9; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(3) { + order: 8; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(4) { + order: 7; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(5) { + order: 6; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(6) { + order: 5; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(7) { + order: 4; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(8) { + order: 3; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(9) { + order: 2; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(10) { + order: 1; + } +} +@media (min-width: 768px) and (max-width: -1) { + .elementor-reverse-tablet > .elementor-container > :nth-child(1) { + order: initial; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(2) { + order: initial; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(3) { + order: initial; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(4) { + order: initial; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(5) { + order: initial; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(6) { + order: initial; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(7) { + order: initial; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(8) { + order: initial; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(9) { + order: initial; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(10) { + order: initial; + } + .elementor-reverse-mobile_extra > .elementor-container > :nth-child(1) { + order: 10; + } + .elementor-reverse-mobile_extra > .elementor-container > :nth-child(2) { + order: 9; + } + .elementor-reverse-mobile_extra > .elementor-container > :nth-child(3) { + order: 8; + } + .elementor-reverse-mobile_extra > .elementor-container > :nth-child(4) { + order: 7; + } + .elementor-reverse-mobile_extra > .elementor-container > :nth-child(5) { + order: 6; + } + .elementor-reverse-mobile_extra > .elementor-container > :nth-child(6) { + order: 5; + } + .elementor-reverse-mobile_extra > .elementor-container > :nth-child(7) { + order: 4; + } + .elementor-reverse-mobile_extra > .elementor-container > :nth-child(8) { + order: 3; + } + .elementor-reverse-mobile_extra > .elementor-container > :nth-child(9) { + order: 2; + } + .elementor-reverse-mobile_extra > .elementor-container > :nth-child(10) { + order: 1; + } +} +@media (max-width: 767px) { + .elementor-reverse-mobile > .elementor-container > :nth-child(1) { + order: 10; + } + .elementor-reverse-mobile > .elementor-container > :nth-child(2) { + order: 9; + } + .elementor-reverse-mobile > .elementor-container > :nth-child(3) { + order: 8; + } + .elementor-reverse-mobile > .elementor-container > :nth-child(4) { + order: 7; + } + .elementor-reverse-mobile > .elementor-container > :nth-child(5) { + order: 6; + } + .elementor-reverse-mobile > .elementor-container > :nth-child(6) { + order: 5; + } + .elementor-reverse-mobile > .elementor-container > :nth-child(7) { + order: 4; + } + .elementor-reverse-mobile > .elementor-container > :nth-child(8) { + order: 3; + } + .elementor-reverse-mobile > .elementor-container > :nth-child(9) { + order: 2; + } + .elementor-reverse-mobile > .elementor-container > :nth-child(10) { + order: 1; + } + .elementor-column { + width: 100%; + } +} +ul.elementor-icon-list-items.elementor-inline-items { + display: flex; + flex-wrap: wrap; +} +ul.elementor-icon-list-items.elementor-inline-items .elementor-inline-item { + word-break: break-word; +} + +.elementor-grid { + display: grid; + grid-column-gap: var(--grid-column-gap); + grid-row-gap: var(--grid-row-gap); +} +.elementor-grid .elementor-grid-item { + min-width: 0; +} +.elementor-grid-0 .elementor-grid { + display: inline-block; + width: 100%; + word-spacing: var(--grid-column-gap); + margin-bottom: calc(-1 * var(--grid-row-gap)); +} +.elementor-grid-0 .elementor-grid .elementor-grid-item { + display: inline-block; + margin-bottom: var(--grid-row-gap); + word-break: break-word; +} +.elementor-grid-1 .elementor-grid { + grid-template-columns: repeat(1, 1fr); +} +.elementor-grid-2 .elementor-grid { + grid-template-columns: repeat(2, 1fr); +} +.elementor-grid-3 .elementor-grid { + grid-template-columns: repeat(3, 1fr); +} +.elementor-grid-4 .elementor-grid { + grid-template-columns: repeat(4, 1fr); +} +.elementor-grid-5 .elementor-grid { + grid-template-columns: repeat(5, 1fr); +} +.elementor-grid-6 .elementor-grid { + grid-template-columns: repeat(6, 1fr); +} +.elementor-grid-7 .elementor-grid { + grid-template-columns: repeat(7, 1fr); +} +.elementor-grid-8 .elementor-grid { + grid-template-columns: repeat(8, 1fr); +} +.elementor-grid-9 .elementor-grid { + grid-template-columns: repeat(9, 1fr); +} +.elementor-grid-10 .elementor-grid { + grid-template-columns: repeat(10, 1fr); +} +.elementor-grid-11 .elementor-grid { + grid-template-columns: repeat(11, 1fr); +} +.elementor-grid-12 .elementor-grid { + grid-template-columns: repeat(12, 1fr); +} +@media (min-width: -1) { + .elementor-grid-widescreen-0 .elementor-grid { + display: inline-block; + width: 100%; + word-spacing: var(--grid-column-gap); + margin-bottom: calc(-1 * var(--grid-row-gap)); + } + .elementor-grid-widescreen-0 .elementor-grid .elementor-grid-item { + display: inline-block; + margin-bottom: var(--grid-row-gap); + word-break: break-word; + } + .elementor-grid-widescreen-1 .elementor-grid { + grid-template-columns: repeat(1, 1fr); + } + .elementor-grid-widescreen-2 .elementor-grid { + grid-template-columns: repeat(2, 1fr); + } + .elementor-grid-widescreen-3 .elementor-grid { + grid-template-columns: repeat(3, 1fr); + } + .elementor-grid-widescreen-4 .elementor-grid { + grid-template-columns: repeat(4, 1fr); + } + .elementor-grid-widescreen-5 .elementor-grid { + grid-template-columns: repeat(5, 1fr); + } + .elementor-grid-widescreen-6 .elementor-grid { + grid-template-columns: repeat(6, 1fr); + } + .elementor-grid-widescreen-7 .elementor-grid { + grid-template-columns: repeat(7, 1fr); + } + .elementor-grid-widescreen-8 .elementor-grid { + grid-template-columns: repeat(8, 1fr); + } + .elementor-grid-widescreen-9 .elementor-grid { + grid-template-columns: repeat(9, 1fr); + } + .elementor-grid-widescreen-10 .elementor-grid { + grid-template-columns: repeat(10, 1fr); + } + .elementor-grid-widescreen-11 .elementor-grid { + grid-template-columns: repeat(11, 1fr); + } + .elementor-grid-widescreen-12 .elementor-grid { + grid-template-columns: repeat(12, 1fr); + } +} +@media (max-width: -1) { + .elementor-grid-laptop-0 .elementor-grid { + display: inline-block; + width: 100%; + word-spacing: var(--grid-column-gap); + margin-bottom: calc(-1 * var(--grid-row-gap)); + } + .elementor-grid-laptop-0 .elementor-grid .elementor-grid-item { + display: inline-block; + margin-bottom: var(--grid-row-gap); + word-break: break-word; + } + .elementor-grid-laptop-1 .elementor-grid { + grid-template-columns: repeat(1, 1fr); + } + .elementor-grid-laptop-2 .elementor-grid { + grid-template-columns: repeat(2, 1fr); + } + .elementor-grid-laptop-3 .elementor-grid { + grid-template-columns: repeat(3, 1fr); + } + .elementor-grid-laptop-4 .elementor-grid { + grid-template-columns: repeat(4, 1fr); + } + .elementor-grid-laptop-5 .elementor-grid { + grid-template-columns: repeat(5, 1fr); + } + .elementor-grid-laptop-6 .elementor-grid { + grid-template-columns: repeat(6, 1fr); + } + .elementor-grid-laptop-7 .elementor-grid { + grid-template-columns: repeat(7, 1fr); + } + .elementor-grid-laptop-8 .elementor-grid { + grid-template-columns: repeat(8, 1fr); + } + .elementor-grid-laptop-9 .elementor-grid { + grid-template-columns: repeat(9, 1fr); + } + .elementor-grid-laptop-10 .elementor-grid { + grid-template-columns: repeat(10, 1fr); + } + .elementor-grid-laptop-11 .elementor-grid { + grid-template-columns: repeat(11, 1fr); + } + .elementor-grid-laptop-12 .elementor-grid { + grid-template-columns: repeat(12, 1fr); + } +} +@media (max-width: -1) { + .elementor-grid-tablet_extra-0 .elementor-grid { + display: inline-block; + width: 100%; + word-spacing: var(--grid-column-gap); + margin-bottom: calc(-1 * var(--grid-row-gap)); + } + .elementor-grid-tablet_extra-0 .elementor-grid .elementor-grid-item { + display: inline-block; + margin-bottom: var(--grid-row-gap); + word-break: break-word; + } + .elementor-grid-tablet_extra-1 .elementor-grid { + grid-template-columns: repeat(1, 1fr); + } + .elementor-grid-tablet_extra-2 .elementor-grid { + grid-template-columns: repeat(2, 1fr); + } + .elementor-grid-tablet_extra-3 .elementor-grid { + grid-template-columns: repeat(3, 1fr); + } + .elementor-grid-tablet_extra-4 .elementor-grid { + grid-template-columns: repeat(4, 1fr); + } + .elementor-grid-tablet_extra-5 .elementor-grid { + grid-template-columns: repeat(5, 1fr); + } + .elementor-grid-tablet_extra-6 .elementor-grid { + grid-template-columns: repeat(6, 1fr); + } + .elementor-grid-tablet_extra-7 .elementor-grid { + grid-template-columns: repeat(7, 1fr); + } + .elementor-grid-tablet_extra-8 .elementor-grid { + grid-template-columns: repeat(8, 1fr); + } + .elementor-grid-tablet_extra-9 .elementor-grid { + grid-template-columns: repeat(9, 1fr); + } + .elementor-grid-tablet_extra-10 .elementor-grid { + grid-template-columns: repeat(10, 1fr); + } + .elementor-grid-tablet_extra-11 .elementor-grid { + grid-template-columns: repeat(11, 1fr); + } + .elementor-grid-tablet_extra-12 .elementor-grid { + grid-template-columns: repeat(12, 1fr); + } +} +@media (max-width: 1024px) { + .elementor-grid-tablet-0 .elementor-grid { + display: inline-block; + width: 100%; + word-spacing: var(--grid-column-gap); + margin-bottom: calc(-1 * var(--grid-row-gap)); + } + .elementor-grid-tablet-0 .elementor-grid .elementor-grid-item { + display: inline-block; + margin-bottom: var(--grid-row-gap); + word-break: break-word; + } + .elementor-grid-tablet-1 .elementor-grid { + grid-template-columns: repeat(1, 1fr); + } + .elementor-grid-tablet-2 .elementor-grid { + grid-template-columns: repeat(2, 1fr); + } + .elementor-grid-tablet-3 .elementor-grid { + grid-template-columns: repeat(3, 1fr); + } + .elementor-grid-tablet-4 .elementor-grid { + grid-template-columns: repeat(4, 1fr); + } + .elementor-grid-tablet-5 .elementor-grid { + grid-template-columns: repeat(5, 1fr); + } + .elementor-grid-tablet-6 .elementor-grid { + grid-template-columns: repeat(6, 1fr); + } + .elementor-grid-tablet-7 .elementor-grid { + grid-template-columns: repeat(7, 1fr); + } + .elementor-grid-tablet-8 .elementor-grid { + grid-template-columns: repeat(8, 1fr); + } + .elementor-grid-tablet-9 .elementor-grid { + grid-template-columns: repeat(9, 1fr); + } + .elementor-grid-tablet-10 .elementor-grid { + grid-template-columns: repeat(10, 1fr); + } + .elementor-grid-tablet-11 .elementor-grid { + grid-template-columns: repeat(11, 1fr); + } + .elementor-grid-tablet-12 .elementor-grid { + grid-template-columns: repeat(12, 1fr); + } +} +@media (max-width: -1) { + .elementor-grid-mobile_extra-0 .elementor-grid { + display: inline-block; + width: 100%; + word-spacing: var(--grid-column-gap); + margin-bottom: calc(-1 * var(--grid-row-gap)); + } + .elementor-grid-mobile_extra-0 .elementor-grid .elementor-grid-item { + display: inline-block; + margin-bottom: var(--grid-row-gap); + word-break: break-word; + } + .elementor-grid-mobile_extra-1 .elementor-grid { + grid-template-columns: repeat(1, 1fr); + } + .elementor-grid-mobile_extra-2 .elementor-grid { + grid-template-columns: repeat(2, 1fr); + } + .elementor-grid-mobile_extra-3 .elementor-grid { + grid-template-columns: repeat(3, 1fr); + } + .elementor-grid-mobile_extra-4 .elementor-grid { + grid-template-columns: repeat(4, 1fr); + } + .elementor-grid-mobile_extra-5 .elementor-grid { + grid-template-columns: repeat(5, 1fr); + } + .elementor-grid-mobile_extra-6 .elementor-grid { + grid-template-columns: repeat(6, 1fr); + } + .elementor-grid-mobile_extra-7 .elementor-grid { + grid-template-columns: repeat(7, 1fr); + } + .elementor-grid-mobile_extra-8 .elementor-grid { + grid-template-columns: repeat(8, 1fr); + } + .elementor-grid-mobile_extra-9 .elementor-grid { + grid-template-columns: repeat(9, 1fr); + } + .elementor-grid-mobile_extra-10 .elementor-grid { + grid-template-columns: repeat(10, 1fr); + } + .elementor-grid-mobile_extra-11 .elementor-grid { + grid-template-columns: repeat(11, 1fr); + } + .elementor-grid-mobile_extra-12 .elementor-grid { + grid-template-columns: repeat(12, 1fr); + } +} +@media (max-width: 767px) { + .elementor-grid-mobile-0 .elementor-grid { + display: inline-block; + width: 100%; + word-spacing: var(--grid-column-gap); + margin-bottom: calc(-1 * var(--grid-row-gap)); + } + .elementor-grid-mobile-0 .elementor-grid .elementor-grid-item { + display: inline-block; + margin-bottom: var(--grid-row-gap); + word-break: break-word; + } + .elementor-grid-mobile-1 .elementor-grid { + grid-template-columns: repeat(1, 1fr); + } + .elementor-grid-mobile-2 .elementor-grid { + grid-template-columns: repeat(2, 1fr); + } + .elementor-grid-mobile-3 .elementor-grid { + grid-template-columns: repeat(3, 1fr); + } + .elementor-grid-mobile-4 .elementor-grid { + grid-template-columns: repeat(4, 1fr); + } + .elementor-grid-mobile-5 .elementor-grid { + grid-template-columns: repeat(5, 1fr); + } + .elementor-grid-mobile-6 .elementor-grid { + grid-template-columns: repeat(6, 1fr); + } + .elementor-grid-mobile-7 .elementor-grid { + grid-template-columns: repeat(7, 1fr); + } + .elementor-grid-mobile-8 .elementor-grid { + grid-template-columns: repeat(8, 1fr); + } + .elementor-grid-mobile-9 .elementor-grid { + grid-template-columns: repeat(9, 1fr); + } + .elementor-grid-mobile-10 .elementor-grid { + grid-template-columns: repeat(10, 1fr); + } + .elementor-grid-mobile-11 .elementor-grid { + grid-template-columns: repeat(11, 1fr); + } + .elementor-grid-mobile-12 .elementor-grid { + grid-template-columns: repeat(12, 1fr); + } +} + +@media (min-width: 1025px) { + #elementor-device-mode:after { + content: "desktop"; + } +} +@media (min-width: -1) { + #elementor-device-mode:after { + content: "widescreen"; + } +} +@media (max-width: -1) { + #elementor-device-mode:after { + content: "laptop"; + } +} +@media (max-width: -1) { + #elementor-device-mode:after { + content: "tablet_extra"; + } +} +@media (max-width: 1024px) { + #elementor-device-mode:after { + content: "tablet"; + } +} +@media (max-width: -1) { + #elementor-device-mode:after { + content: "mobile_extra"; + } +} +@media (max-width: 767px) { + #elementor-device-mode:after { + content: "mobile"; + } +} + +.e-con { + --border-radius: 0; + --border-block-start-width: 0px; + --border-inline-end-width: 0px; + --border-block-end-width: 0px; + --border-inline-start-width: 0px; + --border-style: initial; + --border-color: initial; + --container-widget-width: 100%; + --container-widget-height: initial; + --container-widget-flex-grow: 0; + --container-widget-align-self: initial; + --content-width: min(100%, var(--container-max-width, 1140px)); + --width: 100%; + --min-height: initial; + --height: auto; + --text-align: initial; + --margin-block-start: 0px; + --margin-inline-end: 0px; + --margin-block-end: 0px; + --margin-inline-start: 0px; + --padding-block-start: var(--container-default-padding-block-start, 10px); + --padding-inline-end: var(--container-default-padding-inline-end, 10px); + --padding-block-end: var(--container-default-padding-block-end, 10px); + --padding-inline-start: var(--container-default-padding-inline-start, 10px); + --position: relative; + --z-index: revert; + --overflow: visible; + --gap: var(--widgets-spacing, 20px); + --overlay-mix-blend-mode: initial; + --overlay-opacity: 1; + --overlay-transition: 0.3s; + --e-con-grid-template-columns: repeat(3, 1fr); + --e-con-grid-template-rows: repeat(2, 1fr); + position: var(--position); + width: var(--width); + min-width: 0; + min-height: var(--min-height); + height: var(--height); + border-radius: var(--border-radius); + margin-block-start: var(--bc-margin-block-start, var(--margin-block-start)); + margin-inline-end: var(--bc-margin-inline-end, var(--margin-inline-end)); + margin-block-end: var(--bc-margin-block-end, var(--margin-block-end)); + margin-inline-start: var(--bc-margin-inline-start, var(--margin-inline-start)); + padding-inline-start: var(--bc-padding-inline-start, var(--padding-inline-start)); + padding-inline-end: var(--bc-padding-inline-end, var(--padding-inline-end)); + z-index: var(--z-index); + overflow: var(--overflow); + transition: background var(--background-transition, 0.3s), border var(--border-transition, 0.3s), box-shadow var(--border-transition, 0.3s), transform var(--e-con-transform-transition-duration, 0.4s); +} +.e-con.e-flex { + --flex-direction: column; + --flex-basis: auto; + --flex-grow: 0; + --flex-shrink: 1; + flex: var(--flex-grow) var(--flex-shrink) var(--flex-basis); +} +.e-con-full, .e-con > .e-con-inner { + text-align: var(--text-align); + padding-block-start: var(--bc-padding-block-start, var(--padding-block-start)); + padding-block-end: var(--bc-padding-block-end, var(--padding-block-end)); +} +.e-con-full.e-flex, .e-con.e-flex > .e-con-inner { + flex-direction: var(--flex-direction); +} +.e-con, .e-con > .e-con-inner { + display: var(--display); +} +.e-con.e-grid { + --grid-justify-content: start; + --grid-align-content: start; + --grid-auto-flow: row; +} +.e-con.e-grid, .e-con.e-grid > .e-con-inner { + grid-template-columns: var(--e-con-grid-template-columns); + grid-template-rows: var(--e-con-grid-template-rows); + justify-content: var(--grid-justify-content); + align-content: var(--grid-align-content); + grid-auto-flow: var(--grid-auto-flow); + justify-items: var(--justify-items); + align-items: var(--align-items); +} +.e-con-boxed.e-flex { + flex-direction: column; + flex-wrap: initial; + justify-content: initial; + align-items: initial; + align-content: initial; +} +.e-con-boxed.e-grid { + justify-items: initial; + grid-template-columns: 1fr; + grid-template-rows: 1fr; +} +.e-con-boxed { + text-align: initial; + gap: initial; +} +.e-con.e-flex > .e-con-inner { + flex-wrap: var(--flex-wrap); + justify-content: var(--justify-content); + align-items: var(--align-items); + align-content: var(--align-content); + flex-basis: initial; + flex-grow: 1; + flex-shrink: initial; + align-self: initial; +} +.e-con.e-grid > .e-con-inner { + justify-items: var(--justify-items); + align-items: var(--align-items); +} +.e-con > .e-con-inner { + gap: var(--gap); + width: 100%; + max-width: var(--content-width); + margin: 0 auto; + padding-inline-start: 0; + padding-inline-end: 0; + height: 100%; +} +:is(.elementor-section-wrap, [data-elementor-id]) > .e-con { + --margin-inline-end: auto; + --margin-inline-start: auto; + max-width: min(100%, var(--width)); +} +.e-con .elementor-widget.elementor-widget { + margin-block-end: 0; +} +.e-con::before, :is(.e-con, .e-con > .e-con-inner) > .elementor-background-video-container::before, +.e-con > .elementor-motion-effects-container > .elementor-motion-effects-layer::before, +.e-con > .elementor-background-slideshow::before { + content: var(--background-overlay); + display: block; + position: absolute; + mix-blend-mode: var(--overlay-mix-blend-mode); + opacity: var(--overlay-opacity); + transition: var(--overlay-transition, 0.3s); + border-radius: var(--border-radius); + border-style: var(--border-style); + border-color: var(--border-color); + border-block-start-width: var(--border-block-start-width); + border-inline-end-width: var(--border-inline-end-width); + border-block-end-width: var(--border-block-end-width); + border-inline-start-width: var(--border-inline-start-width); + top: calc(0px - var(--border-block-start-width)); + left: calc(0px - var(--border-inline-start-width)); + width: max(100% + var(--border-inline-end-width) + var(--border-inline-start-width), 100%); + height: max(100% + var(--border-block-start-width) + var(--border-block-end-width), 100%); +} +.e-con::before { + transition: background var(--overlay-transition, 0.3s), border-radius var(--border-transition, 0.3s), opacity var(--overlay-transition, 0.3s); +} +.e-con > .elementor-background-slideshow, :is(.e-con, .e-con > .e-con-inner) > .elementor-background-video-container { + border-radius: var(--border-radius); + border-style: var(--border-style); + border-color: var(--border-color); + border-block-start-width: var(--border-block-start-width); + border-inline-end-width: var(--border-inline-end-width); + border-block-end-width: var(--border-block-end-width); + border-inline-start-width: var(--border-inline-start-width); + top: calc(0px - var(--border-block-start-width)); + left: calc(0px - var(--border-inline-start-width)); + width: max(100% + var(--border-inline-end-width) + var(--border-inline-start-width), 100%); + height: max(100% + var(--border-block-start-width) + var(--border-block-end-width), 100%); +} +@media (max-width: 767px) { + :is(.e-con, .e-con > .e-con-inner) > .elementor-background-video-container.elementor-hidden-phone { + display: none; + } +} +:is(.e-con, .e-con > .e-con-inner) > .elementor-background-video-container::before { + z-index: 1; +} +:is(.e-con, .e-con > .e-con-inner) > .elementor-background-slideshow::before { + z-index: 2; +} +.e-con .elementor-widget { + min-width: 0; +} +.e-con .elementor-widget-video, .e-con .elementor-widget-google_maps, .e-con .elementor-widget-empty { + width: 100%; +} +.e-con .elementor-widget.e-widget-swiper { + width: 100%; +} +.e-con > .elementor-widget > .elementor-widget-container, .e-con > .e-con-inner > .elementor-widget > .elementor-widget-container { + height: 100%; +} +.elementor.elementor .e-con > .elementor-widget, .e-con.e-con > .e-con-inner > .elementor-widget { + max-width: 100%; +} + +@media (max-width: 767px) { + .e-con.e-flex { + --width: 100%; + --flex-wrap: wrap; + } +} +.e-con { + --bc-margin-block-start: var(--margin-top); + --bc-margin-block-end: var(--margin-bottom); + --bc-margin-inline-start: var(--margin-left); + --bc-margin-inline-end: var(--margin-right); + --bc-padding-block-start: var(--padding-top); + --bc-padding-block-end: var(--padding-bottom); + --bc-padding-inline-start: var(--padding-left); + --bc-padding-inline-end: var(--padding-right); +} +[dir=rtl] .e-con { + --bc-margin-inline-start: var(--margin-right); + --bc-margin-inline-end: var(--margin-left); + --bc-padding-inline-start: var(--padding-right); + --bc-padding-inline-end: var(--padding-left); +} + +.elementor-form-fields-wrapper { + display: flex; + flex-wrap: wrap; +} +.elementor-form-fields-wrapper.elementor-labels-above .elementor-field-group > input, .elementor-form-fields-wrapper.elementor-labels-above .elementor-field-group > textarea, .elementor-form-fields-wrapper.elementor-labels-above .elementor-field-group > .elementor-select-wrapper, .elementor-form-fields-wrapper.elementor-labels-above .elementor-field-group .elementor-field-subgroup { + flex-basis: 100%; + max-width: 100%; +} +.elementor-form-fields-wrapper.elementor-labels-inline > .elementor-field-group > input, .elementor-form-fields-wrapper.elementor-labels-inline > .elementor-field-group .elementor-select-wrapper { + flex-grow: 1; +} + +.elementor-field-group { + flex-wrap: wrap; + align-items: center; +} +.elementor-field-group.elementor-field-type-submit { + align-items: flex-end; +} +.elementor-field-group .elementor-field-textual { + width: 100%; + max-width: 100%; + border: 1px solid #69727D; + background-color: transparent; + color: #1f2124; + vertical-align: middle; + flex-grow: 1; +} +.elementor-field-group .elementor-field-textual:focus { + box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.1) inset; + outline: 0; +} +.elementor-field-group .elementor-field-textual::-moz-placeholder { + color: inherit; + font-family: inherit; + opacity: 0.6; +} +.elementor-field-group .elementor-field-textual::placeholder { + color: inherit; + font-family: inherit; + opacity: 0.6; +} +.elementor-field-group .elementor-select-wrapper { + display: flex; + position: relative; + width: 100%; +} +.elementor-field-group .elementor-select-wrapper select { + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + color: inherit; + font-size: inherit; + font-family: inherit; + font-weight: inherit; + font-style: inherit; + text-transform: inherit; + letter-spacing: inherit; + line-height: inherit; + flex-basis: 100%; + padding-left: 20px; +} +.elementor-field-group .elementor-select-wrapper:before { + content: "\e92a"; + font-family: "eicons"; + font-size: 15px; + position: absolute; + top: 50%; + transform: translateY(-50%); + left: 10px; + pointer-events: none; + text-shadow: 0 0 3px rgba(0, 0, 0, 0.3); +} +.elementor-field-group.elementor-field-type-select-multiple .elementor-select-wrapper:before { + content: ""; +} + +.elementor-field-subgroup { + display: flex; + flex-wrap: wrap; +} +.elementor-field-subgroup .elementor-field-option label { + display: inline-block; +} +.elementor-field-subgroup.elementor-subgroup-inline .elementor-field-option { + padding-left: 10px; +} +.elementor-field-subgroup:not(.elementor-subgroup-inline) .elementor-field-option { + flex-basis: 100%; +} + +.elementor-field-type-checkbox .elementor-field-subgroup .elementor-field-option input, +.elementor-field-type-checkbox .elementor-field-subgroup .elementor-field-option label, +.elementor-field-type-radio .elementor-field-subgroup .elementor-field-option input, +.elementor-field-type-radio .elementor-field-subgroup .elementor-field-option label, +.elementor-field-type-acceptance .elementor-field-subgroup .elementor-field-option input, +.elementor-field-type-acceptance .elementor-field-subgroup .elementor-field-option label { + display: inline; +} + +.elementor-field-label { + cursor: pointer; +} +.elementor-mark-required .elementor-field-label:after { + content: "*"; + color: red; + padding-right: 0.2em; +} + +.elementor-field-textual { + line-height: 1.4; + font-size: 15px; + min-height: 40px; + padding: 5px 14px; + border-radius: 3px; +} +.elementor-field-textual.elementor-size-xs { + font-size: 13px; + min-height: 33px; + padding: 4px 12px; + border-radius: 2px; +} +.elementor-field-textual.elementor-size-md { + font-size: 16px; + min-height: 47px; + padding: 6px 16px; + border-radius: 4px; +} +.elementor-field-textual.elementor-size-lg { + font-size: 18px; + min-height: 59px; + padding: 7px 20px; + border-radius: 5px; +} +.elementor-field-textual.elementor-size-xl { + font-size: 20px; + min-height: 72px; + padding: 8px 24px; + border-radius: 6px; +} + +.elementor-button-align-stretch .elementor-field-type-submit:not(.e-form__buttons__wrapper) .elementor-button { + flex-basis: 100%; +} +.elementor-button-align-stretch .e-form__buttons__wrapper { + flex-basis: 50%; + flex-grow: 1; +} +.elementor-button-align-stretch .e-form__buttons__wrapper__button { + flex-basis: 100%; +} +.elementor-button-align-center .elementor-field-type-submit, +.elementor-button-align-center .e-form__buttons { + justify-content: center; +} +.elementor-button-align-start .elementor-field-type-submit, +.elementor-button-align-start .e-form__buttons { + justify-content: flex-end; +} +.elementor-button-align-end .elementor-field-type-submit, +.elementor-button-align-end .e-form__buttons { + justify-content: flex-start; +} +.elementor-button-align-center .elementor-field-type-submit:not(.e-form__buttons__wrapper) .elementor-button, .elementor-button-align-start .elementor-field-type-submit:not(.e-form__buttons__wrapper) .elementor-button, .elementor-button-align-end .elementor-field-type-submit:not(.e-form__buttons__wrapper) .elementor-button { + flex-basis: initial; +} +.elementor-button-align-center .e-form__buttons__wrapper, .elementor-button-align-start .e-form__buttons__wrapper, .elementor-button-align-end .e-form__buttons__wrapper { + flex-grow: initial; +} +.elementor-button-align-center .e-form__buttons__wrapper, .elementor-button-align-center .e-form__buttons__wrapper__button, .elementor-button-align-start .e-form__buttons__wrapper, .elementor-button-align-start .e-form__buttons__wrapper__button, .elementor-button-align-end .e-form__buttons__wrapper, .elementor-button-align-end .e-form__buttons__wrapper__button { + flex-basis: initial; +} + +@media screen and (max-width: 1024px) { + .elementor-tablet-button-align-stretch .elementor-field-type-submit:not(.e-form__buttons__wrapper) .elementor-button { + flex-basis: 100%; + } + .elementor-tablet-button-align-stretch .e-form__buttons__wrapper { + flex-basis: 50%; + flex-grow: 1; + } + .elementor-tablet-button-align-stretch .e-form__buttons__wrapper__button { + flex-basis: 100%; + } + .elementor-tablet-button-align-center .elementor-field-type-submit, + .elementor-tablet-button-align-center .e-form__buttons { + justify-content: center; + } + .elementor-tablet-button-align-start .elementor-field-type-submit, + .elementor-tablet-button-align-start .e-form__buttons { + justify-content: flex-end; + } + .elementor-tablet-button-align-end .elementor-field-type-submit, + .elementor-tablet-button-align-end .e-form__buttons { + justify-content: flex-start; + } + .elementor-tablet-button-align-center .elementor-field-type-submit:not(.e-form__buttons__wrapper) .elementor-button, .elementor-tablet-button-align-start .elementor-field-type-submit:not(.e-form__buttons__wrapper) .elementor-button, .elementor-tablet-button-align-end .elementor-field-type-submit:not(.e-form__buttons__wrapper) .elementor-button { + flex-basis: initial; + } + .elementor-tablet-button-align-center .e-form__buttons__wrapper, .elementor-tablet-button-align-start .e-form__buttons__wrapper, .elementor-tablet-button-align-end .e-form__buttons__wrapper { + flex-grow: initial; + } + .elementor-tablet-button-align-center .e-form__buttons__wrapper, .elementor-tablet-button-align-center .e-form__buttons__wrapper__button, .elementor-tablet-button-align-start .e-form__buttons__wrapper, .elementor-tablet-button-align-start .e-form__buttons__wrapper__button, .elementor-tablet-button-align-end .e-form__buttons__wrapper, .elementor-tablet-button-align-end .e-form__buttons__wrapper__button { + flex-basis: initial; + } +} +@media screen and (max-width: 767px) { + .elementor-mobile-button-align-stretch .elementor-field-type-submit:not(.e-form__buttons__wrapper) .elementor-button { + flex-basis: 100%; + } + .elementor-mobile-button-align-stretch .e-form__buttons__wrapper { + flex-basis: 50%; + flex-grow: 1; + } + .elementor-mobile-button-align-stretch .e-form__buttons__wrapper__button { + flex-basis: 100%; + } + .elementor-mobile-button-align-center .elementor-field-type-submit, + .elementor-mobile-button-align-center .e-form__buttons { + justify-content: center; + } + .elementor-mobile-button-align-start .elementor-field-type-submit, + .elementor-mobile-button-align-start .e-form__buttons { + justify-content: flex-end; + } + .elementor-mobile-button-align-end .elementor-field-type-submit, + .elementor-mobile-button-align-end .e-form__buttons { + justify-content: flex-start; + } + .elementor-mobile-button-align-center .elementor-field-type-submit:not(.e-form__buttons__wrapper) .elementor-button, .elementor-mobile-button-align-start .elementor-field-type-submit:not(.e-form__buttons__wrapper) .elementor-button, .elementor-mobile-button-align-end .elementor-field-type-submit:not(.e-form__buttons__wrapper) .elementor-button { + flex-basis: initial; + } + .elementor-mobile-button-align-center .e-form__buttons__wrapper, .elementor-mobile-button-align-start .e-form__buttons__wrapper, .elementor-mobile-button-align-end .e-form__buttons__wrapper { + flex-grow: initial; + } + .elementor-mobile-button-align-center .e-form__buttons__wrapper, .elementor-mobile-button-align-center .e-form__buttons__wrapper__button, .elementor-mobile-button-align-start .e-form__buttons__wrapper, .elementor-mobile-button-align-start .e-form__buttons__wrapper__button, .elementor-mobile-button-align-end .e-form__buttons__wrapper, .elementor-mobile-button-align-end .e-form__buttons__wrapper__button { + flex-basis: initial; + } +} +.elementor-error .elementor-field { + border-color: #d9534f; +} +.elementor-error .help-inline { + color: #d9534f; + font-size: 0.9em; +} + +.elementor-message { + margin: 10px 0; + font-size: 1em; + line-height: 1; +} +.elementor-message:before { + content: "\e90e"; + display: inline-block; + font-family: eicons; + font-weight: normal; + font-style: normal; + vertical-align: middle; + margin-left: 5px; +} +.elementor-message.elementor-message-danger { + color: #d9534f; +} +.elementor-message.elementor-message-danger:before { + content: "\e87f"; +} +.elementor-message.form-message-success { + color: #5cb85c; +} + +.elementor-form .elementor-button { + padding-top: 0; + padding-bottom: 0; + border: none; +} +.elementor-form .elementor-button > span { + display: flex; + justify-content: center; +} +.elementor-form .elementor-button.elementor-size-xs { + min-height: 33px; +} +.elementor-form .elementor-button.elementor-size-sm { + min-height: 40px; +} +.elementor-form .elementor-button.elementor-size-md { + min-height: 47px; +} +.elementor-form .elementor-button.elementor-size-lg { + min-height: 59px; +} +.elementor-form .elementor-button.elementor-size-xl { + min-height: 72px; +} + +.elementor-element .elementor-widget-container { + transition: background 0.3s, border 0.3s, border-radius 0.3s, box-shadow 0.3s, transform var(--e-transform-transition-duration, 400ms); +} + +.elementor-button { + display: inline-block; + line-height: 1; + background-color: #69727D; + font-size: 15px; + padding: 12px 24px; + border-radius: 3px; + color: #fff; + fill: #fff; + text-align: center; + transition: all 0.3s; +} +.elementor-button:hover, .elementor-button:focus, .elementor-button:visited { + color: #fff; +} +.elementor-button-content-wrapper { + display: flex; + justify-content: center; +} +.elementor-button-icon { + flex-grow: 0; + order: 5; +} +.elementor-button-icon svg { + width: 1em; + height: auto; +} +.elementor-button-icon .e-font-icon-svg { + height: 1em; +} +.elementor-button-text { + flex-grow: 1; + order: 10; + display: inline-block; +} +.elementor-button.elementor-size-xs { + font-size: 13px; + padding: 10px 20px; + border-radius: 2px; +} +.elementor-button.elementor-size-md { + font-size: 16px; + padding: 15px 30px; + border-radius: 4px; +} +.elementor-button.elementor-size-lg { + font-size: 18px; + padding: 20px 40px; + border-radius: 5px; +} +.elementor-button.elementor-size-xl { + font-size: 20px; + padding: 25px 50px; + border-radius: 6px; +} +.elementor-button .elementor-align-icon-right { + margin-left: 5px; + order: 5; +} +.elementor-button .elementor-align-icon-left { + margin-right: 5px; + order: 15; +} +.elementor-button span { + text-decoration: inherit; +} + +.elementor-element.elementor-button-info .elementor-button { + background-color: #5bc0de; +} +.elementor-element.elementor-button-success .elementor-button { + background-color: #5cb85c; +} +.elementor-element.elementor-button-warning .elementor-button { + background-color: #f0ad4e; +} +.elementor-element.elementor-button-danger .elementor-button { + background-color: #d9534f; +} + +.elementor-widget-button .elementor-button .elementor-button-info { + background-color: #5bc0de; +} +.elementor-widget-button .elementor-button .elementor-button-success { + background-color: #5cb85c; +} +.elementor-widget-button .elementor-button .elementor-button-warning { + background-color: #f0ad4e; +} +.elementor-widget-button .elementor-button .elementor-button-danger { + background-color: #d9534f; +} + +.elementor-tab-title a { + color: inherit; +} + +.elementor-view-stacked .elementor-icon { + padding: 0.5em; + background-color: #69727D; + color: #fff; + fill: #fff; +} + +.elementor-view-framed .elementor-icon { + padding: 0.5em; + color: #69727D; + border: 3px solid #69727D; + background-color: transparent; +} + +.elementor-icon { + display: inline-block; + line-height: 1; + transition: all 0.3s; + color: #69727D; + font-size: 50px; + text-align: center; +} +.elementor-icon:hover { + color: #69727D; +} +.elementor-icon i, .elementor-icon svg { + width: 1em; + height: 1em; + position: relative; + display: block; +} +.elementor-icon i:before, .elementor-icon svg:before { + position: absolute; + left: 50%; + transform: translateX(-50%); +} +.elementor-icon i.fad { + width: initial; +} + +.elementor-shape-circle .elementor-icon { + border-radius: 50%; +} + +.e-transform .elementor-widget-container { + transform: perspective(var(--e-transform-perspective, 0)) rotateZ(var(--e-transform-rotateZ, 0)) rotateX(var(--e-transform-rotateX, 0)) rotateY(var(--e-transform-rotateY, 0)) translate(var(--e-transform-translate, 0)) translateX(var(--e-transform-translateX, 0)) translateY(var(--e-transform-translateY, 0)) scaleX(calc(var(--e-transform-flipX, 1) * var(--e-transform-scaleX, var(--e-transform-scale, 1)))) scaleY(calc(var(--e-transform-flipY, 1) * var(--e-transform-scaleY, var(--e-transform-scale, 1)))) skewX(var(--e-transform-skewX, 0)) skewY(var(--e-transform-skewY, 0)); + transform-origin: var(--e-transform-origin-y) var(--e-transform-origin-x); +} + +.e-con.e-transform { + transform: perspective(var(--e-con-transform-perspective, 0)) rotateZ(var(--e-con-transform-rotateZ, 0)) rotateX(var(--e-con-transform-rotateX, 0)) rotateY(var(--e-con-transform-rotateY, 0)) translate(var(--e-con-transform-translate, 0)) translateX(var(--e-con-transform-translateX, 0)) translateY(var(--e-con-transform-translateY, 0)) scaleX(calc(var(--e-con-transform-flipX, 1) * var(--e-con-transform-scaleX, var(--e-con-transform-scale, 1)))) scaleY(calc(var(--e-con-transform-flipY, 1) * var(--e-con-transform-scaleY, var(--e-con-transform-scale, 1)))) skewX(var(--e-con-transform-skewX, 0)) skewY(var(--e-con-transform-skewY, 0)); + transform-origin: var(--e-con-transform-origin-y) var(--e-con-transform-origin-x); +} + +.elementor-element, .elementor-lightbox { + --swiper-theme-color: #000; + --swiper-navigation-size: 44px; + --swiper-pagination-bullet-size: 6px; + --swiper-pagination-bullet-horizontal-gap: 6px; +} +.elementor-element .swiper .swiper-slide figure, +.elementor-element .swiper-container .swiper-slide figure, .elementor-lightbox .swiper .swiper-slide figure, +.elementor-lightbox .swiper-container .swiper-slide figure { + line-height: 0; +} +.elementor-element .swiper .elementor-lightbox-content-source, +.elementor-element .swiper-container .elementor-lightbox-content-source, .elementor-lightbox .swiper .elementor-lightbox-content-source, +.elementor-lightbox .swiper-container .elementor-lightbox-content-source { + display: none; +} +.elementor-element .swiper .elementor-swiper-button, +.elementor-element .swiper ~ .elementor-swiper-button, +.elementor-element .swiper-container .elementor-swiper-button, +.elementor-element .swiper-container ~ .elementor-swiper-button, .elementor-lightbox .swiper .elementor-swiper-button, +.elementor-lightbox .swiper ~ .elementor-swiper-button, +.elementor-lightbox .swiper-container .elementor-swiper-button, +.elementor-lightbox .swiper-container ~ .elementor-swiper-button { + position: absolute; + display: inline-flex; + z-index: 1; + cursor: pointer; + font-size: 25px; + color: rgba(238, 238, 238, 0.9); + top: 50%; + transform: translateY(-50%); +} +.elementor-element .swiper .elementor-swiper-button svg, +.elementor-element .swiper ~ .elementor-swiper-button svg, +.elementor-element .swiper-container .elementor-swiper-button svg, +.elementor-element .swiper-container ~ .elementor-swiper-button svg, .elementor-lightbox .swiper .elementor-swiper-button svg, +.elementor-lightbox .swiper ~ .elementor-swiper-button svg, +.elementor-lightbox .swiper-container .elementor-swiper-button svg, +.elementor-lightbox .swiper-container ~ .elementor-swiper-button svg { + fill: rgba(238, 238, 238, 0.9); + height: 1em; + width: 1em; +} +.elementor-element .swiper .elementor-swiper-button-prev, +.elementor-element .swiper ~ .elementor-swiper-button-prev, +.elementor-element .swiper-container .elementor-swiper-button-prev, +.elementor-element .swiper-container ~ .elementor-swiper-button-prev, .elementor-lightbox .swiper .elementor-swiper-button-prev, +.elementor-lightbox .swiper ~ .elementor-swiper-button-prev, +.elementor-lightbox .swiper-container .elementor-swiper-button-prev, +.elementor-lightbox .swiper-container ~ .elementor-swiper-button-prev { + left: 10px; +} +.elementor-element .swiper .elementor-swiper-button-next, +.elementor-element .swiper ~ .elementor-swiper-button-next, +.elementor-element .swiper-container .elementor-swiper-button-next, +.elementor-element .swiper-container ~ .elementor-swiper-button-next, .elementor-lightbox .swiper .elementor-swiper-button-next, +.elementor-lightbox .swiper ~ .elementor-swiper-button-next, +.elementor-lightbox .swiper-container .elementor-swiper-button-next, +.elementor-lightbox .swiper-container ~ .elementor-swiper-button-next { + right: 10px; +} +.elementor-element .swiper .elementor-swiper-button.swiper-button-disabled, +.elementor-element .swiper ~ .elementor-swiper-button.swiper-button-disabled, +.elementor-element .swiper-container .elementor-swiper-button.swiper-button-disabled, +.elementor-element .swiper-container ~ .elementor-swiper-button.swiper-button-disabled, .elementor-lightbox .swiper .elementor-swiper-button.swiper-button-disabled, +.elementor-lightbox .swiper ~ .elementor-swiper-button.swiper-button-disabled, +.elementor-lightbox .swiper-container .elementor-swiper-button.swiper-button-disabled, +.elementor-lightbox .swiper-container ~ .elementor-swiper-button.swiper-button-disabled { + opacity: 0.3; +} +.elementor-element .swiper .swiper-image-stretch .swiper-slide .swiper-slide-image, +.elementor-element .swiper-container .swiper-image-stretch .swiper-slide .swiper-slide-image, .elementor-lightbox .swiper .swiper-image-stretch .swiper-slide .swiper-slide-image, +.elementor-lightbox .swiper-container .swiper-image-stretch .swiper-slide .swiper-slide-image { + width: 100%; +} +.elementor-element .swiper .swiper-pagination-fraction, +.elementor-element .swiper .swiper-pagination-custom, +.elementor-element .swiper .swiper-horizontal > .swiper-pagination-bullets, +.elementor-element .swiper .swiper-pagination-bullets.swiper-pagination-horizontal, +.elementor-element .swiper ~ .swiper-pagination-fraction, +.elementor-element .swiper ~ .swiper-pagination-custom, +.elementor-element .swiper ~ .swiper-pagination-bullets.swiper-pagination-horizontal, +.elementor-element .swiper-container .swiper-pagination-fraction, +.elementor-element .swiper-container .swiper-pagination-custom, +.elementor-element .swiper-container .swiper-horizontal > .swiper-pagination-bullets, +.elementor-element .swiper-container .swiper-pagination-bullets.swiper-pagination-horizontal, +.elementor-element .swiper-container ~ .swiper-pagination-fraction, +.elementor-element .swiper-container ~ .swiper-pagination-custom, +.elementor-element .swiper-container ~ .swiper-pagination-bullets.swiper-pagination-horizontal, .elementor-lightbox .swiper .swiper-pagination-fraction, +.elementor-lightbox .swiper .swiper-pagination-custom, +.elementor-lightbox .swiper .swiper-horizontal > .swiper-pagination-bullets, +.elementor-lightbox .swiper .swiper-pagination-bullets.swiper-pagination-horizontal, +.elementor-lightbox .swiper ~ .swiper-pagination-fraction, +.elementor-lightbox .swiper ~ .swiper-pagination-custom, +.elementor-lightbox .swiper ~ .swiper-pagination-bullets.swiper-pagination-horizontal, +.elementor-lightbox .swiper-container .swiper-pagination-fraction, +.elementor-lightbox .swiper-container .swiper-pagination-custom, +.elementor-lightbox .swiper-container .swiper-horizontal > .swiper-pagination-bullets, +.elementor-lightbox .swiper-container .swiper-pagination-bullets.swiper-pagination-horizontal, +.elementor-lightbox .swiper-container ~ .swiper-pagination-fraction, +.elementor-lightbox .swiper-container ~ .swiper-pagination-custom, +.elementor-lightbox .swiper-container ~ .swiper-pagination-bullets.swiper-pagination-horizontal { + bottom: 5px; +} +.elementor-element .swiper.swiper-cube .elementor-swiper-button, +.elementor-element .swiper.swiper-cube ~ .elementor-swiper-button, +.elementor-element .swiper-container.swiper-cube .elementor-swiper-button, +.elementor-element .swiper-container.swiper-cube ~ .elementor-swiper-button, .elementor-lightbox .swiper.swiper-cube .elementor-swiper-button, +.elementor-lightbox .swiper.swiper-cube ~ .elementor-swiper-button, +.elementor-lightbox .swiper-container.swiper-cube .elementor-swiper-button, +.elementor-lightbox .swiper-container.swiper-cube ~ .elementor-swiper-button { + transform: translate3d(0, -50%, 1px); +} +.elementor-element :where(.swiper-container-horizontal) ~ .swiper-pagination-bullets, .elementor-lightbox :where(.swiper-container-horizontal) ~ .swiper-pagination-bullets { + bottom: 5px; + left: 0; + width: 100%; +} +.elementor-element :where(.swiper-container-horizontal) ~ .swiper-pagination-bullets .swiper-pagination-bullet, .elementor-lightbox :where(.swiper-container-horizontal) ~ .swiper-pagination-bullets .swiper-pagination-bullet { + margin: 0 var(--swiper-pagination-bullet-horizontal-gap, 4px); +} +.elementor-element :where(.swiper-container-horizontal) ~ .swiper-pagination-progressbar, .elementor-lightbox :where(.swiper-container-horizontal) ~ .swiper-pagination-progressbar { + width: 100%; + height: 4px; + left: 0; + top: 0; +} +.elementor-element.elementor-pagination-position-outside .swiper, +.elementor-element.elementor-pagination-position-outside .swiper-container, .elementor-lightbox.elementor-pagination-position-outside .swiper, +.elementor-lightbox.elementor-pagination-position-outside .swiper-container { + padding-bottom: 30px; +} +.elementor-element.elementor-pagination-position-outside .swiper .elementor-swiper-button, +.elementor-element.elementor-pagination-position-outside .swiper ~ .elementor-swiper-button, +.elementor-element.elementor-pagination-position-outside .swiper-container .elementor-swiper-button, +.elementor-element.elementor-pagination-position-outside .swiper-container ~ .elementor-swiper-button, .elementor-lightbox.elementor-pagination-position-outside .swiper .elementor-swiper-button, +.elementor-lightbox.elementor-pagination-position-outside .swiper ~ .elementor-swiper-button, +.elementor-lightbox.elementor-pagination-position-outside .swiper-container .elementor-swiper-button, +.elementor-lightbox.elementor-pagination-position-outside .swiper-container ~ .elementor-swiper-button { + top: calc(50% - 30px / 2); +} +.elementor-element .elementor-swiper, .elementor-lightbox .elementor-swiper { + position: relative; +} +.elementor-element .elementor-main-swiper, .elementor-lightbox .elementor-main-swiper { + position: static; +} +.elementor-element.elementor-arrows-position-outside .swiper, +.elementor-element.elementor-arrows-position-outside .swiper-container, .elementor-lightbox.elementor-arrows-position-outside .swiper, +.elementor-lightbox.elementor-arrows-position-outside .swiper-container { + width: calc(100% - 60px); +} +.elementor-element.elementor-arrows-position-outside .swiper .elementor-swiper-button-prev, +.elementor-element.elementor-arrows-position-outside .swiper ~ .elementor-swiper-button-prev, +.elementor-element.elementor-arrows-position-outside .swiper-container .elementor-swiper-button-prev, +.elementor-element.elementor-arrows-position-outside .swiper-container ~ .elementor-swiper-button-prev, .elementor-lightbox.elementor-arrows-position-outside .swiper .elementor-swiper-button-prev, +.elementor-lightbox.elementor-arrows-position-outside .swiper ~ .elementor-swiper-button-prev, +.elementor-lightbox.elementor-arrows-position-outside .swiper-container .elementor-swiper-button-prev, +.elementor-lightbox.elementor-arrows-position-outside .swiper-container ~ .elementor-swiper-button-prev { + left: 0; +} +.elementor-element.elementor-arrows-position-outside .swiper .elementor-swiper-button-next, +.elementor-element.elementor-arrows-position-outside .swiper ~ .elementor-swiper-button-next, +.elementor-element.elementor-arrows-position-outside .swiper-container .elementor-swiper-button-next, +.elementor-element.elementor-arrows-position-outside .swiper-container ~ .elementor-swiper-button-next, .elementor-lightbox.elementor-arrows-position-outside .swiper .elementor-swiper-button-next, +.elementor-lightbox.elementor-arrows-position-outside .swiper ~ .elementor-swiper-button-next, +.elementor-lightbox.elementor-arrows-position-outside .swiper-container .elementor-swiper-button-next, +.elementor-lightbox.elementor-arrows-position-outside .swiper-container ~ .elementor-swiper-button-next { + right: 0; +} + +.elementor-lightbox { + --lightbox-ui-color: rgba(238, 238, 238, 0.9); + --lightbox-ui-color-hover: #fff; + --lightbox-text-color: var(--lightbox-ui-color); + --lightbox-header-icons-size: 20px; + --lightbox-navigation-icons-size: 25px; +} +.elementor-lightbox:not(.elementor-popup-modal) .dialog-header, +.elementor-lightbox:not(.elementor-popup-modal) .dialog-message { + text-align: center; +} +.elementor-lightbox .dialog-header { + display: none; +} +.elementor-lightbox .dialog-widget-content { + background: none; + box-shadow: none; + width: 100%; + height: 100%; +} +.elementor-lightbox .dialog-message { + animation-duration: 0.3s; + height: 100%; +} +.elementor-lightbox .dialog-message.dialog-lightbox-message { + padding: 0; +} +.elementor-lightbox .dialog-lightbox-close-button { + cursor: pointer; + position: absolute; + font-size: var(--lightbox-header-icons-size); + left: 0.75em; + margin-top: 13px; + padding: 0.25em; + z-index: 2; + line-height: 1; + display: flex; +} +.elementor-lightbox .dialog-lightbox-close-button svg { + height: 1em; + width: 1em; +} +.elementor-lightbox .dialog-lightbox-close-button, +.elementor-lightbox .elementor-swiper-button { + color: var(--lightbox-ui-color); + transition: all 0.3s; + opacity: 1; +} +.elementor-lightbox .dialog-lightbox-close-button svg, +.elementor-lightbox .elementor-swiper-button svg { + fill: var(--lightbox-ui-color); +} +.elementor-lightbox .dialog-lightbox-close-button:hover, +.elementor-lightbox .elementor-swiper-button:hover { + color: var(--lightbox-ui-color-hover); +} +.elementor-lightbox .dialog-lightbox-close-button:hover svg, +.elementor-lightbox .elementor-swiper-button:hover svg { + fill: var(--lightbox-ui-color-hover); +} +.elementor-lightbox .swiper, +.elementor-lightbox .swiper-container { + height: 100%; +} +.elementor-lightbox .elementor-lightbox-item { + display: flex; + align-items: center; + justify-content: center; + position: relative; + padding: 70px; + box-sizing: border-box; + height: 100%; + margin: auto; +} +@media (max-width: 767px) { + .elementor-lightbox .elementor-lightbox-item { + padding: 70px 0; + } +} +.elementor-lightbox .elementor-lightbox-image { + max-height: 100%; + -webkit-user-select: none; + -moz-user-select: none; + user-select: none; +} +.elementor-lightbox .elementor-lightbox-image, .elementor-lightbox .elementor-lightbox-image:hover { + opacity: 1; + filter: none; + border: none; +} +.elementor-lightbox .elementor-lightbox-image { + box-shadow: 0 0 30px rgba(0, 0, 0, 0.3), 0 0 8px -5px rgba(0, 0, 0, 0.3); + border-radius: 2px; +} +.elementor-lightbox .elementor-video-container { + width: 100%; + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); +} +.elementor-lightbox .elementor-video-container .elementor-video-square, +.elementor-lightbox .elementor-video-container .elementor-video-landscape, +.elementor-lightbox .elementor-video-container .elementor-video-portrait { + width: 100%; + height: 100%; + margin: auto; +} +.elementor-lightbox .elementor-video-container .elementor-video-square iframe, +.elementor-lightbox .elementor-video-container .elementor-video-landscape iframe, +.elementor-lightbox .elementor-video-container .elementor-video-portrait iframe { + border: 0; + background-color: #000; +} +.elementor-lightbox .elementor-video-container .elementor-video-square iframe, +.elementor-lightbox .elementor-video-container .elementor-video-square video, +.elementor-lightbox .elementor-video-container .elementor-video-landscape iframe, +.elementor-lightbox .elementor-video-container .elementor-video-landscape video, +.elementor-lightbox .elementor-video-container .elementor-video-portrait iframe, +.elementor-lightbox .elementor-video-container .elementor-video-portrait video { + aspect-ratio: var(--video-aspect-ratio, 1.77777); +} +@supports not (aspect-ratio: 1/1) { + .elementor-lightbox .elementor-video-container .elementor-video-square, + .elementor-lightbox .elementor-video-container .elementor-video-landscape, + .elementor-lightbox .elementor-video-container .elementor-video-portrait { + position: relative; + overflow: hidden; + height: 0; + padding-bottom: calc(100% / var(--video-aspect-ratio, 1.77777)); + } + .elementor-lightbox .elementor-video-container .elementor-video-square iframe, + .elementor-lightbox .elementor-video-container .elementor-video-square video, + .elementor-lightbox .elementor-video-container .elementor-video-landscape iframe, + .elementor-lightbox .elementor-video-container .elementor-video-landscape video, + .elementor-lightbox .elementor-video-container .elementor-video-portrait iframe, + .elementor-lightbox .elementor-video-container .elementor-video-portrait video { + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + } +} +.elementor-lightbox .elementor-video-container .elementor-video-square iframe, +.elementor-lightbox .elementor-video-container .elementor-video-square video { + width: min(90vh, 90vw); + height: min(90vh, 90vw); +} +.elementor-lightbox .elementor-video-container .elementor-video-landscape iframe, +.elementor-lightbox .elementor-video-container .elementor-video-landscape video { + width: 100%; + max-height: 90vh; +} +.elementor-lightbox .elementor-video-container .elementor-video-portrait iframe, +.elementor-lightbox .elementor-video-container .elementor-video-portrait video { + height: 100%; + max-width: 90vw; +} +@media (min-width: 1025px) { + .elementor-lightbox .elementor-video-container .elementor-video-landscape { + width: 85vw; + max-height: 85vh; + } + .elementor-lightbox .elementor-video-container .elementor-video-portrait { + height: 85vh; + max-width: 85vw; + } +} +@media (max-width: 1024px) { + .elementor-lightbox .elementor-video-container .elementor-video-landscape { + width: 95vw; + max-height: 95vh; + } + .elementor-lightbox .elementor-video-container .elementor-video-portrait { + height: 95vh; + max-width: 95vw; + } +} +.elementor-lightbox .swiper .elementor-swiper-button-prev, +.elementor-lightbox .swiper-container .elementor-swiper-button-prev { + left: 0; +} +.elementor-lightbox .swiper .elementor-swiper-button-next, +.elementor-lightbox .swiper-container .elementor-swiper-button-next { + right: 0; +} +.elementor-lightbox .swiper .swiper-pagination-fraction, +.elementor-lightbox .swiper-container .swiper-pagination-fraction { + width: -moz-max-content; + width: max-content; + color: #ffffff; +} +.elementor-lightbox .elementor-swiper-button:focus { + outline-width: 1px; +} +.elementor-lightbox .elementor-swiper-button-prev, .elementor-lightbox .elementor-swiper-button-next { + height: 100%; + display: flex; + align-items: center; + width: 15%; + justify-content: center; + font-size: var(--lightbox-navigation-icons-size); +} +@media (max-width: 767px) { + .elementor-lightbox .elementor-swiper-button:focus { + outline: none; + } + .elementor-lightbox .elementor-swiper-button-prev, .elementor-lightbox .elementor-swiper-button-next { + width: 20%; + } + .elementor-lightbox .elementor-swiper-button-prev i, .elementor-lightbox .elementor-swiper-button-next i { + padding: 10px; + background-color: rgba(0, 0, 0, 0.5); + } + .elementor-lightbox .elementor-swiper-button-prev { + left: 0; + justify-content: flex-start; + } + .elementor-lightbox .elementor-swiper-button-next { + right: 0; + justify-content: flex-end; + } +} + +.elementor-slideshow__counter { + color: currentColor; + font-size: 0.75em; + width: -moz-max-content; + width: max-content; +} +.elementor-slideshow__header, .elementor-slideshow__footer { + position: absolute; + left: 0; + width: 100%; + padding: 15px 20px; + transition: 0.3s; +} +.elementor-slideshow__footer { + color: var(--lightbox-text-color); +} +.elementor-slideshow__header { + color: var(--lightbox-ui-color); + display: flex; + flex-direction: row-reverse; + font-size: var(--lightbox-header-icons-size); + padding-right: 1em; + padding-left: 2.6em; + top: 0; + align-items: center; + z-index: 10; +} +.elementor-slideshow__header > i, +.elementor-slideshow__header > svg { + cursor: pointer; + padding: 0.25em; + margin: 0 0.35em; +} +.elementor-slideshow__header > i { + font-size: inherit; +} +.elementor-slideshow__header > i:hover { + color: var(--lightbox-ui-color-hover); +} +.elementor-slideshow__header > svg { + box-sizing: content-box; + fill: var(--lightbox-ui-color); + height: 1em; + width: 1em; +} +.elementor-slideshow__header > svg:hover { + fill: var(--lightbox-ui-color-hover); +} +.elementor-slideshow__header .elementor-slideshow__counter { + margin-left: auto; +} +.elementor-slideshow__header .elementor-icon-share { + z-index: 5; +} +.elementor-slideshow__share-menu { + background-color: rgba(0, 0, 0, 0); + width: 0; + height: 0; + position: absolute; + overflow: hidden; + transition: background-color 400ms; +} +.elementor-slideshow__share-menu .elementor-slideshow__share-links a { + color: #0C0D0E; +} +.elementor-slideshow__share-links { + display: block; + position: absolute; + min-width: 200px; + left: 2.8em; + top: 3em; + background-color: #fff; + border-radius: 3px; + padding: 14px 20px; + transform: scale(0); + opacity: 0; + transform-origin: 90% 10%; + transition: all 250ms 100ms; + box-shadow: 0 4px 15px rgba(0, 0, 0, 0.3); +} +.elementor-slideshow__share-links a { + text-align: right; + color: #3f444b; + font-size: 12px; + line-height: 2.5; + display: block; + opacity: 0; + transition: opacity 500ms 100ms; +} +.elementor-slideshow__share-links a:hover { + color: #000; +} +.elementor-slideshow__share-links a i, +.elementor-slideshow__share-links a svg { + margin-left: 0.75em; +} +.elementor-slideshow__share-links a i { + font-size: 1.25em; +} +.elementor-slideshow__share-links a svg { + height: 1.25em; + width: 1.25em; +} +.elementor-slideshow__share-links:before { + content: ""; + display: block; + position: absolute; + top: 1px; + left: 0.5em; + border: 0.45em solid; + border-color: transparent transparent #fff transparent; + transform: translateY(-100%) scaleX(0.7); +} +.elementor-slideshow__footer { + bottom: 0; + z-index: 5; + position: fixed; +} +.elementor-slideshow__title, .elementor-slideshow__description { + margin: 0; +} +.elementor-slideshow__title { + font-size: 16px; + font-weight: bold; +} +.elementor-slideshow__description { + font-size: 14px; +} +.elementor-slideshow--ui-hidden .elementor-slideshow__header, .elementor-slideshow--ui-hidden .elementor-slideshow__footer { + opacity: 0; + pointer-events: none; +} +.elementor-slideshow--ui-hidden .elementor-swiper-button-prev, .elementor-slideshow--ui-hidden .elementor-swiper-button-next { + opacity: 0; +} +.elementor-slideshow--fullscreen-mode .elementor-video-container { + width: 100%; +} +.elementor-slideshow--zoom-mode .elementor-slideshow__header, .elementor-slideshow--zoom-mode .elementor-slideshow__footer { + background-color: rgba(0, 0, 0, 0.5); +} +.elementor-slideshow--zoom-mode .elementor-swiper-button-prev, .elementor-slideshow--zoom-mode .elementor-swiper-button-next { + opacity: 0; + pointer-events: none; +} +.elementor-slideshow--share-mode .elementor-slideshow__share-menu { + top: 0; + left: 0; + width: 100vw; + height: 100vh; + opacity: 1; + cursor: default; + background-color: rgba(0, 0, 0, 0.5); +} +.elementor-slideshow--share-mode .elementor-slideshow__share-links { + transform: scale(1); +} +.elementor-slideshow--share-mode .elementor-slideshow__share-links, .elementor-slideshow--share-mode .elementor-slideshow__share-links a { + opacity: 1; +} +.elementor-slideshow--share-mode .elementor-slideshow__share-links .eicon-twitter { + color: #1DA1F2; +} +.elementor-slideshow--share-mode .elementor-slideshow__share-links .eicon-facebook { + color: #3b5998; +} +.elementor-slideshow--share-mode .elementor-slideshow__share-links .eicon-pinterest { + color: #bd081c; +} +.elementor-slideshow--share-mode .elementor-slideshow__share-links .eicon-download-bold { + color: #9DA5AE; +} +.elementor-slideshow--share-mode .elementor-slideshow__share-links .e-eicon-twitter { + fill: #1DA1F2; +} +.elementor-slideshow--share-mode .elementor-slideshow__share-links .e-eicon-facebook { + fill: #3b5998; +} +.elementor-slideshow--share-mode .elementor-slideshow__share-links .e-eicon-pinterest { + fill: #bd081c; +} +.elementor-slideshow--share-mode .elementor-slideshow__share-links .e-eicon-download-bold { + fill: #9DA5AE; +} +.elementor-slideshow--share-mode .eicon-share-arrow { + z-index: 2; +} + +.animated { + animation-duration: 1.25s; +} +.animated.animated-slow { + animation-duration: 2s; +} +.animated.animated-fast { + animation-duration: 0.75s; +} +.animated.infinite { + animation-iteration-count: infinite; +} +.animated.reverse { + animation-direction: reverse; + animation-fill-mode: forwards; +} + +@media (prefers-reduced-motion: reduce) { + .animated { + animation: none; + } +} +.elementor-shape { + overflow: hidden; + position: absolute; + left: 0; + width: 100%; + line-height: 0; + direction: ltr; + /* + * @TODO: The `z-index: -1` rules below are temporary fixes for Chrome 85 issue. + * It will be removed in a future version of Chrome. + */ +} +.elementor-shape-top { + top: -1px; +} +.elementor-shape-top:not([data-negative=false]) svg { + z-index: -1; +} +.elementor-shape-bottom { + bottom: -1px; +} +.elementor-shape-bottom:not([data-negative=true]) svg { + z-index: -1; +} +.elementor-shape[data-negative=false].elementor-shape-bottom { + transform: rotate(180deg); +} +.elementor-shape[data-negative=true].elementor-shape-top { + transform: rotate(180deg); +} +.elementor-shape svg { + display: block; + width: calc(100% + 1.3px); + position: relative; + left: 50%; + transform: translateX(-50%); +} +.elementor-shape .elementor-shape-fill { + fill: #fff; + transform-origin: center; + transform: rotateY(0deg); +} + +#wp-admin-bar-elementor_edit_page > .ab-item::before { + content: "\e813"; + font-family: eicons; + top: 3px; + font-size: 18px; +} +#wp-admin-bar-elementor_edit_page .ab-submenu .ab-item { + display: flex; + width: 200px; +} +#wp-admin-bar-elementor_edit_page .elementor-edit-link-title { + white-space: nowrap; + text-overflow: ellipsis; + overflow: hidden; + width: 100%; +} +#wp-admin-bar-elementor_edit_page .elementor-edit-link-type { + background: #3f444b; + font-size: 11px; + line-height: 9px; + margin-top: 6px; + padding: 4px 8px; + border-radius: 3px; +} + +#wp-admin-bar-elementor_inspector > .ab-item::before { + content: "\f348"; + top: 2px; +} + +#wpadminbar * { + font-style: normal; +} + +.page-template-elementor_canvas.elementor-page:before { + display: none; +} + +.elementor-post__thumbnail__link { + transition: none; +} + +#left-area ul.elementor-icon-list-items, +.elementor .elementor-element ul.elementor-icon-list-items, +.elementor-edit-area .elementor-element ul.elementor-icon-list-items { + padding: 0; +} + +.e--ua-appleWebkit.rtl { + --flex-right: flex-start; +} +.e--ua-appleWebkit .elementor-widget-social-icons.e-grid-align-right, +.e--ua-appleWebkit .elementor-share-buttons--align-right { + --justify-content: var(--flex-right, flex-end); +} +.e--ua-appleWebkit .elementor-widget-social-icons.e-grid-align-center, +.e--ua-appleWebkit .elementor-share-buttons--align-center { + --justify-content: center; +} +.e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-right .elementor-grid, .e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-center .elementor-grid, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-right .elementor-grid, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-center .elementor-grid, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-justify .elementor-grid { + width: auto; + display: flex; + flex-wrap: wrap; + justify-content: var(--justify-content, space-between); + margin-left: calc(-0.5 * var(--grid-column-gap)); + margin-right: calc(-0.5 * var(--grid-column-gap)); +} +.e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-right .elementor-grid-item, .e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-center .elementor-grid-item, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-right .elementor-grid-item, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-center .elementor-grid-item, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-justify .elementor-grid-item { + margin-left: calc(0.5 * var(--grid-column-gap)); + margin-right: calc(0.5 * var(--grid-column-gap)); +} +.e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-left .elementor-grid, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-left .elementor-grid { + display: inline-block; +} +.e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-left .elementor-grid, .e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-left .elementor-grid-item, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-left .elementor-grid, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-left .elementor-grid-item { + margin-left: 0; + margin-right: 0; +} +@media (max-width: 1024px) { + .e--ua-appleWebkit .elementor-widget-social-icons.e-grid-align-tablet-right, + .e--ua-appleWebkit .elementor-share-buttons-tablet--align-right { + --justify-content: var(--flex-right, flex-end); + } + .e--ua-appleWebkit .elementor-widget-social-icons.e-grid-align-tablet-center, + .e--ua-appleWebkit .elementor-share-buttons-tablet--align-center { + --justify-content: center; + } + .e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-tablet-right .elementor-grid, .e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-tablet-center .elementor-grid, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-tablet-right .elementor-grid, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-tablet-center .elementor-grid, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-tablet-justify .elementor-grid { + width: auto; + display: flex; + flex-wrap: wrap; + justify-content: var(--justify-content, space-between); + margin-left: calc(-0.5 * var(--grid-column-gap)); + margin-right: calc(-0.5 * var(--grid-column-gap)); + } + .e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-tablet-right .elementor-grid-item, .e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-tablet-center .elementor-grid-item, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-tablet-right .elementor-grid-item, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-tablet-center .elementor-grid-item, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-tablet-justify .elementor-grid-item { + margin-left: calc(0.5 * var(--grid-column-gap)); + margin-right: calc(0.5 * var(--grid-column-gap)); + } + .e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-tablet-left .elementor-grid, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons-tablet--align-left .elementor-grid { + display: inline-block; + } + .e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-tablet-left .elementor-grid, .e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-tablet-left .elementor-grid-item, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons-tablet--align-left .elementor-grid, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons-tablet--align-left .elementor-grid-item { + margin-left: 0; + margin-right: 0; + } +} +@media (max-width: 767px) { + .e--ua-appleWebkit .elementor-widget-social-icons.e-grid-align-mobile-right, + .e--ua-appleWebkit .elementor-share-buttons-mobile--align-right { + --justify-content: var(--flex-right, flex-end); + } + .e--ua-appleWebkit .elementor-widget-social-icons.e-grid-align-mobile-center, + .e--ua-appleWebkit .elementor-share-buttons-mobile--align-center { + --justify-content: center; + } + .e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-mobile-right .elementor-grid, .e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-mobile-center .elementor-grid, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-mobile-right .elementor-grid, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-mobile-center .elementor-grid, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-mobile-justify .elementor-grid { + width: auto; + display: flex; + flex-wrap: wrap; + justify-content: var(--justify-content, space-between); + margin-left: calc(-0.5 * var(--grid-column-gap)); + margin-right: calc(-0.5 * var(--grid-column-gap)); + } + .e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-mobile-right .elementor-grid-item, .e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-mobile-center .elementor-grid-item, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-mobile-right .elementor-grid-item, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-mobile-center .elementor-grid-item, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-mobile-justify .elementor-grid-item { + margin-left: calc(0.5 * var(--grid-column-gap)); + margin-right: calc(0.5 * var(--grid-column-gap)); + } + .e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-mobile-left .elementor-grid, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons-mobile--align-left .elementor-grid { + display: inline-block; + } + .e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-mobile-left .elementor-grid, .e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-mobile-left .elementor-grid-item, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons-mobile--align-left .elementor-grid, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons-mobile--align-left .elementor-grid-item { + margin-left: 0; + margin-right: 0; + } +} + +@media (max-width: 767px) { + .elementor .elementor-hidden-mobile { + display: none; + } + .elementor .elementor-hidden-phone { + display: none; + } +} +@media (min-width: -1) and (max-width: -1) { + .elementor .elementor-hidden-mobile_extra { + display: none; + } +} +@media (min-width: 768px) and (max-width: 1024px) { + .elementor .elementor-hidden-tablet { + display: none; + } +} +@media (min-width: -1) and (max-width: -1) { + .elementor .elementor-hidden-tablet_extra { + display: none; + } +} +@media (min-width: -1) and (max-width: -1) { + .elementor .elementor-hidden-laptop { + display: none; + } +} +@media (min-width: 1025px) and (max-width: 99999px) { + .elementor .elementor-hidden-desktop { + display: none; + } +} +@media (min-width: -1) { + .elementor .elementor-hidden-widescreen { + display: none; + } +} + +.elementor-widget-text-path { + font-size: 20px; + text-align: var(--alignment, right); +} +.elementor-widget-text-path svg { + width: var(--width); + max-width: 100%; + height: auto; + overflow: visible; + word-spacing: var(--word-spacing); + transform: rotate(var(--rotate, 0)) scaleX(var(--scale-x, 1)) scaleY(var(--scale-y, 1)); +} +.elementor-widget-text-path svg path { + vector-effect: non-scaling-stroke; /* Prevent stroke size scaling when resizing the SVG. */ + fill: var(--path-fill, transparent); + stroke: var(--stroke-color, transparent); + stroke-width: var(--stroke-width, 1px); + transition: var(--stroke-transition) stroke, var(--stroke-transition) fill; +} +.elementor-widget-text-path svg:hover path { + --path-fill: var( --path-fill-hover ); + --stroke-color: var( --stroke-color-hover ); + --stroke-width: var( --stroke-width-hover ); +} +.elementor-widget-text-path svg text { + --fill: var( --text-color ); + fill: var(--fill); + direction: var(--direction, rtl); + transition: var(--transition) stroke, var(--transition) stroke-width, var(--transition) fill; +} +.elementor-widget-text-path svg text:hover { + --color: var( --text-color-hover, var( --text-color ) ); + --fill: var( --color ); + color: var(--color); +} + +.elementor-widget-n-tabs { + --n-tabs-color-accent-fallback: #61CE70; + --n-tabs-color-secondary-fallback: #54595F; + --n-tabs-default-padding-block: 15px; + --n-tabs-default-padding-inline: 35px; + --n-tabs-background-color: transparent; + --n-tabs-display: flex; + --n-tabs-direction: column; + --n-tabs-gap: 10px; + --n-tabs-heading-display: flex; + --n-tabs-heading-direction: row; + --n-tabs-heading-grow: initial; + --n-tabs-heading-justify-content: center; + --n-tabs-heading-width: initial; + --n-tabs-heading-overflow-x: initial; + --n-tabs-heading-wrap: nowrap; + --n-tabs-border-width: 1px; + --n-tabs-border-color: #D5D8DC; + --n-tabs-content-display: flex; + --n-tabs-title-color: var(--e-global-color-secondary, var(--n-tabs-color-secondary-fallback)); + --n-tabs-title-color-hover: #ffffff; + --n-tabs-title-color-active: #ffffff; + --n-tabs-title-background-color: #F1F2F3; + --n-tabs-title-background-color-hover: var(--e-global-color-accent, var(--n-tabs-color-accent-fallback)); + --n-tabs-title-background-color-active: var(--e-global-color-accent, var(--n-tabs-color-accent-fallback)); + --n-tabs-title-width: initial; + --n-tabs-title-height: initial; + --n-tabs-title-font-size: 1rem; + --n-tabs-title-white-space: initial; + --n-tabs-title-justify-content-toggle: initial; + --n-tabs-title-align-items-toggle: center; + --n-tabs-title-justify-content: center; + --n-tabs-title-align-items: center; + --n-tabs-title-text-align: center; + --n-tabs-title-direction: row; + --n-tabs-title-gap: 10px; + --n-tabs-title-flex-grow: 0; + --n-tabs-title-flex-basis: content; + --n-tabs-title-flex-shrink: initial; + --n-tabs-title-order: initial; + --n-tabs-title-padding-block-start: var(--n-tabs-default-padding-block); + --n-tabs-title-padding-inline-end: var(--n-tabs-default-padding-inline); + --n-tabs-title-padding-block-end: var(--n-tabs-default-padding-block); + --n-tabs-title-padding-inline-start: var(--n-tabs-default-padding-inline); + --n-tabs-title-border-radius: initial; + --n-tabs-title-transition: 0.3s; + --n-tabs-icon-color: var(--e-global-color-secondary, var(--n-tabs-color-secondary-fallback)); + --n-tabs-icon-color-hover: var(--n-tabs-title-color-hover); + --n-tabs-icon-color-active: #ffffff; + --n-tabs-icon-gap: 5px; + width: 100%; + max-width: 100%; /* Fix issue with new created n-tabs inside n-tabs with overflow */ +} +.elementor-widget-n-tabs .e-n-tabs { + display: var(--n-tabs-display); + flex-direction: var(--n-tabs-direction); + gap: var(--n-tabs-gap); + text-align: start; + min-width: 0; +} +.elementor-widget-n-tabs .e-n-tabs-heading { + display: var(--n-tabs-heading-display); + flex-basis: var(--n-tabs-heading-width); + flex-direction: var(--n-tabs-heading-direction); + flex-shrink: 0; + justify-content: var(--n-tabs-heading-justify-content); + gap: var(--n-tabs-title-gap); + overflow-x: var(--n-tabs-heading-overflow-x); + flex-wrap: var(--n-tabs-heading-wrap); + -ms-overflow-style: none; /* IE and Edge */ + scrollbar-width: none; /* Firefox */ +} +.elementor-widget-n-tabs .e-n-tabs-heading::-webkit-scrollbar { + display: none; /* Hide scrollbar for Chrome, Safari and Opera */ +} +.elementor-widget-n-tabs .e-n-tabs-heading.e-scroll { + cursor: grabbing; + cursor: -webkit-grabbing; +} +.elementor-widget-n-tabs .e-n-tabs-heading.e-scroll-active { + position: relative; +} +.elementor-widget-n-tabs .e-n-tabs-heading.e-scroll-active::before { + content: ""; + position: absolute; + inset-block: 0; + inset-inline: -1000vw; + z-index: 2; +} +.elementor-widget-n-tabs .e-n-tabs-content { + display: var(--n-tabs-content-display); + flex-grow: 1; + min-width: 0; +} +.elementor-widget-n-tabs .e-n-tabs-content > .e-con:not(.e-active) { + display: none; +} +.elementor-widget-n-tabs .e-n-tabs:not(.e-activated) > .e-n-tabs-content > .e-con:nth-child(1) { + display: flex; +} +.elementor-widget-n-tabs .e-n-tab-title { + all: unset; + -webkit-user-select: none; + -moz-user-select: none; + user-select: none; + display: flex; + align-items: var(--n-tabs-title-align-items-toggle, var(--n-tabs-title-align-items)); + flex-direction: var(--n-tabs-title-direction); + justify-content: var(--n-tabs-title-justify-content-toggle, var(--n-tabs-title-justify-content)); + gap: var(--n-tabs-icon-gap); + border-width: var(--n-tabs-border-width); + position: relative; + cursor: pointer; + outline: none; + flex-grow: var(--n-tabs-title-flex-grow); + flex-basis: var(--n-tabs-title-flex-basis); + flex-shrink: var(--n-tabs-title-flex-shrink); + padding-block-start: var(--n-tabs-title-padding-block-start); + padding-inline-end: var(--n-tabs-title-padding-inline-end); + padding-block-end: var(--n-tabs-title-padding-block-end); + padding-inline-start: var(--n-tabs-title-padding-inline-start); + border-radius: var(--n-tabs-title-border-radius); + height: var(--n-tabs-title-height); + width: var(--n-tabs-title-width); + white-space: var(--n-tabs-title-white-space); + transition: background var(--n-tabs-title-transition), color var(--n-tabs-title-transition), border var(--n-tabs-title-transition), box-shadow var(--n-tabs-title-transition), text-shadow var(--n-tabs-title-transition), stroke var(--n-tabs-title-transition), stroke-width var(--n-tabs-title-transition), -webkit-text-stroke-width var(--n-tabs-title-transition), -webkit-text-stroke-color var(--n-tabs-title-transition), transform var(--n-tabs-title-transition); +} +.elementor-widget-n-tabs .e-n-tab-title:focus-visible { + outline: 5px auto -webkit-focus-ring-color; +} +.elementor-widget-n-tabs .e-n-tab-title span svg, .elementor-widget-n-tabs .e-n-tab-title span i { + transition: color var(--n-tabs-title-transition), fill var(--n-tabs-title-transition); +} +.elementor-widget-n-tabs .e-n-tab-title-text { + display: flex; + align-items: center; + font-size: var(--n-tabs-title-font-size); + text-align: var(--n-tabs-title-text-align); +} +.elementor-widget-n-tabs .e-n-tab-title .e-n-tab-icon { + display: flex; + align-items: center; + flex-direction: column; + flex-shrink: 0; + order: var(--n-tabs-icon-order); + overflow: hidden; +} +.elementor-widget-n-tabs .e-n-tab-title .e-n-tab-icon i { + font-size: var(--n-tabs-icon-size, var(--n-tabs-title-font-size)); +} +.elementor-widget-n-tabs .e-n-tab-title .e-n-tab-icon svg { + width: var(--n-tabs-icon-size, var(--n-tabs-title-font-size)); + height: var(--n-tabs-icon-size, var(--n-tabs-title-font-size)); +} +.elementor-widget-n-tabs .e-n-tab-title .e-n-tab-icon:empty { + display: none; +} +.elementor-widget-n-tabs .e-n-tab-title[aria-selected=false] { + background-color: var(--n-tabs-title-background-color); +} +.elementor-widget-n-tabs .e-n-tab-title[aria-selected=false], .elementor-widget-n-tabs .e-n-tab-title[aria-selected=false] a { + color: var(--n-tabs-title-color); +} +.elementor-widget-n-tabs .e-n-tab-title[aria-selected=false] .e-n-tab-icon i { + color: var(--n-tabs-icon-color); +} +.elementor-widget-n-tabs .e-n-tab-title[aria-selected=false] .e-n-tab-icon svg { + fill: var(--n-tabs-icon-color); +} +.elementor-widget-n-tabs .e-n-tab-title[aria-selected=false] .e-n-tab-icon i:last-child, +.elementor-widget-n-tabs .e-n-tab-title[aria-selected=false] .e-n-tab-icon svg:last-child { + transform: translate(0, -100vh); + height: 0; + opacity: 0; +} +.elementor-widget-n-tabs .e-n-tab-title[aria-selected=true], .elementor-widget-n-tabs .e-n-tab-title[aria-selected=true] a { + color: var(--n-tabs-title-color-active); +} +.elementor-widget-n-tabs .e-n-tab-title[aria-selected=true] .e-n-tab-icon i { + color: var(--n-tabs-icon-color-active); +} +.elementor-widget-n-tabs .e-n-tab-title[aria-selected=true] .e-n-tab-icon svg { + fill: var(--n-tabs-icon-color-active); +} +.elementor-widget-n-tabs .e-n-tab-title[aria-selected=true] .e-n-tab-icon i:first-child, +.elementor-widget-n-tabs .e-n-tab-title[aria-selected=true] .e-n-tab-icon svg:first-child { + transform: translate(0, -100vh); + height: 0; + opacity: 0; +} +.elementor-widget-n-tabs .e-n-tab-title[aria-selected=true][class*=elementor-animation-]:focus, .elementor-widget-n-tabs .e-n-tab-title[aria-selected=true][class*=elementor-animation-]:active, .elementor-widget-n-tabs .e-n-tab-title[aria-selected=true][class*=elementor-animation-]:hover { + transform: initial; + animation: initial; +} +.elementor-widget-n-tabs [data-touch-mode=false] .e-n-tab-title[aria-selected=false]:hover, .elementor-widget-n-tabs [data-touch-mode=false] .e-n-tab-title[aria-selected=false]:hover a { + color: var(--n-tabs-title-color-hover); +} +.elementor-widget-n-tabs [data-touch-mode=false] .e-n-tab-title[aria-selected=false]:hover .e-n-tab-icon i { + color: var(--n-tabs-icon-color-hover); +} +.elementor-widget-n-tabs [data-touch-mode=false] .e-n-tab-title[aria-selected=false]:hover .e-n-tab-icon svg { + fill: var(--n-tabs-icon-color-hover); +} +.elementor-widget-n-tabs [data-touch-mode=true] .e-n-tab-title[aria-selected=false]:hover, .elementor-widget-n-tabs [data-touch-mode=true] .e-n-tab-title[aria-selected=false]:hover a { + color: var(--n-tabs-title-color-active); +} +.elementor-widget-n-tabs [data-touch-mode=true] .e-n-tab-title[aria-selected=false]:hover .e-n-tab-icon i { + color: var(--n-tabs-icon-color-active); +} +.elementor-widget-n-tabs [data-touch-mode=true] .e-n-tab-title[aria-selected=false]:hover .e-n-tab-icon svg { + fill: var(--n-tabs-icon-color-active); +} +.elementor-widget-n-tabs [data-touch-mode=true] .e-n-tab-title[aria-selected=false]:hover .e-n-tab-icon i:first-child, +.elementor-widget-n-tabs [data-touch-mode=true] .e-n-tab-title[aria-selected=false]:hover .e-n-tab-icon svg:first-child { + transform: translate(0, -100vh); + height: 0; + opacity: 0; +} +.elementor-widget-n-tabs [data-touch-mode=true] .e-n-tab-title[aria-selected=false]:hover[class*=elementor-animation-]:focus, .elementor-widget-n-tabs [data-touch-mode=true] .e-n-tab-title[aria-selected=false]:hover[class*=elementor-animation-]:active, .elementor-widget-n-tabs [data-touch-mode=true] .e-n-tab-title[aria-selected=false]:hover[class*=elementor-animation-]:hover { + transform: initial; + animation: initial; +} +.elementor-widget-n-tabs [data-touch-mode=true] .e-n-tab-title[aria-selected=false]:hover .e-n-tab-icon i:last-child, +.elementor-widget-n-tabs [data-touch-mode=true] .e-n-tab-title[aria-selected=false]:hover .e-n-tab-icon svg:last-child { + transform: initial; + height: initial; + opacity: initial; +} + +.elementor .elementor-element.elementor-widget-n-tabs > .elementor-widget-container > .e-n-tabs[data-touch-mode=false] > .e-n-tabs-heading .e-n-tab-title[aria-selected=false]:hover { + background-color: var(--n-tabs-title-background-color-hover); + background-image: initial; +} + +.elementor .elementor-element.elementor-widget-n-tabs > .elementor-widget-container > .e-n-tabs > .e-n-tabs-heading .e-n-tab-title[aria-selected=true], +.elementor .elementor-element.elementor-widget-n-tabs > .elementor-widget-container > .e-n-tabs[data-touch-mode=true] > .e-n-tabs-heading .e-n-tab-title[aria-selected=false]:hover { + background-color: var(--n-tabs-title-background-color-active); + background-image: initial; +} + +@media (max-width: 767px) { + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-mobile { + --n-tabs-direction: column; + --n-tabs-heading-display: contents; + --n-tabs-content-display: contents; + } + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-mobile .e-n-tabs { + gap: 0; + } + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-mobile .e-n-tabs-content > .e-con { + order: var(--n-tabs-title-order); + } + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-mobile .e-n-tab-title { + order: var(--n-tabs-title-order); + width: initial; + } + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-mobile .e-n-tab-title:not(:first-child) { + margin-block-start: var(--n-tabs-title-gap); + } + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-mobile .e-n-tab-title[aria-selected=true] { + margin-block-end: var(--n-tabs-gap); + } +} +@media (max-width: -1) { + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-mobile_extra { + --n-tabs-direction: column; + --n-tabs-heading-display: contents; + --n-tabs-content-display: contents; + } + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-mobile_extra .e-n-tabs { + gap: 0; + } + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-mobile_extra .e-n-tabs-content > .e-con { + order: var(--n-tabs-title-order); + } + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-mobile_extra .e-n-tab-title { + order: var(--n-tabs-title-order); + width: initial; + } + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-mobile_extra .e-n-tab-title:not(:first-child) { + margin-block-start: var(--n-tabs-title-gap); + } + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-mobile_extra .e-n-tab-title[aria-selected=true] { + margin-block-end: var(--n-tabs-gap); + } +} +@media (max-width: 1024px) { + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-tablet { + --n-tabs-direction: column; + --n-tabs-heading-display: contents; + --n-tabs-content-display: contents; + } + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-tablet .e-n-tabs { + gap: 0; + } + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-tablet .e-n-tabs-content > .e-con { + order: var(--n-tabs-title-order); + } + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-tablet .e-n-tab-title { + order: var(--n-tabs-title-order); + width: initial; + } + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-tablet .e-n-tab-title:not(:first-child) { + margin-block-start: var(--n-tabs-title-gap); + } + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-tablet .e-n-tab-title[aria-selected=true] { + margin-block-end: var(--n-tabs-gap); + } +} +@media (max-width: -1) { + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-tablet_extra { + --n-tabs-direction: column; + --n-tabs-heading-display: contents; + --n-tabs-content-display: contents; + } + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-tablet_extra .e-n-tabs { + gap: 0; + } + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-tablet_extra .e-n-tabs-content > .e-con { + order: var(--n-tabs-title-order); + } + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-tablet_extra .e-n-tab-title { + order: var(--n-tabs-title-order); + width: initial; + } + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-tablet_extra .e-n-tab-title:not(:first-child) { + margin-block-start: var(--n-tabs-title-gap); + } + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-tablet_extra .e-n-tab-title[aria-selected=true] { + margin-block-end: var(--n-tabs-gap); + } +} +@media (max-width: -1) { + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-laptop { + --n-tabs-direction: column; + --n-tabs-heading-display: contents; + --n-tabs-content-display: contents; + } + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-laptop .e-n-tabs { + gap: 0; + } + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-laptop .e-n-tabs-content > .e-con { + order: var(--n-tabs-title-order); + } + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-laptop .e-n-tab-title { + order: var(--n-tabs-title-order); + width: initial; + } + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-laptop .e-n-tab-title:not(:first-child) { + margin-block-start: var(--n-tabs-title-gap); + } + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-laptop .e-n-tab-title[aria-selected=true] { + margin-block-end: var(--n-tabs-gap); + } +} +.elementor-widget-n-accordion { + --n-accordion-title-font-size: 20px; + --n-accordion-title-flex-grow: initial; + --n-accordion-title-justify-content: initial; + --n-accordion-title-icon-order: -1; + --n-accordion-border-width: 1px; + --n-accordion-border-color: #D5D8DC; + --n-accordion-border-style: solid; + --n-accordion-item-title-flex-grow: initial; + --n-accordion-item-title-space-between: 0px; + --n-accordion-item-title-distance-from-content: 0px; + --n-accordion-padding: 10px; + --n-accordion-border-radius: 0px; + --n-accordion-icon-size: 15px; + --n-accordion-title-normal-color: #1f2124; + --n-accordion-title-hover-color: #1f2124; + --n-accordion-title-active-color: #1f2124; + --n-accordion-icon-normal-color: var(--n-accordion-title-normal-color); + --n-accordion-icon-hover-color: var(--n-accordion-title-hover-color); + --n-accordion-icon-active-color: var(--n-accordion-title-active-color); + --n-accordion-icon-gap: 0 10px; + width: 100%; +} +.elementor-widget-n-accordion .e-n-accordion details > summary::-webkit-details-marker { + display: none; +} +.elementor-widget-n-accordion .e-n-accordion-item { + display: flex; + flex-direction: column; + position: relative; +} +.elementor-widget-n-accordion .e-n-accordion-item:not(:last-child) { + margin-block-end: var(--n-accordion-item-title-space-between); +} +:where(.elementor-widget-n-accordion .e-n-accordion-item > .e-con) { + border: var(--n-accordion-border-width) var(--n-accordion-border-style) var(--n-accordion-border-color); +} +.elementor-widget-n-accordion .e-n-accordion-item-title { + display: flex; + flex-direction: row; + list-style: none; + padding: var(--n-accordion-padding); + border-width: var(--n-accordion-border-width); + border-color: var(--n-accordion-border-color); + border-style: var(--n-accordion-border-style); + justify-content: var(--n-accordion-title-justify-content); + border-radius: var(--n-accordion-border-radius); + flex-grow: var(--n-menu-title-flex-grow); + gap: var(--n-accordion-icon-gap); + color: var(--n-accordion-title-normal-color); + align-items: center; + cursor: pointer; +} +.elementor-widget-n-accordion .e-n-accordion-item-title-header { + display: flex; +} +.elementor-widget-n-accordion .e-n-accordion-item-title-header h1, .elementor-widget-n-accordion .e-n-accordion-item-title-header h2, .elementor-widget-n-accordion .e-n-accordion-item-title-header h3, .elementor-widget-n-accordion .e-n-accordion-item-title-header h4, .elementor-widget-n-accordion .e-n-accordion-item-title-header h5, .elementor-widget-n-accordion .e-n-accordion-item-title-header h6, .elementor-widget-n-accordion .e-n-accordion-item-title-header p { + margin-block-start: 0; + margin-block-end: 0; +} +.elementor-widget-n-accordion .e-n-accordion-item-title-text { + font-size: var(--n-accordion-title-font-size); + align-items: center; +} +.elementor-widget-n-accordion .e-n-accordion-item-title-icon { + display: flex; + flex-direction: row; + align-items: center; + order: var(--n-accordion-title-icon-order); + position: relative; + width: -moz-fit-content; + width: fit-content; +} +.elementor-widget-n-accordion .e-n-accordion-item-title-icon span { + height: var(--n-accordion-icon-size); + width: auto; +} +.elementor-widget-n-accordion .e-n-accordion-item-title-icon span > i { + color: var(--n-accordion-icon-normal-color); + font-size: var(--n-accordion-icon-size); +} +.elementor-widget-n-accordion .e-n-accordion-item-title-icon span > svg { + fill: var(--n-accordion-icon-normal-color); + height: var(--n-accordion-icon-size); +} +.elementor-widget-n-accordion .e-n-accordion-item-title > span { + cursor: pointer; +} +.elementor-widget-n-accordion .e-n-accordion-item[open] .e-n-accordion-item-title { + margin-block-end: var(--n-accordion-item-title-distance-from-content); + color: var(--n-accordion-title-active-color); +} +.elementor-widget-n-accordion .e-n-accordion-item[open] .e-n-accordion-item-title-icon .e-opened { + display: flex; +} +.elementor-widget-n-accordion .e-n-accordion-item[open] .e-n-accordion-item-title-icon .e-closed { + display: none; +} +.elementor-widget-n-accordion .e-n-accordion-item[open] .e-n-accordion-item-title-icon span > i { + color: var(--n-accordion-icon-active-color); +} +.elementor-widget-n-accordion .e-n-accordion-item[open] .e-n-accordion-item-title-icon span > svg { + fill: var(--n-accordion-icon-active-color); +} +.elementor-widget-n-accordion .e-n-accordion-item:not([open]):hover .e-n-accordion-item-title { + color: var(--n-accordion-title-hover-color); +} +.elementor-widget-n-accordion .e-n-accordion-item:not([open]):hover .e-n-accordion-item-title-icon span > i { + color: var(--n-accordion-icon-hover-color); +} +.elementor-widget-n-accordion .e-n-accordion-item:not([open]):hover .e-n-accordion-item-title-icon span > svg { + fill: var(--n-accordion-icon-hover-color); +} +.elementor-widget-n-accordion .e-n-accordion-item .e-n-accordion-item-title-icon .e-opened { + display: none; +} +.elementor-widget-n-accordion .e-n-accordion-item .e-n-accordion-item-title-icon .e-closed { + display: flex; +} +.elementor-widget-n-accordion .e-n-accordion-item .e-n-accordion-item-title-icon span > svg { + fill: var(--n-accordion-icon-normal-color); +} +.elementor-widget-n-accordion .e-n-accordion-item .e-n-accordion-item-title-icon span > i { + color: var(--n-accordion-icon-normal-color); +} +.elementor-widget-n-accordion .e-n-accordion-item > span { + cursor: pointer; +} +/*# sourceMappingURL=frontend-lite-rtl.css.map */ \ No newline at end of file diff --git a/wp-content/plugins/elementor/assets/css/frontend-lite-rtl.min.css b/wp-content/plugins/elementor/assets/css/frontend-lite-rtl.min.css new file mode 100644 index 0000000..8c5bb90 --- /dev/null +++ b/wp-content/plugins/elementor/assets/css/frontend-lite-rtl.min.css @@ -0,0 +1,2 @@ +/*! elementor - v3.20.0 - 26-03-2024 */ +.dialog-widget-content{background-color:var(--e-a-bg-default);position:absolute;border-radius:3px;box-shadow:2px 8px 23px 3px rgba(0,0,0,.2);overflow:hidden}.dialog-message{line-height:1.5;box-sizing:border-box}.dialog-close-button{cursor:pointer;position:absolute;margin-block-start:15px;left:15px;color:var(--e-a-color-txt);font-size:15px;line-height:1;transition:var(--e-a-transition-hover)}.dialog-close-button:hover{color:var(--e-a-color-txt-hover)}.dialog-prevent-scroll{overflow:hidden;max-height:100vh}.dialog-type-lightbox{position:fixed;height:100%;width:100%;bottom:0;left:0;background-color:rgba(0,0,0,.8);z-index:9999;-webkit-user-select:none;-moz-user-select:none;user-select:none}.elementor-editor-active .elementor-popup-modal{background-color:initial}.dialog-type-alert .dialog-widget-content,.dialog-type-confirm .dialog-widget-content{margin:auto;width:400px;padding:20px}.dialog-type-alert .dialog-header,.dialog-type-confirm .dialog-header{font-size:15px;font-weight:500}.dialog-type-alert .dialog-header:after,.dialog-type-confirm .dialog-header:after{content:"";display:block;border-block-end:var(--e-a-border);padding-block-end:10px;margin-block-end:10px;margin-inline-start:-20px;margin-inline-end:-20px}.dialog-type-alert .dialog-message,.dialog-type-confirm .dialog-message{min-height:50px}.dialog-type-alert .dialog-buttons-wrapper,.dialog-type-confirm .dialog-buttons-wrapper{padding-block-start:10px;display:flex;justify-content:flex-end;gap:15px}.dialog-type-alert .dialog-buttons-wrapper .dialog-button,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button{font-size:12px;font-weight:500;line-height:1.2;padding:8px 16px;outline:none;border:none;border-radius:var(--e-a-border-radius);background-color:var(--e-a-btn-bg);color:var(--e-a-btn-color-invert);transition:var(--e-a-transition-hover)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:hover{border:none}.dialog-type-alert .dialog-buttons-wrapper .dialog-button:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:hover{background-color:var(--e-a-btn-bg-hover);color:var(--e-a-btn-color-invert)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button:active,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:active{background-color:var(--e-a-btn-bg-active)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button:not([disabled]),.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:not([disabled]){cursor:pointer}.dialog-type-alert .dialog-buttons-wrapper .dialog-button:disabled,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:disabled{background-color:var(--e-a-btn-bg-disabled);color:var(--e-a-btn-color-disabled)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button:not(.elementor-button-state) .elementor-state-icon,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:not(.elementor-button-state) .elementor-state-icon{display:none}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt{background:transparent;color:var(--e-a-color-txt)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel:hover,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt:hover{background:var(--e-a-bg-hover);color:var(--e-a-color-txt-hover)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel:disabled,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt:disabled,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel:disabled,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt:disabled{background:transparent;color:var(--e-a-color-txt-disabled)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt-border,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt-border{border:1px solid var(--e-a-color-txt-muted)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-success,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-success,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-success,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-success{background-color:var(--e-a-btn-bg-success)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-success:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-success:hover,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-success:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-success:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-success:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-success:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-success:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-success:hover{background-color:var(--e-a-btn-bg-success-hover)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-take_over,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-take_over,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary{background-color:var(--e-a-btn-bg-primary);color:var(--e-a-btn-color)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok:hover,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-take_over:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-take_over:hover,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-take_over:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-take_over:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary:hover{background-color:var(--e-a-btn-bg-primary-hover);color:var(--e-a-btn-color)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-ok,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-take_over,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary.dialog-cancel,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary.e-btn-txt,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-ok,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-take_over,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary.dialog-cancel,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary.e-btn-txt{background:transparent;color:var(--e-a-color-primary-bold)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over:hover,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel:hover,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-ok:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-ok:hover,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-take_over:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-take_over:hover,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary.dialog-cancel:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary.dialog-cancel:hover,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary.e-btn-txt:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary.e-btn-txt:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-ok:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-ok:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-take_over:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-take_over:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary.dialog-cancel:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary.dialog-cancel:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary.e-btn-txt:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary.e-btn-txt:hover{background:var(--e-a-bg-primary)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-accent,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.go-pro,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-accent,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.go-pro{background-color:var(--e-a-btn-bg-accent)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-accent:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-accent:hover,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.go-pro:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.go-pro:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-accent:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-accent:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.go-pro:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.go-pro:hover{background-color:var(--e-a-btn-bg-accent-hover)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-accent:active,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.go-pro:active,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-accent:active,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.go-pro:active{background-color:var(--e-a-btn-bg-accent-active)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-info,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-info,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-info,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-info{background-color:var(--e-a-btn-bg-info)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-info:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-info:hover,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-info:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-info:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-info:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-info:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-info:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-info:hover{background-color:var(--e-a-btn-bg-info-hover)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-warning,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-warning,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-warning,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-warning{background-color:var(--e-a-btn-bg-warning)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-warning:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-warning:hover,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-warning:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-warning:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-warning:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-warning:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-warning:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-warning:hover{background-color:var(--e-a-btn-bg-warning-hover)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-danger,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-danger,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-danger,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-danger{background-color:var(--e-a-btn-bg-danger)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-danger:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-danger:hover,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-danger:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-danger:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-danger:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-danger:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-danger:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-danger:hover{background-color:var(--e-a-btn-bg-danger-hover)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button i,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button i{margin-inline-end:5px}.dialog-type-alert .dialog-buttons-wrapper .dialog-button:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button:hover,.dialog-type-alert .dialog-buttons-wrapper .dialog-button:visited,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:visited{color:initial}.flatpickr-calendar{width:280px}.flatpickr-calendar .flatpickr-current-month span.cur-month{font-weight:300}.flatpickr-calendar .dayContainer{width:280px;min-width:280px;max-width:280px}.flatpickr-calendar .flatpickr-days{width:280px}.flatpickr-calendar .flatpickr-day{max-width:37px;height:37px;line-height:37px}.elementor-hidden{display:none}.elementor-screen-only,.screen-reader-text,.screen-reader-text span,.ui-helper-hidden-accessible{position:absolute;top:-10000em;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.elementor-clearfix:after{content:"";display:block;clear:both;width:0;height:0}.e-logo-wrapper{background:var(--e-a-bg-logo);display:inline-block;padding:.75em;border-radius:50%;line-height:1}.e-logo-wrapper i{color:var(--e-a-color-logo);font-size:1em}.elementor *,.elementor :after,.elementor :before{box-sizing:border-box}.elementor a{box-shadow:none;text-decoration:none}.elementor hr{margin:0;background-color:transparent}.elementor img{height:auto;max-width:100%;border:none;border-radius:0;box-shadow:none}.elementor .elementor-widget:not(.elementor-widget-text-editor):not(.elementor-widget-theme-post-content) figure{margin:0}.elementor embed,.elementor iframe,.elementor object,.elementor video{max-width:100%;width:100%;margin:0;line-height:1;border:none}.elementor .elementor-background,.elementor .elementor-background-holder,.elementor .elementor-background-video-container{height:100%;width:100%;top:0;left:0;position:absolute;overflow:hidden;z-index:0;direction:ltr}.elementor .elementor-background-video-container{transition:opacity 1s;pointer-events:none}.elementor .elementor-background-video-container.elementor-loading{opacity:0}.elementor .elementor-background-video-embed{max-width:none}.elementor .elementor-background-video,.elementor .elementor-background-video-embed,.elementor .elementor-background-video-hosted{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.elementor .elementor-background-video{max-width:none}.elementor .elementor-html5-video{-o-object-fit:cover;object-fit:cover}.elementor .elementor-background-overlay{height:100%;width:100%;top:0;left:0;position:absolute}.elementor .elementor-background-slideshow{position:absolute;width:100%;height:100%;z-index:0;top:0;right:0}.elementor .elementor-background-slideshow__slide__image{width:100%;height:100%;background-position:50%;background-size:cover}.e-con-inner>.elementor-element.elementor-absolute,.e-con>.elementor-element.elementor-absolute,.elementor-widget-wrap>.elementor-element.elementor-absolute{position:absolute}.e-con-inner>.elementor-element.elementor-fixed,.e-con>.elementor-element.elementor-fixed,.elementor-widget-wrap>.elementor-element.elementor-fixed{position:fixed}.elementor-widget-wrap .elementor-element.elementor-widget__width-auto,.elementor-widget-wrap .elementor-element.elementor-widget__width-initial{max-width:100%}@media (max-width:1024px){.elementor-widget-wrap .elementor-element.elementor-widget-tablet__width-auto,.elementor-widget-wrap .elementor-element.elementor-widget-tablet__width-initial{max-width:100%}}@media (max-width:767px){.elementor-widget-wrap .elementor-element.elementor-widget-mobile__width-auto,.elementor-widget-wrap .elementor-element.elementor-widget-mobile__width-initial{max-width:100%}}.elementor-element{--flex-direction:initial;--flex-wrap:initial;--justify-content:initial;--align-items:initial;--align-content:initial;--gap:initial;--flex-basis:initial;--flex-grow:initial;--flex-shrink:initial;--order:initial;--align-self:initial;flex-basis:var(--flex-basis);flex-grow:var(--flex-grow);flex-shrink:var(--flex-shrink);order:var(--order);align-self:var(--align-self)}.elementor-element.elementor-absolute,.elementor-element.elementor-fixed{z-index:1}.elementor-element:where(.e-con-full,.elementor-widget){flex-direction:var(--flex-direction);flex-wrap:var(--flex-wrap);justify-content:var(--justify-content);align-items:var(--align-items);align-content:var(--align-content);gap:var(--gap)}.elementor-invisible{visibility:hidden}.elementor-align-center{text-align:center}.elementor-align-center .elementor-button{width:auto}.elementor-align-right{text-align:right}.elementor-align-right .elementor-button{width:auto}.elementor-align-left{text-align:left}.elementor-align-left .elementor-button{width:auto}.elementor-align-justify .elementor-button{width:100%}.elementor-custom-embed-play{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.elementor-custom-embed-play i{font-size:100px;color:#fff;text-shadow:1px 0 6px rgba(0,0,0,.3)}.elementor-custom-embed-play svg{height:100px;width:100px;fill:#fff;filter:drop-shadow(1px 0 6px rgba(0,0,0,.3))}.elementor-custom-embed-play i,.elementor-custom-embed-play svg{opacity:.8;transition:all .5s}.elementor-custom-embed-play.elementor-playing i{font-family:eicons}.elementor-custom-embed-play.elementor-playing i:before{content:"\e8fb"}.elementor-custom-embed-play.elementor-playing i,.elementor-custom-embed-play.elementor-playing svg{animation:eicon-spin 2s linear infinite}.elementor-tag{display:inline-flex}.elementor-ken-burns{transition-property:transform;transition-duration:10s;transition-timing-function:linear}.elementor-ken-burns--out{transform:scale(1.3)}.elementor-ken-burns--active{transition-duration:20s}.elementor-ken-burns--active.elementor-ken-burns--out{transform:scale(1)}.elementor-ken-burns--active.elementor-ken-burns--in{transform:scale(1.3)}@media (min-width:-1){.elementor-widescreen-align-center{text-align:center}.elementor-widescreen-align-center .elementor-button{width:auto}.elementor-widescreen-align-right{text-align:right}.elementor-widescreen-align-right .elementor-button{width:auto}.elementor-widescreen-align-left{text-align:left}.elementor-widescreen-align-left .elementor-button{width:auto}.elementor-widescreen-align-justify .elementor-button{width:100%}}@media (max-width:-1){.elementor-laptop-align-center{text-align:center}.elementor-laptop-align-center .elementor-button{width:auto}.elementor-laptop-align-right{text-align:right}.elementor-laptop-align-right .elementor-button{width:auto}.elementor-laptop-align-left{text-align:left}.elementor-laptop-align-left .elementor-button{width:auto}.elementor-laptop-align-justify .elementor-button{width:100%}}@media (max-width:-1){.elementor-tablet_extra-align-center{text-align:center}.elementor-tablet_extra-align-center .elementor-button{width:auto}.elementor-tablet_extra-align-right{text-align:right}.elementor-tablet_extra-align-right .elementor-button{width:auto}.elementor-tablet_extra-align-left{text-align:left}.elementor-tablet_extra-align-left .elementor-button{width:auto}.elementor-tablet_extra-align-justify .elementor-button{width:100%}}@media (max-width:1024px){.elementor-tablet-align-center{text-align:center}.elementor-tablet-align-center .elementor-button{width:auto}.elementor-tablet-align-right{text-align:right}.elementor-tablet-align-right .elementor-button{width:auto}.elementor-tablet-align-left{text-align:left}.elementor-tablet-align-left .elementor-button{width:auto}.elementor-tablet-align-justify .elementor-button{width:100%}}@media (max-width:-1){.elementor-mobile_extra-align-center{text-align:center}.elementor-mobile_extra-align-center .elementor-button{width:auto}.elementor-mobile_extra-align-right{text-align:right}.elementor-mobile_extra-align-right .elementor-button{width:auto}.elementor-mobile_extra-align-left{text-align:left}.elementor-mobile_extra-align-left .elementor-button{width:auto}.elementor-mobile_extra-align-justify .elementor-button{width:100%}}@media (max-width:767px){.elementor-mobile-align-center{text-align:center}.elementor-mobile-align-center .elementor-button{width:auto}.elementor-mobile-align-right{text-align:right}.elementor-mobile-align-right .elementor-button{width:auto}.elementor-mobile-align-left{text-align:left}.elementor-mobile-align-left .elementor-button{width:auto}.elementor-mobile-align-justify .elementor-button{width:100%}}:root{--page-title-display:block}.elementor-page-title,h1.entry-title{display:var(--page-title-display)}@keyframes eicon-spin{0%{transform:rotate(0deg)}to{transform:rotate(359deg)}}.eicon-animation-spin{animation:eicon-spin 2s linear infinite}.elementor-section{position:relative}.elementor-section .elementor-container{display:flex;margin-right:auto;margin-left:auto;position:relative}@media (max-width:1024px){.elementor-section .elementor-container{flex-wrap:wrap}}.elementor-section.elementor-section-boxed>.elementor-container{max-width:1140px}.elementor-section.elementor-section-stretched{position:relative;width:100%}.elementor-section.elementor-section-items-top>.elementor-container{align-items:flex-start}.elementor-section.elementor-section-items-middle>.elementor-container{align-items:center}.elementor-section.elementor-section-items-bottom>.elementor-container{align-items:flex-end}@media (min-width:768px){.elementor-section.elementor-section-height-full{height:100vh}.elementor-section.elementor-section-height-full>.elementor-container{height:100%}}.elementor-bc-flex-widget .elementor-section-content-top>.elementor-container>.elementor-column>.elementor-widget-wrap{align-items:flex-start}.elementor-bc-flex-widget .elementor-section-content-middle>.elementor-container>.elementor-column>.elementor-widget-wrap{align-items:center}.elementor-bc-flex-widget .elementor-section-content-bottom>.elementor-container>.elementor-column>.elementor-widget-wrap{align-items:flex-end}.elementor-row{width:100%;display:flex}@media (max-width:1024px){.elementor-row{flex-wrap:wrap}}.elementor-widget-wrap{position:relative;width:100%;flex-wrap:wrap;align-content:flex-start}.elementor:not(.elementor-bc-flex-widget) .elementor-widget-wrap{display:flex}.elementor-widget-wrap>.elementor-element{width:100%}.elementor-widget-wrap.e-swiper-container{width:calc(100% - (var(--e-column-margin-left, 0px) + var(--e-column-margin-right, 0px)))}.elementor-widget{position:relative}.elementor-widget:not(:last-child){margin-bottom:20px}.elementor-widget:not(:last-child).elementor-absolute,.elementor-widget:not(:last-child).elementor-widget__width-auto,.elementor-widget:not(:last-child).elementor-widget__width-initial{margin-bottom:0}.elementor-column{position:relative;min-height:1px;display:flex}.elementor-column-wrap{width:100%;position:relative;display:flex}.elementor-column-gap-narrow>.elementor-column>.elementor-element-populated{padding:5px}.elementor-column-gap-default>.elementor-column>.elementor-element-populated{padding:10px}.elementor-column-gap-extended>.elementor-column>.elementor-element-populated{padding:15px}.elementor-column-gap-wide>.elementor-column>.elementor-element-populated{padding:20px}.elementor-column-gap-wider>.elementor-column>.elementor-element-populated{padding:30px}.elementor-inner-section .elementor-column-gap-no .elementor-element-populated{padding:0}@media (min-width:768px){.elementor-column.elementor-col-10,.elementor-column[data-col="10"]{width:10%}.elementor-column.elementor-col-11,.elementor-column[data-col="11"]{width:11.111%}.elementor-column.elementor-col-12,.elementor-column[data-col="12"]{width:12.5%}.elementor-column.elementor-col-14,.elementor-column[data-col="14"]{width:14.285%}.elementor-column.elementor-col-16,.elementor-column[data-col="16"]{width:16.666%}.elementor-column.elementor-col-20,.elementor-column[data-col="20"]{width:20%}.elementor-column.elementor-col-25,.elementor-column[data-col="25"]{width:25%}.elementor-column.elementor-col-30,.elementor-column[data-col="30"]{width:30%}.elementor-column.elementor-col-33,.elementor-column[data-col="33"]{width:33.333%}.elementor-column.elementor-col-40,.elementor-column[data-col="40"]{width:40%}.elementor-column.elementor-col-50,.elementor-column[data-col="50"]{width:50%}.elementor-column.elementor-col-60,.elementor-column[data-col="60"]{width:60%}.elementor-column.elementor-col-66,.elementor-column[data-col="66"]{width:66.666%}.elementor-column.elementor-col-70,.elementor-column[data-col="70"]{width:70%}.elementor-column.elementor-col-75,.elementor-column[data-col="75"]{width:75%}.elementor-column.elementor-col-80,.elementor-column[data-col="80"]{width:80%}.elementor-column.elementor-col-83,.elementor-column[data-col="83"]{width:83.333%}.elementor-column.elementor-col-90,.elementor-column[data-col="90"]{width:90%}.elementor-column.elementor-col-100,.elementor-column[data-col="100"]{width:100%}}@media (max-width:479px){.elementor-column.elementor-xs-10{width:10%}.elementor-column.elementor-xs-11{width:11.111%}.elementor-column.elementor-xs-12{width:12.5%}.elementor-column.elementor-xs-14{width:14.285%}.elementor-column.elementor-xs-16{width:16.666%}.elementor-column.elementor-xs-20{width:20%}.elementor-column.elementor-xs-25{width:25%}.elementor-column.elementor-xs-30{width:30%}.elementor-column.elementor-xs-33{width:33.333%}.elementor-column.elementor-xs-40{width:40%}.elementor-column.elementor-xs-50{width:50%}.elementor-column.elementor-xs-60{width:60%}.elementor-column.elementor-xs-66{width:66.666%}.elementor-column.elementor-xs-70{width:70%}.elementor-column.elementor-xs-75{width:75%}.elementor-column.elementor-xs-80{width:80%}.elementor-column.elementor-xs-83{width:83.333%}.elementor-column.elementor-xs-90{width:90%}.elementor-column.elementor-xs-100{width:100%}}@media (max-width:767px){.elementor-column.elementor-sm-10{width:10%}.elementor-column.elementor-sm-11{width:11.111%}.elementor-column.elementor-sm-12{width:12.5%}.elementor-column.elementor-sm-14{width:14.285%}.elementor-column.elementor-sm-16{width:16.666%}.elementor-column.elementor-sm-20{width:20%}.elementor-column.elementor-sm-25{width:25%}.elementor-column.elementor-sm-30{width:30%}.elementor-column.elementor-sm-33{width:33.333%}.elementor-column.elementor-sm-40{width:40%}.elementor-column.elementor-sm-50{width:50%}.elementor-column.elementor-sm-60{width:60%}.elementor-column.elementor-sm-66{width:66.666%}.elementor-column.elementor-sm-70{width:70%}.elementor-column.elementor-sm-75{width:75%}.elementor-column.elementor-sm-80{width:80%}.elementor-column.elementor-sm-83{width:83.333%}.elementor-column.elementor-sm-90{width:90%}.elementor-column.elementor-sm-100{width:100%}}@media (min-width:768px) and (max-width:1024px){.elementor-column.elementor-md-10{width:10%}.elementor-column.elementor-md-11{width:11.111%}.elementor-column.elementor-md-12{width:12.5%}.elementor-column.elementor-md-14{width:14.285%}.elementor-column.elementor-md-16{width:16.666%}.elementor-column.elementor-md-20{width:20%}.elementor-column.elementor-md-25{width:25%}.elementor-column.elementor-md-30{width:30%}.elementor-column.elementor-md-33{width:33.333%}.elementor-column.elementor-md-40{width:40%}.elementor-column.elementor-md-50{width:50%}.elementor-column.elementor-md-60{width:60%}.elementor-column.elementor-md-66{width:66.666%}.elementor-column.elementor-md-70{width:70%}.elementor-column.elementor-md-75{width:75%}.elementor-column.elementor-md-80{width:80%}.elementor-column.elementor-md-83{width:83.333%}.elementor-column.elementor-md-90{width:90%}.elementor-column.elementor-md-100{width:100%}}@media (min-width:-1){.elementor-reverse-widescreen>.elementor-container>:first-child{order:10}.elementor-reverse-widescreen>.elementor-container>:nth-child(2){order:9}.elementor-reverse-widescreen>.elementor-container>:nth-child(3){order:8}.elementor-reverse-widescreen>.elementor-container>:nth-child(4){order:7}.elementor-reverse-widescreen>.elementor-container>:nth-child(5){order:6}.elementor-reverse-widescreen>.elementor-container>:nth-child(6){order:5}.elementor-reverse-widescreen>.elementor-container>:nth-child(7){order:4}.elementor-reverse-widescreen>.elementor-container>:nth-child(8){order:3}.elementor-reverse-widescreen>.elementor-container>:nth-child(9){order:2}.elementor-reverse-widescreen>.elementor-container>:nth-child(10){order:1}}@media (min-width:1025px) and (max-width:-1){.elementor-reverse-laptop>.elementor-container>:first-child{order:10}.elementor-reverse-laptop>.elementor-container>:nth-child(2){order:9}.elementor-reverse-laptop>.elementor-container>:nth-child(3){order:8}.elementor-reverse-laptop>.elementor-container>:nth-child(4){order:7}.elementor-reverse-laptop>.elementor-container>:nth-child(5){order:6}.elementor-reverse-laptop>.elementor-container>:nth-child(6){order:5}.elementor-reverse-laptop>.elementor-container>:nth-child(7){order:4}.elementor-reverse-laptop>.elementor-container>:nth-child(8){order:3}.elementor-reverse-laptop>.elementor-container>:nth-child(9){order:2}.elementor-reverse-laptop>.elementor-container>:nth-child(10){order:1}}@media (min-width:-1) and (max-width:-1){.elementor-reverse-laptop>.elementor-container>:first-child{order:10}.elementor-reverse-laptop>.elementor-container>:nth-child(2){order:9}.elementor-reverse-laptop>.elementor-container>:nth-child(3){order:8}.elementor-reverse-laptop>.elementor-container>:nth-child(4){order:7}.elementor-reverse-laptop>.elementor-container>:nth-child(5){order:6}.elementor-reverse-laptop>.elementor-container>:nth-child(6){order:5}.elementor-reverse-laptop>.elementor-container>:nth-child(7){order:4}.elementor-reverse-laptop>.elementor-container>:nth-child(8){order:3}.elementor-reverse-laptop>.elementor-container>:nth-child(9){order:2}.elementor-reverse-laptop>.elementor-container>:nth-child(10){order:1}}@media (min-width:1025px) and (max-width:-1){.elementor-reverse-laptop>.elementor-container>:first-child,.elementor-reverse-laptop>.elementor-container>:nth-child(2),.elementor-reverse-laptop>.elementor-container>:nth-child(3),.elementor-reverse-laptop>.elementor-container>:nth-child(4),.elementor-reverse-laptop>.elementor-container>:nth-child(5),.elementor-reverse-laptop>.elementor-container>:nth-child(6),.elementor-reverse-laptop>.elementor-container>:nth-child(7),.elementor-reverse-laptop>.elementor-container>:nth-child(8),.elementor-reverse-laptop>.elementor-container>:nth-child(9),.elementor-reverse-laptop>.elementor-container>:nth-child(10){order:0}.elementor-reverse-tablet_extra>.elementor-container>:first-child{order:10}.elementor-reverse-tablet_extra>.elementor-container>:nth-child(2){order:9}.elementor-reverse-tablet_extra>.elementor-container>:nth-child(3){order:8}.elementor-reverse-tablet_extra>.elementor-container>:nth-child(4){order:7}.elementor-reverse-tablet_extra>.elementor-container>:nth-child(5){order:6}.elementor-reverse-tablet_extra>.elementor-container>:nth-child(6){order:5}.elementor-reverse-tablet_extra>.elementor-container>:nth-child(7){order:4}.elementor-reverse-tablet_extra>.elementor-container>:nth-child(8){order:3}.elementor-reverse-tablet_extra>.elementor-container>:nth-child(9){order:2}.elementor-reverse-tablet_extra>.elementor-container>:nth-child(10){order:1}}@media (min-width:768px) and (max-width:1024px){.elementor-reverse-tablet>.elementor-container>:first-child{order:10}.elementor-reverse-tablet>.elementor-container>:nth-child(2){order:9}.elementor-reverse-tablet>.elementor-container>:nth-child(3){order:8}.elementor-reverse-tablet>.elementor-container>:nth-child(4){order:7}.elementor-reverse-tablet>.elementor-container>:nth-child(5){order:6}.elementor-reverse-tablet>.elementor-container>:nth-child(6){order:5}.elementor-reverse-tablet>.elementor-container>:nth-child(7){order:4}.elementor-reverse-tablet>.elementor-container>:nth-child(8){order:3}.elementor-reverse-tablet>.elementor-container>:nth-child(9){order:2}.elementor-reverse-tablet>.elementor-container>:nth-child(10){order:1}}@media (min-width:-1) and (max-width:1024px){.elementor-reverse-tablet>.elementor-container>:first-child{order:10}.elementor-reverse-tablet>.elementor-container>:nth-child(2){order:9}.elementor-reverse-tablet>.elementor-container>:nth-child(3){order:8}.elementor-reverse-tablet>.elementor-container>:nth-child(4){order:7}.elementor-reverse-tablet>.elementor-container>:nth-child(5){order:6}.elementor-reverse-tablet>.elementor-container>:nth-child(6){order:5}.elementor-reverse-tablet>.elementor-container>:nth-child(7){order:4}.elementor-reverse-tablet>.elementor-container>:nth-child(8){order:3}.elementor-reverse-tablet>.elementor-container>:nth-child(9){order:2}.elementor-reverse-tablet>.elementor-container>:nth-child(10){order:1}}@media (min-width:768px) and (max-width:-1){.elementor-reverse-tablet>.elementor-container>:first-child,.elementor-reverse-tablet>.elementor-container>:nth-child(2),.elementor-reverse-tablet>.elementor-container>:nth-child(3),.elementor-reverse-tablet>.elementor-container>:nth-child(4),.elementor-reverse-tablet>.elementor-container>:nth-child(5),.elementor-reverse-tablet>.elementor-container>:nth-child(6),.elementor-reverse-tablet>.elementor-container>:nth-child(7),.elementor-reverse-tablet>.elementor-container>:nth-child(8),.elementor-reverse-tablet>.elementor-container>:nth-child(9),.elementor-reverse-tablet>.elementor-container>:nth-child(10){order:0}.elementor-reverse-mobile_extra>.elementor-container>:first-child{order:10}.elementor-reverse-mobile_extra>.elementor-container>:nth-child(2){order:9}.elementor-reverse-mobile_extra>.elementor-container>:nth-child(3){order:8}.elementor-reverse-mobile_extra>.elementor-container>:nth-child(4){order:7}.elementor-reverse-mobile_extra>.elementor-container>:nth-child(5){order:6}.elementor-reverse-mobile_extra>.elementor-container>:nth-child(6){order:5}.elementor-reverse-mobile_extra>.elementor-container>:nth-child(7){order:4}.elementor-reverse-mobile_extra>.elementor-container>:nth-child(8){order:3}.elementor-reverse-mobile_extra>.elementor-container>:nth-child(9){order:2}.elementor-reverse-mobile_extra>.elementor-container>:nth-child(10){order:1}}@media (max-width:767px){.elementor-reverse-mobile>.elementor-container>:first-child{order:10}.elementor-reverse-mobile>.elementor-container>:nth-child(2){order:9}.elementor-reverse-mobile>.elementor-container>:nth-child(3){order:8}.elementor-reverse-mobile>.elementor-container>:nth-child(4){order:7}.elementor-reverse-mobile>.elementor-container>:nth-child(5){order:6}.elementor-reverse-mobile>.elementor-container>:nth-child(6){order:5}.elementor-reverse-mobile>.elementor-container>:nth-child(7){order:4}.elementor-reverse-mobile>.elementor-container>:nth-child(8){order:3}.elementor-reverse-mobile>.elementor-container>:nth-child(9){order:2}.elementor-reverse-mobile>.elementor-container>:nth-child(10){order:1}.elementor-column{width:100%}}ul.elementor-icon-list-items.elementor-inline-items{display:flex;flex-wrap:wrap}ul.elementor-icon-list-items.elementor-inline-items .elementor-inline-item{word-break:break-word}.elementor-grid{display:grid;grid-column-gap:var(--grid-column-gap);grid-row-gap:var(--grid-row-gap)}.elementor-grid .elementor-grid-item{min-width:0}.elementor-grid-0 .elementor-grid{display:inline-block;width:100%;word-spacing:var(--grid-column-gap);margin-bottom:calc(-1 * var(--grid-row-gap))}.elementor-grid-0 .elementor-grid .elementor-grid-item{display:inline-block;margin-bottom:var(--grid-row-gap);word-break:break-word}.elementor-grid-1 .elementor-grid{grid-template-columns:repeat(1,1fr)}.elementor-grid-2 .elementor-grid{grid-template-columns:repeat(2,1fr)}.elementor-grid-3 .elementor-grid{grid-template-columns:repeat(3,1fr)}.elementor-grid-4 .elementor-grid{grid-template-columns:repeat(4,1fr)}.elementor-grid-5 .elementor-grid{grid-template-columns:repeat(5,1fr)}.elementor-grid-6 .elementor-grid{grid-template-columns:repeat(6,1fr)}.elementor-grid-7 .elementor-grid{grid-template-columns:repeat(7,1fr)}.elementor-grid-8 .elementor-grid{grid-template-columns:repeat(8,1fr)}.elementor-grid-9 .elementor-grid{grid-template-columns:repeat(9,1fr)}.elementor-grid-10 .elementor-grid{grid-template-columns:repeat(10,1fr)}.elementor-grid-11 .elementor-grid{grid-template-columns:repeat(11,1fr)}.elementor-grid-12 .elementor-grid{grid-template-columns:repeat(12,1fr)}@media (min-width:-1){.elementor-grid-widescreen-0 .elementor-grid{display:inline-block;width:100%;word-spacing:var(--grid-column-gap);margin-bottom:calc(-1 * var(--grid-row-gap))}.elementor-grid-widescreen-0 .elementor-grid .elementor-grid-item{display:inline-block;margin-bottom:var(--grid-row-gap);word-break:break-word}.elementor-grid-widescreen-1 .elementor-grid{grid-template-columns:repeat(1,1fr)}.elementor-grid-widescreen-2 .elementor-grid{grid-template-columns:repeat(2,1fr)}.elementor-grid-widescreen-3 .elementor-grid{grid-template-columns:repeat(3,1fr)}.elementor-grid-widescreen-4 .elementor-grid{grid-template-columns:repeat(4,1fr)}.elementor-grid-widescreen-5 .elementor-grid{grid-template-columns:repeat(5,1fr)}.elementor-grid-widescreen-6 .elementor-grid{grid-template-columns:repeat(6,1fr)}.elementor-grid-widescreen-7 .elementor-grid{grid-template-columns:repeat(7,1fr)}.elementor-grid-widescreen-8 .elementor-grid{grid-template-columns:repeat(8,1fr)}.elementor-grid-widescreen-9 .elementor-grid{grid-template-columns:repeat(9,1fr)}.elementor-grid-widescreen-10 .elementor-grid{grid-template-columns:repeat(10,1fr)}.elementor-grid-widescreen-11 .elementor-grid{grid-template-columns:repeat(11,1fr)}.elementor-grid-widescreen-12 .elementor-grid{grid-template-columns:repeat(12,1fr)}}@media (max-width:-1){.elementor-grid-laptop-0 .elementor-grid{display:inline-block;width:100%;word-spacing:var(--grid-column-gap);margin-bottom:calc(-1 * var(--grid-row-gap))}.elementor-grid-laptop-0 .elementor-grid .elementor-grid-item{display:inline-block;margin-bottom:var(--grid-row-gap);word-break:break-word}.elementor-grid-laptop-1 .elementor-grid{grid-template-columns:repeat(1,1fr)}.elementor-grid-laptop-2 .elementor-grid{grid-template-columns:repeat(2,1fr)}.elementor-grid-laptop-3 .elementor-grid{grid-template-columns:repeat(3,1fr)}.elementor-grid-laptop-4 .elementor-grid{grid-template-columns:repeat(4,1fr)}.elementor-grid-laptop-5 .elementor-grid{grid-template-columns:repeat(5,1fr)}.elementor-grid-laptop-6 .elementor-grid{grid-template-columns:repeat(6,1fr)}.elementor-grid-laptop-7 .elementor-grid{grid-template-columns:repeat(7,1fr)}.elementor-grid-laptop-8 .elementor-grid{grid-template-columns:repeat(8,1fr)}.elementor-grid-laptop-9 .elementor-grid{grid-template-columns:repeat(9,1fr)}.elementor-grid-laptop-10 .elementor-grid{grid-template-columns:repeat(10,1fr)}.elementor-grid-laptop-11 .elementor-grid{grid-template-columns:repeat(11,1fr)}.elementor-grid-laptop-12 .elementor-grid{grid-template-columns:repeat(12,1fr)}}@media (max-width:-1){.elementor-grid-tablet_extra-0 .elementor-grid{display:inline-block;width:100%;word-spacing:var(--grid-column-gap);margin-bottom:calc(-1 * var(--grid-row-gap))}.elementor-grid-tablet_extra-0 .elementor-grid .elementor-grid-item{display:inline-block;margin-bottom:var(--grid-row-gap);word-break:break-word}.elementor-grid-tablet_extra-1 .elementor-grid{grid-template-columns:repeat(1,1fr)}.elementor-grid-tablet_extra-2 .elementor-grid{grid-template-columns:repeat(2,1fr)}.elementor-grid-tablet_extra-3 .elementor-grid{grid-template-columns:repeat(3,1fr)}.elementor-grid-tablet_extra-4 .elementor-grid{grid-template-columns:repeat(4,1fr)}.elementor-grid-tablet_extra-5 .elementor-grid{grid-template-columns:repeat(5,1fr)}.elementor-grid-tablet_extra-6 .elementor-grid{grid-template-columns:repeat(6,1fr)}.elementor-grid-tablet_extra-7 .elementor-grid{grid-template-columns:repeat(7,1fr)}.elementor-grid-tablet_extra-8 .elementor-grid{grid-template-columns:repeat(8,1fr)}.elementor-grid-tablet_extra-9 .elementor-grid{grid-template-columns:repeat(9,1fr)}.elementor-grid-tablet_extra-10 .elementor-grid{grid-template-columns:repeat(10,1fr)}.elementor-grid-tablet_extra-11 .elementor-grid{grid-template-columns:repeat(11,1fr)}.elementor-grid-tablet_extra-12 .elementor-grid{grid-template-columns:repeat(12,1fr)}}@media (max-width:1024px){.elementor-grid-tablet-0 .elementor-grid{display:inline-block;width:100%;word-spacing:var(--grid-column-gap);margin-bottom:calc(-1 * var(--grid-row-gap))}.elementor-grid-tablet-0 .elementor-grid .elementor-grid-item{display:inline-block;margin-bottom:var(--grid-row-gap);word-break:break-word}.elementor-grid-tablet-1 .elementor-grid{grid-template-columns:repeat(1,1fr)}.elementor-grid-tablet-2 .elementor-grid{grid-template-columns:repeat(2,1fr)}.elementor-grid-tablet-3 .elementor-grid{grid-template-columns:repeat(3,1fr)}.elementor-grid-tablet-4 .elementor-grid{grid-template-columns:repeat(4,1fr)}.elementor-grid-tablet-5 .elementor-grid{grid-template-columns:repeat(5,1fr)}.elementor-grid-tablet-6 .elementor-grid{grid-template-columns:repeat(6,1fr)}.elementor-grid-tablet-7 .elementor-grid{grid-template-columns:repeat(7,1fr)}.elementor-grid-tablet-8 .elementor-grid{grid-template-columns:repeat(8,1fr)}.elementor-grid-tablet-9 .elementor-grid{grid-template-columns:repeat(9,1fr)}.elementor-grid-tablet-10 .elementor-grid{grid-template-columns:repeat(10,1fr)}.elementor-grid-tablet-11 .elementor-grid{grid-template-columns:repeat(11,1fr)}.elementor-grid-tablet-12 .elementor-grid{grid-template-columns:repeat(12,1fr)}}@media (max-width:-1){.elementor-grid-mobile_extra-0 .elementor-grid{display:inline-block;width:100%;word-spacing:var(--grid-column-gap);margin-bottom:calc(-1 * var(--grid-row-gap))}.elementor-grid-mobile_extra-0 .elementor-grid .elementor-grid-item{display:inline-block;margin-bottom:var(--grid-row-gap);word-break:break-word}.elementor-grid-mobile_extra-1 .elementor-grid{grid-template-columns:repeat(1,1fr)}.elementor-grid-mobile_extra-2 .elementor-grid{grid-template-columns:repeat(2,1fr)}.elementor-grid-mobile_extra-3 .elementor-grid{grid-template-columns:repeat(3,1fr)}.elementor-grid-mobile_extra-4 .elementor-grid{grid-template-columns:repeat(4,1fr)}.elementor-grid-mobile_extra-5 .elementor-grid{grid-template-columns:repeat(5,1fr)}.elementor-grid-mobile_extra-6 .elementor-grid{grid-template-columns:repeat(6,1fr)}.elementor-grid-mobile_extra-7 .elementor-grid{grid-template-columns:repeat(7,1fr)}.elementor-grid-mobile_extra-8 .elementor-grid{grid-template-columns:repeat(8,1fr)}.elementor-grid-mobile_extra-9 .elementor-grid{grid-template-columns:repeat(9,1fr)}.elementor-grid-mobile_extra-10 .elementor-grid{grid-template-columns:repeat(10,1fr)}.elementor-grid-mobile_extra-11 .elementor-grid{grid-template-columns:repeat(11,1fr)}.elementor-grid-mobile_extra-12 .elementor-grid{grid-template-columns:repeat(12,1fr)}}@media (max-width:767px){.elementor-grid-mobile-0 .elementor-grid{display:inline-block;width:100%;word-spacing:var(--grid-column-gap);margin-bottom:calc(-1 * var(--grid-row-gap))}.elementor-grid-mobile-0 .elementor-grid .elementor-grid-item{display:inline-block;margin-bottom:var(--grid-row-gap);word-break:break-word}.elementor-grid-mobile-1 .elementor-grid{grid-template-columns:repeat(1,1fr)}.elementor-grid-mobile-2 .elementor-grid{grid-template-columns:repeat(2,1fr)}.elementor-grid-mobile-3 .elementor-grid{grid-template-columns:repeat(3,1fr)}.elementor-grid-mobile-4 .elementor-grid{grid-template-columns:repeat(4,1fr)}.elementor-grid-mobile-5 .elementor-grid{grid-template-columns:repeat(5,1fr)}.elementor-grid-mobile-6 .elementor-grid{grid-template-columns:repeat(6,1fr)}.elementor-grid-mobile-7 .elementor-grid{grid-template-columns:repeat(7,1fr)}.elementor-grid-mobile-8 .elementor-grid{grid-template-columns:repeat(8,1fr)}.elementor-grid-mobile-9 .elementor-grid{grid-template-columns:repeat(9,1fr)}.elementor-grid-mobile-10 .elementor-grid{grid-template-columns:repeat(10,1fr)}.elementor-grid-mobile-11 .elementor-grid{grid-template-columns:repeat(11,1fr)}.elementor-grid-mobile-12 .elementor-grid{grid-template-columns:repeat(12,1fr)}}@media (min-width:1025px){#elementor-device-mode:after{content:"desktop"}}@media (min-width:-1){#elementor-device-mode:after{content:"widescreen"}}@media (max-width:-1){#elementor-device-mode:after{content:"laptop";content:"tablet_extra"}}@media (max-width:1024px){#elementor-device-mode:after{content:"tablet"}}@media (max-width:-1){#elementor-device-mode:after{content:"mobile_extra"}}@media (max-width:767px){#elementor-device-mode:after{content:"mobile"}}.e-con{--border-radius:0;--border-block-start-width:0px;--border-inline-end-width:0px;--border-block-end-width:0px;--border-inline-start-width:0px;--border-style:initial;--border-color:initial;--container-widget-width:100%;--container-widget-height:initial;--container-widget-flex-grow:0;--container-widget-align-self:initial;--content-width:min(100%,var(--container-max-width,1140px));--width:100%;--min-height:initial;--height:auto;--text-align:initial;--margin-block-start:0px;--margin-inline-end:0px;--margin-block-end:0px;--margin-inline-start:0px;--padding-block-start:var(--container-default-padding-block-start,10px);--padding-inline-end:var(--container-default-padding-inline-end,10px);--padding-block-end:var(--container-default-padding-block-end,10px);--padding-inline-start:var(--container-default-padding-inline-start,10px);--position:relative;--z-index:revert;--overflow:visible;--gap:var(--widgets-spacing,20px);--overlay-mix-blend-mode:initial;--overlay-opacity:1;--overlay-transition:0.3s;--e-con-grid-template-columns:repeat(3,1fr);--e-con-grid-template-rows:repeat(2,1fr);position:var(--position);width:var(--width);min-width:0;min-height:var(--min-height);height:var(--height);border-radius:var(--border-radius);margin-block-start:var(--bc-margin-block-start,var(--margin-block-start));margin-inline-end:var(--bc-margin-inline-end,var(--margin-inline-end));margin-block-end:var(--bc-margin-block-end,var(--margin-block-end));margin-inline-start:var(--bc-margin-inline-start,var(--margin-inline-start));padding-inline-start:var(--bc-padding-inline-start,var(--padding-inline-start));padding-inline-end:var(--bc-padding-inline-end,var(--padding-inline-end));z-index:var(--z-index);overflow:var(--overflow);transition:background var(--background-transition,.3s),border var(--border-transition,.3s),box-shadow var(--border-transition,.3s),transform var(--e-con-transform-transition-duration,.4s)}.e-con.e-flex{--flex-direction:column;--flex-basis:auto;--flex-grow:0;--flex-shrink:1;flex:var(--flex-grow) var(--flex-shrink) var(--flex-basis)}.e-con-full,.e-con>.e-con-inner{text-align:var(--text-align);padding-block-start:var(--bc-padding-block-start,var(--padding-block-start));padding-block-end:var(--bc-padding-block-end,var(--padding-block-end))}.e-con-full.e-flex,.e-con.e-flex>.e-con-inner{flex-direction:var(--flex-direction)}.e-con,.e-con>.e-con-inner{display:var(--display)}.e-con.e-grid{--grid-justify-content:start;--grid-align-content:start;--grid-auto-flow:row}.e-con.e-grid,.e-con.e-grid>.e-con-inner{grid-template-columns:var(--e-con-grid-template-columns);grid-template-rows:var(--e-con-grid-template-rows);justify-content:var(--grid-justify-content);align-content:var(--grid-align-content);grid-auto-flow:var(--grid-auto-flow);justify-items:var(--justify-items);align-items:var(--align-items)}.e-con-boxed.e-flex{flex-direction:column;flex-wrap:nowrap;justify-content:normal;align-items:normal;align-content:normal}.e-con-boxed.e-grid{justify-items:legacy;grid-template-columns:1fr;grid-template-rows:1fr}.e-con-boxed{text-align:initial;gap:initial}.e-con.e-flex>.e-con-inner{flex-wrap:var(--flex-wrap);justify-content:var(--justify-content);align-items:var(--align-items);align-content:var(--align-content);flex-basis:auto;flex-grow:1;flex-shrink:1;align-self:auto}.e-con.e-grid>.e-con-inner{justify-items:var(--justify-items);align-items:var(--align-items)}.e-con>.e-con-inner{gap:var(--gap);width:100%;max-width:var(--content-width);margin:0 auto;padding-inline-start:0;padding-inline-end:0;height:100%}:is(.elementor-section-wrap,[data-elementor-id])>.e-con{--margin-inline-end:auto;--margin-inline-start:auto;max-width:min(100%,var(--width))}.e-con .elementor-widget.elementor-widget{margin-block-end:0}.e-con:before,.e-con>.elementor-background-slideshow:before,.e-con>.elementor-motion-effects-container>.elementor-motion-effects-layer:before,:is(.e-con,.e-con>.e-con-inner)>.elementor-background-video-container:before{content:var(--background-overlay);display:block;position:absolute;mix-blend-mode:var(--overlay-mix-blend-mode);opacity:var(--overlay-opacity);transition:var(--overlay-transition,.3s);border-radius:var(--border-radius);border-style:var(--border-style);border-color:var(--border-color);border-block-start-width:var(--border-block-start-width);border-inline-end-width:var(--border-inline-end-width);border-block-end-width:var(--border-block-end-width);border-inline-start-width:var(--border-inline-start-width);top:calc(0px - var(--border-block-start-width));left:calc(0px - var(--border-inline-start-width));width:max(100% + var(--border-inline-end-width) + var(--border-inline-start-width),100%);height:max(100% + var(--border-block-start-width) + var(--border-block-end-width),100%)}.e-con:before{transition:background var(--overlay-transition,.3s),border-radius var(--border-transition,.3s),opacity var(--overlay-transition,.3s)}.e-con>.elementor-background-slideshow,:is(.e-con,.e-con>.e-con-inner)>.elementor-background-video-container{border-radius:var(--border-radius);border-style:var(--border-style);border-color:var(--border-color);border-block-start-width:var(--border-block-start-width);border-inline-end-width:var(--border-inline-end-width);border-block-end-width:var(--border-block-end-width);border-inline-start-width:var(--border-inline-start-width);top:calc(0px - var(--border-block-start-width));left:calc(0px - var(--border-inline-start-width));width:max(100% + var(--border-inline-end-width) + var(--border-inline-start-width),100%);height:max(100% + var(--border-block-start-width) + var(--border-block-end-width),100%)}@media (max-width:767px){:is(.e-con,.e-con>.e-con-inner)>.elementor-background-video-container.elementor-hidden-phone{display:none}}:is(.e-con,.e-con>.e-con-inner)>.elementor-background-video-container:before{z-index:1}:is(.e-con,.e-con>.e-con-inner)>.elementor-background-slideshow:before{z-index:2}.e-con .elementor-widget{min-width:0}.e-con .elementor-widget-empty,.e-con .elementor-widget-google_maps,.e-con .elementor-widget-video,.e-con .elementor-widget.e-widget-swiper{width:100%}.e-con>.e-con-inner>.elementor-widget>.elementor-widget-container,.e-con>.elementor-widget>.elementor-widget-container{height:100%}.e-con.e-con>.e-con-inner>.elementor-widget,.elementor.elementor .e-con>.elementor-widget{max-width:100%}@media (max-width:767px){.e-con.e-flex{--width:100%;--flex-wrap:wrap}}.e-con{--bc-margin-block-start:var(--margin-top);--bc-margin-block-end:var(--margin-bottom);--bc-margin-inline-start:var(--margin-left);--bc-margin-inline-end:var(--margin-right);--bc-padding-block-start:var(--padding-top);--bc-padding-block-end:var(--padding-bottom);--bc-padding-inline-start:var(--padding-left);--bc-padding-inline-end:var(--padding-right)}[dir=rtl] .e-con{--bc-margin-inline-start:var(--margin-right);--bc-margin-inline-end:var(--margin-left);--bc-padding-inline-start:var(--padding-right);--bc-padding-inline-end:var(--padding-left)}.elementor-form-fields-wrapper{display:flex;flex-wrap:wrap}.elementor-form-fields-wrapper.elementor-labels-above .elementor-field-group .elementor-field-subgroup,.elementor-form-fields-wrapper.elementor-labels-above .elementor-field-group>.elementor-select-wrapper,.elementor-form-fields-wrapper.elementor-labels-above .elementor-field-group>input,.elementor-form-fields-wrapper.elementor-labels-above .elementor-field-group>textarea{flex-basis:100%;max-width:100%}.elementor-form-fields-wrapper.elementor-labels-inline>.elementor-field-group .elementor-select-wrapper,.elementor-form-fields-wrapper.elementor-labels-inline>.elementor-field-group>input{flex-grow:1}.elementor-field-group{flex-wrap:wrap;align-items:center}.elementor-field-group.elementor-field-type-submit{align-items:flex-end}.elementor-field-group .elementor-field-textual{width:100%;max-width:100%;border:1px solid #69727d;background-color:transparent;color:#1f2124;vertical-align:middle;flex-grow:1}.elementor-field-group .elementor-field-textual:focus{box-shadow:inset 0 0 0 1px rgba(0,0,0,.1);outline:0}.elementor-field-group .elementor-field-textual::-moz-placeholder{color:inherit;font-family:inherit;opacity:.6}.elementor-field-group .elementor-field-textual::placeholder{color:inherit;font-family:inherit;opacity:.6}.elementor-field-group .elementor-select-wrapper{display:flex;position:relative;width:100%}.elementor-field-group .elementor-select-wrapper select{-webkit-appearance:none;-moz-appearance:none;appearance:none;color:inherit;font-size:inherit;font-family:inherit;font-weight:inherit;font-style:inherit;text-transform:inherit;letter-spacing:inherit;line-height:inherit;flex-basis:100%;padding-left:20px}.elementor-field-group .elementor-select-wrapper:before{content:"\e92a";font-family:eicons;font-size:15px;position:absolute;top:50%;transform:translateY(-50%);left:10px;pointer-events:none;text-shadow:0 0 3px rgba(0,0,0,.3)}.elementor-field-group.elementor-field-type-select-multiple .elementor-select-wrapper:before{content:""}.elementor-field-subgroup{display:flex;flex-wrap:wrap}.elementor-field-subgroup .elementor-field-option label{display:inline-block}.elementor-field-subgroup.elementor-subgroup-inline .elementor-field-option{padding-left:10px}.elementor-field-subgroup:not(.elementor-subgroup-inline) .elementor-field-option{flex-basis:100%}.elementor-field-type-acceptance .elementor-field-subgroup .elementor-field-option input,.elementor-field-type-acceptance .elementor-field-subgroup .elementor-field-option label,.elementor-field-type-checkbox .elementor-field-subgroup .elementor-field-option input,.elementor-field-type-checkbox .elementor-field-subgroup .elementor-field-option label,.elementor-field-type-radio .elementor-field-subgroup .elementor-field-option input,.elementor-field-type-radio .elementor-field-subgroup .elementor-field-option label{display:inline}.elementor-field-label{cursor:pointer}.elementor-mark-required .elementor-field-label:after{content:"*";color:red;padding-right:.2em}.elementor-field-textual{line-height:1.4;font-size:15px;min-height:40px;padding:5px 14px;border-radius:3px}.elementor-field-textual.elementor-size-xs{font-size:13px;min-height:33px;padding:4px 12px;border-radius:2px}.elementor-field-textual.elementor-size-md{font-size:16px;min-height:47px;padding:6px 16px;border-radius:4px}.elementor-field-textual.elementor-size-lg{font-size:18px;min-height:59px;padding:7px 20px;border-radius:5px}.elementor-field-textual.elementor-size-xl{font-size:20px;min-height:72px;padding:8px 24px;border-radius:6px}.elementor-button-align-stretch .elementor-field-type-submit:not(.e-form__buttons__wrapper) .elementor-button{flex-basis:100%}.elementor-button-align-stretch .e-form__buttons__wrapper{flex-basis:50%;flex-grow:1}.elementor-button-align-stretch .e-form__buttons__wrapper__button{flex-basis:100%}.elementor-button-align-center .e-form__buttons,.elementor-button-align-center .elementor-field-type-submit{justify-content:center}.elementor-button-align-start .e-form__buttons,.elementor-button-align-start .elementor-field-type-submit{justify-content:flex-end}.elementor-button-align-end .e-form__buttons,.elementor-button-align-end .elementor-field-type-submit{justify-content:flex-start}.elementor-button-align-center .elementor-field-type-submit:not(.e-form__buttons__wrapper) .elementor-button,.elementor-button-align-end .elementor-field-type-submit:not(.e-form__buttons__wrapper) .elementor-button,.elementor-button-align-start .elementor-field-type-submit:not(.e-form__buttons__wrapper) .elementor-button{flex-basis:auto}.elementor-button-align-center .e-form__buttons__wrapper,.elementor-button-align-end .e-form__buttons__wrapper,.elementor-button-align-start .e-form__buttons__wrapper{flex-grow:0}.elementor-button-align-center .e-form__buttons__wrapper,.elementor-button-align-center .e-form__buttons__wrapper__button,.elementor-button-align-end .e-form__buttons__wrapper,.elementor-button-align-end .e-form__buttons__wrapper__button,.elementor-button-align-start .e-form__buttons__wrapper,.elementor-button-align-start .e-form__buttons__wrapper__button{flex-basis:auto}@media screen and (max-width:1024px){.elementor-tablet-button-align-stretch .elementor-field-type-submit:not(.e-form__buttons__wrapper) .elementor-button{flex-basis:100%}.elementor-tablet-button-align-stretch .e-form__buttons__wrapper{flex-basis:50%;flex-grow:1}.elementor-tablet-button-align-stretch .e-form__buttons__wrapper__button{flex-basis:100%}.elementor-tablet-button-align-center .e-form__buttons,.elementor-tablet-button-align-center .elementor-field-type-submit{justify-content:center}.elementor-tablet-button-align-start .e-form__buttons,.elementor-tablet-button-align-start .elementor-field-type-submit{justify-content:flex-end}.elementor-tablet-button-align-end .e-form__buttons,.elementor-tablet-button-align-end .elementor-field-type-submit{justify-content:flex-start}.elementor-tablet-button-align-center .elementor-field-type-submit:not(.e-form__buttons__wrapper) .elementor-button,.elementor-tablet-button-align-end .elementor-field-type-submit:not(.e-form__buttons__wrapper) .elementor-button,.elementor-tablet-button-align-start .elementor-field-type-submit:not(.e-form__buttons__wrapper) .elementor-button{flex-basis:auto}.elementor-tablet-button-align-center .e-form__buttons__wrapper,.elementor-tablet-button-align-end .e-form__buttons__wrapper,.elementor-tablet-button-align-start .e-form__buttons__wrapper{flex-grow:0}.elementor-tablet-button-align-center .e-form__buttons__wrapper,.elementor-tablet-button-align-center .e-form__buttons__wrapper__button,.elementor-tablet-button-align-end .e-form__buttons__wrapper,.elementor-tablet-button-align-end .e-form__buttons__wrapper__button,.elementor-tablet-button-align-start .e-form__buttons__wrapper,.elementor-tablet-button-align-start .e-form__buttons__wrapper__button{flex-basis:auto}}@media screen and (max-width:767px){.elementor-mobile-button-align-stretch .elementor-field-type-submit:not(.e-form__buttons__wrapper) .elementor-button{flex-basis:100%}.elementor-mobile-button-align-stretch .e-form__buttons__wrapper{flex-basis:50%;flex-grow:1}.elementor-mobile-button-align-stretch .e-form__buttons__wrapper__button{flex-basis:100%}.elementor-mobile-button-align-center .e-form__buttons,.elementor-mobile-button-align-center .elementor-field-type-submit{justify-content:center}.elementor-mobile-button-align-start .e-form__buttons,.elementor-mobile-button-align-start .elementor-field-type-submit{justify-content:flex-end}.elementor-mobile-button-align-end .e-form__buttons,.elementor-mobile-button-align-end .elementor-field-type-submit{justify-content:flex-start}.elementor-mobile-button-align-center .elementor-field-type-submit:not(.e-form__buttons__wrapper) .elementor-button,.elementor-mobile-button-align-end .elementor-field-type-submit:not(.e-form__buttons__wrapper) .elementor-button,.elementor-mobile-button-align-start .elementor-field-type-submit:not(.e-form__buttons__wrapper) .elementor-button{flex-basis:auto}.elementor-mobile-button-align-center .e-form__buttons__wrapper,.elementor-mobile-button-align-end .e-form__buttons__wrapper,.elementor-mobile-button-align-start .e-form__buttons__wrapper{flex-grow:0}.elementor-mobile-button-align-center .e-form__buttons__wrapper,.elementor-mobile-button-align-center .e-form__buttons__wrapper__button,.elementor-mobile-button-align-end .e-form__buttons__wrapper,.elementor-mobile-button-align-end .e-form__buttons__wrapper__button,.elementor-mobile-button-align-start .e-form__buttons__wrapper,.elementor-mobile-button-align-start .e-form__buttons__wrapper__button{flex-basis:auto}}.elementor-error .elementor-field{border-color:#d9534f}.elementor-error .help-inline{color:#d9534f;font-size:.9em}.elementor-message{margin:10px 0;font-size:1em;line-height:1}.elementor-message:before{content:"\e90e";display:inline-block;font-family:eicons;font-weight:400;font-style:normal;vertical-align:middle;margin-left:5px}.elementor-message.elementor-message-danger{color:#d9534f}.elementor-message.elementor-message-danger:before{content:"\e87f"}.elementor-message.form-message-success{color:#5cb85c}.elementor-form .elementor-button{padding-top:0;padding-bottom:0;border:none}.elementor-form .elementor-button>span{display:flex;justify-content:center}.elementor-form .elementor-button.elementor-size-xs{min-height:33px}.elementor-form .elementor-button.elementor-size-sm{min-height:40px}.elementor-form .elementor-button.elementor-size-md{min-height:47px}.elementor-form .elementor-button.elementor-size-lg{min-height:59px}.elementor-form .elementor-button.elementor-size-xl{min-height:72px}.elementor-element .elementor-widget-container{transition:background .3s,border .3s,border-radius .3s,box-shadow .3s,transform var(--e-transform-transition-duration,.4s)}.elementor-button{display:inline-block;line-height:1;background-color:#69727d;font-size:15px;padding:12px 24px;border-radius:3px;color:#fff;fill:#fff;text-align:center;transition:all .3s}.elementor-button:focus,.elementor-button:hover,.elementor-button:visited{color:#fff}.elementor-button-content-wrapper{display:flex;justify-content:center}.elementor-button-icon{flex-grow:0;order:5}.elementor-button-icon svg{width:1em;height:auto}.elementor-button-icon .e-font-icon-svg{height:1em}.elementor-button-text{flex-grow:1;order:10;display:inline-block}.elementor-button.elementor-size-xs{font-size:13px;padding:10px 20px;border-radius:2px}.elementor-button.elementor-size-md{font-size:16px;padding:15px 30px;border-radius:4px}.elementor-button.elementor-size-lg{font-size:18px;padding:20px 40px;border-radius:5px}.elementor-button.elementor-size-xl{font-size:20px;padding:25px 50px;border-radius:6px}.elementor-button .elementor-align-icon-right{margin-left:5px;order:5}.elementor-button .elementor-align-icon-left{margin-right:5px;order:15}.elementor-button span{text-decoration:inherit}.elementor-element.elementor-button-info .elementor-button{background-color:#5bc0de}.elementor-element.elementor-button-success .elementor-button{background-color:#5cb85c}.elementor-element.elementor-button-warning .elementor-button{background-color:#f0ad4e}.elementor-element.elementor-button-danger .elementor-button{background-color:#d9534f}.elementor-widget-button .elementor-button .elementor-button-info{background-color:#5bc0de}.elementor-widget-button .elementor-button .elementor-button-success{background-color:#5cb85c}.elementor-widget-button .elementor-button .elementor-button-warning{background-color:#f0ad4e}.elementor-widget-button .elementor-button .elementor-button-danger{background-color:#d9534f}.elementor-tab-title a{color:inherit}.elementor-view-stacked .elementor-icon{padding:.5em;background-color:#69727d;color:#fff;fill:#fff}.elementor-view-framed .elementor-icon{padding:.5em;color:#69727d;border:3px solid #69727d;background-color:transparent}.elementor-icon{display:inline-block;line-height:1;transition:all .3s;color:#69727d;font-size:50px;text-align:center}.elementor-icon:hover{color:#69727d}.elementor-icon i,.elementor-icon svg{width:1em;height:1em;position:relative;display:block}.elementor-icon i:before,.elementor-icon svg:before{position:absolute;left:50%;transform:translateX(-50%)}.elementor-icon i.fad{width:auto}.elementor-shape-circle .elementor-icon{border-radius:50%}.e-transform .elementor-widget-container{transform:perspective(var(--e-transform-perspective,0)) rotate(var(--e-transform-rotateZ,0)) rotateX(var(--e-transform-rotateX,0)) rotateY(var(--e-transform-rotateY,0)) translate(var(--e-transform-translate,0)) translateX(var(--e-transform-translateX,0)) translateY(var(--e-transform-translateY,0)) scaleX(calc(var(--e-transform-flipX, 1) * var(--e-transform-scaleX, var(--e-transform-scale, 1)))) scaleY(calc(var(--e-transform-flipY, 1) * var(--e-transform-scaleY, var(--e-transform-scale, 1)))) skewX(var(--e-transform-skewX,0)) skewY(var(--e-transform-skewY,0));transform-origin:var(--e-transform-origin-y) var(--e-transform-origin-x)}.e-con.e-transform{transform:perspective(var(--e-con-transform-perspective,0)) rotate(var(--e-con-transform-rotateZ,0)) rotateX(var(--e-con-transform-rotateX,0)) rotateY(var(--e-con-transform-rotateY,0)) translate(var(--e-con-transform-translate,0)) translateX(var(--e-con-transform-translateX,0)) translateY(var(--e-con-transform-translateY,0)) scaleX(calc(var(--e-con-transform-flipX, 1) * var(--e-con-transform-scaleX, var(--e-con-transform-scale, 1)))) scaleY(calc(var(--e-con-transform-flipY, 1) * var(--e-con-transform-scaleY, var(--e-con-transform-scale, 1)))) skewX(var(--e-con-transform-skewX,0)) skewY(var(--e-con-transform-skewY,0));transform-origin:var(--e-con-transform-origin-y) var(--e-con-transform-origin-x)}.elementor-element,.elementor-lightbox{--swiper-theme-color:#000;--swiper-navigation-size:44px;--swiper-pagination-bullet-size:6px;--swiper-pagination-bullet-horizontal-gap:6px}.elementor-element .swiper-container .swiper-slide figure,.elementor-element .swiper .swiper-slide figure,.elementor-lightbox .swiper-container .swiper-slide figure,.elementor-lightbox .swiper .swiper-slide figure{line-height:0}.elementor-element .swiper-container .elementor-lightbox-content-source,.elementor-element .swiper .elementor-lightbox-content-source,.elementor-lightbox .swiper-container .elementor-lightbox-content-source,.elementor-lightbox .swiper .elementor-lightbox-content-source{display:none}.elementor-element .swiper-container .elementor-swiper-button,.elementor-element .swiper-container~.elementor-swiper-button,.elementor-element .swiper .elementor-swiper-button,.elementor-element .swiper~.elementor-swiper-button,.elementor-lightbox .swiper-container .elementor-swiper-button,.elementor-lightbox .swiper-container~.elementor-swiper-button,.elementor-lightbox .swiper .elementor-swiper-button,.elementor-lightbox .swiper~.elementor-swiper-button{position:absolute;display:inline-flex;z-index:1;cursor:pointer;font-size:25px;color:hsla(0,0%,93.3%,.9);top:50%;transform:translateY(-50%)}.elementor-element .swiper-container .elementor-swiper-button svg,.elementor-element .swiper-container~.elementor-swiper-button svg,.elementor-element .swiper .elementor-swiper-button svg,.elementor-element .swiper~.elementor-swiper-button svg,.elementor-lightbox .swiper-container .elementor-swiper-button svg,.elementor-lightbox .swiper-container~.elementor-swiper-button svg,.elementor-lightbox .swiper .elementor-swiper-button svg,.elementor-lightbox .swiper~.elementor-swiper-button svg{fill:hsla(0,0%,93.3%,.9);height:1em;width:1em}.elementor-element .swiper-container .elementor-swiper-button-prev,.elementor-element .swiper-container~.elementor-swiper-button-prev,.elementor-element .swiper .elementor-swiper-button-prev,.elementor-element .swiper~.elementor-swiper-button-prev,.elementor-lightbox .swiper-container .elementor-swiper-button-prev,.elementor-lightbox .swiper-container~.elementor-swiper-button-prev,.elementor-lightbox .swiper .elementor-swiper-button-prev,.elementor-lightbox .swiper~.elementor-swiper-button-prev{left:10px}.elementor-element .swiper-container .elementor-swiper-button-next,.elementor-element .swiper-container~.elementor-swiper-button-next,.elementor-element .swiper .elementor-swiper-button-next,.elementor-element .swiper~.elementor-swiper-button-next,.elementor-lightbox .swiper-container .elementor-swiper-button-next,.elementor-lightbox .swiper-container~.elementor-swiper-button-next,.elementor-lightbox .swiper .elementor-swiper-button-next,.elementor-lightbox .swiper~.elementor-swiper-button-next{right:10px}.elementor-element .swiper-container .elementor-swiper-button.swiper-button-disabled,.elementor-element .swiper-container~.elementor-swiper-button.swiper-button-disabled,.elementor-element .swiper .elementor-swiper-button.swiper-button-disabled,.elementor-element .swiper~.elementor-swiper-button.swiper-button-disabled,.elementor-lightbox .swiper-container .elementor-swiper-button.swiper-button-disabled,.elementor-lightbox .swiper-container~.elementor-swiper-button.swiper-button-disabled,.elementor-lightbox .swiper .elementor-swiper-button.swiper-button-disabled,.elementor-lightbox .swiper~.elementor-swiper-button.swiper-button-disabled{opacity:.3}.elementor-element .swiper-container .swiper-image-stretch .swiper-slide .swiper-slide-image,.elementor-element .swiper .swiper-image-stretch .swiper-slide .swiper-slide-image,.elementor-lightbox .swiper-container .swiper-image-stretch .swiper-slide .swiper-slide-image,.elementor-lightbox .swiper .swiper-image-stretch .swiper-slide .swiper-slide-image{width:100%}.elementor-element .swiper-container .swiper-horizontal>.swiper-pagination-bullets,.elementor-element .swiper-container .swiper-pagination-bullets.swiper-pagination-horizontal,.elementor-element .swiper-container .swiper-pagination-custom,.elementor-element .swiper-container .swiper-pagination-fraction,.elementor-element .swiper-container~.swiper-pagination-bullets.swiper-pagination-horizontal,.elementor-element .swiper-container~.swiper-pagination-custom,.elementor-element .swiper-container~.swiper-pagination-fraction,.elementor-element .swiper .swiper-horizontal>.swiper-pagination-bullets,.elementor-element .swiper .swiper-pagination-bullets.swiper-pagination-horizontal,.elementor-element .swiper .swiper-pagination-custom,.elementor-element .swiper .swiper-pagination-fraction,.elementor-element .swiper~.swiper-pagination-bullets.swiper-pagination-horizontal,.elementor-element .swiper~.swiper-pagination-custom,.elementor-element .swiper~.swiper-pagination-fraction,.elementor-lightbox .swiper-container .swiper-horizontal>.swiper-pagination-bullets,.elementor-lightbox .swiper-container .swiper-pagination-bullets.swiper-pagination-horizontal,.elementor-lightbox .swiper-container .swiper-pagination-custom,.elementor-lightbox .swiper-container .swiper-pagination-fraction,.elementor-lightbox .swiper-container~.swiper-pagination-bullets.swiper-pagination-horizontal,.elementor-lightbox .swiper-container~.swiper-pagination-custom,.elementor-lightbox .swiper-container~.swiper-pagination-fraction,.elementor-lightbox .swiper .swiper-horizontal>.swiper-pagination-bullets,.elementor-lightbox .swiper .swiper-pagination-bullets.swiper-pagination-horizontal,.elementor-lightbox .swiper .swiper-pagination-custom,.elementor-lightbox .swiper .swiper-pagination-fraction,.elementor-lightbox .swiper~.swiper-pagination-bullets.swiper-pagination-horizontal,.elementor-lightbox .swiper~.swiper-pagination-custom,.elementor-lightbox .swiper~.swiper-pagination-fraction{bottom:5px}.elementor-element .swiper-container.swiper-cube .elementor-swiper-button,.elementor-element .swiper-container.swiper-cube~.elementor-swiper-button,.elementor-element .swiper.swiper-cube .elementor-swiper-button,.elementor-element .swiper.swiper-cube~.elementor-swiper-button,.elementor-lightbox .swiper-container.swiper-cube .elementor-swiper-button,.elementor-lightbox .swiper-container.swiper-cube~.elementor-swiper-button,.elementor-lightbox .swiper.swiper-cube .elementor-swiper-button,.elementor-lightbox .swiper.swiper-cube~.elementor-swiper-button{transform:translate3d(0,-50%,1px)}.elementor-element :where(.swiper-container-horizontal)~.swiper-pagination-bullets,.elementor-lightbox :where(.swiper-container-horizontal)~.swiper-pagination-bullets{bottom:5px;left:0;width:100%}.elementor-element :where(.swiper-container-horizontal)~.swiper-pagination-bullets .swiper-pagination-bullet,.elementor-lightbox :where(.swiper-container-horizontal)~.swiper-pagination-bullets .swiper-pagination-bullet{margin:0 var(--swiper-pagination-bullet-horizontal-gap,4px)}.elementor-element :where(.swiper-container-horizontal)~.swiper-pagination-progressbar,.elementor-lightbox :where(.swiper-container-horizontal)~.swiper-pagination-progressbar{width:100%;height:4px;left:0;top:0}.elementor-element.elementor-pagination-position-outside .swiper,.elementor-element.elementor-pagination-position-outside .swiper-container,.elementor-lightbox.elementor-pagination-position-outside .swiper,.elementor-lightbox.elementor-pagination-position-outside .swiper-container{padding-bottom:30px}.elementor-element.elementor-pagination-position-outside .swiper-container .elementor-swiper-button,.elementor-element.elementor-pagination-position-outside .swiper-container~.elementor-swiper-button,.elementor-element.elementor-pagination-position-outside .swiper .elementor-swiper-button,.elementor-element.elementor-pagination-position-outside .swiper~.elementor-swiper-button,.elementor-lightbox.elementor-pagination-position-outside .swiper-container .elementor-swiper-button,.elementor-lightbox.elementor-pagination-position-outside .swiper-container~.elementor-swiper-button,.elementor-lightbox.elementor-pagination-position-outside .swiper .elementor-swiper-button,.elementor-lightbox.elementor-pagination-position-outside .swiper~.elementor-swiper-button{top:calc(50% - 30px / 2)}.elementor-element .elementor-swiper,.elementor-lightbox .elementor-swiper{position:relative}.elementor-element .elementor-main-swiper,.elementor-lightbox .elementor-main-swiper{position:static}.elementor-element.elementor-arrows-position-outside .swiper,.elementor-element.elementor-arrows-position-outside .swiper-container,.elementor-lightbox.elementor-arrows-position-outside .swiper,.elementor-lightbox.elementor-arrows-position-outside .swiper-container{width:calc(100% - 60px)}.elementor-element.elementor-arrows-position-outside .swiper-container .elementor-swiper-button-prev,.elementor-element.elementor-arrows-position-outside .swiper-container~.elementor-swiper-button-prev,.elementor-element.elementor-arrows-position-outside .swiper .elementor-swiper-button-prev,.elementor-element.elementor-arrows-position-outside .swiper~.elementor-swiper-button-prev,.elementor-lightbox.elementor-arrows-position-outside .swiper-container .elementor-swiper-button-prev,.elementor-lightbox.elementor-arrows-position-outside .swiper-container~.elementor-swiper-button-prev,.elementor-lightbox.elementor-arrows-position-outside .swiper .elementor-swiper-button-prev,.elementor-lightbox.elementor-arrows-position-outside .swiper~.elementor-swiper-button-prev{left:0}.elementor-element.elementor-arrows-position-outside .swiper-container .elementor-swiper-button-next,.elementor-element.elementor-arrows-position-outside .swiper-container~.elementor-swiper-button-next,.elementor-element.elementor-arrows-position-outside .swiper .elementor-swiper-button-next,.elementor-element.elementor-arrows-position-outside .swiper~.elementor-swiper-button-next,.elementor-lightbox.elementor-arrows-position-outside .swiper-container .elementor-swiper-button-next,.elementor-lightbox.elementor-arrows-position-outside .swiper-container~.elementor-swiper-button-next,.elementor-lightbox.elementor-arrows-position-outside .swiper .elementor-swiper-button-next,.elementor-lightbox.elementor-arrows-position-outside .swiper~.elementor-swiper-button-next{right:0}.elementor-lightbox{--lightbox-ui-color:hsla(0,0%,93.3%,0.9);--lightbox-ui-color-hover:#fff;--lightbox-text-color:var(--lightbox-ui-color);--lightbox-header-icons-size:20px;--lightbox-navigation-icons-size:25px}.elementor-lightbox:not(.elementor-popup-modal) .dialog-header,.elementor-lightbox:not(.elementor-popup-modal) .dialog-message{text-align:center}.elementor-lightbox .dialog-header{display:none}.elementor-lightbox .dialog-widget-content{background:none;box-shadow:none;width:100%;height:100%}.elementor-lightbox .dialog-message{animation-duration:.3s;height:100%}.elementor-lightbox .dialog-message.dialog-lightbox-message{padding:0}.elementor-lightbox .dialog-lightbox-close-button{cursor:pointer;position:absolute;font-size:var(--lightbox-header-icons-size);left:.75em;margin-top:13px;padding:.25em;z-index:2;line-height:1;display:flex}.elementor-lightbox .dialog-lightbox-close-button svg{height:1em;width:1em}.elementor-lightbox .dialog-lightbox-close-button,.elementor-lightbox .elementor-swiper-button{color:var(--lightbox-ui-color);transition:all .3s;opacity:1}.elementor-lightbox .dialog-lightbox-close-button svg,.elementor-lightbox .elementor-swiper-button svg{fill:var(--lightbox-ui-color)}.elementor-lightbox .dialog-lightbox-close-button:hover,.elementor-lightbox .elementor-swiper-button:hover{color:var(--lightbox-ui-color-hover)}.elementor-lightbox .dialog-lightbox-close-button:hover svg,.elementor-lightbox .elementor-swiper-button:hover svg{fill:var(--lightbox-ui-color-hover)}.elementor-lightbox .swiper,.elementor-lightbox .swiper-container{height:100%}.elementor-lightbox .elementor-lightbox-item{display:flex;align-items:center;justify-content:center;position:relative;padding:70px;box-sizing:border-box;height:100%;margin:auto}@media (max-width:767px){.elementor-lightbox .elementor-lightbox-item{padding:70px 0}}.elementor-lightbox .elementor-lightbox-image{max-height:100%;-webkit-user-select:none;-moz-user-select:none;user-select:none}.elementor-lightbox .elementor-lightbox-image,.elementor-lightbox .elementor-lightbox-image:hover{opacity:1;filter:none;border:none}.elementor-lightbox .elementor-lightbox-image{box-shadow:0 0 30px rgba(0,0,0,.3),0 0 8px -5px rgba(0,0,0,.3);border-radius:2px}.elementor-lightbox .elementor-video-container{width:100%;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.elementor-lightbox .elementor-video-container .elementor-video-landscape,.elementor-lightbox .elementor-video-container .elementor-video-portrait,.elementor-lightbox .elementor-video-container .elementor-video-square{width:100%;height:100%;margin:auto}.elementor-lightbox .elementor-video-container .elementor-video-landscape iframe,.elementor-lightbox .elementor-video-container .elementor-video-portrait iframe,.elementor-lightbox .elementor-video-container .elementor-video-square iframe{border:0;background-color:#000}.elementor-lightbox .elementor-video-container .elementor-video-landscape iframe,.elementor-lightbox .elementor-video-container .elementor-video-landscape video,.elementor-lightbox .elementor-video-container .elementor-video-portrait iframe,.elementor-lightbox .elementor-video-container .elementor-video-portrait video,.elementor-lightbox .elementor-video-container .elementor-video-square iframe,.elementor-lightbox .elementor-video-container .elementor-video-square video{aspect-ratio:var(--video-aspect-ratio,1.77777)}@supports not (aspect-ratio:1/1){.elementor-lightbox .elementor-video-container .elementor-video-landscape,.elementor-lightbox .elementor-video-container .elementor-video-portrait,.elementor-lightbox .elementor-video-container .elementor-video-square{position:relative;overflow:hidden;height:0;padding-bottom:calc(100% / var(--video-aspect-ratio, 1.77777))}.elementor-lightbox .elementor-video-container .elementor-video-landscape iframe,.elementor-lightbox .elementor-video-container .elementor-video-landscape video,.elementor-lightbox .elementor-video-container .elementor-video-portrait iframe,.elementor-lightbox .elementor-video-container .elementor-video-portrait video,.elementor-lightbox .elementor-video-container .elementor-video-square iframe,.elementor-lightbox .elementor-video-container .elementor-video-square video{position:absolute;top:0;right:0;bottom:0;left:0}}.elementor-lightbox .elementor-video-container .elementor-video-square iframe,.elementor-lightbox .elementor-video-container .elementor-video-square video{width:min(90vh,90vw);height:min(90vh,90vw)}.elementor-lightbox .elementor-video-container .elementor-video-landscape iframe,.elementor-lightbox .elementor-video-container .elementor-video-landscape video{width:100%;max-height:90vh}.elementor-lightbox .elementor-video-container .elementor-video-portrait iframe,.elementor-lightbox .elementor-video-container .elementor-video-portrait video{height:100%;max-width:90vw}@media (min-width:1025px){.elementor-lightbox .elementor-video-container .elementor-video-landscape{width:85vw;max-height:85vh}.elementor-lightbox .elementor-video-container .elementor-video-portrait{height:85vh;max-width:85vw}}@media (max-width:1024px){.elementor-lightbox .elementor-video-container .elementor-video-landscape{width:95vw;max-height:95vh}.elementor-lightbox .elementor-video-container .elementor-video-portrait{height:95vh;max-width:95vw}}.elementor-lightbox .swiper-container .elementor-swiper-button-prev,.elementor-lightbox .swiper .elementor-swiper-button-prev{left:0}.elementor-lightbox .swiper-container .elementor-swiper-button-next,.elementor-lightbox .swiper .elementor-swiper-button-next{right:0}.elementor-lightbox .swiper-container .swiper-pagination-fraction,.elementor-lightbox .swiper .swiper-pagination-fraction{width:-moz-max-content;width:max-content;color:#fff}.elementor-lightbox .elementor-swiper-button:focus{outline-width:1px}.elementor-lightbox .elementor-swiper-button-next,.elementor-lightbox .elementor-swiper-button-prev{height:100%;display:flex;align-items:center;width:15%;justify-content:center;font-size:var(--lightbox-navigation-icons-size)}@media (max-width:767px){.elementor-lightbox .elementor-swiper-button:focus{outline:none}.elementor-lightbox .elementor-swiper-button-next,.elementor-lightbox .elementor-swiper-button-prev{width:20%}.elementor-lightbox .elementor-swiper-button-next i,.elementor-lightbox .elementor-swiper-button-prev i{padding:10px;background-color:rgba(0,0,0,.5)}.elementor-lightbox .elementor-swiper-button-prev{left:0;justify-content:flex-start}.elementor-lightbox .elementor-swiper-button-next{right:0;justify-content:flex-end}}.elementor-slideshow__counter{color:currentColor;font-size:.75em;width:-moz-max-content;width:max-content}.elementor-slideshow__footer,.elementor-slideshow__header{position:absolute;left:0;width:100%;padding:15px 20px;transition:.3s}.elementor-slideshow__footer{color:var(--lightbox-text-color)}.elementor-slideshow__header{color:var(--lightbox-ui-color);display:flex;flex-direction:row-reverse;font-size:var(--lightbox-header-icons-size);padding-right:1em;padding-left:2.6em;top:0;align-items:center;z-index:10}.elementor-slideshow__header>i,.elementor-slideshow__header>svg{cursor:pointer;padding:.25em;margin:0 .35em}.elementor-slideshow__header>i{font-size:inherit}.elementor-slideshow__header>i:hover{color:var(--lightbox-ui-color-hover)}.elementor-slideshow__header>svg{box-sizing:content-box;fill:var(--lightbox-ui-color);height:1em;width:1em}.elementor-slideshow__header>svg:hover{fill:var(--lightbox-ui-color-hover)}.elementor-slideshow__header .elementor-slideshow__counter{margin-left:auto}.elementor-slideshow__header .elementor-icon-share{z-index:5}.elementor-slideshow__share-menu{background-color:transparent;width:0;height:0;position:absolute;overflow:hidden;transition:background-color .4s}.elementor-slideshow__share-menu .elementor-slideshow__share-links a{color:#0c0d0e}.elementor-slideshow__share-links{display:block;position:absolute;min-width:200px;left:2.8em;top:3em;background-color:#fff;border-radius:3px;padding:14px 20px;transform:scale(0);opacity:0;transform-origin:90% 10%;transition:all .25s .1s;box-shadow:0 4px 15px rgba(0,0,0,.3)}.elementor-slideshow__share-links a{text-align:right;color:#3f444b;font-size:12px;line-height:2.5;display:block;opacity:0;transition:opacity .5s .1s}.elementor-slideshow__share-links a:hover{color:#000}.elementor-slideshow__share-links a i,.elementor-slideshow__share-links a svg{margin-left:.75em}.elementor-slideshow__share-links a i{font-size:1.25em}.elementor-slideshow__share-links a svg{height:1.25em;width:1.25em}.elementor-slideshow__share-links:before{content:"";display:block;position:absolute;top:1px;left:.5em;border:.45em solid transparent;border-bottom-color:#fff;transform:translateY(-100%) scaleX(.7)}.elementor-slideshow__footer{bottom:0;z-index:5;position:fixed}.elementor-slideshow__description,.elementor-slideshow__title{margin:0}.elementor-slideshow__title{font-size:16px;font-weight:700}.elementor-slideshow__description{font-size:14px}.elementor-slideshow--ui-hidden .elementor-slideshow__footer,.elementor-slideshow--ui-hidden .elementor-slideshow__header{opacity:0;pointer-events:none}.elementor-slideshow--ui-hidden .elementor-swiper-button-next,.elementor-slideshow--ui-hidden .elementor-swiper-button-prev{opacity:0}.elementor-slideshow--fullscreen-mode .elementor-video-container{width:100%}.elementor-slideshow--zoom-mode .elementor-slideshow__footer,.elementor-slideshow--zoom-mode .elementor-slideshow__header{background-color:rgba(0,0,0,.5)}.elementor-slideshow--zoom-mode .elementor-swiper-button-next,.elementor-slideshow--zoom-mode .elementor-swiper-button-prev{opacity:0;pointer-events:none}.elementor-slideshow--share-mode .elementor-slideshow__share-menu{top:0;left:0;width:100vw;height:100vh;opacity:1;cursor:default;background-color:rgba(0,0,0,.5)}.elementor-slideshow--share-mode .elementor-slideshow__share-links{transform:scale(1)}.elementor-slideshow--share-mode .elementor-slideshow__share-links,.elementor-slideshow--share-mode .elementor-slideshow__share-links a{opacity:1}.elementor-slideshow--share-mode .elementor-slideshow__share-links .eicon-twitter{color:#1da1f2}.elementor-slideshow--share-mode .elementor-slideshow__share-links .eicon-facebook{color:#3b5998}.elementor-slideshow--share-mode .elementor-slideshow__share-links .eicon-pinterest{color:#bd081c}.elementor-slideshow--share-mode .elementor-slideshow__share-links .eicon-download-bold{color:#9da5ae}.elementor-slideshow--share-mode .elementor-slideshow__share-links .e-eicon-twitter{fill:#1da1f2}.elementor-slideshow--share-mode .elementor-slideshow__share-links .e-eicon-facebook{fill:#3b5998}.elementor-slideshow--share-mode .elementor-slideshow__share-links .e-eicon-pinterest{fill:#bd081c}.elementor-slideshow--share-mode .elementor-slideshow__share-links .e-eicon-download-bold{fill:#9da5ae}.elementor-slideshow--share-mode .eicon-share-arrow{z-index:2}.animated{animation-duration:1.25s}.animated.animated-slow{animation-duration:2s}.animated.animated-fast{animation-duration:.75s}.animated.infinite{animation-iteration-count:infinite}.animated.reverse{animation-direction:reverse;animation-fill-mode:forwards}@media (prefers-reduced-motion:reduce){.animated{animation:none}}.elementor-shape{overflow:hidden;position:absolute;left:0;width:100%;line-height:0;direction:ltr}.elementor-shape-top{top:-1px}.elementor-shape-top:not([data-negative=false]) svg{z-index:-1}.elementor-shape-bottom{bottom:-1px}.elementor-shape-bottom:not([data-negative=true]) svg{z-index:-1}.elementor-shape[data-negative=false].elementor-shape-bottom,.elementor-shape[data-negative=true].elementor-shape-top{transform:rotate(180deg)}.elementor-shape svg{display:block;width:calc(100% + 1.3px);position:relative;left:50%;transform:translateX(-50%)}.elementor-shape .elementor-shape-fill{fill:#fff;transform-origin:center;transform:rotateY(0deg)}#wp-admin-bar-elementor_edit_page>.ab-item:before{content:"\e813";font-family:eicons;top:3px;font-size:18px}#wp-admin-bar-elementor_edit_page .ab-submenu .ab-item{display:flex;width:200px}#wp-admin-bar-elementor_edit_page .elementor-edit-link-title{white-space:nowrap;text-overflow:ellipsis;overflow:hidden;width:100%}#wp-admin-bar-elementor_edit_page .elementor-edit-link-type{background:#3f444b;font-size:11px;line-height:9px;margin-top:6px;padding:4px 8px;border-radius:3px}#wp-admin-bar-elementor_inspector>.ab-item:before{content:"\f348";top:2px}#wpadminbar *{font-style:normal}.page-template-elementor_canvas.elementor-page:before{display:none}.elementor-post__thumbnail__link{transition:none}#left-area ul.elementor-icon-list-items,.elementor-edit-area .elementor-element ul.elementor-icon-list-items,.elementor .elementor-element ul.elementor-icon-list-items{padding:0}.e--ua-appleWebkit.rtl{--flex-right:flex-start}.e--ua-appleWebkit .elementor-share-buttons--align-right,.e--ua-appleWebkit .elementor-widget-social-icons.e-grid-align-right{--justify-content:var(--flex-right,flex-end)}.e--ua-appleWebkit .elementor-share-buttons--align-center,.e--ua-appleWebkit .elementor-widget-social-icons.e-grid-align-center{--justify-content:center}.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-center .elementor-grid,.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-justify .elementor-grid,.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-right .elementor-grid,.e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-center .elementor-grid,.e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-right .elementor-grid{width:auto;display:flex;flex-wrap:wrap;justify-content:var(--justify-content,space-between);margin-left:calc(-.5 * var(--grid-column-gap));margin-right:calc(-.5 * var(--grid-column-gap))}.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-center .elementor-grid-item,.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-justify .elementor-grid-item,.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-right .elementor-grid-item,.e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-center .elementor-grid-item,.e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-right .elementor-grid-item{margin-left:calc(.5 * var(--grid-column-gap));margin-right:calc(.5 * var(--grid-column-gap))}.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-left .elementor-grid,.e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-left .elementor-grid{display:inline-block}.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-left .elementor-grid,.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-left .elementor-grid-item,.e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-left .elementor-grid,.e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-left .elementor-grid-item{margin-left:0;margin-right:0}@media (max-width:1024px){.e--ua-appleWebkit .elementor-share-buttons-tablet--align-right,.e--ua-appleWebkit .elementor-widget-social-icons.e-grid-align-tablet-right{--justify-content:var(--flex-right,flex-end)}.e--ua-appleWebkit .elementor-share-buttons-tablet--align-center,.e--ua-appleWebkit .elementor-widget-social-icons.e-grid-align-tablet-center{--justify-content:center}.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-tablet-center .elementor-grid,.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-tablet-justify .elementor-grid,.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-tablet-right .elementor-grid,.e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-tablet-center .elementor-grid,.e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-tablet-right .elementor-grid{width:auto;display:flex;flex-wrap:wrap;justify-content:var(--justify-content,space-between);margin-left:calc(-.5 * var(--grid-column-gap));margin-right:calc(-.5 * var(--grid-column-gap))}.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-tablet-center .elementor-grid-item,.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-tablet-justify .elementor-grid-item,.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-tablet-right .elementor-grid-item,.e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-tablet-center .elementor-grid-item,.e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-tablet-right .elementor-grid-item{margin-left:calc(.5 * var(--grid-column-gap));margin-right:calc(.5 * var(--grid-column-gap))}.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons-tablet--align-left .elementor-grid,.e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-tablet-left .elementor-grid{display:inline-block}.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons-tablet--align-left .elementor-grid,.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons-tablet--align-left .elementor-grid-item,.e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-tablet-left .elementor-grid,.e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-tablet-left .elementor-grid-item{margin-left:0;margin-right:0}}@media (max-width:767px){.e--ua-appleWebkit .elementor-share-buttons-mobile--align-right,.e--ua-appleWebkit .elementor-widget-social-icons.e-grid-align-mobile-right{--justify-content:var(--flex-right,flex-end)}.e--ua-appleWebkit .elementor-share-buttons-mobile--align-center,.e--ua-appleWebkit .elementor-widget-social-icons.e-grid-align-mobile-center{--justify-content:center}.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-mobile-center .elementor-grid,.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-mobile-justify .elementor-grid,.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-mobile-right .elementor-grid,.e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-mobile-center .elementor-grid,.e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-mobile-right .elementor-grid{width:auto;display:flex;flex-wrap:wrap;justify-content:var(--justify-content,space-between);margin-left:calc(-.5 * var(--grid-column-gap));margin-right:calc(-.5 * var(--grid-column-gap))}.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-mobile-center .elementor-grid-item,.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-mobile-justify .elementor-grid-item,.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-mobile-right .elementor-grid-item,.e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-mobile-center .elementor-grid-item,.e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-mobile-right .elementor-grid-item{margin-left:calc(.5 * var(--grid-column-gap));margin-right:calc(.5 * var(--grid-column-gap))}.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons-mobile--align-left .elementor-grid,.e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-mobile-left .elementor-grid{display:inline-block}.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons-mobile--align-left .elementor-grid,.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons-mobile--align-left .elementor-grid-item,.e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-mobile-left .elementor-grid,.e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-mobile-left .elementor-grid-item{margin-left:0;margin-right:0}}@media (max-width:767px){.elementor .elementor-hidden-mobile,.elementor .elementor-hidden-phone{display:none}}@media (min-width:-1) and (max-width:-1){.elementor .elementor-hidden-mobile_extra{display:none}}@media (min-width:768px) and (max-width:1024px){.elementor .elementor-hidden-tablet{display:none}}@media (min-width:-1) and (max-width:-1){.elementor .elementor-hidden-laptop,.elementor .elementor-hidden-tablet_extra{display:none}}@media (min-width:1025px) and (max-width:99999px){.elementor .elementor-hidden-desktop{display:none}}@media (min-width:-1){.elementor .elementor-hidden-widescreen{display:none}}.elementor-widget-text-path{font-size:20px;text-align:var(--alignment,right)}.elementor-widget-text-path svg{width:var(--width);max-width:100%;height:auto;overflow:visible;word-spacing:var(--word-spacing);transform:rotate(var(--rotate,0)) scaleX(var(--scale-x,1)) scaleY(var(--scale-y,1))}.elementor-widget-text-path svg path{vector-effect:non-scaling-stroke;fill:var(--path-fill,transparent);stroke:var(--stroke-color,transparent);stroke-width:var(--stroke-width,1px);transition:var(--stroke-transition) stroke,var(--stroke-transition) fill}.elementor-widget-text-path svg:hover path{--path-fill:var(--path-fill-hover);--stroke-color:var(--stroke-color-hover);--stroke-width:var(--stroke-width-hover)}.elementor-widget-text-path svg text{--fill:var(--text-color);fill:var(--fill);direction:var(--direction,rtl);transition:var(--transition) stroke,var(--transition) stroke-width,var(--transition) fill}.elementor-widget-text-path svg text:hover{--color:var(--text-color-hover,var(--text-color));--fill:var(--color);color:var(--color)}.elementor-widget-n-tabs{--n-tabs-color-accent-fallback:#61ce70;--n-tabs-color-secondary-fallback:#54595f;--n-tabs-default-padding-block:15px;--n-tabs-default-padding-inline:35px;--n-tabs-background-color:transparent;--n-tabs-display:flex;--n-tabs-direction:column;--n-tabs-gap:10px;--n-tabs-heading-display:flex;--n-tabs-heading-direction:row;--n-tabs-heading-grow:initial;--n-tabs-heading-justify-content:center;--n-tabs-heading-width:initial;--n-tabs-heading-overflow-x:initial;--n-tabs-heading-wrap:nowrap;--n-tabs-border-width:1px;--n-tabs-border-color:#d5d8dc;--n-tabs-content-display:flex;--n-tabs-title-color:var(--e-global-color-secondary,var(--n-tabs-color-secondary-fallback));--n-tabs-title-color-hover:#fff;--n-tabs-title-color-active:#fff;--n-tabs-title-background-color:#f1f2f3;--n-tabs-title-background-color-hover:var(--e-global-color-accent,var(--n-tabs-color-accent-fallback));--n-tabs-title-background-color-active:var(--e-global-color-accent,var(--n-tabs-color-accent-fallback));--n-tabs-title-width:initial;--n-tabs-title-height:initial;--n-tabs-title-font-size:1rem;--n-tabs-title-white-space:initial;--n-tabs-title-justify-content-toggle:initial;--n-tabs-title-align-items-toggle:center;--n-tabs-title-justify-content:center;--n-tabs-title-align-items:center;--n-tabs-title-text-align:center;--n-tabs-title-direction:row;--n-tabs-title-gap:10px;--n-tabs-title-flex-grow:0;--n-tabs-title-flex-basis:content;--n-tabs-title-flex-shrink:initial;--n-tabs-title-order:initial;--n-tabs-title-padding-block-start:var(--n-tabs-default-padding-block);--n-tabs-title-padding-inline-end:var(--n-tabs-default-padding-inline);--n-tabs-title-padding-block-end:var(--n-tabs-default-padding-block);--n-tabs-title-padding-inline-start:var(--n-tabs-default-padding-inline);--n-tabs-title-border-radius:initial;--n-tabs-title-transition:0.3s;--n-tabs-icon-color:var(--e-global-color-secondary,var(--n-tabs-color-secondary-fallback));--n-tabs-icon-color-hover:var(--n-tabs-title-color-hover);--n-tabs-icon-color-active:#fff;--n-tabs-icon-gap:5px;width:100%;max-width:100%}.elementor-widget-n-tabs .e-n-tabs{display:var(--n-tabs-display);flex-direction:var(--n-tabs-direction);gap:var(--n-tabs-gap);text-align:start;min-width:0}.elementor-widget-n-tabs .e-n-tabs-heading{display:var(--n-tabs-heading-display);flex-basis:var(--n-tabs-heading-width);flex-direction:var(--n-tabs-heading-direction);flex-shrink:0;justify-content:var(--n-tabs-heading-justify-content);gap:var(--n-tabs-title-gap);overflow-x:var(--n-tabs-heading-overflow-x);flex-wrap:var(--n-tabs-heading-wrap);-ms-overflow-style:none;scrollbar-width:none}.elementor-widget-n-tabs .e-n-tabs-heading::-webkit-scrollbar{display:none}.elementor-widget-n-tabs .e-n-tabs-heading.e-scroll{cursor:grabbing;cursor:-webkit-grabbing}.elementor-widget-n-tabs .e-n-tabs-heading.e-scroll-active{position:relative}.elementor-widget-n-tabs .e-n-tabs-heading.e-scroll-active:before{content:"";position:absolute;inset-block:0;inset-inline:-1000vw;z-index:2}.elementor-widget-n-tabs .e-n-tabs-content{display:var(--n-tabs-content-display);flex-grow:1;min-width:0}.elementor-widget-n-tabs .e-n-tabs-content>.e-con:not(.e-active){display:none}.elementor-widget-n-tabs .e-n-tabs:not(.e-activated)>.e-n-tabs-content>.e-con:first-child{display:flex}.elementor-widget-n-tabs .e-n-tab-title{all:unset;-webkit-user-select:none;-moz-user-select:none;user-select:none;display:flex;align-items:var(--n-tabs-title-align-items-toggle,var(--n-tabs-title-align-items));flex-direction:var(--n-tabs-title-direction);justify-content:var(--n-tabs-title-justify-content-toggle,var(--n-tabs-title-justify-content));gap:var(--n-tabs-icon-gap);border-width:var(--n-tabs-border-width);position:relative;cursor:pointer;outline:none;flex-grow:var(--n-tabs-title-flex-grow);flex-basis:var(--n-tabs-title-flex-basis);flex-shrink:var(--n-tabs-title-flex-shrink);padding-block-start:var(--n-tabs-title-padding-block-start);padding-inline-end:var(--n-tabs-title-padding-inline-end);padding-block-end:var(--n-tabs-title-padding-block-end);padding-inline-start:var(--n-tabs-title-padding-inline-start);border-radius:var(--n-tabs-title-border-radius);height:var(--n-tabs-title-height);width:var(--n-tabs-title-width);white-space:var(--n-tabs-title-white-space);transition:background var(--n-tabs-title-transition),color var(--n-tabs-title-transition),border var(--n-tabs-title-transition),box-shadow var(--n-tabs-title-transition),text-shadow var(--n-tabs-title-transition),stroke var(--n-tabs-title-transition),stroke-width var(--n-tabs-title-transition),-webkit-text-stroke-width var(--n-tabs-title-transition),-webkit-text-stroke-color var(--n-tabs-title-transition),transform var(--n-tabs-title-transition)}.elementor-widget-n-tabs .e-n-tab-title:focus-visible{outline:5px auto -webkit-focus-ring-color}.elementor-widget-n-tabs .e-n-tab-title span i,.elementor-widget-n-tabs .e-n-tab-title span svg{transition:color var(--n-tabs-title-transition),fill var(--n-tabs-title-transition)}.elementor-widget-n-tabs .e-n-tab-title-text{display:flex;align-items:center;font-size:var(--n-tabs-title-font-size);text-align:var(--n-tabs-title-text-align)}.elementor-widget-n-tabs .e-n-tab-title .e-n-tab-icon{display:flex;align-items:center;flex-direction:column;flex-shrink:0;order:var(--n-tabs-icon-order);overflow:hidden}.elementor-widget-n-tabs .e-n-tab-title .e-n-tab-icon i{font-size:var(--n-tabs-icon-size,var(--n-tabs-title-font-size))}.elementor-widget-n-tabs .e-n-tab-title .e-n-tab-icon svg{width:var(--n-tabs-icon-size,var(--n-tabs-title-font-size));height:var(--n-tabs-icon-size,var(--n-tabs-title-font-size))}.elementor-widget-n-tabs .e-n-tab-title .e-n-tab-icon:empty{display:none}.elementor-widget-n-tabs .e-n-tab-title[aria-selected=false]{background-color:var(--n-tabs-title-background-color)}.elementor-widget-n-tabs .e-n-tab-title[aria-selected=false],.elementor-widget-n-tabs .e-n-tab-title[aria-selected=false] a{color:var(--n-tabs-title-color)}.elementor-widget-n-tabs .e-n-tab-title[aria-selected=false] .e-n-tab-icon i{color:var(--n-tabs-icon-color)}.elementor-widget-n-tabs .e-n-tab-title[aria-selected=false] .e-n-tab-icon svg{fill:var(--n-tabs-icon-color)}.elementor-widget-n-tabs .e-n-tab-title[aria-selected=false] .e-n-tab-icon i:last-child,.elementor-widget-n-tabs .e-n-tab-title[aria-selected=false] .e-n-tab-icon svg:last-child{transform:translateY(-100vh);height:0;opacity:0}.elementor-widget-n-tabs .e-n-tab-title[aria-selected=true],.elementor-widget-n-tabs .e-n-tab-title[aria-selected=true] a{color:var(--n-tabs-title-color-active)}.elementor-widget-n-tabs .e-n-tab-title[aria-selected=true] .e-n-tab-icon i{color:var(--n-tabs-icon-color-active)}.elementor-widget-n-tabs .e-n-tab-title[aria-selected=true] .e-n-tab-icon svg{fill:var(--n-tabs-icon-color-active)}.elementor-widget-n-tabs .e-n-tab-title[aria-selected=true] .e-n-tab-icon i:first-child,.elementor-widget-n-tabs .e-n-tab-title[aria-selected=true] .e-n-tab-icon svg:first-child{transform:translateY(-100vh);height:0;opacity:0}.elementor-widget-n-tabs .e-n-tab-title[aria-selected=true][class*=elementor-animation-]:active,.elementor-widget-n-tabs .e-n-tab-title[aria-selected=true][class*=elementor-animation-]:focus,.elementor-widget-n-tabs .e-n-tab-title[aria-selected=true][class*=elementor-animation-]:hover{transform:none;animation:initial}.elementor-widget-n-tabs [data-touch-mode=false] .e-n-tab-title[aria-selected=false]:hover,.elementor-widget-n-tabs [data-touch-mode=false] .e-n-tab-title[aria-selected=false]:hover a{color:var(--n-tabs-title-color-hover)}.elementor-widget-n-tabs [data-touch-mode=false] .e-n-tab-title[aria-selected=false]:hover .e-n-tab-icon i{color:var(--n-tabs-icon-color-hover)}.elementor-widget-n-tabs [data-touch-mode=false] .e-n-tab-title[aria-selected=false]:hover .e-n-tab-icon svg{fill:var(--n-tabs-icon-color-hover)}.elementor-widget-n-tabs [data-touch-mode=true] .e-n-tab-title[aria-selected=false]:hover,.elementor-widget-n-tabs [data-touch-mode=true] .e-n-tab-title[aria-selected=false]:hover a{color:var(--n-tabs-title-color-active)}.elementor-widget-n-tabs [data-touch-mode=true] .e-n-tab-title[aria-selected=false]:hover .e-n-tab-icon i{color:var(--n-tabs-icon-color-active)}.elementor-widget-n-tabs [data-touch-mode=true] .e-n-tab-title[aria-selected=false]:hover .e-n-tab-icon svg{fill:var(--n-tabs-icon-color-active)}.elementor-widget-n-tabs [data-touch-mode=true] .e-n-tab-title[aria-selected=false]:hover .e-n-tab-icon i:first-child,.elementor-widget-n-tabs [data-touch-mode=true] .e-n-tab-title[aria-selected=false]:hover .e-n-tab-icon svg:first-child{transform:translateY(-100vh);height:0;opacity:0}.elementor-widget-n-tabs [data-touch-mode=true] .e-n-tab-title[aria-selected=false]:hover[class*=elementor-animation-]:active,.elementor-widget-n-tabs [data-touch-mode=true] .e-n-tab-title[aria-selected=false]:hover[class*=elementor-animation-]:focus,.elementor-widget-n-tabs [data-touch-mode=true] .e-n-tab-title[aria-selected=false]:hover[class*=elementor-animation-]:hover{transform:none;animation:initial}.elementor-widget-n-tabs [data-touch-mode=true] .e-n-tab-title[aria-selected=false]:hover .e-n-tab-icon i:last-child,.elementor-widget-n-tabs [data-touch-mode=true] .e-n-tab-title[aria-selected=false]:hover .e-n-tab-icon svg:last-child{transform:none;height:auto;opacity:1}.elementor .elementor-element.elementor-widget-n-tabs>.elementor-widget-container>.e-n-tabs[data-touch-mode=false]>.e-n-tabs-heading .e-n-tab-title[aria-selected=false]:hover{background-color:var(--n-tabs-title-background-color-hover);background-image:none}.elementor .elementor-element.elementor-widget-n-tabs>.elementor-widget-container>.e-n-tabs>.e-n-tabs-heading .e-n-tab-title[aria-selected=true],.elementor .elementor-element.elementor-widget-n-tabs>.elementor-widget-container>.e-n-tabs[data-touch-mode=true]>.e-n-tabs-heading .e-n-tab-title[aria-selected=false]:hover{background-color:var(--n-tabs-title-background-color-active);background-image:none}@media (max-width:767px){.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-mobile{--n-tabs-direction:column;--n-tabs-heading-display:contents;--n-tabs-content-display:contents}.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-mobile .e-n-tabs{gap:0}.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-mobile .e-n-tabs-content>.e-con{order:var(--n-tabs-title-order)}.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-mobile .e-n-tab-title{order:var(--n-tabs-title-order);width:auto}.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-mobile .e-n-tab-title:not(:first-child){margin-block-start:var(--n-tabs-title-gap)}.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-mobile .e-n-tab-title[aria-selected=true]{margin-block-end:var(--n-tabs-gap)}}@media (max-width:-1){.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-mobile_extra{--n-tabs-direction:column;--n-tabs-heading-display:contents;--n-tabs-content-display:contents}.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-mobile_extra .e-n-tabs{gap:0}.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-mobile_extra .e-n-tabs-content>.e-con{order:var(--n-tabs-title-order)}.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-mobile_extra .e-n-tab-title{order:var(--n-tabs-title-order);width:auto}.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-mobile_extra .e-n-tab-title:not(:first-child){margin-block-start:var(--n-tabs-title-gap)}.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-mobile_extra .e-n-tab-title[aria-selected=true]{margin-block-end:var(--n-tabs-gap)}}@media (max-width:1024px){.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-tablet{--n-tabs-direction:column;--n-tabs-heading-display:contents;--n-tabs-content-display:contents}.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-tablet .e-n-tabs{gap:0}.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-tablet .e-n-tabs-content>.e-con{order:var(--n-tabs-title-order)}.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-tablet .e-n-tab-title{order:var(--n-tabs-title-order);width:auto}.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-tablet .e-n-tab-title:not(:first-child){margin-block-start:var(--n-tabs-title-gap)}.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-tablet .e-n-tab-title[aria-selected=true]{margin-block-end:var(--n-tabs-gap)}}@media (max-width:-1){.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-tablet_extra{--n-tabs-direction:column;--n-tabs-heading-display:contents;--n-tabs-content-display:contents}.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-tablet_extra .e-n-tabs{gap:0}.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-tablet_extra .e-n-tabs-content>.e-con{order:var(--n-tabs-title-order)}.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-tablet_extra .e-n-tab-title{order:var(--n-tabs-title-order);width:auto}.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-tablet_extra .e-n-tab-title:not(:first-child){margin-block-start:var(--n-tabs-title-gap)}.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-tablet_extra .e-n-tab-title[aria-selected=true]{margin-block-end:var(--n-tabs-gap)}}@media (max-width:-1){.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-laptop{--n-tabs-direction:column;--n-tabs-heading-display:contents;--n-tabs-content-display:contents}.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-laptop .e-n-tabs{gap:0}.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-laptop .e-n-tabs-content>.e-con{order:var(--n-tabs-title-order)}.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-laptop .e-n-tab-title{order:var(--n-tabs-title-order);width:auto}.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-laptop .e-n-tab-title:not(:first-child){margin-block-start:var(--n-tabs-title-gap)}.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-laptop .e-n-tab-title[aria-selected=true]{margin-block-end:var(--n-tabs-gap)}}.elementor-widget-n-accordion{--n-accordion-title-font-size:20px;--n-accordion-title-flex-grow:initial;--n-accordion-title-justify-content:initial;--n-accordion-title-icon-order:-1;--n-accordion-border-width:1px;--n-accordion-border-color:#d5d8dc;--n-accordion-border-style:solid;--n-accordion-item-title-flex-grow:initial;--n-accordion-item-title-space-between:0px;--n-accordion-item-title-distance-from-content:0px;--n-accordion-padding:10px;--n-accordion-border-radius:0px;--n-accordion-icon-size:15px;--n-accordion-title-normal-color:#1f2124;--n-accordion-title-hover-color:#1f2124;--n-accordion-title-active-color:#1f2124;--n-accordion-icon-normal-color:var(--n-accordion-title-normal-color);--n-accordion-icon-hover-color:var(--n-accordion-title-hover-color);--n-accordion-icon-active-color:var(--n-accordion-title-active-color);--n-accordion-icon-gap:0 10px;width:100%}.elementor-widget-n-accordion .e-n-accordion details>summary::-webkit-details-marker{display:none}.elementor-widget-n-accordion .e-n-accordion-item{display:flex;flex-direction:column;position:relative}.elementor-widget-n-accordion .e-n-accordion-item:not(:last-child){margin-block-end:var(--n-accordion-item-title-space-between)}.elementor-widget-n-accordion .e-n-accordion-item-title,:where(.elementor-widget-n-accordion .e-n-accordion-item>.e-con){border:var(--n-accordion-border-width) var(--n-accordion-border-style) var(--n-accordion-border-color)}.elementor-widget-n-accordion .e-n-accordion-item-title{display:flex;flex-direction:row;list-style:none;padding:var(--n-accordion-padding);justify-content:var(--n-accordion-title-justify-content);border-radius:var(--n-accordion-border-radius);flex-grow:var(--n-menu-title-flex-grow);gap:var(--n-accordion-icon-gap);color:var(--n-accordion-title-normal-color);align-items:center;cursor:pointer}.elementor-widget-n-accordion .e-n-accordion-item-title-header{display:flex}.elementor-widget-n-accordion .e-n-accordion-item-title-header h1,.elementor-widget-n-accordion .e-n-accordion-item-title-header h2,.elementor-widget-n-accordion .e-n-accordion-item-title-header h3,.elementor-widget-n-accordion .e-n-accordion-item-title-header h4,.elementor-widget-n-accordion .e-n-accordion-item-title-header h5,.elementor-widget-n-accordion .e-n-accordion-item-title-header h6,.elementor-widget-n-accordion .e-n-accordion-item-title-header p{margin-block-start:0;margin-block-end:0}.elementor-widget-n-accordion .e-n-accordion-item-title-text{font-size:var(--n-accordion-title-font-size);align-items:center}.elementor-widget-n-accordion .e-n-accordion-item-title-icon{display:flex;flex-direction:row;align-items:center;order:var(--n-accordion-title-icon-order);position:relative;width:-moz-fit-content;width:fit-content}.elementor-widget-n-accordion .e-n-accordion-item-title-icon span{height:var(--n-accordion-icon-size);width:auto}.elementor-widget-n-accordion .e-n-accordion-item-title-icon span>i{color:var(--n-accordion-icon-normal-color);font-size:var(--n-accordion-icon-size)}.elementor-widget-n-accordion .e-n-accordion-item-title-icon span>svg{fill:var(--n-accordion-icon-normal-color);height:var(--n-accordion-icon-size)}.elementor-widget-n-accordion .e-n-accordion-item-title>span{cursor:pointer}.elementor-widget-n-accordion .e-n-accordion-item[open] .e-n-accordion-item-title{margin-block-end:var(--n-accordion-item-title-distance-from-content);color:var(--n-accordion-title-active-color)}.elementor-widget-n-accordion .e-n-accordion-item[open] .e-n-accordion-item-title-icon .e-opened{display:flex}.elementor-widget-n-accordion .e-n-accordion-item[open] .e-n-accordion-item-title-icon .e-closed{display:none}.elementor-widget-n-accordion .e-n-accordion-item[open] .e-n-accordion-item-title-icon span>i{color:var(--n-accordion-icon-active-color)}.elementor-widget-n-accordion .e-n-accordion-item[open] .e-n-accordion-item-title-icon span>svg{fill:var(--n-accordion-icon-active-color)}.elementor-widget-n-accordion .e-n-accordion-item:not([open]):hover .e-n-accordion-item-title{color:var(--n-accordion-title-hover-color)}.elementor-widget-n-accordion .e-n-accordion-item:not([open]):hover .e-n-accordion-item-title-icon span>i{color:var(--n-accordion-icon-hover-color)}.elementor-widget-n-accordion .e-n-accordion-item:not([open]):hover .e-n-accordion-item-title-icon span>svg{fill:var(--n-accordion-icon-hover-color)}.elementor-widget-n-accordion .e-n-accordion-item .e-n-accordion-item-title-icon .e-opened{display:none}.elementor-widget-n-accordion .e-n-accordion-item .e-n-accordion-item-title-icon .e-closed{display:flex}.elementor-widget-n-accordion .e-n-accordion-item .e-n-accordion-item-title-icon span>svg{fill:var(--n-accordion-icon-normal-color)}.elementor-widget-n-accordion .e-n-accordion-item .e-n-accordion-item-title-icon span>i{color:var(--n-accordion-icon-normal-color)}.elementor-widget-n-accordion .e-n-accordion-item>span{cursor:pointer} \ No newline at end of file diff --git a/wp-content/plugins/elementor/assets/css/frontend-lite.css b/wp-content/plugins/elementor/assets/css/frontend-lite.css new file mode 100644 index 0000000..8de70b3 --- /dev/null +++ b/wp-content/plugins/elementor/assets/css/frontend-lite.css @@ -0,0 +1,3787 @@ +/*! elementor - v3.20.0 - 26-03-2024 */ +.dialog-widget-content { + background-color: var(--e-a-bg-default); + position: absolute; + border-radius: 3px; + box-shadow: 2px 8px 23px 3px rgba(0, 0, 0, 0.2); + overflow: hidden; +} + +.dialog-message { + line-height: 1.5; + box-sizing: border-box; +} + +.dialog-close-button { + cursor: pointer; + position: absolute; + margin-block-start: 15px; + right: 15px; + color: var(--e-a-color-txt); + font-size: 15px; + line-height: 1; + transition: var(--e-a-transition-hover); +} +.dialog-close-button:hover { + color: var(--e-a-color-txt-hover); +} + +.dialog-prevent-scroll { + overflow: hidden; + max-height: 100vh; +} + +.dialog-type-lightbox { + position: fixed; + height: 100%; + width: 100%; + bottom: 0; + left: 0; + background-color: rgba(0, 0, 0, 0.8); + z-index: 9999; + -webkit-user-select: none; + -moz-user-select: none; + user-select: none; +} + +.elementor-editor-active .elementor-popup-modal { + background-color: initial; +} + +.dialog-type-confirm .dialog-widget-content, +.dialog-type-alert .dialog-widget-content { + margin: auto; + width: 400px; + padding: 20px; +} +.dialog-type-confirm .dialog-header, +.dialog-type-alert .dialog-header { + font-size: 15px; + font-weight: 500; +} +.dialog-type-confirm .dialog-header:after, +.dialog-type-alert .dialog-header:after { + content: ""; + display: block; + border-block-end: var(--e-a-border); + padding-block-end: 10px; + margin-block-end: 10px; + margin-inline-start: -20px; + margin-inline-end: -20px; +} +.dialog-type-confirm .dialog-message, +.dialog-type-alert .dialog-message { + min-height: 50px; +} +.dialog-type-confirm .dialog-buttons-wrapper, +.dialog-type-alert .dialog-buttons-wrapper { + padding-block-start: 10px; + display: flex; + justify-content: flex-end; + gap: 15px; +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button { + font-size: 12px; + font-weight: 500; + line-height: 1.2; + padding: 8px 16px; + outline: none; + border: none; + border-radius: var(--e-a-border-radius); + background-color: var(--e-a-btn-bg); + color: var(--e-a-btn-color-invert); + transition: var(--e-a-transition-hover); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button:hover { + border: none; +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button:focus { + background-color: var(--e-a-btn-bg-hover); + color: var(--e-a-btn-color-invert); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:active, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button:active { + background-color: var(--e-a-btn-bg-active); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:not([disabled]), +.dialog-type-alert .dialog-buttons-wrapper .dialog-button:not([disabled]) { + cursor: pointer; +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:disabled, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button:disabled { + background-color: var(--e-a-btn-bg-disabled); + color: var(--e-a-btn-color-disabled); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:not(.elementor-button-state) .elementor-state-icon, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button:not(.elementor-button-state) .elementor-state-icon { + display: none; +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel { + background: transparent; + color: var(--e-a-color-txt); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel:focus { + background: var(--e-a-bg-hover); + color: var(--e-a-color-txt-hover); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt:disabled, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel:disabled, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt:disabled, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel:disabled { + background: transparent; + color: var(--e-a-color-txt-disabled); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt-border, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt-border { + border: 1px solid var(--e-a-color-txt-muted); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-success, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-success, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-success, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-success { + background-color: var(--e-a-btn-bg-success); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-success:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-success:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-success:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-success:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-success:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-success:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-success:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-success:focus { + background-color: var(--e-a-btn-bg-success-hover); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-take_over, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-take_over, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok { + background-color: var(--e-a-btn-bg-primary); + color: var(--e-a-btn-color); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-take_over:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-take_over:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-take_over:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-take_over:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok:focus { + background-color: var(--e-a-btn-bg-primary-hover); + color: var(--e-a-btn-color); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary.e-btn-txt, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-take_over, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary.dialog-cancel, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-ok, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary.e-btn-txt, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-take_over, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary.dialog-cancel, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-ok, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel { + background: transparent; + color: var(--e-a-color-primary-bold); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary.e-btn-txt:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-take_over:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary.dialog-cancel:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-ok:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary.e-btn-txt:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-take_over:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary.dialog-cancel:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-ok:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary.e-btn-txt:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-take_over:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary.dialog-cancel:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-ok:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary.e-btn-txt:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-take_over:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary.dialog-cancel:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-ok:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel:focus { + background: var(--e-a-bg-primary); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.go-pro, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-accent, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.go-pro, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-accent { + background-color: var(--e-a-btn-bg-accent); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.go-pro:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.go-pro:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-accent:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-accent:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.go-pro:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.go-pro:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-accent:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-accent:focus { + background-color: var(--e-a-btn-bg-accent-hover); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.go-pro:active, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-accent:active, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.go-pro:active, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-accent:active { + background-color: var(--e-a-btn-bg-accent-active); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-info, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-info, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-info, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-info { + background-color: var(--e-a-btn-bg-info); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-info:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-info:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-info:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-info:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-info:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-info:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-info:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-info:focus { + background-color: var(--e-a-btn-bg-info-hover); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-warning, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-warning, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-warning, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-warning { + background-color: var(--e-a-btn-bg-warning); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-warning:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-warning:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-warning:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-warning:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-warning:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-warning:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-warning:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-warning:focus { + background-color: var(--e-a-btn-bg-warning-hover); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-danger, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-danger, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-danger, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-danger { + background-color: var(--e-a-btn-bg-danger); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-danger:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-danger:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-danger:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-danger:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-danger:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-danger:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-danger:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-danger:focus { + background-color: var(--e-a-btn-bg-danger-hover); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button i, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button i { + margin-inline-end: 5px; +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button:visited, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button:visited { + color: initial; +} +.flatpickr-calendar { + width: 280px; +} +.flatpickr-calendar .flatpickr-current-month span.cur-month { + font-weight: 300; +} +.flatpickr-calendar .dayContainer { + width: 280px; + min-width: 280px; + max-width: 280px; +} +.flatpickr-calendar .flatpickr-days { + width: 280px; +} +.flatpickr-calendar .flatpickr-day { + max-width: 37px; + height: 37px; + line-height: 37px; +} + +.elementor-hidden { + display: none; +} + +.elementor-screen-only, +.screen-reader-text, +.screen-reader-text span, +.ui-helper-hidden-accessible { + position: absolute; + top: -10000em; + width: 1px; + height: 1px; + margin: -1px; + padding: 0; + overflow: hidden; + clip: rect(0, 0, 0, 0); + border: 0; +} + +.elementor-clearfix:after { + content: ""; + display: block; + clear: both; + width: 0; + height: 0; +} + +.e-logo-wrapper { + background: var(--e-a-bg-logo); + display: inline-block; + padding: 0.75em; + border-radius: 50%; + line-height: 1; +} +.e-logo-wrapper i { + color: var(--e-a-color-logo); + font-size: 1em; +} + +.elementor *, .elementor *:before, .elementor *:after { + box-sizing: border-box; +} +.elementor a { + box-shadow: none; + text-decoration: none; +} +.elementor hr { + margin: 0; + background-color: transparent; +} +.elementor img { + height: auto; + max-width: 100%; + border: none; + border-radius: 0; + box-shadow: none; +} +.elementor .elementor-widget:not(.elementor-widget-text-editor):not(.elementor-widget-theme-post-content) figure { + margin: 0; +} +.elementor embed, +.elementor iframe, +.elementor object, +.elementor video { + max-width: 100%; + width: 100%; + margin: 0; + line-height: 1; + border: none; +} +.elementor .elementor-background-video-container, +.elementor .elementor-background-holder, +.elementor .elementor-background { + height: 100%; + width: 100%; + top: 0; + left: 0; + position: absolute; + overflow: hidden; + z-index: 0; + direction: ltr; +} +.elementor .elementor-background-video-container { + transition: opacity 1s; + pointer-events: none; +} +.elementor .elementor-background-video-container.elementor-loading { + opacity: 0; +} +.elementor .elementor-background-video-embed { + max-width: none; +} +.elementor .elementor-background-video-embed, .elementor .elementor-background-video-hosted { + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); +} +.elementor .elementor-background-video { + max-width: none; + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); +} +.elementor .elementor-html5-video { + -o-object-fit: cover; + object-fit: cover; +} +.elementor .elementor-background-overlay { + height: 100%; + width: 100%; + top: 0; + left: 0; + position: absolute; +} +.elementor .elementor-background-slideshow { + position: absolute; + width: 100%; + height: 100%; + z-index: 0; + top: 0; + left: 0; +} +.elementor .elementor-background-slideshow__slide__image { + width: 100%; + height: 100%; + background-position: center center; + background-size: cover; +} + +.elementor-widget-wrap > .elementor-element.elementor-absolute, +.e-con > .elementor-element.elementor-absolute, +.e-con-inner > .elementor-element.elementor-absolute { + position: absolute; +} +.elementor-widget-wrap > .elementor-element.elementor-fixed, +.e-con > .elementor-element.elementor-fixed, +.e-con-inner > .elementor-element.elementor-fixed { + position: fixed; +} + +.elementor-widget-wrap .elementor-element.elementor-widget__width-auto, .elementor-widget-wrap .elementor-element.elementor-widget__width-initial { + max-width: 100%; +} +@media (max-width: 1024px) { + .elementor-widget-wrap .elementor-element.elementor-widget-tablet__width-auto, .elementor-widget-wrap .elementor-element.elementor-widget-tablet__width-initial { + max-width: 100%; + } +} +@media (max-width: 767px) { + .elementor-widget-wrap .elementor-element.elementor-widget-mobile__width-auto, .elementor-widget-wrap .elementor-element.elementor-widget-mobile__width-initial { + max-width: 100%; + } +} + +.elementor-element { + --flex-direction: initial; + --flex-wrap: initial; + --justify-content: initial; + --align-items: initial; + --align-content: initial; + --gap: initial; + --flex-basis: initial; + --flex-grow: initial; + --flex-shrink: initial; + --order: initial; + --align-self: initial; + flex-basis: var(--flex-basis); + flex-grow: var(--flex-grow); + flex-shrink: var(--flex-shrink); + order: var(--order); + align-self: var(--align-self); +} +.elementor-element.elementor-absolute, .elementor-element.elementor-fixed { + z-index: 1; +} +.elementor-element:where(.e-con-full, .elementor-widget) { + flex-direction: var(--flex-direction); + flex-wrap: var(--flex-wrap); + justify-content: var(--justify-content); + align-items: var(--align-items); + align-content: var(--align-content); + gap: var(--gap); +} + +.elementor-invisible { + visibility: hidden; +} + +.elementor-align-center { + text-align: center; +} +.elementor-align-center .elementor-button { + width: auto; +} +.elementor-align-right { + text-align: right; +} +.elementor-align-right .elementor-button { + width: auto; +} +.elementor-align-left { + text-align: left; +} +.elementor-align-left .elementor-button { + width: auto; +} +.elementor-align-justify .elementor-button { + width: 100%; +} + +.elementor-custom-embed-play { + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); +} +.elementor-custom-embed-play i { + font-size: 100px; + color: #fff; + text-shadow: 1px 0 6px rgba(0, 0, 0, 0.3); +} +.elementor-custom-embed-play svg { + height: 100px; + width: 100px; + fill: #fff; + filter: drop-shadow(1px 0 6px rgba(0, 0, 0, 0.3)); +} +.elementor-custom-embed-play i, +.elementor-custom-embed-play svg { + opacity: 0.8; + transition: all 0.5s; +} +.elementor-custom-embed-play.elementor-playing i { + font-family: eicons; +} +.elementor-custom-embed-play.elementor-playing i:before { + content: "\e8fb"; +} +.elementor-custom-embed-play.elementor-playing i, +.elementor-custom-embed-play.elementor-playing svg { + animation: eicon-spin 2s infinite linear; +} + +.elementor-tag { + display: inline-flex; +} + +.elementor-ken-burns { + transition-property: transform; + transition-duration: 10s; + transition-timing-function: linear; +} +.elementor-ken-burns--out { + transform: scale(1.3); +} +.elementor-ken-burns--active { + transition-duration: 20s; +} +.elementor-ken-burns--active.elementor-ken-burns--out { + transform: scale(1); +} +.elementor-ken-burns--active.elementor-ken-burns--in { + transform: scale(1.3); +} + +@media (min-width: -1) { + .elementor-widescreen-align-center { + text-align: center; + } + .elementor-widescreen-align-center .elementor-button { + width: auto; + } + .elementor-widescreen-align-right { + text-align: right; + } + .elementor-widescreen-align-right .elementor-button { + width: auto; + } + .elementor-widescreen-align-left { + text-align: left; + } + .elementor-widescreen-align-left .elementor-button { + width: auto; + } + .elementor-widescreen-align-justify .elementor-button { + width: 100%; + } +} +@media (max-width: -1) { + .elementor-laptop-align-center { + text-align: center; + } + .elementor-laptop-align-center .elementor-button { + width: auto; + } + .elementor-laptop-align-right { + text-align: right; + } + .elementor-laptop-align-right .elementor-button { + width: auto; + } + .elementor-laptop-align-left { + text-align: left; + } + .elementor-laptop-align-left .elementor-button { + width: auto; + } + .elementor-laptop-align-justify .elementor-button { + width: 100%; + } +} +@media (max-width: -1) { + .elementor-tablet_extra-align-center { + text-align: center; + } + .elementor-tablet_extra-align-center .elementor-button { + width: auto; + } + .elementor-tablet_extra-align-right { + text-align: right; + } + .elementor-tablet_extra-align-right .elementor-button { + width: auto; + } + .elementor-tablet_extra-align-left { + text-align: left; + } + .elementor-tablet_extra-align-left .elementor-button { + width: auto; + } + .elementor-tablet_extra-align-justify .elementor-button { + width: 100%; + } +} +@media (max-width: 1024px) { + .elementor-tablet-align-center { + text-align: center; + } + .elementor-tablet-align-center .elementor-button { + width: auto; + } + .elementor-tablet-align-right { + text-align: right; + } + .elementor-tablet-align-right .elementor-button { + width: auto; + } + .elementor-tablet-align-left { + text-align: left; + } + .elementor-tablet-align-left .elementor-button { + width: auto; + } + .elementor-tablet-align-justify .elementor-button { + width: 100%; + } +} +@media (max-width: -1) { + .elementor-mobile_extra-align-center { + text-align: center; + } + .elementor-mobile_extra-align-center .elementor-button { + width: auto; + } + .elementor-mobile_extra-align-right { + text-align: right; + } + .elementor-mobile_extra-align-right .elementor-button { + width: auto; + } + .elementor-mobile_extra-align-left { + text-align: left; + } + .elementor-mobile_extra-align-left .elementor-button { + width: auto; + } + .elementor-mobile_extra-align-justify .elementor-button { + width: 100%; + } +} +@media (max-width: 767px) { + .elementor-mobile-align-center { + text-align: center; + } + .elementor-mobile-align-center .elementor-button { + width: auto; + } + .elementor-mobile-align-right { + text-align: right; + } + .elementor-mobile-align-right .elementor-button { + width: auto; + } + .elementor-mobile-align-left { + text-align: left; + } + .elementor-mobile-align-left .elementor-button { + width: auto; + } + .elementor-mobile-align-justify .elementor-button { + width: 100%; + } +} +:root { + --page-title-display: block; +} + +.elementor-page-title, h1.entry-title { + display: var(--page-title-display); +} + +@keyframes eicon-spin { + 0% { + transform: rotate(0deg); + } + 100% { + transform: rotate(359deg); + } +} +.eicon-animation-spin { + animation: eicon-spin 2s infinite linear; +} + +.elementor-section { + position: relative; +} +.elementor-section .elementor-container { + display: flex; + margin-right: auto; + margin-left: auto; + position: relative; +} +@media (max-width: 1024px) { + .elementor-section .elementor-container { + flex-wrap: wrap; + } +} +.elementor-section.elementor-section-boxed > .elementor-container { + max-width: 1140px; +} +.elementor-section.elementor-section-stretched { + position: relative; + width: 100%; +} +.elementor-section.elementor-section-items-top > .elementor-container { + align-items: flex-start; +} +.elementor-section.elementor-section-items-middle > .elementor-container { + align-items: center; +} +.elementor-section.elementor-section-items-bottom > .elementor-container { + align-items: flex-end; +} +@media (min-width: 768px) { + .elementor-section.elementor-section-height-full { + height: 100vh; + } + .elementor-section.elementor-section-height-full > .elementor-container { + height: 100%; + } +} + +.elementor-bc-flex-widget .elementor-section-content-top > .elementor-container > .elementor-column > .elementor-widget-wrap { + align-items: flex-start; +} +.elementor-bc-flex-widget .elementor-section-content-middle > .elementor-container > .elementor-column > .elementor-widget-wrap { + align-items: center; +} +.elementor-bc-flex-widget .elementor-section-content-bottom > .elementor-container > .elementor-column > .elementor-widget-wrap { + align-items: flex-end; +} + +.elementor-row { + width: 100%; + display: flex; +} +@media (max-width: 1024px) { + .elementor-row { + flex-wrap: wrap; + } +} + +.elementor-widget-wrap { + position: relative; + width: 100%; + flex-wrap: wrap; + align-content: flex-start; +} +.elementor:not(.elementor-bc-flex-widget) .elementor-widget-wrap { + display: flex; +} +.elementor-widget-wrap > .elementor-element { + width: 100%; +} +.elementor-widget-wrap.e-swiper-container { + width: calc(100% - (var(--e-column-margin-left, 0px) + var(--e-column-margin-right, 0px))); +} + +.elementor-widget { + position: relative; +} +.elementor-widget:not(:last-child) { + margin-bottom: 20px; +} +.elementor-widget:not(:last-child).elementor-widget__width-auto, .elementor-widget:not(:last-child).elementor-widget__width-initial, .elementor-widget:not(:last-child).elementor-absolute { + margin-bottom: 0; +} + +.elementor-column { + position: relative; + min-height: 1px; + display: flex; +} + +.elementor-column-wrap { + width: 100%; + position: relative; + display: flex; +} + +.elementor-column-gap-narrow > .elementor-column > .elementor-element-populated { + padding: 5px; +} +.elementor-column-gap-default > .elementor-column > .elementor-element-populated { + padding: 10px; +} +.elementor-column-gap-extended > .elementor-column > .elementor-element-populated { + padding: 15px; +} +.elementor-column-gap-wide > .elementor-column > .elementor-element-populated { + padding: 20px; +} +.elementor-column-gap-wider > .elementor-column > .elementor-element-populated { + padding: 30px; +} + +.elementor-inner-section .elementor-column-gap-no .elementor-element-populated { + padding: 0; +} + +@media (min-width: 768px) { + .elementor-column.elementor-col-10, .elementor-column[data-col="10"] { + width: 10%; + } + .elementor-column.elementor-col-11, .elementor-column[data-col="11"] { + width: 11.111%; + } + .elementor-column.elementor-col-12, .elementor-column[data-col="12"] { + width: 12.5%; + } + .elementor-column.elementor-col-14, .elementor-column[data-col="14"] { + width: 14.285%; + } + .elementor-column.elementor-col-16, .elementor-column[data-col="16"] { + width: 16.666%; + } + .elementor-column.elementor-col-20, .elementor-column[data-col="20"] { + width: 20%; + } + .elementor-column.elementor-col-25, .elementor-column[data-col="25"] { + width: 25%; + } + .elementor-column.elementor-col-30, .elementor-column[data-col="30"] { + width: 30%; + } + .elementor-column.elementor-col-33, .elementor-column[data-col="33"] { + width: 33.333%; + } + .elementor-column.elementor-col-40, .elementor-column[data-col="40"] { + width: 40%; + } + .elementor-column.elementor-col-50, .elementor-column[data-col="50"] { + width: 50%; + } + .elementor-column.elementor-col-60, .elementor-column[data-col="60"] { + width: 60%; + } + .elementor-column.elementor-col-66, .elementor-column[data-col="66"] { + width: 66.666%; + } + .elementor-column.elementor-col-70, .elementor-column[data-col="70"] { + width: 70%; + } + .elementor-column.elementor-col-75, .elementor-column[data-col="75"] { + width: 75%; + } + .elementor-column.elementor-col-80, .elementor-column[data-col="80"] { + width: 80%; + } + .elementor-column.elementor-col-83, .elementor-column[data-col="83"] { + width: 83.333%; + } + .elementor-column.elementor-col-90, .elementor-column[data-col="90"] { + width: 90%; + } + .elementor-column.elementor-col-100, .elementor-column[data-col="100"] { + width: 100%; + } +} +@media (max-width: 479px) { + .elementor-column.elementor-xs-10 { + width: 10%; + } + .elementor-column.elementor-xs-11 { + width: 11.111%; + } + .elementor-column.elementor-xs-12 { + width: 12.5%; + } + .elementor-column.elementor-xs-14 { + width: 14.285%; + } + .elementor-column.elementor-xs-16 { + width: 16.666%; + } + .elementor-column.elementor-xs-20 { + width: 20%; + } + .elementor-column.elementor-xs-25 { + width: 25%; + } + .elementor-column.elementor-xs-30 { + width: 30%; + } + .elementor-column.elementor-xs-33 { + width: 33.333%; + } + .elementor-column.elementor-xs-40 { + width: 40%; + } + .elementor-column.elementor-xs-50 { + width: 50%; + } + .elementor-column.elementor-xs-60 { + width: 60%; + } + .elementor-column.elementor-xs-66 { + width: 66.666%; + } + .elementor-column.elementor-xs-70 { + width: 70%; + } + .elementor-column.elementor-xs-75 { + width: 75%; + } + .elementor-column.elementor-xs-80 { + width: 80%; + } + .elementor-column.elementor-xs-83 { + width: 83.333%; + } + .elementor-column.elementor-xs-90 { + width: 90%; + } + .elementor-column.elementor-xs-100 { + width: 100%; + } +} +@media (max-width: 767px) { + .elementor-column.elementor-sm-10 { + width: 10%; + } + .elementor-column.elementor-sm-11 { + width: 11.111%; + } + .elementor-column.elementor-sm-12 { + width: 12.5%; + } + .elementor-column.elementor-sm-14 { + width: 14.285%; + } + .elementor-column.elementor-sm-16 { + width: 16.666%; + } + .elementor-column.elementor-sm-20 { + width: 20%; + } + .elementor-column.elementor-sm-25 { + width: 25%; + } + .elementor-column.elementor-sm-30 { + width: 30%; + } + .elementor-column.elementor-sm-33 { + width: 33.333%; + } + .elementor-column.elementor-sm-40 { + width: 40%; + } + .elementor-column.elementor-sm-50 { + width: 50%; + } + .elementor-column.elementor-sm-60 { + width: 60%; + } + .elementor-column.elementor-sm-66 { + width: 66.666%; + } + .elementor-column.elementor-sm-70 { + width: 70%; + } + .elementor-column.elementor-sm-75 { + width: 75%; + } + .elementor-column.elementor-sm-80 { + width: 80%; + } + .elementor-column.elementor-sm-83 { + width: 83.333%; + } + .elementor-column.elementor-sm-90 { + width: 90%; + } + .elementor-column.elementor-sm-100 { + width: 100%; + } +} +@media (min-width: 768px) and (max-width: 1024px) { + .elementor-column.elementor-md-10 { + width: 10%; + } + .elementor-column.elementor-md-11 { + width: 11.111%; + } + .elementor-column.elementor-md-12 { + width: 12.5%; + } + .elementor-column.elementor-md-14 { + width: 14.285%; + } + .elementor-column.elementor-md-16 { + width: 16.666%; + } + .elementor-column.elementor-md-20 { + width: 20%; + } + .elementor-column.elementor-md-25 { + width: 25%; + } + .elementor-column.elementor-md-30 { + width: 30%; + } + .elementor-column.elementor-md-33 { + width: 33.333%; + } + .elementor-column.elementor-md-40 { + width: 40%; + } + .elementor-column.elementor-md-50 { + width: 50%; + } + .elementor-column.elementor-md-60 { + width: 60%; + } + .elementor-column.elementor-md-66 { + width: 66.666%; + } + .elementor-column.elementor-md-70 { + width: 70%; + } + .elementor-column.elementor-md-75 { + width: 75%; + } + .elementor-column.elementor-md-80 { + width: 80%; + } + .elementor-column.elementor-md-83 { + width: 83.333%; + } + .elementor-column.elementor-md-90 { + width: 90%; + } + .elementor-column.elementor-md-100 { + width: 100%; + } +} + +@media (min-width: -1) { + .elementor-reverse-widescreen > .elementor-container > :nth-child(1) { + order: 10; + } + .elementor-reverse-widescreen > .elementor-container > :nth-child(2) { + order: 9; + } + .elementor-reverse-widescreen > .elementor-container > :nth-child(3) { + order: 8; + } + .elementor-reverse-widescreen > .elementor-container > :nth-child(4) { + order: 7; + } + .elementor-reverse-widescreen > .elementor-container > :nth-child(5) { + order: 6; + } + .elementor-reverse-widescreen > .elementor-container > :nth-child(6) { + order: 5; + } + .elementor-reverse-widescreen > .elementor-container > :nth-child(7) { + order: 4; + } + .elementor-reverse-widescreen > .elementor-container > :nth-child(8) { + order: 3; + } + .elementor-reverse-widescreen > .elementor-container > :nth-child(9) { + order: 2; + } + .elementor-reverse-widescreen > .elementor-container > :nth-child(10) { + order: 1; + } +} +@media (min-width: 1025px) and (max-width: -1) { + .elementor-reverse-laptop > .elementor-container > :nth-child(1) { + order: 10; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(2) { + order: 9; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(3) { + order: 8; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(4) { + order: 7; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(5) { + order: 6; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(6) { + order: 5; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(7) { + order: 4; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(8) { + order: 3; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(9) { + order: 2; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(10) { + order: 1; + } +} +@media (min-width: -1) and (max-width: -1) { + .elementor-reverse-laptop > .elementor-container > :nth-child(1) { + order: 10; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(2) { + order: 9; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(3) { + order: 8; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(4) { + order: 7; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(5) { + order: 6; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(6) { + order: 5; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(7) { + order: 4; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(8) { + order: 3; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(9) { + order: 2; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(10) { + order: 1; + } +} +@media (min-width: 1025px) and (max-width: -1) { + .elementor-reverse-laptop > .elementor-container > :nth-child(1) { + order: initial; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(2) { + order: initial; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(3) { + order: initial; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(4) { + order: initial; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(5) { + order: initial; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(6) { + order: initial; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(7) { + order: initial; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(8) { + order: initial; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(9) { + order: initial; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(10) { + order: initial; + } + .elementor-reverse-tablet_extra > .elementor-container > :nth-child(1) { + order: 10; + } + .elementor-reverse-tablet_extra > .elementor-container > :nth-child(2) { + order: 9; + } + .elementor-reverse-tablet_extra > .elementor-container > :nth-child(3) { + order: 8; + } + .elementor-reverse-tablet_extra > .elementor-container > :nth-child(4) { + order: 7; + } + .elementor-reverse-tablet_extra > .elementor-container > :nth-child(5) { + order: 6; + } + .elementor-reverse-tablet_extra > .elementor-container > :nth-child(6) { + order: 5; + } + .elementor-reverse-tablet_extra > .elementor-container > :nth-child(7) { + order: 4; + } + .elementor-reverse-tablet_extra > .elementor-container > :nth-child(8) { + order: 3; + } + .elementor-reverse-tablet_extra > .elementor-container > :nth-child(9) { + order: 2; + } + .elementor-reverse-tablet_extra > .elementor-container > :nth-child(10) { + order: 1; + } +} +@media (min-width: 768px) and (max-width: 1024px) { + .elementor-reverse-tablet > .elementor-container > :nth-child(1) { + order: 10; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(2) { + order: 9; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(3) { + order: 8; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(4) { + order: 7; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(5) { + order: 6; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(6) { + order: 5; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(7) { + order: 4; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(8) { + order: 3; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(9) { + order: 2; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(10) { + order: 1; + } +} +@media (min-width: -1) and (max-width: 1024px) { + .elementor-reverse-tablet > .elementor-container > :nth-child(1) { + order: 10; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(2) { + order: 9; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(3) { + order: 8; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(4) { + order: 7; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(5) { + order: 6; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(6) { + order: 5; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(7) { + order: 4; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(8) { + order: 3; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(9) { + order: 2; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(10) { + order: 1; + } +} +@media (min-width: 768px) and (max-width: -1) { + .elementor-reverse-tablet > .elementor-container > :nth-child(1) { + order: initial; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(2) { + order: initial; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(3) { + order: initial; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(4) { + order: initial; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(5) { + order: initial; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(6) { + order: initial; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(7) { + order: initial; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(8) { + order: initial; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(9) { + order: initial; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(10) { + order: initial; + } + .elementor-reverse-mobile_extra > .elementor-container > :nth-child(1) { + order: 10; + } + .elementor-reverse-mobile_extra > .elementor-container > :nth-child(2) { + order: 9; + } + .elementor-reverse-mobile_extra > .elementor-container > :nth-child(3) { + order: 8; + } + .elementor-reverse-mobile_extra > .elementor-container > :nth-child(4) { + order: 7; + } + .elementor-reverse-mobile_extra > .elementor-container > :nth-child(5) { + order: 6; + } + .elementor-reverse-mobile_extra > .elementor-container > :nth-child(6) { + order: 5; + } + .elementor-reverse-mobile_extra > .elementor-container > :nth-child(7) { + order: 4; + } + .elementor-reverse-mobile_extra > .elementor-container > :nth-child(8) { + order: 3; + } + .elementor-reverse-mobile_extra > .elementor-container > :nth-child(9) { + order: 2; + } + .elementor-reverse-mobile_extra > .elementor-container > :nth-child(10) { + order: 1; + } +} +@media (max-width: 767px) { + .elementor-reverse-mobile > .elementor-container > :nth-child(1) { + order: 10; + } + .elementor-reverse-mobile > .elementor-container > :nth-child(2) { + order: 9; + } + .elementor-reverse-mobile > .elementor-container > :nth-child(3) { + order: 8; + } + .elementor-reverse-mobile > .elementor-container > :nth-child(4) { + order: 7; + } + .elementor-reverse-mobile > .elementor-container > :nth-child(5) { + order: 6; + } + .elementor-reverse-mobile > .elementor-container > :nth-child(6) { + order: 5; + } + .elementor-reverse-mobile > .elementor-container > :nth-child(7) { + order: 4; + } + .elementor-reverse-mobile > .elementor-container > :nth-child(8) { + order: 3; + } + .elementor-reverse-mobile > .elementor-container > :nth-child(9) { + order: 2; + } + .elementor-reverse-mobile > .elementor-container > :nth-child(10) { + order: 1; + } + .elementor-column { + width: 100%; + } +} +ul.elementor-icon-list-items.elementor-inline-items { + display: flex; + flex-wrap: wrap; +} +ul.elementor-icon-list-items.elementor-inline-items .elementor-inline-item { + word-break: break-word; +} + +.elementor-grid { + display: grid; + grid-column-gap: var(--grid-column-gap); + grid-row-gap: var(--grid-row-gap); +} +.elementor-grid .elementor-grid-item { + min-width: 0; +} +.elementor-grid-0 .elementor-grid { + display: inline-block; + width: 100%; + word-spacing: var(--grid-column-gap); + margin-bottom: calc(-1 * var(--grid-row-gap)); +} +.elementor-grid-0 .elementor-grid .elementor-grid-item { + display: inline-block; + margin-bottom: var(--grid-row-gap); + word-break: break-word; +} +.elementor-grid-1 .elementor-grid { + grid-template-columns: repeat(1, 1fr); +} +.elementor-grid-2 .elementor-grid { + grid-template-columns: repeat(2, 1fr); +} +.elementor-grid-3 .elementor-grid { + grid-template-columns: repeat(3, 1fr); +} +.elementor-grid-4 .elementor-grid { + grid-template-columns: repeat(4, 1fr); +} +.elementor-grid-5 .elementor-grid { + grid-template-columns: repeat(5, 1fr); +} +.elementor-grid-6 .elementor-grid { + grid-template-columns: repeat(6, 1fr); +} +.elementor-grid-7 .elementor-grid { + grid-template-columns: repeat(7, 1fr); +} +.elementor-grid-8 .elementor-grid { + grid-template-columns: repeat(8, 1fr); +} +.elementor-grid-9 .elementor-grid { + grid-template-columns: repeat(9, 1fr); +} +.elementor-grid-10 .elementor-grid { + grid-template-columns: repeat(10, 1fr); +} +.elementor-grid-11 .elementor-grid { + grid-template-columns: repeat(11, 1fr); +} +.elementor-grid-12 .elementor-grid { + grid-template-columns: repeat(12, 1fr); +} +@media (min-width: -1) { + .elementor-grid-widescreen-0 .elementor-grid { + display: inline-block; + width: 100%; + word-spacing: var(--grid-column-gap); + margin-bottom: calc(-1 * var(--grid-row-gap)); + } + .elementor-grid-widescreen-0 .elementor-grid .elementor-grid-item { + display: inline-block; + margin-bottom: var(--grid-row-gap); + word-break: break-word; + } + .elementor-grid-widescreen-1 .elementor-grid { + grid-template-columns: repeat(1, 1fr); + } + .elementor-grid-widescreen-2 .elementor-grid { + grid-template-columns: repeat(2, 1fr); + } + .elementor-grid-widescreen-3 .elementor-grid { + grid-template-columns: repeat(3, 1fr); + } + .elementor-grid-widescreen-4 .elementor-grid { + grid-template-columns: repeat(4, 1fr); + } + .elementor-grid-widescreen-5 .elementor-grid { + grid-template-columns: repeat(5, 1fr); + } + .elementor-grid-widescreen-6 .elementor-grid { + grid-template-columns: repeat(6, 1fr); + } + .elementor-grid-widescreen-7 .elementor-grid { + grid-template-columns: repeat(7, 1fr); + } + .elementor-grid-widescreen-8 .elementor-grid { + grid-template-columns: repeat(8, 1fr); + } + .elementor-grid-widescreen-9 .elementor-grid { + grid-template-columns: repeat(9, 1fr); + } + .elementor-grid-widescreen-10 .elementor-grid { + grid-template-columns: repeat(10, 1fr); + } + .elementor-grid-widescreen-11 .elementor-grid { + grid-template-columns: repeat(11, 1fr); + } + .elementor-grid-widescreen-12 .elementor-grid { + grid-template-columns: repeat(12, 1fr); + } +} +@media (max-width: -1) { + .elementor-grid-laptop-0 .elementor-grid { + display: inline-block; + width: 100%; + word-spacing: var(--grid-column-gap); + margin-bottom: calc(-1 * var(--grid-row-gap)); + } + .elementor-grid-laptop-0 .elementor-grid .elementor-grid-item { + display: inline-block; + margin-bottom: var(--grid-row-gap); + word-break: break-word; + } + .elementor-grid-laptop-1 .elementor-grid { + grid-template-columns: repeat(1, 1fr); + } + .elementor-grid-laptop-2 .elementor-grid { + grid-template-columns: repeat(2, 1fr); + } + .elementor-grid-laptop-3 .elementor-grid { + grid-template-columns: repeat(3, 1fr); + } + .elementor-grid-laptop-4 .elementor-grid { + grid-template-columns: repeat(4, 1fr); + } + .elementor-grid-laptop-5 .elementor-grid { + grid-template-columns: repeat(5, 1fr); + } + .elementor-grid-laptop-6 .elementor-grid { + grid-template-columns: repeat(6, 1fr); + } + .elementor-grid-laptop-7 .elementor-grid { + grid-template-columns: repeat(7, 1fr); + } + .elementor-grid-laptop-8 .elementor-grid { + grid-template-columns: repeat(8, 1fr); + } + .elementor-grid-laptop-9 .elementor-grid { + grid-template-columns: repeat(9, 1fr); + } + .elementor-grid-laptop-10 .elementor-grid { + grid-template-columns: repeat(10, 1fr); + } + .elementor-grid-laptop-11 .elementor-grid { + grid-template-columns: repeat(11, 1fr); + } + .elementor-grid-laptop-12 .elementor-grid { + grid-template-columns: repeat(12, 1fr); + } +} +@media (max-width: -1) { + .elementor-grid-tablet_extra-0 .elementor-grid { + display: inline-block; + width: 100%; + word-spacing: var(--grid-column-gap); + margin-bottom: calc(-1 * var(--grid-row-gap)); + } + .elementor-grid-tablet_extra-0 .elementor-grid .elementor-grid-item { + display: inline-block; + margin-bottom: var(--grid-row-gap); + word-break: break-word; + } + .elementor-grid-tablet_extra-1 .elementor-grid { + grid-template-columns: repeat(1, 1fr); + } + .elementor-grid-tablet_extra-2 .elementor-grid { + grid-template-columns: repeat(2, 1fr); + } + .elementor-grid-tablet_extra-3 .elementor-grid { + grid-template-columns: repeat(3, 1fr); + } + .elementor-grid-tablet_extra-4 .elementor-grid { + grid-template-columns: repeat(4, 1fr); + } + .elementor-grid-tablet_extra-5 .elementor-grid { + grid-template-columns: repeat(5, 1fr); + } + .elementor-grid-tablet_extra-6 .elementor-grid { + grid-template-columns: repeat(6, 1fr); + } + .elementor-grid-tablet_extra-7 .elementor-grid { + grid-template-columns: repeat(7, 1fr); + } + .elementor-grid-tablet_extra-8 .elementor-grid { + grid-template-columns: repeat(8, 1fr); + } + .elementor-grid-tablet_extra-9 .elementor-grid { + grid-template-columns: repeat(9, 1fr); + } + .elementor-grid-tablet_extra-10 .elementor-grid { + grid-template-columns: repeat(10, 1fr); + } + .elementor-grid-tablet_extra-11 .elementor-grid { + grid-template-columns: repeat(11, 1fr); + } + .elementor-grid-tablet_extra-12 .elementor-grid { + grid-template-columns: repeat(12, 1fr); + } +} +@media (max-width: 1024px) { + .elementor-grid-tablet-0 .elementor-grid { + display: inline-block; + width: 100%; + word-spacing: var(--grid-column-gap); + margin-bottom: calc(-1 * var(--grid-row-gap)); + } + .elementor-grid-tablet-0 .elementor-grid .elementor-grid-item { + display: inline-block; + margin-bottom: var(--grid-row-gap); + word-break: break-word; + } + .elementor-grid-tablet-1 .elementor-grid { + grid-template-columns: repeat(1, 1fr); + } + .elementor-grid-tablet-2 .elementor-grid { + grid-template-columns: repeat(2, 1fr); + } + .elementor-grid-tablet-3 .elementor-grid { + grid-template-columns: repeat(3, 1fr); + } + .elementor-grid-tablet-4 .elementor-grid { + grid-template-columns: repeat(4, 1fr); + } + .elementor-grid-tablet-5 .elementor-grid { + grid-template-columns: repeat(5, 1fr); + } + .elementor-grid-tablet-6 .elementor-grid { + grid-template-columns: repeat(6, 1fr); + } + .elementor-grid-tablet-7 .elementor-grid { + grid-template-columns: repeat(7, 1fr); + } + .elementor-grid-tablet-8 .elementor-grid { + grid-template-columns: repeat(8, 1fr); + } + .elementor-grid-tablet-9 .elementor-grid { + grid-template-columns: repeat(9, 1fr); + } + .elementor-grid-tablet-10 .elementor-grid { + grid-template-columns: repeat(10, 1fr); + } + .elementor-grid-tablet-11 .elementor-grid { + grid-template-columns: repeat(11, 1fr); + } + .elementor-grid-tablet-12 .elementor-grid { + grid-template-columns: repeat(12, 1fr); + } +} +@media (max-width: -1) { + .elementor-grid-mobile_extra-0 .elementor-grid { + display: inline-block; + width: 100%; + word-spacing: var(--grid-column-gap); + margin-bottom: calc(-1 * var(--grid-row-gap)); + } + .elementor-grid-mobile_extra-0 .elementor-grid .elementor-grid-item { + display: inline-block; + margin-bottom: var(--grid-row-gap); + word-break: break-word; + } + .elementor-grid-mobile_extra-1 .elementor-grid { + grid-template-columns: repeat(1, 1fr); + } + .elementor-grid-mobile_extra-2 .elementor-grid { + grid-template-columns: repeat(2, 1fr); + } + .elementor-grid-mobile_extra-3 .elementor-grid { + grid-template-columns: repeat(3, 1fr); + } + .elementor-grid-mobile_extra-4 .elementor-grid { + grid-template-columns: repeat(4, 1fr); + } + .elementor-grid-mobile_extra-5 .elementor-grid { + grid-template-columns: repeat(5, 1fr); + } + .elementor-grid-mobile_extra-6 .elementor-grid { + grid-template-columns: repeat(6, 1fr); + } + .elementor-grid-mobile_extra-7 .elementor-grid { + grid-template-columns: repeat(7, 1fr); + } + .elementor-grid-mobile_extra-8 .elementor-grid { + grid-template-columns: repeat(8, 1fr); + } + .elementor-grid-mobile_extra-9 .elementor-grid { + grid-template-columns: repeat(9, 1fr); + } + .elementor-grid-mobile_extra-10 .elementor-grid { + grid-template-columns: repeat(10, 1fr); + } + .elementor-grid-mobile_extra-11 .elementor-grid { + grid-template-columns: repeat(11, 1fr); + } + .elementor-grid-mobile_extra-12 .elementor-grid { + grid-template-columns: repeat(12, 1fr); + } +} +@media (max-width: 767px) { + .elementor-grid-mobile-0 .elementor-grid { + display: inline-block; + width: 100%; + word-spacing: var(--grid-column-gap); + margin-bottom: calc(-1 * var(--grid-row-gap)); + } + .elementor-grid-mobile-0 .elementor-grid .elementor-grid-item { + display: inline-block; + margin-bottom: var(--grid-row-gap); + word-break: break-word; + } + .elementor-grid-mobile-1 .elementor-grid { + grid-template-columns: repeat(1, 1fr); + } + .elementor-grid-mobile-2 .elementor-grid { + grid-template-columns: repeat(2, 1fr); + } + .elementor-grid-mobile-3 .elementor-grid { + grid-template-columns: repeat(3, 1fr); + } + .elementor-grid-mobile-4 .elementor-grid { + grid-template-columns: repeat(4, 1fr); + } + .elementor-grid-mobile-5 .elementor-grid { + grid-template-columns: repeat(5, 1fr); + } + .elementor-grid-mobile-6 .elementor-grid { + grid-template-columns: repeat(6, 1fr); + } + .elementor-grid-mobile-7 .elementor-grid { + grid-template-columns: repeat(7, 1fr); + } + .elementor-grid-mobile-8 .elementor-grid { + grid-template-columns: repeat(8, 1fr); + } + .elementor-grid-mobile-9 .elementor-grid { + grid-template-columns: repeat(9, 1fr); + } + .elementor-grid-mobile-10 .elementor-grid { + grid-template-columns: repeat(10, 1fr); + } + .elementor-grid-mobile-11 .elementor-grid { + grid-template-columns: repeat(11, 1fr); + } + .elementor-grid-mobile-12 .elementor-grid { + grid-template-columns: repeat(12, 1fr); + } +} + +@media (min-width: 1025px) { + #elementor-device-mode:after { + content: "desktop"; + } +} +@media (min-width: -1) { + #elementor-device-mode:after { + content: "widescreen"; + } +} +@media (max-width: -1) { + #elementor-device-mode:after { + content: "laptop"; + } +} +@media (max-width: -1) { + #elementor-device-mode:after { + content: "tablet_extra"; + } +} +@media (max-width: 1024px) { + #elementor-device-mode:after { + content: "tablet"; + } +} +@media (max-width: -1) { + #elementor-device-mode:after { + content: "mobile_extra"; + } +} +@media (max-width: 767px) { + #elementor-device-mode:after { + content: "mobile"; + } +} + +.e-con { + --border-radius: 0; + --border-block-start-width: 0px; + --border-inline-end-width: 0px; + --border-block-end-width: 0px; + --border-inline-start-width: 0px; + --border-style: initial; + --border-color: initial; + --container-widget-width: 100%; + --container-widget-height: initial; + --container-widget-flex-grow: 0; + --container-widget-align-self: initial; + --content-width: min(100%, var(--container-max-width, 1140px)); + --width: 100%; + --min-height: initial; + --height: auto; + --text-align: initial; + --margin-block-start: 0px; + --margin-inline-end: 0px; + --margin-block-end: 0px; + --margin-inline-start: 0px; + --padding-block-start: var(--container-default-padding-block-start, 10px); + --padding-inline-end: var(--container-default-padding-inline-end, 10px); + --padding-block-end: var(--container-default-padding-block-end, 10px); + --padding-inline-start: var(--container-default-padding-inline-start, 10px); + --position: relative; + --z-index: revert; + --overflow: visible; + --gap: var(--widgets-spacing, 20px); + --overlay-mix-blend-mode: initial; + --overlay-opacity: 1; + --overlay-transition: 0.3s; + --e-con-grid-template-columns: repeat(3, 1fr); + --e-con-grid-template-rows: repeat(2, 1fr); + position: var(--position); + width: var(--width); + min-width: 0; + min-height: var(--min-height); + height: var(--height); + border-radius: var(--border-radius); + margin-block-start: var(--bc-margin-block-start, var(--margin-block-start)); + margin-inline-end: var(--bc-margin-inline-end, var(--margin-inline-end)); + margin-block-end: var(--bc-margin-block-end, var(--margin-block-end)); + margin-inline-start: var(--bc-margin-inline-start, var(--margin-inline-start)); + padding-inline-start: var(--bc-padding-inline-start, var(--padding-inline-start)); + padding-inline-end: var(--bc-padding-inline-end, var(--padding-inline-end)); + z-index: var(--z-index); + overflow: var(--overflow); + transition: background var(--background-transition, 0.3s), border var(--border-transition, 0.3s), box-shadow var(--border-transition, 0.3s), transform var(--e-con-transform-transition-duration, 0.4s); +} +.e-con.e-flex { + --flex-direction: column; + --flex-basis: auto; + --flex-grow: 0; + --flex-shrink: 1; + flex: var(--flex-grow) var(--flex-shrink) var(--flex-basis); +} +.e-con-full, .e-con > .e-con-inner { + text-align: var(--text-align); + padding-block-start: var(--bc-padding-block-start, var(--padding-block-start)); + padding-block-end: var(--bc-padding-block-end, var(--padding-block-end)); +} +.e-con-full.e-flex, .e-con.e-flex > .e-con-inner { + flex-direction: var(--flex-direction); +} +.e-con, .e-con > .e-con-inner { + display: var(--display); +} +.e-con.e-grid { + --grid-justify-content: start; + --grid-align-content: start; + --grid-auto-flow: row; +} +.e-con.e-grid, .e-con.e-grid > .e-con-inner { + grid-template-columns: var(--e-con-grid-template-columns); + grid-template-rows: var(--e-con-grid-template-rows); + justify-content: var(--grid-justify-content); + align-content: var(--grid-align-content); + grid-auto-flow: var(--grid-auto-flow); + justify-items: var(--justify-items); + align-items: var(--align-items); +} +.e-con-boxed.e-flex { + flex-direction: column; + flex-wrap: initial; + justify-content: initial; + align-items: initial; + align-content: initial; +} +.e-con-boxed.e-grid { + justify-items: initial; + grid-template-columns: 1fr; + grid-template-rows: 1fr; +} +.e-con-boxed { + text-align: initial; + gap: initial; +} +.e-con.e-flex > .e-con-inner { + flex-wrap: var(--flex-wrap); + justify-content: var(--justify-content); + align-items: var(--align-items); + align-content: var(--align-content); + flex-basis: initial; + flex-grow: 1; + flex-shrink: initial; + align-self: initial; +} +.e-con.e-grid > .e-con-inner { + justify-items: var(--justify-items); + align-items: var(--align-items); +} +.e-con > .e-con-inner { + gap: var(--gap); + width: 100%; + max-width: var(--content-width); + margin: 0 auto; + padding-inline-start: 0; + padding-inline-end: 0; + height: 100%; +} +:is(.elementor-section-wrap, [data-elementor-id]) > .e-con { + --margin-inline-end: auto; + --margin-inline-start: auto; + max-width: min(100%, var(--width)); +} +.e-con .elementor-widget.elementor-widget { + margin-block-end: 0; +} +.e-con::before, :is(.e-con, .e-con > .e-con-inner) > .elementor-background-video-container::before, +.e-con > .elementor-motion-effects-container > .elementor-motion-effects-layer::before, +.e-con > .elementor-background-slideshow::before { + content: var(--background-overlay); + display: block; + position: absolute; + mix-blend-mode: var(--overlay-mix-blend-mode); + opacity: var(--overlay-opacity); + transition: var(--overlay-transition, 0.3s); + border-radius: var(--border-radius); + border-style: var(--border-style); + border-color: var(--border-color); + border-block-start-width: var(--border-block-start-width); + border-inline-end-width: var(--border-inline-end-width); + border-block-end-width: var(--border-block-end-width); + border-inline-start-width: var(--border-inline-start-width); + top: calc(0px - var(--border-block-start-width)); + left: calc(0px - var(--border-inline-start-width)); + width: max(100% + var(--border-inline-end-width) + var(--border-inline-start-width), 100%); + height: max(100% + var(--border-block-start-width) + var(--border-block-end-width), 100%); +} +.e-con::before { + transition: background var(--overlay-transition, 0.3s), border-radius var(--border-transition, 0.3s), opacity var(--overlay-transition, 0.3s); +} +.e-con > .elementor-background-slideshow, :is(.e-con, .e-con > .e-con-inner) > .elementor-background-video-container { + border-radius: var(--border-radius); + border-style: var(--border-style); + border-color: var(--border-color); + border-block-start-width: var(--border-block-start-width); + border-inline-end-width: var(--border-inline-end-width); + border-block-end-width: var(--border-block-end-width); + border-inline-start-width: var(--border-inline-start-width); + top: calc(0px - var(--border-block-start-width)); + left: calc(0px - var(--border-inline-start-width)); + width: max(100% + var(--border-inline-end-width) + var(--border-inline-start-width), 100%); + height: max(100% + var(--border-block-start-width) + var(--border-block-end-width), 100%); +} +@media (max-width: 767px) { + :is(.e-con, .e-con > .e-con-inner) > .elementor-background-video-container.elementor-hidden-phone { + display: none; + } +} +:is(.e-con, .e-con > .e-con-inner) > .elementor-background-video-container::before { + z-index: 1; +} +:is(.e-con, .e-con > .e-con-inner) > .elementor-background-slideshow::before { + z-index: 2; +} +.e-con .elementor-widget { + min-width: 0; +} +.e-con .elementor-widget-video, .e-con .elementor-widget-google_maps, .e-con .elementor-widget-empty { + width: 100%; +} +.e-con .elementor-widget.e-widget-swiper { + width: 100%; +} +.e-con > .elementor-widget > .elementor-widget-container, .e-con > .e-con-inner > .elementor-widget > .elementor-widget-container { + height: 100%; +} +.elementor.elementor .e-con > .elementor-widget, .e-con.e-con > .e-con-inner > .elementor-widget { + max-width: 100%; +} + +@media (max-width: 767px) { + .e-con.e-flex { + --width: 100%; + --flex-wrap: wrap; + } +} +.e-con { + --bc-margin-block-start: var(--margin-top); + --bc-margin-block-end: var(--margin-bottom); + --bc-margin-inline-start: var(--margin-left); + --bc-margin-inline-end: var(--margin-right); + --bc-padding-block-start: var(--padding-top); + --bc-padding-block-end: var(--padding-bottom); + --bc-padding-inline-start: var(--padding-left); + --bc-padding-inline-end: var(--padding-right); +} +[dir=rtl] .e-con { + --bc-margin-inline-start: var(--margin-right); + --bc-margin-inline-end: var(--margin-left); + --bc-padding-inline-start: var(--padding-right); + --bc-padding-inline-end: var(--padding-left); +} + +.elementor-form-fields-wrapper { + display: flex; + flex-wrap: wrap; +} +.elementor-form-fields-wrapper.elementor-labels-above .elementor-field-group > input, .elementor-form-fields-wrapper.elementor-labels-above .elementor-field-group > textarea, .elementor-form-fields-wrapper.elementor-labels-above .elementor-field-group > .elementor-select-wrapper, .elementor-form-fields-wrapper.elementor-labels-above .elementor-field-group .elementor-field-subgroup { + flex-basis: 100%; + max-width: 100%; +} +.elementor-form-fields-wrapper.elementor-labels-inline > .elementor-field-group > input, .elementor-form-fields-wrapper.elementor-labels-inline > .elementor-field-group .elementor-select-wrapper { + flex-grow: 1; +} + +.elementor-field-group { + flex-wrap: wrap; + align-items: center; +} +.elementor-field-group.elementor-field-type-submit { + align-items: flex-end; +} +.elementor-field-group .elementor-field-textual { + width: 100%; + max-width: 100%; + border: 1px solid #69727D; + background-color: transparent; + color: #1f2124; + vertical-align: middle; + flex-grow: 1; +} +.elementor-field-group .elementor-field-textual:focus { + box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.1) inset; + outline: 0; +} +.elementor-field-group .elementor-field-textual::-moz-placeholder { + color: inherit; + font-family: inherit; + opacity: 0.6; +} +.elementor-field-group .elementor-field-textual::placeholder { + color: inherit; + font-family: inherit; + opacity: 0.6; +} +.elementor-field-group .elementor-select-wrapper { + display: flex; + position: relative; + width: 100%; +} +.elementor-field-group .elementor-select-wrapper select { + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + color: inherit; + font-size: inherit; + font-family: inherit; + font-weight: inherit; + font-style: inherit; + text-transform: inherit; + letter-spacing: inherit; + line-height: inherit; + flex-basis: 100%; + padding-right: 20px; +} +.elementor-field-group .elementor-select-wrapper:before { + content: "\e92a"; + font-family: "eicons"; + font-size: 15px; + position: absolute; + top: 50%; + transform: translateY(-50%); + right: 10px; + pointer-events: none; + text-shadow: 0 0 3px rgba(0, 0, 0, 0.3); +} +.elementor-field-group.elementor-field-type-select-multiple .elementor-select-wrapper:before { + content: ""; +} + +.elementor-field-subgroup { + display: flex; + flex-wrap: wrap; +} +.elementor-field-subgroup .elementor-field-option label { + display: inline-block; +} +.elementor-field-subgroup.elementor-subgroup-inline .elementor-field-option { + padding-right: 10px; +} +.elementor-field-subgroup:not(.elementor-subgroup-inline) .elementor-field-option { + flex-basis: 100%; +} + +.elementor-field-type-checkbox .elementor-field-subgroup .elementor-field-option input, +.elementor-field-type-checkbox .elementor-field-subgroup .elementor-field-option label, +.elementor-field-type-radio .elementor-field-subgroup .elementor-field-option input, +.elementor-field-type-radio .elementor-field-subgroup .elementor-field-option label, +.elementor-field-type-acceptance .elementor-field-subgroup .elementor-field-option input, +.elementor-field-type-acceptance .elementor-field-subgroup .elementor-field-option label { + display: inline; +} + +.elementor-field-label { + cursor: pointer; +} +.elementor-mark-required .elementor-field-label:after { + content: "*"; + color: red; + padding-left: 0.2em; +} + +.elementor-field-textual { + line-height: 1.4; + font-size: 15px; + min-height: 40px; + padding: 5px 14px; + border-radius: 3px; +} +.elementor-field-textual.elementor-size-xs { + font-size: 13px; + min-height: 33px; + padding: 4px 12px; + border-radius: 2px; +} +.elementor-field-textual.elementor-size-md { + font-size: 16px; + min-height: 47px; + padding: 6px 16px; + border-radius: 4px; +} +.elementor-field-textual.elementor-size-lg { + font-size: 18px; + min-height: 59px; + padding: 7px 20px; + border-radius: 5px; +} +.elementor-field-textual.elementor-size-xl { + font-size: 20px; + min-height: 72px; + padding: 8px 24px; + border-radius: 6px; +} + +.elementor-button-align-stretch .elementor-field-type-submit:not(.e-form__buttons__wrapper) .elementor-button { + flex-basis: 100%; +} +.elementor-button-align-stretch .e-form__buttons__wrapper { + flex-basis: 50%; + flex-grow: 1; +} +.elementor-button-align-stretch .e-form__buttons__wrapper__button { + flex-basis: 100%; +} +.elementor-button-align-center .elementor-field-type-submit, +.elementor-button-align-center .e-form__buttons { + justify-content: center; +} +.elementor-button-align-start .elementor-field-type-submit, +.elementor-button-align-start .e-form__buttons { + justify-content: flex-start; +} +.elementor-button-align-end .elementor-field-type-submit, +.elementor-button-align-end .e-form__buttons { + justify-content: flex-end; +} +.elementor-button-align-center .elementor-field-type-submit:not(.e-form__buttons__wrapper) .elementor-button, .elementor-button-align-start .elementor-field-type-submit:not(.e-form__buttons__wrapper) .elementor-button, .elementor-button-align-end .elementor-field-type-submit:not(.e-form__buttons__wrapper) .elementor-button { + flex-basis: initial; +} +.elementor-button-align-center .e-form__buttons__wrapper, .elementor-button-align-start .e-form__buttons__wrapper, .elementor-button-align-end .e-form__buttons__wrapper { + flex-grow: initial; +} +.elementor-button-align-center .e-form__buttons__wrapper, .elementor-button-align-center .e-form__buttons__wrapper__button, .elementor-button-align-start .e-form__buttons__wrapper, .elementor-button-align-start .e-form__buttons__wrapper__button, .elementor-button-align-end .e-form__buttons__wrapper, .elementor-button-align-end .e-form__buttons__wrapper__button { + flex-basis: initial; +} + +@media screen and (max-width: 1024px) { + .elementor-tablet-button-align-stretch .elementor-field-type-submit:not(.e-form__buttons__wrapper) .elementor-button { + flex-basis: 100%; + } + .elementor-tablet-button-align-stretch .e-form__buttons__wrapper { + flex-basis: 50%; + flex-grow: 1; + } + .elementor-tablet-button-align-stretch .e-form__buttons__wrapper__button { + flex-basis: 100%; + } + .elementor-tablet-button-align-center .elementor-field-type-submit, + .elementor-tablet-button-align-center .e-form__buttons { + justify-content: center; + } + .elementor-tablet-button-align-start .elementor-field-type-submit, + .elementor-tablet-button-align-start .e-form__buttons { + justify-content: flex-start; + } + .elementor-tablet-button-align-end .elementor-field-type-submit, + .elementor-tablet-button-align-end .e-form__buttons { + justify-content: flex-end; + } + .elementor-tablet-button-align-center .elementor-field-type-submit:not(.e-form__buttons__wrapper) .elementor-button, .elementor-tablet-button-align-start .elementor-field-type-submit:not(.e-form__buttons__wrapper) .elementor-button, .elementor-tablet-button-align-end .elementor-field-type-submit:not(.e-form__buttons__wrapper) .elementor-button { + flex-basis: initial; + } + .elementor-tablet-button-align-center .e-form__buttons__wrapper, .elementor-tablet-button-align-start .e-form__buttons__wrapper, .elementor-tablet-button-align-end .e-form__buttons__wrapper { + flex-grow: initial; + } + .elementor-tablet-button-align-center .e-form__buttons__wrapper, .elementor-tablet-button-align-center .e-form__buttons__wrapper__button, .elementor-tablet-button-align-start .e-form__buttons__wrapper, .elementor-tablet-button-align-start .e-form__buttons__wrapper__button, .elementor-tablet-button-align-end .e-form__buttons__wrapper, .elementor-tablet-button-align-end .e-form__buttons__wrapper__button { + flex-basis: initial; + } +} +@media screen and (max-width: 767px) { + .elementor-mobile-button-align-stretch .elementor-field-type-submit:not(.e-form__buttons__wrapper) .elementor-button { + flex-basis: 100%; + } + .elementor-mobile-button-align-stretch .e-form__buttons__wrapper { + flex-basis: 50%; + flex-grow: 1; + } + .elementor-mobile-button-align-stretch .e-form__buttons__wrapper__button { + flex-basis: 100%; + } + .elementor-mobile-button-align-center .elementor-field-type-submit, + .elementor-mobile-button-align-center .e-form__buttons { + justify-content: center; + } + .elementor-mobile-button-align-start .elementor-field-type-submit, + .elementor-mobile-button-align-start .e-form__buttons { + justify-content: flex-start; + } + .elementor-mobile-button-align-end .elementor-field-type-submit, + .elementor-mobile-button-align-end .e-form__buttons { + justify-content: flex-end; + } + .elementor-mobile-button-align-center .elementor-field-type-submit:not(.e-form__buttons__wrapper) .elementor-button, .elementor-mobile-button-align-start .elementor-field-type-submit:not(.e-form__buttons__wrapper) .elementor-button, .elementor-mobile-button-align-end .elementor-field-type-submit:not(.e-form__buttons__wrapper) .elementor-button { + flex-basis: initial; + } + .elementor-mobile-button-align-center .e-form__buttons__wrapper, .elementor-mobile-button-align-start .e-form__buttons__wrapper, .elementor-mobile-button-align-end .e-form__buttons__wrapper { + flex-grow: initial; + } + .elementor-mobile-button-align-center .e-form__buttons__wrapper, .elementor-mobile-button-align-center .e-form__buttons__wrapper__button, .elementor-mobile-button-align-start .e-form__buttons__wrapper, .elementor-mobile-button-align-start .e-form__buttons__wrapper__button, .elementor-mobile-button-align-end .e-form__buttons__wrapper, .elementor-mobile-button-align-end .e-form__buttons__wrapper__button { + flex-basis: initial; + } +} +.elementor-error .elementor-field { + border-color: #d9534f; +} +.elementor-error .help-inline { + color: #d9534f; + font-size: 0.9em; +} + +.elementor-message { + margin: 10px 0; + font-size: 1em; + line-height: 1; +} +.elementor-message:before { + content: "\e90e"; + display: inline-block; + font-family: eicons; + font-weight: normal; + font-style: normal; + vertical-align: middle; + margin-right: 5px; +} +.elementor-message.elementor-message-danger { + color: #d9534f; +} +.elementor-message.elementor-message-danger:before { + content: "\e87f"; +} +.elementor-message.form-message-success { + color: #5cb85c; +} + +.elementor-form .elementor-button { + padding-top: 0; + padding-bottom: 0; + border: none; +} +.elementor-form .elementor-button > span { + display: flex; + justify-content: center; +} +.elementor-form .elementor-button.elementor-size-xs { + min-height: 33px; +} +.elementor-form .elementor-button.elementor-size-sm { + min-height: 40px; +} +.elementor-form .elementor-button.elementor-size-md { + min-height: 47px; +} +.elementor-form .elementor-button.elementor-size-lg { + min-height: 59px; +} +.elementor-form .elementor-button.elementor-size-xl { + min-height: 72px; +} + +.elementor-element .elementor-widget-container { + transition: background 0.3s, border 0.3s, border-radius 0.3s, box-shadow 0.3s, transform var(--e-transform-transition-duration, 400ms); +} + +.elementor-button { + display: inline-block; + line-height: 1; + background-color: #69727D; + font-size: 15px; + padding: 12px 24px; + border-radius: 3px; + color: #fff; + fill: #fff; + text-align: center; + transition: all 0.3s; +} +.elementor-button:hover, .elementor-button:focus, .elementor-button:visited { + color: #fff; +} +.elementor-button-content-wrapper { + display: flex; + justify-content: center; +} +.elementor-button-icon { + flex-grow: 0; + order: 5; +} +.elementor-button-icon svg { + width: 1em; + height: auto; +} +.elementor-button-icon .e-font-icon-svg { + height: 1em; +} +.elementor-button-text { + flex-grow: 1; + order: 10; + display: inline-block; +} +.elementor-button.elementor-size-xs { + font-size: 13px; + padding: 10px 20px; + border-radius: 2px; +} +.elementor-button.elementor-size-md { + font-size: 16px; + padding: 15px 30px; + border-radius: 4px; +} +.elementor-button.elementor-size-lg { + font-size: 18px; + padding: 20px 40px; + border-radius: 5px; +} +.elementor-button.elementor-size-xl { + font-size: 20px; + padding: 25px 50px; + border-radius: 6px; +} +.elementor-button .elementor-align-icon-right { + margin-left: 5px; + order: 15; +} +.elementor-button .elementor-align-icon-left { + margin-right: 5px; + order: 5; +} +.elementor-button span { + text-decoration: inherit; +} + +.elementor-element.elementor-button-info .elementor-button { + background-color: #5bc0de; +} +.elementor-element.elementor-button-success .elementor-button { + background-color: #5cb85c; +} +.elementor-element.elementor-button-warning .elementor-button { + background-color: #f0ad4e; +} +.elementor-element.elementor-button-danger .elementor-button { + background-color: #d9534f; +} + +.elementor-widget-button .elementor-button .elementor-button-info { + background-color: #5bc0de; +} +.elementor-widget-button .elementor-button .elementor-button-success { + background-color: #5cb85c; +} +.elementor-widget-button .elementor-button .elementor-button-warning { + background-color: #f0ad4e; +} +.elementor-widget-button .elementor-button .elementor-button-danger { + background-color: #d9534f; +} + +.elementor-tab-title a { + color: inherit; +} + +.elementor-view-stacked .elementor-icon { + padding: 0.5em; + background-color: #69727D; + color: #fff; + fill: #fff; +} + +.elementor-view-framed .elementor-icon { + padding: 0.5em; + color: #69727D; + border: 3px solid #69727D; + background-color: transparent; +} + +.elementor-icon { + display: inline-block; + line-height: 1; + transition: all 0.3s; + color: #69727D; + font-size: 50px; + text-align: center; +} +.elementor-icon:hover { + color: #69727D; +} +.elementor-icon i, .elementor-icon svg { + width: 1em; + height: 1em; + position: relative; + display: block; +} +.elementor-icon i:before, .elementor-icon svg:before { + position: absolute; + left: 50%; + transform: translateX(-50%); +} +.elementor-icon i.fad { + width: initial; +} + +.elementor-shape-circle .elementor-icon { + border-radius: 50%; +} + +.e-transform .elementor-widget-container { + transform: perspective(var(--e-transform-perspective, 0)) rotateZ(var(--e-transform-rotateZ, 0)) rotateX(var(--e-transform-rotateX, 0)) rotateY(var(--e-transform-rotateY, 0)) translate(var(--e-transform-translate, 0)) translateX(var(--e-transform-translateX, 0)) translateY(var(--e-transform-translateY, 0)) scaleX(calc(var(--e-transform-flipX, 1) * var(--e-transform-scaleX, var(--e-transform-scale, 1)))) scaleY(calc(var(--e-transform-flipY, 1) * var(--e-transform-scaleY, var(--e-transform-scale, 1)))) skewX(var(--e-transform-skewX, 0)) skewY(var(--e-transform-skewY, 0)); + transform-origin: var(--e-transform-origin-y) var(--e-transform-origin-x); +} + +.e-con.e-transform { + transform: perspective(var(--e-con-transform-perspective, 0)) rotateZ(var(--e-con-transform-rotateZ, 0)) rotateX(var(--e-con-transform-rotateX, 0)) rotateY(var(--e-con-transform-rotateY, 0)) translate(var(--e-con-transform-translate, 0)) translateX(var(--e-con-transform-translateX, 0)) translateY(var(--e-con-transform-translateY, 0)) scaleX(calc(var(--e-con-transform-flipX, 1) * var(--e-con-transform-scaleX, var(--e-con-transform-scale, 1)))) scaleY(calc(var(--e-con-transform-flipY, 1) * var(--e-con-transform-scaleY, var(--e-con-transform-scale, 1)))) skewX(var(--e-con-transform-skewX, 0)) skewY(var(--e-con-transform-skewY, 0)); + transform-origin: var(--e-con-transform-origin-y) var(--e-con-transform-origin-x); +} + +.elementor-element, .elementor-lightbox { + --swiper-theme-color: #000; + --swiper-navigation-size: 44px; + --swiper-pagination-bullet-size: 6px; + --swiper-pagination-bullet-horizontal-gap: 6px; +} +.elementor-element .swiper .swiper-slide figure, +.elementor-element .swiper-container .swiper-slide figure, .elementor-lightbox .swiper .swiper-slide figure, +.elementor-lightbox .swiper-container .swiper-slide figure { + line-height: 0; +} +.elementor-element .swiper .elementor-lightbox-content-source, +.elementor-element .swiper-container .elementor-lightbox-content-source, .elementor-lightbox .swiper .elementor-lightbox-content-source, +.elementor-lightbox .swiper-container .elementor-lightbox-content-source { + display: none; +} +.elementor-element .swiper .elementor-swiper-button, +.elementor-element .swiper ~ .elementor-swiper-button, +.elementor-element .swiper-container .elementor-swiper-button, +.elementor-element .swiper-container ~ .elementor-swiper-button, .elementor-lightbox .swiper .elementor-swiper-button, +.elementor-lightbox .swiper ~ .elementor-swiper-button, +.elementor-lightbox .swiper-container .elementor-swiper-button, +.elementor-lightbox .swiper-container ~ .elementor-swiper-button { + position: absolute; + display: inline-flex; + z-index: 1; + cursor: pointer; + font-size: 25px; + color: rgba(238, 238, 238, 0.9); + top: 50%; + transform: translateY(-50%); +} +.elementor-element .swiper .elementor-swiper-button svg, +.elementor-element .swiper ~ .elementor-swiper-button svg, +.elementor-element .swiper-container .elementor-swiper-button svg, +.elementor-element .swiper-container ~ .elementor-swiper-button svg, .elementor-lightbox .swiper .elementor-swiper-button svg, +.elementor-lightbox .swiper ~ .elementor-swiper-button svg, +.elementor-lightbox .swiper-container .elementor-swiper-button svg, +.elementor-lightbox .swiper-container ~ .elementor-swiper-button svg { + fill: rgba(238, 238, 238, 0.9); + height: 1em; + width: 1em; +} +.elementor-element .swiper .elementor-swiper-button-prev, +.elementor-element .swiper ~ .elementor-swiper-button-prev, +.elementor-element .swiper-container .elementor-swiper-button-prev, +.elementor-element .swiper-container ~ .elementor-swiper-button-prev, .elementor-lightbox .swiper .elementor-swiper-button-prev, +.elementor-lightbox .swiper ~ .elementor-swiper-button-prev, +.elementor-lightbox .swiper-container .elementor-swiper-button-prev, +.elementor-lightbox .swiper-container ~ .elementor-swiper-button-prev { + left: 10px; +} +.elementor-element .swiper .elementor-swiper-button-next, +.elementor-element .swiper ~ .elementor-swiper-button-next, +.elementor-element .swiper-container .elementor-swiper-button-next, +.elementor-element .swiper-container ~ .elementor-swiper-button-next, .elementor-lightbox .swiper .elementor-swiper-button-next, +.elementor-lightbox .swiper ~ .elementor-swiper-button-next, +.elementor-lightbox .swiper-container .elementor-swiper-button-next, +.elementor-lightbox .swiper-container ~ .elementor-swiper-button-next { + right: 10px; +} +.elementor-element .swiper .elementor-swiper-button.swiper-button-disabled, +.elementor-element .swiper ~ .elementor-swiper-button.swiper-button-disabled, +.elementor-element .swiper-container .elementor-swiper-button.swiper-button-disabled, +.elementor-element .swiper-container ~ .elementor-swiper-button.swiper-button-disabled, .elementor-lightbox .swiper .elementor-swiper-button.swiper-button-disabled, +.elementor-lightbox .swiper ~ .elementor-swiper-button.swiper-button-disabled, +.elementor-lightbox .swiper-container .elementor-swiper-button.swiper-button-disabled, +.elementor-lightbox .swiper-container ~ .elementor-swiper-button.swiper-button-disabled { + opacity: 0.3; +} +.elementor-element .swiper .swiper-image-stretch .swiper-slide .swiper-slide-image, +.elementor-element .swiper-container .swiper-image-stretch .swiper-slide .swiper-slide-image, .elementor-lightbox .swiper .swiper-image-stretch .swiper-slide .swiper-slide-image, +.elementor-lightbox .swiper-container .swiper-image-stretch .swiper-slide .swiper-slide-image { + width: 100%; +} +.elementor-element .swiper .swiper-pagination-fraction, +.elementor-element .swiper .swiper-pagination-custom, +.elementor-element .swiper .swiper-horizontal > .swiper-pagination-bullets, +.elementor-element .swiper .swiper-pagination-bullets.swiper-pagination-horizontal, +.elementor-element .swiper ~ .swiper-pagination-fraction, +.elementor-element .swiper ~ .swiper-pagination-custom, +.elementor-element .swiper ~ .swiper-pagination-bullets.swiper-pagination-horizontal, +.elementor-element .swiper-container .swiper-pagination-fraction, +.elementor-element .swiper-container .swiper-pagination-custom, +.elementor-element .swiper-container .swiper-horizontal > .swiper-pagination-bullets, +.elementor-element .swiper-container .swiper-pagination-bullets.swiper-pagination-horizontal, +.elementor-element .swiper-container ~ .swiper-pagination-fraction, +.elementor-element .swiper-container ~ .swiper-pagination-custom, +.elementor-element .swiper-container ~ .swiper-pagination-bullets.swiper-pagination-horizontal, .elementor-lightbox .swiper .swiper-pagination-fraction, +.elementor-lightbox .swiper .swiper-pagination-custom, +.elementor-lightbox .swiper .swiper-horizontal > .swiper-pagination-bullets, +.elementor-lightbox .swiper .swiper-pagination-bullets.swiper-pagination-horizontal, +.elementor-lightbox .swiper ~ .swiper-pagination-fraction, +.elementor-lightbox .swiper ~ .swiper-pagination-custom, +.elementor-lightbox .swiper ~ .swiper-pagination-bullets.swiper-pagination-horizontal, +.elementor-lightbox .swiper-container .swiper-pagination-fraction, +.elementor-lightbox .swiper-container .swiper-pagination-custom, +.elementor-lightbox .swiper-container .swiper-horizontal > .swiper-pagination-bullets, +.elementor-lightbox .swiper-container .swiper-pagination-bullets.swiper-pagination-horizontal, +.elementor-lightbox .swiper-container ~ .swiper-pagination-fraction, +.elementor-lightbox .swiper-container ~ .swiper-pagination-custom, +.elementor-lightbox .swiper-container ~ .swiper-pagination-bullets.swiper-pagination-horizontal { + bottom: 5px; +} +.elementor-element .swiper.swiper-cube .elementor-swiper-button, +.elementor-element .swiper.swiper-cube ~ .elementor-swiper-button, +.elementor-element .swiper-container.swiper-cube .elementor-swiper-button, +.elementor-element .swiper-container.swiper-cube ~ .elementor-swiper-button, .elementor-lightbox .swiper.swiper-cube .elementor-swiper-button, +.elementor-lightbox .swiper.swiper-cube ~ .elementor-swiper-button, +.elementor-lightbox .swiper-container.swiper-cube .elementor-swiper-button, +.elementor-lightbox .swiper-container.swiper-cube ~ .elementor-swiper-button { + transform: translate3d(0, -50%, 1px); +} +.elementor-element :where(.swiper-container-horizontal) ~ .swiper-pagination-bullets, .elementor-lightbox :where(.swiper-container-horizontal) ~ .swiper-pagination-bullets { + bottom: 5px; + left: 0; + width: 100%; +} +.elementor-element :where(.swiper-container-horizontal) ~ .swiper-pagination-bullets .swiper-pagination-bullet, .elementor-lightbox :where(.swiper-container-horizontal) ~ .swiper-pagination-bullets .swiper-pagination-bullet { + margin: 0 var(--swiper-pagination-bullet-horizontal-gap, 4px); +} +.elementor-element :where(.swiper-container-horizontal) ~ .swiper-pagination-progressbar, .elementor-lightbox :where(.swiper-container-horizontal) ~ .swiper-pagination-progressbar { + width: 100%; + height: 4px; + left: 0; + top: 0; +} +.elementor-element.elementor-pagination-position-outside .swiper, +.elementor-element.elementor-pagination-position-outside .swiper-container, .elementor-lightbox.elementor-pagination-position-outside .swiper, +.elementor-lightbox.elementor-pagination-position-outside .swiper-container { + padding-bottom: 30px; +} +.elementor-element.elementor-pagination-position-outside .swiper .elementor-swiper-button, +.elementor-element.elementor-pagination-position-outside .swiper ~ .elementor-swiper-button, +.elementor-element.elementor-pagination-position-outside .swiper-container .elementor-swiper-button, +.elementor-element.elementor-pagination-position-outside .swiper-container ~ .elementor-swiper-button, .elementor-lightbox.elementor-pagination-position-outside .swiper .elementor-swiper-button, +.elementor-lightbox.elementor-pagination-position-outside .swiper ~ .elementor-swiper-button, +.elementor-lightbox.elementor-pagination-position-outside .swiper-container .elementor-swiper-button, +.elementor-lightbox.elementor-pagination-position-outside .swiper-container ~ .elementor-swiper-button { + top: calc(50% - 30px / 2); +} +.elementor-element .elementor-swiper, .elementor-lightbox .elementor-swiper { + position: relative; +} +.elementor-element .elementor-main-swiper, .elementor-lightbox .elementor-main-swiper { + position: static; +} +.elementor-element.elementor-arrows-position-outside .swiper, +.elementor-element.elementor-arrows-position-outside .swiper-container, .elementor-lightbox.elementor-arrows-position-outside .swiper, +.elementor-lightbox.elementor-arrows-position-outside .swiper-container { + width: calc(100% - 60px); +} +.elementor-element.elementor-arrows-position-outside .swiper .elementor-swiper-button-prev, +.elementor-element.elementor-arrows-position-outside .swiper ~ .elementor-swiper-button-prev, +.elementor-element.elementor-arrows-position-outside .swiper-container .elementor-swiper-button-prev, +.elementor-element.elementor-arrows-position-outside .swiper-container ~ .elementor-swiper-button-prev, .elementor-lightbox.elementor-arrows-position-outside .swiper .elementor-swiper-button-prev, +.elementor-lightbox.elementor-arrows-position-outside .swiper ~ .elementor-swiper-button-prev, +.elementor-lightbox.elementor-arrows-position-outside .swiper-container .elementor-swiper-button-prev, +.elementor-lightbox.elementor-arrows-position-outside .swiper-container ~ .elementor-swiper-button-prev { + left: 0; +} +.elementor-element.elementor-arrows-position-outside .swiper .elementor-swiper-button-next, +.elementor-element.elementor-arrows-position-outside .swiper ~ .elementor-swiper-button-next, +.elementor-element.elementor-arrows-position-outside .swiper-container .elementor-swiper-button-next, +.elementor-element.elementor-arrows-position-outside .swiper-container ~ .elementor-swiper-button-next, .elementor-lightbox.elementor-arrows-position-outside .swiper .elementor-swiper-button-next, +.elementor-lightbox.elementor-arrows-position-outside .swiper ~ .elementor-swiper-button-next, +.elementor-lightbox.elementor-arrows-position-outside .swiper-container .elementor-swiper-button-next, +.elementor-lightbox.elementor-arrows-position-outside .swiper-container ~ .elementor-swiper-button-next { + right: 0; +} + +.elementor-lightbox { + --lightbox-ui-color: rgba(238, 238, 238, 0.9); + --lightbox-ui-color-hover: #fff; + --lightbox-text-color: var(--lightbox-ui-color); + --lightbox-header-icons-size: 20px; + --lightbox-navigation-icons-size: 25px; +} +.elementor-lightbox:not(.elementor-popup-modal) .dialog-header, +.elementor-lightbox:not(.elementor-popup-modal) .dialog-message { + text-align: center; +} +.elementor-lightbox .dialog-header { + display: none; +} +.elementor-lightbox .dialog-widget-content { + background: none; + box-shadow: none; + width: 100%; + height: 100%; +} +.elementor-lightbox .dialog-message { + animation-duration: 0.3s; + height: 100%; +} +.elementor-lightbox .dialog-message.dialog-lightbox-message { + padding: 0; +} +.elementor-lightbox .dialog-lightbox-close-button { + cursor: pointer; + position: absolute; + font-size: var(--lightbox-header-icons-size); + right: 0.75em; + margin-top: 13px; + padding: 0.25em; + z-index: 2; + line-height: 1; + display: flex; +} +.elementor-lightbox .dialog-lightbox-close-button svg { + height: 1em; + width: 1em; +} +.elementor-lightbox .dialog-lightbox-close-button, +.elementor-lightbox .elementor-swiper-button { + color: var(--lightbox-ui-color); + transition: all 0.3s; + opacity: 1; +} +.elementor-lightbox .dialog-lightbox-close-button svg, +.elementor-lightbox .elementor-swiper-button svg { + fill: var(--lightbox-ui-color); +} +.elementor-lightbox .dialog-lightbox-close-button:hover, +.elementor-lightbox .elementor-swiper-button:hover { + color: var(--lightbox-ui-color-hover); +} +.elementor-lightbox .dialog-lightbox-close-button:hover svg, +.elementor-lightbox .elementor-swiper-button:hover svg { + fill: var(--lightbox-ui-color-hover); +} +.elementor-lightbox .swiper, +.elementor-lightbox .swiper-container { + height: 100%; +} +.elementor-lightbox .elementor-lightbox-item { + display: flex; + align-items: center; + justify-content: center; + position: relative; + padding: 70px; + box-sizing: border-box; + height: 100%; + margin: auto; +} +@media (max-width: 767px) { + .elementor-lightbox .elementor-lightbox-item { + padding: 70px 0; + } +} +.elementor-lightbox .elementor-lightbox-image { + max-height: 100%; + -webkit-user-select: none; + -moz-user-select: none; + user-select: none; +} +.elementor-lightbox .elementor-lightbox-image, .elementor-lightbox .elementor-lightbox-image:hover { + opacity: 1; + filter: none; + border: none; +} +.elementor-lightbox .elementor-lightbox-image { + box-shadow: 0 0 30px rgba(0, 0, 0, 0.3), 0 0 8px -5px rgba(0, 0, 0, 0.3); + border-radius: 2px; +} +.elementor-lightbox .elementor-video-container { + width: 100%; + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); +} +.elementor-lightbox .elementor-video-container .elementor-video-square, +.elementor-lightbox .elementor-video-container .elementor-video-landscape, +.elementor-lightbox .elementor-video-container .elementor-video-portrait { + width: 100%; + height: 100%; + margin: auto; +} +.elementor-lightbox .elementor-video-container .elementor-video-square iframe, +.elementor-lightbox .elementor-video-container .elementor-video-landscape iframe, +.elementor-lightbox .elementor-video-container .elementor-video-portrait iframe { + border: 0; + background-color: #000; +} +.elementor-lightbox .elementor-video-container .elementor-video-square iframe, +.elementor-lightbox .elementor-video-container .elementor-video-square video, +.elementor-lightbox .elementor-video-container .elementor-video-landscape iframe, +.elementor-lightbox .elementor-video-container .elementor-video-landscape video, +.elementor-lightbox .elementor-video-container .elementor-video-portrait iframe, +.elementor-lightbox .elementor-video-container .elementor-video-portrait video { + aspect-ratio: var(--video-aspect-ratio, 1.77777); +} +@supports not (aspect-ratio: 1/1) { + .elementor-lightbox .elementor-video-container .elementor-video-square, + .elementor-lightbox .elementor-video-container .elementor-video-landscape, + .elementor-lightbox .elementor-video-container .elementor-video-portrait { + position: relative; + overflow: hidden; + height: 0; + padding-bottom: calc(100% / var(--video-aspect-ratio, 1.77777)); + } + .elementor-lightbox .elementor-video-container .elementor-video-square iframe, + .elementor-lightbox .elementor-video-container .elementor-video-square video, + .elementor-lightbox .elementor-video-container .elementor-video-landscape iframe, + .elementor-lightbox .elementor-video-container .elementor-video-landscape video, + .elementor-lightbox .elementor-video-container .elementor-video-portrait iframe, + .elementor-lightbox .elementor-video-container .elementor-video-portrait video { + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + } +} +.elementor-lightbox .elementor-video-container .elementor-video-square iframe, +.elementor-lightbox .elementor-video-container .elementor-video-square video { + width: min(90vh, 90vw); + height: min(90vh, 90vw); +} +.elementor-lightbox .elementor-video-container .elementor-video-landscape iframe, +.elementor-lightbox .elementor-video-container .elementor-video-landscape video { + width: 100%; + max-height: 90vh; +} +.elementor-lightbox .elementor-video-container .elementor-video-portrait iframe, +.elementor-lightbox .elementor-video-container .elementor-video-portrait video { + height: 100%; + max-width: 90vw; +} +@media (min-width: 1025px) { + .elementor-lightbox .elementor-video-container .elementor-video-landscape { + width: 85vw; + max-height: 85vh; + } + .elementor-lightbox .elementor-video-container .elementor-video-portrait { + height: 85vh; + max-width: 85vw; + } +} +@media (max-width: 1024px) { + .elementor-lightbox .elementor-video-container .elementor-video-landscape { + width: 95vw; + max-height: 95vh; + } + .elementor-lightbox .elementor-video-container .elementor-video-portrait { + height: 95vh; + max-width: 95vw; + } +} +.elementor-lightbox .swiper .elementor-swiper-button-prev, +.elementor-lightbox .swiper-container .elementor-swiper-button-prev { + left: 0; +} +.elementor-lightbox .swiper .elementor-swiper-button-next, +.elementor-lightbox .swiper-container .elementor-swiper-button-next { + right: 0; +} +.elementor-lightbox .swiper .swiper-pagination-fraction, +.elementor-lightbox .swiper-container .swiper-pagination-fraction { + width: -moz-max-content; + width: max-content; + color: #ffffff; +} +.elementor-lightbox .elementor-swiper-button:focus { + outline-width: 1px; +} +.elementor-lightbox .elementor-swiper-button-prev, .elementor-lightbox .elementor-swiper-button-next { + height: 100%; + display: flex; + align-items: center; + width: 15%; + justify-content: center; + font-size: var(--lightbox-navigation-icons-size); +} +@media (max-width: 767px) { + .elementor-lightbox .elementor-swiper-button:focus { + outline: none; + } + .elementor-lightbox .elementor-swiper-button-prev, .elementor-lightbox .elementor-swiper-button-next { + width: 20%; + } + .elementor-lightbox .elementor-swiper-button-prev i, .elementor-lightbox .elementor-swiper-button-next i { + padding: 10px; + background-color: rgba(0, 0, 0, 0.5); + } + .elementor-lightbox .elementor-swiper-button-prev { + left: 0; + justify-content: flex-start; + } + .elementor-lightbox .elementor-swiper-button-next { + right: 0; + justify-content: flex-end; + } +} + +.elementor-slideshow__counter { + color: currentColor; + font-size: 0.75em; + width: -moz-max-content; + width: max-content; +} +.elementor-slideshow__header, .elementor-slideshow__footer { + position: absolute; + left: 0; + width: 100%; + padding: 15px 20px; + transition: 0.3s; +} +.elementor-slideshow__footer { + color: var(--lightbox-text-color); +} +.elementor-slideshow__header { + color: var(--lightbox-ui-color); + display: flex; + flex-direction: row-reverse; + font-size: var(--lightbox-header-icons-size); + padding-left: 1em; + padding-right: 2.6em; + top: 0; + align-items: center; + z-index: 10; +} +.elementor-slideshow__header > i, +.elementor-slideshow__header > svg { + cursor: pointer; + padding: 0.25em; + margin: 0 0.35em; +} +.elementor-slideshow__header > i { + font-size: inherit; +} +.elementor-slideshow__header > i:hover { + color: var(--lightbox-ui-color-hover); +} +.elementor-slideshow__header > svg { + box-sizing: content-box; + fill: var(--lightbox-ui-color); + height: 1em; + width: 1em; +} +.elementor-slideshow__header > svg:hover { + fill: var(--lightbox-ui-color-hover); +} +.elementor-slideshow__header .elementor-slideshow__counter { + margin-right: auto; +} +.elementor-slideshow__header .elementor-icon-share { + z-index: 5; +} +.elementor-slideshow__share-menu { + background-color: rgba(0, 0, 0, 0); + width: 0; + height: 0; + position: absolute; + overflow: hidden; + transition: background-color 400ms; +} +.elementor-slideshow__share-menu .elementor-slideshow__share-links a { + color: #0C0D0E; +} +.elementor-slideshow__share-links { + display: block; + position: absolute; + min-width: 200px; + right: 2.8em; + top: 3em; + background-color: #fff; + border-radius: 3px; + padding: 14px 20px; + transform: scale(0); + opacity: 0; + transform-origin: 90% 10%; + transition: all 250ms 100ms; + box-shadow: 0 4px 15px rgba(0, 0, 0, 0.3); +} +.elementor-slideshow__share-links a { + text-align: left; + color: #3f444b; + font-size: 12px; + line-height: 2.5; + display: block; + opacity: 0; + transition: opacity 500ms 100ms; +} +.elementor-slideshow__share-links a:hover { + color: #000; +} +.elementor-slideshow__share-links a i, +.elementor-slideshow__share-links a svg { + margin-right: 0.75em; +} +.elementor-slideshow__share-links a i { + font-size: 1.25em; +} +.elementor-slideshow__share-links a svg { + height: 1.25em; + width: 1.25em; +} +.elementor-slideshow__share-links:before { + content: ""; + display: block; + position: absolute; + top: 1px; + right: 0.5em; + border: 0.45em solid; + border-color: transparent transparent #fff transparent; + transform: translateY(-100%) scaleX(0.7); +} +.elementor-slideshow__footer { + bottom: 0; + z-index: 5; + position: fixed; +} +.elementor-slideshow__title, .elementor-slideshow__description { + margin: 0; +} +.elementor-slideshow__title { + font-size: 16px; + font-weight: bold; +} +.elementor-slideshow__description { + font-size: 14px; +} +.elementor-slideshow--ui-hidden .elementor-slideshow__header, .elementor-slideshow--ui-hidden .elementor-slideshow__footer { + opacity: 0; + pointer-events: none; +} +.elementor-slideshow--ui-hidden .elementor-swiper-button-prev, .elementor-slideshow--ui-hidden .elementor-swiper-button-next { + opacity: 0; +} +.elementor-slideshow--fullscreen-mode .elementor-video-container { + width: 100%; +} +.elementor-slideshow--zoom-mode .elementor-slideshow__header, .elementor-slideshow--zoom-mode .elementor-slideshow__footer { + background-color: rgba(0, 0, 0, 0.5); +} +.elementor-slideshow--zoom-mode .elementor-swiper-button-prev, .elementor-slideshow--zoom-mode .elementor-swiper-button-next { + opacity: 0; + pointer-events: none; +} +.elementor-slideshow--share-mode .elementor-slideshow__share-menu { + top: 0; + left: 0; + width: 100vw; + height: 100vh; + opacity: 1; + cursor: default; + background-color: rgba(0, 0, 0, 0.5); +} +.elementor-slideshow--share-mode .elementor-slideshow__share-links { + transform: scale(1); +} +.elementor-slideshow--share-mode .elementor-slideshow__share-links, .elementor-slideshow--share-mode .elementor-slideshow__share-links a { + opacity: 1; +} +.elementor-slideshow--share-mode .elementor-slideshow__share-links .eicon-twitter { + color: #1DA1F2; +} +.elementor-slideshow--share-mode .elementor-slideshow__share-links .eicon-facebook { + color: #3b5998; +} +.elementor-slideshow--share-mode .elementor-slideshow__share-links .eicon-pinterest { + color: #bd081c; +} +.elementor-slideshow--share-mode .elementor-slideshow__share-links .eicon-download-bold { + color: #9DA5AE; +} +.elementor-slideshow--share-mode .elementor-slideshow__share-links .e-eicon-twitter { + fill: #1DA1F2; +} +.elementor-slideshow--share-mode .elementor-slideshow__share-links .e-eicon-facebook { + fill: #3b5998; +} +.elementor-slideshow--share-mode .elementor-slideshow__share-links .e-eicon-pinterest { + fill: #bd081c; +} +.elementor-slideshow--share-mode .elementor-slideshow__share-links .e-eicon-download-bold { + fill: #9DA5AE; +} +.elementor-slideshow--share-mode .eicon-share-arrow { + z-index: 2; +} + +.animated { + animation-duration: 1.25s; +} +.animated.animated-slow { + animation-duration: 2s; +} +.animated.animated-fast { + animation-duration: 0.75s; +} +.animated.infinite { + animation-iteration-count: infinite; +} +.animated.reverse { + animation-direction: reverse; + animation-fill-mode: forwards; +} + +@media (prefers-reduced-motion: reduce) { + .animated { + animation: none; + } +} +.elementor-shape { + overflow: hidden; + position: absolute; + left: 0; + width: 100%; + line-height: 0; + direction: ltr; + /* + * @TODO: The `z-index: -1` rules below are temporary fixes for Chrome 85 issue. + * It will be removed in a future version of Chrome. + */ +} +.elementor-shape-top { + top: -1px; +} +.elementor-shape-top:not([data-negative=false]) svg { + z-index: -1; +} +.elementor-shape-bottom { + bottom: -1px; +} +.elementor-shape-bottom:not([data-negative=true]) svg { + z-index: -1; +} +.elementor-shape[data-negative=false].elementor-shape-bottom { + transform: rotate(180deg); +} +.elementor-shape[data-negative=true].elementor-shape-top { + transform: rotate(180deg); +} +.elementor-shape svg { + display: block; + width: calc(100% + 1.3px); + position: relative; + left: 50%; + transform: translateX(-50%); +} +.elementor-shape .elementor-shape-fill { + fill: #fff; + transform-origin: center; + transform: rotateY(0deg); +} + +#wp-admin-bar-elementor_edit_page > .ab-item::before { + content: "\e813"; + font-family: eicons; + top: 3px; + font-size: 18px; +} +#wp-admin-bar-elementor_edit_page .ab-submenu .ab-item { + display: flex; + width: 200px; +} +#wp-admin-bar-elementor_edit_page .elementor-edit-link-title { + white-space: nowrap; + text-overflow: ellipsis; + overflow: hidden; + width: 100%; +} +#wp-admin-bar-elementor_edit_page .elementor-edit-link-type { + background: #3f444b; + font-size: 11px; + line-height: 9px; + margin-top: 6px; + padding: 4px 8px; + border-radius: 3px; +} + +#wp-admin-bar-elementor_inspector > .ab-item::before { + content: "\f348"; + top: 2px; +} + +#wpadminbar * { + font-style: normal; +} + +.page-template-elementor_canvas.elementor-page:before { + display: none; +} + +.elementor-post__thumbnail__link { + transition: none; +} + +#left-area ul.elementor-icon-list-items, +.elementor .elementor-element ul.elementor-icon-list-items, +.elementor-edit-area .elementor-element ul.elementor-icon-list-items { + padding: 0; +} + +.e--ua-appleWebkit.rtl { + --flex-right: flex-start; +} +.e--ua-appleWebkit .elementor-widget-social-icons.e-grid-align-right, +.e--ua-appleWebkit .elementor-share-buttons--align-right { + --justify-content: var(--flex-right, flex-end); +} +.e--ua-appleWebkit .elementor-widget-social-icons.e-grid-align-center, +.e--ua-appleWebkit .elementor-share-buttons--align-center { + --justify-content: center; +} +.e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-right .elementor-grid, .e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-center .elementor-grid, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-right .elementor-grid, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-center .elementor-grid, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-justify .elementor-grid { + width: auto; + display: flex; + flex-wrap: wrap; + justify-content: var(--justify-content, space-between); + margin-left: calc(-0.5 * var(--grid-column-gap)); + margin-right: calc(-0.5 * var(--grid-column-gap)); +} +.e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-right .elementor-grid-item, .e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-center .elementor-grid-item, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-right .elementor-grid-item, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-center .elementor-grid-item, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-justify .elementor-grid-item { + margin-left: calc(0.5 * var(--grid-column-gap)); + margin-right: calc(0.5 * var(--grid-column-gap)); +} +.e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-left .elementor-grid, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-left .elementor-grid { + display: inline-block; +} +.e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-left .elementor-grid, .e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-left .elementor-grid-item, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-left .elementor-grid, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-left .elementor-grid-item { + margin-left: 0; + margin-right: 0; +} +@media (max-width: 1024px) { + .e--ua-appleWebkit .elementor-widget-social-icons.e-grid-align-tablet-right, + .e--ua-appleWebkit .elementor-share-buttons-tablet--align-right { + --justify-content: var(--flex-right, flex-end); + } + .e--ua-appleWebkit .elementor-widget-social-icons.e-grid-align-tablet-center, + .e--ua-appleWebkit .elementor-share-buttons-tablet--align-center { + --justify-content: center; + } + .e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-tablet-right .elementor-grid, .e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-tablet-center .elementor-grid, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-tablet-right .elementor-grid, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-tablet-center .elementor-grid, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-tablet-justify .elementor-grid { + width: auto; + display: flex; + flex-wrap: wrap; + justify-content: var(--justify-content, space-between); + margin-left: calc(-0.5 * var(--grid-column-gap)); + margin-right: calc(-0.5 * var(--grid-column-gap)); + } + .e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-tablet-right .elementor-grid-item, .e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-tablet-center .elementor-grid-item, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-tablet-right .elementor-grid-item, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-tablet-center .elementor-grid-item, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-tablet-justify .elementor-grid-item { + margin-left: calc(0.5 * var(--grid-column-gap)); + margin-right: calc(0.5 * var(--grid-column-gap)); + } + .e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-tablet-left .elementor-grid, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons-tablet--align-left .elementor-grid { + display: inline-block; + } + .e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-tablet-left .elementor-grid, .e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-tablet-left .elementor-grid-item, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons-tablet--align-left .elementor-grid, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons-tablet--align-left .elementor-grid-item { + margin-left: 0; + margin-right: 0; + } +} +@media (max-width: 767px) { + .e--ua-appleWebkit .elementor-widget-social-icons.e-grid-align-mobile-right, + .e--ua-appleWebkit .elementor-share-buttons-mobile--align-right { + --justify-content: var(--flex-right, flex-end); + } + .e--ua-appleWebkit .elementor-widget-social-icons.e-grid-align-mobile-center, + .e--ua-appleWebkit .elementor-share-buttons-mobile--align-center { + --justify-content: center; + } + .e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-mobile-right .elementor-grid, .e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-mobile-center .elementor-grid, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-mobile-right .elementor-grid, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-mobile-center .elementor-grid, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-mobile-justify .elementor-grid { + width: auto; + display: flex; + flex-wrap: wrap; + justify-content: var(--justify-content, space-between); + margin-left: calc(-0.5 * var(--grid-column-gap)); + margin-right: calc(-0.5 * var(--grid-column-gap)); + } + .e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-mobile-right .elementor-grid-item, .e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-mobile-center .elementor-grid-item, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-mobile-right .elementor-grid-item, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-mobile-center .elementor-grid-item, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-mobile-justify .elementor-grid-item { + margin-left: calc(0.5 * var(--grid-column-gap)); + margin-right: calc(0.5 * var(--grid-column-gap)); + } + .e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-mobile-left .elementor-grid, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons-mobile--align-left .elementor-grid { + display: inline-block; + } + .e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-mobile-left .elementor-grid, .e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-mobile-left .elementor-grid-item, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons-mobile--align-left .elementor-grid, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons-mobile--align-left .elementor-grid-item { + margin-left: 0; + margin-right: 0; + } +} + +@media (max-width: 767px) { + .elementor .elementor-hidden-mobile { + display: none; + } + .elementor .elementor-hidden-phone { + display: none; + } +} +@media (min-width: -1) and (max-width: -1) { + .elementor .elementor-hidden-mobile_extra { + display: none; + } +} +@media (min-width: 768px) and (max-width: 1024px) { + .elementor .elementor-hidden-tablet { + display: none; + } +} +@media (min-width: -1) and (max-width: -1) { + .elementor .elementor-hidden-tablet_extra { + display: none; + } +} +@media (min-width: -1) and (max-width: -1) { + .elementor .elementor-hidden-laptop { + display: none; + } +} +@media (min-width: 1025px) and (max-width: 99999px) { + .elementor .elementor-hidden-desktop { + display: none; + } +} +@media (min-width: -1) { + .elementor .elementor-hidden-widescreen { + display: none; + } +} + +.elementor-widget-text-path { + font-size: 20px; + text-align: var(--alignment, left); +} +.elementor-widget-text-path svg { + width: var(--width); + max-width: 100%; + height: auto; + overflow: visible; + word-spacing: var(--word-spacing); + transform: rotate(var(--rotate, 0)) scaleX(var(--scale-x, 1)) scaleY(var(--scale-y, 1)); +} +.elementor-widget-text-path svg path { + vector-effect: non-scaling-stroke; /* Prevent stroke size scaling when resizing the SVG. */ + fill: var(--path-fill, transparent); + stroke: var(--stroke-color, transparent); + stroke-width: var(--stroke-width, 1px); + transition: var(--stroke-transition) stroke, var(--stroke-transition) fill; +} +.elementor-widget-text-path svg:hover path { + --path-fill: var( --path-fill-hover ); + --stroke-color: var( --stroke-color-hover ); + --stroke-width: var( --stroke-width-hover ); +} +.elementor-widget-text-path svg text { + --fill: var( --text-color ); + fill: var(--fill); + direction: var(--direction, ltr); + transition: var(--transition) stroke, var(--transition) stroke-width, var(--transition) fill; +} +.elementor-widget-text-path svg text:hover { + --color: var( --text-color-hover, var( --text-color ) ); + --fill: var( --color ); + color: var(--color); +} + +.elementor-widget-n-tabs { + --n-tabs-color-accent-fallback: #61CE70; + --n-tabs-color-secondary-fallback: #54595F; + --n-tabs-default-padding-block: 15px; + --n-tabs-default-padding-inline: 35px; + --n-tabs-background-color: transparent; + --n-tabs-display: flex; + --n-tabs-direction: column; + --n-tabs-gap: 10px; + --n-tabs-heading-display: flex; + --n-tabs-heading-direction: row; + --n-tabs-heading-grow: initial; + --n-tabs-heading-justify-content: center; + --n-tabs-heading-width: initial; + --n-tabs-heading-overflow-x: initial; + --n-tabs-heading-wrap: nowrap; + --n-tabs-border-width: 1px; + --n-tabs-border-color: #D5D8DC; + --n-tabs-content-display: flex; + --n-tabs-title-color: var(--e-global-color-secondary, var(--n-tabs-color-secondary-fallback)); + --n-tabs-title-color-hover: #ffffff; + --n-tabs-title-color-active: #ffffff; + --n-tabs-title-background-color: #F1F2F3; + --n-tabs-title-background-color-hover: var(--e-global-color-accent, var(--n-tabs-color-accent-fallback)); + --n-tabs-title-background-color-active: var(--e-global-color-accent, var(--n-tabs-color-accent-fallback)); + --n-tabs-title-width: initial; + --n-tabs-title-height: initial; + --n-tabs-title-font-size: 1rem; + --n-tabs-title-white-space: initial; + --n-tabs-title-justify-content-toggle: initial; + --n-tabs-title-align-items-toggle: center; + --n-tabs-title-justify-content: center; + --n-tabs-title-align-items: center; + --n-tabs-title-text-align: center; + --n-tabs-title-direction: row; + --n-tabs-title-gap: 10px; + --n-tabs-title-flex-grow: 0; + --n-tabs-title-flex-basis: content; + --n-tabs-title-flex-shrink: initial; + --n-tabs-title-order: initial; + --n-tabs-title-padding-block-start: var(--n-tabs-default-padding-block); + --n-tabs-title-padding-inline-end: var(--n-tabs-default-padding-inline); + --n-tabs-title-padding-block-end: var(--n-tabs-default-padding-block); + --n-tabs-title-padding-inline-start: var(--n-tabs-default-padding-inline); + --n-tabs-title-border-radius: initial; + --n-tabs-title-transition: 0.3s; + --n-tabs-icon-color: var(--e-global-color-secondary, var(--n-tabs-color-secondary-fallback)); + --n-tabs-icon-color-hover: var(--n-tabs-title-color-hover); + --n-tabs-icon-color-active: #ffffff; + --n-tabs-icon-gap: 5px; + width: 100%; + max-width: 100%; /* Fix issue with new created n-tabs inside n-tabs with overflow */ +} +.elementor-widget-n-tabs .e-n-tabs { + display: var(--n-tabs-display); + flex-direction: var(--n-tabs-direction); + gap: var(--n-tabs-gap); + text-align: start; + min-width: 0; +} +.elementor-widget-n-tabs .e-n-tabs-heading { + display: var(--n-tabs-heading-display); + flex-basis: var(--n-tabs-heading-width); + flex-direction: var(--n-tabs-heading-direction); + flex-shrink: 0; + justify-content: var(--n-tabs-heading-justify-content); + gap: var(--n-tabs-title-gap); + overflow-x: var(--n-tabs-heading-overflow-x); + flex-wrap: var(--n-tabs-heading-wrap); + -ms-overflow-style: none; /* IE and Edge */ + scrollbar-width: none; /* Firefox */ +} +.elementor-widget-n-tabs .e-n-tabs-heading::-webkit-scrollbar { + display: none; /* Hide scrollbar for Chrome, Safari and Opera */ +} +.elementor-widget-n-tabs .e-n-tabs-heading.e-scroll { + cursor: grabbing; + cursor: -webkit-grabbing; +} +.elementor-widget-n-tabs .e-n-tabs-heading.e-scroll-active { + position: relative; +} +.elementor-widget-n-tabs .e-n-tabs-heading.e-scroll-active::before { + content: ""; + position: absolute; + inset-block: 0; + inset-inline: -1000vw; + z-index: 2; +} +.elementor-widget-n-tabs .e-n-tabs-content { + display: var(--n-tabs-content-display); + flex-grow: 1; + min-width: 0; +} +.elementor-widget-n-tabs .e-n-tabs-content > .e-con:not(.e-active) { + display: none; +} +.elementor-widget-n-tabs .e-n-tabs:not(.e-activated) > .e-n-tabs-content > .e-con:nth-child(1) { + display: flex; +} +.elementor-widget-n-tabs .e-n-tab-title { + all: unset; + -webkit-user-select: none; + -moz-user-select: none; + user-select: none; + display: flex; + align-items: var(--n-tabs-title-align-items-toggle, var(--n-tabs-title-align-items)); + flex-direction: var(--n-tabs-title-direction); + justify-content: var(--n-tabs-title-justify-content-toggle, var(--n-tabs-title-justify-content)); + gap: var(--n-tabs-icon-gap); + border-width: var(--n-tabs-border-width); + position: relative; + cursor: pointer; + outline: none; + flex-grow: var(--n-tabs-title-flex-grow); + flex-basis: var(--n-tabs-title-flex-basis); + flex-shrink: var(--n-tabs-title-flex-shrink); + padding-block-start: var(--n-tabs-title-padding-block-start); + padding-inline-end: var(--n-tabs-title-padding-inline-end); + padding-block-end: var(--n-tabs-title-padding-block-end); + padding-inline-start: var(--n-tabs-title-padding-inline-start); + border-radius: var(--n-tabs-title-border-radius); + height: var(--n-tabs-title-height); + width: var(--n-tabs-title-width); + white-space: var(--n-tabs-title-white-space); + transition: background var(--n-tabs-title-transition), color var(--n-tabs-title-transition), border var(--n-tabs-title-transition), box-shadow var(--n-tabs-title-transition), text-shadow var(--n-tabs-title-transition), stroke var(--n-tabs-title-transition), stroke-width var(--n-tabs-title-transition), -webkit-text-stroke-width var(--n-tabs-title-transition), -webkit-text-stroke-color var(--n-tabs-title-transition), transform var(--n-tabs-title-transition); +} +.elementor-widget-n-tabs .e-n-tab-title:focus-visible { + outline: 5px auto -webkit-focus-ring-color; +} +.elementor-widget-n-tabs .e-n-tab-title span svg, .elementor-widget-n-tabs .e-n-tab-title span i { + transition: color var(--n-tabs-title-transition), fill var(--n-tabs-title-transition); +} +.elementor-widget-n-tabs .e-n-tab-title-text { + display: flex; + align-items: center; + font-size: var(--n-tabs-title-font-size); + text-align: var(--n-tabs-title-text-align); +} +.elementor-widget-n-tabs .e-n-tab-title .e-n-tab-icon { + display: flex; + align-items: center; + flex-direction: column; + flex-shrink: 0; + order: var(--n-tabs-icon-order); + overflow: hidden; +} +.elementor-widget-n-tabs .e-n-tab-title .e-n-tab-icon i { + font-size: var(--n-tabs-icon-size, var(--n-tabs-title-font-size)); +} +.elementor-widget-n-tabs .e-n-tab-title .e-n-tab-icon svg { + width: var(--n-tabs-icon-size, var(--n-tabs-title-font-size)); + height: var(--n-tabs-icon-size, var(--n-tabs-title-font-size)); +} +.elementor-widget-n-tabs .e-n-tab-title .e-n-tab-icon:empty { + display: none; +} +.elementor-widget-n-tabs .e-n-tab-title[aria-selected=false] { + background-color: var(--n-tabs-title-background-color); +} +.elementor-widget-n-tabs .e-n-tab-title[aria-selected=false], .elementor-widget-n-tabs .e-n-tab-title[aria-selected=false] a { + color: var(--n-tabs-title-color); +} +.elementor-widget-n-tabs .e-n-tab-title[aria-selected=false] .e-n-tab-icon i { + color: var(--n-tabs-icon-color); +} +.elementor-widget-n-tabs .e-n-tab-title[aria-selected=false] .e-n-tab-icon svg { + fill: var(--n-tabs-icon-color); +} +.elementor-widget-n-tabs .e-n-tab-title[aria-selected=false] .e-n-tab-icon i:last-child, +.elementor-widget-n-tabs .e-n-tab-title[aria-selected=false] .e-n-tab-icon svg:last-child { + transform: translate(0, -100vh); + height: 0; + opacity: 0; +} +.elementor-widget-n-tabs .e-n-tab-title[aria-selected=true], .elementor-widget-n-tabs .e-n-tab-title[aria-selected=true] a { + color: var(--n-tabs-title-color-active); +} +.elementor-widget-n-tabs .e-n-tab-title[aria-selected=true] .e-n-tab-icon i { + color: var(--n-tabs-icon-color-active); +} +.elementor-widget-n-tabs .e-n-tab-title[aria-selected=true] .e-n-tab-icon svg { + fill: var(--n-tabs-icon-color-active); +} +.elementor-widget-n-tabs .e-n-tab-title[aria-selected=true] .e-n-tab-icon i:first-child, +.elementor-widget-n-tabs .e-n-tab-title[aria-selected=true] .e-n-tab-icon svg:first-child { + transform: translate(0, -100vh); + height: 0; + opacity: 0; +} +.elementor-widget-n-tabs .e-n-tab-title[aria-selected=true][class*=elementor-animation-]:focus, .elementor-widget-n-tabs .e-n-tab-title[aria-selected=true][class*=elementor-animation-]:active, .elementor-widget-n-tabs .e-n-tab-title[aria-selected=true][class*=elementor-animation-]:hover { + transform: initial; + animation: initial; +} +.elementor-widget-n-tabs [data-touch-mode=false] .e-n-tab-title[aria-selected=false]:hover, .elementor-widget-n-tabs [data-touch-mode=false] .e-n-tab-title[aria-selected=false]:hover a { + color: var(--n-tabs-title-color-hover); +} +.elementor-widget-n-tabs [data-touch-mode=false] .e-n-tab-title[aria-selected=false]:hover .e-n-tab-icon i { + color: var(--n-tabs-icon-color-hover); +} +.elementor-widget-n-tabs [data-touch-mode=false] .e-n-tab-title[aria-selected=false]:hover .e-n-tab-icon svg { + fill: var(--n-tabs-icon-color-hover); +} +.elementor-widget-n-tabs [data-touch-mode=true] .e-n-tab-title[aria-selected=false]:hover, .elementor-widget-n-tabs [data-touch-mode=true] .e-n-tab-title[aria-selected=false]:hover a { + color: var(--n-tabs-title-color-active); +} +.elementor-widget-n-tabs [data-touch-mode=true] .e-n-tab-title[aria-selected=false]:hover .e-n-tab-icon i { + color: var(--n-tabs-icon-color-active); +} +.elementor-widget-n-tabs [data-touch-mode=true] .e-n-tab-title[aria-selected=false]:hover .e-n-tab-icon svg { + fill: var(--n-tabs-icon-color-active); +} +.elementor-widget-n-tabs [data-touch-mode=true] .e-n-tab-title[aria-selected=false]:hover .e-n-tab-icon i:first-child, +.elementor-widget-n-tabs [data-touch-mode=true] .e-n-tab-title[aria-selected=false]:hover .e-n-tab-icon svg:first-child { + transform: translate(0, -100vh); + height: 0; + opacity: 0; +} +.elementor-widget-n-tabs [data-touch-mode=true] .e-n-tab-title[aria-selected=false]:hover[class*=elementor-animation-]:focus, .elementor-widget-n-tabs [data-touch-mode=true] .e-n-tab-title[aria-selected=false]:hover[class*=elementor-animation-]:active, .elementor-widget-n-tabs [data-touch-mode=true] .e-n-tab-title[aria-selected=false]:hover[class*=elementor-animation-]:hover { + transform: initial; + animation: initial; +} +.elementor-widget-n-tabs [data-touch-mode=true] .e-n-tab-title[aria-selected=false]:hover .e-n-tab-icon i:last-child, +.elementor-widget-n-tabs [data-touch-mode=true] .e-n-tab-title[aria-selected=false]:hover .e-n-tab-icon svg:last-child { + transform: initial; + height: initial; + opacity: initial; +} + +.elementor .elementor-element.elementor-widget-n-tabs > .elementor-widget-container > .e-n-tabs[data-touch-mode=false] > .e-n-tabs-heading .e-n-tab-title[aria-selected=false]:hover { + background-color: var(--n-tabs-title-background-color-hover); + background-image: initial; +} + +.elementor .elementor-element.elementor-widget-n-tabs > .elementor-widget-container > .e-n-tabs > .e-n-tabs-heading .e-n-tab-title[aria-selected=true], +.elementor .elementor-element.elementor-widget-n-tabs > .elementor-widget-container > .e-n-tabs[data-touch-mode=true] > .e-n-tabs-heading .e-n-tab-title[aria-selected=false]:hover { + background-color: var(--n-tabs-title-background-color-active); + background-image: initial; +} + +@media (max-width: 767px) { + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-mobile { + --n-tabs-direction: column; + --n-tabs-heading-display: contents; + --n-tabs-content-display: contents; + } + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-mobile .e-n-tabs { + gap: 0; + } + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-mobile .e-n-tabs-content > .e-con { + order: var(--n-tabs-title-order); + } + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-mobile .e-n-tab-title { + order: var(--n-tabs-title-order); + width: initial; + } + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-mobile .e-n-tab-title:not(:first-child) { + margin-block-start: var(--n-tabs-title-gap); + } + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-mobile .e-n-tab-title[aria-selected=true] { + margin-block-end: var(--n-tabs-gap); + } +} +@media (max-width: -1) { + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-mobile_extra { + --n-tabs-direction: column; + --n-tabs-heading-display: contents; + --n-tabs-content-display: contents; + } + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-mobile_extra .e-n-tabs { + gap: 0; + } + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-mobile_extra .e-n-tabs-content > .e-con { + order: var(--n-tabs-title-order); + } + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-mobile_extra .e-n-tab-title { + order: var(--n-tabs-title-order); + width: initial; + } + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-mobile_extra .e-n-tab-title:not(:first-child) { + margin-block-start: var(--n-tabs-title-gap); + } + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-mobile_extra .e-n-tab-title[aria-selected=true] { + margin-block-end: var(--n-tabs-gap); + } +} +@media (max-width: 1024px) { + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-tablet { + --n-tabs-direction: column; + --n-tabs-heading-display: contents; + --n-tabs-content-display: contents; + } + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-tablet .e-n-tabs { + gap: 0; + } + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-tablet .e-n-tabs-content > .e-con { + order: var(--n-tabs-title-order); + } + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-tablet .e-n-tab-title { + order: var(--n-tabs-title-order); + width: initial; + } + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-tablet .e-n-tab-title:not(:first-child) { + margin-block-start: var(--n-tabs-title-gap); + } + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-tablet .e-n-tab-title[aria-selected=true] { + margin-block-end: var(--n-tabs-gap); + } +} +@media (max-width: -1) { + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-tablet_extra { + --n-tabs-direction: column; + --n-tabs-heading-display: contents; + --n-tabs-content-display: contents; + } + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-tablet_extra .e-n-tabs { + gap: 0; + } + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-tablet_extra .e-n-tabs-content > .e-con { + order: var(--n-tabs-title-order); + } + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-tablet_extra .e-n-tab-title { + order: var(--n-tabs-title-order); + width: initial; + } + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-tablet_extra .e-n-tab-title:not(:first-child) { + margin-block-start: var(--n-tabs-title-gap); + } + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-tablet_extra .e-n-tab-title[aria-selected=true] { + margin-block-end: var(--n-tabs-gap); + } +} +@media (max-width: -1) { + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-laptop { + --n-tabs-direction: column; + --n-tabs-heading-display: contents; + --n-tabs-content-display: contents; + } + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-laptop .e-n-tabs { + gap: 0; + } + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-laptop .e-n-tabs-content > .e-con { + order: var(--n-tabs-title-order); + } + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-laptop .e-n-tab-title { + order: var(--n-tabs-title-order); + width: initial; + } + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-laptop .e-n-tab-title:not(:first-child) { + margin-block-start: var(--n-tabs-title-gap); + } + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-laptop .e-n-tab-title[aria-selected=true] { + margin-block-end: var(--n-tabs-gap); + } +} +.elementor-widget-n-accordion { + --n-accordion-title-font-size: 20px; + --n-accordion-title-flex-grow: initial; + --n-accordion-title-justify-content: initial; + --n-accordion-title-icon-order: -1; + --n-accordion-border-width: 1px; + --n-accordion-border-color: #D5D8DC; + --n-accordion-border-style: solid; + --n-accordion-item-title-flex-grow: initial; + --n-accordion-item-title-space-between: 0px; + --n-accordion-item-title-distance-from-content: 0px; + --n-accordion-padding: 10px; + --n-accordion-border-radius: 0px; + --n-accordion-icon-size: 15px; + --n-accordion-title-normal-color: #1f2124; + --n-accordion-title-hover-color: #1f2124; + --n-accordion-title-active-color: #1f2124; + --n-accordion-icon-normal-color: var(--n-accordion-title-normal-color); + --n-accordion-icon-hover-color: var(--n-accordion-title-hover-color); + --n-accordion-icon-active-color: var(--n-accordion-title-active-color); + --n-accordion-icon-gap: 0 10px; + width: 100%; +} +.elementor-widget-n-accordion .e-n-accordion details > summary::-webkit-details-marker { + display: none; +} +.elementor-widget-n-accordion .e-n-accordion-item { + display: flex; + flex-direction: column; + position: relative; +} +.elementor-widget-n-accordion .e-n-accordion-item:not(:last-child) { + margin-block-end: var(--n-accordion-item-title-space-between); +} +:where(.elementor-widget-n-accordion .e-n-accordion-item > .e-con) { + border: var(--n-accordion-border-width) var(--n-accordion-border-style) var(--n-accordion-border-color); +} +.elementor-widget-n-accordion .e-n-accordion-item-title { + display: flex; + flex-direction: row; + list-style: none; + padding: var(--n-accordion-padding); + border-width: var(--n-accordion-border-width); + border-color: var(--n-accordion-border-color); + border-style: var(--n-accordion-border-style); + justify-content: var(--n-accordion-title-justify-content); + border-radius: var(--n-accordion-border-radius); + flex-grow: var(--n-menu-title-flex-grow); + gap: var(--n-accordion-icon-gap); + color: var(--n-accordion-title-normal-color); + align-items: center; + cursor: pointer; +} +.elementor-widget-n-accordion .e-n-accordion-item-title-header { + display: flex; +} +.elementor-widget-n-accordion .e-n-accordion-item-title-header h1, .elementor-widget-n-accordion .e-n-accordion-item-title-header h2, .elementor-widget-n-accordion .e-n-accordion-item-title-header h3, .elementor-widget-n-accordion .e-n-accordion-item-title-header h4, .elementor-widget-n-accordion .e-n-accordion-item-title-header h5, .elementor-widget-n-accordion .e-n-accordion-item-title-header h6, .elementor-widget-n-accordion .e-n-accordion-item-title-header p { + margin-block-start: 0; + margin-block-end: 0; +} +.elementor-widget-n-accordion .e-n-accordion-item-title-text { + font-size: var(--n-accordion-title-font-size); + align-items: center; +} +.elementor-widget-n-accordion .e-n-accordion-item-title-icon { + display: flex; + flex-direction: row; + align-items: center; + order: var(--n-accordion-title-icon-order); + position: relative; + width: -moz-fit-content; + width: fit-content; +} +.elementor-widget-n-accordion .e-n-accordion-item-title-icon span { + height: var(--n-accordion-icon-size); + width: auto; +} +.elementor-widget-n-accordion .e-n-accordion-item-title-icon span > i { + color: var(--n-accordion-icon-normal-color); + font-size: var(--n-accordion-icon-size); +} +.elementor-widget-n-accordion .e-n-accordion-item-title-icon span > svg { + fill: var(--n-accordion-icon-normal-color); + height: var(--n-accordion-icon-size); +} +.elementor-widget-n-accordion .e-n-accordion-item-title > span { + cursor: pointer; +} +.elementor-widget-n-accordion .e-n-accordion-item[open] .e-n-accordion-item-title { + margin-block-end: var(--n-accordion-item-title-distance-from-content); + color: var(--n-accordion-title-active-color); +} +.elementor-widget-n-accordion .e-n-accordion-item[open] .e-n-accordion-item-title-icon .e-opened { + display: flex; +} +.elementor-widget-n-accordion .e-n-accordion-item[open] .e-n-accordion-item-title-icon .e-closed { + display: none; +} +.elementor-widget-n-accordion .e-n-accordion-item[open] .e-n-accordion-item-title-icon span > i { + color: var(--n-accordion-icon-active-color); +} +.elementor-widget-n-accordion .e-n-accordion-item[open] .e-n-accordion-item-title-icon span > svg { + fill: var(--n-accordion-icon-active-color); +} +.elementor-widget-n-accordion .e-n-accordion-item:not([open]):hover .e-n-accordion-item-title { + color: var(--n-accordion-title-hover-color); +} +.elementor-widget-n-accordion .e-n-accordion-item:not([open]):hover .e-n-accordion-item-title-icon span > i { + color: var(--n-accordion-icon-hover-color); +} +.elementor-widget-n-accordion .e-n-accordion-item:not([open]):hover .e-n-accordion-item-title-icon span > svg { + fill: var(--n-accordion-icon-hover-color); +} +.elementor-widget-n-accordion .e-n-accordion-item .e-n-accordion-item-title-icon .e-opened { + display: none; +} +.elementor-widget-n-accordion .e-n-accordion-item .e-n-accordion-item-title-icon .e-closed { + display: flex; +} +.elementor-widget-n-accordion .e-n-accordion-item .e-n-accordion-item-title-icon span > svg { + fill: var(--n-accordion-icon-normal-color); +} +.elementor-widget-n-accordion .e-n-accordion-item .e-n-accordion-item-title-icon span > i { + color: var(--n-accordion-icon-normal-color); +} +.elementor-widget-n-accordion .e-n-accordion-item > span { + cursor: pointer; +} +/*# sourceMappingURL=frontend-lite.css.map */ \ No newline at end of file diff --git a/wp-content/plugins/elementor/assets/css/frontend-lite.min.css b/wp-content/plugins/elementor/assets/css/frontend-lite.min.css new file mode 100644 index 0000000..4d77d2a --- /dev/null +++ b/wp-content/plugins/elementor/assets/css/frontend-lite.min.css @@ -0,0 +1,2 @@ +/*! elementor - v3.20.0 - 26-03-2024 */ +.dialog-widget-content{background-color:var(--e-a-bg-default);position:absolute;border-radius:3px;box-shadow:2px 8px 23px 3px rgba(0,0,0,.2);overflow:hidden}.dialog-message{line-height:1.5;box-sizing:border-box}.dialog-close-button{cursor:pointer;position:absolute;margin-block-start:15px;right:15px;color:var(--e-a-color-txt);font-size:15px;line-height:1;transition:var(--e-a-transition-hover)}.dialog-close-button:hover{color:var(--e-a-color-txt-hover)}.dialog-prevent-scroll{overflow:hidden;max-height:100vh}.dialog-type-lightbox{position:fixed;height:100%;width:100%;bottom:0;left:0;background-color:rgba(0,0,0,.8);z-index:9999;-webkit-user-select:none;-moz-user-select:none;user-select:none}.elementor-editor-active .elementor-popup-modal{background-color:initial}.dialog-type-alert .dialog-widget-content,.dialog-type-confirm .dialog-widget-content{margin:auto;width:400px;padding:20px}.dialog-type-alert .dialog-header,.dialog-type-confirm .dialog-header{font-size:15px;font-weight:500}.dialog-type-alert .dialog-header:after,.dialog-type-confirm .dialog-header:after{content:"";display:block;border-block-end:var(--e-a-border);padding-block-end:10px;margin-block-end:10px;margin-inline-start:-20px;margin-inline-end:-20px}.dialog-type-alert .dialog-message,.dialog-type-confirm .dialog-message{min-height:50px}.dialog-type-alert .dialog-buttons-wrapper,.dialog-type-confirm .dialog-buttons-wrapper{padding-block-start:10px;display:flex;justify-content:flex-end;gap:15px}.dialog-type-alert .dialog-buttons-wrapper .dialog-button,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button{font-size:12px;font-weight:500;line-height:1.2;padding:8px 16px;outline:none;border:none;border-radius:var(--e-a-border-radius);background-color:var(--e-a-btn-bg);color:var(--e-a-btn-color-invert);transition:var(--e-a-transition-hover)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:hover{border:none}.dialog-type-alert .dialog-buttons-wrapper .dialog-button:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:hover{background-color:var(--e-a-btn-bg-hover);color:var(--e-a-btn-color-invert)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button:active,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:active{background-color:var(--e-a-btn-bg-active)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button:not([disabled]),.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:not([disabled]){cursor:pointer}.dialog-type-alert .dialog-buttons-wrapper .dialog-button:disabled,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:disabled{background-color:var(--e-a-btn-bg-disabled);color:var(--e-a-btn-color-disabled)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button:not(.elementor-button-state) .elementor-state-icon,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:not(.elementor-button-state) .elementor-state-icon{display:none}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt{background:transparent;color:var(--e-a-color-txt)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel:hover,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt:hover{background:var(--e-a-bg-hover);color:var(--e-a-color-txt-hover)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel:disabled,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt:disabled,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel:disabled,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt:disabled{background:transparent;color:var(--e-a-color-txt-disabled)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt-border,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt-border{border:1px solid var(--e-a-color-txt-muted)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-success,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-success,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-success,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-success{background-color:var(--e-a-btn-bg-success)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-success:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-success:hover,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-success:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-success:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-success:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-success:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-success:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-success:hover{background-color:var(--e-a-btn-bg-success-hover)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-take_over,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-take_over,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary{background-color:var(--e-a-btn-bg-primary);color:var(--e-a-btn-color)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok:hover,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-take_over:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-take_over:hover,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-take_over:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-take_over:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary:hover{background-color:var(--e-a-btn-bg-primary-hover);color:var(--e-a-btn-color)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-ok,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-take_over,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary.dialog-cancel,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary.e-btn-txt,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-ok,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-take_over,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary.dialog-cancel,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary.e-btn-txt{background:transparent;color:var(--e-a-color-primary-bold)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over:hover,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel:hover,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-ok:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-ok:hover,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-take_over:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-take_over:hover,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary.dialog-cancel:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary.dialog-cancel:hover,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary.e-btn-txt:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary.e-btn-txt:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-ok:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-ok:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-take_over:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-take_over:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary.dialog-cancel:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary.dialog-cancel:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary.e-btn-txt:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary.e-btn-txt:hover{background:var(--e-a-bg-primary)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-accent,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.go-pro,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-accent,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.go-pro{background-color:var(--e-a-btn-bg-accent)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-accent:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-accent:hover,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.go-pro:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.go-pro:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-accent:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-accent:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.go-pro:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.go-pro:hover{background-color:var(--e-a-btn-bg-accent-hover)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-accent:active,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.go-pro:active,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-accent:active,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.go-pro:active{background-color:var(--e-a-btn-bg-accent-active)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-info,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-info,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-info,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-info{background-color:var(--e-a-btn-bg-info)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-info:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-info:hover,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-info:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-info:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-info:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-info:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-info:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-info:hover{background-color:var(--e-a-btn-bg-info-hover)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-warning,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-warning,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-warning,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-warning{background-color:var(--e-a-btn-bg-warning)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-warning:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-warning:hover,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-warning:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-warning:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-warning:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-warning:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-warning:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-warning:hover{background-color:var(--e-a-btn-bg-warning-hover)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-danger,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-danger,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-danger,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-danger{background-color:var(--e-a-btn-bg-danger)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-danger:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-danger:hover,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-danger:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-danger:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-danger:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-danger:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-danger:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-danger:hover{background-color:var(--e-a-btn-bg-danger-hover)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button i,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button i{margin-inline-end:5px}.dialog-type-alert .dialog-buttons-wrapper .dialog-button:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button:hover,.dialog-type-alert .dialog-buttons-wrapper .dialog-button:visited,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:visited{color:initial}.flatpickr-calendar{width:280px}.flatpickr-calendar .flatpickr-current-month span.cur-month{font-weight:300}.flatpickr-calendar .dayContainer{width:280px;min-width:280px;max-width:280px}.flatpickr-calendar .flatpickr-days{width:280px}.flatpickr-calendar .flatpickr-day{max-width:37px;height:37px;line-height:37px}.elementor-hidden{display:none}.elementor-screen-only,.screen-reader-text,.screen-reader-text span,.ui-helper-hidden-accessible{position:absolute;top:-10000em;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.elementor-clearfix:after{content:"";display:block;clear:both;width:0;height:0}.e-logo-wrapper{background:var(--e-a-bg-logo);display:inline-block;padding:.75em;border-radius:50%;line-height:1}.e-logo-wrapper i{color:var(--e-a-color-logo);font-size:1em}.elementor *,.elementor :after,.elementor :before{box-sizing:border-box}.elementor a{box-shadow:none;text-decoration:none}.elementor hr{margin:0;background-color:transparent}.elementor img{height:auto;max-width:100%;border:none;border-radius:0;box-shadow:none}.elementor .elementor-widget:not(.elementor-widget-text-editor):not(.elementor-widget-theme-post-content) figure{margin:0}.elementor embed,.elementor iframe,.elementor object,.elementor video{max-width:100%;width:100%;margin:0;line-height:1;border:none}.elementor .elementor-background,.elementor .elementor-background-holder,.elementor .elementor-background-video-container{height:100%;width:100%;top:0;left:0;position:absolute;overflow:hidden;z-index:0;direction:ltr}.elementor .elementor-background-video-container{transition:opacity 1s;pointer-events:none}.elementor .elementor-background-video-container.elementor-loading{opacity:0}.elementor .elementor-background-video-embed{max-width:none}.elementor .elementor-background-video,.elementor .elementor-background-video-embed,.elementor .elementor-background-video-hosted{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.elementor .elementor-background-video{max-width:none}.elementor .elementor-html5-video{-o-object-fit:cover;object-fit:cover}.elementor .elementor-background-overlay,.elementor .elementor-background-slideshow{height:100%;width:100%;top:0;left:0;position:absolute}.elementor .elementor-background-slideshow{z-index:0}.elementor .elementor-background-slideshow__slide__image{width:100%;height:100%;background-position:50%;background-size:cover}.e-con-inner>.elementor-element.elementor-absolute,.e-con>.elementor-element.elementor-absolute,.elementor-widget-wrap>.elementor-element.elementor-absolute{position:absolute}.e-con-inner>.elementor-element.elementor-fixed,.e-con>.elementor-element.elementor-fixed,.elementor-widget-wrap>.elementor-element.elementor-fixed{position:fixed}.elementor-widget-wrap .elementor-element.elementor-widget__width-auto,.elementor-widget-wrap .elementor-element.elementor-widget__width-initial{max-width:100%}@media (max-width:1024px){.elementor-widget-wrap .elementor-element.elementor-widget-tablet__width-auto,.elementor-widget-wrap .elementor-element.elementor-widget-tablet__width-initial{max-width:100%}}@media (max-width:767px){.elementor-widget-wrap .elementor-element.elementor-widget-mobile__width-auto,.elementor-widget-wrap .elementor-element.elementor-widget-mobile__width-initial{max-width:100%}}.elementor-element{--flex-direction:initial;--flex-wrap:initial;--justify-content:initial;--align-items:initial;--align-content:initial;--gap:initial;--flex-basis:initial;--flex-grow:initial;--flex-shrink:initial;--order:initial;--align-self:initial;flex-basis:var(--flex-basis);flex-grow:var(--flex-grow);flex-shrink:var(--flex-shrink);order:var(--order);align-self:var(--align-self)}.elementor-element.elementor-absolute,.elementor-element.elementor-fixed{z-index:1}.elementor-element:where(.e-con-full,.elementor-widget){flex-direction:var(--flex-direction);flex-wrap:var(--flex-wrap);justify-content:var(--justify-content);align-items:var(--align-items);align-content:var(--align-content);gap:var(--gap)}.elementor-invisible{visibility:hidden}.elementor-align-center{text-align:center}.elementor-align-center .elementor-button{width:auto}.elementor-align-right{text-align:right}.elementor-align-right .elementor-button{width:auto}.elementor-align-left{text-align:left}.elementor-align-left .elementor-button{width:auto}.elementor-align-justify .elementor-button{width:100%}.elementor-custom-embed-play{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.elementor-custom-embed-play i{font-size:100px;color:#fff;text-shadow:1px 0 6px rgba(0,0,0,.3)}.elementor-custom-embed-play svg{height:100px;width:100px;fill:#fff;filter:drop-shadow(1px 0 6px rgba(0,0,0,.3))}.elementor-custom-embed-play i,.elementor-custom-embed-play svg{opacity:.8;transition:all .5s}.elementor-custom-embed-play.elementor-playing i{font-family:eicons}.elementor-custom-embed-play.elementor-playing i:before{content:"\e8fb"}.elementor-custom-embed-play.elementor-playing i,.elementor-custom-embed-play.elementor-playing svg{animation:eicon-spin 2s linear infinite}.elementor-tag{display:inline-flex}.elementor-ken-burns{transition-property:transform;transition-duration:10s;transition-timing-function:linear}.elementor-ken-burns--out{transform:scale(1.3)}.elementor-ken-burns--active{transition-duration:20s}.elementor-ken-burns--active.elementor-ken-burns--out{transform:scale(1)}.elementor-ken-burns--active.elementor-ken-burns--in{transform:scale(1.3)}@media (min-width:-1){.elementor-widescreen-align-center{text-align:center}.elementor-widescreen-align-center .elementor-button{width:auto}.elementor-widescreen-align-right{text-align:right}.elementor-widescreen-align-right .elementor-button{width:auto}.elementor-widescreen-align-left{text-align:left}.elementor-widescreen-align-left .elementor-button{width:auto}.elementor-widescreen-align-justify .elementor-button{width:100%}}@media (max-width:-1){.elementor-laptop-align-center{text-align:center}.elementor-laptop-align-center .elementor-button{width:auto}.elementor-laptop-align-right{text-align:right}.elementor-laptop-align-right .elementor-button{width:auto}.elementor-laptop-align-left{text-align:left}.elementor-laptop-align-left .elementor-button{width:auto}.elementor-laptop-align-justify .elementor-button{width:100%}}@media (max-width:-1){.elementor-tablet_extra-align-center{text-align:center}.elementor-tablet_extra-align-center .elementor-button{width:auto}.elementor-tablet_extra-align-right{text-align:right}.elementor-tablet_extra-align-right .elementor-button{width:auto}.elementor-tablet_extra-align-left{text-align:left}.elementor-tablet_extra-align-left .elementor-button{width:auto}.elementor-tablet_extra-align-justify .elementor-button{width:100%}}@media (max-width:1024px){.elementor-tablet-align-center{text-align:center}.elementor-tablet-align-center .elementor-button{width:auto}.elementor-tablet-align-right{text-align:right}.elementor-tablet-align-right .elementor-button{width:auto}.elementor-tablet-align-left{text-align:left}.elementor-tablet-align-left .elementor-button{width:auto}.elementor-tablet-align-justify .elementor-button{width:100%}}@media (max-width:-1){.elementor-mobile_extra-align-center{text-align:center}.elementor-mobile_extra-align-center .elementor-button{width:auto}.elementor-mobile_extra-align-right{text-align:right}.elementor-mobile_extra-align-right .elementor-button{width:auto}.elementor-mobile_extra-align-left{text-align:left}.elementor-mobile_extra-align-left .elementor-button{width:auto}.elementor-mobile_extra-align-justify .elementor-button{width:100%}}@media (max-width:767px){.elementor-mobile-align-center{text-align:center}.elementor-mobile-align-center .elementor-button{width:auto}.elementor-mobile-align-right{text-align:right}.elementor-mobile-align-right .elementor-button{width:auto}.elementor-mobile-align-left{text-align:left}.elementor-mobile-align-left .elementor-button{width:auto}.elementor-mobile-align-justify .elementor-button{width:100%}}:root{--page-title-display:block}.elementor-page-title,h1.entry-title{display:var(--page-title-display)}@keyframes eicon-spin{0%{transform:rotate(0deg)}to{transform:rotate(359deg)}}.eicon-animation-spin{animation:eicon-spin 2s linear infinite}.elementor-section{position:relative}.elementor-section .elementor-container{display:flex;margin-right:auto;margin-left:auto;position:relative}@media (max-width:1024px){.elementor-section .elementor-container{flex-wrap:wrap}}.elementor-section.elementor-section-boxed>.elementor-container{max-width:1140px}.elementor-section.elementor-section-stretched{position:relative;width:100%}.elementor-section.elementor-section-items-top>.elementor-container{align-items:flex-start}.elementor-section.elementor-section-items-middle>.elementor-container{align-items:center}.elementor-section.elementor-section-items-bottom>.elementor-container{align-items:flex-end}@media (min-width:768px){.elementor-section.elementor-section-height-full{height:100vh}.elementor-section.elementor-section-height-full>.elementor-container{height:100%}}.elementor-bc-flex-widget .elementor-section-content-top>.elementor-container>.elementor-column>.elementor-widget-wrap{align-items:flex-start}.elementor-bc-flex-widget .elementor-section-content-middle>.elementor-container>.elementor-column>.elementor-widget-wrap{align-items:center}.elementor-bc-flex-widget .elementor-section-content-bottom>.elementor-container>.elementor-column>.elementor-widget-wrap{align-items:flex-end}.elementor-row{width:100%;display:flex}@media (max-width:1024px){.elementor-row{flex-wrap:wrap}}.elementor-widget-wrap{position:relative;width:100%;flex-wrap:wrap;align-content:flex-start}.elementor:not(.elementor-bc-flex-widget) .elementor-widget-wrap{display:flex}.elementor-widget-wrap>.elementor-element{width:100%}.elementor-widget-wrap.e-swiper-container{width:calc(100% - (var(--e-column-margin-left, 0px) + var(--e-column-margin-right, 0px)))}.elementor-widget{position:relative}.elementor-widget:not(:last-child){margin-bottom:20px}.elementor-widget:not(:last-child).elementor-absolute,.elementor-widget:not(:last-child).elementor-widget__width-auto,.elementor-widget:not(:last-child).elementor-widget__width-initial{margin-bottom:0}.elementor-column{position:relative;min-height:1px;display:flex}.elementor-column-wrap{width:100%;position:relative;display:flex}.elementor-column-gap-narrow>.elementor-column>.elementor-element-populated{padding:5px}.elementor-column-gap-default>.elementor-column>.elementor-element-populated{padding:10px}.elementor-column-gap-extended>.elementor-column>.elementor-element-populated{padding:15px}.elementor-column-gap-wide>.elementor-column>.elementor-element-populated{padding:20px}.elementor-column-gap-wider>.elementor-column>.elementor-element-populated{padding:30px}.elementor-inner-section .elementor-column-gap-no .elementor-element-populated{padding:0}@media (min-width:768px){.elementor-column.elementor-col-10,.elementor-column[data-col="10"]{width:10%}.elementor-column.elementor-col-11,.elementor-column[data-col="11"]{width:11.111%}.elementor-column.elementor-col-12,.elementor-column[data-col="12"]{width:12.5%}.elementor-column.elementor-col-14,.elementor-column[data-col="14"]{width:14.285%}.elementor-column.elementor-col-16,.elementor-column[data-col="16"]{width:16.666%}.elementor-column.elementor-col-20,.elementor-column[data-col="20"]{width:20%}.elementor-column.elementor-col-25,.elementor-column[data-col="25"]{width:25%}.elementor-column.elementor-col-30,.elementor-column[data-col="30"]{width:30%}.elementor-column.elementor-col-33,.elementor-column[data-col="33"]{width:33.333%}.elementor-column.elementor-col-40,.elementor-column[data-col="40"]{width:40%}.elementor-column.elementor-col-50,.elementor-column[data-col="50"]{width:50%}.elementor-column.elementor-col-60,.elementor-column[data-col="60"]{width:60%}.elementor-column.elementor-col-66,.elementor-column[data-col="66"]{width:66.666%}.elementor-column.elementor-col-70,.elementor-column[data-col="70"]{width:70%}.elementor-column.elementor-col-75,.elementor-column[data-col="75"]{width:75%}.elementor-column.elementor-col-80,.elementor-column[data-col="80"]{width:80%}.elementor-column.elementor-col-83,.elementor-column[data-col="83"]{width:83.333%}.elementor-column.elementor-col-90,.elementor-column[data-col="90"]{width:90%}.elementor-column.elementor-col-100,.elementor-column[data-col="100"]{width:100%}}@media (max-width:479px){.elementor-column.elementor-xs-10{width:10%}.elementor-column.elementor-xs-11{width:11.111%}.elementor-column.elementor-xs-12{width:12.5%}.elementor-column.elementor-xs-14{width:14.285%}.elementor-column.elementor-xs-16{width:16.666%}.elementor-column.elementor-xs-20{width:20%}.elementor-column.elementor-xs-25{width:25%}.elementor-column.elementor-xs-30{width:30%}.elementor-column.elementor-xs-33{width:33.333%}.elementor-column.elementor-xs-40{width:40%}.elementor-column.elementor-xs-50{width:50%}.elementor-column.elementor-xs-60{width:60%}.elementor-column.elementor-xs-66{width:66.666%}.elementor-column.elementor-xs-70{width:70%}.elementor-column.elementor-xs-75{width:75%}.elementor-column.elementor-xs-80{width:80%}.elementor-column.elementor-xs-83{width:83.333%}.elementor-column.elementor-xs-90{width:90%}.elementor-column.elementor-xs-100{width:100%}}@media (max-width:767px){.elementor-column.elementor-sm-10{width:10%}.elementor-column.elementor-sm-11{width:11.111%}.elementor-column.elementor-sm-12{width:12.5%}.elementor-column.elementor-sm-14{width:14.285%}.elementor-column.elementor-sm-16{width:16.666%}.elementor-column.elementor-sm-20{width:20%}.elementor-column.elementor-sm-25{width:25%}.elementor-column.elementor-sm-30{width:30%}.elementor-column.elementor-sm-33{width:33.333%}.elementor-column.elementor-sm-40{width:40%}.elementor-column.elementor-sm-50{width:50%}.elementor-column.elementor-sm-60{width:60%}.elementor-column.elementor-sm-66{width:66.666%}.elementor-column.elementor-sm-70{width:70%}.elementor-column.elementor-sm-75{width:75%}.elementor-column.elementor-sm-80{width:80%}.elementor-column.elementor-sm-83{width:83.333%}.elementor-column.elementor-sm-90{width:90%}.elementor-column.elementor-sm-100{width:100%}}@media (min-width:768px) and (max-width:1024px){.elementor-column.elementor-md-10{width:10%}.elementor-column.elementor-md-11{width:11.111%}.elementor-column.elementor-md-12{width:12.5%}.elementor-column.elementor-md-14{width:14.285%}.elementor-column.elementor-md-16{width:16.666%}.elementor-column.elementor-md-20{width:20%}.elementor-column.elementor-md-25{width:25%}.elementor-column.elementor-md-30{width:30%}.elementor-column.elementor-md-33{width:33.333%}.elementor-column.elementor-md-40{width:40%}.elementor-column.elementor-md-50{width:50%}.elementor-column.elementor-md-60{width:60%}.elementor-column.elementor-md-66{width:66.666%}.elementor-column.elementor-md-70{width:70%}.elementor-column.elementor-md-75{width:75%}.elementor-column.elementor-md-80{width:80%}.elementor-column.elementor-md-83{width:83.333%}.elementor-column.elementor-md-90{width:90%}.elementor-column.elementor-md-100{width:100%}}@media (min-width:-1){.elementor-reverse-widescreen>.elementor-container>:first-child{order:10}.elementor-reverse-widescreen>.elementor-container>:nth-child(2){order:9}.elementor-reverse-widescreen>.elementor-container>:nth-child(3){order:8}.elementor-reverse-widescreen>.elementor-container>:nth-child(4){order:7}.elementor-reverse-widescreen>.elementor-container>:nth-child(5){order:6}.elementor-reverse-widescreen>.elementor-container>:nth-child(6){order:5}.elementor-reverse-widescreen>.elementor-container>:nth-child(7){order:4}.elementor-reverse-widescreen>.elementor-container>:nth-child(8){order:3}.elementor-reverse-widescreen>.elementor-container>:nth-child(9){order:2}.elementor-reverse-widescreen>.elementor-container>:nth-child(10){order:1}}@media (min-width:1025px) and (max-width:-1){.elementor-reverse-laptop>.elementor-container>:first-child{order:10}.elementor-reverse-laptop>.elementor-container>:nth-child(2){order:9}.elementor-reverse-laptop>.elementor-container>:nth-child(3){order:8}.elementor-reverse-laptop>.elementor-container>:nth-child(4){order:7}.elementor-reverse-laptop>.elementor-container>:nth-child(5){order:6}.elementor-reverse-laptop>.elementor-container>:nth-child(6){order:5}.elementor-reverse-laptop>.elementor-container>:nth-child(7){order:4}.elementor-reverse-laptop>.elementor-container>:nth-child(8){order:3}.elementor-reverse-laptop>.elementor-container>:nth-child(9){order:2}.elementor-reverse-laptop>.elementor-container>:nth-child(10){order:1}}@media (min-width:-1) and (max-width:-1){.elementor-reverse-laptop>.elementor-container>:first-child{order:10}.elementor-reverse-laptop>.elementor-container>:nth-child(2){order:9}.elementor-reverse-laptop>.elementor-container>:nth-child(3){order:8}.elementor-reverse-laptop>.elementor-container>:nth-child(4){order:7}.elementor-reverse-laptop>.elementor-container>:nth-child(5){order:6}.elementor-reverse-laptop>.elementor-container>:nth-child(6){order:5}.elementor-reverse-laptop>.elementor-container>:nth-child(7){order:4}.elementor-reverse-laptop>.elementor-container>:nth-child(8){order:3}.elementor-reverse-laptop>.elementor-container>:nth-child(9){order:2}.elementor-reverse-laptop>.elementor-container>:nth-child(10){order:1}}@media (min-width:1025px) and (max-width:-1){.elementor-reverse-laptop>.elementor-container>:first-child,.elementor-reverse-laptop>.elementor-container>:nth-child(2),.elementor-reverse-laptop>.elementor-container>:nth-child(3),.elementor-reverse-laptop>.elementor-container>:nth-child(4),.elementor-reverse-laptop>.elementor-container>:nth-child(5),.elementor-reverse-laptop>.elementor-container>:nth-child(6),.elementor-reverse-laptop>.elementor-container>:nth-child(7),.elementor-reverse-laptop>.elementor-container>:nth-child(8),.elementor-reverse-laptop>.elementor-container>:nth-child(9),.elementor-reverse-laptop>.elementor-container>:nth-child(10){order:0}.elementor-reverse-tablet_extra>.elementor-container>:first-child{order:10}.elementor-reverse-tablet_extra>.elementor-container>:nth-child(2){order:9}.elementor-reverse-tablet_extra>.elementor-container>:nth-child(3){order:8}.elementor-reverse-tablet_extra>.elementor-container>:nth-child(4){order:7}.elementor-reverse-tablet_extra>.elementor-container>:nth-child(5){order:6}.elementor-reverse-tablet_extra>.elementor-container>:nth-child(6){order:5}.elementor-reverse-tablet_extra>.elementor-container>:nth-child(7){order:4}.elementor-reverse-tablet_extra>.elementor-container>:nth-child(8){order:3}.elementor-reverse-tablet_extra>.elementor-container>:nth-child(9){order:2}.elementor-reverse-tablet_extra>.elementor-container>:nth-child(10){order:1}}@media (min-width:768px) and (max-width:1024px){.elementor-reverse-tablet>.elementor-container>:first-child{order:10}.elementor-reverse-tablet>.elementor-container>:nth-child(2){order:9}.elementor-reverse-tablet>.elementor-container>:nth-child(3){order:8}.elementor-reverse-tablet>.elementor-container>:nth-child(4){order:7}.elementor-reverse-tablet>.elementor-container>:nth-child(5){order:6}.elementor-reverse-tablet>.elementor-container>:nth-child(6){order:5}.elementor-reverse-tablet>.elementor-container>:nth-child(7){order:4}.elementor-reverse-tablet>.elementor-container>:nth-child(8){order:3}.elementor-reverse-tablet>.elementor-container>:nth-child(9){order:2}.elementor-reverse-tablet>.elementor-container>:nth-child(10){order:1}}@media (min-width:-1) and (max-width:1024px){.elementor-reverse-tablet>.elementor-container>:first-child{order:10}.elementor-reverse-tablet>.elementor-container>:nth-child(2){order:9}.elementor-reverse-tablet>.elementor-container>:nth-child(3){order:8}.elementor-reverse-tablet>.elementor-container>:nth-child(4){order:7}.elementor-reverse-tablet>.elementor-container>:nth-child(5){order:6}.elementor-reverse-tablet>.elementor-container>:nth-child(6){order:5}.elementor-reverse-tablet>.elementor-container>:nth-child(7){order:4}.elementor-reverse-tablet>.elementor-container>:nth-child(8){order:3}.elementor-reverse-tablet>.elementor-container>:nth-child(9){order:2}.elementor-reverse-tablet>.elementor-container>:nth-child(10){order:1}}@media (min-width:768px) and (max-width:-1){.elementor-reverse-tablet>.elementor-container>:first-child,.elementor-reverse-tablet>.elementor-container>:nth-child(2),.elementor-reverse-tablet>.elementor-container>:nth-child(3),.elementor-reverse-tablet>.elementor-container>:nth-child(4),.elementor-reverse-tablet>.elementor-container>:nth-child(5),.elementor-reverse-tablet>.elementor-container>:nth-child(6),.elementor-reverse-tablet>.elementor-container>:nth-child(7),.elementor-reverse-tablet>.elementor-container>:nth-child(8),.elementor-reverse-tablet>.elementor-container>:nth-child(9),.elementor-reverse-tablet>.elementor-container>:nth-child(10){order:0}.elementor-reverse-mobile_extra>.elementor-container>:first-child{order:10}.elementor-reverse-mobile_extra>.elementor-container>:nth-child(2){order:9}.elementor-reverse-mobile_extra>.elementor-container>:nth-child(3){order:8}.elementor-reverse-mobile_extra>.elementor-container>:nth-child(4){order:7}.elementor-reverse-mobile_extra>.elementor-container>:nth-child(5){order:6}.elementor-reverse-mobile_extra>.elementor-container>:nth-child(6){order:5}.elementor-reverse-mobile_extra>.elementor-container>:nth-child(7){order:4}.elementor-reverse-mobile_extra>.elementor-container>:nth-child(8){order:3}.elementor-reverse-mobile_extra>.elementor-container>:nth-child(9){order:2}.elementor-reverse-mobile_extra>.elementor-container>:nth-child(10){order:1}}@media (max-width:767px){.elementor-reverse-mobile>.elementor-container>:first-child{order:10}.elementor-reverse-mobile>.elementor-container>:nth-child(2){order:9}.elementor-reverse-mobile>.elementor-container>:nth-child(3){order:8}.elementor-reverse-mobile>.elementor-container>:nth-child(4){order:7}.elementor-reverse-mobile>.elementor-container>:nth-child(5){order:6}.elementor-reverse-mobile>.elementor-container>:nth-child(6){order:5}.elementor-reverse-mobile>.elementor-container>:nth-child(7){order:4}.elementor-reverse-mobile>.elementor-container>:nth-child(8){order:3}.elementor-reverse-mobile>.elementor-container>:nth-child(9){order:2}.elementor-reverse-mobile>.elementor-container>:nth-child(10){order:1}.elementor-column{width:100%}}ul.elementor-icon-list-items.elementor-inline-items{display:flex;flex-wrap:wrap}ul.elementor-icon-list-items.elementor-inline-items .elementor-inline-item{word-break:break-word}.elementor-grid{display:grid;grid-column-gap:var(--grid-column-gap);grid-row-gap:var(--grid-row-gap)}.elementor-grid .elementor-grid-item{min-width:0}.elementor-grid-0 .elementor-grid{display:inline-block;width:100%;word-spacing:var(--grid-column-gap);margin-bottom:calc(-1 * var(--grid-row-gap))}.elementor-grid-0 .elementor-grid .elementor-grid-item{display:inline-block;margin-bottom:var(--grid-row-gap);word-break:break-word}.elementor-grid-1 .elementor-grid{grid-template-columns:repeat(1,1fr)}.elementor-grid-2 .elementor-grid{grid-template-columns:repeat(2,1fr)}.elementor-grid-3 .elementor-grid{grid-template-columns:repeat(3,1fr)}.elementor-grid-4 .elementor-grid{grid-template-columns:repeat(4,1fr)}.elementor-grid-5 .elementor-grid{grid-template-columns:repeat(5,1fr)}.elementor-grid-6 .elementor-grid{grid-template-columns:repeat(6,1fr)}.elementor-grid-7 .elementor-grid{grid-template-columns:repeat(7,1fr)}.elementor-grid-8 .elementor-grid{grid-template-columns:repeat(8,1fr)}.elementor-grid-9 .elementor-grid{grid-template-columns:repeat(9,1fr)}.elementor-grid-10 .elementor-grid{grid-template-columns:repeat(10,1fr)}.elementor-grid-11 .elementor-grid{grid-template-columns:repeat(11,1fr)}.elementor-grid-12 .elementor-grid{grid-template-columns:repeat(12,1fr)}@media (min-width:-1){.elementor-grid-widescreen-0 .elementor-grid{display:inline-block;width:100%;word-spacing:var(--grid-column-gap);margin-bottom:calc(-1 * var(--grid-row-gap))}.elementor-grid-widescreen-0 .elementor-grid .elementor-grid-item{display:inline-block;margin-bottom:var(--grid-row-gap);word-break:break-word}.elementor-grid-widescreen-1 .elementor-grid{grid-template-columns:repeat(1,1fr)}.elementor-grid-widescreen-2 .elementor-grid{grid-template-columns:repeat(2,1fr)}.elementor-grid-widescreen-3 .elementor-grid{grid-template-columns:repeat(3,1fr)}.elementor-grid-widescreen-4 .elementor-grid{grid-template-columns:repeat(4,1fr)}.elementor-grid-widescreen-5 .elementor-grid{grid-template-columns:repeat(5,1fr)}.elementor-grid-widescreen-6 .elementor-grid{grid-template-columns:repeat(6,1fr)}.elementor-grid-widescreen-7 .elementor-grid{grid-template-columns:repeat(7,1fr)}.elementor-grid-widescreen-8 .elementor-grid{grid-template-columns:repeat(8,1fr)}.elementor-grid-widescreen-9 .elementor-grid{grid-template-columns:repeat(9,1fr)}.elementor-grid-widescreen-10 .elementor-grid{grid-template-columns:repeat(10,1fr)}.elementor-grid-widescreen-11 .elementor-grid{grid-template-columns:repeat(11,1fr)}.elementor-grid-widescreen-12 .elementor-grid{grid-template-columns:repeat(12,1fr)}}@media (max-width:-1){.elementor-grid-laptop-0 .elementor-grid{display:inline-block;width:100%;word-spacing:var(--grid-column-gap);margin-bottom:calc(-1 * var(--grid-row-gap))}.elementor-grid-laptop-0 .elementor-grid .elementor-grid-item{display:inline-block;margin-bottom:var(--grid-row-gap);word-break:break-word}.elementor-grid-laptop-1 .elementor-grid{grid-template-columns:repeat(1,1fr)}.elementor-grid-laptop-2 .elementor-grid{grid-template-columns:repeat(2,1fr)}.elementor-grid-laptop-3 .elementor-grid{grid-template-columns:repeat(3,1fr)}.elementor-grid-laptop-4 .elementor-grid{grid-template-columns:repeat(4,1fr)}.elementor-grid-laptop-5 .elementor-grid{grid-template-columns:repeat(5,1fr)}.elementor-grid-laptop-6 .elementor-grid{grid-template-columns:repeat(6,1fr)}.elementor-grid-laptop-7 .elementor-grid{grid-template-columns:repeat(7,1fr)}.elementor-grid-laptop-8 .elementor-grid{grid-template-columns:repeat(8,1fr)}.elementor-grid-laptop-9 .elementor-grid{grid-template-columns:repeat(9,1fr)}.elementor-grid-laptop-10 .elementor-grid{grid-template-columns:repeat(10,1fr)}.elementor-grid-laptop-11 .elementor-grid{grid-template-columns:repeat(11,1fr)}.elementor-grid-laptop-12 .elementor-grid{grid-template-columns:repeat(12,1fr)}}@media (max-width:-1){.elementor-grid-tablet_extra-0 .elementor-grid{display:inline-block;width:100%;word-spacing:var(--grid-column-gap);margin-bottom:calc(-1 * var(--grid-row-gap))}.elementor-grid-tablet_extra-0 .elementor-grid .elementor-grid-item{display:inline-block;margin-bottom:var(--grid-row-gap);word-break:break-word}.elementor-grid-tablet_extra-1 .elementor-grid{grid-template-columns:repeat(1,1fr)}.elementor-grid-tablet_extra-2 .elementor-grid{grid-template-columns:repeat(2,1fr)}.elementor-grid-tablet_extra-3 .elementor-grid{grid-template-columns:repeat(3,1fr)}.elementor-grid-tablet_extra-4 .elementor-grid{grid-template-columns:repeat(4,1fr)}.elementor-grid-tablet_extra-5 .elementor-grid{grid-template-columns:repeat(5,1fr)}.elementor-grid-tablet_extra-6 .elementor-grid{grid-template-columns:repeat(6,1fr)}.elementor-grid-tablet_extra-7 .elementor-grid{grid-template-columns:repeat(7,1fr)}.elementor-grid-tablet_extra-8 .elementor-grid{grid-template-columns:repeat(8,1fr)}.elementor-grid-tablet_extra-9 .elementor-grid{grid-template-columns:repeat(9,1fr)}.elementor-grid-tablet_extra-10 .elementor-grid{grid-template-columns:repeat(10,1fr)}.elementor-grid-tablet_extra-11 .elementor-grid{grid-template-columns:repeat(11,1fr)}.elementor-grid-tablet_extra-12 .elementor-grid{grid-template-columns:repeat(12,1fr)}}@media (max-width:1024px){.elementor-grid-tablet-0 .elementor-grid{display:inline-block;width:100%;word-spacing:var(--grid-column-gap);margin-bottom:calc(-1 * var(--grid-row-gap))}.elementor-grid-tablet-0 .elementor-grid .elementor-grid-item{display:inline-block;margin-bottom:var(--grid-row-gap);word-break:break-word}.elementor-grid-tablet-1 .elementor-grid{grid-template-columns:repeat(1,1fr)}.elementor-grid-tablet-2 .elementor-grid{grid-template-columns:repeat(2,1fr)}.elementor-grid-tablet-3 .elementor-grid{grid-template-columns:repeat(3,1fr)}.elementor-grid-tablet-4 .elementor-grid{grid-template-columns:repeat(4,1fr)}.elementor-grid-tablet-5 .elementor-grid{grid-template-columns:repeat(5,1fr)}.elementor-grid-tablet-6 .elementor-grid{grid-template-columns:repeat(6,1fr)}.elementor-grid-tablet-7 .elementor-grid{grid-template-columns:repeat(7,1fr)}.elementor-grid-tablet-8 .elementor-grid{grid-template-columns:repeat(8,1fr)}.elementor-grid-tablet-9 .elementor-grid{grid-template-columns:repeat(9,1fr)}.elementor-grid-tablet-10 .elementor-grid{grid-template-columns:repeat(10,1fr)}.elementor-grid-tablet-11 .elementor-grid{grid-template-columns:repeat(11,1fr)}.elementor-grid-tablet-12 .elementor-grid{grid-template-columns:repeat(12,1fr)}}@media (max-width:-1){.elementor-grid-mobile_extra-0 .elementor-grid{display:inline-block;width:100%;word-spacing:var(--grid-column-gap);margin-bottom:calc(-1 * var(--grid-row-gap))}.elementor-grid-mobile_extra-0 .elementor-grid .elementor-grid-item{display:inline-block;margin-bottom:var(--grid-row-gap);word-break:break-word}.elementor-grid-mobile_extra-1 .elementor-grid{grid-template-columns:repeat(1,1fr)}.elementor-grid-mobile_extra-2 .elementor-grid{grid-template-columns:repeat(2,1fr)}.elementor-grid-mobile_extra-3 .elementor-grid{grid-template-columns:repeat(3,1fr)}.elementor-grid-mobile_extra-4 .elementor-grid{grid-template-columns:repeat(4,1fr)}.elementor-grid-mobile_extra-5 .elementor-grid{grid-template-columns:repeat(5,1fr)}.elementor-grid-mobile_extra-6 .elementor-grid{grid-template-columns:repeat(6,1fr)}.elementor-grid-mobile_extra-7 .elementor-grid{grid-template-columns:repeat(7,1fr)}.elementor-grid-mobile_extra-8 .elementor-grid{grid-template-columns:repeat(8,1fr)}.elementor-grid-mobile_extra-9 .elementor-grid{grid-template-columns:repeat(9,1fr)}.elementor-grid-mobile_extra-10 .elementor-grid{grid-template-columns:repeat(10,1fr)}.elementor-grid-mobile_extra-11 .elementor-grid{grid-template-columns:repeat(11,1fr)}.elementor-grid-mobile_extra-12 .elementor-grid{grid-template-columns:repeat(12,1fr)}}@media (max-width:767px){.elementor-grid-mobile-0 .elementor-grid{display:inline-block;width:100%;word-spacing:var(--grid-column-gap);margin-bottom:calc(-1 * var(--grid-row-gap))}.elementor-grid-mobile-0 .elementor-grid .elementor-grid-item{display:inline-block;margin-bottom:var(--grid-row-gap);word-break:break-word}.elementor-grid-mobile-1 .elementor-grid{grid-template-columns:repeat(1,1fr)}.elementor-grid-mobile-2 .elementor-grid{grid-template-columns:repeat(2,1fr)}.elementor-grid-mobile-3 .elementor-grid{grid-template-columns:repeat(3,1fr)}.elementor-grid-mobile-4 .elementor-grid{grid-template-columns:repeat(4,1fr)}.elementor-grid-mobile-5 .elementor-grid{grid-template-columns:repeat(5,1fr)}.elementor-grid-mobile-6 .elementor-grid{grid-template-columns:repeat(6,1fr)}.elementor-grid-mobile-7 .elementor-grid{grid-template-columns:repeat(7,1fr)}.elementor-grid-mobile-8 .elementor-grid{grid-template-columns:repeat(8,1fr)}.elementor-grid-mobile-9 .elementor-grid{grid-template-columns:repeat(9,1fr)}.elementor-grid-mobile-10 .elementor-grid{grid-template-columns:repeat(10,1fr)}.elementor-grid-mobile-11 .elementor-grid{grid-template-columns:repeat(11,1fr)}.elementor-grid-mobile-12 .elementor-grid{grid-template-columns:repeat(12,1fr)}}@media (min-width:1025px){#elementor-device-mode:after{content:"desktop"}}@media (min-width:-1){#elementor-device-mode:after{content:"widescreen"}}@media (max-width:-1){#elementor-device-mode:after{content:"laptop";content:"tablet_extra"}}@media (max-width:1024px){#elementor-device-mode:after{content:"tablet"}}@media (max-width:-1){#elementor-device-mode:after{content:"mobile_extra"}}@media (max-width:767px){#elementor-device-mode:after{content:"mobile"}}.e-con{--border-radius:0;--border-block-start-width:0px;--border-inline-end-width:0px;--border-block-end-width:0px;--border-inline-start-width:0px;--border-style:initial;--border-color:initial;--container-widget-width:100%;--container-widget-height:initial;--container-widget-flex-grow:0;--container-widget-align-self:initial;--content-width:min(100%,var(--container-max-width,1140px));--width:100%;--min-height:initial;--height:auto;--text-align:initial;--margin-block-start:0px;--margin-inline-end:0px;--margin-block-end:0px;--margin-inline-start:0px;--padding-block-start:var(--container-default-padding-block-start,10px);--padding-inline-end:var(--container-default-padding-inline-end,10px);--padding-block-end:var(--container-default-padding-block-end,10px);--padding-inline-start:var(--container-default-padding-inline-start,10px);--position:relative;--z-index:revert;--overflow:visible;--gap:var(--widgets-spacing,20px);--overlay-mix-blend-mode:initial;--overlay-opacity:1;--overlay-transition:0.3s;--e-con-grid-template-columns:repeat(3,1fr);--e-con-grid-template-rows:repeat(2,1fr);position:var(--position);width:var(--width);min-width:0;min-height:var(--min-height);height:var(--height);border-radius:var(--border-radius);margin-block-start:var(--bc-margin-block-start,var(--margin-block-start));margin-inline-end:var(--bc-margin-inline-end,var(--margin-inline-end));margin-block-end:var(--bc-margin-block-end,var(--margin-block-end));margin-inline-start:var(--bc-margin-inline-start,var(--margin-inline-start));padding-inline-start:var(--bc-padding-inline-start,var(--padding-inline-start));padding-inline-end:var(--bc-padding-inline-end,var(--padding-inline-end));z-index:var(--z-index);overflow:var(--overflow);transition:background var(--background-transition,.3s),border var(--border-transition,.3s),box-shadow var(--border-transition,.3s),transform var(--e-con-transform-transition-duration,.4s)}.e-con.e-flex{--flex-direction:column;--flex-basis:auto;--flex-grow:0;--flex-shrink:1;flex:var(--flex-grow) var(--flex-shrink) var(--flex-basis)}.e-con-full,.e-con>.e-con-inner{text-align:var(--text-align);padding-block-start:var(--bc-padding-block-start,var(--padding-block-start));padding-block-end:var(--bc-padding-block-end,var(--padding-block-end))}.e-con-full.e-flex,.e-con.e-flex>.e-con-inner{flex-direction:var(--flex-direction)}.e-con,.e-con>.e-con-inner{display:var(--display)}.e-con.e-grid{--grid-justify-content:start;--grid-align-content:start;--grid-auto-flow:row}.e-con.e-grid,.e-con.e-grid>.e-con-inner{grid-template-columns:var(--e-con-grid-template-columns);grid-template-rows:var(--e-con-grid-template-rows);justify-content:var(--grid-justify-content);align-content:var(--grid-align-content);grid-auto-flow:var(--grid-auto-flow);justify-items:var(--justify-items);align-items:var(--align-items)}.e-con-boxed.e-flex{flex-direction:column;flex-wrap:nowrap;justify-content:normal;align-items:normal;align-content:normal}.e-con-boxed.e-grid{justify-items:legacy;grid-template-columns:1fr;grid-template-rows:1fr}.e-con-boxed{text-align:initial;gap:initial}.e-con.e-flex>.e-con-inner{flex-wrap:var(--flex-wrap);justify-content:var(--justify-content);align-items:var(--align-items);align-content:var(--align-content);flex-basis:auto;flex-grow:1;flex-shrink:1;align-self:auto}.e-con.e-grid>.e-con-inner{justify-items:var(--justify-items);align-items:var(--align-items)}.e-con>.e-con-inner{gap:var(--gap);width:100%;max-width:var(--content-width);margin:0 auto;padding-inline-start:0;padding-inline-end:0;height:100%}:is(.elementor-section-wrap,[data-elementor-id])>.e-con{--margin-inline-end:auto;--margin-inline-start:auto;max-width:min(100%,var(--width))}.e-con .elementor-widget.elementor-widget{margin-block-end:0}.e-con:before,.e-con>.elementor-background-slideshow:before,.e-con>.elementor-motion-effects-container>.elementor-motion-effects-layer:before,:is(.e-con,.e-con>.e-con-inner)>.elementor-background-video-container:before{content:var(--background-overlay);display:block;position:absolute;mix-blend-mode:var(--overlay-mix-blend-mode);opacity:var(--overlay-opacity);transition:var(--overlay-transition,.3s);border-radius:var(--border-radius);border-style:var(--border-style);border-color:var(--border-color);border-block-start-width:var(--border-block-start-width);border-inline-end-width:var(--border-inline-end-width);border-block-end-width:var(--border-block-end-width);border-inline-start-width:var(--border-inline-start-width);top:calc(0px - var(--border-block-start-width));left:calc(0px - var(--border-inline-start-width));width:max(100% + var(--border-inline-end-width) + var(--border-inline-start-width),100%);height:max(100% + var(--border-block-start-width) + var(--border-block-end-width),100%)}.e-con:before{transition:background var(--overlay-transition,.3s),border-radius var(--border-transition,.3s),opacity var(--overlay-transition,.3s)}.e-con>.elementor-background-slideshow,:is(.e-con,.e-con>.e-con-inner)>.elementor-background-video-container{border-radius:var(--border-radius);border-style:var(--border-style);border-color:var(--border-color);border-block-start-width:var(--border-block-start-width);border-inline-end-width:var(--border-inline-end-width);border-block-end-width:var(--border-block-end-width);border-inline-start-width:var(--border-inline-start-width);top:calc(0px - var(--border-block-start-width));left:calc(0px - var(--border-inline-start-width));width:max(100% + var(--border-inline-end-width) + var(--border-inline-start-width),100%);height:max(100% + var(--border-block-start-width) + var(--border-block-end-width),100%)}@media (max-width:767px){:is(.e-con,.e-con>.e-con-inner)>.elementor-background-video-container.elementor-hidden-phone{display:none}}:is(.e-con,.e-con>.e-con-inner)>.elementor-background-video-container:before{z-index:1}:is(.e-con,.e-con>.e-con-inner)>.elementor-background-slideshow:before{z-index:2}.e-con .elementor-widget{min-width:0}.e-con .elementor-widget-empty,.e-con .elementor-widget-google_maps,.e-con .elementor-widget-video,.e-con .elementor-widget.e-widget-swiper{width:100%}.e-con>.e-con-inner>.elementor-widget>.elementor-widget-container,.e-con>.elementor-widget>.elementor-widget-container{height:100%}.e-con.e-con>.e-con-inner>.elementor-widget,.elementor.elementor .e-con>.elementor-widget{max-width:100%}@media (max-width:767px){.e-con.e-flex{--width:100%;--flex-wrap:wrap}}.e-con{--bc-margin-block-start:var(--margin-top);--bc-margin-block-end:var(--margin-bottom);--bc-margin-inline-start:var(--margin-left);--bc-margin-inline-end:var(--margin-right);--bc-padding-block-start:var(--padding-top);--bc-padding-block-end:var(--padding-bottom);--bc-padding-inline-start:var(--padding-left);--bc-padding-inline-end:var(--padding-right)}[dir=rtl] .e-con{--bc-margin-inline-start:var(--margin-right);--bc-margin-inline-end:var(--margin-left);--bc-padding-inline-start:var(--padding-right);--bc-padding-inline-end:var(--padding-left)}.elementor-form-fields-wrapper{display:flex;flex-wrap:wrap}.elementor-form-fields-wrapper.elementor-labels-above .elementor-field-group .elementor-field-subgroup,.elementor-form-fields-wrapper.elementor-labels-above .elementor-field-group>.elementor-select-wrapper,.elementor-form-fields-wrapper.elementor-labels-above .elementor-field-group>input,.elementor-form-fields-wrapper.elementor-labels-above .elementor-field-group>textarea{flex-basis:100%;max-width:100%}.elementor-form-fields-wrapper.elementor-labels-inline>.elementor-field-group .elementor-select-wrapper,.elementor-form-fields-wrapper.elementor-labels-inline>.elementor-field-group>input{flex-grow:1}.elementor-field-group{flex-wrap:wrap;align-items:center}.elementor-field-group.elementor-field-type-submit{align-items:flex-end}.elementor-field-group .elementor-field-textual{width:100%;max-width:100%;border:1px solid #69727d;background-color:transparent;color:#1f2124;vertical-align:middle;flex-grow:1}.elementor-field-group .elementor-field-textual:focus{box-shadow:inset 0 0 0 1px rgba(0,0,0,.1);outline:0}.elementor-field-group .elementor-field-textual::-moz-placeholder{color:inherit;font-family:inherit;opacity:.6}.elementor-field-group .elementor-field-textual::placeholder{color:inherit;font-family:inherit;opacity:.6}.elementor-field-group .elementor-select-wrapper{display:flex;position:relative;width:100%}.elementor-field-group .elementor-select-wrapper select{-webkit-appearance:none;-moz-appearance:none;appearance:none;color:inherit;font-size:inherit;font-family:inherit;font-weight:inherit;font-style:inherit;text-transform:inherit;letter-spacing:inherit;line-height:inherit;flex-basis:100%;padding-right:20px}.elementor-field-group .elementor-select-wrapper:before{content:"\e92a";font-family:eicons;font-size:15px;position:absolute;top:50%;transform:translateY(-50%);right:10px;pointer-events:none;text-shadow:0 0 3px rgba(0,0,0,.3)}.elementor-field-group.elementor-field-type-select-multiple .elementor-select-wrapper:before{content:""}.elementor-field-subgroup{display:flex;flex-wrap:wrap}.elementor-field-subgroup .elementor-field-option label{display:inline-block}.elementor-field-subgroup.elementor-subgroup-inline .elementor-field-option{padding-right:10px}.elementor-field-subgroup:not(.elementor-subgroup-inline) .elementor-field-option{flex-basis:100%}.elementor-field-type-acceptance .elementor-field-subgroup .elementor-field-option input,.elementor-field-type-acceptance .elementor-field-subgroup .elementor-field-option label,.elementor-field-type-checkbox .elementor-field-subgroup .elementor-field-option input,.elementor-field-type-checkbox .elementor-field-subgroup .elementor-field-option label,.elementor-field-type-radio .elementor-field-subgroup .elementor-field-option input,.elementor-field-type-radio .elementor-field-subgroup .elementor-field-option label{display:inline}.elementor-field-label{cursor:pointer}.elementor-mark-required .elementor-field-label:after{content:"*";color:red;padding-left:.2em}.elementor-field-textual{line-height:1.4;font-size:15px;min-height:40px;padding:5px 14px;border-radius:3px}.elementor-field-textual.elementor-size-xs{font-size:13px;min-height:33px;padding:4px 12px;border-radius:2px}.elementor-field-textual.elementor-size-md{font-size:16px;min-height:47px;padding:6px 16px;border-radius:4px}.elementor-field-textual.elementor-size-lg{font-size:18px;min-height:59px;padding:7px 20px;border-radius:5px}.elementor-field-textual.elementor-size-xl{font-size:20px;min-height:72px;padding:8px 24px;border-radius:6px}.elementor-button-align-stretch .elementor-field-type-submit:not(.e-form__buttons__wrapper) .elementor-button{flex-basis:100%}.elementor-button-align-stretch .e-form__buttons__wrapper{flex-basis:50%;flex-grow:1}.elementor-button-align-stretch .e-form__buttons__wrapper__button{flex-basis:100%}.elementor-button-align-center .e-form__buttons,.elementor-button-align-center .elementor-field-type-submit{justify-content:center}.elementor-button-align-start .e-form__buttons,.elementor-button-align-start .elementor-field-type-submit{justify-content:flex-start}.elementor-button-align-end .e-form__buttons,.elementor-button-align-end .elementor-field-type-submit{justify-content:flex-end}.elementor-button-align-center .elementor-field-type-submit:not(.e-form__buttons__wrapper) .elementor-button,.elementor-button-align-end .elementor-field-type-submit:not(.e-form__buttons__wrapper) .elementor-button,.elementor-button-align-start .elementor-field-type-submit:not(.e-form__buttons__wrapper) .elementor-button{flex-basis:auto}.elementor-button-align-center .e-form__buttons__wrapper,.elementor-button-align-end .e-form__buttons__wrapper,.elementor-button-align-start .e-form__buttons__wrapper{flex-grow:0}.elementor-button-align-center .e-form__buttons__wrapper,.elementor-button-align-center .e-form__buttons__wrapper__button,.elementor-button-align-end .e-form__buttons__wrapper,.elementor-button-align-end .e-form__buttons__wrapper__button,.elementor-button-align-start .e-form__buttons__wrapper,.elementor-button-align-start .e-form__buttons__wrapper__button{flex-basis:auto}@media screen and (max-width:1024px){.elementor-tablet-button-align-stretch .elementor-field-type-submit:not(.e-form__buttons__wrapper) .elementor-button{flex-basis:100%}.elementor-tablet-button-align-stretch .e-form__buttons__wrapper{flex-basis:50%;flex-grow:1}.elementor-tablet-button-align-stretch .e-form__buttons__wrapper__button{flex-basis:100%}.elementor-tablet-button-align-center .e-form__buttons,.elementor-tablet-button-align-center .elementor-field-type-submit{justify-content:center}.elementor-tablet-button-align-start .e-form__buttons,.elementor-tablet-button-align-start .elementor-field-type-submit{justify-content:flex-start}.elementor-tablet-button-align-end .e-form__buttons,.elementor-tablet-button-align-end .elementor-field-type-submit{justify-content:flex-end}.elementor-tablet-button-align-center .elementor-field-type-submit:not(.e-form__buttons__wrapper) .elementor-button,.elementor-tablet-button-align-end .elementor-field-type-submit:not(.e-form__buttons__wrapper) .elementor-button,.elementor-tablet-button-align-start .elementor-field-type-submit:not(.e-form__buttons__wrapper) .elementor-button{flex-basis:auto}.elementor-tablet-button-align-center .e-form__buttons__wrapper,.elementor-tablet-button-align-end .e-form__buttons__wrapper,.elementor-tablet-button-align-start .e-form__buttons__wrapper{flex-grow:0}.elementor-tablet-button-align-center .e-form__buttons__wrapper,.elementor-tablet-button-align-center .e-form__buttons__wrapper__button,.elementor-tablet-button-align-end .e-form__buttons__wrapper,.elementor-tablet-button-align-end .e-form__buttons__wrapper__button,.elementor-tablet-button-align-start .e-form__buttons__wrapper,.elementor-tablet-button-align-start .e-form__buttons__wrapper__button{flex-basis:auto}}@media screen and (max-width:767px){.elementor-mobile-button-align-stretch .elementor-field-type-submit:not(.e-form__buttons__wrapper) .elementor-button{flex-basis:100%}.elementor-mobile-button-align-stretch .e-form__buttons__wrapper{flex-basis:50%;flex-grow:1}.elementor-mobile-button-align-stretch .e-form__buttons__wrapper__button{flex-basis:100%}.elementor-mobile-button-align-center .e-form__buttons,.elementor-mobile-button-align-center .elementor-field-type-submit{justify-content:center}.elementor-mobile-button-align-start .e-form__buttons,.elementor-mobile-button-align-start .elementor-field-type-submit{justify-content:flex-start}.elementor-mobile-button-align-end .e-form__buttons,.elementor-mobile-button-align-end .elementor-field-type-submit{justify-content:flex-end}.elementor-mobile-button-align-center .elementor-field-type-submit:not(.e-form__buttons__wrapper) .elementor-button,.elementor-mobile-button-align-end .elementor-field-type-submit:not(.e-form__buttons__wrapper) .elementor-button,.elementor-mobile-button-align-start .elementor-field-type-submit:not(.e-form__buttons__wrapper) .elementor-button{flex-basis:auto}.elementor-mobile-button-align-center .e-form__buttons__wrapper,.elementor-mobile-button-align-end .e-form__buttons__wrapper,.elementor-mobile-button-align-start .e-form__buttons__wrapper{flex-grow:0}.elementor-mobile-button-align-center .e-form__buttons__wrapper,.elementor-mobile-button-align-center .e-form__buttons__wrapper__button,.elementor-mobile-button-align-end .e-form__buttons__wrapper,.elementor-mobile-button-align-end .e-form__buttons__wrapper__button,.elementor-mobile-button-align-start .e-form__buttons__wrapper,.elementor-mobile-button-align-start .e-form__buttons__wrapper__button{flex-basis:auto}}.elementor-error .elementor-field{border-color:#d9534f}.elementor-error .help-inline{color:#d9534f;font-size:.9em}.elementor-message{margin:10px 0;font-size:1em;line-height:1}.elementor-message:before{content:"\e90e";display:inline-block;font-family:eicons;font-weight:400;font-style:normal;vertical-align:middle;margin-right:5px}.elementor-message.elementor-message-danger{color:#d9534f}.elementor-message.elementor-message-danger:before{content:"\e87f"}.elementor-message.form-message-success{color:#5cb85c}.elementor-form .elementor-button{padding-top:0;padding-bottom:0;border:none}.elementor-form .elementor-button>span{display:flex;justify-content:center}.elementor-form .elementor-button.elementor-size-xs{min-height:33px}.elementor-form .elementor-button.elementor-size-sm{min-height:40px}.elementor-form .elementor-button.elementor-size-md{min-height:47px}.elementor-form .elementor-button.elementor-size-lg{min-height:59px}.elementor-form .elementor-button.elementor-size-xl{min-height:72px}.elementor-element .elementor-widget-container{transition:background .3s,border .3s,border-radius .3s,box-shadow .3s,transform var(--e-transform-transition-duration,.4s)}.elementor-button{display:inline-block;line-height:1;background-color:#69727d;font-size:15px;padding:12px 24px;border-radius:3px;color:#fff;fill:#fff;text-align:center;transition:all .3s}.elementor-button:focus,.elementor-button:hover,.elementor-button:visited{color:#fff}.elementor-button-content-wrapper{display:flex;justify-content:center}.elementor-button-icon{flex-grow:0;order:5}.elementor-button-icon svg{width:1em;height:auto}.elementor-button-icon .e-font-icon-svg{height:1em}.elementor-button-text{flex-grow:1;order:10;display:inline-block}.elementor-button.elementor-size-xs{font-size:13px;padding:10px 20px;border-radius:2px}.elementor-button.elementor-size-md{font-size:16px;padding:15px 30px;border-radius:4px}.elementor-button.elementor-size-lg{font-size:18px;padding:20px 40px;border-radius:5px}.elementor-button.elementor-size-xl{font-size:20px;padding:25px 50px;border-radius:6px}.elementor-button .elementor-align-icon-right{margin-left:5px;order:15}.elementor-button .elementor-align-icon-left{margin-right:5px;order:5}.elementor-button span{text-decoration:inherit}.elementor-element.elementor-button-info .elementor-button{background-color:#5bc0de}.elementor-element.elementor-button-success .elementor-button{background-color:#5cb85c}.elementor-element.elementor-button-warning .elementor-button{background-color:#f0ad4e}.elementor-element.elementor-button-danger .elementor-button{background-color:#d9534f}.elementor-widget-button .elementor-button .elementor-button-info{background-color:#5bc0de}.elementor-widget-button .elementor-button .elementor-button-success{background-color:#5cb85c}.elementor-widget-button .elementor-button .elementor-button-warning{background-color:#f0ad4e}.elementor-widget-button .elementor-button .elementor-button-danger{background-color:#d9534f}.elementor-tab-title a{color:inherit}.elementor-view-stacked .elementor-icon{padding:.5em;background-color:#69727d;color:#fff;fill:#fff}.elementor-view-framed .elementor-icon{padding:.5em;color:#69727d;border:3px solid #69727d;background-color:transparent}.elementor-icon{display:inline-block;line-height:1;transition:all .3s;color:#69727d;font-size:50px;text-align:center}.elementor-icon:hover{color:#69727d}.elementor-icon i,.elementor-icon svg{width:1em;height:1em;position:relative;display:block}.elementor-icon i:before,.elementor-icon svg:before{position:absolute;left:50%;transform:translateX(-50%)}.elementor-icon i.fad{width:auto}.elementor-shape-circle .elementor-icon{border-radius:50%}.e-transform .elementor-widget-container{transform:perspective(var(--e-transform-perspective,0)) rotate(var(--e-transform-rotateZ,0)) rotateX(var(--e-transform-rotateX,0)) rotateY(var(--e-transform-rotateY,0)) translate(var(--e-transform-translate,0)) translateX(var(--e-transform-translateX,0)) translateY(var(--e-transform-translateY,0)) scaleX(calc(var(--e-transform-flipX, 1) * var(--e-transform-scaleX, var(--e-transform-scale, 1)))) scaleY(calc(var(--e-transform-flipY, 1) * var(--e-transform-scaleY, var(--e-transform-scale, 1)))) skewX(var(--e-transform-skewX,0)) skewY(var(--e-transform-skewY,0));transform-origin:var(--e-transform-origin-y) var(--e-transform-origin-x)}.e-con.e-transform{transform:perspective(var(--e-con-transform-perspective,0)) rotate(var(--e-con-transform-rotateZ,0)) rotateX(var(--e-con-transform-rotateX,0)) rotateY(var(--e-con-transform-rotateY,0)) translate(var(--e-con-transform-translate,0)) translateX(var(--e-con-transform-translateX,0)) translateY(var(--e-con-transform-translateY,0)) scaleX(calc(var(--e-con-transform-flipX, 1) * var(--e-con-transform-scaleX, var(--e-con-transform-scale, 1)))) scaleY(calc(var(--e-con-transform-flipY, 1) * var(--e-con-transform-scaleY, var(--e-con-transform-scale, 1)))) skewX(var(--e-con-transform-skewX,0)) skewY(var(--e-con-transform-skewY,0));transform-origin:var(--e-con-transform-origin-y) var(--e-con-transform-origin-x)}.elementor-element,.elementor-lightbox{--swiper-theme-color:#000;--swiper-navigation-size:44px;--swiper-pagination-bullet-size:6px;--swiper-pagination-bullet-horizontal-gap:6px}.elementor-element .swiper-container .swiper-slide figure,.elementor-element .swiper .swiper-slide figure,.elementor-lightbox .swiper-container .swiper-slide figure,.elementor-lightbox .swiper .swiper-slide figure{line-height:0}.elementor-element .swiper-container .elementor-lightbox-content-source,.elementor-element .swiper .elementor-lightbox-content-source,.elementor-lightbox .swiper-container .elementor-lightbox-content-source,.elementor-lightbox .swiper .elementor-lightbox-content-source{display:none}.elementor-element .swiper-container .elementor-swiper-button,.elementor-element .swiper-container~.elementor-swiper-button,.elementor-element .swiper .elementor-swiper-button,.elementor-element .swiper~.elementor-swiper-button,.elementor-lightbox .swiper-container .elementor-swiper-button,.elementor-lightbox .swiper-container~.elementor-swiper-button,.elementor-lightbox .swiper .elementor-swiper-button,.elementor-lightbox .swiper~.elementor-swiper-button{position:absolute;display:inline-flex;z-index:1;cursor:pointer;font-size:25px;color:hsla(0,0%,93.3%,.9);top:50%;transform:translateY(-50%)}.elementor-element .swiper-container .elementor-swiper-button svg,.elementor-element .swiper-container~.elementor-swiper-button svg,.elementor-element .swiper .elementor-swiper-button svg,.elementor-element .swiper~.elementor-swiper-button svg,.elementor-lightbox .swiper-container .elementor-swiper-button svg,.elementor-lightbox .swiper-container~.elementor-swiper-button svg,.elementor-lightbox .swiper .elementor-swiper-button svg,.elementor-lightbox .swiper~.elementor-swiper-button svg{fill:hsla(0,0%,93.3%,.9);height:1em;width:1em}.elementor-element .swiper-container .elementor-swiper-button-prev,.elementor-element .swiper-container~.elementor-swiper-button-prev,.elementor-element .swiper .elementor-swiper-button-prev,.elementor-element .swiper~.elementor-swiper-button-prev,.elementor-lightbox .swiper-container .elementor-swiper-button-prev,.elementor-lightbox .swiper-container~.elementor-swiper-button-prev,.elementor-lightbox .swiper .elementor-swiper-button-prev,.elementor-lightbox .swiper~.elementor-swiper-button-prev{left:10px}.elementor-element .swiper-container .elementor-swiper-button-next,.elementor-element .swiper-container~.elementor-swiper-button-next,.elementor-element .swiper .elementor-swiper-button-next,.elementor-element .swiper~.elementor-swiper-button-next,.elementor-lightbox .swiper-container .elementor-swiper-button-next,.elementor-lightbox .swiper-container~.elementor-swiper-button-next,.elementor-lightbox .swiper .elementor-swiper-button-next,.elementor-lightbox .swiper~.elementor-swiper-button-next{right:10px}.elementor-element .swiper-container .elementor-swiper-button.swiper-button-disabled,.elementor-element .swiper-container~.elementor-swiper-button.swiper-button-disabled,.elementor-element .swiper .elementor-swiper-button.swiper-button-disabled,.elementor-element .swiper~.elementor-swiper-button.swiper-button-disabled,.elementor-lightbox .swiper-container .elementor-swiper-button.swiper-button-disabled,.elementor-lightbox .swiper-container~.elementor-swiper-button.swiper-button-disabled,.elementor-lightbox .swiper .elementor-swiper-button.swiper-button-disabled,.elementor-lightbox .swiper~.elementor-swiper-button.swiper-button-disabled{opacity:.3}.elementor-element .swiper-container .swiper-image-stretch .swiper-slide .swiper-slide-image,.elementor-element .swiper .swiper-image-stretch .swiper-slide .swiper-slide-image,.elementor-lightbox .swiper-container .swiper-image-stretch .swiper-slide .swiper-slide-image,.elementor-lightbox .swiper .swiper-image-stretch .swiper-slide .swiper-slide-image{width:100%}.elementor-element .swiper-container .swiper-horizontal>.swiper-pagination-bullets,.elementor-element .swiper-container .swiper-pagination-bullets.swiper-pagination-horizontal,.elementor-element .swiper-container .swiper-pagination-custom,.elementor-element .swiper-container .swiper-pagination-fraction,.elementor-element .swiper-container~.swiper-pagination-bullets.swiper-pagination-horizontal,.elementor-element .swiper-container~.swiper-pagination-custom,.elementor-element .swiper-container~.swiper-pagination-fraction,.elementor-element .swiper .swiper-horizontal>.swiper-pagination-bullets,.elementor-element .swiper .swiper-pagination-bullets.swiper-pagination-horizontal,.elementor-element .swiper .swiper-pagination-custom,.elementor-element .swiper .swiper-pagination-fraction,.elementor-element .swiper~.swiper-pagination-bullets.swiper-pagination-horizontal,.elementor-element .swiper~.swiper-pagination-custom,.elementor-element .swiper~.swiper-pagination-fraction,.elementor-lightbox .swiper-container .swiper-horizontal>.swiper-pagination-bullets,.elementor-lightbox .swiper-container .swiper-pagination-bullets.swiper-pagination-horizontal,.elementor-lightbox .swiper-container .swiper-pagination-custom,.elementor-lightbox .swiper-container .swiper-pagination-fraction,.elementor-lightbox .swiper-container~.swiper-pagination-bullets.swiper-pagination-horizontal,.elementor-lightbox .swiper-container~.swiper-pagination-custom,.elementor-lightbox .swiper-container~.swiper-pagination-fraction,.elementor-lightbox .swiper .swiper-horizontal>.swiper-pagination-bullets,.elementor-lightbox .swiper .swiper-pagination-bullets.swiper-pagination-horizontal,.elementor-lightbox .swiper .swiper-pagination-custom,.elementor-lightbox .swiper .swiper-pagination-fraction,.elementor-lightbox .swiper~.swiper-pagination-bullets.swiper-pagination-horizontal,.elementor-lightbox .swiper~.swiper-pagination-custom,.elementor-lightbox .swiper~.swiper-pagination-fraction{bottom:5px}.elementor-element .swiper-container.swiper-cube .elementor-swiper-button,.elementor-element .swiper-container.swiper-cube~.elementor-swiper-button,.elementor-element .swiper.swiper-cube .elementor-swiper-button,.elementor-element .swiper.swiper-cube~.elementor-swiper-button,.elementor-lightbox .swiper-container.swiper-cube .elementor-swiper-button,.elementor-lightbox .swiper-container.swiper-cube~.elementor-swiper-button,.elementor-lightbox .swiper.swiper-cube .elementor-swiper-button,.elementor-lightbox .swiper.swiper-cube~.elementor-swiper-button{transform:translate3d(0,-50%,1px)}.elementor-element :where(.swiper-container-horizontal)~.swiper-pagination-bullets,.elementor-lightbox :where(.swiper-container-horizontal)~.swiper-pagination-bullets{bottom:5px;left:0;width:100%}.elementor-element :where(.swiper-container-horizontal)~.swiper-pagination-bullets .swiper-pagination-bullet,.elementor-lightbox :where(.swiper-container-horizontal)~.swiper-pagination-bullets .swiper-pagination-bullet{margin:0 var(--swiper-pagination-bullet-horizontal-gap,4px)}.elementor-element :where(.swiper-container-horizontal)~.swiper-pagination-progressbar,.elementor-lightbox :where(.swiper-container-horizontal)~.swiper-pagination-progressbar{width:100%;height:4px;left:0;top:0}.elementor-element.elementor-pagination-position-outside .swiper,.elementor-element.elementor-pagination-position-outside .swiper-container,.elementor-lightbox.elementor-pagination-position-outside .swiper,.elementor-lightbox.elementor-pagination-position-outside .swiper-container{padding-bottom:30px}.elementor-element.elementor-pagination-position-outside .swiper-container .elementor-swiper-button,.elementor-element.elementor-pagination-position-outside .swiper-container~.elementor-swiper-button,.elementor-element.elementor-pagination-position-outside .swiper .elementor-swiper-button,.elementor-element.elementor-pagination-position-outside .swiper~.elementor-swiper-button,.elementor-lightbox.elementor-pagination-position-outside .swiper-container .elementor-swiper-button,.elementor-lightbox.elementor-pagination-position-outside .swiper-container~.elementor-swiper-button,.elementor-lightbox.elementor-pagination-position-outside .swiper .elementor-swiper-button,.elementor-lightbox.elementor-pagination-position-outside .swiper~.elementor-swiper-button{top:calc(50% - 30px / 2)}.elementor-element .elementor-swiper,.elementor-lightbox .elementor-swiper{position:relative}.elementor-element .elementor-main-swiper,.elementor-lightbox .elementor-main-swiper{position:static}.elementor-element.elementor-arrows-position-outside .swiper,.elementor-element.elementor-arrows-position-outside .swiper-container,.elementor-lightbox.elementor-arrows-position-outside .swiper,.elementor-lightbox.elementor-arrows-position-outside .swiper-container{width:calc(100% - 60px)}.elementor-element.elementor-arrows-position-outside .swiper-container .elementor-swiper-button-prev,.elementor-element.elementor-arrows-position-outside .swiper-container~.elementor-swiper-button-prev,.elementor-element.elementor-arrows-position-outside .swiper .elementor-swiper-button-prev,.elementor-element.elementor-arrows-position-outside .swiper~.elementor-swiper-button-prev,.elementor-lightbox.elementor-arrows-position-outside .swiper-container .elementor-swiper-button-prev,.elementor-lightbox.elementor-arrows-position-outside .swiper-container~.elementor-swiper-button-prev,.elementor-lightbox.elementor-arrows-position-outside .swiper .elementor-swiper-button-prev,.elementor-lightbox.elementor-arrows-position-outside .swiper~.elementor-swiper-button-prev{left:0}.elementor-element.elementor-arrows-position-outside .swiper-container .elementor-swiper-button-next,.elementor-element.elementor-arrows-position-outside .swiper-container~.elementor-swiper-button-next,.elementor-element.elementor-arrows-position-outside .swiper .elementor-swiper-button-next,.elementor-element.elementor-arrows-position-outside .swiper~.elementor-swiper-button-next,.elementor-lightbox.elementor-arrows-position-outside .swiper-container .elementor-swiper-button-next,.elementor-lightbox.elementor-arrows-position-outside .swiper-container~.elementor-swiper-button-next,.elementor-lightbox.elementor-arrows-position-outside .swiper .elementor-swiper-button-next,.elementor-lightbox.elementor-arrows-position-outside .swiper~.elementor-swiper-button-next{right:0}.elementor-lightbox{--lightbox-ui-color:hsla(0,0%,93.3%,0.9);--lightbox-ui-color-hover:#fff;--lightbox-text-color:var(--lightbox-ui-color);--lightbox-header-icons-size:20px;--lightbox-navigation-icons-size:25px}.elementor-lightbox:not(.elementor-popup-modal) .dialog-header,.elementor-lightbox:not(.elementor-popup-modal) .dialog-message{text-align:center}.elementor-lightbox .dialog-header{display:none}.elementor-lightbox .dialog-widget-content{background:none;box-shadow:none;width:100%;height:100%}.elementor-lightbox .dialog-message{animation-duration:.3s;height:100%}.elementor-lightbox .dialog-message.dialog-lightbox-message{padding:0}.elementor-lightbox .dialog-lightbox-close-button{cursor:pointer;position:absolute;font-size:var(--lightbox-header-icons-size);right:.75em;margin-top:13px;padding:.25em;z-index:2;line-height:1;display:flex}.elementor-lightbox .dialog-lightbox-close-button svg{height:1em;width:1em}.elementor-lightbox .dialog-lightbox-close-button,.elementor-lightbox .elementor-swiper-button{color:var(--lightbox-ui-color);transition:all .3s;opacity:1}.elementor-lightbox .dialog-lightbox-close-button svg,.elementor-lightbox .elementor-swiper-button svg{fill:var(--lightbox-ui-color)}.elementor-lightbox .dialog-lightbox-close-button:hover,.elementor-lightbox .elementor-swiper-button:hover{color:var(--lightbox-ui-color-hover)}.elementor-lightbox .dialog-lightbox-close-button:hover svg,.elementor-lightbox .elementor-swiper-button:hover svg{fill:var(--lightbox-ui-color-hover)}.elementor-lightbox .swiper,.elementor-lightbox .swiper-container{height:100%}.elementor-lightbox .elementor-lightbox-item{display:flex;align-items:center;justify-content:center;position:relative;padding:70px;box-sizing:border-box;height:100%;margin:auto}@media (max-width:767px){.elementor-lightbox .elementor-lightbox-item{padding:70px 0}}.elementor-lightbox .elementor-lightbox-image{max-height:100%;-webkit-user-select:none;-moz-user-select:none;user-select:none}.elementor-lightbox .elementor-lightbox-image,.elementor-lightbox .elementor-lightbox-image:hover{opacity:1;filter:none;border:none}.elementor-lightbox .elementor-lightbox-image{box-shadow:0 0 30px rgba(0,0,0,.3),0 0 8px -5px rgba(0,0,0,.3);border-radius:2px}.elementor-lightbox .elementor-video-container{width:100%;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.elementor-lightbox .elementor-video-container .elementor-video-landscape,.elementor-lightbox .elementor-video-container .elementor-video-portrait,.elementor-lightbox .elementor-video-container .elementor-video-square{width:100%;height:100%;margin:auto}.elementor-lightbox .elementor-video-container .elementor-video-landscape iframe,.elementor-lightbox .elementor-video-container .elementor-video-portrait iframe,.elementor-lightbox .elementor-video-container .elementor-video-square iframe{border:0;background-color:#000}.elementor-lightbox .elementor-video-container .elementor-video-landscape iframe,.elementor-lightbox .elementor-video-container .elementor-video-landscape video,.elementor-lightbox .elementor-video-container .elementor-video-portrait iframe,.elementor-lightbox .elementor-video-container .elementor-video-portrait video,.elementor-lightbox .elementor-video-container .elementor-video-square iframe,.elementor-lightbox .elementor-video-container .elementor-video-square video{aspect-ratio:var(--video-aspect-ratio,1.77777)}@supports not (aspect-ratio:1/1){.elementor-lightbox .elementor-video-container .elementor-video-landscape,.elementor-lightbox .elementor-video-container .elementor-video-portrait,.elementor-lightbox .elementor-video-container .elementor-video-square{position:relative;overflow:hidden;height:0;padding-bottom:calc(100% / var(--video-aspect-ratio, 1.77777))}.elementor-lightbox .elementor-video-container .elementor-video-landscape iframe,.elementor-lightbox .elementor-video-container .elementor-video-landscape video,.elementor-lightbox .elementor-video-container .elementor-video-portrait iframe,.elementor-lightbox .elementor-video-container .elementor-video-portrait video,.elementor-lightbox .elementor-video-container .elementor-video-square iframe,.elementor-lightbox .elementor-video-container .elementor-video-square video{position:absolute;top:0;right:0;bottom:0;left:0}}.elementor-lightbox .elementor-video-container .elementor-video-square iframe,.elementor-lightbox .elementor-video-container .elementor-video-square video{width:min(90vh,90vw);height:min(90vh,90vw)}.elementor-lightbox .elementor-video-container .elementor-video-landscape iframe,.elementor-lightbox .elementor-video-container .elementor-video-landscape video{width:100%;max-height:90vh}.elementor-lightbox .elementor-video-container .elementor-video-portrait iframe,.elementor-lightbox .elementor-video-container .elementor-video-portrait video{height:100%;max-width:90vw}@media (min-width:1025px){.elementor-lightbox .elementor-video-container .elementor-video-landscape{width:85vw;max-height:85vh}.elementor-lightbox .elementor-video-container .elementor-video-portrait{height:85vh;max-width:85vw}}@media (max-width:1024px){.elementor-lightbox .elementor-video-container .elementor-video-landscape{width:95vw;max-height:95vh}.elementor-lightbox .elementor-video-container .elementor-video-portrait{height:95vh;max-width:95vw}}.elementor-lightbox .swiper-container .elementor-swiper-button-prev,.elementor-lightbox .swiper .elementor-swiper-button-prev{left:0}.elementor-lightbox .swiper-container .elementor-swiper-button-next,.elementor-lightbox .swiper .elementor-swiper-button-next{right:0}.elementor-lightbox .swiper-container .swiper-pagination-fraction,.elementor-lightbox .swiper .swiper-pagination-fraction{width:-moz-max-content;width:max-content;color:#fff}.elementor-lightbox .elementor-swiper-button:focus{outline-width:1px}.elementor-lightbox .elementor-swiper-button-next,.elementor-lightbox .elementor-swiper-button-prev{height:100%;display:flex;align-items:center;width:15%;justify-content:center;font-size:var(--lightbox-navigation-icons-size)}@media (max-width:767px){.elementor-lightbox .elementor-swiper-button:focus{outline:none}.elementor-lightbox .elementor-swiper-button-next,.elementor-lightbox .elementor-swiper-button-prev{width:20%}.elementor-lightbox .elementor-swiper-button-next i,.elementor-lightbox .elementor-swiper-button-prev i{padding:10px;background-color:rgba(0,0,0,.5)}.elementor-lightbox .elementor-swiper-button-prev{left:0;justify-content:flex-start}.elementor-lightbox .elementor-swiper-button-next{right:0;justify-content:flex-end}}.elementor-slideshow__counter{color:currentColor;font-size:.75em;width:-moz-max-content;width:max-content}.elementor-slideshow__footer,.elementor-slideshow__header{position:absolute;left:0;width:100%;padding:15px 20px;transition:.3s}.elementor-slideshow__footer{color:var(--lightbox-text-color)}.elementor-slideshow__header{color:var(--lightbox-ui-color);display:flex;flex-direction:row-reverse;font-size:var(--lightbox-header-icons-size);padding-left:1em;padding-right:2.6em;top:0;align-items:center;z-index:10}.elementor-slideshow__header>i,.elementor-slideshow__header>svg{cursor:pointer;padding:.25em;margin:0 .35em}.elementor-slideshow__header>i{font-size:inherit}.elementor-slideshow__header>i:hover{color:var(--lightbox-ui-color-hover)}.elementor-slideshow__header>svg{box-sizing:content-box;fill:var(--lightbox-ui-color);height:1em;width:1em}.elementor-slideshow__header>svg:hover{fill:var(--lightbox-ui-color-hover)}.elementor-slideshow__header .elementor-slideshow__counter{margin-right:auto}.elementor-slideshow__header .elementor-icon-share{z-index:5}.elementor-slideshow__share-menu{background-color:transparent;width:0;height:0;position:absolute;overflow:hidden;transition:background-color .4s}.elementor-slideshow__share-menu .elementor-slideshow__share-links a{color:#0c0d0e}.elementor-slideshow__share-links{display:block;position:absolute;min-width:200px;right:2.8em;top:3em;background-color:#fff;border-radius:3px;padding:14px 20px;transform:scale(0);opacity:0;transform-origin:90% 10%;transition:all .25s .1s;box-shadow:0 4px 15px rgba(0,0,0,.3)}.elementor-slideshow__share-links a{text-align:left;color:#3f444b;font-size:12px;line-height:2.5;display:block;opacity:0;transition:opacity .5s .1s}.elementor-slideshow__share-links a:hover{color:#000}.elementor-slideshow__share-links a i,.elementor-slideshow__share-links a svg{margin-right:.75em}.elementor-slideshow__share-links a i{font-size:1.25em}.elementor-slideshow__share-links a svg{height:1.25em;width:1.25em}.elementor-slideshow__share-links:before{content:"";display:block;position:absolute;top:1px;right:.5em;border:.45em solid transparent;border-bottom-color:#fff;transform:translateY(-100%) scaleX(.7)}.elementor-slideshow__footer{bottom:0;z-index:5;position:fixed}.elementor-slideshow__description,.elementor-slideshow__title{margin:0}.elementor-slideshow__title{font-size:16px;font-weight:700}.elementor-slideshow__description{font-size:14px}.elementor-slideshow--ui-hidden .elementor-slideshow__footer,.elementor-slideshow--ui-hidden .elementor-slideshow__header{opacity:0;pointer-events:none}.elementor-slideshow--ui-hidden .elementor-swiper-button-next,.elementor-slideshow--ui-hidden .elementor-swiper-button-prev{opacity:0}.elementor-slideshow--fullscreen-mode .elementor-video-container{width:100%}.elementor-slideshow--zoom-mode .elementor-slideshow__footer,.elementor-slideshow--zoom-mode .elementor-slideshow__header{background-color:rgba(0,0,0,.5)}.elementor-slideshow--zoom-mode .elementor-swiper-button-next,.elementor-slideshow--zoom-mode .elementor-swiper-button-prev{opacity:0;pointer-events:none}.elementor-slideshow--share-mode .elementor-slideshow__share-menu{top:0;left:0;width:100vw;height:100vh;opacity:1;cursor:default;background-color:rgba(0,0,0,.5)}.elementor-slideshow--share-mode .elementor-slideshow__share-links{transform:scale(1)}.elementor-slideshow--share-mode .elementor-slideshow__share-links,.elementor-slideshow--share-mode .elementor-slideshow__share-links a{opacity:1}.elementor-slideshow--share-mode .elementor-slideshow__share-links .eicon-twitter{color:#1da1f2}.elementor-slideshow--share-mode .elementor-slideshow__share-links .eicon-facebook{color:#3b5998}.elementor-slideshow--share-mode .elementor-slideshow__share-links .eicon-pinterest{color:#bd081c}.elementor-slideshow--share-mode .elementor-slideshow__share-links .eicon-download-bold{color:#9da5ae}.elementor-slideshow--share-mode .elementor-slideshow__share-links .e-eicon-twitter{fill:#1da1f2}.elementor-slideshow--share-mode .elementor-slideshow__share-links .e-eicon-facebook{fill:#3b5998}.elementor-slideshow--share-mode .elementor-slideshow__share-links .e-eicon-pinterest{fill:#bd081c}.elementor-slideshow--share-mode .elementor-slideshow__share-links .e-eicon-download-bold{fill:#9da5ae}.elementor-slideshow--share-mode .eicon-share-arrow{z-index:2}.animated{animation-duration:1.25s}.animated.animated-slow{animation-duration:2s}.animated.animated-fast{animation-duration:.75s}.animated.infinite{animation-iteration-count:infinite}.animated.reverse{animation-direction:reverse;animation-fill-mode:forwards}@media (prefers-reduced-motion:reduce){.animated{animation:none}}.elementor-shape{overflow:hidden;position:absolute;left:0;width:100%;line-height:0;direction:ltr}.elementor-shape-top{top:-1px}.elementor-shape-top:not([data-negative=false]) svg{z-index:-1}.elementor-shape-bottom{bottom:-1px}.elementor-shape-bottom:not([data-negative=true]) svg{z-index:-1}.elementor-shape[data-negative=false].elementor-shape-bottom,.elementor-shape[data-negative=true].elementor-shape-top{transform:rotate(180deg)}.elementor-shape svg{display:block;width:calc(100% + 1.3px);position:relative;left:50%;transform:translateX(-50%)}.elementor-shape .elementor-shape-fill{fill:#fff;transform-origin:center;transform:rotateY(0deg)}#wp-admin-bar-elementor_edit_page>.ab-item:before{content:"\e813";font-family:eicons;top:3px;font-size:18px}#wp-admin-bar-elementor_edit_page .ab-submenu .ab-item{display:flex;width:200px}#wp-admin-bar-elementor_edit_page .elementor-edit-link-title{white-space:nowrap;text-overflow:ellipsis;overflow:hidden;width:100%}#wp-admin-bar-elementor_edit_page .elementor-edit-link-type{background:#3f444b;font-size:11px;line-height:9px;margin-top:6px;padding:4px 8px;border-radius:3px}#wp-admin-bar-elementor_inspector>.ab-item:before{content:"\f348";top:2px}#wpadminbar *{font-style:normal}.page-template-elementor_canvas.elementor-page:before{display:none}.elementor-post__thumbnail__link{transition:none}#left-area ul.elementor-icon-list-items,.elementor-edit-area .elementor-element ul.elementor-icon-list-items,.elementor .elementor-element ul.elementor-icon-list-items{padding:0}.e--ua-appleWebkit.rtl{--flex-right:flex-start}.e--ua-appleWebkit .elementor-share-buttons--align-right,.e--ua-appleWebkit .elementor-widget-social-icons.e-grid-align-right{--justify-content:var(--flex-right,flex-end)}.e--ua-appleWebkit .elementor-share-buttons--align-center,.e--ua-appleWebkit .elementor-widget-social-icons.e-grid-align-center{--justify-content:center}.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-center .elementor-grid,.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-justify .elementor-grid,.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-right .elementor-grid,.e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-center .elementor-grid,.e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-right .elementor-grid{width:auto;display:flex;flex-wrap:wrap;justify-content:var(--justify-content,space-between);margin-left:calc(-.5 * var(--grid-column-gap));margin-right:calc(-.5 * var(--grid-column-gap))}.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-center .elementor-grid-item,.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-justify .elementor-grid-item,.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-right .elementor-grid-item,.e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-center .elementor-grid-item,.e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-right .elementor-grid-item{margin-left:calc(.5 * var(--grid-column-gap));margin-right:calc(.5 * var(--grid-column-gap))}.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-left .elementor-grid,.e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-left .elementor-grid{display:inline-block}.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-left .elementor-grid,.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-left .elementor-grid-item,.e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-left .elementor-grid,.e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-left .elementor-grid-item{margin-left:0;margin-right:0}@media (max-width:1024px){.e--ua-appleWebkit .elementor-share-buttons-tablet--align-right,.e--ua-appleWebkit .elementor-widget-social-icons.e-grid-align-tablet-right{--justify-content:var(--flex-right,flex-end)}.e--ua-appleWebkit .elementor-share-buttons-tablet--align-center,.e--ua-appleWebkit .elementor-widget-social-icons.e-grid-align-tablet-center{--justify-content:center}.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-tablet-center .elementor-grid,.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-tablet-justify .elementor-grid,.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-tablet-right .elementor-grid,.e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-tablet-center .elementor-grid,.e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-tablet-right .elementor-grid{width:auto;display:flex;flex-wrap:wrap;justify-content:var(--justify-content,space-between);margin-left:calc(-.5 * var(--grid-column-gap));margin-right:calc(-.5 * var(--grid-column-gap))}.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-tablet-center .elementor-grid-item,.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-tablet-justify .elementor-grid-item,.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-tablet-right .elementor-grid-item,.e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-tablet-center .elementor-grid-item,.e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-tablet-right .elementor-grid-item{margin-left:calc(.5 * var(--grid-column-gap));margin-right:calc(.5 * var(--grid-column-gap))}.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons-tablet--align-left .elementor-grid,.e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-tablet-left .elementor-grid{display:inline-block}.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons-tablet--align-left .elementor-grid,.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons-tablet--align-left .elementor-grid-item,.e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-tablet-left .elementor-grid,.e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-tablet-left .elementor-grid-item{margin-left:0;margin-right:0}}@media (max-width:767px){.e--ua-appleWebkit .elementor-share-buttons-mobile--align-right,.e--ua-appleWebkit .elementor-widget-social-icons.e-grid-align-mobile-right{--justify-content:var(--flex-right,flex-end)}.e--ua-appleWebkit .elementor-share-buttons-mobile--align-center,.e--ua-appleWebkit .elementor-widget-social-icons.e-grid-align-mobile-center{--justify-content:center}.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-mobile-center .elementor-grid,.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-mobile-justify .elementor-grid,.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-mobile-right .elementor-grid,.e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-mobile-center .elementor-grid,.e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-mobile-right .elementor-grid{width:auto;display:flex;flex-wrap:wrap;justify-content:var(--justify-content,space-between);margin-left:calc(-.5 * var(--grid-column-gap));margin-right:calc(-.5 * var(--grid-column-gap))}.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-mobile-center .elementor-grid-item,.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-mobile-justify .elementor-grid-item,.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-mobile-right .elementor-grid-item,.e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-mobile-center .elementor-grid-item,.e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-mobile-right .elementor-grid-item{margin-left:calc(.5 * var(--grid-column-gap));margin-right:calc(.5 * var(--grid-column-gap))}.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons-mobile--align-left .elementor-grid,.e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-mobile-left .elementor-grid{display:inline-block}.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons-mobile--align-left .elementor-grid,.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons-mobile--align-left .elementor-grid-item,.e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-mobile-left .elementor-grid,.e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-mobile-left .elementor-grid-item{margin-left:0;margin-right:0}}@media (max-width:767px){.elementor .elementor-hidden-mobile,.elementor .elementor-hidden-phone{display:none}}@media (min-width:-1) and (max-width:-1){.elementor .elementor-hidden-mobile_extra{display:none}}@media (min-width:768px) and (max-width:1024px){.elementor .elementor-hidden-tablet{display:none}}@media (min-width:-1) and (max-width:-1){.elementor .elementor-hidden-laptop,.elementor .elementor-hidden-tablet_extra{display:none}}@media (min-width:1025px) and (max-width:99999px){.elementor .elementor-hidden-desktop{display:none}}@media (min-width:-1){.elementor .elementor-hidden-widescreen{display:none}}.elementor-widget-text-path{font-size:20px;text-align:var(--alignment,left)}.elementor-widget-text-path svg{width:var(--width);max-width:100%;height:auto;overflow:visible;word-spacing:var(--word-spacing);transform:rotate(var(--rotate,0)) scaleX(var(--scale-x,1)) scaleY(var(--scale-y,1))}.elementor-widget-text-path svg path{vector-effect:non-scaling-stroke;fill:var(--path-fill,transparent);stroke:var(--stroke-color,transparent);stroke-width:var(--stroke-width,1px);transition:var(--stroke-transition) stroke,var(--stroke-transition) fill}.elementor-widget-text-path svg:hover path{--path-fill:var(--path-fill-hover);--stroke-color:var(--stroke-color-hover);--stroke-width:var(--stroke-width-hover)}.elementor-widget-text-path svg text{--fill:var(--text-color);fill:var(--fill);direction:var(--direction,ltr);transition:var(--transition) stroke,var(--transition) stroke-width,var(--transition) fill}.elementor-widget-text-path svg text:hover{--color:var(--text-color-hover,var(--text-color));--fill:var(--color);color:var(--color)}.elementor-widget-n-tabs{--n-tabs-color-accent-fallback:#61ce70;--n-tabs-color-secondary-fallback:#54595f;--n-tabs-default-padding-block:15px;--n-tabs-default-padding-inline:35px;--n-tabs-background-color:transparent;--n-tabs-display:flex;--n-tabs-direction:column;--n-tabs-gap:10px;--n-tabs-heading-display:flex;--n-tabs-heading-direction:row;--n-tabs-heading-grow:initial;--n-tabs-heading-justify-content:center;--n-tabs-heading-width:initial;--n-tabs-heading-overflow-x:initial;--n-tabs-heading-wrap:nowrap;--n-tabs-border-width:1px;--n-tabs-border-color:#d5d8dc;--n-tabs-content-display:flex;--n-tabs-title-color:var(--e-global-color-secondary,var(--n-tabs-color-secondary-fallback));--n-tabs-title-color-hover:#fff;--n-tabs-title-color-active:#fff;--n-tabs-title-background-color:#f1f2f3;--n-tabs-title-background-color-hover:var(--e-global-color-accent,var(--n-tabs-color-accent-fallback));--n-tabs-title-background-color-active:var(--e-global-color-accent,var(--n-tabs-color-accent-fallback));--n-tabs-title-width:initial;--n-tabs-title-height:initial;--n-tabs-title-font-size:1rem;--n-tabs-title-white-space:initial;--n-tabs-title-justify-content-toggle:initial;--n-tabs-title-align-items-toggle:center;--n-tabs-title-justify-content:center;--n-tabs-title-align-items:center;--n-tabs-title-text-align:center;--n-tabs-title-direction:row;--n-tabs-title-gap:10px;--n-tabs-title-flex-grow:0;--n-tabs-title-flex-basis:content;--n-tabs-title-flex-shrink:initial;--n-tabs-title-order:initial;--n-tabs-title-padding-block-start:var(--n-tabs-default-padding-block);--n-tabs-title-padding-inline-end:var(--n-tabs-default-padding-inline);--n-tabs-title-padding-block-end:var(--n-tabs-default-padding-block);--n-tabs-title-padding-inline-start:var(--n-tabs-default-padding-inline);--n-tabs-title-border-radius:initial;--n-tabs-title-transition:0.3s;--n-tabs-icon-color:var(--e-global-color-secondary,var(--n-tabs-color-secondary-fallback));--n-tabs-icon-color-hover:var(--n-tabs-title-color-hover);--n-tabs-icon-color-active:#fff;--n-tabs-icon-gap:5px;width:100%;max-width:100%}.elementor-widget-n-tabs .e-n-tabs{display:var(--n-tabs-display);flex-direction:var(--n-tabs-direction);gap:var(--n-tabs-gap);text-align:start;min-width:0}.elementor-widget-n-tabs .e-n-tabs-heading{display:var(--n-tabs-heading-display);flex-basis:var(--n-tabs-heading-width);flex-direction:var(--n-tabs-heading-direction);flex-shrink:0;justify-content:var(--n-tabs-heading-justify-content);gap:var(--n-tabs-title-gap);overflow-x:var(--n-tabs-heading-overflow-x);flex-wrap:var(--n-tabs-heading-wrap);-ms-overflow-style:none;scrollbar-width:none}.elementor-widget-n-tabs .e-n-tabs-heading::-webkit-scrollbar{display:none}.elementor-widget-n-tabs .e-n-tabs-heading.e-scroll{cursor:grabbing;cursor:-webkit-grabbing}.elementor-widget-n-tabs .e-n-tabs-heading.e-scroll-active{position:relative}.elementor-widget-n-tabs .e-n-tabs-heading.e-scroll-active:before{content:"";position:absolute;inset-block:0;inset-inline:-1000vw;z-index:2}.elementor-widget-n-tabs .e-n-tabs-content{display:var(--n-tabs-content-display);flex-grow:1;min-width:0}.elementor-widget-n-tabs .e-n-tabs-content>.e-con:not(.e-active){display:none}.elementor-widget-n-tabs .e-n-tabs:not(.e-activated)>.e-n-tabs-content>.e-con:first-child{display:flex}.elementor-widget-n-tabs .e-n-tab-title{all:unset;-webkit-user-select:none;-moz-user-select:none;user-select:none;display:flex;align-items:var(--n-tabs-title-align-items-toggle,var(--n-tabs-title-align-items));flex-direction:var(--n-tabs-title-direction);justify-content:var(--n-tabs-title-justify-content-toggle,var(--n-tabs-title-justify-content));gap:var(--n-tabs-icon-gap);border-width:var(--n-tabs-border-width);position:relative;cursor:pointer;outline:none;flex-grow:var(--n-tabs-title-flex-grow);flex-basis:var(--n-tabs-title-flex-basis);flex-shrink:var(--n-tabs-title-flex-shrink);padding-block-start:var(--n-tabs-title-padding-block-start);padding-inline-end:var(--n-tabs-title-padding-inline-end);padding-block-end:var(--n-tabs-title-padding-block-end);padding-inline-start:var(--n-tabs-title-padding-inline-start);border-radius:var(--n-tabs-title-border-radius);height:var(--n-tabs-title-height);width:var(--n-tabs-title-width);white-space:var(--n-tabs-title-white-space);transition:background var(--n-tabs-title-transition),color var(--n-tabs-title-transition),border var(--n-tabs-title-transition),box-shadow var(--n-tabs-title-transition),text-shadow var(--n-tabs-title-transition),stroke var(--n-tabs-title-transition),stroke-width var(--n-tabs-title-transition),-webkit-text-stroke-width var(--n-tabs-title-transition),-webkit-text-stroke-color var(--n-tabs-title-transition),transform var(--n-tabs-title-transition)}.elementor-widget-n-tabs .e-n-tab-title:focus-visible{outline:5px auto -webkit-focus-ring-color}.elementor-widget-n-tabs .e-n-tab-title span i,.elementor-widget-n-tabs .e-n-tab-title span svg{transition:color var(--n-tabs-title-transition),fill var(--n-tabs-title-transition)}.elementor-widget-n-tabs .e-n-tab-title-text{display:flex;align-items:center;font-size:var(--n-tabs-title-font-size);text-align:var(--n-tabs-title-text-align)}.elementor-widget-n-tabs .e-n-tab-title .e-n-tab-icon{display:flex;align-items:center;flex-direction:column;flex-shrink:0;order:var(--n-tabs-icon-order);overflow:hidden}.elementor-widget-n-tabs .e-n-tab-title .e-n-tab-icon i{font-size:var(--n-tabs-icon-size,var(--n-tabs-title-font-size))}.elementor-widget-n-tabs .e-n-tab-title .e-n-tab-icon svg{width:var(--n-tabs-icon-size,var(--n-tabs-title-font-size));height:var(--n-tabs-icon-size,var(--n-tabs-title-font-size))}.elementor-widget-n-tabs .e-n-tab-title .e-n-tab-icon:empty{display:none}.elementor-widget-n-tabs .e-n-tab-title[aria-selected=false]{background-color:var(--n-tabs-title-background-color)}.elementor-widget-n-tabs .e-n-tab-title[aria-selected=false],.elementor-widget-n-tabs .e-n-tab-title[aria-selected=false] a{color:var(--n-tabs-title-color)}.elementor-widget-n-tabs .e-n-tab-title[aria-selected=false] .e-n-tab-icon i{color:var(--n-tabs-icon-color)}.elementor-widget-n-tabs .e-n-tab-title[aria-selected=false] .e-n-tab-icon svg{fill:var(--n-tabs-icon-color)}.elementor-widget-n-tabs .e-n-tab-title[aria-selected=false] .e-n-tab-icon i:last-child,.elementor-widget-n-tabs .e-n-tab-title[aria-selected=false] .e-n-tab-icon svg:last-child{transform:translateY(-100vh);height:0;opacity:0}.elementor-widget-n-tabs .e-n-tab-title[aria-selected=true],.elementor-widget-n-tabs .e-n-tab-title[aria-selected=true] a{color:var(--n-tabs-title-color-active)}.elementor-widget-n-tabs .e-n-tab-title[aria-selected=true] .e-n-tab-icon i{color:var(--n-tabs-icon-color-active)}.elementor-widget-n-tabs .e-n-tab-title[aria-selected=true] .e-n-tab-icon svg{fill:var(--n-tabs-icon-color-active)}.elementor-widget-n-tabs .e-n-tab-title[aria-selected=true] .e-n-tab-icon i:first-child,.elementor-widget-n-tabs .e-n-tab-title[aria-selected=true] .e-n-tab-icon svg:first-child{transform:translateY(-100vh);height:0;opacity:0}.elementor-widget-n-tabs .e-n-tab-title[aria-selected=true][class*=elementor-animation-]:active,.elementor-widget-n-tabs .e-n-tab-title[aria-selected=true][class*=elementor-animation-]:focus,.elementor-widget-n-tabs .e-n-tab-title[aria-selected=true][class*=elementor-animation-]:hover{transform:none;animation:initial}.elementor-widget-n-tabs [data-touch-mode=false] .e-n-tab-title[aria-selected=false]:hover,.elementor-widget-n-tabs [data-touch-mode=false] .e-n-tab-title[aria-selected=false]:hover a{color:var(--n-tabs-title-color-hover)}.elementor-widget-n-tabs [data-touch-mode=false] .e-n-tab-title[aria-selected=false]:hover .e-n-tab-icon i{color:var(--n-tabs-icon-color-hover)}.elementor-widget-n-tabs [data-touch-mode=false] .e-n-tab-title[aria-selected=false]:hover .e-n-tab-icon svg{fill:var(--n-tabs-icon-color-hover)}.elementor-widget-n-tabs [data-touch-mode=true] .e-n-tab-title[aria-selected=false]:hover,.elementor-widget-n-tabs [data-touch-mode=true] .e-n-tab-title[aria-selected=false]:hover a{color:var(--n-tabs-title-color-active)}.elementor-widget-n-tabs [data-touch-mode=true] .e-n-tab-title[aria-selected=false]:hover .e-n-tab-icon i{color:var(--n-tabs-icon-color-active)}.elementor-widget-n-tabs [data-touch-mode=true] .e-n-tab-title[aria-selected=false]:hover .e-n-tab-icon svg{fill:var(--n-tabs-icon-color-active)}.elementor-widget-n-tabs [data-touch-mode=true] .e-n-tab-title[aria-selected=false]:hover .e-n-tab-icon i:first-child,.elementor-widget-n-tabs [data-touch-mode=true] .e-n-tab-title[aria-selected=false]:hover .e-n-tab-icon svg:first-child{transform:translateY(-100vh);height:0;opacity:0}.elementor-widget-n-tabs [data-touch-mode=true] .e-n-tab-title[aria-selected=false]:hover[class*=elementor-animation-]:active,.elementor-widget-n-tabs [data-touch-mode=true] .e-n-tab-title[aria-selected=false]:hover[class*=elementor-animation-]:focus,.elementor-widget-n-tabs [data-touch-mode=true] .e-n-tab-title[aria-selected=false]:hover[class*=elementor-animation-]:hover{transform:none;animation:initial}.elementor-widget-n-tabs [data-touch-mode=true] .e-n-tab-title[aria-selected=false]:hover .e-n-tab-icon i:last-child,.elementor-widget-n-tabs [data-touch-mode=true] .e-n-tab-title[aria-selected=false]:hover .e-n-tab-icon svg:last-child{transform:none;height:auto;opacity:1}.elementor .elementor-element.elementor-widget-n-tabs>.elementor-widget-container>.e-n-tabs[data-touch-mode=false]>.e-n-tabs-heading .e-n-tab-title[aria-selected=false]:hover{background-color:var(--n-tabs-title-background-color-hover);background-image:none}.elementor .elementor-element.elementor-widget-n-tabs>.elementor-widget-container>.e-n-tabs>.e-n-tabs-heading .e-n-tab-title[aria-selected=true],.elementor .elementor-element.elementor-widget-n-tabs>.elementor-widget-container>.e-n-tabs[data-touch-mode=true]>.e-n-tabs-heading .e-n-tab-title[aria-selected=false]:hover{background-color:var(--n-tabs-title-background-color-active);background-image:none}@media (max-width:767px){.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-mobile{--n-tabs-direction:column;--n-tabs-heading-display:contents;--n-tabs-content-display:contents}.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-mobile .e-n-tabs{gap:0}.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-mobile .e-n-tabs-content>.e-con{order:var(--n-tabs-title-order)}.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-mobile .e-n-tab-title{order:var(--n-tabs-title-order);width:auto}.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-mobile .e-n-tab-title:not(:first-child){margin-block-start:var(--n-tabs-title-gap)}.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-mobile .e-n-tab-title[aria-selected=true]{margin-block-end:var(--n-tabs-gap)}}@media (max-width:-1){.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-mobile_extra{--n-tabs-direction:column;--n-tabs-heading-display:contents;--n-tabs-content-display:contents}.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-mobile_extra .e-n-tabs{gap:0}.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-mobile_extra .e-n-tabs-content>.e-con{order:var(--n-tabs-title-order)}.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-mobile_extra .e-n-tab-title{order:var(--n-tabs-title-order);width:auto}.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-mobile_extra .e-n-tab-title:not(:first-child){margin-block-start:var(--n-tabs-title-gap)}.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-mobile_extra .e-n-tab-title[aria-selected=true]{margin-block-end:var(--n-tabs-gap)}}@media (max-width:1024px){.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-tablet{--n-tabs-direction:column;--n-tabs-heading-display:contents;--n-tabs-content-display:contents}.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-tablet .e-n-tabs{gap:0}.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-tablet .e-n-tabs-content>.e-con{order:var(--n-tabs-title-order)}.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-tablet .e-n-tab-title{order:var(--n-tabs-title-order);width:auto}.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-tablet .e-n-tab-title:not(:first-child){margin-block-start:var(--n-tabs-title-gap)}.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-tablet .e-n-tab-title[aria-selected=true]{margin-block-end:var(--n-tabs-gap)}}@media (max-width:-1){.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-tablet_extra{--n-tabs-direction:column;--n-tabs-heading-display:contents;--n-tabs-content-display:contents}.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-tablet_extra .e-n-tabs{gap:0}.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-tablet_extra .e-n-tabs-content>.e-con{order:var(--n-tabs-title-order)}.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-tablet_extra .e-n-tab-title{order:var(--n-tabs-title-order);width:auto}.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-tablet_extra .e-n-tab-title:not(:first-child){margin-block-start:var(--n-tabs-title-gap)}.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-tablet_extra .e-n-tab-title[aria-selected=true]{margin-block-end:var(--n-tabs-gap)}}@media (max-width:-1){.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-laptop{--n-tabs-direction:column;--n-tabs-heading-display:contents;--n-tabs-content-display:contents}.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-laptop .e-n-tabs{gap:0}.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-laptop .e-n-tabs-content>.e-con{order:var(--n-tabs-title-order)}.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-laptop .e-n-tab-title{order:var(--n-tabs-title-order);width:auto}.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-laptop .e-n-tab-title:not(:first-child){margin-block-start:var(--n-tabs-title-gap)}.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-laptop .e-n-tab-title[aria-selected=true]{margin-block-end:var(--n-tabs-gap)}}.elementor-widget-n-accordion{--n-accordion-title-font-size:20px;--n-accordion-title-flex-grow:initial;--n-accordion-title-justify-content:initial;--n-accordion-title-icon-order:-1;--n-accordion-border-width:1px;--n-accordion-border-color:#d5d8dc;--n-accordion-border-style:solid;--n-accordion-item-title-flex-grow:initial;--n-accordion-item-title-space-between:0px;--n-accordion-item-title-distance-from-content:0px;--n-accordion-padding:10px;--n-accordion-border-radius:0px;--n-accordion-icon-size:15px;--n-accordion-title-normal-color:#1f2124;--n-accordion-title-hover-color:#1f2124;--n-accordion-title-active-color:#1f2124;--n-accordion-icon-normal-color:var(--n-accordion-title-normal-color);--n-accordion-icon-hover-color:var(--n-accordion-title-hover-color);--n-accordion-icon-active-color:var(--n-accordion-title-active-color);--n-accordion-icon-gap:0 10px;width:100%}.elementor-widget-n-accordion .e-n-accordion details>summary::-webkit-details-marker{display:none}.elementor-widget-n-accordion .e-n-accordion-item{display:flex;flex-direction:column;position:relative}.elementor-widget-n-accordion .e-n-accordion-item:not(:last-child){margin-block-end:var(--n-accordion-item-title-space-between)}.elementor-widget-n-accordion .e-n-accordion-item-title,:where(.elementor-widget-n-accordion .e-n-accordion-item>.e-con){border:var(--n-accordion-border-width) var(--n-accordion-border-style) var(--n-accordion-border-color)}.elementor-widget-n-accordion .e-n-accordion-item-title{display:flex;flex-direction:row;list-style:none;padding:var(--n-accordion-padding);justify-content:var(--n-accordion-title-justify-content);border-radius:var(--n-accordion-border-radius);flex-grow:var(--n-menu-title-flex-grow);gap:var(--n-accordion-icon-gap);color:var(--n-accordion-title-normal-color);align-items:center;cursor:pointer}.elementor-widget-n-accordion .e-n-accordion-item-title-header{display:flex}.elementor-widget-n-accordion .e-n-accordion-item-title-header h1,.elementor-widget-n-accordion .e-n-accordion-item-title-header h2,.elementor-widget-n-accordion .e-n-accordion-item-title-header h3,.elementor-widget-n-accordion .e-n-accordion-item-title-header h4,.elementor-widget-n-accordion .e-n-accordion-item-title-header h5,.elementor-widget-n-accordion .e-n-accordion-item-title-header h6,.elementor-widget-n-accordion .e-n-accordion-item-title-header p{margin-block-start:0;margin-block-end:0}.elementor-widget-n-accordion .e-n-accordion-item-title-text{font-size:var(--n-accordion-title-font-size);align-items:center}.elementor-widget-n-accordion .e-n-accordion-item-title-icon{display:flex;flex-direction:row;align-items:center;order:var(--n-accordion-title-icon-order);position:relative;width:-moz-fit-content;width:fit-content}.elementor-widget-n-accordion .e-n-accordion-item-title-icon span{height:var(--n-accordion-icon-size);width:auto}.elementor-widget-n-accordion .e-n-accordion-item-title-icon span>i{color:var(--n-accordion-icon-normal-color);font-size:var(--n-accordion-icon-size)}.elementor-widget-n-accordion .e-n-accordion-item-title-icon span>svg{fill:var(--n-accordion-icon-normal-color);height:var(--n-accordion-icon-size)}.elementor-widget-n-accordion .e-n-accordion-item-title>span{cursor:pointer}.elementor-widget-n-accordion .e-n-accordion-item[open] .e-n-accordion-item-title{margin-block-end:var(--n-accordion-item-title-distance-from-content);color:var(--n-accordion-title-active-color)}.elementor-widget-n-accordion .e-n-accordion-item[open] .e-n-accordion-item-title-icon .e-opened{display:flex}.elementor-widget-n-accordion .e-n-accordion-item[open] .e-n-accordion-item-title-icon .e-closed{display:none}.elementor-widget-n-accordion .e-n-accordion-item[open] .e-n-accordion-item-title-icon span>i{color:var(--n-accordion-icon-active-color)}.elementor-widget-n-accordion .e-n-accordion-item[open] .e-n-accordion-item-title-icon span>svg{fill:var(--n-accordion-icon-active-color)}.elementor-widget-n-accordion .e-n-accordion-item:not([open]):hover .e-n-accordion-item-title{color:var(--n-accordion-title-hover-color)}.elementor-widget-n-accordion .e-n-accordion-item:not([open]):hover .e-n-accordion-item-title-icon span>i{color:var(--n-accordion-icon-hover-color)}.elementor-widget-n-accordion .e-n-accordion-item:not([open]):hover .e-n-accordion-item-title-icon span>svg{fill:var(--n-accordion-icon-hover-color)}.elementor-widget-n-accordion .e-n-accordion-item .e-n-accordion-item-title-icon .e-opened{display:none}.elementor-widget-n-accordion .e-n-accordion-item .e-n-accordion-item-title-icon .e-closed{display:flex}.elementor-widget-n-accordion .e-n-accordion-item .e-n-accordion-item-title-icon span>svg{fill:var(--n-accordion-icon-normal-color)}.elementor-widget-n-accordion .e-n-accordion-item .e-n-accordion-item-title-icon span>i{color:var(--n-accordion-icon-normal-color)}.elementor-widget-n-accordion .e-n-accordion-item>span{cursor:pointer} \ No newline at end of file diff --git a/wp-content/plugins/elementor/assets/css/frontend-rtl.css b/wp-content/plugins/elementor/assets/css/frontend-rtl.css new file mode 100644 index 0000000..bf8036c --- /dev/null +++ b/wp-content/plugins/elementor/assets/css/frontend-rtl.css @@ -0,0 +1,5692 @@ +/*! elementor - v3.20.0 - 26-03-2024 */ +@charset "UTF-8"; +.dialog-widget-content { + background-color: var(--e-a-bg-default); + position: absolute; + border-radius: 3px; + box-shadow: 2px 8px 23px 3px rgba(0, 0, 0, 0.2); + overflow: hidden; +} + +.dialog-message { + line-height: 1.5; + box-sizing: border-box; +} + +.dialog-close-button { + cursor: pointer; + position: absolute; + margin-block-start: 15px; + left: 15px; + color: var(--e-a-color-txt); + font-size: 15px; + line-height: 1; + transition: var(--e-a-transition-hover); +} +.dialog-close-button:hover { + color: var(--e-a-color-txt-hover); +} + +.dialog-prevent-scroll { + overflow: hidden; + max-height: 100vh; +} + +.dialog-type-lightbox { + position: fixed; + height: 100%; + width: 100%; + bottom: 0; + left: 0; + background-color: rgba(0, 0, 0, 0.8); + z-index: 9999; + -webkit-user-select: none; + -moz-user-select: none; + user-select: none; +} + +.elementor-editor-active .elementor-popup-modal { + background-color: initial; +} + +.dialog-type-confirm .dialog-widget-content, +.dialog-type-alert .dialog-widget-content { + margin: auto; + width: 400px; + padding: 20px; +} +.dialog-type-confirm .dialog-header, +.dialog-type-alert .dialog-header { + font-size: 15px; + font-weight: 500; +} +.dialog-type-confirm .dialog-header:after, +.dialog-type-alert .dialog-header:after { + content: ""; + display: block; + border-block-end: var(--e-a-border); + padding-block-end: 10px; + margin-block-end: 10px; + margin-inline-start: -20px; + margin-inline-end: -20px; +} +.dialog-type-confirm .dialog-message, +.dialog-type-alert .dialog-message { + min-height: 50px; +} +.dialog-type-confirm .dialog-buttons-wrapper, +.dialog-type-alert .dialog-buttons-wrapper { + padding-block-start: 10px; + display: flex; + justify-content: flex-end; + gap: 15px; +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button { + font-size: 12px; + font-weight: 500; + line-height: 1.2; + padding: 8px 16px; + outline: none; + border: none; + border-radius: var(--e-a-border-radius); + background-color: var(--e-a-btn-bg); + color: var(--e-a-btn-color-invert); + transition: var(--e-a-transition-hover); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button:hover { + border: none; +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button:focus { + background-color: var(--e-a-btn-bg-hover); + color: var(--e-a-btn-color-invert); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:active, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button:active { + background-color: var(--e-a-btn-bg-active); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:not([disabled]), +.dialog-type-alert .dialog-buttons-wrapper .dialog-button:not([disabled]) { + cursor: pointer; +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:disabled, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button:disabled { + background-color: var(--e-a-btn-bg-disabled); + color: var(--e-a-btn-color-disabled); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:not(.elementor-button-state) .elementor-state-icon, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button:not(.elementor-button-state) .elementor-state-icon { + display: none; +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel { + background: transparent; + color: var(--e-a-color-txt); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel:focus { + background: var(--e-a-bg-hover); + color: var(--e-a-color-txt-hover); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt:disabled, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel:disabled, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt:disabled, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel:disabled { + background: transparent; + color: var(--e-a-color-txt-disabled); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt-border, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt-border { + border: 1px solid var(--e-a-color-txt-muted); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-success, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-success, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-success, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-success { + background-color: var(--e-a-btn-bg-success); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-success:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-success:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-success:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-success:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-success:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-success:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-success:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-success:focus { + background-color: var(--e-a-btn-bg-success-hover); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-take_over, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-take_over, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok { + background-color: var(--e-a-btn-bg-primary); + color: var(--e-a-btn-color); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-take_over:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-take_over:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-take_over:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-take_over:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok:focus { + background-color: var(--e-a-btn-bg-primary-hover); + color: var(--e-a-btn-color); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary.e-btn-txt, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-take_over, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary.dialog-cancel, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-ok, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary.e-btn-txt, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-take_over, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary.dialog-cancel, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-ok, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel { + background: transparent; + color: var(--e-a-color-primary-bold); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary.e-btn-txt:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-take_over:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary.dialog-cancel:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-ok:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary.e-btn-txt:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-take_over:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary.dialog-cancel:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-ok:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary.e-btn-txt:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-take_over:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary.dialog-cancel:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-ok:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary.e-btn-txt:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-take_over:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary.dialog-cancel:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-ok:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel:focus { + background: var(--e-a-bg-primary); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.go-pro, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-accent, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.go-pro, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-accent { + background-color: var(--e-a-btn-bg-accent); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.go-pro:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.go-pro:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-accent:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-accent:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.go-pro:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.go-pro:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-accent:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-accent:focus { + background-color: var(--e-a-btn-bg-accent-hover); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.go-pro:active, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-accent:active, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.go-pro:active, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-accent:active { + background-color: var(--e-a-btn-bg-accent-active); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-info, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-info, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-info, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-info { + background-color: var(--e-a-btn-bg-info); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-info:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-info:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-info:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-info:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-info:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-info:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-info:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-info:focus { + background-color: var(--e-a-btn-bg-info-hover); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-warning, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-warning, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-warning, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-warning { + background-color: var(--e-a-btn-bg-warning); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-warning:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-warning:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-warning:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-warning:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-warning:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-warning:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-warning:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-warning:focus { + background-color: var(--e-a-btn-bg-warning-hover); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-danger, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-danger, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-danger, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-danger { + background-color: var(--e-a-btn-bg-danger); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-danger:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-danger:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-danger:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-danger:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-danger:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-danger:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-danger:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-danger:focus { + background-color: var(--e-a-btn-bg-danger-hover); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button i, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button i { + margin-inline-end: 5px; +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button:visited, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button:visited { + color: initial; +} +.flatpickr-calendar { + width: 280px; +} +.flatpickr-calendar .flatpickr-current-month span.cur-month { + font-weight: 300; +} +.flatpickr-calendar .dayContainer { + width: 280px; + min-width: 280px; + max-width: 280px; +} +.flatpickr-calendar .flatpickr-days { + width: 280px; +} +.flatpickr-calendar .flatpickr-day { + max-width: 37px; + height: 37px; + line-height: 37px; +} + +.elementor-hidden { + display: none; +} + +.elementor-screen-only, +.screen-reader-text, +.screen-reader-text span, +.ui-helper-hidden-accessible { + position: absolute; + top: -10000em; + width: 1px; + height: 1px; + margin: -1px; + padding: 0; + overflow: hidden; + clip: rect(0, 0, 0, 0); + border: 0; +} + +.elementor-clearfix:after { + content: ""; + display: block; + clear: both; + width: 0; + height: 0; +} + +.e-logo-wrapper { + background: var(--e-a-bg-logo); + display: inline-block; + padding: 0.75em; + border-radius: 50%; + line-height: 1; +} +.e-logo-wrapper i { + color: var(--e-a-color-logo); + font-size: 1em; +} + +.elementor *, .elementor *:before, .elementor *:after { + box-sizing: border-box; +} +.elementor a { + box-shadow: none; + text-decoration: none; +} +.elementor hr { + margin: 0; + background-color: transparent; +} +.elementor img { + height: auto; + max-width: 100%; + border: none; + border-radius: 0; + box-shadow: none; +} +.elementor .elementor-widget:not(.elementor-widget-text-editor):not(.elementor-widget-theme-post-content) figure { + margin: 0; +} +.elementor embed, +.elementor iframe, +.elementor object, +.elementor video { + max-width: 100%; + width: 100%; + margin: 0; + line-height: 1; + border: none; +} +.elementor .elementor-background-video-container, +.elementor .elementor-background-holder, +.elementor .elementor-background { + height: 100%; + width: 100%; + top: 0; + left: 0; + position: absolute; + overflow: hidden; + z-index: 0; + direction: ltr; +} +.elementor .elementor-background-video-container { + transition: opacity 1s; + pointer-events: none; +} +.elementor .elementor-background-video-container.elementor-loading { + opacity: 0; +} +.elementor .elementor-background-video-embed { + max-width: none; +} +.elementor .elementor-background-video-embed, .elementor .elementor-background-video-hosted { + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); +} +.elementor .elementor-background-video { + max-width: none; + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); +} +.elementor .elementor-html5-video { + -o-object-fit: cover; + object-fit: cover; +} +.elementor .elementor-background-overlay { + height: 100%; + width: 100%; + top: 0; + left: 0; + position: absolute; +} +.elementor .elementor-background-slideshow { + position: absolute; + width: 100%; + height: 100%; + z-index: 0; + top: 0; + right: 0; +} +.elementor .elementor-background-slideshow__slide__image { + width: 100%; + height: 100%; + background-position: center center; + background-size: cover; +} + +.elementor-widget-wrap > .elementor-element.elementor-absolute, +.e-con > .elementor-element.elementor-absolute, +.e-con-inner > .elementor-element.elementor-absolute { + position: absolute; +} +.elementor-widget-wrap > .elementor-element.elementor-fixed, +.e-con > .elementor-element.elementor-fixed, +.e-con-inner > .elementor-element.elementor-fixed { + position: fixed; +} + +.elementor-widget-wrap .elementor-element.elementor-widget__width-auto, .elementor-widget-wrap .elementor-element.elementor-widget__width-initial { + max-width: 100%; +} +@media (max-width: 1024px) { + .elementor-widget-wrap .elementor-element.elementor-widget-tablet__width-auto, .elementor-widget-wrap .elementor-element.elementor-widget-tablet__width-initial { + max-width: 100%; + } +} +@media (max-width: 767px) { + .elementor-widget-wrap .elementor-element.elementor-widget-mobile__width-auto, .elementor-widget-wrap .elementor-element.elementor-widget-mobile__width-initial { + max-width: 100%; + } +} + +.elementor-element { + --flex-direction: initial; + --flex-wrap: initial; + --justify-content: initial; + --align-items: initial; + --align-content: initial; + --gap: initial; + --flex-basis: initial; + --flex-grow: initial; + --flex-shrink: initial; + --order: initial; + --align-self: initial; + flex-basis: var(--flex-basis); + flex-grow: var(--flex-grow); + flex-shrink: var(--flex-shrink); + order: var(--order); + align-self: var(--align-self); +} +.elementor-element.elementor-absolute, .elementor-element.elementor-fixed { + z-index: 1; +} +.elementor-element:where(.e-con-full, .elementor-widget) { + flex-direction: var(--flex-direction); + flex-wrap: var(--flex-wrap); + justify-content: var(--justify-content); + align-items: var(--align-items); + align-content: var(--align-content); + gap: var(--gap); +} + +.elementor-invisible { + visibility: hidden; +} + +.elementor-align-center { + text-align: center; +} +.elementor-align-center .elementor-button { + width: auto; +} +.elementor-align-right { + text-align: right; +} +.elementor-align-right .elementor-button { + width: auto; +} +.elementor-align-left { + text-align: left; +} +.elementor-align-left .elementor-button { + width: auto; +} +.elementor-align-justify .elementor-button { + width: 100%; +} + +.elementor-custom-embed-play { + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); +} +.elementor-custom-embed-play i { + font-size: 100px; + color: #fff; + text-shadow: 1px 0 6px rgba(0, 0, 0, 0.3); +} +.elementor-custom-embed-play svg { + height: 100px; + width: 100px; + fill: #fff; + filter: drop-shadow(1px 0 6px rgba(0, 0, 0, 0.3)); +} +.elementor-custom-embed-play i, +.elementor-custom-embed-play svg { + opacity: 0.8; + transition: all 0.5s; +} +.elementor-custom-embed-play.elementor-playing i { + font-family: eicons; +} +.elementor-custom-embed-play.elementor-playing i:before { + content: "\e8fb"; +} +.elementor-custom-embed-play.elementor-playing i, +.elementor-custom-embed-play.elementor-playing svg { + animation: eicon-spin 2s infinite linear; +} + +.elementor-tag { + display: inline-flex; +} + +.elementor-ken-burns { + transition-property: transform; + transition-duration: 10s; + transition-timing-function: linear; +} +.elementor-ken-burns--out { + transform: scale(1.3); +} +.elementor-ken-burns--active { + transition-duration: 20s; +} +.elementor-ken-burns--active.elementor-ken-burns--out { + transform: scale(1); +} +.elementor-ken-burns--active.elementor-ken-burns--in { + transform: scale(1.3); +} + +@media (min-width: -1) { + .elementor-widescreen-align-center { + text-align: center; + } + .elementor-widescreen-align-center .elementor-button { + width: auto; + } + .elementor-widescreen-align-right { + text-align: right; + } + .elementor-widescreen-align-right .elementor-button { + width: auto; + } + .elementor-widescreen-align-left { + text-align: left; + } + .elementor-widescreen-align-left .elementor-button { + width: auto; + } + .elementor-widescreen-align-justify .elementor-button { + width: 100%; + } +} +@media (max-width: -1) { + .elementor-laptop-align-center { + text-align: center; + } + .elementor-laptop-align-center .elementor-button { + width: auto; + } + .elementor-laptop-align-right { + text-align: right; + } + .elementor-laptop-align-right .elementor-button { + width: auto; + } + .elementor-laptop-align-left { + text-align: left; + } + .elementor-laptop-align-left .elementor-button { + width: auto; + } + .elementor-laptop-align-justify .elementor-button { + width: 100%; + } +} +@media (max-width: -1) { + .elementor-tablet_extra-align-center { + text-align: center; + } + .elementor-tablet_extra-align-center .elementor-button { + width: auto; + } + .elementor-tablet_extra-align-right { + text-align: right; + } + .elementor-tablet_extra-align-right .elementor-button { + width: auto; + } + .elementor-tablet_extra-align-left { + text-align: left; + } + .elementor-tablet_extra-align-left .elementor-button { + width: auto; + } + .elementor-tablet_extra-align-justify .elementor-button { + width: 100%; + } +} +@media (max-width: 1024px) { + .elementor-tablet-align-center { + text-align: center; + } + .elementor-tablet-align-center .elementor-button { + width: auto; + } + .elementor-tablet-align-right { + text-align: right; + } + .elementor-tablet-align-right .elementor-button { + width: auto; + } + .elementor-tablet-align-left { + text-align: left; + } + .elementor-tablet-align-left .elementor-button { + width: auto; + } + .elementor-tablet-align-justify .elementor-button { + width: 100%; + } +} +@media (max-width: -1) { + .elementor-mobile_extra-align-center { + text-align: center; + } + .elementor-mobile_extra-align-center .elementor-button { + width: auto; + } + .elementor-mobile_extra-align-right { + text-align: right; + } + .elementor-mobile_extra-align-right .elementor-button { + width: auto; + } + .elementor-mobile_extra-align-left { + text-align: left; + } + .elementor-mobile_extra-align-left .elementor-button { + width: auto; + } + .elementor-mobile_extra-align-justify .elementor-button { + width: 100%; + } +} +@media (max-width: 767px) { + .elementor-mobile-align-center { + text-align: center; + } + .elementor-mobile-align-center .elementor-button { + width: auto; + } + .elementor-mobile-align-right { + text-align: right; + } + .elementor-mobile-align-right .elementor-button { + width: auto; + } + .elementor-mobile-align-left { + text-align: left; + } + .elementor-mobile-align-left .elementor-button { + width: auto; + } + .elementor-mobile-align-justify .elementor-button { + width: 100%; + } +} +:root { + --page-title-display: block; +} + +.elementor-page-title, h1.entry-title { + display: var(--page-title-display); +} + +@keyframes eicon-spin { + 0% { + transform: rotate(0deg); + } + 100% { + transform: rotate(359deg); + } +} +.eicon-animation-spin { + animation: eicon-spin 2s infinite linear; +} + +.elementor-section { + position: relative; +} +.elementor-section .elementor-container { + display: flex; + margin-right: auto; + margin-left: auto; + position: relative; +} +@media (max-width: 1024px) { + .elementor-section .elementor-container { + flex-wrap: wrap; + } +} +.elementor-section.elementor-section-boxed > .elementor-container { + max-width: 1140px; +} +.elementor-section.elementor-section-stretched { + position: relative; + width: 100%; +} +.elementor-section.elementor-section-items-top > .elementor-container { + align-items: flex-start; +} +.elementor-section.elementor-section-items-middle > .elementor-container { + align-items: center; +} +.elementor-section.elementor-section-items-bottom > .elementor-container { + align-items: flex-end; +} +@media (min-width: 768px) { + .elementor-section.elementor-section-height-full { + height: 100vh; + } + .elementor-section.elementor-section-height-full > .elementor-container { + height: 100%; + } +} + +.elementor-bc-flex-widget .elementor-section-content-top > .elementor-container > .elementor-column > .elementor-widget-wrap { + align-items: flex-start; +} +.elementor-bc-flex-widget .elementor-section-content-middle > .elementor-container > .elementor-column > .elementor-widget-wrap { + align-items: center; +} +.elementor-bc-flex-widget .elementor-section-content-bottom > .elementor-container > .elementor-column > .elementor-widget-wrap { + align-items: flex-end; +} + +.elementor-row { + width: 100%; + display: flex; +} +@media (max-width: 1024px) { + .elementor-row { + flex-wrap: wrap; + } +} + +.elementor-widget-wrap { + position: relative; + width: 100%; + flex-wrap: wrap; + align-content: flex-start; +} +.elementor:not(.elementor-bc-flex-widget) .elementor-widget-wrap { + display: flex; +} +.elementor-widget-wrap > .elementor-element { + width: 100%; +} +.elementor-widget-wrap.e-swiper-container { + width: calc(100% - (var(--e-column-margin-left, 0px) + var(--e-column-margin-right, 0px))); +} + +.elementor-widget { + position: relative; +} +.elementor-widget:not(:last-child) { + margin-bottom: 20px; +} +.elementor-widget:not(:last-child).elementor-widget__width-auto, .elementor-widget:not(:last-child).elementor-widget__width-initial, .elementor-widget:not(:last-child).elementor-absolute { + margin-bottom: 0; +} + +.elementor-column { + position: relative; + min-height: 1px; + display: flex; +} + +.elementor-column-wrap { + width: 100%; + position: relative; + display: flex; +} + +.elementor-column-gap-narrow > .elementor-column > .elementor-element-populated { + padding: 5px; +} +.elementor-column-gap-default > .elementor-column > .elementor-element-populated { + padding: 10px; +} +.elementor-column-gap-extended > .elementor-column > .elementor-element-populated { + padding: 15px; +} +.elementor-column-gap-wide > .elementor-column > .elementor-element-populated { + padding: 20px; +} +.elementor-column-gap-wider > .elementor-column > .elementor-element-populated { + padding: 30px; +} + +.elementor-inner-section .elementor-column-gap-no .elementor-element-populated { + padding: 0; +} + +@media (min-width: 768px) { + .elementor-column.elementor-col-10, .elementor-column[data-col="10"] { + width: 10%; + } + .elementor-column.elementor-col-11, .elementor-column[data-col="11"] { + width: 11.111%; + } + .elementor-column.elementor-col-12, .elementor-column[data-col="12"] { + width: 12.5%; + } + .elementor-column.elementor-col-14, .elementor-column[data-col="14"] { + width: 14.285%; + } + .elementor-column.elementor-col-16, .elementor-column[data-col="16"] { + width: 16.666%; + } + .elementor-column.elementor-col-20, .elementor-column[data-col="20"] { + width: 20%; + } + .elementor-column.elementor-col-25, .elementor-column[data-col="25"] { + width: 25%; + } + .elementor-column.elementor-col-30, .elementor-column[data-col="30"] { + width: 30%; + } + .elementor-column.elementor-col-33, .elementor-column[data-col="33"] { + width: 33.333%; + } + .elementor-column.elementor-col-40, .elementor-column[data-col="40"] { + width: 40%; + } + .elementor-column.elementor-col-50, .elementor-column[data-col="50"] { + width: 50%; + } + .elementor-column.elementor-col-60, .elementor-column[data-col="60"] { + width: 60%; + } + .elementor-column.elementor-col-66, .elementor-column[data-col="66"] { + width: 66.666%; + } + .elementor-column.elementor-col-70, .elementor-column[data-col="70"] { + width: 70%; + } + .elementor-column.elementor-col-75, .elementor-column[data-col="75"] { + width: 75%; + } + .elementor-column.elementor-col-80, .elementor-column[data-col="80"] { + width: 80%; + } + .elementor-column.elementor-col-83, .elementor-column[data-col="83"] { + width: 83.333%; + } + .elementor-column.elementor-col-90, .elementor-column[data-col="90"] { + width: 90%; + } + .elementor-column.elementor-col-100, .elementor-column[data-col="100"] { + width: 100%; + } +} +@media (max-width: 479px) { + .elementor-column.elementor-xs-10 { + width: 10%; + } + .elementor-column.elementor-xs-11 { + width: 11.111%; + } + .elementor-column.elementor-xs-12 { + width: 12.5%; + } + .elementor-column.elementor-xs-14 { + width: 14.285%; + } + .elementor-column.elementor-xs-16 { + width: 16.666%; + } + .elementor-column.elementor-xs-20 { + width: 20%; + } + .elementor-column.elementor-xs-25 { + width: 25%; + } + .elementor-column.elementor-xs-30 { + width: 30%; + } + .elementor-column.elementor-xs-33 { + width: 33.333%; + } + .elementor-column.elementor-xs-40 { + width: 40%; + } + .elementor-column.elementor-xs-50 { + width: 50%; + } + .elementor-column.elementor-xs-60 { + width: 60%; + } + .elementor-column.elementor-xs-66 { + width: 66.666%; + } + .elementor-column.elementor-xs-70 { + width: 70%; + } + .elementor-column.elementor-xs-75 { + width: 75%; + } + .elementor-column.elementor-xs-80 { + width: 80%; + } + .elementor-column.elementor-xs-83 { + width: 83.333%; + } + .elementor-column.elementor-xs-90 { + width: 90%; + } + .elementor-column.elementor-xs-100 { + width: 100%; + } +} +@media (max-width: 767px) { + .elementor-column.elementor-sm-10 { + width: 10%; + } + .elementor-column.elementor-sm-11 { + width: 11.111%; + } + .elementor-column.elementor-sm-12 { + width: 12.5%; + } + .elementor-column.elementor-sm-14 { + width: 14.285%; + } + .elementor-column.elementor-sm-16 { + width: 16.666%; + } + .elementor-column.elementor-sm-20 { + width: 20%; + } + .elementor-column.elementor-sm-25 { + width: 25%; + } + .elementor-column.elementor-sm-30 { + width: 30%; + } + .elementor-column.elementor-sm-33 { + width: 33.333%; + } + .elementor-column.elementor-sm-40 { + width: 40%; + } + .elementor-column.elementor-sm-50 { + width: 50%; + } + .elementor-column.elementor-sm-60 { + width: 60%; + } + .elementor-column.elementor-sm-66 { + width: 66.666%; + } + .elementor-column.elementor-sm-70 { + width: 70%; + } + .elementor-column.elementor-sm-75 { + width: 75%; + } + .elementor-column.elementor-sm-80 { + width: 80%; + } + .elementor-column.elementor-sm-83 { + width: 83.333%; + } + .elementor-column.elementor-sm-90 { + width: 90%; + } + .elementor-column.elementor-sm-100 { + width: 100%; + } +} +@media (min-width: 768px) and (max-width: 1024px) { + .elementor-column.elementor-md-10 { + width: 10%; + } + .elementor-column.elementor-md-11 { + width: 11.111%; + } + .elementor-column.elementor-md-12 { + width: 12.5%; + } + .elementor-column.elementor-md-14 { + width: 14.285%; + } + .elementor-column.elementor-md-16 { + width: 16.666%; + } + .elementor-column.elementor-md-20 { + width: 20%; + } + .elementor-column.elementor-md-25 { + width: 25%; + } + .elementor-column.elementor-md-30 { + width: 30%; + } + .elementor-column.elementor-md-33 { + width: 33.333%; + } + .elementor-column.elementor-md-40 { + width: 40%; + } + .elementor-column.elementor-md-50 { + width: 50%; + } + .elementor-column.elementor-md-60 { + width: 60%; + } + .elementor-column.elementor-md-66 { + width: 66.666%; + } + .elementor-column.elementor-md-70 { + width: 70%; + } + .elementor-column.elementor-md-75 { + width: 75%; + } + .elementor-column.elementor-md-80 { + width: 80%; + } + .elementor-column.elementor-md-83 { + width: 83.333%; + } + .elementor-column.elementor-md-90 { + width: 90%; + } + .elementor-column.elementor-md-100 { + width: 100%; + } +} + +@media (min-width: -1) { + .elementor-reverse-widescreen > .elementor-container > :nth-child(1) { + order: 10; + } + .elementor-reverse-widescreen > .elementor-container > :nth-child(2) { + order: 9; + } + .elementor-reverse-widescreen > .elementor-container > :nth-child(3) { + order: 8; + } + .elementor-reverse-widescreen > .elementor-container > :nth-child(4) { + order: 7; + } + .elementor-reverse-widescreen > .elementor-container > :nth-child(5) { + order: 6; + } + .elementor-reverse-widescreen > .elementor-container > :nth-child(6) { + order: 5; + } + .elementor-reverse-widescreen > .elementor-container > :nth-child(7) { + order: 4; + } + .elementor-reverse-widescreen > .elementor-container > :nth-child(8) { + order: 3; + } + .elementor-reverse-widescreen > .elementor-container > :nth-child(9) { + order: 2; + } + .elementor-reverse-widescreen > .elementor-container > :nth-child(10) { + order: 1; + } +} +@media (min-width: 1025px) and (max-width: -1) { + .elementor-reverse-laptop > .elementor-container > :nth-child(1) { + order: 10; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(2) { + order: 9; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(3) { + order: 8; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(4) { + order: 7; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(5) { + order: 6; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(6) { + order: 5; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(7) { + order: 4; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(8) { + order: 3; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(9) { + order: 2; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(10) { + order: 1; + } +} +@media (min-width: -1) and (max-width: -1) { + .elementor-reverse-laptop > .elementor-container > :nth-child(1) { + order: 10; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(2) { + order: 9; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(3) { + order: 8; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(4) { + order: 7; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(5) { + order: 6; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(6) { + order: 5; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(7) { + order: 4; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(8) { + order: 3; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(9) { + order: 2; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(10) { + order: 1; + } +} +@media (min-width: 1025px) and (max-width: -1) { + .elementor-reverse-laptop > .elementor-container > :nth-child(1) { + order: initial; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(2) { + order: initial; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(3) { + order: initial; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(4) { + order: initial; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(5) { + order: initial; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(6) { + order: initial; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(7) { + order: initial; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(8) { + order: initial; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(9) { + order: initial; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(10) { + order: initial; + } + .elementor-reverse-tablet_extra > .elementor-container > :nth-child(1) { + order: 10; + } + .elementor-reverse-tablet_extra > .elementor-container > :nth-child(2) { + order: 9; + } + .elementor-reverse-tablet_extra > .elementor-container > :nth-child(3) { + order: 8; + } + .elementor-reverse-tablet_extra > .elementor-container > :nth-child(4) { + order: 7; + } + .elementor-reverse-tablet_extra > .elementor-container > :nth-child(5) { + order: 6; + } + .elementor-reverse-tablet_extra > .elementor-container > :nth-child(6) { + order: 5; + } + .elementor-reverse-tablet_extra > .elementor-container > :nth-child(7) { + order: 4; + } + .elementor-reverse-tablet_extra > .elementor-container > :nth-child(8) { + order: 3; + } + .elementor-reverse-tablet_extra > .elementor-container > :nth-child(9) { + order: 2; + } + .elementor-reverse-tablet_extra > .elementor-container > :nth-child(10) { + order: 1; + } +} +@media (min-width: 768px) and (max-width: 1024px) { + .elementor-reverse-tablet > .elementor-container > :nth-child(1) { + order: 10; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(2) { + order: 9; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(3) { + order: 8; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(4) { + order: 7; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(5) { + order: 6; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(6) { + order: 5; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(7) { + order: 4; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(8) { + order: 3; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(9) { + order: 2; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(10) { + order: 1; + } +} +@media (min-width: -1) and (max-width: 1024px) { + .elementor-reverse-tablet > .elementor-container > :nth-child(1) { + order: 10; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(2) { + order: 9; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(3) { + order: 8; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(4) { + order: 7; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(5) { + order: 6; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(6) { + order: 5; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(7) { + order: 4; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(8) { + order: 3; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(9) { + order: 2; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(10) { + order: 1; + } +} +@media (min-width: 768px) and (max-width: -1) { + .elementor-reverse-tablet > .elementor-container > :nth-child(1) { + order: initial; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(2) { + order: initial; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(3) { + order: initial; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(4) { + order: initial; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(5) { + order: initial; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(6) { + order: initial; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(7) { + order: initial; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(8) { + order: initial; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(9) { + order: initial; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(10) { + order: initial; + } + .elementor-reverse-mobile_extra > .elementor-container > :nth-child(1) { + order: 10; + } + .elementor-reverse-mobile_extra > .elementor-container > :nth-child(2) { + order: 9; + } + .elementor-reverse-mobile_extra > .elementor-container > :nth-child(3) { + order: 8; + } + .elementor-reverse-mobile_extra > .elementor-container > :nth-child(4) { + order: 7; + } + .elementor-reverse-mobile_extra > .elementor-container > :nth-child(5) { + order: 6; + } + .elementor-reverse-mobile_extra > .elementor-container > :nth-child(6) { + order: 5; + } + .elementor-reverse-mobile_extra > .elementor-container > :nth-child(7) { + order: 4; + } + .elementor-reverse-mobile_extra > .elementor-container > :nth-child(8) { + order: 3; + } + .elementor-reverse-mobile_extra > .elementor-container > :nth-child(9) { + order: 2; + } + .elementor-reverse-mobile_extra > .elementor-container > :nth-child(10) { + order: 1; + } +} +@media (max-width: 767px) { + .elementor-reverse-mobile > .elementor-container > :nth-child(1) { + order: 10; + } + .elementor-reverse-mobile > .elementor-container > :nth-child(2) { + order: 9; + } + .elementor-reverse-mobile > .elementor-container > :nth-child(3) { + order: 8; + } + .elementor-reverse-mobile > .elementor-container > :nth-child(4) { + order: 7; + } + .elementor-reverse-mobile > .elementor-container > :nth-child(5) { + order: 6; + } + .elementor-reverse-mobile > .elementor-container > :nth-child(6) { + order: 5; + } + .elementor-reverse-mobile > .elementor-container > :nth-child(7) { + order: 4; + } + .elementor-reverse-mobile > .elementor-container > :nth-child(8) { + order: 3; + } + .elementor-reverse-mobile > .elementor-container > :nth-child(9) { + order: 2; + } + .elementor-reverse-mobile > .elementor-container > :nth-child(10) { + order: 1; + } + .elementor-column { + width: 100%; + } +} +ul.elementor-icon-list-items.elementor-inline-items { + display: flex; + flex-wrap: wrap; +} +ul.elementor-icon-list-items.elementor-inline-items .elementor-inline-item { + word-break: break-word; +} + +.elementor-grid { + display: grid; + grid-column-gap: var(--grid-column-gap); + grid-row-gap: var(--grid-row-gap); +} +.elementor-grid .elementor-grid-item { + min-width: 0; +} +.elementor-grid-0 .elementor-grid { + display: inline-block; + width: 100%; + word-spacing: var(--grid-column-gap); + margin-bottom: calc(-1 * var(--grid-row-gap)); +} +.elementor-grid-0 .elementor-grid .elementor-grid-item { + display: inline-block; + margin-bottom: var(--grid-row-gap); + word-break: break-word; +} +.elementor-grid-1 .elementor-grid { + grid-template-columns: repeat(1, 1fr); +} +.elementor-grid-2 .elementor-grid { + grid-template-columns: repeat(2, 1fr); +} +.elementor-grid-3 .elementor-grid { + grid-template-columns: repeat(3, 1fr); +} +.elementor-grid-4 .elementor-grid { + grid-template-columns: repeat(4, 1fr); +} +.elementor-grid-5 .elementor-grid { + grid-template-columns: repeat(5, 1fr); +} +.elementor-grid-6 .elementor-grid { + grid-template-columns: repeat(6, 1fr); +} +.elementor-grid-7 .elementor-grid { + grid-template-columns: repeat(7, 1fr); +} +.elementor-grid-8 .elementor-grid { + grid-template-columns: repeat(8, 1fr); +} +.elementor-grid-9 .elementor-grid { + grid-template-columns: repeat(9, 1fr); +} +.elementor-grid-10 .elementor-grid { + grid-template-columns: repeat(10, 1fr); +} +.elementor-grid-11 .elementor-grid { + grid-template-columns: repeat(11, 1fr); +} +.elementor-grid-12 .elementor-grid { + grid-template-columns: repeat(12, 1fr); +} +@media (min-width: -1) { + .elementor-grid-widescreen-0 .elementor-grid { + display: inline-block; + width: 100%; + word-spacing: var(--grid-column-gap); + margin-bottom: calc(-1 * var(--grid-row-gap)); + } + .elementor-grid-widescreen-0 .elementor-grid .elementor-grid-item { + display: inline-block; + margin-bottom: var(--grid-row-gap); + word-break: break-word; + } + .elementor-grid-widescreen-1 .elementor-grid { + grid-template-columns: repeat(1, 1fr); + } + .elementor-grid-widescreen-2 .elementor-grid { + grid-template-columns: repeat(2, 1fr); + } + .elementor-grid-widescreen-3 .elementor-grid { + grid-template-columns: repeat(3, 1fr); + } + .elementor-grid-widescreen-4 .elementor-grid { + grid-template-columns: repeat(4, 1fr); + } + .elementor-grid-widescreen-5 .elementor-grid { + grid-template-columns: repeat(5, 1fr); + } + .elementor-grid-widescreen-6 .elementor-grid { + grid-template-columns: repeat(6, 1fr); + } + .elementor-grid-widescreen-7 .elementor-grid { + grid-template-columns: repeat(7, 1fr); + } + .elementor-grid-widescreen-8 .elementor-grid { + grid-template-columns: repeat(8, 1fr); + } + .elementor-grid-widescreen-9 .elementor-grid { + grid-template-columns: repeat(9, 1fr); + } + .elementor-grid-widescreen-10 .elementor-grid { + grid-template-columns: repeat(10, 1fr); + } + .elementor-grid-widescreen-11 .elementor-grid { + grid-template-columns: repeat(11, 1fr); + } + .elementor-grid-widescreen-12 .elementor-grid { + grid-template-columns: repeat(12, 1fr); + } +} +@media (max-width: -1) { + .elementor-grid-laptop-0 .elementor-grid { + display: inline-block; + width: 100%; + word-spacing: var(--grid-column-gap); + margin-bottom: calc(-1 * var(--grid-row-gap)); + } + .elementor-grid-laptop-0 .elementor-grid .elementor-grid-item { + display: inline-block; + margin-bottom: var(--grid-row-gap); + word-break: break-word; + } + .elementor-grid-laptop-1 .elementor-grid { + grid-template-columns: repeat(1, 1fr); + } + .elementor-grid-laptop-2 .elementor-grid { + grid-template-columns: repeat(2, 1fr); + } + .elementor-grid-laptop-3 .elementor-grid { + grid-template-columns: repeat(3, 1fr); + } + .elementor-grid-laptop-4 .elementor-grid { + grid-template-columns: repeat(4, 1fr); + } + .elementor-grid-laptop-5 .elementor-grid { + grid-template-columns: repeat(5, 1fr); + } + .elementor-grid-laptop-6 .elementor-grid { + grid-template-columns: repeat(6, 1fr); + } + .elementor-grid-laptop-7 .elementor-grid { + grid-template-columns: repeat(7, 1fr); + } + .elementor-grid-laptop-8 .elementor-grid { + grid-template-columns: repeat(8, 1fr); + } + .elementor-grid-laptop-9 .elementor-grid { + grid-template-columns: repeat(9, 1fr); + } + .elementor-grid-laptop-10 .elementor-grid { + grid-template-columns: repeat(10, 1fr); + } + .elementor-grid-laptop-11 .elementor-grid { + grid-template-columns: repeat(11, 1fr); + } + .elementor-grid-laptop-12 .elementor-grid { + grid-template-columns: repeat(12, 1fr); + } +} +@media (max-width: -1) { + .elementor-grid-tablet_extra-0 .elementor-grid { + display: inline-block; + width: 100%; + word-spacing: var(--grid-column-gap); + margin-bottom: calc(-1 * var(--grid-row-gap)); + } + .elementor-grid-tablet_extra-0 .elementor-grid .elementor-grid-item { + display: inline-block; + margin-bottom: var(--grid-row-gap); + word-break: break-word; + } + .elementor-grid-tablet_extra-1 .elementor-grid { + grid-template-columns: repeat(1, 1fr); + } + .elementor-grid-tablet_extra-2 .elementor-grid { + grid-template-columns: repeat(2, 1fr); + } + .elementor-grid-tablet_extra-3 .elementor-grid { + grid-template-columns: repeat(3, 1fr); + } + .elementor-grid-tablet_extra-4 .elementor-grid { + grid-template-columns: repeat(4, 1fr); + } + .elementor-grid-tablet_extra-5 .elementor-grid { + grid-template-columns: repeat(5, 1fr); + } + .elementor-grid-tablet_extra-6 .elementor-grid { + grid-template-columns: repeat(6, 1fr); + } + .elementor-grid-tablet_extra-7 .elementor-grid { + grid-template-columns: repeat(7, 1fr); + } + .elementor-grid-tablet_extra-8 .elementor-grid { + grid-template-columns: repeat(8, 1fr); + } + .elementor-grid-tablet_extra-9 .elementor-grid { + grid-template-columns: repeat(9, 1fr); + } + .elementor-grid-tablet_extra-10 .elementor-grid { + grid-template-columns: repeat(10, 1fr); + } + .elementor-grid-tablet_extra-11 .elementor-grid { + grid-template-columns: repeat(11, 1fr); + } + .elementor-grid-tablet_extra-12 .elementor-grid { + grid-template-columns: repeat(12, 1fr); + } +} +@media (max-width: 1024px) { + .elementor-grid-tablet-0 .elementor-grid { + display: inline-block; + width: 100%; + word-spacing: var(--grid-column-gap); + margin-bottom: calc(-1 * var(--grid-row-gap)); + } + .elementor-grid-tablet-0 .elementor-grid .elementor-grid-item { + display: inline-block; + margin-bottom: var(--grid-row-gap); + word-break: break-word; + } + .elementor-grid-tablet-1 .elementor-grid { + grid-template-columns: repeat(1, 1fr); + } + .elementor-grid-tablet-2 .elementor-grid { + grid-template-columns: repeat(2, 1fr); + } + .elementor-grid-tablet-3 .elementor-grid { + grid-template-columns: repeat(3, 1fr); + } + .elementor-grid-tablet-4 .elementor-grid { + grid-template-columns: repeat(4, 1fr); + } + .elementor-grid-tablet-5 .elementor-grid { + grid-template-columns: repeat(5, 1fr); + } + .elementor-grid-tablet-6 .elementor-grid { + grid-template-columns: repeat(6, 1fr); + } + .elementor-grid-tablet-7 .elementor-grid { + grid-template-columns: repeat(7, 1fr); + } + .elementor-grid-tablet-8 .elementor-grid { + grid-template-columns: repeat(8, 1fr); + } + .elementor-grid-tablet-9 .elementor-grid { + grid-template-columns: repeat(9, 1fr); + } + .elementor-grid-tablet-10 .elementor-grid { + grid-template-columns: repeat(10, 1fr); + } + .elementor-grid-tablet-11 .elementor-grid { + grid-template-columns: repeat(11, 1fr); + } + .elementor-grid-tablet-12 .elementor-grid { + grid-template-columns: repeat(12, 1fr); + } +} +@media (max-width: -1) { + .elementor-grid-mobile_extra-0 .elementor-grid { + display: inline-block; + width: 100%; + word-spacing: var(--grid-column-gap); + margin-bottom: calc(-1 * var(--grid-row-gap)); + } + .elementor-grid-mobile_extra-0 .elementor-grid .elementor-grid-item { + display: inline-block; + margin-bottom: var(--grid-row-gap); + word-break: break-word; + } + .elementor-grid-mobile_extra-1 .elementor-grid { + grid-template-columns: repeat(1, 1fr); + } + .elementor-grid-mobile_extra-2 .elementor-grid { + grid-template-columns: repeat(2, 1fr); + } + .elementor-grid-mobile_extra-3 .elementor-grid { + grid-template-columns: repeat(3, 1fr); + } + .elementor-grid-mobile_extra-4 .elementor-grid { + grid-template-columns: repeat(4, 1fr); + } + .elementor-grid-mobile_extra-5 .elementor-grid { + grid-template-columns: repeat(5, 1fr); + } + .elementor-grid-mobile_extra-6 .elementor-grid { + grid-template-columns: repeat(6, 1fr); + } + .elementor-grid-mobile_extra-7 .elementor-grid { + grid-template-columns: repeat(7, 1fr); + } + .elementor-grid-mobile_extra-8 .elementor-grid { + grid-template-columns: repeat(8, 1fr); + } + .elementor-grid-mobile_extra-9 .elementor-grid { + grid-template-columns: repeat(9, 1fr); + } + .elementor-grid-mobile_extra-10 .elementor-grid { + grid-template-columns: repeat(10, 1fr); + } + .elementor-grid-mobile_extra-11 .elementor-grid { + grid-template-columns: repeat(11, 1fr); + } + .elementor-grid-mobile_extra-12 .elementor-grid { + grid-template-columns: repeat(12, 1fr); + } +} +@media (max-width: 767px) { + .elementor-grid-mobile-0 .elementor-grid { + display: inline-block; + width: 100%; + word-spacing: var(--grid-column-gap); + margin-bottom: calc(-1 * var(--grid-row-gap)); + } + .elementor-grid-mobile-0 .elementor-grid .elementor-grid-item { + display: inline-block; + margin-bottom: var(--grid-row-gap); + word-break: break-word; + } + .elementor-grid-mobile-1 .elementor-grid { + grid-template-columns: repeat(1, 1fr); + } + .elementor-grid-mobile-2 .elementor-grid { + grid-template-columns: repeat(2, 1fr); + } + .elementor-grid-mobile-3 .elementor-grid { + grid-template-columns: repeat(3, 1fr); + } + .elementor-grid-mobile-4 .elementor-grid { + grid-template-columns: repeat(4, 1fr); + } + .elementor-grid-mobile-5 .elementor-grid { + grid-template-columns: repeat(5, 1fr); + } + .elementor-grid-mobile-6 .elementor-grid { + grid-template-columns: repeat(6, 1fr); + } + .elementor-grid-mobile-7 .elementor-grid { + grid-template-columns: repeat(7, 1fr); + } + .elementor-grid-mobile-8 .elementor-grid { + grid-template-columns: repeat(8, 1fr); + } + .elementor-grid-mobile-9 .elementor-grid { + grid-template-columns: repeat(9, 1fr); + } + .elementor-grid-mobile-10 .elementor-grid { + grid-template-columns: repeat(10, 1fr); + } + .elementor-grid-mobile-11 .elementor-grid { + grid-template-columns: repeat(11, 1fr); + } + .elementor-grid-mobile-12 .elementor-grid { + grid-template-columns: repeat(12, 1fr); + } +} + +@media (min-width: 1025px) { + #elementor-device-mode:after { + content: "desktop"; + } +} +@media (min-width: -1) { + #elementor-device-mode:after { + content: "widescreen"; + } +} +@media (max-width: -1) { + #elementor-device-mode:after { + content: "laptop"; + } +} +@media (max-width: -1) { + #elementor-device-mode:after { + content: "tablet_extra"; + } +} +@media (max-width: 1024px) { + #elementor-device-mode:after { + content: "tablet"; + } +} +@media (max-width: -1) { + #elementor-device-mode:after { + content: "mobile_extra"; + } +} +@media (max-width: 767px) { + #elementor-device-mode:after { + content: "mobile"; + } +} + +.e-con { + --border-radius: 0; + --border-block-start-width: 0px; + --border-inline-end-width: 0px; + --border-block-end-width: 0px; + --border-inline-start-width: 0px; + --border-style: initial; + --border-color: initial; + --container-widget-width: 100%; + --container-widget-height: initial; + --container-widget-flex-grow: 0; + --container-widget-align-self: initial; + --content-width: min(100%, var(--container-max-width, 1140px)); + --width: 100%; + --min-height: initial; + --height: auto; + --text-align: initial; + --margin-block-start: 0px; + --margin-inline-end: 0px; + --margin-block-end: 0px; + --margin-inline-start: 0px; + --padding-block-start: var(--container-default-padding-block-start, 10px); + --padding-inline-end: var(--container-default-padding-inline-end, 10px); + --padding-block-end: var(--container-default-padding-block-end, 10px); + --padding-inline-start: var(--container-default-padding-inline-start, 10px); + --position: relative; + --z-index: revert; + --overflow: visible; + --gap: var(--widgets-spacing, 20px); + --overlay-mix-blend-mode: initial; + --overlay-opacity: 1; + --overlay-transition: 0.3s; + --e-con-grid-template-columns: repeat(3, 1fr); + --e-con-grid-template-rows: repeat(2, 1fr); + position: var(--position); + width: var(--width); + min-width: 0; + min-height: var(--min-height); + height: var(--height); + border-radius: var(--border-radius); + margin-block-start: var(--bc-margin-block-start, var(--margin-block-start)); + margin-inline-end: var(--bc-margin-inline-end, var(--margin-inline-end)); + margin-block-end: var(--bc-margin-block-end, var(--margin-block-end)); + margin-inline-start: var(--bc-margin-inline-start, var(--margin-inline-start)); + padding-inline-start: var(--bc-padding-inline-start, var(--padding-inline-start)); + padding-inline-end: var(--bc-padding-inline-end, var(--padding-inline-end)); + z-index: var(--z-index); + overflow: var(--overflow); + transition: background var(--background-transition, 0.3s), border var(--border-transition, 0.3s), box-shadow var(--border-transition, 0.3s), transform var(--e-con-transform-transition-duration, 0.4s); +} +.e-con.e-flex { + --flex-direction: column; + --flex-basis: auto; + --flex-grow: 0; + --flex-shrink: 1; + flex: var(--flex-grow) var(--flex-shrink) var(--flex-basis); +} +.e-con-full, .e-con > .e-con-inner { + text-align: var(--text-align); + padding-block-start: var(--bc-padding-block-start, var(--padding-block-start)); + padding-block-end: var(--bc-padding-block-end, var(--padding-block-end)); +} +.e-con-full.e-flex, .e-con.e-flex > .e-con-inner { + flex-direction: var(--flex-direction); +} +.e-con, .e-con > .e-con-inner { + display: var(--display); +} +.e-con.e-grid { + --grid-justify-content: start; + --grid-align-content: start; + --grid-auto-flow: row; +} +.e-con.e-grid, .e-con.e-grid > .e-con-inner { + grid-template-columns: var(--e-con-grid-template-columns); + grid-template-rows: var(--e-con-grid-template-rows); + justify-content: var(--grid-justify-content); + align-content: var(--grid-align-content); + grid-auto-flow: var(--grid-auto-flow); + justify-items: var(--justify-items); + align-items: var(--align-items); +} +.e-con-boxed.e-flex { + flex-direction: column; + flex-wrap: initial; + justify-content: initial; + align-items: initial; + align-content: initial; +} +.e-con-boxed.e-grid { + justify-items: initial; + grid-template-columns: 1fr; + grid-template-rows: 1fr; +} +.e-con-boxed { + text-align: initial; + gap: initial; +} +.e-con.e-flex > .e-con-inner { + flex-wrap: var(--flex-wrap); + justify-content: var(--justify-content); + align-items: var(--align-items); + align-content: var(--align-content); + flex-basis: initial; + flex-grow: 1; + flex-shrink: initial; + align-self: initial; +} +.e-con.e-grid > .e-con-inner { + justify-items: var(--justify-items); + align-items: var(--align-items); +} +.e-con > .e-con-inner { + gap: var(--gap); + width: 100%; + max-width: var(--content-width); + margin: 0 auto; + padding-inline-start: 0; + padding-inline-end: 0; + height: 100%; +} +:is(.elementor-section-wrap, [data-elementor-id]) > .e-con { + --margin-inline-end: auto; + --margin-inline-start: auto; + max-width: min(100%, var(--width)); +} +.e-con .elementor-widget.elementor-widget { + margin-block-end: 0; +} +.e-con::before, :is(.e-con, .e-con > .e-con-inner) > .elementor-background-video-container::before, +.e-con > .elementor-motion-effects-container > .elementor-motion-effects-layer::before, +.e-con > .elementor-background-slideshow::before { + content: var(--background-overlay); + display: block; + position: absolute; + mix-blend-mode: var(--overlay-mix-blend-mode); + opacity: var(--overlay-opacity); + transition: var(--overlay-transition, 0.3s); + border-radius: var(--border-radius); + border-style: var(--border-style); + border-color: var(--border-color); + border-block-start-width: var(--border-block-start-width); + border-inline-end-width: var(--border-inline-end-width); + border-block-end-width: var(--border-block-end-width); + border-inline-start-width: var(--border-inline-start-width); + top: calc(0px - var(--border-block-start-width)); + left: calc(0px - var(--border-inline-start-width)); + width: max(100% + var(--border-inline-end-width) + var(--border-inline-start-width), 100%); + height: max(100% + var(--border-block-start-width) + var(--border-block-end-width), 100%); +} +.e-con::before { + transition: background var(--overlay-transition, 0.3s), border-radius var(--border-transition, 0.3s), opacity var(--overlay-transition, 0.3s); +} +.e-con > .elementor-background-slideshow, :is(.e-con, .e-con > .e-con-inner) > .elementor-background-video-container { + border-radius: var(--border-radius); + border-style: var(--border-style); + border-color: var(--border-color); + border-block-start-width: var(--border-block-start-width); + border-inline-end-width: var(--border-inline-end-width); + border-block-end-width: var(--border-block-end-width); + border-inline-start-width: var(--border-inline-start-width); + top: calc(0px - var(--border-block-start-width)); + left: calc(0px - var(--border-inline-start-width)); + width: max(100% + var(--border-inline-end-width) + var(--border-inline-start-width), 100%); + height: max(100% + var(--border-block-start-width) + var(--border-block-end-width), 100%); +} +@media (max-width: 767px) { + :is(.e-con, .e-con > .e-con-inner) > .elementor-background-video-container.elementor-hidden-phone { + display: none; + } +} +:is(.e-con, .e-con > .e-con-inner) > .elementor-background-video-container::before { + z-index: 1; +} +:is(.e-con, .e-con > .e-con-inner) > .elementor-background-slideshow::before { + z-index: 2; +} +.e-con .elementor-widget { + min-width: 0; +} +.e-con .elementor-widget-video, .e-con .elementor-widget-google_maps, .e-con .elementor-widget-empty { + width: 100%; +} +.e-con .elementor-widget.e-widget-swiper { + width: 100%; +} +.e-con > .elementor-widget > .elementor-widget-container, .e-con > .e-con-inner > .elementor-widget > .elementor-widget-container { + height: 100%; +} +.elementor.elementor .e-con > .elementor-widget, .e-con.e-con > .e-con-inner > .elementor-widget { + max-width: 100%; +} + +@media (max-width: 767px) { + .e-con.e-flex { + --width: 100%; + --flex-wrap: wrap; + } +} +.e-con { + --bc-margin-block-start: var(--margin-top); + --bc-margin-block-end: var(--margin-bottom); + --bc-margin-inline-start: var(--margin-left); + --bc-margin-inline-end: var(--margin-right); + --bc-padding-block-start: var(--padding-top); + --bc-padding-block-end: var(--padding-bottom); + --bc-padding-inline-start: var(--padding-left); + --bc-padding-inline-end: var(--padding-right); +} +[dir=rtl] .e-con { + --bc-margin-inline-start: var(--margin-right); + --bc-margin-inline-end: var(--margin-left); + --bc-padding-inline-start: var(--padding-right); + --bc-padding-inline-end: var(--padding-left); +} + +.elementor-form-fields-wrapper { + display: flex; + flex-wrap: wrap; +} +.elementor-form-fields-wrapper.elementor-labels-above .elementor-field-group > input, .elementor-form-fields-wrapper.elementor-labels-above .elementor-field-group > textarea, .elementor-form-fields-wrapper.elementor-labels-above .elementor-field-group > .elementor-select-wrapper, .elementor-form-fields-wrapper.elementor-labels-above .elementor-field-group .elementor-field-subgroup { + flex-basis: 100%; + max-width: 100%; +} +.elementor-form-fields-wrapper.elementor-labels-inline > .elementor-field-group > input, .elementor-form-fields-wrapper.elementor-labels-inline > .elementor-field-group .elementor-select-wrapper { + flex-grow: 1; +} + +.elementor-field-group { + flex-wrap: wrap; + align-items: center; +} +.elementor-field-group.elementor-field-type-submit { + align-items: flex-end; +} +.elementor-field-group .elementor-field-textual { + width: 100%; + max-width: 100%; + border: 1px solid #69727D; + background-color: transparent; + color: #1f2124; + vertical-align: middle; + flex-grow: 1; +} +.elementor-field-group .elementor-field-textual:focus { + box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.1) inset; + outline: 0; +} +.elementor-field-group .elementor-field-textual::-moz-placeholder { + color: inherit; + font-family: inherit; + opacity: 0.6; +} +.elementor-field-group .elementor-field-textual::placeholder { + color: inherit; + font-family: inherit; + opacity: 0.6; +} +.elementor-field-group .elementor-select-wrapper { + display: flex; + position: relative; + width: 100%; +} +.elementor-field-group .elementor-select-wrapper select { + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + color: inherit; + font-size: inherit; + font-family: inherit; + font-weight: inherit; + font-style: inherit; + text-transform: inherit; + letter-spacing: inherit; + line-height: inherit; + flex-basis: 100%; + padding-left: 20px; +} +.elementor-field-group .elementor-select-wrapper:before { + content: "\e92a"; + font-family: "eicons"; + font-size: 15px; + position: absolute; + top: 50%; + transform: translateY(-50%); + left: 10px; + pointer-events: none; + text-shadow: 0 0 3px rgba(0, 0, 0, 0.3); +} +.elementor-field-group.elementor-field-type-select-multiple .elementor-select-wrapper:before { + content: ""; +} + +.elementor-field-subgroup { + display: flex; + flex-wrap: wrap; +} +.elementor-field-subgroup .elementor-field-option label { + display: inline-block; +} +.elementor-field-subgroup.elementor-subgroup-inline .elementor-field-option { + padding-left: 10px; +} +.elementor-field-subgroup:not(.elementor-subgroup-inline) .elementor-field-option { + flex-basis: 100%; +} + +.elementor-field-type-checkbox .elementor-field-subgroup .elementor-field-option input, +.elementor-field-type-checkbox .elementor-field-subgroup .elementor-field-option label, +.elementor-field-type-radio .elementor-field-subgroup .elementor-field-option input, +.elementor-field-type-radio .elementor-field-subgroup .elementor-field-option label, +.elementor-field-type-acceptance .elementor-field-subgroup .elementor-field-option input, +.elementor-field-type-acceptance .elementor-field-subgroup .elementor-field-option label { + display: inline; +} + +.elementor-field-label { + cursor: pointer; +} +.elementor-mark-required .elementor-field-label:after { + content: "*"; + color: red; + padding-right: 0.2em; +} + +.elementor-field-textual { + line-height: 1.4; + font-size: 15px; + min-height: 40px; + padding: 5px 14px; + border-radius: 3px; +} +.elementor-field-textual.elementor-size-xs { + font-size: 13px; + min-height: 33px; + padding: 4px 12px; + border-radius: 2px; +} +.elementor-field-textual.elementor-size-md { + font-size: 16px; + min-height: 47px; + padding: 6px 16px; + border-radius: 4px; +} +.elementor-field-textual.elementor-size-lg { + font-size: 18px; + min-height: 59px; + padding: 7px 20px; + border-radius: 5px; +} +.elementor-field-textual.elementor-size-xl { + font-size: 20px; + min-height: 72px; + padding: 8px 24px; + border-radius: 6px; +} + +.elementor-button-align-stretch .elementor-field-type-submit:not(.e-form__buttons__wrapper) .elementor-button { + flex-basis: 100%; +} +.elementor-button-align-stretch .e-form__buttons__wrapper { + flex-basis: 50%; + flex-grow: 1; +} +.elementor-button-align-stretch .e-form__buttons__wrapper__button { + flex-basis: 100%; +} +.elementor-button-align-center .elementor-field-type-submit, +.elementor-button-align-center .e-form__buttons { + justify-content: center; +} +.elementor-button-align-start .elementor-field-type-submit, +.elementor-button-align-start .e-form__buttons { + justify-content: flex-end; +} +.elementor-button-align-end .elementor-field-type-submit, +.elementor-button-align-end .e-form__buttons { + justify-content: flex-start; +} +.elementor-button-align-center .elementor-field-type-submit:not(.e-form__buttons__wrapper) .elementor-button, .elementor-button-align-start .elementor-field-type-submit:not(.e-form__buttons__wrapper) .elementor-button, .elementor-button-align-end .elementor-field-type-submit:not(.e-form__buttons__wrapper) .elementor-button { + flex-basis: initial; +} +.elementor-button-align-center .e-form__buttons__wrapper, .elementor-button-align-start .e-form__buttons__wrapper, .elementor-button-align-end .e-form__buttons__wrapper { + flex-grow: initial; +} +.elementor-button-align-center .e-form__buttons__wrapper, .elementor-button-align-center .e-form__buttons__wrapper__button, .elementor-button-align-start .e-form__buttons__wrapper, .elementor-button-align-start .e-form__buttons__wrapper__button, .elementor-button-align-end .e-form__buttons__wrapper, .elementor-button-align-end .e-form__buttons__wrapper__button { + flex-basis: initial; +} + +@media screen and (max-width: 1024px) { + .elementor-tablet-button-align-stretch .elementor-field-type-submit:not(.e-form__buttons__wrapper) .elementor-button { + flex-basis: 100%; + } + .elementor-tablet-button-align-stretch .e-form__buttons__wrapper { + flex-basis: 50%; + flex-grow: 1; + } + .elementor-tablet-button-align-stretch .e-form__buttons__wrapper__button { + flex-basis: 100%; + } + .elementor-tablet-button-align-center .elementor-field-type-submit, + .elementor-tablet-button-align-center .e-form__buttons { + justify-content: center; + } + .elementor-tablet-button-align-start .elementor-field-type-submit, + .elementor-tablet-button-align-start .e-form__buttons { + justify-content: flex-end; + } + .elementor-tablet-button-align-end .elementor-field-type-submit, + .elementor-tablet-button-align-end .e-form__buttons { + justify-content: flex-start; + } + .elementor-tablet-button-align-center .elementor-field-type-submit:not(.e-form__buttons__wrapper) .elementor-button, .elementor-tablet-button-align-start .elementor-field-type-submit:not(.e-form__buttons__wrapper) .elementor-button, .elementor-tablet-button-align-end .elementor-field-type-submit:not(.e-form__buttons__wrapper) .elementor-button { + flex-basis: initial; + } + .elementor-tablet-button-align-center .e-form__buttons__wrapper, .elementor-tablet-button-align-start .e-form__buttons__wrapper, .elementor-tablet-button-align-end .e-form__buttons__wrapper { + flex-grow: initial; + } + .elementor-tablet-button-align-center .e-form__buttons__wrapper, .elementor-tablet-button-align-center .e-form__buttons__wrapper__button, .elementor-tablet-button-align-start .e-form__buttons__wrapper, .elementor-tablet-button-align-start .e-form__buttons__wrapper__button, .elementor-tablet-button-align-end .e-form__buttons__wrapper, .elementor-tablet-button-align-end .e-form__buttons__wrapper__button { + flex-basis: initial; + } +} +@media screen and (max-width: 767px) { + .elementor-mobile-button-align-stretch .elementor-field-type-submit:not(.e-form__buttons__wrapper) .elementor-button { + flex-basis: 100%; + } + .elementor-mobile-button-align-stretch .e-form__buttons__wrapper { + flex-basis: 50%; + flex-grow: 1; + } + .elementor-mobile-button-align-stretch .e-form__buttons__wrapper__button { + flex-basis: 100%; + } + .elementor-mobile-button-align-center .elementor-field-type-submit, + .elementor-mobile-button-align-center .e-form__buttons { + justify-content: center; + } + .elementor-mobile-button-align-start .elementor-field-type-submit, + .elementor-mobile-button-align-start .e-form__buttons { + justify-content: flex-end; + } + .elementor-mobile-button-align-end .elementor-field-type-submit, + .elementor-mobile-button-align-end .e-form__buttons { + justify-content: flex-start; + } + .elementor-mobile-button-align-center .elementor-field-type-submit:not(.e-form__buttons__wrapper) .elementor-button, .elementor-mobile-button-align-start .elementor-field-type-submit:not(.e-form__buttons__wrapper) .elementor-button, .elementor-mobile-button-align-end .elementor-field-type-submit:not(.e-form__buttons__wrapper) .elementor-button { + flex-basis: initial; + } + .elementor-mobile-button-align-center .e-form__buttons__wrapper, .elementor-mobile-button-align-start .e-form__buttons__wrapper, .elementor-mobile-button-align-end .e-form__buttons__wrapper { + flex-grow: initial; + } + .elementor-mobile-button-align-center .e-form__buttons__wrapper, .elementor-mobile-button-align-center .e-form__buttons__wrapper__button, .elementor-mobile-button-align-start .e-form__buttons__wrapper, .elementor-mobile-button-align-start .e-form__buttons__wrapper__button, .elementor-mobile-button-align-end .e-form__buttons__wrapper, .elementor-mobile-button-align-end .e-form__buttons__wrapper__button { + flex-basis: initial; + } +} +.elementor-error .elementor-field { + border-color: #d9534f; +} +.elementor-error .help-inline { + color: #d9534f; + font-size: 0.9em; +} + +.elementor-message { + margin: 10px 0; + font-size: 1em; + line-height: 1; +} +.elementor-message:before { + content: "\e90e"; + display: inline-block; + font-family: eicons; + font-weight: normal; + font-style: normal; + vertical-align: middle; + margin-left: 5px; +} +.elementor-message.elementor-message-danger { + color: #d9534f; +} +.elementor-message.elementor-message-danger:before { + content: "\e87f"; +} +.elementor-message.form-message-success { + color: #5cb85c; +} + +.elementor-form .elementor-button { + padding-top: 0; + padding-bottom: 0; + border: none; +} +.elementor-form .elementor-button > span { + display: flex; + justify-content: center; +} +.elementor-form .elementor-button.elementor-size-xs { + min-height: 33px; +} +.elementor-form .elementor-button.elementor-size-sm { + min-height: 40px; +} +.elementor-form .elementor-button.elementor-size-md { + min-height: 47px; +} +.elementor-form .elementor-button.elementor-size-lg { + min-height: 59px; +} +.elementor-form .elementor-button.elementor-size-xl { + min-height: 72px; +} + +.elementor-element .elementor-widget-container { + transition: background 0.3s, border 0.3s, border-radius 0.3s, box-shadow 0.3s, transform var(--e-transform-transition-duration, 400ms); +} + +.elementor-button { + display: inline-block; + line-height: 1; + background-color: #69727D; + font-size: 15px; + padding: 12px 24px; + border-radius: 3px; + color: #fff; + fill: #fff; + text-align: center; + transition: all 0.3s; +} +.elementor-button:hover, .elementor-button:focus, .elementor-button:visited { + color: #fff; +} +.elementor-button-content-wrapper { + display: flex; + justify-content: center; +} +.elementor-button-icon { + flex-grow: 0; + order: 5; +} +.elementor-button-icon svg { + width: 1em; + height: auto; +} +.elementor-button-icon .e-font-icon-svg { + height: 1em; +} +.elementor-button-text { + flex-grow: 1; + order: 10; + display: inline-block; +} +.elementor-button.elementor-size-xs { + font-size: 13px; + padding: 10px 20px; + border-radius: 2px; +} +.elementor-button.elementor-size-md { + font-size: 16px; + padding: 15px 30px; + border-radius: 4px; +} +.elementor-button.elementor-size-lg { + font-size: 18px; + padding: 20px 40px; + border-radius: 5px; +} +.elementor-button.elementor-size-xl { + font-size: 20px; + padding: 25px 50px; + border-radius: 6px; +} +.elementor-button .elementor-align-icon-right { + margin-left: 5px; + order: 5; +} +.elementor-button .elementor-align-icon-left { + margin-right: 5px; + order: 15; +} +.elementor-button span { + text-decoration: inherit; +} + +.elementor-element.elementor-button-info .elementor-button { + background-color: #5bc0de; +} +.elementor-element.elementor-button-success .elementor-button { + background-color: #5cb85c; +} +.elementor-element.elementor-button-warning .elementor-button { + background-color: #f0ad4e; +} +.elementor-element.elementor-button-danger .elementor-button { + background-color: #d9534f; +} + +.elementor-widget-button .elementor-button .elementor-button-info { + background-color: #5bc0de; +} +.elementor-widget-button .elementor-button .elementor-button-success { + background-color: #5cb85c; +} +.elementor-widget-button .elementor-button .elementor-button-warning { + background-color: #f0ad4e; +} +.elementor-widget-button .elementor-button .elementor-button-danger { + background-color: #d9534f; +} + +.elementor-tab-title a { + color: inherit; +} + +.elementor-view-stacked .elementor-icon { + padding: 0.5em; + background-color: #69727D; + color: #fff; + fill: #fff; +} + +.elementor-view-framed .elementor-icon { + padding: 0.5em; + color: #69727D; + border: 3px solid #69727D; + background-color: transparent; +} + +.elementor-icon { + display: inline-block; + line-height: 1; + transition: all 0.3s; + color: #69727D; + font-size: 50px; + text-align: center; +} +.elementor-icon:hover { + color: #69727D; +} +.elementor-icon i, .elementor-icon svg { + width: 1em; + height: 1em; + position: relative; + display: block; +} +.elementor-icon i:before, .elementor-icon svg:before { + position: absolute; + left: 50%; + transform: translateX(-50%); +} +.elementor-icon i.fad { + width: initial; +} + +.elementor-shape-circle .elementor-icon { + border-radius: 50%; +} + +.e-transform .elementor-widget-container { + transform: perspective(var(--e-transform-perspective, 0)) rotateZ(var(--e-transform-rotateZ, 0)) rotateX(var(--e-transform-rotateX, 0)) rotateY(var(--e-transform-rotateY, 0)) translate(var(--e-transform-translate, 0)) translateX(var(--e-transform-translateX, 0)) translateY(var(--e-transform-translateY, 0)) scaleX(calc(var(--e-transform-flipX, 1) * var(--e-transform-scaleX, var(--e-transform-scale, 1)))) scaleY(calc(var(--e-transform-flipY, 1) * var(--e-transform-scaleY, var(--e-transform-scale, 1)))) skewX(var(--e-transform-skewX, 0)) skewY(var(--e-transform-skewY, 0)); + transform-origin: var(--e-transform-origin-y) var(--e-transform-origin-x); +} + +.e-con.e-transform { + transform: perspective(var(--e-con-transform-perspective, 0)) rotateZ(var(--e-con-transform-rotateZ, 0)) rotateX(var(--e-con-transform-rotateX, 0)) rotateY(var(--e-con-transform-rotateY, 0)) translate(var(--e-con-transform-translate, 0)) translateX(var(--e-con-transform-translateX, 0)) translateY(var(--e-con-transform-translateY, 0)) scaleX(calc(var(--e-con-transform-flipX, 1) * var(--e-con-transform-scaleX, var(--e-con-transform-scale, 1)))) scaleY(calc(var(--e-con-transform-flipY, 1) * var(--e-con-transform-scaleY, var(--e-con-transform-scale, 1)))) skewX(var(--e-con-transform-skewX, 0)) skewY(var(--e-con-transform-skewY, 0)); + transform-origin: var(--e-con-transform-origin-y) var(--e-con-transform-origin-x); +} + +.elementor-element, .elementor-lightbox { + --swiper-theme-color: #000; + --swiper-navigation-size: 44px; + --swiper-pagination-bullet-size: 6px; + --swiper-pagination-bullet-horizontal-gap: 6px; +} +.elementor-element .swiper .swiper-slide figure, +.elementor-element .swiper-container .swiper-slide figure, .elementor-lightbox .swiper .swiper-slide figure, +.elementor-lightbox .swiper-container .swiper-slide figure { + line-height: 0; +} +.elementor-element .swiper .elementor-lightbox-content-source, +.elementor-element .swiper-container .elementor-lightbox-content-source, .elementor-lightbox .swiper .elementor-lightbox-content-source, +.elementor-lightbox .swiper-container .elementor-lightbox-content-source { + display: none; +} +.elementor-element .swiper .elementor-swiper-button, +.elementor-element .swiper ~ .elementor-swiper-button, +.elementor-element .swiper-container .elementor-swiper-button, +.elementor-element .swiper-container ~ .elementor-swiper-button, .elementor-lightbox .swiper .elementor-swiper-button, +.elementor-lightbox .swiper ~ .elementor-swiper-button, +.elementor-lightbox .swiper-container .elementor-swiper-button, +.elementor-lightbox .swiper-container ~ .elementor-swiper-button { + position: absolute; + display: inline-flex; + z-index: 1; + cursor: pointer; + font-size: 25px; + color: rgba(238, 238, 238, 0.9); + top: 50%; + transform: translateY(-50%); +} +.elementor-element .swiper .elementor-swiper-button svg, +.elementor-element .swiper ~ .elementor-swiper-button svg, +.elementor-element .swiper-container .elementor-swiper-button svg, +.elementor-element .swiper-container ~ .elementor-swiper-button svg, .elementor-lightbox .swiper .elementor-swiper-button svg, +.elementor-lightbox .swiper ~ .elementor-swiper-button svg, +.elementor-lightbox .swiper-container .elementor-swiper-button svg, +.elementor-lightbox .swiper-container ~ .elementor-swiper-button svg { + fill: rgba(238, 238, 238, 0.9); + height: 1em; + width: 1em; +} +.elementor-element .swiper .elementor-swiper-button-prev, +.elementor-element .swiper ~ .elementor-swiper-button-prev, +.elementor-element .swiper-container .elementor-swiper-button-prev, +.elementor-element .swiper-container ~ .elementor-swiper-button-prev, .elementor-lightbox .swiper .elementor-swiper-button-prev, +.elementor-lightbox .swiper ~ .elementor-swiper-button-prev, +.elementor-lightbox .swiper-container .elementor-swiper-button-prev, +.elementor-lightbox .swiper-container ~ .elementor-swiper-button-prev { + left: 10px; +} +.elementor-element .swiper .elementor-swiper-button-next, +.elementor-element .swiper ~ .elementor-swiper-button-next, +.elementor-element .swiper-container .elementor-swiper-button-next, +.elementor-element .swiper-container ~ .elementor-swiper-button-next, .elementor-lightbox .swiper .elementor-swiper-button-next, +.elementor-lightbox .swiper ~ .elementor-swiper-button-next, +.elementor-lightbox .swiper-container .elementor-swiper-button-next, +.elementor-lightbox .swiper-container ~ .elementor-swiper-button-next { + right: 10px; +} +.elementor-element .swiper .elementor-swiper-button.swiper-button-disabled, +.elementor-element .swiper ~ .elementor-swiper-button.swiper-button-disabled, +.elementor-element .swiper-container .elementor-swiper-button.swiper-button-disabled, +.elementor-element .swiper-container ~ .elementor-swiper-button.swiper-button-disabled, .elementor-lightbox .swiper .elementor-swiper-button.swiper-button-disabled, +.elementor-lightbox .swiper ~ .elementor-swiper-button.swiper-button-disabled, +.elementor-lightbox .swiper-container .elementor-swiper-button.swiper-button-disabled, +.elementor-lightbox .swiper-container ~ .elementor-swiper-button.swiper-button-disabled { + opacity: 0.3; +} +.elementor-element .swiper .swiper-image-stretch .swiper-slide .swiper-slide-image, +.elementor-element .swiper-container .swiper-image-stretch .swiper-slide .swiper-slide-image, .elementor-lightbox .swiper .swiper-image-stretch .swiper-slide .swiper-slide-image, +.elementor-lightbox .swiper-container .swiper-image-stretch .swiper-slide .swiper-slide-image { + width: 100%; +} +.elementor-element .swiper .swiper-pagination-fraction, +.elementor-element .swiper .swiper-pagination-custom, +.elementor-element .swiper .swiper-horizontal > .swiper-pagination-bullets, +.elementor-element .swiper .swiper-pagination-bullets.swiper-pagination-horizontal, +.elementor-element .swiper ~ .swiper-pagination-fraction, +.elementor-element .swiper ~ .swiper-pagination-custom, +.elementor-element .swiper ~ .swiper-pagination-bullets.swiper-pagination-horizontal, +.elementor-element .swiper-container .swiper-pagination-fraction, +.elementor-element .swiper-container .swiper-pagination-custom, +.elementor-element .swiper-container .swiper-horizontal > .swiper-pagination-bullets, +.elementor-element .swiper-container .swiper-pagination-bullets.swiper-pagination-horizontal, +.elementor-element .swiper-container ~ .swiper-pagination-fraction, +.elementor-element .swiper-container ~ .swiper-pagination-custom, +.elementor-element .swiper-container ~ .swiper-pagination-bullets.swiper-pagination-horizontal, .elementor-lightbox .swiper .swiper-pagination-fraction, +.elementor-lightbox .swiper .swiper-pagination-custom, +.elementor-lightbox .swiper .swiper-horizontal > .swiper-pagination-bullets, +.elementor-lightbox .swiper .swiper-pagination-bullets.swiper-pagination-horizontal, +.elementor-lightbox .swiper ~ .swiper-pagination-fraction, +.elementor-lightbox .swiper ~ .swiper-pagination-custom, +.elementor-lightbox .swiper ~ .swiper-pagination-bullets.swiper-pagination-horizontal, +.elementor-lightbox .swiper-container .swiper-pagination-fraction, +.elementor-lightbox .swiper-container .swiper-pagination-custom, +.elementor-lightbox .swiper-container .swiper-horizontal > .swiper-pagination-bullets, +.elementor-lightbox .swiper-container .swiper-pagination-bullets.swiper-pagination-horizontal, +.elementor-lightbox .swiper-container ~ .swiper-pagination-fraction, +.elementor-lightbox .swiper-container ~ .swiper-pagination-custom, +.elementor-lightbox .swiper-container ~ .swiper-pagination-bullets.swiper-pagination-horizontal { + bottom: 5px; +} +.elementor-element .swiper.swiper-cube .elementor-swiper-button, +.elementor-element .swiper.swiper-cube ~ .elementor-swiper-button, +.elementor-element .swiper-container.swiper-cube .elementor-swiper-button, +.elementor-element .swiper-container.swiper-cube ~ .elementor-swiper-button, .elementor-lightbox .swiper.swiper-cube .elementor-swiper-button, +.elementor-lightbox .swiper.swiper-cube ~ .elementor-swiper-button, +.elementor-lightbox .swiper-container.swiper-cube .elementor-swiper-button, +.elementor-lightbox .swiper-container.swiper-cube ~ .elementor-swiper-button { + transform: translate3d(0, -50%, 1px); +} +.elementor-element :where(.swiper-container-horizontal) ~ .swiper-pagination-bullets, .elementor-lightbox :where(.swiper-container-horizontal) ~ .swiper-pagination-bullets { + bottom: 5px; + left: 0; + width: 100%; +} +.elementor-element :where(.swiper-container-horizontal) ~ .swiper-pagination-bullets .swiper-pagination-bullet, .elementor-lightbox :where(.swiper-container-horizontal) ~ .swiper-pagination-bullets .swiper-pagination-bullet { + margin: 0 var(--swiper-pagination-bullet-horizontal-gap, 4px); +} +.elementor-element :where(.swiper-container-horizontal) ~ .swiper-pagination-progressbar, .elementor-lightbox :where(.swiper-container-horizontal) ~ .swiper-pagination-progressbar { + width: 100%; + height: 4px; + left: 0; + top: 0; +} +.elementor-element.elementor-pagination-position-outside .swiper, +.elementor-element.elementor-pagination-position-outside .swiper-container, .elementor-lightbox.elementor-pagination-position-outside .swiper, +.elementor-lightbox.elementor-pagination-position-outside .swiper-container { + padding-bottom: 30px; +} +.elementor-element.elementor-pagination-position-outside .swiper .elementor-swiper-button, +.elementor-element.elementor-pagination-position-outside .swiper ~ .elementor-swiper-button, +.elementor-element.elementor-pagination-position-outside .swiper-container .elementor-swiper-button, +.elementor-element.elementor-pagination-position-outside .swiper-container ~ .elementor-swiper-button, .elementor-lightbox.elementor-pagination-position-outside .swiper .elementor-swiper-button, +.elementor-lightbox.elementor-pagination-position-outside .swiper ~ .elementor-swiper-button, +.elementor-lightbox.elementor-pagination-position-outside .swiper-container .elementor-swiper-button, +.elementor-lightbox.elementor-pagination-position-outside .swiper-container ~ .elementor-swiper-button { + top: calc(50% - 30px / 2); +} +.elementor-element .elementor-swiper, .elementor-lightbox .elementor-swiper { + position: relative; +} +.elementor-element .elementor-main-swiper, .elementor-lightbox .elementor-main-swiper { + position: static; +} +.elementor-element.elementor-arrows-position-outside .swiper, +.elementor-element.elementor-arrows-position-outside .swiper-container, .elementor-lightbox.elementor-arrows-position-outside .swiper, +.elementor-lightbox.elementor-arrows-position-outside .swiper-container { + width: calc(100% - 60px); +} +.elementor-element.elementor-arrows-position-outside .swiper .elementor-swiper-button-prev, +.elementor-element.elementor-arrows-position-outside .swiper ~ .elementor-swiper-button-prev, +.elementor-element.elementor-arrows-position-outside .swiper-container .elementor-swiper-button-prev, +.elementor-element.elementor-arrows-position-outside .swiper-container ~ .elementor-swiper-button-prev, .elementor-lightbox.elementor-arrows-position-outside .swiper .elementor-swiper-button-prev, +.elementor-lightbox.elementor-arrows-position-outside .swiper ~ .elementor-swiper-button-prev, +.elementor-lightbox.elementor-arrows-position-outside .swiper-container .elementor-swiper-button-prev, +.elementor-lightbox.elementor-arrows-position-outside .swiper-container ~ .elementor-swiper-button-prev { + left: 0; +} +.elementor-element.elementor-arrows-position-outside .swiper .elementor-swiper-button-next, +.elementor-element.elementor-arrows-position-outside .swiper ~ .elementor-swiper-button-next, +.elementor-element.elementor-arrows-position-outside .swiper-container .elementor-swiper-button-next, +.elementor-element.elementor-arrows-position-outside .swiper-container ~ .elementor-swiper-button-next, .elementor-lightbox.elementor-arrows-position-outside .swiper .elementor-swiper-button-next, +.elementor-lightbox.elementor-arrows-position-outside .swiper ~ .elementor-swiper-button-next, +.elementor-lightbox.elementor-arrows-position-outside .swiper-container .elementor-swiper-button-next, +.elementor-lightbox.elementor-arrows-position-outside .swiper-container ~ .elementor-swiper-button-next { + right: 0; +} + +.elementor-lightbox { + --lightbox-ui-color: rgba(238, 238, 238, 0.9); + --lightbox-ui-color-hover: #fff; + --lightbox-text-color: var(--lightbox-ui-color); + --lightbox-header-icons-size: 20px; + --lightbox-navigation-icons-size: 25px; +} +.elementor-lightbox:not(.elementor-popup-modal) .dialog-header, +.elementor-lightbox:not(.elementor-popup-modal) .dialog-message { + text-align: center; +} +.elementor-lightbox .dialog-header { + display: none; +} +.elementor-lightbox .dialog-widget-content { + background: none; + box-shadow: none; + width: 100%; + height: 100%; +} +.elementor-lightbox .dialog-message { + animation-duration: 0.3s; + height: 100%; +} +.elementor-lightbox .dialog-message.dialog-lightbox-message { + padding: 0; +} +.elementor-lightbox .dialog-lightbox-close-button { + cursor: pointer; + position: absolute; + font-size: var(--lightbox-header-icons-size); + left: 0.75em; + margin-top: 13px; + padding: 0.25em; + z-index: 2; + line-height: 1; + display: flex; +} +.elementor-lightbox .dialog-lightbox-close-button svg { + height: 1em; + width: 1em; +} +.elementor-lightbox .dialog-lightbox-close-button, +.elementor-lightbox .elementor-swiper-button { + color: var(--lightbox-ui-color); + transition: all 0.3s; + opacity: 1; +} +.elementor-lightbox .dialog-lightbox-close-button svg, +.elementor-lightbox .elementor-swiper-button svg { + fill: var(--lightbox-ui-color); +} +.elementor-lightbox .dialog-lightbox-close-button:hover, +.elementor-lightbox .elementor-swiper-button:hover { + color: var(--lightbox-ui-color-hover); +} +.elementor-lightbox .dialog-lightbox-close-button:hover svg, +.elementor-lightbox .elementor-swiper-button:hover svg { + fill: var(--lightbox-ui-color-hover); +} +.elementor-lightbox .swiper, +.elementor-lightbox .swiper-container { + height: 100%; +} +.elementor-lightbox .elementor-lightbox-item { + display: flex; + align-items: center; + justify-content: center; + position: relative; + padding: 70px; + box-sizing: border-box; + height: 100%; + margin: auto; +} +@media (max-width: 767px) { + .elementor-lightbox .elementor-lightbox-item { + padding: 70px 0; + } +} +.elementor-lightbox .elementor-lightbox-image { + max-height: 100%; + -webkit-user-select: none; + -moz-user-select: none; + user-select: none; +} +.elementor-lightbox .elementor-lightbox-image, .elementor-lightbox .elementor-lightbox-image:hover { + opacity: 1; + filter: none; + border: none; +} +.elementor-lightbox .elementor-lightbox-image { + box-shadow: 0 0 30px rgba(0, 0, 0, 0.3), 0 0 8px -5px rgba(0, 0, 0, 0.3); + border-radius: 2px; +} +.elementor-lightbox .elementor-video-container { + width: 100%; + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); +} +.elementor-lightbox .elementor-video-container .elementor-video-square, +.elementor-lightbox .elementor-video-container .elementor-video-landscape, +.elementor-lightbox .elementor-video-container .elementor-video-portrait { + width: 100%; + height: 100%; + margin: auto; +} +.elementor-lightbox .elementor-video-container .elementor-video-square iframe, +.elementor-lightbox .elementor-video-container .elementor-video-landscape iframe, +.elementor-lightbox .elementor-video-container .elementor-video-portrait iframe { + border: 0; + background-color: #000; +} +.elementor-lightbox .elementor-video-container .elementor-video-square iframe, +.elementor-lightbox .elementor-video-container .elementor-video-square video, +.elementor-lightbox .elementor-video-container .elementor-video-landscape iframe, +.elementor-lightbox .elementor-video-container .elementor-video-landscape video, +.elementor-lightbox .elementor-video-container .elementor-video-portrait iframe, +.elementor-lightbox .elementor-video-container .elementor-video-portrait video { + aspect-ratio: var(--video-aspect-ratio, 1.77777); +} +@supports not (aspect-ratio: 1/1) { + .elementor-lightbox .elementor-video-container .elementor-video-square, + .elementor-lightbox .elementor-video-container .elementor-video-landscape, + .elementor-lightbox .elementor-video-container .elementor-video-portrait { + position: relative; + overflow: hidden; + height: 0; + padding-bottom: calc(100% / var(--video-aspect-ratio, 1.77777)); + } + .elementor-lightbox .elementor-video-container .elementor-video-square iframe, + .elementor-lightbox .elementor-video-container .elementor-video-square video, + .elementor-lightbox .elementor-video-container .elementor-video-landscape iframe, + .elementor-lightbox .elementor-video-container .elementor-video-landscape video, + .elementor-lightbox .elementor-video-container .elementor-video-portrait iframe, + .elementor-lightbox .elementor-video-container .elementor-video-portrait video { + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + } +} +.elementor-lightbox .elementor-video-container .elementor-video-square iframe, +.elementor-lightbox .elementor-video-container .elementor-video-square video { + width: min(90vh, 90vw); + height: min(90vh, 90vw); +} +.elementor-lightbox .elementor-video-container .elementor-video-landscape iframe, +.elementor-lightbox .elementor-video-container .elementor-video-landscape video { + width: 100%; + max-height: 90vh; +} +.elementor-lightbox .elementor-video-container .elementor-video-portrait iframe, +.elementor-lightbox .elementor-video-container .elementor-video-portrait video { + height: 100%; + max-width: 90vw; +} +@media (min-width: 1025px) { + .elementor-lightbox .elementor-video-container .elementor-video-landscape { + width: 85vw; + max-height: 85vh; + } + .elementor-lightbox .elementor-video-container .elementor-video-portrait { + height: 85vh; + max-width: 85vw; + } +} +@media (max-width: 1024px) { + .elementor-lightbox .elementor-video-container .elementor-video-landscape { + width: 95vw; + max-height: 95vh; + } + .elementor-lightbox .elementor-video-container .elementor-video-portrait { + height: 95vh; + max-width: 95vw; + } +} +.elementor-lightbox .swiper .elementor-swiper-button-prev, +.elementor-lightbox .swiper-container .elementor-swiper-button-prev { + left: 0; +} +.elementor-lightbox .swiper .elementor-swiper-button-next, +.elementor-lightbox .swiper-container .elementor-swiper-button-next { + right: 0; +} +.elementor-lightbox .swiper .swiper-pagination-fraction, +.elementor-lightbox .swiper-container .swiper-pagination-fraction { + width: -moz-max-content; + width: max-content; + color: #ffffff; +} +.elementor-lightbox .elementor-swiper-button:focus { + outline-width: 1px; +} +.elementor-lightbox .elementor-swiper-button-prev, .elementor-lightbox .elementor-swiper-button-next { + height: 100%; + display: flex; + align-items: center; + width: 15%; + justify-content: center; + font-size: var(--lightbox-navigation-icons-size); +} +@media (max-width: 767px) { + .elementor-lightbox .elementor-swiper-button:focus { + outline: none; + } + .elementor-lightbox .elementor-swiper-button-prev, .elementor-lightbox .elementor-swiper-button-next { + width: 20%; + } + .elementor-lightbox .elementor-swiper-button-prev i, .elementor-lightbox .elementor-swiper-button-next i { + padding: 10px; + background-color: rgba(0, 0, 0, 0.5); + } + .elementor-lightbox .elementor-swiper-button-prev { + left: 0; + justify-content: flex-start; + } + .elementor-lightbox .elementor-swiper-button-next { + right: 0; + justify-content: flex-end; + } +} + +.elementor-slideshow__counter { + color: currentColor; + font-size: 0.75em; + width: -moz-max-content; + width: max-content; +} +.elementor-slideshow__header, .elementor-slideshow__footer { + position: absolute; + left: 0; + width: 100%; + padding: 15px 20px; + transition: 0.3s; +} +.elementor-slideshow__footer { + color: var(--lightbox-text-color); +} +.elementor-slideshow__header { + color: var(--lightbox-ui-color); + display: flex; + flex-direction: row-reverse; + font-size: var(--lightbox-header-icons-size); + padding-right: 1em; + padding-left: 2.6em; + top: 0; + align-items: center; + z-index: 10; +} +.elementor-slideshow__header > i, +.elementor-slideshow__header > svg { + cursor: pointer; + padding: 0.25em; + margin: 0 0.35em; +} +.elementor-slideshow__header > i { + font-size: inherit; +} +.elementor-slideshow__header > i:hover { + color: var(--lightbox-ui-color-hover); +} +.elementor-slideshow__header > svg { + box-sizing: content-box; + fill: var(--lightbox-ui-color); + height: 1em; + width: 1em; +} +.elementor-slideshow__header > svg:hover { + fill: var(--lightbox-ui-color-hover); +} +.elementor-slideshow__header .elementor-slideshow__counter { + margin-left: auto; +} +.elementor-slideshow__header .elementor-icon-share { + z-index: 5; +} +.elementor-slideshow__share-menu { + background-color: rgba(0, 0, 0, 0); + width: 0; + height: 0; + position: absolute; + overflow: hidden; + transition: background-color 400ms; +} +.elementor-slideshow__share-menu .elementor-slideshow__share-links a { + color: #0C0D0E; +} +.elementor-slideshow__share-links { + display: block; + position: absolute; + min-width: 200px; + left: 2.8em; + top: 3em; + background-color: #fff; + border-radius: 3px; + padding: 14px 20px; + transform: scale(0); + opacity: 0; + transform-origin: 90% 10%; + transition: all 250ms 100ms; + box-shadow: 0 4px 15px rgba(0, 0, 0, 0.3); +} +.elementor-slideshow__share-links a { + text-align: right; + color: #3f444b; + font-size: 12px; + line-height: 2.5; + display: block; + opacity: 0; + transition: opacity 500ms 100ms; +} +.elementor-slideshow__share-links a:hover { + color: #000; +} +.elementor-slideshow__share-links a i, +.elementor-slideshow__share-links a svg { + margin-left: 0.75em; +} +.elementor-slideshow__share-links a i { + font-size: 1.25em; +} +.elementor-slideshow__share-links a svg { + height: 1.25em; + width: 1.25em; +} +.elementor-slideshow__share-links:before { + content: ""; + display: block; + position: absolute; + top: 1px; + left: 0.5em; + border: 0.45em solid; + border-color: transparent transparent #fff transparent; + transform: translateY(-100%) scaleX(0.7); +} +.elementor-slideshow__footer { + bottom: 0; + z-index: 5; + position: fixed; +} +.elementor-slideshow__title, .elementor-slideshow__description { + margin: 0; +} +.elementor-slideshow__title { + font-size: 16px; + font-weight: bold; +} +.elementor-slideshow__description { + font-size: 14px; +} +.elementor-slideshow--ui-hidden .elementor-slideshow__header, .elementor-slideshow--ui-hidden .elementor-slideshow__footer { + opacity: 0; + pointer-events: none; +} +.elementor-slideshow--ui-hidden .elementor-swiper-button-prev, .elementor-slideshow--ui-hidden .elementor-swiper-button-next { + opacity: 0; +} +.elementor-slideshow--fullscreen-mode .elementor-video-container { + width: 100%; +} +.elementor-slideshow--zoom-mode .elementor-slideshow__header, .elementor-slideshow--zoom-mode .elementor-slideshow__footer { + background-color: rgba(0, 0, 0, 0.5); +} +.elementor-slideshow--zoom-mode .elementor-swiper-button-prev, .elementor-slideshow--zoom-mode .elementor-swiper-button-next { + opacity: 0; + pointer-events: none; +} +.elementor-slideshow--share-mode .elementor-slideshow__share-menu { + top: 0; + left: 0; + width: 100vw; + height: 100vh; + opacity: 1; + cursor: default; + background-color: rgba(0, 0, 0, 0.5); +} +.elementor-slideshow--share-mode .elementor-slideshow__share-links { + transform: scale(1); +} +.elementor-slideshow--share-mode .elementor-slideshow__share-links, .elementor-slideshow--share-mode .elementor-slideshow__share-links a { + opacity: 1; +} +.elementor-slideshow--share-mode .elementor-slideshow__share-links .eicon-twitter { + color: #1DA1F2; +} +.elementor-slideshow--share-mode .elementor-slideshow__share-links .eicon-facebook { + color: #3b5998; +} +.elementor-slideshow--share-mode .elementor-slideshow__share-links .eicon-pinterest { + color: #bd081c; +} +.elementor-slideshow--share-mode .elementor-slideshow__share-links .eicon-download-bold { + color: #9DA5AE; +} +.elementor-slideshow--share-mode .elementor-slideshow__share-links .e-eicon-twitter { + fill: #1DA1F2; +} +.elementor-slideshow--share-mode .elementor-slideshow__share-links .e-eicon-facebook { + fill: #3b5998; +} +.elementor-slideshow--share-mode .elementor-slideshow__share-links .e-eicon-pinterest { + fill: #bd081c; +} +.elementor-slideshow--share-mode .elementor-slideshow__share-links .e-eicon-download-bold { + fill: #9DA5AE; +} +.elementor-slideshow--share-mode .eicon-share-arrow { + z-index: 2; +} + +.animated { + animation-duration: 1.25s; +} +.animated.animated-slow { + animation-duration: 2s; +} +.animated.animated-fast { + animation-duration: 0.75s; +} +.animated.infinite { + animation-iteration-count: infinite; +} +.animated.reverse { + animation-direction: reverse; + animation-fill-mode: forwards; +} + +@media (prefers-reduced-motion: reduce) { + .animated { + animation: none; + } +} +.elementor-shape { + overflow: hidden; + position: absolute; + left: 0; + width: 100%; + line-height: 0; + direction: ltr; + /* + * @TODO: The `z-index: -1` rules below are temporary fixes for Chrome 85 issue. + * It will be removed in a future version of Chrome. + */ +} +.elementor-shape-top { + top: -1px; +} +.elementor-shape-top:not([data-negative=false]) svg { + z-index: -1; +} +.elementor-shape-bottom { + bottom: -1px; +} +.elementor-shape-bottom:not([data-negative=true]) svg { + z-index: -1; +} +.elementor-shape[data-negative=false].elementor-shape-bottom { + transform: rotate(180deg); +} +.elementor-shape[data-negative=true].elementor-shape-top { + transform: rotate(180deg); +} +.elementor-shape svg { + display: block; + width: calc(100% + 1.3px); + position: relative; + left: 50%; + transform: translateX(-50%); +} +.elementor-shape .elementor-shape-fill { + fill: #fff; + transform-origin: center; + transform: rotateY(0deg); +} + +#wp-admin-bar-elementor_edit_page > .ab-item::before { + content: "\e813"; + font-family: eicons; + top: 3px; + font-size: 18px; +} +#wp-admin-bar-elementor_edit_page .ab-submenu .ab-item { + display: flex; + width: 200px; +} +#wp-admin-bar-elementor_edit_page .elementor-edit-link-title { + white-space: nowrap; + text-overflow: ellipsis; + overflow: hidden; + width: 100%; +} +#wp-admin-bar-elementor_edit_page .elementor-edit-link-type { + background: #3f444b; + font-size: 11px; + line-height: 9px; + margin-top: 6px; + padding: 4px 8px; + border-radius: 3px; +} + +#wp-admin-bar-elementor_inspector > .ab-item::before { + content: "\f348"; + top: 2px; +} + +#wpadminbar * { + font-style: normal; +} + +.page-template-elementor_canvas.elementor-page:before { + display: none; +} + +.elementor-post__thumbnail__link { + transition: none; +} + +#left-area ul.elementor-icon-list-items, +.elementor .elementor-element ul.elementor-icon-list-items, +.elementor-edit-area .elementor-element ul.elementor-icon-list-items { + padding: 0; +} + +.e--ua-appleWebkit.rtl { + --flex-right: flex-start; +} +.e--ua-appleWebkit .elementor-widget-social-icons.e-grid-align-right, +.e--ua-appleWebkit .elementor-share-buttons--align-right { + --justify-content: var(--flex-right, flex-end); +} +.e--ua-appleWebkit .elementor-widget-social-icons.e-grid-align-center, +.e--ua-appleWebkit .elementor-share-buttons--align-center { + --justify-content: center; +} +.e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-right .elementor-grid, .e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-center .elementor-grid, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-right .elementor-grid, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-center .elementor-grid, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-justify .elementor-grid { + width: auto; + display: flex; + flex-wrap: wrap; + justify-content: var(--justify-content, space-between); + margin-left: calc(-0.5 * var(--grid-column-gap)); + margin-right: calc(-0.5 * var(--grid-column-gap)); +} +.e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-right .elementor-grid-item, .e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-center .elementor-grid-item, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-right .elementor-grid-item, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-center .elementor-grid-item, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-justify .elementor-grid-item { + margin-left: calc(0.5 * var(--grid-column-gap)); + margin-right: calc(0.5 * var(--grid-column-gap)); +} +.e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-left .elementor-grid, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-left .elementor-grid { + display: inline-block; +} +.e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-left .elementor-grid, .e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-left .elementor-grid-item, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-left .elementor-grid, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-left .elementor-grid-item { + margin-left: 0; + margin-right: 0; +} +@media (max-width: 1024px) { + .e--ua-appleWebkit .elementor-widget-social-icons.e-grid-align-tablet-right, + .e--ua-appleWebkit .elementor-share-buttons-tablet--align-right { + --justify-content: var(--flex-right, flex-end); + } + .e--ua-appleWebkit .elementor-widget-social-icons.e-grid-align-tablet-center, + .e--ua-appleWebkit .elementor-share-buttons-tablet--align-center { + --justify-content: center; + } + .e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-tablet-right .elementor-grid, .e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-tablet-center .elementor-grid, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-tablet-right .elementor-grid, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-tablet-center .elementor-grid, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-tablet-justify .elementor-grid { + width: auto; + display: flex; + flex-wrap: wrap; + justify-content: var(--justify-content, space-between); + margin-left: calc(-0.5 * var(--grid-column-gap)); + margin-right: calc(-0.5 * var(--grid-column-gap)); + } + .e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-tablet-right .elementor-grid-item, .e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-tablet-center .elementor-grid-item, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-tablet-right .elementor-grid-item, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-tablet-center .elementor-grid-item, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-tablet-justify .elementor-grid-item { + margin-left: calc(0.5 * var(--grid-column-gap)); + margin-right: calc(0.5 * var(--grid-column-gap)); + } + .e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-tablet-left .elementor-grid, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons-tablet--align-left .elementor-grid { + display: inline-block; + } + .e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-tablet-left .elementor-grid, .e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-tablet-left .elementor-grid-item, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons-tablet--align-left .elementor-grid, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons-tablet--align-left .elementor-grid-item { + margin-left: 0; + margin-right: 0; + } +} +@media (max-width: 767px) { + .e--ua-appleWebkit .elementor-widget-social-icons.e-grid-align-mobile-right, + .e--ua-appleWebkit .elementor-share-buttons-mobile--align-right { + --justify-content: var(--flex-right, flex-end); + } + .e--ua-appleWebkit .elementor-widget-social-icons.e-grid-align-mobile-center, + .e--ua-appleWebkit .elementor-share-buttons-mobile--align-center { + --justify-content: center; + } + .e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-mobile-right .elementor-grid, .e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-mobile-center .elementor-grid, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-mobile-right .elementor-grid, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-mobile-center .elementor-grid, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-mobile-justify .elementor-grid { + width: auto; + display: flex; + flex-wrap: wrap; + justify-content: var(--justify-content, space-between); + margin-left: calc(-0.5 * var(--grid-column-gap)); + margin-right: calc(-0.5 * var(--grid-column-gap)); + } + .e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-mobile-right .elementor-grid-item, .e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-mobile-center .elementor-grid-item, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-mobile-right .elementor-grid-item, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-mobile-center .elementor-grid-item, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-mobile-justify .elementor-grid-item { + margin-left: calc(0.5 * var(--grid-column-gap)); + margin-right: calc(0.5 * var(--grid-column-gap)); + } + .e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-mobile-left .elementor-grid, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons-mobile--align-left .elementor-grid { + display: inline-block; + } + .e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-mobile-left .elementor-grid, .e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-mobile-left .elementor-grid-item, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons-mobile--align-left .elementor-grid, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons-mobile--align-left .elementor-grid-item { + margin-left: 0; + margin-right: 0; + } +} + +@media (max-width: 767px) { + .elementor .elementor-hidden-mobile { + display: none; + } + .elementor .elementor-hidden-phone { + display: none; + } +} +@media (min-width: -1) and (max-width: -1) { + .elementor .elementor-hidden-mobile_extra { + display: none; + } +} +@media (min-width: 768px) and (max-width: 1024px) { + .elementor .elementor-hidden-tablet { + display: none; + } +} +@media (min-width: -1) and (max-width: -1) { + .elementor .elementor-hidden-tablet_extra { + display: none; + } +} +@media (min-width: -1) and (max-width: -1) { + .elementor .elementor-hidden-laptop { + display: none; + } +} +@media (min-width: 1025px) and (max-width: 99999px) { + .elementor .elementor-hidden-desktop { + display: none; + } +} +@media (min-width: -1) { + .elementor .elementor-hidden-widescreen { + display: none; + } +} + +.elementor-widget-text-path { + font-size: 20px; + text-align: var(--alignment, right); +} +.elementor-widget-text-path svg { + width: var(--width); + max-width: 100%; + height: auto; + overflow: visible; + word-spacing: var(--word-spacing); + transform: rotate(var(--rotate, 0)) scaleX(var(--scale-x, 1)) scaleY(var(--scale-y, 1)); +} +.elementor-widget-text-path svg path { + vector-effect: non-scaling-stroke; /* Prevent stroke size scaling when resizing the SVG. */ + fill: var(--path-fill, transparent); + stroke: var(--stroke-color, transparent); + stroke-width: var(--stroke-width, 1px); + transition: var(--stroke-transition) stroke, var(--stroke-transition) fill; +} +.elementor-widget-text-path svg:hover path { + --path-fill: var( --path-fill-hover ); + --stroke-color: var( --stroke-color-hover ); + --stroke-width: var( --stroke-width-hover ); +} +.elementor-widget-text-path svg text { + --fill: var( --text-color ); + fill: var(--fill); + direction: var(--direction, rtl); + transition: var(--transition) stroke, var(--transition) stroke-width, var(--transition) fill; +} +.elementor-widget-text-path svg text:hover { + --color: var( --text-color-hover, var( --text-color ) ); + --fill: var( --color ); + color: var(--color); +} + +.elementor-widget-n-tabs { + --n-tabs-color-accent-fallback: #61CE70; + --n-tabs-color-secondary-fallback: #54595F; + --n-tabs-default-padding-block: 15px; + --n-tabs-default-padding-inline: 35px; + --n-tabs-background-color: transparent; + --n-tabs-display: flex; + --n-tabs-direction: column; + --n-tabs-gap: 10px; + --n-tabs-heading-display: flex; + --n-tabs-heading-direction: row; + --n-tabs-heading-grow: initial; + --n-tabs-heading-justify-content: center; + --n-tabs-heading-width: initial; + --n-tabs-heading-overflow-x: initial; + --n-tabs-heading-wrap: nowrap; + --n-tabs-border-width: 1px; + --n-tabs-border-color: #D5D8DC; + --n-tabs-content-display: flex; + --n-tabs-title-color: var(--e-global-color-secondary, var(--n-tabs-color-secondary-fallback)); + --n-tabs-title-color-hover: #ffffff; + --n-tabs-title-color-active: #ffffff; + --n-tabs-title-background-color: #F1F2F3; + --n-tabs-title-background-color-hover: var(--e-global-color-accent, var(--n-tabs-color-accent-fallback)); + --n-tabs-title-background-color-active: var(--e-global-color-accent, var(--n-tabs-color-accent-fallback)); + --n-tabs-title-width: initial; + --n-tabs-title-height: initial; + --n-tabs-title-font-size: 1rem; + --n-tabs-title-white-space: initial; + --n-tabs-title-justify-content-toggle: initial; + --n-tabs-title-align-items-toggle: center; + --n-tabs-title-justify-content: center; + --n-tabs-title-align-items: center; + --n-tabs-title-text-align: center; + --n-tabs-title-direction: row; + --n-tabs-title-gap: 10px; + --n-tabs-title-flex-grow: 0; + --n-tabs-title-flex-basis: content; + --n-tabs-title-flex-shrink: initial; + --n-tabs-title-order: initial; + --n-tabs-title-padding-block-start: var(--n-tabs-default-padding-block); + --n-tabs-title-padding-inline-end: var(--n-tabs-default-padding-inline); + --n-tabs-title-padding-block-end: var(--n-tabs-default-padding-block); + --n-tabs-title-padding-inline-start: var(--n-tabs-default-padding-inline); + --n-tabs-title-border-radius: initial; + --n-tabs-title-transition: 0.3s; + --n-tabs-icon-color: var(--e-global-color-secondary, var(--n-tabs-color-secondary-fallback)); + --n-tabs-icon-color-hover: var(--n-tabs-title-color-hover); + --n-tabs-icon-color-active: #ffffff; + --n-tabs-icon-gap: 5px; + width: 100%; + max-width: 100%; /* Fix issue with new created n-tabs inside n-tabs with overflow */ +} +.elementor-widget-n-tabs .e-n-tabs { + display: var(--n-tabs-display); + flex-direction: var(--n-tabs-direction); + gap: var(--n-tabs-gap); + text-align: start; + min-width: 0; +} +.elementor-widget-n-tabs .e-n-tabs-heading { + display: var(--n-tabs-heading-display); + flex-basis: var(--n-tabs-heading-width); + flex-direction: var(--n-tabs-heading-direction); + flex-shrink: 0; + justify-content: var(--n-tabs-heading-justify-content); + gap: var(--n-tabs-title-gap); + overflow-x: var(--n-tabs-heading-overflow-x); + flex-wrap: var(--n-tabs-heading-wrap); + -ms-overflow-style: none; /* IE and Edge */ + scrollbar-width: none; /* Firefox */ +} +.elementor-widget-n-tabs .e-n-tabs-heading::-webkit-scrollbar { + display: none; /* Hide scrollbar for Chrome, Safari and Opera */ +} +.elementor-widget-n-tabs .e-n-tabs-heading.e-scroll { + cursor: grabbing; + cursor: -webkit-grabbing; +} +.elementor-widget-n-tabs .e-n-tabs-heading.e-scroll-active { + position: relative; +} +.elementor-widget-n-tabs .e-n-tabs-heading.e-scroll-active::before { + content: ""; + position: absolute; + inset-block: 0; + inset-inline: -1000vw; + z-index: 2; +} +.elementor-widget-n-tabs .e-n-tabs-content { + display: var(--n-tabs-content-display); + flex-grow: 1; + min-width: 0; +} +.elementor-widget-n-tabs .e-n-tabs-content > .e-con:not(.e-active) { + display: none; +} +.elementor-widget-n-tabs .e-n-tabs:not(.e-activated) > .e-n-tabs-content > .e-con:nth-child(1) { + display: flex; +} +.elementor-widget-n-tabs .e-n-tab-title { + all: unset; + -webkit-user-select: none; + -moz-user-select: none; + user-select: none; + display: flex; + align-items: var(--n-tabs-title-align-items-toggle, var(--n-tabs-title-align-items)); + flex-direction: var(--n-tabs-title-direction); + justify-content: var(--n-tabs-title-justify-content-toggle, var(--n-tabs-title-justify-content)); + gap: var(--n-tabs-icon-gap); + border-width: var(--n-tabs-border-width); + position: relative; + cursor: pointer; + outline: none; + flex-grow: var(--n-tabs-title-flex-grow); + flex-basis: var(--n-tabs-title-flex-basis); + flex-shrink: var(--n-tabs-title-flex-shrink); + padding-block-start: var(--n-tabs-title-padding-block-start); + padding-inline-end: var(--n-tabs-title-padding-inline-end); + padding-block-end: var(--n-tabs-title-padding-block-end); + padding-inline-start: var(--n-tabs-title-padding-inline-start); + border-radius: var(--n-tabs-title-border-radius); + height: var(--n-tabs-title-height); + width: var(--n-tabs-title-width); + white-space: var(--n-tabs-title-white-space); + transition: background var(--n-tabs-title-transition), color var(--n-tabs-title-transition), border var(--n-tabs-title-transition), box-shadow var(--n-tabs-title-transition), text-shadow var(--n-tabs-title-transition), stroke var(--n-tabs-title-transition), stroke-width var(--n-tabs-title-transition), -webkit-text-stroke-width var(--n-tabs-title-transition), -webkit-text-stroke-color var(--n-tabs-title-transition), transform var(--n-tabs-title-transition); +} +.elementor-widget-n-tabs .e-n-tab-title:focus-visible { + outline: 5px auto -webkit-focus-ring-color; +} +.elementor-widget-n-tabs .e-n-tab-title span svg, .elementor-widget-n-tabs .e-n-tab-title span i { + transition: color var(--n-tabs-title-transition), fill var(--n-tabs-title-transition); +} +.elementor-widget-n-tabs .e-n-tab-title-text { + display: flex; + align-items: center; + font-size: var(--n-tabs-title-font-size); + text-align: var(--n-tabs-title-text-align); +} +.elementor-widget-n-tabs .e-n-tab-title .e-n-tab-icon { + display: flex; + align-items: center; + flex-direction: column; + flex-shrink: 0; + order: var(--n-tabs-icon-order); + overflow: hidden; +} +.elementor-widget-n-tabs .e-n-tab-title .e-n-tab-icon i { + font-size: var(--n-tabs-icon-size, var(--n-tabs-title-font-size)); +} +.elementor-widget-n-tabs .e-n-tab-title .e-n-tab-icon svg { + width: var(--n-tabs-icon-size, var(--n-tabs-title-font-size)); + height: var(--n-tabs-icon-size, var(--n-tabs-title-font-size)); +} +.elementor-widget-n-tabs .e-n-tab-title .e-n-tab-icon:empty { + display: none; +} +.elementor-widget-n-tabs .e-n-tab-title[aria-selected=false] { + background-color: var(--n-tabs-title-background-color); +} +.elementor-widget-n-tabs .e-n-tab-title[aria-selected=false], .elementor-widget-n-tabs .e-n-tab-title[aria-selected=false] a { + color: var(--n-tabs-title-color); +} +.elementor-widget-n-tabs .e-n-tab-title[aria-selected=false] .e-n-tab-icon i { + color: var(--n-tabs-icon-color); +} +.elementor-widget-n-tabs .e-n-tab-title[aria-selected=false] .e-n-tab-icon svg { + fill: var(--n-tabs-icon-color); +} +.elementor-widget-n-tabs .e-n-tab-title[aria-selected=false] .e-n-tab-icon i:last-child, +.elementor-widget-n-tabs .e-n-tab-title[aria-selected=false] .e-n-tab-icon svg:last-child { + transform: translate(0, -100vh); + height: 0; + opacity: 0; +} +.elementor-widget-n-tabs .e-n-tab-title[aria-selected=true], .elementor-widget-n-tabs .e-n-tab-title[aria-selected=true] a { + color: var(--n-tabs-title-color-active); +} +.elementor-widget-n-tabs .e-n-tab-title[aria-selected=true] .e-n-tab-icon i { + color: var(--n-tabs-icon-color-active); +} +.elementor-widget-n-tabs .e-n-tab-title[aria-selected=true] .e-n-tab-icon svg { + fill: var(--n-tabs-icon-color-active); +} +.elementor-widget-n-tabs .e-n-tab-title[aria-selected=true] .e-n-tab-icon i:first-child, +.elementor-widget-n-tabs .e-n-tab-title[aria-selected=true] .e-n-tab-icon svg:first-child { + transform: translate(0, -100vh); + height: 0; + opacity: 0; +} +.elementor-widget-n-tabs .e-n-tab-title[aria-selected=true][class*=elementor-animation-]:focus, .elementor-widget-n-tabs .e-n-tab-title[aria-selected=true][class*=elementor-animation-]:active, .elementor-widget-n-tabs .e-n-tab-title[aria-selected=true][class*=elementor-animation-]:hover { + transform: initial; + animation: initial; +} +.elementor-widget-n-tabs [data-touch-mode=false] .e-n-tab-title[aria-selected=false]:hover, .elementor-widget-n-tabs [data-touch-mode=false] .e-n-tab-title[aria-selected=false]:hover a { + color: var(--n-tabs-title-color-hover); +} +.elementor-widget-n-tabs [data-touch-mode=false] .e-n-tab-title[aria-selected=false]:hover .e-n-tab-icon i { + color: var(--n-tabs-icon-color-hover); +} +.elementor-widget-n-tabs [data-touch-mode=false] .e-n-tab-title[aria-selected=false]:hover .e-n-tab-icon svg { + fill: var(--n-tabs-icon-color-hover); +} +.elementor-widget-n-tabs [data-touch-mode=true] .e-n-tab-title[aria-selected=false]:hover, .elementor-widget-n-tabs [data-touch-mode=true] .e-n-tab-title[aria-selected=false]:hover a { + color: var(--n-tabs-title-color-active); +} +.elementor-widget-n-tabs [data-touch-mode=true] .e-n-tab-title[aria-selected=false]:hover .e-n-tab-icon i { + color: var(--n-tabs-icon-color-active); +} +.elementor-widget-n-tabs [data-touch-mode=true] .e-n-tab-title[aria-selected=false]:hover .e-n-tab-icon svg { + fill: var(--n-tabs-icon-color-active); +} +.elementor-widget-n-tabs [data-touch-mode=true] .e-n-tab-title[aria-selected=false]:hover .e-n-tab-icon i:first-child, +.elementor-widget-n-tabs [data-touch-mode=true] .e-n-tab-title[aria-selected=false]:hover .e-n-tab-icon svg:first-child { + transform: translate(0, -100vh); + height: 0; + opacity: 0; +} +.elementor-widget-n-tabs [data-touch-mode=true] .e-n-tab-title[aria-selected=false]:hover[class*=elementor-animation-]:focus, .elementor-widget-n-tabs [data-touch-mode=true] .e-n-tab-title[aria-selected=false]:hover[class*=elementor-animation-]:active, .elementor-widget-n-tabs [data-touch-mode=true] .e-n-tab-title[aria-selected=false]:hover[class*=elementor-animation-]:hover { + transform: initial; + animation: initial; +} +.elementor-widget-n-tabs [data-touch-mode=true] .e-n-tab-title[aria-selected=false]:hover .e-n-tab-icon i:last-child, +.elementor-widget-n-tabs [data-touch-mode=true] .e-n-tab-title[aria-selected=false]:hover .e-n-tab-icon svg:last-child { + transform: initial; + height: initial; + opacity: initial; +} + +.elementor .elementor-element.elementor-widget-n-tabs > .elementor-widget-container > .e-n-tabs[data-touch-mode=false] > .e-n-tabs-heading .e-n-tab-title[aria-selected=false]:hover { + background-color: var(--n-tabs-title-background-color-hover); + background-image: initial; +} + +.elementor .elementor-element.elementor-widget-n-tabs > .elementor-widget-container > .e-n-tabs > .e-n-tabs-heading .e-n-tab-title[aria-selected=true], +.elementor .elementor-element.elementor-widget-n-tabs > .elementor-widget-container > .e-n-tabs[data-touch-mode=true] > .e-n-tabs-heading .e-n-tab-title[aria-selected=false]:hover { + background-color: var(--n-tabs-title-background-color-active); + background-image: initial; +} + +@media (max-width: 767px) { + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-mobile { + --n-tabs-direction: column; + --n-tabs-heading-display: contents; + --n-tabs-content-display: contents; + } + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-mobile .e-n-tabs { + gap: 0; + } + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-mobile .e-n-tabs-content > .e-con { + order: var(--n-tabs-title-order); + } + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-mobile .e-n-tab-title { + order: var(--n-tabs-title-order); + width: initial; + } + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-mobile .e-n-tab-title:not(:first-child) { + margin-block-start: var(--n-tabs-title-gap); + } + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-mobile .e-n-tab-title[aria-selected=true] { + margin-block-end: var(--n-tabs-gap); + } +} +@media (max-width: -1) { + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-mobile_extra { + --n-tabs-direction: column; + --n-tabs-heading-display: contents; + --n-tabs-content-display: contents; + } + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-mobile_extra .e-n-tabs { + gap: 0; + } + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-mobile_extra .e-n-tabs-content > .e-con { + order: var(--n-tabs-title-order); + } + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-mobile_extra .e-n-tab-title { + order: var(--n-tabs-title-order); + width: initial; + } + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-mobile_extra .e-n-tab-title:not(:first-child) { + margin-block-start: var(--n-tabs-title-gap); + } + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-mobile_extra .e-n-tab-title[aria-selected=true] { + margin-block-end: var(--n-tabs-gap); + } +} +@media (max-width: 1024px) { + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-tablet { + --n-tabs-direction: column; + --n-tabs-heading-display: contents; + --n-tabs-content-display: contents; + } + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-tablet .e-n-tabs { + gap: 0; + } + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-tablet .e-n-tabs-content > .e-con { + order: var(--n-tabs-title-order); + } + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-tablet .e-n-tab-title { + order: var(--n-tabs-title-order); + width: initial; + } + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-tablet .e-n-tab-title:not(:first-child) { + margin-block-start: var(--n-tabs-title-gap); + } + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-tablet .e-n-tab-title[aria-selected=true] { + margin-block-end: var(--n-tabs-gap); + } +} +@media (max-width: -1) { + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-tablet_extra { + --n-tabs-direction: column; + --n-tabs-heading-display: contents; + --n-tabs-content-display: contents; + } + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-tablet_extra .e-n-tabs { + gap: 0; + } + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-tablet_extra .e-n-tabs-content > .e-con { + order: var(--n-tabs-title-order); + } + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-tablet_extra .e-n-tab-title { + order: var(--n-tabs-title-order); + width: initial; + } + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-tablet_extra .e-n-tab-title:not(:first-child) { + margin-block-start: var(--n-tabs-title-gap); + } + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-tablet_extra .e-n-tab-title[aria-selected=true] { + margin-block-end: var(--n-tabs-gap); + } +} +@media (max-width: -1) { + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-laptop { + --n-tabs-direction: column; + --n-tabs-heading-display: contents; + --n-tabs-content-display: contents; + } + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-laptop .e-n-tabs { + gap: 0; + } + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-laptop .e-n-tabs-content > .e-con { + order: var(--n-tabs-title-order); + } + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-laptop .e-n-tab-title { + order: var(--n-tabs-title-order); + width: initial; + } + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-laptop .e-n-tab-title:not(:first-child) { + margin-block-start: var(--n-tabs-title-gap); + } + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-laptop .e-n-tab-title[aria-selected=true] { + margin-block-end: var(--n-tabs-gap); + } +} +.elementor-widget-n-accordion { + --n-accordion-title-font-size: 20px; + --n-accordion-title-flex-grow: initial; + --n-accordion-title-justify-content: initial; + --n-accordion-title-icon-order: -1; + --n-accordion-border-width: 1px; + --n-accordion-border-color: #D5D8DC; + --n-accordion-border-style: solid; + --n-accordion-item-title-flex-grow: initial; + --n-accordion-item-title-space-between: 0px; + --n-accordion-item-title-distance-from-content: 0px; + --n-accordion-padding: 10px; + --n-accordion-border-radius: 0px; + --n-accordion-icon-size: 15px; + --n-accordion-title-normal-color: #1f2124; + --n-accordion-title-hover-color: #1f2124; + --n-accordion-title-active-color: #1f2124; + --n-accordion-icon-normal-color: var(--n-accordion-title-normal-color); + --n-accordion-icon-hover-color: var(--n-accordion-title-hover-color); + --n-accordion-icon-active-color: var(--n-accordion-title-active-color); + --n-accordion-icon-gap: 0 10px; + width: 100%; +} +.elementor-widget-n-accordion .e-n-accordion details > summary::-webkit-details-marker { + display: none; +} +.elementor-widget-n-accordion .e-n-accordion-item { + display: flex; + flex-direction: column; + position: relative; +} +.elementor-widget-n-accordion .e-n-accordion-item:not(:last-child) { + margin-block-end: var(--n-accordion-item-title-space-between); +} +:where(.elementor-widget-n-accordion .e-n-accordion-item > .e-con) { + border: var(--n-accordion-border-width) var(--n-accordion-border-style) var(--n-accordion-border-color); +} +.elementor-widget-n-accordion .e-n-accordion-item-title { + display: flex; + flex-direction: row; + list-style: none; + padding: var(--n-accordion-padding); + border-width: var(--n-accordion-border-width); + border-color: var(--n-accordion-border-color); + border-style: var(--n-accordion-border-style); + justify-content: var(--n-accordion-title-justify-content); + border-radius: var(--n-accordion-border-radius); + flex-grow: var(--n-menu-title-flex-grow); + gap: var(--n-accordion-icon-gap); + color: var(--n-accordion-title-normal-color); + align-items: center; + cursor: pointer; +} +.elementor-widget-n-accordion .e-n-accordion-item-title-header { + display: flex; +} +.elementor-widget-n-accordion .e-n-accordion-item-title-header h1, .elementor-widget-n-accordion .e-n-accordion-item-title-header h2, .elementor-widget-n-accordion .e-n-accordion-item-title-header h3, .elementor-widget-n-accordion .e-n-accordion-item-title-header h4, .elementor-widget-n-accordion .e-n-accordion-item-title-header h5, .elementor-widget-n-accordion .e-n-accordion-item-title-header h6, .elementor-widget-n-accordion .e-n-accordion-item-title-header p { + margin-block-start: 0; + margin-block-end: 0; +} +.elementor-widget-n-accordion .e-n-accordion-item-title-text { + font-size: var(--n-accordion-title-font-size); + align-items: center; +} +.elementor-widget-n-accordion .e-n-accordion-item-title-icon { + display: flex; + flex-direction: row; + align-items: center; + order: var(--n-accordion-title-icon-order); + position: relative; + width: -moz-fit-content; + width: fit-content; +} +.elementor-widget-n-accordion .e-n-accordion-item-title-icon span { + height: var(--n-accordion-icon-size); + width: auto; +} +.elementor-widget-n-accordion .e-n-accordion-item-title-icon span > i { + color: var(--n-accordion-icon-normal-color); + font-size: var(--n-accordion-icon-size); +} +.elementor-widget-n-accordion .e-n-accordion-item-title-icon span > svg { + fill: var(--n-accordion-icon-normal-color); + height: var(--n-accordion-icon-size); +} +.elementor-widget-n-accordion .e-n-accordion-item-title > span { + cursor: pointer; +} +.elementor-widget-n-accordion .e-n-accordion-item[open] .e-n-accordion-item-title { + margin-block-end: var(--n-accordion-item-title-distance-from-content); + color: var(--n-accordion-title-active-color); +} +.elementor-widget-n-accordion .e-n-accordion-item[open] .e-n-accordion-item-title-icon .e-opened { + display: flex; +} +.elementor-widget-n-accordion .e-n-accordion-item[open] .e-n-accordion-item-title-icon .e-closed { + display: none; +} +.elementor-widget-n-accordion .e-n-accordion-item[open] .e-n-accordion-item-title-icon span > i { + color: var(--n-accordion-icon-active-color); +} +.elementor-widget-n-accordion .e-n-accordion-item[open] .e-n-accordion-item-title-icon span > svg { + fill: var(--n-accordion-icon-active-color); +} +.elementor-widget-n-accordion .e-n-accordion-item:not([open]):hover .e-n-accordion-item-title { + color: var(--n-accordion-title-hover-color); +} +.elementor-widget-n-accordion .e-n-accordion-item:not([open]):hover .e-n-accordion-item-title-icon span > i { + color: var(--n-accordion-icon-hover-color); +} +.elementor-widget-n-accordion .e-n-accordion-item:not([open]):hover .e-n-accordion-item-title-icon span > svg { + fill: var(--n-accordion-icon-hover-color); +} +.elementor-widget-n-accordion .e-n-accordion-item .e-n-accordion-item-title-icon .e-opened { + display: none; +} +.elementor-widget-n-accordion .e-n-accordion-item .e-n-accordion-item-title-icon .e-closed { + display: flex; +} +.elementor-widget-n-accordion .e-n-accordion-item .e-n-accordion-item-title-icon span > svg { + fill: var(--n-accordion-icon-normal-color); +} +.elementor-widget-n-accordion .e-n-accordion-item .e-n-accordion-item-title-icon span > i { + color: var(--n-accordion-icon-normal-color); +} +.elementor-widget-n-accordion .e-n-accordion-item > span { + cursor: pointer; +} + +.elementor-accordion { + text-align: right; +} +.elementor-accordion .elementor-accordion-item { + border: 1px solid #D5D8DC; +} +.elementor-accordion .elementor-accordion-item + .elementor-accordion-item { + border-top: none; +} +.elementor-accordion .elementor-tab-title { + margin: 0; + padding: 15px 20px; + font-weight: bold; + line-height: 1; + cursor: pointer; + outline: none; +} +.elementor-accordion .elementor-tab-title .elementor-accordion-icon { + display: inline-block; + width: 1.5em; +} +.elementor-accordion .elementor-tab-title .elementor-accordion-icon svg { + width: 1em; + height: 1em; +} +.elementor-accordion .elementor-tab-title .elementor-accordion-icon.elementor-accordion-icon-right { + float: right; + text-align: right; +} +.elementor-accordion .elementor-tab-title .elementor-accordion-icon.elementor-accordion-icon-left { + float: left; + text-align: left; +} +.elementor-accordion .elementor-tab-title .elementor-accordion-icon .elementor-accordion-icon-closed { + display: block; +} +.elementor-accordion .elementor-tab-title .elementor-accordion-icon .elementor-accordion-icon-opened { + display: none; +} +.elementor-accordion .elementor-tab-title.elementor-active .elementor-accordion-icon-closed { + display: none; +} +.elementor-accordion .elementor-tab-title.elementor-active .elementor-accordion-icon-opened { + display: block; +} +.elementor-accordion .elementor-tab-content { + display: none; + padding: 15px 20px; + border-top: 1px solid #D5D8DC; +} + +@media (max-width: 767px) { + .elementor-accordion .elementor-tab-title { + padding: 12px 15px; + } + .elementor-accordion .elementor-tab-title .elementor-accordion-icon { + width: 1.2em; + } + .elementor-accordion .elementor-tab-content { + padding: 7px 15px; + } +} +.e-con > .elementor-widget-accordion, +.e-con-inner > .elementor-widget-accordion { + width: var(--container-widget-width); + --flex-grow: var( --container-widget-flex-grow ); +} + +.elementor-alert { + padding: 15px; + border-left: 5px solid transparent; + position: relative; + text-align: right; +} +.elementor-alert .elementor-alert-title { + display: block; + font-weight: bold; +} +.elementor-alert .elementor-alert-description { + font-size: 13px; +} +.elementor-alert button.elementor-alert-dismiss { + position: absolute; + left: var(--dismiss-icon-horizontal-position, 10px); + top: var(--dismiss-icon-vertical-position, 10px); + padding: 3px; + font-size: var(--dismiss-icon-size, 20px); + line-height: 1; + background: transparent; + color: var(--dismiss-icon-normal-color, inherit); + border: none; + cursor: pointer; + transition-duration: var(--dismiss-icon-hover-transition-duration, 0.3s); +} +.elementor-alert button.elementor-alert-dismiss:hover { + color: var(--dismiss-icon-hover-color, inherit); +} +.elementor-alert button.elementor-alert-dismiss svg { + width: var(--dismiss-icon-size, 20px); + height: var(--dismiss-icon-size, 20px); + fill: var(--dismiss-icon-normal-color, currentColor); + transition-duration: var(--dismiss-icon-hover-transition-duration, 0.3s); +} +.elementor-alert button.elementor-alert-dismiss svg:hover { + fill: var(--dismiss-icon-hover-color, currentColor); +} +.elementor-alert.elementor-alert-info { + color: #31708f; + background-color: #d9edf7; + border-color: #bcdff1; +} +.elementor-alert.elementor-alert-success { + color: #3c763d; + background-color: #dff0d8; + border-color: #cae6be; +} +.elementor-alert.elementor-alert-warning { + color: #8a6d3b; + background-color: #fcf8e3; + border-color: #f9f0c3; +} +.elementor-alert.elementor-alert-danger { + color: #a94442; + background-color: #f2dede; + border-color: #e8c4c4; +} + +@media (max-width: 767px) { + .elementor-alert { + padding: 10px; + } + .elementor-alert button.elementor-alert-dismiss { + right: 7px; + top: 7px; + } +} +.elementor-counter .elementor-counter-number-wrapper { + display: flex; + font-size: 69px; + font-weight: 600; + line-height: 1; +} +.elementor-counter .elementor-counter-number-prefix, .elementor-counter .elementor-counter-number-suffix { + flex-grow: 1; + white-space: pre-wrap; +} +.elementor-counter .elementor-counter-number-prefix { + text-align: left; +} +.elementor-counter .elementor-counter-number-suffix { + text-align: right; +} +.elementor-counter .elementor-counter-title { + text-align: center; + font-size: 19px; + font-weight: 400; + line-height: 2.5; +} + +.elementor-widget-divider { + --divider-border-style: none; + --divider-border-width: 1px; + --divider-color: #0C0D0E; + --divider-icon-size: 20px; + --divider-element-spacing: 10px; + --divider-pattern-height: 24px; + --divider-pattern-size: 20px; + --divider-pattern-url: none; + --divider-pattern-repeat: repeat-x; +} +.elementor-widget-divider .elementor-divider { + display: flex; +} +.elementor-widget-divider .elementor-divider__text { + font-size: 15px; + line-height: 1; + max-width: 95%; +} +.elementor-widget-divider .elementor-divider__element { + margin: 0 var(--divider-element-spacing); + flex-shrink: 0; +} +.elementor-widget-divider .elementor-icon { + font-size: var(--divider-icon-size); +} +.elementor-widget-divider .elementor-divider-separator { + display: flex; + margin: 0; + direction: ltr; +} +.elementor-widget-divider--view-line_text .elementor-divider-separator, .elementor-widget-divider--view-line_icon .elementor-divider-separator { + align-items: center; +} +.elementor-widget-divider--view-line_text .elementor-divider-separator:before, .elementor-widget-divider--view-line_text .elementor-divider-separator:after, .elementor-widget-divider--view-line_icon .elementor-divider-separator:before, .elementor-widget-divider--view-line_icon .elementor-divider-separator:after { + display: block; + content: ""; + border-block-end: 0; + flex-grow: 1; + border-block-start: var(--divider-border-width) var(--divider-border-style) var(--divider-color); +} +.elementor-widget-divider--element-align-left .elementor-divider .elementor-divider-separator > .elementor-divider__svg:first-of-type { + flex-grow: 0; + flex-shrink: 100; +} +.elementor-widget-divider--element-align-left .elementor-divider-separator:before { + content: none; +} +.elementor-widget-divider--element-align-left .elementor-divider__element { + margin-left: 0; +} +.elementor-widget-divider--element-align-right .elementor-divider .elementor-divider-separator > .elementor-divider__svg:last-of-type { + flex-grow: 0; + flex-shrink: 100; +} +.elementor-widget-divider--element-align-right .elementor-divider-separator:after { + content: none; +} +.elementor-widget-divider--element-align-right .elementor-divider__element { + margin-right: 0; +} +.elementor-widget-divider--element-align-start .elementor-divider .elementor-divider-separator > .elementor-divider__svg:first-of-type { + flex-grow: 0; + flex-shrink: 100; +} +.elementor-widget-divider--element-align-start .elementor-divider-separator:before { + content: none; +} +.elementor-widget-divider--element-align-start .elementor-divider__element { + margin-inline-start: 0; +} +.elementor-widget-divider--element-align-end .elementor-divider .elementor-divider-separator > .elementor-divider__svg:last-of-type { + flex-grow: 0; + flex-shrink: 100; +} +.elementor-widget-divider--element-align-end .elementor-divider-separator:after { + content: none; +} +.elementor-widget-divider--element-align-end .elementor-divider__element { + margin-inline-end: 0; +} +.elementor-widget-divider:not(.elementor-widget-divider--view-line_text):not(.elementor-widget-divider--view-line_icon) .elementor-divider-separator { + border-block-start: var(--divider-border-width) var(--divider-border-style) var(--divider-color); +} +.elementor-widget-divider--separator-type-pattern { + --divider-border-style: none; +} +.elementor-widget-divider--separator-type-pattern.elementor-widget-divider--view-line .elementor-divider-separator, .elementor-widget-divider--separator-type-pattern:not([class*=elementor-widget-divider--view]) .elementor-divider-separator, .elementor-widget-divider--separator-type-pattern:not(.elementor-widget-divider--view-line) .elementor-divider-separator:before, .elementor-widget-divider--separator-type-pattern:not(.elementor-widget-divider--view-line) .elementor-divider-separator:after { + width: 100%; + min-height: var(--divider-pattern-height); + -webkit-mask-size: var(--divider-pattern-size) 100%; + mask-size: var(--divider-pattern-size) 100%; + -webkit-mask-repeat: var(--divider-pattern-repeat); + mask-repeat: var(--divider-pattern-repeat); + background-color: var(--divider-color); + -webkit-mask-image: var(--divider-pattern-url); + mask-image: var(--divider-pattern-url); +} +.elementor-widget-divider--no-spacing { + --divider-pattern-size: auto; +} +.elementor-widget-divider--bg-round { + --divider-pattern-repeat: round; +} + +.rtl .elementor-widget-divider .elementor-divider__text { + direction: rtl; +} + +.e-con > .elementor-widget-divider, +.e-con-inner > .elementor-widget-divider { + width: var(--container-widget-width, 100%); + --flex-grow: var( --container-widget-flex-grow ); +} + +.elementor-image-gallery .gallery-item { + display: inline-block; + text-align: center; + vertical-align: top; + width: 100%; + max-width: 100%; + margin: 0 auto; +} +.elementor-image-gallery .gallery-item img { + margin: 0 auto; +} +.elementor-image-gallery .gallery-item .gallery-caption { + margin: 0; +} +.elementor-image-gallery figure img { + display: block; +} +.elementor-image-gallery figure figcaption { + width: 100%; +} +.gallery-spacing-custom .elementor-image-gallery .gallery-icon { + padding: 0; +} +@media (min-width: 768px) { + .elementor-image-gallery .gallery-columns-2 .gallery-item { + max-width: 50%; + } + .elementor-image-gallery .gallery-columns-3 .gallery-item { + max-width: 33.33%; + } + .elementor-image-gallery .gallery-columns-4 .gallery-item { + max-width: 25%; + } + .elementor-image-gallery .gallery-columns-5 .gallery-item { + max-width: 20%; + } + .elementor-image-gallery .gallery-columns-6 .gallery-item { + max-width: 16.666%; + } + .elementor-image-gallery .gallery-columns-7 .gallery-item { + max-width: 14.28%; + } + .elementor-image-gallery .gallery-columns-8 .gallery-item { + max-width: 12.5%; + } + .elementor-image-gallery .gallery-columns-9 .gallery-item { + max-width: 11.11%; + } + .elementor-image-gallery .gallery-columns-10 .gallery-item { + max-width: 10%; + } +} +@media (min-width: 480px) and (max-width: 767px) { + .elementor-image-gallery .gallery.gallery-columns-2 .gallery-item, .elementor-image-gallery .gallery.gallery-columns-3 .gallery-item, .elementor-image-gallery .gallery.gallery-columns-4 .gallery-item, .elementor-image-gallery .gallery.gallery-columns-5 .gallery-item, .elementor-image-gallery .gallery.gallery-columns-6 .gallery-item, .elementor-image-gallery .gallery.gallery-columns-7 .gallery-item, .elementor-image-gallery .gallery.gallery-columns-8 .gallery-item, .elementor-image-gallery .gallery.gallery-columns-9 .gallery-item, .elementor-image-gallery .gallery.gallery-columns-10 .gallery-item { + max-width: 50%; + } +} +@media (max-width: 479px) { + .elementor-image-gallery .gallery.gallery-columns-2 .gallery-item, .elementor-image-gallery .gallery.gallery-columns-3 .gallery-item, .elementor-image-gallery .gallery.gallery-columns-4 .gallery-item, .elementor-image-gallery .gallery.gallery-columns-5 .gallery-item, .elementor-image-gallery .gallery.gallery-columns-6 .gallery-item, .elementor-image-gallery .gallery.gallery-columns-7 .gallery-item, .elementor-image-gallery .gallery.gallery-columns-8 .gallery-item, .elementor-image-gallery .gallery.gallery-columns-9 .gallery-item, .elementor-image-gallery .gallery.gallery-columns-10 .gallery-item { + max-width: 100%; + } +} + +.elementor-widget-google_maps .elementor-widget-container { + overflow: hidden; +} +.elementor-widget-google_maps .elementor-custom-embed { + line-height: 0; +} +.elementor-widget-google_maps iframe { + height: 300px; +} + +.elementor-heading-title { + padding: 0; + margin: 0; + line-height: 1; +} + +.elementor-widget-heading .elementor-heading-title[class*=elementor-size-] > a { + color: inherit; + font-size: inherit; + line-height: inherit; +} +.elementor-widget-heading .elementor-heading-title.elementor-size-small { + font-size: 15px; +} +.elementor-widget-heading .elementor-heading-title.elementor-size-medium { + font-size: 19px; +} +.elementor-widget-heading .elementor-heading-title.elementor-size-large { + font-size: 29px; +} +.elementor-widget-heading .elementor-heading-title.elementor-size-xl { + font-size: 39px; +} +.elementor-widget-heading .elementor-heading-title.elementor-size-xxl { + font-size: 59px; +} + +.elementor-widget-icon-box .elementor-icon-box-wrapper { + display: block; + text-align: center; +} +.elementor-widget-icon-box .elementor-icon-box-icon { + margin-bottom: var(--icon-box-icon-margin, 15px); + margin-right: auto; + margin-left: auto; +} +@media (min-width: 768px) { + .elementor-widget-icon-box.elementor-vertical-align-top .elementor-icon-box-wrapper { + align-items: flex-start; + } + .elementor-widget-icon-box.elementor-vertical-align-middle .elementor-icon-box-wrapper { + align-items: center; + } + .elementor-widget-icon-box.elementor-vertical-align-bottom .elementor-icon-box-wrapper { + align-items: flex-end; + } +} +.elementor-widget-icon-box.elementor-position-left .elementor-icon-box-wrapper, .elementor-widget-icon-box.elementor-position-right .elementor-icon-box-wrapper { + display: flex; +} +.elementor-widget-icon-box.elementor-position-left .elementor-icon-box-icon, .elementor-widget-icon-box.elementor-position-right .elementor-icon-box-icon { + display: inline-flex; + flex: 0 0 auto; +} +.elementor-widget-icon-box.elementor-position-right .elementor-icon-box-wrapper { + text-align: left; + flex-direction: row; +} +.elementor-widget-icon-box.elementor-position-right .elementor-icon-box-icon { + margin-left: var(--icon-box-icon-margin, 15px); + margin-right: 0; + margin-bottom: unset; +} +.elementor-widget-icon-box.elementor-position-left .elementor-icon-box-wrapper { + text-align: right; + flex-direction: row-reverse; +} +.elementor-widget-icon-box.elementor-position-left .elementor-icon-box-icon { + margin-right: var(--icon-box-icon-margin, 15px); + margin-left: 0; + margin-bottom: unset; +} +.elementor-widget-icon-box.elementor-position-top .elementor-icon-box-wrapper { + display: block; + text-align: center; + flex-direction: unset; +} +.elementor-widget-icon-box.elementor-position-top .elementor-icon-box-icon { + margin-bottom: var(--icon-box-icon-margin, 15px); + margin-right: auto; + margin-left: auto; +} +@media (min-width: -1) { + .elementor-widget-icon-box.elementor-widescreen-position-left .elementor-icon-box-wrapper, .elementor-widget-icon-box.elementor-widescreen-position-right .elementor-icon-box-wrapper { + display: flex; + } + .elementor-widget-icon-box.elementor-widescreen-position-left .elementor-icon-box-icon, .elementor-widget-icon-box.elementor-widescreen-position-right .elementor-icon-box-icon { + display: inline-flex; + flex: 0 0 auto; + } + .elementor-widget-icon-box.elementor-widescreen-position-right .elementor-icon-box-wrapper { + text-align: left; + flex-direction: row; + } + .elementor-widget-icon-box.elementor-widescreen-position-right .elementor-icon-box-icon { + margin-left: var(--icon-box-icon-margin, 15px); + margin-right: 0; + margin-bottom: unset; + } + .elementor-widget-icon-box.elementor-widescreen-position-left .elementor-icon-box-wrapper { + text-align: right; + flex-direction: row-reverse; + } + .elementor-widget-icon-box.elementor-widescreen-position-left .elementor-icon-box-icon { + margin-right: var(--icon-box-icon-margin, 15px); + margin-left: 0; + margin-bottom: unset; + } + .elementor-widget-icon-box.elementor-widescreen-position-top .elementor-icon-box-wrapper { + display: block; + text-align: center; + flex-direction: unset; + } + .elementor-widget-icon-box.elementor-widescreen-position-top .elementor-icon-box-icon { + margin-bottom: var(--icon-box-icon-margin, 15px); + margin-right: auto; + margin-left: auto; + } +} +@media (max-width: -1) { + .elementor-widget-icon-box.elementor-laptop-position-left .elementor-icon-box-wrapper, .elementor-widget-icon-box.elementor-laptop-position-right .elementor-icon-box-wrapper { + display: flex; + } + .elementor-widget-icon-box.elementor-laptop-position-left .elementor-icon-box-icon, .elementor-widget-icon-box.elementor-laptop-position-right .elementor-icon-box-icon { + display: inline-flex; + flex: 0 0 auto; + } + .elementor-widget-icon-box.elementor-laptop-position-right .elementor-icon-box-wrapper { + text-align: left; + flex-direction: row; + } + .elementor-widget-icon-box.elementor-laptop-position-right .elementor-icon-box-icon { + margin-left: var(--icon-box-icon-margin, 15px); + margin-right: 0; + margin-bottom: unset; + } + .elementor-widget-icon-box.elementor-laptop-position-left .elementor-icon-box-wrapper { + text-align: right; + flex-direction: row-reverse; + } + .elementor-widget-icon-box.elementor-laptop-position-left .elementor-icon-box-icon { + margin-right: var(--icon-box-icon-margin, 15px); + margin-left: 0; + margin-bottom: unset; + } + .elementor-widget-icon-box.elementor-laptop-position-top .elementor-icon-box-wrapper { + display: block; + text-align: center; + flex-direction: unset; + } + .elementor-widget-icon-box.elementor-laptop-position-top .elementor-icon-box-icon { + margin-bottom: var(--icon-box-icon-margin, 15px); + margin-right: auto; + margin-left: auto; + } +} +@media (max-width: -1) { + .elementor-widget-icon-box.elementor-tablet_extra-position-left .elementor-icon-box-wrapper, .elementor-widget-icon-box.elementor-tablet_extra-position-right .elementor-icon-box-wrapper { + display: flex; + } + .elementor-widget-icon-box.elementor-tablet_extra-position-left .elementor-icon-box-icon, .elementor-widget-icon-box.elementor-tablet_extra-position-right .elementor-icon-box-icon { + display: inline-flex; + flex: 0 0 auto; + } + .elementor-widget-icon-box.elementor-tablet_extra-position-right .elementor-icon-box-wrapper { + text-align: left; + flex-direction: row; + } + .elementor-widget-icon-box.elementor-tablet_extra-position-right .elementor-icon-box-icon { + margin-left: var(--icon-box-icon-margin, 15px); + margin-right: 0; + margin-bottom: unset; + } + .elementor-widget-icon-box.elementor-tablet_extra-position-left .elementor-icon-box-wrapper { + text-align: right; + flex-direction: row-reverse; + } + .elementor-widget-icon-box.elementor-tablet_extra-position-left .elementor-icon-box-icon { + margin-right: var(--icon-box-icon-margin, 15px); + margin-left: 0; + margin-bottom: unset; + } + .elementor-widget-icon-box.elementor-tablet_extra-position-top .elementor-icon-box-wrapper { + display: block; + text-align: center; + flex-direction: unset; + } + .elementor-widget-icon-box.elementor-tablet_extra-position-top .elementor-icon-box-icon { + margin-bottom: var(--icon-box-icon-margin, 15px); + margin-right: auto; + margin-left: auto; + } +} +@media (max-width: 1024px) { + .elementor-widget-icon-box.elementor-tablet-position-left .elementor-icon-box-wrapper, .elementor-widget-icon-box.elementor-tablet-position-right .elementor-icon-box-wrapper { + display: flex; + } + .elementor-widget-icon-box.elementor-tablet-position-left .elementor-icon-box-icon, .elementor-widget-icon-box.elementor-tablet-position-right .elementor-icon-box-icon { + display: inline-flex; + flex: 0 0 auto; + } + .elementor-widget-icon-box.elementor-tablet-position-right .elementor-icon-box-wrapper { + text-align: left; + flex-direction: row; + } + .elementor-widget-icon-box.elementor-tablet-position-right .elementor-icon-box-icon { + margin-left: var(--icon-box-icon-margin, 15px); + margin-right: 0; + margin-bottom: unset; + } + .elementor-widget-icon-box.elementor-tablet-position-left .elementor-icon-box-wrapper { + text-align: right; + flex-direction: row-reverse; + } + .elementor-widget-icon-box.elementor-tablet-position-left .elementor-icon-box-icon { + margin-right: var(--icon-box-icon-margin, 15px); + margin-left: 0; + margin-bottom: unset; + } + .elementor-widget-icon-box.elementor-tablet-position-top .elementor-icon-box-wrapper { + display: block; + text-align: center; + flex-direction: unset; + } + .elementor-widget-icon-box.elementor-tablet-position-top .elementor-icon-box-icon { + margin-bottom: var(--icon-box-icon-margin, 15px); + margin-right: auto; + margin-left: auto; + } +} +@media (max-width: -1) { + .elementor-widget-icon-box.elementor-mobile_extra-position-left .elementor-icon-box-wrapper, .elementor-widget-icon-box.elementor-mobile_extra-position-right .elementor-icon-box-wrapper { + display: flex; + } + .elementor-widget-icon-box.elementor-mobile_extra-position-left .elementor-icon-box-icon, .elementor-widget-icon-box.elementor-mobile_extra-position-right .elementor-icon-box-icon { + display: inline-flex; + flex: 0 0 auto; + } + .elementor-widget-icon-box.elementor-mobile_extra-position-right .elementor-icon-box-wrapper { + text-align: left; + flex-direction: row; + } + .elementor-widget-icon-box.elementor-mobile_extra-position-right .elementor-icon-box-icon { + margin-left: var(--icon-box-icon-margin, 15px); + margin-right: 0; + margin-bottom: unset; + } + .elementor-widget-icon-box.elementor-mobile_extra-position-left .elementor-icon-box-wrapper { + text-align: right; + flex-direction: row-reverse; + } + .elementor-widget-icon-box.elementor-mobile_extra-position-left .elementor-icon-box-icon { + margin-right: var(--icon-box-icon-margin, 15px); + margin-left: 0; + margin-bottom: unset; + } + .elementor-widget-icon-box.elementor-mobile_extra-position-top .elementor-icon-box-wrapper { + display: block; + text-align: center; + flex-direction: unset; + } + .elementor-widget-icon-box.elementor-mobile_extra-position-top .elementor-icon-box-icon { + margin-bottom: var(--icon-box-icon-margin, 15px); + margin-right: auto; + margin-left: auto; + } +} +@media (max-width: 767px) { + .elementor-widget-icon-box.elementor-mobile-position-left .elementor-icon-box-wrapper, .elementor-widget-icon-box.elementor-mobile-position-right .elementor-icon-box-wrapper { + display: flex; + } + .elementor-widget-icon-box.elementor-mobile-position-left .elementor-icon-box-icon, .elementor-widget-icon-box.elementor-mobile-position-right .elementor-icon-box-icon { + display: inline-flex; + flex: 0 0 auto; + } + .elementor-widget-icon-box.elementor-mobile-position-right .elementor-icon-box-wrapper { + text-align: left; + flex-direction: row; + } + .elementor-widget-icon-box.elementor-mobile-position-right .elementor-icon-box-icon { + margin-left: var(--icon-box-icon-margin, 15px); + margin-right: 0; + margin-bottom: unset; + } + .elementor-widget-icon-box.elementor-mobile-position-left .elementor-icon-box-wrapper { + text-align: right; + flex-direction: row-reverse; + } + .elementor-widget-icon-box.elementor-mobile-position-left .elementor-icon-box-icon { + margin-right: var(--icon-box-icon-margin, 15px); + margin-left: 0; + margin-bottom: unset; + } + .elementor-widget-icon-box.elementor-mobile-position-top .elementor-icon-box-wrapper { + display: block; + text-align: center; + flex-direction: unset; + } + .elementor-widget-icon-box.elementor-mobile-position-top .elementor-icon-box-icon { + margin-bottom: var(--icon-box-icon-margin, 15px); + margin-right: auto; + margin-left: auto; + } + .elementor-widget-icon-box.elementor-position-left .elementor-icon-box-icon, .elementor-widget-icon-box.elementor-position-right .elementor-icon-box-icon { + display: block; + flex: unset; + } +} +.elementor-widget-icon-box .elementor-icon-box-title a { + color: inherit; +} +.elementor-widget-icon-box .elementor-icon-box-content { + flex-grow: 1; +} +.elementor-widget-icon-box .elementor-icon-box-description { + margin: 0; +} + +.elementor-widget.elementor-icon-list--layout-inline .elementor-widget-container { + overflow: hidden; +} +.elementor-widget .elementor-icon-list-items.elementor-inline-items { + margin-right: -8px; + margin-left: -8px; +} +.elementor-widget .elementor-icon-list-items.elementor-inline-items .elementor-icon-list-item { + margin-right: 8px; + margin-left: 8px; +} +.elementor-widget .elementor-icon-list-items.elementor-inline-items .elementor-icon-list-item:after { + width: auto; + left: auto; + right: auto; + position: relative; + height: 100%; + border-top: 0; + border-bottom: 0; + border-right: 0; + border-left-width: 1px; + border-style: solid; + left: -8px; +} +.elementor-widget .elementor-icon-list-items { + list-style-type: none; + margin: 0; + padding: 0; +} +.elementor-widget .elementor-icon-list-item { + margin: 0; + padding: 0; + position: relative; +} +.elementor-widget .elementor-icon-list-item:after { + position: absolute; + bottom: 0; + width: 100%; +} +.elementor-widget .elementor-icon-list-item, .elementor-widget .elementor-icon-list-item a { + display: flex; + font-size: inherit; + align-items: var(--icon-vertical-align, center); +} +.elementor-widget .elementor-icon-list-icon + .elementor-icon-list-text { + align-self: center; + padding-right: 5px; +} +.elementor-widget .elementor-icon-list-icon { + display: flex; + position: relative; + top: var(--icon-vertical-offset, initial); +} +.elementor-widget .elementor-icon-list-icon svg { + width: var(--e-icon-list-icon-size, 1em); + height: var(--e-icon-list-icon-size, 1em); +} +.elementor-widget .elementor-icon-list-icon i { + width: 1.25em; + font-size: var(--e-icon-list-icon-size); +} +.elementor-widget.elementor-widget-icon-list .elementor-icon-list-icon { + text-align: var(--e-icon-list-icon-align); +} +.elementor-widget.elementor-widget-icon-list .elementor-icon-list-icon svg { + margin: var(--e-icon-list-icon-margin, 0 calc(var(--e-icon-list-icon-size, 1em) * 0.25) 0 0); +} +.elementor-widget.elementor-list-item-link-full_width a { + width: 100%; +} +.elementor-widget.elementor-align-center .elementor-icon-list-item, .elementor-widget.elementor-align-center .elementor-icon-list-item a { + justify-content: center; +} +.elementor-widget.elementor-align-center .elementor-icon-list-item:after { + margin: auto; +} +.elementor-widget.elementor-align-center .elementor-inline-items { + justify-content: center; +} +.elementor-widget.elementor-align-left .elementor-icon-list-item, .elementor-widget.elementor-align-left .elementor-icon-list-item a { + justify-content: flex-end; + text-align: left; +} +.elementor-widget.elementor-align-left .elementor-inline-items { + justify-content: flex-end; +} +.elementor-widget.elementor-align-right .elementor-icon-list-item, .elementor-widget.elementor-align-right .elementor-icon-list-item a { + justify-content: flex-start; + text-align: right; +} +.elementor-widget.elementor-align-right .elementor-icon-list-items { + justify-content: flex-start; +} +.elementor-widget:not(.elementor-align-right) .elementor-icon-list-item:after { + right: 0; +} +.elementor-widget:not(.elementor-align-left) .elementor-icon-list-item:after { + left: 0; +} +@media (min-width: -1) { + .elementor-widget.elementor-widescreen-align-center .elementor-icon-list-item, .elementor-widget.elementor-widescreen-align-center .elementor-icon-list-item a { + justify-content: center; + } + .elementor-widget.elementor-widescreen-align-center .elementor-icon-list-item:after { + margin: auto; + } + .elementor-widget.elementor-widescreen-align-center .elementor-inline-items { + justify-content: center; + } + .elementor-widget.elementor-widescreen-align-left .elementor-icon-list-item, .elementor-widget.elementor-widescreen-align-left .elementor-icon-list-item a { + justify-content: flex-end; + text-align: left; + } + .elementor-widget.elementor-widescreen-align-left .elementor-inline-items { + justify-content: flex-end; + } + .elementor-widget.elementor-widescreen-align-right .elementor-icon-list-item, .elementor-widget.elementor-widescreen-align-right .elementor-icon-list-item a { + justify-content: flex-start; + text-align: right; + } + .elementor-widget.elementor-widescreen-align-right .elementor-icon-list-items { + justify-content: flex-start; + } + .elementor-widget:not(.elementor-widescreen-align-right) .elementor-icon-list-item:after { + right: 0; + } + .elementor-widget:not(.elementor-widescreen-align-left) .elementor-icon-list-item:after { + left: 0; + } +} +@media (max-width: -1) { + .elementor-widget.elementor-laptop-align-center .elementor-icon-list-item, .elementor-widget.elementor-laptop-align-center .elementor-icon-list-item a { + justify-content: center; + } + .elementor-widget.elementor-laptop-align-center .elementor-icon-list-item:after { + margin: auto; + } + .elementor-widget.elementor-laptop-align-center .elementor-inline-items { + justify-content: center; + } + .elementor-widget.elementor-laptop-align-left .elementor-icon-list-item, .elementor-widget.elementor-laptop-align-left .elementor-icon-list-item a { + justify-content: flex-end; + text-align: left; + } + .elementor-widget.elementor-laptop-align-left .elementor-inline-items { + justify-content: flex-end; + } + .elementor-widget.elementor-laptop-align-right .elementor-icon-list-item, .elementor-widget.elementor-laptop-align-right .elementor-icon-list-item a { + justify-content: flex-start; + text-align: right; + } + .elementor-widget.elementor-laptop-align-right .elementor-icon-list-items { + justify-content: flex-start; + } + .elementor-widget:not(.elementor-laptop-align-right) .elementor-icon-list-item:after { + right: 0; + } + .elementor-widget:not(.elementor-laptop-align-left) .elementor-icon-list-item:after { + left: 0; + } +} +@media (max-width: -1) { + .elementor-widget.elementor-tablet_extra-align-center .elementor-icon-list-item, .elementor-widget.elementor-tablet_extra-align-center .elementor-icon-list-item a { + justify-content: center; + } + .elementor-widget.elementor-tablet_extra-align-center .elementor-icon-list-item:after { + margin: auto; + } + .elementor-widget.elementor-tablet_extra-align-center .elementor-inline-items { + justify-content: center; + } + .elementor-widget.elementor-tablet_extra-align-left .elementor-icon-list-item, .elementor-widget.elementor-tablet_extra-align-left .elementor-icon-list-item a { + justify-content: flex-end; + text-align: left; + } + .elementor-widget.elementor-tablet_extra-align-left .elementor-inline-items { + justify-content: flex-end; + } + .elementor-widget.elementor-tablet_extra-align-right .elementor-icon-list-item, .elementor-widget.elementor-tablet_extra-align-right .elementor-icon-list-item a { + justify-content: flex-start; + text-align: right; + } + .elementor-widget.elementor-tablet_extra-align-right .elementor-icon-list-items { + justify-content: flex-start; + } + .elementor-widget:not(.elementor-tablet_extra-align-right) .elementor-icon-list-item:after { + right: 0; + } + .elementor-widget:not(.elementor-tablet_extra-align-left) .elementor-icon-list-item:after { + left: 0; + } +} +@media (max-width: 1024px) { + .elementor-widget.elementor-tablet-align-center .elementor-icon-list-item, .elementor-widget.elementor-tablet-align-center .elementor-icon-list-item a { + justify-content: center; + } + .elementor-widget.elementor-tablet-align-center .elementor-icon-list-item:after { + margin: auto; + } + .elementor-widget.elementor-tablet-align-center .elementor-inline-items { + justify-content: center; + } + .elementor-widget.elementor-tablet-align-left .elementor-icon-list-item, .elementor-widget.elementor-tablet-align-left .elementor-icon-list-item a { + justify-content: flex-end; + text-align: left; + } + .elementor-widget.elementor-tablet-align-left .elementor-inline-items { + justify-content: flex-end; + } + .elementor-widget.elementor-tablet-align-right .elementor-icon-list-item, .elementor-widget.elementor-tablet-align-right .elementor-icon-list-item a { + justify-content: flex-start; + text-align: right; + } + .elementor-widget.elementor-tablet-align-right .elementor-icon-list-items { + justify-content: flex-start; + } + .elementor-widget:not(.elementor-tablet-align-right) .elementor-icon-list-item:after { + right: 0; + } + .elementor-widget:not(.elementor-tablet-align-left) .elementor-icon-list-item:after { + left: 0; + } +} +@media (max-width: -1) { + .elementor-widget.elementor-mobile_extra-align-center .elementor-icon-list-item, .elementor-widget.elementor-mobile_extra-align-center .elementor-icon-list-item a { + justify-content: center; + } + .elementor-widget.elementor-mobile_extra-align-center .elementor-icon-list-item:after { + margin: auto; + } + .elementor-widget.elementor-mobile_extra-align-center .elementor-inline-items { + justify-content: center; + } + .elementor-widget.elementor-mobile_extra-align-left .elementor-icon-list-item, .elementor-widget.elementor-mobile_extra-align-left .elementor-icon-list-item a { + justify-content: flex-end; + text-align: left; + } + .elementor-widget.elementor-mobile_extra-align-left .elementor-inline-items { + justify-content: flex-end; + } + .elementor-widget.elementor-mobile_extra-align-right .elementor-icon-list-item, .elementor-widget.elementor-mobile_extra-align-right .elementor-icon-list-item a { + justify-content: flex-start; + text-align: right; + } + .elementor-widget.elementor-mobile_extra-align-right .elementor-icon-list-items { + justify-content: flex-start; + } + .elementor-widget:not(.elementor-mobile_extra-align-right) .elementor-icon-list-item:after { + right: 0; + } + .elementor-widget:not(.elementor-mobile_extra-align-left) .elementor-icon-list-item:after { + left: 0; + } +} +@media (max-width: 767px) { + .elementor-widget.elementor-mobile-align-center .elementor-icon-list-item, .elementor-widget.elementor-mobile-align-center .elementor-icon-list-item a { + justify-content: center; + } + .elementor-widget.elementor-mobile-align-center .elementor-icon-list-item:after { + margin: auto; + } + .elementor-widget.elementor-mobile-align-center .elementor-inline-items { + justify-content: center; + } + .elementor-widget.elementor-mobile-align-left .elementor-icon-list-item, .elementor-widget.elementor-mobile-align-left .elementor-icon-list-item a { + justify-content: flex-end; + text-align: left; + } + .elementor-widget.elementor-mobile-align-left .elementor-inline-items { + justify-content: flex-end; + } + .elementor-widget.elementor-mobile-align-right .elementor-icon-list-item, .elementor-widget.elementor-mobile-align-right .elementor-icon-list-item a { + justify-content: flex-start; + text-align: right; + } + .elementor-widget.elementor-mobile-align-right .elementor-icon-list-items { + justify-content: flex-start; + } + .elementor-widget:not(.elementor-mobile-align-right) .elementor-icon-list-item:after { + right: 0; + } + .elementor-widget:not(.elementor-mobile-align-left) .elementor-icon-list-item:after { + left: 0; + } +} + +.elementor-widget-image { + text-align: center; +} +.elementor-widget-image a { + display: inline-block; +} +.elementor-widget-image a img[src$=".svg"] { + width: 48px; +} +.elementor-widget-image img { + vertical-align: middle; + display: inline-block; +} + +.elementor-widget-image-box .elementor-image-box-content { + width: 100%; +} +@media (min-width: 768px) { + .elementor-widget-image-box.elementor-position-left .elementor-image-box-wrapper, .elementor-widget-image-box.elementor-position-right .elementor-image-box-wrapper { + display: flex; + } + .elementor-widget-image-box.elementor-position-right .elementor-image-box-wrapper { + text-align: left; + flex-direction: row; + } + .elementor-widget-image-box.elementor-position-left .elementor-image-box-wrapper { + text-align: right; + flex-direction: row-reverse; + } + .elementor-widget-image-box.elementor-position-top .elementor-image-box-img { + margin: auto; + } + .elementor-widget-image-box.elementor-vertical-align-top .elementor-image-box-wrapper { + align-items: flex-start; + } + .elementor-widget-image-box.elementor-vertical-align-middle .elementor-image-box-wrapper { + align-items: center; + } + .elementor-widget-image-box.elementor-vertical-align-bottom .elementor-image-box-wrapper { + align-items: flex-end; + } +} +@media (max-width: 767px) { + .elementor-widget-image-box .elementor-image-box-img { + margin-left: auto !important; + margin-right: auto !important; + margin-bottom: 15px; + } +} +.elementor-widget-image-box .elementor-image-box-img { + display: inline-block; +} +.elementor-widget-image-box .elementor-image-box-title a { + color: inherit; +} +.elementor-widget-image-box .elementor-image-box-wrapper { + text-align: center; +} +.elementor-widget-image-box .elementor-image-box-description { + margin: 0; +} + +.elementor-widget-image-carousel .swiper-container, +.elementor-widget-image-carousel .swiper { + position: static; +} +.elementor-widget-image-carousel .swiper-container .swiper-slide figure, +.elementor-widget-image-carousel .swiper .swiper-slide figure { + line-height: inherit; +} +.elementor-widget-image-carousel .swiper-slide { + text-align: center; +} + +.elementor-image-carousel-wrapper:not(.swiper-container-initialized):not(.swiper-initialized) .swiper-slide { + max-width: calc(100% / var(--e-image-carousel-slides-to-show, 3)); +} + +body.elementor-page .elementor-widget-menu-anchor { + margin-bottom: 0; +} + +.elementor-widget-progress { + text-align: right; +} + +.elementor-progress-wrapper { + position: relative; + background-color: #eeeeee; + color: #ffffff; + height: 100%; + border-radius: 2px; +} + +.elementor-progress-bar { + display: flex; + background-color: #69727D; + width: 0; + font-size: 11px; + height: 30px; + line-height: 30px; + border-radius: 2px; + transition: width 1s ease-in-out; +} + +.elementor-progress-text { + flex-grow: 1; + white-space: nowrap; + text-overflow: ellipsis; + overflow: hidden; + padding-right: 15px; +} + +.elementor-progress-percentage { + padding-left: 15px; +} + +.elementor-widget-progress .elementor-progress-wrapper.progress-info .elementor-progress-bar { + background-color: #5bc0de; +} +.elementor-widget-progress .elementor-progress-wrapper.progress-success .elementor-progress-bar { + background-color: #5cb85c; +} +.elementor-widget-progress .elementor-progress-wrapper.progress-warning .elementor-progress-bar { + background-color: #f0ad4e; +} +.elementor-widget-progress .elementor-progress-wrapper.progress-danger .elementor-progress-bar { + background-color: #d9534f; +} + +.elementor-progress .elementor-title { + display: block; +} + +@media (max-width: 767px) { + .elementor-progress-text { + padding-right: 10px; + } +} +.e-con .elementor-progress-wrapper, +.e-con-inner .elementor-progress-wrapper { + height: initial; +} + +.elementor-widget-social-icons { + /*TODO: This Grid-0 needs to be removed after PRO is Updated */ +} +.elementor-widget-social-icons.elementor-grid-0 .elementor-widget-container, .elementor-widget-social-icons.elementor-grid-tablet-0 .elementor-widget-container, .elementor-widget-social-icons.elementor-grid-mobile-0 .elementor-widget-container { + line-height: 1; + font-size: 0; +} +.elementor-widget-social-icons:not(.elementor-grid-0):not(.elementor-grid-tablet-0):not(.elementor-grid-mobile-0) .elementor-grid { + display: inline-grid; +} +.elementor-widget-social-icons .elementor-grid { + grid-column-gap: var(--grid-column-gap, 5px); + grid-row-gap: var(--grid-row-gap, 5px); + grid-template-columns: var(--grid-template-columns); + justify-content: var(--justify-content, center); + justify-items: var(--justify-content, center); +} + +.elementor-icon.elementor-social-icon { + font-size: var(--icon-size, 25px); + line-height: var(--icon-size, 25px); + width: calc(var(--icon-size, 25px) + 2 * var(--icon-padding, 0.5em)); + height: calc(var(--icon-size, 25px) + 2 * var(--icon-padding, 0.5em)); +} + +.elementor-social-icon { + --e-social-icon-icon-color: #fff; + display: inline-flex; + background-color: #69727D; + align-items: center; + justify-content: center; + text-align: center; + cursor: pointer; +} +.elementor-social-icon i { + color: var(--e-social-icon-icon-color); +} +.elementor-social-icon svg { + fill: var(--e-social-icon-icon-color); +} +.elementor-social-icon:last-child { + margin: 0; +} +.elementor-social-icon:hover { + opacity: 0.9; + color: white; +} +.elementor-social-icon-android { + background-color: #A4C639; +} +.elementor-social-icon-apple { + background-color: #999999; +} +.elementor-social-icon-behance { + background-color: #1769ff; +} +.elementor-social-icon-bitbucket { + background-color: #205081; +} +.elementor-social-icon-codepen { + background-color: #000000; +} +.elementor-social-icon-delicious { + background-color: #3399ff; +} +.elementor-social-icon-deviantart { + background-color: #05cc47; +} +.elementor-social-icon-digg { + background-color: #005be2; +} +.elementor-social-icon-dribbble { + background-color: #ea4c89; +} +.elementor-social-icon-elementor { + background-color: #D30C5C; +} +.elementor-social-icon-envelope { + background-color: #ea4335; +} +.elementor-social-icon-facebook, .elementor-social-icon-facebook-f { + background-color: #3b5998; +} +.elementor-social-icon-flickr { + background-color: #0063dc; +} +.elementor-social-icon-foursquare { + background-color: #2d5be3; +} +.elementor-social-icon-freecodecamp, .elementor-social-icon-free-code-camp { + background-color: #006400; +} +.elementor-social-icon-github { + background-color: #333333; +} +.elementor-social-icon-gitlab { + background-color: #e24329; +} +.elementor-social-icon-globe { + background-color: #69727D; +} +.elementor-social-icon-google-plus, .elementor-social-icon-google-plus-g { + background-color: #dd4b39; +} +.elementor-social-icon-houzz { + background-color: #7ac142; +} +.elementor-social-icon-instagram { + background-color: #262626; +} +.elementor-social-icon-jsfiddle { + background-color: #487AA2; +} +.elementor-social-icon-link { + background-color: #818a91; +} +.elementor-social-icon-linkedin, .elementor-social-icon-linkedin-in { + background-color: #0077b5; +} +.elementor-social-icon-medium { + background-color: #00ab6b; +} +.elementor-social-icon-meetup { + background-color: #ec1c40; +} +.elementor-social-icon-mixcloud { + background-color: #273a4b; +} +.elementor-social-icon-odnoklassniki { + background-color: #F4731C; +} +.elementor-social-icon-pinterest { + background-color: #bd081c; +} +.elementor-social-icon-product-hunt { + background-color: #da552f; +} +.elementor-social-icon-reddit { + background-color: #ff4500; +} +.elementor-social-icon-rss { + background-color: #f26522; +} +.elementor-social-icon-shopping-cart { + background-color: #4CAF50; +} +.elementor-social-icon-skype { + background-color: #00AFF0; +} +.elementor-social-icon-slideshare { + background-color: #0077b5; +} +.elementor-social-icon-snapchat { + background-color: #fffc00; +} +.elementor-social-icon-soundcloud { + background-color: #ff8800; +} +.elementor-social-icon-spotify { + background-color: #2ebd59; +} +.elementor-social-icon-stack-overflow { + background-color: #fe7a15; +} +.elementor-social-icon-steam { + background-color: #00adee; +} +.elementor-social-icon-stumbleupon { + background-color: #EB4924; +} +.elementor-social-icon-telegram { + background-color: #2CA5E0; +} +.elementor-social-icon-threads { + background-color: #000000; +} +.elementor-social-icon-thumb-tack { + background-color: #1aa1d8; +} +.elementor-social-icon-tripadvisor { + background-color: #589442; +} +.elementor-social-icon-tumblr { + background-color: #35465c; +} +.elementor-social-icon-twitch { + background-color: #6441A5; +} +.elementor-social-icon-twitter { + background-color: #1DA1F2; +} +.elementor-social-icon-viber { + background-color: #665cac; +} +.elementor-social-icon-vimeo { + background-color: #1ab7ea; +} +.elementor-social-icon-vk { + background-color: #45668e; +} +.elementor-social-icon-weibo { + background-color: #DD2430; +} +.elementor-social-icon-weixin { + background-color: #31A918; +} +.elementor-social-icon-whatsapp { + background-color: #25d366; +} +.elementor-social-icon-wordpress { + background-color: #21759b; +} +.elementor-social-icon-x-twitter { + background-color: #000000; +} +.elementor-social-icon-xing { + background-color: #026466; +} +.elementor-social-icon-yelp { + background-color: #af0606; +} +.elementor-social-icon-youtube { + background-color: #cd201f; +} +.elementor-social-icon-500px { + background-color: #0099e5; +} + +.elementor-shape-rounded .elementor-icon.elementor-social-icon { + border-radius: 10%; +} + +.elementor-shape-circle .elementor-icon.elementor-social-icon { + border-radius: 50%; +} + +.elementor-column .elementor-spacer-inner { + height: var(--spacer-size); +} + +.e-con { + --container-widget-width: 100%; +} + +.e-con > .elementor-widget-spacer, +.e-con-inner > .elementor-widget-spacer { + width: var(--container-widget-width, var(--spacer-size)); + --align-self: var( --container-widget-align-self, initial ); + --flex-shrink: 0; +} +.e-con > .elementor-widget-spacer > .elementor-widget-container, +.e-con-inner > .elementor-widget-spacer > .elementor-widget-container { + height: 100%; + width: 100%; +} +.e-con > .elementor-widget-spacer > .elementor-widget-container > .elementor-spacer, +.e-con-inner > .elementor-widget-spacer > .elementor-widget-container > .elementor-spacer { + height: 100%; +} +.e-con > .elementor-widget-spacer > .elementor-widget-container > .elementor-spacer > .elementor-spacer-inner, +.e-con-inner > .elementor-widget-spacer > .elementor-widget-container > .elementor-spacer > .elementor-spacer-inner { + height: var(--container-widget-height, var(--spacer-size)); +} +.e-con > .elementor-widget-spacer.elementor-widget-empty, +.e-con-inner > .elementor-widget-spacer.elementor-widget-empty { + position: relative; + min-height: 22px; + min-width: 22px; +} +.e-con > .elementor-widget-spacer.elementor-widget-empty .elementor-widget-empty-icon, +.e-con-inner > .elementor-widget-spacer.elementor-widget-empty .elementor-widget-empty-icon { + position: absolute; + top: 0; + bottom: 0; + left: 0; + right: 0; + margin: auto; + padding: 0; + width: 22px; + height: 22px; +} + +.elementor-star-rating { + color: #CCD6DF; + font-family: eicons; + display: inline-block; +} +.elementor-star-rating i { + display: inline-block; + position: relative; + font-style: normal; + cursor: default; +} +.elementor-star-rating i:before { + content: "\e934"; + display: block; + font-size: inherit; + font-family: inherit; + position: absolute; + overflow: hidden; + color: #f0ad4e; + top: 0; + right: 0; +} +.elementor-star-rating .elementor-star-empty:before { + content: none; +} +.elementor-star-rating .elementor-star-1:before { + width: 10%; +} +.elementor-star-rating .elementor-star-2:before { + width: 20%; +} +.elementor-star-rating .elementor-star-3:before { + width: 30%; +} +.elementor-star-rating .elementor-star-4:before { + width: 40%; +} +.elementor-star-rating .elementor-star-5:before { + width: 50%; +} +.elementor-star-rating .elementor-star-6:before { + width: 60%; +} +.elementor-star-rating .elementor-star-7:before { + width: 70%; +} +.elementor-star-rating .elementor-star-8:before { + width: 80%; +} +.elementor-star-rating .elementor-star-9:before { + width: 90%; +} +.elementor-star-rating__wrapper { + display: flex; + align-items: center; +} +.elementor-star-rating__title { + margin-left: 10px; +} + +.elementor-star-rating--align-right .elementor-star-rating__wrapper { + text-align: right; + justify-content: flex-start; +} +.elementor-star-rating--align-left .elementor-star-rating__wrapper { + text-align: left; + justify-content: flex-end; +} +.elementor-star-rating--align-center .elementor-star-rating__wrapper { + text-align: center; + justify-content: center; +} +.elementor-star-rating--align-justify .elementor-star-rating__title { + margin-left: auto; +} + +@media (max-width: 1024px) { + .elementor-star-rating-tablet--align-right .elementor-star-rating__wrapper { + text-align: right; + justify-content: flex-start; + } + .elementor-star-rating-tablet--align-left .elementor-star-rating__wrapper { + text-align: left; + justify-content: flex-end; + } + .elementor-star-rating-tablet--align-center .elementor-star-rating__wrapper { + text-align: center; + justify-content: center; + } + .elementor-star-rating-tablet--align-justify .elementor-star-rating__title { + margin-left: auto; + } +} +@media (max-width: 767px) { + .elementor-star-rating-mobile--align-right .elementor-star-rating__wrapper { + text-align: right; + justify-content: flex-start; + } + .elementor-star-rating-mobile--align-left .elementor-star-rating__wrapper { + text-align: left; + justify-content: flex-end; + } + .elementor-star-rating-mobile--align-center .elementor-star-rating__wrapper { + text-align: center; + justify-content: center; + } + .elementor-star-rating-mobile--align-justify .elementor-star-rating__title { + margin-left: auto; + } +} +.last-star { + letter-spacing: 0; +} + +.elementor--star-style-star_unicode .elementor-star-rating { + font-family: "Arial", "Helvetica", sans-serif; +} +.elementor--star-style-star_unicode .elementor-star-rating i:not(.elementor-star-empty):before { + content: "★"; +} + +.elementor-widget-tabs.elementor-tabs-view-vertical .elementor-tabs-wrapper { + width: 25%; + flex-shrink: 0; +} +.elementor-widget-tabs.elementor-tabs-view-vertical .elementor-tab-desktop-title.elementor-active { + border-left-style: none; +} +.elementor-widget-tabs.elementor-tabs-view-vertical .elementor-tab-desktop-title.elementor-active:before, .elementor-widget-tabs.elementor-tabs-view-vertical .elementor-tab-desktop-title.elementor-active:after { + height: 999em; + width: 0; + left: 0; + border-left-style: solid; +} +.elementor-widget-tabs.elementor-tabs-view-vertical .elementor-tab-desktop-title.elementor-active:before { + top: 0; + transform: translateY(-100%); +} +.elementor-widget-tabs.elementor-tabs-view-vertical .elementor-tab-desktop-title.elementor-active:after { + top: 100%; +} +.elementor-widget-tabs.elementor-tabs-view-horizontal .elementor-tab-desktop-title { + display: table-cell; +} +.elementor-widget-tabs.elementor-tabs-view-horizontal .elementor-tab-desktop-title.elementor-active { + border-bottom-style: none; +} +.elementor-widget-tabs.elementor-tabs-view-horizontal .elementor-tab-desktop-title.elementor-active:before, .elementor-widget-tabs.elementor-tabs-view-horizontal .elementor-tab-desktop-title.elementor-active:after { + bottom: 0; + height: 0; + width: 999em; + border-bottom-style: solid; +} +.elementor-widget-tabs.elementor-tabs-view-horizontal .elementor-tab-desktop-title.elementor-active:before { + right: 100%; +} +.elementor-widget-tabs.elementor-tabs-view-horizontal .elementor-tab-desktop-title.elementor-active:after { + left: 100%; +} +.elementor-widget-tabs .elementor-tab-title, +.elementor-widget-tabs .elementor-tab-title:before, +.elementor-widget-tabs .elementor-tab-title:after, +.elementor-widget-tabs .elementor-tab-content, +.elementor-widget-tabs .elementor-tabs-content-wrapper { + border: 1px none #D5D8DC; +} +.elementor-widget-tabs .elementor-tabs { + text-align: right; +} +.elementor-widget-tabs .elementor-tabs-wrapper { + overflow: hidden; +} +.elementor-widget-tabs .elementor-tab-title { + cursor: pointer; + outline: var(--focus-outline, none); +} +.elementor-widget-tabs .elementor-tab-desktop-title { + position: relative; + padding: 20px 25px; + font-weight: bold; + line-height: 1; + border: solid transparent; +} +.elementor-widget-tabs .elementor-tab-desktop-title.elementor-active { + border-color: #D5D8DC; +} +.elementor-widget-tabs .elementor-tab-desktop-title.elementor-active:before, .elementor-widget-tabs .elementor-tab-desktop-title.elementor-active:after { + display: block; + content: ""; + position: absolute; +} +.elementor-widget-tabs .elementor-tab-desktop-title:focus-visible { + border: 1px solid #000000; +} +.elementor-widget-tabs .elementor-tab-mobile-title { + padding: 10px 10px; + cursor: pointer; +} +.elementor-widget-tabs .elementor-tab-content { + padding: 20px; + display: none; +} + +@media (max-width: 767px) { + .elementor-tabs .elementor-tab-title, + .elementor-tabs .elementor-tab-content { + border-style: solid; + border-bottom-style: none; + } + .elementor-tabs .elementor-tabs-wrapper { + display: none; + } + .elementor-tabs .elementor-tabs-content-wrapper { + border-bottom-style: solid; + } + .elementor-tabs .elementor-tab-content { + padding: 10px; + } +} +@media (min-width: 768px) { + .elementor-widget-tabs.elementor-tabs-view-vertical .elementor-tabs { + display: flex; + } + .elementor-widget-tabs.elementor-tabs-view-vertical .elementor-tabs-wrapper { + flex-direction: column; + } + .elementor-widget-tabs.elementor-tabs-view-vertical .elementor-tabs-content-wrapper { + flex-grow: 1; + border-style: solid; + border-right-style: none; + } + .elementor-widget-tabs.elementor-tabs-view-horizontal .elementor-tab-content { + border-style: solid; + border-top-style: none; + } + .elementor-widget-tabs.elementor-tabs-alignment-center .elementor-tabs-wrapper, .elementor-widget-tabs.elementor-tabs-alignment-end .elementor-tabs-wrapper, .elementor-widget-tabs.elementor-tabs-alignment-stretch .elementor-tabs-wrapper { + display: flex; + } + .elementor-widget-tabs.elementor-tabs-alignment-center .elementor-tabs-wrapper { + justify-content: center; + } + .elementor-widget-tabs.elementor-tabs-alignment-end .elementor-tabs-wrapper { + justify-content: flex-end; + } + .elementor-widget-tabs.elementor-tabs-alignment-stretch.elementor-tabs-view-horizontal .elementor-tab-title { + width: 100%; + } + .elementor-widget-tabs.elementor-tabs-alignment-stretch.elementor-tabs-view-vertical .elementor-tab-title { + height: 100%; + } + .elementor-tabs .elementor-tab-mobile-title { + display: none; + } +} +.elementor-testimonial-wrapper { + overflow: hidden; + text-align: center; +} +.elementor-testimonial-wrapper .elementor-testimonial-content { + font-size: 1.3em; + margin-bottom: 20px; +} +.elementor-testimonial-wrapper .elementor-testimonial-name { + line-height: 1.5; + display: block; +} +.elementor-testimonial-wrapper .elementor-testimonial-job { + font-size: 0.85em; + display: block; +} +.elementor-testimonial-wrapper .elementor-testimonial-meta { + width: 100%; + line-height: 1; +} +.elementor-testimonial-wrapper .elementor-testimonial-meta-inner { + display: inline-block; +} +.elementor-testimonial-wrapper .elementor-testimonial-meta .elementor-testimonial-details, +.elementor-testimonial-wrapper .elementor-testimonial-meta .elementor-testimonial-image { + display: table-cell; + vertical-align: middle; +} +.elementor-testimonial-wrapper .elementor-testimonial-meta .elementor-testimonial-image img { + width: 60px; + height: 60px; + border-radius: 50%; + -o-object-fit: cover; + object-fit: cover; + max-width: none; +} +.elementor-testimonial-wrapper .elementor-testimonial-meta.elementor-testimonial-image-position-aside .elementor-testimonial-image { + padding-left: 15px; +} +.elementor-testimonial-wrapper .elementor-testimonial-meta.elementor-testimonial-image-position-aside .elementor-testimonial-details { + text-align: right; +} +.elementor-testimonial-wrapper .elementor-testimonial-meta.elementor-testimonial-image-position-top .elementor-testimonial-details, +.elementor-testimonial-wrapper .elementor-testimonial-meta.elementor-testimonial-image-position-top .elementor-testimonial-image { + display: block; +} +.elementor-testimonial-wrapper .elementor-testimonial-meta.elementor-testimonial-image-position-top .elementor-testimonial-image { + margin-bottom: 20px; +} + +.elementor-widget-text-editor.elementor-drop-cap-view-stacked .elementor-drop-cap { + background-color: #69727D; + color: #fff; +} +.elementor-widget-text-editor.elementor-drop-cap-view-framed .elementor-drop-cap { + color: #69727D; + border: 3px solid; + background-color: transparent; +} +.elementor-widget-text-editor:not(.elementor-drop-cap-view-default) .elementor-drop-cap { + margin-top: 8px; +} +.elementor-widget-text-editor:not(.elementor-drop-cap-view-default) .elementor-drop-cap-letter { + width: 1em; + height: 1em; +} +.elementor-widget-text-editor .elementor-drop-cap { + float: right; + text-align: center; + line-height: 1; + font-size: 50px; +} +.elementor-widget-text-editor .elementor-drop-cap-letter { + display: inline-block; +} + +.elementor-toggle { + text-align: right; +} +.elementor-toggle .elementor-tab-title { + font-weight: bold; + line-height: 1; + margin: 0; + padding: 15px; + border-bottom: 1px solid #D5D8DC; + cursor: pointer; + outline: none; +} +.elementor-toggle .elementor-tab-title .elementor-toggle-icon { + display: inline-block; + width: 1em; +} +.elementor-toggle .elementor-tab-title .elementor-toggle-icon svg { + margin-inline-start: -5px; + width: 1em; + height: 1em; +} +.elementor-toggle .elementor-tab-title .elementor-toggle-icon.elementor-toggle-icon-right { + float: right; + text-align: right; +} +.elementor-toggle .elementor-tab-title .elementor-toggle-icon.elementor-toggle-icon-left { + float: left; + text-align: left; +} +.elementor-toggle .elementor-tab-title .elementor-toggle-icon .elementor-toggle-icon-closed { + display: block; +} +.elementor-toggle .elementor-tab-title .elementor-toggle-icon .elementor-toggle-icon-opened { + display: none; +} +.elementor-toggle .elementor-tab-title.elementor-active { + border-bottom: none; +} +.elementor-toggle .elementor-tab-title.elementor-active .elementor-toggle-icon-closed { + display: none; +} +.elementor-toggle .elementor-tab-title.elementor-active .elementor-toggle-icon-opened { + display: block; +} +.elementor-toggle .elementor-tab-content { + padding: 15px; + border-bottom: 1px solid #D5D8DC; + display: none; +} + +@media (max-width: 767px) { + .elementor-toggle .elementor-tab-title { + padding: 12px; + } + .elementor-toggle .elementor-tab-content { + padding: 12px 10px; + } +} +.e-con > .elementor-widget-toggle, +.e-con-inner > .elementor-widget-toggle { + width: var(--container-widget-width); + --flex-grow: var( --container-widget-flex-grow ); +} + +.elementor-widget-video .elementor-widget-container { + overflow: hidden; + transform: translate3d(0, 0, 0); +} +.elementor-widget-video .elementor-wrapper { + aspect-ratio: var(--video-aspect-ratio); +} +.elementor-widget-video .elementor-wrapper iframe, +.elementor-widget-video .elementor-wrapper video { + height: 100%; + width: 100%; + display: flex; + border: none; + background-color: #000000; +} +@supports not (aspect-ratio: 1/1) { + .elementor-widget-video .elementor-wrapper { + position: relative; + overflow: hidden; + height: 0; + padding-bottom: calc(100% / var(--video-aspect-ratio)); + } + .elementor-widget-video .elementor-wrapper iframe, + .elementor-widget-video .elementor-wrapper video { + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + } +} +.elementor-widget-video .elementor-open-inline .elementor-custom-embed-image-overlay { + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + background-size: cover; + background-position: center center; +} +.elementor-widget-video .elementor-custom-embed-image-overlay { + cursor: pointer; + text-align: center; +} +.elementor-widget-video .elementor-custom-embed-image-overlay:hover .elementor-custom-embed-play i { + opacity: 1; +} +.elementor-widget-video .elementor-custom-embed-image-overlay img { + display: block; + width: 100%; + aspect-ratio: var(--video-aspect-ratio); + -o-object-fit: cover; + object-fit: cover; + -o-object-position: center center; + object-position: center center; +} +@supports not (aspect-ratio: 1/1) { + .elementor-widget-video .elementor-custom-embed-image-overlay { + position: relative; + overflow: hidden; + height: 0; + padding-bottom: calc(100% / var(--video-aspect-ratio)); + } + .elementor-widget-video .elementor-custom-embed-image-overlay img { + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + } +} +.elementor-widget-video .e-hosted-video .elementor-video { + -o-object-fit: cover; + object-fit: cover; +} + +.e-con > .elementor-widget-video, +.e-con-inner > .elementor-widget-video { + width: var(--container-widget-width); + --flex-grow: var( --container-widget-flex-grow ); +} + +.elementor-widget-rating { + --e-rating-gap: 0px; + --e-rating-icon-font-size: 16px; + --e-rating-icon-color: #CCD6DF; + --e-rating-icon-marked-color: #f0ad4e; + --e-rating-icon-marked-width: 100%; + --e-rating-justify-content: flex-start; +} +.elementor-widget-rating .e-rating { + display: flex; + justify-content: var(--e-rating-justify-content); +} +.elementor-widget-rating .e-rating-wrapper { + display: flex; + justify-content: inherit; + flex-direction: row; + flex-wrap: wrap; + width: -moz-fit-content; + width: fit-content; + margin-block-end: calc(0px - var(--e-rating-gap)); + margin-inline-end: calc(0px - var(--e-rating-gap)); +} +.elementor-widget-rating .e-rating .e-icon { + position: relative; + margin-block-end: var(--e-rating-gap); + margin-inline-end: var(--e-rating-gap); +} +.elementor-widget-rating .e-rating .e-icon-wrapper.e-icon-marked { + --e-rating-icon-color: var(--e-rating-icon-marked-color); + width: var(--e-rating-icon-marked-width); + position: absolute; + z-index: 1; + height: 100%; + left: 0; + top: 0; + overflow: hidden; +} +.elementor-widget-rating .e-rating .e-icon-wrapper :is(i, svg) { + display: flex; + flex-shrink: 0; +} +.elementor-widget-rating .e-rating .e-icon-wrapper i { + font-size: var(--e-rating-icon-font-size); + color: var(--e-rating-icon-color); +} +.elementor-widget-rating .e-rating .e-icon-wrapper svg { + width: auto; + height: var(--e-rating-icon-font-size); + fill: var(--e-rating-icon-color); +} +/*# sourceMappingURL=frontend-rtl.css.map */ \ No newline at end of file diff --git a/wp-content/plugins/elementor/assets/css/frontend-rtl.min.css b/wp-content/plugins/elementor/assets/css/frontend-rtl.min.css new file mode 100644 index 0000000..c98e2c0 --- /dev/null +++ b/wp-content/plugins/elementor/assets/css/frontend-rtl.min.css @@ -0,0 +1,2 @@ +/*! elementor - v3.20.0 - 26-03-2024 */ +@charset "UTF-8";.dialog-widget-content{background-color:var(--e-a-bg-default);position:absolute;border-radius:3px;box-shadow:2px 8px 23px 3px rgba(0,0,0,.2);overflow:hidden}.dialog-message{line-height:1.5;box-sizing:border-box}.dialog-close-button{cursor:pointer;position:absolute;margin-block-start:15px;left:15px;color:var(--e-a-color-txt);font-size:15px;line-height:1;transition:var(--e-a-transition-hover)}.dialog-close-button:hover{color:var(--e-a-color-txt-hover)}.dialog-prevent-scroll{overflow:hidden;max-height:100vh}.dialog-type-lightbox{position:fixed;height:100%;width:100%;bottom:0;left:0;background-color:rgba(0,0,0,.8);z-index:9999;-webkit-user-select:none;-moz-user-select:none;user-select:none}.elementor-editor-active .elementor-popup-modal{background-color:initial}.dialog-type-alert .dialog-widget-content,.dialog-type-confirm .dialog-widget-content{margin:auto;width:400px;padding:20px}.dialog-type-alert .dialog-header,.dialog-type-confirm .dialog-header{font-size:15px;font-weight:500}.dialog-type-alert .dialog-header:after,.dialog-type-confirm .dialog-header:after{content:"";display:block;border-block-end:var(--e-a-border);padding-block-end:10px;margin-block-end:10px;margin-inline-start:-20px;margin-inline-end:-20px}.dialog-type-alert .dialog-message,.dialog-type-confirm .dialog-message{min-height:50px}.dialog-type-alert .dialog-buttons-wrapper,.dialog-type-confirm .dialog-buttons-wrapper{padding-block-start:10px;display:flex;justify-content:flex-end;gap:15px}.dialog-type-alert .dialog-buttons-wrapper .dialog-button,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button{font-size:12px;font-weight:500;line-height:1.2;padding:8px 16px;outline:none;border:none;border-radius:var(--e-a-border-radius);background-color:var(--e-a-btn-bg);color:var(--e-a-btn-color-invert);transition:var(--e-a-transition-hover)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:hover{border:none}.dialog-type-alert .dialog-buttons-wrapper .dialog-button:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:hover{background-color:var(--e-a-btn-bg-hover);color:var(--e-a-btn-color-invert)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button:active,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:active{background-color:var(--e-a-btn-bg-active)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button:not([disabled]),.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:not([disabled]){cursor:pointer}.dialog-type-alert .dialog-buttons-wrapper .dialog-button:disabled,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:disabled{background-color:var(--e-a-btn-bg-disabled);color:var(--e-a-btn-color-disabled)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button:not(.elementor-button-state) .elementor-state-icon,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:not(.elementor-button-state) .elementor-state-icon{display:none}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt{background:transparent;color:var(--e-a-color-txt)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel:hover,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt:hover{background:var(--e-a-bg-hover);color:var(--e-a-color-txt-hover)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel:disabled,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt:disabled,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel:disabled,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt:disabled{background:transparent;color:var(--e-a-color-txt-disabled)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt-border,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt-border{border:1px solid var(--e-a-color-txt-muted)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-success,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-success,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-success,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-success{background-color:var(--e-a-btn-bg-success)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-success:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-success:hover,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-success:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-success:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-success:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-success:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-success:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-success:hover{background-color:var(--e-a-btn-bg-success-hover)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-take_over,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-take_over,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary{background-color:var(--e-a-btn-bg-primary);color:var(--e-a-btn-color)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok:hover,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-take_over:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-take_over:hover,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-take_over:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-take_over:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary:hover{background-color:var(--e-a-btn-bg-primary-hover);color:var(--e-a-btn-color)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-ok,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-take_over,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary.dialog-cancel,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary.e-btn-txt,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-ok,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-take_over,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary.dialog-cancel,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary.e-btn-txt{background:transparent;color:var(--e-a-color-primary-bold)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over:hover,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel:hover,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-ok:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-ok:hover,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-take_over:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-take_over:hover,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary.dialog-cancel:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary.dialog-cancel:hover,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary.e-btn-txt:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary.e-btn-txt:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-ok:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-ok:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-take_over:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-take_over:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary.dialog-cancel:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary.dialog-cancel:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary.e-btn-txt:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary.e-btn-txt:hover{background:var(--e-a-bg-primary)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-accent,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.go-pro,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-accent,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.go-pro{background-color:var(--e-a-btn-bg-accent)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-accent:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-accent:hover,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.go-pro:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.go-pro:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-accent:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-accent:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.go-pro:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.go-pro:hover{background-color:var(--e-a-btn-bg-accent-hover)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-accent:active,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.go-pro:active,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-accent:active,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.go-pro:active{background-color:var(--e-a-btn-bg-accent-active)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-info,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-info,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-info,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-info{background-color:var(--e-a-btn-bg-info)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-info:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-info:hover,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-info:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-info:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-info:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-info:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-info:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-info:hover{background-color:var(--e-a-btn-bg-info-hover)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-warning,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-warning,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-warning,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-warning{background-color:var(--e-a-btn-bg-warning)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-warning:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-warning:hover,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-warning:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-warning:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-warning:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-warning:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-warning:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-warning:hover{background-color:var(--e-a-btn-bg-warning-hover)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-danger,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-danger,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-danger,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-danger{background-color:var(--e-a-btn-bg-danger)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-danger:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-danger:hover,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-danger:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-danger:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-danger:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-danger:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-danger:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-danger:hover{background-color:var(--e-a-btn-bg-danger-hover)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button i,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button i{margin-inline-end:5px}.dialog-type-alert .dialog-buttons-wrapper .dialog-button:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button:hover,.dialog-type-alert .dialog-buttons-wrapper .dialog-button:visited,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:visited{color:initial}.flatpickr-calendar{width:280px}.flatpickr-calendar .flatpickr-current-month span.cur-month{font-weight:300}.flatpickr-calendar .dayContainer{width:280px;min-width:280px;max-width:280px}.flatpickr-calendar .flatpickr-days{width:280px}.flatpickr-calendar .flatpickr-day{max-width:37px;height:37px;line-height:37px}.elementor-hidden{display:none}.elementor-screen-only,.screen-reader-text,.screen-reader-text span,.ui-helper-hidden-accessible{position:absolute;top:-10000em;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.elementor-clearfix:after{content:"";display:block;clear:both;width:0;height:0}.e-logo-wrapper{background:var(--e-a-bg-logo);display:inline-block;padding:.75em;border-radius:50%;line-height:1}.e-logo-wrapper i{color:var(--e-a-color-logo);font-size:1em}.elementor *,.elementor :after,.elementor :before{box-sizing:border-box}.elementor a{box-shadow:none;text-decoration:none}.elementor hr{margin:0;background-color:transparent}.elementor img{height:auto;max-width:100%;border:none;border-radius:0;box-shadow:none}.elementor .elementor-widget:not(.elementor-widget-text-editor):not(.elementor-widget-theme-post-content) figure{margin:0}.elementor embed,.elementor iframe,.elementor object,.elementor video{max-width:100%;width:100%;margin:0;line-height:1;border:none}.elementor .elementor-background,.elementor .elementor-background-holder,.elementor .elementor-background-video-container{height:100%;width:100%;top:0;left:0;position:absolute;overflow:hidden;z-index:0;direction:ltr}.elementor .elementor-background-video-container{transition:opacity 1s;pointer-events:none}.elementor .elementor-background-video-container.elementor-loading{opacity:0}.elementor .elementor-background-video-embed{max-width:none}.elementor .elementor-background-video,.elementor .elementor-background-video-embed,.elementor .elementor-background-video-hosted{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.elementor .elementor-background-video{max-width:none}.elementor .elementor-html5-video{-o-object-fit:cover;object-fit:cover}.elementor .elementor-background-overlay{height:100%;width:100%;top:0;left:0;position:absolute}.elementor .elementor-background-slideshow{position:absolute;width:100%;height:100%;z-index:0;top:0;right:0}.elementor .elementor-background-slideshow__slide__image{width:100%;height:100%;background-position:50%;background-size:cover}.e-con-inner>.elementor-element.elementor-absolute,.e-con>.elementor-element.elementor-absolute,.elementor-widget-wrap>.elementor-element.elementor-absolute{position:absolute}.e-con-inner>.elementor-element.elementor-fixed,.e-con>.elementor-element.elementor-fixed,.elementor-widget-wrap>.elementor-element.elementor-fixed{position:fixed}.elementor-widget-wrap .elementor-element.elementor-widget__width-auto,.elementor-widget-wrap .elementor-element.elementor-widget__width-initial{max-width:100%}@media (max-width:1024px){.elementor-widget-wrap .elementor-element.elementor-widget-tablet__width-auto,.elementor-widget-wrap .elementor-element.elementor-widget-tablet__width-initial{max-width:100%}}@media (max-width:767px){.elementor-widget-wrap .elementor-element.elementor-widget-mobile__width-auto,.elementor-widget-wrap .elementor-element.elementor-widget-mobile__width-initial{max-width:100%}}.elementor-element{--flex-direction:initial;--flex-wrap:initial;--justify-content:initial;--align-items:initial;--align-content:initial;--gap:initial;--flex-basis:initial;--flex-grow:initial;--flex-shrink:initial;--order:initial;--align-self:initial;flex-basis:var(--flex-basis);flex-grow:var(--flex-grow);flex-shrink:var(--flex-shrink);order:var(--order);align-self:var(--align-self)}.elementor-element.elementor-absolute,.elementor-element.elementor-fixed{z-index:1}.elementor-element:where(.e-con-full,.elementor-widget){flex-direction:var(--flex-direction);flex-wrap:var(--flex-wrap);justify-content:var(--justify-content);align-items:var(--align-items);align-content:var(--align-content);gap:var(--gap)}.elementor-invisible{visibility:hidden}.elementor-align-center{text-align:center}.elementor-align-center .elementor-button{width:auto}.elementor-align-right{text-align:right}.elementor-align-right .elementor-button{width:auto}.elementor-align-left{text-align:left}.elementor-align-left .elementor-button{width:auto}.elementor-align-justify .elementor-button{width:100%}.elementor-custom-embed-play{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.elementor-custom-embed-play i{font-size:100px;color:#fff;text-shadow:1px 0 6px rgba(0,0,0,.3)}.elementor-custom-embed-play svg{height:100px;width:100px;fill:#fff;filter:drop-shadow(1px 0 6px rgba(0,0,0,.3))}.elementor-custom-embed-play i,.elementor-custom-embed-play svg{opacity:.8;transition:all .5s}.elementor-custom-embed-play.elementor-playing i{font-family:eicons}.elementor-custom-embed-play.elementor-playing i:before{content:"\e8fb"}.elementor-custom-embed-play.elementor-playing i,.elementor-custom-embed-play.elementor-playing svg{animation:eicon-spin 2s linear infinite}.elementor-tag{display:inline-flex}.elementor-ken-burns{transition-property:transform;transition-duration:10s;transition-timing-function:linear}.elementor-ken-burns--out{transform:scale(1.3)}.elementor-ken-burns--active{transition-duration:20s}.elementor-ken-burns--active.elementor-ken-burns--out{transform:scale(1)}.elementor-ken-burns--active.elementor-ken-burns--in{transform:scale(1.3)}@media (min-width:-1){.elementor-widescreen-align-center{text-align:center}.elementor-widescreen-align-center .elementor-button{width:auto}.elementor-widescreen-align-right{text-align:right}.elementor-widescreen-align-right .elementor-button{width:auto}.elementor-widescreen-align-left{text-align:left}.elementor-widescreen-align-left .elementor-button{width:auto}.elementor-widescreen-align-justify .elementor-button{width:100%}}@media (max-width:-1){.elementor-laptop-align-center{text-align:center}.elementor-laptop-align-center .elementor-button{width:auto}.elementor-laptop-align-right{text-align:right}.elementor-laptop-align-right .elementor-button{width:auto}.elementor-laptop-align-left{text-align:left}.elementor-laptop-align-left .elementor-button{width:auto}.elementor-laptop-align-justify .elementor-button{width:100%}}@media (max-width:-1){.elementor-tablet_extra-align-center{text-align:center}.elementor-tablet_extra-align-center .elementor-button{width:auto}.elementor-tablet_extra-align-right{text-align:right}.elementor-tablet_extra-align-right .elementor-button{width:auto}.elementor-tablet_extra-align-left{text-align:left}.elementor-tablet_extra-align-left .elementor-button{width:auto}.elementor-tablet_extra-align-justify .elementor-button{width:100%}}@media (max-width:1024px){.elementor-tablet-align-center{text-align:center}.elementor-tablet-align-center .elementor-button{width:auto}.elementor-tablet-align-right{text-align:right}.elementor-tablet-align-right .elementor-button{width:auto}.elementor-tablet-align-left{text-align:left}.elementor-tablet-align-left .elementor-button{width:auto}.elementor-tablet-align-justify .elementor-button{width:100%}}@media (max-width:-1){.elementor-mobile_extra-align-center{text-align:center}.elementor-mobile_extra-align-center .elementor-button{width:auto}.elementor-mobile_extra-align-right{text-align:right}.elementor-mobile_extra-align-right .elementor-button{width:auto}.elementor-mobile_extra-align-left{text-align:left}.elementor-mobile_extra-align-left .elementor-button{width:auto}.elementor-mobile_extra-align-justify .elementor-button{width:100%}}@media (max-width:767px){.elementor-mobile-align-center{text-align:center}.elementor-mobile-align-center .elementor-button{width:auto}.elementor-mobile-align-right{text-align:right}.elementor-mobile-align-right .elementor-button{width:auto}.elementor-mobile-align-left{text-align:left}.elementor-mobile-align-left .elementor-button{width:auto}.elementor-mobile-align-justify .elementor-button{width:100%}}:root{--page-title-display:block}.elementor-page-title,h1.entry-title{display:var(--page-title-display)}@keyframes eicon-spin{0%{transform:rotate(0deg)}to{transform:rotate(359deg)}}.eicon-animation-spin{animation:eicon-spin 2s linear infinite}.elementor-section{position:relative}.elementor-section .elementor-container{display:flex;margin-right:auto;margin-left:auto;position:relative}@media (max-width:1024px){.elementor-section .elementor-container{flex-wrap:wrap}}.elementor-section.elementor-section-boxed>.elementor-container{max-width:1140px}.elementor-section.elementor-section-stretched{position:relative;width:100%}.elementor-section.elementor-section-items-top>.elementor-container{align-items:flex-start}.elementor-section.elementor-section-items-middle>.elementor-container{align-items:center}.elementor-section.elementor-section-items-bottom>.elementor-container{align-items:flex-end}@media (min-width:768px){.elementor-section.elementor-section-height-full{height:100vh}.elementor-section.elementor-section-height-full>.elementor-container{height:100%}}.elementor-bc-flex-widget .elementor-section-content-top>.elementor-container>.elementor-column>.elementor-widget-wrap{align-items:flex-start}.elementor-bc-flex-widget .elementor-section-content-middle>.elementor-container>.elementor-column>.elementor-widget-wrap{align-items:center}.elementor-bc-flex-widget .elementor-section-content-bottom>.elementor-container>.elementor-column>.elementor-widget-wrap{align-items:flex-end}.elementor-row{width:100%;display:flex}@media (max-width:1024px){.elementor-row{flex-wrap:wrap}}.elementor-widget-wrap{position:relative;width:100%;flex-wrap:wrap;align-content:flex-start}.elementor:not(.elementor-bc-flex-widget) .elementor-widget-wrap{display:flex}.elementor-widget-wrap>.elementor-element{width:100%}.elementor-widget-wrap.e-swiper-container{width:calc(100% - (var(--e-column-margin-left, 0px) + var(--e-column-margin-right, 0px)))}.elementor-widget{position:relative}.elementor-widget:not(:last-child){margin-bottom:20px}.elementor-widget:not(:last-child).elementor-absolute,.elementor-widget:not(:last-child).elementor-widget__width-auto,.elementor-widget:not(:last-child).elementor-widget__width-initial{margin-bottom:0}.elementor-column{position:relative;min-height:1px;display:flex}.elementor-column-wrap{width:100%;position:relative;display:flex}.elementor-column-gap-narrow>.elementor-column>.elementor-element-populated{padding:5px}.elementor-column-gap-default>.elementor-column>.elementor-element-populated{padding:10px}.elementor-column-gap-extended>.elementor-column>.elementor-element-populated{padding:15px}.elementor-column-gap-wide>.elementor-column>.elementor-element-populated{padding:20px}.elementor-column-gap-wider>.elementor-column>.elementor-element-populated{padding:30px}.elementor-inner-section .elementor-column-gap-no .elementor-element-populated{padding:0}@media (min-width:768px){.elementor-column.elementor-col-10,.elementor-column[data-col="10"]{width:10%}.elementor-column.elementor-col-11,.elementor-column[data-col="11"]{width:11.111%}.elementor-column.elementor-col-12,.elementor-column[data-col="12"]{width:12.5%}.elementor-column.elementor-col-14,.elementor-column[data-col="14"]{width:14.285%}.elementor-column.elementor-col-16,.elementor-column[data-col="16"]{width:16.666%}.elementor-column.elementor-col-20,.elementor-column[data-col="20"]{width:20%}.elementor-column.elementor-col-25,.elementor-column[data-col="25"]{width:25%}.elementor-column.elementor-col-30,.elementor-column[data-col="30"]{width:30%}.elementor-column.elementor-col-33,.elementor-column[data-col="33"]{width:33.333%}.elementor-column.elementor-col-40,.elementor-column[data-col="40"]{width:40%}.elementor-column.elementor-col-50,.elementor-column[data-col="50"]{width:50%}.elementor-column.elementor-col-60,.elementor-column[data-col="60"]{width:60%}.elementor-column.elementor-col-66,.elementor-column[data-col="66"]{width:66.666%}.elementor-column.elementor-col-70,.elementor-column[data-col="70"]{width:70%}.elementor-column.elementor-col-75,.elementor-column[data-col="75"]{width:75%}.elementor-column.elementor-col-80,.elementor-column[data-col="80"]{width:80%}.elementor-column.elementor-col-83,.elementor-column[data-col="83"]{width:83.333%}.elementor-column.elementor-col-90,.elementor-column[data-col="90"]{width:90%}.elementor-column.elementor-col-100,.elementor-column[data-col="100"]{width:100%}}@media (max-width:479px){.elementor-column.elementor-xs-10{width:10%}.elementor-column.elementor-xs-11{width:11.111%}.elementor-column.elementor-xs-12{width:12.5%}.elementor-column.elementor-xs-14{width:14.285%}.elementor-column.elementor-xs-16{width:16.666%}.elementor-column.elementor-xs-20{width:20%}.elementor-column.elementor-xs-25{width:25%}.elementor-column.elementor-xs-30{width:30%}.elementor-column.elementor-xs-33{width:33.333%}.elementor-column.elementor-xs-40{width:40%}.elementor-column.elementor-xs-50{width:50%}.elementor-column.elementor-xs-60{width:60%}.elementor-column.elementor-xs-66{width:66.666%}.elementor-column.elementor-xs-70{width:70%}.elementor-column.elementor-xs-75{width:75%}.elementor-column.elementor-xs-80{width:80%}.elementor-column.elementor-xs-83{width:83.333%}.elementor-column.elementor-xs-90{width:90%}.elementor-column.elementor-xs-100{width:100%}}@media (max-width:767px){.elementor-column.elementor-sm-10{width:10%}.elementor-column.elementor-sm-11{width:11.111%}.elementor-column.elementor-sm-12{width:12.5%}.elementor-column.elementor-sm-14{width:14.285%}.elementor-column.elementor-sm-16{width:16.666%}.elementor-column.elementor-sm-20{width:20%}.elementor-column.elementor-sm-25{width:25%}.elementor-column.elementor-sm-30{width:30%}.elementor-column.elementor-sm-33{width:33.333%}.elementor-column.elementor-sm-40{width:40%}.elementor-column.elementor-sm-50{width:50%}.elementor-column.elementor-sm-60{width:60%}.elementor-column.elementor-sm-66{width:66.666%}.elementor-column.elementor-sm-70{width:70%}.elementor-column.elementor-sm-75{width:75%}.elementor-column.elementor-sm-80{width:80%}.elementor-column.elementor-sm-83{width:83.333%}.elementor-column.elementor-sm-90{width:90%}.elementor-column.elementor-sm-100{width:100%}}@media (min-width:768px) and (max-width:1024px){.elementor-column.elementor-md-10{width:10%}.elementor-column.elementor-md-11{width:11.111%}.elementor-column.elementor-md-12{width:12.5%}.elementor-column.elementor-md-14{width:14.285%}.elementor-column.elementor-md-16{width:16.666%}.elementor-column.elementor-md-20{width:20%}.elementor-column.elementor-md-25{width:25%}.elementor-column.elementor-md-30{width:30%}.elementor-column.elementor-md-33{width:33.333%}.elementor-column.elementor-md-40{width:40%}.elementor-column.elementor-md-50{width:50%}.elementor-column.elementor-md-60{width:60%}.elementor-column.elementor-md-66{width:66.666%}.elementor-column.elementor-md-70{width:70%}.elementor-column.elementor-md-75{width:75%}.elementor-column.elementor-md-80{width:80%}.elementor-column.elementor-md-83{width:83.333%}.elementor-column.elementor-md-90{width:90%}.elementor-column.elementor-md-100{width:100%}}@media (min-width:-1){.elementor-reverse-widescreen>.elementor-container>:first-child{order:10}.elementor-reverse-widescreen>.elementor-container>:nth-child(2){order:9}.elementor-reverse-widescreen>.elementor-container>:nth-child(3){order:8}.elementor-reverse-widescreen>.elementor-container>:nth-child(4){order:7}.elementor-reverse-widescreen>.elementor-container>:nth-child(5){order:6}.elementor-reverse-widescreen>.elementor-container>:nth-child(6){order:5}.elementor-reverse-widescreen>.elementor-container>:nth-child(7){order:4}.elementor-reverse-widescreen>.elementor-container>:nth-child(8){order:3}.elementor-reverse-widescreen>.elementor-container>:nth-child(9){order:2}.elementor-reverse-widescreen>.elementor-container>:nth-child(10){order:1}}@media (min-width:1025px) and (max-width:-1){.elementor-reverse-laptop>.elementor-container>:first-child{order:10}.elementor-reverse-laptop>.elementor-container>:nth-child(2){order:9}.elementor-reverse-laptop>.elementor-container>:nth-child(3){order:8}.elementor-reverse-laptop>.elementor-container>:nth-child(4){order:7}.elementor-reverse-laptop>.elementor-container>:nth-child(5){order:6}.elementor-reverse-laptop>.elementor-container>:nth-child(6){order:5}.elementor-reverse-laptop>.elementor-container>:nth-child(7){order:4}.elementor-reverse-laptop>.elementor-container>:nth-child(8){order:3}.elementor-reverse-laptop>.elementor-container>:nth-child(9){order:2}.elementor-reverse-laptop>.elementor-container>:nth-child(10){order:1}}@media (min-width:-1) and (max-width:-1){.elementor-reverse-laptop>.elementor-container>:first-child{order:10}.elementor-reverse-laptop>.elementor-container>:nth-child(2){order:9}.elementor-reverse-laptop>.elementor-container>:nth-child(3){order:8}.elementor-reverse-laptop>.elementor-container>:nth-child(4){order:7}.elementor-reverse-laptop>.elementor-container>:nth-child(5){order:6}.elementor-reverse-laptop>.elementor-container>:nth-child(6){order:5}.elementor-reverse-laptop>.elementor-container>:nth-child(7){order:4}.elementor-reverse-laptop>.elementor-container>:nth-child(8){order:3}.elementor-reverse-laptop>.elementor-container>:nth-child(9){order:2}.elementor-reverse-laptop>.elementor-container>:nth-child(10){order:1}}@media (min-width:1025px) and (max-width:-1){.elementor-reverse-laptop>.elementor-container>:first-child,.elementor-reverse-laptop>.elementor-container>:nth-child(2),.elementor-reverse-laptop>.elementor-container>:nth-child(3),.elementor-reverse-laptop>.elementor-container>:nth-child(4),.elementor-reverse-laptop>.elementor-container>:nth-child(5),.elementor-reverse-laptop>.elementor-container>:nth-child(6),.elementor-reverse-laptop>.elementor-container>:nth-child(7),.elementor-reverse-laptop>.elementor-container>:nth-child(8),.elementor-reverse-laptop>.elementor-container>:nth-child(9),.elementor-reverse-laptop>.elementor-container>:nth-child(10){order:0}.elementor-reverse-tablet_extra>.elementor-container>:first-child{order:10}.elementor-reverse-tablet_extra>.elementor-container>:nth-child(2){order:9}.elementor-reverse-tablet_extra>.elementor-container>:nth-child(3){order:8}.elementor-reverse-tablet_extra>.elementor-container>:nth-child(4){order:7}.elementor-reverse-tablet_extra>.elementor-container>:nth-child(5){order:6}.elementor-reverse-tablet_extra>.elementor-container>:nth-child(6){order:5}.elementor-reverse-tablet_extra>.elementor-container>:nth-child(7){order:4}.elementor-reverse-tablet_extra>.elementor-container>:nth-child(8){order:3}.elementor-reverse-tablet_extra>.elementor-container>:nth-child(9){order:2}.elementor-reverse-tablet_extra>.elementor-container>:nth-child(10){order:1}}@media (min-width:768px) and (max-width:1024px){.elementor-reverse-tablet>.elementor-container>:first-child{order:10}.elementor-reverse-tablet>.elementor-container>:nth-child(2){order:9}.elementor-reverse-tablet>.elementor-container>:nth-child(3){order:8}.elementor-reverse-tablet>.elementor-container>:nth-child(4){order:7}.elementor-reverse-tablet>.elementor-container>:nth-child(5){order:6}.elementor-reverse-tablet>.elementor-container>:nth-child(6){order:5}.elementor-reverse-tablet>.elementor-container>:nth-child(7){order:4}.elementor-reverse-tablet>.elementor-container>:nth-child(8){order:3}.elementor-reverse-tablet>.elementor-container>:nth-child(9){order:2}.elementor-reverse-tablet>.elementor-container>:nth-child(10){order:1}}@media (min-width:-1) and (max-width:1024px){.elementor-reverse-tablet>.elementor-container>:first-child{order:10}.elementor-reverse-tablet>.elementor-container>:nth-child(2){order:9}.elementor-reverse-tablet>.elementor-container>:nth-child(3){order:8}.elementor-reverse-tablet>.elementor-container>:nth-child(4){order:7}.elementor-reverse-tablet>.elementor-container>:nth-child(5){order:6}.elementor-reverse-tablet>.elementor-container>:nth-child(6){order:5}.elementor-reverse-tablet>.elementor-container>:nth-child(7){order:4}.elementor-reverse-tablet>.elementor-container>:nth-child(8){order:3}.elementor-reverse-tablet>.elementor-container>:nth-child(9){order:2}.elementor-reverse-tablet>.elementor-container>:nth-child(10){order:1}}@media (min-width:768px) and (max-width:-1){.elementor-reverse-tablet>.elementor-container>:first-child,.elementor-reverse-tablet>.elementor-container>:nth-child(2),.elementor-reverse-tablet>.elementor-container>:nth-child(3),.elementor-reverse-tablet>.elementor-container>:nth-child(4),.elementor-reverse-tablet>.elementor-container>:nth-child(5),.elementor-reverse-tablet>.elementor-container>:nth-child(6),.elementor-reverse-tablet>.elementor-container>:nth-child(7),.elementor-reverse-tablet>.elementor-container>:nth-child(8),.elementor-reverse-tablet>.elementor-container>:nth-child(9),.elementor-reverse-tablet>.elementor-container>:nth-child(10){order:0}.elementor-reverse-mobile_extra>.elementor-container>:first-child{order:10}.elementor-reverse-mobile_extra>.elementor-container>:nth-child(2){order:9}.elementor-reverse-mobile_extra>.elementor-container>:nth-child(3){order:8}.elementor-reverse-mobile_extra>.elementor-container>:nth-child(4){order:7}.elementor-reverse-mobile_extra>.elementor-container>:nth-child(5){order:6}.elementor-reverse-mobile_extra>.elementor-container>:nth-child(6){order:5}.elementor-reverse-mobile_extra>.elementor-container>:nth-child(7){order:4}.elementor-reverse-mobile_extra>.elementor-container>:nth-child(8){order:3}.elementor-reverse-mobile_extra>.elementor-container>:nth-child(9){order:2}.elementor-reverse-mobile_extra>.elementor-container>:nth-child(10){order:1}}@media (max-width:767px){.elementor-reverse-mobile>.elementor-container>:first-child{order:10}.elementor-reverse-mobile>.elementor-container>:nth-child(2){order:9}.elementor-reverse-mobile>.elementor-container>:nth-child(3){order:8}.elementor-reverse-mobile>.elementor-container>:nth-child(4){order:7}.elementor-reverse-mobile>.elementor-container>:nth-child(5){order:6}.elementor-reverse-mobile>.elementor-container>:nth-child(6){order:5}.elementor-reverse-mobile>.elementor-container>:nth-child(7){order:4}.elementor-reverse-mobile>.elementor-container>:nth-child(8){order:3}.elementor-reverse-mobile>.elementor-container>:nth-child(9){order:2}.elementor-reverse-mobile>.elementor-container>:nth-child(10){order:1}.elementor-column{width:100%}}ul.elementor-icon-list-items.elementor-inline-items{display:flex;flex-wrap:wrap}ul.elementor-icon-list-items.elementor-inline-items .elementor-inline-item{word-break:break-word}.elementor-grid{display:grid;grid-column-gap:var(--grid-column-gap);grid-row-gap:var(--grid-row-gap)}.elementor-grid .elementor-grid-item{min-width:0}.elementor-grid-0 .elementor-grid{display:inline-block;width:100%;word-spacing:var(--grid-column-gap);margin-bottom:calc(-1 * var(--grid-row-gap))}.elementor-grid-0 .elementor-grid .elementor-grid-item{display:inline-block;margin-bottom:var(--grid-row-gap);word-break:break-word}.elementor-grid-1 .elementor-grid{grid-template-columns:repeat(1,1fr)}.elementor-grid-2 .elementor-grid{grid-template-columns:repeat(2,1fr)}.elementor-grid-3 .elementor-grid{grid-template-columns:repeat(3,1fr)}.elementor-grid-4 .elementor-grid{grid-template-columns:repeat(4,1fr)}.elementor-grid-5 .elementor-grid{grid-template-columns:repeat(5,1fr)}.elementor-grid-6 .elementor-grid{grid-template-columns:repeat(6,1fr)}.elementor-grid-7 .elementor-grid{grid-template-columns:repeat(7,1fr)}.elementor-grid-8 .elementor-grid{grid-template-columns:repeat(8,1fr)}.elementor-grid-9 .elementor-grid{grid-template-columns:repeat(9,1fr)}.elementor-grid-10 .elementor-grid{grid-template-columns:repeat(10,1fr)}.elementor-grid-11 .elementor-grid{grid-template-columns:repeat(11,1fr)}.elementor-grid-12 .elementor-grid{grid-template-columns:repeat(12,1fr)}@media (min-width:-1){.elementor-grid-widescreen-0 .elementor-grid{display:inline-block;width:100%;word-spacing:var(--grid-column-gap);margin-bottom:calc(-1 * var(--grid-row-gap))}.elementor-grid-widescreen-0 .elementor-grid .elementor-grid-item{display:inline-block;margin-bottom:var(--grid-row-gap);word-break:break-word}.elementor-grid-widescreen-1 .elementor-grid{grid-template-columns:repeat(1,1fr)}.elementor-grid-widescreen-2 .elementor-grid{grid-template-columns:repeat(2,1fr)}.elementor-grid-widescreen-3 .elementor-grid{grid-template-columns:repeat(3,1fr)}.elementor-grid-widescreen-4 .elementor-grid{grid-template-columns:repeat(4,1fr)}.elementor-grid-widescreen-5 .elementor-grid{grid-template-columns:repeat(5,1fr)}.elementor-grid-widescreen-6 .elementor-grid{grid-template-columns:repeat(6,1fr)}.elementor-grid-widescreen-7 .elementor-grid{grid-template-columns:repeat(7,1fr)}.elementor-grid-widescreen-8 .elementor-grid{grid-template-columns:repeat(8,1fr)}.elementor-grid-widescreen-9 .elementor-grid{grid-template-columns:repeat(9,1fr)}.elementor-grid-widescreen-10 .elementor-grid{grid-template-columns:repeat(10,1fr)}.elementor-grid-widescreen-11 .elementor-grid{grid-template-columns:repeat(11,1fr)}.elementor-grid-widescreen-12 .elementor-grid{grid-template-columns:repeat(12,1fr)}}@media (max-width:-1){.elementor-grid-laptop-0 .elementor-grid{display:inline-block;width:100%;word-spacing:var(--grid-column-gap);margin-bottom:calc(-1 * var(--grid-row-gap))}.elementor-grid-laptop-0 .elementor-grid .elementor-grid-item{display:inline-block;margin-bottom:var(--grid-row-gap);word-break:break-word}.elementor-grid-laptop-1 .elementor-grid{grid-template-columns:repeat(1,1fr)}.elementor-grid-laptop-2 .elementor-grid{grid-template-columns:repeat(2,1fr)}.elementor-grid-laptop-3 .elementor-grid{grid-template-columns:repeat(3,1fr)}.elementor-grid-laptop-4 .elementor-grid{grid-template-columns:repeat(4,1fr)}.elementor-grid-laptop-5 .elementor-grid{grid-template-columns:repeat(5,1fr)}.elementor-grid-laptop-6 .elementor-grid{grid-template-columns:repeat(6,1fr)}.elementor-grid-laptop-7 .elementor-grid{grid-template-columns:repeat(7,1fr)}.elementor-grid-laptop-8 .elementor-grid{grid-template-columns:repeat(8,1fr)}.elementor-grid-laptop-9 .elementor-grid{grid-template-columns:repeat(9,1fr)}.elementor-grid-laptop-10 .elementor-grid{grid-template-columns:repeat(10,1fr)}.elementor-grid-laptop-11 .elementor-grid{grid-template-columns:repeat(11,1fr)}.elementor-grid-laptop-12 .elementor-grid{grid-template-columns:repeat(12,1fr)}}@media (max-width:-1){.elementor-grid-tablet_extra-0 .elementor-grid{display:inline-block;width:100%;word-spacing:var(--grid-column-gap);margin-bottom:calc(-1 * var(--grid-row-gap))}.elementor-grid-tablet_extra-0 .elementor-grid .elementor-grid-item{display:inline-block;margin-bottom:var(--grid-row-gap);word-break:break-word}.elementor-grid-tablet_extra-1 .elementor-grid{grid-template-columns:repeat(1,1fr)}.elementor-grid-tablet_extra-2 .elementor-grid{grid-template-columns:repeat(2,1fr)}.elementor-grid-tablet_extra-3 .elementor-grid{grid-template-columns:repeat(3,1fr)}.elementor-grid-tablet_extra-4 .elementor-grid{grid-template-columns:repeat(4,1fr)}.elementor-grid-tablet_extra-5 .elementor-grid{grid-template-columns:repeat(5,1fr)}.elementor-grid-tablet_extra-6 .elementor-grid{grid-template-columns:repeat(6,1fr)}.elementor-grid-tablet_extra-7 .elementor-grid{grid-template-columns:repeat(7,1fr)}.elementor-grid-tablet_extra-8 .elementor-grid{grid-template-columns:repeat(8,1fr)}.elementor-grid-tablet_extra-9 .elementor-grid{grid-template-columns:repeat(9,1fr)}.elementor-grid-tablet_extra-10 .elementor-grid{grid-template-columns:repeat(10,1fr)}.elementor-grid-tablet_extra-11 .elementor-grid{grid-template-columns:repeat(11,1fr)}.elementor-grid-tablet_extra-12 .elementor-grid{grid-template-columns:repeat(12,1fr)}}@media (max-width:1024px){.elementor-grid-tablet-0 .elementor-grid{display:inline-block;width:100%;word-spacing:var(--grid-column-gap);margin-bottom:calc(-1 * var(--grid-row-gap))}.elementor-grid-tablet-0 .elementor-grid .elementor-grid-item{display:inline-block;margin-bottom:var(--grid-row-gap);word-break:break-word}.elementor-grid-tablet-1 .elementor-grid{grid-template-columns:repeat(1,1fr)}.elementor-grid-tablet-2 .elementor-grid{grid-template-columns:repeat(2,1fr)}.elementor-grid-tablet-3 .elementor-grid{grid-template-columns:repeat(3,1fr)}.elementor-grid-tablet-4 .elementor-grid{grid-template-columns:repeat(4,1fr)}.elementor-grid-tablet-5 .elementor-grid{grid-template-columns:repeat(5,1fr)}.elementor-grid-tablet-6 .elementor-grid{grid-template-columns:repeat(6,1fr)}.elementor-grid-tablet-7 .elementor-grid{grid-template-columns:repeat(7,1fr)}.elementor-grid-tablet-8 .elementor-grid{grid-template-columns:repeat(8,1fr)}.elementor-grid-tablet-9 .elementor-grid{grid-template-columns:repeat(9,1fr)}.elementor-grid-tablet-10 .elementor-grid{grid-template-columns:repeat(10,1fr)}.elementor-grid-tablet-11 .elementor-grid{grid-template-columns:repeat(11,1fr)}.elementor-grid-tablet-12 .elementor-grid{grid-template-columns:repeat(12,1fr)}}@media (max-width:-1){.elementor-grid-mobile_extra-0 .elementor-grid{display:inline-block;width:100%;word-spacing:var(--grid-column-gap);margin-bottom:calc(-1 * var(--grid-row-gap))}.elementor-grid-mobile_extra-0 .elementor-grid .elementor-grid-item{display:inline-block;margin-bottom:var(--grid-row-gap);word-break:break-word}.elementor-grid-mobile_extra-1 .elementor-grid{grid-template-columns:repeat(1,1fr)}.elementor-grid-mobile_extra-2 .elementor-grid{grid-template-columns:repeat(2,1fr)}.elementor-grid-mobile_extra-3 .elementor-grid{grid-template-columns:repeat(3,1fr)}.elementor-grid-mobile_extra-4 .elementor-grid{grid-template-columns:repeat(4,1fr)}.elementor-grid-mobile_extra-5 .elementor-grid{grid-template-columns:repeat(5,1fr)}.elementor-grid-mobile_extra-6 .elementor-grid{grid-template-columns:repeat(6,1fr)}.elementor-grid-mobile_extra-7 .elementor-grid{grid-template-columns:repeat(7,1fr)}.elementor-grid-mobile_extra-8 .elementor-grid{grid-template-columns:repeat(8,1fr)}.elementor-grid-mobile_extra-9 .elementor-grid{grid-template-columns:repeat(9,1fr)}.elementor-grid-mobile_extra-10 .elementor-grid{grid-template-columns:repeat(10,1fr)}.elementor-grid-mobile_extra-11 .elementor-grid{grid-template-columns:repeat(11,1fr)}.elementor-grid-mobile_extra-12 .elementor-grid{grid-template-columns:repeat(12,1fr)}}@media (max-width:767px){.elementor-grid-mobile-0 .elementor-grid{display:inline-block;width:100%;word-spacing:var(--grid-column-gap);margin-bottom:calc(-1 * var(--grid-row-gap))}.elementor-grid-mobile-0 .elementor-grid .elementor-grid-item{display:inline-block;margin-bottom:var(--grid-row-gap);word-break:break-word}.elementor-grid-mobile-1 .elementor-grid{grid-template-columns:repeat(1,1fr)}.elementor-grid-mobile-2 .elementor-grid{grid-template-columns:repeat(2,1fr)}.elementor-grid-mobile-3 .elementor-grid{grid-template-columns:repeat(3,1fr)}.elementor-grid-mobile-4 .elementor-grid{grid-template-columns:repeat(4,1fr)}.elementor-grid-mobile-5 .elementor-grid{grid-template-columns:repeat(5,1fr)}.elementor-grid-mobile-6 .elementor-grid{grid-template-columns:repeat(6,1fr)}.elementor-grid-mobile-7 .elementor-grid{grid-template-columns:repeat(7,1fr)}.elementor-grid-mobile-8 .elementor-grid{grid-template-columns:repeat(8,1fr)}.elementor-grid-mobile-9 .elementor-grid{grid-template-columns:repeat(9,1fr)}.elementor-grid-mobile-10 .elementor-grid{grid-template-columns:repeat(10,1fr)}.elementor-grid-mobile-11 .elementor-grid{grid-template-columns:repeat(11,1fr)}.elementor-grid-mobile-12 .elementor-grid{grid-template-columns:repeat(12,1fr)}}@media (min-width:1025px){#elementor-device-mode:after{content:"desktop"}}@media (min-width:-1){#elementor-device-mode:after{content:"widescreen"}}@media (max-width:-1){#elementor-device-mode:after{content:"laptop";content:"tablet_extra"}}@media (max-width:1024px){#elementor-device-mode:after{content:"tablet"}}@media (max-width:-1){#elementor-device-mode:after{content:"mobile_extra"}}@media (max-width:767px){#elementor-device-mode:after{content:"mobile"}}.e-con{--border-radius:0;--border-block-start-width:0px;--border-inline-end-width:0px;--border-block-end-width:0px;--border-inline-start-width:0px;--border-style:initial;--border-color:initial;--container-widget-height:initial;--container-widget-flex-grow:0;--container-widget-align-self:initial;--content-width:min(100%,var(--container-max-width,1140px));--width:100%;--min-height:initial;--height:auto;--text-align:initial;--margin-block-start:0px;--margin-inline-end:0px;--margin-block-end:0px;--margin-inline-start:0px;--padding-block-start:var(--container-default-padding-block-start,10px);--padding-inline-end:var(--container-default-padding-inline-end,10px);--padding-block-end:var(--container-default-padding-block-end,10px);--padding-inline-start:var(--container-default-padding-inline-start,10px);--position:relative;--z-index:revert;--overflow:visible;--gap:var(--widgets-spacing,20px);--overlay-mix-blend-mode:initial;--overlay-opacity:1;--overlay-transition:0.3s;--e-con-grid-template-columns:repeat(3,1fr);--e-con-grid-template-rows:repeat(2,1fr);position:var(--position);width:var(--width);min-width:0;min-height:var(--min-height);height:var(--height);border-radius:var(--border-radius);margin-block-start:var(--bc-margin-block-start,var(--margin-block-start));margin-inline-end:var(--bc-margin-inline-end,var(--margin-inline-end));margin-block-end:var(--bc-margin-block-end,var(--margin-block-end));margin-inline-start:var(--bc-margin-inline-start,var(--margin-inline-start));padding-inline-start:var(--bc-padding-inline-start,var(--padding-inline-start));padding-inline-end:var(--bc-padding-inline-end,var(--padding-inline-end));z-index:var(--z-index);overflow:var(--overflow);transition:background var(--background-transition,.3s),border var(--border-transition,.3s),box-shadow var(--border-transition,.3s),transform var(--e-con-transform-transition-duration,.4s)}.e-con.e-flex{--flex-direction:column;--flex-basis:auto;--flex-grow:0;--flex-shrink:1;flex:var(--flex-grow) var(--flex-shrink) var(--flex-basis)}.e-con-full,.e-con>.e-con-inner{text-align:var(--text-align);padding-block-start:var(--bc-padding-block-start,var(--padding-block-start));padding-block-end:var(--bc-padding-block-end,var(--padding-block-end))}.e-con-full.e-flex,.e-con.e-flex>.e-con-inner{flex-direction:var(--flex-direction)}.e-con,.e-con>.e-con-inner{display:var(--display)}.e-con.e-grid{--grid-justify-content:start;--grid-align-content:start;--grid-auto-flow:row}.e-con.e-grid,.e-con.e-grid>.e-con-inner{grid-template-columns:var(--e-con-grid-template-columns);grid-template-rows:var(--e-con-grid-template-rows);justify-content:var(--grid-justify-content);align-content:var(--grid-align-content);grid-auto-flow:var(--grid-auto-flow);justify-items:var(--justify-items);align-items:var(--align-items)}.e-con-boxed.e-flex{flex-direction:column;flex-wrap:nowrap;justify-content:normal;align-items:normal;align-content:normal}.e-con-boxed.e-grid{justify-items:legacy;grid-template-columns:1fr;grid-template-rows:1fr}.e-con-boxed{text-align:initial;gap:initial}.e-con.e-flex>.e-con-inner{flex-wrap:var(--flex-wrap);justify-content:var(--justify-content);align-items:var(--align-items);align-content:var(--align-content);flex-basis:auto;flex-grow:1;flex-shrink:1;align-self:auto}.e-con.e-grid>.e-con-inner{justify-items:var(--justify-items);align-items:var(--align-items)}.e-con>.e-con-inner{gap:var(--gap);width:100%;max-width:var(--content-width);margin:0 auto;padding-inline-start:0;padding-inline-end:0;height:100%}:is(.elementor-section-wrap,[data-elementor-id])>.e-con{--margin-inline-end:auto;--margin-inline-start:auto;max-width:min(100%,var(--width))}.e-con .elementor-widget.elementor-widget{margin-block-end:0}.e-con:before,.e-con>.elementor-background-slideshow:before,.e-con>.elementor-motion-effects-container>.elementor-motion-effects-layer:before,:is(.e-con,.e-con>.e-con-inner)>.elementor-background-video-container:before{content:var(--background-overlay);display:block;position:absolute;mix-blend-mode:var(--overlay-mix-blend-mode);opacity:var(--overlay-opacity);transition:var(--overlay-transition,.3s);border-radius:var(--border-radius);border-style:var(--border-style);border-color:var(--border-color);border-block-start-width:var(--border-block-start-width);border-inline-end-width:var(--border-inline-end-width);border-block-end-width:var(--border-block-end-width);border-inline-start-width:var(--border-inline-start-width);top:calc(0px - var(--border-block-start-width));left:calc(0px - var(--border-inline-start-width));width:max(100% + var(--border-inline-end-width) + var(--border-inline-start-width),100%);height:max(100% + var(--border-block-start-width) + var(--border-block-end-width),100%)}.e-con:before{transition:background var(--overlay-transition,.3s),border-radius var(--border-transition,.3s),opacity var(--overlay-transition,.3s)}.e-con>.elementor-background-slideshow,:is(.e-con,.e-con>.e-con-inner)>.elementor-background-video-container{border-radius:var(--border-radius);border-style:var(--border-style);border-color:var(--border-color);border-block-start-width:var(--border-block-start-width);border-inline-end-width:var(--border-inline-end-width);border-block-end-width:var(--border-block-end-width);border-inline-start-width:var(--border-inline-start-width);top:calc(0px - var(--border-block-start-width));left:calc(0px - var(--border-inline-start-width));width:max(100% + var(--border-inline-end-width) + var(--border-inline-start-width),100%);height:max(100% + var(--border-block-start-width) + var(--border-block-end-width),100%)}@media (max-width:767px){:is(.e-con,.e-con>.e-con-inner)>.elementor-background-video-container.elementor-hidden-phone{display:none}}:is(.e-con,.e-con>.e-con-inner)>.elementor-background-video-container:before{z-index:1}:is(.e-con,.e-con>.e-con-inner)>.elementor-background-slideshow:before{z-index:2}.e-con .elementor-widget{min-width:0}.e-con .elementor-widget-empty,.e-con .elementor-widget-google_maps,.e-con .elementor-widget-video,.e-con .elementor-widget.e-widget-swiper{width:100%}.e-con>.e-con-inner>.elementor-widget>.elementor-widget-container,.e-con>.elementor-widget>.elementor-widget-container{height:100%}.e-con.e-con>.e-con-inner>.elementor-widget,.elementor.elementor .e-con>.elementor-widget{max-width:100%}@media (max-width:767px){.e-con.e-flex{--width:100%;--flex-wrap:wrap}}.e-con{--bc-margin-block-start:var(--margin-top);--bc-margin-block-end:var(--margin-bottom);--bc-margin-inline-start:var(--margin-left);--bc-margin-inline-end:var(--margin-right);--bc-padding-block-start:var(--padding-top);--bc-padding-block-end:var(--padding-bottom);--bc-padding-inline-start:var(--padding-left);--bc-padding-inline-end:var(--padding-right)}[dir=rtl] .e-con{--bc-margin-inline-start:var(--margin-right);--bc-margin-inline-end:var(--margin-left);--bc-padding-inline-start:var(--padding-right);--bc-padding-inline-end:var(--padding-left)}.elementor-form-fields-wrapper{display:flex;flex-wrap:wrap}.elementor-form-fields-wrapper.elementor-labels-above .elementor-field-group .elementor-field-subgroup,.elementor-form-fields-wrapper.elementor-labels-above .elementor-field-group>.elementor-select-wrapper,.elementor-form-fields-wrapper.elementor-labels-above .elementor-field-group>input,.elementor-form-fields-wrapper.elementor-labels-above .elementor-field-group>textarea{flex-basis:100%;max-width:100%}.elementor-form-fields-wrapper.elementor-labels-inline>.elementor-field-group .elementor-select-wrapper,.elementor-form-fields-wrapper.elementor-labels-inline>.elementor-field-group>input{flex-grow:1}.elementor-field-group{flex-wrap:wrap;align-items:center}.elementor-field-group.elementor-field-type-submit{align-items:flex-end}.elementor-field-group .elementor-field-textual{width:100%;max-width:100%;border:1px solid #69727d;background-color:transparent;color:#1f2124;vertical-align:middle;flex-grow:1}.elementor-field-group .elementor-field-textual:focus{box-shadow:inset 0 0 0 1px rgba(0,0,0,.1);outline:0}.elementor-field-group .elementor-field-textual::-moz-placeholder{color:inherit;font-family:inherit;opacity:.6}.elementor-field-group .elementor-field-textual::placeholder{color:inherit;font-family:inherit;opacity:.6}.elementor-field-group .elementor-select-wrapper{display:flex;position:relative;width:100%}.elementor-field-group .elementor-select-wrapper select{-webkit-appearance:none;-moz-appearance:none;appearance:none;color:inherit;font-size:inherit;font-family:inherit;font-weight:inherit;font-style:inherit;text-transform:inherit;letter-spacing:inherit;line-height:inherit;flex-basis:100%;padding-left:20px}.elementor-field-group .elementor-select-wrapper:before{content:"\e92a";font-family:eicons;font-size:15px;position:absolute;top:50%;transform:translateY(-50%);left:10px;pointer-events:none;text-shadow:0 0 3px rgba(0,0,0,.3)}.elementor-field-group.elementor-field-type-select-multiple .elementor-select-wrapper:before{content:""}.elementor-field-subgroup{display:flex;flex-wrap:wrap}.elementor-field-subgroup .elementor-field-option label{display:inline-block}.elementor-field-subgroup.elementor-subgroup-inline .elementor-field-option{padding-left:10px}.elementor-field-subgroup:not(.elementor-subgroup-inline) .elementor-field-option{flex-basis:100%}.elementor-field-type-acceptance .elementor-field-subgroup .elementor-field-option input,.elementor-field-type-acceptance .elementor-field-subgroup .elementor-field-option label,.elementor-field-type-checkbox .elementor-field-subgroup .elementor-field-option input,.elementor-field-type-checkbox .elementor-field-subgroup .elementor-field-option label,.elementor-field-type-radio .elementor-field-subgroup .elementor-field-option input,.elementor-field-type-radio .elementor-field-subgroup .elementor-field-option label{display:inline}.elementor-field-label{cursor:pointer}.elementor-mark-required .elementor-field-label:after{content:"*";color:red;padding-right:.2em}.elementor-field-textual{line-height:1.4;font-size:15px;min-height:40px;padding:5px 14px;border-radius:3px}.elementor-field-textual.elementor-size-xs{font-size:13px;min-height:33px;padding:4px 12px;border-radius:2px}.elementor-field-textual.elementor-size-md{font-size:16px;min-height:47px;padding:6px 16px;border-radius:4px}.elementor-field-textual.elementor-size-lg{font-size:18px;min-height:59px;padding:7px 20px;border-radius:5px}.elementor-field-textual.elementor-size-xl{font-size:20px;min-height:72px;padding:8px 24px;border-radius:6px}.elementor-button-align-stretch .elementor-field-type-submit:not(.e-form__buttons__wrapper) .elementor-button{flex-basis:100%}.elementor-button-align-stretch .e-form__buttons__wrapper{flex-basis:50%;flex-grow:1}.elementor-button-align-stretch .e-form__buttons__wrapper__button{flex-basis:100%}.elementor-button-align-center .e-form__buttons,.elementor-button-align-center .elementor-field-type-submit{justify-content:center}.elementor-button-align-start .e-form__buttons,.elementor-button-align-start .elementor-field-type-submit{justify-content:flex-end}.elementor-button-align-end .e-form__buttons,.elementor-button-align-end .elementor-field-type-submit{justify-content:flex-start}.elementor-button-align-center .elementor-field-type-submit:not(.e-form__buttons__wrapper) .elementor-button,.elementor-button-align-end .elementor-field-type-submit:not(.e-form__buttons__wrapper) .elementor-button,.elementor-button-align-start .elementor-field-type-submit:not(.e-form__buttons__wrapper) .elementor-button{flex-basis:auto}.elementor-button-align-center .e-form__buttons__wrapper,.elementor-button-align-end .e-form__buttons__wrapper,.elementor-button-align-start .e-form__buttons__wrapper{flex-grow:0}.elementor-button-align-center .e-form__buttons__wrapper,.elementor-button-align-center .e-form__buttons__wrapper__button,.elementor-button-align-end .e-form__buttons__wrapper,.elementor-button-align-end .e-form__buttons__wrapper__button,.elementor-button-align-start .e-form__buttons__wrapper,.elementor-button-align-start .e-form__buttons__wrapper__button{flex-basis:auto}@media screen and (max-width:1024px){.elementor-tablet-button-align-stretch .elementor-field-type-submit:not(.e-form__buttons__wrapper) .elementor-button{flex-basis:100%}.elementor-tablet-button-align-stretch .e-form__buttons__wrapper{flex-basis:50%;flex-grow:1}.elementor-tablet-button-align-stretch .e-form__buttons__wrapper__button{flex-basis:100%}.elementor-tablet-button-align-center .e-form__buttons,.elementor-tablet-button-align-center .elementor-field-type-submit{justify-content:center}.elementor-tablet-button-align-start .e-form__buttons,.elementor-tablet-button-align-start .elementor-field-type-submit{justify-content:flex-end}.elementor-tablet-button-align-end .e-form__buttons,.elementor-tablet-button-align-end .elementor-field-type-submit{justify-content:flex-start}.elementor-tablet-button-align-center .elementor-field-type-submit:not(.e-form__buttons__wrapper) .elementor-button,.elementor-tablet-button-align-end .elementor-field-type-submit:not(.e-form__buttons__wrapper) .elementor-button,.elementor-tablet-button-align-start .elementor-field-type-submit:not(.e-form__buttons__wrapper) .elementor-button{flex-basis:auto}.elementor-tablet-button-align-center .e-form__buttons__wrapper,.elementor-tablet-button-align-end .e-form__buttons__wrapper,.elementor-tablet-button-align-start .e-form__buttons__wrapper{flex-grow:0}.elementor-tablet-button-align-center .e-form__buttons__wrapper,.elementor-tablet-button-align-center .e-form__buttons__wrapper__button,.elementor-tablet-button-align-end .e-form__buttons__wrapper,.elementor-tablet-button-align-end .e-form__buttons__wrapper__button,.elementor-tablet-button-align-start .e-form__buttons__wrapper,.elementor-tablet-button-align-start .e-form__buttons__wrapper__button{flex-basis:auto}}@media screen and (max-width:767px){.elementor-mobile-button-align-stretch .elementor-field-type-submit:not(.e-form__buttons__wrapper) .elementor-button{flex-basis:100%}.elementor-mobile-button-align-stretch .e-form__buttons__wrapper{flex-basis:50%;flex-grow:1}.elementor-mobile-button-align-stretch .e-form__buttons__wrapper__button{flex-basis:100%}.elementor-mobile-button-align-center .e-form__buttons,.elementor-mobile-button-align-center .elementor-field-type-submit{justify-content:center}.elementor-mobile-button-align-start .e-form__buttons,.elementor-mobile-button-align-start .elementor-field-type-submit{justify-content:flex-end}.elementor-mobile-button-align-end .e-form__buttons,.elementor-mobile-button-align-end .elementor-field-type-submit{justify-content:flex-start}.elementor-mobile-button-align-center .elementor-field-type-submit:not(.e-form__buttons__wrapper) .elementor-button,.elementor-mobile-button-align-end .elementor-field-type-submit:not(.e-form__buttons__wrapper) .elementor-button,.elementor-mobile-button-align-start .elementor-field-type-submit:not(.e-form__buttons__wrapper) .elementor-button{flex-basis:auto}.elementor-mobile-button-align-center .e-form__buttons__wrapper,.elementor-mobile-button-align-end .e-form__buttons__wrapper,.elementor-mobile-button-align-start .e-form__buttons__wrapper{flex-grow:0}.elementor-mobile-button-align-center .e-form__buttons__wrapper,.elementor-mobile-button-align-center .e-form__buttons__wrapper__button,.elementor-mobile-button-align-end .e-form__buttons__wrapper,.elementor-mobile-button-align-end .e-form__buttons__wrapper__button,.elementor-mobile-button-align-start .e-form__buttons__wrapper,.elementor-mobile-button-align-start .e-form__buttons__wrapper__button{flex-basis:auto}}.elementor-error .elementor-field{border-color:#d9534f}.elementor-error .help-inline{color:#d9534f;font-size:.9em}.elementor-message{margin:10px 0;font-size:1em;line-height:1}.elementor-message:before{content:"\e90e";display:inline-block;font-family:eicons;font-weight:400;font-style:normal;vertical-align:middle;margin-left:5px}.elementor-message.elementor-message-danger{color:#d9534f}.elementor-message.elementor-message-danger:before{content:"\e87f"}.elementor-message.form-message-success{color:#5cb85c}.elementor-form .elementor-button{padding-top:0;padding-bottom:0;border:none}.elementor-form .elementor-button>span{display:flex;justify-content:center}.elementor-form .elementor-button.elementor-size-xs{min-height:33px}.elementor-form .elementor-button.elementor-size-sm{min-height:40px}.elementor-form .elementor-button.elementor-size-md{min-height:47px}.elementor-form .elementor-button.elementor-size-lg{min-height:59px}.elementor-form .elementor-button.elementor-size-xl{min-height:72px}.elementor-element .elementor-widget-container{transition:background .3s,border .3s,border-radius .3s,box-shadow .3s,transform var(--e-transform-transition-duration,.4s)}.elementor-button{display:inline-block;line-height:1;background-color:#69727d;font-size:15px;padding:12px 24px;border-radius:3px;color:#fff;fill:#fff;text-align:center;transition:all .3s}.elementor-button:focus,.elementor-button:hover,.elementor-button:visited{color:#fff}.elementor-button-content-wrapper{display:flex;justify-content:center}.elementor-button-icon{flex-grow:0;order:5}.elementor-button-icon svg{width:1em;height:auto}.elementor-button-icon .e-font-icon-svg{height:1em}.elementor-button-text{flex-grow:1;order:10;display:inline-block}.elementor-button.elementor-size-xs{font-size:13px;padding:10px 20px;border-radius:2px}.elementor-button.elementor-size-md{font-size:16px;padding:15px 30px;border-radius:4px}.elementor-button.elementor-size-lg{font-size:18px;padding:20px 40px;border-radius:5px}.elementor-button.elementor-size-xl{font-size:20px;padding:25px 50px;border-radius:6px}.elementor-button .elementor-align-icon-right{margin-left:5px;order:5}.elementor-button .elementor-align-icon-left{margin-right:5px;order:15}.elementor-button span{text-decoration:inherit}.elementor-element.elementor-button-info .elementor-button{background-color:#5bc0de}.elementor-element.elementor-button-success .elementor-button{background-color:#5cb85c}.elementor-element.elementor-button-warning .elementor-button{background-color:#f0ad4e}.elementor-element.elementor-button-danger .elementor-button{background-color:#d9534f}.elementor-widget-button .elementor-button .elementor-button-info{background-color:#5bc0de}.elementor-widget-button .elementor-button .elementor-button-success{background-color:#5cb85c}.elementor-widget-button .elementor-button .elementor-button-warning{background-color:#f0ad4e}.elementor-widget-button .elementor-button .elementor-button-danger{background-color:#d9534f}.elementor-tab-title a{color:inherit}.elementor-view-stacked .elementor-icon{padding:.5em;background-color:#69727d;color:#fff;fill:#fff}.elementor-view-framed .elementor-icon{padding:.5em;color:#69727d;border:3px solid #69727d;background-color:transparent}.elementor-icon{display:inline-block;line-height:1;transition:all .3s;color:#69727d;font-size:50px;text-align:center}.elementor-icon:hover{color:#69727d}.elementor-icon i,.elementor-icon svg{width:1em;height:1em;position:relative;display:block}.elementor-icon i:before,.elementor-icon svg:before{position:absolute;left:50%;transform:translateX(-50%)}.elementor-icon i.fad{width:auto}.elementor-shape-circle .elementor-icon{border-radius:50%}.e-transform .elementor-widget-container{transform:perspective(var(--e-transform-perspective,0)) rotate(var(--e-transform-rotateZ,0)) rotateX(var(--e-transform-rotateX,0)) rotateY(var(--e-transform-rotateY,0)) translate(var(--e-transform-translate,0)) translateX(var(--e-transform-translateX,0)) translateY(var(--e-transform-translateY,0)) scaleX(calc(var(--e-transform-flipX, 1) * var(--e-transform-scaleX, var(--e-transform-scale, 1)))) scaleY(calc(var(--e-transform-flipY, 1) * var(--e-transform-scaleY, var(--e-transform-scale, 1)))) skewX(var(--e-transform-skewX,0)) skewY(var(--e-transform-skewY,0));transform-origin:var(--e-transform-origin-y) var(--e-transform-origin-x)}.e-con.e-transform{transform:perspective(var(--e-con-transform-perspective,0)) rotate(var(--e-con-transform-rotateZ,0)) rotateX(var(--e-con-transform-rotateX,0)) rotateY(var(--e-con-transform-rotateY,0)) translate(var(--e-con-transform-translate,0)) translateX(var(--e-con-transform-translateX,0)) translateY(var(--e-con-transform-translateY,0)) scaleX(calc(var(--e-con-transform-flipX, 1) * var(--e-con-transform-scaleX, var(--e-con-transform-scale, 1)))) scaleY(calc(var(--e-con-transform-flipY, 1) * var(--e-con-transform-scaleY, var(--e-con-transform-scale, 1)))) skewX(var(--e-con-transform-skewX,0)) skewY(var(--e-con-transform-skewY,0));transform-origin:var(--e-con-transform-origin-y) var(--e-con-transform-origin-x)}.elementor-element,.elementor-lightbox{--swiper-theme-color:#000;--swiper-navigation-size:44px;--swiper-pagination-bullet-size:6px;--swiper-pagination-bullet-horizontal-gap:6px}.elementor-element .swiper-container .swiper-slide figure,.elementor-element .swiper .swiper-slide figure,.elementor-lightbox .swiper-container .swiper-slide figure,.elementor-lightbox .swiper .swiper-slide figure{line-height:0}.elementor-element .swiper-container .elementor-lightbox-content-source,.elementor-element .swiper .elementor-lightbox-content-source,.elementor-lightbox .swiper-container .elementor-lightbox-content-source,.elementor-lightbox .swiper .elementor-lightbox-content-source{display:none}.elementor-element .swiper-container .elementor-swiper-button,.elementor-element .swiper-container~.elementor-swiper-button,.elementor-element .swiper .elementor-swiper-button,.elementor-element .swiper~.elementor-swiper-button,.elementor-lightbox .swiper-container .elementor-swiper-button,.elementor-lightbox .swiper-container~.elementor-swiper-button,.elementor-lightbox .swiper .elementor-swiper-button,.elementor-lightbox .swiper~.elementor-swiper-button{position:absolute;display:inline-flex;z-index:1;cursor:pointer;font-size:25px;color:hsla(0,0%,93.3%,.9);top:50%;transform:translateY(-50%)}.elementor-element .swiper-container .elementor-swiper-button svg,.elementor-element .swiper-container~.elementor-swiper-button svg,.elementor-element .swiper .elementor-swiper-button svg,.elementor-element .swiper~.elementor-swiper-button svg,.elementor-lightbox .swiper-container .elementor-swiper-button svg,.elementor-lightbox .swiper-container~.elementor-swiper-button svg,.elementor-lightbox .swiper .elementor-swiper-button svg,.elementor-lightbox .swiper~.elementor-swiper-button svg{fill:hsla(0,0%,93.3%,.9);height:1em;width:1em}.elementor-element .swiper-container .elementor-swiper-button-prev,.elementor-element .swiper-container~.elementor-swiper-button-prev,.elementor-element .swiper .elementor-swiper-button-prev,.elementor-element .swiper~.elementor-swiper-button-prev,.elementor-lightbox .swiper-container .elementor-swiper-button-prev,.elementor-lightbox .swiper-container~.elementor-swiper-button-prev,.elementor-lightbox .swiper .elementor-swiper-button-prev,.elementor-lightbox .swiper~.elementor-swiper-button-prev{left:10px}.elementor-element .swiper-container .elementor-swiper-button-next,.elementor-element .swiper-container~.elementor-swiper-button-next,.elementor-element .swiper .elementor-swiper-button-next,.elementor-element .swiper~.elementor-swiper-button-next,.elementor-lightbox .swiper-container .elementor-swiper-button-next,.elementor-lightbox .swiper-container~.elementor-swiper-button-next,.elementor-lightbox .swiper .elementor-swiper-button-next,.elementor-lightbox .swiper~.elementor-swiper-button-next{right:10px}.elementor-element .swiper-container .elementor-swiper-button.swiper-button-disabled,.elementor-element .swiper-container~.elementor-swiper-button.swiper-button-disabled,.elementor-element .swiper .elementor-swiper-button.swiper-button-disabled,.elementor-element .swiper~.elementor-swiper-button.swiper-button-disabled,.elementor-lightbox .swiper-container .elementor-swiper-button.swiper-button-disabled,.elementor-lightbox .swiper-container~.elementor-swiper-button.swiper-button-disabled,.elementor-lightbox .swiper .elementor-swiper-button.swiper-button-disabled,.elementor-lightbox .swiper~.elementor-swiper-button.swiper-button-disabled{opacity:.3}.elementor-element .swiper-container .swiper-image-stretch .swiper-slide .swiper-slide-image,.elementor-element .swiper .swiper-image-stretch .swiper-slide .swiper-slide-image,.elementor-lightbox .swiper-container .swiper-image-stretch .swiper-slide .swiper-slide-image,.elementor-lightbox .swiper .swiper-image-stretch .swiper-slide .swiper-slide-image{width:100%}.elementor-element .swiper-container .swiper-horizontal>.swiper-pagination-bullets,.elementor-element .swiper-container .swiper-pagination-bullets.swiper-pagination-horizontal,.elementor-element .swiper-container .swiper-pagination-custom,.elementor-element .swiper-container .swiper-pagination-fraction,.elementor-element .swiper-container~.swiper-pagination-bullets.swiper-pagination-horizontal,.elementor-element .swiper-container~.swiper-pagination-custom,.elementor-element .swiper-container~.swiper-pagination-fraction,.elementor-element .swiper .swiper-horizontal>.swiper-pagination-bullets,.elementor-element .swiper .swiper-pagination-bullets.swiper-pagination-horizontal,.elementor-element .swiper .swiper-pagination-custom,.elementor-element .swiper .swiper-pagination-fraction,.elementor-element .swiper~.swiper-pagination-bullets.swiper-pagination-horizontal,.elementor-element .swiper~.swiper-pagination-custom,.elementor-element .swiper~.swiper-pagination-fraction,.elementor-lightbox .swiper-container .swiper-horizontal>.swiper-pagination-bullets,.elementor-lightbox .swiper-container .swiper-pagination-bullets.swiper-pagination-horizontal,.elementor-lightbox .swiper-container .swiper-pagination-custom,.elementor-lightbox .swiper-container .swiper-pagination-fraction,.elementor-lightbox .swiper-container~.swiper-pagination-bullets.swiper-pagination-horizontal,.elementor-lightbox .swiper-container~.swiper-pagination-custom,.elementor-lightbox .swiper-container~.swiper-pagination-fraction,.elementor-lightbox .swiper .swiper-horizontal>.swiper-pagination-bullets,.elementor-lightbox .swiper .swiper-pagination-bullets.swiper-pagination-horizontal,.elementor-lightbox .swiper .swiper-pagination-custom,.elementor-lightbox .swiper .swiper-pagination-fraction,.elementor-lightbox .swiper~.swiper-pagination-bullets.swiper-pagination-horizontal,.elementor-lightbox .swiper~.swiper-pagination-custom,.elementor-lightbox .swiper~.swiper-pagination-fraction{bottom:5px}.elementor-element .swiper-container.swiper-cube .elementor-swiper-button,.elementor-element .swiper-container.swiper-cube~.elementor-swiper-button,.elementor-element .swiper.swiper-cube .elementor-swiper-button,.elementor-element .swiper.swiper-cube~.elementor-swiper-button,.elementor-lightbox .swiper-container.swiper-cube .elementor-swiper-button,.elementor-lightbox .swiper-container.swiper-cube~.elementor-swiper-button,.elementor-lightbox .swiper.swiper-cube .elementor-swiper-button,.elementor-lightbox .swiper.swiper-cube~.elementor-swiper-button{transform:translate3d(0,-50%,1px)}.elementor-element :where(.swiper-container-horizontal)~.swiper-pagination-bullets,.elementor-lightbox :where(.swiper-container-horizontal)~.swiper-pagination-bullets{bottom:5px;left:0;width:100%}.elementor-element :where(.swiper-container-horizontal)~.swiper-pagination-bullets .swiper-pagination-bullet,.elementor-lightbox :where(.swiper-container-horizontal)~.swiper-pagination-bullets .swiper-pagination-bullet{margin:0 var(--swiper-pagination-bullet-horizontal-gap,4px)}.elementor-element :where(.swiper-container-horizontal)~.swiper-pagination-progressbar,.elementor-lightbox :where(.swiper-container-horizontal)~.swiper-pagination-progressbar{width:100%;height:4px;left:0;top:0}.elementor-element.elementor-pagination-position-outside .swiper,.elementor-element.elementor-pagination-position-outside .swiper-container,.elementor-lightbox.elementor-pagination-position-outside .swiper,.elementor-lightbox.elementor-pagination-position-outside .swiper-container{padding-bottom:30px}.elementor-element.elementor-pagination-position-outside .swiper-container .elementor-swiper-button,.elementor-element.elementor-pagination-position-outside .swiper-container~.elementor-swiper-button,.elementor-element.elementor-pagination-position-outside .swiper .elementor-swiper-button,.elementor-element.elementor-pagination-position-outside .swiper~.elementor-swiper-button,.elementor-lightbox.elementor-pagination-position-outside .swiper-container .elementor-swiper-button,.elementor-lightbox.elementor-pagination-position-outside .swiper-container~.elementor-swiper-button,.elementor-lightbox.elementor-pagination-position-outside .swiper .elementor-swiper-button,.elementor-lightbox.elementor-pagination-position-outside .swiper~.elementor-swiper-button{top:calc(50% - 30px / 2)}.elementor-element .elementor-swiper,.elementor-lightbox .elementor-swiper{position:relative}.elementor-element .elementor-main-swiper,.elementor-lightbox .elementor-main-swiper{position:static}.elementor-element.elementor-arrows-position-outside .swiper,.elementor-element.elementor-arrows-position-outside .swiper-container,.elementor-lightbox.elementor-arrows-position-outside .swiper,.elementor-lightbox.elementor-arrows-position-outside .swiper-container{width:calc(100% - 60px)}.elementor-element.elementor-arrows-position-outside .swiper-container .elementor-swiper-button-prev,.elementor-element.elementor-arrows-position-outside .swiper-container~.elementor-swiper-button-prev,.elementor-element.elementor-arrows-position-outside .swiper .elementor-swiper-button-prev,.elementor-element.elementor-arrows-position-outside .swiper~.elementor-swiper-button-prev,.elementor-lightbox.elementor-arrows-position-outside .swiper-container .elementor-swiper-button-prev,.elementor-lightbox.elementor-arrows-position-outside .swiper-container~.elementor-swiper-button-prev,.elementor-lightbox.elementor-arrows-position-outside .swiper .elementor-swiper-button-prev,.elementor-lightbox.elementor-arrows-position-outside .swiper~.elementor-swiper-button-prev{left:0}.elementor-element.elementor-arrows-position-outside .swiper-container .elementor-swiper-button-next,.elementor-element.elementor-arrows-position-outside .swiper-container~.elementor-swiper-button-next,.elementor-element.elementor-arrows-position-outside .swiper .elementor-swiper-button-next,.elementor-element.elementor-arrows-position-outside .swiper~.elementor-swiper-button-next,.elementor-lightbox.elementor-arrows-position-outside .swiper-container .elementor-swiper-button-next,.elementor-lightbox.elementor-arrows-position-outside .swiper-container~.elementor-swiper-button-next,.elementor-lightbox.elementor-arrows-position-outside .swiper .elementor-swiper-button-next,.elementor-lightbox.elementor-arrows-position-outside .swiper~.elementor-swiper-button-next{right:0}.elementor-lightbox{--lightbox-ui-color:hsla(0,0%,93.3%,0.9);--lightbox-ui-color-hover:#fff;--lightbox-text-color:var(--lightbox-ui-color);--lightbox-header-icons-size:20px;--lightbox-navigation-icons-size:25px}.elementor-lightbox:not(.elementor-popup-modal) .dialog-header,.elementor-lightbox:not(.elementor-popup-modal) .dialog-message{text-align:center}.elementor-lightbox .dialog-header{display:none}.elementor-lightbox .dialog-widget-content{background:none;box-shadow:none;width:100%;height:100%}.elementor-lightbox .dialog-message{animation-duration:.3s;height:100%}.elementor-lightbox .dialog-message.dialog-lightbox-message{padding:0}.elementor-lightbox .dialog-lightbox-close-button{cursor:pointer;position:absolute;font-size:var(--lightbox-header-icons-size);left:.75em;margin-top:13px;padding:.25em;z-index:2;line-height:1;display:flex}.elementor-lightbox .dialog-lightbox-close-button svg{height:1em;width:1em}.elementor-lightbox .dialog-lightbox-close-button,.elementor-lightbox .elementor-swiper-button{color:var(--lightbox-ui-color);transition:all .3s;opacity:1}.elementor-lightbox .dialog-lightbox-close-button svg,.elementor-lightbox .elementor-swiper-button svg{fill:var(--lightbox-ui-color)}.elementor-lightbox .dialog-lightbox-close-button:hover,.elementor-lightbox .elementor-swiper-button:hover{color:var(--lightbox-ui-color-hover)}.elementor-lightbox .dialog-lightbox-close-button:hover svg,.elementor-lightbox .elementor-swiper-button:hover svg{fill:var(--lightbox-ui-color-hover)}.elementor-lightbox .swiper,.elementor-lightbox .swiper-container{height:100%}.elementor-lightbox .elementor-lightbox-item{display:flex;align-items:center;justify-content:center;position:relative;padding:70px;box-sizing:border-box;height:100%;margin:auto}@media (max-width:767px){.elementor-lightbox .elementor-lightbox-item{padding:70px 0}}.elementor-lightbox .elementor-lightbox-image{max-height:100%;-webkit-user-select:none;-moz-user-select:none;user-select:none}.elementor-lightbox .elementor-lightbox-image,.elementor-lightbox .elementor-lightbox-image:hover{opacity:1;filter:none;border:none}.elementor-lightbox .elementor-lightbox-image{box-shadow:0 0 30px rgba(0,0,0,.3),0 0 8px -5px rgba(0,0,0,.3);border-radius:2px}.elementor-lightbox .elementor-video-container{width:100%;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.elementor-lightbox .elementor-video-container .elementor-video-landscape,.elementor-lightbox .elementor-video-container .elementor-video-portrait,.elementor-lightbox .elementor-video-container .elementor-video-square{width:100%;height:100%;margin:auto}.elementor-lightbox .elementor-video-container .elementor-video-landscape iframe,.elementor-lightbox .elementor-video-container .elementor-video-portrait iframe,.elementor-lightbox .elementor-video-container .elementor-video-square iframe{border:0;background-color:#000}.elementor-lightbox .elementor-video-container .elementor-video-landscape iframe,.elementor-lightbox .elementor-video-container .elementor-video-landscape video,.elementor-lightbox .elementor-video-container .elementor-video-portrait iframe,.elementor-lightbox .elementor-video-container .elementor-video-portrait video,.elementor-lightbox .elementor-video-container .elementor-video-square iframe,.elementor-lightbox .elementor-video-container .elementor-video-square video{aspect-ratio:var(--video-aspect-ratio,1.77777)}@supports not (aspect-ratio:1/1){.elementor-lightbox .elementor-video-container .elementor-video-landscape,.elementor-lightbox .elementor-video-container .elementor-video-portrait,.elementor-lightbox .elementor-video-container .elementor-video-square{position:relative;overflow:hidden;height:0;padding-bottom:calc(100% / var(--video-aspect-ratio, 1.77777))}.elementor-lightbox .elementor-video-container .elementor-video-landscape iframe,.elementor-lightbox .elementor-video-container .elementor-video-landscape video,.elementor-lightbox .elementor-video-container .elementor-video-portrait iframe,.elementor-lightbox .elementor-video-container .elementor-video-portrait video,.elementor-lightbox .elementor-video-container .elementor-video-square iframe,.elementor-lightbox .elementor-video-container .elementor-video-square video{position:absolute;top:0;right:0;bottom:0;left:0}}.elementor-lightbox .elementor-video-container .elementor-video-square iframe,.elementor-lightbox .elementor-video-container .elementor-video-square video{width:min(90vh,90vw);height:min(90vh,90vw)}.elementor-lightbox .elementor-video-container .elementor-video-landscape iframe,.elementor-lightbox .elementor-video-container .elementor-video-landscape video{width:100%;max-height:90vh}.elementor-lightbox .elementor-video-container .elementor-video-portrait iframe,.elementor-lightbox .elementor-video-container .elementor-video-portrait video{height:100%;max-width:90vw}@media (min-width:1025px){.elementor-lightbox .elementor-video-container .elementor-video-landscape{width:85vw;max-height:85vh}.elementor-lightbox .elementor-video-container .elementor-video-portrait{height:85vh;max-width:85vw}}@media (max-width:1024px){.elementor-lightbox .elementor-video-container .elementor-video-landscape{width:95vw;max-height:95vh}.elementor-lightbox .elementor-video-container .elementor-video-portrait{height:95vh;max-width:95vw}}.elementor-lightbox .swiper-container .elementor-swiper-button-prev,.elementor-lightbox .swiper .elementor-swiper-button-prev{left:0}.elementor-lightbox .swiper-container .elementor-swiper-button-next,.elementor-lightbox .swiper .elementor-swiper-button-next{right:0}.elementor-lightbox .swiper-container .swiper-pagination-fraction,.elementor-lightbox .swiper .swiper-pagination-fraction{width:-moz-max-content;width:max-content;color:#fff}.elementor-lightbox .elementor-swiper-button:focus{outline-width:1px}.elementor-lightbox .elementor-swiper-button-next,.elementor-lightbox .elementor-swiper-button-prev{height:100%;display:flex;align-items:center;width:15%;justify-content:center;font-size:var(--lightbox-navigation-icons-size)}@media (max-width:767px){.elementor-lightbox .elementor-swiper-button:focus{outline:none}.elementor-lightbox .elementor-swiper-button-next,.elementor-lightbox .elementor-swiper-button-prev{width:20%}.elementor-lightbox .elementor-swiper-button-next i,.elementor-lightbox .elementor-swiper-button-prev i{padding:10px;background-color:rgba(0,0,0,.5)}.elementor-lightbox .elementor-swiper-button-prev{left:0;justify-content:flex-start}.elementor-lightbox .elementor-swiper-button-next{right:0;justify-content:flex-end}}.elementor-slideshow__counter{color:currentColor;font-size:.75em;width:-moz-max-content;width:max-content}.elementor-slideshow__footer,.elementor-slideshow__header{position:absolute;left:0;width:100%;padding:15px 20px;transition:.3s}.elementor-slideshow__footer{color:var(--lightbox-text-color)}.elementor-slideshow__header{color:var(--lightbox-ui-color);display:flex;flex-direction:row-reverse;font-size:var(--lightbox-header-icons-size);padding-right:1em;padding-left:2.6em;top:0;align-items:center;z-index:10}.elementor-slideshow__header>i,.elementor-slideshow__header>svg{cursor:pointer;padding:.25em;margin:0 .35em}.elementor-slideshow__header>i{font-size:inherit}.elementor-slideshow__header>i:hover{color:var(--lightbox-ui-color-hover)}.elementor-slideshow__header>svg{box-sizing:content-box;fill:var(--lightbox-ui-color);height:1em;width:1em}.elementor-slideshow__header>svg:hover{fill:var(--lightbox-ui-color-hover)}.elementor-slideshow__header .elementor-slideshow__counter{margin-left:auto}.elementor-slideshow__header .elementor-icon-share{z-index:5}.elementor-slideshow__share-menu{background-color:transparent;width:0;height:0;position:absolute;overflow:hidden;transition:background-color .4s}.elementor-slideshow__share-menu .elementor-slideshow__share-links a{color:#0c0d0e}.elementor-slideshow__share-links{display:block;position:absolute;min-width:200px;left:2.8em;top:3em;background-color:#fff;border-radius:3px;padding:14px 20px;transform:scale(0);opacity:0;transform-origin:90% 10%;transition:all .25s .1s;box-shadow:0 4px 15px rgba(0,0,0,.3)}.elementor-slideshow__share-links a{text-align:right;color:#3f444b;font-size:12px;line-height:2.5;display:block;opacity:0;transition:opacity .5s .1s}.elementor-slideshow__share-links a:hover{color:#000}.elementor-slideshow__share-links a i,.elementor-slideshow__share-links a svg{margin-left:.75em}.elementor-slideshow__share-links a i{font-size:1.25em}.elementor-slideshow__share-links a svg{height:1.25em;width:1.25em}.elementor-slideshow__share-links:before{content:"";display:block;position:absolute;top:1px;left:.5em;border:.45em solid transparent;border-bottom-color:#fff;transform:translateY(-100%) scaleX(.7)}.elementor-slideshow__footer{bottom:0;z-index:5;position:fixed}.elementor-slideshow__description,.elementor-slideshow__title{margin:0}.elementor-slideshow__title{font-size:16px;font-weight:700}.elementor-slideshow__description{font-size:14px}.elementor-slideshow--ui-hidden .elementor-slideshow__footer,.elementor-slideshow--ui-hidden .elementor-slideshow__header{opacity:0;pointer-events:none}.elementor-slideshow--ui-hidden .elementor-swiper-button-next,.elementor-slideshow--ui-hidden .elementor-swiper-button-prev{opacity:0}.elementor-slideshow--fullscreen-mode .elementor-video-container{width:100%}.elementor-slideshow--zoom-mode .elementor-slideshow__footer,.elementor-slideshow--zoom-mode .elementor-slideshow__header{background-color:rgba(0,0,0,.5)}.elementor-slideshow--zoom-mode .elementor-swiper-button-next,.elementor-slideshow--zoom-mode .elementor-swiper-button-prev{opacity:0;pointer-events:none}.elementor-slideshow--share-mode .elementor-slideshow__share-menu{top:0;left:0;width:100vw;height:100vh;opacity:1;cursor:default;background-color:rgba(0,0,0,.5)}.elementor-slideshow--share-mode .elementor-slideshow__share-links{transform:scale(1)}.elementor-slideshow--share-mode .elementor-slideshow__share-links,.elementor-slideshow--share-mode .elementor-slideshow__share-links a{opacity:1}.elementor-slideshow--share-mode .elementor-slideshow__share-links .eicon-twitter{color:#1da1f2}.elementor-slideshow--share-mode .elementor-slideshow__share-links .eicon-facebook{color:#3b5998}.elementor-slideshow--share-mode .elementor-slideshow__share-links .eicon-pinterest{color:#bd081c}.elementor-slideshow--share-mode .elementor-slideshow__share-links .eicon-download-bold{color:#9da5ae}.elementor-slideshow--share-mode .elementor-slideshow__share-links .e-eicon-twitter{fill:#1da1f2}.elementor-slideshow--share-mode .elementor-slideshow__share-links .e-eicon-facebook{fill:#3b5998}.elementor-slideshow--share-mode .elementor-slideshow__share-links .e-eicon-pinterest{fill:#bd081c}.elementor-slideshow--share-mode .elementor-slideshow__share-links .e-eicon-download-bold{fill:#9da5ae}.elementor-slideshow--share-mode .eicon-share-arrow{z-index:2}.animated{animation-duration:1.25s}.animated.animated-slow{animation-duration:2s}.animated.animated-fast{animation-duration:.75s}.animated.infinite{animation-iteration-count:infinite}.animated.reverse{animation-direction:reverse;animation-fill-mode:forwards}@media (prefers-reduced-motion:reduce){.animated{animation:none}}.elementor-shape{overflow:hidden;position:absolute;left:0;width:100%;line-height:0;direction:ltr}.elementor-shape-top{top:-1px}.elementor-shape-top:not([data-negative=false]) svg{z-index:-1}.elementor-shape-bottom{bottom:-1px}.elementor-shape-bottom:not([data-negative=true]) svg{z-index:-1}.elementor-shape[data-negative=false].elementor-shape-bottom,.elementor-shape[data-negative=true].elementor-shape-top{transform:rotate(180deg)}.elementor-shape svg{display:block;width:calc(100% + 1.3px);position:relative;left:50%;transform:translateX(-50%)}.elementor-shape .elementor-shape-fill{fill:#fff;transform-origin:center;transform:rotateY(0deg)}#wp-admin-bar-elementor_edit_page>.ab-item:before{content:"\e813";font-family:eicons;top:3px;font-size:18px}#wp-admin-bar-elementor_edit_page .ab-submenu .ab-item{display:flex;width:200px}#wp-admin-bar-elementor_edit_page .elementor-edit-link-title{white-space:nowrap;text-overflow:ellipsis;overflow:hidden;width:100%}#wp-admin-bar-elementor_edit_page .elementor-edit-link-type{background:#3f444b;font-size:11px;line-height:9px;margin-top:6px;padding:4px 8px;border-radius:3px}#wp-admin-bar-elementor_inspector>.ab-item:before{content:"\f348";top:2px}#wpadminbar *{font-style:normal}.page-template-elementor_canvas.elementor-page:before{display:none}.elementor-post__thumbnail__link{transition:none}#left-area ul.elementor-icon-list-items,.elementor-edit-area .elementor-element ul.elementor-icon-list-items,.elementor .elementor-element ul.elementor-icon-list-items{padding:0}.e--ua-appleWebkit.rtl{--flex-right:flex-start}.e--ua-appleWebkit .elementor-share-buttons--align-right,.e--ua-appleWebkit .elementor-widget-social-icons.e-grid-align-right{--justify-content:var(--flex-right,flex-end)}.e--ua-appleWebkit .elementor-share-buttons--align-center,.e--ua-appleWebkit .elementor-widget-social-icons.e-grid-align-center{--justify-content:center}.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-center .elementor-grid,.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-justify .elementor-grid,.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-right .elementor-grid,.e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-center .elementor-grid,.e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-right .elementor-grid{width:auto;display:flex;flex-wrap:wrap;justify-content:var(--justify-content,space-between);margin-left:calc(-.5 * var(--grid-column-gap));margin-right:calc(-.5 * var(--grid-column-gap))}.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-center .elementor-grid-item,.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-justify .elementor-grid-item,.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-right .elementor-grid-item,.e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-center .elementor-grid-item,.e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-right .elementor-grid-item{margin-left:calc(.5 * var(--grid-column-gap));margin-right:calc(.5 * var(--grid-column-gap))}.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-left .elementor-grid,.e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-left .elementor-grid{display:inline-block}.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-left .elementor-grid,.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-left .elementor-grid-item,.e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-left .elementor-grid,.e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-left .elementor-grid-item{margin-left:0;margin-right:0}@media (max-width:1024px){.e--ua-appleWebkit .elementor-share-buttons-tablet--align-right,.e--ua-appleWebkit .elementor-widget-social-icons.e-grid-align-tablet-right{--justify-content:var(--flex-right,flex-end)}.e--ua-appleWebkit .elementor-share-buttons-tablet--align-center,.e--ua-appleWebkit .elementor-widget-social-icons.e-grid-align-tablet-center{--justify-content:center}.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-tablet-center .elementor-grid,.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-tablet-justify .elementor-grid,.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-tablet-right .elementor-grid,.e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-tablet-center .elementor-grid,.e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-tablet-right .elementor-grid{width:auto;display:flex;flex-wrap:wrap;justify-content:var(--justify-content,space-between);margin-left:calc(-.5 * var(--grid-column-gap));margin-right:calc(-.5 * var(--grid-column-gap))}.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-tablet-center .elementor-grid-item,.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-tablet-justify .elementor-grid-item,.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-tablet-right .elementor-grid-item,.e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-tablet-center .elementor-grid-item,.e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-tablet-right .elementor-grid-item{margin-left:calc(.5 * var(--grid-column-gap));margin-right:calc(.5 * var(--grid-column-gap))}.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons-tablet--align-left .elementor-grid,.e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-tablet-left .elementor-grid{display:inline-block}.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons-tablet--align-left .elementor-grid,.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons-tablet--align-left .elementor-grid-item,.e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-tablet-left .elementor-grid,.e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-tablet-left .elementor-grid-item{margin-left:0;margin-right:0}}@media (max-width:767px){.e--ua-appleWebkit .elementor-share-buttons-mobile--align-right,.e--ua-appleWebkit .elementor-widget-social-icons.e-grid-align-mobile-right{--justify-content:var(--flex-right,flex-end)}.e--ua-appleWebkit .elementor-share-buttons-mobile--align-center,.e--ua-appleWebkit .elementor-widget-social-icons.e-grid-align-mobile-center{--justify-content:center}.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-mobile-center .elementor-grid,.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-mobile-justify .elementor-grid,.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-mobile-right .elementor-grid,.e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-mobile-center .elementor-grid,.e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-mobile-right .elementor-grid{width:auto;display:flex;flex-wrap:wrap;justify-content:var(--justify-content,space-between);margin-left:calc(-.5 * var(--grid-column-gap));margin-right:calc(-.5 * var(--grid-column-gap))}.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-mobile-center .elementor-grid-item,.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-mobile-justify .elementor-grid-item,.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-mobile-right .elementor-grid-item,.e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-mobile-center .elementor-grid-item,.e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-mobile-right .elementor-grid-item{margin-left:calc(.5 * var(--grid-column-gap));margin-right:calc(.5 * var(--grid-column-gap))}.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons-mobile--align-left .elementor-grid,.e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-mobile-left .elementor-grid{display:inline-block}.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons-mobile--align-left .elementor-grid,.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons-mobile--align-left .elementor-grid-item,.e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-mobile-left .elementor-grid,.e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-mobile-left .elementor-grid-item{margin-left:0;margin-right:0}}@media (max-width:767px){.elementor .elementor-hidden-mobile,.elementor .elementor-hidden-phone{display:none}}@media (min-width:-1) and (max-width:-1){.elementor .elementor-hidden-mobile_extra{display:none}}@media (min-width:768px) and (max-width:1024px){.elementor .elementor-hidden-tablet{display:none}}@media (min-width:-1) and (max-width:-1){.elementor .elementor-hidden-laptop,.elementor .elementor-hidden-tablet_extra{display:none}}@media (min-width:1025px) and (max-width:99999px){.elementor .elementor-hidden-desktop{display:none}}@media (min-width:-1){.elementor .elementor-hidden-widescreen{display:none}}.elementor-widget-text-path{font-size:20px;text-align:var(--alignment,right)}.elementor-widget-text-path svg{width:var(--width);max-width:100%;height:auto;overflow:visible;word-spacing:var(--word-spacing);transform:rotate(var(--rotate,0)) scaleX(var(--scale-x,1)) scaleY(var(--scale-y,1))}.elementor-widget-text-path svg path{vector-effect:non-scaling-stroke;fill:var(--path-fill,transparent);stroke:var(--stroke-color,transparent);stroke-width:var(--stroke-width,1px);transition:var(--stroke-transition) stroke,var(--stroke-transition) fill}.elementor-widget-text-path svg:hover path{--path-fill:var(--path-fill-hover);--stroke-color:var(--stroke-color-hover);--stroke-width:var(--stroke-width-hover)}.elementor-widget-text-path svg text{--fill:var(--text-color);fill:var(--fill);direction:var(--direction,rtl);transition:var(--transition) stroke,var(--transition) stroke-width,var(--transition) fill}.elementor-widget-text-path svg text:hover{--color:var(--text-color-hover,var(--text-color));--fill:var(--color);color:var(--color)}.elementor-widget-n-tabs{--n-tabs-color-accent-fallback:#61ce70;--n-tabs-color-secondary-fallback:#54595f;--n-tabs-default-padding-block:15px;--n-tabs-default-padding-inline:35px;--n-tabs-background-color:transparent;--n-tabs-display:flex;--n-tabs-direction:column;--n-tabs-gap:10px;--n-tabs-heading-display:flex;--n-tabs-heading-direction:row;--n-tabs-heading-grow:initial;--n-tabs-heading-justify-content:center;--n-tabs-heading-width:initial;--n-tabs-heading-overflow-x:initial;--n-tabs-heading-wrap:nowrap;--n-tabs-border-width:1px;--n-tabs-border-color:#d5d8dc;--n-tabs-content-display:flex;--n-tabs-title-color:var(--e-global-color-secondary,var(--n-tabs-color-secondary-fallback));--n-tabs-title-color-hover:#fff;--n-tabs-title-color-active:#fff;--n-tabs-title-background-color:#f1f2f3;--n-tabs-title-background-color-hover:var(--e-global-color-accent,var(--n-tabs-color-accent-fallback));--n-tabs-title-background-color-active:var(--e-global-color-accent,var(--n-tabs-color-accent-fallback));--n-tabs-title-width:initial;--n-tabs-title-height:initial;--n-tabs-title-font-size:1rem;--n-tabs-title-white-space:initial;--n-tabs-title-justify-content-toggle:initial;--n-tabs-title-align-items-toggle:center;--n-tabs-title-justify-content:center;--n-tabs-title-align-items:center;--n-tabs-title-text-align:center;--n-tabs-title-direction:row;--n-tabs-title-gap:10px;--n-tabs-title-flex-grow:0;--n-tabs-title-flex-basis:content;--n-tabs-title-flex-shrink:initial;--n-tabs-title-order:initial;--n-tabs-title-padding-block-start:var(--n-tabs-default-padding-block);--n-tabs-title-padding-inline-end:var(--n-tabs-default-padding-inline);--n-tabs-title-padding-block-end:var(--n-tabs-default-padding-block);--n-tabs-title-padding-inline-start:var(--n-tabs-default-padding-inline);--n-tabs-title-border-radius:initial;--n-tabs-title-transition:0.3s;--n-tabs-icon-color:var(--e-global-color-secondary,var(--n-tabs-color-secondary-fallback));--n-tabs-icon-color-hover:var(--n-tabs-title-color-hover);--n-tabs-icon-color-active:#fff;--n-tabs-icon-gap:5px;width:100%;max-width:100%}.elementor-widget-n-tabs .e-n-tabs{display:var(--n-tabs-display);flex-direction:var(--n-tabs-direction);gap:var(--n-tabs-gap);text-align:start;min-width:0}.elementor-widget-n-tabs .e-n-tabs-heading{display:var(--n-tabs-heading-display);flex-basis:var(--n-tabs-heading-width);flex-direction:var(--n-tabs-heading-direction);flex-shrink:0;justify-content:var(--n-tabs-heading-justify-content);gap:var(--n-tabs-title-gap);overflow-x:var(--n-tabs-heading-overflow-x);flex-wrap:var(--n-tabs-heading-wrap);-ms-overflow-style:none;scrollbar-width:none}.elementor-widget-n-tabs .e-n-tabs-heading::-webkit-scrollbar{display:none}.elementor-widget-n-tabs .e-n-tabs-heading.e-scroll{cursor:grabbing;cursor:-webkit-grabbing}.elementor-widget-n-tabs .e-n-tabs-heading.e-scroll-active{position:relative}.elementor-widget-n-tabs .e-n-tabs-heading.e-scroll-active:before{content:"";position:absolute;inset-block:0;inset-inline:-1000vw;z-index:2}.elementor-widget-n-tabs .e-n-tabs-content{display:var(--n-tabs-content-display);flex-grow:1;min-width:0}.elementor-widget-n-tabs .e-n-tabs-content>.e-con:not(.e-active){display:none}.elementor-widget-n-tabs .e-n-tabs:not(.e-activated)>.e-n-tabs-content>.e-con:first-child{display:flex}.elementor-widget-n-tabs .e-n-tab-title{all:unset;-webkit-user-select:none;-moz-user-select:none;user-select:none;display:flex;align-items:var(--n-tabs-title-align-items-toggle,var(--n-tabs-title-align-items));flex-direction:var(--n-tabs-title-direction);justify-content:var(--n-tabs-title-justify-content-toggle,var(--n-tabs-title-justify-content));gap:var(--n-tabs-icon-gap);border-width:var(--n-tabs-border-width);position:relative;cursor:pointer;outline:none;flex-grow:var(--n-tabs-title-flex-grow);flex-basis:var(--n-tabs-title-flex-basis);flex-shrink:var(--n-tabs-title-flex-shrink);padding-block-start:var(--n-tabs-title-padding-block-start);padding-inline-end:var(--n-tabs-title-padding-inline-end);padding-block-end:var(--n-tabs-title-padding-block-end);padding-inline-start:var(--n-tabs-title-padding-inline-start);border-radius:var(--n-tabs-title-border-radius);height:var(--n-tabs-title-height);width:var(--n-tabs-title-width);white-space:var(--n-tabs-title-white-space);transition:background var(--n-tabs-title-transition),color var(--n-tabs-title-transition),border var(--n-tabs-title-transition),box-shadow var(--n-tabs-title-transition),text-shadow var(--n-tabs-title-transition),stroke var(--n-tabs-title-transition),stroke-width var(--n-tabs-title-transition),-webkit-text-stroke-width var(--n-tabs-title-transition),-webkit-text-stroke-color var(--n-tabs-title-transition),transform var(--n-tabs-title-transition)}.elementor-widget-n-tabs .e-n-tab-title:focus-visible{outline:5px auto -webkit-focus-ring-color}.elementor-widget-n-tabs .e-n-tab-title span i,.elementor-widget-n-tabs .e-n-tab-title span svg{transition:color var(--n-tabs-title-transition),fill var(--n-tabs-title-transition)}.elementor-widget-n-tabs .e-n-tab-title-text{display:flex;align-items:center;font-size:var(--n-tabs-title-font-size);text-align:var(--n-tabs-title-text-align)}.elementor-widget-n-tabs .e-n-tab-title .e-n-tab-icon{display:flex;align-items:center;flex-direction:column;flex-shrink:0;order:var(--n-tabs-icon-order);overflow:hidden}.elementor-widget-n-tabs .e-n-tab-title .e-n-tab-icon i{font-size:var(--n-tabs-icon-size,var(--n-tabs-title-font-size))}.elementor-widget-n-tabs .e-n-tab-title .e-n-tab-icon svg{width:var(--n-tabs-icon-size,var(--n-tabs-title-font-size));height:var(--n-tabs-icon-size,var(--n-tabs-title-font-size))}.elementor-widget-n-tabs .e-n-tab-title .e-n-tab-icon:empty{display:none}.elementor-widget-n-tabs .e-n-tab-title[aria-selected=false]{background-color:var(--n-tabs-title-background-color)}.elementor-widget-n-tabs .e-n-tab-title[aria-selected=false],.elementor-widget-n-tabs .e-n-tab-title[aria-selected=false] a{color:var(--n-tabs-title-color)}.elementor-widget-n-tabs .e-n-tab-title[aria-selected=false] .e-n-tab-icon i{color:var(--n-tabs-icon-color)}.elementor-widget-n-tabs .e-n-tab-title[aria-selected=false] .e-n-tab-icon svg{fill:var(--n-tabs-icon-color)}.elementor-widget-n-tabs .e-n-tab-title[aria-selected=false] .e-n-tab-icon i:last-child,.elementor-widget-n-tabs .e-n-tab-title[aria-selected=false] .e-n-tab-icon svg:last-child{transform:translateY(-100vh);height:0;opacity:0}.elementor-widget-n-tabs .e-n-tab-title[aria-selected=true],.elementor-widget-n-tabs .e-n-tab-title[aria-selected=true] a{color:var(--n-tabs-title-color-active)}.elementor-widget-n-tabs .e-n-tab-title[aria-selected=true] .e-n-tab-icon i{color:var(--n-tabs-icon-color-active)}.elementor-widget-n-tabs .e-n-tab-title[aria-selected=true] .e-n-tab-icon svg{fill:var(--n-tabs-icon-color-active)}.elementor-widget-n-tabs .e-n-tab-title[aria-selected=true] .e-n-tab-icon i:first-child,.elementor-widget-n-tabs .e-n-tab-title[aria-selected=true] .e-n-tab-icon svg:first-child{transform:translateY(-100vh);height:0;opacity:0}.elementor-widget-n-tabs .e-n-tab-title[aria-selected=true][class*=elementor-animation-]:active,.elementor-widget-n-tabs .e-n-tab-title[aria-selected=true][class*=elementor-animation-]:focus,.elementor-widget-n-tabs .e-n-tab-title[aria-selected=true][class*=elementor-animation-]:hover{transform:none;animation:initial}.elementor-widget-n-tabs [data-touch-mode=false] .e-n-tab-title[aria-selected=false]:hover,.elementor-widget-n-tabs [data-touch-mode=false] .e-n-tab-title[aria-selected=false]:hover a{color:var(--n-tabs-title-color-hover)}.elementor-widget-n-tabs [data-touch-mode=false] .e-n-tab-title[aria-selected=false]:hover .e-n-tab-icon i{color:var(--n-tabs-icon-color-hover)}.elementor-widget-n-tabs [data-touch-mode=false] .e-n-tab-title[aria-selected=false]:hover .e-n-tab-icon svg{fill:var(--n-tabs-icon-color-hover)}.elementor-widget-n-tabs [data-touch-mode=true] .e-n-tab-title[aria-selected=false]:hover,.elementor-widget-n-tabs [data-touch-mode=true] .e-n-tab-title[aria-selected=false]:hover a{color:var(--n-tabs-title-color-active)}.elementor-widget-n-tabs [data-touch-mode=true] .e-n-tab-title[aria-selected=false]:hover .e-n-tab-icon i{color:var(--n-tabs-icon-color-active)}.elementor-widget-n-tabs [data-touch-mode=true] .e-n-tab-title[aria-selected=false]:hover .e-n-tab-icon svg{fill:var(--n-tabs-icon-color-active)}.elementor-widget-n-tabs [data-touch-mode=true] .e-n-tab-title[aria-selected=false]:hover .e-n-tab-icon i:first-child,.elementor-widget-n-tabs [data-touch-mode=true] .e-n-tab-title[aria-selected=false]:hover .e-n-tab-icon svg:first-child{transform:translateY(-100vh);height:0;opacity:0}.elementor-widget-n-tabs [data-touch-mode=true] .e-n-tab-title[aria-selected=false]:hover[class*=elementor-animation-]:active,.elementor-widget-n-tabs [data-touch-mode=true] .e-n-tab-title[aria-selected=false]:hover[class*=elementor-animation-]:focus,.elementor-widget-n-tabs [data-touch-mode=true] .e-n-tab-title[aria-selected=false]:hover[class*=elementor-animation-]:hover{transform:none;animation:initial}.elementor-widget-n-tabs [data-touch-mode=true] .e-n-tab-title[aria-selected=false]:hover .e-n-tab-icon i:last-child,.elementor-widget-n-tabs [data-touch-mode=true] .e-n-tab-title[aria-selected=false]:hover .e-n-tab-icon svg:last-child{transform:none;height:auto;opacity:1}.elementor .elementor-element.elementor-widget-n-tabs>.elementor-widget-container>.e-n-tabs[data-touch-mode=false]>.e-n-tabs-heading .e-n-tab-title[aria-selected=false]:hover{background-color:var(--n-tabs-title-background-color-hover);background-image:none}.elementor .elementor-element.elementor-widget-n-tabs>.elementor-widget-container>.e-n-tabs>.e-n-tabs-heading .e-n-tab-title[aria-selected=true],.elementor .elementor-element.elementor-widget-n-tabs>.elementor-widget-container>.e-n-tabs[data-touch-mode=true]>.e-n-tabs-heading .e-n-tab-title[aria-selected=false]:hover{background-color:var(--n-tabs-title-background-color-active);background-image:none}@media (max-width:767px){.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-mobile{--n-tabs-direction:column;--n-tabs-heading-display:contents;--n-tabs-content-display:contents}.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-mobile .e-n-tabs{gap:0}.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-mobile .e-n-tabs-content>.e-con{order:var(--n-tabs-title-order)}.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-mobile .e-n-tab-title{order:var(--n-tabs-title-order);width:auto}.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-mobile .e-n-tab-title:not(:first-child){margin-block-start:var(--n-tabs-title-gap)}.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-mobile .e-n-tab-title[aria-selected=true]{margin-block-end:var(--n-tabs-gap)}}@media (max-width:-1){.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-mobile_extra{--n-tabs-direction:column;--n-tabs-heading-display:contents;--n-tabs-content-display:contents}.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-mobile_extra .e-n-tabs{gap:0}.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-mobile_extra .e-n-tabs-content>.e-con{order:var(--n-tabs-title-order)}.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-mobile_extra .e-n-tab-title{order:var(--n-tabs-title-order);width:auto}.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-mobile_extra .e-n-tab-title:not(:first-child){margin-block-start:var(--n-tabs-title-gap)}.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-mobile_extra .e-n-tab-title[aria-selected=true]{margin-block-end:var(--n-tabs-gap)}}@media (max-width:1024px){.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-tablet{--n-tabs-direction:column;--n-tabs-heading-display:contents;--n-tabs-content-display:contents}.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-tablet .e-n-tabs{gap:0}.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-tablet .e-n-tabs-content>.e-con{order:var(--n-tabs-title-order)}.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-tablet .e-n-tab-title{order:var(--n-tabs-title-order);width:auto}.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-tablet .e-n-tab-title:not(:first-child){margin-block-start:var(--n-tabs-title-gap)}.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-tablet .e-n-tab-title[aria-selected=true]{margin-block-end:var(--n-tabs-gap)}}@media (max-width:-1){.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-tablet_extra{--n-tabs-direction:column;--n-tabs-heading-display:contents;--n-tabs-content-display:contents}.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-tablet_extra .e-n-tabs{gap:0}.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-tablet_extra .e-n-tabs-content>.e-con{order:var(--n-tabs-title-order)}.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-tablet_extra .e-n-tab-title{order:var(--n-tabs-title-order);width:auto}.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-tablet_extra .e-n-tab-title:not(:first-child){margin-block-start:var(--n-tabs-title-gap)}.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-tablet_extra .e-n-tab-title[aria-selected=true]{margin-block-end:var(--n-tabs-gap)}}@media (max-width:-1){.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-laptop{--n-tabs-direction:column;--n-tabs-heading-display:contents;--n-tabs-content-display:contents}.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-laptop .e-n-tabs{gap:0}.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-laptop .e-n-tabs-content>.e-con{order:var(--n-tabs-title-order)}.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-laptop .e-n-tab-title{order:var(--n-tabs-title-order);width:auto}.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-laptop .e-n-tab-title:not(:first-child){margin-block-start:var(--n-tabs-title-gap)}.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-laptop .e-n-tab-title[aria-selected=true]{margin-block-end:var(--n-tabs-gap)}}.elementor-widget-n-accordion{--n-accordion-title-font-size:20px;--n-accordion-title-flex-grow:initial;--n-accordion-title-justify-content:initial;--n-accordion-title-icon-order:-1;--n-accordion-border-width:1px;--n-accordion-border-color:#d5d8dc;--n-accordion-border-style:solid;--n-accordion-item-title-flex-grow:initial;--n-accordion-item-title-space-between:0px;--n-accordion-item-title-distance-from-content:0px;--n-accordion-padding:10px;--n-accordion-border-radius:0px;--n-accordion-icon-size:15px;--n-accordion-title-normal-color:#1f2124;--n-accordion-title-hover-color:#1f2124;--n-accordion-title-active-color:#1f2124;--n-accordion-icon-normal-color:var(--n-accordion-title-normal-color);--n-accordion-icon-hover-color:var(--n-accordion-title-hover-color);--n-accordion-icon-active-color:var(--n-accordion-title-active-color);--n-accordion-icon-gap:0 10px;width:100%}.elementor-widget-n-accordion .e-n-accordion details>summary::-webkit-details-marker{display:none}.elementor-widget-n-accordion .e-n-accordion-item{display:flex;flex-direction:column;position:relative}.elementor-widget-n-accordion .e-n-accordion-item:not(:last-child){margin-block-end:var(--n-accordion-item-title-space-between)}.elementor-widget-n-accordion .e-n-accordion-item-title,:where(.elementor-widget-n-accordion .e-n-accordion-item>.e-con){border:var(--n-accordion-border-width) var(--n-accordion-border-style) var(--n-accordion-border-color)}.elementor-widget-n-accordion .e-n-accordion-item-title{display:flex;flex-direction:row;list-style:none;padding:var(--n-accordion-padding);justify-content:var(--n-accordion-title-justify-content);border-radius:var(--n-accordion-border-radius);flex-grow:var(--n-menu-title-flex-grow);gap:var(--n-accordion-icon-gap);color:var(--n-accordion-title-normal-color);align-items:center;cursor:pointer}.elementor-widget-n-accordion .e-n-accordion-item-title-header{display:flex}.elementor-widget-n-accordion .e-n-accordion-item-title-header h1,.elementor-widget-n-accordion .e-n-accordion-item-title-header h2,.elementor-widget-n-accordion .e-n-accordion-item-title-header h3,.elementor-widget-n-accordion .e-n-accordion-item-title-header h4,.elementor-widget-n-accordion .e-n-accordion-item-title-header h5,.elementor-widget-n-accordion .e-n-accordion-item-title-header h6,.elementor-widget-n-accordion .e-n-accordion-item-title-header p{margin-block-start:0;margin-block-end:0}.elementor-widget-n-accordion .e-n-accordion-item-title-text{font-size:var(--n-accordion-title-font-size);align-items:center}.elementor-widget-n-accordion .e-n-accordion-item-title-icon{display:flex;flex-direction:row;align-items:center;order:var(--n-accordion-title-icon-order);position:relative;width:-moz-fit-content;width:fit-content}.elementor-widget-n-accordion .e-n-accordion-item-title-icon span{height:var(--n-accordion-icon-size);width:auto}.elementor-widget-n-accordion .e-n-accordion-item-title-icon span>i{color:var(--n-accordion-icon-normal-color);font-size:var(--n-accordion-icon-size)}.elementor-widget-n-accordion .e-n-accordion-item-title-icon span>svg{fill:var(--n-accordion-icon-normal-color);height:var(--n-accordion-icon-size)}.elementor-widget-n-accordion .e-n-accordion-item-title>span{cursor:pointer}.elementor-widget-n-accordion .e-n-accordion-item[open] .e-n-accordion-item-title{margin-block-end:var(--n-accordion-item-title-distance-from-content);color:var(--n-accordion-title-active-color)}.elementor-widget-n-accordion .e-n-accordion-item[open] .e-n-accordion-item-title-icon .e-opened{display:flex}.elementor-widget-n-accordion .e-n-accordion-item[open] .e-n-accordion-item-title-icon .e-closed{display:none}.elementor-widget-n-accordion .e-n-accordion-item[open] .e-n-accordion-item-title-icon span>i{color:var(--n-accordion-icon-active-color)}.elementor-widget-n-accordion .e-n-accordion-item[open] .e-n-accordion-item-title-icon span>svg{fill:var(--n-accordion-icon-active-color)}.elementor-widget-n-accordion .e-n-accordion-item:not([open]):hover .e-n-accordion-item-title{color:var(--n-accordion-title-hover-color)}.elementor-widget-n-accordion .e-n-accordion-item:not([open]):hover .e-n-accordion-item-title-icon span>i{color:var(--n-accordion-icon-hover-color)}.elementor-widget-n-accordion .e-n-accordion-item:not([open]):hover .e-n-accordion-item-title-icon span>svg{fill:var(--n-accordion-icon-hover-color)}.elementor-widget-n-accordion .e-n-accordion-item .e-n-accordion-item-title-icon .e-opened{display:none}.elementor-widget-n-accordion .e-n-accordion-item .e-n-accordion-item-title-icon .e-closed{display:flex}.elementor-widget-n-accordion .e-n-accordion-item .e-n-accordion-item-title-icon span>svg{fill:var(--n-accordion-icon-normal-color)}.elementor-widget-n-accordion .e-n-accordion-item .e-n-accordion-item-title-icon span>i{color:var(--n-accordion-icon-normal-color)}.elementor-widget-n-accordion .e-n-accordion-item>span{cursor:pointer}.elementor-accordion{text-align:right}.elementor-accordion .elementor-accordion-item{border:1px solid #d5d8dc}.elementor-accordion .elementor-accordion-item+.elementor-accordion-item{border-top:none}.elementor-accordion .elementor-tab-title{margin:0;padding:15px 20px;font-weight:700;line-height:1;cursor:pointer;outline:none}.elementor-accordion .elementor-tab-title .elementor-accordion-icon{display:inline-block;width:1.5em}.elementor-accordion .elementor-tab-title .elementor-accordion-icon svg{width:1em;height:1em}.elementor-accordion .elementor-tab-title .elementor-accordion-icon.elementor-accordion-icon-right{float:right;text-align:right}.elementor-accordion .elementor-tab-title .elementor-accordion-icon.elementor-accordion-icon-left{float:left;text-align:left}.elementor-accordion .elementor-tab-title .elementor-accordion-icon .elementor-accordion-icon-closed{display:block}.elementor-accordion .elementor-tab-title .elementor-accordion-icon .elementor-accordion-icon-opened,.elementor-accordion .elementor-tab-title.elementor-active .elementor-accordion-icon-closed{display:none}.elementor-accordion .elementor-tab-title.elementor-active .elementor-accordion-icon-opened{display:block}.elementor-accordion .elementor-tab-content{display:none;padding:15px 20px;border-top:1px solid #d5d8dc}@media (max-width:767px){.elementor-accordion .elementor-tab-title{padding:12px 15px}.elementor-accordion .elementor-tab-title .elementor-accordion-icon{width:1.2em}.elementor-accordion .elementor-tab-content{padding:7px 15px}}.e-con-inner>.elementor-widget-accordion,.e-con>.elementor-widget-accordion{width:var(--container-widget-width);--flex-grow:var(--container-widget-flex-grow)}.elementor-alert{padding:15px;border-left:5px solid transparent;position:relative;text-align:right}.elementor-alert .elementor-alert-title{display:block;font-weight:700}.elementor-alert .elementor-alert-description{font-size:13px}.elementor-alert button.elementor-alert-dismiss{position:absolute;left:var(--dismiss-icon-horizontal-position,10px);top:var(--dismiss-icon-vertical-position,10px);padding:3px;font-size:var(--dismiss-icon-size,20px);line-height:1;background:transparent;color:var(--dismiss-icon-normal-color,inherit);border:none;cursor:pointer;transition-duration:var(--dismiss-icon-hover-transition-duration,.3s)}.elementor-alert button.elementor-alert-dismiss:hover{color:var(--dismiss-icon-hover-color,inherit)}.elementor-alert button.elementor-alert-dismiss svg{width:var(--dismiss-icon-size,20px);height:var(--dismiss-icon-size,20px);fill:var(--dismiss-icon-normal-color,currentColor);transition-duration:var(--dismiss-icon-hover-transition-duration,.3s)}.elementor-alert button.elementor-alert-dismiss svg:hover{fill:var(--dismiss-icon-hover-color,currentColor)}.elementor-alert.elementor-alert-info{color:#31708f;background-color:#d9edf7;border-color:#bcdff1}.elementor-alert.elementor-alert-success{color:#3c763d;background-color:#dff0d8;border-color:#cae6be}.elementor-alert.elementor-alert-warning{color:#8a6d3b;background-color:#fcf8e3;border-color:#f9f0c3}.elementor-alert.elementor-alert-danger{color:#a94442;background-color:#f2dede;border-color:#e8c4c4}@media (max-width:767px){.elementor-alert{padding:10px}.elementor-alert button.elementor-alert-dismiss{right:7px;top:7px}}.elementor-counter .elementor-counter-number-wrapper{display:flex;font-size:69px;font-weight:600;line-height:1}.elementor-counter .elementor-counter-number-prefix,.elementor-counter .elementor-counter-number-suffix{flex-grow:1;white-space:pre-wrap}.elementor-counter .elementor-counter-number-prefix{text-align:left}.elementor-counter .elementor-counter-number-suffix{text-align:right}.elementor-counter .elementor-counter-title{text-align:center;font-size:19px;font-weight:400;line-height:2.5}.elementor-widget-divider{--divider-border-style:none;--divider-border-width:1px;--divider-color:#0c0d0e;--divider-icon-size:20px;--divider-element-spacing:10px;--divider-pattern-height:24px;--divider-pattern-size:20px;--divider-pattern-url:none;--divider-pattern-repeat:repeat-x}.elementor-widget-divider .elementor-divider{display:flex}.elementor-widget-divider .elementor-divider__text{font-size:15px;line-height:1;max-width:95%}.elementor-widget-divider .elementor-divider__element{margin:0 var(--divider-element-spacing);flex-shrink:0}.elementor-widget-divider .elementor-icon{font-size:var(--divider-icon-size)}.elementor-widget-divider .elementor-divider-separator{display:flex;margin:0;direction:ltr}.elementor-widget-divider--view-line_icon .elementor-divider-separator,.elementor-widget-divider--view-line_text .elementor-divider-separator{align-items:center}.elementor-widget-divider--view-line_icon .elementor-divider-separator:after,.elementor-widget-divider--view-line_icon .elementor-divider-separator:before,.elementor-widget-divider--view-line_text .elementor-divider-separator:after,.elementor-widget-divider--view-line_text .elementor-divider-separator:before{display:block;content:"";border-block-end:0;flex-grow:1;border-block-start:var(--divider-border-width) var(--divider-border-style) var(--divider-color)}.elementor-widget-divider--element-align-left .elementor-divider .elementor-divider-separator>.elementor-divider__svg:first-of-type{flex-grow:0;flex-shrink:100}.elementor-widget-divider--element-align-left .elementor-divider-separator:before{content:none}.elementor-widget-divider--element-align-left .elementor-divider__element{margin-left:0}.elementor-widget-divider--element-align-right .elementor-divider .elementor-divider-separator>.elementor-divider__svg:last-of-type{flex-grow:0;flex-shrink:100}.elementor-widget-divider--element-align-right .elementor-divider-separator:after{content:none}.elementor-widget-divider--element-align-right .elementor-divider__element{margin-right:0}.elementor-widget-divider--element-align-start .elementor-divider .elementor-divider-separator>.elementor-divider__svg:first-of-type{flex-grow:0;flex-shrink:100}.elementor-widget-divider--element-align-start .elementor-divider-separator:before{content:none}.elementor-widget-divider--element-align-start .elementor-divider__element{margin-inline-start:0}.elementor-widget-divider--element-align-end .elementor-divider .elementor-divider-separator>.elementor-divider__svg:last-of-type{flex-grow:0;flex-shrink:100}.elementor-widget-divider--element-align-end .elementor-divider-separator:after{content:none}.elementor-widget-divider--element-align-end .elementor-divider__element{margin-inline-end:0}.elementor-widget-divider:not(.elementor-widget-divider--view-line_text):not(.elementor-widget-divider--view-line_icon) .elementor-divider-separator{border-block-start:var(--divider-border-width) var(--divider-border-style) var(--divider-color)}.elementor-widget-divider--separator-type-pattern{--divider-border-style:none}.elementor-widget-divider--separator-type-pattern.elementor-widget-divider--view-line .elementor-divider-separator,.elementor-widget-divider--separator-type-pattern:not(.elementor-widget-divider--view-line) .elementor-divider-separator:after,.elementor-widget-divider--separator-type-pattern:not(.elementor-widget-divider--view-line) .elementor-divider-separator:before,.elementor-widget-divider--separator-type-pattern:not([class*=elementor-widget-divider--view]) .elementor-divider-separator{width:100%;min-height:var(--divider-pattern-height);-webkit-mask-size:var(--divider-pattern-size) 100%;mask-size:var(--divider-pattern-size) 100%;-webkit-mask-repeat:var(--divider-pattern-repeat);mask-repeat:var(--divider-pattern-repeat);background-color:var(--divider-color);-webkit-mask-image:var(--divider-pattern-url);mask-image:var(--divider-pattern-url)}.elementor-widget-divider--no-spacing{--divider-pattern-size:auto}.elementor-widget-divider--bg-round{--divider-pattern-repeat:round}.rtl .elementor-widget-divider .elementor-divider__text{direction:rtl}.e-con-inner>.elementor-widget-divider,.e-con>.elementor-widget-divider{width:var(--container-widget-width,100%);--flex-grow:var(--container-widget-flex-grow)}.elementor-image-gallery .gallery-item{display:inline-block;text-align:center;vertical-align:top;width:100%;max-width:100%;margin:0 auto}.elementor-image-gallery .gallery-item img{margin:0 auto}.elementor-image-gallery .gallery-item .gallery-caption{margin:0}.elementor-image-gallery figure img{display:block}.elementor-image-gallery figure figcaption{width:100%}.gallery-spacing-custom .elementor-image-gallery .gallery-icon{padding:0}@media (min-width:768px){.elementor-image-gallery .gallery-columns-2 .gallery-item{max-width:50%}.elementor-image-gallery .gallery-columns-3 .gallery-item{max-width:33.33%}.elementor-image-gallery .gallery-columns-4 .gallery-item{max-width:25%}.elementor-image-gallery .gallery-columns-5 .gallery-item{max-width:20%}.elementor-image-gallery .gallery-columns-6 .gallery-item{max-width:16.666%}.elementor-image-gallery .gallery-columns-7 .gallery-item{max-width:14.28%}.elementor-image-gallery .gallery-columns-8 .gallery-item{max-width:12.5%}.elementor-image-gallery .gallery-columns-9 .gallery-item{max-width:11.11%}.elementor-image-gallery .gallery-columns-10 .gallery-item{max-width:10%}}@media (min-width:480px) and (max-width:767px){.elementor-image-gallery .gallery.gallery-columns-2 .gallery-item,.elementor-image-gallery .gallery.gallery-columns-3 .gallery-item,.elementor-image-gallery .gallery.gallery-columns-4 .gallery-item,.elementor-image-gallery .gallery.gallery-columns-5 .gallery-item,.elementor-image-gallery .gallery.gallery-columns-6 .gallery-item,.elementor-image-gallery .gallery.gallery-columns-7 .gallery-item,.elementor-image-gallery .gallery.gallery-columns-8 .gallery-item,.elementor-image-gallery .gallery.gallery-columns-9 .gallery-item,.elementor-image-gallery .gallery.gallery-columns-10 .gallery-item{max-width:50%}}@media (max-width:479px){.elementor-image-gallery .gallery.gallery-columns-2 .gallery-item,.elementor-image-gallery .gallery.gallery-columns-3 .gallery-item,.elementor-image-gallery .gallery.gallery-columns-4 .gallery-item,.elementor-image-gallery .gallery.gallery-columns-5 .gallery-item,.elementor-image-gallery .gallery.gallery-columns-6 .gallery-item,.elementor-image-gallery .gallery.gallery-columns-7 .gallery-item,.elementor-image-gallery .gallery.gallery-columns-8 .gallery-item,.elementor-image-gallery .gallery.gallery-columns-9 .gallery-item,.elementor-image-gallery .gallery.gallery-columns-10 .gallery-item{max-width:100%}}.elementor-widget-google_maps .elementor-widget-container{overflow:hidden}.elementor-widget-google_maps .elementor-custom-embed{line-height:0}.elementor-widget-google_maps iframe{height:300px}.elementor-heading-title{padding:0;margin:0;line-height:1}.elementor-widget-heading .elementor-heading-title[class*=elementor-size-]>a{color:inherit;font-size:inherit;line-height:inherit}.elementor-widget-heading .elementor-heading-title.elementor-size-small{font-size:15px}.elementor-widget-heading .elementor-heading-title.elementor-size-medium{font-size:19px}.elementor-widget-heading .elementor-heading-title.elementor-size-large{font-size:29px}.elementor-widget-heading .elementor-heading-title.elementor-size-xl{font-size:39px}.elementor-widget-heading .elementor-heading-title.elementor-size-xxl{font-size:59px}.elementor-widget-icon-box .elementor-icon-box-wrapper{display:block;text-align:center}.elementor-widget-icon-box .elementor-icon-box-icon{margin-bottom:var(--icon-box-icon-margin,15px);margin-right:auto;margin-left:auto}@media (min-width:768px){.elementor-widget-icon-box.elementor-vertical-align-top .elementor-icon-box-wrapper{align-items:flex-start}.elementor-widget-icon-box.elementor-vertical-align-middle .elementor-icon-box-wrapper{align-items:center}.elementor-widget-icon-box.elementor-vertical-align-bottom .elementor-icon-box-wrapper{align-items:flex-end}}.elementor-widget-icon-box.elementor-position-left .elementor-icon-box-wrapper,.elementor-widget-icon-box.elementor-position-right .elementor-icon-box-wrapper{display:flex}.elementor-widget-icon-box.elementor-position-left .elementor-icon-box-icon,.elementor-widget-icon-box.elementor-position-right .elementor-icon-box-icon{display:inline-flex;flex:0 0 auto}.elementor-widget-icon-box.elementor-position-right .elementor-icon-box-wrapper{text-align:left;flex-direction:row}.elementor-widget-icon-box.elementor-position-right .elementor-icon-box-icon{margin-left:var(--icon-box-icon-margin,15px);margin-right:0;margin-bottom:unset}.elementor-widget-icon-box.elementor-position-left .elementor-icon-box-wrapper{text-align:right;flex-direction:row-reverse}.elementor-widget-icon-box.elementor-position-left .elementor-icon-box-icon{margin-right:var(--icon-box-icon-margin,15px);margin-left:0;margin-bottom:unset}.elementor-widget-icon-box.elementor-position-top .elementor-icon-box-wrapper{display:block;text-align:center;flex-direction:unset}.elementor-widget-icon-box.elementor-position-top .elementor-icon-box-icon{margin-bottom:var(--icon-box-icon-margin,15px);margin-right:auto;margin-left:auto}@media (min-width:-1){.elementor-widget-icon-box.elementor-widescreen-position-left .elementor-icon-box-wrapper,.elementor-widget-icon-box.elementor-widescreen-position-right .elementor-icon-box-wrapper{display:flex}.elementor-widget-icon-box.elementor-widescreen-position-left .elementor-icon-box-icon,.elementor-widget-icon-box.elementor-widescreen-position-right .elementor-icon-box-icon{display:inline-flex;flex:0 0 auto}.elementor-widget-icon-box.elementor-widescreen-position-right .elementor-icon-box-wrapper{text-align:left;flex-direction:row}.elementor-widget-icon-box.elementor-widescreen-position-right .elementor-icon-box-icon{margin-left:var(--icon-box-icon-margin,15px);margin-right:0;margin-bottom:unset}.elementor-widget-icon-box.elementor-widescreen-position-left .elementor-icon-box-wrapper{text-align:right;flex-direction:row-reverse}.elementor-widget-icon-box.elementor-widescreen-position-left .elementor-icon-box-icon{margin-right:var(--icon-box-icon-margin,15px);margin-left:0;margin-bottom:unset}.elementor-widget-icon-box.elementor-widescreen-position-top .elementor-icon-box-wrapper{display:block;text-align:center;flex-direction:unset}.elementor-widget-icon-box.elementor-widescreen-position-top .elementor-icon-box-icon{margin-bottom:var(--icon-box-icon-margin,15px);margin-right:auto;margin-left:auto}}@media (max-width:-1){.elementor-widget-icon-box.elementor-laptop-position-left .elementor-icon-box-wrapper,.elementor-widget-icon-box.elementor-laptop-position-right .elementor-icon-box-wrapper{display:flex}.elementor-widget-icon-box.elementor-laptop-position-left .elementor-icon-box-icon,.elementor-widget-icon-box.elementor-laptop-position-right .elementor-icon-box-icon{display:inline-flex;flex:0 0 auto}.elementor-widget-icon-box.elementor-laptop-position-right .elementor-icon-box-wrapper{text-align:left;flex-direction:row}.elementor-widget-icon-box.elementor-laptop-position-right .elementor-icon-box-icon{margin-left:var(--icon-box-icon-margin,15px);margin-right:0;margin-bottom:unset}.elementor-widget-icon-box.elementor-laptop-position-left .elementor-icon-box-wrapper{text-align:right;flex-direction:row-reverse}.elementor-widget-icon-box.elementor-laptop-position-left .elementor-icon-box-icon{margin-right:var(--icon-box-icon-margin,15px);margin-left:0;margin-bottom:unset}.elementor-widget-icon-box.elementor-laptop-position-top .elementor-icon-box-wrapper{display:block;text-align:center;flex-direction:unset}.elementor-widget-icon-box.elementor-laptop-position-top .elementor-icon-box-icon{margin-bottom:var(--icon-box-icon-margin,15px);margin-right:auto;margin-left:auto}}@media (max-width:-1){.elementor-widget-icon-box.elementor-tablet_extra-position-left .elementor-icon-box-wrapper,.elementor-widget-icon-box.elementor-tablet_extra-position-right .elementor-icon-box-wrapper{display:flex}.elementor-widget-icon-box.elementor-tablet_extra-position-left .elementor-icon-box-icon,.elementor-widget-icon-box.elementor-tablet_extra-position-right .elementor-icon-box-icon{display:inline-flex;flex:0 0 auto}.elementor-widget-icon-box.elementor-tablet_extra-position-right .elementor-icon-box-wrapper{text-align:left;flex-direction:row}.elementor-widget-icon-box.elementor-tablet_extra-position-right .elementor-icon-box-icon{margin-left:var(--icon-box-icon-margin,15px);margin-right:0;margin-bottom:unset}.elementor-widget-icon-box.elementor-tablet_extra-position-left .elementor-icon-box-wrapper{text-align:right;flex-direction:row-reverse}.elementor-widget-icon-box.elementor-tablet_extra-position-left .elementor-icon-box-icon{margin-right:var(--icon-box-icon-margin,15px);margin-left:0;margin-bottom:unset}.elementor-widget-icon-box.elementor-tablet_extra-position-top .elementor-icon-box-wrapper{display:block;text-align:center;flex-direction:unset}.elementor-widget-icon-box.elementor-tablet_extra-position-top .elementor-icon-box-icon{margin-bottom:var(--icon-box-icon-margin,15px);margin-right:auto;margin-left:auto}}@media (max-width:1024px){.elementor-widget-icon-box.elementor-tablet-position-left .elementor-icon-box-wrapper,.elementor-widget-icon-box.elementor-tablet-position-right .elementor-icon-box-wrapper{display:flex}.elementor-widget-icon-box.elementor-tablet-position-left .elementor-icon-box-icon,.elementor-widget-icon-box.elementor-tablet-position-right .elementor-icon-box-icon{display:inline-flex;flex:0 0 auto}.elementor-widget-icon-box.elementor-tablet-position-right .elementor-icon-box-wrapper{text-align:left;flex-direction:row}.elementor-widget-icon-box.elementor-tablet-position-right .elementor-icon-box-icon{margin-left:var(--icon-box-icon-margin,15px);margin-right:0;margin-bottom:unset}.elementor-widget-icon-box.elementor-tablet-position-left .elementor-icon-box-wrapper{text-align:right;flex-direction:row-reverse}.elementor-widget-icon-box.elementor-tablet-position-left .elementor-icon-box-icon{margin-right:var(--icon-box-icon-margin,15px);margin-left:0;margin-bottom:unset}.elementor-widget-icon-box.elementor-tablet-position-top .elementor-icon-box-wrapper{display:block;text-align:center;flex-direction:unset}.elementor-widget-icon-box.elementor-tablet-position-top .elementor-icon-box-icon{margin-bottom:var(--icon-box-icon-margin,15px);margin-right:auto;margin-left:auto}}@media (max-width:-1){.elementor-widget-icon-box.elementor-mobile_extra-position-left .elementor-icon-box-wrapper,.elementor-widget-icon-box.elementor-mobile_extra-position-right .elementor-icon-box-wrapper{display:flex}.elementor-widget-icon-box.elementor-mobile_extra-position-left .elementor-icon-box-icon,.elementor-widget-icon-box.elementor-mobile_extra-position-right .elementor-icon-box-icon{display:inline-flex;flex:0 0 auto}.elementor-widget-icon-box.elementor-mobile_extra-position-right .elementor-icon-box-wrapper{text-align:left;flex-direction:row}.elementor-widget-icon-box.elementor-mobile_extra-position-right .elementor-icon-box-icon{margin-left:var(--icon-box-icon-margin,15px);margin-right:0;margin-bottom:unset}.elementor-widget-icon-box.elementor-mobile_extra-position-left .elementor-icon-box-wrapper{text-align:right;flex-direction:row-reverse}.elementor-widget-icon-box.elementor-mobile_extra-position-left .elementor-icon-box-icon{margin-right:var(--icon-box-icon-margin,15px);margin-left:0;margin-bottom:unset}.elementor-widget-icon-box.elementor-mobile_extra-position-top .elementor-icon-box-wrapper{display:block;text-align:center;flex-direction:unset}.elementor-widget-icon-box.elementor-mobile_extra-position-top .elementor-icon-box-icon{margin-bottom:var(--icon-box-icon-margin,15px);margin-right:auto;margin-left:auto}}@media (max-width:767px){.elementor-widget-icon-box.elementor-mobile-position-left .elementor-icon-box-wrapper,.elementor-widget-icon-box.elementor-mobile-position-right .elementor-icon-box-wrapper{display:flex}.elementor-widget-icon-box.elementor-mobile-position-left .elementor-icon-box-icon,.elementor-widget-icon-box.elementor-mobile-position-right .elementor-icon-box-icon{display:inline-flex;flex:0 0 auto}.elementor-widget-icon-box.elementor-mobile-position-right .elementor-icon-box-wrapper{text-align:left;flex-direction:row}.elementor-widget-icon-box.elementor-mobile-position-right .elementor-icon-box-icon{margin-left:var(--icon-box-icon-margin,15px);margin-right:0;margin-bottom:unset}.elementor-widget-icon-box.elementor-mobile-position-left .elementor-icon-box-wrapper{text-align:right;flex-direction:row-reverse}.elementor-widget-icon-box.elementor-mobile-position-left .elementor-icon-box-icon{margin-right:var(--icon-box-icon-margin,15px);margin-left:0;margin-bottom:unset}.elementor-widget-icon-box.elementor-mobile-position-top .elementor-icon-box-wrapper{display:block;text-align:center;flex-direction:unset}.elementor-widget-icon-box.elementor-mobile-position-top .elementor-icon-box-icon{margin-bottom:var(--icon-box-icon-margin,15px);margin-right:auto;margin-left:auto}.elementor-widget-icon-box.elementor-position-left .elementor-icon-box-icon,.elementor-widget-icon-box.elementor-position-right .elementor-icon-box-icon{display:block;flex:unset}}.elementor-widget-icon-box .elementor-icon-box-title a{color:inherit}.elementor-widget-icon-box .elementor-icon-box-content{flex-grow:1}.elementor-widget-icon-box .elementor-icon-box-description{margin:0}.elementor-widget.elementor-icon-list--layout-inline .elementor-widget-container{overflow:hidden}.elementor-widget .elementor-icon-list-items.elementor-inline-items{margin-right:-8px;margin-left:-8px}.elementor-widget .elementor-icon-list-items.elementor-inline-items .elementor-icon-list-item{margin-right:8px;margin-left:8px}.elementor-widget .elementor-icon-list-items.elementor-inline-items .elementor-icon-list-item:after{width:auto;left:auto;right:auto;position:relative;height:100%;border-top:0;border-bottom:0;border-right:0;border-left-width:1px;border-style:solid;left:-8px}.elementor-widget .elementor-icon-list-items{list-style-type:none;margin:0;padding:0}.elementor-widget .elementor-icon-list-item{margin:0;padding:0;position:relative}.elementor-widget .elementor-icon-list-item:after{position:absolute;bottom:0;width:100%}.elementor-widget .elementor-icon-list-item,.elementor-widget .elementor-icon-list-item a{display:flex;font-size:inherit;align-items:var(--icon-vertical-align,center)}.elementor-widget .elementor-icon-list-icon+.elementor-icon-list-text{align-self:center;padding-right:5px}.elementor-widget .elementor-icon-list-icon{display:flex;position:relative;top:var(--icon-vertical-offset,initial)}.elementor-widget .elementor-icon-list-icon svg{width:var(--e-icon-list-icon-size,1em);height:var(--e-icon-list-icon-size,1em)}.elementor-widget .elementor-icon-list-icon i{width:1.25em;font-size:var(--e-icon-list-icon-size)}.elementor-widget.elementor-widget-icon-list .elementor-icon-list-icon{text-align:var(--e-icon-list-icon-align)}.elementor-widget.elementor-widget-icon-list .elementor-icon-list-icon svg{margin:var(--e-icon-list-icon-margin,0 calc(var(--e-icon-list-icon-size, 1em) * .25) 0 0)}.elementor-widget.elementor-list-item-link-full_width a{width:100%}.elementor-widget.elementor-align-center .elementor-icon-list-item,.elementor-widget.elementor-align-center .elementor-icon-list-item a{justify-content:center}.elementor-widget.elementor-align-center .elementor-icon-list-item:after{margin:auto}.elementor-widget.elementor-align-center .elementor-inline-items{justify-content:center}.elementor-widget.elementor-align-left .elementor-icon-list-item,.elementor-widget.elementor-align-left .elementor-icon-list-item a{justify-content:flex-end;text-align:left}.elementor-widget.elementor-align-left .elementor-inline-items{justify-content:flex-end}.elementor-widget.elementor-align-right .elementor-icon-list-item,.elementor-widget.elementor-align-right .elementor-icon-list-item a{justify-content:flex-start;text-align:right}.elementor-widget.elementor-align-right .elementor-icon-list-items{justify-content:flex-start}.elementor-widget:not(.elementor-align-right) .elementor-icon-list-item:after{right:0}.elementor-widget:not(.elementor-align-left) .elementor-icon-list-item:after{left:0}@media (min-width:-1){.elementor-widget.elementor-widescreen-align-center .elementor-icon-list-item,.elementor-widget.elementor-widescreen-align-center .elementor-icon-list-item a{justify-content:center}.elementor-widget.elementor-widescreen-align-center .elementor-icon-list-item:after{margin:auto}.elementor-widget.elementor-widescreen-align-center .elementor-inline-items{justify-content:center}.elementor-widget.elementor-widescreen-align-left .elementor-icon-list-item,.elementor-widget.elementor-widescreen-align-left .elementor-icon-list-item a{justify-content:flex-end;text-align:left}.elementor-widget.elementor-widescreen-align-left .elementor-inline-items{justify-content:flex-end}.elementor-widget.elementor-widescreen-align-right .elementor-icon-list-item,.elementor-widget.elementor-widescreen-align-right .elementor-icon-list-item a{justify-content:flex-start;text-align:right}.elementor-widget.elementor-widescreen-align-right .elementor-icon-list-items{justify-content:flex-start}.elementor-widget:not(.elementor-widescreen-align-right) .elementor-icon-list-item:after{right:0}.elementor-widget:not(.elementor-widescreen-align-left) .elementor-icon-list-item:after{left:0}}@media (max-width:-1){.elementor-widget.elementor-laptop-align-center .elementor-icon-list-item,.elementor-widget.elementor-laptop-align-center .elementor-icon-list-item a{justify-content:center}.elementor-widget.elementor-laptop-align-center .elementor-icon-list-item:after{margin:auto}.elementor-widget.elementor-laptop-align-center .elementor-inline-items{justify-content:center}.elementor-widget.elementor-laptop-align-left .elementor-icon-list-item,.elementor-widget.elementor-laptop-align-left .elementor-icon-list-item a{justify-content:flex-end;text-align:left}.elementor-widget.elementor-laptop-align-left .elementor-inline-items{justify-content:flex-end}.elementor-widget.elementor-laptop-align-right .elementor-icon-list-item,.elementor-widget.elementor-laptop-align-right .elementor-icon-list-item a{justify-content:flex-start;text-align:right}.elementor-widget.elementor-laptop-align-right .elementor-icon-list-items{justify-content:flex-start}.elementor-widget:not(.elementor-laptop-align-right) .elementor-icon-list-item:after{right:0}.elementor-widget:not(.elementor-laptop-align-left) .elementor-icon-list-item:after{left:0}}@media (max-width:-1){.elementor-widget.elementor-tablet_extra-align-center .elementor-icon-list-item,.elementor-widget.elementor-tablet_extra-align-center .elementor-icon-list-item a{justify-content:center}.elementor-widget.elementor-tablet_extra-align-center .elementor-icon-list-item:after{margin:auto}.elementor-widget.elementor-tablet_extra-align-center .elementor-inline-items{justify-content:center}.elementor-widget.elementor-tablet_extra-align-left .elementor-icon-list-item,.elementor-widget.elementor-tablet_extra-align-left .elementor-icon-list-item a{justify-content:flex-end;text-align:left}.elementor-widget.elementor-tablet_extra-align-left .elementor-inline-items{justify-content:flex-end}.elementor-widget.elementor-tablet_extra-align-right .elementor-icon-list-item,.elementor-widget.elementor-tablet_extra-align-right .elementor-icon-list-item a{justify-content:flex-start;text-align:right}.elementor-widget.elementor-tablet_extra-align-right .elementor-icon-list-items{justify-content:flex-start}.elementor-widget:not(.elementor-tablet_extra-align-right) .elementor-icon-list-item:after{right:0}.elementor-widget:not(.elementor-tablet_extra-align-left) .elementor-icon-list-item:after{left:0}}@media (max-width:1024px){.elementor-widget.elementor-tablet-align-center .elementor-icon-list-item,.elementor-widget.elementor-tablet-align-center .elementor-icon-list-item a{justify-content:center}.elementor-widget.elementor-tablet-align-center .elementor-icon-list-item:after{margin:auto}.elementor-widget.elementor-tablet-align-center .elementor-inline-items{justify-content:center}.elementor-widget.elementor-tablet-align-left .elementor-icon-list-item,.elementor-widget.elementor-tablet-align-left .elementor-icon-list-item a{justify-content:flex-end;text-align:left}.elementor-widget.elementor-tablet-align-left .elementor-inline-items{justify-content:flex-end}.elementor-widget.elementor-tablet-align-right .elementor-icon-list-item,.elementor-widget.elementor-tablet-align-right .elementor-icon-list-item a{justify-content:flex-start;text-align:right}.elementor-widget.elementor-tablet-align-right .elementor-icon-list-items{justify-content:flex-start}.elementor-widget:not(.elementor-tablet-align-right) .elementor-icon-list-item:after{right:0}.elementor-widget:not(.elementor-tablet-align-left) .elementor-icon-list-item:after{left:0}}@media (max-width:-1){.elementor-widget.elementor-mobile_extra-align-center .elementor-icon-list-item,.elementor-widget.elementor-mobile_extra-align-center .elementor-icon-list-item a{justify-content:center}.elementor-widget.elementor-mobile_extra-align-center .elementor-icon-list-item:after{margin:auto}.elementor-widget.elementor-mobile_extra-align-center .elementor-inline-items{justify-content:center}.elementor-widget.elementor-mobile_extra-align-left .elementor-icon-list-item,.elementor-widget.elementor-mobile_extra-align-left .elementor-icon-list-item a{justify-content:flex-end;text-align:left}.elementor-widget.elementor-mobile_extra-align-left .elementor-inline-items{justify-content:flex-end}.elementor-widget.elementor-mobile_extra-align-right .elementor-icon-list-item,.elementor-widget.elementor-mobile_extra-align-right .elementor-icon-list-item a{justify-content:flex-start;text-align:right}.elementor-widget.elementor-mobile_extra-align-right .elementor-icon-list-items{justify-content:flex-start}.elementor-widget:not(.elementor-mobile_extra-align-right) .elementor-icon-list-item:after{right:0}.elementor-widget:not(.elementor-mobile_extra-align-left) .elementor-icon-list-item:after{left:0}}@media (max-width:767px){.elementor-widget.elementor-mobile-align-center .elementor-icon-list-item,.elementor-widget.elementor-mobile-align-center .elementor-icon-list-item a{justify-content:center}.elementor-widget.elementor-mobile-align-center .elementor-icon-list-item:after{margin:auto}.elementor-widget.elementor-mobile-align-center .elementor-inline-items{justify-content:center}.elementor-widget.elementor-mobile-align-left .elementor-icon-list-item,.elementor-widget.elementor-mobile-align-left .elementor-icon-list-item a{justify-content:flex-end;text-align:left}.elementor-widget.elementor-mobile-align-left .elementor-inline-items{justify-content:flex-end}.elementor-widget.elementor-mobile-align-right .elementor-icon-list-item,.elementor-widget.elementor-mobile-align-right .elementor-icon-list-item a{justify-content:flex-start;text-align:right}.elementor-widget.elementor-mobile-align-right .elementor-icon-list-items{justify-content:flex-start}.elementor-widget:not(.elementor-mobile-align-right) .elementor-icon-list-item:after{right:0}.elementor-widget:not(.elementor-mobile-align-left) .elementor-icon-list-item:after{left:0}}.elementor-widget-image{text-align:center}.elementor-widget-image a{display:inline-block}.elementor-widget-image a img[src$=".svg"]{width:48px}.elementor-widget-image img{vertical-align:middle;display:inline-block}.elementor-widget-image-box .elementor-image-box-content{width:100%}@media (min-width:768px){.elementor-widget-image-box.elementor-position-left .elementor-image-box-wrapper,.elementor-widget-image-box.elementor-position-right .elementor-image-box-wrapper{display:flex}.elementor-widget-image-box.elementor-position-right .elementor-image-box-wrapper{text-align:left;flex-direction:row}.elementor-widget-image-box.elementor-position-left .elementor-image-box-wrapper{text-align:right;flex-direction:row-reverse}.elementor-widget-image-box.elementor-position-top .elementor-image-box-img{margin:auto}.elementor-widget-image-box.elementor-vertical-align-top .elementor-image-box-wrapper{align-items:flex-start}.elementor-widget-image-box.elementor-vertical-align-middle .elementor-image-box-wrapper{align-items:center}.elementor-widget-image-box.elementor-vertical-align-bottom .elementor-image-box-wrapper{align-items:flex-end}}@media (max-width:767px){.elementor-widget-image-box .elementor-image-box-img{margin-left:auto!important;margin-right:auto!important;margin-bottom:15px}}.elementor-widget-image-box .elementor-image-box-img{display:inline-block}.elementor-widget-image-box .elementor-image-box-title a{color:inherit}.elementor-widget-image-box .elementor-image-box-wrapper{text-align:center}.elementor-widget-image-box .elementor-image-box-description{margin:0}.elementor-widget-image-carousel .swiper,.elementor-widget-image-carousel .swiper-container{position:static}.elementor-widget-image-carousel .swiper-container .swiper-slide figure,.elementor-widget-image-carousel .swiper .swiper-slide figure{line-height:inherit}.elementor-widget-image-carousel .swiper-slide{text-align:center}.elementor-image-carousel-wrapper:not(.swiper-container-initialized):not(.swiper-initialized) .swiper-slide{max-width:calc(100% / var(--e-image-carousel-slides-to-show, 3))}body.elementor-page .elementor-widget-menu-anchor{margin-bottom:0}.elementor-widget-progress{text-align:right}.elementor-progress-wrapper{position:relative;background-color:#eee;color:#fff;height:100%;border-radius:2px}.elementor-progress-bar{display:flex;background-color:#69727d;width:0;font-size:11px;height:30px;line-height:30px;border-radius:2px;transition:width 1s ease-in-out}.elementor-progress-text{flex-grow:1;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;padding-right:15px}.elementor-progress-percentage{padding-left:15px}.elementor-widget-progress .elementor-progress-wrapper.progress-info .elementor-progress-bar{background-color:#5bc0de}.elementor-widget-progress .elementor-progress-wrapper.progress-success .elementor-progress-bar{background-color:#5cb85c}.elementor-widget-progress .elementor-progress-wrapper.progress-warning .elementor-progress-bar{background-color:#f0ad4e}.elementor-widget-progress .elementor-progress-wrapper.progress-danger .elementor-progress-bar{background-color:#d9534f}.elementor-progress .elementor-title{display:block}@media (max-width:767px){.elementor-progress-text{padding-right:10px}}.e-con-inner .elementor-progress-wrapper,.e-con .elementor-progress-wrapper{height:auto}.elementor-widget-social-icons.elementor-grid-0 .elementor-widget-container,.elementor-widget-social-icons.elementor-grid-mobile-0 .elementor-widget-container,.elementor-widget-social-icons.elementor-grid-tablet-0 .elementor-widget-container{line-height:1;font-size:0}.elementor-widget-social-icons:not(.elementor-grid-0):not(.elementor-grid-tablet-0):not(.elementor-grid-mobile-0) .elementor-grid{display:inline-grid}.elementor-widget-social-icons .elementor-grid{grid-column-gap:var(--grid-column-gap,5px);grid-row-gap:var(--grid-row-gap,5px);grid-template-columns:var(--grid-template-columns);justify-content:var(--justify-content,center);justify-items:var(--justify-content,center)}.elementor-icon.elementor-social-icon{font-size:var(--icon-size,25px);line-height:var(--icon-size,25px);width:calc(var(--icon-size, 25px) + 2 * var(--icon-padding, .5em));height:calc(var(--icon-size, 25px) + 2 * var(--icon-padding, .5em))}.elementor-social-icon{--e-social-icon-icon-color:#fff;display:inline-flex;background-color:#69727d;align-items:center;justify-content:center;text-align:center;cursor:pointer}.elementor-social-icon i{color:var(--e-social-icon-icon-color)}.elementor-social-icon svg{fill:var(--e-social-icon-icon-color)}.elementor-social-icon:last-child{margin:0}.elementor-social-icon:hover{opacity:.9;color:#fff}.elementor-social-icon-android{background-color:#a4c639}.elementor-social-icon-apple{background-color:#999}.elementor-social-icon-behance{background-color:#1769ff}.elementor-social-icon-bitbucket{background-color:#205081}.elementor-social-icon-codepen{background-color:#000}.elementor-social-icon-delicious{background-color:#39f}.elementor-social-icon-deviantart{background-color:#05cc47}.elementor-social-icon-digg{background-color:#005be2}.elementor-social-icon-dribbble{background-color:#ea4c89}.elementor-social-icon-elementor{background-color:#d30c5c}.elementor-social-icon-envelope{background-color:#ea4335}.elementor-social-icon-facebook,.elementor-social-icon-facebook-f{background-color:#3b5998}.elementor-social-icon-flickr{background-color:#0063dc}.elementor-social-icon-foursquare{background-color:#2d5be3}.elementor-social-icon-free-code-camp,.elementor-social-icon-freecodecamp{background-color:#006400}.elementor-social-icon-github{background-color:#333}.elementor-social-icon-gitlab{background-color:#e24329}.elementor-social-icon-globe{background-color:#69727d}.elementor-social-icon-google-plus,.elementor-social-icon-google-plus-g{background-color:#dd4b39}.elementor-social-icon-houzz{background-color:#7ac142}.elementor-social-icon-instagram{background-color:#262626}.elementor-social-icon-jsfiddle{background-color:#487aa2}.elementor-social-icon-link{background-color:#818a91}.elementor-social-icon-linkedin,.elementor-social-icon-linkedin-in{background-color:#0077b5}.elementor-social-icon-medium{background-color:#00ab6b}.elementor-social-icon-meetup{background-color:#ec1c40}.elementor-social-icon-mixcloud{background-color:#273a4b}.elementor-social-icon-odnoklassniki{background-color:#f4731c}.elementor-social-icon-pinterest{background-color:#bd081c}.elementor-social-icon-product-hunt{background-color:#da552f}.elementor-social-icon-reddit{background-color:#ff4500}.elementor-social-icon-rss{background-color:#f26522}.elementor-social-icon-shopping-cart{background-color:#4caf50}.elementor-social-icon-skype{background-color:#00aff0}.elementor-social-icon-slideshare{background-color:#0077b5}.elementor-social-icon-snapchat{background-color:#fffc00}.elementor-social-icon-soundcloud{background-color:#f80}.elementor-social-icon-spotify{background-color:#2ebd59}.elementor-social-icon-stack-overflow{background-color:#fe7a15}.elementor-social-icon-steam{background-color:#00adee}.elementor-social-icon-stumbleupon{background-color:#eb4924}.elementor-social-icon-telegram{background-color:#2ca5e0}.elementor-social-icon-threads{background-color:#000}.elementor-social-icon-thumb-tack{background-color:#1aa1d8}.elementor-social-icon-tripadvisor{background-color:#589442}.elementor-social-icon-tumblr{background-color:#35465c}.elementor-social-icon-twitch{background-color:#6441a5}.elementor-social-icon-twitter{background-color:#1da1f2}.elementor-social-icon-viber{background-color:#665cac}.elementor-social-icon-vimeo{background-color:#1ab7ea}.elementor-social-icon-vk{background-color:#45668e}.elementor-social-icon-weibo{background-color:#dd2430}.elementor-social-icon-weixin{background-color:#31a918}.elementor-social-icon-whatsapp{background-color:#25d366}.elementor-social-icon-wordpress{background-color:#21759b}.elementor-social-icon-x-twitter{background-color:#000}.elementor-social-icon-xing{background-color:#026466}.elementor-social-icon-yelp{background-color:#af0606}.elementor-social-icon-youtube{background-color:#cd201f}.elementor-social-icon-500px{background-color:#0099e5}.elementor-shape-rounded .elementor-icon.elementor-social-icon{border-radius:10%}.elementor-shape-circle .elementor-icon.elementor-social-icon{border-radius:50%}.elementor-column .elementor-spacer-inner{height:var(--spacer-size)}.e-con{--container-widget-width:100%}.e-con-inner>.elementor-widget-spacer,.e-con>.elementor-widget-spacer{width:var(--container-widget-width,var(--spacer-size));--align-self:var(--container-widget-align-self,initial);--flex-shrink:0}.e-con-inner>.elementor-widget-spacer>.elementor-widget-container,.e-con>.elementor-widget-spacer>.elementor-widget-container{height:100%;width:100%}.e-con-inner>.elementor-widget-spacer>.elementor-widget-container>.elementor-spacer,.e-con>.elementor-widget-spacer>.elementor-widget-container>.elementor-spacer{height:100%}.e-con-inner>.elementor-widget-spacer>.elementor-widget-container>.elementor-spacer>.elementor-spacer-inner,.e-con>.elementor-widget-spacer>.elementor-widget-container>.elementor-spacer>.elementor-spacer-inner{height:var(--container-widget-height,var(--spacer-size))}.e-con-inner>.elementor-widget-spacer.elementor-widget-empty,.e-con>.elementor-widget-spacer.elementor-widget-empty{position:relative;min-height:22px;min-width:22px}.e-con-inner>.elementor-widget-spacer.elementor-widget-empty .elementor-widget-empty-icon,.e-con>.elementor-widget-spacer.elementor-widget-empty .elementor-widget-empty-icon{position:absolute;top:0;bottom:0;left:0;right:0;margin:auto;padding:0;width:22px;height:22px}.elementor-star-rating{color:#ccd6df;font-family:eicons;display:inline-block}.elementor-star-rating i{display:inline-block;position:relative;font-style:normal;cursor:default}.elementor-star-rating i:before{content:"\e934";display:block;font-size:inherit;font-family:inherit;position:absolute;overflow:hidden;color:#f0ad4e;top:0;right:0}.elementor-star-rating .elementor-star-empty:before{content:none}.elementor-star-rating .elementor-star-1:before{width:10%}.elementor-star-rating .elementor-star-2:before{width:20%}.elementor-star-rating .elementor-star-3:before{width:30%}.elementor-star-rating .elementor-star-4:before{width:40%}.elementor-star-rating .elementor-star-5:before{width:50%}.elementor-star-rating .elementor-star-6:before{width:60%}.elementor-star-rating .elementor-star-7:before{width:70%}.elementor-star-rating .elementor-star-8:before{width:80%}.elementor-star-rating .elementor-star-9:before{width:90%}.elementor-star-rating__wrapper{display:flex;align-items:center}.elementor-star-rating__title{margin-left:10px}.elementor-star-rating--align-right .elementor-star-rating__wrapper{text-align:right;justify-content:flex-start}.elementor-star-rating--align-left .elementor-star-rating__wrapper{text-align:left;justify-content:flex-end}.elementor-star-rating--align-center .elementor-star-rating__wrapper{text-align:center;justify-content:center}.elementor-star-rating--align-justify .elementor-star-rating__title{margin-left:auto}@media (max-width:1024px){.elementor-star-rating-tablet--align-right .elementor-star-rating__wrapper{text-align:right;justify-content:flex-start}.elementor-star-rating-tablet--align-left .elementor-star-rating__wrapper{text-align:left;justify-content:flex-end}.elementor-star-rating-tablet--align-center .elementor-star-rating__wrapper{text-align:center;justify-content:center}.elementor-star-rating-tablet--align-justify .elementor-star-rating__title{margin-left:auto}}@media (max-width:767px){.elementor-star-rating-mobile--align-right .elementor-star-rating__wrapper{text-align:right;justify-content:flex-start}.elementor-star-rating-mobile--align-left .elementor-star-rating__wrapper{text-align:left;justify-content:flex-end}.elementor-star-rating-mobile--align-center .elementor-star-rating__wrapper{text-align:center;justify-content:center}.elementor-star-rating-mobile--align-justify .elementor-star-rating__title{margin-left:auto}}.last-star{letter-spacing:0}.elementor--star-style-star_unicode .elementor-star-rating{font-family:Arial,Helvetica,sans-serif}.elementor--star-style-star_unicode .elementor-star-rating i:not(.elementor-star-empty):before{content:"★"}.elementor-widget-tabs.elementor-tabs-view-vertical .elementor-tabs-wrapper{width:25%;flex-shrink:0}.elementor-widget-tabs.elementor-tabs-view-vertical .elementor-tab-desktop-title.elementor-active{border-left-style:none}.elementor-widget-tabs.elementor-tabs-view-vertical .elementor-tab-desktop-title.elementor-active:after,.elementor-widget-tabs.elementor-tabs-view-vertical .elementor-tab-desktop-title.elementor-active:before{height:999em;width:0;left:0;border-left-style:solid}.elementor-widget-tabs.elementor-tabs-view-vertical .elementor-tab-desktop-title.elementor-active:before{top:0;transform:translateY(-100%)}.elementor-widget-tabs.elementor-tabs-view-vertical .elementor-tab-desktop-title.elementor-active:after{top:100%}.elementor-widget-tabs.elementor-tabs-view-horizontal .elementor-tab-desktop-title{display:table-cell}.elementor-widget-tabs.elementor-tabs-view-horizontal .elementor-tab-desktop-title.elementor-active{border-bottom-style:none}.elementor-widget-tabs.elementor-tabs-view-horizontal .elementor-tab-desktop-title.elementor-active:after,.elementor-widget-tabs.elementor-tabs-view-horizontal .elementor-tab-desktop-title.elementor-active:before{bottom:0;height:0;width:999em;border-bottom-style:solid}.elementor-widget-tabs.elementor-tabs-view-horizontal .elementor-tab-desktop-title.elementor-active:before{right:100%}.elementor-widget-tabs.elementor-tabs-view-horizontal .elementor-tab-desktop-title.elementor-active:after{left:100%}.elementor-widget-tabs .elementor-tab-content,.elementor-widget-tabs .elementor-tab-title,.elementor-widget-tabs .elementor-tab-title:after,.elementor-widget-tabs .elementor-tab-title:before,.elementor-widget-tabs .elementor-tabs-content-wrapper{border:1px #d5d8dc}.elementor-widget-tabs .elementor-tabs{text-align:right}.elementor-widget-tabs .elementor-tabs-wrapper{overflow:hidden}.elementor-widget-tabs .elementor-tab-title{cursor:pointer;outline:var(--focus-outline,none)}.elementor-widget-tabs .elementor-tab-desktop-title{position:relative;padding:20px 25px;font-weight:700;line-height:1;border:solid transparent}.elementor-widget-tabs .elementor-tab-desktop-title.elementor-active{border-color:#d5d8dc}.elementor-widget-tabs .elementor-tab-desktop-title.elementor-active:after,.elementor-widget-tabs .elementor-tab-desktop-title.elementor-active:before{display:block;content:"";position:absolute}.elementor-widget-tabs .elementor-tab-desktop-title:focus-visible{border:1px solid #000}.elementor-widget-tabs .elementor-tab-mobile-title{padding:10px;cursor:pointer}.elementor-widget-tabs .elementor-tab-content{padding:20px;display:none}@media (max-width:767px){.elementor-tabs .elementor-tab-content,.elementor-tabs .elementor-tab-title{border-style:solid solid none}.elementor-tabs .elementor-tabs-wrapper{display:none}.elementor-tabs .elementor-tabs-content-wrapper{border-bottom-style:solid}.elementor-tabs .elementor-tab-content{padding:10px}}@media (min-width:768px){.elementor-widget-tabs.elementor-tabs-view-vertical .elementor-tabs{display:flex}.elementor-widget-tabs.elementor-tabs-view-vertical .elementor-tabs-wrapper{flex-direction:column}.elementor-widget-tabs.elementor-tabs-view-vertical .elementor-tabs-content-wrapper{flex-grow:1;border-style:solid none solid solid}.elementor-widget-tabs.elementor-tabs-view-horizontal .elementor-tab-content{border-style:none solid solid}.elementor-widget-tabs.elementor-tabs-alignment-center .elementor-tabs-wrapper,.elementor-widget-tabs.elementor-tabs-alignment-end .elementor-tabs-wrapper,.elementor-widget-tabs.elementor-tabs-alignment-stretch .elementor-tabs-wrapper{display:flex}.elementor-widget-tabs.elementor-tabs-alignment-center .elementor-tabs-wrapper{justify-content:center}.elementor-widget-tabs.elementor-tabs-alignment-end .elementor-tabs-wrapper{justify-content:flex-end}.elementor-widget-tabs.elementor-tabs-alignment-stretch.elementor-tabs-view-horizontal .elementor-tab-title{width:100%}.elementor-widget-tabs.elementor-tabs-alignment-stretch.elementor-tabs-view-vertical .elementor-tab-title{height:100%}.elementor-tabs .elementor-tab-mobile-title{display:none}}.elementor-testimonial-wrapper{overflow:hidden;text-align:center}.elementor-testimonial-wrapper .elementor-testimonial-content{font-size:1.3em;margin-bottom:20px}.elementor-testimonial-wrapper .elementor-testimonial-name{line-height:1.5;display:block}.elementor-testimonial-wrapper .elementor-testimonial-job{font-size:.85em;display:block}.elementor-testimonial-wrapper .elementor-testimonial-meta{width:100%;line-height:1}.elementor-testimonial-wrapper .elementor-testimonial-meta-inner{display:inline-block}.elementor-testimonial-wrapper .elementor-testimonial-meta .elementor-testimonial-details,.elementor-testimonial-wrapper .elementor-testimonial-meta .elementor-testimonial-image{display:table-cell;vertical-align:middle}.elementor-testimonial-wrapper .elementor-testimonial-meta .elementor-testimonial-image img{width:60px;height:60px;border-radius:50%;-o-object-fit:cover;object-fit:cover;max-width:none}.elementor-testimonial-wrapper .elementor-testimonial-meta.elementor-testimonial-image-position-aside .elementor-testimonial-image{padding-left:15px}.elementor-testimonial-wrapper .elementor-testimonial-meta.elementor-testimonial-image-position-aside .elementor-testimonial-details{text-align:right}.elementor-testimonial-wrapper .elementor-testimonial-meta.elementor-testimonial-image-position-top .elementor-testimonial-details,.elementor-testimonial-wrapper .elementor-testimonial-meta.elementor-testimonial-image-position-top .elementor-testimonial-image{display:block}.elementor-testimonial-wrapper .elementor-testimonial-meta.elementor-testimonial-image-position-top .elementor-testimonial-image{margin-bottom:20px}.elementor-widget-text-editor.elementor-drop-cap-view-stacked .elementor-drop-cap{background-color:#69727d;color:#fff}.elementor-widget-text-editor.elementor-drop-cap-view-framed .elementor-drop-cap{color:#69727d;border:3px solid;background-color:transparent}.elementor-widget-text-editor:not(.elementor-drop-cap-view-default) .elementor-drop-cap{margin-top:8px}.elementor-widget-text-editor:not(.elementor-drop-cap-view-default) .elementor-drop-cap-letter{width:1em;height:1em}.elementor-widget-text-editor .elementor-drop-cap{float:right;text-align:center;line-height:1;font-size:50px}.elementor-widget-text-editor .elementor-drop-cap-letter{display:inline-block}.elementor-toggle{text-align:right}.elementor-toggle .elementor-tab-title{font-weight:700;line-height:1;margin:0;padding:15px;border-bottom:1px solid #d5d8dc;cursor:pointer;outline:none}.elementor-toggle .elementor-tab-title .elementor-toggle-icon{display:inline-block;width:1em}.elementor-toggle .elementor-tab-title .elementor-toggle-icon svg{margin-inline-start:-5px;width:1em;height:1em}.elementor-toggle .elementor-tab-title .elementor-toggle-icon.elementor-toggle-icon-right{float:right;text-align:right}.elementor-toggle .elementor-tab-title .elementor-toggle-icon.elementor-toggle-icon-left{float:left;text-align:left}.elementor-toggle .elementor-tab-title .elementor-toggle-icon .elementor-toggle-icon-closed{display:block}.elementor-toggle .elementor-tab-title .elementor-toggle-icon .elementor-toggle-icon-opened{display:none}.elementor-toggle .elementor-tab-title.elementor-active{border-bottom:none}.elementor-toggle .elementor-tab-title.elementor-active .elementor-toggle-icon-closed{display:none}.elementor-toggle .elementor-tab-title.elementor-active .elementor-toggle-icon-opened{display:block}.elementor-toggle .elementor-tab-content{padding:15px;border-bottom:1px solid #d5d8dc;display:none}@media (max-width:767px){.elementor-toggle .elementor-tab-title{padding:12px}.elementor-toggle .elementor-tab-content{padding:12px 10px}}.e-con-inner>.elementor-widget-toggle,.e-con>.elementor-widget-toggle{width:var(--container-widget-width);--flex-grow:var(--container-widget-flex-grow)}.elementor-widget-video .elementor-widget-container{overflow:hidden;transform:translateZ(0)}.elementor-widget-video .elementor-wrapper{aspect-ratio:var(--video-aspect-ratio)}.elementor-widget-video .elementor-wrapper iframe,.elementor-widget-video .elementor-wrapper video{height:100%;width:100%;display:flex;border:none;background-color:#000}@supports not (aspect-ratio:1/1){.elementor-widget-video .elementor-wrapper{position:relative;overflow:hidden;height:0;padding-bottom:calc(100% / var(--video-aspect-ratio))}.elementor-widget-video .elementor-wrapper iframe,.elementor-widget-video .elementor-wrapper video{position:absolute;top:0;right:0;bottom:0;left:0}}.elementor-widget-video .elementor-open-inline .elementor-custom-embed-image-overlay{position:absolute;top:0;right:0;bottom:0;left:0;background-size:cover;background-position:50%}.elementor-widget-video .elementor-custom-embed-image-overlay{cursor:pointer;text-align:center}.elementor-widget-video .elementor-custom-embed-image-overlay:hover .elementor-custom-embed-play i{opacity:1}.elementor-widget-video .elementor-custom-embed-image-overlay img{display:block;width:100%;aspect-ratio:var(--video-aspect-ratio);-o-object-fit:cover;object-fit:cover;-o-object-position:center center;object-position:center center}@supports not (aspect-ratio:1/1){.elementor-widget-video .elementor-custom-embed-image-overlay{position:relative;overflow:hidden;height:0;padding-bottom:calc(100% / var(--video-aspect-ratio))}.elementor-widget-video .elementor-custom-embed-image-overlay img{position:absolute;top:0;right:0;bottom:0;left:0}}.elementor-widget-video .e-hosted-video .elementor-video{-o-object-fit:cover;object-fit:cover}.e-con-inner>.elementor-widget-video,.e-con>.elementor-widget-video{width:var(--container-widget-width);--flex-grow:var(--container-widget-flex-grow)}.elementor-widget-rating{--e-rating-gap:0px;--e-rating-icon-font-size:16px;--e-rating-icon-color:#ccd6df;--e-rating-icon-marked-color:#f0ad4e;--e-rating-icon-marked-width:100%;--e-rating-justify-content:flex-start}.elementor-widget-rating .e-rating{display:flex;justify-content:var(--e-rating-justify-content)}.elementor-widget-rating .e-rating-wrapper{display:flex;justify-content:inherit;flex-direction:row;flex-wrap:wrap;width:-moz-fit-content;width:fit-content;margin-block-end:calc(0px - var(--e-rating-gap));margin-inline-end:calc(0px - var(--e-rating-gap))}.elementor-widget-rating .e-rating .e-icon{position:relative;margin-block-end:var(--e-rating-gap);margin-inline-end:var(--e-rating-gap)}.elementor-widget-rating .e-rating .e-icon-wrapper.e-icon-marked{--e-rating-icon-color:var(--e-rating-icon-marked-color);width:var(--e-rating-icon-marked-width);position:absolute;z-index:1;height:100%;left:0;top:0;overflow:hidden}.elementor-widget-rating .e-rating .e-icon-wrapper :is(i,svg){display:flex;flex-shrink:0}.elementor-widget-rating .e-rating .e-icon-wrapper i{font-size:var(--e-rating-icon-font-size);color:var(--e-rating-icon-color)}.elementor-widget-rating .e-rating .e-icon-wrapper svg{width:auto;height:var(--e-rating-icon-font-size);fill:var(--e-rating-icon-color)} \ No newline at end of file diff --git a/wp-content/plugins/elementor/assets/css/frontend.css b/wp-content/plugins/elementor/assets/css/frontend.css new file mode 100644 index 0000000..f239d3e --- /dev/null +++ b/wp-content/plugins/elementor/assets/css/frontend.css @@ -0,0 +1,5692 @@ +/*! elementor - v3.20.0 - 26-03-2024 */ +@charset "UTF-8"; +.dialog-widget-content { + background-color: var(--e-a-bg-default); + position: absolute; + border-radius: 3px; + box-shadow: 2px 8px 23px 3px rgba(0, 0, 0, 0.2); + overflow: hidden; +} + +.dialog-message { + line-height: 1.5; + box-sizing: border-box; +} + +.dialog-close-button { + cursor: pointer; + position: absolute; + margin-block-start: 15px; + right: 15px; + color: var(--e-a-color-txt); + font-size: 15px; + line-height: 1; + transition: var(--e-a-transition-hover); +} +.dialog-close-button:hover { + color: var(--e-a-color-txt-hover); +} + +.dialog-prevent-scroll { + overflow: hidden; + max-height: 100vh; +} + +.dialog-type-lightbox { + position: fixed; + height: 100%; + width: 100%; + bottom: 0; + left: 0; + background-color: rgba(0, 0, 0, 0.8); + z-index: 9999; + -webkit-user-select: none; + -moz-user-select: none; + user-select: none; +} + +.elementor-editor-active .elementor-popup-modal { + background-color: initial; +} + +.dialog-type-confirm .dialog-widget-content, +.dialog-type-alert .dialog-widget-content { + margin: auto; + width: 400px; + padding: 20px; +} +.dialog-type-confirm .dialog-header, +.dialog-type-alert .dialog-header { + font-size: 15px; + font-weight: 500; +} +.dialog-type-confirm .dialog-header:after, +.dialog-type-alert .dialog-header:after { + content: ""; + display: block; + border-block-end: var(--e-a-border); + padding-block-end: 10px; + margin-block-end: 10px; + margin-inline-start: -20px; + margin-inline-end: -20px; +} +.dialog-type-confirm .dialog-message, +.dialog-type-alert .dialog-message { + min-height: 50px; +} +.dialog-type-confirm .dialog-buttons-wrapper, +.dialog-type-alert .dialog-buttons-wrapper { + padding-block-start: 10px; + display: flex; + justify-content: flex-end; + gap: 15px; +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button { + font-size: 12px; + font-weight: 500; + line-height: 1.2; + padding: 8px 16px; + outline: none; + border: none; + border-radius: var(--e-a-border-radius); + background-color: var(--e-a-btn-bg); + color: var(--e-a-btn-color-invert); + transition: var(--e-a-transition-hover); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button:hover { + border: none; +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button:focus { + background-color: var(--e-a-btn-bg-hover); + color: var(--e-a-btn-color-invert); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:active, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button:active { + background-color: var(--e-a-btn-bg-active); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:not([disabled]), +.dialog-type-alert .dialog-buttons-wrapper .dialog-button:not([disabled]) { + cursor: pointer; +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:disabled, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button:disabled { + background-color: var(--e-a-btn-bg-disabled); + color: var(--e-a-btn-color-disabled); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:not(.elementor-button-state) .elementor-state-icon, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button:not(.elementor-button-state) .elementor-state-icon { + display: none; +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel { + background: transparent; + color: var(--e-a-color-txt); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel:focus { + background: var(--e-a-bg-hover); + color: var(--e-a-color-txt-hover); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt:disabled, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel:disabled, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt:disabled, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel:disabled { + background: transparent; + color: var(--e-a-color-txt-disabled); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt-border, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt-border { + border: 1px solid var(--e-a-color-txt-muted); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-success, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-success, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-success, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-success { + background-color: var(--e-a-btn-bg-success); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-success:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-success:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-success:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-success:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-success:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-success:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-success:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-success:focus { + background-color: var(--e-a-btn-bg-success-hover); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-take_over, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-take_over, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok { + background-color: var(--e-a-btn-bg-primary); + color: var(--e-a-btn-color); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-take_over:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-take_over:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-take_over:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-take_over:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok:focus { + background-color: var(--e-a-btn-bg-primary-hover); + color: var(--e-a-btn-color); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary.e-btn-txt, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-take_over, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary.dialog-cancel, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-ok, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary.e-btn-txt, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-take_over, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary.dialog-cancel, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-ok, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel { + background: transparent; + color: var(--e-a-color-primary-bold); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary.e-btn-txt:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-take_over:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary.dialog-cancel:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-ok:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary.e-btn-txt:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-take_over:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary.dialog-cancel:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-ok:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary.e-btn-txt:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-take_over:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary.dialog-cancel:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-ok:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary.e-btn-txt:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-take_over:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary.dialog-cancel:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-ok:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel:focus { + background: var(--e-a-bg-primary); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.go-pro, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-accent, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.go-pro, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-accent { + background-color: var(--e-a-btn-bg-accent); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.go-pro:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.go-pro:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-accent:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-accent:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.go-pro:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.go-pro:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-accent:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-accent:focus { + background-color: var(--e-a-btn-bg-accent-hover); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.go-pro:active, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-accent:active, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.go-pro:active, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-accent:active { + background-color: var(--e-a-btn-bg-accent-active); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-info, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-info, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-info, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-info { + background-color: var(--e-a-btn-bg-info); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-info:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-info:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-info:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-info:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-info:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-info:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-info:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-info:focus { + background-color: var(--e-a-btn-bg-info-hover); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-warning, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-warning, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-warning, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-warning { + background-color: var(--e-a-btn-bg-warning); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-warning:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-warning:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-warning:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-warning:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-warning:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-warning:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-warning:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-warning:focus { + background-color: var(--e-a-btn-bg-warning-hover); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-danger, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-danger, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-danger, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-danger { + background-color: var(--e-a-btn-bg-danger); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-danger:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-danger:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-danger:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-danger:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-danger:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-danger:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-danger:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-danger:focus { + background-color: var(--e-a-btn-bg-danger-hover); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button i, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button i { + margin-inline-end: 5px; +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button:visited, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button:visited { + color: initial; +} +.flatpickr-calendar { + width: 280px; +} +.flatpickr-calendar .flatpickr-current-month span.cur-month { + font-weight: 300; +} +.flatpickr-calendar .dayContainer { + width: 280px; + min-width: 280px; + max-width: 280px; +} +.flatpickr-calendar .flatpickr-days { + width: 280px; +} +.flatpickr-calendar .flatpickr-day { + max-width: 37px; + height: 37px; + line-height: 37px; +} + +.elementor-hidden { + display: none; +} + +.elementor-screen-only, +.screen-reader-text, +.screen-reader-text span, +.ui-helper-hidden-accessible { + position: absolute; + top: -10000em; + width: 1px; + height: 1px; + margin: -1px; + padding: 0; + overflow: hidden; + clip: rect(0, 0, 0, 0); + border: 0; +} + +.elementor-clearfix:after { + content: ""; + display: block; + clear: both; + width: 0; + height: 0; +} + +.e-logo-wrapper { + background: var(--e-a-bg-logo); + display: inline-block; + padding: 0.75em; + border-radius: 50%; + line-height: 1; +} +.e-logo-wrapper i { + color: var(--e-a-color-logo); + font-size: 1em; +} + +.elementor *, .elementor *:before, .elementor *:after { + box-sizing: border-box; +} +.elementor a { + box-shadow: none; + text-decoration: none; +} +.elementor hr { + margin: 0; + background-color: transparent; +} +.elementor img { + height: auto; + max-width: 100%; + border: none; + border-radius: 0; + box-shadow: none; +} +.elementor .elementor-widget:not(.elementor-widget-text-editor):not(.elementor-widget-theme-post-content) figure { + margin: 0; +} +.elementor embed, +.elementor iframe, +.elementor object, +.elementor video { + max-width: 100%; + width: 100%; + margin: 0; + line-height: 1; + border: none; +} +.elementor .elementor-background-video-container, +.elementor .elementor-background-holder, +.elementor .elementor-background { + height: 100%; + width: 100%; + top: 0; + left: 0; + position: absolute; + overflow: hidden; + z-index: 0; + direction: ltr; +} +.elementor .elementor-background-video-container { + transition: opacity 1s; + pointer-events: none; +} +.elementor .elementor-background-video-container.elementor-loading { + opacity: 0; +} +.elementor .elementor-background-video-embed { + max-width: none; +} +.elementor .elementor-background-video-embed, .elementor .elementor-background-video-hosted { + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); +} +.elementor .elementor-background-video { + max-width: none; + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); +} +.elementor .elementor-html5-video { + -o-object-fit: cover; + object-fit: cover; +} +.elementor .elementor-background-overlay { + height: 100%; + width: 100%; + top: 0; + left: 0; + position: absolute; +} +.elementor .elementor-background-slideshow { + position: absolute; + width: 100%; + height: 100%; + z-index: 0; + top: 0; + left: 0; +} +.elementor .elementor-background-slideshow__slide__image { + width: 100%; + height: 100%; + background-position: center center; + background-size: cover; +} + +.elementor-widget-wrap > .elementor-element.elementor-absolute, +.e-con > .elementor-element.elementor-absolute, +.e-con-inner > .elementor-element.elementor-absolute { + position: absolute; +} +.elementor-widget-wrap > .elementor-element.elementor-fixed, +.e-con > .elementor-element.elementor-fixed, +.e-con-inner > .elementor-element.elementor-fixed { + position: fixed; +} + +.elementor-widget-wrap .elementor-element.elementor-widget__width-auto, .elementor-widget-wrap .elementor-element.elementor-widget__width-initial { + max-width: 100%; +} +@media (max-width: 1024px) { + .elementor-widget-wrap .elementor-element.elementor-widget-tablet__width-auto, .elementor-widget-wrap .elementor-element.elementor-widget-tablet__width-initial { + max-width: 100%; + } +} +@media (max-width: 767px) { + .elementor-widget-wrap .elementor-element.elementor-widget-mobile__width-auto, .elementor-widget-wrap .elementor-element.elementor-widget-mobile__width-initial { + max-width: 100%; + } +} + +.elementor-element { + --flex-direction: initial; + --flex-wrap: initial; + --justify-content: initial; + --align-items: initial; + --align-content: initial; + --gap: initial; + --flex-basis: initial; + --flex-grow: initial; + --flex-shrink: initial; + --order: initial; + --align-self: initial; + flex-basis: var(--flex-basis); + flex-grow: var(--flex-grow); + flex-shrink: var(--flex-shrink); + order: var(--order); + align-self: var(--align-self); +} +.elementor-element.elementor-absolute, .elementor-element.elementor-fixed { + z-index: 1; +} +.elementor-element:where(.e-con-full, .elementor-widget) { + flex-direction: var(--flex-direction); + flex-wrap: var(--flex-wrap); + justify-content: var(--justify-content); + align-items: var(--align-items); + align-content: var(--align-content); + gap: var(--gap); +} + +.elementor-invisible { + visibility: hidden; +} + +.elementor-align-center { + text-align: center; +} +.elementor-align-center .elementor-button { + width: auto; +} +.elementor-align-right { + text-align: right; +} +.elementor-align-right .elementor-button { + width: auto; +} +.elementor-align-left { + text-align: left; +} +.elementor-align-left .elementor-button { + width: auto; +} +.elementor-align-justify .elementor-button { + width: 100%; +} + +.elementor-custom-embed-play { + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); +} +.elementor-custom-embed-play i { + font-size: 100px; + color: #fff; + text-shadow: 1px 0 6px rgba(0, 0, 0, 0.3); +} +.elementor-custom-embed-play svg { + height: 100px; + width: 100px; + fill: #fff; + filter: drop-shadow(1px 0 6px rgba(0, 0, 0, 0.3)); +} +.elementor-custom-embed-play i, +.elementor-custom-embed-play svg { + opacity: 0.8; + transition: all 0.5s; +} +.elementor-custom-embed-play.elementor-playing i { + font-family: eicons; +} +.elementor-custom-embed-play.elementor-playing i:before { + content: "\e8fb"; +} +.elementor-custom-embed-play.elementor-playing i, +.elementor-custom-embed-play.elementor-playing svg { + animation: eicon-spin 2s infinite linear; +} + +.elementor-tag { + display: inline-flex; +} + +.elementor-ken-burns { + transition-property: transform; + transition-duration: 10s; + transition-timing-function: linear; +} +.elementor-ken-burns--out { + transform: scale(1.3); +} +.elementor-ken-burns--active { + transition-duration: 20s; +} +.elementor-ken-burns--active.elementor-ken-burns--out { + transform: scale(1); +} +.elementor-ken-burns--active.elementor-ken-burns--in { + transform: scale(1.3); +} + +@media (min-width: -1) { + .elementor-widescreen-align-center { + text-align: center; + } + .elementor-widescreen-align-center .elementor-button { + width: auto; + } + .elementor-widescreen-align-right { + text-align: right; + } + .elementor-widescreen-align-right .elementor-button { + width: auto; + } + .elementor-widescreen-align-left { + text-align: left; + } + .elementor-widescreen-align-left .elementor-button { + width: auto; + } + .elementor-widescreen-align-justify .elementor-button { + width: 100%; + } +} +@media (max-width: -1) { + .elementor-laptop-align-center { + text-align: center; + } + .elementor-laptop-align-center .elementor-button { + width: auto; + } + .elementor-laptop-align-right { + text-align: right; + } + .elementor-laptop-align-right .elementor-button { + width: auto; + } + .elementor-laptop-align-left { + text-align: left; + } + .elementor-laptop-align-left .elementor-button { + width: auto; + } + .elementor-laptop-align-justify .elementor-button { + width: 100%; + } +} +@media (max-width: -1) { + .elementor-tablet_extra-align-center { + text-align: center; + } + .elementor-tablet_extra-align-center .elementor-button { + width: auto; + } + .elementor-tablet_extra-align-right { + text-align: right; + } + .elementor-tablet_extra-align-right .elementor-button { + width: auto; + } + .elementor-tablet_extra-align-left { + text-align: left; + } + .elementor-tablet_extra-align-left .elementor-button { + width: auto; + } + .elementor-tablet_extra-align-justify .elementor-button { + width: 100%; + } +} +@media (max-width: 1024px) { + .elementor-tablet-align-center { + text-align: center; + } + .elementor-tablet-align-center .elementor-button { + width: auto; + } + .elementor-tablet-align-right { + text-align: right; + } + .elementor-tablet-align-right .elementor-button { + width: auto; + } + .elementor-tablet-align-left { + text-align: left; + } + .elementor-tablet-align-left .elementor-button { + width: auto; + } + .elementor-tablet-align-justify .elementor-button { + width: 100%; + } +} +@media (max-width: -1) { + .elementor-mobile_extra-align-center { + text-align: center; + } + .elementor-mobile_extra-align-center .elementor-button { + width: auto; + } + .elementor-mobile_extra-align-right { + text-align: right; + } + .elementor-mobile_extra-align-right .elementor-button { + width: auto; + } + .elementor-mobile_extra-align-left { + text-align: left; + } + .elementor-mobile_extra-align-left .elementor-button { + width: auto; + } + .elementor-mobile_extra-align-justify .elementor-button { + width: 100%; + } +} +@media (max-width: 767px) { + .elementor-mobile-align-center { + text-align: center; + } + .elementor-mobile-align-center .elementor-button { + width: auto; + } + .elementor-mobile-align-right { + text-align: right; + } + .elementor-mobile-align-right .elementor-button { + width: auto; + } + .elementor-mobile-align-left { + text-align: left; + } + .elementor-mobile-align-left .elementor-button { + width: auto; + } + .elementor-mobile-align-justify .elementor-button { + width: 100%; + } +} +:root { + --page-title-display: block; +} + +.elementor-page-title, h1.entry-title { + display: var(--page-title-display); +} + +@keyframes eicon-spin { + 0% { + transform: rotate(0deg); + } + 100% { + transform: rotate(359deg); + } +} +.eicon-animation-spin { + animation: eicon-spin 2s infinite linear; +} + +.elementor-section { + position: relative; +} +.elementor-section .elementor-container { + display: flex; + margin-right: auto; + margin-left: auto; + position: relative; +} +@media (max-width: 1024px) { + .elementor-section .elementor-container { + flex-wrap: wrap; + } +} +.elementor-section.elementor-section-boxed > .elementor-container { + max-width: 1140px; +} +.elementor-section.elementor-section-stretched { + position: relative; + width: 100%; +} +.elementor-section.elementor-section-items-top > .elementor-container { + align-items: flex-start; +} +.elementor-section.elementor-section-items-middle > .elementor-container { + align-items: center; +} +.elementor-section.elementor-section-items-bottom > .elementor-container { + align-items: flex-end; +} +@media (min-width: 768px) { + .elementor-section.elementor-section-height-full { + height: 100vh; + } + .elementor-section.elementor-section-height-full > .elementor-container { + height: 100%; + } +} + +.elementor-bc-flex-widget .elementor-section-content-top > .elementor-container > .elementor-column > .elementor-widget-wrap { + align-items: flex-start; +} +.elementor-bc-flex-widget .elementor-section-content-middle > .elementor-container > .elementor-column > .elementor-widget-wrap { + align-items: center; +} +.elementor-bc-flex-widget .elementor-section-content-bottom > .elementor-container > .elementor-column > .elementor-widget-wrap { + align-items: flex-end; +} + +.elementor-row { + width: 100%; + display: flex; +} +@media (max-width: 1024px) { + .elementor-row { + flex-wrap: wrap; + } +} + +.elementor-widget-wrap { + position: relative; + width: 100%; + flex-wrap: wrap; + align-content: flex-start; +} +.elementor:not(.elementor-bc-flex-widget) .elementor-widget-wrap { + display: flex; +} +.elementor-widget-wrap > .elementor-element { + width: 100%; +} +.elementor-widget-wrap.e-swiper-container { + width: calc(100% - (var(--e-column-margin-left, 0px) + var(--e-column-margin-right, 0px))); +} + +.elementor-widget { + position: relative; +} +.elementor-widget:not(:last-child) { + margin-bottom: 20px; +} +.elementor-widget:not(:last-child).elementor-widget__width-auto, .elementor-widget:not(:last-child).elementor-widget__width-initial, .elementor-widget:not(:last-child).elementor-absolute { + margin-bottom: 0; +} + +.elementor-column { + position: relative; + min-height: 1px; + display: flex; +} + +.elementor-column-wrap { + width: 100%; + position: relative; + display: flex; +} + +.elementor-column-gap-narrow > .elementor-column > .elementor-element-populated { + padding: 5px; +} +.elementor-column-gap-default > .elementor-column > .elementor-element-populated { + padding: 10px; +} +.elementor-column-gap-extended > .elementor-column > .elementor-element-populated { + padding: 15px; +} +.elementor-column-gap-wide > .elementor-column > .elementor-element-populated { + padding: 20px; +} +.elementor-column-gap-wider > .elementor-column > .elementor-element-populated { + padding: 30px; +} + +.elementor-inner-section .elementor-column-gap-no .elementor-element-populated { + padding: 0; +} + +@media (min-width: 768px) { + .elementor-column.elementor-col-10, .elementor-column[data-col="10"] { + width: 10%; + } + .elementor-column.elementor-col-11, .elementor-column[data-col="11"] { + width: 11.111%; + } + .elementor-column.elementor-col-12, .elementor-column[data-col="12"] { + width: 12.5%; + } + .elementor-column.elementor-col-14, .elementor-column[data-col="14"] { + width: 14.285%; + } + .elementor-column.elementor-col-16, .elementor-column[data-col="16"] { + width: 16.666%; + } + .elementor-column.elementor-col-20, .elementor-column[data-col="20"] { + width: 20%; + } + .elementor-column.elementor-col-25, .elementor-column[data-col="25"] { + width: 25%; + } + .elementor-column.elementor-col-30, .elementor-column[data-col="30"] { + width: 30%; + } + .elementor-column.elementor-col-33, .elementor-column[data-col="33"] { + width: 33.333%; + } + .elementor-column.elementor-col-40, .elementor-column[data-col="40"] { + width: 40%; + } + .elementor-column.elementor-col-50, .elementor-column[data-col="50"] { + width: 50%; + } + .elementor-column.elementor-col-60, .elementor-column[data-col="60"] { + width: 60%; + } + .elementor-column.elementor-col-66, .elementor-column[data-col="66"] { + width: 66.666%; + } + .elementor-column.elementor-col-70, .elementor-column[data-col="70"] { + width: 70%; + } + .elementor-column.elementor-col-75, .elementor-column[data-col="75"] { + width: 75%; + } + .elementor-column.elementor-col-80, .elementor-column[data-col="80"] { + width: 80%; + } + .elementor-column.elementor-col-83, .elementor-column[data-col="83"] { + width: 83.333%; + } + .elementor-column.elementor-col-90, .elementor-column[data-col="90"] { + width: 90%; + } + .elementor-column.elementor-col-100, .elementor-column[data-col="100"] { + width: 100%; + } +} +@media (max-width: 479px) { + .elementor-column.elementor-xs-10 { + width: 10%; + } + .elementor-column.elementor-xs-11 { + width: 11.111%; + } + .elementor-column.elementor-xs-12 { + width: 12.5%; + } + .elementor-column.elementor-xs-14 { + width: 14.285%; + } + .elementor-column.elementor-xs-16 { + width: 16.666%; + } + .elementor-column.elementor-xs-20 { + width: 20%; + } + .elementor-column.elementor-xs-25 { + width: 25%; + } + .elementor-column.elementor-xs-30 { + width: 30%; + } + .elementor-column.elementor-xs-33 { + width: 33.333%; + } + .elementor-column.elementor-xs-40 { + width: 40%; + } + .elementor-column.elementor-xs-50 { + width: 50%; + } + .elementor-column.elementor-xs-60 { + width: 60%; + } + .elementor-column.elementor-xs-66 { + width: 66.666%; + } + .elementor-column.elementor-xs-70 { + width: 70%; + } + .elementor-column.elementor-xs-75 { + width: 75%; + } + .elementor-column.elementor-xs-80 { + width: 80%; + } + .elementor-column.elementor-xs-83 { + width: 83.333%; + } + .elementor-column.elementor-xs-90 { + width: 90%; + } + .elementor-column.elementor-xs-100 { + width: 100%; + } +} +@media (max-width: 767px) { + .elementor-column.elementor-sm-10 { + width: 10%; + } + .elementor-column.elementor-sm-11 { + width: 11.111%; + } + .elementor-column.elementor-sm-12 { + width: 12.5%; + } + .elementor-column.elementor-sm-14 { + width: 14.285%; + } + .elementor-column.elementor-sm-16 { + width: 16.666%; + } + .elementor-column.elementor-sm-20 { + width: 20%; + } + .elementor-column.elementor-sm-25 { + width: 25%; + } + .elementor-column.elementor-sm-30 { + width: 30%; + } + .elementor-column.elementor-sm-33 { + width: 33.333%; + } + .elementor-column.elementor-sm-40 { + width: 40%; + } + .elementor-column.elementor-sm-50 { + width: 50%; + } + .elementor-column.elementor-sm-60 { + width: 60%; + } + .elementor-column.elementor-sm-66 { + width: 66.666%; + } + .elementor-column.elementor-sm-70 { + width: 70%; + } + .elementor-column.elementor-sm-75 { + width: 75%; + } + .elementor-column.elementor-sm-80 { + width: 80%; + } + .elementor-column.elementor-sm-83 { + width: 83.333%; + } + .elementor-column.elementor-sm-90 { + width: 90%; + } + .elementor-column.elementor-sm-100 { + width: 100%; + } +} +@media (min-width: 768px) and (max-width: 1024px) { + .elementor-column.elementor-md-10 { + width: 10%; + } + .elementor-column.elementor-md-11 { + width: 11.111%; + } + .elementor-column.elementor-md-12 { + width: 12.5%; + } + .elementor-column.elementor-md-14 { + width: 14.285%; + } + .elementor-column.elementor-md-16 { + width: 16.666%; + } + .elementor-column.elementor-md-20 { + width: 20%; + } + .elementor-column.elementor-md-25 { + width: 25%; + } + .elementor-column.elementor-md-30 { + width: 30%; + } + .elementor-column.elementor-md-33 { + width: 33.333%; + } + .elementor-column.elementor-md-40 { + width: 40%; + } + .elementor-column.elementor-md-50 { + width: 50%; + } + .elementor-column.elementor-md-60 { + width: 60%; + } + .elementor-column.elementor-md-66 { + width: 66.666%; + } + .elementor-column.elementor-md-70 { + width: 70%; + } + .elementor-column.elementor-md-75 { + width: 75%; + } + .elementor-column.elementor-md-80 { + width: 80%; + } + .elementor-column.elementor-md-83 { + width: 83.333%; + } + .elementor-column.elementor-md-90 { + width: 90%; + } + .elementor-column.elementor-md-100 { + width: 100%; + } +} + +@media (min-width: -1) { + .elementor-reverse-widescreen > .elementor-container > :nth-child(1) { + order: 10; + } + .elementor-reverse-widescreen > .elementor-container > :nth-child(2) { + order: 9; + } + .elementor-reverse-widescreen > .elementor-container > :nth-child(3) { + order: 8; + } + .elementor-reverse-widescreen > .elementor-container > :nth-child(4) { + order: 7; + } + .elementor-reverse-widescreen > .elementor-container > :nth-child(5) { + order: 6; + } + .elementor-reverse-widescreen > .elementor-container > :nth-child(6) { + order: 5; + } + .elementor-reverse-widescreen > .elementor-container > :nth-child(7) { + order: 4; + } + .elementor-reverse-widescreen > .elementor-container > :nth-child(8) { + order: 3; + } + .elementor-reverse-widescreen > .elementor-container > :nth-child(9) { + order: 2; + } + .elementor-reverse-widescreen > .elementor-container > :nth-child(10) { + order: 1; + } +} +@media (min-width: 1025px) and (max-width: -1) { + .elementor-reverse-laptop > .elementor-container > :nth-child(1) { + order: 10; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(2) { + order: 9; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(3) { + order: 8; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(4) { + order: 7; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(5) { + order: 6; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(6) { + order: 5; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(7) { + order: 4; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(8) { + order: 3; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(9) { + order: 2; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(10) { + order: 1; + } +} +@media (min-width: -1) and (max-width: -1) { + .elementor-reverse-laptop > .elementor-container > :nth-child(1) { + order: 10; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(2) { + order: 9; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(3) { + order: 8; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(4) { + order: 7; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(5) { + order: 6; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(6) { + order: 5; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(7) { + order: 4; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(8) { + order: 3; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(9) { + order: 2; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(10) { + order: 1; + } +} +@media (min-width: 1025px) and (max-width: -1) { + .elementor-reverse-laptop > .elementor-container > :nth-child(1) { + order: initial; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(2) { + order: initial; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(3) { + order: initial; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(4) { + order: initial; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(5) { + order: initial; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(6) { + order: initial; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(7) { + order: initial; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(8) { + order: initial; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(9) { + order: initial; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(10) { + order: initial; + } + .elementor-reverse-tablet_extra > .elementor-container > :nth-child(1) { + order: 10; + } + .elementor-reverse-tablet_extra > .elementor-container > :nth-child(2) { + order: 9; + } + .elementor-reverse-tablet_extra > .elementor-container > :nth-child(3) { + order: 8; + } + .elementor-reverse-tablet_extra > .elementor-container > :nth-child(4) { + order: 7; + } + .elementor-reverse-tablet_extra > .elementor-container > :nth-child(5) { + order: 6; + } + .elementor-reverse-tablet_extra > .elementor-container > :nth-child(6) { + order: 5; + } + .elementor-reverse-tablet_extra > .elementor-container > :nth-child(7) { + order: 4; + } + .elementor-reverse-tablet_extra > .elementor-container > :nth-child(8) { + order: 3; + } + .elementor-reverse-tablet_extra > .elementor-container > :nth-child(9) { + order: 2; + } + .elementor-reverse-tablet_extra > .elementor-container > :nth-child(10) { + order: 1; + } +} +@media (min-width: 768px) and (max-width: 1024px) { + .elementor-reverse-tablet > .elementor-container > :nth-child(1) { + order: 10; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(2) { + order: 9; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(3) { + order: 8; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(4) { + order: 7; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(5) { + order: 6; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(6) { + order: 5; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(7) { + order: 4; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(8) { + order: 3; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(9) { + order: 2; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(10) { + order: 1; + } +} +@media (min-width: -1) and (max-width: 1024px) { + .elementor-reverse-tablet > .elementor-container > :nth-child(1) { + order: 10; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(2) { + order: 9; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(3) { + order: 8; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(4) { + order: 7; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(5) { + order: 6; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(6) { + order: 5; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(7) { + order: 4; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(8) { + order: 3; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(9) { + order: 2; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(10) { + order: 1; + } +} +@media (min-width: 768px) and (max-width: -1) { + .elementor-reverse-tablet > .elementor-container > :nth-child(1) { + order: initial; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(2) { + order: initial; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(3) { + order: initial; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(4) { + order: initial; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(5) { + order: initial; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(6) { + order: initial; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(7) { + order: initial; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(8) { + order: initial; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(9) { + order: initial; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(10) { + order: initial; + } + .elementor-reverse-mobile_extra > .elementor-container > :nth-child(1) { + order: 10; + } + .elementor-reverse-mobile_extra > .elementor-container > :nth-child(2) { + order: 9; + } + .elementor-reverse-mobile_extra > .elementor-container > :nth-child(3) { + order: 8; + } + .elementor-reverse-mobile_extra > .elementor-container > :nth-child(4) { + order: 7; + } + .elementor-reverse-mobile_extra > .elementor-container > :nth-child(5) { + order: 6; + } + .elementor-reverse-mobile_extra > .elementor-container > :nth-child(6) { + order: 5; + } + .elementor-reverse-mobile_extra > .elementor-container > :nth-child(7) { + order: 4; + } + .elementor-reverse-mobile_extra > .elementor-container > :nth-child(8) { + order: 3; + } + .elementor-reverse-mobile_extra > .elementor-container > :nth-child(9) { + order: 2; + } + .elementor-reverse-mobile_extra > .elementor-container > :nth-child(10) { + order: 1; + } +} +@media (max-width: 767px) { + .elementor-reverse-mobile > .elementor-container > :nth-child(1) { + order: 10; + } + .elementor-reverse-mobile > .elementor-container > :nth-child(2) { + order: 9; + } + .elementor-reverse-mobile > .elementor-container > :nth-child(3) { + order: 8; + } + .elementor-reverse-mobile > .elementor-container > :nth-child(4) { + order: 7; + } + .elementor-reverse-mobile > .elementor-container > :nth-child(5) { + order: 6; + } + .elementor-reverse-mobile > .elementor-container > :nth-child(6) { + order: 5; + } + .elementor-reverse-mobile > .elementor-container > :nth-child(7) { + order: 4; + } + .elementor-reverse-mobile > .elementor-container > :nth-child(8) { + order: 3; + } + .elementor-reverse-mobile > .elementor-container > :nth-child(9) { + order: 2; + } + .elementor-reverse-mobile > .elementor-container > :nth-child(10) { + order: 1; + } + .elementor-column { + width: 100%; + } +} +ul.elementor-icon-list-items.elementor-inline-items { + display: flex; + flex-wrap: wrap; +} +ul.elementor-icon-list-items.elementor-inline-items .elementor-inline-item { + word-break: break-word; +} + +.elementor-grid { + display: grid; + grid-column-gap: var(--grid-column-gap); + grid-row-gap: var(--grid-row-gap); +} +.elementor-grid .elementor-grid-item { + min-width: 0; +} +.elementor-grid-0 .elementor-grid { + display: inline-block; + width: 100%; + word-spacing: var(--grid-column-gap); + margin-bottom: calc(-1 * var(--grid-row-gap)); +} +.elementor-grid-0 .elementor-grid .elementor-grid-item { + display: inline-block; + margin-bottom: var(--grid-row-gap); + word-break: break-word; +} +.elementor-grid-1 .elementor-grid { + grid-template-columns: repeat(1, 1fr); +} +.elementor-grid-2 .elementor-grid { + grid-template-columns: repeat(2, 1fr); +} +.elementor-grid-3 .elementor-grid { + grid-template-columns: repeat(3, 1fr); +} +.elementor-grid-4 .elementor-grid { + grid-template-columns: repeat(4, 1fr); +} +.elementor-grid-5 .elementor-grid { + grid-template-columns: repeat(5, 1fr); +} +.elementor-grid-6 .elementor-grid { + grid-template-columns: repeat(6, 1fr); +} +.elementor-grid-7 .elementor-grid { + grid-template-columns: repeat(7, 1fr); +} +.elementor-grid-8 .elementor-grid { + grid-template-columns: repeat(8, 1fr); +} +.elementor-grid-9 .elementor-grid { + grid-template-columns: repeat(9, 1fr); +} +.elementor-grid-10 .elementor-grid { + grid-template-columns: repeat(10, 1fr); +} +.elementor-grid-11 .elementor-grid { + grid-template-columns: repeat(11, 1fr); +} +.elementor-grid-12 .elementor-grid { + grid-template-columns: repeat(12, 1fr); +} +@media (min-width: -1) { + .elementor-grid-widescreen-0 .elementor-grid { + display: inline-block; + width: 100%; + word-spacing: var(--grid-column-gap); + margin-bottom: calc(-1 * var(--grid-row-gap)); + } + .elementor-grid-widescreen-0 .elementor-grid .elementor-grid-item { + display: inline-block; + margin-bottom: var(--grid-row-gap); + word-break: break-word; + } + .elementor-grid-widescreen-1 .elementor-grid { + grid-template-columns: repeat(1, 1fr); + } + .elementor-grid-widescreen-2 .elementor-grid { + grid-template-columns: repeat(2, 1fr); + } + .elementor-grid-widescreen-3 .elementor-grid { + grid-template-columns: repeat(3, 1fr); + } + .elementor-grid-widescreen-4 .elementor-grid { + grid-template-columns: repeat(4, 1fr); + } + .elementor-grid-widescreen-5 .elementor-grid { + grid-template-columns: repeat(5, 1fr); + } + .elementor-grid-widescreen-6 .elementor-grid { + grid-template-columns: repeat(6, 1fr); + } + .elementor-grid-widescreen-7 .elementor-grid { + grid-template-columns: repeat(7, 1fr); + } + .elementor-grid-widescreen-8 .elementor-grid { + grid-template-columns: repeat(8, 1fr); + } + .elementor-grid-widescreen-9 .elementor-grid { + grid-template-columns: repeat(9, 1fr); + } + .elementor-grid-widescreen-10 .elementor-grid { + grid-template-columns: repeat(10, 1fr); + } + .elementor-grid-widescreen-11 .elementor-grid { + grid-template-columns: repeat(11, 1fr); + } + .elementor-grid-widescreen-12 .elementor-grid { + grid-template-columns: repeat(12, 1fr); + } +} +@media (max-width: -1) { + .elementor-grid-laptop-0 .elementor-grid { + display: inline-block; + width: 100%; + word-spacing: var(--grid-column-gap); + margin-bottom: calc(-1 * var(--grid-row-gap)); + } + .elementor-grid-laptop-0 .elementor-grid .elementor-grid-item { + display: inline-block; + margin-bottom: var(--grid-row-gap); + word-break: break-word; + } + .elementor-grid-laptop-1 .elementor-grid { + grid-template-columns: repeat(1, 1fr); + } + .elementor-grid-laptop-2 .elementor-grid { + grid-template-columns: repeat(2, 1fr); + } + .elementor-grid-laptop-3 .elementor-grid { + grid-template-columns: repeat(3, 1fr); + } + .elementor-grid-laptop-4 .elementor-grid { + grid-template-columns: repeat(4, 1fr); + } + .elementor-grid-laptop-5 .elementor-grid { + grid-template-columns: repeat(5, 1fr); + } + .elementor-grid-laptop-6 .elementor-grid { + grid-template-columns: repeat(6, 1fr); + } + .elementor-grid-laptop-7 .elementor-grid { + grid-template-columns: repeat(7, 1fr); + } + .elementor-grid-laptop-8 .elementor-grid { + grid-template-columns: repeat(8, 1fr); + } + .elementor-grid-laptop-9 .elementor-grid { + grid-template-columns: repeat(9, 1fr); + } + .elementor-grid-laptop-10 .elementor-grid { + grid-template-columns: repeat(10, 1fr); + } + .elementor-grid-laptop-11 .elementor-grid { + grid-template-columns: repeat(11, 1fr); + } + .elementor-grid-laptop-12 .elementor-grid { + grid-template-columns: repeat(12, 1fr); + } +} +@media (max-width: -1) { + .elementor-grid-tablet_extra-0 .elementor-grid { + display: inline-block; + width: 100%; + word-spacing: var(--grid-column-gap); + margin-bottom: calc(-1 * var(--grid-row-gap)); + } + .elementor-grid-tablet_extra-0 .elementor-grid .elementor-grid-item { + display: inline-block; + margin-bottom: var(--grid-row-gap); + word-break: break-word; + } + .elementor-grid-tablet_extra-1 .elementor-grid { + grid-template-columns: repeat(1, 1fr); + } + .elementor-grid-tablet_extra-2 .elementor-grid { + grid-template-columns: repeat(2, 1fr); + } + .elementor-grid-tablet_extra-3 .elementor-grid { + grid-template-columns: repeat(3, 1fr); + } + .elementor-grid-tablet_extra-4 .elementor-grid { + grid-template-columns: repeat(4, 1fr); + } + .elementor-grid-tablet_extra-5 .elementor-grid { + grid-template-columns: repeat(5, 1fr); + } + .elementor-grid-tablet_extra-6 .elementor-grid { + grid-template-columns: repeat(6, 1fr); + } + .elementor-grid-tablet_extra-7 .elementor-grid { + grid-template-columns: repeat(7, 1fr); + } + .elementor-grid-tablet_extra-8 .elementor-grid { + grid-template-columns: repeat(8, 1fr); + } + .elementor-grid-tablet_extra-9 .elementor-grid { + grid-template-columns: repeat(9, 1fr); + } + .elementor-grid-tablet_extra-10 .elementor-grid { + grid-template-columns: repeat(10, 1fr); + } + .elementor-grid-tablet_extra-11 .elementor-grid { + grid-template-columns: repeat(11, 1fr); + } + .elementor-grid-tablet_extra-12 .elementor-grid { + grid-template-columns: repeat(12, 1fr); + } +} +@media (max-width: 1024px) { + .elementor-grid-tablet-0 .elementor-grid { + display: inline-block; + width: 100%; + word-spacing: var(--grid-column-gap); + margin-bottom: calc(-1 * var(--grid-row-gap)); + } + .elementor-grid-tablet-0 .elementor-grid .elementor-grid-item { + display: inline-block; + margin-bottom: var(--grid-row-gap); + word-break: break-word; + } + .elementor-grid-tablet-1 .elementor-grid { + grid-template-columns: repeat(1, 1fr); + } + .elementor-grid-tablet-2 .elementor-grid { + grid-template-columns: repeat(2, 1fr); + } + .elementor-grid-tablet-3 .elementor-grid { + grid-template-columns: repeat(3, 1fr); + } + .elementor-grid-tablet-4 .elementor-grid { + grid-template-columns: repeat(4, 1fr); + } + .elementor-grid-tablet-5 .elementor-grid { + grid-template-columns: repeat(5, 1fr); + } + .elementor-grid-tablet-6 .elementor-grid { + grid-template-columns: repeat(6, 1fr); + } + .elementor-grid-tablet-7 .elementor-grid { + grid-template-columns: repeat(7, 1fr); + } + .elementor-grid-tablet-8 .elementor-grid { + grid-template-columns: repeat(8, 1fr); + } + .elementor-grid-tablet-9 .elementor-grid { + grid-template-columns: repeat(9, 1fr); + } + .elementor-grid-tablet-10 .elementor-grid { + grid-template-columns: repeat(10, 1fr); + } + .elementor-grid-tablet-11 .elementor-grid { + grid-template-columns: repeat(11, 1fr); + } + .elementor-grid-tablet-12 .elementor-grid { + grid-template-columns: repeat(12, 1fr); + } +} +@media (max-width: -1) { + .elementor-grid-mobile_extra-0 .elementor-grid { + display: inline-block; + width: 100%; + word-spacing: var(--grid-column-gap); + margin-bottom: calc(-1 * var(--grid-row-gap)); + } + .elementor-grid-mobile_extra-0 .elementor-grid .elementor-grid-item { + display: inline-block; + margin-bottom: var(--grid-row-gap); + word-break: break-word; + } + .elementor-grid-mobile_extra-1 .elementor-grid { + grid-template-columns: repeat(1, 1fr); + } + .elementor-grid-mobile_extra-2 .elementor-grid { + grid-template-columns: repeat(2, 1fr); + } + .elementor-grid-mobile_extra-3 .elementor-grid { + grid-template-columns: repeat(3, 1fr); + } + .elementor-grid-mobile_extra-4 .elementor-grid { + grid-template-columns: repeat(4, 1fr); + } + .elementor-grid-mobile_extra-5 .elementor-grid { + grid-template-columns: repeat(5, 1fr); + } + .elementor-grid-mobile_extra-6 .elementor-grid { + grid-template-columns: repeat(6, 1fr); + } + .elementor-grid-mobile_extra-7 .elementor-grid { + grid-template-columns: repeat(7, 1fr); + } + .elementor-grid-mobile_extra-8 .elementor-grid { + grid-template-columns: repeat(8, 1fr); + } + .elementor-grid-mobile_extra-9 .elementor-grid { + grid-template-columns: repeat(9, 1fr); + } + .elementor-grid-mobile_extra-10 .elementor-grid { + grid-template-columns: repeat(10, 1fr); + } + .elementor-grid-mobile_extra-11 .elementor-grid { + grid-template-columns: repeat(11, 1fr); + } + .elementor-grid-mobile_extra-12 .elementor-grid { + grid-template-columns: repeat(12, 1fr); + } +} +@media (max-width: 767px) { + .elementor-grid-mobile-0 .elementor-grid { + display: inline-block; + width: 100%; + word-spacing: var(--grid-column-gap); + margin-bottom: calc(-1 * var(--grid-row-gap)); + } + .elementor-grid-mobile-0 .elementor-grid .elementor-grid-item { + display: inline-block; + margin-bottom: var(--grid-row-gap); + word-break: break-word; + } + .elementor-grid-mobile-1 .elementor-grid { + grid-template-columns: repeat(1, 1fr); + } + .elementor-grid-mobile-2 .elementor-grid { + grid-template-columns: repeat(2, 1fr); + } + .elementor-grid-mobile-3 .elementor-grid { + grid-template-columns: repeat(3, 1fr); + } + .elementor-grid-mobile-4 .elementor-grid { + grid-template-columns: repeat(4, 1fr); + } + .elementor-grid-mobile-5 .elementor-grid { + grid-template-columns: repeat(5, 1fr); + } + .elementor-grid-mobile-6 .elementor-grid { + grid-template-columns: repeat(6, 1fr); + } + .elementor-grid-mobile-7 .elementor-grid { + grid-template-columns: repeat(7, 1fr); + } + .elementor-grid-mobile-8 .elementor-grid { + grid-template-columns: repeat(8, 1fr); + } + .elementor-grid-mobile-9 .elementor-grid { + grid-template-columns: repeat(9, 1fr); + } + .elementor-grid-mobile-10 .elementor-grid { + grid-template-columns: repeat(10, 1fr); + } + .elementor-grid-mobile-11 .elementor-grid { + grid-template-columns: repeat(11, 1fr); + } + .elementor-grid-mobile-12 .elementor-grid { + grid-template-columns: repeat(12, 1fr); + } +} + +@media (min-width: 1025px) { + #elementor-device-mode:after { + content: "desktop"; + } +} +@media (min-width: -1) { + #elementor-device-mode:after { + content: "widescreen"; + } +} +@media (max-width: -1) { + #elementor-device-mode:after { + content: "laptop"; + } +} +@media (max-width: -1) { + #elementor-device-mode:after { + content: "tablet_extra"; + } +} +@media (max-width: 1024px) { + #elementor-device-mode:after { + content: "tablet"; + } +} +@media (max-width: -1) { + #elementor-device-mode:after { + content: "mobile_extra"; + } +} +@media (max-width: 767px) { + #elementor-device-mode:after { + content: "mobile"; + } +} + +.e-con { + --border-radius: 0; + --border-block-start-width: 0px; + --border-inline-end-width: 0px; + --border-block-end-width: 0px; + --border-inline-start-width: 0px; + --border-style: initial; + --border-color: initial; + --container-widget-width: 100%; + --container-widget-height: initial; + --container-widget-flex-grow: 0; + --container-widget-align-self: initial; + --content-width: min(100%, var(--container-max-width, 1140px)); + --width: 100%; + --min-height: initial; + --height: auto; + --text-align: initial; + --margin-block-start: 0px; + --margin-inline-end: 0px; + --margin-block-end: 0px; + --margin-inline-start: 0px; + --padding-block-start: var(--container-default-padding-block-start, 10px); + --padding-inline-end: var(--container-default-padding-inline-end, 10px); + --padding-block-end: var(--container-default-padding-block-end, 10px); + --padding-inline-start: var(--container-default-padding-inline-start, 10px); + --position: relative; + --z-index: revert; + --overflow: visible; + --gap: var(--widgets-spacing, 20px); + --overlay-mix-blend-mode: initial; + --overlay-opacity: 1; + --overlay-transition: 0.3s; + --e-con-grid-template-columns: repeat(3, 1fr); + --e-con-grid-template-rows: repeat(2, 1fr); + position: var(--position); + width: var(--width); + min-width: 0; + min-height: var(--min-height); + height: var(--height); + border-radius: var(--border-radius); + margin-block-start: var(--bc-margin-block-start, var(--margin-block-start)); + margin-inline-end: var(--bc-margin-inline-end, var(--margin-inline-end)); + margin-block-end: var(--bc-margin-block-end, var(--margin-block-end)); + margin-inline-start: var(--bc-margin-inline-start, var(--margin-inline-start)); + padding-inline-start: var(--bc-padding-inline-start, var(--padding-inline-start)); + padding-inline-end: var(--bc-padding-inline-end, var(--padding-inline-end)); + z-index: var(--z-index); + overflow: var(--overflow); + transition: background var(--background-transition, 0.3s), border var(--border-transition, 0.3s), box-shadow var(--border-transition, 0.3s), transform var(--e-con-transform-transition-duration, 0.4s); +} +.e-con.e-flex { + --flex-direction: column; + --flex-basis: auto; + --flex-grow: 0; + --flex-shrink: 1; + flex: var(--flex-grow) var(--flex-shrink) var(--flex-basis); +} +.e-con-full, .e-con > .e-con-inner { + text-align: var(--text-align); + padding-block-start: var(--bc-padding-block-start, var(--padding-block-start)); + padding-block-end: var(--bc-padding-block-end, var(--padding-block-end)); +} +.e-con-full.e-flex, .e-con.e-flex > .e-con-inner { + flex-direction: var(--flex-direction); +} +.e-con, .e-con > .e-con-inner { + display: var(--display); +} +.e-con.e-grid { + --grid-justify-content: start; + --grid-align-content: start; + --grid-auto-flow: row; +} +.e-con.e-grid, .e-con.e-grid > .e-con-inner { + grid-template-columns: var(--e-con-grid-template-columns); + grid-template-rows: var(--e-con-grid-template-rows); + justify-content: var(--grid-justify-content); + align-content: var(--grid-align-content); + grid-auto-flow: var(--grid-auto-flow); + justify-items: var(--justify-items); + align-items: var(--align-items); +} +.e-con-boxed.e-flex { + flex-direction: column; + flex-wrap: initial; + justify-content: initial; + align-items: initial; + align-content: initial; +} +.e-con-boxed.e-grid { + justify-items: initial; + grid-template-columns: 1fr; + grid-template-rows: 1fr; +} +.e-con-boxed { + text-align: initial; + gap: initial; +} +.e-con.e-flex > .e-con-inner { + flex-wrap: var(--flex-wrap); + justify-content: var(--justify-content); + align-items: var(--align-items); + align-content: var(--align-content); + flex-basis: initial; + flex-grow: 1; + flex-shrink: initial; + align-self: initial; +} +.e-con.e-grid > .e-con-inner { + justify-items: var(--justify-items); + align-items: var(--align-items); +} +.e-con > .e-con-inner { + gap: var(--gap); + width: 100%; + max-width: var(--content-width); + margin: 0 auto; + padding-inline-start: 0; + padding-inline-end: 0; + height: 100%; +} +:is(.elementor-section-wrap, [data-elementor-id]) > .e-con { + --margin-inline-end: auto; + --margin-inline-start: auto; + max-width: min(100%, var(--width)); +} +.e-con .elementor-widget.elementor-widget { + margin-block-end: 0; +} +.e-con::before, :is(.e-con, .e-con > .e-con-inner) > .elementor-background-video-container::before, +.e-con > .elementor-motion-effects-container > .elementor-motion-effects-layer::before, +.e-con > .elementor-background-slideshow::before { + content: var(--background-overlay); + display: block; + position: absolute; + mix-blend-mode: var(--overlay-mix-blend-mode); + opacity: var(--overlay-opacity); + transition: var(--overlay-transition, 0.3s); + border-radius: var(--border-radius); + border-style: var(--border-style); + border-color: var(--border-color); + border-block-start-width: var(--border-block-start-width); + border-inline-end-width: var(--border-inline-end-width); + border-block-end-width: var(--border-block-end-width); + border-inline-start-width: var(--border-inline-start-width); + top: calc(0px - var(--border-block-start-width)); + left: calc(0px - var(--border-inline-start-width)); + width: max(100% + var(--border-inline-end-width) + var(--border-inline-start-width), 100%); + height: max(100% + var(--border-block-start-width) + var(--border-block-end-width), 100%); +} +.e-con::before { + transition: background var(--overlay-transition, 0.3s), border-radius var(--border-transition, 0.3s), opacity var(--overlay-transition, 0.3s); +} +.e-con > .elementor-background-slideshow, :is(.e-con, .e-con > .e-con-inner) > .elementor-background-video-container { + border-radius: var(--border-radius); + border-style: var(--border-style); + border-color: var(--border-color); + border-block-start-width: var(--border-block-start-width); + border-inline-end-width: var(--border-inline-end-width); + border-block-end-width: var(--border-block-end-width); + border-inline-start-width: var(--border-inline-start-width); + top: calc(0px - var(--border-block-start-width)); + left: calc(0px - var(--border-inline-start-width)); + width: max(100% + var(--border-inline-end-width) + var(--border-inline-start-width), 100%); + height: max(100% + var(--border-block-start-width) + var(--border-block-end-width), 100%); +} +@media (max-width: 767px) { + :is(.e-con, .e-con > .e-con-inner) > .elementor-background-video-container.elementor-hidden-phone { + display: none; + } +} +:is(.e-con, .e-con > .e-con-inner) > .elementor-background-video-container::before { + z-index: 1; +} +:is(.e-con, .e-con > .e-con-inner) > .elementor-background-slideshow::before { + z-index: 2; +} +.e-con .elementor-widget { + min-width: 0; +} +.e-con .elementor-widget-video, .e-con .elementor-widget-google_maps, .e-con .elementor-widget-empty { + width: 100%; +} +.e-con .elementor-widget.e-widget-swiper { + width: 100%; +} +.e-con > .elementor-widget > .elementor-widget-container, .e-con > .e-con-inner > .elementor-widget > .elementor-widget-container { + height: 100%; +} +.elementor.elementor .e-con > .elementor-widget, .e-con.e-con > .e-con-inner > .elementor-widget { + max-width: 100%; +} + +@media (max-width: 767px) { + .e-con.e-flex { + --width: 100%; + --flex-wrap: wrap; + } +} +.e-con { + --bc-margin-block-start: var(--margin-top); + --bc-margin-block-end: var(--margin-bottom); + --bc-margin-inline-start: var(--margin-left); + --bc-margin-inline-end: var(--margin-right); + --bc-padding-block-start: var(--padding-top); + --bc-padding-block-end: var(--padding-bottom); + --bc-padding-inline-start: var(--padding-left); + --bc-padding-inline-end: var(--padding-right); +} +[dir=rtl] .e-con { + --bc-margin-inline-start: var(--margin-right); + --bc-margin-inline-end: var(--margin-left); + --bc-padding-inline-start: var(--padding-right); + --bc-padding-inline-end: var(--padding-left); +} + +.elementor-form-fields-wrapper { + display: flex; + flex-wrap: wrap; +} +.elementor-form-fields-wrapper.elementor-labels-above .elementor-field-group > input, .elementor-form-fields-wrapper.elementor-labels-above .elementor-field-group > textarea, .elementor-form-fields-wrapper.elementor-labels-above .elementor-field-group > .elementor-select-wrapper, .elementor-form-fields-wrapper.elementor-labels-above .elementor-field-group .elementor-field-subgroup { + flex-basis: 100%; + max-width: 100%; +} +.elementor-form-fields-wrapper.elementor-labels-inline > .elementor-field-group > input, .elementor-form-fields-wrapper.elementor-labels-inline > .elementor-field-group .elementor-select-wrapper { + flex-grow: 1; +} + +.elementor-field-group { + flex-wrap: wrap; + align-items: center; +} +.elementor-field-group.elementor-field-type-submit { + align-items: flex-end; +} +.elementor-field-group .elementor-field-textual { + width: 100%; + max-width: 100%; + border: 1px solid #69727D; + background-color: transparent; + color: #1f2124; + vertical-align: middle; + flex-grow: 1; +} +.elementor-field-group .elementor-field-textual:focus { + box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.1) inset; + outline: 0; +} +.elementor-field-group .elementor-field-textual::-moz-placeholder { + color: inherit; + font-family: inherit; + opacity: 0.6; +} +.elementor-field-group .elementor-field-textual::placeholder { + color: inherit; + font-family: inherit; + opacity: 0.6; +} +.elementor-field-group .elementor-select-wrapper { + display: flex; + position: relative; + width: 100%; +} +.elementor-field-group .elementor-select-wrapper select { + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + color: inherit; + font-size: inherit; + font-family: inherit; + font-weight: inherit; + font-style: inherit; + text-transform: inherit; + letter-spacing: inherit; + line-height: inherit; + flex-basis: 100%; + padding-right: 20px; +} +.elementor-field-group .elementor-select-wrapper:before { + content: "\e92a"; + font-family: "eicons"; + font-size: 15px; + position: absolute; + top: 50%; + transform: translateY(-50%); + right: 10px; + pointer-events: none; + text-shadow: 0 0 3px rgba(0, 0, 0, 0.3); +} +.elementor-field-group.elementor-field-type-select-multiple .elementor-select-wrapper:before { + content: ""; +} + +.elementor-field-subgroup { + display: flex; + flex-wrap: wrap; +} +.elementor-field-subgroup .elementor-field-option label { + display: inline-block; +} +.elementor-field-subgroup.elementor-subgroup-inline .elementor-field-option { + padding-right: 10px; +} +.elementor-field-subgroup:not(.elementor-subgroup-inline) .elementor-field-option { + flex-basis: 100%; +} + +.elementor-field-type-checkbox .elementor-field-subgroup .elementor-field-option input, +.elementor-field-type-checkbox .elementor-field-subgroup .elementor-field-option label, +.elementor-field-type-radio .elementor-field-subgroup .elementor-field-option input, +.elementor-field-type-radio .elementor-field-subgroup .elementor-field-option label, +.elementor-field-type-acceptance .elementor-field-subgroup .elementor-field-option input, +.elementor-field-type-acceptance .elementor-field-subgroup .elementor-field-option label { + display: inline; +} + +.elementor-field-label { + cursor: pointer; +} +.elementor-mark-required .elementor-field-label:after { + content: "*"; + color: red; + padding-left: 0.2em; +} + +.elementor-field-textual { + line-height: 1.4; + font-size: 15px; + min-height: 40px; + padding: 5px 14px; + border-radius: 3px; +} +.elementor-field-textual.elementor-size-xs { + font-size: 13px; + min-height: 33px; + padding: 4px 12px; + border-radius: 2px; +} +.elementor-field-textual.elementor-size-md { + font-size: 16px; + min-height: 47px; + padding: 6px 16px; + border-radius: 4px; +} +.elementor-field-textual.elementor-size-lg { + font-size: 18px; + min-height: 59px; + padding: 7px 20px; + border-radius: 5px; +} +.elementor-field-textual.elementor-size-xl { + font-size: 20px; + min-height: 72px; + padding: 8px 24px; + border-radius: 6px; +} + +.elementor-button-align-stretch .elementor-field-type-submit:not(.e-form__buttons__wrapper) .elementor-button { + flex-basis: 100%; +} +.elementor-button-align-stretch .e-form__buttons__wrapper { + flex-basis: 50%; + flex-grow: 1; +} +.elementor-button-align-stretch .e-form__buttons__wrapper__button { + flex-basis: 100%; +} +.elementor-button-align-center .elementor-field-type-submit, +.elementor-button-align-center .e-form__buttons { + justify-content: center; +} +.elementor-button-align-start .elementor-field-type-submit, +.elementor-button-align-start .e-form__buttons { + justify-content: flex-start; +} +.elementor-button-align-end .elementor-field-type-submit, +.elementor-button-align-end .e-form__buttons { + justify-content: flex-end; +} +.elementor-button-align-center .elementor-field-type-submit:not(.e-form__buttons__wrapper) .elementor-button, .elementor-button-align-start .elementor-field-type-submit:not(.e-form__buttons__wrapper) .elementor-button, .elementor-button-align-end .elementor-field-type-submit:not(.e-form__buttons__wrapper) .elementor-button { + flex-basis: initial; +} +.elementor-button-align-center .e-form__buttons__wrapper, .elementor-button-align-start .e-form__buttons__wrapper, .elementor-button-align-end .e-form__buttons__wrapper { + flex-grow: initial; +} +.elementor-button-align-center .e-form__buttons__wrapper, .elementor-button-align-center .e-form__buttons__wrapper__button, .elementor-button-align-start .e-form__buttons__wrapper, .elementor-button-align-start .e-form__buttons__wrapper__button, .elementor-button-align-end .e-form__buttons__wrapper, .elementor-button-align-end .e-form__buttons__wrapper__button { + flex-basis: initial; +} + +@media screen and (max-width: 1024px) { + .elementor-tablet-button-align-stretch .elementor-field-type-submit:not(.e-form__buttons__wrapper) .elementor-button { + flex-basis: 100%; + } + .elementor-tablet-button-align-stretch .e-form__buttons__wrapper { + flex-basis: 50%; + flex-grow: 1; + } + .elementor-tablet-button-align-stretch .e-form__buttons__wrapper__button { + flex-basis: 100%; + } + .elementor-tablet-button-align-center .elementor-field-type-submit, + .elementor-tablet-button-align-center .e-form__buttons { + justify-content: center; + } + .elementor-tablet-button-align-start .elementor-field-type-submit, + .elementor-tablet-button-align-start .e-form__buttons { + justify-content: flex-start; + } + .elementor-tablet-button-align-end .elementor-field-type-submit, + .elementor-tablet-button-align-end .e-form__buttons { + justify-content: flex-end; + } + .elementor-tablet-button-align-center .elementor-field-type-submit:not(.e-form__buttons__wrapper) .elementor-button, .elementor-tablet-button-align-start .elementor-field-type-submit:not(.e-form__buttons__wrapper) .elementor-button, .elementor-tablet-button-align-end .elementor-field-type-submit:not(.e-form__buttons__wrapper) .elementor-button { + flex-basis: initial; + } + .elementor-tablet-button-align-center .e-form__buttons__wrapper, .elementor-tablet-button-align-start .e-form__buttons__wrapper, .elementor-tablet-button-align-end .e-form__buttons__wrapper { + flex-grow: initial; + } + .elementor-tablet-button-align-center .e-form__buttons__wrapper, .elementor-tablet-button-align-center .e-form__buttons__wrapper__button, .elementor-tablet-button-align-start .e-form__buttons__wrapper, .elementor-tablet-button-align-start .e-form__buttons__wrapper__button, .elementor-tablet-button-align-end .e-form__buttons__wrapper, .elementor-tablet-button-align-end .e-form__buttons__wrapper__button { + flex-basis: initial; + } +} +@media screen and (max-width: 767px) { + .elementor-mobile-button-align-stretch .elementor-field-type-submit:not(.e-form__buttons__wrapper) .elementor-button { + flex-basis: 100%; + } + .elementor-mobile-button-align-stretch .e-form__buttons__wrapper { + flex-basis: 50%; + flex-grow: 1; + } + .elementor-mobile-button-align-stretch .e-form__buttons__wrapper__button { + flex-basis: 100%; + } + .elementor-mobile-button-align-center .elementor-field-type-submit, + .elementor-mobile-button-align-center .e-form__buttons { + justify-content: center; + } + .elementor-mobile-button-align-start .elementor-field-type-submit, + .elementor-mobile-button-align-start .e-form__buttons { + justify-content: flex-start; + } + .elementor-mobile-button-align-end .elementor-field-type-submit, + .elementor-mobile-button-align-end .e-form__buttons { + justify-content: flex-end; + } + .elementor-mobile-button-align-center .elementor-field-type-submit:not(.e-form__buttons__wrapper) .elementor-button, .elementor-mobile-button-align-start .elementor-field-type-submit:not(.e-form__buttons__wrapper) .elementor-button, .elementor-mobile-button-align-end .elementor-field-type-submit:not(.e-form__buttons__wrapper) .elementor-button { + flex-basis: initial; + } + .elementor-mobile-button-align-center .e-form__buttons__wrapper, .elementor-mobile-button-align-start .e-form__buttons__wrapper, .elementor-mobile-button-align-end .e-form__buttons__wrapper { + flex-grow: initial; + } + .elementor-mobile-button-align-center .e-form__buttons__wrapper, .elementor-mobile-button-align-center .e-form__buttons__wrapper__button, .elementor-mobile-button-align-start .e-form__buttons__wrapper, .elementor-mobile-button-align-start .e-form__buttons__wrapper__button, .elementor-mobile-button-align-end .e-form__buttons__wrapper, .elementor-mobile-button-align-end .e-form__buttons__wrapper__button { + flex-basis: initial; + } +} +.elementor-error .elementor-field { + border-color: #d9534f; +} +.elementor-error .help-inline { + color: #d9534f; + font-size: 0.9em; +} + +.elementor-message { + margin: 10px 0; + font-size: 1em; + line-height: 1; +} +.elementor-message:before { + content: "\e90e"; + display: inline-block; + font-family: eicons; + font-weight: normal; + font-style: normal; + vertical-align: middle; + margin-right: 5px; +} +.elementor-message.elementor-message-danger { + color: #d9534f; +} +.elementor-message.elementor-message-danger:before { + content: "\e87f"; +} +.elementor-message.form-message-success { + color: #5cb85c; +} + +.elementor-form .elementor-button { + padding-top: 0; + padding-bottom: 0; + border: none; +} +.elementor-form .elementor-button > span { + display: flex; + justify-content: center; +} +.elementor-form .elementor-button.elementor-size-xs { + min-height: 33px; +} +.elementor-form .elementor-button.elementor-size-sm { + min-height: 40px; +} +.elementor-form .elementor-button.elementor-size-md { + min-height: 47px; +} +.elementor-form .elementor-button.elementor-size-lg { + min-height: 59px; +} +.elementor-form .elementor-button.elementor-size-xl { + min-height: 72px; +} + +.elementor-element .elementor-widget-container { + transition: background 0.3s, border 0.3s, border-radius 0.3s, box-shadow 0.3s, transform var(--e-transform-transition-duration, 400ms); +} + +.elementor-button { + display: inline-block; + line-height: 1; + background-color: #69727D; + font-size: 15px; + padding: 12px 24px; + border-radius: 3px; + color: #fff; + fill: #fff; + text-align: center; + transition: all 0.3s; +} +.elementor-button:hover, .elementor-button:focus, .elementor-button:visited { + color: #fff; +} +.elementor-button-content-wrapper { + display: flex; + justify-content: center; +} +.elementor-button-icon { + flex-grow: 0; + order: 5; +} +.elementor-button-icon svg { + width: 1em; + height: auto; +} +.elementor-button-icon .e-font-icon-svg { + height: 1em; +} +.elementor-button-text { + flex-grow: 1; + order: 10; + display: inline-block; +} +.elementor-button.elementor-size-xs { + font-size: 13px; + padding: 10px 20px; + border-radius: 2px; +} +.elementor-button.elementor-size-md { + font-size: 16px; + padding: 15px 30px; + border-radius: 4px; +} +.elementor-button.elementor-size-lg { + font-size: 18px; + padding: 20px 40px; + border-radius: 5px; +} +.elementor-button.elementor-size-xl { + font-size: 20px; + padding: 25px 50px; + border-radius: 6px; +} +.elementor-button .elementor-align-icon-right { + margin-left: 5px; + order: 15; +} +.elementor-button .elementor-align-icon-left { + margin-right: 5px; + order: 5; +} +.elementor-button span { + text-decoration: inherit; +} + +.elementor-element.elementor-button-info .elementor-button { + background-color: #5bc0de; +} +.elementor-element.elementor-button-success .elementor-button { + background-color: #5cb85c; +} +.elementor-element.elementor-button-warning .elementor-button { + background-color: #f0ad4e; +} +.elementor-element.elementor-button-danger .elementor-button { + background-color: #d9534f; +} + +.elementor-widget-button .elementor-button .elementor-button-info { + background-color: #5bc0de; +} +.elementor-widget-button .elementor-button .elementor-button-success { + background-color: #5cb85c; +} +.elementor-widget-button .elementor-button .elementor-button-warning { + background-color: #f0ad4e; +} +.elementor-widget-button .elementor-button .elementor-button-danger { + background-color: #d9534f; +} + +.elementor-tab-title a { + color: inherit; +} + +.elementor-view-stacked .elementor-icon { + padding: 0.5em; + background-color: #69727D; + color: #fff; + fill: #fff; +} + +.elementor-view-framed .elementor-icon { + padding: 0.5em; + color: #69727D; + border: 3px solid #69727D; + background-color: transparent; +} + +.elementor-icon { + display: inline-block; + line-height: 1; + transition: all 0.3s; + color: #69727D; + font-size: 50px; + text-align: center; +} +.elementor-icon:hover { + color: #69727D; +} +.elementor-icon i, .elementor-icon svg { + width: 1em; + height: 1em; + position: relative; + display: block; +} +.elementor-icon i:before, .elementor-icon svg:before { + position: absolute; + left: 50%; + transform: translateX(-50%); +} +.elementor-icon i.fad { + width: initial; +} + +.elementor-shape-circle .elementor-icon { + border-radius: 50%; +} + +.e-transform .elementor-widget-container { + transform: perspective(var(--e-transform-perspective, 0)) rotateZ(var(--e-transform-rotateZ, 0)) rotateX(var(--e-transform-rotateX, 0)) rotateY(var(--e-transform-rotateY, 0)) translate(var(--e-transform-translate, 0)) translateX(var(--e-transform-translateX, 0)) translateY(var(--e-transform-translateY, 0)) scaleX(calc(var(--e-transform-flipX, 1) * var(--e-transform-scaleX, var(--e-transform-scale, 1)))) scaleY(calc(var(--e-transform-flipY, 1) * var(--e-transform-scaleY, var(--e-transform-scale, 1)))) skewX(var(--e-transform-skewX, 0)) skewY(var(--e-transform-skewY, 0)); + transform-origin: var(--e-transform-origin-y) var(--e-transform-origin-x); +} + +.e-con.e-transform { + transform: perspective(var(--e-con-transform-perspective, 0)) rotateZ(var(--e-con-transform-rotateZ, 0)) rotateX(var(--e-con-transform-rotateX, 0)) rotateY(var(--e-con-transform-rotateY, 0)) translate(var(--e-con-transform-translate, 0)) translateX(var(--e-con-transform-translateX, 0)) translateY(var(--e-con-transform-translateY, 0)) scaleX(calc(var(--e-con-transform-flipX, 1) * var(--e-con-transform-scaleX, var(--e-con-transform-scale, 1)))) scaleY(calc(var(--e-con-transform-flipY, 1) * var(--e-con-transform-scaleY, var(--e-con-transform-scale, 1)))) skewX(var(--e-con-transform-skewX, 0)) skewY(var(--e-con-transform-skewY, 0)); + transform-origin: var(--e-con-transform-origin-y) var(--e-con-transform-origin-x); +} + +.elementor-element, .elementor-lightbox { + --swiper-theme-color: #000; + --swiper-navigation-size: 44px; + --swiper-pagination-bullet-size: 6px; + --swiper-pagination-bullet-horizontal-gap: 6px; +} +.elementor-element .swiper .swiper-slide figure, +.elementor-element .swiper-container .swiper-slide figure, .elementor-lightbox .swiper .swiper-slide figure, +.elementor-lightbox .swiper-container .swiper-slide figure { + line-height: 0; +} +.elementor-element .swiper .elementor-lightbox-content-source, +.elementor-element .swiper-container .elementor-lightbox-content-source, .elementor-lightbox .swiper .elementor-lightbox-content-source, +.elementor-lightbox .swiper-container .elementor-lightbox-content-source { + display: none; +} +.elementor-element .swiper .elementor-swiper-button, +.elementor-element .swiper ~ .elementor-swiper-button, +.elementor-element .swiper-container .elementor-swiper-button, +.elementor-element .swiper-container ~ .elementor-swiper-button, .elementor-lightbox .swiper .elementor-swiper-button, +.elementor-lightbox .swiper ~ .elementor-swiper-button, +.elementor-lightbox .swiper-container .elementor-swiper-button, +.elementor-lightbox .swiper-container ~ .elementor-swiper-button { + position: absolute; + display: inline-flex; + z-index: 1; + cursor: pointer; + font-size: 25px; + color: rgba(238, 238, 238, 0.9); + top: 50%; + transform: translateY(-50%); +} +.elementor-element .swiper .elementor-swiper-button svg, +.elementor-element .swiper ~ .elementor-swiper-button svg, +.elementor-element .swiper-container .elementor-swiper-button svg, +.elementor-element .swiper-container ~ .elementor-swiper-button svg, .elementor-lightbox .swiper .elementor-swiper-button svg, +.elementor-lightbox .swiper ~ .elementor-swiper-button svg, +.elementor-lightbox .swiper-container .elementor-swiper-button svg, +.elementor-lightbox .swiper-container ~ .elementor-swiper-button svg { + fill: rgba(238, 238, 238, 0.9); + height: 1em; + width: 1em; +} +.elementor-element .swiper .elementor-swiper-button-prev, +.elementor-element .swiper ~ .elementor-swiper-button-prev, +.elementor-element .swiper-container .elementor-swiper-button-prev, +.elementor-element .swiper-container ~ .elementor-swiper-button-prev, .elementor-lightbox .swiper .elementor-swiper-button-prev, +.elementor-lightbox .swiper ~ .elementor-swiper-button-prev, +.elementor-lightbox .swiper-container .elementor-swiper-button-prev, +.elementor-lightbox .swiper-container ~ .elementor-swiper-button-prev { + left: 10px; +} +.elementor-element .swiper .elementor-swiper-button-next, +.elementor-element .swiper ~ .elementor-swiper-button-next, +.elementor-element .swiper-container .elementor-swiper-button-next, +.elementor-element .swiper-container ~ .elementor-swiper-button-next, .elementor-lightbox .swiper .elementor-swiper-button-next, +.elementor-lightbox .swiper ~ .elementor-swiper-button-next, +.elementor-lightbox .swiper-container .elementor-swiper-button-next, +.elementor-lightbox .swiper-container ~ .elementor-swiper-button-next { + right: 10px; +} +.elementor-element .swiper .elementor-swiper-button.swiper-button-disabled, +.elementor-element .swiper ~ .elementor-swiper-button.swiper-button-disabled, +.elementor-element .swiper-container .elementor-swiper-button.swiper-button-disabled, +.elementor-element .swiper-container ~ .elementor-swiper-button.swiper-button-disabled, .elementor-lightbox .swiper .elementor-swiper-button.swiper-button-disabled, +.elementor-lightbox .swiper ~ .elementor-swiper-button.swiper-button-disabled, +.elementor-lightbox .swiper-container .elementor-swiper-button.swiper-button-disabled, +.elementor-lightbox .swiper-container ~ .elementor-swiper-button.swiper-button-disabled { + opacity: 0.3; +} +.elementor-element .swiper .swiper-image-stretch .swiper-slide .swiper-slide-image, +.elementor-element .swiper-container .swiper-image-stretch .swiper-slide .swiper-slide-image, .elementor-lightbox .swiper .swiper-image-stretch .swiper-slide .swiper-slide-image, +.elementor-lightbox .swiper-container .swiper-image-stretch .swiper-slide .swiper-slide-image { + width: 100%; +} +.elementor-element .swiper .swiper-pagination-fraction, +.elementor-element .swiper .swiper-pagination-custom, +.elementor-element .swiper .swiper-horizontal > .swiper-pagination-bullets, +.elementor-element .swiper .swiper-pagination-bullets.swiper-pagination-horizontal, +.elementor-element .swiper ~ .swiper-pagination-fraction, +.elementor-element .swiper ~ .swiper-pagination-custom, +.elementor-element .swiper ~ .swiper-pagination-bullets.swiper-pagination-horizontal, +.elementor-element .swiper-container .swiper-pagination-fraction, +.elementor-element .swiper-container .swiper-pagination-custom, +.elementor-element .swiper-container .swiper-horizontal > .swiper-pagination-bullets, +.elementor-element .swiper-container .swiper-pagination-bullets.swiper-pagination-horizontal, +.elementor-element .swiper-container ~ .swiper-pagination-fraction, +.elementor-element .swiper-container ~ .swiper-pagination-custom, +.elementor-element .swiper-container ~ .swiper-pagination-bullets.swiper-pagination-horizontal, .elementor-lightbox .swiper .swiper-pagination-fraction, +.elementor-lightbox .swiper .swiper-pagination-custom, +.elementor-lightbox .swiper .swiper-horizontal > .swiper-pagination-bullets, +.elementor-lightbox .swiper .swiper-pagination-bullets.swiper-pagination-horizontal, +.elementor-lightbox .swiper ~ .swiper-pagination-fraction, +.elementor-lightbox .swiper ~ .swiper-pagination-custom, +.elementor-lightbox .swiper ~ .swiper-pagination-bullets.swiper-pagination-horizontal, +.elementor-lightbox .swiper-container .swiper-pagination-fraction, +.elementor-lightbox .swiper-container .swiper-pagination-custom, +.elementor-lightbox .swiper-container .swiper-horizontal > .swiper-pagination-bullets, +.elementor-lightbox .swiper-container .swiper-pagination-bullets.swiper-pagination-horizontal, +.elementor-lightbox .swiper-container ~ .swiper-pagination-fraction, +.elementor-lightbox .swiper-container ~ .swiper-pagination-custom, +.elementor-lightbox .swiper-container ~ .swiper-pagination-bullets.swiper-pagination-horizontal { + bottom: 5px; +} +.elementor-element .swiper.swiper-cube .elementor-swiper-button, +.elementor-element .swiper.swiper-cube ~ .elementor-swiper-button, +.elementor-element .swiper-container.swiper-cube .elementor-swiper-button, +.elementor-element .swiper-container.swiper-cube ~ .elementor-swiper-button, .elementor-lightbox .swiper.swiper-cube .elementor-swiper-button, +.elementor-lightbox .swiper.swiper-cube ~ .elementor-swiper-button, +.elementor-lightbox .swiper-container.swiper-cube .elementor-swiper-button, +.elementor-lightbox .swiper-container.swiper-cube ~ .elementor-swiper-button { + transform: translate3d(0, -50%, 1px); +} +.elementor-element :where(.swiper-container-horizontal) ~ .swiper-pagination-bullets, .elementor-lightbox :where(.swiper-container-horizontal) ~ .swiper-pagination-bullets { + bottom: 5px; + left: 0; + width: 100%; +} +.elementor-element :where(.swiper-container-horizontal) ~ .swiper-pagination-bullets .swiper-pagination-bullet, .elementor-lightbox :where(.swiper-container-horizontal) ~ .swiper-pagination-bullets .swiper-pagination-bullet { + margin: 0 var(--swiper-pagination-bullet-horizontal-gap, 4px); +} +.elementor-element :where(.swiper-container-horizontal) ~ .swiper-pagination-progressbar, .elementor-lightbox :where(.swiper-container-horizontal) ~ .swiper-pagination-progressbar { + width: 100%; + height: 4px; + left: 0; + top: 0; +} +.elementor-element.elementor-pagination-position-outside .swiper, +.elementor-element.elementor-pagination-position-outside .swiper-container, .elementor-lightbox.elementor-pagination-position-outside .swiper, +.elementor-lightbox.elementor-pagination-position-outside .swiper-container { + padding-bottom: 30px; +} +.elementor-element.elementor-pagination-position-outside .swiper .elementor-swiper-button, +.elementor-element.elementor-pagination-position-outside .swiper ~ .elementor-swiper-button, +.elementor-element.elementor-pagination-position-outside .swiper-container .elementor-swiper-button, +.elementor-element.elementor-pagination-position-outside .swiper-container ~ .elementor-swiper-button, .elementor-lightbox.elementor-pagination-position-outside .swiper .elementor-swiper-button, +.elementor-lightbox.elementor-pagination-position-outside .swiper ~ .elementor-swiper-button, +.elementor-lightbox.elementor-pagination-position-outside .swiper-container .elementor-swiper-button, +.elementor-lightbox.elementor-pagination-position-outside .swiper-container ~ .elementor-swiper-button { + top: calc(50% - 30px / 2); +} +.elementor-element .elementor-swiper, .elementor-lightbox .elementor-swiper { + position: relative; +} +.elementor-element .elementor-main-swiper, .elementor-lightbox .elementor-main-swiper { + position: static; +} +.elementor-element.elementor-arrows-position-outside .swiper, +.elementor-element.elementor-arrows-position-outside .swiper-container, .elementor-lightbox.elementor-arrows-position-outside .swiper, +.elementor-lightbox.elementor-arrows-position-outside .swiper-container { + width: calc(100% - 60px); +} +.elementor-element.elementor-arrows-position-outside .swiper .elementor-swiper-button-prev, +.elementor-element.elementor-arrows-position-outside .swiper ~ .elementor-swiper-button-prev, +.elementor-element.elementor-arrows-position-outside .swiper-container .elementor-swiper-button-prev, +.elementor-element.elementor-arrows-position-outside .swiper-container ~ .elementor-swiper-button-prev, .elementor-lightbox.elementor-arrows-position-outside .swiper .elementor-swiper-button-prev, +.elementor-lightbox.elementor-arrows-position-outside .swiper ~ .elementor-swiper-button-prev, +.elementor-lightbox.elementor-arrows-position-outside .swiper-container .elementor-swiper-button-prev, +.elementor-lightbox.elementor-arrows-position-outside .swiper-container ~ .elementor-swiper-button-prev { + left: 0; +} +.elementor-element.elementor-arrows-position-outside .swiper .elementor-swiper-button-next, +.elementor-element.elementor-arrows-position-outside .swiper ~ .elementor-swiper-button-next, +.elementor-element.elementor-arrows-position-outside .swiper-container .elementor-swiper-button-next, +.elementor-element.elementor-arrows-position-outside .swiper-container ~ .elementor-swiper-button-next, .elementor-lightbox.elementor-arrows-position-outside .swiper .elementor-swiper-button-next, +.elementor-lightbox.elementor-arrows-position-outside .swiper ~ .elementor-swiper-button-next, +.elementor-lightbox.elementor-arrows-position-outside .swiper-container .elementor-swiper-button-next, +.elementor-lightbox.elementor-arrows-position-outside .swiper-container ~ .elementor-swiper-button-next { + right: 0; +} + +.elementor-lightbox { + --lightbox-ui-color: rgba(238, 238, 238, 0.9); + --lightbox-ui-color-hover: #fff; + --lightbox-text-color: var(--lightbox-ui-color); + --lightbox-header-icons-size: 20px; + --lightbox-navigation-icons-size: 25px; +} +.elementor-lightbox:not(.elementor-popup-modal) .dialog-header, +.elementor-lightbox:not(.elementor-popup-modal) .dialog-message { + text-align: center; +} +.elementor-lightbox .dialog-header { + display: none; +} +.elementor-lightbox .dialog-widget-content { + background: none; + box-shadow: none; + width: 100%; + height: 100%; +} +.elementor-lightbox .dialog-message { + animation-duration: 0.3s; + height: 100%; +} +.elementor-lightbox .dialog-message.dialog-lightbox-message { + padding: 0; +} +.elementor-lightbox .dialog-lightbox-close-button { + cursor: pointer; + position: absolute; + font-size: var(--lightbox-header-icons-size); + right: 0.75em; + margin-top: 13px; + padding: 0.25em; + z-index: 2; + line-height: 1; + display: flex; +} +.elementor-lightbox .dialog-lightbox-close-button svg { + height: 1em; + width: 1em; +} +.elementor-lightbox .dialog-lightbox-close-button, +.elementor-lightbox .elementor-swiper-button { + color: var(--lightbox-ui-color); + transition: all 0.3s; + opacity: 1; +} +.elementor-lightbox .dialog-lightbox-close-button svg, +.elementor-lightbox .elementor-swiper-button svg { + fill: var(--lightbox-ui-color); +} +.elementor-lightbox .dialog-lightbox-close-button:hover, +.elementor-lightbox .elementor-swiper-button:hover { + color: var(--lightbox-ui-color-hover); +} +.elementor-lightbox .dialog-lightbox-close-button:hover svg, +.elementor-lightbox .elementor-swiper-button:hover svg { + fill: var(--lightbox-ui-color-hover); +} +.elementor-lightbox .swiper, +.elementor-lightbox .swiper-container { + height: 100%; +} +.elementor-lightbox .elementor-lightbox-item { + display: flex; + align-items: center; + justify-content: center; + position: relative; + padding: 70px; + box-sizing: border-box; + height: 100%; + margin: auto; +} +@media (max-width: 767px) { + .elementor-lightbox .elementor-lightbox-item { + padding: 70px 0; + } +} +.elementor-lightbox .elementor-lightbox-image { + max-height: 100%; + -webkit-user-select: none; + -moz-user-select: none; + user-select: none; +} +.elementor-lightbox .elementor-lightbox-image, .elementor-lightbox .elementor-lightbox-image:hover { + opacity: 1; + filter: none; + border: none; +} +.elementor-lightbox .elementor-lightbox-image { + box-shadow: 0 0 30px rgba(0, 0, 0, 0.3), 0 0 8px -5px rgba(0, 0, 0, 0.3); + border-radius: 2px; +} +.elementor-lightbox .elementor-video-container { + width: 100%; + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); +} +.elementor-lightbox .elementor-video-container .elementor-video-square, +.elementor-lightbox .elementor-video-container .elementor-video-landscape, +.elementor-lightbox .elementor-video-container .elementor-video-portrait { + width: 100%; + height: 100%; + margin: auto; +} +.elementor-lightbox .elementor-video-container .elementor-video-square iframe, +.elementor-lightbox .elementor-video-container .elementor-video-landscape iframe, +.elementor-lightbox .elementor-video-container .elementor-video-portrait iframe { + border: 0; + background-color: #000; +} +.elementor-lightbox .elementor-video-container .elementor-video-square iframe, +.elementor-lightbox .elementor-video-container .elementor-video-square video, +.elementor-lightbox .elementor-video-container .elementor-video-landscape iframe, +.elementor-lightbox .elementor-video-container .elementor-video-landscape video, +.elementor-lightbox .elementor-video-container .elementor-video-portrait iframe, +.elementor-lightbox .elementor-video-container .elementor-video-portrait video { + aspect-ratio: var(--video-aspect-ratio, 1.77777); +} +@supports not (aspect-ratio: 1/1) { + .elementor-lightbox .elementor-video-container .elementor-video-square, + .elementor-lightbox .elementor-video-container .elementor-video-landscape, + .elementor-lightbox .elementor-video-container .elementor-video-portrait { + position: relative; + overflow: hidden; + height: 0; + padding-bottom: calc(100% / var(--video-aspect-ratio, 1.77777)); + } + .elementor-lightbox .elementor-video-container .elementor-video-square iframe, + .elementor-lightbox .elementor-video-container .elementor-video-square video, + .elementor-lightbox .elementor-video-container .elementor-video-landscape iframe, + .elementor-lightbox .elementor-video-container .elementor-video-landscape video, + .elementor-lightbox .elementor-video-container .elementor-video-portrait iframe, + .elementor-lightbox .elementor-video-container .elementor-video-portrait video { + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + } +} +.elementor-lightbox .elementor-video-container .elementor-video-square iframe, +.elementor-lightbox .elementor-video-container .elementor-video-square video { + width: min(90vh, 90vw); + height: min(90vh, 90vw); +} +.elementor-lightbox .elementor-video-container .elementor-video-landscape iframe, +.elementor-lightbox .elementor-video-container .elementor-video-landscape video { + width: 100%; + max-height: 90vh; +} +.elementor-lightbox .elementor-video-container .elementor-video-portrait iframe, +.elementor-lightbox .elementor-video-container .elementor-video-portrait video { + height: 100%; + max-width: 90vw; +} +@media (min-width: 1025px) { + .elementor-lightbox .elementor-video-container .elementor-video-landscape { + width: 85vw; + max-height: 85vh; + } + .elementor-lightbox .elementor-video-container .elementor-video-portrait { + height: 85vh; + max-width: 85vw; + } +} +@media (max-width: 1024px) { + .elementor-lightbox .elementor-video-container .elementor-video-landscape { + width: 95vw; + max-height: 95vh; + } + .elementor-lightbox .elementor-video-container .elementor-video-portrait { + height: 95vh; + max-width: 95vw; + } +} +.elementor-lightbox .swiper .elementor-swiper-button-prev, +.elementor-lightbox .swiper-container .elementor-swiper-button-prev { + left: 0; +} +.elementor-lightbox .swiper .elementor-swiper-button-next, +.elementor-lightbox .swiper-container .elementor-swiper-button-next { + right: 0; +} +.elementor-lightbox .swiper .swiper-pagination-fraction, +.elementor-lightbox .swiper-container .swiper-pagination-fraction { + width: -moz-max-content; + width: max-content; + color: #ffffff; +} +.elementor-lightbox .elementor-swiper-button:focus { + outline-width: 1px; +} +.elementor-lightbox .elementor-swiper-button-prev, .elementor-lightbox .elementor-swiper-button-next { + height: 100%; + display: flex; + align-items: center; + width: 15%; + justify-content: center; + font-size: var(--lightbox-navigation-icons-size); +} +@media (max-width: 767px) { + .elementor-lightbox .elementor-swiper-button:focus { + outline: none; + } + .elementor-lightbox .elementor-swiper-button-prev, .elementor-lightbox .elementor-swiper-button-next { + width: 20%; + } + .elementor-lightbox .elementor-swiper-button-prev i, .elementor-lightbox .elementor-swiper-button-next i { + padding: 10px; + background-color: rgba(0, 0, 0, 0.5); + } + .elementor-lightbox .elementor-swiper-button-prev { + left: 0; + justify-content: flex-start; + } + .elementor-lightbox .elementor-swiper-button-next { + right: 0; + justify-content: flex-end; + } +} + +.elementor-slideshow__counter { + color: currentColor; + font-size: 0.75em; + width: -moz-max-content; + width: max-content; +} +.elementor-slideshow__header, .elementor-slideshow__footer { + position: absolute; + left: 0; + width: 100%; + padding: 15px 20px; + transition: 0.3s; +} +.elementor-slideshow__footer { + color: var(--lightbox-text-color); +} +.elementor-slideshow__header { + color: var(--lightbox-ui-color); + display: flex; + flex-direction: row-reverse; + font-size: var(--lightbox-header-icons-size); + padding-left: 1em; + padding-right: 2.6em; + top: 0; + align-items: center; + z-index: 10; +} +.elementor-slideshow__header > i, +.elementor-slideshow__header > svg { + cursor: pointer; + padding: 0.25em; + margin: 0 0.35em; +} +.elementor-slideshow__header > i { + font-size: inherit; +} +.elementor-slideshow__header > i:hover { + color: var(--lightbox-ui-color-hover); +} +.elementor-slideshow__header > svg { + box-sizing: content-box; + fill: var(--lightbox-ui-color); + height: 1em; + width: 1em; +} +.elementor-slideshow__header > svg:hover { + fill: var(--lightbox-ui-color-hover); +} +.elementor-slideshow__header .elementor-slideshow__counter { + margin-right: auto; +} +.elementor-slideshow__header .elementor-icon-share { + z-index: 5; +} +.elementor-slideshow__share-menu { + background-color: rgba(0, 0, 0, 0); + width: 0; + height: 0; + position: absolute; + overflow: hidden; + transition: background-color 400ms; +} +.elementor-slideshow__share-menu .elementor-slideshow__share-links a { + color: #0C0D0E; +} +.elementor-slideshow__share-links { + display: block; + position: absolute; + min-width: 200px; + right: 2.8em; + top: 3em; + background-color: #fff; + border-radius: 3px; + padding: 14px 20px; + transform: scale(0); + opacity: 0; + transform-origin: 90% 10%; + transition: all 250ms 100ms; + box-shadow: 0 4px 15px rgba(0, 0, 0, 0.3); +} +.elementor-slideshow__share-links a { + text-align: left; + color: #3f444b; + font-size: 12px; + line-height: 2.5; + display: block; + opacity: 0; + transition: opacity 500ms 100ms; +} +.elementor-slideshow__share-links a:hover { + color: #000; +} +.elementor-slideshow__share-links a i, +.elementor-slideshow__share-links a svg { + margin-right: 0.75em; +} +.elementor-slideshow__share-links a i { + font-size: 1.25em; +} +.elementor-slideshow__share-links a svg { + height: 1.25em; + width: 1.25em; +} +.elementor-slideshow__share-links:before { + content: ""; + display: block; + position: absolute; + top: 1px; + right: 0.5em; + border: 0.45em solid; + border-color: transparent transparent #fff transparent; + transform: translateY(-100%) scaleX(0.7); +} +.elementor-slideshow__footer { + bottom: 0; + z-index: 5; + position: fixed; +} +.elementor-slideshow__title, .elementor-slideshow__description { + margin: 0; +} +.elementor-slideshow__title { + font-size: 16px; + font-weight: bold; +} +.elementor-slideshow__description { + font-size: 14px; +} +.elementor-slideshow--ui-hidden .elementor-slideshow__header, .elementor-slideshow--ui-hidden .elementor-slideshow__footer { + opacity: 0; + pointer-events: none; +} +.elementor-slideshow--ui-hidden .elementor-swiper-button-prev, .elementor-slideshow--ui-hidden .elementor-swiper-button-next { + opacity: 0; +} +.elementor-slideshow--fullscreen-mode .elementor-video-container { + width: 100%; +} +.elementor-slideshow--zoom-mode .elementor-slideshow__header, .elementor-slideshow--zoom-mode .elementor-slideshow__footer { + background-color: rgba(0, 0, 0, 0.5); +} +.elementor-slideshow--zoom-mode .elementor-swiper-button-prev, .elementor-slideshow--zoom-mode .elementor-swiper-button-next { + opacity: 0; + pointer-events: none; +} +.elementor-slideshow--share-mode .elementor-slideshow__share-menu { + top: 0; + left: 0; + width: 100vw; + height: 100vh; + opacity: 1; + cursor: default; + background-color: rgba(0, 0, 0, 0.5); +} +.elementor-slideshow--share-mode .elementor-slideshow__share-links { + transform: scale(1); +} +.elementor-slideshow--share-mode .elementor-slideshow__share-links, .elementor-slideshow--share-mode .elementor-slideshow__share-links a { + opacity: 1; +} +.elementor-slideshow--share-mode .elementor-slideshow__share-links .eicon-twitter { + color: #1DA1F2; +} +.elementor-slideshow--share-mode .elementor-slideshow__share-links .eicon-facebook { + color: #3b5998; +} +.elementor-slideshow--share-mode .elementor-slideshow__share-links .eicon-pinterest { + color: #bd081c; +} +.elementor-slideshow--share-mode .elementor-slideshow__share-links .eicon-download-bold { + color: #9DA5AE; +} +.elementor-slideshow--share-mode .elementor-slideshow__share-links .e-eicon-twitter { + fill: #1DA1F2; +} +.elementor-slideshow--share-mode .elementor-slideshow__share-links .e-eicon-facebook { + fill: #3b5998; +} +.elementor-slideshow--share-mode .elementor-slideshow__share-links .e-eicon-pinterest { + fill: #bd081c; +} +.elementor-slideshow--share-mode .elementor-slideshow__share-links .e-eicon-download-bold { + fill: #9DA5AE; +} +.elementor-slideshow--share-mode .eicon-share-arrow { + z-index: 2; +} + +.animated { + animation-duration: 1.25s; +} +.animated.animated-slow { + animation-duration: 2s; +} +.animated.animated-fast { + animation-duration: 0.75s; +} +.animated.infinite { + animation-iteration-count: infinite; +} +.animated.reverse { + animation-direction: reverse; + animation-fill-mode: forwards; +} + +@media (prefers-reduced-motion: reduce) { + .animated { + animation: none; + } +} +.elementor-shape { + overflow: hidden; + position: absolute; + left: 0; + width: 100%; + line-height: 0; + direction: ltr; + /* + * @TODO: The `z-index: -1` rules below are temporary fixes for Chrome 85 issue. + * It will be removed in a future version of Chrome. + */ +} +.elementor-shape-top { + top: -1px; +} +.elementor-shape-top:not([data-negative=false]) svg { + z-index: -1; +} +.elementor-shape-bottom { + bottom: -1px; +} +.elementor-shape-bottom:not([data-negative=true]) svg { + z-index: -1; +} +.elementor-shape[data-negative=false].elementor-shape-bottom { + transform: rotate(180deg); +} +.elementor-shape[data-negative=true].elementor-shape-top { + transform: rotate(180deg); +} +.elementor-shape svg { + display: block; + width: calc(100% + 1.3px); + position: relative; + left: 50%; + transform: translateX(-50%); +} +.elementor-shape .elementor-shape-fill { + fill: #fff; + transform-origin: center; + transform: rotateY(0deg); +} + +#wp-admin-bar-elementor_edit_page > .ab-item::before { + content: "\e813"; + font-family: eicons; + top: 3px; + font-size: 18px; +} +#wp-admin-bar-elementor_edit_page .ab-submenu .ab-item { + display: flex; + width: 200px; +} +#wp-admin-bar-elementor_edit_page .elementor-edit-link-title { + white-space: nowrap; + text-overflow: ellipsis; + overflow: hidden; + width: 100%; +} +#wp-admin-bar-elementor_edit_page .elementor-edit-link-type { + background: #3f444b; + font-size: 11px; + line-height: 9px; + margin-top: 6px; + padding: 4px 8px; + border-radius: 3px; +} + +#wp-admin-bar-elementor_inspector > .ab-item::before { + content: "\f348"; + top: 2px; +} + +#wpadminbar * { + font-style: normal; +} + +.page-template-elementor_canvas.elementor-page:before { + display: none; +} + +.elementor-post__thumbnail__link { + transition: none; +} + +#left-area ul.elementor-icon-list-items, +.elementor .elementor-element ul.elementor-icon-list-items, +.elementor-edit-area .elementor-element ul.elementor-icon-list-items { + padding: 0; +} + +.e--ua-appleWebkit.rtl { + --flex-right: flex-start; +} +.e--ua-appleWebkit .elementor-widget-social-icons.e-grid-align-right, +.e--ua-appleWebkit .elementor-share-buttons--align-right { + --justify-content: var(--flex-right, flex-end); +} +.e--ua-appleWebkit .elementor-widget-social-icons.e-grid-align-center, +.e--ua-appleWebkit .elementor-share-buttons--align-center { + --justify-content: center; +} +.e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-right .elementor-grid, .e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-center .elementor-grid, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-right .elementor-grid, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-center .elementor-grid, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-justify .elementor-grid { + width: auto; + display: flex; + flex-wrap: wrap; + justify-content: var(--justify-content, space-between); + margin-left: calc(-0.5 * var(--grid-column-gap)); + margin-right: calc(-0.5 * var(--grid-column-gap)); +} +.e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-right .elementor-grid-item, .e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-center .elementor-grid-item, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-right .elementor-grid-item, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-center .elementor-grid-item, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-justify .elementor-grid-item { + margin-left: calc(0.5 * var(--grid-column-gap)); + margin-right: calc(0.5 * var(--grid-column-gap)); +} +.e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-left .elementor-grid, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-left .elementor-grid { + display: inline-block; +} +.e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-left .elementor-grid, .e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-left .elementor-grid-item, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-left .elementor-grid, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-left .elementor-grid-item { + margin-left: 0; + margin-right: 0; +} +@media (max-width: 1024px) { + .e--ua-appleWebkit .elementor-widget-social-icons.e-grid-align-tablet-right, + .e--ua-appleWebkit .elementor-share-buttons-tablet--align-right { + --justify-content: var(--flex-right, flex-end); + } + .e--ua-appleWebkit .elementor-widget-social-icons.e-grid-align-tablet-center, + .e--ua-appleWebkit .elementor-share-buttons-tablet--align-center { + --justify-content: center; + } + .e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-tablet-right .elementor-grid, .e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-tablet-center .elementor-grid, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-tablet-right .elementor-grid, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-tablet-center .elementor-grid, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-tablet-justify .elementor-grid { + width: auto; + display: flex; + flex-wrap: wrap; + justify-content: var(--justify-content, space-between); + margin-left: calc(-0.5 * var(--grid-column-gap)); + margin-right: calc(-0.5 * var(--grid-column-gap)); + } + .e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-tablet-right .elementor-grid-item, .e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-tablet-center .elementor-grid-item, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-tablet-right .elementor-grid-item, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-tablet-center .elementor-grid-item, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-tablet-justify .elementor-grid-item { + margin-left: calc(0.5 * var(--grid-column-gap)); + margin-right: calc(0.5 * var(--grid-column-gap)); + } + .e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-tablet-left .elementor-grid, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons-tablet--align-left .elementor-grid { + display: inline-block; + } + .e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-tablet-left .elementor-grid, .e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-tablet-left .elementor-grid-item, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons-tablet--align-left .elementor-grid, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons-tablet--align-left .elementor-grid-item { + margin-left: 0; + margin-right: 0; + } +} +@media (max-width: 767px) { + .e--ua-appleWebkit .elementor-widget-social-icons.e-grid-align-mobile-right, + .e--ua-appleWebkit .elementor-share-buttons-mobile--align-right { + --justify-content: var(--flex-right, flex-end); + } + .e--ua-appleWebkit .elementor-widget-social-icons.e-grid-align-mobile-center, + .e--ua-appleWebkit .elementor-share-buttons-mobile--align-center { + --justify-content: center; + } + .e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-mobile-right .elementor-grid, .e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-mobile-center .elementor-grid, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-mobile-right .elementor-grid, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-mobile-center .elementor-grid, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-mobile-justify .elementor-grid { + width: auto; + display: flex; + flex-wrap: wrap; + justify-content: var(--justify-content, space-between); + margin-left: calc(-0.5 * var(--grid-column-gap)); + margin-right: calc(-0.5 * var(--grid-column-gap)); + } + .e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-mobile-right .elementor-grid-item, .e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-mobile-center .elementor-grid-item, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-mobile-right .elementor-grid-item, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-mobile-center .elementor-grid-item, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-mobile-justify .elementor-grid-item { + margin-left: calc(0.5 * var(--grid-column-gap)); + margin-right: calc(0.5 * var(--grid-column-gap)); + } + .e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-mobile-left .elementor-grid, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons-mobile--align-left .elementor-grid { + display: inline-block; + } + .e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-mobile-left .elementor-grid, .e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-mobile-left .elementor-grid-item, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons-mobile--align-left .elementor-grid, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons-mobile--align-left .elementor-grid-item { + margin-left: 0; + margin-right: 0; + } +} + +@media (max-width: 767px) { + .elementor .elementor-hidden-mobile { + display: none; + } + .elementor .elementor-hidden-phone { + display: none; + } +} +@media (min-width: -1) and (max-width: -1) { + .elementor .elementor-hidden-mobile_extra { + display: none; + } +} +@media (min-width: 768px) and (max-width: 1024px) { + .elementor .elementor-hidden-tablet { + display: none; + } +} +@media (min-width: -1) and (max-width: -1) { + .elementor .elementor-hidden-tablet_extra { + display: none; + } +} +@media (min-width: -1) and (max-width: -1) { + .elementor .elementor-hidden-laptop { + display: none; + } +} +@media (min-width: 1025px) and (max-width: 99999px) { + .elementor .elementor-hidden-desktop { + display: none; + } +} +@media (min-width: -1) { + .elementor .elementor-hidden-widescreen { + display: none; + } +} + +.elementor-widget-text-path { + font-size: 20px; + text-align: var(--alignment, left); +} +.elementor-widget-text-path svg { + width: var(--width); + max-width: 100%; + height: auto; + overflow: visible; + word-spacing: var(--word-spacing); + transform: rotate(var(--rotate, 0)) scaleX(var(--scale-x, 1)) scaleY(var(--scale-y, 1)); +} +.elementor-widget-text-path svg path { + vector-effect: non-scaling-stroke; /* Prevent stroke size scaling when resizing the SVG. */ + fill: var(--path-fill, transparent); + stroke: var(--stroke-color, transparent); + stroke-width: var(--stroke-width, 1px); + transition: var(--stroke-transition) stroke, var(--stroke-transition) fill; +} +.elementor-widget-text-path svg:hover path { + --path-fill: var( --path-fill-hover ); + --stroke-color: var( --stroke-color-hover ); + --stroke-width: var( --stroke-width-hover ); +} +.elementor-widget-text-path svg text { + --fill: var( --text-color ); + fill: var(--fill); + direction: var(--direction, ltr); + transition: var(--transition) stroke, var(--transition) stroke-width, var(--transition) fill; +} +.elementor-widget-text-path svg text:hover { + --color: var( --text-color-hover, var( --text-color ) ); + --fill: var( --color ); + color: var(--color); +} + +.elementor-widget-n-tabs { + --n-tabs-color-accent-fallback: #61CE70; + --n-tabs-color-secondary-fallback: #54595F; + --n-tabs-default-padding-block: 15px; + --n-tabs-default-padding-inline: 35px; + --n-tabs-background-color: transparent; + --n-tabs-display: flex; + --n-tabs-direction: column; + --n-tabs-gap: 10px; + --n-tabs-heading-display: flex; + --n-tabs-heading-direction: row; + --n-tabs-heading-grow: initial; + --n-tabs-heading-justify-content: center; + --n-tabs-heading-width: initial; + --n-tabs-heading-overflow-x: initial; + --n-tabs-heading-wrap: nowrap; + --n-tabs-border-width: 1px; + --n-tabs-border-color: #D5D8DC; + --n-tabs-content-display: flex; + --n-tabs-title-color: var(--e-global-color-secondary, var(--n-tabs-color-secondary-fallback)); + --n-tabs-title-color-hover: #ffffff; + --n-tabs-title-color-active: #ffffff; + --n-tabs-title-background-color: #F1F2F3; + --n-tabs-title-background-color-hover: var(--e-global-color-accent, var(--n-tabs-color-accent-fallback)); + --n-tabs-title-background-color-active: var(--e-global-color-accent, var(--n-tabs-color-accent-fallback)); + --n-tabs-title-width: initial; + --n-tabs-title-height: initial; + --n-tabs-title-font-size: 1rem; + --n-tabs-title-white-space: initial; + --n-tabs-title-justify-content-toggle: initial; + --n-tabs-title-align-items-toggle: center; + --n-tabs-title-justify-content: center; + --n-tabs-title-align-items: center; + --n-tabs-title-text-align: center; + --n-tabs-title-direction: row; + --n-tabs-title-gap: 10px; + --n-tabs-title-flex-grow: 0; + --n-tabs-title-flex-basis: content; + --n-tabs-title-flex-shrink: initial; + --n-tabs-title-order: initial; + --n-tabs-title-padding-block-start: var(--n-tabs-default-padding-block); + --n-tabs-title-padding-inline-end: var(--n-tabs-default-padding-inline); + --n-tabs-title-padding-block-end: var(--n-tabs-default-padding-block); + --n-tabs-title-padding-inline-start: var(--n-tabs-default-padding-inline); + --n-tabs-title-border-radius: initial; + --n-tabs-title-transition: 0.3s; + --n-tabs-icon-color: var(--e-global-color-secondary, var(--n-tabs-color-secondary-fallback)); + --n-tabs-icon-color-hover: var(--n-tabs-title-color-hover); + --n-tabs-icon-color-active: #ffffff; + --n-tabs-icon-gap: 5px; + width: 100%; + max-width: 100%; /* Fix issue with new created n-tabs inside n-tabs with overflow */ +} +.elementor-widget-n-tabs .e-n-tabs { + display: var(--n-tabs-display); + flex-direction: var(--n-tabs-direction); + gap: var(--n-tabs-gap); + text-align: start; + min-width: 0; +} +.elementor-widget-n-tabs .e-n-tabs-heading { + display: var(--n-tabs-heading-display); + flex-basis: var(--n-tabs-heading-width); + flex-direction: var(--n-tabs-heading-direction); + flex-shrink: 0; + justify-content: var(--n-tabs-heading-justify-content); + gap: var(--n-tabs-title-gap); + overflow-x: var(--n-tabs-heading-overflow-x); + flex-wrap: var(--n-tabs-heading-wrap); + -ms-overflow-style: none; /* IE and Edge */ + scrollbar-width: none; /* Firefox */ +} +.elementor-widget-n-tabs .e-n-tabs-heading::-webkit-scrollbar { + display: none; /* Hide scrollbar for Chrome, Safari and Opera */ +} +.elementor-widget-n-tabs .e-n-tabs-heading.e-scroll { + cursor: grabbing; + cursor: -webkit-grabbing; +} +.elementor-widget-n-tabs .e-n-tabs-heading.e-scroll-active { + position: relative; +} +.elementor-widget-n-tabs .e-n-tabs-heading.e-scroll-active::before { + content: ""; + position: absolute; + inset-block: 0; + inset-inline: -1000vw; + z-index: 2; +} +.elementor-widget-n-tabs .e-n-tabs-content { + display: var(--n-tabs-content-display); + flex-grow: 1; + min-width: 0; +} +.elementor-widget-n-tabs .e-n-tabs-content > .e-con:not(.e-active) { + display: none; +} +.elementor-widget-n-tabs .e-n-tabs:not(.e-activated) > .e-n-tabs-content > .e-con:nth-child(1) { + display: flex; +} +.elementor-widget-n-tabs .e-n-tab-title { + all: unset; + -webkit-user-select: none; + -moz-user-select: none; + user-select: none; + display: flex; + align-items: var(--n-tabs-title-align-items-toggle, var(--n-tabs-title-align-items)); + flex-direction: var(--n-tabs-title-direction); + justify-content: var(--n-tabs-title-justify-content-toggle, var(--n-tabs-title-justify-content)); + gap: var(--n-tabs-icon-gap); + border-width: var(--n-tabs-border-width); + position: relative; + cursor: pointer; + outline: none; + flex-grow: var(--n-tabs-title-flex-grow); + flex-basis: var(--n-tabs-title-flex-basis); + flex-shrink: var(--n-tabs-title-flex-shrink); + padding-block-start: var(--n-tabs-title-padding-block-start); + padding-inline-end: var(--n-tabs-title-padding-inline-end); + padding-block-end: var(--n-tabs-title-padding-block-end); + padding-inline-start: var(--n-tabs-title-padding-inline-start); + border-radius: var(--n-tabs-title-border-radius); + height: var(--n-tabs-title-height); + width: var(--n-tabs-title-width); + white-space: var(--n-tabs-title-white-space); + transition: background var(--n-tabs-title-transition), color var(--n-tabs-title-transition), border var(--n-tabs-title-transition), box-shadow var(--n-tabs-title-transition), text-shadow var(--n-tabs-title-transition), stroke var(--n-tabs-title-transition), stroke-width var(--n-tabs-title-transition), -webkit-text-stroke-width var(--n-tabs-title-transition), -webkit-text-stroke-color var(--n-tabs-title-transition), transform var(--n-tabs-title-transition); +} +.elementor-widget-n-tabs .e-n-tab-title:focus-visible { + outline: 5px auto -webkit-focus-ring-color; +} +.elementor-widget-n-tabs .e-n-tab-title span svg, .elementor-widget-n-tabs .e-n-tab-title span i { + transition: color var(--n-tabs-title-transition), fill var(--n-tabs-title-transition); +} +.elementor-widget-n-tabs .e-n-tab-title-text { + display: flex; + align-items: center; + font-size: var(--n-tabs-title-font-size); + text-align: var(--n-tabs-title-text-align); +} +.elementor-widget-n-tabs .e-n-tab-title .e-n-tab-icon { + display: flex; + align-items: center; + flex-direction: column; + flex-shrink: 0; + order: var(--n-tabs-icon-order); + overflow: hidden; +} +.elementor-widget-n-tabs .e-n-tab-title .e-n-tab-icon i { + font-size: var(--n-tabs-icon-size, var(--n-tabs-title-font-size)); +} +.elementor-widget-n-tabs .e-n-tab-title .e-n-tab-icon svg { + width: var(--n-tabs-icon-size, var(--n-tabs-title-font-size)); + height: var(--n-tabs-icon-size, var(--n-tabs-title-font-size)); +} +.elementor-widget-n-tabs .e-n-tab-title .e-n-tab-icon:empty { + display: none; +} +.elementor-widget-n-tabs .e-n-tab-title[aria-selected=false] { + background-color: var(--n-tabs-title-background-color); +} +.elementor-widget-n-tabs .e-n-tab-title[aria-selected=false], .elementor-widget-n-tabs .e-n-tab-title[aria-selected=false] a { + color: var(--n-tabs-title-color); +} +.elementor-widget-n-tabs .e-n-tab-title[aria-selected=false] .e-n-tab-icon i { + color: var(--n-tabs-icon-color); +} +.elementor-widget-n-tabs .e-n-tab-title[aria-selected=false] .e-n-tab-icon svg { + fill: var(--n-tabs-icon-color); +} +.elementor-widget-n-tabs .e-n-tab-title[aria-selected=false] .e-n-tab-icon i:last-child, +.elementor-widget-n-tabs .e-n-tab-title[aria-selected=false] .e-n-tab-icon svg:last-child { + transform: translate(0, -100vh); + height: 0; + opacity: 0; +} +.elementor-widget-n-tabs .e-n-tab-title[aria-selected=true], .elementor-widget-n-tabs .e-n-tab-title[aria-selected=true] a { + color: var(--n-tabs-title-color-active); +} +.elementor-widget-n-tabs .e-n-tab-title[aria-selected=true] .e-n-tab-icon i { + color: var(--n-tabs-icon-color-active); +} +.elementor-widget-n-tabs .e-n-tab-title[aria-selected=true] .e-n-tab-icon svg { + fill: var(--n-tabs-icon-color-active); +} +.elementor-widget-n-tabs .e-n-tab-title[aria-selected=true] .e-n-tab-icon i:first-child, +.elementor-widget-n-tabs .e-n-tab-title[aria-selected=true] .e-n-tab-icon svg:first-child { + transform: translate(0, -100vh); + height: 0; + opacity: 0; +} +.elementor-widget-n-tabs .e-n-tab-title[aria-selected=true][class*=elementor-animation-]:focus, .elementor-widget-n-tabs .e-n-tab-title[aria-selected=true][class*=elementor-animation-]:active, .elementor-widget-n-tabs .e-n-tab-title[aria-selected=true][class*=elementor-animation-]:hover { + transform: initial; + animation: initial; +} +.elementor-widget-n-tabs [data-touch-mode=false] .e-n-tab-title[aria-selected=false]:hover, .elementor-widget-n-tabs [data-touch-mode=false] .e-n-tab-title[aria-selected=false]:hover a { + color: var(--n-tabs-title-color-hover); +} +.elementor-widget-n-tabs [data-touch-mode=false] .e-n-tab-title[aria-selected=false]:hover .e-n-tab-icon i { + color: var(--n-tabs-icon-color-hover); +} +.elementor-widget-n-tabs [data-touch-mode=false] .e-n-tab-title[aria-selected=false]:hover .e-n-tab-icon svg { + fill: var(--n-tabs-icon-color-hover); +} +.elementor-widget-n-tabs [data-touch-mode=true] .e-n-tab-title[aria-selected=false]:hover, .elementor-widget-n-tabs [data-touch-mode=true] .e-n-tab-title[aria-selected=false]:hover a { + color: var(--n-tabs-title-color-active); +} +.elementor-widget-n-tabs [data-touch-mode=true] .e-n-tab-title[aria-selected=false]:hover .e-n-tab-icon i { + color: var(--n-tabs-icon-color-active); +} +.elementor-widget-n-tabs [data-touch-mode=true] .e-n-tab-title[aria-selected=false]:hover .e-n-tab-icon svg { + fill: var(--n-tabs-icon-color-active); +} +.elementor-widget-n-tabs [data-touch-mode=true] .e-n-tab-title[aria-selected=false]:hover .e-n-tab-icon i:first-child, +.elementor-widget-n-tabs [data-touch-mode=true] .e-n-tab-title[aria-selected=false]:hover .e-n-tab-icon svg:first-child { + transform: translate(0, -100vh); + height: 0; + opacity: 0; +} +.elementor-widget-n-tabs [data-touch-mode=true] .e-n-tab-title[aria-selected=false]:hover[class*=elementor-animation-]:focus, .elementor-widget-n-tabs [data-touch-mode=true] .e-n-tab-title[aria-selected=false]:hover[class*=elementor-animation-]:active, .elementor-widget-n-tabs [data-touch-mode=true] .e-n-tab-title[aria-selected=false]:hover[class*=elementor-animation-]:hover { + transform: initial; + animation: initial; +} +.elementor-widget-n-tabs [data-touch-mode=true] .e-n-tab-title[aria-selected=false]:hover .e-n-tab-icon i:last-child, +.elementor-widget-n-tabs [data-touch-mode=true] .e-n-tab-title[aria-selected=false]:hover .e-n-tab-icon svg:last-child { + transform: initial; + height: initial; + opacity: initial; +} + +.elementor .elementor-element.elementor-widget-n-tabs > .elementor-widget-container > .e-n-tabs[data-touch-mode=false] > .e-n-tabs-heading .e-n-tab-title[aria-selected=false]:hover { + background-color: var(--n-tabs-title-background-color-hover); + background-image: initial; +} + +.elementor .elementor-element.elementor-widget-n-tabs > .elementor-widget-container > .e-n-tabs > .e-n-tabs-heading .e-n-tab-title[aria-selected=true], +.elementor .elementor-element.elementor-widget-n-tabs > .elementor-widget-container > .e-n-tabs[data-touch-mode=true] > .e-n-tabs-heading .e-n-tab-title[aria-selected=false]:hover { + background-color: var(--n-tabs-title-background-color-active); + background-image: initial; +} + +@media (max-width: 767px) { + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-mobile { + --n-tabs-direction: column; + --n-tabs-heading-display: contents; + --n-tabs-content-display: contents; + } + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-mobile .e-n-tabs { + gap: 0; + } + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-mobile .e-n-tabs-content > .e-con { + order: var(--n-tabs-title-order); + } + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-mobile .e-n-tab-title { + order: var(--n-tabs-title-order); + width: initial; + } + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-mobile .e-n-tab-title:not(:first-child) { + margin-block-start: var(--n-tabs-title-gap); + } + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-mobile .e-n-tab-title[aria-selected=true] { + margin-block-end: var(--n-tabs-gap); + } +} +@media (max-width: -1) { + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-mobile_extra { + --n-tabs-direction: column; + --n-tabs-heading-display: contents; + --n-tabs-content-display: contents; + } + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-mobile_extra .e-n-tabs { + gap: 0; + } + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-mobile_extra .e-n-tabs-content > .e-con { + order: var(--n-tabs-title-order); + } + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-mobile_extra .e-n-tab-title { + order: var(--n-tabs-title-order); + width: initial; + } + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-mobile_extra .e-n-tab-title:not(:first-child) { + margin-block-start: var(--n-tabs-title-gap); + } + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-mobile_extra .e-n-tab-title[aria-selected=true] { + margin-block-end: var(--n-tabs-gap); + } +} +@media (max-width: 1024px) { + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-tablet { + --n-tabs-direction: column; + --n-tabs-heading-display: contents; + --n-tabs-content-display: contents; + } + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-tablet .e-n-tabs { + gap: 0; + } + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-tablet .e-n-tabs-content > .e-con { + order: var(--n-tabs-title-order); + } + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-tablet .e-n-tab-title { + order: var(--n-tabs-title-order); + width: initial; + } + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-tablet .e-n-tab-title:not(:first-child) { + margin-block-start: var(--n-tabs-title-gap); + } + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-tablet .e-n-tab-title[aria-selected=true] { + margin-block-end: var(--n-tabs-gap); + } +} +@media (max-width: -1) { + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-tablet_extra { + --n-tabs-direction: column; + --n-tabs-heading-display: contents; + --n-tabs-content-display: contents; + } + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-tablet_extra .e-n-tabs { + gap: 0; + } + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-tablet_extra .e-n-tabs-content > .e-con { + order: var(--n-tabs-title-order); + } + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-tablet_extra .e-n-tab-title { + order: var(--n-tabs-title-order); + width: initial; + } + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-tablet_extra .e-n-tab-title:not(:first-child) { + margin-block-start: var(--n-tabs-title-gap); + } + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-tablet_extra .e-n-tab-title[aria-selected=true] { + margin-block-end: var(--n-tabs-gap); + } +} +@media (max-width: -1) { + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-laptop { + --n-tabs-direction: column; + --n-tabs-heading-display: contents; + --n-tabs-content-display: contents; + } + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-laptop .e-n-tabs { + gap: 0; + } + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-laptop .e-n-tabs-content > .e-con { + order: var(--n-tabs-title-order); + } + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-laptop .e-n-tab-title { + order: var(--n-tabs-title-order); + width: initial; + } + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-laptop .e-n-tab-title:not(:first-child) { + margin-block-start: var(--n-tabs-title-gap); + } + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-laptop .e-n-tab-title[aria-selected=true] { + margin-block-end: var(--n-tabs-gap); + } +} +.elementor-widget-n-accordion { + --n-accordion-title-font-size: 20px; + --n-accordion-title-flex-grow: initial; + --n-accordion-title-justify-content: initial; + --n-accordion-title-icon-order: -1; + --n-accordion-border-width: 1px; + --n-accordion-border-color: #D5D8DC; + --n-accordion-border-style: solid; + --n-accordion-item-title-flex-grow: initial; + --n-accordion-item-title-space-between: 0px; + --n-accordion-item-title-distance-from-content: 0px; + --n-accordion-padding: 10px; + --n-accordion-border-radius: 0px; + --n-accordion-icon-size: 15px; + --n-accordion-title-normal-color: #1f2124; + --n-accordion-title-hover-color: #1f2124; + --n-accordion-title-active-color: #1f2124; + --n-accordion-icon-normal-color: var(--n-accordion-title-normal-color); + --n-accordion-icon-hover-color: var(--n-accordion-title-hover-color); + --n-accordion-icon-active-color: var(--n-accordion-title-active-color); + --n-accordion-icon-gap: 0 10px; + width: 100%; +} +.elementor-widget-n-accordion .e-n-accordion details > summary::-webkit-details-marker { + display: none; +} +.elementor-widget-n-accordion .e-n-accordion-item { + display: flex; + flex-direction: column; + position: relative; +} +.elementor-widget-n-accordion .e-n-accordion-item:not(:last-child) { + margin-block-end: var(--n-accordion-item-title-space-between); +} +:where(.elementor-widget-n-accordion .e-n-accordion-item > .e-con) { + border: var(--n-accordion-border-width) var(--n-accordion-border-style) var(--n-accordion-border-color); +} +.elementor-widget-n-accordion .e-n-accordion-item-title { + display: flex; + flex-direction: row; + list-style: none; + padding: var(--n-accordion-padding); + border-width: var(--n-accordion-border-width); + border-color: var(--n-accordion-border-color); + border-style: var(--n-accordion-border-style); + justify-content: var(--n-accordion-title-justify-content); + border-radius: var(--n-accordion-border-radius); + flex-grow: var(--n-menu-title-flex-grow); + gap: var(--n-accordion-icon-gap); + color: var(--n-accordion-title-normal-color); + align-items: center; + cursor: pointer; +} +.elementor-widget-n-accordion .e-n-accordion-item-title-header { + display: flex; +} +.elementor-widget-n-accordion .e-n-accordion-item-title-header h1, .elementor-widget-n-accordion .e-n-accordion-item-title-header h2, .elementor-widget-n-accordion .e-n-accordion-item-title-header h3, .elementor-widget-n-accordion .e-n-accordion-item-title-header h4, .elementor-widget-n-accordion .e-n-accordion-item-title-header h5, .elementor-widget-n-accordion .e-n-accordion-item-title-header h6, .elementor-widget-n-accordion .e-n-accordion-item-title-header p { + margin-block-start: 0; + margin-block-end: 0; +} +.elementor-widget-n-accordion .e-n-accordion-item-title-text { + font-size: var(--n-accordion-title-font-size); + align-items: center; +} +.elementor-widget-n-accordion .e-n-accordion-item-title-icon { + display: flex; + flex-direction: row; + align-items: center; + order: var(--n-accordion-title-icon-order); + position: relative; + width: -moz-fit-content; + width: fit-content; +} +.elementor-widget-n-accordion .e-n-accordion-item-title-icon span { + height: var(--n-accordion-icon-size); + width: auto; +} +.elementor-widget-n-accordion .e-n-accordion-item-title-icon span > i { + color: var(--n-accordion-icon-normal-color); + font-size: var(--n-accordion-icon-size); +} +.elementor-widget-n-accordion .e-n-accordion-item-title-icon span > svg { + fill: var(--n-accordion-icon-normal-color); + height: var(--n-accordion-icon-size); +} +.elementor-widget-n-accordion .e-n-accordion-item-title > span { + cursor: pointer; +} +.elementor-widget-n-accordion .e-n-accordion-item[open] .e-n-accordion-item-title { + margin-block-end: var(--n-accordion-item-title-distance-from-content); + color: var(--n-accordion-title-active-color); +} +.elementor-widget-n-accordion .e-n-accordion-item[open] .e-n-accordion-item-title-icon .e-opened { + display: flex; +} +.elementor-widget-n-accordion .e-n-accordion-item[open] .e-n-accordion-item-title-icon .e-closed { + display: none; +} +.elementor-widget-n-accordion .e-n-accordion-item[open] .e-n-accordion-item-title-icon span > i { + color: var(--n-accordion-icon-active-color); +} +.elementor-widget-n-accordion .e-n-accordion-item[open] .e-n-accordion-item-title-icon span > svg { + fill: var(--n-accordion-icon-active-color); +} +.elementor-widget-n-accordion .e-n-accordion-item:not([open]):hover .e-n-accordion-item-title { + color: var(--n-accordion-title-hover-color); +} +.elementor-widget-n-accordion .e-n-accordion-item:not([open]):hover .e-n-accordion-item-title-icon span > i { + color: var(--n-accordion-icon-hover-color); +} +.elementor-widget-n-accordion .e-n-accordion-item:not([open]):hover .e-n-accordion-item-title-icon span > svg { + fill: var(--n-accordion-icon-hover-color); +} +.elementor-widget-n-accordion .e-n-accordion-item .e-n-accordion-item-title-icon .e-opened { + display: none; +} +.elementor-widget-n-accordion .e-n-accordion-item .e-n-accordion-item-title-icon .e-closed { + display: flex; +} +.elementor-widget-n-accordion .e-n-accordion-item .e-n-accordion-item-title-icon span > svg { + fill: var(--n-accordion-icon-normal-color); +} +.elementor-widget-n-accordion .e-n-accordion-item .e-n-accordion-item-title-icon span > i { + color: var(--n-accordion-icon-normal-color); +} +.elementor-widget-n-accordion .e-n-accordion-item > span { + cursor: pointer; +} + +.elementor-accordion { + text-align: left; +} +.elementor-accordion .elementor-accordion-item { + border: 1px solid #D5D8DC; +} +.elementor-accordion .elementor-accordion-item + .elementor-accordion-item { + border-top: none; +} +.elementor-accordion .elementor-tab-title { + margin: 0; + padding: 15px 20px; + font-weight: bold; + line-height: 1; + cursor: pointer; + outline: none; +} +.elementor-accordion .elementor-tab-title .elementor-accordion-icon { + display: inline-block; + width: 1.5em; +} +.elementor-accordion .elementor-tab-title .elementor-accordion-icon svg { + width: 1em; + height: 1em; +} +.elementor-accordion .elementor-tab-title .elementor-accordion-icon.elementor-accordion-icon-right { + float: right; + text-align: right; +} +.elementor-accordion .elementor-tab-title .elementor-accordion-icon.elementor-accordion-icon-left { + float: left; + text-align: left; +} +.elementor-accordion .elementor-tab-title .elementor-accordion-icon .elementor-accordion-icon-closed { + display: block; +} +.elementor-accordion .elementor-tab-title .elementor-accordion-icon .elementor-accordion-icon-opened { + display: none; +} +.elementor-accordion .elementor-tab-title.elementor-active .elementor-accordion-icon-closed { + display: none; +} +.elementor-accordion .elementor-tab-title.elementor-active .elementor-accordion-icon-opened { + display: block; +} +.elementor-accordion .elementor-tab-content { + display: none; + padding: 15px 20px; + border-top: 1px solid #D5D8DC; +} + +@media (max-width: 767px) { + .elementor-accordion .elementor-tab-title { + padding: 12px 15px; + } + .elementor-accordion .elementor-tab-title .elementor-accordion-icon { + width: 1.2em; + } + .elementor-accordion .elementor-tab-content { + padding: 7px 15px; + } +} +.e-con > .elementor-widget-accordion, +.e-con-inner > .elementor-widget-accordion { + width: var(--container-widget-width); + --flex-grow: var( --container-widget-flex-grow ); +} + +.elementor-alert { + padding: 15px; + border-left: 5px solid transparent; + position: relative; + text-align: left; +} +.elementor-alert .elementor-alert-title { + display: block; + font-weight: bold; +} +.elementor-alert .elementor-alert-description { + font-size: 13px; +} +.elementor-alert button.elementor-alert-dismiss { + position: absolute; + right: var(--dismiss-icon-horizontal-position, 10px); + top: var(--dismiss-icon-vertical-position, 10px); + padding: 3px; + font-size: var(--dismiss-icon-size, 20px); + line-height: 1; + background: transparent; + color: var(--dismiss-icon-normal-color, inherit); + border: none; + cursor: pointer; + transition-duration: var(--dismiss-icon-hover-transition-duration, 0.3s); +} +.elementor-alert button.elementor-alert-dismiss:hover { + color: var(--dismiss-icon-hover-color, inherit); +} +.elementor-alert button.elementor-alert-dismiss svg { + width: var(--dismiss-icon-size, 20px); + height: var(--dismiss-icon-size, 20px); + fill: var(--dismiss-icon-normal-color, currentColor); + transition-duration: var(--dismiss-icon-hover-transition-duration, 0.3s); +} +.elementor-alert button.elementor-alert-dismiss svg:hover { + fill: var(--dismiss-icon-hover-color, currentColor); +} +.elementor-alert.elementor-alert-info { + color: #31708f; + background-color: #d9edf7; + border-color: #bcdff1; +} +.elementor-alert.elementor-alert-success { + color: #3c763d; + background-color: #dff0d8; + border-color: #cae6be; +} +.elementor-alert.elementor-alert-warning { + color: #8a6d3b; + background-color: #fcf8e3; + border-color: #f9f0c3; +} +.elementor-alert.elementor-alert-danger { + color: #a94442; + background-color: #f2dede; + border-color: #e8c4c4; +} + +@media (max-width: 767px) { + .elementor-alert { + padding: 10px; + } + .elementor-alert button.elementor-alert-dismiss { + right: 7px; + top: 7px; + } +} +.elementor-counter .elementor-counter-number-wrapper { + display: flex; + font-size: 69px; + font-weight: 600; + line-height: 1; +} +.elementor-counter .elementor-counter-number-prefix, .elementor-counter .elementor-counter-number-suffix { + flex-grow: 1; + white-space: pre-wrap; +} +.elementor-counter .elementor-counter-number-prefix { + text-align: right; +} +.elementor-counter .elementor-counter-number-suffix { + text-align: left; +} +.elementor-counter .elementor-counter-title { + text-align: center; + font-size: 19px; + font-weight: 400; + line-height: 2.5; +} + +.elementor-widget-divider { + --divider-border-style: none; + --divider-border-width: 1px; + --divider-color: #0C0D0E; + --divider-icon-size: 20px; + --divider-element-spacing: 10px; + --divider-pattern-height: 24px; + --divider-pattern-size: 20px; + --divider-pattern-url: none; + --divider-pattern-repeat: repeat-x; +} +.elementor-widget-divider .elementor-divider { + display: flex; +} +.elementor-widget-divider .elementor-divider__text { + font-size: 15px; + line-height: 1; + max-width: 95%; +} +.elementor-widget-divider .elementor-divider__element { + margin: 0 var(--divider-element-spacing); + flex-shrink: 0; +} +.elementor-widget-divider .elementor-icon { + font-size: var(--divider-icon-size); +} +.elementor-widget-divider .elementor-divider-separator { + display: flex; + margin: 0; + direction: ltr; +} +.elementor-widget-divider--view-line_text .elementor-divider-separator, .elementor-widget-divider--view-line_icon .elementor-divider-separator { + align-items: center; +} +.elementor-widget-divider--view-line_text .elementor-divider-separator:before, .elementor-widget-divider--view-line_text .elementor-divider-separator:after, .elementor-widget-divider--view-line_icon .elementor-divider-separator:before, .elementor-widget-divider--view-line_icon .elementor-divider-separator:after { + display: block; + content: ""; + border-block-end: 0; + flex-grow: 1; + border-block-start: var(--divider-border-width) var(--divider-border-style) var(--divider-color); +} +.elementor-widget-divider--element-align-left .elementor-divider .elementor-divider-separator > .elementor-divider__svg:first-of-type { + flex-grow: 0; + flex-shrink: 100; +} +.elementor-widget-divider--element-align-left .elementor-divider-separator:before { + content: none; +} +.elementor-widget-divider--element-align-left .elementor-divider__element { + margin-left: 0; +} +.elementor-widget-divider--element-align-right .elementor-divider .elementor-divider-separator > .elementor-divider__svg:last-of-type { + flex-grow: 0; + flex-shrink: 100; +} +.elementor-widget-divider--element-align-right .elementor-divider-separator:after { + content: none; +} +.elementor-widget-divider--element-align-right .elementor-divider__element { + margin-right: 0; +} +.elementor-widget-divider--element-align-start .elementor-divider .elementor-divider-separator > .elementor-divider__svg:first-of-type { + flex-grow: 0; + flex-shrink: 100; +} +.elementor-widget-divider--element-align-start .elementor-divider-separator:before { + content: none; +} +.elementor-widget-divider--element-align-start .elementor-divider__element { + margin-inline-start: 0; +} +.elementor-widget-divider--element-align-end .elementor-divider .elementor-divider-separator > .elementor-divider__svg:last-of-type { + flex-grow: 0; + flex-shrink: 100; +} +.elementor-widget-divider--element-align-end .elementor-divider-separator:after { + content: none; +} +.elementor-widget-divider--element-align-end .elementor-divider__element { + margin-inline-end: 0; +} +.elementor-widget-divider:not(.elementor-widget-divider--view-line_text):not(.elementor-widget-divider--view-line_icon) .elementor-divider-separator { + border-block-start: var(--divider-border-width) var(--divider-border-style) var(--divider-color); +} +.elementor-widget-divider--separator-type-pattern { + --divider-border-style: none; +} +.elementor-widget-divider--separator-type-pattern.elementor-widget-divider--view-line .elementor-divider-separator, .elementor-widget-divider--separator-type-pattern:not([class*=elementor-widget-divider--view]) .elementor-divider-separator, .elementor-widget-divider--separator-type-pattern:not(.elementor-widget-divider--view-line) .elementor-divider-separator:before, .elementor-widget-divider--separator-type-pattern:not(.elementor-widget-divider--view-line) .elementor-divider-separator:after { + width: 100%; + min-height: var(--divider-pattern-height); + -webkit-mask-size: var(--divider-pattern-size) 100%; + mask-size: var(--divider-pattern-size) 100%; + -webkit-mask-repeat: var(--divider-pattern-repeat); + mask-repeat: var(--divider-pattern-repeat); + background-color: var(--divider-color); + -webkit-mask-image: var(--divider-pattern-url); + mask-image: var(--divider-pattern-url); +} +.elementor-widget-divider--no-spacing { + --divider-pattern-size: auto; +} +.elementor-widget-divider--bg-round { + --divider-pattern-repeat: round; +} + +.rtl .elementor-widget-divider .elementor-divider__text { + direction: rtl; +} + +.e-con > .elementor-widget-divider, +.e-con-inner > .elementor-widget-divider { + width: var(--container-widget-width, 100%); + --flex-grow: var( --container-widget-flex-grow ); +} + +.elementor-image-gallery .gallery-item { + display: inline-block; + text-align: center; + vertical-align: top; + width: 100%; + max-width: 100%; + margin: 0 auto; +} +.elementor-image-gallery .gallery-item img { + margin: 0 auto; +} +.elementor-image-gallery .gallery-item .gallery-caption { + margin: 0; +} +.elementor-image-gallery figure img { + display: block; +} +.elementor-image-gallery figure figcaption { + width: 100%; +} +.gallery-spacing-custom .elementor-image-gallery .gallery-icon { + padding: 0; +} +@media (min-width: 768px) { + .elementor-image-gallery .gallery-columns-2 .gallery-item { + max-width: 50%; + } + .elementor-image-gallery .gallery-columns-3 .gallery-item { + max-width: 33.33%; + } + .elementor-image-gallery .gallery-columns-4 .gallery-item { + max-width: 25%; + } + .elementor-image-gallery .gallery-columns-5 .gallery-item { + max-width: 20%; + } + .elementor-image-gallery .gallery-columns-6 .gallery-item { + max-width: 16.666%; + } + .elementor-image-gallery .gallery-columns-7 .gallery-item { + max-width: 14.28%; + } + .elementor-image-gallery .gallery-columns-8 .gallery-item { + max-width: 12.5%; + } + .elementor-image-gallery .gallery-columns-9 .gallery-item { + max-width: 11.11%; + } + .elementor-image-gallery .gallery-columns-10 .gallery-item { + max-width: 10%; + } +} +@media (min-width: 480px) and (max-width: 767px) { + .elementor-image-gallery .gallery.gallery-columns-2 .gallery-item, .elementor-image-gallery .gallery.gallery-columns-3 .gallery-item, .elementor-image-gallery .gallery.gallery-columns-4 .gallery-item, .elementor-image-gallery .gallery.gallery-columns-5 .gallery-item, .elementor-image-gallery .gallery.gallery-columns-6 .gallery-item, .elementor-image-gallery .gallery.gallery-columns-7 .gallery-item, .elementor-image-gallery .gallery.gallery-columns-8 .gallery-item, .elementor-image-gallery .gallery.gallery-columns-9 .gallery-item, .elementor-image-gallery .gallery.gallery-columns-10 .gallery-item { + max-width: 50%; + } +} +@media (max-width: 479px) { + .elementor-image-gallery .gallery.gallery-columns-2 .gallery-item, .elementor-image-gallery .gallery.gallery-columns-3 .gallery-item, .elementor-image-gallery .gallery.gallery-columns-4 .gallery-item, .elementor-image-gallery .gallery.gallery-columns-5 .gallery-item, .elementor-image-gallery .gallery.gallery-columns-6 .gallery-item, .elementor-image-gallery .gallery.gallery-columns-7 .gallery-item, .elementor-image-gallery .gallery.gallery-columns-8 .gallery-item, .elementor-image-gallery .gallery.gallery-columns-9 .gallery-item, .elementor-image-gallery .gallery.gallery-columns-10 .gallery-item { + max-width: 100%; + } +} + +.elementor-widget-google_maps .elementor-widget-container { + overflow: hidden; +} +.elementor-widget-google_maps .elementor-custom-embed { + line-height: 0; +} +.elementor-widget-google_maps iframe { + height: 300px; +} + +.elementor-heading-title { + padding: 0; + margin: 0; + line-height: 1; +} + +.elementor-widget-heading .elementor-heading-title[class*=elementor-size-] > a { + color: inherit; + font-size: inherit; + line-height: inherit; +} +.elementor-widget-heading .elementor-heading-title.elementor-size-small { + font-size: 15px; +} +.elementor-widget-heading .elementor-heading-title.elementor-size-medium { + font-size: 19px; +} +.elementor-widget-heading .elementor-heading-title.elementor-size-large { + font-size: 29px; +} +.elementor-widget-heading .elementor-heading-title.elementor-size-xl { + font-size: 39px; +} +.elementor-widget-heading .elementor-heading-title.elementor-size-xxl { + font-size: 59px; +} + +.elementor-widget-icon-box .elementor-icon-box-wrapper { + display: block; + text-align: center; +} +.elementor-widget-icon-box .elementor-icon-box-icon { + margin-bottom: var(--icon-box-icon-margin, 15px); + margin-right: auto; + margin-left: auto; +} +@media (min-width: 768px) { + .elementor-widget-icon-box.elementor-vertical-align-top .elementor-icon-box-wrapper { + align-items: flex-start; + } + .elementor-widget-icon-box.elementor-vertical-align-middle .elementor-icon-box-wrapper { + align-items: center; + } + .elementor-widget-icon-box.elementor-vertical-align-bottom .elementor-icon-box-wrapper { + align-items: flex-end; + } +} +.elementor-widget-icon-box.elementor-position-left .elementor-icon-box-wrapper, .elementor-widget-icon-box.elementor-position-right .elementor-icon-box-wrapper { + display: flex; +} +.elementor-widget-icon-box.elementor-position-left .elementor-icon-box-icon, .elementor-widget-icon-box.elementor-position-right .elementor-icon-box-icon { + display: inline-flex; + flex: 0 0 auto; +} +.elementor-widget-icon-box.elementor-position-right .elementor-icon-box-wrapper { + text-align: right; + flex-direction: row-reverse; +} +.elementor-widget-icon-box.elementor-position-right .elementor-icon-box-icon { + margin-left: var(--icon-box-icon-margin, 15px); + margin-right: 0; + margin-bottom: unset; +} +.elementor-widget-icon-box.elementor-position-left .elementor-icon-box-wrapper { + text-align: left; + flex-direction: row; +} +.elementor-widget-icon-box.elementor-position-left .elementor-icon-box-icon { + margin-right: var(--icon-box-icon-margin, 15px); + margin-left: 0; + margin-bottom: unset; +} +.elementor-widget-icon-box.elementor-position-top .elementor-icon-box-wrapper { + display: block; + text-align: center; + flex-direction: unset; +} +.elementor-widget-icon-box.elementor-position-top .elementor-icon-box-icon { + margin-bottom: var(--icon-box-icon-margin, 15px); + margin-right: auto; + margin-left: auto; +} +@media (min-width: -1) { + .elementor-widget-icon-box.elementor-widescreen-position-left .elementor-icon-box-wrapper, .elementor-widget-icon-box.elementor-widescreen-position-right .elementor-icon-box-wrapper { + display: flex; + } + .elementor-widget-icon-box.elementor-widescreen-position-left .elementor-icon-box-icon, .elementor-widget-icon-box.elementor-widescreen-position-right .elementor-icon-box-icon { + display: inline-flex; + flex: 0 0 auto; + } + .elementor-widget-icon-box.elementor-widescreen-position-right .elementor-icon-box-wrapper { + text-align: right; + flex-direction: row-reverse; + } + .elementor-widget-icon-box.elementor-widescreen-position-right .elementor-icon-box-icon { + margin-left: var(--icon-box-icon-margin, 15px); + margin-right: 0; + margin-bottom: unset; + } + .elementor-widget-icon-box.elementor-widescreen-position-left .elementor-icon-box-wrapper { + text-align: left; + flex-direction: row; + } + .elementor-widget-icon-box.elementor-widescreen-position-left .elementor-icon-box-icon { + margin-right: var(--icon-box-icon-margin, 15px); + margin-left: 0; + margin-bottom: unset; + } + .elementor-widget-icon-box.elementor-widescreen-position-top .elementor-icon-box-wrapper { + display: block; + text-align: center; + flex-direction: unset; + } + .elementor-widget-icon-box.elementor-widescreen-position-top .elementor-icon-box-icon { + margin-bottom: var(--icon-box-icon-margin, 15px); + margin-right: auto; + margin-left: auto; + } +} +@media (max-width: -1) { + .elementor-widget-icon-box.elementor-laptop-position-left .elementor-icon-box-wrapper, .elementor-widget-icon-box.elementor-laptop-position-right .elementor-icon-box-wrapper { + display: flex; + } + .elementor-widget-icon-box.elementor-laptop-position-left .elementor-icon-box-icon, .elementor-widget-icon-box.elementor-laptop-position-right .elementor-icon-box-icon { + display: inline-flex; + flex: 0 0 auto; + } + .elementor-widget-icon-box.elementor-laptop-position-right .elementor-icon-box-wrapper { + text-align: right; + flex-direction: row-reverse; + } + .elementor-widget-icon-box.elementor-laptop-position-right .elementor-icon-box-icon { + margin-left: var(--icon-box-icon-margin, 15px); + margin-right: 0; + margin-bottom: unset; + } + .elementor-widget-icon-box.elementor-laptop-position-left .elementor-icon-box-wrapper { + text-align: left; + flex-direction: row; + } + .elementor-widget-icon-box.elementor-laptop-position-left .elementor-icon-box-icon { + margin-right: var(--icon-box-icon-margin, 15px); + margin-left: 0; + margin-bottom: unset; + } + .elementor-widget-icon-box.elementor-laptop-position-top .elementor-icon-box-wrapper { + display: block; + text-align: center; + flex-direction: unset; + } + .elementor-widget-icon-box.elementor-laptop-position-top .elementor-icon-box-icon { + margin-bottom: var(--icon-box-icon-margin, 15px); + margin-right: auto; + margin-left: auto; + } +} +@media (max-width: -1) { + .elementor-widget-icon-box.elementor-tablet_extra-position-left .elementor-icon-box-wrapper, .elementor-widget-icon-box.elementor-tablet_extra-position-right .elementor-icon-box-wrapper { + display: flex; + } + .elementor-widget-icon-box.elementor-tablet_extra-position-left .elementor-icon-box-icon, .elementor-widget-icon-box.elementor-tablet_extra-position-right .elementor-icon-box-icon { + display: inline-flex; + flex: 0 0 auto; + } + .elementor-widget-icon-box.elementor-tablet_extra-position-right .elementor-icon-box-wrapper { + text-align: right; + flex-direction: row-reverse; + } + .elementor-widget-icon-box.elementor-tablet_extra-position-right .elementor-icon-box-icon { + margin-left: var(--icon-box-icon-margin, 15px); + margin-right: 0; + margin-bottom: unset; + } + .elementor-widget-icon-box.elementor-tablet_extra-position-left .elementor-icon-box-wrapper { + text-align: left; + flex-direction: row; + } + .elementor-widget-icon-box.elementor-tablet_extra-position-left .elementor-icon-box-icon { + margin-right: var(--icon-box-icon-margin, 15px); + margin-left: 0; + margin-bottom: unset; + } + .elementor-widget-icon-box.elementor-tablet_extra-position-top .elementor-icon-box-wrapper { + display: block; + text-align: center; + flex-direction: unset; + } + .elementor-widget-icon-box.elementor-tablet_extra-position-top .elementor-icon-box-icon { + margin-bottom: var(--icon-box-icon-margin, 15px); + margin-right: auto; + margin-left: auto; + } +} +@media (max-width: 1024px) { + .elementor-widget-icon-box.elementor-tablet-position-left .elementor-icon-box-wrapper, .elementor-widget-icon-box.elementor-tablet-position-right .elementor-icon-box-wrapper { + display: flex; + } + .elementor-widget-icon-box.elementor-tablet-position-left .elementor-icon-box-icon, .elementor-widget-icon-box.elementor-tablet-position-right .elementor-icon-box-icon { + display: inline-flex; + flex: 0 0 auto; + } + .elementor-widget-icon-box.elementor-tablet-position-right .elementor-icon-box-wrapper { + text-align: right; + flex-direction: row-reverse; + } + .elementor-widget-icon-box.elementor-tablet-position-right .elementor-icon-box-icon { + margin-left: var(--icon-box-icon-margin, 15px); + margin-right: 0; + margin-bottom: unset; + } + .elementor-widget-icon-box.elementor-tablet-position-left .elementor-icon-box-wrapper { + text-align: left; + flex-direction: row; + } + .elementor-widget-icon-box.elementor-tablet-position-left .elementor-icon-box-icon { + margin-right: var(--icon-box-icon-margin, 15px); + margin-left: 0; + margin-bottom: unset; + } + .elementor-widget-icon-box.elementor-tablet-position-top .elementor-icon-box-wrapper { + display: block; + text-align: center; + flex-direction: unset; + } + .elementor-widget-icon-box.elementor-tablet-position-top .elementor-icon-box-icon { + margin-bottom: var(--icon-box-icon-margin, 15px); + margin-right: auto; + margin-left: auto; + } +} +@media (max-width: -1) { + .elementor-widget-icon-box.elementor-mobile_extra-position-left .elementor-icon-box-wrapper, .elementor-widget-icon-box.elementor-mobile_extra-position-right .elementor-icon-box-wrapper { + display: flex; + } + .elementor-widget-icon-box.elementor-mobile_extra-position-left .elementor-icon-box-icon, .elementor-widget-icon-box.elementor-mobile_extra-position-right .elementor-icon-box-icon { + display: inline-flex; + flex: 0 0 auto; + } + .elementor-widget-icon-box.elementor-mobile_extra-position-right .elementor-icon-box-wrapper { + text-align: right; + flex-direction: row-reverse; + } + .elementor-widget-icon-box.elementor-mobile_extra-position-right .elementor-icon-box-icon { + margin-left: var(--icon-box-icon-margin, 15px); + margin-right: 0; + margin-bottom: unset; + } + .elementor-widget-icon-box.elementor-mobile_extra-position-left .elementor-icon-box-wrapper { + text-align: left; + flex-direction: row; + } + .elementor-widget-icon-box.elementor-mobile_extra-position-left .elementor-icon-box-icon { + margin-right: var(--icon-box-icon-margin, 15px); + margin-left: 0; + margin-bottom: unset; + } + .elementor-widget-icon-box.elementor-mobile_extra-position-top .elementor-icon-box-wrapper { + display: block; + text-align: center; + flex-direction: unset; + } + .elementor-widget-icon-box.elementor-mobile_extra-position-top .elementor-icon-box-icon { + margin-bottom: var(--icon-box-icon-margin, 15px); + margin-right: auto; + margin-left: auto; + } +} +@media (max-width: 767px) { + .elementor-widget-icon-box.elementor-mobile-position-left .elementor-icon-box-wrapper, .elementor-widget-icon-box.elementor-mobile-position-right .elementor-icon-box-wrapper { + display: flex; + } + .elementor-widget-icon-box.elementor-mobile-position-left .elementor-icon-box-icon, .elementor-widget-icon-box.elementor-mobile-position-right .elementor-icon-box-icon { + display: inline-flex; + flex: 0 0 auto; + } + .elementor-widget-icon-box.elementor-mobile-position-right .elementor-icon-box-wrapper { + text-align: right; + flex-direction: row-reverse; + } + .elementor-widget-icon-box.elementor-mobile-position-right .elementor-icon-box-icon { + margin-left: var(--icon-box-icon-margin, 15px); + margin-right: 0; + margin-bottom: unset; + } + .elementor-widget-icon-box.elementor-mobile-position-left .elementor-icon-box-wrapper { + text-align: left; + flex-direction: row; + } + .elementor-widget-icon-box.elementor-mobile-position-left .elementor-icon-box-icon { + margin-right: var(--icon-box-icon-margin, 15px); + margin-left: 0; + margin-bottom: unset; + } + .elementor-widget-icon-box.elementor-mobile-position-top .elementor-icon-box-wrapper { + display: block; + text-align: center; + flex-direction: unset; + } + .elementor-widget-icon-box.elementor-mobile-position-top .elementor-icon-box-icon { + margin-bottom: var(--icon-box-icon-margin, 15px); + margin-right: auto; + margin-left: auto; + } + .elementor-widget-icon-box.elementor-position-left .elementor-icon-box-icon, .elementor-widget-icon-box.elementor-position-right .elementor-icon-box-icon { + display: block; + flex: unset; + } +} +.elementor-widget-icon-box .elementor-icon-box-title a { + color: inherit; +} +.elementor-widget-icon-box .elementor-icon-box-content { + flex-grow: 1; +} +.elementor-widget-icon-box .elementor-icon-box-description { + margin: 0; +} + +.elementor-widget.elementor-icon-list--layout-inline .elementor-widget-container { + overflow: hidden; +} +.elementor-widget .elementor-icon-list-items.elementor-inline-items { + margin-right: -8px; + margin-left: -8px; +} +.elementor-widget .elementor-icon-list-items.elementor-inline-items .elementor-icon-list-item { + margin-right: 8px; + margin-left: 8px; +} +.elementor-widget .elementor-icon-list-items.elementor-inline-items .elementor-icon-list-item:after { + width: auto; + left: auto; + right: auto; + position: relative; + height: 100%; + border-top: 0; + border-bottom: 0; + border-right: 0; + border-left-width: 1px; + border-style: solid; + right: -8px; +} +.elementor-widget .elementor-icon-list-items { + list-style-type: none; + margin: 0; + padding: 0; +} +.elementor-widget .elementor-icon-list-item { + margin: 0; + padding: 0; + position: relative; +} +.elementor-widget .elementor-icon-list-item:after { + position: absolute; + bottom: 0; + width: 100%; +} +.elementor-widget .elementor-icon-list-item, .elementor-widget .elementor-icon-list-item a { + display: flex; + font-size: inherit; + align-items: var(--icon-vertical-align, center); +} +.elementor-widget .elementor-icon-list-icon + .elementor-icon-list-text { + align-self: center; + padding-left: 5px; +} +.elementor-widget .elementor-icon-list-icon { + display: flex; + position: relative; + top: var(--icon-vertical-offset, initial); +} +.elementor-widget .elementor-icon-list-icon svg { + width: var(--e-icon-list-icon-size, 1em); + height: var(--e-icon-list-icon-size, 1em); +} +.elementor-widget .elementor-icon-list-icon i { + width: 1.25em; + font-size: var(--e-icon-list-icon-size); +} +.elementor-widget.elementor-widget-icon-list .elementor-icon-list-icon { + text-align: var(--e-icon-list-icon-align); +} +.elementor-widget.elementor-widget-icon-list .elementor-icon-list-icon svg { + margin: var(--e-icon-list-icon-margin, 0 calc(var(--e-icon-list-icon-size, 1em) * 0.25) 0 0); +} +.elementor-widget.elementor-list-item-link-full_width a { + width: 100%; +} +.elementor-widget.elementor-align-center .elementor-icon-list-item, .elementor-widget.elementor-align-center .elementor-icon-list-item a { + justify-content: center; +} +.elementor-widget.elementor-align-center .elementor-icon-list-item:after { + margin: auto; +} +.elementor-widget.elementor-align-center .elementor-inline-items { + justify-content: center; +} +.elementor-widget.elementor-align-left .elementor-icon-list-item, .elementor-widget.elementor-align-left .elementor-icon-list-item a { + justify-content: flex-start; + text-align: left; +} +.elementor-widget.elementor-align-left .elementor-inline-items { + justify-content: flex-start; +} +.elementor-widget.elementor-align-right .elementor-icon-list-item, .elementor-widget.elementor-align-right .elementor-icon-list-item a { + justify-content: flex-end; + text-align: right; +} +.elementor-widget.elementor-align-right .elementor-icon-list-items { + justify-content: flex-end; +} +.elementor-widget:not(.elementor-align-right) .elementor-icon-list-item:after { + left: 0; +} +.elementor-widget:not(.elementor-align-left) .elementor-icon-list-item:after { + right: 0; +} +@media (min-width: -1) { + .elementor-widget.elementor-widescreen-align-center .elementor-icon-list-item, .elementor-widget.elementor-widescreen-align-center .elementor-icon-list-item a { + justify-content: center; + } + .elementor-widget.elementor-widescreen-align-center .elementor-icon-list-item:after { + margin: auto; + } + .elementor-widget.elementor-widescreen-align-center .elementor-inline-items { + justify-content: center; + } + .elementor-widget.elementor-widescreen-align-left .elementor-icon-list-item, .elementor-widget.elementor-widescreen-align-left .elementor-icon-list-item a { + justify-content: flex-start; + text-align: left; + } + .elementor-widget.elementor-widescreen-align-left .elementor-inline-items { + justify-content: flex-start; + } + .elementor-widget.elementor-widescreen-align-right .elementor-icon-list-item, .elementor-widget.elementor-widescreen-align-right .elementor-icon-list-item a { + justify-content: flex-end; + text-align: right; + } + .elementor-widget.elementor-widescreen-align-right .elementor-icon-list-items { + justify-content: flex-end; + } + .elementor-widget:not(.elementor-widescreen-align-right) .elementor-icon-list-item:after { + left: 0; + } + .elementor-widget:not(.elementor-widescreen-align-left) .elementor-icon-list-item:after { + right: 0; + } +} +@media (max-width: -1) { + .elementor-widget.elementor-laptop-align-center .elementor-icon-list-item, .elementor-widget.elementor-laptop-align-center .elementor-icon-list-item a { + justify-content: center; + } + .elementor-widget.elementor-laptop-align-center .elementor-icon-list-item:after { + margin: auto; + } + .elementor-widget.elementor-laptop-align-center .elementor-inline-items { + justify-content: center; + } + .elementor-widget.elementor-laptop-align-left .elementor-icon-list-item, .elementor-widget.elementor-laptop-align-left .elementor-icon-list-item a { + justify-content: flex-start; + text-align: left; + } + .elementor-widget.elementor-laptop-align-left .elementor-inline-items { + justify-content: flex-start; + } + .elementor-widget.elementor-laptop-align-right .elementor-icon-list-item, .elementor-widget.elementor-laptop-align-right .elementor-icon-list-item a { + justify-content: flex-end; + text-align: right; + } + .elementor-widget.elementor-laptop-align-right .elementor-icon-list-items { + justify-content: flex-end; + } + .elementor-widget:not(.elementor-laptop-align-right) .elementor-icon-list-item:after { + left: 0; + } + .elementor-widget:not(.elementor-laptop-align-left) .elementor-icon-list-item:after { + right: 0; + } +} +@media (max-width: -1) { + .elementor-widget.elementor-tablet_extra-align-center .elementor-icon-list-item, .elementor-widget.elementor-tablet_extra-align-center .elementor-icon-list-item a { + justify-content: center; + } + .elementor-widget.elementor-tablet_extra-align-center .elementor-icon-list-item:after { + margin: auto; + } + .elementor-widget.elementor-tablet_extra-align-center .elementor-inline-items { + justify-content: center; + } + .elementor-widget.elementor-tablet_extra-align-left .elementor-icon-list-item, .elementor-widget.elementor-tablet_extra-align-left .elementor-icon-list-item a { + justify-content: flex-start; + text-align: left; + } + .elementor-widget.elementor-tablet_extra-align-left .elementor-inline-items { + justify-content: flex-start; + } + .elementor-widget.elementor-tablet_extra-align-right .elementor-icon-list-item, .elementor-widget.elementor-tablet_extra-align-right .elementor-icon-list-item a { + justify-content: flex-end; + text-align: right; + } + .elementor-widget.elementor-tablet_extra-align-right .elementor-icon-list-items { + justify-content: flex-end; + } + .elementor-widget:not(.elementor-tablet_extra-align-right) .elementor-icon-list-item:after { + left: 0; + } + .elementor-widget:not(.elementor-tablet_extra-align-left) .elementor-icon-list-item:after { + right: 0; + } +} +@media (max-width: 1024px) { + .elementor-widget.elementor-tablet-align-center .elementor-icon-list-item, .elementor-widget.elementor-tablet-align-center .elementor-icon-list-item a { + justify-content: center; + } + .elementor-widget.elementor-tablet-align-center .elementor-icon-list-item:after { + margin: auto; + } + .elementor-widget.elementor-tablet-align-center .elementor-inline-items { + justify-content: center; + } + .elementor-widget.elementor-tablet-align-left .elementor-icon-list-item, .elementor-widget.elementor-tablet-align-left .elementor-icon-list-item a { + justify-content: flex-start; + text-align: left; + } + .elementor-widget.elementor-tablet-align-left .elementor-inline-items { + justify-content: flex-start; + } + .elementor-widget.elementor-tablet-align-right .elementor-icon-list-item, .elementor-widget.elementor-tablet-align-right .elementor-icon-list-item a { + justify-content: flex-end; + text-align: right; + } + .elementor-widget.elementor-tablet-align-right .elementor-icon-list-items { + justify-content: flex-end; + } + .elementor-widget:not(.elementor-tablet-align-right) .elementor-icon-list-item:after { + left: 0; + } + .elementor-widget:not(.elementor-tablet-align-left) .elementor-icon-list-item:after { + right: 0; + } +} +@media (max-width: -1) { + .elementor-widget.elementor-mobile_extra-align-center .elementor-icon-list-item, .elementor-widget.elementor-mobile_extra-align-center .elementor-icon-list-item a { + justify-content: center; + } + .elementor-widget.elementor-mobile_extra-align-center .elementor-icon-list-item:after { + margin: auto; + } + .elementor-widget.elementor-mobile_extra-align-center .elementor-inline-items { + justify-content: center; + } + .elementor-widget.elementor-mobile_extra-align-left .elementor-icon-list-item, .elementor-widget.elementor-mobile_extra-align-left .elementor-icon-list-item a { + justify-content: flex-start; + text-align: left; + } + .elementor-widget.elementor-mobile_extra-align-left .elementor-inline-items { + justify-content: flex-start; + } + .elementor-widget.elementor-mobile_extra-align-right .elementor-icon-list-item, .elementor-widget.elementor-mobile_extra-align-right .elementor-icon-list-item a { + justify-content: flex-end; + text-align: right; + } + .elementor-widget.elementor-mobile_extra-align-right .elementor-icon-list-items { + justify-content: flex-end; + } + .elementor-widget:not(.elementor-mobile_extra-align-right) .elementor-icon-list-item:after { + left: 0; + } + .elementor-widget:not(.elementor-mobile_extra-align-left) .elementor-icon-list-item:after { + right: 0; + } +} +@media (max-width: 767px) { + .elementor-widget.elementor-mobile-align-center .elementor-icon-list-item, .elementor-widget.elementor-mobile-align-center .elementor-icon-list-item a { + justify-content: center; + } + .elementor-widget.elementor-mobile-align-center .elementor-icon-list-item:after { + margin: auto; + } + .elementor-widget.elementor-mobile-align-center .elementor-inline-items { + justify-content: center; + } + .elementor-widget.elementor-mobile-align-left .elementor-icon-list-item, .elementor-widget.elementor-mobile-align-left .elementor-icon-list-item a { + justify-content: flex-start; + text-align: left; + } + .elementor-widget.elementor-mobile-align-left .elementor-inline-items { + justify-content: flex-start; + } + .elementor-widget.elementor-mobile-align-right .elementor-icon-list-item, .elementor-widget.elementor-mobile-align-right .elementor-icon-list-item a { + justify-content: flex-end; + text-align: right; + } + .elementor-widget.elementor-mobile-align-right .elementor-icon-list-items { + justify-content: flex-end; + } + .elementor-widget:not(.elementor-mobile-align-right) .elementor-icon-list-item:after { + left: 0; + } + .elementor-widget:not(.elementor-mobile-align-left) .elementor-icon-list-item:after { + right: 0; + } +} + +.elementor-widget-image { + text-align: center; +} +.elementor-widget-image a { + display: inline-block; +} +.elementor-widget-image a img[src$=".svg"] { + width: 48px; +} +.elementor-widget-image img { + vertical-align: middle; + display: inline-block; +} + +.elementor-widget-image-box .elementor-image-box-content { + width: 100%; +} +@media (min-width: 768px) { + .elementor-widget-image-box.elementor-position-left .elementor-image-box-wrapper, .elementor-widget-image-box.elementor-position-right .elementor-image-box-wrapper { + display: flex; + } + .elementor-widget-image-box.elementor-position-right .elementor-image-box-wrapper { + text-align: right; + flex-direction: row-reverse; + } + .elementor-widget-image-box.elementor-position-left .elementor-image-box-wrapper { + text-align: left; + flex-direction: row; + } + .elementor-widget-image-box.elementor-position-top .elementor-image-box-img { + margin: auto; + } + .elementor-widget-image-box.elementor-vertical-align-top .elementor-image-box-wrapper { + align-items: flex-start; + } + .elementor-widget-image-box.elementor-vertical-align-middle .elementor-image-box-wrapper { + align-items: center; + } + .elementor-widget-image-box.elementor-vertical-align-bottom .elementor-image-box-wrapper { + align-items: flex-end; + } +} +@media (max-width: 767px) { + .elementor-widget-image-box .elementor-image-box-img { + margin-left: auto !important; + margin-right: auto !important; + margin-bottom: 15px; + } +} +.elementor-widget-image-box .elementor-image-box-img { + display: inline-block; +} +.elementor-widget-image-box .elementor-image-box-title a { + color: inherit; +} +.elementor-widget-image-box .elementor-image-box-wrapper { + text-align: center; +} +.elementor-widget-image-box .elementor-image-box-description { + margin: 0; +} + +.elementor-widget-image-carousel .swiper-container, +.elementor-widget-image-carousel .swiper { + position: static; +} +.elementor-widget-image-carousel .swiper-container .swiper-slide figure, +.elementor-widget-image-carousel .swiper .swiper-slide figure { + line-height: inherit; +} +.elementor-widget-image-carousel .swiper-slide { + text-align: center; +} + +.elementor-image-carousel-wrapper:not(.swiper-container-initialized):not(.swiper-initialized) .swiper-slide { + max-width: calc(100% / var(--e-image-carousel-slides-to-show, 3)); +} + +body.elementor-page .elementor-widget-menu-anchor { + margin-bottom: 0; +} + +.elementor-widget-progress { + text-align: left; +} + +.elementor-progress-wrapper { + position: relative; + background-color: #eeeeee; + color: #ffffff; + height: 100%; + border-radius: 2px; +} + +.elementor-progress-bar { + display: flex; + background-color: #69727D; + width: 0; + font-size: 11px; + height: 30px; + line-height: 30px; + border-radius: 2px; + transition: width 1s ease-in-out; +} + +.elementor-progress-text { + flex-grow: 1; + white-space: nowrap; + text-overflow: ellipsis; + overflow: hidden; + padding-left: 15px; +} + +.elementor-progress-percentage { + padding-right: 15px; +} + +.elementor-widget-progress .elementor-progress-wrapper.progress-info .elementor-progress-bar { + background-color: #5bc0de; +} +.elementor-widget-progress .elementor-progress-wrapper.progress-success .elementor-progress-bar { + background-color: #5cb85c; +} +.elementor-widget-progress .elementor-progress-wrapper.progress-warning .elementor-progress-bar { + background-color: #f0ad4e; +} +.elementor-widget-progress .elementor-progress-wrapper.progress-danger .elementor-progress-bar { + background-color: #d9534f; +} + +.elementor-progress .elementor-title { + display: block; +} + +@media (max-width: 767px) { + .elementor-progress-text { + padding-left: 10px; + } +} +.e-con .elementor-progress-wrapper, +.e-con-inner .elementor-progress-wrapper { + height: initial; +} + +.elementor-widget-social-icons { + /*TODO: This Grid-0 needs to be removed after PRO is Updated */ +} +.elementor-widget-social-icons.elementor-grid-0 .elementor-widget-container, .elementor-widget-social-icons.elementor-grid-tablet-0 .elementor-widget-container, .elementor-widget-social-icons.elementor-grid-mobile-0 .elementor-widget-container { + line-height: 1; + font-size: 0; +} +.elementor-widget-social-icons:not(.elementor-grid-0):not(.elementor-grid-tablet-0):not(.elementor-grid-mobile-0) .elementor-grid { + display: inline-grid; +} +.elementor-widget-social-icons .elementor-grid { + grid-column-gap: var(--grid-column-gap, 5px); + grid-row-gap: var(--grid-row-gap, 5px); + grid-template-columns: var(--grid-template-columns); + justify-content: var(--justify-content, center); + justify-items: var(--justify-content, center); +} + +.elementor-icon.elementor-social-icon { + font-size: var(--icon-size, 25px); + line-height: var(--icon-size, 25px); + width: calc(var(--icon-size, 25px) + 2 * var(--icon-padding, 0.5em)); + height: calc(var(--icon-size, 25px) + 2 * var(--icon-padding, 0.5em)); +} + +.elementor-social-icon { + --e-social-icon-icon-color: #fff; + display: inline-flex; + background-color: #69727D; + align-items: center; + justify-content: center; + text-align: center; + cursor: pointer; +} +.elementor-social-icon i { + color: var(--e-social-icon-icon-color); +} +.elementor-social-icon svg { + fill: var(--e-social-icon-icon-color); +} +.elementor-social-icon:last-child { + margin: 0; +} +.elementor-social-icon:hover { + opacity: 0.9; + color: white; +} +.elementor-social-icon-android { + background-color: #A4C639; +} +.elementor-social-icon-apple { + background-color: #999999; +} +.elementor-social-icon-behance { + background-color: #1769ff; +} +.elementor-social-icon-bitbucket { + background-color: #205081; +} +.elementor-social-icon-codepen { + background-color: #000000; +} +.elementor-social-icon-delicious { + background-color: #3399ff; +} +.elementor-social-icon-deviantart { + background-color: #05cc47; +} +.elementor-social-icon-digg { + background-color: #005be2; +} +.elementor-social-icon-dribbble { + background-color: #ea4c89; +} +.elementor-social-icon-elementor { + background-color: #D30C5C; +} +.elementor-social-icon-envelope { + background-color: #ea4335; +} +.elementor-social-icon-facebook, .elementor-social-icon-facebook-f { + background-color: #3b5998; +} +.elementor-social-icon-flickr { + background-color: #0063dc; +} +.elementor-social-icon-foursquare { + background-color: #2d5be3; +} +.elementor-social-icon-freecodecamp, .elementor-social-icon-free-code-camp { + background-color: #006400; +} +.elementor-social-icon-github { + background-color: #333333; +} +.elementor-social-icon-gitlab { + background-color: #e24329; +} +.elementor-social-icon-globe { + background-color: #69727D; +} +.elementor-social-icon-google-plus, .elementor-social-icon-google-plus-g { + background-color: #dd4b39; +} +.elementor-social-icon-houzz { + background-color: #7ac142; +} +.elementor-social-icon-instagram { + background-color: #262626; +} +.elementor-social-icon-jsfiddle { + background-color: #487AA2; +} +.elementor-social-icon-link { + background-color: #818a91; +} +.elementor-social-icon-linkedin, .elementor-social-icon-linkedin-in { + background-color: #0077b5; +} +.elementor-social-icon-medium { + background-color: #00ab6b; +} +.elementor-social-icon-meetup { + background-color: #ec1c40; +} +.elementor-social-icon-mixcloud { + background-color: #273a4b; +} +.elementor-social-icon-odnoklassniki { + background-color: #F4731C; +} +.elementor-social-icon-pinterest { + background-color: #bd081c; +} +.elementor-social-icon-product-hunt { + background-color: #da552f; +} +.elementor-social-icon-reddit { + background-color: #ff4500; +} +.elementor-social-icon-rss { + background-color: #f26522; +} +.elementor-social-icon-shopping-cart { + background-color: #4CAF50; +} +.elementor-social-icon-skype { + background-color: #00AFF0; +} +.elementor-social-icon-slideshare { + background-color: #0077b5; +} +.elementor-social-icon-snapchat { + background-color: #fffc00; +} +.elementor-social-icon-soundcloud { + background-color: #ff8800; +} +.elementor-social-icon-spotify { + background-color: #2ebd59; +} +.elementor-social-icon-stack-overflow { + background-color: #fe7a15; +} +.elementor-social-icon-steam { + background-color: #00adee; +} +.elementor-social-icon-stumbleupon { + background-color: #EB4924; +} +.elementor-social-icon-telegram { + background-color: #2CA5E0; +} +.elementor-social-icon-threads { + background-color: #000000; +} +.elementor-social-icon-thumb-tack { + background-color: #1aa1d8; +} +.elementor-social-icon-tripadvisor { + background-color: #589442; +} +.elementor-social-icon-tumblr { + background-color: #35465c; +} +.elementor-social-icon-twitch { + background-color: #6441A5; +} +.elementor-social-icon-twitter { + background-color: #1DA1F2; +} +.elementor-social-icon-viber { + background-color: #665cac; +} +.elementor-social-icon-vimeo { + background-color: #1ab7ea; +} +.elementor-social-icon-vk { + background-color: #45668e; +} +.elementor-social-icon-weibo { + background-color: #DD2430; +} +.elementor-social-icon-weixin { + background-color: #31A918; +} +.elementor-social-icon-whatsapp { + background-color: #25d366; +} +.elementor-social-icon-wordpress { + background-color: #21759b; +} +.elementor-social-icon-x-twitter { + background-color: #000000; +} +.elementor-social-icon-xing { + background-color: #026466; +} +.elementor-social-icon-yelp { + background-color: #af0606; +} +.elementor-social-icon-youtube { + background-color: #cd201f; +} +.elementor-social-icon-500px { + background-color: #0099e5; +} + +.elementor-shape-rounded .elementor-icon.elementor-social-icon { + border-radius: 10%; +} + +.elementor-shape-circle .elementor-icon.elementor-social-icon { + border-radius: 50%; +} + +.elementor-column .elementor-spacer-inner { + height: var(--spacer-size); +} + +.e-con { + --container-widget-width: 100%; +} + +.e-con > .elementor-widget-spacer, +.e-con-inner > .elementor-widget-spacer { + width: var(--container-widget-width, var(--spacer-size)); + --align-self: var( --container-widget-align-self, initial ); + --flex-shrink: 0; +} +.e-con > .elementor-widget-spacer > .elementor-widget-container, +.e-con-inner > .elementor-widget-spacer > .elementor-widget-container { + height: 100%; + width: 100%; +} +.e-con > .elementor-widget-spacer > .elementor-widget-container > .elementor-spacer, +.e-con-inner > .elementor-widget-spacer > .elementor-widget-container > .elementor-spacer { + height: 100%; +} +.e-con > .elementor-widget-spacer > .elementor-widget-container > .elementor-spacer > .elementor-spacer-inner, +.e-con-inner > .elementor-widget-spacer > .elementor-widget-container > .elementor-spacer > .elementor-spacer-inner { + height: var(--container-widget-height, var(--spacer-size)); +} +.e-con > .elementor-widget-spacer.elementor-widget-empty, +.e-con-inner > .elementor-widget-spacer.elementor-widget-empty { + position: relative; + min-height: 22px; + min-width: 22px; +} +.e-con > .elementor-widget-spacer.elementor-widget-empty .elementor-widget-empty-icon, +.e-con-inner > .elementor-widget-spacer.elementor-widget-empty .elementor-widget-empty-icon { + position: absolute; + top: 0; + bottom: 0; + left: 0; + right: 0; + margin: auto; + padding: 0; + width: 22px; + height: 22px; +} + +.elementor-star-rating { + color: #CCD6DF; + font-family: eicons; + display: inline-block; +} +.elementor-star-rating i { + display: inline-block; + position: relative; + font-style: normal; + cursor: default; +} +.elementor-star-rating i:before { + content: "\e934"; + display: block; + font-size: inherit; + font-family: inherit; + position: absolute; + overflow: hidden; + color: #f0ad4e; + top: 0; + left: 0; +} +.elementor-star-rating .elementor-star-empty:before { + content: none; +} +.elementor-star-rating .elementor-star-1:before { + width: 10%; +} +.elementor-star-rating .elementor-star-2:before { + width: 20%; +} +.elementor-star-rating .elementor-star-3:before { + width: 30%; +} +.elementor-star-rating .elementor-star-4:before { + width: 40%; +} +.elementor-star-rating .elementor-star-5:before { + width: 50%; +} +.elementor-star-rating .elementor-star-6:before { + width: 60%; +} +.elementor-star-rating .elementor-star-7:before { + width: 70%; +} +.elementor-star-rating .elementor-star-8:before { + width: 80%; +} +.elementor-star-rating .elementor-star-9:before { + width: 90%; +} +.elementor-star-rating__wrapper { + display: flex; + align-items: center; +} +.elementor-star-rating__title { + margin-right: 10px; +} + +.elementor-star-rating--align-right .elementor-star-rating__wrapper { + text-align: right; + justify-content: flex-end; +} +.elementor-star-rating--align-left .elementor-star-rating__wrapper { + text-align: left; + justify-content: flex-start; +} +.elementor-star-rating--align-center .elementor-star-rating__wrapper { + text-align: center; + justify-content: center; +} +.elementor-star-rating--align-justify .elementor-star-rating__title { + margin-right: auto; +} + +@media (max-width: 1024px) { + .elementor-star-rating-tablet--align-right .elementor-star-rating__wrapper { + text-align: right; + justify-content: flex-end; + } + .elementor-star-rating-tablet--align-left .elementor-star-rating__wrapper { + text-align: left; + justify-content: flex-start; + } + .elementor-star-rating-tablet--align-center .elementor-star-rating__wrapper { + text-align: center; + justify-content: center; + } + .elementor-star-rating-tablet--align-justify .elementor-star-rating__title { + margin-right: auto; + } +} +@media (max-width: 767px) { + .elementor-star-rating-mobile--align-right .elementor-star-rating__wrapper { + text-align: right; + justify-content: flex-end; + } + .elementor-star-rating-mobile--align-left .elementor-star-rating__wrapper { + text-align: left; + justify-content: flex-start; + } + .elementor-star-rating-mobile--align-center .elementor-star-rating__wrapper { + text-align: center; + justify-content: center; + } + .elementor-star-rating-mobile--align-justify .elementor-star-rating__title { + margin-right: auto; + } +} +.last-star { + letter-spacing: 0; +} + +.elementor--star-style-star_unicode .elementor-star-rating { + font-family: "Arial", "Helvetica", sans-serif; +} +.elementor--star-style-star_unicode .elementor-star-rating i:not(.elementor-star-empty):before { + content: "★"; +} + +.elementor-widget-tabs.elementor-tabs-view-vertical .elementor-tabs-wrapper { + width: 25%; + flex-shrink: 0; +} +.elementor-widget-tabs.elementor-tabs-view-vertical .elementor-tab-desktop-title.elementor-active { + border-right-style: none; +} +.elementor-widget-tabs.elementor-tabs-view-vertical .elementor-tab-desktop-title.elementor-active:before, .elementor-widget-tabs.elementor-tabs-view-vertical .elementor-tab-desktop-title.elementor-active:after { + height: 999em; + width: 0; + right: 0; + border-right-style: solid; +} +.elementor-widget-tabs.elementor-tabs-view-vertical .elementor-tab-desktop-title.elementor-active:before { + top: 0; + transform: translateY(-100%); +} +.elementor-widget-tabs.elementor-tabs-view-vertical .elementor-tab-desktop-title.elementor-active:after { + top: 100%; +} +.elementor-widget-tabs.elementor-tabs-view-horizontal .elementor-tab-desktop-title { + display: table-cell; +} +.elementor-widget-tabs.elementor-tabs-view-horizontal .elementor-tab-desktop-title.elementor-active { + border-bottom-style: none; +} +.elementor-widget-tabs.elementor-tabs-view-horizontal .elementor-tab-desktop-title.elementor-active:before, .elementor-widget-tabs.elementor-tabs-view-horizontal .elementor-tab-desktop-title.elementor-active:after { + bottom: 0; + height: 0; + width: 999em; + border-bottom-style: solid; +} +.elementor-widget-tabs.elementor-tabs-view-horizontal .elementor-tab-desktop-title.elementor-active:before { + right: 100%; +} +.elementor-widget-tabs.elementor-tabs-view-horizontal .elementor-tab-desktop-title.elementor-active:after { + left: 100%; +} +.elementor-widget-tabs .elementor-tab-title, +.elementor-widget-tabs .elementor-tab-title:before, +.elementor-widget-tabs .elementor-tab-title:after, +.elementor-widget-tabs .elementor-tab-content, +.elementor-widget-tabs .elementor-tabs-content-wrapper { + border: 1px none #D5D8DC; +} +.elementor-widget-tabs .elementor-tabs { + text-align: left; +} +.elementor-widget-tabs .elementor-tabs-wrapper { + overflow: hidden; +} +.elementor-widget-tabs .elementor-tab-title { + cursor: pointer; + outline: var(--focus-outline, none); +} +.elementor-widget-tabs .elementor-tab-desktop-title { + position: relative; + padding: 20px 25px; + font-weight: bold; + line-height: 1; + border: solid transparent; +} +.elementor-widget-tabs .elementor-tab-desktop-title.elementor-active { + border-color: #D5D8DC; +} +.elementor-widget-tabs .elementor-tab-desktop-title.elementor-active:before, .elementor-widget-tabs .elementor-tab-desktop-title.elementor-active:after { + display: block; + content: ""; + position: absolute; +} +.elementor-widget-tabs .elementor-tab-desktop-title:focus-visible { + border: 1px solid #000000; +} +.elementor-widget-tabs .elementor-tab-mobile-title { + padding: 10px 10px; + cursor: pointer; +} +.elementor-widget-tabs .elementor-tab-content { + padding: 20px; + display: none; +} + +@media (max-width: 767px) { + .elementor-tabs .elementor-tab-title, + .elementor-tabs .elementor-tab-content { + border-style: solid; + border-bottom-style: none; + } + .elementor-tabs .elementor-tabs-wrapper { + display: none; + } + .elementor-tabs .elementor-tabs-content-wrapper { + border-bottom-style: solid; + } + .elementor-tabs .elementor-tab-content { + padding: 10px; + } +} +@media (min-width: 768px) { + .elementor-widget-tabs.elementor-tabs-view-vertical .elementor-tabs { + display: flex; + } + .elementor-widget-tabs.elementor-tabs-view-vertical .elementor-tabs-wrapper { + flex-direction: column; + } + .elementor-widget-tabs.elementor-tabs-view-vertical .elementor-tabs-content-wrapper { + flex-grow: 1; + border-style: solid; + border-left-style: none; + } + .elementor-widget-tabs.elementor-tabs-view-horizontal .elementor-tab-content { + border-style: solid; + border-top-style: none; + } + .elementor-widget-tabs.elementor-tabs-alignment-center .elementor-tabs-wrapper, .elementor-widget-tabs.elementor-tabs-alignment-end .elementor-tabs-wrapper, .elementor-widget-tabs.elementor-tabs-alignment-stretch .elementor-tabs-wrapper { + display: flex; + } + .elementor-widget-tabs.elementor-tabs-alignment-center .elementor-tabs-wrapper { + justify-content: center; + } + .elementor-widget-tabs.elementor-tabs-alignment-end .elementor-tabs-wrapper { + justify-content: flex-end; + } + .elementor-widget-tabs.elementor-tabs-alignment-stretch.elementor-tabs-view-horizontal .elementor-tab-title { + width: 100%; + } + .elementor-widget-tabs.elementor-tabs-alignment-stretch.elementor-tabs-view-vertical .elementor-tab-title { + height: 100%; + } + .elementor-tabs .elementor-tab-mobile-title { + display: none; + } +} +.elementor-testimonial-wrapper { + overflow: hidden; + text-align: center; +} +.elementor-testimonial-wrapper .elementor-testimonial-content { + font-size: 1.3em; + margin-bottom: 20px; +} +.elementor-testimonial-wrapper .elementor-testimonial-name { + line-height: 1.5; + display: block; +} +.elementor-testimonial-wrapper .elementor-testimonial-job { + font-size: 0.85em; + display: block; +} +.elementor-testimonial-wrapper .elementor-testimonial-meta { + width: 100%; + line-height: 1; +} +.elementor-testimonial-wrapper .elementor-testimonial-meta-inner { + display: inline-block; +} +.elementor-testimonial-wrapper .elementor-testimonial-meta .elementor-testimonial-details, +.elementor-testimonial-wrapper .elementor-testimonial-meta .elementor-testimonial-image { + display: table-cell; + vertical-align: middle; +} +.elementor-testimonial-wrapper .elementor-testimonial-meta .elementor-testimonial-image img { + width: 60px; + height: 60px; + border-radius: 50%; + -o-object-fit: cover; + object-fit: cover; + max-width: none; +} +.elementor-testimonial-wrapper .elementor-testimonial-meta.elementor-testimonial-image-position-aside .elementor-testimonial-image { + padding-right: 15px; +} +.elementor-testimonial-wrapper .elementor-testimonial-meta.elementor-testimonial-image-position-aside .elementor-testimonial-details { + text-align: left; +} +.elementor-testimonial-wrapper .elementor-testimonial-meta.elementor-testimonial-image-position-top .elementor-testimonial-details, +.elementor-testimonial-wrapper .elementor-testimonial-meta.elementor-testimonial-image-position-top .elementor-testimonial-image { + display: block; +} +.elementor-testimonial-wrapper .elementor-testimonial-meta.elementor-testimonial-image-position-top .elementor-testimonial-image { + margin-bottom: 20px; +} + +.elementor-widget-text-editor.elementor-drop-cap-view-stacked .elementor-drop-cap { + background-color: #69727D; + color: #fff; +} +.elementor-widget-text-editor.elementor-drop-cap-view-framed .elementor-drop-cap { + color: #69727D; + border: 3px solid; + background-color: transparent; +} +.elementor-widget-text-editor:not(.elementor-drop-cap-view-default) .elementor-drop-cap { + margin-top: 8px; +} +.elementor-widget-text-editor:not(.elementor-drop-cap-view-default) .elementor-drop-cap-letter { + width: 1em; + height: 1em; +} +.elementor-widget-text-editor .elementor-drop-cap { + float: left; + text-align: center; + line-height: 1; + font-size: 50px; +} +.elementor-widget-text-editor .elementor-drop-cap-letter { + display: inline-block; +} + +.elementor-toggle { + text-align: left; +} +.elementor-toggle .elementor-tab-title { + font-weight: bold; + line-height: 1; + margin: 0; + padding: 15px; + border-bottom: 1px solid #D5D8DC; + cursor: pointer; + outline: none; +} +.elementor-toggle .elementor-tab-title .elementor-toggle-icon { + display: inline-block; + width: 1em; +} +.elementor-toggle .elementor-tab-title .elementor-toggle-icon svg { + margin-inline-start: -5px; + width: 1em; + height: 1em; +} +.elementor-toggle .elementor-tab-title .elementor-toggle-icon.elementor-toggle-icon-right { + float: right; + text-align: right; +} +.elementor-toggle .elementor-tab-title .elementor-toggle-icon.elementor-toggle-icon-left { + float: left; + text-align: left; +} +.elementor-toggle .elementor-tab-title .elementor-toggle-icon .elementor-toggle-icon-closed { + display: block; +} +.elementor-toggle .elementor-tab-title .elementor-toggle-icon .elementor-toggle-icon-opened { + display: none; +} +.elementor-toggle .elementor-tab-title.elementor-active { + border-bottom: none; +} +.elementor-toggle .elementor-tab-title.elementor-active .elementor-toggle-icon-closed { + display: none; +} +.elementor-toggle .elementor-tab-title.elementor-active .elementor-toggle-icon-opened { + display: block; +} +.elementor-toggle .elementor-tab-content { + padding: 15px; + border-bottom: 1px solid #D5D8DC; + display: none; +} + +@media (max-width: 767px) { + .elementor-toggle .elementor-tab-title { + padding: 12px; + } + .elementor-toggle .elementor-tab-content { + padding: 12px 10px; + } +} +.e-con > .elementor-widget-toggle, +.e-con-inner > .elementor-widget-toggle { + width: var(--container-widget-width); + --flex-grow: var( --container-widget-flex-grow ); +} + +.elementor-widget-video .elementor-widget-container { + overflow: hidden; + transform: translate3d(0, 0, 0); +} +.elementor-widget-video .elementor-wrapper { + aspect-ratio: var(--video-aspect-ratio); +} +.elementor-widget-video .elementor-wrapper iframe, +.elementor-widget-video .elementor-wrapper video { + height: 100%; + width: 100%; + display: flex; + border: none; + background-color: #000000; +} +@supports not (aspect-ratio: 1/1) { + .elementor-widget-video .elementor-wrapper { + position: relative; + overflow: hidden; + height: 0; + padding-bottom: calc(100% / var(--video-aspect-ratio)); + } + .elementor-widget-video .elementor-wrapper iframe, + .elementor-widget-video .elementor-wrapper video { + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + } +} +.elementor-widget-video .elementor-open-inline .elementor-custom-embed-image-overlay { + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + background-size: cover; + background-position: center center; +} +.elementor-widget-video .elementor-custom-embed-image-overlay { + cursor: pointer; + text-align: center; +} +.elementor-widget-video .elementor-custom-embed-image-overlay:hover .elementor-custom-embed-play i { + opacity: 1; +} +.elementor-widget-video .elementor-custom-embed-image-overlay img { + display: block; + width: 100%; + aspect-ratio: var(--video-aspect-ratio); + -o-object-fit: cover; + object-fit: cover; + -o-object-position: center center; + object-position: center center; +} +@supports not (aspect-ratio: 1/1) { + .elementor-widget-video .elementor-custom-embed-image-overlay { + position: relative; + overflow: hidden; + height: 0; + padding-bottom: calc(100% / var(--video-aspect-ratio)); + } + .elementor-widget-video .elementor-custom-embed-image-overlay img { + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + } +} +.elementor-widget-video .e-hosted-video .elementor-video { + -o-object-fit: cover; + object-fit: cover; +} + +.e-con > .elementor-widget-video, +.e-con-inner > .elementor-widget-video { + width: var(--container-widget-width); + --flex-grow: var( --container-widget-flex-grow ); +} + +.elementor-widget-rating { + --e-rating-gap: 0px; + --e-rating-icon-font-size: 16px; + --e-rating-icon-color: #CCD6DF; + --e-rating-icon-marked-color: #f0ad4e; + --e-rating-icon-marked-width: 100%; + --e-rating-justify-content: flex-start; +} +.elementor-widget-rating .e-rating { + display: flex; + justify-content: var(--e-rating-justify-content); +} +.elementor-widget-rating .e-rating-wrapper { + display: flex; + justify-content: inherit; + flex-direction: row; + flex-wrap: wrap; + width: -moz-fit-content; + width: fit-content; + margin-block-end: calc(0px - var(--e-rating-gap)); + margin-inline-end: calc(0px - var(--e-rating-gap)); +} +.elementor-widget-rating .e-rating .e-icon { + position: relative; + margin-block-end: var(--e-rating-gap); + margin-inline-end: var(--e-rating-gap); +} +.elementor-widget-rating .e-rating .e-icon-wrapper.e-icon-marked { + --e-rating-icon-color: var(--e-rating-icon-marked-color); + width: var(--e-rating-icon-marked-width); + position: absolute; + z-index: 1; + height: 100%; + left: 0; + top: 0; + overflow: hidden; +} +.elementor-widget-rating .e-rating .e-icon-wrapper :is(i, svg) { + display: flex; + flex-shrink: 0; +} +.elementor-widget-rating .e-rating .e-icon-wrapper i { + font-size: var(--e-rating-icon-font-size); + color: var(--e-rating-icon-color); +} +.elementor-widget-rating .e-rating .e-icon-wrapper svg { + width: auto; + height: var(--e-rating-icon-font-size); + fill: var(--e-rating-icon-color); +} +/*# sourceMappingURL=frontend.css.map */ \ No newline at end of file diff --git a/wp-content/plugins/elementor/assets/css/frontend.min.css b/wp-content/plugins/elementor/assets/css/frontend.min.css new file mode 100644 index 0000000..6c740a0 --- /dev/null +++ b/wp-content/plugins/elementor/assets/css/frontend.min.css @@ -0,0 +1,2 @@ +/*! elementor - v3.20.0 - 26-03-2024 */ +@charset "UTF-8";.dialog-widget-content{background-color:var(--e-a-bg-default);position:absolute;border-radius:3px;box-shadow:2px 8px 23px 3px rgba(0,0,0,.2);overflow:hidden}.dialog-message{line-height:1.5;box-sizing:border-box}.dialog-close-button{cursor:pointer;position:absolute;margin-block-start:15px;right:15px;color:var(--e-a-color-txt);font-size:15px;line-height:1;transition:var(--e-a-transition-hover)}.dialog-close-button:hover{color:var(--e-a-color-txt-hover)}.dialog-prevent-scroll{overflow:hidden;max-height:100vh}.dialog-type-lightbox{position:fixed;height:100%;width:100%;bottom:0;left:0;background-color:rgba(0,0,0,.8);z-index:9999;-webkit-user-select:none;-moz-user-select:none;user-select:none}.elementor-editor-active .elementor-popup-modal{background-color:initial}.dialog-type-alert .dialog-widget-content,.dialog-type-confirm .dialog-widget-content{margin:auto;width:400px;padding:20px}.dialog-type-alert .dialog-header,.dialog-type-confirm .dialog-header{font-size:15px;font-weight:500}.dialog-type-alert .dialog-header:after,.dialog-type-confirm .dialog-header:after{content:"";display:block;border-block-end:var(--e-a-border);padding-block-end:10px;margin-block-end:10px;margin-inline-start:-20px;margin-inline-end:-20px}.dialog-type-alert .dialog-message,.dialog-type-confirm .dialog-message{min-height:50px}.dialog-type-alert .dialog-buttons-wrapper,.dialog-type-confirm .dialog-buttons-wrapper{padding-block-start:10px;display:flex;justify-content:flex-end;gap:15px}.dialog-type-alert .dialog-buttons-wrapper .dialog-button,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button{font-size:12px;font-weight:500;line-height:1.2;padding:8px 16px;outline:none;border:none;border-radius:var(--e-a-border-radius);background-color:var(--e-a-btn-bg);color:var(--e-a-btn-color-invert);transition:var(--e-a-transition-hover)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:hover{border:none}.dialog-type-alert .dialog-buttons-wrapper .dialog-button:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:hover{background-color:var(--e-a-btn-bg-hover);color:var(--e-a-btn-color-invert)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button:active,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:active{background-color:var(--e-a-btn-bg-active)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button:not([disabled]),.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:not([disabled]){cursor:pointer}.dialog-type-alert .dialog-buttons-wrapper .dialog-button:disabled,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:disabled{background-color:var(--e-a-btn-bg-disabled);color:var(--e-a-btn-color-disabled)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button:not(.elementor-button-state) .elementor-state-icon,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:not(.elementor-button-state) .elementor-state-icon{display:none}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt{background:transparent;color:var(--e-a-color-txt)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel:hover,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt:hover{background:var(--e-a-bg-hover);color:var(--e-a-color-txt-hover)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel:disabled,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt:disabled,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel:disabled,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt:disabled{background:transparent;color:var(--e-a-color-txt-disabled)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt-border,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt-border{border:1px solid var(--e-a-color-txt-muted)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-success,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-success,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-success,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-success{background-color:var(--e-a-btn-bg-success)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-success:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-success:hover,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-success:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-success:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-success:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-success:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-success:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-success:hover{background-color:var(--e-a-btn-bg-success-hover)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-take_over,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-take_over,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary{background-color:var(--e-a-btn-bg-primary);color:var(--e-a-btn-color)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok:hover,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-take_over:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-take_over:hover,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-take_over:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-take_over:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary:hover{background-color:var(--e-a-btn-bg-primary-hover);color:var(--e-a-btn-color)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-ok,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-take_over,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary.dialog-cancel,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary.e-btn-txt,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-ok,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-take_over,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary.dialog-cancel,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary.e-btn-txt{background:transparent;color:var(--e-a-color-primary-bold)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over:hover,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel:hover,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-ok:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-ok:hover,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-take_over:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-take_over:hover,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary.dialog-cancel:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary.dialog-cancel:hover,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary.e-btn-txt:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary.e-btn-txt:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-ok:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-ok:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-take_over:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-take_over:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary.dialog-cancel:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary.dialog-cancel:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary.e-btn-txt:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary.e-btn-txt:hover{background:var(--e-a-bg-primary)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-accent,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.go-pro,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-accent,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.go-pro{background-color:var(--e-a-btn-bg-accent)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-accent:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-accent:hover,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.go-pro:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.go-pro:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-accent:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-accent:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.go-pro:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.go-pro:hover{background-color:var(--e-a-btn-bg-accent-hover)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-accent:active,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.go-pro:active,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-accent:active,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.go-pro:active{background-color:var(--e-a-btn-bg-accent-active)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-info,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-info,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-info,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-info{background-color:var(--e-a-btn-bg-info)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-info:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-info:hover,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-info:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-info:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-info:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-info:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-info:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-info:hover{background-color:var(--e-a-btn-bg-info-hover)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-warning,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-warning,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-warning,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-warning{background-color:var(--e-a-btn-bg-warning)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-warning:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-warning:hover,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-warning:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-warning:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-warning:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-warning:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-warning:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-warning:hover{background-color:var(--e-a-btn-bg-warning-hover)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-danger,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-danger,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-danger,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-danger{background-color:var(--e-a-btn-bg-danger)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-danger:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-danger:hover,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-danger:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-danger:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-danger:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-danger:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-danger:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-danger:hover{background-color:var(--e-a-btn-bg-danger-hover)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button i,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button i{margin-inline-end:5px}.dialog-type-alert .dialog-buttons-wrapper .dialog-button:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button:hover,.dialog-type-alert .dialog-buttons-wrapper .dialog-button:visited,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:visited{color:initial}.flatpickr-calendar{width:280px}.flatpickr-calendar .flatpickr-current-month span.cur-month{font-weight:300}.flatpickr-calendar .dayContainer{width:280px;min-width:280px;max-width:280px}.flatpickr-calendar .flatpickr-days{width:280px}.flatpickr-calendar .flatpickr-day{max-width:37px;height:37px;line-height:37px}.elementor-hidden{display:none}.elementor-screen-only,.screen-reader-text,.screen-reader-text span,.ui-helper-hidden-accessible{position:absolute;top:-10000em;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.elementor-clearfix:after{content:"";display:block;clear:both;width:0;height:0}.e-logo-wrapper{background:var(--e-a-bg-logo);display:inline-block;padding:.75em;border-radius:50%;line-height:1}.e-logo-wrapper i{color:var(--e-a-color-logo);font-size:1em}.elementor *,.elementor :after,.elementor :before{box-sizing:border-box}.elementor a{box-shadow:none;text-decoration:none}.elementor hr{margin:0;background-color:transparent}.elementor img{height:auto;max-width:100%;border:none;border-radius:0;box-shadow:none}.elementor .elementor-widget:not(.elementor-widget-text-editor):not(.elementor-widget-theme-post-content) figure{margin:0}.elementor embed,.elementor iframe,.elementor object,.elementor video{max-width:100%;width:100%;margin:0;line-height:1;border:none}.elementor .elementor-background,.elementor .elementor-background-holder,.elementor .elementor-background-video-container{height:100%;width:100%;top:0;left:0;position:absolute;overflow:hidden;z-index:0;direction:ltr}.elementor .elementor-background-video-container{transition:opacity 1s;pointer-events:none}.elementor .elementor-background-video-container.elementor-loading{opacity:0}.elementor .elementor-background-video-embed{max-width:none}.elementor .elementor-background-video,.elementor .elementor-background-video-embed,.elementor .elementor-background-video-hosted{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.elementor .elementor-background-video{max-width:none}.elementor .elementor-html5-video{-o-object-fit:cover;object-fit:cover}.elementor .elementor-background-overlay,.elementor .elementor-background-slideshow{height:100%;width:100%;top:0;left:0;position:absolute}.elementor .elementor-background-slideshow{z-index:0}.elementor .elementor-background-slideshow__slide__image{width:100%;height:100%;background-position:50%;background-size:cover}.e-con-inner>.elementor-element.elementor-absolute,.e-con>.elementor-element.elementor-absolute,.elementor-widget-wrap>.elementor-element.elementor-absolute{position:absolute}.e-con-inner>.elementor-element.elementor-fixed,.e-con>.elementor-element.elementor-fixed,.elementor-widget-wrap>.elementor-element.elementor-fixed{position:fixed}.elementor-widget-wrap .elementor-element.elementor-widget__width-auto,.elementor-widget-wrap .elementor-element.elementor-widget__width-initial{max-width:100%}@media (max-width:1024px){.elementor-widget-wrap .elementor-element.elementor-widget-tablet__width-auto,.elementor-widget-wrap .elementor-element.elementor-widget-tablet__width-initial{max-width:100%}}@media (max-width:767px){.elementor-widget-wrap .elementor-element.elementor-widget-mobile__width-auto,.elementor-widget-wrap .elementor-element.elementor-widget-mobile__width-initial{max-width:100%}}.elementor-element{--flex-direction:initial;--flex-wrap:initial;--justify-content:initial;--align-items:initial;--align-content:initial;--gap:initial;--flex-basis:initial;--flex-grow:initial;--flex-shrink:initial;--order:initial;--align-self:initial;flex-basis:var(--flex-basis);flex-grow:var(--flex-grow);flex-shrink:var(--flex-shrink);order:var(--order);align-self:var(--align-self)}.elementor-element.elementor-absolute,.elementor-element.elementor-fixed{z-index:1}.elementor-element:where(.e-con-full,.elementor-widget){flex-direction:var(--flex-direction);flex-wrap:var(--flex-wrap);justify-content:var(--justify-content);align-items:var(--align-items);align-content:var(--align-content);gap:var(--gap)}.elementor-invisible{visibility:hidden}.elementor-align-center{text-align:center}.elementor-align-center .elementor-button{width:auto}.elementor-align-right{text-align:right}.elementor-align-right .elementor-button{width:auto}.elementor-align-left{text-align:left}.elementor-align-left .elementor-button{width:auto}.elementor-align-justify .elementor-button{width:100%}.elementor-custom-embed-play{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.elementor-custom-embed-play i{font-size:100px;color:#fff;text-shadow:1px 0 6px rgba(0,0,0,.3)}.elementor-custom-embed-play svg{height:100px;width:100px;fill:#fff;filter:drop-shadow(1px 0 6px rgba(0,0,0,.3))}.elementor-custom-embed-play i,.elementor-custom-embed-play svg{opacity:.8;transition:all .5s}.elementor-custom-embed-play.elementor-playing i{font-family:eicons}.elementor-custom-embed-play.elementor-playing i:before{content:"\e8fb"}.elementor-custom-embed-play.elementor-playing i,.elementor-custom-embed-play.elementor-playing svg{animation:eicon-spin 2s linear infinite}.elementor-tag{display:inline-flex}.elementor-ken-burns{transition-property:transform;transition-duration:10s;transition-timing-function:linear}.elementor-ken-burns--out{transform:scale(1.3)}.elementor-ken-burns--active{transition-duration:20s}.elementor-ken-burns--active.elementor-ken-burns--out{transform:scale(1)}.elementor-ken-burns--active.elementor-ken-burns--in{transform:scale(1.3)}@media (min-width:-1){.elementor-widescreen-align-center{text-align:center}.elementor-widescreen-align-center .elementor-button{width:auto}.elementor-widescreen-align-right{text-align:right}.elementor-widescreen-align-right .elementor-button{width:auto}.elementor-widescreen-align-left{text-align:left}.elementor-widescreen-align-left .elementor-button{width:auto}.elementor-widescreen-align-justify .elementor-button{width:100%}}@media (max-width:-1){.elementor-laptop-align-center{text-align:center}.elementor-laptop-align-center .elementor-button{width:auto}.elementor-laptop-align-right{text-align:right}.elementor-laptop-align-right .elementor-button{width:auto}.elementor-laptop-align-left{text-align:left}.elementor-laptop-align-left .elementor-button{width:auto}.elementor-laptop-align-justify .elementor-button{width:100%}}@media (max-width:-1){.elementor-tablet_extra-align-center{text-align:center}.elementor-tablet_extra-align-center .elementor-button{width:auto}.elementor-tablet_extra-align-right{text-align:right}.elementor-tablet_extra-align-right .elementor-button{width:auto}.elementor-tablet_extra-align-left{text-align:left}.elementor-tablet_extra-align-left .elementor-button{width:auto}.elementor-tablet_extra-align-justify .elementor-button{width:100%}}@media (max-width:1024px){.elementor-tablet-align-center{text-align:center}.elementor-tablet-align-center .elementor-button{width:auto}.elementor-tablet-align-right{text-align:right}.elementor-tablet-align-right .elementor-button{width:auto}.elementor-tablet-align-left{text-align:left}.elementor-tablet-align-left .elementor-button{width:auto}.elementor-tablet-align-justify .elementor-button{width:100%}}@media (max-width:-1){.elementor-mobile_extra-align-center{text-align:center}.elementor-mobile_extra-align-center .elementor-button{width:auto}.elementor-mobile_extra-align-right{text-align:right}.elementor-mobile_extra-align-right .elementor-button{width:auto}.elementor-mobile_extra-align-left{text-align:left}.elementor-mobile_extra-align-left .elementor-button{width:auto}.elementor-mobile_extra-align-justify .elementor-button{width:100%}}@media (max-width:767px){.elementor-mobile-align-center{text-align:center}.elementor-mobile-align-center .elementor-button{width:auto}.elementor-mobile-align-right{text-align:right}.elementor-mobile-align-right .elementor-button{width:auto}.elementor-mobile-align-left{text-align:left}.elementor-mobile-align-left .elementor-button{width:auto}.elementor-mobile-align-justify .elementor-button{width:100%}}:root{--page-title-display:block}.elementor-page-title,h1.entry-title{display:var(--page-title-display)}@keyframes eicon-spin{0%{transform:rotate(0deg)}to{transform:rotate(359deg)}}.eicon-animation-spin{animation:eicon-spin 2s linear infinite}.elementor-section{position:relative}.elementor-section .elementor-container{display:flex;margin-right:auto;margin-left:auto;position:relative}@media (max-width:1024px){.elementor-section .elementor-container{flex-wrap:wrap}}.elementor-section.elementor-section-boxed>.elementor-container{max-width:1140px}.elementor-section.elementor-section-stretched{position:relative;width:100%}.elementor-section.elementor-section-items-top>.elementor-container{align-items:flex-start}.elementor-section.elementor-section-items-middle>.elementor-container{align-items:center}.elementor-section.elementor-section-items-bottom>.elementor-container{align-items:flex-end}@media (min-width:768px){.elementor-section.elementor-section-height-full{height:100vh}.elementor-section.elementor-section-height-full>.elementor-container{height:100%}}.elementor-bc-flex-widget .elementor-section-content-top>.elementor-container>.elementor-column>.elementor-widget-wrap{align-items:flex-start}.elementor-bc-flex-widget .elementor-section-content-middle>.elementor-container>.elementor-column>.elementor-widget-wrap{align-items:center}.elementor-bc-flex-widget .elementor-section-content-bottom>.elementor-container>.elementor-column>.elementor-widget-wrap{align-items:flex-end}.elementor-row{width:100%;display:flex}@media (max-width:1024px){.elementor-row{flex-wrap:wrap}}.elementor-widget-wrap{position:relative;width:100%;flex-wrap:wrap;align-content:flex-start}.elementor:not(.elementor-bc-flex-widget) .elementor-widget-wrap{display:flex}.elementor-widget-wrap>.elementor-element{width:100%}.elementor-widget-wrap.e-swiper-container{width:calc(100% - (var(--e-column-margin-left, 0px) + var(--e-column-margin-right, 0px)))}.elementor-widget{position:relative}.elementor-widget:not(:last-child){margin-bottom:20px}.elementor-widget:not(:last-child).elementor-absolute,.elementor-widget:not(:last-child).elementor-widget__width-auto,.elementor-widget:not(:last-child).elementor-widget__width-initial{margin-bottom:0}.elementor-column{position:relative;min-height:1px;display:flex}.elementor-column-wrap{width:100%;position:relative;display:flex}.elementor-column-gap-narrow>.elementor-column>.elementor-element-populated{padding:5px}.elementor-column-gap-default>.elementor-column>.elementor-element-populated{padding:10px}.elementor-column-gap-extended>.elementor-column>.elementor-element-populated{padding:15px}.elementor-column-gap-wide>.elementor-column>.elementor-element-populated{padding:20px}.elementor-column-gap-wider>.elementor-column>.elementor-element-populated{padding:30px}.elementor-inner-section .elementor-column-gap-no .elementor-element-populated{padding:0}@media (min-width:768px){.elementor-column.elementor-col-10,.elementor-column[data-col="10"]{width:10%}.elementor-column.elementor-col-11,.elementor-column[data-col="11"]{width:11.111%}.elementor-column.elementor-col-12,.elementor-column[data-col="12"]{width:12.5%}.elementor-column.elementor-col-14,.elementor-column[data-col="14"]{width:14.285%}.elementor-column.elementor-col-16,.elementor-column[data-col="16"]{width:16.666%}.elementor-column.elementor-col-20,.elementor-column[data-col="20"]{width:20%}.elementor-column.elementor-col-25,.elementor-column[data-col="25"]{width:25%}.elementor-column.elementor-col-30,.elementor-column[data-col="30"]{width:30%}.elementor-column.elementor-col-33,.elementor-column[data-col="33"]{width:33.333%}.elementor-column.elementor-col-40,.elementor-column[data-col="40"]{width:40%}.elementor-column.elementor-col-50,.elementor-column[data-col="50"]{width:50%}.elementor-column.elementor-col-60,.elementor-column[data-col="60"]{width:60%}.elementor-column.elementor-col-66,.elementor-column[data-col="66"]{width:66.666%}.elementor-column.elementor-col-70,.elementor-column[data-col="70"]{width:70%}.elementor-column.elementor-col-75,.elementor-column[data-col="75"]{width:75%}.elementor-column.elementor-col-80,.elementor-column[data-col="80"]{width:80%}.elementor-column.elementor-col-83,.elementor-column[data-col="83"]{width:83.333%}.elementor-column.elementor-col-90,.elementor-column[data-col="90"]{width:90%}.elementor-column.elementor-col-100,.elementor-column[data-col="100"]{width:100%}}@media (max-width:479px){.elementor-column.elementor-xs-10{width:10%}.elementor-column.elementor-xs-11{width:11.111%}.elementor-column.elementor-xs-12{width:12.5%}.elementor-column.elementor-xs-14{width:14.285%}.elementor-column.elementor-xs-16{width:16.666%}.elementor-column.elementor-xs-20{width:20%}.elementor-column.elementor-xs-25{width:25%}.elementor-column.elementor-xs-30{width:30%}.elementor-column.elementor-xs-33{width:33.333%}.elementor-column.elementor-xs-40{width:40%}.elementor-column.elementor-xs-50{width:50%}.elementor-column.elementor-xs-60{width:60%}.elementor-column.elementor-xs-66{width:66.666%}.elementor-column.elementor-xs-70{width:70%}.elementor-column.elementor-xs-75{width:75%}.elementor-column.elementor-xs-80{width:80%}.elementor-column.elementor-xs-83{width:83.333%}.elementor-column.elementor-xs-90{width:90%}.elementor-column.elementor-xs-100{width:100%}}@media (max-width:767px){.elementor-column.elementor-sm-10{width:10%}.elementor-column.elementor-sm-11{width:11.111%}.elementor-column.elementor-sm-12{width:12.5%}.elementor-column.elementor-sm-14{width:14.285%}.elementor-column.elementor-sm-16{width:16.666%}.elementor-column.elementor-sm-20{width:20%}.elementor-column.elementor-sm-25{width:25%}.elementor-column.elementor-sm-30{width:30%}.elementor-column.elementor-sm-33{width:33.333%}.elementor-column.elementor-sm-40{width:40%}.elementor-column.elementor-sm-50{width:50%}.elementor-column.elementor-sm-60{width:60%}.elementor-column.elementor-sm-66{width:66.666%}.elementor-column.elementor-sm-70{width:70%}.elementor-column.elementor-sm-75{width:75%}.elementor-column.elementor-sm-80{width:80%}.elementor-column.elementor-sm-83{width:83.333%}.elementor-column.elementor-sm-90{width:90%}.elementor-column.elementor-sm-100{width:100%}}@media (min-width:768px) and (max-width:1024px){.elementor-column.elementor-md-10{width:10%}.elementor-column.elementor-md-11{width:11.111%}.elementor-column.elementor-md-12{width:12.5%}.elementor-column.elementor-md-14{width:14.285%}.elementor-column.elementor-md-16{width:16.666%}.elementor-column.elementor-md-20{width:20%}.elementor-column.elementor-md-25{width:25%}.elementor-column.elementor-md-30{width:30%}.elementor-column.elementor-md-33{width:33.333%}.elementor-column.elementor-md-40{width:40%}.elementor-column.elementor-md-50{width:50%}.elementor-column.elementor-md-60{width:60%}.elementor-column.elementor-md-66{width:66.666%}.elementor-column.elementor-md-70{width:70%}.elementor-column.elementor-md-75{width:75%}.elementor-column.elementor-md-80{width:80%}.elementor-column.elementor-md-83{width:83.333%}.elementor-column.elementor-md-90{width:90%}.elementor-column.elementor-md-100{width:100%}}@media (min-width:-1){.elementor-reverse-widescreen>.elementor-container>:first-child{order:10}.elementor-reverse-widescreen>.elementor-container>:nth-child(2){order:9}.elementor-reverse-widescreen>.elementor-container>:nth-child(3){order:8}.elementor-reverse-widescreen>.elementor-container>:nth-child(4){order:7}.elementor-reverse-widescreen>.elementor-container>:nth-child(5){order:6}.elementor-reverse-widescreen>.elementor-container>:nth-child(6){order:5}.elementor-reverse-widescreen>.elementor-container>:nth-child(7){order:4}.elementor-reverse-widescreen>.elementor-container>:nth-child(8){order:3}.elementor-reverse-widescreen>.elementor-container>:nth-child(9){order:2}.elementor-reverse-widescreen>.elementor-container>:nth-child(10){order:1}}@media (min-width:1025px) and (max-width:-1){.elementor-reverse-laptop>.elementor-container>:first-child{order:10}.elementor-reverse-laptop>.elementor-container>:nth-child(2){order:9}.elementor-reverse-laptop>.elementor-container>:nth-child(3){order:8}.elementor-reverse-laptop>.elementor-container>:nth-child(4){order:7}.elementor-reverse-laptop>.elementor-container>:nth-child(5){order:6}.elementor-reverse-laptop>.elementor-container>:nth-child(6){order:5}.elementor-reverse-laptop>.elementor-container>:nth-child(7){order:4}.elementor-reverse-laptop>.elementor-container>:nth-child(8){order:3}.elementor-reverse-laptop>.elementor-container>:nth-child(9){order:2}.elementor-reverse-laptop>.elementor-container>:nth-child(10){order:1}}@media (min-width:-1) and (max-width:-1){.elementor-reverse-laptop>.elementor-container>:first-child{order:10}.elementor-reverse-laptop>.elementor-container>:nth-child(2){order:9}.elementor-reverse-laptop>.elementor-container>:nth-child(3){order:8}.elementor-reverse-laptop>.elementor-container>:nth-child(4){order:7}.elementor-reverse-laptop>.elementor-container>:nth-child(5){order:6}.elementor-reverse-laptop>.elementor-container>:nth-child(6){order:5}.elementor-reverse-laptop>.elementor-container>:nth-child(7){order:4}.elementor-reverse-laptop>.elementor-container>:nth-child(8){order:3}.elementor-reverse-laptop>.elementor-container>:nth-child(9){order:2}.elementor-reverse-laptop>.elementor-container>:nth-child(10){order:1}}@media (min-width:1025px) and (max-width:-1){.elementor-reverse-laptop>.elementor-container>:first-child,.elementor-reverse-laptop>.elementor-container>:nth-child(2),.elementor-reverse-laptop>.elementor-container>:nth-child(3),.elementor-reverse-laptop>.elementor-container>:nth-child(4),.elementor-reverse-laptop>.elementor-container>:nth-child(5),.elementor-reverse-laptop>.elementor-container>:nth-child(6),.elementor-reverse-laptop>.elementor-container>:nth-child(7),.elementor-reverse-laptop>.elementor-container>:nth-child(8),.elementor-reverse-laptop>.elementor-container>:nth-child(9),.elementor-reverse-laptop>.elementor-container>:nth-child(10){order:0}.elementor-reverse-tablet_extra>.elementor-container>:first-child{order:10}.elementor-reverse-tablet_extra>.elementor-container>:nth-child(2){order:9}.elementor-reverse-tablet_extra>.elementor-container>:nth-child(3){order:8}.elementor-reverse-tablet_extra>.elementor-container>:nth-child(4){order:7}.elementor-reverse-tablet_extra>.elementor-container>:nth-child(5){order:6}.elementor-reverse-tablet_extra>.elementor-container>:nth-child(6){order:5}.elementor-reverse-tablet_extra>.elementor-container>:nth-child(7){order:4}.elementor-reverse-tablet_extra>.elementor-container>:nth-child(8){order:3}.elementor-reverse-tablet_extra>.elementor-container>:nth-child(9){order:2}.elementor-reverse-tablet_extra>.elementor-container>:nth-child(10){order:1}}@media (min-width:768px) and (max-width:1024px){.elementor-reverse-tablet>.elementor-container>:first-child{order:10}.elementor-reverse-tablet>.elementor-container>:nth-child(2){order:9}.elementor-reverse-tablet>.elementor-container>:nth-child(3){order:8}.elementor-reverse-tablet>.elementor-container>:nth-child(4){order:7}.elementor-reverse-tablet>.elementor-container>:nth-child(5){order:6}.elementor-reverse-tablet>.elementor-container>:nth-child(6){order:5}.elementor-reverse-tablet>.elementor-container>:nth-child(7){order:4}.elementor-reverse-tablet>.elementor-container>:nth-child(8){order:3}.elementor-reverse-tablet>.elementor-container>:nth-child(9){order:2}.elementor-reverse-tablet>.elementor-container>:nth-child(10){order:1}}@media (min-width:-1) and (max-width:1024px){.elementor-reverse-tablet>.elementor-container>:first-child{order:10}.elementor-reverse-tablet>.elementor-container>:nth-child(2){order:9}.elementor-reverse-tablet>.elementor-container>:nth-child(3){order:8}.elementor-reverse-tablet>.elementor-container>:nth-child(4){order:7}.elementor-reverse-tablet>.elementor-container>:nth-child(5){order:6}.elementor-reverse-tablet>.elementor-container>:nth-child(6){order:5}.elementor-reverse-tablet>.elementor-container>:nth-child(7){order:4}.elementor-reverse-tablet>.elementor-container>:nth-child(8){order:3}.elementor-reverse-tablet>.elementor-container>:nth-child(9){order:2}.elementor-reverse-tablet>.elementor-container>:nth-child(10){order:1}}@media (min-width:768px) and (max-width:-1){.elementor-reverse-tablet>.elementor-container>:first-child,.elementor-reverse-tablet>.elementor-container>:nth-child(2),.elementor-reverse-tablet>.elementor-container>:nth-child(3),.elementor-reverse-tablet>.elementor-container>:nth-child(4),.elementor-reverse-tablet>.elementor-container>:nth-child(5),.elementor-reverse-tablet>.elementor-container>:nth-child(6),.elementor-reverse-tablet>.elementor-container>:nth-child(7),.elementor-reverse-tablet>.elementor-container>:nth-child(8),.elementor-reverse-tablet>.elementor-container>:nth-child(9),.elementor-reverse-tablet>.elementor-container>:nth-child(10){order:0}.elementor-reverse-mobile_extra>.elementor-container>:first-child{order:10}.elementor-reverse-mobile_extra>.elementor-container>:nth-child(2){order:9}.elementor-reverse-mobile_extra>.elementor-container>:nth-child(3){order:8}.elementor-reverse-mobile_extra>.elementor-container>:nth-child(4){order:7}.elementor-reverse-mobile_extra>.elementor-container>:nth-child(5){order:6}.elementor-reverse-mobile_extra>.elementor-container>:nth-child(6){order:5}.elementor-reverse-mobile_extra>.elementor-container>:nth-child(7){order:4}.elementor-reverse-mobile_extra>.elementor-container>:nth-child(8){order:3}.elementor-reverse-mobile_extra>.elementor-container>:nth-child(9){order:2}.elementor-reverse-mobile_extra>.elementor-container>:nth-child(10){order:1}}@media (max-width:767px){.elementor-reverse-mobile>.elementor-container>:first-child{order:10}.elementor-reverse-mobile>.elementor-container>:nth-child(2){order:9}.elementor-reverse-mobile>.elementor-container>:nth-child(3){order:8}.elementor-reverse-mobile>.elementor-container>:nth-child(4){order:7}.elementor-reverse-mobile>.elementor-container>:nth-child(5){order:6}.elementor-reverse-mobile>.elementor-container>:nth-child(6){order:5}.elementor-reverse-mobile>.elementor-container>:nth-child(7){order:4}.elementor-reverse-mobile>.elementor-container>:nth-child(8){order:3}.elementor-reverse-mobile>.elementor-container>:nth-child(9){order:2}.elementor-reverse-mobile>.elementor-container>:nth-child(10){order:1}.elementor-column{width:100%}}ul.elementor-icon-list-items.elementor-inline-items{display:flex;flex-wrap:wrap}ul.elementor-icon-list-items.elementor-inline-items .elementor-inline-item{word-break:break-word}.elementor-grid{display:grid;grid-column-gap:var(--grid-column-gap);grid-row-gap:var(--grid-row-gap)}.elementor-grid .elementor-grid-item{min-width:0}.elementor-grid-0 .elementor-grid{display:inline-block;width:100%;word-spacing:var(--grid-column-gap);margin-bottom:calc(-1 * var(--grid-row-gap))}.elementor-grid-0 .elementor-grid .elementor-grid-item{display:inline-block;margin-bottom:var(--grid-row-gap);word-break:break-word}.elementor-grid-1 .elementor-grid{grid-template-columns:repeat(1,1fr)}.elementor-grid-2 .elementor-grid{grid-template-columns:repeat(2,1fr)}.elementor-grid-3 .elementor-grid{grid-template-columns:repeat(3,1fr)}.elementor-grid-4 .elementor-grid{grid-template-columns:repeat(4,1fr)}.elementor-grid-5 .elementor-grid{grid-template-columns:repeat(5,1fr)}.elementor-grid-6 .elementor-grid{grid-template-columns:repeat(6,1fr)}.elementor-grid-7 .elementor-grid{grid-template-columns:repeat(7,1fr)}.elementor-grid-8 .elementor-grid{grid-template-columns:repeat(8,1fr)}.elementor-grid-9 .elementor-grid{grid-template-columns:repeat(9,1fr)}.elementor-grid-10 .elementor-grid{grid-template-columns:repeat(10,1fr)}.elementor-grid-11 .elementor-grid{grid-template-columns:repeat(11,1fr)}.elementor-grid-12 .elementor-grid{grid-template-columns:repeat(12,1fr)}@media (min-width:-1){.elementor-grid-widescreen-0 .elementor-grid{display:inline-block;width:100%;word-spacing:var(--grid-column-gap);margin-bottom:calc(-1 * var(--grid-row-gap))}.elementor-grid-widescreen-0 .elementor-grid .elementor-grid-item{display:inline-block;margin-bottom:var(--grid-row-gap);word-break:break-word}.elementor-grid-widescreen-1 .elementor-grid{grid-template-columns:repeat(1,1fr)}.elementor-grid-widescreen-2 .elementor-grid{grid-template-columns:repeat(2,1fr)}.elementor-grid-widescreen-3 .elementor-grid{grid-template-columns:repeat(3,1fr)}.elementor-grid-widescreen-4 .elementor-grid{grid-template-columns:repeat(4,1fr)}.elementor-grid-widescreen-5 .elementor-grid{grid-template-columns:repeat(5,1fr)}.elementor-grid-widescreen-6 .elementor-grid{grid-template-columns:repeat(6,1fr)}.elementor-grid-widescreen-7 .elementor-grid{grid-template-columns:repeat(7,1fr)}.elementor-grid-widescreen-8 .elementor-grid{grid-template-columns:repeat(8,1fr)}.elementor-grid-widescreen-9 .elementor-grid{grid-template-columns:repeat(9,1fr)}.elementor-grid-widescreen-10 .elementor-grid{grid-template-columns:repeat(10,1fr)}.elementor-grid-widescreen-11 .elementor-grid{grid-template-columns:repeat(11,1fr)}.elementor-grid-widescreen-12 .elementor-grid{grid-template-columns:repeat(12,1fr)}}@media (max-width:-1){.elementor-grid-laptop-0 .elementor-grid{display:inline-block;width:100%;word-spacing:var(--grid-column-gap);margin-bottom:calc(-1 * var(--grid-row-gap))}.elementor-grid-laptop-0 .elementor-grid .elementor-grid-item{display:inline-block;margin-bottom:var(--grid-row-gap);word-break:break-word}.elementor-grid-laptop-1 .elementor-grid{grid-template-columns:repeat(1,1fr)}.elementor-grid-laptop-2 .elementor-grid{grid-template-columns:repeat(2,1fr)}.elementor-grid-laptop-3 .elementor-grid{grid-template-columns:repeat(3,1fr)}.elementor-grid-laptop-4 .elementor-grid{grid-template-columns:repeat(4,1fr)}.elementor-grid-laptop-5 .elementor-grid{grid-template-columns:repeat(5,1fr)}.elementor-grid-laptop-6 .elementor-grid{grid-template-columns:repeat(6,1fr)}.elementor-grid-laptop-7 .elementor-grid{grid-template-columns:repeat(7,1fr)}.elementor-grid-laptop-8 .elementor-grid{grid-template-columns:repeat(8,1fr)}.elementor-grid-laptop-9 .elementor-grid{grid-template-columns:repeat(9,1fr)}.elementor-grid-laptop-10 .elementor-grid{grid-template-columns:repeat(10,1fr)}.elementor-grid-laptop-11 .elementor-grid{grid-template-columns:repeat(11,1fr)}.elementor-grid-laptop-12 .elementor-grid{grid-template-columns:repeat(12,1fr)}}@media (max-width:-1){.elementor-grid-tablet_extra-0 .elementor-grid{display:inline-block;width:100%;word-spacing:var(--grid-column-gap);margin-bottom:calc(-1 * var(--grid-row-gap))}.elementor-grid-tablet_extra-0 .elementor-grid .elementor-grid-item{display:inline-block;margin-bottom:var(--grid-row-gap);word-break:break-word}.elementor-grid-tablet_extra-1 .elementor-grid{grid-template-columns:repeat(1,1fr)}.elementor-grid-tablet_extra-2 .elementor-grid{grid-template-columns:repeat(2,1fr)}.elementor-grid-tablet_extra-3 .elementor-grid{grid-template-columns:repeat(3,1fr)}.elementor-grid-tablet_extra-4 .elementor-grid{grid-template-columns:repeat(4,1fr)}.elementor-grid-tablet_extra-5 .elementor-grid{grid-template-columns:repeat(5,1fr)}.elementor-grid-tablet_extra-6 .elementor-grid{grid-template-columns:repeat(6,1fr)}.elementor-grid-tablet_extra-7 .elementor-grid{grid-template-columns:repeat(7,1fr)}.elementor-grid-tablet_extra-8 .elementor-grid{grid-template-columns:repeat(8,1fr)}.elementor-grid-tablet_extra-9 .elementor-grid{grid-template-columns:repeat(9,1fr)}.elementor-grid-tablet_extra-10 .elementor-grid{grid-template-columns:repeat(10,1fr)}.elementor-grid-tablet_extra-11 .elementor-grid{grid-template-columns:repeat(11,1fr)}.elementor-grid-tablet_extra-12 .elementor-grid{grid-template-columns:repeat(12,1fr)}}@media (max-width:1024px){.elementor-grid-tablet-0 .elementor-grid{display:inline-block;width:100%;word-spacing:var(--grid-column-gap);margin-bottom:calc(-1 * var(--grid-row-gap))}.elementor-grid-tablet-0 .elementor-grid .elementor-grid-item{display:inline-block;margin-bottom:var(--grid-row-gap);word-break:break-word}.elementor-grid-tablet-1 .elementor-grid{grid-template-columns:repeat(1,1fr)}.elementor-grid-tablet-2 .elementor-grid{grid-template-columns:repeat(2,1fr)}.elementor-grid-tablet-3 .elementor-grid{grid-template-columns:repeat(3,1fr)}.elementor-grid-tablet-4 .elementor-grid{grid-template-columns:repeat(4,1fr)}.elementor-grid-tablet-5 .elementor-grid{grid-template-columns:repeat(5,1fr)}.elementor-grid-tablet-6 .elementor-grid{grid-template-columns:repeat(6,1fr)}.elementor-grid-tablet-7 .elementor-grid{grid-template-columns:repeat(7,1fr)}.elementor-grid-tablet-8 .elementor-grid{grid-template-columns:repeat(8,1fr)}.elementor-grid-tablet-9 .elementor-grid{grid-template-columns:repeat(9,1fr)}.elementor-grid-tablet-10 .elementor-grid{grid-template-columns:repeat(10,1fr)}.elementor-grid-tablet-11 .elementor-grid{grid-template-columns:repeat(11,1fr)}.elementor-grid-tablet-12 .elementor-grid{grid-template-columns:repeat(12,1fr)}}@media (max-width:-1){.elementor-grid-mobile_extra-0 .elementor-grid{display:inline-block;width:100%;word-spacing:var(--grid-column-gap);margin-bottom:calc(-1 * var(--grid-row-gap))}.elementor-grid-mobile_extra-0 .elementor-grid .elementor-grid-item{display:inline-block;margin-bottom:var(--grid-row-gap);word-break:break-word}.elementor-grid-mobile_extra-1 .elementor-grid{grid-template-columns:repeat(1,1fr)}.elementor-grid-mobile_extra-2 .elementor-grid{grid-template-columns:repeat(2,1fr)}.elementor-grid-mobile_extra-3 .elementor-grid{grid-template-columns:repeat(3,1fr)}.elementor-grid-mobile_extra-4 .elementor-grid{grid-template-columns:repeat(4,1fr)}.elementor-grid-mobile_extra-5 .elementor-grid{grid-template-columns:repeat(5,1fr)}.elementor-grid-mobile_extra-6 .elementor-grid{grid-template-columns:repeat(6,1fr)}.elementor-grid-mobile_extra-7 .elementor-grid{grid-template-columns:repeat(7,1fr)}.elementor-grid-mobile_extra-8 .elementor-grid{grid-template-columns:repeat(8,1fr)}.elementor-grid-mobile_extra-9 .elementor-grid{grid-template-columns:repeat(9,1fr)}.elementor-grid-mobile_extra-10 .elementor-grid{grid-template-columns:repeat(10,1fr)}.elementor-grid-mobile_extra-11 .elementor-grid{grid-template-columns:repeat(11,1fr)}.elementor-grid-mobile_extra-12 .elementor-grid{grid-template-columns:repeat(12,1fr)}}@media (max-width:767px){.elementor-grid-mobile-0 .elementor-grid{display:inline-block;width:100%;word-spacing:var(--grid-column-gap);margin-bottom:calc(-1 * var(--grid-row-gap))}.elementor-grid-mobile-0 .elementor-grid .elementor-grid-item{display:inline-block;margin-bottom:var(--grid-row-gap);word-break:break-word}.elementor-grid-mobile-1 .elementor-grid{grid-template-columns:repeat(1,1fr)}.elementor-grid-mobile-2 .elementor-grid{grid-template-columns:repeat(2,1fr)}.elementor-grid-mobile-3 .elementor-grid{grid-template-columns:repeat(3,1fr)}.elementor-grid-mobile-4 .elementor-grid{grid-template-columns:repeat(4,1fr)}.elementor-grid-mobile-5 .elementor-grid{grid-template-columns:repeat(5,1fr)}.elementor-grid-mobile-6 .elementor-grid{grid-template-columns:repeat(6,1fr)}.elementor-grid-mobile-7 .elementor-grid{grid-template-columns:repeat(7,1fr)}.elementor-grid-mobile-8 .elementor-grid{grid-template-columns:repeat(8,1fr)}.elementor-grid-mobile-9 .elementor-grid{grid-template-columns:repeat(9,1fr)}.elementor-grid-mobile-10 .elementor-grid{grid-template-columns:repeat(10,1fr)}.elementor-grid-mobile-11 .elementor-grid{grid-template-columns:repeat(11,1fr)}.elementor-grid-mobile-12 .elementor-grid{grid-template-columns:repeat(12,1fr)}}@media (min-width:1025px){#elementor-device-mode:after{content:"desktop"}}@media (min-width:-1){#elementor-device-mode:after{content:"widescreen"}}@media (max-width:-1){#elementor-device-mode:after{content:"laptop";content:"tablet_extra"}}@media (max-width:1024px){#elementor-device-mode:after{content:"tablet"}}@media (max-width:-1){#elementor-device-mode:after{content:"mobile_extra"}}@media (max-width:767px){#elementor-device-mode:after{content:"mobile"}}.e-con{--border-radius:0;--border-block-start-width:0px;--border-inline-end-width:0px;--border-block-end-width:0px;--border-inline-start-width:0px;--border-style:initial;--border-color:initial;--container-widget-height:initial;--container-widget-flex-grow:0;--container-widget-align-self:initial;--content-width:min(100%,var(--container-max-width,1140px));--width:100%;--min-height:initial;--height:auto;--text-align:initial;--margin-block-start:0px;--margin-inline-end:0px;--margin-block-end:0px;--margin-inline-start:0px;--padding-block-start:var(--container-default-padding-block-start,10px);--padding-inline-end:var(--container-default-padding-inline-end,10px);--padding-block-end:var(--container-default-padding-block-end,10px);--padding-inline-start:var(--container-default-padding-inline-start,10px);--position:relative;--z-index:revert;--overflow:visible;--gap:var(--widgets-spacing,20px);--overlay-mix-blend-mode:initial;--overlay-opacity:1;--overlay-transition:0.3s;--e-con-grid-template-columns:repeat(3,1fr);--e-con-grid-template-rows:repeat(2,1fr);position:var(--position);width:var(--width);min-width:0;min-height:var(--min-height);height:var(--height);border-radius:var(--border-radius);margin-block-start:var(--bc-margin-block-start,var(--margin-block-start));margin-inline-end:var(--bc-margin-inline-end,var(--margin-inline-end));margin-block-end:var(--bc-margin-block-end,var(--margin-block-end));margin-inline-start:var(--bc-margin-inline-start,var(--margin-inline-start));padding-inline-start:var(--bc-padding-inline-start,var(--padding-inline-start));padding-inline-end:var(--bc-padding-inline-end,var(--padding-inline-end));z-index:var(--z-index);overflow:var(--overflow);transition:background var(--background-transition,.3s),border var(--border-transition,.3s),box-shadow var(--border-transition,.3s),transform var(--e-con-transform-transition-duration,.4s)}.e-con.e-flex{--flex-direction:column;--flex-basis:auto;--flex-grow:0;--flex-shrink:1;flex:var(--flex-grow) var(--flex-shrink) var(--flex-basis)}.e-con-full,.e-con>.e-con-inner{text-align:var(--text-align);padding-block-start:var(--bc-padding-block-start,var(--padding-block-start));padding-block-end:var(--bc-padding-block-end,var(--padding-block-end))}.e-con-full.e-flex,.e-con.e-flex>.e-con-inner{flex-direction:var(--flex-direction)}.e-con,.e-con>.e-con-inner{display:var(--display)}.e-con.e-grid{--grid-justify-content:start;--grid-align-content:start;--grid-auto-flow:row}.e-con.e-grid,.e-con.e-grid>.e-con-inner{grid-template-columns:var(--e-con-grid-template-columns);grid-template-rows:var(--e-con-grid-template-rows);justify-content:var(--grid-justify-content);align-content:var(--grid-align-content);grid-auto-flow:var(--grid-auto-flow);justify-items:var(--justify-items);align-items:var(--align-items)}.e-con-boxed.e-flex{flex-direction:column;flex-wrap:nowrap;justify-content:normal;align-items:normal;align-content:normal}.e-con-boxed.e-grid{justify-items:legacy;grid-template-columns:1fr;grid-template-rows:1fr}.e-con-boxed{text-align:initial;gap:initial}.e-con.e-flex>.e-con-inner{flex-wrap:var(--flex-wrap);justify-content:var(--justify-content);align-items:var(--align-items);align-content:var(--align-content);flex-basis:auto;flex-grow:1;flex-shrink:1;align-self:auto}.e-con.e-grid>.e-con-inner{justify-items:var(--justify-items);align-items:var(--align-items)}.e-con>.e-con-inner{gap:var(--gap);width:100%;max-width:var(--content-width);margin:0 auto;padding-inline-start:0;padding-inline-end:0;height:100%}:is(.elementor-section-wrap,[data-elementor-id])>.e-con{--margin-inline-end:auto;--margin-inline-start:auto;max-width:min(100%,var(--width))}.e-con .elementor-widget.elementor-widget{margin-block-end:0}.e-con:before,.e-con>.elementor-background-slideshow:before,.e-con>.elementor-motion-effects-container>.elementor-motion-effects-layer:before,:is(.e-con,.e-con>.e-con-inner)>.elementor-background-video-container:before{content:var(--background-overlay);display:block;position:absolute;mix-blend-mode:var(--overlay-mix-blend-mode);opacity:var(--overlay-opacity);transition:var(--overlay-transition,.3s);border-radius:var(--border-radius);border-style:var(--border-style);border-color:var(--border-color);border-block-start-width:var(--border-block-start-width);border-inline-end-width:var(--border-inline-end-width);border-block-end-width:var(--border-block-end-width);border-inline-start-width:var(--border-inline-start-width);top:calc(0px - var(--border-block-start-width));left:calc(0px - var(--border-inline-start-width));width:max(100% + var(--border-inline-end-width) + var(--border-inline-start-width),100%);height:max(100% + var(--border-block-start-width) + var(--border-block-end-width),100%)}.e-con:before{transition:background var(--overlay-transition,.3s),border-radius var(--border-transition,.3s),opacity var(--overlay-transition,.3s)}.e-con>.elementor-background-slideshow,:is(.e-con,.e-con>.e-con-inner)>.elementor-background-video-container{border-radius:var(--border-radius);border-style:var(--border-style);border-color:var(--border-color);border-block-start-width:var(--border-block-start-width);border-inline-end-width:var(--border-inline-end-width);border-block-end-width:var(--border-block-end-width);border-inline-start-width:var(--border-inline-start-width);top:calc(0px - var(--border-block-start-width));left:calc(0px - var(--border-inline-start-width));width:max(100% + var(--border-inline-end-width) + var(--border-inline-start-width),100%);height:max(100% + var(--border-block-start-width) + var(--border-block-end-width),100%)}@media (max-width:767px){:is(.e-con,.e-con>.e-con-inner)>.elementor-background-video-container.elementor-hidden-phone{display:none}}:is(.e-con,.e-con>.e-con-inner)>.elementor-background-video-container:before{z-index:1}:is(.e-con,.e-con>.e-con-inner)>.elementor-background-slideshow:before{z-index:2}.e-con .elementor-widget{min-width:0}.e-con .elementor-widget-empty,.e-con .elementor-widget-google_maps,.e-con .elementor-widget-video,.e-con .elementor-widget.e-widget-swiper{width:100%}.e-con>.e-con-inner>.elementor-widget>.elementor-widget-container,.e-con>.elementor-widget>.elementor-widget-container{height:100%}.e-con.e-con>.e-con-inner>.elementor-widget,.elementor.elementor .e-con>.elementor-widget{max-width:100%}@media (max-width:767px){.e-con.e-flex{--width:100%;--flex-wrap:wrap}}.e-con{--bc-margin-block-start:var(--margin-top);--bc-margin-block-end:var(--margin-bottom);--bc-margin-inline-start:var(--margin-left);--bc-margin-inline-end:var(--margin-right);--bc-padding-block-start:var(--padding-top);--bc-padding-block-end:var(--padding-bottom);--bc-padding-inline-start:var(--padding-left);--bc-padding-inline-end:var(--padding-right)}[dir=rtl] .e-con{--bc-margin-inline-start:var(--margin-right);--bc-margin-inline-end:var(--margin-left);--bc-padding-inline-start:var(--padding-right);--bc-padding-inline-end:var(--padding-left)}.elementor-form-fields-wrapper{display:flex;flex-wrap:wrap}.elementor-form-fields-wrapper.elementor-labels-above .elementor-field-group .elementor-field-subgroup,.elementor-form-fields-wrapper.elementor-labels-above .elementor-field-group>.elementor-select-wrapper,.elementor-form-fields-wrapper.elementor-labels-above .elementor-field-group>input,.elementor-form-fields-wrapper.elementor-labels-above .elementor-field-group>textarea{flex-basis:100%;max-width:100%}.elementor-form-fields-wrapper.elementor-labels-inline>.elementor-field-group .elementor-select-wrapper,.elementor-form-fields-wrapper.elementor-labels-inline>.elementor-field-group>input{flex-grow:1}.elementor-field-group{flex-wrap:wrap;align-items:center}.elementor-field-group.elementor-field-type-submit{align-items:flex-end}.elementor-field-group .elementor-field-textual{width:100%;max-width:100%;border:1px solid #69727d;background-color:transparent;color:#1f2124;vertical-align:middle;flex-grow:1}.elementor-field-group .elementor-field-textual:focus{box-shadow:inset 0 0 0 1px rgba(0,0,0,.1);outline:0}.elementor-field-group .elementor-field-textual::-moz-placeholder{color:inherit;font-family:inherit;opacity:.6}.elementor-field-group .elementor-field-textual::placeholder{color:inherit;font-family:inherit;opacity:.6}.elementor-field-group .elementor-select-wrapper{display:flex;position:relative;width:100%}.elementor-field-group .elementor-select-wrapper select{-webkit-appearance:none;-moz-appearance:none;appearance:none;color:inherit;font-size:inherit;font-family:inherit;font-weight:inherit;font-style:inherit;text-transform:inherit;letter-spacing:inherit;line-height:inherit;flex-basis:100%;padding-right:20px}.elementor-field-group .elementor-select-wrapper:before{content:"\e92a";font-family:eicons;font-size:15px;position:absolute;top:50%;transform:translateY(-50%);right:10px;pointer-events:none;text-shadow:0 0 3px rgba(0,0,0,.3)}.elementor-field-group.elementor-field-type-select-multiple .elementor-select-wrapper:before{content:""}.elementor-field-subgroup{display:flex;flex-wrap:wrap}.elementor-field-subgroup .elementor-field-option label{display:inline-block}.elementor-field-subgroup.elementor-subgroup-inline .elementor-field-option{padding-right:10px}.elementor-field-subgroup:not(.elementor-subgroup-inline) .elementor-field-option{flex-basis:100%}.elementor-field-type-acceptance .elementor-field-subgroup .elementor-field-option input,.elementor-field-type-acceptance .elementor-field-subgroup .elementor-field-option label,.elementor-field-type-checkbox .elementor-field-subgroup .elementor-field-option input,.elementor-field-type-checkbox .elementor-field-subgroup .elementor-field-option label,.elementor-field-type-radio .elementor-field-subgroup .elementor-field-option input,.elementor-field-type-radio .elementor-field-subgroup .elementor-field-option label{display:inline}.elementor-field-label{cursor:pointer}.elementor-mark-required .elementor-field-label:after{content:"*";color:red;padding-left:.2em}.elementor-field-textual{line-height:1.4;font-size:15px;min-height:40px;padding:5px 14px;border-radius:3px}.elementor-field-textual.elementor-size-xs{font-size:13px;min-height:33px;padding:4px 12px;border-radius:2px}.elementor-field-textual.elementor-size-md{font-size:16px;min-height:47px;padding:6px 16px;border-radius:4px}.elementor-field-textual.elementor-size-lg{font-size:18px;min-height:59px;padding:7px 20px;border-radius:5px}.elementor-field-textual.elementor-size-xl{font-size:20px;min-height:72px;padding:8px 24px;border-radius:6px}.elementor-button-align-stretch .elementor-field-type-submit:not(.e-form__buttons__wrapper) .elementor-button{flex-basis:100%}.elementor-button-align-stretch .e-form__buttons__wrapper{flex-basis:50%;flex-grow:1}.elementor-button-align-stretch .e-form__buttons__wrapper__button{flex-basis:100%}.elementor-button-align-center .e-form__buttons,.elementor-button-align-center .elementor-field-type-submit{justify-content:center}.elementor-button-align-start .e-form__buttons,.elementor-button-align-start .elementor-field-type-submit{justify-content:flex-start}.elementor-button-align-end .e-form__buttons,.elementor-button-align-end .elementor-field-type-submit{justify-content:flex-end}.elementor-button-align-center .elementor-field-type-submit:not(.e-form__buttons__wrapper) .elementor-button,.elementor-button-align-end .elementor-field-type-submit:not(.e-form__buttons__wrapper) .elementor-button,.elementor-button-align-start .elementor-field-type-submit:not(.e-form__buttons__wrapper) .elementor-button{flex-basis:auto}.elementor-button-align-center .e-form__buttons__wrapper,.elementor-button-align-end .e-form__buttons__wrapper,.elementor-button-align-start .e-form__buttons__wrapper{flex-grow:0}.elementor-button-align-center .e-form__buttons__wrapper,.elementor-button-align-center .e-form__buttons__wrapper__button,.elementor-button-align-end .e-form__buttons__wrapper,.elementor-button-align-end .e-form__buttons__wrapper__button,.elementor-button-align-start .e-form__buttons__wrapper,.elementor-button-align-start .e-form__buttons__wrapper__button{flex-basis:auto}@media screen and (max-width:1024px){.elementor-tablet-button-align-stretch .elementor-field-type-submit:not(.e-form__buttons__wrapper) .elementor-button{flex-basis:100%}.elementor-tablet-button-align-stretch .e-form__buttons__wrapper{flex-basis:50%;flex-grow:1}.elementor-tablet-button-align-stretch .e-form__buttons__wrapper__button{flex-basis:100%}.elementor-tablet-button-align-center .e-form__buttons,.elementor-tablet-button-align-center .elementor-field-type-submit{justify-content:center}.elementor-tablet-button-align-start .e-form__buttons,.elementor-tablet-button-align-start .elementor-field-type-submit{justify-content:flex-start}.elementor-tablet-button-align-end .e-form__buttons,.elementor-tablet-button-align-end .elementor-field-type-submit{justify-content:flex-end}.elementor-tablet-button-align-center .elementor-field-type-submit:not(.e-form__buttons__wrapper) .elementor-button,.elementor-tablet-button-align-end .elementor-field-type-submit:not(.e-form__buttons__wrapper) .elementor-button,.elementor-tablet-button-align-start .elementor-field-type-submit:not(.e-form__buttons__wrapper) .elementor-button{flex-basis:auto}.elementor-tablet-button-align-center .e-form__buttons__wrapper,.elementor-tablet-button-align-end .e-form__buttons__wrapper,.elementor-tablet-button-align-start .e-form__buttons__wrapper{flex-grow:0}.elementor-tablet-button-align-center .e-form__buttons__wrapper,.elementor-tablet-button-align-center .e-form__buttons__wrapper__button,.elementor-tablet-button-align-end .e-form__buttons__wrapper,.elementor-tablet-button-align-end .e-form__buttons__wrapper__button,.elementor-tablet-button-align-start .e-form__buttons__wrapper,.elementor-tablet-button-align-start .e-form__buttons__wrapper__button{flex-basis:auto}}@media screen and (max-width:767px){.elementor-mobile-button-align-stretch .elementor-field-type-submit:not(.e-form__buttons__wrapper) .elementor-button{flex-basis:100%}.elementor-mobile-button-align-stretch .e-form__buttons__wrapper{flex-basis:50%;flex-grow:1}.elementor-mobile-button-align-stretch .e-form__buttons__wrapper__button{flex-basis:100%}.elementor-mobile-button-align-center .e-form__buttons,.elementor-mobile-button-align-center .elementor-field-type-submit{justify-content:center}.elementor-mobile-button-align-start .e-form__buttons,.elementor-mobile-button-align-start .elementor-field-type-submit{justify-content:flex-start}.elementor-mobile-button-align-end .e-form__buttons,.elementor-mobile-button-align-end .elementor-field-type-submit{justify-content:flex-end}.elementor-mobile-button-align-center .elementor-field-type-submit:not(.e-form__buttons__wrapper) .elementor-button,.elementor-mobile-button-align-end .elementor-field-type-submit:not(.e-form__buttons__wrapper) .elementor-button,.elementor-mobile-button-align-start .elementor-field-type-submit:not(.e-form__buttons__wrapper) .elementor-button{flex-basis:auto}.elementor-mobile-button-align-center .e-form__buttons__wrapper,.elementor-mobile-button-align-end .e-form__buttons__wrapper,.elementor-mobile-button-align-start .e-form__buttons__wrapper{flex-grow:0}.elementor-mobile-button-align-center .e-form__buttons__wrapper,.elementor-mobile-button-align-center .e-form__buttons__wrapper__button,.elementor-mobile-button-align-end .e-form__buttons__wrapper,.elementor-mobile-button-align-end .e-form__buttons__wrapper__button,.elementor-mobile-button-align-start .e-form__buttons__wrapper,.elementor-mobile-button-align-start .e-form__buttons__wrapper__button{flex-basis:auto}}.elementor-error .elementor-field{border-color:#d9534f}.elementor-error .help-inline{color:#d9534f;font-size:.9em}.elementor-message{margin:10px 0;font-size:1em;line-height:1}.elementor-message:before{content:"\e90e";display:inline-block;font-family:eicons;font-weight:400;font-style:normal;vertical-align:middle;margin-right:5px}.elementor-message.elementor-message-danger{color:#d9534f}.elementor-message.elementor-message-danger:before{content:"\e87f"}.elementor-message.form-message-success{color:#5cb85c}.elementor-form .elementor-button{padding-top:0;padding-bottom:0;border:none}.elementor-form .elementor-button>span{display:flex;justify-content:center}.elementor-form .elementor-button.elementor-size-xs{min-height:33px}.elementor-form .elementor-button.elementor-size-sm{min-height:40px}.elementor-form .elementor-button.elementor-size-md{min-height:47px}.elementor-form .elementor-button.elementor-size-lg{min-height:59px}.elementor-form .elementor-button.elementor-size-xl{min-height:72px}.elementor-element .elementor-widget-container{transition:background .3s,border .3s,border-radius .3s,box-shadow .3s,transform var(--e-transform-transition-duration,.4s)}.elementor-button{display:inline-block;line-height:1;background-color:#69727d;font-size:15px;padding:12px 24px;border-radius:3px;color:#fff;fill:#fff;text-align:center;transition:all .3s}.elementor-button:focus,.elementor-button:hover,.elementor-button:visited{color:#fff}.elementor-button-content-wrapper{display:flex;justify-content:center}.elementor-button-icon{flex-grow:0;order:5}.elementor-button-icon svg{width:1em;height:auto}.elementor-button-icon .e-font-icon-svg{height:1em}.elementor-button-text{flex-grow:1;order:10;display:inline-block}.elementor-button.elementor-size-xs{font-size:13px;padding:10px 20px;border-radius:2px}.elementor-button.elementor-size-md{font-size:16px;padding:15px 30px;border-radius:4px}.elementor-button.elementor-size-lg{font-size:18px;padding:20px 40px;border-radius:5px}.elementor-button.elementor-size-xl{font-size:20px;padding:25px 50px;border-radius:6px}.elementor-button .elementor-align-icon-right{margin-left:5px;order:15}.elementor-button .elementor-align-icon-left{margin-right:5px;order:5}.elementor-button span{text-decoration:inherit}.elementor-element.elementor-button-info .elementor-button{background-color:#5bc0de}.elementor-element.elementor-button-success .elementor-button{background-color:#5cb85c}.elementor-element.elementor-button-warning .elementor-button{background-color:#f0ad4e}.elementor-element.elementor-button-danger .elementor-button{background-color:#d9534f}.elementor-widget-button .elementor-button .elementor-button-info{background-color:#5bc0de}.elementor-widget-button .elementor-button .elementor-button-success{background-color:#5cb85c}.elementor-widget-button .elementor-button .elementor-button-warning{background-color:#f0ad4e}.elementor-widget-button .elementor-button .elementor-button-danger{background-color:#d9534f}.elementor-tab-title a{color:inherit}.elementor-view-stacked .elementor-icon{padding:.5em;background-color:#69727d;color:#fff;fill:#fff}.elementor-view-framed .elementor-icon{padding:.5em;color:#69727d;border:3px solid #69727d;background-color:transparent}.elementor-icon{display:inline-block;line-height:1;transition:all .3s;color:#69727d;font-size:50px;text-align:center}.elementor-icon:hover{color:#69727d}.elementor-icon i,.elementor-icon svg{width:1em;height:1em;position:relative;display:block}.elementor-icon i:before,.elementor-icon svg:before{position:absolute;left:50%;transform:translateX(-50%)}.elementor-icon i.fad{width:auto}.elementor-shape-circle .elementor-icon{border-radius:50%}.e-transform .elementor-widget-container{transform:perspective(var(--e-transform-perspective,0)) rotate(var(--e-transform-rotateZ,0)) rotateX(var(--e-transform-rotateX,0)) rotateY(var(--e-transform-rotateY,0)) translate(var(--e-transform-translate,0)) translateX(var(--e-transform-translateX,0)) translateY(var(--e-transform-translateY,0)) scaleX(calc(var(--e-transform-flipX, 1) * var(--e-transform-scaleX, var(--e-transform-scale, 1)))) scaleY(calc(var(--e-transform-flipY, 1) * var(--e-transform-scaleY, var(--e-transform-scale, 1)))) skewX(var(--e-transform-skewX,0)) skewY(var(--e-transform-skewY,0));transform-origin:var(--e-transform-origin-y) var(--e-transform-origin-x)}.e-con.e-transform{transform:perspective(var(--e-con-transform-perspective,0)) rotate(var(--e-con-transform-rotateZ,0)) rotateX(var(--e-con-transform-rotateX,0)) rotateY(var(--e-con-transform-rotateY,0)) translate(var(--e-con-transform-translate,0)) translateX(var(--e-con-transform-translateX,0)) translateY(var(--e-con-transform-translateY,0)) scaleX(calc(var(--e-con-transform-flipX, 1) * var(--e-con-transform-scaleX, var(--e-con-transform-scale, 1)))) scaleY(calc(var(--e-con-transform-flipY, 1) * var(--e-con-transform-scaleY, var(--e-con-transform-scale, 1)))) skewX(var(--e-con-transform-skewX,0)) skewY(var(--e-con-transform-skewY,0));transform-origin:var(--e-con-transform-origin-y) var(--e-con-transform-origin-x)}.elementor-element,.elementor-lightbox{--swiper-theme-color:#000;--swiper-navigation-size:44px;--swiper-pagination-bullet-size:6px;--swiper-pagination-bullet-horizontal-gap:6px}.elementor-element .swiper-container .swiper-slide figure,.elementor-element .swiper .swiper-slide figure,.elementor-lightbox .swiper-container .swiper-slide figure,.elementor-lightbox .swiper .swiper-slide figure{line-height:0}.elementor-element .swiper-container .elementor-lightbox-content-source,.elementor-element .swiper .elementor-lightbox-content-source,.elementor-lightbox .swiper-container .elementor-lightbox-content-source,.elementor-lightbox .swiper .elementor-lightbox-content-source{display:none}.elementor-element .swiper-container .elementor-swiper-button,.elementor-element .swiper-container~.elementor-swiper-button,.elementor-element .swiper .elementor-swiper-button,.elementor-element .swiper~.elementor-swiper-button,.elementor-lightbox .swiper-container .elementor-swiper-button,.elementor-lightbox .swiper-container~.elementor-swiper-button,.elementor-lightbox .swiper .elementor-swiper-button,.elementor-lightbox .swiper~.elementor-swiper-button{position:absolute;display:inline-flex;z-index:1;cursor:pointer;font-size:25px;color:hsla(0,0%,93.3%,.9);top:50%;transform:translateY(-50%)}.elementor-element .swiper-container .elementor-swiper-button svg,.elementor-element .swiper-container~.elementor-swiper-button svg,.elementor-element .swiper .elementor-swiper-button svg,.elementor-element .swiper~.elementor-swiper-button svg,.elementor-lightbox .swiper-container .elementor-swiper-button svg,.elementor-lightbox .swiper-container~.elementor-swiper-button svg,.elementor-lightbox .swiper .elementor-swiper-button svg,.elementor-lightbox .swiper~.elementor-swiper-button svg{fill:hsla(0,0%,93.3%,.9);height:1em;width:1em}.elementor-element .swiper-container .elementor-swiper-button-prev,.elementor-element .swiper-container~.elementor-swiper-button-prev,.elementor-element .swiper .elementor-swiper-button-prev,.elementor-element .swiper~.elementor-swiper-button-prev,.elementor-lightbox .swiper-container .elementor-swiper-button-prev,.elementor-lightbox .swiper-container~.elementor-swiper-button-prev,.elementor-lightbox .swiper .elementor-swiper-button-prev,.elementor-lightbox .swiper~.elementor-swiper-button-prev{left:10px}.elementor-element .swiper-container .elementor-swiper-button-next,.elementor-element .swiper-container~.elementor-swiper-button-next,.elementor-element .swiper .elementor-swiper-button-next,.elementor-element .swiper~.elementor-swiper-button-next,.elementor-lightbox .swiper-container .elementor-swiper-button-next,.elementor-lightbox .swiper-container~.elementor-swiper-button-next,.elementor-lightbox .swiper .elementor-swiper-button-next,.elementor-lightbox .swiper~.elementor-swiper-button-next{right:10px}.elementor-element .swiper-container .elementor-swiper-button.swiper-button-disabled,.elementor-element .swiper-container~.elementor-swiper-button.swiper-button-disabled,.elementor-element .swiper .elementor-swiper-button.swiper-button-disabled,.elementor-element .swiper~.elementor-swiper-button.swiper-button-disabled,.elementor-lightbox .swiper-container .elementor-swiper-button.swiper-button-disabled,.elementor-lightbox .swiper-container~.elementor-swiper-button.swiper-button-disabled,.elementor-lightbox .swiper .elementor-swiper-button.swiper-button-disabled,.elementor-lightbox .swiper~.elementor-swiper-button.swiper-button-disabled{opacity:.3}.elementor-element .swiper-container .swiper-image-stretch .swiper-slide .swiper-slide-image,.elementor-element .swiper .swiper-image-stretch .swiper-slide .swiper-slide-image,.elementor-lightbox .swiper-container .swiper-image-stretch .swiper-slide .swiper-slide-image,.elementor-lightbox .swiper .swiper-image-stretch .swiper-slide .swiper-slide-image{width:100%}.elementor-element .swiper-container .swiper-horizontal>.swiper-pagination-bullets,.elementor-element .swiper-container .swiper-pagination-bullets.swiper-pagination-horizontal,.elementor-element .swiper-container .swiper-pagination-custom,.elementor-element .swiper-container .swiper-pagination-fraction,.elementor-element .swiper-container~.swiper-pagination-bullets.swiper-pagination-horizontal,.elementor-element .swiper-container~.swiper-pagination-custom,.elementor-element .swiper-container~.swiper-pagination-fraction,.elementor-element .swiper .swiper-horizontal>.swiper-pagination-bullets,.elementor-element .swiper .swiper-pagination-bullets.swiper-pagination-horizontal,.elementor-element .swiper .swiper-pagination-custom,.elementor-element .swiper .swiper-pagination-fraction,.elementor-element .swiper~.swiper-pagination-bullets.swiper-pagination-horizontal,.elementor-element .swiper~.swiper-pagination-custom,.elementor-element .swiper~.swiper-pagination-fraction,.elementor-lightbox .swiper-container .swiper-horizontal>.swiper-pagination-bullets,.elementor-lightbox .swiper-container .swiper-pagination-bullets.swiper-pagination-horizontal,.elementor-lightbox .swiper-container .swiper-pagination-custom,.elementor-lightbox .swiper-container .swiper-pagination-fraction,.elementor-lightbox .swiper-container~.swiper-pagination-bullets.swiper-pagination-horizontal,.elementor-lightbox .swiper-container~.swiper-pagination-custom,.elementor-lightbox .swiper-container~.swiper-pagination-fraction,.elementor-lightbox .swiper .swiper-horizontal>.swiper-pagination-bullets,.elementor-lightbox .swiper .swiper-pagination-bullets.swiper-pagination-horizontal,.elementor-lightbox .swiper .swiper-pagination-custom,.elementor-lightbox .swiper .swiper-pagination-fraction,.elementor-lightbox .swiper~.swiper-pagination-bullets.swiper-pagination-horizontal,.elementor-lightbox .swiper~.swiper-pagination-custom,.elementor-lightbox .swiper~.swiper-pagination-fraction{bottom:5px}.elementor-element .swiper-container.swiper-cube .elementor-swiper-button,.elementor-element .swiper-container.swiper-cube~.elementor-swiper-button,.elementor-element .swiper.swiper-cube .elementor-swiper-button,.elementor-element .swiper.swiper-cube~.elementor-swiper-button,.elementor-lightbox .swiper-container.swiper-cube .elementor-swiper-button,.elementor-lightbox .swiper-container.swiper-cube~.elementor-swiper-button,.elementor-lightbox .swiper.swiper-cube .elementor-swiper-button,.elementor-lightbox .swiper.swiper-cube~.elementor-swiper-button{transform:translate3d(0,-50%,1px)}.elementor-element :where(.swiper-container-horizontal)~.swiper-pagination-bullets,.elementor-lightbox :where(.swiper-container-horizontal)~.swiper-pagination-bullets{bottom:5px;left:0;width:100%}.elementor-element :where(.swiper-container-horizontal)~.swiper-pagination-bullets .swiper-pagination-bullet,.elementor-lightbox :where(.swiper-container-horizontal)~.swiper-pagination-bullets .swiper-pagination-bullet{margin:0 var(--swiper-pagination-bullet-horizontal-gap,4px)}.elementor-element :where(.swiper-container-horizontal)~.swiper-pagination-progressbar,.elementor-lightbox :where(.swiper-container-horizontal)~.swiper-pagination-progressbar{width:100%;height:4px;left:0;top:0}.elementor-element.elementor-pagination-position-outside .swiper,.elementor-element.elementor-pagination-position-outside .swiper-container,.elementor-lightbox.elementor-pagination-position-outside .swiper,.elementor-lightbox.elementor-pagination-position-outside .swiper-container{padding-bottom:30px}.elementor-element.elementor-pagination-position-outside .swiper-container .elementor-swiper-button,.elementor-element.elementor-pagination-position-outside .swiper-container~.elementor-swiper-button,.elementor-element.elementor-pagination-position-outside .swiper .elementor-swiper-button,.elementor-element.elementor-pagination-position-outside .swiper~.elementor-swiper-button,.elementor-lightbox.elementor-pagination-position-outside .swiper-container .elementor-swiper-button,.elementor-lightbox.elementor-pagination-position-outside .swiper-container~.elementor-swiper-button,.elementor-lightbox.elementor-pagination-position-outside .swiper .elementor-swiper-button,.elementor-lightbox.elementor-pagination-position-outside .swiper~.elementor-swiper-button{top:calc(50% - 30px / 2)}.elementor-element .elementor-swiper,.elementor-lightbox .elementor-swiper{position:relative}.elementor-element .elementor-main-swiper,.elementor-lightbox .elementor-main-swiper{position:static}.elementor-element.elementor-arrows-position-outside .swiper,.elementor-element.elementor-arrows-position-outside .swiper-container,.elementor-lightbox.elementor-arrows-position-outside .swiper,.elementor-lightbox.elementor-arrows-position-outside .swiper-container{width:calc(100% - 60px)}.elementor-element.elementor-arrows-position-outside .swiper-container .elementor-swiper-button-prev,.elementor-element.elementor-arrows-position-outside .swiper-container~.elementor-swiper-button-prev,.elementor-element.elementor-arrows-position-outside .swiper .elementor-swiper-button-prev,.elementor-element.elementor-arrows-position-outside .swiper~.elementor-swiper-button-prev,.elementor-lightbox.elementor-arrows-position-outside .swiper-container .elementor-swiper-button-prev,.elementor-lightbox.elementor-arrows-position-outside .swiper-container~.elementor-swiper-button-prev,.elementor-lightbox.elementor-arrows-position-outside .swiper .elementor-swiper-button-prev,.elementor-lightbox.elementor-arrows-position-outside .swiper~.elementor-swiper-button-prev{left:0}.elementor-element.elementor-arrows-position-outside .swiper-container .elementor-swiper-button-next,.elementor-element.elementor-arrows-position-outside .swiper-container~.elementor-swiper-button-next,.elementor-element.elementor-arrows-position-outside .swiper .elementor-swiper-button-next,.elementor-element.elementor-arrows-position-outside .swiper~.elementor-swiper-button-next,.elementor-lightbox.elementor-arrows-position-outside .swiper-container .elementor-swiper-button-next,.elementor-lightbox.elementor-arrows-position-outside .swiper-container~.elementor-swiper-button-next,.elementor-lightbox.elementor-arrows-position-outside .swiper .elementor-swiper-button-next,.elementor-lightbox.elementor-arrows-position-outside .swiper~.elementor-swiper-button-next{right:0}.elementor-lightbox{--lightbox-ui-color:hsla(0,0%,93.3%,0.9);--lightbox-ui-color-hover:#fff;--lightbox-text-color:var(--lightbox-ui-color);--lightbox-header-icons-size:20px;--lightbox-navigation-icons-size:25px}.elementor-lightbox:not(.elementor-popup-modal) .dialog-header,.elementor-lightbox:not(.elementor-popup-modal) .dialog-message{text-align:center}.elementor-lightbox .dialog-header{display:none}.elementor-lightbox .dialog-widget-content{background:none;box-shadow:none;width:100%;height:100%}.elementor-lightbox .dialog-message{animation-duration:.3s;height:100%}.elementor-lightbox .dialog-message.dialog-lightbox-message{padding:0}.elementor-lightbox .dialog-lightbox-close-button{cursor:pointer;position:absolute;font-size:var(--lightbox-header-icons-size);right:.75em;margin-top:13px;padding:.25em;z-index:2;line-height:1;display:flex}.elementor-lightbox .dialog-lightbox-close-button svg{height:1em;width:1em}.elementor-lightbox .dialog-lightbox-close-button,.elementor-lightbox .elementor-swiper-button{color:var(--lightbox-ui-color);transition:all .3s;opacity:1}.elementor-lightbox .dialog-lightbox-close-button svg,.elementor-lightbox .elementor-swiper-button svg{fill:var(--lightbox-ui-color)}.elementor-lightbox .dialog-lightbox-close-button:hover,.elementor-lightbox .elementor-swiper-button:hover{color:var(--lightbox-ui-color-hover)}.elementor-lightbox .dialog-lightbox-close-button:hover svg,.elementor-lightbox .elementor-swiper-button:hover svg{fill:var(--lightbox-ui-color-hover)}.elementor-lightbox .swiper,.elementor-lightbox .swiper-container{height:100%}.elementor-lightbox .elementor-lightbox-item{display:flex;align-items:center;justify-content:center;position:relative;padding:70px;box-sizing:border-box;height:100%;margin:auto}@media (max-width:767px){.elementor-lightbox .elementor-lightbox-item{padding:70px 0}}.elementor-lightbox .elementor-lightbox-image{max-height:100%;-webkit-user-select:none;-moz-user-select:none;user-select:none}.elementor-lightbox .elementor-lightbox-image,.elementor-lightbox .elementor-lightbox-image:hover{opacity:1;filter:none;border:none}.elementor-lightbox .elementor-lightbox-image{box-shadow:0 0 30px rgba(0,0,0,.3),0 0 8px -5px rgba(0,0,0,.3);border-radius:2px}.elementor-lightbox .elementor-video-container{width:100%;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.elementor-lightbox .elementor-video-container .elementor-video-landscape,.elementor-lightbox .elementor-video-container .elementor-video-portrait,.elementor-lightbox .elementor-video-container .elementor-video-square{width:100%;height:100%;margin:auto}.elementor-lightbox .elementor-video-container .elementor-video-landscape iframe,.elementor-lightbox .elementor-video-container .elementor-video-portrait iframe,.elementor-lightbox .elementor-video-container .elementor-video-square iframe{border:0;background-color:#000}.elementor-lightbox .elementor-video-container .elementor-video-landscape iframe,.elementor-lightbox .elementor-video-container .elementor-video-landscape video,.elementor-lightbox .elementor-video-container .elementor-video-portrait iframe,.elementor-lightbox .elementor-video-container .elementor-video-portrait video,.elementor-lightbox .elementor-video-container .elementor-video-square iframe,.elementor-lightbox .elementor-video-container .elementor-video-square video{aspect-ratio:var(--video-aspect-ratio,1.77777)}@supports not (aspect-ratio:1/1){.elementor-lightbox .elementor-video-container .elementor-video-landscape,.elementor-lightbox .elementor-video-container .elementor-video-portrait,.elementor-lightbox .elementor-video-container .elementor-video-square{position:relative;overflow:hidden;height:0;padding-bottom:calc(100% / var(--video-aspect-ratio, 1.77777))}.elementor-lightbox .elementor-video-container .elementor-video-landscape iframe,.elementor-lightbox .elementor-video-container .elementor-video-landscape video,.elementor-lightbox .elementor-video-container .elementor-video-portrait iframe,.elementor-lightbox .elementor-video-container .elementor-video-portrait video,.elementor-lightbox .elementor-video-container .elementor-video-square iframe,.elementor-lightbox .elementor-video-container .elementor-video-square video{position:absolute;top:0;right:0;bottom:0;left:0}}.elementor-lightbox .elementor-video-container .elementor-video-square iframe,.elementor-lightbox .elementor-video-container .elementor-video-square video{width:min(90vh,90vw);height:min(90vh,90vw)}.elementor-lightbox .elementor-video-container .elementor-video-landscape iframe,.elementor-lightbox .elementor-video-container .elementor-video-landscape video{width:100%;max-height:90vh}.elementor-lightbox .elementor-video-container .elementor-video-portrait iframe,.elementor-lightbox .elementor-video-container .elementor-video-portrait video{height:100%;max-width:90vw}@media (min-width:1025px){.elementor-lightbox .elementor-video-container .elementor-video-landscape{width:85vw;max-height:85vh}.elementor-lightbox .elementor-video-container .elementor-video-portrait{height:85vh;max-width:85vw}}@media (max-width:1024px){.elementor-lightbox .elementor-video-container .elementor-video-landscape{width:95vw;max-height:95vh}.elementor-lightbox .elementor-video-container .elementor-video-portrait{height:95vh;max-width:95vw}}.elementor-lightbox .swiper-container .elementor-swiper-button-prev,.elementor-lightbox .swiper .elementor-swiper-button-prev{left:0}.elementor-lightbox .swiper-container .elementor-swiper-button-next,.elementor-lightbox .swiper .elementor-swiper-button-next{right:0}.elementor-lightbox .swiper-container .swiper-pagination-fraction,.elementor-lightbox .swiper .swiper-pagination-fraction{width:-moz-max-content;width:max-content;color:#fff}.elementor-lightbox .elementor-swiper-button:focus{outline-width:1px}.elementor-lightbox .elementor-swiper-button-next,.elementor-lightbox .elementor-swiper-button-prev{height:100%;display:flex;align-items:center;width:15%;justify-content:center;font-size:var(--lightbox-navigation-icons-size)}@media (max-width:767px){.elementor-lightbox .elementor-swiper-button:focus{outline:none}.elementor-lightbox .elementor-swiper-button-next,.elementor-lightbox .elementor-swiper-button-prev{width:20%}.elementor-lightbox .elementor-swiper-button-next i,.elementor-lightbox .elementor-swiper-button-prev i{padding:10px;background-color:rgba(0,0,0,.5)}.elementor-lightbox .elementor-swiper-button-prev{left:0;justify-content:flex-start}.elementor-lightbox .elementor-swiper-button-next{right:0;justify-content:flex-end}}.elementor-slideshow__counter{color:currentColor;font-size:.75em;width:-moz-max-content;width:max-content}.elementor-slideshow__footer,.elementor-slideshow__header{position:absolute;left:0;width:100%;padding:15px 20px;transition:.3s}.elementor-slideshow__footer{color:var(--lightbox-text-color)}.elementor-slideshow__header{color:var(--lightbox-ui-color);display:flex;flex-direction:row-reverse;font-size:var(--lightbox-header-icons-size);padding-left:1em;padding-right:2.6em;top:0;align-items:center;z-index:10}.elementor-slideshow__header>i,.elementor-slideshow__header>svg{cursor:pointer;padding:.25em;margin:0 .35em}.elementor-slideshow__header>i{font-size:inherit}.elementor-slideshow__header>i:hover{color:var(--lightbox-ui-color-hover)}.elementor-slideshow__header>svg{box-sizing:content-box;fill:var(--lightbox-ui-color);height:1em;width:1em}.elementor-slideshow__header>svg:hover{fill:var(--lightbox-ui-color-hover)}.elementor-slideshow__header .elementor-slideshow__counter{margin-right:auto}.elementor-slideshow__header .elementor-icon-share{z-index:5}.elementor-slideshow__share-menu{background-color:transparent;width:0;height:0;position:absolute;overflow:hidden;transition:background-color .4s}.elementor-slideshow__share-menu .elementor-slideshow__share-links a{color:#0c0d0e}.elementor-slideshow__share-links{display:block;position:absolute;min-width:200px;right:2.8em;top:3em;background-color:#fff;border-radius:3px;padding:14px 20px;transform:scale(0);opacity:0;transform-origin:90% 10%;transition:all .25s .1s;box-shadow:0 4px 15px rgba(0,0,0,.3)}.elementor-slideshow__share-links a{text-align:left;color:#3f444b;font-size:12px;line-height:2.5;display:block;opacity:0;transition:opacity .5s .1s}.elementor-slideshow__share-links a:hover{color:#000}.elementor-slideshow__share-links a i,.elementor-slideshow__share-links a svg{margin-right:.75em}.elementor-slideshow__share-links a i{font-size:1.25em}.elementor-slideshow__share-links a svg{height:1.25em;width:1.25em}.elementor-slideshow__share-links:before{content:"";display:block;position:absolute;top:1px;right:.5em;border:.45em solid transparent;border-bottom-color:#fff;transform:translateY(-100%) scaleX(.7)}.elementor-slideshow__footer{bottom:0;z-index:5;position:fixed}.elementor-slideshow__description,.elementor-slideshow__title{margin:0}.elementor-slideshow__title{font-size:16px;font-weight:700}.elementor-slideshow__description{font-size:14px}.elementor-slideshow--ui-hidden .elementor-slideshow__footer,.elementor-slideshow--ui-hidden .elementor-slideshow__header{opacity:0;pointer-events:none}.elementor-slideshow--ui-hidden .elementor-swiper-button-next,.elementor-slideshow--ui-hidden .elementor-swiper-button-prev{opacity:0}.elementor-slideshow--fullscreen-mode .elementor-video-container{width:100%}.elementor-slideshow--zoom-mode .elementor-slideshow__footer,.elementor-slideshow--zoom-mode .elementor-slideshow__header{background-color:rgba(0,0,0,.5)}.elementor-slideshow--zoom-mode .elementor-swiper-button-next,.elementor-slideshow--zoom-mode .elementor-swiper-button-prev{opacity:0;pointer-events:none}.elementor-slideshow--share-mode .elementor-slideshow__share-menu{top:0;left:0;width:100vw;height:100vh;opacity:1;cursor:default;background-color:rgba(0,0,0,.5)}.elementor-slideshow--share-mode .elementor-slideshow__share-links{transform:scale(1)}.elementor-slideshow--share-mode .elementor-slideshow__share-links,.elementor-slideshow--share-mode .elementor-slideshow__share-links a{opacity:1}.elementor-slideshow--share-mode .elementor-slideshow__share-links .eicon-twitter{color:#1da1f2}.elementor-slideshow--share-mode .elementor-slideshow__share-links .eicon-facebook{color:#3b5998}.elementor-slideshow--share-mode .elementor-slideshow__share-links .eicon-pinterest{color:#bd081c}.elementor-slideshow--share-mode .elementor-slideshow__share-links .eicon-download-bold{color:#9da5ae}.elementor-slideshow--share-mode .elementor-slideshow__share-links .e-eicon-twitter{fill:#1da1f2}.elementor-slideshow--share-mode .elementor-slideshow__share-links .e-eicon-facebook{fill:#3b5998}.elementor-slideshow--share-mode .elementor-slideshow__share-links .e-eicon-pinterest{fill:#bd081c}.elementor-slideshow--share-mode .elementor-slideshow__share-links .e-eicon-download-bold{fill:#9da5ae}.elementor-slideshow--share-mode .eicon-share-arrow{z-index:2}.animated{animation-duration:1.25s}.animated.animated-slow{animation-duration:2s}.animated.animated-fast{animation-duration:.75s}.animated.infinite{animation-iteration-count:infinite}.animated.reverse{animation-direction:reverse;animation-fill-mode:forwards}@media (prefers-reduced-motion:reduce){.animated{animation:none}}.elementor-shape{overflow:hidden;position:absolute;left:0;width:100%;line-height:0;direction:ltr}.elementor-shape-top{top:-1px}.elementor-shape-top:not([data-negative=false]) svg{z-index:-1}.elementor-shape-bottom{bottom:-1px}.elementor-shape-bottom:not([data-negative=true]) svg{z-index:-1}.elementor-shape[data-negative=false].elementor-shape-bottom,.elementor-shape[data-negative=true].elementor-shape-top{transform:rotate(180deg)}.elementor-shape svg{display:block;width:calc(100% + 1.3px);position:relative;left:50%;transform:translateX(-50%)}.elementor-shape .elementor-shape-fill{fill:#fff;transform-origin:center;transform:rotateY(0deg)}#wp-admin-bar-elementor_edit_page>.ab-item:before{content:"\e813";font-family:eicons;top:3px;font-size:18px}#wp-admin-bar-elementor_edit_page .ab-submenu .ab-item{display:flex;width:200px}#wp-admin-bar-elementor_edit_page .elementor-edit-link-title{white-space:nowrap;text-overflow:ellipsis;overflow:hidden;width:100%}#wp-admin-bar-elementor_edit_page .elementor-edit-link-type{background:#3f444b;font-size:11px;line-height:9px;margin-top:6px;padding:4px 8px;border-radius:3px}#wp-admin-bar-elementor_inspector>.ab-item:before{content:"\f348";top:2px}#wpadminbar *{font-style:normal}.page-template-elementor_canvas.elementor-page:before{display:none}.elementor-post__thumbnail__link{transition:none}#left-area ul.elementor-icon-list-items,.elementor-edit-area .elementor-element ul.elementor-icon-list-items,.elementor .elementor-element ul.elementor-icon-list-items{padding:0}.e--ua-appleWebkit.rtl{--flex-right:flex-start}.e--ua-appleWebkit .elementor-share-buttons--align-right,.e--ua-appleWebkit .elementor-widget-social-icons.e-grid-align-right{--justify-content:var(--flex-right,flex-end)}.e--ua-appleWebkit .elementor-share-buttons--align-center,.e--ua-appleWebkit .elementor-widget-social-icons.e-grid-align-center{--justify-content:center}.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-center .elementor-grid,.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-justify .elementor-grid,.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-right .elementor-grid,.e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-center .elementor-grid,.e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-right .elementor-grid{width:auto;display:flex;flex-wrap:wrap;justify-content:var(--justify-content,space-between);margin-left:calc(-.5 * var(--grid-column-gap));margin-right:calc(-.5 * var(--grid-column-gap))}.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-center .elementor-grid-item,.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-justify .elementor-grid-item,.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-right .elementor-grid-item,.e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-center .elementor-grid-item,.e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-right .elementor-grid-item{margin-left:calc(.5 * var(--grid-column-gap));margin-right:calc(.5 * var(--grid-column-gap))}.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-left .elementor-grid,.e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-left .elementor-grid{display:inline-block}.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-left .elementor-grid,.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-left .elementor-grid-item,.e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-left .elementor-grid,.e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-left .elementor-grid-item{margin-left:0;margin-right:0}@media (max-width:1024px){.e--ua-appleWebkit .elementor-share-buttons-tablet--align-right,.e--ua-appleWebkit .elementor-widget-social-icons.e-grid-align-tablet-right{--justify-content:var(--flex-right,flex-end)}.e--ua-appleWebkit .elementor-share-buttons-tablet--align-center,.e--ua-appleWebkit .elementor-widget-social-icons.e-grid-align-tablet-center{--justify-content:center}.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-tablet-center .elementor-grid,.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-tablet-justify .elementor-grid,.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-tablet-right .elementor-grid,.e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-tablet-center .elementor-grid,.e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-tablet-right .elementor-grid{width:auto;display:flex;flex-wrap:wrap;justify-content:var(--justify-content,space-between);margin-left:calc(-.5 * var(--grid-column-gap));margin-right:calc(-.5 * var(--grid-column-gap))}.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-tablet-center .elementor-grid-item,.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-tablet-justify .elementor-grid-item,.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-tablet-right .elementor-grid-item,.e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-tablet-center .elementor-grid-item,.e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-tablet-right .elementor-grid-item{margin-left:calc(.5 * var(--grid-column-gap));margin-right:calc(.5 * var(--grid-column-gap))}.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons-tablet--align-left .elementor-grid,.e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-tablet-left .elementor-grid{display:inline-block}.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons-tablet--align-left .elementor-grid,.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons-tablet--align-left .elementor-grid-item,.e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-tablet-left .elementor-grid,.e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-tablet-left .elementor-grid-item{margin-left:0;margin-right:0}}@media (max-width:767px){.e--ua-appleWebkit .elementor-share-buttons-mobile--align-right,.e--ua-appleWebkit .elementor-widget-social-icons.e-grid-align-mobile-right{--justify-content:var(--flex-right,flex-end)}.e--ua-appleWebkit .elementor-share-buttons-mobile--align-center,.e--ua-appleWebkit .elementor-widget-social-icons.e-grid-align-mobile-center{--justify-content:center}.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-mobile-center .elementor-grid,.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-mobile-justify .elementor-grid,.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-mobile-right .elementor-grid,.e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-mobile-center .elementor-grid,.e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-mobile-right .elementor-grid{width:auto;display:flex;flex-wrap:wrap;justify-content:var(--justify-content,space-between);margin-left:calc(-.5 * var(--grid-column-gap));margin-right:calc(-.5 * var(--grid-column-gap))}.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-mobile-center .elementor-grid-item,.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-mobile-justify .elementor-grid-item,.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-mobile-right .elementor-grid-item,.e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-mobile-center .elementor-grid-item,.e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-mobile-right .elementor-grid-item{margin-left:calc(.5 * var(--grid-column-gap));margin-right:calc(.5 * var(--grid-column-gap))}.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons-mobile--align-left .elementor-grid,.e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-mobile-left .elementor-grid{display:inline-block}.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons-mobile--align-left .elementor-grid,.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons-mobile--align-left .elementor-grid-item,.e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-mobile-left .elementor-grid,.e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-mobile-left .elementor-grid-item{margin-left:0;margin-right:0}}@media (max-width:767px){.elementor .elementor-hidden-mobile,.elementor .elementor-hidden-phone{display:none}}@media (min-width:-1) and (max-width:-1){.elementor .elementor-hidden-mobile_extra{display:none}}@media (min-width:768px) and (max-width:1024px){.elementor .elementor-hidden-tablet{display:none}}@media (min-width:-1) and (max-width:-1){.elementor .elementor-hidden-laptop,.elementor .elementor-hidden-tablet_extra{display:none}}@media (min-width:1025px) and (max-width:99999px){.elementor .elementor-hidden-desktop{display:none}}@media (min-width:-1){.elementor .elementor-hidden-widescreen{display:none}}.elementor-widget-text-path{font-size:20px;text-align:var(--alignment,left)}.elementor-widget-text-path svg{width:var(--width);max-width:100%;height:auto;overflow:visible;word-spacing:var(--word-spacing);transform:rotate(var(--rotate,0)) scaleX(var(--scale-x,1)) scaleY(var(--scale-y,1))}.elementor-widget-text-path svg path{vector-effect:non-scaling-stroke;fill:var(--path-fill,transparent);stroke:var(--stroke-color,transparent);stroke-width:var(--stroke-width,1px);transition:var(--stroke-transition) stroke,var(--stroke-transition) fill}.elementor-widget-text-path svg:hover path{--path-fill:var(--path-fill-hover);--stroke-color:var(--stroke-color-hover);--stroke-width:var(--stroke-width-hover)}.elementor-widget-text-path svg text{--fill:var(--text-color);fill:var(--fill);direction:var(--direction,ltr);transition:var(--transition) stroke,var(--transition) stroke-width,var(--transition) fill}.elementor-widget-text-path svg text:hover{--color:var(--text-color-hover,var(--text-color));--fill:var(--color);color:var(--color)}.elementor-widget-n-tabs{--n-tabs-color-accent-fallback:#61ce70;--n-tabs-color-secondary-fallback:#54595f;--n-tabs-default-padding-block:15px;--n-tabs-default-padding-inline:35px;--n-tabs-background-color:transparent;--n-tabs-display:flex;--n-tabs-direction:column;--n-tabs-gap:10px;--n-tabs-heading-display:flex;--n-tabs-heading-direction:row;--n-tabs-heading-grow:initial;--n-tabs-heading-justify-content:center;--n-tabs-heading-width:initial;--n-tabs-heading-overflow-x:initial;--n-tabs-heading-wrap:nowrap;--n-tabs-border-width:1px;--n-tabs-border-color:#d5d8dc;--n-tabs-content-display:flex;--n-tabs-title-color:var(--e-global-color-secondary,var(--n-tabs-color-secondary-fallback));--n-tabs-title-color-hover:#fff;--n-tabs-title-color-active:#fff;--n-tabs-title-background-color:#f1f2f3;--n-tabs-title-background-color-hover:var(--e-global-color-accent,var(--n-tabs-color-accent-fallback));--n-tabs-title-background-color-active:var(--e-global-color-accent,var(--n-tabs-color-accent-fallback));--n-tabs-title-width:initial;--n-tabs-title-height:initial;--n-tabs-title-font-size:1rem;--n-tabs-title-white-space:initial;--n-tabs-title-justify-content-toggle:initial;--n-tabs-title-align-items-toggle:center;--n-tabs-title-justify-content:center;--n-tabs-title-align-items:center;--n-tabs-title-text-align:center;--n-tabs-title-direction:row;--n-tabs-title-gap:10px;--n-tabs-title-flex-grow:0;--n-tabs-title-flex-basis:content;--n-tabs-title-flex-shrink:initial;--n-tabs-title-order:initial;--n-tabs-title-padding-block-start:var(--n-tabs-default-padding-block);--n-tabs-title-padding-inline-end:var(--n-tabs-default-padding-inline);--n-tabs-title-padding-block-end:var(--n-tabs-default-padding-block);--n-tabs-title-padding-inline-start:var(--n-tabs-default-padding-inline);--n-tabs-title-border-radius:initial;--n-tabs-title-transition:0.3s;--n-tabs-icon-color:var(--e-global-color-secondary,var(--n-tabs-color-secondary-fallback));--n-tabs-icon-color-hover:var(--n-tabs-title-color-hover);--n-tabs-icon-color-active:#fff;--n-tabs-icon-gap:5px;width:100%;max-width:100%}.elementor-widget-n-tabs .e-n-tabs{display:var(--n-tabs-display);flex-direction:var(--n-tabs-direction);gap:var(--n-tabs-gap);text-align:start;min-width:0}.elementor-widget-n-tabs .e-n-tabs-heading{display:var(--n-tabs-heading-display);flex-basis:var(--n-tabs-heading-width);flex-direction:var(--n-tabs-heading-direction);flex-shrink:0;justify-content:var(--n-tabs-heading-justify-content);gap:var(--n-tabs-title-gap);overflow-x:var(--n-tabs-heading-overflow-x);flex-wrap:var(--n-tabs-heading-wrap);-ms-overflow-style:none;scrollbar-width:none}.elementor-widget-n-tabs .e-n-tabs-heading::-webkit-scrollbar{display:none}.elementor-widget-n-tabs .e-n-tabs-heading.e-scroll{cursor:grabbing;cursor:-webkit-grabbing}.elementor-widget-n-tabs .e-n-tabs-heading.e-scroll-active{position:relative}.elementor-widget-n-tabs .e-n-tabs-heading.e-scroll-active:before{content:"";position:absolute;inset-block:0;inset-inline:-1000vw;z-index:2}.elementor-widget-n-tabs .e-n-tabs-content{display:var(--n-tabs-content-display);flex-grow:1;min-width:0}.elementor-widget-n-tabs .e-n-tabs-content>.e-con:not(.e-active){display:none}.elementor-widget-n-tabs .e-n-tabs:not(.e-activated)>.e-n-tabs-content>.e-con:first-child{display:flex}.elementor-widget-n-tabs .e-n-tab-title{all:unset;-webkit-user-select:none;-moz-user-select:none;user-select:none;display:flex;align-items:var(--n-tabs-title-align-items-toggle,var(--n-tabs-title-align-items));flex-direction:var(--n-tabs-title-direction);justify-content:var(--n-tabs-title-justify-content-toggle,var(--n-tabs-title-justify-content));gap:var(--n-tabs-icon-gap);border-width:var(--n-tabs-border-width);position:relative;cursor:pointer;outline:none;flex-grow:var(--n-tabs-title-flex-grow);flex-basis:var(--n-tabs-title-flex-basis);flex-shrink:var(--n-tabs-title-flex-shrink);padding-block-start:var(--n-tabs-title-padding-block-start);padding-inline-end:var(--n-tabs-title-padding-inline-end);padding-block-end:var(--n-tabs-title-padding-block-end);padding-inline-start:var(--n-tabs-title-padding-inline-start);border-radius:var(--n-tabs-title-border-radius);height:var(--n-tabs-title-height);width:var(--n-tabs-title-width);white-space:var(--n-tabs-title-white-space);transition:background var(--n-tabs-title-transition),color var(--n-tabs-title-transition),border var(--n-tabs-title-transition),box-shadow var(--n-tabs-title-transition),text-shadow var(--n-tabs-title-transition),stroke var(--n-tabs-title-transition),stroke-width var(--n-tabs-title-transition),-webkit-text-stroke-width var(--n-tabs-title-transition),-webkit-text-stroke-color var(--n-tabs-title-transition),transform var(--n-tabs-title-transition)}.elementor-widget-n-tabs .e-n-tab-title:focus-visible{outline:5px auto -webkit-focus-ring-color}.elementor-widget-n-tabs .e-n-tab-title span i,.elementor-widget-n-tabs .e-n-tab-title span svg{transition:color var(--n-tabs-title-transition),fill var(--n-tabs-title-transition)}.elementor-widget-n-tabs .e-n-tab-title-text{display:flex;align-items:center;font-size:var(--n-tabs-title-font-size);text-align:var(--n-tabs-title-text-align)}.elementor-widget-n-tabs .e-n-tab-title .e-n-tab-icon{display:flex;align-items:center;flex-direction:column;flex-shrink:0;order:var(--n-tabs-icon-order);overflow:hidden}.elementor-widget-n-tabs .e-n-tab-title .e-n-tab-icon i{font-size:var(--n-tabs-icon-size,var(--n-tabs-title-font-size))}.elementor-widget-n-tabs .e-n-tab-title .e-n-tab-icon svg{width:var(--n-tabs-icon-size,var(--n-tabs-title-font-size));height:var(--n-tabs-icon-size,var(--n-tabs-title-font-size))}.elementor-widget-n-tabs .e-n-tab-title .e-n-tab-icon:empty{display:none}.elementor-widget-n-tabs .e-n-tab-title[aria-selected=false]{background-color:var(--n-tabs-title-background-color)}.elementor-widget-n-tabs .e-n-tab-title[aria-selected=false],.elementor-widget-n-tabs .e-n-tab-title[aria-selected=false] a{color:var(--n-tabs-title-color)}.elementor-widget-n-tabs .e-n-tab-title[aria-selected=false] .e-n-tab-icon i{color:var(--n-tabs-icon-color)}.elementor-widget-n-tabs .e-n-tab-title[aria-selected=false] .e-n-tab-icon svg{fill:var(--n-tabs-icon-color)}.elementor-widget-n-tabs .e-n-tab-title[aria-selected=false] .e-n-tab-icon i:last-child,.elementor-widget-n-tabs .e-n-tab-title[aria-selected=false] .e-n-tab-icon svg:last-child{transform:translateY(-100vh);height:0;opacity:0}.elementor-widget-n-tabs .e-n-tab-title[aria-selected=true],.elementor-widget-n-tabs .e-n-tab-title[aria-selected=true] a{color:var(--n-tabs-title-color-active)}.elementor-widget-n-tabs .e-n-tab-title[aria-selected=true] .e-n-tab-icon i{color:var(--n-tabs-icon-color-active)}.elementor-widget-n-tabs .e-n-tab-title[aria-selected=true] .e-n-tab-icon svg{fill:var(--n-tabs-icon-color-active)}.elementor-widget-n-tabs .e-n-tab-title[aria-selected=true] .e-n-tab-icon i:first-child,.elementor-widget-n-tabs .e-n-tab-title[aria-selected=true] .e-n-tab-icon svg:first-child{transform:translateY(-100vh);height:0;opacity:0}.elementor-widget-n-tabs .e-n-tab-title[aria-selected=true][class*=elementor-animation-]:active,.elementor-widget-n-tabs .e-n-tab-title[aria-selected=true][class*=elementor-animation-]:focus,.elementor-widget-n-tabs .e-n-tab-title[aria-selected=true][class*=elementor-animation-]:hover{transform:none;animation:initial}.elementor-widget-n-tabs [data-touch-mode=false] .e-n-tab-title[aria-selected=false]:hover,.elementor-widget-n-tabs [data-touch-mode=false] .e-n-tab-title[aria-selected=false]:hover a{color:var(--n-tabs-title-color-hover)}.elementor-widget-n-tabs [data-touch-mode=false] .e-n-tab-title[aria-selected=false]:hover .e-n-tab-icon i{color:var(--n-tabs-icon-color-hover)}.elementor-widget-n-tabs [data-touch-mode=false] .e-n-tab-title[aria-selected=false]:hover .e-n-tab-icon svg{fill:var(--n-tabs-icon-color-hover)}.elementor-widget-n-tabs [data-touch-mode=true] .e-n-tab-title[aria-selected=false]:hover,.elementor-widget-n-tabs [data-touch-mode=true] .e-n-tab-title[aria-selected=false]:hover a{color:var(--n-tabs-title-color-active)}.elementor-widget-n-tabs [data-touch-mode=true] .e-n-tab-title[aria-selected=false]:hover .e-n-tab-icon i{color:var(--n-tabs-icon-color-active)}.elementor-widget-n-tabs [data-touch-mode=true] .e-n-tab-title[aria-selected=false]:hover .e-n-tab-icon svg{fill:var(--n-tabs-icon-color-active)}.elementor-widget-n-tabs [data-touch-mode=true] .e-n-tab-title[aria-selected=false]:hover .e-n-tab-icon i:first-child,.elementor-widget-n-tabs [data-touch-mode=true] .e-n-tab-title[aria-selected=false]:hover .e-n-tab-icon svg:first-child{transform:translateY(-100vh);height:0;opacity:0}.elementor-widget-n-tabs [data-touch-mode=true] .e-n-tab-title[aria-selected=false]:hover[class*=elementor-animation-]:active,.elementor-widget-n-tabs [data-touch-mode=true] .e-n-tab-title[aria-selected=false]:hover[class*=elementor-animation-]:focus,.elementor-widget-n-tabs [data-touch-mode=true] .e-n-tab-title[aria-selected=false]:hover[class*=elementor-animation-]:hover{transform:none;animation:initial}.elementor-widget-n-tabs [data-touch-mode=true] .e-n-tab-title[aria-selected=false]:hover .e-n-tab-icon i:last-child,.elementor-widget-n-tabs [data-touch-mode=true] .e-n-tab-title[aria-selected=false]:hover .e-n-tab-icon svg:last-child{transform:none;height:auto;opacity:1}.elementor .elementor-element.elementor-widget-n-tabs>.elementor-widget-container>.e-n-tabs[data-touch-mode=false]>.e-n-tabs-heading .e-n-tab-title[aria-selected=false]:hover{background-color:var(--n-tabs-title-background-color-hover);background-image:none}.elementor .elementor-element.elementor-widget-n-tabs>.elementor-widget-container>.e-n-tabs>.e-n-tabs-heading .e-n-tab-title[aria-selected=true],.elementor .elementor-element.elementor-widget-n-tabs>.elementor-widget-container>.e-n-tabs[data-touch-mode=true]>.e-n-tabs-heading .e-n-tab-title[aria-selected=false]:hover{background-color:var(--n-tabs-title-background-color-active);background-image:none}@media (max-width:767px){.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-mobile{--n-tabs-direction:column;--n-tabs-heading-display:contents;--n-tabs-content-display:contents}.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-mobile .e-n-tabs{gap:0}.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-mobile .e-n-tabs-content>.e-con{order:var(--n-tabs-title-order)}.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-mobile .e-n-tab-title{order:var(--n-tabs-title-order);width:auto}.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-mobile .e-n-tab-title:not(:first-child){margin-block-start:var(--n-tabs-title-gap)}.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-mobile .e-n-tab-title[aria-selected=true]{margin-block-end:var(--n-tabs-gap)}}@media (max-width:-1){.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-mobile_extra{--n-tabs-direction:column;--n-tabs-heading-display:contents;--n-tabs-content-display:contents}.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-mobile_extra .e-n-tabs{gap:0}.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-mobile_extra .e-n-tabs-content>.e-con{order:var(--n-tabs-title-order)}.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-mobile_extra .e-n-tab-title{order:var(--n-tabs-title-order);width:auto}.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-mobile_extra .e-n-tab-title:not(:first-child){margin-block-start:var(--n-tabs-title-gap)}.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-mobile_extra .e-n-tab-title[aria-selected=true]{margin-block-end:var(--n-tabs-gap)}}@media (max-width:1024px){.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-tablet{--n-tabs-direction:column;--n-tabs-heading-display:contents;--n-tabs-content-display:contents}.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-tablet .e-n-tabs{gap:0}.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-tablet .e-n-tabs-content>.e-con{order:var(--n-tabs-title-order)}.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-tablet .e-n-tab-title{order:var(--n-tabs-title-order);width:auto}.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-tablet .e-n-tab-title:not(:first-child){margin-block-start:var(--n-tabs-title-gap)}.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-tablet .e-n-tab-title[aria-selected=true]{margin-block-end:var(--n-tabs-gap)}}@media (max-width:-1){.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-tablet_extra{--n-tabs-direction:column;--n-tabs-heading-display:contents;--n-tabs-content-display:contents}.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-tablet_extra .e-n-tabs{gap:0}.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-tablet_extra .e-n-tabs-content>.e-con{order:var(--n-tabs-title-order)}.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-tablet_extra .e-n-tab-title{order:var(--n-tabs-title-order);width:auto}.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-tablet_extra .e-n-tab-title:not(:first-child){margin-block-start:var(--n-tabs-title-gap)}.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-tablet_extra .e-n-tab-title[aria-selected=true]{margin-block-end:var(--n-tabs-gap)}}@media (max-width:-1){.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-laptop{--n-tabs-direction:column;--n-tabs-heading-display:contents;--n-tabs-content-display:contents}.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-laptop .e-n-tabs{gap:0}.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-laptop .e-n-tabs-content>.e-con{order:var(--n-tabs-title-order)}.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-laptop .e-n-tab-title{order:var(--n-tabs-title-order);width:auto}.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-laptop .e-n-tab-title:not(:first-child){margin-block-start:var(--n-tabs-title-gap)}.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-laptop .e-n-tab-title[aria-selected=true]{margin-block-end:var(--n-tabs-gap)}}.elementor-widget-n-accordion{--n-accordion-title-font-size:20px;--n-accordion-title-flex-grow:initial;--n-accordion-title-justify-content:initial;--n-accordion-title-icon-order:-1;--n-accordion-border-width:1px;--n-accordion-border-color:#d5d8dc;--n-accordion-border-style:solid;--n-accordion-item-title-flex-grow:initial;--n-accordion-item-title-space-between:0px;--n-accordion-item-title-distance-from-content:0px;--n-accordion-padding:10px;--n-accordion-border-radius:0px;--n-accordion-icon-size:15px;--n-accordion-title-normal-color:#1f2124;--n-accordion-title-hover-color:#1f2124;--n-accordion-title-active-color:#1f2124;--n-accordion-icon-normal-color:var(--n-accordion-title-normal-color);--n-accordion-icon-hover-color:var(--n-accordion-title-hover-color);--n-accordion-icon-active-color:var(--n-accordion-title-active-color);--n-accordion-icon-gap:0 10px;width:100%}.elementor-widget-n-accordion .e-n-accordion details>summary::-webkit-details-marker{display:none}.elementor-widget-n-accordion .e-n-accordion-item{display:flex;flex-direction:column;position:relative}.elementor-widget-n-accordion .e-n-accordion-item:not(:last-child){margin-block-end:var(--n-accordion-item-title-space-between)}.elementor-widget-n-accordion .e-n-accordion-item-title,:where(.elementor-widget-n-accordion .e-n-accordion-item>.e-con){border:var(--n-accordion-border-width) var(--n-accordion-border-style) var(--n-accordion-border-color)}.elementor-widget-n-accordion .e-n-accordion-item-title{display:flex;flex-direction:row;list-style:none;padding:var(--n-accordion-padding);justify-content:var(--n-accordion-title-justify-content);border-radius:var(--n-accordion-border-radius);flex-grow:var(--n-menu-title-flex-grow);gap:var(--n-accordion-icon-gap);color:var(--n-accordion-title-normal-color);align-items:center;cursor:pointer}.elementor-widget-n-accordion .e-n-accordion-item-title-header{display:flex}.elementor-widget-n-accordion .e-n-accordion-item-title-header h1,.elementor-widget-n-accordion .e-n-accordion-item-title-header h2,.elementor-widget-n-accordion .e-n-accordion-item-title-header h3,.elementor-widget-n-accordion .e-n-accordion-item-title-header h4,.elementor-widget-n-accordion .e-n-accordion-item-title-header h5,.elementor-widget-n-accordion .e-n-accordion-item-title-header h6,.elementor-widget-n-accordion .e-n-accordion-item-title-header p{margin-block-start:0;margin-block-end:0}.elementor-widget-n-accordion .e-n-accordion-item-title-text{font-size:var(--n-accordion-title-font-size);align-items:center}.elementor-widget-n-accordion .e-n-accordion-item-title-icon{display:flex;flex-direction:row;align-items:center;order:var(--n-accordion-title-icon-order);position:relative;width:-moz-fit-content;width:fit-content}.elementor-widget-n-accordion .e-n-accordion-item-title-icon span{height:var(--n-accordion-icon-size);width:auto}.elementor-widget-n-accordion .e-n-accordion-item-title-icon span>i{color:var(--n-accordion-icon-normal-color);font-size:var(--n-accordion-icon-size)}.elementor-widget-n-accordion .e-n-accordion-item-title-icon span>svg{fill:var(--n-accordion-icon-normal-color);height:var(--n-accordion-icon-size)}.elementor-widget-n-accordion .e-n-accordion-item-title>span{cursor:pointer}.elementor-widget-n-accordion .e-n-accordion-item[open] .e-n-accordion-item-title{margin-block-end:var(--n-accordion-item-title-distance-from-content);color:var(--n-accordion-title-active-color)}.elementor-widget-n-accordion .e-n-accordion-item[open] .e-n-accordion-item-title-icon .e-opened{display:flex}.elementor-widget-n-accordion .e-n-accordion-item[open] .e-n-accordion-item-title-icon .e-closed{display:none}.elementor-widget-n-accordion .e-n-accordion-item[open] .e-n-accordion-item-title-icon span>i{color:var(--n-accordion-icon-active-color)}.elementor-widget-n-accordion .e-n-accordion-item[open] .e-n-accordion-item-title-icon span>svg{fill:var(--n-accordion-icon-active-color)}.elementor-widget-n-accordion .e-n-accordion-item:not([open]):hover .e-n-accordion-item-title{color:var(--n-accordion-title-hover-color)}.elementor-widget-n-accordion .e-n-accordion-item:not([open]):hover .e-n-accordion-item-title-icon span>i{color:var(--n-accordion-icon-hover-color)}.elementor-widget-n-accordion .e-n-accordion-item:not([open]):hover .e-n-accordion-item-title-icon span>svg{fill:var(--n-accordion-icon-hover-color)}.elementor-widget-n-accordion .e-n-accordion-item .e-n-accordion-item-title-icon .e-opened{display:none}.elementor-widget-n-accordion .e-n-accordion-item .e-n-accordion-item-title-icon .e-closed{display:flex}.elementor-widget-n-accordion .e-n-accordion-item .e-n-accordion-item-title-icon span>svg{fill:var(--n-accordion-icon-normal-color)}.elementor-widget-n-accordion .e-n-accordion-item .e-n-accordion-item-title-icon span>i{color:var(--n-accordion-icon-normal-color)}.elementor-widget-n-accordion .e-n-accordion-item>span{cursor:pointer}.elementor-accordion{text-align:left}.elementor-accordion .elementor-accordion-item{border:1px solid #d5d8dc}.elementor-accordion .elementor-accordion-item+.elementor-accordion-item{border-top:none}.elementor-accordion .elementor-tab-title{margin:0;padding:15px 20px;font-weight:700;line-height:1;cursor:pointer;outline:none}.elementor-accordion .elementor-tab-title .elementor-accordion-icon{display:inline-block;width:1.5em}.elementor-accordion .elementor-tab-title .elementor-accordion-icon svg{width:1em;height:1em}.elementor-accordion .elementor-tab-title .elementor-accordion-icon.elementor-accordion-icon-right{float:right;text-align:right}.elementor-accordion .elementor-tab-title .elementor-accordion-icon.elementor-accordion-icon-left{float:left;text-align:left}.elementor-accordion .elementor-tab-title .elementor-accordion-icon .elementor-accordion-icon-closed{display:block}.elementor-accordion .elementor-tab-title .elementor-accordion-icon .elementor-accordion-icon-opened,.elementor-accordion .elementor-tab-title.elementor-active .elementor-accordion-icon-closed{display:none}.elementor-accordion .elementor-tab-title.elementor-active .elementor-accordion-icon-opened{display:block}.elementor-accordion .elementor-tab-content{display:none;padding:15px 20px;border-top:1px solid #d5d8dc}@media (max-width:767px){.elementor-accordion .elementor-tab-title{padding:12px 15px}.elementor-accordion .elementor-tab-title .elementor-accordion-icon{width:1.2em}.elementor-accordion .elementor-tab-content{padding:7px 15px}}.e-con-inner>.elementor-widget-accordion,.e-con>.elementor-widget-accordion{width:var(--container-widget-width);--flex-grow:var(--container-widget-flex-grow)}.elementor-alert{padding:15px;border-left:5px solid transparent;position:relative;text-align:left}.elementor-alert .elementor-alert-title{display:block;font-weight:700}.elementor-alert .elementor-alert-description{font-size:13px}.elementor-alert button.elementor-alert-dismiss{position:absolute;right:var(--dismiss-icon-horizontal-position,10px);top:var(--dismiss-icon-vertical-position,10px);padding:3px;font-size:var(--dismiss-icon-size,20px);line-height:1;background:transparent;color:var(--dismiss-icon-normal-color,inherit);border:none;cursor:pointer;transition-duration:var(--dismiss-icon-hover-transition-duration,.3s)}.elementor-alert button.elementor-alert-dismiss:hover{color:var(--dismiss-icon-hover-color,inherit)}.elementor-alert button.elementor-alert-dismiss svg{width:var(--dismiss-icon-size,20px);height:var(--dismiss-icon-size,20px);fill:var(--dismiss-icon-normal-color,currentColor);transition-duration:var(--dismiss-icon-hover-transition-duration,.3s)}.elementor-alert button.elementor-alert-dismiss svg:hover{fill:var(--dismiss-icon-hover-color,currentColor)}.elementor-alert.elementor-alert-info{color:#31708f;background-color:#d9edf7;border-color:#bcdff1}.elementor-alert.elementor-alert-success{color:#3c763d;background-color:#dff0d8;border-color:#cae6be}.elementor-alert.elementor-alert-warning{color:#8a6d3b;background-color:#fcf8e3;border-color:#f9f0c3}.elementor-alert.elementor-alert-danger{color:#a94442;background-color:#f2dede;border-color:#e8c4c4}@media (max-width:767px){.elementor-alert{padding:10px}.elementor-alert button.elementor-alert-dismiss{right:7px;top:7px}}.elementor-counter .elementor-counter-number-wrapper{display:flex;font-size:69px;font-weight:600;line-height:1}.elementor-counter .elementor-counter-number-prefix,.elementor-counter .elementor-counter-number-suffix{flex-grow:1;white-space:pre-wrap}.elementor-counter .elementor-counter-number-prefix{text-align:right}.elementor-counter .elementor-counter-number-suffix{text-align:left}.elementor-counter .elementor-counter-title{text-align:center;font-size:19px;font-weight:400;line-height:2.5}.elementor-widget-divider{--divider-border-style:none;--divider-border-width:1px;--divider-color:#0c0d0e;--divider-icon-size:20px;--divider-element-spacing:10px;--divider-pattern-height:24px;--divider-pattern-size:20px;--divider-pattern-url:none;--divider-pattern-repeat:repeat-x}.elementor-widget-divider .elementor-divider{display:flex}.elementor-widget-divider .elementor-divider__text{font-size:15px;line-height:1;max-width:95%}.elementor-widget-divider .elementor-divider__element{margin:0 var(--divider-element-spacing);flex-shrink:0}.elementor-widget-divider .elementor-icon{font-size:var(--divider-icon-size)}.elementor-widget-divider .elementor-divider-separator{display:flex;margin:0;direction:ltr}.elementor-widget-divider--view-line_icon .elementor-divider-separator,.elementor-widget-divider--view-line_text .elementor-divider-separator{align-items:center}.elementor-widget-divider--view-line_icon .elementor-divider-separator:after,.elementor-widget-divider--view-line_icon .elementor-divider-separator:before,.elementor-widget-divider--view-line_text .elementor-divider-separator:after,.elementor-widget-divider--view-line_text .elementor-divider-separator:before{display:block;content:"";border-block-end:0;flex-grow:1;border-block-start:var(--divider-border-width) var(--divider-border-style) var(--divider-color)}.elementor-widget-divider--element-align-left .elementor-divider .elementor-divider-separator>.elementor-divider__svg:first-of-type{flex-grow:0;flex-shrink:100}.elementor-widget-divider--element-align-left .elementor-divider-separator:before{content:none}.elementor-widget-divider--element-align-left .elementor-divider__element{margin-left:0}.elementor-widget-divider--element-align-right .elementor-divider .elementor-divider-separator>.elementor-divider__svg:last-of-type{flex-grow:0;flex-shrink:100}.elementor-widget-divider--element-align-right .elementor-divider-separator:after{content:none}.elementor-widget-divider--element-align-right .elementor-divider__element{margin-right:0}.elementor-widget-divider--element-align-start .elementor-divider .elementor-divider-separator>.elementor-divider__svg:first-of-type{flex-grow:0;flex-shrink:100}.elementor-widget-divider--element-align-start .elementor-divider-separator:before{content:none}.elementor-widget-divider--element-align-start .elementor-divider__element{margin-inline-start:0}.elementor-widget-divider--element-align-end .elementor-divider .elementor-divider-separator>.elementor-divider__svg:last-of-type{flex-grow:0;flex-shrink:100}.elementor-widget-divider--element-align-end .elementor-divider-separator:after{content:none}.elementor-widget-divider--element-align-end .elementor-divider__element{margin-inline-end:0}.elementor-widget-divider:not(.elementor-widget-divider--view-line_text):not(.elementor-widget-divider--view-line_icon) .elementor-divider-separator{border-block-start:var(--divider-border-width) var(--divider-border-style) var(--divider-color)}.elementor-widget-divider--separator-type-pattern{--divider-border-style:none}.elementor-widget-divider--separator-type-pattern.elementor-widget-divider--view-line .elementor-divider-separator,.elementor-widget-divider--separator-type-pattern:not(.elementor-widget-divider--view-line) .elementor-divider-separator:after,.elementor-widget-divider--separator-type-pattern:not(.elementor-widget-divider--view-line) .elementor-divider-separator:before,.elementor-widget-divider--separator-type-pattern:not([class*=elementor-widget-divider--view]) .elementor-divider-separator{width:100%;min-height:var(--divider-pattern-height);-webkit-mask-size:var(--divider-pattern-size) 100%;mask-size:var(--divider-pattern-size) 100%;-webkit-mask-repeat:var(--divider-pattern-repeat);mask-repeat:var(--divider-pattern-repeat);background-color:var(--divider-color);-webkit-mask-image:var(--divider-pattern-url);mask-image:var(--divider-pattern-url)}.elementor-widget-divider--no-spacing{--divider-pattern-size:auto}.elementor-widget-divider--bg-round{--divider-pattern-repeat:round}.rtl .elementor-widget-divider .elementor-divider__text{direction:rtl}.e-con-inner>.elementor-widget-divider,.e-con>.elementor-widget-divider{width:var(--container-widget-width,100%);--flex-grow:var(--container-widget-flex-grow)}.elementor-image-gallery .gallery-item{display:inline-block;text-align:center;vertical-align:top;width:100%;max-width:100%;margin:0 auto}.elementor-image-gallery .gallery-item img{margin:0 auto}.elementor-image-gallery .gallery-item .gallery-caption{margin:0}.elementor-image-gallery figure img{display:block}.elementor-image-gallery figure figcaption{width:100%}.gallery-spacing-custom .elementor-image-gallery .gallery-icon{padding:0}@media (min-width:768px){.elementor-image-gallery .gallery-columns-2 .gallery-item{max-width:50%}.elementor-image-gallery .gallery-columns-3 .gallery-item{max-width:33.33%}.elementor-image-gallery .gallery-columns-4 .gallery-item{max-width:25%}.elementor-image-gallery .gallery-columns-5 .gallery-item{max-width:20%}.elementor-image-gallery .gallery-columns-6 .gallery-item{max-width:16.666%}.elementor-image-gallery .gallery-columns-7 .gallery-item{max-width:14.28%}.elementor-image-gallery .gallery-columns-8 .gallery-item{max-width:12.5%}.elementor-image-gallery .gallery-columns-9 .gallery-item{max-width:11.11%}.elementor-image-gallery .gallery-columns-10 .gallery-item{max-width:10%}}@media (min-width:480px) and (max-width:767px){.elementor-image-gallery .gallery.gallery-columns-2 .gallery-item,.elementor-image-gallery .gallery.gallery-columns-3 .gallery-item,.elementor-image-gallery .gallery.gallery-columns-4 .gallery-item,.elementor-image-gallery .gallery.gallery-columns-5 .gallery-item,.elementor-image-gallery .gallery.gallery-columns-6 .gallery-item,.elementor-image-gallery .gallery.gallery-columns-7 .gallery-item,.elementor-image-gallery .gallery.gallery-columns-8 .gallery-item,.elementor-image-gallery .gallery.gallery-columns-9 .gallery-item,.elementor-image-gallery .gallery.gallery-columns-10 .gallery-item{max-width:50%}}@media (max-width:479px){.elementor-image-gallery .gallery.gallery-columns-2 .gallery-item,.elementor-image-gallery .gallery.gallery-columns-3 .gallery-item,.elementor-image-gallery .gallery.gallery-columns-4 .gallery-item,.elementor-image-gallery .gallery.gallery-columns-5 .gallery-item,.elementor-image-gallery .gallery.gallery-columns-6 .gallery-item,.elementor-image-gallery .gallery.gallery-columns-7 .gallery-item,.elementor-image-gallery .gallery.gallery-columns-8 .gallery-item,.elementor-image-gallery .gallery.gallery-columns-9 .gallery-item,.elementor-image-gallery .gallery.gallery-columns-10 .gallery-item{max-width:100%}}.elementor-widget-google_maps .elementor-widget-container{overflow:hidden}.elementor-widget-google_maps .elementor-custom-embed{line-height:0}.elementor-widget-google_maps iframe{height:300px}.elementor-heading-title{padding:0;margin:0;line-height:1}.elementor-widget-heading .elementor-heading-title[class*=elementor-size-]>a{color:inherit;font-size:inherit;line-height:inherit}.elementor-widget-heading .elementor-heading-title.elementor-size-small{font-size:15px}.elementor-widget-heading .elementor-heading-title.elementor-size-medium{font-size:19px}.elementor-widget-heading .elementor-heading-title.elementor-size-large{font-size:29px}.elementor-widget-heading .elementor-heading-title.elementor-size-xl{font-size:39px}.elementor-widget-heading .elementor-heading-title.elementor-size-xxl{font-size:59px}.elementor-widget-icon-box .elementor-icon-box-wrapper{display:block;text-align:center}.elementor-widget-icon-box .elementor-icon-box-icon{margin-bottom:var(--icon-box-icon-margin,15px);margin-right:auto;margin-left:auto}@media (min-width:768px){.elementor-widget-icon-box.elementor-vertical-align-top .elementor-icon-box-wrapper{align-items:flex-start}.elementor-widget-icon-box.elementor-vertical-align-middle .elementor-icon-box-wrapper{align-items:center}.elementor-widget-icon-box.elementor-vertical-align-bottom .elementor-icon-box-wrapper{align-items:flex-end}}.elementor-widget-icon-box.elementor-position-left .elementor-icon-box-wrapper,.elementor-widget-icon-box.elementor-position-right .elementor-icon-box-wrapper{display:flex}.elementor-widget-icon-box.elementor-position-left .elementor-icon-box-icon,.elementor-widget-icon-box.elementor-position-right .elementor-icon-box-icon{display:inline-flex;flex:0 0 auto}.elementor-widget-icon-box.elementor-position-right .elementor-icon-box-wrapper{text-align:right;flex-direction:row-reverse}.elementor-widget-icon-box.elementor-position-right .elementor-icon-box-icon{margin-left:var(--icon-box-icon-margin,15px);margin-right:0;margin-bottom:unset}.elementor-widget-icon-box.elementor-position-left .elementor-icon-box-wrapper{text-align:left;flex-direction:row}.elementor-widget-icon-box.elementor-position-left .elementor-icon-box-icon{margin-right:var(--icon-box-icon-margin,15px);margin-left:0;margin-bottom:unset}.elementor-widget-icon-box.elementor-position-top .elementor-icon-box-wrapper{display:block;text-align:center;flex-direction:unset}.elementor-widget-icon-box.elementor-position-top .elementor-icon-box-icon{margin-bottom:var(--icon-box-icon-margin,15px);margin-right:auto;margin-left:auto}@media (min-width:-1){.elementor-widget-icon-box.elementor-widescreen-position-left .elementor-icon-box-wrapper,.elementor-widget-icon-box.elementor-widescreen-position-right .elementor-icon-box-wrapper{display:flex}.elementor-widget-icon-box.elementor-widescreen-position-left .elementor-icon-box-icon,.elementor-widget-icon-box.elementor-widescreen-position-right .elementor-icon-box-icon{display:inline-flex;flex:0 0 auto}.elementor-widget-icon-box.elementor-widescreen-position-right .elementor-icon-box-wrapper{text-align:right;flex-direction:row-reverse}.elementor-widget-icon-box.elementor-widescreen-position-right .elementor-icon-box-icon{margin-left:var(--icon-box-icon-margin,15px);margin-right:0;margin-bottom:unset}.elementor-widget-icon-box.elementor-widescreen-position-left .elementor-icon-box-wrapper{text-align:left;flex-direction:row}.elementor-widget-icon-box.elementor-widescreen-position-left .elementor-icon-box-icon{margin-right:var(--icon-box-icon-margin,15px);margin-left:0;margin-bottom:unset}.elementor-widget-icon-box.elementor-widescreen-position-top .elementor-icon-box-wrapper{display:block;text-align:center;flex-direction:unset}.elementor-widget-icon-box.elementor-widescreen-position-top .elementor-icon-box-icon{margin-bottom:var(--icon-box-icon-margin,15px);margin-right:auto;margin-left:auto}}@media (max-width:-1){.elementor-widget-icon-box.elementor-laptop-position-left .elementor-icon-box-wrapper,.elementor-widget-icon-box.elementor-laptop-position-right .elementor-icon-box-wrapper{display:flex}.elementor-widget-icon-box.elementor-laptop-position-left .elementor-icon-box-icon,.elementor-widget-icon-box.elementor-laptop-position-right .elementor-icon-box-icon{display:inline-flex;flex:0 0 auto}.elementor-widget-icon-box.elementor-laptop-position-right .elementor-icon-box-wrapper{text-align:right;flex-direction:row-reverse}.elementor-widget-icon-box.elementor-laptop-position-right .elementor-icon-box-icon{margin-left:var(--icon-box-icon-margin,15px);margin-right:0;margin-bottom:unset}.elementor-widget-icon-box.elementor-laptop-position-left .elementor-icon-box-wrapper{text-align:left;flex-direction:row}.elementor-widget-icon-box.elementor-laptop-position-left .elementor-icon-box-icon{margin-right:var(--icon-box-icon-margin,15px);margin-left:0;margin-bottom:unset}.elementor-widget-icon-box.elementor-laptop-position-top .elementor-icon-box-wrapper{display:block;text-align:center;flex-direction:unset}.elementor-widget-icon-box.elementor-laptop-position-top .elementor-icon-box-icon{margin-bottom:var(--icon-box-icon-margin,15px);margin-right:auto;margin-left:auto}}@media (max-width:-1){.elementor-widget-icon-box.elementor-tablet_extra-position-left .elementor-icon-box-wrapper,.elementor-widget-icon-box.elementor-tablet_extra-position-right .elementor-icon-box-wrapper{display:flex}.elementor-widget-icon-box.elementor-tablet_extra-position-left .elementor-icon-box-icon,.elementor-widget-icon-box.elementor-tablet_extra-position-right .elementor-icon-box-icon{display:inline-flex;flex:0 0 auto}.elementor-widget-icon-box.elementor-tablet_extra-position-right .elementor-icon-box-wrapper{text-align:right;flex-direction:row-reverse}.elementor-widget-icon-box.elementor-tablet_extra-position-right .elementor-icon-box-icon{margin-left:var(--icon-box-icon-margin,15px);margin-right:0;margin-bottom:unset}.elementor-widget-icon-box.elementor-tablet_extra-position-left .elementor-icon-box-wrapper{text-align:left;flex-direction:row}.elementor-widget-icon-box.elementor-tablet_extra-position-left .elementor-icon-box-icon{margin-right:var(--icon-box-icon-margin,15px);margin-left:0;margin-bottom:unset}.elementor-widget-icon-box.elementor-tablet_extra-position-top .elementor-icon-box-wrapper{display:block;text-align:center;flex-direction:unset}.elementor-widget-icon-box.elementor-tablet_extra-position-top .elementor-icon-box-icon{margin-bottom:var(--icon-box-icon-margin,15px);margin-right:auto;margin-left:auto}}@media (max-width:1024px){.elementor-widget-icon-box.elementor-tablet-position-left .elementor-icon-box-wrapper,.elementor-widget-icon-box.elementor-tablet-position-right .elementor-icon-box-wrapper{display:flex}.elementor-widget-icon-box.elementor-tablet-position-left .elementor-icon-box-icon,.elementor-widget-icon-box.elementor-tablet-position-right .elementor-icon-box-icon{display:inline-flex;flex:0 0 auto}.elementor-widget-icon-box.elementor-tablet-position-right .elementor-icon-box-wrapper{text-align:right;flex-direction:row-reverse}.elementor-widget-icon-box.elementor-tablet-position-right .elementor-icon-box-icon{margin-left:var(--icon-box-icon-margin,15px);margin-right:0;margin-bottom:unset}.elementor-widget-icon-box.elementor-tablet-position-left .elementor-icon-box-wrapper{text-align:left;flex-direction:row}.elementor-widget-icon-box.elementor-tablet-position-left .elementor-icon-box-icon{margin-right:var(--icon-box-icon-margin,15px);margin-left:0;margin-bottom:unset}.elementor-widget-icon-box.elementor-tablet-position-top .elementor-icon-box-wrapper{display:block;text-align:center;flex-direction:unset}.elementor-widget-icon-box.elementor-tablet-position-top .elementor-icon-box-icon{margin-bottom:var(--icon-box-icon-margin,15px);margin-right:auto;margin-left:auto}}@media (max-width:-1){.elementor-widget-icon-box.elementor-mobile_extra-position-left .elementor-icon-box-wrapper,.elementor-widget-icon-box.elementor-mobile_extra-position-right .elementor-icon-box-wrapper{display:flex}.elementor-widget-icon-box.elementor-mobile_extra-position-left .elementor-icon-box-icon,.elementor-widget-icon-box.elementor-mobile_extra-position-right .elementor-icon-box-icon{display:inline-flex;flex:0 0 auto}.elementor-widget-icon-box.elementor-mobile_extra-position-right .elementor-icon-box-wrapper{text-align:right;flex-direction:row-reverse}.elementor-widget-icon-box.elementor-mobile_extra-position-right .elementor-icon-box-icon{margin-left:var(--icon-box-icon-margin,15px);margin-right:0;margin-bottom:unset}.elementor-widget-icon-box.elementor-mobile_extra-position-left .elementor-icon-box-wrapper{text-align:left;flex-direction:row}.elementor-widget-icon-box.elementor-mobile_extra-position-left .elementor-icon-box-icon{margin-right:var(--icon-box-icon-margin,15px);margin-left:0;margin-bottom:unset}.elementor-widget-icon-box.elementor-mobile_extra-position-top .elementor-icon-box-wrapper{display:block;text-align:center;flex-direction:unset}.elementor-widget-icon-box.elementor-mobile_extra-position-top .elementor-icon-box-icon{margin-bottom:var(--icon-box-icon-margin,15px);margin-right:auto;margin-left:auto}}@media (max-width:767px){.elementor-widget-icon-box.elementor-mobile-position-left .elementor-icon-box-wrapper,.elementor-widget-icon-box.elementor-mobile-position-right .elementor-icon-box-wrapper{display:flex}.elementor-widget-icon-box.elementor-mobile-position-left .elementor-icon-box-icon,.elementor-widget-icon-box.elementor-mobile-position-right .elementor-icon-box-icon{display:inline-flex;flex:0 0 auto}.elementor-widget-icon-box.elementor-mobile-position-right .elementor-icon-box-wrapper{text-align:right;flex-direction:row-reverse}.elementor-widget-icon-box.elementor-mobile-position-right .elementor-icon-box-icon{margin-left:var(--icon-box-icon-margin,15px);margin-right:0;margin-bottom:unset}.elementor-widget-icon-box.elementor-mobile-position-left .elementor-icon-box-wrapper{text-align:left;flex-direction:row}.elementor-widget-icon-box.elementor-mobile-position-left .elementor-icon-box-icon{margin-right:var(--icon-box-icon-margin,15px);margin-left:0;margin-bottom:unset}.elementor-widget-icon-box.elementor-mobile-position-top .elementor-icon-box-wrapper{display:block;text-align:center;flex-direction:unset}.elementor-widget-icon-box.elementor-mobile-position-top .elementor-icon-box-icon{margin-bottom:var(--icon-box-icon-margin,15px);margin-right:auto;margin-left:auto}.elementor-widget-icon-box.elementor-position-left .elementor-icon-box-icon,.elementor-widget-icon-box.elementor-position-right .elementor-icon-box-icon{display:block;flex:unset}}.elementor-widget-icon-box .elementor-icon-box-title a{color:inherit}.elementor-widget-icon-box .elementor-icon-box-content{flex-grow:1}.elementor-widget-icon-box .elementor-icon-box-description{margin:0}.elementor-widget.elementor-icon-list--layout-inline .elementor-widget-container{overflow:hidden}.elementor-widget .elementor-icon-list-items.elementor-inline-items{margin-right:-8px;margin-left:-8px}.elementor-widget .elementor-icon-list-items.elementor-inline-items .elementor-icon-list-item{margin-right:8px;margin-left:8px}.elementor-widget .elementor-icon-list-items.elementor-inline-items .elementor-icon-list-item:after{width:auto;left:auto;right:auto;position:relative;height:100%;border-top:0;border-bottom:0;border-right:0;border-left-width:1px;border-style:solid;right:-8px}.elementor-widget .elementor-icon-list-items{list-style-type:none;margin:0;padding:0}.elementor-widget .elementor-icon-list-item{margin:0;padding:0;position:relative}.elementor-widget .elementor-icon-list-item:after{position:absolute;bottom:0;width:100%}.elementor-widget .elementor-icon-list-item,.elementor-widget .elementor-icon-list-item a{display:flex;font-size:inherit;align-items:var(--icon-vertical-align,center)}.elementor-widget .elementor-icon-list-icon+.elementor-icon-list-text{align-self:center;padding-left:5px}.elementor-widget .elementor-icon-list-icon{display:flex;position:relative;top:var(--icon-vertical-offset,initial)}.elementor-widget .elementor-icon-list-icon svg{width:var(--e-icon-list-icon-size,1em);height:var(--e-icon-list-icon-size,1em)}.elementor-widget .elementor-icon-list-icon i{width:1.25em;font-size:var(--e-icon-list-icon-size)}.elementor-widget.elementor-widget-icon-list .elementor-icon-list-icon{text-align:var(--e-icon-list-icon-align)}.elementor-widget.elementor-widget-icon-list .elementor-icon-list-icon svg{margin:var(--e-icon-list-icon-margin,0 calc(var(--e-icon-list-icon-size, 1em) * .25) 0 0)}.elementor-widget.elementor-list-item-link-full_width a{width:100%}.elementor-widget.elementor-align-center .elementor-icon-list-item,.elementor-widget.elementor-align-center .elementor-icon-list-item a{justify-content:center}.elementor-widget.elementor-align-center .elementor-icon-list-item:after{margin:auto}.elementor-widget.elementor-align-center .elementor-inline-items{justify-content:center}.elementor-widget.elementor-align-left .elementor-icon-list-item,.elementor-widget.elementor-align-left .elementor-icon-list-item a{justify-content:flex-start;text-align:left}.elementor-widget.elementor-align-left .elementor-inline-items{justify-content:flex-start}.elementor-widget.elementor-align-right .elementor-icon-list-item,.elementor-widget.elementor-align-right .elementor-icon-list-item a{justify-content:flex-end;text-align:right}.elementor-widget.elementor-align-right .elementor-icon-list-items{justify-content:flex-end}.elementor-widget:not(.elementor-align-right) .elementor-icon-list-item:after{left:0}.elementor-widget:not(.elementor-align-left) .elementor-icon-list-item:after{right:0}@media (min-width:-1){.elementor-widget.elementor-widescreen-align-center .elementor-icon-list-item,.elementor-widget.elementor-widescreen-align-center .elementor-icon-list-item a{justify-content:center}.elementor-widget.elementor-widescreen-align-center .elementor-icon-list-item:after{margin:auto}.elementor-widget.elementor-widescreen-align-center .elementor-inline-items{justify-content:center}.elementor-widget.elementor-widescreen-align-left .elementor-icon-list-item,.elementor-widget.elementor-widescreen-align-left .elementor-icon-list-item a{justify-content:flex-start;text-align:left}.elementor-widget.elementor-widescreen-align-left .elementor-inline-items{justify-content:flex-start}.elementor-widget.elementor-widescreen-align-right .elementor-icon-list-item,.elementor-widget.elementor-widescreen-align-right .elementor-icon-list-item a{justify-content:flex-end;text-align:right}.elementor-widget.elementor-widescreen-align-right .elementor-icon-list-items{justify-content:flex-end}.elementor-widget:not(.elementor-widescreen-align-right) .elementor-icon-list-item:after{left:0}.elementor-widget:not(.elementor-widescreen-align-left) .elementor-icon-list-item:after{right:0}}@media (max-width:-1){.elementor-widget.elementor-laptop-align-center .elementor-icon-list-item,.elementor-widget.elementor-laptop-align-center .elementor-icon-list-item a{justify-content:center}.elementor-widget.elementor-laptop-align-center .elementor-icon-list-item:after{margin:auto}.elementor-widget.elementor-laptop-align-center .elementor-inline-items{justify-content:center}.elementor-widget.elementor-laptop-align-left .elementor-icon-list-item,.elementor-widget.elementor-laptop-align-left .elementor-icon-list-item a{justify-content:flex-start;text-align:left}.elementor-widget.elementor-laptop-align-left .elementor-inline-items{justify-content:flex-start}.elementor-widget.elementor-laptop-align-right .elementor-icon-list-item,.elementor-widget.elementor-laptop-align-right .elementor-icon-list-item a{justify-content:flex-end;text-align:right}.elementor-widget.elementor-laptop-align-right .elementor-icon-list-items{justify-content:flex-end}.elementor-widget:not(.elementor-laptop-align-right) .elementor-icon-list-item:after{left:0}.elementor-widget:not(.elementor-laptop-align-left) .elementor-icon-list-item:after{right:0}}@media (max-width:-1){.elementor-widget.elementor-tablet_extra-align-center .elementor-icon-list-item,.elementor-widget.elementor-tablet_extra-align-center .elementor-icon-list-item a{justify-content:center}.elementor-widget.elementor-tablet_extra-align-center .elementor-icon-list-item:after{margin:auto}.elementor-widget.elementor-tablet_extra-align-center .elementor-inline-items{justify-content:center}.elementor-widget.elementor-tablet_extra-align-left .elementor-icon-list-item,.elementor-widget.elementor-tablet_extra-align-left .elementor-icon-list-item a{justify-content:flex-start;text-align:left}.elementor-widget.elementor-tablet_extra-align-left .elementor-inline-items{justify-content:flex-start}.elementor-widget.elementor-tablet_extra-align-right .elementor-icon-list-item,.elementor-widget.elementor-tablet_extra-align-right .elementor-icon-list-item a{justify-content:flex-end;text-align:right}.elementor-widget.elementor-tablet_extra-align-right .elementor-icon-list-items{justify-content:flex-end}.elementor-widget:not(.elementor-tablet_extra-align-right) .elementor-icon-list-item:after{left:0}.elementor-widget:not(.elementor-tablet_extra-align-left) .elementor-icon-list-item:after{right:0}}@media (max-width:1024px){.elementor-widget.elementor-tablet-align-center .elementor-icon-list-item,.elementor-widget.elementor-tablet-align-center .elementor-icon-list-item a{justify-content:center}.elementor-widget.elementor-tablet-align-center .elementor-icon-list-item:after{margin:auto}.elementor-widget.elementor-tablet-align-center .elementor-inline-items{justify-content:center}.elementor-widget.elementor-tablet-align-left .elementor-icon-list-item,.elementor-widget.elementor-tablet-align-left .elementor-icon-list-item a{justify-content:flex-start;text-align:left}.elementor-widget.elementor-tablet-align-left .elementor-inline-items{justify-content:flex-start}.elementor-widget.elementor-tablet-align-right .elementor-icon-list-item,.elementor-widget.elementor-tablet-align-right .elementor-icon-list-item a{justify-content:flex-end;text-align:right}.elementor-widget.elementor-tablet-align-right .elementor-icon-list-items{justify-content:flex-end}.elementor-widget:not(.elementor-tablet-align-right) .elementor-icon-list-item:after{left:0}.elementor-widget:not(.elementor-tablet-align-left) .elementor-icon-list-item:after{right:0}}@media (max-width:-1){.elementor-widget.elementor-mobile_extra-align-center .elementor-icon-list-item,.elementor-widget.elementor-mobile_extra-align-center .elementor-icon-list-item a{justify-content:center}.elementor-widget.elementor-mobile_extra-align-center .elementor-icon-list-item:after{margin:auto}.elementor-widget.elementor-mobile_extra-align-center .elementor-inline-items{justify-content:center}.elementor-widget.elementor-mobile_extra-align-left .elementor-icon-list-item,.elementor-widget.elementor-mobile_extra-align-left .elementor-icon-list-item a{justify-content:flex-start;text-align:left}.elementor-widget.elementor-mobile_extra-align-left .elementor-inline-items{justify-content:flex-start}.elementor-widget.elementor-mobile_extra-align-right .elementor-icon-list-item,.elementor-widget.elementor-mobile_extra-align-right .elementor-icon-list-item a{justify-content:flex-end;text-align:right}.elementor-widget.elementor-mobile_extra-align-right .elementor-icon-list-items{justify-content:flex-end}.elementor-widget:not(.elementor-mobile_extra-align-right) .elementor-icon-list-item:after{left:0}.elementor-widget:not(.elementor-mobile_extra-align-left) .elementor-icon-list-item:after{right:0}}@media (max-width:767px){.elementor-widget.elementor-mobile-align-center .elementor-icon-list-item,.elementor-widget.elementor-mobile-align-center .elementor-icon-list-item a{justify-content:center}.elementor-widget.elementor-mobile-align-center .elementor-icon-list-item:after{margin:auto}.elementor-widget.elementor-mobile-align-center .elementor-inline-items{justify-content:center}.elementor-widget.elementor-mobile-align-left .elementor-icon-list-item,.elementor-widget.elementor-mobile-align-left .elementor-icon-list-item a{justify-content:flex-start;text-align:left}.elementor-widget.elementor-mobile-align-left .elementor-inline-items{justify-content:flex-start}.elementor-widget.elementor-mobile-align-right .elementor-icon-list-item,.elementor-widget.elementor-mobile-align-right .elementor-icon-list-item a{justify-content:flex-end;text-align:right}.elementor-widget.elementor-mobile-align-right .elementor-icon-list-items{justify-content:flex-end}.elementor-widget:not(.elementor-mobile-align-right) .elementor-icon-list-item:after{left:0}.elementor-widget:not(.elementor-mobile-align-left) .elementor-icon-list-item:after{right:0}}.elementor-widget-image{text-align:center}.elementor-widget-image a{display:inline-block}.elementor-widget-image a img[src$=".svg"]{width:48px}.elementor-widget-image img{vertical-align:middle;display:inline-block}.elementor-widget-image-box .elementor-image-box-content{width:100%}@media (min-width:768px){.elementor-widget-image-box.elementor-position-left .elementor-image-box-wrapper,.elementor-widget-image-box.elementor-position-right .elementor-image-box-wrapper{display:flex}.elementor-widget-image-box.elementor-position-right .elementor-image-box-wrapper{text-align:right;flex-direction:row-reverse}.elementor-widget-image-box.elementor-position-left .elementor-image-box-wrapper{text-align:left;flex-direction:row}.elementor-widget-image-box.elementor-position-top .elementor-image-box-img{margin:auto}.elementor-widget-image-box.elementor-vertical-align-top .elementor-image-box-wrapper{align-items:flex-start}.elementor-widget-image-box.elementor-vertical-align-middle .elementor-image-box-wrapper{align-items:center}.elementor-widget-image-box.elementor-vertical-align-bottom .elementor-image-box-wrapper{align-items:flex-end}}@media (max-width:767px){.elementor-widget-image-box .elementor-image-box-img{margin-left:auto!important;margin-right:auto!important;margin-bottom:15px}}.elementor-widget-image-box .elementor-image-box-img{display:inline-block}.elementor-widget-image-box .elementor-image-box-title a{color:inherit}.elementor-widget-image-box .elementor-image-box-wrapper{text-align:center}.elementor-widget-image-box .elementor-image-box-description{margin:0}.elementor-widget-image-carousel .swiper,.elementor-widget-image-carousel .swiper-container{position:static}.elementor-widget-image-carousel .swiper-container .swiper-slide figure,.elementor-widget-image-carousel .swiper .swiper-slide figure{line-height:inherit}.elementor-widget-image-carousel .swiper-slide{text-align:center}.elementor-image-carousel-wrapper:not(.swiper-container-initialized):not(.swiper-initialized) .swiper-slide{max-width:calc(100% / var(--e-image-carousel-slides-to-show, 3))}body.elementor-page .elementor-widget-menu-anchor{margin-bottom:0}.elementor-widget-progress{text-align:left}.elementor-progress-wrapper{position:relative;background-color:#eee;color:#fff;height:100%;border-radius:2px}.elementor-progress-bar{display:flex;background-color:#69727d;width:0;font-size:11px;height:30px;line-height:30px;border-radius:2px;transition:width 1s ease-in-out}.elementor-progress-text{flex-grow:1;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;padding-left:15px}.elementor-progress-percentage{padding-right:15px}.elementor-widget-progress .elementor-progress-wrapper.progress-info .elementor-progress-bar{background-color:#5bc0de}.elementor-widget-progress .elementor-progress-wrapper.progress-success .elementor-progress-bar{background-color:#5cb85c}.elementor-widget-progress .elementor-progress-wrapper.progress-warning .elementor-progress-bar{background-color:#f0ad4e}.elementor-widget-progress .elementor-progress-wrapper.progress-danger .elementor-progress-bar{background-color:#d9534f}.elementor-progress .elementor-title{display:block}@media (max-width:767px){.elementor-progress-text{padding-left:10px}}.e-con-inner .elementor-progress-wrapper,.e-con .elementor-progress-wrapper{height:auto}.elementor-widget-social-icons.elementor-grid-0 .elementor-widget-container,.elementor-widget-social-icons.elementor-grid-mobile-0 .elementor-widget-container,.elementor-widget-social-icons.elementor-grid-tablet-0 .elementor-widget-container{line-height:1;font-size:0}.elementor-widget-social-icons:not(.elementor-grid-0):not(.elementor-grid-tablet-0):not(.elementor-grid-mobile-0) .elementor-grid{display:inline-grid}.elementor-widget-social-icons .elementor-grid{grid-column-gap:var(--grid-column-gap,5px);grid-row-gap:var(--grid-row-gap,5px);grid-template-columns:var(--grid-template-columns);justify-content:var(--justify-content,center);justify-items:var(--justify-content,center)}.elementor-icon.elementor-social-icon{font-size:var(--icon-size,25px);line-height:var(--icon-size,25px);width:calc(var(--icon-size, 25px) + 2 * var(--icon-padding, .5em));height:calc(var(--icon-size, 25px) + 2 * var(--icon-padding, .5em))}.elementor-social-icon{--e-social-icon-icon-color:#fff;display:inline-flex;background-color:#69727d;align-items:center;justify-content:center;text-align:center;cursor:pointer}.elementor-social-icon i{color:var(--e-social-icon-icon-color)}.elementor-social-icon svg{fill:var(--e-social-icon-icon-color)}.elementor-social-icon:last-child{margin:0}.elementor-social-icon:hover{opacity:.9;color:#fff}.elementor-social-icon-android{background-color:#a4c639}.elementor-social-icon-apple{background-color:#999}.elementor-social-icon-behance{background-color:#1769ff}.elementor-social-icon-bitbucket{background-color:#205081}.elementor-social-icon-codepen{background-color:#000}.elementor-social-icon-delicious{background-color:#39f}.elementor-social-icon-deviantart{background-color:#05cc47}.elementor-social-icon-digg{background-color:#005be2}.elementor-social-icon-dribbble{background-color:#ea4c89}.elementor-social-icon-elementor{background-color:#d30c5c}.elementor-social-icon-envelope{background-color:#ea4335}.elementor-social-icon-facebook,.elementor-social-icon-facebook-f{background-color:#3b5998}.elementor-social-icon-flickr{background-color:#0063dc}.elementor-social-icon-foursquare{background-color:#2d5be3}.elementor-social-icon-free-code-camp,.elementor-social-icon-freecodecamp{background-color:#006400}.elementor-social-icon-github{background-color:#333}.elementor-social-icon-gitlab{background-color:#e24329}.elementor-social-icon-globe{background-color:#69727d}.elementor-social-icon-google-plus,.elementor-social-icon-google-plus-g{background-color:#dd4b39}.elementor-social-icon-houzz{background-color:#7ac142}.elementor-social-icon-instagram{background-color:#262626}.elementor-social-icon-jsfiddle{background-color:#487aa2}.elementor-social-icon-link{background-color:#818a91}.elementor-social-icon-linkedin,.elementor-social-icon-linkedin-in{background-color:#0077b5}.elementor-social-icon-medium{background-color:#00ab6b}.elementor-social-icon-meetup{background-color:#ec1c40}.elementor-social-icon-mixcloud{background-color:#273a4b}.elementor-social-icon-odnoklassniki{background-color:#f4731c}.elementor-social-icon-pinterest{background-color:#bd081c}.elementor-social-icon-product-hunt{background-color:#da552f}.elementor-social-icon-reddit{background-color:#ff4500}.elementor-social-icon-rss{background-color:#f26522}.elementor-social-icon-shopping-cart{background-color:#4caf50}.elementor-social-icon-skype{background-color:#00aff0}.elementor-social-icon-slideshare{background-color:#0077b5}.elementor-social-icon-snapchat{background-color:#fffc00}.elementor-social-icon-soundcloud{background-color:#f80}.elementor-social-icon-spotify{background-color:#2ebd59}.elementor-social-icon-stack-overflow{background-color:#fe7a15}.elementor-social-icon-steam{background-color:#00adee}.elementor-social-icon-stumbleupon{background-color:#eb4924}.elementor-social-icon-telegram{background-color:#2ca5e0}.elementor-social-icon-threads{background-color:#000}.elementor-social-icon-thumb-tack{background-color:#1aa1d8}.elementor-social-icon-tripadvisor{background-color:#589442}.elementor-social-icon-tumblr{background-color:#35465c}.elementor-social-icon-twitch{background-color:#6441a5}.elementor-social-icon-twitter{background-color:#1da1f2}.elementor-social-icon-viber{background-color:#665cac}.elementor-social-icon-vimeo{background-color:#1ab7ea}.elementor-social-icon-vk{background-color:#45668e}.elementor-social-icon-weibo{background-color:#dd2430}.elementor-social-icon-weixin{background-color:#31a918}.elementor-social-icon-whatsapp{background-color:#25d366}.elementor-social-icon-wordpress{background-color:#21759b}.elementor-social-icon-x-twitter{background-color:#000}.elementor-social-icon-xing{background-color:#026466}.elementor-social-icon-yelp{background-color:#af0606}.elementor-social-icon-youtube{background-color:#cd201f}.elementor-social-icon-500px{background-color:#0099e5}.elementor-shape-rounded .elementor-icon.elementor-social-icon{border-radius:10%}.elementor-shape-circle .elementor-icon.elementor-social-icon{border-radius:50%}.elementor-column .elementor-spacer-inner{height:var(--spacer-size)}.e-con{--container-widget-width:100%}.e-con-inner>.elementor-widget-spacer,.e-con>.elementor-widget-spacer{width:var(--container-widget-width,var(--spacer-size));--align-self:var(--container-widget-align-self,initial);--flex-shrink:0}.e-con-inner>.elementor-widget-spacer>.elementor-widget-container,.e-con>.elementor-widget-spacer>.elementor-widget-container{height:100%;width:100%}.e-con-inner>.elementor-widget-spacer>.elementor-widget-container>.elementor-spacer,.e-con>.elementor-widget-spacer>.elementor-widget-container>.elementor-spacer{height:100%}.e-con-inner>.elementor-widget-spacer>.elementor-widget-container>.elementor-spacer>.elementor-spacer-inner,.e-con>.elementor-widget-spacer>.elementor-widget-container>.elementor-spacer>.elementor-spacer-inner{height:var(--container-widget-height,var(--spacer-size))}.e-con-inner>.elementor-widget-spacer.elementor-widget-empty,.e-con>.elementor-widget-spacer.elementor-widget-empty{position:relative;min-height:22px;min-width:22px}.e-con-inner>.elementor-widget-spacer.elementor-widget-empty .elementor-widget-empty-icon,.e-con>.elementor-widget-spacer.elementor-widget-empty .elementor-widget-empty-icon{position:absolute;top:0;bottom:0;left:0;right:0;margin:auto;padding:0;width:22px;height:22px}.elementor-star-rating{color:#ccd6df;font-family:eicons;display:inline-block}.elementor-star-rating i{display:inline-block;position:relative;font-style:normal;cursor:default}.elementor-star-rating i:before{content:"\e934";display:block;font-size:inherit;font-family:inherit;position:absolute;overflow:hidden;color:#f0ad4e;top:0;left:0}.elementor-star-rating .elementor-star-empty:before{content:none}.elementor-star-rating .elementor-star-1:before{width:10%}.elementor-star-rating .elementor-star-2:before{width:20%}.elementor-star-rating .elementor-star-3:before{width:30%}.elementor-star-rating .elementor-star-4:before{width:40%}.elementor-star-rating .elementor-star-5:before{width:50%}.elementor-star-rating .elementor-star-6:before{width:60%}.elementor-star-rating .elementor-star-7:before{width:70%}.elementor-star-rating .elementor-star-8:before{width:80%}.elementor-star-rating .elementor-star-9:before{width:90%}.elementor-star-rating__wrapper{display:flex;align-items:center}.elementor-star-rating__title{margin-right:10px}.elementor-star-rating--align-right .elementor-star-rating__wrapper{text-align:right;justify-content:flex-end}.elementor-star-rating--align-left .elementor-star-rating__wrapper{text-align:left;justify-content:flex-start}.elementor-star-rating--align-center .elementor-star-rating__wrapper{text-align:center;justify-content:center}.elementor-star-rating--align-justify .elementor-star-rating__title{margin-right:auto}@media (max-width:1024px){.elementor-star-rating-tablet--align-right .elementor-star-rating__wrapper{text-align:right;justify-content:flex-end}.elementor-star-rating-tablet--align-left .elementor-star-rating__wrapper{text-align:left;justify-content:flex-start}.elementor-star-rating-tablet--align-center .elementor-star-rating__wrapper{text-align:center;justify-content:center}.elementor-star-rating-tablet--align-justify .elementor-star-rating__title{margin-right:auto}}@media (max-width:767px){.elementor-star-rating-mobile--align-right .elementor-star-rating__wrapper{text-align:right;justify-content:flex-end}.elementor-star-rating-mobile--align-left .elementor-star-rating__wrapper{text-align:left;justify-content:flex-start}.elementor-star-rating-mobile--align-center .elementor-star-rating__wrapper{text-align:center;justify-content:center}.elementor-star-rating-mobile--align-justify .elementor-star-rating__title{margin-right:auto}}.last-star{letter-spacing:0}.elementor--star-style-star_unicode .elementor-star-rating{font-family:Arial,Helvetica,sans-serif}.elementor--star-style-star_unicode .elementor-star-rating i:not(.elementor-star-empty):before{content:"★"}.elementor-widget-tabs.elementor-tabs-view-vertical .elementor-tabs-wrapper{width:25%;flex-shrink:0}.elementor-widget-tabs.elementor-tabs-view-vertical .elementor-tab-desktop-title.elementor-active{border-right-style:none}.elementor-widget-tabs.elementor-tabs-view-vertical .elementor-tab-desktop-title.elementor-active:after,.elementor-widget-tabs.elementor-tabs-view-vertical .elementor-tab-desktop-title.elementor-active:before{height:999em;width:0;right:0;border-right-style:solid}.elementor-widget-tabs.elementor-tabs-view-vertical .elementor-tab-desktop-title.elementor-active:before{top:0;transform:translateY(-100%)}.elementor-widget-tabs.elementor-tabs-view-vertical .elementor-tab-desktop-title.elementor-active:after{top:100%}.elementor-widget-tabs.elementor-tabs-view-horizontal .elementor-tab-desktop-title{display:table-cell}.elementor-widget-tabs.elementor-tabs-view-horizontal .elementor-tab-desktop-title.elementor-active{border-bottom-style:none}.elementor-widget-tabs.elementor-tabs-view-horizontal .elementor-tab-desktop-title.elementor-active:after,.elementor-widget-tabs.elementor-tabs-view-horizontal .elementor-tab-desktop-title.elementor-active:before{bottom:0;height:0;width:999em;border-bottom-style:solid}.elementor-widget-tabs.elementor-tabs-view-horizontal .elementor-tab-desktop-title.elementor-active:before{right:100%}.elementor-widget-tabs.elementor-tabs-view-horizontal .elementor-tab-desktop-title.elementor-active:after{left:100%}.elementor-widget-tabs .elementor-tab-content,.elementor-widget-tabs .elementor-tab-title,.elementor-widget-tabs .elementor-tab-title:after,.elementor-widget-tabs .elementor-tab-title:before,.elementor-widget-tabs .elementor-tabs-content-wrapper{border:1px #d5d8dc}.elementor-widget-tabs .elementor-tabs{text-align:left}.elementor-widget-tabs .elementor-tabs-wrapper{overflow:hidden}.elementor-widget-tabs .elementor-tab-title{cursor:pointer;outline:var(--focus-outline,none)}.elementor-widget-tabs .elementor-tab-desktop-title{position:relative;padding:20px 25px;font-weight:700;line-height:1;border:solid transparent}.elementor-widget-tabs .elementor-tab-desktop-title.elementor-active{border-color:#d5d8dc}.elementor-widget-tabs .elementor-tab-desktop-title.elementor-active:after,.elementor-widget-tabs .elementor-tab-desktop-title.elementor-active:before{display:block;content:"";position:absolute}.elementor-widget-tabs .elementor-tab-desktop-title:focus-visible{border:1px solid #000}.elementor-widget-tabs .elementor-tab-mobile-title{padding:10px;cursor:pointer}.elementor-widget-tabs .elementor-tab-content{padding:20px;display:none}@media (max-width:767px){.elementor-tabs .elementor-tab-content,.elementor-tabs .elementor-tab-title{border-style:solid solid none}.elementor-tabs .elementor-tabs-wrapper{display:none}.elementor-tabs .elementor-tabs-content-wrapper{border-bottom-style:solid}.elementor-tabs .elementor-tab-content{padding:10px}}@media (min-width:768px){.elementor-widget-tabs.elementor-tabs-view-vertical .elementor-tabs{display:flex}.elementor-widget-tabs.elementor-tabs-view-vertical .elementor-tabs-wrapper{flex-direction:column}.elementor-widget-tabs.elementor-tabs-view-vertical .elementor-tabs-content-wrapper{flex-grow:1;border-style:solid solid solid none}.elementor-widget-tabs.elementor-tabs-view-horizontal .elementor-tab-content{border-style:none solid solid}.elementor-widget-tabs.elementor-tabs-alignment-center .elementor-tabs-wrapper,.elementor-widget-tabs.elementor-tabs-alignment-end .elementor-tabs-wrapper,.elementor-widget-tabs.elementor-tabs-alignment-stretch .elementor-tabs-wrapper{display:flex}.elementor-widget-tabs.elementor-tabs-alignment-center .elementor-tabs-wrapper{justify-content:center}.elementor-widget-tabs.elementor-tabs-alignment-end .elementor-tabs-wrapper{justify-content:flex-end}.elementor-widget-tabs.elementor-tabs-alignment-stretch.elementor-tabs-view-horizontal .elementor-tab-title{width:100%}.elementor-widget-tabs.elementor-tabs-alignment-stretch.elementor-tabs-view-vertical .elementor-tab-title{height:100%}.elementor-tabs .elementor-tab-mobile-title{display:none}}.elementor-testimonial-wrapper{overflow:hidden;text-align:center}.elementor-testimonial-wrapper .elementor-testimonial-content{font-size:1.3em;margin-bottom:20px}.elementor-testimonial-wrapper .elementor-testimonial-name{line-height:1.5;display:block}.elementor-testimonial-wrapper .elementor-testimonial-job{font-size:.85em;display:block}.elementor-testimonial-wrapper .elementor-testimonial-meta{width:100%;line-height:1}.elementor-testimonial-wrapper .elementor-testimonial-meta-inner{display:inline-block}.elementor-testimonial-wrapper .elementor-testimonial-meta .elementor-testimonial-details,.elementor-testimonial-wrapper .elementor-testimonial-meta .elementor-testimonial-image{display:table-cell;vertical-align:middle}.elementor-testimonial-wrapper .elementor-testimonial-meta .elementor-testimonial-image img{width:60px;height:60px;border-radius:50%;-o-object-fit:cover;object-fit:cover;max-width:none}.elementor-testimonial-wrapper .elementor-testimonial-meta.elementor-testimonial-image-position-aside .elementor-testimonial-image{padding-right:15px}.elementor-testimonial-wrapper .elementor-testimonial-meta.elementor-testimonial-image-position-aside .elementor-testimonial-details{text-align:left}.elementor-testimonial-wrapper .elementor-testimonial-meta.elementor-testimonial-image-position-top .elementor-testimonial-details,.elementor-testimonial-wrapper .elementor-testimonial-meta.elementor-testimonial-image-position-top .elementor-testimonial-image{display:block}.elementor-testimonial-wrapper .elementor-testimonial-meta.elementor-testimonial-image-position-top .elementor-testimonial-image{margin-bottom:20px}.elementor-widget-text-editor.elementor-drop-cap-view-stacked .elementor-drop-cap{background-color:#69727d;color:#fff}.elementor-widget-text-editor.elementor-drop-cap-view-framed .elementor-drop-cap{color:#69727d;border:3px solid;background-color:transparent}.elementor-widget-text-editor:not(.elementor-drop-cap-view-default) .elementor-drop-cap{margin-top:8px}.elementor-widget-text-editor:not(.elementor-drop-cap-view-default) .elementor-drop-cap-letter{width:1em;height:1em}.elementor-widget-text-editor .elementor-drop-cap{float:left;text-align:center;line-height:1;font-size:50px}.elementor-widget-text-editor .elementor-drop-cap-letter{display:inline-block}.elementor-toggle{text-align:left}.elementor-toggle .elementor-tab-title{font-weight:700;line-height:1;margin:0;padding:15px;border-bottom:1px solid #d5d8dc;cursor:pointer;outline:none}.elementor-toggle .elementor-tab-title .elementor-toggle-icon{display:inline-block;width:1em}.elementor-toggle .elementor-tab-title .elementor-toggle-icon svg{margin-inline-start:-5px;width:1em;height:1em}.elementor-toggle .elementor-tab-title .elementor-toggle-icon.elementor-toggle-icon-right{float:right;text-align:right}.elementor-toggle .elementor-tab-title .elementor-toggle-icon.elementor-toggle-icon-left{float:left;text-align:left}.elementor-toggle .elementor-tab-title .elementor-toggle-icon .elementor-toggle-icon-closed{display:block}.elementor-toggle .elementor-tab-title .elementor-toggle-icon .elementor-toggle-icon-opened{display:none}.elementor-toggle .elementor-tab-title.elementor-active{border-bottom:none}.elementor-toggle .elementor-tab-title.elementor-active .elementor-toggle-icon-closed{display:none}.elementor-toggle .elementor-tab-title.elementor-active .elementor-toggle-icon-opened{display:block}.elementor-toggle .elementor-tab-content{padding:15px;border-bottom:1px solid #d5d8dc;display:none}@media (max-width:767px){.elementor-toggle .elementor-tab-title{padding:12px}.elementor-toggle .elementor-tab-content{padding:12px 10px}}.e-con-inner>.elementor-widget-toggle,.e-con>.elementor-widget-toggle{width:var(--container-widget-width);--flex-grow:var(--container-widget-flex-grow)}.elementor-widget-video .elementor-widget-container{overflow:hidden;transform:translateZ(0)}.elementor-widget-video .elementor-wrapper{aspect-ratio:var(--video-aspect-ratio)}.elementor-widget-video .elementor-wrapper iframe,.elementor-widget-video .elementor-wrapper video{height:100%;width:100%;display:flex;border:none;background-color:#000}@supports not (aspect-ratio:1/1){.elementor-widget-video .elementor-wrapper{position:relative;overflow:hidden;height:0;padding-bottom:calc(100% / var(--video-aspect-ratio))}.elementor-widget-video .elementor-wrapper iframe,.elementor-widget-video .elementor-wrapper video{position:absolute;top:0;right:0;bottom:0;left:0}}.elementor-widget-video .elementor-open-inline .elementor-custom-embed-image-overlay{position:absolute;top:0;right:0;bottom:0;left:0;background-size:cover;background-position:50%}.elementor-widget-video .elementor-custom-embed-image-overlay{cursor:pointer;text-align:center}.elementor-widget-video .elementor-custom-embed-image-overlay:hover .elementor-custom-embed-play i{opacity:1}.elementor-widget-video .elementor-custom-embed-image-overlay img{display:block;width:100%;aspect-ratio:var(--video-aspect-ratio);-o-object-fit:cover;object-fit:cover;-o-object-position:center center;object-position:center center}@supports not (aspect-ratio:1/1){.elementor-widget-video .elementor-custom-embed-image-overlay{position:relative;overflow:hidden;height:0;padding-bottom:calc(100% / var(--video-aspect-ratio))}.elementor-widget-video .elementor-custom-embed-image-overlay img{position:absolute;top:0;right:0;bottom:0;left:0}}.elementor-widget-video .e-hosted-video .elementor-video{-o-object-fit:cover;object-fit:cover}.e-con-inner>.elementor-widget-video,.e-con>.elementor-widget-video{width:var(--container-widget-width);--flex-grow:var(--container-widget-flex-grow)}.elementor-widget-rating{--e-rating-gap:0px;--e-rating-icon-font-size:16px;--e-rating-icon-color:#ccd6df;--e-rating-icon-marked-color:#f0ad4e;--e-rating-icon-marked-width:100%;--e-rating-justify-content:flex-start}.elementor-widget-rating .e-rating{display:flex;justify-content:var(--e-rating-justify-content)}.elementor-widget-rating .e-rating-wrapper{display:flex;justify-content:inherit;flex-direction:row;flex-wrap:wrap;width:-moz-fit-content;width:fit-content;margin-block-end:calc(0px - var(--e-rating-gap));margin-inline-end:calc(0px - var(--e-rating-gap))}.elementor-widget-rating .e-rating .e-icon{position:relative;margin-block-end:var(--e-rating-gap);margin-inline-end:var(--e-rating-gap)}.elementor-widget-rating .e-rating .e-icon-wrapper.e-icon-marked{--e-rating-icon-color:var(--e-rating-icon-marked-color);width:var(--e-rating-icon-marked-width);position:absolute;z-index:1;height:100%;left:0;top:0;overflow:hidden}.elementor-widget-rating .e-rating .e-icon-wrapper :is(i,svg){display:flex;flex-shrink:0}.elementor-widget-rating .e-rating .e-icon-wrapper i{font-size:var(--e-rating-icon-font-size);color:var(--e-rating-icon-color)}.elementor-widget-rating .e-rating .e-icon-wrapper svg{width:auto;height:var(--e-rating-icon-font-size);fill:var(--e-rating-icon-color)} \ No newline at end of file diff --git a/wp-content/plugins/elementor/assets/css/modules/ai/editor.css b/wp-content/plugins/elementor/assets/css/modules/ai/editor.css new file mode 100644 index 0000000..1052f3d --- /dev/null +++ b/wp-content/plugins/elementor/assets/css/modules/ai/editor.css @@ -0,0 +1,42 @@ +.e-ai-button { + background: none; + border: none; + font-size: var(--control-title-size); + cursor: pointer; + transition: var(--e-a-transition-hover); +} +.e-ai-button:not(.e-active) { + color: var(--e-a-color-primary-bold); +} +.e-ai-button:hover { + color: #E73CF6; +} + +.e-ai-promotion { + font-size: var(--control-title-size); +} +.e-ai-promotion i { + margin-inline-end: 5px; +} + +.elementor-label-block .e-ai-promotion, +.elementor-label-block .e-ai-button { + margin-inline-start: auto; +} + +.elementor-context-menu-list__item__ai-badge { + background-color: #524CFF; + border-radius: 25px; + display: flex; + justify-content: center; + padding: 4px; +} +.elementor-context-menu-list__item__ai-badge svg { + width: 12px; + height: 12px; +} +.elementor-context-menu-list__item__ai-badge svg path { + fill: #ffffff; +} + +/*# sourceMappingURL=editor.css.map */ \ No newline at end of file diff --git a/wp-content/plugins/elementor/assets/css/modules/ai/editor.min.css b/wp-content/plugins/elementor/assets/css/modules/ai/editor.min.css new file mode 100644 index 0000000..68d36e2 --- /dev/null +++ b/wp-content/plugins/elementor/assets/css/modules/ai/editor.min.css @@ -0,0 +1 @@ +.e-ai-button{background:none;border:none;font-size:var(--control-title-size);cursor:pointer;transition:var(--e-a-transition-hover)}.e-ai-button:not(.e-active){color:var(--e-a-color-primary-bold)}.e-ai-button:hover{color:#e73cf6}.e-ai-promotion{font-size:var(--control-title-size)}.e-ai-promotion i{margin-inline-end:5px}.elementor-label-block .e-ai-button,.elementor-label-block .e-ai-promotion{margin-inline-start:auto}.elementor-context-menu-list__item__ai-badge{background-color:#524cff;border-radius:25px;display:flex;justify-content:center;padding:4px}.elementor-context-menu-list__item__ai-badge svg{width:12px;height:12px}.elementor-context-menu-list__item__ai-badge svg path{fill:#fff} \ No newline at end of file diff --git a/wp-content/plugins/elementor/assets/css/modules/ai/layout-preview.css b/wp-content/plugins/elementor/assets/css/modules/ai/layout-preview.css new file mode 100644 index 0000000..be93ec0 --- /dev/null +++ b/wp-content/plugins/elementor/assets/css/modules/ai/layout-preview.css @@ -0,0 +1,131 @@ +[data-id^=e-ai-preview-container] { + outline: 2px solid var(--e-p-border-con); + outline-offset: -2px; +} + +[data-id^=e-ai-screenshot-container], [data-id^=e-ai-screenshot-container] * { + animation-duration: 0s !important; + animation-iteration-count: 1 !important; + transition-duration: 0s !important; +} + +.e-ai-preview-container--idle { + height: 154px; + background-image: url("data:image/svg+xml,%3Csvg width='80' height='80' viewBox='0 0 80 80' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cg opacity='0.4'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M60.834 10.833C62.2147 10.833 63.334 11.9523 63.334 13.333C63.334 14.4381 63.773 15.4979 64.5544 16.2793C65.3358 17.0607 66.3956 17.4997 67.5007 17.4997C68.8814 17.4997 70.0007 18.619 70.0007 19.9997C70.0007 21.3804 68.8814 22.4997 67.5007 22.4997C66.3956 22.4997 65.3358 22.9387 64.5544 23.7201C63.773 24.5015 63.334 25.5613 63.334 26.6663C63.334 28.0471 62.2147 29.1663 60.834 29.1663C59.4533 29.1663 58.334 28.0471 58.334 26.6663C58.334 25.5613 57.895 24.5015 57.1136 23.7201C56.3322 22.9387 55.2724 22.4997 54.1673 22.4997C52.7866 22.4997 51.6673 21.3804 51.6673 19.9997C51.6673 18.619 52.7866 17.4997 54.1673 17.4997C55.2724 17.4997 56.3322 17.0607 57.1136 16.2793C57.895 15.4979 58.334 14.4381 58.334 13.333C58.334 11.9523 59.4533 10.833 60.834 10.833ZM60.834 19.6245C60.7734 19.6888 60.7118 19.7522 60.6491 19.8148C60.5865 19.8774 60.5231 19.9391 60.4588 19.9997C60.5231 20.0603 60.5865 20.1219 60.6491 20.1845C60.7118 20.2472 60.7734 20.3106 60.834 20.3748C60.8946 20.3106 60.9562 20.2472 61.0188 20.1845C61.0815 20.1219 61.1449 20.0603 61.2091 19.9997C61.1449 19.9391 61.0815 19.8774 61.0188 19.8148C60.9562 19.7522 60.8946 19.6888 60.834 19.6245ZM30.834 17.4997C32.2147 17.4997 33.334 18.619 33.334 19.9997C33.334 24.641 35.1777 29.0922 38.4596 32.374C41.7415 35.6559 46.1927 37.4997 50.834 37.4997C52.2147 37.4997 53.334 38.619 53.334 39.9997C53.334 41.3804 52.2147 42.4997 50.834 42.4997C46.1927 42.4997 41.7415 44.3434 38.4596 47.6253C35.1777 50.9072 33.334 55.3584 33.334 59.9997C33.334 61.3804 32.2147 62.4997 30.834 62.4997C29.4533 62.4997 28.334 61.3804 28.334 59.9997C28.334 55.3584 26.4902 50.9072 23.2084 47.6253C19.9265 44.3434 15.4753 42.4997 10.834 42.4997C9.45327 42.4997 8.33398 41.3804 8.33398 39.9997C8.33398 38.619 9.45327 37.4997 10.834 37.4997C15.4753 37.4997 19.9265 35.6559 23.2084 32.374C26.4902 29.0922 28.334 24.641 28.334 19.9997C28.334 18.619 29.4533 17.4997 30.834 17.4997ZM30.834 30.3075C29.778 32.3565 28.4041 34.2494 26.7439 35.9096C25.0837 37.5698 23.1908 38.9437 21.1418 39.9997C23.1908 41.0556 25.0837 42.4296 26.7439 44.0898C28.4041 45.75 29.778 47.6429 30.834 49.6919C31.8899 47.6429 33.2639 45.75 34.9241 44.0898C36.5843 42.4296 38.4772 41.0556 40.5262 39.9997C38.4772 38.9437 36.5843 37.5698 34.9241 35.9096C33.2639 34.2494 31.8899 32.3565 30.834 30.3075ZM60.834 50.833C62.2147 50.833 63.334 51.9523 63.334 53.333C63.334 54.4381 63.773 55.4979 64.5544 56.2793C65.3358 57.0607 66.3956 57.4997 67.5007 57.4997C68.8814 57.4997 70.0007 58.619 70.0007 59.9997C70.0007 61.3804 68.8814 62.4997 67.5007 62.4997C66.3956 62.4997 65.3358 62.9387 64.5544 63.7201C63.773 64.5015 63.334 65.5613 63.334 66.6663C63.334 68.0471 62.2147 69.1663 60.834 69.1663C59.4533 69.1663 58.334 68.0471 58.334 66.6663C58.334 65.5613 57.895 64.5015 57.1136 63.7201C56.3322 62.9387 55.2724 62.4997 54.1673 62.4997C52.7866 62.4997 51.6673 61.3804 51.6673 59.9997C51.6673 58.619 52.7866 57.4997 54.1673 57.4997C55.2724 57.4997 56.3322 57.0607 57.1136 56.2793C57.895 55.4979 58.334 54.4381 58.334 53.333C58.334 51.9523 59.4533 50.833 60.834 50.833ZM60.834 59.6245C60.7734 59.6888 60.7118 59.7522 60.6491 59.8148C60.5865 59.8774 60.5231 59.9391 60.4588 59.9997C60.5231 60.0603 60.5865 60.1219 60.6491 60.1845C60.7118 60.2472 60.7734 60.3106 60.834 60.3748C60.8946 60.3106 60.9562 60.2472 61.0188 60.1845C61.0815 60.1219 61.1449 60.0603 61.2091 59.9997C61.1449 59.9391 61.0815 59.8774 61.0188 59.8148C60.9562 59.7522 60.8946 59.6888 60.834 59.6245Z' fill='%23BABFC5'/%3E%3C/g%3E%3C/svg%3E"); + background-position: center center; + background-repeat: no-repeat; + background-size: 80px auto; +} +.e-ai-preview-container--idle > * { + display: none !important; +} +.e-ai-preview-container--hidden { + display: none !important; +} + +.e-ai-layout-button { + position: relative; +} +.e-ai-layout-button--sparkle { + --animation-duration: 1.5s; + --opacity: .2; + --size: 6px; + position: absolute; + z-index: 99999; + display: block; + height: var(--size); + aspect-ratio: 1; + background-image: url("data:image/svg+xml,%3Csvg width='6' height='6' viewBox='0 0 6 6' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M3 0.25C3.30335 0.25 3.57682 0.432732 3.69291 0.712987L4.15981 1.84019L5.28701 2.30709C5.56727 2.42318 5.75 2.69665 5.75 3C5.75 3.30335 5.56727 3.57682 5.28701 3.69291L4.15981 4.15981L3.69291 5.28701C3.57682 5.56727 3.30335 5.75 3 5.75C2.69665 5.75 2.42318 5.56727 2.30709 5.28701L1.84019 4.15981L0.712987 3.69291C0.432732 3.57682 0.25 3.30335 0.25 3C0.25 2.69665 0.432732 2.42318 0.712987 2.30709L1.84019 1.84019L2.30709 0.712987C2.42318 0.432732 2.69665 0.25 3 0.25Z' fill='%230c0d0e'/%3E%3C/svg%3E%0A"); + background-size: cover; + opacity: 0; +} +.e-ai-layout-button--sparkle:nth-child(1), .e-ai-layout-button--sparkle:nth-child(2), .e-ai-layout-button--sparkle:nth-child(3) { + right: 12px; + top: 12px; +} +.e-ai-layout-button--sparkle:nth-child(4), .e-ai-layout-button--sparkle:nth-child(5), .e-ai-layout-button--sparkle:nth-child(6), .e-ai-layout-button--sparkle:nth-child(7) { + right: 12px; + top: 22px; +} +.e-ai-layout-button--sparkle:nth-child(1) { + --opacity: .3; + --size: 4px; + --animation-name: sparkle-1; +} +.e-ai-layout-button--sparkle:nth-child(2) { + --opacity: .3; + --size: 4px; + --animation-delay: .7s; + --animation-name: sparkle-2; +} +.e-ai-layout-button--sparkle:nth-child(3) { + --animation-delay: 3.5s; + --animation-name: sparkle-3; +} +.e-ai-layout-button--sparkle:nth-child(4) { + --animation-delay: .5s; + --animation-name: sparkle-4; +} +.e-ai-layout-button--sparkle:nth-child(5) { + --animation-delay: 1.5s; + --animation-name: sparkle-5; +} +.e-ai-layout-button--sparkle:nth-child(6) { + --animation-delay: 2.5s; + --animation-name: sparkle-6; +} +.e-ai-layout-button--sparkle:nth-child(7) { + --opacity: .3; + --animation-delay: .7s; + --animation-name: sparkle-7; +} +.e-ai-layout-button:hover .e-ai-layout-button--sparkle { + --timing: cubic-bezier( 0, 1.18, .96, .75 ); + animation: var(--animation-name) var(--animation-duration) var(--animation-delay, 0s) var(--timing) infinite both, sparkle-opacity var(--animation-duration) var(--animation-delay, 0s) var(--timing) infinite both; +} + +@keyframes sparkle-opacity { + 50% { + opacity: var(--opacity); + } + 100% { + opacity: 0; + } +} +@keyframes sparkle-1 { + 100% { + transform: translate(16px, -12px); + } +} +@keyframes sparkle-2 { + 100% { + transform: translate(16px, 12px); + } +} +@keyframes sparkle-3 { + 100% { + transform: translate(12px, 8px); + } +} +@keyframes sparkle-4 { + 100% { + transform: translate(16px, 16px); + } +} +@keyframes sparkle-5 { + 100% { + transform: translate(12px, 16px); + } +} +@keyframes sparkle-6 { + 100% { + transform: translate(-8px, -24px); + } +} +@keyframes sparkle-7 { + 100% { + transform: translate(-20px, 16px); + } +} + +/*# sourceMappingURL=layout-preview.css.map */ \ No newline at end of file diff --git a/wp-content/plugins/elementor/assets/css/modules/ai/layout-preview.min.css b/wp-content/plugins/elementor/assets/css/modules/ai/layout-preview.min.css new file mode 100644 index 0000000..f595910 --- /dev/null +++ b/wp-content/plugins/elementor/assets/css/modules/ai/layout-preview.min.css @@ -0,0 +1 @@ +[data-id^=e-ai-preview-container]{outline:2px solid var(--e-p-border-con);outline-offset:-2px}[data-id^=e-ai-screenshot-container],[data-id^=e-ai-screenshot-container] *{animation-duration:0s!important;animation-iteration-count:1!important;transition-duration:0s!important}.e-ai-preview-container--idle{height:154px;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='80' height='80' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M60.834 10.833a2.5 2.5 0 012.5 2.5 4.167 4.167 0 004.167 4.167 2.5 2.5 0 010 5 4.167 4.167 0 00-4.167 4.166 2.5 2.5 0 11-5 0 4.167 4.167 0 00-4.167-4.166 2.5 2.5 0 010-5 4.167 4.167 0 004.167-4.167 2.5 2.5 0 012.5-2.5zm0 8.792a8.722 8.722 0 01-.375.375 8.956 8.956 0 01.375.375 9.459 9.459 0 01.375-.375 9.464 9.464 0 01-.375-.375zm-30-2.125a2.5 2.5 0 012.5 2.5 17.5 17.5 0 0017.5 17.5 2.5 2.5 0 010 5 17.5 17.5 0 00-17.5 17.5 2.5 2.5 0 01-5 0 17.5 17.5 0 00-17.5-17.5 2.5 2.5 0 110-5 17.5 17.5 0 0017.5-17.5 2.5 2.5 0 012.5-2.5zm0 12.808A22.494 22.494 0 0121.142 40a22.491 22.491 0 019.692 9.692A22.491 22.491 0 0140.526 40a22.494 22.494 0 01-9.692-9.692zm30 20.525a2.5 2.5 0 012.5 2.5 4.167 4.167 0 004.167 4.167 2.5 2.5 0 010 5 4.167 4.167 0 00-4.167 4.166 2.5 2.5 0 11-5 0 4.167 4.167 0 00-4.167-4.166 2.5 2.5 0 010-5 4.167 4.167 0 004.167-4.167 2.5 2.5 0 012.5-2.5zm0 8.791a8.722 8.722 0 01-.375.376 8.956 8.956 0 01.375.375 9.459 9.459 0 01.375-.375 9.464 9.464 0 01-.375-.376z' fill='%23BABFC5' opacity='.4'/%3E%3C/svg%3E");background-position:50%;background-repeat:no-repeat;background-size:80px auto}.e-ai-preview-container--hidden,.e-ai-preview-container--idle>*{display:none!important}.e-ai-layout-button{position:relative}.e-ai-layout-button--sparkle{--animation-duration:1.5s;--opacity:.2;--size:6px;position:absolute;z-index:99999;display:block;height:var(--size);aspect-ratio:1;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='6' height='6' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M3 .25a.75.75 0 01.693.463L4.16 1.84l1.127.467a.75.75 0 010 1.386L4.16 4.16l-.467 1.127a.75.75 0 01-1.386 0L1.84 4.16.713 3.693a.75.75 0 010-1.386L1.84 1.84 2.307.713A.75.75 0 013 .25z' fill='%230c0d0e'/%3E%3C/svg%3E");background-size:cover;opacity:0}.e-ai-layout-button--sparkle:first-child,.e-ai-layout-button--sparkle:nth-child(2),.e-ai-layout-button--sparkle:nth-child(3){right:12px;top:12px}.e-ai-layout-button--sparkle:nth-child(4),.e-ai-layout-button--sparkle:nth-child(5),.e-ai-layout-button--sparkle:nth-child(6),.e-ai-layout-button--sparkle:nth-child(7){right:12px;top:22px}.e-ai-layout-button--sparkle:first-child{--opacity:.3;--size:4px;--animation-name:sparkle-1}.e-ai-layout-button--sparkle:nth-child(2){--opacity:.3;--size:4px;--animation-delay:.7s;--animation-name:sparkle-2}.e-ai-layout-button--sparkle:nth-child(3){--animation-delay:3.5s;--animation-name:sparkle-3}.e-ai-layout-button--sparkle:nth-child(4){--animation-delay:.5s;--animation-name:sparkle-4}.e-ai-layout-button--sparkle:nth-child(5){--animation-delay:1.5s;--animation-name:sparkle-5}.e-ai-layout-button--sparkle:nth-child(6){--animation-delay:2.5s;--animation-name:sparkle-6}.e-ai-layout-button--sparkle:nth-child(7){--opacity:.3;--animation-delay:.7s;--animation-name:sparkle-7}.e-ai-layout-button:hover .e-ai-layout-button--sparkle{--timing:cubic-bezier(0,1.18,.96,.75);animation:var(--animation-name) var(--animation-duration) var(--animation-delay,0s) var(--timing) infinite both,sparkle-opacity var(--animation-duration) var(--animation-delay,0s) var(--timing) infinite both}@keyframes sparkle-opacity{50%{opacity:var(--opacity)}to{opacity:0}}@keyframes sparkle-1{to{transform:translate(16px,-12px)}}@keyframes sparkle-2{to{transform:translate(16px,12px)}}@keyframes sparkle-3{to{transform:translate(12px,8px)}}@keyframes sparkle-4{to{transform:translate(16px,16px)}}@keyframes sparkle-5{to{transform:translate(12px,16px)}}@keyframes sparkle-6{to{transform:translate(-8px,-24px)}}@keyframes sparkle-7{to{transform:translate(-20px,16px)}} \ No newline at end of file diff --git a/wp-content/plugins/elementor/assets/css/modules/announcements/announcements.css b/wp-content/plugins/elementor/assets/css/modules/announcements/announcements.css new file mode 100644 index 0000000..86b7f55 --- /dev/null +++ b/wp-content/plugins/elementor/assets/css/modules/announcements/announcements.css @@ -0,0 +1,124 @@ +#e-announcements-root { + position: fixed; + display: flex; + top: 0; + left: 0; + width: 100%; + height: 100%; + align-items: center; + justify-content: center; + color: var(--e-a-color-txt); + font-family: Roboto, Arial, Helvetica, sans-serif; + z-index: 9998; +} +#e-announcements-root .announcements-container { + width: 640px; + max-width: 100%; + background-color: var(--e-a-bg-default); + border-radius: var(--e-a-border-radius); + z-index: 9998; +} +#e-announcements-root .announcements-container .announcements-heading-container { + display: flex; + align-items: center; + padding: 16px 32px; + border-block-end: var(--e-a-border); +} +#e-announcements-root .announcements-container .announcements-heading-container .eicon-elementor { + color: var(--e-a-color-logo); + background-color: var(--e-a-bg-logo); + border-radius: 50%; + padding: 8px; +} +#e-announcements-root .announcements-container .announcements-heading-container .heading-title { + margin-inline-start: 12px; + text-transform: uppercase; + font-weight: 700; + color: var(--e-a-color-txt-active); +} +#e-announcements-root .announcements-container .announcements-heading-container .close-button { + margin-inline-start: auto; + background: none; + color: inherit; + border: none; + padding: 0; + font: inherit; + cursor: pointer; + outline: inherit; +} +#e-announcements-root .announcements-container .announcements-heading-container .close-button:hover { + color: var(--e-a-color-txt-hover); +} +#e-announcements-root .announcements-container .announcement-body-container .announcement-body-media img { + width: 100%; + max-height: 360px; + object-fit: contain; +} +#e-announcements-root .announcements-container .announcement-body-container .announcement-body-content { + padding: 30px; +} +#e-announcements-root .announcements-container .announcement-body-container .announcement-body-content .announcement-body-title { + font-size: 18px; + font-weight: 700; + color: var(--e-a-color-txt-accent); + padding-block-end: 15px; +} +#e-announcements-root .announcements-container .announcement-body-container .announcement-body-content .announcement-body-description { + font-size: 16px; + line-height: 24px; + font-weight: 400; + color: var(--e-a-color-txt); +} +#e-announcements-root .announcements-container .announcement-body-container .announcement-body-content p { + margin-block-end: 15px; +} +#e-announcements-root .announcements-container .announcement-body-container .announcement-body-content ul { + margin-inline-start: 20px; + margin-block-end: 15px; +} +#e-announcements-root .announcements-container .announcement-body-container .announcement-body-content li { + list-style: disc; + margin-block-end: 5px; +} +#e-announcements-root .announcements-container .announcement-footer-container { + display: flex; + flex-direction: row-reverse; + padding: 12px 32px 32px; +} +#e-announcements-root .announcements-container .announcement-footer-container .button-item { + margin-inline-start: 12px; + padding: 8px 16px; + outline: none; + border: none; + border-radius: var(--e-a-border-radius); + transition: var(--e-a-transition-hover); + background: transparent; + color: var(--e-a-color-txt); + cursor: pointer; +} +#e-announcements-root .announcements-container .announcement-footer-container .button-item:hover { + background: var(--e-a-bg-hover); + color: var(--e-a-color-txt-hover); +} +#e-announcements-root .announcements-container .announcement-footer-container .button-item:disabled { + background: transparent; + color: var(--e-a-color-txt-disabled); +} +#e-announcements-root .announcements-container .announcement-footer-container .button-item.primary { + background-color: var(--e-a-btn-bg-accent); + color: var(--e-a-btn-color-invert); +} +#e-announcements-root .announcements-container .announcement-footer-container .button-item.primary:hover { + background-color: var(--e-a-btn-bg-accent-hover); +} +#e-announcements-root .announcements-container .announcement-footer-container .button-item.primary:active { + background-color: var(--e-a-btn-bg-accent-active); +} +#e-announcements-root .announcements-screen-overlay { + position: fixed; + width: 100%; + height: 100%; + background-color: rgba(0, 0, 0, 0.6); +} + +/*# sourceMappingURL=announcements.css.map */ \ No newline at end of file diff --git a/wp-content/plugins/elementor/assets/css/modules/announcements/announcements.min.css b/wp-content/plugins/elementor/assets/css/modules/announcements/announcements.min.css new file mode 100644 index 0000000..4ea7a74 --- /dev/null +++ b/wp-content/plugins/elementor/assets/css/modules/announcements/announcements.min.css @@ -0,0 +1 @@ +#e-announcements-root{position:fixed;display:flex;top:0;left:0;width:100%;height:100%;align-items:center;justify-content:center;color:var(--e-a-color-txt);font-family:Roboto,Arial,Helvetica,sans-serif;z-index:9998}#e-announcements-root .announcements-container{width:640px;max-width:100%;background-color:var(--e-a-bg-default);border-radius:var(--e-a-border-radius);z-index:9998}#e-announcements-root .announcements-container .announcements-heading-container{display:flex;align-items:center;padding:16px 32px;border-block-end:var(--e-a-border)}#e-announcements-root .announcements-container .announcements-heading-container .eicon-elementor{color:var(--e-a-color-logo);background-color:var(--e-a-bg-logo);border-radius:50%;padding:8px}#e-announcements-root .announcements-container .announcements-heading-container .heading-title{margin-inline-start:12px;text-transform:uppercase;font-weight:700;color:var(--e-a-color-txt-active)}#e-announcements-root .announcements-container .announcements-heading-container .close-button{margin-inline-start:auto;background:none;color:inherit;border:none;padding:0;font:inherit;cursor:pointer;outline:inherit}#e-announcements-root .announcements-container .announcements-heading-container .close-button:hover{color:var(--e-a-color-txt-hover)}#e-announcements-root .announcements-container .announcement-body-container .announcement-body-media img{width:100%;max-height:360px;-o-object-fit:contain;object-fit:contain}#e-announcements-root .announcements-container .announcement-body-container .announcement-body-content{padding:30px}#e-announcements-root .announcements-container .announcement-body-container .announcement-body-content .announcement-body-title{font-size:18px;font-weight:700;color:var(--e-a-color-txt-accent);padding-block-end:15px}#e-announcements-root .announcements-container .announcement-body-container .announcement-body-content .announcement-body-description{font-size:16px;line-height:24px;font-weight:400;color:var(--e-a-color-txt)}#e-announcements-root .announcements-container .announcement-body-container .announcement-body-content p{margin-block-end:15px}#e-announcements-root .announcements-container .announcement-body-container .announcement-body-content ul{margin-inline-start:20px;margin-block-end:15px}#e-announcements-root .announcements-container .announcement-body-container .announcement-body-content li{list-style:disc;margin-block-end:5px}#e-announcements-root .announcements-container .announcement-footer-container{display:flex;flex-direction:row-reverse;padding:12px 32px 32px}#e-announcements-root .announcements-container .announcement-footer-container .button-item{margin-inline-start:12px;padding:8px 16px;outline:none;border:none;border-radius:var(--e-a-border-radius);transition:var(--e-a-transition-hover);background:transparent;color:var(--e-a-color-txt);cursor:pointer}#e-announcements-root .announcements-container .announcement-footer-container .button-item:hover{background:var(--e-a-bg-hover);color:var(--e-a-color-txt-hover)}#e-announcements-root .announcements-container .announcement-footer-container .button-item:disabled{background:transparent;color:var(--e-a-color-txt-disabled)}#e-announcements-root .announcements-container .announcement-footer-container .button-item.primary{background-color:var(--e-a-btn-bg-accent);color:var(--e-a-btn-color-invert)}#e-announcements-root .announcements-container .announcement-footer-container .button-item.primary:hover{background-color:var(--e-a-btn-bg-accent-hover)}#e-announcements-root .announcements-container .announcement-footer-container .button-item.primary:active{background-color:var(--e-a-btn-bg-accent-active)}#e-announcements-root .announcements-screen-overlay{position:fixed;width:100%;height:100%;background-color:rgba(0,0,0,.6)} \ No newline at end of file diff --git a/wp-content/plugins/elementor/assets/css/modules/apps/admin.css b/wp-content/plugins/elementor/assets/css/modules/apps/admin.css new file mode 100644 index 0000000..02b8410 --- /dev/null +++ b/wp-content/plugins/elementor/assets/css/modules/apps/admin.css @@ -0,0 +1,101 @@ +body.elementor-apps-page { + background: var(--e-a-color-white); +} + +.e-a-apps .e-a-page-title { + margin: 30px auto 60px; + max-width: 770px; + text-align: center; +} +.e-a-apps .e-a-page-title h2 { + font-size: 28px; + margin: 0; + line-height: 1.6; +} +.e-a-apps .e-a-page-title p { + margin-block-start: 0; + font-size: 16px; +} +.e-a-apps .e-a-page-title p a { + color: inherit; +} +.e-a-apps .e-a-page-footer { + margin: 60px auto; + text-align: center; +} +.e-a-apps .e-a-page-footer p { + max-width: 1200px; + margin: auto; +} +.e-a-apps .e-a-list { + display: grid; + grid-gap: 30px; + grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); +} +.e-a-apps .e-a-item { + border: var(--e-a-border); + border-radius: var(--e-a-border-radius); + display: flex; + padding: 20px 24px; + flex-direction: column; + align-items: flex-start; + transition: var(--e-a-transition-hover); +} +.e-a-apps .e-a-item:hover { + border-color: var(--e-a-border-color-bold); +} +.e-a-apps .e-a-heading { + display: flex; + justify-content: space-between; + align-items: flex-start; + width: 100%; +} +.e-a-apps .e-a-heading .e-a-img { + border-radius: var(--e-a-border-radius); + width: 70px; + display: flex; + margin-block-end: 20px; +} +.e-a-apps .e-a-heading .e-a-badge { + background: #ECFDF5; + color: #047857; + border-radius: 100px; + padding: 3px 8px; +} +.e-a-apps .e-a-title, +.e-a-apps .e-a-author { + margin: 0; + line-height: 1.6; +} +.e-a-apps .e-a-author { + font-size: 12px; +} +.e-a-apps .e-a-author a { + color: inherit; +} +.e-a-apps .e-a-desc { + flex-grow: 1; +} +.e-a-apps .e-a-offering { + font-size: 12px; + font-style: italic; +} +.e-a-apps .e-a-actions { + display: flex; + justify-content: space-between; + align-items: center; + width: 100%; + margin-block-start: 20px; +} +.e-a-apps .e-a-actions a { + text-decoration: none; +} +.e-a-apps .e-a-actions .e-accent { + margin-inline-start: auto; +} +.e-a-apps .e-a-actions .e-a-learn-more { + color: #4338CA; + font-weight: 500; +} + +/*# sourceMappingURL=admin.css.map */ \ No newline at end of file diff --git a/wp-content/plugins/elementor/assets/css/modules/apps/admin.min.css b/wp-content/plugins/elementor/assets/css/modules/apps/admin.min.css new file mode 100644 index 0000000..a09f13f --- /dev/null +++ b/wp-content/plugins/elementor/assets/css/modules/apps/admin.min.css @@ -0,0 +1 @@ +body.elementor-apps-page{background:var(--e-a-color-white)}.e-a-apps .e-a-page-title{margin:30px auto 60px;max-width:770px;text-align:center}.e-a-apps .e-a-page-title h2{font-size:28px;margin:0;line-height:1.6}.e-a-apps .e-a-page-title p{margin-block-start:0;font-size:16px}.e-a-apps .e-a-page-title p a{color:inherit}.e-a-apps .e-a-page-footer{margin:60px auto;text-align:center}.e-a-apps .e-a-page-footer p{max-width:1200px;margin:auto}.e-a-apps .e-a-list{display:grid;grid-gap:30px;grid-template-columns:repeat(auto-fit,minmax(300px,1fr))}.e-a-apps .e-a-item{border:var(--e-a-border);border-radius:var(--e-a-border-radius);display:flex;padding:20px 24px;flex-direction:column;align-items:flex-start;transition:var(--e-a-transition-hover)}.e-a-apps .e-a-item:hover{border-color:var(--e-a-border-color-bold)}.e-a-apps .e-a-heading{display:flex;justify-content:space-between;align-items:flex-start;width:100%}.e-a-apps .e-a-heading .e-a-img{border-radius:var(--e-a-border-radius);width:70px;display:flex;margin-block-end:20px}.e-a-apps .e-a-heading .e-a-badge{background:#ecfdf5;color:#047857;border-radius:100px;padding:3px 8px}.e-a-apps .e-a-author,.e-a-apps .e-a-title{margin:0;line-height:1.6}.e-a-apps .e-a-author{font-size:12px}.e-a-apps .e-a-author a{color:inherit}.e-a-apps .e-a-desc{flex-grow:1}.e-a-apps .e-a-offering{font-size:12px;font-style:italic}.e-a-apps .e-a-actions{display:flex;justify-content:space-between;align-items:center;width:100%;margin-block-start:20px}.e-a-apps .e-a-actions a{text-decoration:none}.e-a-apps .e-a-actions .e-accent{margin-inline-start:auto}.e-a-apps .e-a-actions .e-a-learn-more{color:#4338ca;font-weight:500} \ No newline at end of file diff --git a/wp-content/plugins/elementor/assets/css/modules/container-converter/editor.css b/wp-content/plugins/elementor/assets/css/modules/container-converter/editor.css new file mode 100644 index 0000000..1926ff1 --- /dev/null +++ b/wp-content/plugins/elementor/assets/css/modules/container-converter/editor.css @@ -0,0 +1,20 @@ +.elementor-control-convert_to_container .elementor-button.e-loading { + font-size: 0; + width: 42px; + position: relative; + pointer-events: none; +} +.elementor-control-convert_to_container .elementor-button.e-loading::before { + content: "\e8fb"; + font-family: "eicons"; + font-size: 12px; + animation: eicon-spin 2s infinite linear; + display: inline-block; + position: absolute; + left: 50%; + top: 50%; + margin-inline-start: -6px; + margin-block-start: -6px; +} + +/*# sourceMappingURL=editor.css.map */ \ No newline at end of file diff --git a/wp-content/plugins/elementor/assets/css/modules/container-converter/editor.min.css b/wp-content/plugins/elementor/assets/css/modules/container-converter/editor.min.css new file mode 100644 index 0000000..df829fd --- /dev/null +++ b/wp-content/plugins/elementor/assets/css/modules/container-converter/editor.min.css @@ -0,0 +1 @@ +.elementor-control-convert_to_container .elementor-button.e-loading{font-size:0;width:42px;position:relative;pointer-events:none}.elementor-control-convert_to_container .elementor-button.e-loading:before{content:"\e8fb";font-family:eicons;font-size:12px;animation:eicon-spin 2s linear infinite;display:inline-block;position:absolute;left:50%;top:50%;margin-inline-start:-6px;margin-block-start:-6px} \ No newline at end of file diff --git a/wp-content/plugins/elementor/assets/css/modules/lazyload/frontend.css b/wp-content/plugins/elementor/assets/css/modules/lazyload/frontend.css new file mode 100644 index 0000000..c9b046d --- /dev/null +++ b/wp-content/plugins/elementor/assets/css/modules/lazyload/frontend.css @@ -0,0 +1,15 @@ +/* +TODO: Temp fix - Need to unify the background & lazy-load selectors. +This fix accounts for the DOM experiment & motion fx changes, that are already fixed in the background +selector itself (which is the reason we need to unify it). +*/ +.lazyloaded:not(.elementor-motion-effects-element-type-background), +.lazyloaded > .elementor-motion-effects-container > .elementor-motion-effects-layer, +.lazyloaded > [class*=-wrap] > .elementor-motion-effects-container > .elementor-motion-effects-layer, +body.e-lazyload .lazyloaded .elementor-background-overlay, +body.e-lazyload .e-con.lazyloaded::before, +body.e-lazyload .lazyloaded { + --e-bg-lazyload-loaded: var(--e-bg-lazyload); +} + +/*# sourceMappingURL=frontend.css.map */ \ No newline at end of file diff --git a/wp-content/plugins/elementor/assets/css/modules/lazyload/frontend.min.css b/wp-content/plugins/elementor/assets/css/modules/lazyload/frontend.min.css new file mode 100644 index 0000000..0c56154 --- /dev/null +++ b/wp-content/plugins/elementor/assets/css/modules/lazyload/frontend.min.css @@ -0,0 +1 @@ +.lazyloaded:not(.elementor-motion-effects-element-type-background),.lazyloaded>.elementor-motion-effects-container>.elementor-motion-effects-layer,.lazyloaded>[class*=-wrap]>.elementor-motion-effects-container>.elementor-motion-effects-layer,body.e-lazyload .e-con.lazyloaded:before,body.e-lazyload .lazyloaded,body.e-lazyload .lazyloaded .elementor-background-overlay{--e-bg-lazyload-loaded:var(--e-bg-lazyload)} \ No newline at end of file diff --git a/wp-content/plugins/elementor/assets/css/modules/notes/editor.css b/wp-content/plugins/elementor/assets/css/modules/notes/editor.css new file mode 100644 index 0000000..d0a808b --- /dev/null +++ b/wp-content/plugins/elementor/assets/css/modules/notes/editor.css @@ -0,0 +1,6 @@ +.elementor-panel-menu-item-notes .elementor-panel-menu-item-title-badge { + font-size: 16px; + color: var(--e-a-color-accent); +} + +/*# sourceMappingURL=editor.css.map */ \ No newline at end of file diff --git a/wp-content/plugins/elementor/assets/css/modules/notes/editor.min.css b/wp-content/plugins/elementor/assets/css/modules/notes/editor.min.css new file mode 100644 index 0000000..1a149bc --- /dev/null +++ b/wp-content/plugins/elementor/assets/css/modules/notes/editor.min.css @@ -0,0 +1 @@ +.elementor-panel-menu-item-notes .elementor-panel-menu-item-title-badge{font-size:16px;color:var(--e-a-color-accent)} \ No newline at end of file diff --git a/wp-content/plugins/elementor/assets/css/modules/styleguide/styleguide.css b/wp-content/plugins/elementor/assets/css/modules/styleguide/styleguide.css new file mode 100644 index 0000000..d6caf9b --- /dev/null +++ b/wp-content/plugins/elementor/assets/css/modules/styleguide/styleguide.css @@ -0,0 +1,37 @@ +body.e-styleguide-shown { + overflow: hidden; +} + +#e-styleguide-preview-dialog.dialog-styleguide-widget .dialog-styleguide-widget-content { + width: 100%; + height: 100%; + max-width: 100%; + max-height: 100%; + border-radius: 0; + top: 0 !important; + left: 0 !important; + overflow: scroll; +} +#e-styleguide-preview-dialog.dialog-styleguide-widget .dialog-styleguide-message { + min-height: 100vh; + padding: 0; + overflow-x: hidden; + text-align: initial; + font-family: Roboto, sans-serif; +} +#e-styleguide-preview-dialog.dialog-styleguide-widget .e-styleguide-loader { + position: absolute; + top: 0; + left: 0; + height: 100%; + width: 100%; + display: flex; + align-items: center; + justify-content: center; +} +#e-styleguide-preview-dialog.dialog-styleguide-widget .e-styleguide-loader .eicon-loading { + font-size: 25px; + color: var(--e-a-color-txt-muted); +} + +/*# sourceMappingURL=styleguide.css.map */ \ No newline at end of file diff --git a/wp-content/plugins/elementor/assets/css/modules/styleguide/styleguide.min.css b/wp-content/plugins/elementor/assets/css/modules/styleguide/styleguide.min.css new file mode 100644 index 0000000..67e1a9b --- /dev/null +++ b/wp-content/plugins/elementor/assets/css/modules/styleguide/styleguide.min.css @@ -0,0 +1 @@ +body.e-styleguide-shown{overflow:hidden}#e-styleguide-preview-dialog.dialog-styleguide-widget .dialog-styleguide-widget-content{width:100%;height:100%;max-width:100%;max-height:100%;border-radius:0;top:0!important;left:0!important;overflow:scroll}#e-styleguide-preview-dialog.dialog-styleguide-widget .dialog-styleguide-message{min-height:100vh;padding:0;overflow-x:hidden;text-align:initial;font-family:Roboto,sans-serif}#e-styleguide-preview-dialog.dialog-styleguide-widget .e-styleguide-loader{position:absolute;top:0;left:0;height:100%;width:100%;display:flex;align-items:center;justify-content:center}#e-styleguide-preview-dialog.dialog-styleguide-widget .e-styleguide-loader .eicon-loading{font-size:25px;color:var(--e-a-color-txt-muted)} \ No newline at end of file diff --git a/wp-content/plugins/elementor/assets/css/responsive-bar.css b/wp-content/plugins/elementor/assets/css/responsive-bar.css new file mode 100644 index 0000000..7308b3f --- /dev/null +++ b/wp-content/plugins/elementor/assets/css/responsive-bar.css @@ -0,0 +1,194 @@ +/*! elementor - v3.20.0 - 26-03-2024 */ +:root { + --e-is-device-mode: 0; +} + +.e-is-device-mode { + --e-is-device-mode: 1; +} + +#elementor-responsive-bar { + position: sticky; + height: calc(40px * var(--e-is-device-mode)); + align-self: stretch; + flex-shrink: 0; + transition: height 0.2s ease-in-out, opacity 0.1s; + left: 0; + top: 0; + z-index: 100; + opacity: var(--e-is-device-mode); + box-shadow: 0 0 10px 2px rgba(0, 0, 0, 0.33), 0 0 2px 1px rgba(0, 0, 0, 0.25), 0 0 6px -3px rgba(255, 255, 255, 0.5); +} +#elementor-responsive-bar:before { + content: ""; + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + z-index: -1; + transform: scaleX(var(--e-preview-scale, 1)); +} + +.e-responsive-bar-switcher__option { + cursor: pointer; + text-align: center; + width: 22px; + height: 22px; + margin: 0 4px; + line-height: 22px; + border-radius: 3px; + font-size: 16px; + transition: var(--e-a-transition-hover); +} +.e-responsive-bar-switcher__option:hover { + color: var(--e-a-color-primary-bold); + background-color: #310132; +} +.e-responsive-bar-switcher__option[aria-selected=true] { + background-color: #3f444b; + color: #F9FAFA; +} +.e-responsive-bar-switcher__option input { + display: none; +} +.e-responsive-bar-switcher__option:not(:last-child) { + margin-inline-end: 6px; +} +.e-responsive-bar__button { + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + background: none; + border: 0 none; + cursor: pointer; + color: inherit; +} +.e-responsive-bar__button:focus:not(:focus-visible) { + outline: none; +} +.e-responsive-bar__button:hover { + color: #F1F2F3; + background-color: #3f444b; +} +.e-responsive-bar--pipe { + position: relative; +} +.e-responsive-bar--pipe::before { + content: ""; + display: block; + height: 20px; + width: 1px; + background-color: #BABFC5; + position: absolute; + inset-inline-end: -5px; + top: calc(50% - 10px); +} +.e-responsive-bar__input-size { + background-color: transparent; + color: #BABFC5; + border: 1px solid #BABFC5; + padding: 0 3px; + width: 60px; + font-size: 12px; + line-height: 16px; + height: 18px; + margin: auto 8px auto 4px; + text-align: center; +} +.e-responsive-bar__input-size-separator { + color: #BABFC5; +} +.e-responsive-bar__input-size[disabled] { + background-color: transparent; + color: #818A96; + cursor: default; + -moz-appearance: none; + appearance: none; + -webkit-appearance: none; +} + +#e-responsive-bar { + width: 100%; + margin-block-start: calc(-40px + 40px * var(--e-is-device-mode)); + z-index: 1; + transition: margin-block-start 0.2s ease-in-out; + display: grid; + grid-template-columns: auto 1fr; + align-items: center; + justify-content: space-between; + color: #BABFC5; + background-color: #1f2124; +} +#e-responsive-bar__center, #e-responsive-bar__end, #e-responsive-bar-scale, #e-responsive-bar-switcher { + display: flex; + justify-content: center; + align-items: center; + font-size: 13px; + background-color: #1f2124; + padding: 2px 0; +} +#e-responsive-bar__end { + justify-self: end; +} +@media (min-width: 1400px) { + #e-responsive-bar { + grid-template-columns: 1fr auto 1fr; + } + #e-responsive-bar::before { + content: ""; + } +} +#e-responsive-bar__close-button, #e-responsive-bar__settings-button { + width: 22px; + height: 22px; + border-radius: 3px; + margin: 7px 5px; + font-size: 16px; +} +#e-responsive-bar__size-inputs-wrapper { + display: flex; + align-items: center; + margin-inline-end: 8px; + color: #BABFC5; +} +#e-responsive-bar-switcher { + padding: 0 20px; +} +#e-responsive-bar-scale { + padding: 0 20px; +} +#e-responsive-bar-scale__value-wrapper { + margin: 0 14px; + min-width: 32px; + text-align: center; +} +#e-responsive-bar-scale__plus, #e-responsive-bar-scale__minus, #e-responsive-bar-scale__reset { + cursor: pointer; + width: 20px; + height: 20px; + display: flex; + align-items: center; + justify-content: center; + border-radius: 3px; + transition: all 0.3s; +} +#e-responsive-bar-scale__plus:hover, #e-responsive-bar-scale__minus:hover, #e-responsive-bar-scale__reset:hover { + color: #F1F2F3; + background-color: #3f444b; +} +#e-responsive-bar-scale__minus:before { + content: ""; + display: block; + width: 13px; + height: 2px; + background-color: #BABFC5; + border-radius: 3px; +} +#e-responsive-bar-scale__minus:hover:before { + background-color: #F1F2F3; +} +#e-responsive-bar-scale__reset { + margin: 0 8px; +} +/*# sourceMappingURL=responsive-bar.css.map */ \ No newline at end of file diff --git a/wp-content/plugins/elementor/assets/css/responsive-bar.min.css b/wp-content/plugins/elementor/assets/css/responsive-bar.min.css new file mode 100644 index 0000000..f1acd7b --- /dev/null +++ b/wp-content/plugins/elementor/assets/css/responsive-bar.min.css @@ -0,0 +1,2 @@ +/*! elementor - v3.20.0 - 26-03-2024 */ +:root{--e-is-device-mode:0}.e-is-device-mode{--e-is-device-mode:1}#elementor-responsive-bar{position:sticky;height:calc(40px * var(--e-is-device-mode));align-self:stretch;flex-shrink:0;transition:height .2s ease-in-out,opacity .1s;left:0;top:0;z-index:100;opacity:var(--e-is-device-mode);box-shadow:0 0 10px 2px rgba(0,0,0,.33),0 0 2px 1px rgba(0,0,0,.25),0 0 6px -3px hsla(0,0%,100%,.5)}#elementor-responsive-bar:before{content:"";position:absolute;left:0;top:0;width:100%;height:100%;z-index:-1;transform:scaleX(var(--e-preview-scale,1))}.e-responsive-bar-switcher__option{cursor:pointer;text-align:center;width:22px;height:22px;margin:0 4px;line-height:22px;border-radius:3px;font-size:16px;transition:var(--e-a-transition-hover)}.e-responsive-bar-switcher__option:hover{color:var(--e-a-color-primary-bold);background-color:#310132}.e-responsive-bar-switcher__option[aria-selected=true]{background-color:#3f444b;color:#f9fafa}.e-responsive-bar-switcher__option input{display:none}.e-responsive-bar-switcher__option:not(:last-child){margin-inline-end:6px}.e-responsive-bar__button{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;cursor:pointer;color:inherit}.e-responsive-bar__button:focus:not(:focus-visible){outline:none}.e-responsive-bar__button:hover{color:#f1f2f3;background-color:#3f444b}.e-responsive-bar--pipe{position:relative}.e-responsive-bar--pipe:before{content:"";display:block;height:20px;width:1px;background-color:#babfc5;position:absolute;inset-inline-end:-5px;top:calc(50% - 10px)}.e-responsive-bar__input-size{background-color:transparent;color:#babfc5;border:1px solid #babfc5;padding:0 3px;width:60px;font-size:12px;line-height:16px;height:18px;margin:auto 8px auto 4px;text-align:center}.e-responsive-bar__input-size-separator{color:#babfc5}.e-responsive-bar__input-size[disabled]{background-color:transparent;color:#818a96;cursor:default;-moz-appearance:none;appearance:none;-webkit-appearance:none}#e-responsive-bar{width:100%;margin-block-start:calc(-40px + 40px * var(--e-is-device-mode));z-index:1;transition:margin-block-start .2s ease-in-out;display:grid;grid-template-columns:auto 1fr;align-items:center;justify-content:space-between;color:#babfc5;background-color:#1f2124}#e-responsive-bar-scale,#e-responsive-bar-switcher,#e-responsive-bar__center,#e-responsive-bar__end{display:flex;justify-content:center;align-items:center;font-size:13px;background-color:#1f2124;padding:2px 0}#e-responsive-bar__end{justify-self:end}@media (min-width:1400px){#e-responsive-bar{grid-template-columns:1fr auto 1fr}#e-responsive-bar:before{content:""}}#e-responsive-bar__close-button,#e-responsive-bar__settings-button{width:22px;height:22px;border-radius:3px;margin:7px 5px;font-size:16px}#e-responsive-bar__size-inputs-wrapper{display:flex;align-items:center;margin-inline-end:8px;color:#babfc5}#e-responsive-bar-scale,#e-responsive-bar-switcher{padding:0 20px}#e-responsive-bar-scale__value-wrapper{margin:0 14px;min-width:32px;text-align:center}#e-responsive-bar-scale__minus,#e-responsive-bar-scale__plus,#e-responsive-bar-scale__reset{cursor:pointer;width:20px;height:20px;display:flex;align-items:center;justify-content:center;border-radius:3px;transition:all .3s}#e-responsive-bar-scale__minus:hover,#e-responsive-bar-scale__plus:hover,#e-responsive-bar-scale__reset:hover{color:#f1f2f3;background-color:#3f444b}#e-responsive-bar-scale__minus:before{content:"";display:block;width:13px;height:2px;background-color:#babfc5;border-radius:3px}#e-responsive-bar-scale__minus:hover:before{background-color:#f1f2f3}#e-responsive-bar-scale__reset{margin:0 8px} \ No newline at end of file diff --git a/wp-content/plugins/elementor/assets/css/templates/frontend-lite-rtl.css b/wp-content/plugins/elementor/assets/css/templates/frontend-lite-rtl.css new file mode 100644 index 0000000..6ea0ffd --- /dev/null +++ b/wp-content/plugins/elementor/assets/css/templates/frontend-lite-rtl.css @@ -0,0 +1,3790 @@ +.dialog-widget-content { + background-color: var(--e-a-bg-default); + position: absolute; + border-radius: 3px; + box-shadow: 2px 8px 23px 3px rgba(0, 0, 0, 0.2); + overflow: hidden; +} + +.dialog-message { + line-height: 1.5; + box-sizing: border-box; +} + +.dialog-close-button { + cursor: pointer; + position: absolute; + margin-block-start: 15px; + left: 15px; + color: var(--e-a-color-txt); + font-size: 15px; + line-height: 1; + transition: var(--e-a-transition-hover); +} +.dialog-close-button:hover { + color: var(--e-a-color-txt-hover); +} + +.dialog-prevent-scroll { + overflow: hidden; + max-height: 100vh; +} + +.dialog-type-lightbox { + position: fixed; + height: 100%; + width: 100%; + bottom: 0; + left: 0; + background-color: rgba(0, 0, 0, 0.8); + z-index: 9999; + user-select: none; +} + +.elementor-editor-active .elementor-popup-modal { + background-color: initial; +} + +.dialog-type-confirm .dialog-widget-content, +.dialog-type-alert .dialog-widget-content { + margin: auto; + width: 400px; + padding: 20px; +} +.dialog-type-confirm .dialog-header, +.dialog-type-alert .dialog-header { + font-size: 15px; + font-weight: 500; +} +.dialog-type-confirm .dialog-header:after, +.dialog-type-alert .dialog-header:after { + content: ""; + display: block; + border-block-end: var(--e-a-border); + padding-block-end: 10px; + margin-block-end: 10px; + margin-inline-start: -20px; + margin-inline-end: -20px; +} +.dialog-type-confirm .dialog-message, +.dialog-type-alert .dialog-message { + min-height: 50px; +} +.dialog-type-confirm .dialog-buttons-wrapper, +.dialog-type-alert .dialog-buttons-wrapper { + padding-block-start: 10px; + display: flex; + justify-content: flex-end; + gap: 15px; +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button { + font-size: 12px; + font-weight: 500; + line-height: 1.2; + padding: 8px 16px; + outline: none; + border: none; + border-radius: var(--e-a-border-radius); + background-color: var(--e-a-btn-bg); + color: var(--e-a-btn-color-invert); + transition: var(--e-a-transition-hover); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button:hover { + border: none; +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button:focus { + background-color: var(--e-a-btn-bg-hover); + color: var(--e-a-btn-color-invert); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:active, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button:active { + background-color: var(--e-a-btn-bg-active); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:not([disabled]), +.dialog-type-alert .dialog-buttons-wrapper .dialog-button:not([disabled]) { + cursor: pointer; +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:disabled, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button:disabled { + background-color: var(--e-a-btn-bg-disabled); + color: var(--e-a-btn-color-disabled); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:not(.elementor-button-state) .elementor-state-icon, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button:not(.elementor-button-state) .elementor-state-icon { + display: none; +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel { + background: transparent; + color: var(--e-a-color-txt); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel:focus { + background: var(--e-a-bg-hover); + color: var(--e-a-color-txt-hover); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt:disabled, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel:disabled, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt:disabled, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel:disabled { + background: transparent; + color: var(--e-a-color-txt-disabled); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt-border, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt-border { + border: 1px solid var(--e-a-color-txt-muted); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-success, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-success, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-success, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-success { + background-color: var(--e-a-btn-bg-success); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-success:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-success:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-success:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-success:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-success:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-success:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-success:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-success:focus { + background-color: var(--e-a-btn-bg-success-hover); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-take_over, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-take_over, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok { + background-color: var(--e-a-btn-bg-primary); + color: var(--e-a-btn-color); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-take_over:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-take_over:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-take_over:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-take_over:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok:focus { + background-color: var(--e-a-btn-bg-primary-hover); + color: var(--e-a-btn-color); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary.e-btn-txt, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-take_over, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary.dialog-cancel, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-ok, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary.e-btn-txt, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-take_over, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary.dialog-cancel, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-ok, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel { + background: transparent; + color: var(--e-a-color-primary-bold); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary.e-btn-txt:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-take_over:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary.dialog-cancel:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-ok:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary.e-btn-txt:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-take_over:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary.dialog-cancel:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-ok:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary.e-btn-txt:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-take_over:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary.dialog-cancel:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-ok:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary.e-btn-txt:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-take_over:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary.dialog-cancel:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-ok:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel:focus { + background: var(--e-a-bg-primary); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.go-pro, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-accent, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.go-pro, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-accent { + background-color: var(--e-a-btn-bg-accent); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.go-pro:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.go-pro:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-accent:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-accent:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.go-pro:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.go-pro:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-accent:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-accent:focus { + background-color: var(--e-a-btn-bg-accent-hover); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.go-pro:active, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-accent:active, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.go-pro:active, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-accent:active { + background-color: var(--e-a-btn-bg-accent-active); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-info, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-info, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-info, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-info { + background-color: var(--e-a-btn-bg-info); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-info:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-info:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-info:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-info:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-info:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-info:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-info:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-info:focus { + background-color: var(--e-a-btn-bg-info-hover); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-warning, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-warning, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-warning, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-warning { + background-color: var(--e-a-btn-bg-warning); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-warning:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-warning:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-warning:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-warning:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-warning:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-warning:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-warning:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-warning:focus { + background-color: var(--e-a-btn-bg-warning-hover); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-danger, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-danger, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-danger, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-danger { + background-color: var(--e-a-btn-bg-danger); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-danger:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-danger:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-danger:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-danger:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-danger:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-danger:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-danger:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-danger:focus { + background-color: var(--e-a-btn-bg-danger-hover); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button i, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button i { + margin-inline-end: 5px; +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button:visited, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button:visited { + color: initial; +} +.flatpickr-calendar { + width: 280px; +} +.flatpickr-calendar .flatpickr-current-month span.cur-month { + font-weight: 300; +} +.flatpickr-calendar .dayContainer { + width: 280px; + min-width: 280px; + max-width: 280px; +} +.flatpickr-calendar .flatpickr-days { + width: 280px; +} +.flatpickr-calendar .flatpickr-day { + max-width: 37px; + height: 37px; + line-height: 37px; +} + +.elementor-hidden { + display: none; +} + +.elementor-screen-only, +.screen-reader-text, +.screen-reader-text span, +.ui-helper-hidden-accessible { + position: absolute; + top: -10000em; + width: 1px; + height: 1px; + margin: -1px; + padding: 0; + overflow: hidden; + clip: rect(0, 0, 0, 0); + border: 0; +} + +.elementor-clearfix:after { + content: ""; + display: block; + clear: both; + width: 0; + height: 0; +} + +.e-logo-wrapper { + background: var(--e-a-bg-logo); + display: inline-block; + padding: 0.75em; + border-radius: 50%; + line-height: 1; +} +.e-logo-wrapper i { + color: var(--e-a-color-logo); + font-size: 1em; +} + +.elementor *, .elementor *:before, .elementor *:after { + box-sizing: border-box; +} +.elementor a { + box-shadow: none; + text-decoration: none; +} +.elementor hr { + margin: 0; + background-color: transparent; +} +.elementor img { + height: auto; + max-width: 100%; + border: none; + border-radius: 0; + box-shadow: none; +} +.elementor .elementor-widget:not(.elementor-widget-text-editor):not(.elementor-widget-theme-post-content) figure { + margin: 0; +} +.elementor embed, +.elementor iframe, +.elementor object, +.elementor video { + max-width: 100%; + width: 100%; + margin: 0; + line-height: 1; + border: none; +} +.elementor .elementor-background-video-container, +.elementor .elementor-background-holder, +.elementor .elementor-background { + height: 100%; + width: 100%; + top: 0; + left: 0; + position: absolute; + overflow: hidden; + z-index: 0; + direction: ltr; +} +.elementor .elementor-background-video-container { + transition: opacity 1s; + pointer-events: none; +} +.elementor .elementor-background-video-container.elementor-loading { + opacity: 0; +} +.elementor .elementor-background-video-embed { + max-width: none; +} +.elementor .elementor-background-video-embed, .elementor .elementor-background-video-hosted { + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); +} +.elementor .elementor-background-video { + max-width: none; + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); +} +.elementor .elementor-html5-video { + object-fit: cover; +} +.elementor .elementor-background-overlay { + height: 100%; + width: 100%; + top: 0; + left: 0; + position: absolute; +} +.elementor .elementor-background-slideshow { + position: absolute; + width: 100%; + height: 100%; + z-index: 0; + top: 0; + right: 0; +} +.elementor .elementor-background-slideshow__slide__image { + width: 100%; + height: 100%; + background-position: center center; + background-size: cover; +} + +.elementor-widget-wrap > .elementor-element.elementor-absolute, +.e-con > .elementor-element.elementor-absolute, +.e-con-inner > .elementor-element.elementor-absolute { + position: absolute; +} +.elementor-widget-wrap > .elementor-element.elementor-fixed, +.e-con > .elementor-element.elementor-fixed, +.e-con-inner > .elementor-element.elementor-fixed { + position: fixed; +} + +.elementor-widget-wrap .elementor-element.elementor-widget__width-auto, .elementor-widget-wrap .elementor-element.elementor-widget__width-initial { + max-width: 100%; +} +@media (max-width: ELEMENTOR_SCREEN_TABLET_MAX) { + .elementor-widget-wrap .elementor-element.elementor-widget-tablet__width-auto, .elementor-widget-wrap .elementor-element.elementor-widget-tablet__width-initial { + max-width: 100%; + } +} +@media (max-width: ELEMENTOR_SCREEN_MOBILE_MAX) { + .elementor-widget-wrap .elementor-element.elementor-widget-mobile__width-auto, .elementor-widget-wrap .elementor-element.elementor-widget-mobile__width-initial { + max-width: 100%; + } +} + +.elementor-element { + --flex-direction: initial; + --flex-wrap: initial; + --justify-content: initial; + --align-items: initial; + --align-content: initial; + --gap: initial; + --flex-basis: initial; + --flex-grow: initial; + --flex-shrink: initial; + --order: initial; + --align-self: initial; + flex-basis: var(--flex-basis); + flex-grow: var(--flex-grow); + flex-shrink: var(--flex-shrink); + order: var(--order); + align-self: var(--align-self); +} +.elementor-element.elementor-absolute, .elementor-element.elementor-fixed { + z-index: 1; +} +.elementor-element:where(.e-con-full, .elementor-widget) { + flex-direction: var(--flex-direction); + flex-wrap: var(--flex-wrap); + justify-content: var(--justify-content); + align-items: var(--align-items); + align-content: var(--align-content); + gap: var(--gap); +} + +.elementor-invisible { + visibility: hidden; +} + +.elementor-align-center { + text-align: center; +} +.elementor-align-center .elementor-button { + width: auto; +} +.elementor-align-right { + text-align: right; +} +.elementor-align-right .elementor-button { + width: auto; +} +.elementor-align-left { + text-align: left; +} +.elementor-align-left .elementor-button { + width: auto; +} +.elementor-align-justify .elementor-button { + width: 100%; +} + +.elementor-custom-embed-play { + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); +} +.elementor-custom-embed-play i { + font-size: 100px; + color: #fff; + text-shadow: 1px 0 6px rgba(0, 0, 0, 0.3); +} +.elementor-custom-embed-play svg { + height: 100px; + width: 100px; + fill: #fff; + filter: drop-shadow(1px 0 6px rgba(0, 0, 0, 0.3)); +} +.elementor-custom-embed-play i, +.elementor-custom-embed-play svg { + opacity: 0.8; + transition: all 0.5s; +} +.elementor-custom-embed-play.elementor-playing i { + font-family: eicons; +} +.elementor-custom-embed-play.elementor-playing i:before { + content: "\e8fb"; +} +.elementor-custom-embed-play.elementor-playing i, +.elementor-custom-embed-play.elementor-playing svg { + animation: eicon-spin 2s infinite linear; +} + +.elementor-tag { + display: inline-flex; +} + +.elementor-ken-burns { + transition-property: transform; + transition-duration: 10s; + transition-timing-function: linear; +} +.elementor-ken-burns--out { + transform: scale(1.3); +} +.elementor-ken-burns--active { + transition-duration: 20s; +} +.elementor-ken-burns--active.elementor-ken-burns--out { + transform: scale(1); +} +.elementor-ken-burns--active.elementor-ken-burns--in { + transform: scale(1.3); +} + +@media (min-width: ELEMENTOR_SCREEN_WIDESCREEN_MIN) { + .elementor-widescreen-align-center { + text-align: center; + } + .elementor-widescreen-align-center .elementor-button { + width: auto; + } + .elementor-widescreen-align-right { + text-align: right; + } + .elementor-widescreen-align-right .elementor-button { + width: auto; + } + .elementor-widescreen-align-left { + text-align: left; + } + .elementor-widescreen-align-left .elementor-button { + width: auto; + } + .elementor-widescreen-align-justify .elementor-button { + width: 100%; + } +} +@media (max-width: ELEMENTOR_SCREEN_LAPTOP_MAX) { + .elementor-laptop-align-center { + text-align: center; + } + .elementor-laptop-align-center .elementor-button { + width: auto; + } + .elementor-laptop-align-right { + text-align: right; + } + .elementor-laptop-align-right .elementor-button { + width: auto; + } + .elementor-laptop-align-left { + text-align: left; + } + .elementor-laptop-align-left .elementor-button { + width: auto; + } + .elementor-laptop-align-justify .elementor-button { + width: 100%; + } +} +@media (max-width: ELEMENTOR_SCREEN_TABLET_EXTRA_MAX) { + .elementor-tablet_extra-align-center { + text-align: center; + } + .elementor-tablet_extra-align-center .elementor-button { + width: auto; + } + .elementor-tablet_extra-align-right { + text-align: right; + } + .elementor-tablet_extra-align-right .elementor-button { + width: auto; + } + .elementor-tablet_extra-align-left { + text-align: left; + } + .elementor-tablet_extra-align-left .elementor-button { + width: auto; + } + .elementor-tablet_extra-align-justify .elementor-button { + width: 100%; + } +} +@media (max-width: ELEMENTOR_SCREEN_TABLET_MAX) { + .elementor-tablet-align-center { + text-align: center; + } + .elementor-tablet-align-center .elementor-button { + width: auto; + } + .elementor-tablet-align-right { + text-align: right; + } + .elementor-tablet-align-right .elementor-button { + width: auto; + } + .elementor-tablet-align-left { + text-align: left; + } + .elementor-tablet-align-left .elementor-button { + width: auto; + } + .elementor-tablet-align-justify .elementor-button { + width: 100%; + } +} +@media (max-width: ELEMENTOR_SCREEN_MOBILE_EXTRA_MAX) { + .elementor-mobile_extra-align-center { + text-align: center; + } + .elementor-mobile_extra-align-center .elementor-button { + width: auto; + } + .elementor-mobile_extra-align-right { + text-align: right; + } + .elementor-mobile_extra-align-right .elementor-button { + width: auto; + } + .elementor-mobile_extra-align-left { + text-align: left; + } + .elementor-mobile_extra-align-left .elementor-button { + width: auto; + } + .elementor-mobile_extra-align-justify .elementor-button { + width: 100%; + } +} +@media (max-width: ELEMENTOR_SCREEN_MOBILE_MAX) { + .elementor-mobile-align-center { + text-align: center; + } + .elementor-mobile-align-center .elementor-button { + width: auto; + } + .elementor-mobile-align-right { + text-align: right; + } + .elementor-mobile-align-right .elementor-button { + width: auto; + } + .elementor-mobile-align-left { + text-align: left; + } + .elementor-mobile-align-left .elementor-button { + width: auto; + } + .elementor-mobile-align-justify .elementor-button { + width: 100%; + } +} +:root { + --page-title-display: block; +} + +.elementor-page-title, h1.entry-title { + display: var(--page-title-display); +} + +@keyframes eicon-spin { + 0% { + transform: rotate(0deg); + } + 100% { + transform: rotate(359deg); + } +} +.eicon-animation-spin { + animation: eicon-spin 2s infinite linear; +} + +.elementor-section { + position: relative; +} +.elementor-section .elementor-container { + display: flex; + margin-right: auto; + margin-left: auto; + position: relative; +} +@media (max-width: ELEMENTOR_SCREEN_TABLET_MAX) { + .elementor-section .elementor-container { + flex-wrap: wrap; + } +} +.elementor-section.elementor-section-boxed > .elementor-container { + max-width: 1140px; +} +.elementor-section.elementor-section-stretched { + position: relative; + width: 100%; +} +.elementor-section.elementor-section-items-top > .elementor-container { + align-items: flex-start; +} +.elementor-section.elementor-section-items-middle > .elementor-container { + align-items: center; +} +.elementor-section.elementor-section-items-bottom > .elementor-container { + align-items: flex-end; +} +@media (min-width: ELEMENTOR_SCREEN_MOBILE_NEXT) { + .elementor-section.elementor-section-height-full { + height: 100vh; + } + .elementor-section.elementor-section-height-full > .elementor-container { + height: 100%; + } +} + +.elementor-bc-flex-widget .elementor-section-content-top > .elementor-container > .elementor-column > .elementor-widget-wrap { + align-items: flex-start; +} +.elementor-bc-flex-widget .elementor-section-content-middle > .elementor-container > .elementor-column > .elementor-widget-wrap { + align-items: center; +} +.elementor-bc-flex-widget .elementor-section-content-bottom > .elementor-container > .elementor-column > .elementor-widget-wrap { + align-items: flex-end; +} + +.elementor-row { + width: 100%; + display: flex; +} +@media (max-width: ELEMENTOR_SCREEN_TABLET_MAX) { + .elementor-row { + flex-wrap: wrap; + } +} + +.elementor-widget-wrap { + position: relative; + width: 100%; + flex-wrap: wrap; + align-content: flex-start; +} +.elementor:not(.elementor-bc-flex-widget) .elementor-widget-wrap { + display: flex; +} +.elementor-widget-wrap > .elementor-element { + width: 100%; +} +.elementor-widget-wrap.e-swiper-container { + width: calc(100% - (var(--e-column-margin-left, 0px) + var(--e-column-margin-right, 0px))); +} + +.elementor-widget { + position: relative; +} +.elementor-widget:not(:last-child) { + margin-bottom: 20px; +} +.elementor-widget:not(:last-child).elementor-widget__width-auto, .elementor-widget:not(:last-child).elementor-widget__width-initial, .elementor-widget:not(:last-child).elementor-absolute { + margin-bottom: 0; +} + +.elementor-column { + position: relative; + min-height: 1px; + display: flex; +} + +.elementor-column-wrap { + width: 100%; + position: relative; + display: flex; +} + +.elementor-column-gap-narrow > .elementor-column > .elementor-element-populated { + padding: 5px; +} +.elementor-column-gap-default > .elementor-column > .elementor-element-populated { + padding: 10px; +} +.elementor-column-gap-extended > .elementor-column > .elementor-element-populated { + padding: 15px; +} +.elementor-column-gap-wide > .elementor-column > .elementor-element-populated { + padding: 20px; +} +.elementor-column-gap-wider > .elementor-column > .elementor-element-populated { + padding: 30px; +} + +.elementor-inner-section .elementor-column-gap-no .elementor-element-populated { + padding: 0; +} + +@media (min-width: ELEMENTOR_SCREEN_MOBILE_NEXT) { + .elementor-column.elementor-col-10, .elementor-column[data-col="10"] { + width: 10%; + } + .elementor-column.elementor-col-11, .elementor-column[data-col="11"] { + width: 11.111%; + } + .elementor-column.elementor-col-12, .elementor-column[data-col="12"] { + width: 12.5%; + } + .elementor-column.elementor-col-14, .elementor-column[data-col="14"] { + width: 14.285%; + } + .elementor-column.elementor-col-16, .elementor-column[data-col="16"] { + width: 16.666%; + } + .elementor-column.elementor-col-20, .elementor-column[data-col="20"] { + width: 20%; + } + .elementor-column.elementor-col-25, .elementor-column[data-col="25"] { + width: 25%; + } + .elementor-column.elementor-col-30, .elementor-column[data-col="30"] { + width: 30%; + } + .elementor-column.elementor-col-33, .elementor-column[data-col="33"] { + width: 33.333%; + } + .elementor-column.elementor-col-40, .elementor-column[data-col="40"] { + width: 40%; + } + .elementor-column.elementor-col-50, .elementor-column[data-col="50"] { + width: 50%; + } + .elementor-column.elementor-col-60, .elementor-column[data-col="60"] { + width: 60%; + } + .elementor-column.elementor-col-66, .elementor-column[data-col="66"] { + width: 66.666%; + } + .elementor-column.elementor-col-70, .elementor-column[data-col="70"] { + width: 70%; + } + .elementor-column.elementor-col-75, .elementor-column[data-col="75"] { + width: 75%; + } + .elementor-column.elementor-col-80, .elementor-column[data-col="80"] { + width: 80%; + } + .elementor-column.elementor-col-83, .elementor-column[data-col="83"] { + width: 83.333%; + } + .elementor-column.elementor-col-90, .elementor-column[data-col="90"] { + width: 90%; + } + .elementor-column.elementor-col-100, .elementor-column[data-col="100"] { + width: 100%; + } +} +@media (max-width: 479px) { + .elementor-column.elementor-xs-10 { + width: 10%; + } + .elementor-column.elementor-xs-11 { + width: 11.111%; + } + .elementor-column.elementor-xs-12 { + width: 12.5%; + } + .elementor-column.elementor-xs-14 { + width: 14.285%; + } + .elementor-column.elementor-xs-16 { + width: 16.666%; + } + .elementor-column.elementor-xs-20 { + width: 20%; + } + .elementor-column.elementor-xs-25 { + width: 25%; + } + .elementor-column.elementor-xs-30 { + width: 30%; + } + .elementor-column.elementor-xs-33 { + width: 33.333%; + } + .elementor-column.elementor-xs-40 { + width: 40%; + } + .elementor-column.elementor-xs-50 { + width: 50%; + } + .elementor-column.elementor-xs-60 { + width: 60%; + } + .elementor-column.elementor-xs-66 { + width: 66.666%; + } + .elementor-column.elementor-xs-70 { + width: 70%; + } + .elementor-column.elementor-xs-75 { + width: 75%; + } + .elementor-column.elementor-xs-80 { + width: 80%; + } + .elementor-column.elementor-xs-83 { + width: 83.333%; + } + .elementor-column.elementor-xs-90 { + width: 90%; + } + .elementor-column.elementor-xs-100 { + width: 100%; + } +} +@media (max-width: ELEMENTOR_SCREEN_MOBILE_MAX) { + .elementor-column.elementor-sm-10 { + width: 10%; + } + .elementor-column.elementor-sm-11 { + width: 11.111%; + } + .elementor-column.elementor-sm-12 { + width: 12.5%; + } + .elementor-column.elementor-sm-14 { + width: 14.285%; + } + .elementor-column.elementor-sm-16 { + width: 16.666%; + } + .elementor-column.elementor-sm-20 { + width: 20%; + } + .elementor-column.elementor-sm-25 { + width: 25%; + } + .elementor-column.elementor-sm-30 { + width: 30%; + } + .elementor-column.elementor-sm-33 { + width: 33.333%; + } + .elementor-column.elementor-sm-40 { + width: 40%; + } + .elementor-column.elementor-sm-50 { + width: 50%; + } + .elementor-column.elementor-sm-60 { + width: 60%; + } + .elementor-column.elementor-sm-66 { + width: 66.666%; + } + .elementor-column.elementor-sm-70 { + width: 70%; + } + .elementor-column.elementor-sm-75 { + width: 75%; + } + .elementor-column.elementor-sm-80 { + width: 80%; + } + .elementor-column.elementor-sm-83 { + width: 83.333%; + } + .elementor-column.elementor-sm-90 { + width: 90%; + } + .elementor-column.elementor-sm-100 { + width: 100%; + } +} +@media (min-width: ELEMENTOR_SCREEN_MOBILE_NEXT) and (max-width: ELEMENTOR_SCREEN_TABLET_MAX) { + .elementor-column.elementor-md-10 { + width: 10%; + } + .elementor-column.elementor-md-11 { + width: 11.111%; + } + .elementor-column.elementor-md-12 { + width: 12.5%; + } + .elementor-column.elementor-md-14 { + width: 14.285%; + } + .elementor-column.elementor-md-16 { + width: 16.666%; + } + .elementor-column.elementor-md-20 { + width: 20%; + } + .elementor-column.elementor-md-25 { + width: 25%; + } + .elementor-column.elementor-md-30 { + width: 30%; + } + .elementor-column.elementor-md-33 { + width: 33.333%; + } + .elementor-column.elementor-md-40 { + width: 40%; + } + .elementor-column.elementor-md-50 { + width: 50%; + } + .elementor-column.elementor-md-60 { + width: 60%; + } + .elementor-column.elementor-md-66 { + width: 66.666%; + } + .elementor-column.elementor-md-70 { + width: 70%; + } + .elementor-column.elementor-md-75 { + width: 75%; + } + .elementor-column.elementor-md-80 { + width: 80%; + } + .elementor-column.elementor-md-83 { + width: 83.333%; + } + .elementor-column.elementor-md-90 { + width: 90%; + } + .elementor-column.elementor-md-100 { + width: 100%; + } +} + +@media (min-width: ELEMENTOR_SCREEN_WIDESCREEN_MIN) { + .elementor-reverse-widescreen > .elementor-container > :nth-child(1) { + order: 10; + } + .elementor-reverse-widescreen > .elementor-container > :nth-child(2) { + order: 9; + } + .elementor-reverse-widescreen > .elementor-container > :nth-child(3) { + order: 8; + } + .elementor-reverse-widescreen > .elementor-container > :nth-child(4) { + order: 7; + } + .elementor-reverse-widescreen > .elementor-container > :nth-child(5) { + order: 6; + } + .elementor-reverse-widescreen > .elementor-container > :nth-child(6) { + order: 5; + } + .elementor-reverse-widescreen > .elementor-container > :nth-child(7) { + order: 4; + } + .elementor-reverse-widescreen > .elementor-container > :nth-child(8) { + order: 3; + } + .elementor-reverse-widescreen > .elementor-container > :nth-child(9) { + order: 2; + } + .elementor-reverse-widescreen > .elementor-container > :nth-child(10) { + order: 1; + } +} +@media (min-width: ELEMENTOR_SCREEN_TABLET_NEXT) and (max-width: ELEMENTOR_SCREEN_LAPTOP_MAX) { + .elementor-reverse-laptop > .elementor-container > :nth-child(1) { + order: 10; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(2) { + order: 9; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(3) { + order: 8; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(4) { + order: 7; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(5) { + order: 6; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(6) { + order: 5; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(7) { + order: 4; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(8) { + order: 3; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(9) { + order: 2; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(10) { + order: 1; + } +} +@media (min-width: ELEMENTOR_SCREEN_TABLET_EXTRA_NEXT) and (max-width: ELEMENTOR_SCREEN_LAPTOP_MAX) { + .elementor-reverse-laptop > .elementor-container > :nth-child(1) { + order: 10; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(2) { + order: 9; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(3) { + order: 8; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(4) { + order: 7; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(5) { + order: 6; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(6) { + order: 5; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(7) { + order: 4; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(8) { + order: 3; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(9) { + order: 2; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(10) { + order: 1; + } +} +@media (min-width: ELEMENTOR_SCREEN_TABLET_NEXT) and (max-width: ELEMENTOR_SCREEN_TABLET_EXTRA_MAX) { + .elementor-reverse-laptop > .elementor-container > :nth-child(1) { + order: initial; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(2) { + order: initial; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(3) { + order: initial; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(4) { + order: initial; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(5) { + order: initial; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(6) { + order: initial; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(7) { + order: initial; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(8) { + order: initial; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(9) { + order: initial; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(10) { + order: initial; + } + .elementor-reverse-tablet_extra > .elementor-container > :nth-child(1) { + order: 10; + } + .elementor-reverse-tablet_extra > .elementor-container > :nth-child(2) { + order: 9; + } + .elementor-reverse-tablet_extra > .elementor-container > :nth-child(3) { + order: 8; + } + .elementor-reverse-tablet_extra > .elementor-container > :nth-child(4) { + order: 7; + } + .elementor-reverse-tablet_extra > .elementor-container > :nth-child(5) { + order: 6; + } + .elementor-reverse-tablet_extra > .elementor-container > :nth-child(6) { + order: 5; + } + .elementor-reverse-tablet_extra > .elementor-container > :nth-child(7) { + order: 4; + } + .elementor-reverse-tablet_extra > .elementor-container > :nth-child(8) { + order: 3; + } + .elementor-reverse-tablet_extra > .elementor-container > :nth-child(9) { + order: 2; + } + .elementor-reverse-tablet_extra > .elementor-container > :nth-child(10) { + order: 1; + } +} +@media (min-width: ELEMENTOR_SCREEN_MOBILE_NEXT) and (max-width: ELEMENTOR_SCREEN_TABLET_MAX) { + .elementor-reverse-tablet > .elementor-container > :nth-child(1) { + order: 10; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(2) { + order: 9; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(3) { + order: 8; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(4) { + order: 7; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(5) { + order: 6; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(6) { + order: 5; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(7) { + order: 4; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(8) { + order: 3; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(9) { + order: 2; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(10) { + order: 1; + } +} +@media (min-width: ELEMENTOR_SCREEN_MOBILE_EXTRA_NEXT) and (max-width: ELEMENTOR_SCREEN_TABLET_MAX) { + .elementor-reverse-tablet > .elementor-container > :nth-child(1) { + order: 10; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(2) { + order: 9; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(3) { + order: 8; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(4) { + order: 7; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(5) { + order: 6; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(6) { + order: 5; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(7) { + order: 4; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(8) { + order: 3; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(9) { + order: 2; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(10) { + order: 1; + } +} +@media (min-width: ELEMENTOR_SCREEN_MOBILE_NEXT) and (max-width: ELEMENTOR_SCREEN_MOBILE_EXTRA_MAX) { + .elementor-reverse-tablet > .elementor-container > :nth-child(1) { + order: initial; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(2) { + order: initial; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(3) { + order: initial; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(4) { + order: initial; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(5) { + order: initial; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(6) { + order: initial; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(7) { + order: initial; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(8) { + order: initial; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(9) { + order: initial; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(10) { + order: initial; + } + .elementor-reverse-mobile_extra > .elementor-container > :nth-child(1) { + order: 10; + } + .elementor-reverse-mobile_extra > .elementor-container > :nth-child(2) { + order: 9; + } + .elementor-reverse-mobile_extra > .elementor-container > :nth-child(3) { + order: 8; + } + .elementor-reverse-mobile_extra > .elementor-container > :nth-child(4) { + order: 7; + } + .elementor-reverse-mobile_extra > .elementor-container > :nth-child(5) { + order: 6; + } + .elementor-reverse-mobile_extra > .elementor-container > :nth-child(6) { + order: 5; + } + .elementor-reverse-mobile_extra > .elementor-container > :nth-child(7) { + order: 4; + } + .elementor-reverse-mobile_extra > .elementor-container > :nth-child(8) { + order: 3; + } + .elementor-reverse-mobile_extra > .elementor-container > :nth-child(9) { + order: 2; + } + .elementor-reverse-mobile_extra > .elementor-container > :nth-child(10) { + order: 1; + } +} +@media (max-width: ELEMENTOR_SCREEN_MOBILE_MAX) { + .elementor-reverse-mobile > .elementor-container > :nth-child(1) { + order: 10; + } + .elementor-reverse-mobile > .elementor-container > :nth-child(2) { + order: 9; + } + .elementor-reverse-mobile > .elementor-container > :nth-child(3) { + order: 8; + } + .elementor-reverse-mobile > .elementor-container > :nth-child(4) { + order: 7; + } + .elementor-reverse-mobile > .elementor-container > :nth-child(5) { + order: 6; + } + .elementor-reverse-mobile > .elementor-container > :nth-child(6) { + order: 5; + } + .elementor-reverse-mobile > .elementor-container > :nth-child(7) { + order: 4; + } + .elementor-reverse-mobile > .elementor-container > :nth-child(8) { + order: 3; + } + .elementor-reverse-mobile > .elementor-container > :nth-child(9) { + order: 2; + } + .elementor-reverse-mobile > .elementor-container > :nth-child(10) { + order: 1; + } + .elementor-column { + width: 100%; + } +} +ul.elementor-icon-list-items.elementor-inline-items { + display: flex; + flex-wrap: wrap; +} +ul.elementor-icon-list-items.elementor-inline-items .elementor-inline-item { + word-break: break-word; +} + +.elementor-grid { + display: grid; + grid-column-gap: var(--grid-column-gap); + grid-row-gap: var(--grid-row-gap); +} +.elementor-grid .elementor-grid-item { + min-width: 0; +} +.elementor-grid-0 .elementor-grid { + display: inline-block; + width: 100%; + word-spacing: var(--grid-column-gap); + margin-bottom: calc(-1 * var(--grid-row-gap)); +} +.elementor-grid-0 .elementor-grid .elementor-grid-item { + display: inline-block; + margin-bottom: var(--grid-row-gap); + word-break: break-word; +} +.elementor-grid-1 .elementor-grid { + grid-template-columns: repeat(1, 1fr); +} +.elementor-grid-2 .elementor-grid { + grid-template-columns: repeat(2, 1fr); +} +.elementor-grid-3 .elementor-grid { + grid-template-columns: repeat(3, 1fr); +} +.elementor-grid-4 .elementor-grid { + grid-template-columns: repeat(4, 1fr); +} +.elementor-grid-5 .elementor-grid { + grid-template-columns: repeat(5, 1fr); +} +.elementor-grid-6 .elementor-grid { + grid-template-columns: repeat(6, 1fr); +} +.elementor-grid-7 .elementor-grid { + grid-template-columns: repeat(7, 1fr); +} +.elementor-grid-8 .elementor-grid { + grid-template-columns: repeat(8, 1fr); +} +.elementor-grid-9 .elementor-grid { + grid-template-columns: repeat(9, 1fr); +} +.elementor-grid-10 .elementor-grid { + grid-template-columns: repeat(10, 1fr); +} +.elementor-grid-11 .elementor-grid { + grid-template-columns: repeat(11, 1fr); +} +.elementor-grid-12 .elementor-grid { + grid-template-columns: repeat(12, 1fr); +} +@media (min-width: ELEMENTOR_SCREEN_WIDESCREEN_MIN) { + .elementor-grid-widescreen-0 .elementor-grid { + display: inline-block; + width: 100%; + word-spacing: var(--grid-column-gap); + margin-bottom: calc(-1 * var(--grid-row-gap)); + } + .elementor-grid-widescreen-0 .elementor-grid .elementor-grid-item { + display: inline-block; + margin-bottom: var(--grid-row-gap); + word-break: break-word; + } + .elementor-grid-widescreen-1 .elementor-grid { + grid-template-columns: repeat(1, 1fr); + } + .elementor-grid-widescreen-2 .elementor-grid { + grid-template-columns: repeat(2, 1fr); + } + .elementor-grid-widescreen-3 .elementor-grid { + grid-template-columns: repeat(3, 1fr); + } + .elementor-grid-widescreen-4 .elementor-grid { + grid-template-columns: repeat(4, 1fr); + } + .elementor-grid-widescreen-5 .elementor-grid { + grid-template-columns: repeat(5, 1fr); + } + .elementor-grid-widescreen-6 .elementor-grid { + grid-template-columns: repeat(6, 1fr); + } + .elementor-grid-widescreen-7 .elementor-grid { + grid-template-columns: repeat(7, 1fr); + } + .elementor-grid-widescreen-8 .elementor-grid { + grid-template-columns: repeat(8, 1fr); + } + .elementor-grid-widescreen-9 .elementor-grid { + grid-template-columns: repeat(9, 1fr); + } + .elementor-grid-widescreen-10 .elementor-grid { + grid-template-columns: repeat(10, 1fr); + } + .elementor-grid-widescreen-11 .elementor-grid { + grid-template-columns: repeat(11, 1fr); + } + .elementor-grid-widescreen-12 .elementor-grid { + grid-template-columns: repeat(12, 1fr); + } +} +@media (max-width: ELEMENTOR_SCREEN_LAPTOP_MAX) { + .elementor-grid-laptop-0 .elementor-grid { + display: inline-block; + width: 100%; + word-spacing: var(--grid-column-gap); + margin-bottom: calc(-1 * var(--grid-row-gap)); + } + .elementor-grid-laptop-0 .elementor-grid .elementor-grid-item { + display: inline-block; + margin-bottom: var(--grid-row-gap); + word-break: break-word; + } + .elementor-grid-laptop-1 .elementor-grid { + grid-template-columns: repeat(1, 1fr); + } + .elementor-grid-laptop-2 .elementor-grid { + grid-template-columns: repeat(2, 1fr); + } + .elementor-grid-laptop-3 .elementor-grid { + grid-template-columns: repeat(3, 1fr); + } + .elementor-grid-laptop-4 .elementor-grid { + grid-template-columns: repeat(4, 1fr); + } + .elementor-grid-laptop-5 .elementor-grid { + grid-template-columns: repeat(5, 1fr); + } + .elementor-grid-laptop-6 .elementor-grid { + grid-template-columns: repeat(6, 1fr); + } + .elementor-grid-laptop-7 .elementor-grid { + grid-template-columns: repeat(7, 1fr); + } + .elementor-grid-laptop-8 .elementor-grid { + grid-template-columns: repeat(8, 1fr); + } + .elementor-grid-laptop-9 .elementor-grid { + grid-template-columns: repeat(9, 1fr); + } + .elementor-grid-laptop-10 .elementor-grid { + grid-template-columns: repeat(10, 1fr); + } + .elementor-grid-laptop-11 .elementor-grid { + grid-template-columns: repeat(11, 1fr); + } + .elementor-grid-laptop-12 .elementor-grid { + grid-template-columns: repeat(12, 1fr); + } +} +@media (max-width: ELEMENTOR_SCREEN_TABLET_EXTRA_MAX) { + .elementor-grid-tablet_extra-0 .elementor-grid { + display: inline-block; + width: 100%; + word-spacing: var(--grid-column-gap); + margin-bottom: calc(-1 * var(--grid-row-gap)); + } + .elementor-grid-tablet_extra-0 .elementor-grid .elementor-grid-item { + display: inline-block; + margin-bottom: var(--grid-row-gap); + word-break: break-word; + } + .elementor-grid-tablet_extra-1 .elementor-grid { + grid-template-columns: repeat(1, 1fr); + } + .elementor-grid-tablet_extra-2 .elementor-grid { + grid-template-columns: repeat(2, 1fr); + } + .elementor-grid-tablet_extra-3 .elementor-grid { + grid-template-columns: repeat(3, 1fr); + } + .elementor-grid-tablet_extra-4 .elementor-grid { + grid-template-columns: repeat(4, 1fr); + } + .elementor-grid-tablet_extra-5 .elementor-grid { + grid-template-columns: repeat(5, 1fr); + } + .elementor-grid-tablet_extra-6 .elementor-grid { + grid-template-columns: repeat(6, 1fr); + } + .elementor-grid-tablet_extra-7 .elementor-grid { + grid-template-columns: repeat(7, 1fr); + } + .elementor-grid-tablet_extra-8 .elementor-grid { + grid-template-columns: repeat(8, 1fr); + } + .elementor-grid-tablet_extra-9 .elementor-grid { + grid-template-columns: repeat(9, 1fr); + } + .elementor-grid-tablet_extra-10 .elementor-grid { + grid-template-columns: repeat(10, 1fr); + } + .elementor-grid-tablet_extra-11 .elementor-grid { + grid-template-columns: repeat(11, 1fr); + } + .elementor-grid-tablet_extra-12 .elementor-grid { + grid-template-columns: repeat(12, 1fr); + } +} +@media (max-width: ELEMENTOR_SCREEN_TABLET_MAX) { + .elementor-grid-tablet-0 .elementor-grid { + display: inline-block; + width: 100%; + word-spacing: var(--grid-column-gap); + margin-bottom: calc(-1 * var(--grid-row-gap)); + } + .elementor-grid-tablet-0 .elementor-grid .elementor-grid-item { + display: inline-block; + margin-bottom: var(--grid-row-gap); + word-break: break-word; + } + .elementor-grid-tablet-1 .elementor-grid { + grid-template-columns: repeat(1, 1fr); + } + .elementor-grid-tablet-2 .elementor-grid { + grid-template-columns: repeat(2, 1fr); + } + .elementor-grid-tablet-3 .elementor-grid { + grid-template-columns: repeat(3, 1fr); + } + .elementor-grid-tablet-4 .elementor-grid { + grid-template-columns: repeat(4, 1fr); + } + .elementor-grid-tablet-5 .elementor-grid { + grid-template-columns: repeat(5, 1fr); + } + .elementor-grid-tablet-6 .elementor-grid { + grid-template-columns: repeat(6, 1fr); + } + .elementor-grid-tablet-7 .elementor-grid { + grid-template-columns: repeat(7, 1fr); + } + .elementor-grid-tablet-8 .elementor-grid { + grid-template-columns: repeat(8, 1fr); + } + .elementor-grid-tablet-9 .elementor-grid { + grid-template-columns: repeat(9, 1fr); + } + .elementor-grid-tablet-10 .elementor-grid { + grid-template-columns: repeat(10, 1fr); + } + .elementor-grid-tablet-11 .elementor-grid { + grid-template-columns: repeat(11, 1fr); + } + .elementor-grid-tablet-12 .elementor-grid { + grid-template-columns: repeat(12, 1fr); + } +} +@media (max-width: ELEMENTOR_SCREEN_MOBILE_EXTRA_MAX) { + .elementor-grid-mobile_extra-0 .elementor-grid { + display: inline-block; + width: 100%; + word-spacing: var(--grid-column-gap); + margin-bottom: calc(-1 * var(--grid-row-gap)); + } + .elementor-grid-mobile_extra-0 .elementor-grid .elementor-grid-item { + display: inline-block; + margin-bottom: var(--grid-row-gap); + word-break: break-word; + } + .elementor-grid-mobile_extra-1 .elementor-grid { + grid-template-columns: repeat(1, 1fr); + } + .elementor-grid-mobile_extra-2 .elementor-grid { + grid-template-columns: repeat(2, 1fr); + } + .elementor-grid-mobile_extra-3 .elementor-grid { + grid-template-columns: repeat(3, 1fr); + } + .elementor-grid-mobile_extra-4 .elementor-grid { + grid-template-columns: repeat(4, 1fr); + } + .elementor-grid-mobile_extra-5 .elementor-grid { + grid-template-columns: repeat(5, 1fr); + } + .elementor-grid-mobile_extra-6 .elementor-grid { + grid-template-columns: repeat(6, 1fr); + } + .elementor-grid-mobile_extra-7 .elementor-grid { + grid-template-columns: repeat(7, 1fr); + } + .elementor-grid-mobile_extra-8 .elementor-grid { + grid-template-columns: repeat(8, 1fr); + } + .elementor-grid-mobile_extra-9 .elementor-grid { + grid-template-columns: repeat(9, 1fr); + } + .elementor-grid-mobile_extra-10 .elementor-grid { + grid-template-columns: repeat(10, 1fr); + } + .elementor-grid-mobile_extra-11 .elementor-grid { + grid-template-columns: repeat(11, 1fr); + } + .elementor-grid-mobile_extra-12 .elementor-grid { + grid-template-columns: repeat(12, 1fr); + } +} +@media (max-width: ELEMENTOR_SCREEN_MOBILE_MAX) { + .elementor-grid-mobile-0 .elementor-grid { + display: inline-block; + width: 100%; + word-spacing: var(--grid-column-gap); + margin-bottom: calc(-1 * var(--grid-row-gap)); + } + .elementor-grid-mobile-0 .elementor-grid .elementor-grid-item { + display: inline-block; + margin-bottom: var(--grid-row-gap); + word-break: break-word; + } + .elementor-grid-mobile-1 .elementor-grid { + grid-template-columns: repeat(1, 1fr); + } + .elementor-grid-mobile-2 .elementor-grid { + grid-template-columns: repeat(2, 1fr); + } + .elementor-grid-mobile-3 .elementor-grid { + grid-template-columns: repeat(3, 1fr); + } + .elementor-grid-mobile-4 .elementor-grid { + grid-template-columns: repeat(4, 1fr); + } + .elementor-grid-mobile-5 .elementor-grid { + grid-template-columns: repeat(5, 1fr); + } + .elementor-grid-mobile-6 .elementor-grid { + grid-template-columns: repeat(6, 1fr); + } + .elementor-grid-mobile-7 .elementor-grid { + grid-template-columns: repeat(7, 1fr); + } + .elementor-grid-mobile-8 .elementor-grid { + grid-template-columns: repeat(8, 1fr); + } + .elementor-grid-mobile-9 .elementor-grid { + grid-template-columns: repeat(9, 1fr); + } + .elementor-grid-mobile-10 .elementor-grid { + grid-template-columns: repeat(10, 1fr); + } + .elementor-grid-mobile-11 .elementor-grid { + grid-template-columns: repeat(11, 1fr); + } + .elementor-grid-mobile-12 .elementor-grid { + grid-template-columns: repeat(12, 1fr); + } +} + +@media (min-width: ELEMENTOR_SCREEN_DESKTOP_MIN) { + #elementor-device-mode:after { + content: "desktop"; + } +} +@media (min-width: ELEMENTOR_SCREEN_WIDESCREEN_MIN) { + #elementor-device-mode:after { + content: "widescreen"; + } +} +@media (max-width: ELEMENTOR_SCREEN_LAPTOP_MAX) { + #elementor-device-mode:after { + content: "laptop"; + } +} +@media (max-width: ELEMENTOR_SCREEN_TABLET_EXTRA_MAX) { + #elementor-device-mode:after { + content: "tablet_extra"; + } +} +@media (max-width: ELEMENTOR_SCREEN_TABLET_MAX) { + #elementor-device-mode:after { + content: "tablet"; + } +} +@media (max-width: ELEMENTOR_SCREEN_MOBILE_EXTRA_MAX) { + #elementor-device-mode:after { + content: "mobile_extra"; + } +} +@media (max-width: ELEMENTOR_SCREEN_MOBILE_MAX) { + #elementor-device-mode:after { + content: "mobile"; + } +} + +.e-con { + --border-radius: 0; + --border-block-start-width: 0px; + --border-inline-end-width: 0px; + --border-block-end-width: 0px; + --border-inline-start-width: 0px; + --border-style: initial; + --border-color: initial; + --container-widget-width: 100%; + --container-widget-height: initial; + --container-widget-flex-grow: 0; + --container-widget-align-self: initial; + --content-width: min(100%, var(--container-max-width, 1140px)); + --width: 100%; + --min-height: initial; + --height: auto; + --text-align: initial; + --margin-block-start: 0px; + --margin-inline-end: 0px; + --margin-block-end: 0px; + --margin-inline-start: 0px; + --padding-block-start: var(--container-default-padding-block-start, 10px); + --padding-inline-end: var(--container-default-padding-inline-end, 10px); + --padding-block-end: var(--container-default-padding-block-end, 10px); + --padding-inline-start: var(--container-default-padding-inline-start, 10px); + --position: relative; + --z-index: revert; + --overflow: visible; + --gap: var(--widgets-spacing, 20px); + --overlay-mix-blend-mode: initial; + --overlay-opacity: 1; + --overlay-transition: 0.3s; + --e-con-grid-template-columns: repeat(3, 1fr); + --e-con-grid-template-rows: repeat(2, 1fr); + position: var(--position); + width: var(--width); + min-width: 0; + min-height: var(--min-height); + height: var(--height); + border-radius: var(--border-radius); + margin-block-start: var(--bc-margin-block-start, var(--margin-block-start)); + margin-inline-end: var(--bc-margin-inline-end, var(--margin-inline-end)); + margin-block-end: var(--bc-margin-block-end, var(--margin-block-end)); + margin-inline-start: var(--bc-margin-inline-start, var(--margin-inline-start)); + padding-inline-start: var(--bc-padding-inline-start, var(--padding-inline-start)); + padding-inline-end: var(--bc-padding-inline-end, var(--padding-inline-end)); + z-index: var(--z-index); + overflow: var(--overflow); + transition: background var(--background-transition, 0.3s), border var(--border-transition, 0.3s), box-shadow var(--border-transition, 0.3s), transform var(--e-con-transform-transition-duration, 0.4s); +} +.e-con.e-flex { + --flex-direction: column; + --flex-basis: auto; + --flex-grow: 0; + --flex-shrink: 1; + flex: var(--flex-grow) var(--flex-shrink) var(--flex-basis); +} +.e-con-full, .e-con > .e-con-inner { + text-align: var(--text-align); + padding-block-start: var(--bc-padding-block-start, var(--padding-block-start)); + padding-block-end: var(--bc-padding-block-end, var(--padding-block-end)); +} +.e-con-full.e-flex, .e-con.e-flex > .e-con-inner { + flex-direction: var(--flex-direction); +} +.e-con, .e-con > .e-con-inner { + display: var(--display); +} +.e-con.e-grid { + --grid-justify-content: start; + --grid-align-content: start; + --grid-auto-flow: row; +} +.e-con.e-grid, .e-con.e-grid > .e-con-inner { + grid-template-columns: var(--e-con-grid-template-columns); + grid-template-rows: var(--e-con-grid-template-rows); + justify-content: var(--grid-justify-content); + align-content: var(--grid-align-content); + grid-auto-flow: var(--grid-auto-flow); + justify-items: var(--justify-items); + align-items: var(--align-items); +} +.e-con-boxed.e-flex { + flex-direction: column; + flex-wrap: initial; + justify-content: initial; + align-items: initial; + align-content: initial; +} +.e-con-boxed.e-grid { + justify-items: initial; + grid-template-columns: 1fr; + grid-template-rows: 1fr; +} +.e-con-boxed { + text-align: initial; + gap: initial; +} +.e-con.e-flex > .e-con-inner { + flex-wrap: var(--flex-wrap); + justify-content: var(--justify-content); + align-items: var(--align-items); + align-content: var(--align-content); + flex-basis: initial; + flex-grow: 1; + flex-shrink: initial; + align-self: initial; +} +.e-con.e-grid > .e-con-inner { + justify-items: var(--justify-items); + align-items: var(--align-items); +} +.e-con > .e-con-inner { + gap: var(--gap); + width: 100%; + max-width: var(--content-width); + margin: 0 auto; + padding-inline-start: 0; + padding-inline-end: 0; + height: 100%; +} +:is(.elementor-section-wrap, [data-elementor-id]) > .e-con { + --margin-inline-end: auto; + --margin-inline-start: auto; + max-width: min(100%, var(--width)); +} +.e-con .elementor-widget.elementor-widget { + margin-block-end: 0; +} +.e-con::before, :is(.e-con, .e-con > .e-con-inner) > .elementor-background-video-container::before, +.e-con > .elementor-motion-effects-container > .elementor-motion-effects-layer::before, +.e-con > .elementor-background-slideshow::before { + content: var(--background-overlay); + display: block; + position: absolute; + mix-blend-mode: var(--overlay-mix-blend-mode); + opacity: var(--overlay-opacity); + transition: var(--overlay-transition, 0.3s); + border-radius: var(--border-radius); + border-style: var(--border-style); + border-color: var(--border-color); + border-block-start-width: var(--border-block-start-width); + border-inline-end-width: var(--border-inline-end-width); + border-block-end-width: var(--border-block-end-width); + border-inline-start-width: var(--border-inline-start-width); + top: calc(0px - var(--border-block-start-width)); + left: calc(0px - var(--border-inline-start-width)); + width: max(100% + var(--border-inline-end-width) + var(--border-inline-start-width), 100%); + height: max(100% + var(--border-block-start-width) + var(--border-block-end-width), 100%); +} +.e-con::before { + transition: background var(--overlay-transition, 0.3s), border-radius var(--border-transition, 0.3s), opacity var(--overlay-transition, 0.3s); +} +.e-con > .elementor-background-slideshow, :is(.e-con, .e-con > .e-con-inner) > .elementor-background-video-container { + border-radius: var(--border-radius); + border-style: var(--border-style); + border-color: var(--border-color); + border-block-start-width: var(--border-block-start-width); + border-inline-end-width: var(--border-inline-end-width); + border-block-end-width: var(--border-block-end-width); + border-inline-start-width: var(--border-inline-start-width); + top: calc(0px - var(--border-block-start-width)); + left: calc(0px - var(--border-inline-start-width)); + width: max(100% + var(--border-inline-end-width) + var(--border-inline-start-width), 100%); + height: max(100% + var(--border-block-start-width) + var(--border-block-end-width), 100%); +} +@media (max-width: ELEMENTOR_SCREEN_MOBILE_MAX) { + :is(.e-con, .e-con > .e-con-inner) > .elementor-background-video-container.elementor-hidden-phone { + display: none; + } +} +:is(.e-con, .e-con > .e-con-inner) > .elementor-background-video-container::before { + z-index: 1; +} +:is(.e-con, .e-con > .e-con-inner) > .elementor-background-slideshow::before { + z-index: 2; +} +.e-con .elementor-widget { + min-width: 0; +} +.e-con .elementor-widget-video, .e-con .elementor-widget-google_maps, .e-con .elementor-widget-empty { + width: 100%; +} +.e-con .elementor-widget.e-widget-swiper { + width: 100%; +} +.e-con > .elementor-widget > .elementor-widget-container, .e-con > .e-con-inner > .elementor-widget > .elementor-widget-container { + height: 100%; +} +.elementor.elementor .e-con > .elementor-widget, .e-con.e-con > .e-con-inner > .elementor-widget { + max-width: 100%; +} + +@media (max-width: 767px) { + .e-con.e-flex { + --width: 100%; + --flex-wrap: wrap; + } +} +.e-con { + --bc-margin-block-start: var(--margin-top); + --bc-margin-block-end: var(--margin-bottom); + --bc-margin-inline-start: var(--margin-left); + --bc-margin-inline-end: var(--margin-right); + --bc-padding-block-start: var(--padding-top); + --bc-padding-block-end: var(--padding-bottom); + --bc-padding-inline-start: var(--padding-left); + --bc-padding-inline-end: var(--padding-right); +} +[dir=rtl] .e-con { + --bc-margin-inline-start: var(--margin-right); + --bc-margin-inline-end: var(--margin-left); + --bc-padding-inline-start: var(--padding-right); + --bc-padding-inline-end: var(--padding-left); +} + +.elementor-form-fields-wrapper { + display: flex; + flex-wrap: wrap; +} +.elementor-form-fields-wrapper.elementor-labels-above .elementor-field-group > input, .elementor-form-fields-wrapper.elementor-labels-above .elementor-field-group > textarea, .elementor-form-fields-wrapper.elementor-labels-above .elementor-field-group > .elementor-select-wrapper, .elementor-form-fields-wrapper.elementor-labels-above .elementor-field-group .elementor-field-subgroup { + flex-basis: 100%; + max-width: 100%; +} +.elementor-form-fields-wrapper.elementor-labels-inline > .elementor-field-group > input, .elementor-form-fields-wrapper.elementor-labels-inline > .elementor-field-group .elementor-select-wrapper { + flex-grow: 1; +} + +.elementor-field-group { + flex-wrap: wrap; + align-items: center; +} +.elementor-field-group.elementor-field-type-submit { + align-items: flex-end; +} +.elementor-field-group .elementor-field-textual { + width: 100%; + max-width: 100%; + border: 1px solid #69727D; + background-color: transparent; + color: #1f2124; + vertical-align: middle; + flex-grow: 1; +} +.elementor-field-group .elementor-field-textual:focus { + box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.1) inset; + outline: 0; +} +.elementor-field-group .elementor-field-textual::-webkit-input-placeholder { + color: inherit; + font-family: inherit; + opacity: 0.6; +} +.elementor-field-group .elementor-field-textual:-ms-input-placeholder { + color: inherit; + font-family: inherit; + opacity: 0.6; +} +.elementor-field-group .elementor-field-textual::-moz-placeholder { + color: inherit; + font-family: inherit; + opacity: 0.6; +} +.elementor-field-group .elementor-field-textual:-moz-placeholder { + color: inherit; + font-family: inherit; + opacity: 0.6; +} +.elementor-field-group .elementor-field-textual::placeholder { + color: inherit; + font-family: inherit; + opacity: 0.6; +} +.elementor-field-group .elementor-select-wrapper { + display: flex; + position: relative; + width: 100%; +} +.elementor-field-group .elementor-select-wrapper select { + appearance: none; + color: inherit; + font-size: inherit; + font-family: inherit; + font-weight: inherit; + font-style: inherit; + text-transform: inherit; + letter-spacing: inherit; + line-height: inherit; + flex-basis: 100%; + padding-left: 20px; +} +.elementor-field-group .elementor-select-wrapper:before { + content: "\e92a"; + font-family: "eicons"; + font-size: 15px; + position: absolute; + top: 50%; + transform: translateY(-50%); + left: 10px; + pointer-events: none; + text-shadow: 0 0 3px rgba(0, 0, 0, 0.3); +} +.elementor-field-group.elementor-field-type-select-multiple .elementor-select-wrapper:before { + content: ""; +} + +.elementor-field-subgroup { + display: flex; + flex-wrap: wrap; +} +.elementor-field-subgroup .elementor-field-option label { + display: inline-block; +} +.elementor-field-subgroup.elementor-subgroup-inline .elementor-field-option { + padding-left: 10px; +} +.elementor-field-subgroup:not(.elementor-subgroup-inline) .elementor-field-option { + flex-basis: 100%; +} + +.elementor-field-type-checkbox .elementor-field-subgroup .elementor-field-option input, +.elementor-field-type-checkbox .elementor-field-subgroup .elementor-field-option label, +.elementor-field-type-radio .elementor-field-subgroup .elementor-field-option input, +.elementor-field-type-radio .elementor-field-subgroup .elementor-field-option label, +.elementor-field-type-acceptance .elementor-field-subgroup .elementor-field-option input, +.elementor-field-type-acceptance .elementor-field-subgroup .elementor-field-option label { + display: inline; +} + +.elementor-field-label { + cursor: pointer; +} +.elementor-mark-required .elementor-field-label:after { + content: "*"; + color: red; + padding-right: 0.2em; +} + +.elementor-field-textual { + line-height: 1.4; + font-size: 15px; + min-height: 40px; + padding: 5px 14px; + border-radius: 3px; +} +.elementor-field-textual.elementor-size-xs { + font-size: 13px; + min-height: 33px; + padding: 4px 12px; + border-radius: 2px; +} +.elementor-field-textual.elementor-size-md { + font-size: 16px; + min-height: 47px; + padding: 6px 16px; + border-radius: 4px; +} +.elementor-field-textual.elementor-size-lg { + font-size: 18px; + min-height: 59px; + padding: 7px 20px; + border-radius: 5px; +} +.elementor-field-textual.elementor-size-xl { + font-size: 20px; + min-height: 72px; + padding: 8px 24px; + border-radius: 6px; +} + +.elementor-button-align-stretch .elementor-field-type-submit:not(.e-form__buttons__wrapper) .elementor-button { + flex-basis: 100%; +} +.elementor-button-align-stretch .e-form__buttons__wrapper { + flex-basis: 50%; + flex-grow: 1; +} +.elementor-button-align-stretch .e-form__buttons__wrapper__button { + flex-basis: 100%; +} +.elementor-button-align-center .elementor-field-type-submit, +.elementor-button-align-center .e-form__buttons { + justify-content: center; +} +.elementor-button-align-start .elementor-field-type-submit, +.elementor-button-align-start .e-form__buttons { + justify-content: flex-end; +} +.elementor-button-align-end .elementor-field-type-submit, +.elementor-button-align-end .e-form__buttons { + justify-content: flex-start; +} +.elementor-button-align-center .elementor-field-type-submit:not(.e-form__buttons__wrapper) .elementor-button, .elementor-button-align-start .elementor-field-type-submit:not(.e-form__buttons__wrapper) .elementor-button, .elementor-button-align-end .elementor-field-type-submit:not(.e-form__buttons__wrapper) .elementor-button { + flex-basis: initial; +} +.elementor-button-align-center .e-form__buttons__wrapper, .elementor-button-align-start .e-form__buttons__wrapper, .elementor-button-align-end .e-form__buttons__wrapper { + flex-grow: initial; +} +.elementor-button-align-center .e-form__buttons__wrapper, .elementor-button-align-center .e-form__buttons__wrapper__button, .elementor-button-align-start .e-form__buttons__wrapper, .elementor-button-align-start .e-form__buttons__wrapper__button, .elementor-button-align-end .e-form__buttons__wrapper, .elementor-button-align-end .e-form__buttons__wrapper__button { + flex-basis: initial; +} + +@media screen and (max-width: ELEMENTOR_SCREEN_TABLET_MAX) { + .elementor-tablet-button-align-stretch .elementor-field-type-submit:not(.e-form__buttons__wrapper) .elementor-button { + flex-basis: 100%; + } + .elementor-tablet-button-align-stretch .e-form__buttons__wrapper { + flex-basis: 50%; + flex-grow: 1; + } + .elementor-tablet-button-align-stretch .e-form__buttons__wrapper__button { + flex-basis: 100%; + } + .elementor-tablet-button-align-center .elementor-field-type-submit, + .elementor-tablet-button-align-center .e-form__buttons { + justify-content: center; + } + .elementor-tablet-button-align-start .elementor-field-type-submit, + .elementor-tablet-button-align-start .e-form__buttons { + justify-content: flex-end; + } + .elementor-tablet-button-align-end .elementor-field-type-submit, + .elementor-tablet-button-align-end .e-form__buttons { + justify-content: flex-start; + } + .elementor-tablet-button-align-center .elementor-field-type-submit:not(.e-form__buttons__wrapper) .elementor-button, .elementor-tablet-button-align-start .elementor-field-type-submit:not(.e-form__buttons__wrapper) .elementor-button, .elementor-tablet-button-align-end .elementor-field-type-submit:not(.e-form__buttons__wrapper) .elementor-button { + flex-basis: initial; + } + .elementor-tablet-button-align-center .e-form__buttons__wrapper, .elementor-tablet-button-align-start .e-form__buttons__wrapper, .elementor-tablet-button-align-end .e-form__buttons__wrapper { + flex-grow: initial; + } + .elementor-tablet-button-align-center .e-form__buttons__wrapper, .elementor-tablet-button-align-center .e-form__buttons__wrapper__button, .elementor-tablet-button-align-start .e-form__buttons__wrapper, .elementor-tablet-button-align-start .e-form__buttons__wrapper__button, .elementor-tablet-button-align-end .e-form__buttons__wrapper, .elementor-tablet-button-align-end .e-form__buttons__wrapper__button { + flex-basis: initial; + } +} +@media screen and (max-width: ELEMENTOR_SCREEN_MOBILE_MAX) { + .elementor-mobile-button-align-stretch .elementor-field-type-submit:not(.e-form__buttons__wrapper) .elementor-button { + flex-basis: 100%; + } + .elementor-mobile-button-align-stretch .e-form__buttons__wrapper { + flex-basis: 50%; + flex-grow: 1; + } + .elementor-mobile-button-align-stretch .e-form__buttons__wrapper__button { + flex-basis: 100%; + } + .elementor-mobile-button-align-center .elementor-field-type-submit, + .elementor-mobile-button-align-center .e-form__buttons { + justify-content: center; + } + .elementor-mobile-button-align-start .elementor-field-type-submit, + .elementor-mobile-button-align-start .e-form__buttons { + justify-content: flex-end; + } + .elementor-mobile-button-align-end .elementor-field-type-submit, + .elementor-mobile-button-align-end .e-form__buttons { + justify-content: flex-start; + } + .elementor-mobile-button-align-center .elementor-field-type-submit:not(.e-form__buttons__wrapper) .elementor-button, .elementor-mobile-button-align-start .elementor-field-type-submit:not(.e-form__buttons__wrapper) .elementor-button, .elementor-mobile-button-align-end .elementor-field-type-submit:not(.e-form__buttons__wrapper) .elementor-button { + flex-basis: initial; + } + .elementor-mobile-button-align-center .e-form__buttons__wrapper, .elementor-mobile-button-align-start .e-form__buttons__wrapper, .elementor-mobile-button-align-end .e-form__buttons__wrapper { + flex-grow: initial; + } + .elementor-mobile-button-align-center .e-form__buttons__wrapper, .elementor-mobile-button-align-center .e-form__buttons__wrapper__button, .elementor-mobile-button-align-start .e-form__buttons__wrapper, .elementor-mobile-button-align-start .e-form__buttons__wrapper__button, .elementor-mobile-button-align-end .e-form__buttons__wrapper, .elementor-mobile-button-align-end .e-form__buttons__wrapper__button { + flex-basis: initial; + } +} +.elementor-error .elementor-field { + border-color: #d9534f; +} +.elementor-error .help-inline { + color: #d9534f; + font-size: 0.9em; +} + +.elementor-message { + margin: 10px 0; + font-size: 1em; + line-height: 1; +} +.elementor-message:before { + content: "\e90e"; + display: inline-block; + font-family: eicons; + font-weight: normal; + font-style: normal; + vertical-align: middle; + margin-left: 5px; +} +.elementor-message.elementor-message-danger { + color: #d9534f; +} +.elementor-message.elementor-message-danger:before { + content: "\e87f"; +} +.elementor-message.form-message-success { + color: #5cb85c; +} + +.elementor-form .elementor-button { + padding-top: 0; + padding-bottom: 0; + border: none; +} +.elementor-form .elementor-button > span { + display: flex; + justify-content: center; +} +.elementor-form .elementor-button.elementor-size-xs { + min-height: 33px; +} +.elementor-form .elementor-button.elementor-size-sm { + min-height: 40px; +} +.elementor-form .elementor-button.elementor-size-md { + min-height: 47px; +} +.elementor-form .elementor-button.elementor-size-lg { + min-height: 59px; +} +.elementor-form .elementor-button.elementor-size-xl { + min-height: 72px; +} + +.elementor-element .elementor-widget-container { + transition: background 0.3s, border 0.3s, border-radius 0.3s, box-shadow 0.3s, transform var(--e-transform-transition-duration, 400ms); +} + +.elementor-button { + display: inline-block; + line-height: 1; + background-color: #69727D; + font-size: 15px; + padding: 12px 24px; + border-radius: 3px; + color: #fff; + fill: #fff; + text-align: center; + transition: all 0.3s; +} +.elementor-button:hover, .elementor-button:focus, .elementor-button:visited { + color: #fff; +} +.elementor-button-content-wrapper { + display: flex; + justify-content: center; +} +.elementor-button-icon { + flex-grow: 0; + order: 5; +} +.elementor-button-icon svg { + width: 1em; + height: auto; +} +.elementor-button-icon .e-font-icon-svg { + height: 1em; +} +.elementor-button-text { + flex-grow: 1; + order: 10; + display: inline-block; +} +.elementor-button.elementor-size-xs { + font-size: 13px; + padding: 10px 20px; + border-radius: 2px; +} +.elementor-button.elementor-size-md { + font-size: 16px; + padding: 15px 30px; + border-radius: 4px; +} +.elementor-button.elementor-size-lg { + font-size: 18px; + padding: 20px 40px; + border-radius: 5px; +} +.elementor-button.elementor-size-xl { + font-size: 20px; + padding: 25px 50px; + border-radius: 6px; +} +.elementor-button .elementor-align-icon-right { + margin-left: 5px; + order: 5; +} +.elementor-button .elementor-align-icon-left { + margin-right: 5px; + order: 15; +} +.elementor-button span { + text-decoration: inherit; +} + +.elementor-element.elementor-button-info .elementor-button { + background-color: #5bc0de; +} +.elementor-element.elementor-button-success .elementor-button { + background-color: #5cb85c; +} +.elementor-element.elementor-button-warning .elementor-button { + background-color: #f0ad4e; +} +.elementor-element.elementor-button-danger .elementor-button { + background-color: #d9534f; +} + +.elementor-widget-button .elementor-button .elementor-button-info { + background-color: #5bc0de; +} +.elementor-widget-button .elementor-button .elementor-button-success { + background-color: #5cb85c; +} +.elementor-widget-button .elementor-button .elementor-button-warning { + background-color: #f0ad4e; +} +.elementor-widget-button .elementor-button .elementor-button-danger { + background-color: #d9534f; +} + +.elementor-tab-title a { + color: inherit; +} + +.elementor-view-stacked .elementor-icon { + padding: 0.5em; + background-color: #69727D; + color: #fff; + fill: #fff; +} + +.elementor-view-framed .elementor-icon { + padding: 0.5em; + color: #69727D; + border: 3px solid #69727D; + background-color: transparent; +} + +.elementor-icon { + display: inline-block; + line-height: 1; + transition: all 0.3s; + color: #69727D; + font-size: 50px; + text-align: center; +} +.elementor-icon:hover { + color: #69727D; +} +.elementor-icon i, .elementor-icon svg { + width: 1em; + height: 1em; + position: relative; + display: block; +} +.elementor-icon i:before, .elementor-icon svg:before { + position: absolute; + left: 50%; + transform: translateX(-50%); +} +.elementor-icon i.fad { + width: initial; +} + +.elementor-shape-circle .elementor-icon { + border-radius: 50%; +} + +.e-transform .elementor-widget-container { + transform: perspective(var(--e-transform-perspective, 0)) rotateZ(var(--e-transform-rotateZ, 0)) rotateX(var(--e-transform-rotateX, 0)) rotateY(var(--e-transform-rotateY, 0)) translate(var(--e-transform-translate, 0)) translateX(var(--e-transform-translateX, 0)) translateY(var(--e-transform-translateY, 0)) scaleX(calc(var(--e-transform-flipX, 1) * var(--e-transform-scaleX, var(--e-transform-scale, 1)))) scaleY(calc(var(--e-transform-flipY, 1) * var(--e-transform-scaleY, var(--e-transform-scale, 1)))) skewX(var(--e-transform-skewX, 0)) skewY(var(--e-transform-skewY, 0)); + transform-origin: var(--e-transform-origin-y) var(--e-transform-origin-x); +} + +.e-con.e-transform { + transform: perspective(var(--e-con-transform-perspective, 0)) rotateZ(var(--e-con-transform-rotateZ, 0)) rotateX(var(--e-con-transform-rotateX, 0)) rotateY(var(--e-con-transform-rotateY, 0)) translate(var(--e-con-transform-translate, 0)) translateX(var(--e-con-transform-translateX, 0)) translateY(var(--e-con-transform-translateY, 0)) scaleX(calc(var(--e-con-transform-flipX, 1) * var(--e-con-transform-scaleX, var(--e-con-transform-scale, 1)))) scaleY(calc(var(--e-con-transform-flipY, 1) * var(--e-con-transform-scaleY, var(--e-con-transform-scale, 1)))) skewX(var(--e-con-transform-skewX, 0)) skewY(var(--e-con-transform-skewY, 0)); + transform-origin: var(--e-con-transform-origin-y) var(--e-con-transform-origin-x); +} + +.elementor-element, .elementor-lightbox { + --swiper-theme-color: #000; + --swiper-navigation-size: 44px; + --swiper-pagination-bullet-size: 6px; + --swiper-pagination-bullet-horizontal-gap: 6px; +} +.elementor-element .swiper .swiper-slide figure, +.elementor-element .swiper-container .swiper-slide figure, .elementor-lightbox .swiper .swiper-slide figure, +.elementor-lightbox .swiper-container .swiper-slide figure { + line-height: 0; +} +.elementor-element .swiper .elementor-lightbox-content-source, +.elementor-element .swiper-container .elementor-lightbox-content-source, .elementor-lightbox .swiper .elementor-lightbox-content-source, +.elementor-lightbox .swiper-container .elementor-lightbox-content-source { + display: none; +} +.elementor-element .swiper .elementor-swiper-button, +.elementor-element .swiper ~ .elementor-swiper-button, +.elementor-element .swiper-container .elementor-swiper-button, +.elementor-element .swiper-container ~ .elementor-swiper-button, .elementor-lightbox .swiper .elementor-swiper-button, +.elementor-lightbox .swiper ~ .elementor-swiper-button, +.elementor-lightbox .swiper-container .elementor-swiper-button, +.elementor-lightbox .swiper-container ~ .elementor-swiper-button { + position: absolute; + display: inline-flex; + z-index: 1; + cursor: pointer; + font-size: 25px; + color: rgba(238, 238, 238, 0.9); + top: 50%; + transform: translateY(-50%); +} +.elementor-element .swiper .elementor-swiper-button svg, +.elementor-element .swiper ~ .elementor-swiper-button svg, +.elementor-element .swiper-container .elementor-swiper-button svg, +.elementor-element .swiper-container ~ .elementor-swiper-button svg, .elementor-lightbox .swiper .elementor-swiper-button svg, +.elementor-lightbox .swiper ~ .elementor-swiper-button svg, +.elementor-lightbox .swiper-container .elementor-swiper-button svg, +.elementor-lightbox .swiper-container ~ .elementor-swiper-button svg { + fill: rgba(238, 238, 238, 0.9); + height: 1em; + width: 1em; +} +.elementor-element .swiper .elementor-swiper-button-prev, +.elementor-element .swiper ~ .elementor-swiper-button-prev, +.elementor-element .swiper-container .elementor-swiper-button-prev, +.elementor-element .swiper-container ~ .elementor-swiper-button-prev, .elementor-lightbox .swiper .elementor-swiper-button-prev, +.elementor-lightbox .swiper ~ .elementor-swiper-button-prev, +.elementor-lightbox .swiper-container .elementor-swiper-button-prev, +.elementor-lightbox .swiper-container ~ .elementor-swiper-button-prev { + left: 10px; +} +.elementor-element .swiper .elementor-swiper-button-next, +.elementor-element .swiper ~ .elementor-swiper-button-next, +.elementor-element .swiper-container .elementor-swiper-button-next, +.elementor-element .swiper-container ~ .elementor-swiper-button-next, .elementor-lightbox .swiper .elementor-swiper-button-next, +.elementor-lightbox .swiper ~ .elementor-swiper-button-next, +.elementor-lightbox .swiper-container .elementor-swiper-button-next, +.elementor-lightbox .swiper-container ~ .elementor-swiper-button-next { + right: 10px; +} +.elementor-element .swiper .elementor-swiper-button.swiper-button-disabled, +.elementor-element .swiper ~ .elementor-swiper-button.swiper-button-disabled, +.elementor-element .swiper-container .elementor-swiper-button.swiper-button-disabled, +.elementor-element .swiper-container ~ .elementor-swiper-button.swiper-button-disabled, .elementor-lightbox .swiper .elementor-swiper-button.swiper-button-disabled, +.elementor-lightbox .swiper ~ .elementor-swiper-button.swiper-button-disabled, +.elementor-lightbox .swiper-container .elementor-swiper-button.swiper-button-disabled, +.elementor-lightbox .swiper-container ~ .elementor-swiper-button.swiper-button-disabled { + opacity: 0.3; +} +.elementor-element .swiper .swiper-image-stretch .swiper-slide .swiper-slide-image, +.elementor-element .swiper-container .swiper-image-stretch .swiper-slide .swiper-slide-image, .elementor-lightbox .swiper .swiper-image-stretch .swiper-slide .swiper-slide-image, +.elementor-lightbox .swiper-container .swiper-image-stretch .swiper-slide .swiper-slide-image { + width: 100%; +} +.elementor-element .swiper .swiper-pagination-fraction, +.elementor-element .swiper .swiper-pagination-custom, +.elementor-element .swiper .swiper-horizontal > .swiper-pagination-bullets, +.elementor-element .swiper .swiper-pagination-bullets.swiper-pagination-horizontal, +.elementor-element .swiper ~ .swiper-pagination-fraction, +.elementor-element .swiper ~ .swiper-pagination-custom, +.elementor-element .swiper ~ .swiper-pagination-bullets.swiper-pagination-horizontal, +.elementor-element .swiper-container .swiper-pagination-fraction, +.elementor-element .swiper-container .swiper-pagination-custom, +.elementor-element .swiper-container .swiper-horizontal > .swiper-pagination-bullets, +.elementor-element .swiper-container .swiper-pagination-bullets.swiper-pagination-horizontal, +.elementor-element .swiper-container ~ .swiper-pagination-fraction, +.elementor-element .swiper-container ~ .swiper-pagination-custom, +.elementor-element .swiper-container ~ .swiper-pagination-bullets.swiper-pagination-horizontal, .elementor-lightbox .swiper .swiper-pagination-fraction, +.elementor-lightbox .swiper .swiper-pagination-custom, +.elementor-lightbox .swiper .swiper-horizontal > .swiper-pagination-bullets, +.elementor-lightbox .swiper .swiper-pagination-bullets.swiper-pagination-horizontal, +.elementor-lightbox .swiper ~ .swiper-pagination-fraction, +.elementor-lightbox .swiper ~ .swiper-pagination-custom, +.elementor-lightbox .swiper ~ .swiper-pagination-bullets.swiper-pagination-horizontal, +.elementor-lightbox .swiper-container .swiper-pagination-fraction, +.elementor-lightbox .swiper-container .swiper-pagination-custom, +.elementor-lightbox .swiper-container .swiper-horizontal > .swiper-pagination-bullets, +.elementor-lightbox .swiper-container .swiper-pagination-bullets.swiper-pagination-horizontal, +.elementor-lightbox .swiper-container ~ .swiper-pagination-fraction, +.elementor-lightbox .swiper-container ~ .swiper-pagination-custom, +.elementor-lightbox .swiper-container ~ .swiper-pagination-bullets.swiper-pagination-horizontal { + bottom: 5px; +} +.elementor-element .swiper.swiper-cube .elementor-swiper-button, +.elementor-element .swiper.swiper-cube ~ .elementor-swiper-button, +.elementor-element .swiper-container.swiper-cube .elementor-swiper-button, +.elementor-element .swiper-container.swiper-cube ~ .elementor-swiper-button, .elementor-lightbox .swiper.swiper-cube .elementor-swiper-button, +.elementor-lightbox .swiper.swiper-cube ~ .elementor-swiper-button, +.elementor-lightbox .swiper-container.swiper-cube .elementor-swiper-button, +.elementor-lightbox .swiper-container.swiper-cube ~ .elementor-swiper-button { + transform: translate3d(0, -50%, 1px); +} +.elementor-element :where(.swiper-container-horizontal) ~ .swiper-pagination-bullets, .elementor-lightbox :where(.swiper-container-horizontal) ~ .swiper-pagination-bullets { + bottom: 5px; + left: 0; + width: 100%; +} +.elementor-element :where(.swiper-container-horizontal) ~ .swiper-pagination-bullets .swiper-pagination-bullet, .elementor-lightbox :where(.swiper-container-horizontal) ~ .swiper-pagination-bullets .swiper-pagination-bullet { + margin: 0 var(--swiper-pagination-bullet-horizontal-gap, 4px); +} +.elementor-element :where(.swiper-container-horizontal) ~ .swiper-pagination-progressbar, .elementor-lightbox :where(.swiper-container-horizontal) ~ .swiper-pagination-progressbar { + width: 100%; + height: 4px; + left: 0; + top: 0; +} +.elementor-element.elementor-pagination-position-outside .swiper, +.elementor-element.elementor-pagination-position-outside .swiper-container, .elementor-lightbox.elementor-pagination-position-outside .swiper, +.elementor-lightbox.elementor-pagination-position-outside .swiper-container { + padding-bottom: 30px; +} +.elementor-element.elementor-pagination-position-outside .swiper .elementor-swiper-button, +.elementor-element.elementor-pagination-position-outside .swiper ~ .elementor-swiper-button, +.elementor-element.elementor-pagination-position-outside .swiper-container .elementor-swiper-button, +.elementor-element.elementor-pagination-position-outside .swiper-container ~ .elementor-swiper-button, .elementor-lightbox.elementor-pagination-position-outside .swiper .elementor-swiper-button, +.elementor-lightbox.elementor-pagination-position-outside .swiper ~ .elementor-swiper-button, +.elementor-lightbox.elementor-pagination-position-outside .swiper-container .elementor-swiper-button, +.elementor-lightbox.elementor-pagination-position-outside .swiper-container ~ .elementor-swiper-button { + top: calc(50% - 30px / 2); +} +.elementor-element .elementor-swiper, .elementor-lightbox .elementor-swiper { + position: relative; +} +.elementor-element .elementor-main-swiper, .elementor-lightbox .elementor-main-swiper { + position: static; +} +.elementor-element.elementor-arrows-position-outside .swiper, +.elementor-element.elementor-arrows-position-outside .swiper-container, .elementor-lightbox.elementor-arrows-position-outside .swiper, +.elementor-lightbox.elementor-arrows-position-outside .swiper-container { + width: calc(100% - 60px); +} +.elementor-element.elementor-arrows-position-outside .swiper .elementor-swiper-button-prev, +.elementor-element.elementor-arrows-position-outside .swiper ~ .elementor-swiper-button-prev, +.elementor-element.elementor-arrows-position-outside .swiper-container .elementor-swiper-button-prev, +.elementor-element.elementor-arrows-position-outside .swiper-container ~ .elementor-swiper-button-prev, .elementor-lightbox.elementor-arrows-position-outside .swiper .elementor-swiper-button-prev, +.elementor-lightbox.elementor-arrows-position-outside .swiper ~ .elementor-swiper-button-prev, +.elementor-lightbox.elementor-arrows-position-outside .swiper-container .elementor-swiper-button-prev, +.elementor-lightbox.elementor-arrows-position-outside .swiper-container ~ .elementor-swiper-button-prev { + left: 0; +} +.elementor-element.elementor-arrows-position-outside .swiper .elementor-swiper-button-next, +.elementor-element.elementor-arrows-position-outside .swiper ~ .elementor-swiper-button-next, +.elementor-element.elementor-arrows-position-outside .swiper-container .elementor-swiper-button-next, +.elementor-element.elementor-arrows-position-outside .swiper-container ~ .elementor-swiper-button-next, .elementor-lightbox.elementor-arrows-position-outside .swiper .elementor-swiper-button-next, +.elementor-lightbox.elementor-arrows-position-outside .swiper ~ .elementor-swiper-button-next, +.elementor-lightbox.elementor-arrows-position-outside .swiper-container .elementor-swiper-button-next, +.elementor-lightbox.elementor-arrows-position-outside .swiper-container ~ .elementor-swiper-button-next { + right: 0; +} + +.elementor-lightbox { + --lightbox-ui-color: rgba(238, 238, 238, 0.9); + --lightbox-ui-color-hover: #fff; + --lightbox-text-color: var(--lightbox-ui-color); + --lightbox-header-icons-size: 20px; + --lightbox-navigation-icons-size: 25px; +} +.elementor-lightbox:not(.elementor-popup-modal) .dialog-header, +.elementor-lightbox:not(.elementor-popup-modal) .dialog-message { + text-align: center; +} +.elementor-lightbox .dialog-header { + display: none; +} +.elementor-lightbox .dialog-widget-content { + background: none; + box-shadow: none; + width: 100%; + height: 100%; +} +.elementor-lightbox .dialog-message { + animation-duration: 0.3s; + height: 100%; +} +.elementor-lightbox .dialog-message.dialog-lightbox-message { + padding: 0; +} +.elementor-lightbox .dialog-lightbox-close-button { + cursor: pointer; + position: absolute; + font-size: var(--lightbox-header-icons-size); + left: 0.75em; + margin-top: 13px; + padding: 0.25em; + z-index: 2; + line-height: 1; + display: flex; +} +.elementor-lightbox .dialog-lightbox-close-button svg { + height: 1em; + width: 1em; +} +.elementor-lightbox .dialog-lightbox-close-button, +.elementor-lightbox .elementor-swiper-button { + color: var(--lightbox-ui-color); + transition: all 0.3s; + opacity: 1; +} +.elementor-lightbox .dialog-lightbox-close-button svg, +.elementor-lightbox .elementor-swiper-button svg { + fill: var(--lightbox-ui-color); +} +.elementor-lightbox .dialog-lightbox-close-button:hover, +.elementor-lightbox .elementor-swiper-button:hover { + color: var(--lightbox-ui-color-hover); +} +.elementor-lightbox .dialog-lightbox-close-button:hover svg, +.elementor-lightbox .elementor-swiper-button:hover svg { + fill: var(--lightbox-ui-color-hover); +} +.elementor-lightbox .swiper, +.elementor-lightbox .swiper-container { + height: 100%; +} +.elementor-lightbox .elementor-lightbox-item { + display: flex; + align-items: center; + justify-content: center; + position: relative; + padding: 70px; + box-sizing: border-box; + height: 100%; + margin: auto; +} +@media (max-width: ELEMENTOR_SCREEN_MOBILE_MAX) { + .elementor-lightbox .elementor-lightbox-item { + padding: 70px 0; + } +} +.elementor-lightbox .elementor-lightbox-image { + max-height: 100%; + user-select: none; +} +.elementor-lightbox .elementor-lightbox-image, .elementor-lightbox .elementor-lightbox-image:hover { + opacity: 1; + filter: none; + border: none; +} +.elementor-lightbox .elementor-lightbox-image { + box-shadow: 0 0 30px rgba(0, 0, 0, 0.3), 0 0 8px -5px rgba(0, 0, 0, 0.3); + border-radius: 2px; +} +.elementor-lightbox .elementor-video-container { + width: 100%; + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); +} +.elementor-lightbox .elementor-video-container .elementor-video-square, +.elementor-lightbox .elementor-video-container .elementor-video-landscape, +.elementor-lightbox .elementor-video-container .elementor-video-portrait { + width: 100%; + height: 100%; + margin: auto; +} +.elementor-lightbox .elementor-video-container .elementor-video-square iframe, +.elementor-lightbox .elementor-video-container .elementor-video-landscape iframe, +.elementor-lightbox .elementor-video-container .elementor-video-portrait iframe { + border: 0; + background-color: #000; +} +.elementor-lightbox .elementor-video-container .elementor-video-square iframe, +.elementor-lightbox .elementor-video-container .elementor-video-square video, +.elementor-lightbox .elementor-video-container .elementor-video-landscape iframe, +.elementor-lightbox .elementor-video-container .elementor-video-landscape video, +.elementor-lightbox .elementor-video-container .elementor-video-portrait iframe, +.elementor-lightbox .elementor-video-container .elementor-video-portrait video { + aspect-ratio: var(--video-aspect-ratio, 1.77777); +} +@supports not (aspect-ratio: 1/1) { + .elementor-lightbox .elementor-video-container .elementor-video-square, + .elementor-lightbox .elementor-video-container .elementor-video-landscape, + .elementor-lightbox .elementor-video-container .elementor-video-portrait { + position: relative; + overflow: hidden; + height: 0; + padding-bottom: calc(100% / var(--video-aspect-ratio, 1.77777)); + } + .elementor-lightbox .elementor-video-container .elementor-video-square iframe, + .elementor-lightbox .elementor-video-container .elementor-video-square video, + .elementor-lightbox .elementor-video-container .elementor-video-landscape iframe, + .elementor-lightbox .elementor-video-container .elementor-video-landscape video, + .elementor-lightbox .elementor-video-container .elementor-video-portrait iframe, + .elementor-lightbox .elementor-video-container .elementor-video-portrait video { + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + } +} +.elementor-lightbox .elementor-video-container .elementor-video-square iframe, +.elementor-lightbox .elementor-video-container .elementor-video-square video { + width: min(90vh, 90vw); + height: min(90vh, 90vw); +} +.elementor-lightbox .elementor-video-container .elementor-video-landscape iframe, +.elementor-lightbox .elementor-video-container .elementor-video-landscape video { + width: 100%; + max-height: 90vh; +} +.elementor-lightbox .elementor-video-container .elementor-video-portrait iframe, +.elementor-lightbox .elementor-video-container .elementor-video-portrait video { + height: 100%; + max-width: 90vw; +} +@media (min-width: ELEMENTOR_SCREEN_TABLET_NEXT) { + .elementor-lightbox .elementor-video-container .elementor-video-landscape { + width: 85vw; + max-height: 85vh; + } + .elementor-lightbox .elementor-video-container .elementor-video-portrait { + height: 85vh; + max-width: 85vw; + } +} +@media (max-width: ELEMENTOR_SCREEN_TABLET_MAX) { + .elementor-lightbox .elementor-video-container .elementor-video-landscape { + width: 95vw; + max-height: 95vh; + } + .elementor-lightbox .elementor-video-container .elementor-video-portrait { + height: 95vh; + max-width: 95vw; + } +} +.elementor-lightbox .swiper .elementor-swiper-button-prev, +.elementor-lightbox .swiper-container .elementor-swiper-button-prev { + left: 0; +} +.elementor-lightbox .swiper .elementor-swiper-button-next, +.elementor-lightbox .swiper-container .elementor-swiper-button-next { + right: 0; +} +.elementor-lightbox .swiper .swiper-pagination-fraction, +.elementor-lightbox .swiper-container .swiper-pagination-fraction { + width: max-content; + color: #ffffff; +} +.elementor-lightbox .elementor-swiper-button:focus { + outline-width: 1px; +} +.elementor-lightbox .elementor-swiper-button-prev, .elementor-lightbox .elementor-swiper-button-next { + height: 100%; + display: flex; + align-items: center; + width: 15%; + justify-content: center; + font-size: var(--lightbox-navigation-icons-size); +} +@media (max-width: ELEMENTOR_SCREEN_MOBILE_MAX) { + .elementor-lightbox .elementor-swiper-button:focus { + outline: none; + } + .elementor-lightbox .elementor-swiper-button-prev, .elementor-lightbox .elementor-swiper-button-next { + width: 20%; + } + .elementor-lightbox .elementor-swiper-button-prev i, .elementor-lightbox .elementor-swiper-button-next i { + padding: 10px; + background-color: rgba(0, 0, 0, 0.5); + } + .elementor-lightbox .elementor-swiper-button-prev { + left: 0; + justify-content: flex-start; + } + .elementor-lightbox .elementor-swiper-button-next { + right: 0; + justify-content: flex-end; + } +} + +.elementor-slideshow__counter { + color: currentColor; + font-size: 0.75em; + width: max-content; +} +.elementor-slideshow__header, .elementor-slideshow__footer { + position: absolute; + left: 0; + width: 100%; + padding: 15px 20px; + transition: 0.3s; +} +.elementor-slideshow__footer { + color: var(--lightbox-text-color); +} +.elementor-slideshow__header { + color: var(--lightbox-ui-color); + display: flex; + flex-direction: row-reverse; + font-size: var(--lightbox-header-icons-size); + padding-right: 1em; + padding-left: 2.6em; + top: 0; + align-items: center; + z-index: 10; +} +.elementor-slideshow__header > i, +.elementor-slideshow__header > svg { + cursor: pointer; + padding: 0.25em; + margin: 0 0.35em; +} +.elementor-slideshow__header > i { + font-size: inherit; +} +.elementor-slideshow__header > i:hover { + color: var(--lightbox-ui-color-hover); +} +.elementor-slideshow__header > svg { + box-sizing: content-box; + fill: var(--lightbox-ui-color); + height: 1em; + width: 1em; +} +.elementor-slideshow__header > svg:hover { + fill: var(--lightbox-ui-color-hover); +} +.elementor-slideshow__header .elementor-slideshow__counter { + margin-left: auto; +} +.elementor-slideshow__header .elementor-icon-share { + z-index: 5; +} +.elementor-slideshow__share-menu { + background-color: rgba(0, 0, 0, 0); + width: 0; + height: 0; + position: absolute; + overflow: hidden; + transition: background-color 400ms; +} +.elementor-slideshow__share-menu .elementor-slideshow__share-links a { + color: #0C0D0E; +} +.elementor-slideshow__share-links { + display: block; + position: absolute; + min-width: 200px; + left: 2.8em; + top: 3em; + background-color: #fff; + border-radius: 3px; + padding: 14px 20px; + transform: scale(0); + opacity: 0; + transform-origin: 90% 10%; + transition: all 250ms 100ms; + box-shadow: 0 4px 15px rgba(0, 0, 0, 0.3); +} +.elementor-slideshow__share-links a { + text-align: right; + color: #3f444b; + font-size: 12px; + line-height: 2.5; + display: block; + opacity: 0; + transition: opacity 500ms 100ms; +} +.elementor-slideshow__share-links a:hover { + color: #000; +} +.elementor-slideshow__share-links a i, +.elementor-slideshow__share-links a svg { + margin-left: 0.75em; +} +.elementor-slideshow__share-links a i { + font-size: 1.25em; +} +.elementor-slideshow__share-links a svg { + height: 1.25em; + width: 1.25em; +} +.elementor-slideshow__share-links:before { + content: ""; + display: block; + position: absolute; + top: 1px; + left: 0.5em; + border: 0.45em solid; + border-color: transparent transparent #fff transparent; + transform: translateY(-100%) scaleX(0.7); +} +.elementor-slideshow__footer { + bottom: 0; + z-index: 5; + position: fixed; +} +.elementor-slideshow__title, .elementor-slideshow__description { + margin: 0; +} +.elementor-slideshow__title { + font-size: 16px; + font-weight: bold; +} +.elementor-slideshow__description { + font-size: 14px; +} +.elementor-slideshow--ui-hidden .elementor-slideshow__header, .elementor-slideshow--ui-hidden .elementor-slideshow__footer { + opacity: 0; + pointer-events: none; +} +.elementor-slideshow--ui-hidden .elementor-swiper-button-prev, .elementor-slideshow--ui-hidden .elementor-swiper-button-next { + opacity: 0; +} +.elementor-slideshow--fullscreen-mode .elementor-video-container { + width: 100%; +} +.elementor-slideshow--zoom-mode .elementor-slideshow__header, .elementor-slideshow--zoom-mode .elementor-slideshow__footer { + background-color: rgba(0, 0, 0, 0.5); +} +.elementor-slideshow--zoom-mode .elementor-swiper-button-prev, .elementor-slideshow--zoom-mode .elementor-swiper-button-next { + opacity: 0; + pointer-events: none; +} +.elementor-slideshow--share-mode .elementor-slideshow__share-menu { + top: 0; + left: 0; + width: 100vw; + height: 100vh; + opacity: 1; + cursor: default; + background-color: rgba(0, 0, 0, 0.5); +} +.elementor-slideshow--share-mode .elementor-slideshow__share-links { + transform: scale(1); +} +.elementor-slideshow--share-mode .elementor-slideshow__share-links, .elementor-slideshow--share-mode .elementor-slideshow__share-links a { + opacity: 1; +} +.elementor-slideshow--share-mode .elementor-slideshow__share-links .eicon-twitter { + color: #1DA1F2; +} +.elementor-slideshow--share-mode .elementor-slideshow__share-links .eicon-facebook { + color: #3b5998; +} +.elementor-slideshow--share-mode .elementor-slideshow__share-links .eicon-pinterest { + color: #bd081c; +} +.elementor-slideshow--share-mode .elementor-slideshow__share-links .eicon-download-bold { + color: #9DA5AE; +} +.elementor-slideshow--share-mode .elementor-slideshow__share-links .e-eicon-twitter { + fill: #1DA1F2; +} +.elementor-slideshow--share-mode .elementor-slideshow__share-links .e-eicon-facebook { + fill: #3b5998; +} +.elementor-slideshow--share-mode .elementor-slideshow__share-links .e-eicon-pinterest { + fill: #bd081c; +} +.elementor-slideshow--share-mode .elementor-slideshow__share-links .e-eicon-download-bold { + fill: #9DA5AE; +} +.elementor-slideshow--share-mode .eicon-share-arrow { + z-index: 2; +} + +.animated { + animation-duration: 1.25s; +} +.animated.animated-slow { + animation-duration: 2s; +} +.animated.animated-fast { + animation-duration: 0.75s; +} +.animated.infinite { + animation-iteration-count: infinite; +} +.animated.reverse { + animation-direction: reverse; + animation-fill-mode: forwards; +} + +@media (prefers-reduced-motion: reduce) { + .animated { + animation: none; + } +} +.elementor-shape { + overflow: hidden; + position: absolute; + left: 0; + width: 100%; + line-height: 0; + direction: ltr; + /* + * @TODO: The `z-index: -1` rules below are temporary fixes for Chrome 85 issue. + * It will be removed in a future version of Chrome. + */ +} +.elementor-shape-top { + top: -1px; +} +.elementor-shape-top:not([data-negative=false]) svg { + z-index: -1; +} +.elementor-shape-bottom { + bottom: -1px; +} +.elementor-shape-bottom:not([data-negative=true]) svg { + z-index: -1; +} +.elementor-shape[data-negative=false].elementor-shape-bottom { + transform: rotate(180deg); +} +.elementor-shape[data-negative=true].elementor-shape-top { + transform: rotate(180deg); +} +.elementor-shape svg { + display: block; + width: calc(100% + 1.3px); + position: relative; + left: 50%; + transform: translateX(-50%); +} +.elementor-shape .elementor-shape-fill { + fill: #fff; + transform-origin: center; + transform: rotateY(0deg); +} + +#wp-admin-bar-elementor_edit_page > .ab-item::before { + content: "\e813"; + font-family: eicons; + top: 3px; + font-size: 18px; +} +#wp-admin-bar-elementor_edit_page .ab-submenu .ab-item { + display: flex; + width: 200px; +} +#wp-admin-bar-elementor_edit_page .elementor-edit-link-title { + white-space: nowrap; + text-overflow: ellipsis; + overflow: hidden; + width: 100%; +} +#wp-admin-bar-elementor_edit_page .elementor-edit-link-type { + background: #3f444b; + font-size: 11px; + line-height: 9px; + margin-top: 6px; + padding: 4px 8px; + border-radius: 3px; +} + +#wp-admin-bar-elementor_inspector > .ab-item::before { + content: "\f348"; + top: 2px; +} + +#wpadminbar * { + font-style: normal; +} + +.page-template-elementor_canvas.elementor-page:before { + display: none; +} + +.elementor-post__thumbnail__link { + transition: none; +} + +#left-area ul.elementor-icon-list-items, +.elementor .elementor-element ul.elementor-icon-list-items, +.elementor-edit-area .elementor-element ul.elementor-icon-list-items { + padding: 0; +} + +.e--ua-appleWebkit.rtl { + --flex-right: flex-start; +} +.e--ua-appleWebkit .elementor-widget-social-icons.e-grid-align-right, +.e--ua-appleWebkit .elementor-share-buttons--align-right { + --justify-content: var(--flex-right, flex-end); +} +.e--ua-appleWebkit .elementor-widget-social-icons.e-grid-align-center, +.e--ua-appleWebkit .elementor-share-buttons--align-center { + --justify-content: center; +} +.e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-right .elementor-grid, .e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-center .elementor-grid, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-right .elementor-grid, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-center .elementor-grid, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-justify .elementor-grid { + width: auto; + display: flex; + flex-wrap: wrap; + justify-content: var(--justify-content, space-between); + margin-left: calc(-0.5 * var(--grid-column-gap)); + margin-right: calc(-0.5 * var(--grid-column-gap)); +} +.e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-right .elementor-grid-item, .e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-center .elementor-grid-item, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-right .elementor-grid-item, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-center .elementor-grid-item, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-justify .elementor-grid-item { + margin-left: calc(0.5 * var(--grid-column-gap)); + margin-right: calc(0.5 * var(--grid-column-gap)); +} +.e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-left .elementor-grid, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-left .elementor-grid { + display: inline-block; +} +.e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-left .elementor-grid, .e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-left .elementor-grid-item, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-left .elementor-grid, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-left .elementor-grid-item { + margin-left: 0; + margin-right: 0; +} +@media (max-width: ELEMENTOR_SCREEN_TABLET_MAX) { + .e--ua-appleWebkit .elementor-widget-social-icons.e-grid-align-tablet-right, + .e--ua-appleWebkit .elementor-share-buttons-tablet--align-right { + --justify-content: var(--flex-right, flex-end); + } + .e--ua-appleWebkit .elementor-widget-social-icons.e-grid-align-tablet-center, + .e--ua-appleWebkit .elementor-share-buttons-tablet--align-center { + --justify-content: center; + } + .e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-tablet-right .elementor-grid, .e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-tablet-center .elementor-grid, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-tablet-right .elementor-grid, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-tablet-center .elementor-grid, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-tablet-justify .elementor-grid { + width: auto; + display: flex; + flex-wrap: wrap; + justify-content: var(--justify-content, space-between); + margin-left: calc(-0.5 * var(--grid-column-gap)); + margin-right: calc(-0.5 * var(--grid-column-gap)); + } + .e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-tablet-right .elementor-grid-item, .e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-tablet-center .elementor-grid-item, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-tablet-right .elementor-grid-item, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-tablet-center .elementor-grid-item, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-tablet-justify .elementor-grid-item { + margin-left: calc(0.5 * var(--grid-column-gap)); + margin-right: calc(0.5 * var(--grid-column-gap)); + } + .e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-tablet-left .elementor-grid, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons-tablet--align-left .elementor-grid { + display: inline-block; + } + .e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-tablet-left .elementor-grid, .e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-tablet-left .elementor-grid-item, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons-tablet--align-left .elementor-grid, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons-tablet--align-left .elementor-grid-item { + margin-left: 0; + margin-right: 0; + } +} +@media (max-width: ELEMENTOR_SCREEN_MOBILE_MAX) { + .e--ua-appleWebkit .elementor-widget-social-icons.e-grid-align-mobile-right, + .e--ua-appleWebkit .elementor-share-buttons-mobile--align-right { + --justify-content: var(--flex-right, flex-end); + } + .e--ua-appleWebkit .elementor-widget-social-icons.e-grid-align-mobile-center, + .e--ua-appleWebkit .elementor-share-buttons-mobile--align-center { + --justify-content: center; + } + .e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-mobile-right .elementor-grid, .e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-mobile-center .elementor-grid, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-mobile-right .elementor-grid, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-mobile-center .elementor-grid, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-mobile-justify .elementor-grid { + width: auto; + display: flex; + flex-wrap: wrap; + justify-content: var(--justify-content, space-between); + margin-left: calc(-0.5 * var(--grid-column-gap)); + margin-right: calc(-0.5 * var(--grid-column-gap)); + } + .e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-mobile-right .elementor-grid-item, .e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-mobile-center .elementor-grid-item, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-mobile-right .elementor-grid-item, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-mobile-center .elementor-grid-item, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-mobile-justify .elementor-grid-item { + margin-left: calc(0.5 * var(--grid-column-gap)); + margin-right: calc(0.5 * var(--grid-column-gap)); + } + .e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-mobile-left .elementor-grid, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons-mobile--align-left .elementor-grid { + display: inline-block; + } + .e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-mobile-left .elementor-grid, .e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-mobile-left .elementor-grid-item, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons-mobile--align-left .elementor-grid, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons-mobile--align-left .elementor-grid-item { + margin-left: 0; + margin-right: 0; + } +} + +@media (max-width: ELEMENTOR_SCREEN_MOBILE_MAX) { + .elementor .elementor-hidden-mobile { + display: none; + } + .elementor .elementor-hidden-phone { + display: none; + } +} +@media (min-width: ELEMENTOR_SCREEN_MOBILE_EXTRA_MIN) and (max-width: ELEMENTOR_SCREEN_MOBILE_EXTRA_MAX) { + .elementor .elementor-hidden-mobile_extra { + display: none; + } +} +@media (min-width: ELEMENTOR_SCREEN_TABLET_MIN) and (max-width: ELEMENTOR_SCREEN_TABLET_MAX) { + .elementor .elementor-hidden-tablet { + display: none; + } +} +@media (min-width: ELEMENTOR_SCREEN_TABLET_EXTRA_MIN) and (max-width: ELEMENTOR_SCREEN_TABLET_EXTRA_MAX) { + .elementor .elementor-hidden-tablet_extra { + display: none; + } +} +@media (min-width: ELEMENTOR_SCREEN_LAPTOP_MIN) and (max-width: ELEMENTOR_SCREEN_LAPTOP_MAX) { + .elementor .elementor-hidden-laptop { + display: none; + } +} +@media (min-width: ELEMENTOR_SCREEN_DESKTOP_MIN) and (max-width: ELEMENTOR_SCREEN_DESKTOP_MAX) { + .elementor .elementor-hidden-desktop { + display: none; + } +} +@media (min-width: ELEMENTOR_SCREEN_WIDESCREEN_MIN) { + .elementor .elementor-hidden-widescreen { + display: none; + } +} + +.elementor-widget-text-path { + font-size: 20px; + text-align: var(--alignment, right); +} +.elementor-widget-text-path svg { + width: var(--width); + max-width: 100%; + height: auto; + overflow: visible; + word-spacing: var(--word-spacing); + transform: rotate(var(--rotate, 0)) scaleX(var(--scale-x, 1)) scaleY(var(--scale-y, 1)); +} +.elementor-widget-text-path svg path { + vector-effect: non-scaling-stroke; /* Prevent stroke size scaling when resizing the SVG. */ + fill: var(--path-fill, transparent); + stroke: var(--stroke-color, transparent); + stroke-width: var(--stroke-width, 1px); + transition: var(--stroke-transition) stroke, var(--stroke-transition) fill; +} +.elementor-widget-text-path svg:hover path { + --path-fill: var( --path-fill-hover ); + --stroke-color: var( --stroke-color-hover ); + --stroke-width: var( --stroke-width-hover ); +} +.elementor-widget-text-path svg text { + --fill: var( --text-color ); + fill: var(--fill); + direction: var(--direction, rtl); + transition: var(--transition) stroke, var(--transition) stroke-width, var(--transition) fill; +} +.elementor-widget-text-path svg text:hover { + --color: var( --text-color-hover, var( --text-color ) ); + --fill: var( --color ); + color: var(--color); +} + +.elementor-widget-n-tabs { + --n-tabs-color-accent-fallback: #61CE70; + --n-tabs-color-secondary-fallback: #54595F; + --n-tabs-default-padding-block: 15px; + --n-tabs-default-padding-inline: 35px; + --n-tabs-background-color: transparent; + --n-tabs-display: flex; + --n-tabs-direction: column; + --n-tabs-gap: 10px; + --n-tabs-heading-display: flex; + --n-tabs-heading-direction: row; + --n-tabs-heading-grow: initial; + --n-tabs-heading-justify-content: center; + --n-tabs-heading-width: initial; + --n-tabs-heading-overflow-x: initial; + --n-tabs-heading-wrap: nowrap; + --n-tabs-border-width: 1px; + --n-tabs-border-color: #D5D8DC; + --n-tabs-content-display: flex; + --n-tabs-title-color: var(--e-global-color-secondary, var(--n-tabs-color-secondary-fallback)); + --n-tabs-title-color-hover: #ffffff; + --n-tabs-title-color-active: #ffffff; + --n-tabs-title-background-color: #F1F2F3; + --n-tabs-title-background-color-hover: var(--e-global-color-accent, var(--n-tabs-color-accent-fallback)); + --n-tabs-title-background-color-active: var(--e-global-color-accent, var(--n-tabs-color-accent-fallback)); + --n-tabs-title-width: initial; + --n-tabs-title-height: initial; + --n-tabs-title-font-size: 1rem; + --n-tabs-title-white-space: initial; + --n-tabs-title-justify-content-toggle: initial; + --n-tabs-title-align-items-toggle: center; + --n-tabs-title-justify-content: center; + --n-tabs-title-align-items: center; + --n-tabs-title-text-align: center; + --n-tabs-title-direction: row; + --n-tabs-title-gap: 10px; + --n-tabs-title-flex-grow: 0; + --n-tabs-title-flex-basis: content; + --n-tabs-title-flex-shrink: initial; + --n-tabs-title-order: initial; + --n-tabs-title-padding-block-start: var(--n-tabs-default-padding-block); + --n-tabs-title-padding-inline-end: var(--n-tabs-default-padding-inline); + --n-tabs-title-padding-block-end: var(--n-tabs-default-padding-block); + --n-tabs-title-padding-inline-start: var(--n-tabs-default-padding-inline); + --n-tabs-title-border-radius: initial; + --n-tabs-title-transition: 0.3s; + --n-tabs-icon-color: var(--e-global-color-secondary, var(--n-tabs-color-secondary-fallback)); + --n-tabs-icon-color-hover: var(--n-tabs-title-color-hover); + --n-tabs-icon-color-active: #ffffff; + --n-tabs-icon-gap: 5px; + width: 100%; + max-width: 100%; /* Fix issue with new created n-tabs inside n-tabs with overflow */ +} +.elementor-widget-n-tabs .e-n-tabs { + display: var(--n-tabs-display); + flex-direction: var(--n-tabs-direction); + gap: var(--n-tabs-gap); + text-align: start; + min-width: 0; +} +.elementor-widget-n-tabs .e-n-tabs-heading { + display: var(--n-tabs-heading-display); + flex-basis: var(--n-tabs-heading-width); + flex-direction: var(--n-tabs-heading-direction); + flex-shrink: 0; + justify-content: var(--n-tabs-heading-justify-content); + gap: var(--n-tabs-title-gap); + overflow-x: var(--n-tabs-heading-overflow-x); + flex-wrap: var(--n-tabs-heading-wrap); + -ms-overflow-style: none; /* IE and Edge */ + scrollbar-width: none; /* Firefox */ +} +.elementor-widget-n-tabs .e-n-tabs-heading::-webkit-scrollbar { + display: none; /* Hide scrollbar for Chrome, Safari and Opera */ +} +.elementor-widget-n-tabs .e-n-tabs-heading.e-scroll { + cursor: grabbing; + cursor: -webkit-grabbing; +} +.elementor-widget-n-tabs .e-n-tabs-heading.e-scroll-active { + position: relative; +} +.elementor-widget-n-tabs .e-n-tabs-heading.e-scroll-active::before { + content: ""; + position: absolute; + inset-block: 0; + inset-inline: -1000vw; + z-index: 2; +} +.elementor-widget-n-tabs .e-n-tabs-content { + display: var(--n-tabs-content-display); + flex-grow: 1; + min-width: 0; +} +.elementor-widget-n-tabs .e-n-tabs-content > .e-con:not(.e-active) { + display: none; +} +.elementor-widget-n-tabs .e-n-tabs:not(.e-activated) > .e-n-tabs-content > .e-con:nth-child(1) { + display: flex; +} +.elementor-widget-n-tabs .e-n-tab-title { + all: unset; + user-select: none; + display: flex; + align-items: var(--n-tabs-title-align-items-toggle, var(--n-tabs-title-align-items)); + flex-direction: var(--n-tabs-title-direction); + justify-content: var(--n-tabs-title-justify-content-toggle, var(--n-tabs-title-justify-content)); + gap: var(--n-tabs-icon-gap); + border-width: var(--n-tabs-border-width); + position: relative; + cursor: pointer; + outline: none; + flex-grow: var(--n-tabs-title-flex-grow); + flex-basis: var(--n-tabs-title-flex-basis); + flex-shrink: var(--n-tabs-title-flex-shrink); + padding-block-start: var(--n-tabs-title-padding-block-start); + padding-inline-end: var(--n-tabs-title-padding-inline-end); + padding-block-end: var(--n-tabs-title-padding-block-end); + padding-inline-start: var(--n-tabs-title-padding-inline-start); + border-radius: var(--n-tabs-title-border-radius); + height: var(--n-tabs-title-height); + width: var(--n-tabs-title-width); + white-space: var(--n-tabs-title-white-space); + transition: background var(--n-tabs-title-transition), color var(--n-tabs-title-transition), border var(--n-tabs-title-transition), box-shadow var(--n-tabs-title-transition), text-shadow var(--n-tabs-title-transition), stroke var(--n-tabs-title-transition), stroke-width var(--n-tabs-title-transition), -webkit-text-stroke-width var(--n-tabs-title-transition), -webkit-text-stroke-color var(--n-tabs-title-transition), transform var(--n-tabs-title-transition); +} +.elementor-widget-n-tabs .e-n-tab-title:focus-visible { + outline: 5px auto -webkit-focus-ring-color; +} +.elementor-widget-n-tabs .e-n-tab-title span svg, .elementor-widget-n-tabs .e-n-tab-title span i { + transition: color var(--n-tabs-title-transition), fill var(--n-tabs-title-transition); +} +.elementor-widget-n-tabs .e-n-tab-title-text { + display: flex; + align-items: center; + font-size: var(--n-tabs-title-font-size); + text-align: var(--n-tabs-title-text-align); +} +.elementor-widget-n-tabs .e-n-tab-title .e-n-tab-icon { + display: flex; + align-items: center; + flex-direction: column; + flex-shrink: 0; + order: var(--n-tabs-icon-order); + overflow: hidden; +} +.elementor-widget-n-tabs .e-n-tab-title .e-n-tab-icon i { + font-size: var(--n-tabs-icon-size, var(--n-tabs-title-font-size)); +} +.elementor-widget-n-tabs .e-n-tab-title .e-n-tab-icon svg { + width: var(--n-tabs-icon-size, var(--n-tabs-title-font-size)); + height: var(--n-tabs-icon-size, var(--n-tabs-title-font-size)); +} +.elementor-widget-n-tabs .e-n-tab-title .e-n-tab-icon:empty { + display: none; +} +.elementor-widget-n-tabs .e-n-tab-title[aria-selected=false] { + background-color: var(--n-tabs-title-background-color); +} +.elementor-widget-n-tabs .e-n-tab-title[aria-selected=false], .elementor-widget-n-tabs .e-n-tab-title[aria-selected=false] a { + color: var(--n-tabs-title-color); +} +.elementor-widget-n-tabs .e-n-tab-title[aria-selected=false] .e-n-tab-icon i { + color: var(--n-tabs-icon-color); +} +.elementor-widget-n-tabs .e-n-tab-title[aria-selected=false] .e-n-tab-icon svg { + fill: var(--n-tabs-icon-color); +} +.elementor-widget-n-tabs .e-n-tab-title[aria-selected=false] .e-n-tab-icon i:last-child, +.elementor-widget-n-tabs .e-n-tab-title[aria-selected=false] .e-n-tab-icon svg:last-child { + transform: translate(0, -100vh); + height: 0; + opacity: 0; +} +.elementor-widget-n-tabs .e-n-tab-title[aria-selected=true], .elementor-widget-n-tabs .e-n-tab-title[aria-selected=true] a { + color: var(--n-tabs-title-color-active); +} +.elementor-widget-n-tabs .e-n-tab-title[aria-selected=true] .e-n-tab-icon i { + color: var(--n-tabs-icon-color-active); +} +.elementor-widget-n-tabs .e-n-tab-title[aria-selected=true] .e-n-tab-icon svg { + fill: var(--n-tabs-icon-color-active); +} +.elementor-widget-n-tabs .e-n-tab-title[aria-selected=true] .e-n-tab-icon i:first-child, +.elementor-widget-n-tabs .e-n-tab-title[aria-selected=true] .e-n-tab-icon svg:first-child { + transform: translate(0, -100vh); + height: 0; + opacity: 0; +} +.elementor-widget-n-tabs .e-n-tab-title[aria-selected=true][class*=elementor-animation-]:focus, .elementor-widget-n-tabs .e-n-tab-title[aria-selected=true][class*=elementor-animation-]:active, .elementor-widget-n-tabs .e-n-tab-title[aria-selected=true][class*=elementor-animation-]:hover { + transform: initial; + animation: initial; +} +.elementor-widget-n-tabs [data-touch-mode=false] .e-n-tab-title[aria-selected=false]:hover, .elementor-widget-n-tabs [data-touch-mode=false] .e-n-tab-title[aria-selected=false]:hover a { + color: var(--n-tabs-title-color-hover); +} +.elementor-widget-n-tabs [data-touch-mode=false] .e-n-tab-title[aria-selected=false]:hover .e-n-tab-icon i { + color: var(--n-tabs-icon-color-hover); +} +.elementor-widget-n-tabs [data-touch-mode=false] .e-n-tab-title[aria-selected=false]:hover .e-n-tab-icon svg { + fill: var(--n-tabs-icon-color-hover); +} +.elementor-widget-n-tabs [data-touch-mode=true] .e-n-tab-title[aria-selected=false]:hover, .elementor-widget-n-tabs [data-touch-mode=true] .e-n-tab-title[aria-selected=false]:hover a { + color: var(--n-tabs-title-color-active); +} +.elementor-widget-n-tabs [data-touch-mode=true] .e-n-tab-title[aria-selected=false]:hover .e-n-tab-icon i { + color: var(--n-tabs-icon-color-active); +} +.elementor-widget-n-tabs [data-touch-mode=true] .e-n-tab-title[aria-selected=false]:hover .e-n-tab-icon svg { + fill: var(--n-tabs-icon-color-active); +} +.elementor-widget-n-tabs [data-touch-mode=true] .e-n-tab-title[aria-selected=false]:hover .e-n-tab-icon i:first-child, +.elementor-widget-n-tabs [data-touch-mode=true] .e-n-tab-title[aria-selected=false]:hover .e-n-tab-icon svg:first-child { + transform: translate(0, -100vh); + height: 0; + opacity: 0; +} +.elementor-widget-n-tabs [data-touch-mode=true] .e-n-tab-title[aria-selected=false]:hover[class*=elementor-animation-]:focus, .elementor-widget-n-tabs [data-touch-mode=true] .e-n-tab-title[aria-selected=false]:hover[class*=elementor-animation-]:active, .elementor-widget-n-tabs [data-touch-mode=true] .e-n-tab-title[aria-selected=false]:hover[class*=elementor-animation-]:hover { + transform: initial; + animation: initial; +} +.elementor-widget-n-tabs [data-touch-mode=true] .e-n-tab-title[aria-selected=false]:hover .e-n-tab-icon i:last-child, +.elementor-widget-n-tabs [data-touch-mode=true] .e-n-tab-title[aria-selected=false]:hover .e-n-tab-icon svg:last-child { + transform: initial; + height: initial; + opacity: initial; +} + +.elementor .elementor-element.elementor-widget-n-tabs > .elementor-widget-container > .e-n-tabs[data-touch-mode=false] > .e-n-tabs-heading .e-n-tab-title[aria-selected=false]:hover { + background-color: var(--n-tabs-title-background-color-hover); + background-image: initial; +} + +.elementor .elementor-element.elementor-widget-n-tabs > .elementor-widget-container > .e-n-tabs > .e-n-tabs-heading .e-n-tab-title[aria-selected=true], +.elementor .elementor-element.elementor-widget-n-tabs > .elementor-widget-container > .e-n-tabs[data-touch-mode=true] > .e-n-tabs-heading .e-n-tab-title[aria-selected=false]:hover { + background-color: var(--n-tabs-title-background-color-active); + background-image: initial; +} + +@media (max-width: ELEMENTOR_SCREEN_MOBILE_MAX) { + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-mobile { + --n-tabs-direction: column; + --n-tabs-heading-display: contents; + --n-tabs-content-display: contents; + } + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-mobile .e-n-tabs { + gap: 0; + } + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-mobile .e-n-tabs-content > .e-con { + order: var(--n-tabs-title-order); + } + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-mobile .e-n-tab-title { + order: var(--n-tabs-title-order); + width: initial; + } + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-mobile .e-n-tab-title:not(:first-child) { + margin-block-start: var(--n-tabs-title-gap); + } + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-mobile .e-n-tab-title[aria-selected=true] { + margin-block-end: var(--n-tabs-gap); + } +} +@media (max-width: ELEMENTOR_SCREEN_MOBILE_EXTRA_MAX) { + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-mobile_extra { + --n-tabs-direction: column; + --n-tabs-heading-display: contents; + --n-tabs-content-display: contents; + } + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-mobile_extra .e-n-tabs { + gap: 0; + } + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-mobile_extra .e-n-tabs-content > .e-con { + order: var(--n-tabs-title-order); + } + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-mobile_extra .e-n-tab-title { + order: var(--n-tabs-title-order); + width: initial; + } + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-mobile_extra .e-n-tab-title:not(:first-child) { + margin-block-start: var(--n-tabs-title-gap); + } + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-mobile_extra .e-n-tab-title[aria-selected=true] { + margin-block-end: var(--n-tabs-gap); + } +} +@media (max-width: ELEMENTOR_SCREEN_TABLET_MAX) { + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-tablet { + --n-tabs-direction: column; + --n-tabs-heading-display: contents; + --n-tabs-content-display: contents; + } + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-tablet .e-n-tabs { + gap: 0; + } + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-tablet .e-n-tabs-content > .e-con { + order: var(--n-tabs-title-order); + } + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-tablet .e-n-tab-title { + order: var(--n-tabs-title-order); + width: initial; + } + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-tablet .e-n-tab-title:not(:first-child) { + margin-block-start: var(--n-tabs-title-gap); + } + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-tablet .e-n-tab-title[aria-selected=true] { + margin-block-end: var(--n-tabs-gap); + } +} +@media (max-width: ELEMENTOR_SCREEN_TABLET_EXTRA_MAX) { + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-tablet_extra { + --n-tabs-direction: column; + --n-tabs-heading-display: contents; + --n-tabs-content-display: contents; + } + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-tablet_extra .e-n-tabs { + gap: 0; + } + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-tablet_extra .e-n-tabs-content > .e-con { + order: var(--n-tabs-title-order); + } + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-tablet_extra .e-n-tab-title { + order: var(--n-tabs-title-order); + width: initial; + } + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-tablet_extra .e-n-tab-title:not(:first-child) { + margin-block-start: var(--n-tabs-title-gap); + } + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-tablet_extra .e-n-tab-title[aria-selected=true] { + margin-block-end: var(--n-tabs-gap); + } +} +@media (max-width: ELEMENTOR_SCREEN_LAPTOP_MAX) { + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-laptop { + --n-tabs-direction: column; + --n-tabs-heading-display: contents; + --n-tabs-content-display: contents; + } + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-laptop .e-n-tabs { + gap: 0; + } + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-laptop .e-n-tabs-content > .e-con { + order: var(--n-tabs-title-order); + } + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-laptop .e-n-tab-title { + order: var(--n-tabs-title-order); + width: initial; + } + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-laptop .e-n-tab-title:not(:first-child) { + margin-block-start: var(--n-tabs-title-gap); + } + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-laptop .e-n-tab-title[aria-selected=true] { + margin-block-end: var(--n-tabs-gap); + } +} +.elementor-widget-n-accordion { + --n-accordion-title-font-size: 20px; + --n-accordion-title-flex-grow: initial; + --n-accordion-title-justify-content: initial; + --n-accordion-title-icon-order: -1; + --n-accordion-border-width: 1px; + --n-accordion-border-color: #D5D8DC; + --n-accordion-border-style: solid; + --n-accordion-item-title-flex-grow: initial; + --n-accordion-item-title-space-between: 0px; + --n-accordion-item-title-distance-from-content: 0px; + --n-accordion-padding: 10px; + --n-accordion-border-radius: 0px; + --n-accordion-icon-size: 15px; + --n-accordion-title-normal-color: #1f2124; + --n-accordion-title-hover-color: #1f2124; + --n-accordion-title-active-color: #1f2124; + --n-accordion-icon-normal-color: var(--n-accordion-title-normal-color); + --n-accordion-icon-hover-color: var(--n-accordion-title-hover-color); + --n-accordion-icon-active-color: var(--n-accordion-title-active-color); + --n-accordion-icon-gap: 0 10px; + width: 100%; +} +.elementor-widget-n-accordion .e-n-accordion details > summary::-webkit-details-marker { + display: none; +} +.elementor-widget-n-accordion .e-n-accordion-item { + display: flex; + flex-direction: column; + position: relative; +} +.elementor-widget-n-accordion .e-n-accordion-item:not(:last-child) { + margin-block-end: var(--n-accordion-item-title-space-between); +} +:where(.elementor-widget-n-accordion .e-n-accordion-item > .e-con) { + border: var(--n-accordion-border-width) var(--n-accordion-border-style) var(--n-accordion-border-color); +} +.elementor-widget-n-accordion .e-n-accordion-item-title { + display: flex; + flex-direction: row; + list-style: none; + padding: var(--n-accordion-padding); + border-width: var(--n-accordion-border-width); + border-color: var(--n-accordion-border-color); + border-style: var(--n-accordion-border-style); + justify-content: var(--n-accordion-title-justify-content); + border-radius: var(--n-accordion-border-radius); + flex-grow: var(--n-menu-title-flex-grow); + gap: var(--n-accordion-icon-gap); + color: var(--n-accordion-title-normal-color); + align-items: center; + cursor: pointer; +} +.elementor-widget-n-accordion .e-n-accordion-item-title-header { + display: flex; +} +.elementor-widget-n-accordion .e-n-accordion-item-title-header h1, .elementor-widget-n-accordion .e-n-accordion-item-title-header h2, .elementor-widget-n-accordion .e-n-accordion-item-title-header h3, .elementor-widget-n-accordion .e-n-accordion-item-title-header h4, .elementor-widget-n-accordion .e-n-accordion-item-title-header h5, .elementor-widget-n-accordion .e-n-accordion-item-title-header h6, .elementor-widget-n-accordion .e-n-accordion-item-title-header p { + margin-block-start: 0; + margin-block-end: 0; +} +.elementor-widget-n-accordion .e-n-accordion-item-title-text { + font-size: var(--n-accordion-title-font-size); + align-items: center; +} +.elementor-widget-n-accordion .e-n-accordion-item-title-icon { + display: flex; + flex-direction: row; + align-items: center; + order: var(--n-accordion-title-icon-order); + position: relative; + width: fit-content; +} +.elementor-widget-n-accordion .e-n-accordion-item-title-icon span { + height: var(--n-accordion-icon-size); + width: auto; +} +.elementor-widget-n-accordion .e-n-accordion-item-title-icon span > i { + color: var(--n-accordion-icon-normal-color); + font-size: var(--n-accordion-icon-size); +} +.elementor-widget-n-accordion .e-n-accordion-item-title-icon span > svg { + fill: var(--n-accordion-icon-normal-color); + height: var(--n-accordion-icon-size); +} +.elementor-widget-n-accordion .e-n-accordion-item-title > span { + cursor: pointer; +} +.elementor-widget-n-accordion .e-n-accordion-item[open] .e-n-accordion-item-title { + margin-block-end: var(--n-accordion-item-title-distance-from-content); + color: var(--n-accordion-title-active-color); +} +.elementor-widget-n-accordion .e-n-accordion-item[open] .e-n-accordion-item-title-icon .e-opened { + display: flex; +} +.elementor-widget-n-accordion .e-n-accordion-item[open] .e-n-accordion-item-title-icon .e-closed { + display: none; +} +.elementor-widget-n-accordion .e-n-accordion-item[open] .e-n-accordion-item-title-icon span > i { + color: var(--n-accordion-icon-active-color); +} +.elementor-widget-n-accordion .e-n-accordion-item[open] .e-n-accordion-item-title-icon span > svg { + fill: var(--n-accordion-icon-active-color); +} +.elementor-widget-n-accordion .e-n-accordion-item:not([open]):hover .e-n-accordion-item-title { + color: var(--n-accordion-title-hover-color); +} +.elementor-widget-n-accordion .e-n-accordion-item:not([open]):hover .e-n-accordion-item-title-icon span > i { + color: var(--n-accordion-icon-hover-color); +} +.elementor-widget-n-accordion .e-n-accordion-item:not([open]):hover .e-n-accordion-item-title-icon span > svg { + fill: var(--n-accordion-icon-hover-color); +} +.elementor-widget-n-accordion .e-n-accordion-item .e-n-accordion-item-title-icon .e-opened { + display: none; +} +.elementor-widget-n-accordion .e-n-accordion-item .e-n-accordion-item-title-icon .e-closed { + display: flex; +} +.elementor-widget-n-accordion .e-n-accordion-item .e-n-accordion-item-title-icon span > svg { + fill: var(--n-accordion-icon-normal-color); +} +.elementor-widget-n-accordion .e-n-accordion-item .e-n-accordion-item-title-icon span > i { + color: var(--n-accordion-icon-normal-color); +} +.elementor-widget-n-accordion .e-n-accordion-item > span { + cursor: pointer; +} + +/*# sourceMappingURL=frontend-lite-rtl.css.map */ \ No newline at end of file diff --git a/wp-content/plugins/elementor/assets/css/templates/frontend-lite-rtl.min.css b/wp-content/plugins/elementor/assets/css/templates/frontend-lite-rtl.min.css new file mode 100644 index 0000000..6eb41ec --- /dev/null +++ b/wp-content/plugins/elementor/assets/css/templates/frontend-lite-rtl.min.css @@ -0,0 +1 @@ +.dialog-widget-content{background-color:var(--e-a-bg-default);position:absolute;border-radius:3px;box-shadow:2px 8px 23px 3px rgba(0,0,0,.2);overflow:hidden}.dialog-message{line-height:1.5;box-sizing:border-box}.dialog-close-button{cursor:pointer;position:absolute;margin-block-start:15px;left:15px;color:var(--e-a-color-txt);font-size:15px;line-height:1;transition:var(--e-a-transition-hover)}.dialog-close-button:hover{color:var(--e-a-color-txt-hover)}.dialog-prevent-scroll{overflow:hidden;max-height:100vh}.dialog-type-lightbox{position:fixed;height:100%;width:100%;bottom:0;left:0;background-color:rgba(0,0,0,.8);z-index:9999;-webkit-user-select:none;-moz-user-select:none;user-select:none}.elementor-editor-active .elementor-popup-modal{background-color:initial}.dialog-type-alert .dialog-widget-content,.dialog-type-confirm .dialog-widget-content{margin:auto;width:400px;padding:20px}.dialog-type-alert .dialog-header,.dialog-type-confirm .dialog-header{font-size:15px;font-weight:500}.dialog-type-alert .dialog-header:after,.dialog-type-confirm .dialog-header:after{content:"";display:block;border-block-end:var(--e-a-border);padding-block-end:10px;margin-block-end:10px;margin-inline-start:-20px;margin-inline-end:-20px}.dialog-type-alert .dialog-message,.dialog-type-confirm .dialog-message{min-height:50px}.dialog-type-alert .dialog-buttons-wrapper,.dialog-type-confirm .dialog-buttons-wrapper{padding-block-start:10px;display:flex;justify-content:flex-end;gap:15px}.dialog-type-alert .dialog-buttons-wrapper .dialog-button,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button{font-size:12px;font-weight:500;line-height:1.2;padding:8px 16px;outline:none;border:none;border-radius:var(--e-a-border-radius);background-color:var(--e-a-btn-bg);color:var(--e-a-btn-color-invert);transition:var(--e-a-transition-hover)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:hover{border:none}.dialog-type-alert .dialog-buttons-wrapper .dialog-button:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:hover{background-color:var(--e-a-btn-bg-hover);color:var(--e-a-btn-color-invert)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button:active,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:active{background-color:var(--e-a-btn-bg-active)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button:not([disabled]),.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:not([disabled]){cursor:pointer}.dialog-type-alert .dialog-buttons-wrapper .dialog-button:disabled,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:disabled{background-color:var(--e-a-btn-bg-disabled);color:var(--e-a-btn-color-disabled)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button:not(.elementor-button-state) .elementor-state-icon,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:not(.elementor-button-state) .elementor-state-icon{display:none}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt{background:transparent;color:var(--e-a-color-txt)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel:hover,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt:hover{background:var(--e-a-bg-hover);color:var(--e-a-color-txt-hover)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel:disabled,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt:disabled,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel:disabled,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt:disabled{background:transparent;color:var(--e-a-color-txt-disabled)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt-border,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt-border{border:1px solid var(--e-a-color-txt-muted)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-success,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-success,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-success,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-success{background-color:var(--e-a-btn-bg-success)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-success:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-success:hover,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-success:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-success:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-success:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-success:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-success:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-success:hover{background-color:var(--e-a-btn-bg-success-hover)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-take_over,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-take_over,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary{background-color:var(--e-a-btn-bg-primary);color:var(--e-a-btn-color)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok:hover,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-take_over:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-take_over:hover,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-take_over:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-take_over:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary:hover{background-color:var(--e-a-btn-bg-primary-hover);color:var(--e-a-btn-color)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-ok,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-take_over,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary.dialog-cancel,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary.e-btn-txt,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-ok,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-take_over,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary.dialog-cancel,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary.e-btn-txt{background:transparent;color:var(--e-a-color-primary-bold)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over:hover,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel:hover,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-ok:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-ok:hover,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-take_over:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-take_over:hover,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary.dialog-cancel:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary.dialog-cancel:hover,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary.e-btn-txt:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary.e-btn-txt:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-ok:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-ok:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-take_over:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-take_over:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary.dialog-cancel:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary.dialog-cancel:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary.e-btn-txt:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary.e-btn-txt:hover{background:var(--e-a-bg-primary)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-accent,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.go-pro,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-accent,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.go-pro{background-color:var(--e-a-btn-bg-accent)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-accent:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-accent:hover,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.go-pro:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.go-pro:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-accent:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-accent:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.go-pro:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.go-pro:hover{background-color:var(--e-a-btn-bg-accent-hover)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-accent:active,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.go-pro:active,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-accent:active,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.go-pro:active{background-color:var(--e-a-btn-bg-accent-active)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-info,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-info,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-info,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-info{background-color:var(--e-a-btn-bg-info)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-info:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-info:hover,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-info:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-info:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-info:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-info:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-info:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-info:hover{background-color:var(--e-a-btn-bg-info-hover)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-warning,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-warning,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-warning,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-warning{background-color:var(--e-a-btn-bg-warning)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-warning:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-warning:hover,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-warning:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-warning:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-warning:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-warning:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-warning:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-warning:hover{background-color:var(--e-a-btn-bg-warning-hover)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-danger,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-danger,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-danger,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-danger{background-color:var(--e-a-btn-bg-danger)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-danger:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-danger:hover,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-danger:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-danger:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-danger:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-danger:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-danger:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-danger:hover{background-color:var(--e-a-btn-bg-danger-hover)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button i,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button i{margin-inline-end:5px}.dialog-type-alert .dialog-buttons-wrapper .dialog-button:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button:hover,.dialog-type-alert .dialog-buttons-wrapper .dialog-button:visited,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:visited{color:initial}.flatpickr-calendar{width:280px}.flatpickr-calendar .flatpickr-current-month span.cur-month{font-weight:300}.flatpickr-calendar .dayContainer{width:280px;min-width:280px;max-width:280px}.flatpickr-calendar .flatpickr-days{width:280px}.flatpickr-calendar .flatpickr-day{max-width:37px;height:37px;line-height:37px}.elementor-hidden{display:none}.elementor-screen-only,.screen-reader-text,.screen-reader-text span,.ui-helper-hidden-accessible{position:absolute;top:-10000em;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.elementor-clearfix:after{content:"";display:block;clear:both;width:0;height:0}.e-logo-wrapper{background:var(--e-a-bg-logo);display:inline-block;padding:.75em;border-radius:50%;line-height:1}.e-logo-wrapper i{color:var(--e-a-color-logo);font-size:1em}.elementor *,.elementor :after,.elementor :before{box-sizing:border-box}.elementor a{box-shadow:none;text-decoration:none}.elementor hr{margin:0;background-color:transparent}.elementor img{height:auto;max-width:100%;border:none;border-radius:0;box-shadow:none}.elementor .elementor-widget:not(.elementor-widget-text-editor):not(.elementor-widget-theme-post-content) figure{margin:0}.elementor embed,.elementor iframe,.elementor object,.elementor video{max-width:100%;width:100%;margin:0;line-height:1;border:none}.elementor .elementor-background,.elementor .elementor-background-holder,.elementor .elementor-background-video-container{height:100%;width:100%;top:0;left:0;position:absolute;overflow:hidden;z-index:0;direction:ltr}.elementor .elementor-background-video-container{transition:opacity 1s;pointer-events:none}.elementor .elementor-background-video-container.elementor-loading{opacity:0}.elementor .elementor-background-video-embed{max-width:none}.elementor .elementor-background-video,.elementor .elementor-background-video-embed,.elementor .elementor-background-video-hosted{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.elementor .elementor-background-video{max-width:none}.elementor .elementor-html5-video{-o-object-fit:cover;object-fit:cover}.elementor .elementor-background-overlay{height:100%;width:100%;top:0;left:0;position:absolute}.elementor .elementor-background-slideshow{position:absolute;width:100%;height:100%;z-index:0;top:0;right:0}.elementor .elementor-background-slideshow__slide__image{width:100%;height:100%;background-position:50%;background-size:cover}.e-con-inner>.elementor-element.elementor-absolute,.e-con>.elementor-element.elementor-absolute,.elementor-widget-wrap>.elementor-element.elementor-absolute{position:absolute}.e-con-inner>.elementor-element.elementor-fixed,.e-con>.elementor-element.elementor-fixed,.elementor-widget-wrap>.elementor-element.elementor-fixed{position:fixed}.elementor-widget-wrap .elementor-element.elementor-widget__width-auto,.elementor-widget-wrap .elementor-element.elementor-widget__width-initial{max-width:100%}@media (max-width:ELEMENTOR_SCREEN_TABLET_MAX){.elementor-widget-wrap .elementor-element.elementor-widget-tablet__width-auto,.elementor-widget-wrap .elementor-element.elementor-widget-tablet__width-initial{max-width:100%}}@media (max-width:ELEMENTOR_SCREEN_MOBILE_MAX){.elementor-widget-wrap .elementor-element.elementor-widget-mobile__width-auto,.elementor-widget-wrap .elementor-element.elementor-widget-mobile__width-initial{max-width:100%}}.elementor-element{--flex-direction:initial;--flex-wrap:initial;--justify-content:initial;--align-items:initial;--align-content:initial;--gap:initial;--flex-basis:initial;--flex-grow:initial;--flex-shrink:initial;--order:initial;--align-self:initial;flex-basis:var(--flex-basis);flex-grow:var(--flex-grow);flex-shrink:var(--flex-shrink);order:var(--order);align-self:var(--align-self)}.elementor-element.elementor-absolute,.elementor-element.elementor-fixed{z-index:1}.elementor-element:where(.e-con-full,.elementor-widget){flex-direction:var(--flex-direction);flex-wrap:var(--flex-wrap);justify-content:var(--justify-content);align-items:var(--align-items);align-content:var(--align-content);gap:var(--gap)}.elementor-invisible{visibility:hidden}.elementor-align-center{text-align:center}.elementor-align-center .elementor-button{width:auto}.elementor-align-right{text-align:right}.elementor-align-right .elementor-button{width:auto}.elementor-align-left{text-align:left}.elementor-align-left .elementor-button{width:auto}.elementor-align-justify .elementor-button{width:100%}.elementor-custom-embed-play{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.elementor-custom-embed-play i{font-size:100px;color:#fff;text-shadow:1px 0 6px rgba(0,0,0,.3)}.elementor-custom-embed-play svg{height:100px;width:100px;fill:#fff;filter:drop-shadow(1px 0 6px rgba(0,0,0,.3))}.elementor-custom-embed-play i,.elementor-custom-embed-play svg{opacity:.8;transition:all .5s}.elementor-custom-embed-play.elementor-playing i{font-family:eicons}.elementor-custom-embed-play.elementor-playing i:before{content:"\e8fb"}.elementor-custom-embed-play.elementor-playing i,.elementor-custom-embed-play.elementor-playing svg{animation:eicon-spin 2s linear infinite}.elementor-tag{display:inline-flex}.elementor-ken-burns{transition-property:transform;transition-duration:10s;transition-timing-function:linear}.elementor-ken-burns--out{transform:scale(1.3)}.elementor-ken-burns--active{transition-duration:20s}.elementor-ken-burns--active.elementor-ken-burns--out{transform:scale(1)}.elementor-ken-burns--active.elementor-ken-burns--in{transform:scale(1.3)}@media (min-width:ELEMENTOR_SCREEN_WIDESCREEN_MIN){.elementor-widescreen-align-center{text-align:center}.elementor-widescreen-align-center .elementor-button{width:auto}.elementor-widescreen-align-right{text-align:right}.elementor-widescreen-align-right .elementor-button{width:auto}.elementor-widescreen-align-left{text-align:left}.elementor-widescreen-align-left .elementor-button{width:auto}.elementor-widescreen-align-justify .elementor-button{width:100%}}@media (max-width:ELEMENTOR_SCREEN_LAPTOP_MAX){.elementor-laptop-align-center{text-align:center}.elementor-laptop-align-center .elementor-button{width:auto}.elementor-laptop-align-right{text-align:right}.elementor-laptop-align-right .elementor-button{width:auto}.elementor-laptop-align-left{text-align:left}.elementor-laptop-align-left .elementor-button{width:auto}.elementor-laptop-align-justify .elementor-button{width:100%}}@media (max-width:ELEMENTOR_SCREEN_TABLET_EXTRA_MAX){.elementor-tablet_extra-align-center{text-align:center}.elementor-tablet_extra-align-center .elementor-button{width:auto}.elementor-tablet_extra-align-right{text-align:right}.elementor-tablet_extra-align-right .elementor-button{width:auto}.elementor-tablet_extra-align-left{text-align:left}.elementor-tablet_extra-align-left .elementor-button{width:auto}.elementor-tablet_extra-align-justify .elementor-button{width:100%}}@media (max-width:ELEMENTOR_SCREEN_TABLET_MAX){.elementor-tablet-align-center{text-align:center}.elementor-tablet-align-center .elementor-button{width:auto}.elementor-tablet-align-right{text-align:right}.elementor-tablet-align-right .elementor-button{width:auto}.elementor-tablet-align-left{text-align:left}.elementor-tablet-align-left .elementor-button{width:auto}.elementor-tablet-align-justify .elementor-button{width:100%}}@media (max-width:ELEMENTOR_SCREEN_MOBILE_EXTRA_MAX){.elementor-mobile_extra-align-center{text-align:center}.elementor-mobile_extra-align-center .elementor-button{width:auto}.elementor-mobile_extra-align-right{text-align:right}.elementor-mobile_extra-align-right .elementor-button{width:auto}.elementor-mobile_extra-align-left{text-align:left}.elementor-mobile_extra-align-left .elementor-button{width:auto}.elementor-mobile_extra-align-justify .elementor-button{width:100%}}@media (max-width:ELEMENTOR_SCREEN_MOBILE_MAX){.elementor-mobile-align-center{text-align:center}.elementor-mobile-align-center .elementor-button{width:auto}.elementor-mobile-align-right{text-align:right}.elementor-mobile-align-right .elementor-button{width:auto}.elementor-mobile-align-left{text-align:left}.elementor-mobile-align-left .elementor-button{width:auto}.elementor-mobile-align-justify .elementor-button{width:100%}}:root{--page-title-display:block}.elementor-page-title,h1.entry-title{display:var(--page-title-display)}@keyframes eicon-spin{0%{transform:rotate(0deg)}to{transform:rotate(359deg)}}.eicon-animation-spin{animation:eicon-spin 2s linear infinite}.elementor-section{position:relative}.elementor-section .elementor-container{display:flex;margin-right:auto;margin-left:auto;position:relative}@media (max-width:ELEMENTOR_SCREEN_TABLET_MAX){.elementor-section .elementor-container{flex-wrap:wrap}}.elementor-section.elementor-section-boxed>.elementor-container{max-width:1140px}.elementor-section.elementor-section-stretched{position:relative;width:100%}.elementor-section.elementor-section-items-top>.elementor-container{align-items:flex-start}.elementor-section.elementor-section-items-middle>.elementor-container{align-items:center}.elementor-section.elementor-section-items-bottom>.elementor-container{align-items:flex-end}@media (min-width:ELEMENTOR_SCREEN_MOBILE_NEXT){.elementor-section.elementor-section-height-full{height:100vh}.elementor-section.elementor-section-height-full>.elementor-container{height:100%}}.elementor-bc-flex-widget .elementor-section-content-top>.elementor-container>.elementor-column>.elementor-widget-wrap{align-items:flex-start}.elementor-bc-flex-widget .elementor-section-content-middle>.elementor-container>.elementor-column>.elementor-widget-wrap{align-items:center}.elementor-bc-flex-widget .elementor-section-content-bottom>.elementor-container>.elementor-column>.elementor-widget-wrap{align-items:flex-end}.elementor-row{width:100%;display:flex}@media (max-width:ELEMENTOR_SCREEN_TABLET_MAX){.elementor-row{flex-wrap:wrap}}.elementor-widget-wrap{position:relative;width:100%;flex-wrap:wrap;align-content:flex-start}.elementor:not(.elementor-bc-flex-widget) .elementor-widget-wrap{display:flex}.elementor-widget-wrap>.elementor-element{width:100%}.elementor-widget-wrap.e-swiper-container{width:calc(100% - (var(--e-column-margin-left, 0px) + var(--e-column-margin-right, 0px)))}.elementor-widget{position:relative}.elementor-widget:not(:last-child){margin-bottom:20px}.elementor-widget:not(:last-child).elementor-absolute,.elementor-widget:not(:last-child).elementor-widget__width-auto,.elementor-widget:not(:last-child).elementor-widget__width-initial{margin-bottom:0}.elementor-column{position:relative;min-height:1px;display:flex}.elementor-column-wrap{width:100%;position:relative;display:flex}.elementor-column-gap-narrow>.elementor-column>.elementor-element-populated{padding:5px}.elementor-column-gap-default>.elementor-column>.elementor-element-populated{padding:10px}.elementor-column-gap-extended>.elementor-column>.elementor-element-populated{padding:15px}.elementor-column-gap-wide>.elementor-column>.elementor-element-populated{padding:20px}.elementor-column-gap-wider>.elementor-column>.elementor-element-populated{padding:30px}.elementor-inner-section .elementor-column-gap-no .elementor-element-populated{padding:0}@media (min-width:ELEMENTOR_SCREEN_MOBILE_NEXT){.elementor-column.elementor-col-10,.elementor-column[data-col="10"]{width:10%}.elementor-column.elementor-col-11,.elementor-column[data-col="11"]{width:11.111%}.elementor-column.elementor-col-12,.elementor-column[data-col="12"]{width:12.5%}.elementor-column.elementor-col-14,.elementor-column[data-col="14"]{width:14.285%}.elementor-column.elementor-col-16,.elementor-column[data-col="16"]{width:16.666%}.elementor-column.elementor-col-20,.elementor-column[data-col="20"]{width:20%}.elementor-column.elementor-col-25,.elementor-column[data-col="25"]{width:25%}.elementor-column.elementor-col-30,.elementor-column[data-col="30"]{width:30%}.elementor-column.elementor-col-33,.elementor-column[data-col="33"]{width:33.333%}.elementor-column.elementor-col-40,.elementor-column[data-col="40"]{width:40%}.elementor-column.elementor-col-50,.elementor-column[data-col="50"]{width:50%}.elementor-column.elementor-col-60,.elementor-column[data-col="60"]{width:60%}.elementor-column.elementor-col-66,.elementor-column[data-col="66"]{width:66.666%}.elementor-column.elementor-col-70,.elementor-column[data-col="70"]{width:70%}.elementor-column.elementor-col-75,.elementor-column[data-col="75"]{width:75%}.elementor-column.elementor-col-80,.elementor-column[data-col="80"]{width:80%}.elementor-column.elementor-col-83,.elementor-column[data-col="83"]{width:83.333%}.elementor-column.elementor-col-90,.elementor-column[data-col="90"]{width:90%}.elementor-column.elementor-col-100,.elementor-column[data-col="100"]{width:100%}}@media (max-width:479px){.elementor-column.elementor-xs-10{width:10%}.elementor-column.elementor-xs-11{width:11.111%}.elementor-column.elementor-xs-12{width:12.5%}.elementor-column.elementor-xs-14{width:14.285%}.elementor-column.elementor-xs-16{width:16.666%}.elementor-column.elementor-xs-20{width:20%}.elementor-column.elementor-xs-25{width:25%}.elementor-column.elementor-xs-30{width:30%}.elementor-column.elementor-xs-33{width:33.333%}.elementor-column.elementor-xs-40{width:40%}.elementor-column.elementor-xs-50{width:50%}.elementor-column.elementor-xs-60{width:60%}.elementor-column.elementor-xs-66{width:66.666%}.elementor-column.elementor-xs-70{width:70%}.elementor-column.elementor-xs-75{width:75%}.elementor-column.elementor-xs-80{width:80%}.elementor-column.elementor-xs-83{width:83.333%}.elementor-column.elementor-xs-90{width:90%}.elementor-column.elementor-xs-100{width:100%}}@media (max-width:ELEMENTOR_SCREEN_MOBILE_MAX){.elementor-column.elementor-sm-10{width:10%}.elementor-column.elementor-sm-11{width:11.111%}.elementor-column.elementor-sm-12{width:12.5%}.elementor-column.elementor-sm-14{width:14.285%}.elementor-column.elementor-sm-16{width:16.666%}.elementor-column.elementor-sm-20{width:20%}.elementor-column.elementor-sm-25{width:25%}.elementor-column.elementor-sm-30{width:30%}.elementor-column.elementor-sm-33{width:33.333%}.elementor-column.elementor-sm-40{width:40%}.elementor-column.elementor-sm-50{width:50%}.elementor-column.elementor-sm-60{width:60%}.elementor-column.elementor-sm-66{width:66.666%}.elementor-column.elementor-sm-70{width:70%}.elementor-column.elementor-sm-75{width:75%}.elementor-column.elementor-sm-80{width:80%}.elementor-column.elementor-sm-83{width:83.333%}.elementor-column.elementor-sm-90{width:90%}.elementor-column.elementor-sm-100{width:100%}}@media (min-width:ELEMENTOR_SCREEN_MOBILE_NEXT) and (max-width:ELEMENTOR_SCREEN_TABLET_MAX){.elementor-column.elementor-md-10{width:10%}.elementor-column.elementor-md-11{width:11.111%}.elementor-column.elementor-md-12{width:12.5%}.elementor-column.elementor-md-14{width:14.285%}.elementor-column.elementor-md-16{width:16.666%}.elementor-column.elementor-md-20{width:20%}.elementor-column.elementor-md-25{width:25%}.elementor-column.elementor-md-30{width:30%}.elementor-column.elementor-md-33{width:33.333%}.elementor-column.elementor-md-40{width:40%}.elementor-column.elementor-md-50{width:50%}.elementor-column.elementor-md-60{width:60%}.elementor-column.elementor-md-66{width:66.666%}.elementor-column.elementor-md-70{width:70%}.elementor-column.elementor-md-75{width:75%}.elementor-column.elementor-md-80{width:80%}.elementor-column.elementor-md-83{width:83.333%}.elementor-column.elementor-md-90{width:90%}.elementor-column.elementor-md-100{width:100%}}@media (min-width:ELEMENTOR_SCREEN_WIDESCREEN_MIN){.elementor-reverse-widescreen>.elementor-container>:first-child{order:10}.elementor-reverse-widescreen>.elementor-container>:nth-child(2){order:9}.elementor-reverse-widescreen>.elementor-container>:nth-child(3){order:8}.elementor-reverse-widescreen>.elementor-container>:nth-child(4){order:7}.elementor-reverse-widescreen>.elementor-container>:nth-child(5){order:6}.elementor-reverse-widescreen>.elementor-container>:nth-child(6){order:5}.elementor-reverse-widescreen>.elementor-container>:nth-child(7){order:4}.elementor-reverse-widescreen>.elementor-container>:nth-child(8){order:3}.elementor-reverse-widescreen>.elementor-container>:nth-child(9){order:2}.elementor-reverse-widescreen>.elementor-container>:nth-child(10){order:1}}@media (min-width:ELEMENTOR_SCREEN_TABLET_NEXT) and (max-width:ELEMENTOR_SCREEN_LAPTOP_MAX){.elementor-reverse-laptop>.elementor-container>:first-child{order:10}.elementor-reverse-laptop>.elementor-container>:nth-child(2){order:9}.elementor-reverse-laptop>.elementor-container>:nth-child(3){order:8}.elementor-reverse-laptop>.elementor-container>:nth-child(4){order:7}.elementor-reverse-laptop>.elementor-container>:nth-child(5){order:6}.elementor-reverse-laptop>.elementor-container>:nth-child(6){order:5}.elementor-reverse-laptop>.elementor-container>:nth-child(7){order:4}.elementor-reverse-laptop>.elementor-container>:nth-child(8){order:3}.elementor-reverse-laptop>.elementor-container>:nth-child(9){order:2}.elementor-reverse-laptop>.elementor-container>:nth-child(10){order:1}}@media (min-width:ELEMENTOR_SCREEN_TABLET_EXTRA_NEXT) and (max-width:ELEMENTOR_SCREEN_LAPTOP_MAX){.elementor-reverse-laptop>.elementor-container>:first-child{order:10}.elementor-reverse-laptop>.elementor-container>:nth-child(2){order:9}.elementor-reverse-laptop>.elementor-container>:nth-child(3){order:8}.elementor-reverse-laptop>.elementor-container>:nth-child(4){order:7}.elementor-reverse-laptop>.elementor-container>:nth-child(5){order:6}.elementor-reverse-laptop>.elementor-container>:nth-child(6){order:5}.elementor-reverse-laptop>.elementor-container>:nth-child(7){order:4}.elementor-reverse-laptop>.elementor-container>:nth-child(8){order:3}.elementor-reverse-laptop>.elementor-container>:nth-child(9){order:2}.elementor-reverse-laptop>.elementor-container>:nth-child(10){order:1}}@media (min-width:ELEMENTOR_SCREEN_TABLET_NEXT) and (max-width:ELEMENTOR_SCREEN_TABLET_EXTRA_MAX){.elementor-reverse-laptop>.elementor-container>:first-child,.elementor-reverse-laptop>.elementor-container>:nth-child(2),.elementor-reverse-laptop>.elementor-container>:nth-child(3),.elementor-reverse-laptop>.elementor-container>:nth-child(4),.elementor-reverse-laptop>.elementor-container>:nth-child(5),.elementor-reverse-laptop>.elementor-container>:nth-child(6),.elementor-reverse-laptop>.elementor-container>:nth-child(7),.elementor-reverse-laptop>.elementor-container>:nth-child(8),.elementor-reverse-laptop>.elementor-container>:nth-child(9),.elementor-reverse-laptop>.elementor-container>:nth-child(10){order:0}.elementor-reverse-tablet_extra>.elementor-container>:first-child{order:10}.elementor-reverse-tablet_extra>.elementor-container>:nth-child(2){order:9}.elementor-reverse-tablet_extra>.elementor-container>:nth-child(3){order:8}.elementor-reverse-tablet_extra>.elementor-container>:nth-child(4){order:7}.elementor-reverse-tablet_extra>.elementor-container>:nth-child(5){order:6}.elementor-reverse-tablet_extra>.elementor-container>:nth-child(6){order:5}.elementor-reverse-tablet_extra>.elementor-container>:nth-child(7){order:4}.elementor-reverse-tablet_extra>.elementor-container>:nth-child(8){order:3}.elementor-reverse-tablet_extra>.elementor-container>:nth-child(9){order:2}.elementor-reverse-tablet_extra>.elementor-container>:nth-child(10){order:1}}@media (min-width:ELEMENTOR_SCREEN_MOBILE_NEXT) and (max-width:ELEMENTOR_SCREEN_TABLET_MAX){.elementor-reverse-tablet>.elementor-container>:first-child{order:10}.elementor-reverse-tablet>.elementor-container>:nth-child(2){order:9}.elementor-reverse-tablet>.elementor-container>:nth-child(3){order:8}.elementor-reverse-tablet>.elementor-container>:nth-child(4){order:7}.elementor-reverse-tablet>.elementor-container>:nth-child(5){order:6}.elementor-reverse-tablet>.elementor-container>:nth-child(6){order:5}.elementor-reverse-tablet>.elementor-container>:nth-child(7){order:4}.elementor-reverse-tablet>.elementor-container>:nth-child(8){order:3}.elementor-reverse-tablet>.elementor-container>:nth-child(9){order:2}.elementor-reverse-tablet>.elementor-container>:nth-child(10){order:1}}@media (min-width:ELEMENTOR_SCREEN_MOBILE_EXTRA_NEXT) and (max-width:ELEMENTOR_SCREEN_TABLET_MAX){.elementor-reverse-tablet>.elementor-container>:first-child{order:10}.elementor-reverse-tablet>.elementor-container>:nth-child(2){order:9}.elementor-reverse-tablet>.elementor-container>:nth-child(3){order:8}.elementor-reverse-tablet>.elementor-container>:nth-child(4){order:7}.elementor-reverse-tablet>.elementor-container>:nth-child(5){order:6}.elementor-reverse-tablet>.elementor-container>:nth-child(6){order:5}.elementor-reverse-tablet>.elementor-container>:nth-child(7){order:4}.elementor-reverse-tablet>.elementor-container>:nth-child(8){order:3}.elementor-reverse-tablet>.elementor-container>:nth-child(9){order:2}.elementor-reverse-tablet>.elementor-container>:nth-child(10){order:1}}@media (min-width:ELEMENTOR_SCREEN_MOBILE_NEXT) and (max-width:ELEMENTOR_SCREEN_MOBILE_EXTRA_MAX){.elementor-reverse-tablet>.elementor-container>:first-child,.elementor-reverse-tablet>.elementor-container>:nth-child(2),.elementor-reverse-tablet>.elementor-container>:nth-child(3),.elementor-reverse-tablet>.elementor-container>:nth-child(4),.elementor-reverse-tablet>.elementor-container>:nth-child(5),.elementor-reverse-tablet>.elementor-container>:nth-child(6),.elementor-reverse-tablet>.elementor-container>:nth-child(7),.elementor-reverse-tablet>.elementor-container>:nth-child(8),.elementor-reverse-tablet>.elementor-container>:nth-child(9),.elementor-reverse-tablet>.elementor-container>:nth-child(10){order:0}.elementor-reverse-mobile_extra>.elementor-container>:first-child{order:10}.elementor-reverse-mobile_extra>.elementor-container>:nth-child(2){order:9}.elementor-reverse-mobile_extra>.elementor-container>:nth-child(3){order:8}.elementor-reverse-mobile_extra>.elementor-container>:nth-child(4){order:7}.elementor-reverse-mobile_extra>.elementor-container>:nth-child(5){order:6}.elementor-reverse-mobile_extra>.elementor-container>:nth-child(6){order:5}.elementor-reverse-mobile_extra>.elementor-container>:nth-child(7){order:4}.elementor-reverse-mobile_extra>.elementor-container>:nth-child(8){order:3}.elementor-reverse-mobile_extra>.elementor-container>:nth-child(9){order:2}.elementor-reverse-mobile_extra>.elementor-container>:nth-child(10){order:1}}@media (max-width:ELEMENTOR_SCREEN_MOBILE_MAX){.elementor-reverse-mobile>.elementor-container>:first-child{order:10}.elementor-reverse-mobile>.elementor-container>:nth-child(2){order:9}.elementor-reverse-mobile>.elementor-container>:nth-child(3){order:8}.elementor-reverse-mobile>.elementor-container>:nth-child(4){order:7}.elementor-reverse-mobile>.elementor-container>:nth-child(5){order:6}.elementor-reverse-mobile>.elementor-container>:nth-child(6){order:5}.elementor-reverse-mobile>.elementor-container>:nth-child(7){order:4}.elementor-reverse-mobile>.elementor-container>:nth-child(8){order:3}.elementor-reverse-mobile>.elementor-container>:nth-child(9){order:2}.elementor-reverse-mobile>.elementor-container>:nth-child(10){order:1}.elementor-column{width:100%}}ul.elementor-icon-list-items.elementor-inline-items{display:flex;flex-wrap:wrap}ul.elementor-icon-list-items.elementor-inline-items .elementor-inline-item{word-break:break-word}.elementor-grid{display:grid;grid-column-gap:var(--grid-column-gap);grid-row-gap:var(--grid-row-gap)}.elementor-grid .elementor-grid-item{min-width:0}.elementor-grid-0 .elementor-grid{display:inline-block;width:100%;word-spacing:var(--grid-column-gap);margin-bottom:calc(-1 * var(--grid-row-gap))}.elementor-grid-0 .elementor-grid .elementor-grid-item{display:inline-block;margin-bottom:var(--grid-row-gap);word-break:break-word}.elementor-grid-1 .elementor-grid{grid-template-columns:repeat(1,1fr)}.elementor-grid-2 .elementor-grid{grid-template-columns:repeat(2,1fr)}.elementor-grid-3 .elementor-grid{grid-template-columns:repeat(3,1fr)}.elementor-grid-4 .elementor-grid{grid-template-columns:repeat(4,1fr)}.elementor-grid-5 .elementor-grid{grid-template-columns:repeat(5,1fr)}.elementor-grid-6 .elementor-grid{grid-template-columns:repeat(6,1fr)}.elementor-grid-7 .elementor-grid{grid-template-columns:repeat(7,1fr)}.elementor-grid-8 .elementor-grid{grid-template-columns:repeat(8,1fr)}.elementor-grid-9 .elementor-grid{grid-template-columns:repeat(9,1fr)}.elementor-grid-10 .elementor-grid{grid-template-columns:repeat(10,1fr)}.elementor-grid-11 .elementor-grid{grid-template-columns:repeat(11,1fr)}.elementor-grid-12 .elementor-grid{grid-template-columns:repeat(12,1fr)}@media (min-width:ELEMENTOR_SCREEN_WIDESCREEN_MIN){.elementor-grid-widescreen-0 .elementor-grid{display:inline-block;width:100%;word-spacing:var(--grid-column-gap);margin-bottom:calc(-1 * var(--grid-row-gap))}.elementor-grid-widescreen-0 .elementor-grid .elementor-grid-item{display:inline-block;margin-bottom:var(--grid-row-gap);word-break:break-word}.elementor-grid-widescreen-1 .elementor-grid{grid-template-columns:repeat(1,1fr)}.elementor-grid-widescreen-2 .elementor-grid{grid-template-columns:repeat(2,1fr)}.elementor-grid-widescreen-3 .elementor-grid{grid-template-columns:repeat(3,1fr)}.elementor-grid-widescreen-4 .elementor-grid{grid-template-columns:repeat(4,1fr)}.elementor-grid-widescreen-5 .elementor-grid{grid-template-columns:repeat(5,1fr)}.elementor-grid-widescreen-6 .elementor-grid{grid-template-columns:repeat(6,1fr)}.elementor-grid-widescreen-7 .elementor-grid{grid-template-columns:repeat(7,1fr)}.elementor-grid-widescreen-8 .elementor-grid{grid-template-columns:repeat(8,1fr)}.elementor-grid-widescreen-9 .elementor-grid{grid-template-columns:repeat(9,1fr)}.elementor-grid-widescreen-10 .elementor-grid{grid-template-columns:repeat(10,1fr)}.elementor-grid-widescreen-11 .elementor-grid{grid-template-columns:repeat(11,1fr)}.elementor-grid-widescreen-12 .elementor-grid{grid-template-columns:repeat(12,1fr)}}@media (max-width:ELEMENTOR_SCREEN_LAPTOP_MAX){.elementor-grid-laptop-0 .elementor-grid{display:inline-block;width:100%;word-spacing:var(--grid-column-gap);margin-bottom:calc(-1 * var(--grid-row-gap))}.elementor-grid-laptop-0 .elementor-grid .elementor-grid-item{display:inline-block;margin-bottom:var(--grid-row-gap);word-break:break-word}.elementor-grid-laptop-1 .elementor-grid{grid-template-columns:repeat(1,1fr)}.elementor-grid-laptop-2 .elementor-grid{grid-template-columns:repeat(2,1fr)}.elementor-grid-laptop-3 .elementor-grid{grid-template-columns:repeat(3,1fr)}.elementor-grid-laptop-4 .elementor-grid{grid-template-columns:repeat(4,1fr)}.elementor-grid-laptop-5 .elementor-grid{grid-template-columns:repeat(5,1fr)}.elementor-grid-laptop-6 .elementor-grid{grid-template-columns:repeat(6,1fr)}.elementor-grid-laptop-7 .elementor-grid{grid-template-columns:repeat(7,1fr)}.elementor-grid-laptop-8 .elementor-grid{grid-template-columns:repeat(8,1fr)}.elementor-grid-laptop-9 .elementor-grid{grid-template-columns:repeat(9,1fr)}.elementor-grid-laptop-10 .elementor-grid{grid-template-columns:repeat(10,1fr)}.elementor-grid-laptop-11 .elementor-grid{grid-template-columns:repeat(11,1fr)}.elementor-grid-laptop-12 .elementor-grid{grid-template-columns:repeat(12,1fr)}}@media (max-width:ELEMENTOR_SCREEN_TABLET_EXTRA_MAX){.elementor-grid-tablet_extra-0 .elementor-grid{display:inline-block;width:100%;word-spacing:var(--grid-column-gap);margin-bottom:calc(-1 * var(--grid-row-gap))}.elementor-grid-tablet_extra-0 .elementor-grid .elementor-grid-item{display:inline-block;margin-bottom:var(--grid-row-gap);word-break:break-word}.elementor-grid-tablet_extra-1 .elementor-grid{grid-template-columns:repeat(1,1fr)}.elementor-grid-tablet_extra-2 .elementor-grid{grid-template-columns:repeat(2,1fr)}.elementor-grid-tablet_extra-3 .elementor-grid{grid-template-columns:repeat(3,1fr)}.elementor-grid-tablet_extra-4 .elementor-grid{grid-template-columns:repeat(4,1fr)}.elementor-grid-tablet_extra-5 .elementor-grid{grid-template-columns:repeat(5,1fr)}.elementor-grid-tablet_extra-6 .elementor-grid{grid-template-columns:repeat(6,1fr)}.elementor-grid-tablet_extra-7 .elementor-grid{grid-template-columns:repeat(7,1fr)}.elementor-grid-tablet_extra-8 .elementor-grid{grid-template-columns:repeat(8,1fr)}.elementor-grid-tablet_extra-9 .elementor-grid{grid-template-columns:repeat(9,1fr)}.elementor-grid-tablet_extra-10 .elementor-grid{grid-template-columns:repeat(10,1fr)}.elementor-grid-tablet_extra-11 .elementor-grid{grid-template-columns:repeat(11,1fr)}.elementor-grid-tablet_extra-12 .elementor-grid{grid-template-columns:repeat(12,1fr)}}@media (max-width:ELEMENTOR_SCREEN_TABLET_MAX){.elementor-grid-tablet-0 .elementor-grid{display:inline-block;width:100%;word-spacing:var(--grid-column-gap);margin-bottom:calc(-1 * var(--grid-row-gap))}.elementor-grid-tablet-0 .elementor-grid .elementor-grid-item{display:inline-block;margin-bottom:var(--grid-row-gap);word-break:break-word}.elementor-grid-tablet-1 .elementor-grid{grid-template-columns:repeat(1,1fr)}.elementor-grid-tablet-2 .elementor-grid{grid-template-columns:repeat(2,1fr)}.elementor-grid-tablet-3 .elementor-grid{grid-template-columns:repeat(3,1fr)}.elementor-grid-tablet-4 .elementor-grid{grid-template-columns:repeat(4,1fr)}.elementor-grid-tablet-5 .elementor-grid{grid-template-columns:repeat(5,1fr)}.elementor-grid-tablet-6 .elementor-grid{grid-template-columns:repeat(6,1fr)}.elementor-grid-tablet-7 .elementor-grid{grid-template-columns:repeat(7,1fr)}.elementor-grid-tablet-8 .elementor-grid{grid-template-columns:repeat(8,1fr)}.elementor-grid-tablet-9 .elementor-grid{grid-template-columns:repeat(9,1fr)}.elementor-grid-tablet-10 .elementor-grid{grid-template-columns:repeat(10,1fr)}.elementor-grid-tablet-11 .elementor-grid{grid-template-columns:repeat(11,1fr)}.elementor-grid-tablet-12 .elementor-grid{grid-template-columns:repeat(12,1fr)}}@media (max-width:ELEMENTOR_SCREEN_MOBILE_EXTRA_MAX){.elementor-grid-mobile_extra-0 .elementor-grid{display:inline-block;width:100%;word-spacing:var(--grid-column-gap);margin-bottom:calc(-1 * var(--grid-row-gap))}.elementor-grid-mobile_extra-0 .elementor-grid .elementor-grid-item{display:inline-block;margin-bottom:var(--grid-row-gap);word-break:break-word}.elementor-grid-mobile_extra-1 .elementor-grid{grid-template-columns:repeat(1,1fr)}.elementor-grid-mobile_extra-2 .elementor-grid{grid-template-columns:repeat(2,1fr)}.elementor-grid-mobile_extra-3 .elementor-grid{grid-template-columns:repeat(3,1fr)}.elementor-grid-mobile_extra-4 .elementor-grid{grid-template-columns:repeat(4,1fr)}.elementor-grid-mobile_extra-5 .elementor-grid{grid-template-columns:repeat(5,1fr)}.elementor-grid-mobile_extra-6 .elementor-grid{grid-template-columns:repeat(6,1fr)}.elementor-grid-mobile_extra-7 .elementor-grid{grid-template-columns:repeat(7,1fr)}.elementor-grid-mobile_extra-8 .elementor-grid{grid-template-columns:repeat(8,1fr)}.elementor-grid-mobile_extra-9 .elementor-grid{grid-template-columns:repeat(9,1fr)}.elementor-grid-mobile_extra-10 .elementor-grid{grid-template-columns:repeat(10,1fr)}.elementor-grid-mobile_extra-11 .elementor-grid{grid-template-columns:repeat(11,1fr)}.elementor-grid-mobile_extra-12 .elementor-grid{grid-template-columns:repeat(12,1fr)}}@media (max-width:ELEMENTOR_SCREEN_MOBILE_MAX){.elementor-grid-mobile-0 .elementor-grid{display:inline-block;width:100%;word-spacing:var(--grid-column-gap);margin-bottom:calc(-1 * var(--grid-row-gap))}.elementor-grid-mobile-0 .elementor-grid .elementor-grid-item{display:inline-block;margin-bottom:var(--grid-row-gap);word-break:break-word}.elementor-grid-mobile-1 .elementor-grid{grid-template-columns:repeat(1,1fr)}.elementor-grid-mobile-2 .elementor-grid{grid-template-columns:repeat(2,1fr)}.elementor-grid-mobile-3 .elementor-grid{grid-template-columns:repeat(3,1fr)}.elementor-grid-mobile-4 .elementor-grid{grid-template-columns:repeat(4,1fr)}.elementor-grid-mobile-5 .elementor-grid{grid-template-columns:repeat(5,1fr)}.elementor-grid-mobile-6 .elementor-grid{grid-template-columns:repeat(6,1fr)}.elementor-grid-mobile-7 .elementor-grid{grid-template-columns:repeat(7,1fr)}.elementor-grid-mobile-8 .elementor-grid{grid-template-columns:repeat(8,1fr)}.elementor-grid-mobile-9 .elementor-grid{grid-template-columns:repeat(9,1fr)}.elementor-grid-mobile-10 .elementor-grid{grid-template-columns:repeat(10,1fr)}.elementor-grid-mobile-11 .elementor-grid{grid-template-columns:repeat(11,1fr)}.elementor-grid-mobile-12 .elementor-grid{grid-template-columns:repeat(12,1fr)}}@media (min-width:ELEMENTOR_SCREEN_DESKTOP_MIN){#elementor-device-mode:after{content:"desktop"}}@media (min-width:ELEMENTOR_SCREEN_WIDESCREEN_MIN){#elementor-device-mode:after{content:"widescreen"}}@media (max-width:ELEMENTOR_SCREEN_LAPTOP_MAX){#elementor-device-mode:after{content:"laptop"}}@media (max-width:ELEMENTOR_SCREEN_TABLET_EXTRA_MAX){#elementor-device-mode:after{content:"tablet_extra"}}@media (max-width:ELEMENTOR_SCREEN_TABLET_MAX){#elementor-device-mode:after{content:"tablet"}}@media (max-width:ELEMENTOR_SCREEN_MOBILE_EXTRA_MAX){#elementor-device-mode:after{content:"mobile_extra"}}@media (max-width:ELEMENTOR_SCREEN_MOBILE_MAX){#elementor-device-mode:after{content:"mobile"}}.e-con{--border-radius:0;--border-block-start-width:0px;--border-inline-end-width:0px;--border-block-end-width:0px;--border-inline-start-width:0px;--border-style:initial;--border-color:initial;--container-widget-width:100%;--container-widget-height:initial;--container-widget-flex-grow:0;--container-widget-align-self:initial;--content-width:min(100%,var(--container-max-width,1140px));--width:100%;--min-height:initial;--height:auto;--text-align:initial;--margin-block-start:0px;--margin-inline-end:0px;--margin-block-end:0px;--margin-inline-start:0px;--padding-block-start:var(--container-default-padding-block-start,10px);--padding-inline-end:var(--container-default-padding-inline-end,10px);--padding-block-end:var(--container-default-padding-block-end,10px);--padding-inline-start:var(--container-default-padding-inline-start,10px);--position:relative;--z-index:revert;--overflow:visible;--gap:var(--widgets-spacing,20px);--overlay-mix-blend-mode:initial;--overlay-opacity:1;--overlay-transition:0.3s;--e-con-grid-template-columns:repeat(3,1fr);--e-con-grid-template-rows:repeat(2,1fr);position:var(--position);width:var(--width);min-width:0;min-height:var(--min-height);height:var(--height);border-radius:var(--border-radius);margin-block-start:var(--bc-margin-block-start,var(--margin-block-start));margin-inline-end:var(--bc-margin-inline-end,var(--margin-inline-end));margin-block-end:var(--bc-margin-block-end,var(--margin-block-end));margin-inline-start:var(--bc-margin-inline-start,var(--margin-inline-start));padding-inline-start:var(--bc-padding-inline-start,var(--padding-inline-start));padding-inline-end:var(--bc-padding-inline-end,var(--padding-inline-end));z-index:var(--z-index);overflow:var(--overflow);transition:background var(--background-transition,.3s),border var(--border-transition,.3s),box-shadow var(--border-transition,.3s),transform var(--e-con-transform-transition-duration,.4s)}.e-con.e-flex{--flex-direction:column;--flex-basis:auto;--flex-grow:0;--flex-shrink:1;flex:var(--flex-grow) var(--flex-shrink) var(--flex-basis)}.e-con-full,.e-con>.e-con-inner{text-align:var(--text-align);padding-block-start:var(--bc-padding-block-start,var(--padding-block-start));padding-block-end:var(--bc-padding-block-end,var(--padding-block-end))}.e-con-full.e-flex,.e-con.e-flex>.e-con-inner{flex-direction:var(--flex-direction)}.e-con,.e-con>.e-con-inner{display:var(--display)}.e-con.e-grid{--grid-justify-content:start;--grid-align-content:start;--grid-auto-flow:row}.e-con.e-grid,.e-con.e-grid>.e-con-inner{grid-template-columns:var(--e-con-grid-template-columns);grid-template-rows:var(--e-con-grid-template-rows);justify-content:var(--grid-justify-content);align-content:var(--grid-align-content);grid-auto-flow:var(--grid-auto-flow);justify-items:var(--justify-items);align-items:var(--align-items)}.e-con-boxed.e-flex{flex-direction:column;flex-wrap:nowrap;justify-content:normal;align-items:normal;align-content:normal}.e-con-boxed.e-grid{justify-items:legacy;grid-template-columns:1fr;grid-template-rows:1fr}.e-con-boxed{text-align:initial;gap:initial}.e-con.e-flex>.e-con-inner{flex-wrap:var(--flex-wrap);justify-content:var(--justify-content);align-items:var(--align-items);align-content:var(--align-content);flex-basis:auto;flex-grow:1;flex-shrink:1;align-self:auto}.e-con.e-grid>.e-con-inner{justify-items:var(--justify-items);align-items:var(--align-items)}.e-con>.e-con-inner{gap:var(--gap);width:100%;max-width:var(--content-width);margin:0 auto;padding-inline-start:0;padding-inline-end:0;height:100%}:is(.elementor-section-wrap,[data-elementor-id])>.e-con{--margin-inline-end:auto;--margin-inline-start:auto;max-width:min(100%,var(--width))}.e-con .elementor-widget.elementor-widget{margin-block-end:0}.e-con:before,.e-con>.elementor-background-slideshow:before,.e-con>.elementor-motion-effects-container>.elementor-motion-effects-layer:before,:is(.e-con,.e-con>.e-con-inner)>.elementor-background-video-container:before{content:var(--background-overlay);display:block;position:absolute;mix-blend-mode:var(--overlay-mix-blend-mode);opacity:var(--overlay-opacity);transition:var(--overlay-transition,.3s);border-radius:var(--border-radius);border-style:var(--border-style);border-color:var(--border-color);border-block-start-width:var(--border-block-start-width);border-inline-end-width:var(--border-inline-end-width);border-block-end-width:var(--border-block-end-width);border-inline-start-width:var(--border-inline-start-width);top:calc(0px - var(--border-block-start-width));left:calc(0px - var(--border-inline-start-width));width:max(100% + var(--border-inline-end-width) + var(--border-inline-start-width),100%);height:max(100% + var(--border-block-start-width) + var(--border-block-end-width),100%)}.e-con:before{transition:background var(--overlay-transition,.3s),border-radius var(--border-transition,.3s),opacity var(--overlay-transition,.3s)}.e-con>.elementor-background-slideshow,:is(.e-con,.e-con>.e-con-inner)>.elementor-background-video-container{border-radius:var(--border-radius);border-style:var(--border-style);border-color:var(--border-color);border-block-start-width:var(--border-block-start-width);border-inline-end-width:var(--border-inline-end-width);border-block-end-width:var(--border-block-end-width);border-inline-start-width:var(--border-inline-start-width);top:calc(0px - var(--border-block-start-width));left:calc(0px - var(--border-inline-start-width));width:max(100% + var(--border-inline-end-width) + var(--border-inline-start-width),100%);height:max(100% + var(--border-block-start-width) + var(--border-block-end-width),100%)}@media (max-width:ELEMENTOR_SCREEN_MOBILE_MAX){:is(.e-con,.e-con>.e-con-inner)>.elementor-background-video-container.elementor-hidden-phone{display:none}}:is(.e-con,.e-con>.e-con-inner)>.elementor-background-video-container:before{z-index:1}:is(.e-con,.e-con>.e-con-inner)>.elementor-background-slideshow:before{z-index:2}.e-con .elementor-widget{min-width:0}.e-con .elementor-widget-empty,.e-con .elementor-widget-google_maps,.e-con .elementor-widget-video,.e-con .elementor-widget.e-widget-swiper{width:100%}.e-con>.e-con-inner>.elementor-widget>.elementor-widget-container,.e-con>.elementor-widget>.elementor-widget-container{height:100%}.e-con.e-con>.e-con-inner>.elementor-widget,.elementor.elementor .e-con>.elementor-widget{max-width:100%}@media (max-width:767px){.e-con.e-flex{--width:100%;--flex-wrap:wrap}}.e-con{--bc-margin-block-start:var(--margin-top);--bc-margin-block-end:var(--margin-bottom);--bc-margin-inline-start:var(--margin-left);--bc-margin-inline-end:var(--margin-right);--bc-padding-block-start:var(--padding-top);--bc-padding-block-end:var(--padding-bottom);--bc-padding-inline-start:var(--padding-left);--bc-padding-inline-end:var(--padding-right)}[dir=rtl] .e-con{--bc-margin-inline-start:var(--margin-right);--bc-margin-inline-end:var(--margin-left);--bc-padding-inline-start:var(--padding-right);--bc-padding-inline-end:var(--padding-left)}.elementor-form-fields-wrapper{display:flex;flex-wrap:wrap}.elementor-form-fields-wrapper.elementor-labels-above .elementor-field-group .elementor-field-subgroup,.elementor-form-fields-wrapper.elementor-labels-above .elementor-field-group>.elementor-select-wrapper,.elementor-form-fields-wrapper.elementor-labels-above .elementor-field-group>input,.elementor-form-fields-wrapper.elementor-labels-above .elementor-field-group>textarea{flex-basis:100%;max-width:100%}.elementor-form-fields-wrapper.elementor-labels-inline>.elementor-field-group .elementor-select-wrapper,.elementor-form-fields-wrapper.elementor-labels-inline>.elementor-field-group>input{flex-grow:1}.elementor-field-group{flex-wrap:wrap;align-items:center}.elementor-field-group.elementor-field-type-submit{align-items:flex-end}.elementor-field-group .elementor-field-textual{width:100%;max-width:100%;border:1px solid #69727d;background-color:transparent;color:#1f2124;vertical-align:middle;flex-grow:1}.elementor-field-group .elementor-field-textual:focus{box-shadow:inset 0 0 0 1px rgba(0,0,0,.1);outline:0}.elementor-field-group .elementor-field-textual::-moz-placeholder{color:inherit;font-family:inherit;opacity:.6}.elementor-field-group .elementor-field-textual::placeholder{color:inherit;font-family:inherit;opacity:.6}.elementor-field-group .elementor-select-wrapper{display:flex;position:relative;width:100%}.elementor-field-group .elementor-select-wrapper select{-webkit-appearance:none;-moz-appearance:none;appearance:none;color:inherit;font-size:inherit;font-family:inherit;font-weight:inherit;font-style:inherit;text-transform:inherit;letter-spacing:inherit;line-height:inherit;flex-basis:100%;padding-left:20px}.elementor-field-group .elementor-select-wrapper:before{content:"\e92a";font-family:eicons;font-size:15px;position:absolute;top:50%;transform:translateY(-50%);left:10px;pointer-events:none;text-shadow:0 0 3px rgba(0,0,0,.3)}.elementor-field-group.elementor-field-type-select-multiple .elementor-select-wrapper:before{content:""}.elementor-field-subgroup{display:flex;flex-wrap:wrap}.elementor-field-subgroup .elementor-field-option label{display:inline-block}.elementor-field-subgroup.elementor-subgroup-inline .elementor-field-option{padding-left:10px}.elementor-field-subgroup:not(.elementor-subgroup-inline) .elementor-field-option{flex-basis:100%}.elementor-field-type-acceptance .elementor-field-subgroup .elementor-field-option input,.elementor-field-type-acceptance .elementor-field-subgroup .elementor-field-option label,.elementor-field-type-checkbox .elementor-field-subgroup .elementor-field-option input,.elementor-field-type-checkbox .elementor-field-subgroup .elementor-field-option label,.elementor-field-type-radio .elementor-field-subgroup .elementor-field-option input,.elementor-field-type-radio .elementor-field-subgroup .elementor-field-option label{display:inline}.elementor-field-label{cursor:pointer}.elementor-mark-required .elementor-field-label:after{content:"*";color:red;padding-right:.2em}.elementor-field-textual{line-height:1.4;font-size:15px;min-height:40px;padding:5px 14px;border-radius:3px}.elementor-field-textual.elementor-size-xs{font-size:13px;min-height:33px;padding:4px 12px;border-radius:2px}.elementor-field-textual.elementor-size-md{font-size:16px;min-height:47px;padding:6px 16px;border-radius:4px}.elementor-field-textual.elementor-size-lg{font-size:18px;min-height:59px;padding:7px 20px;border-radius:5px}.elementor-field-textual.elementor-size-xl{font-size:20px;min-height:72px;padding:8px 24px;border-radius:6px}.elementor-button-align-stretch .elementor-field-type-submit:not(.e-form__buttons__wrapper) .elementor-button{flex-basis:100%}.elementor-button-align-stretch .e-form__buttons__wrapper{flex-basis:50%;flex-grow:1}.elementor-button-align-stretch .e-form__buttons__wrapper__button{flex-basis:100%}.elementor-button-align-center .e-form__buttons,.elementor-button-align-center .elementor-field-type-submit{justify-content:center}.elementor-button-align-start .e-form__buttons,.elementor-button-align-start .elementor-field-type-submit{justify-content:flex-end}.elementor-button-align-end .e-form__buttons,.elementor-button-align-end .elementor-field-type-submit{justify-content:flex-start}.elementor-button-align-center .elementor-field-type-submit:not(.e-form__buttons__wrapper) .elementor-button,.elementor-button-align-end .elementor-field-type-submit:not(.e-form__buttons__wrapper) .elementor-button,.elementor-button-align-start .elementor-field-type-submit:not(.e-form__buttons__wrapper) .elementor-button{flex-basis:auto}.elementor-button-align-center .e-form__buttons__wrapper,.elementor-button-align-end .e-form__buttons__wrapper,.elementor-button-align-start .e-form__buttons__wrapper{flex-grow:0}.elementor-button-align-center .e-form__buttons__wrapper,.elementor-button-align-center .e-form__buttons__wrapper__button,.elementor-button-align-end .e-form__buttons__wrapper,.elementor-button-align-end .e-form__buttons__wrapper__button,.elementor-button-align-start .e-form__buttons__wrapper,.elementor-button-align-start .e-form__buttons__wrapper__button{flex-basis:auto}@media screen and (max-width:ELEMENTOR_SCREEN_TABLET_MAX){.elementor-tablet-button-align-stretch .elementor-field-type-submit:not(.e-form__buttons__wrapper) .elementor-button{flex-basis:100%}.elementor-tablet-button-align-stretch .e-form__buttons__wrapper{flex-basis:50%;flex-grow:1}.elementor-tablet-button-align-stretch .e-form__buttons__wrapper__button{flex-basis:100%}.elementor-tablet-button-align-center .e-form__buttons,.elementor-tablet-button-align-center .elementor-field-type-submit{justify-content:center}.elementor-tablet-button-align-start .e-form__buttons,.elementor-tablet-button-align-start .elementor-field-type-submit{justify-content:flex-end}.elementor-tablet-button-align-end .e-form__buttons,.elementor-tablet-button-align-end .elementor-field-type-submit{justify-content:flex-start}.elementor-tablet-button-align-center .elementor-field-type-submit:not(.e-form__buttons__wrapper) .elementor-button,.elementor-tablet-button-align-end .elementor-field-type-submit:not(.e-form__buttons__wrapper) .elementor-button,.elementor-tablet-button-align-start .elementor-field-type-submit:not(.e-form__buttons__wrapper) .elementor-button{flex-basis:auto}.elementor-tablet-button-align-center .e-form__buttons__wrapper,.elementor-tablet-button-align-end .e-form__buttons__wrapper,.elementor-tablet-button-align-start .e-form__buttons__wrapper{flex-grow:0}.elementor-tablet-button-align-center .e-form__buttons__wrapper,.elementor-tablet-button-align-center .e-form__buttons__wrapper__button,.elementor-tablet-button-align-end .e-form__buttons__wrapper,.elementor-tablet-button-align-end .e-form__buttons__wrapper__button,.elementor-tablet-button-align-start .e-form__buttons__wrapper,.elementor-tablet-button-align-start .e-form__buttons__wrapper__button{flex-basis:auto}}@media screen and (max-width:ELEMENTOR_SCREEN_MOBILE_MAX){.elementor-mobile-button-align-stretch .elementor-field-type-submit:not(.e-form__buttons__wrapper) .elementor-button{flex-basis:100%}.elementor-mobile-button-align-stretch .e-form__buttons__wrapper{flex-basis:50%;flex-grow:1}.elementor-mobile-button-align-stretch .e-form__buttons__wrapper__button{flex-basis:100%}.elementor-mobile-button-align-center .e-form__buttons,.elementor-mobile-button-align-center .elementor-field-type-submit{justify-content:center}.elementor-mobile-button-align-start .e-form__buttons,.elementor-mobile-button-align-start .elementor-field-type-submit{justify-content:flex-end}.elementor-mobile-button-align-end .e-form__buttons,.elementor-mobile-button-align-end .elementor-field-type-submit{justify-content:flex-start}.elementor-mobile-button-align-center .elementor-field-type-submit:not(.e-form__buttons__wrapper) .elementor-button,.elementor-mobile-button-align-end .elementor-field-type-submit:not(.e-form__buttons__wrapper) .elementor-button,.elementor-mobile-button-align-start .elementor-field-type-submit:not(.e-form__buttons__wrapper) .elementor-button{flex-basis:auto}.elementor-mobile-button-align-center .e-form__buttons__wrapper,.elementor-mobile-button-align-end .e-form__buttons__wrapper,.elementor-mobile-button-align-start .e-form__buttons__wrapper{flex-grow:0}.elementor-mobile-button-align-center .e-form__buttons__wrapper,.elementor-mobile-button-align-center .e-form__buttons__wrapper__button,.elementor-mobile-button-align-end .e-form__buttons__wrapper,.elementor-mobile-button-align-end .e-form__buttons__wrapper__button,.elementor-mobile-button-align-start .e-form__buttons__wrapper,.elementor-mobile-button-align-start .e-form__buttons__wrapper__button{flex-basis:auto}}.elementor-error .elementor-field{border-color:#d9534f}.elementor-error .help-inline{color:#d9534f;font-size:.9em}.elementor-message{margin:10px 0;font-size:1em;line-height:1}.elementor-message:before{content:"\e90e";display:inline-block;font-family:eicons;font-weight:400;font-style:normal;vertical-align:middle;margin-left:5px}.elementor-message.elementor-message-danger{color:#d9534f}.elementor-message.elementor-message-danger:before{content:"\e87f"}.elementor-message.form-message-success{color:#5cb85c}.elementor-form .elementor-button{padding-top:0;padding-bottom:0;border:none}.elementor-form .elementor-button>span{display:flex;justify-content:center}.elementor-form .elementor-button.elementor-size-xs{min-height:33px}.elementor-form .elementor-button.elementor-size-sm{min-height:40px}.elementor-form .elementor-button.elementor-size-md{min-height:47px}.elementor-form .elementor-button.elementor-size-lg{min-height:59px}.elementor-form .elementor-button.elementor-size-xl{min-height:72px}.elementor-element .elementor-widget-container{transition:background .3s,border .3s,border-radius .3s,box-shadow .3s,transform var(--e-transform-transition-duration,.4s)}.elementor-button{display:inline-block;line-height:1;background-color:#69727d;font-size:15px;padding:12px 24px;border-radius:3px;color:#fff;fill:#fff;text-align:center;transition:all .3s}.elementor-button:focus,.elementor-button:hover,.elementor-button:visited{color:#fff}.elementor-button-content-wrapper{display:flex;justify-content:center}.elementor-button-icon{flex-grow:0;order:5}.elementor-button-icon svg{width:1em;height:auto}.elementor-button-icon .e-font-icon-svg{height:1em}.elementor-button-text{flex-grow:1;order:10;display:inline-block}.elementor-button.elementor-size-xs{font-size:13px;padding:10px 20px;border-radius:2px}.elementor-button.elementor-size-md{font-size:16px;padding:15px 30px;border-radius:4px}.elementor-button.elementor-size-lg{font-size:18px;padding:20px 40px;border-radius:5px}.elementor-button.elementor-size-xl{font-size:20px;padding:25px 50px;border-radius:6px}.elementor-button .elementor-align-icon-right{margin-left:5px;order:5}.elementor-button .elementor-align-icon-left{margin-right:5px;order:15}.elementor-button span{text-decoration:inherit}.elementor-element.elementor-button-info .elementor-button{background-color:#5bc0de}.elementor-element.elementor-button-success .elementor-button{background-color:#5cb85c}.elementor-element.elementor-button-warning .elementor-button{background-color:#f0ad4e}.elementor-element.elementor-button-danger .elementor-button{background-color:#d9534f}.elementor-widget-button .elementor-button .elementor-button-info{background-color:#5bc0de}.elementor-widget-button .elementor-button .elementor-button-success{background-color:#5cb85c}.elementor-widget-button .elementor-button .elementor-button-warning{background-color:#f0ad4e}.elementor-widget-button .elementor-button .elementor-button-danger{background-color:#d9534f}.elementor-tab-title a{color:inherit}.elementor-view-stacked .elementor-icon{padding:.5em;background-color:#69727d;color:#fff;fill:#fff}.elementor-view-framed .elementor-icon{padding:.5em;color:#69727d;border:3px solid #69727d;background-color:transparent}.elementor-icon{display:inline-block;line-height:1;transition:all .3s;color:#69727d;font-size:50px;text-align:center}.elementor-icon:hover{color:#69727d}.elementor-icon i,.elementor-icon svg{width:1em;height:1em;position:relative;display:block}.elementor-icon i:before,.elementor-icon svg:before{position:absolute;left:50%;transform:translateX(-50%)}.elementor-icon i.fad{width:auto}.elementor-shape-circle .elementor-icon{border-radius:50%}.e-transform .elementor-widget-container{transform:perspective(var(--e-transform-perspective,0)) rotate(var(--e-transform-rotateZ,0)) rotateX(var(--e-transform-rotateX,0)) rotateY(var(--e-transform-rotateY,0)) translate(var(--e-transform-translate,0)) translateX(var(--e-transform-translateX,0)) translateY(var(--e-transform-translateY,0)) scaleX(calc(var(--e-transform-flipX, 1) * var(--e-transform-scaleX, var(--e-transform-scale, 1)))) scaleY(calc(var(--e-transform-flipY, 1) * var(--e-transform-scaleY, var(--e-transform-scale, 1)))) skewX(var(--e-transform-skewX,0)) skewY(var(--e-transform-skewY,0));transform-origin:var(--e-transform-origin-y) var(--e-transform-origin-x)}.e-con.e-transform{transform:perspective(var(--e-con-transform-perspective,0)) rotate(var(--e-con-transform-rotateZ,0)) rotateX(var(--e-con-transform-rotateX,0)) rotateY(var(--e-con-transform-rotateY,0)) translate(var(--e-con-transform-translate,0)) translateX(var(--e-con-transform-translateX,0)) translateY(var(--e-con-transform-translateY,0)) scaleX(calc(var(--e-con-transform-flipX, 1) * var(--e-con-transform-scaleX, var(--e-con-transform-scale, 1)))) scaleY(calc(var(--e-con-transform-flipY, 1) * var(--e-con-transform-scaleY, var(--e-con-transform-scale, 1)))) skewX(var(--e-con-transform-skewX,0)) skewY(var(--e-con-transform-skewY,0));transform-origin:var(--e-con-transform-origin-y) var(--e-con-transform-origin-x)}.elementor-element,.elementor-lightbox{--swiper-theme-color:#000;--swiper-navigation-size:44px;--swiper-pagination-bullet-size:6px;--swiper-pagination-bullet-horizontal-gap:6px}.elementor-element .swiper-container .swiper-slide figure,.elementor-element .swiper .swiper-slide figure,.elementor-lightbox .swiper-container .swiper-slide figure,.elementor-lightbox .swiper .swiper-slide figure{line-height:0}.elementor-element .swiper-container .elementor-lightbox-content-source,.elementor-element .swiper .elementor-lightbox-content-source,.elementor-lightbox .swiper-container .elementor-lightbox-content-source,.elementor-lightbox .swiper .elementor-lightbox-content-source{display:none}.elementor-element .swiper-container .elementor-swiper-button,.elementor-element .swiper-container~.elementor-swiper-button,.elementor-element .swiper .elementor-swiper-button,.elementor-element .swiper~.elementor-swiper-button,.elementor-lightbox .swiper-container .elementor-swiper-button,.elementor-lightbox .swiper-container~.elementor-swiper-button,.elementor-lightbox .swiper .elementor-swiper-button,.elementor-lightbox .swiper~.elementor-swiper-button{position:absolute;display:inline-flex;z-index:1;cursor:pointer;font-size:25px;color:hsla(0,0%,93.3%,.9);top:50%;transform:translateY(-50%)}.elementor-element .swiper-container .elementor-swiper-button svg,.elementor-element .swiper-container~.elementor-swiper-button svg,.elementor-element .swiper .elementor-swiper-button svg,.elementor-element .swiper~.elementor-swiper-button svg,.elementor-lightbox .swiper-container .elementor-swiper-button svg,.elementor-lightbox .swiper-container~.elementor-swiper-button svg,.elementor-lightbox .swiper .elementor-swiper-button svg,.elementor-lightbox .swiper~.elementor-swiper-button svg{fill:hsla(0,0%,93.3%,.9);height:1em;width:1em}.elementor-element .swiper-container .elementor-swiper-button-prev,.elementor-element .swiper-container~.elementor-swiper-button-prev,.elementor-element .swiper .elementor-swiper-button-prev,.elementor-element .swiper~.elementor-swiper-button-prev,.elementor-lightbox .swiper-container .elementor-swiper-button-prev,.elementor-lightbox .swiper-container~.elementor-swiper-button-prev,.elementor-lightbox .swiper .elementor-swiper-button-prev,.elementor-lightbox .swiper~.elementor-swiper-button-prev{left:10px}.elementor-element .swiper-container .elementor-swiper-button-next,.elementor-element .swiper-container~.elementor-swiper-button-next,.elementor-element .swiper .elementor-swiper-button-next,.elementor-element .swiper~.elementor-swiper-button-next,.elementor-lightbox .swiper-container .elementor-swiper-button-next,.elementor-lightbox .swiper-container~.elementor-swiper-button-next,.elementor-lightbox .swiper .elementor-swiper-button-next,.elementor-lightbox .swiper~.elementor-swiper-button-next{right:10px}.elementor-element .swiper-container .elementor-swiper-button.swiper-button-disabled,.elementor-element .swiper-container~.elementor-swiper-button.swiper-button-disabled,.elementor-element .swiper .elementor-swiper-button.swiper-button-disabled,.elementor-element .swiper~.elementor-swiper-button.swiper-button-disabled,.elementor-lightbox .swiper-container .elementor-swiper-button.swiper-button-disabled,.elementor-lightbox .swiper-container~.elementor-swiper-button.swiper-button-disabled,.elementor-lightbox .swiper .elementor-swiper-button.swiper-button-disabled,.elementor-lightbox .swiper~.elementor-swiper-button.swiper-button-disabled{opacity:.3}.elementor-element .swiper-container .swiper-image-stretch .swiper-slide .swiper-slide-image,.elementor-element .swiper .swiper-image-stretch .swiper-slide .swiper-slide-image,.elementor-lightbox .swiper-container .swiper-image-stretch .swiper-slide .swiper-slide-image,.elementor-lightbox .swiper .swiper-image-stretch .swiper-slide .swiper-slide-image{width:100%}.elementor-element .swiper-container .swiper-horizontal>.swiper-pagination-bullets,.elementor-element .swiper-container .swiper-pagination-bullets.swiper-pagination-horizontal,.elementor-element .swiper-container .swiper-pagination-custom,.elementor-element .swiper-container .swiper-pagination-fraction,.elementor-element .swiper-container~.swiper-pagination-bullets.swiper-pagination-horizontal,.elementor-element .swiper-container~.swiper-pagination-custom,.elementor-element .swiper-container~.swiper-pagination-fraction,.elementor-element .swiper .swiper-horizontal>.swiper-pagination-bullets,.elementor-element .swiper .swiper-pagination-bullets.swiper-pagination-horizontal,.elementor-element .swiper .swiper-pagination-custom,.elementor-element .swiper .swiper-pagination-fraction,.elementor-element .swiper~.swiper-pagination-bullets.swiper-pagination-horizontal,.elementor-element .swiper~.swiper-pagination-custom,.elementor-element .swiper~.swiper-pagination-fraction,.elementor-lightbox .swiper-container .swiper-horizontal>.swiper-pagination-bullets,.elementor-lightbox .swiper-container .swiper-pagination-bullets.swiper-pagination-horizontal,.elementor-lightbox .swiper-container .swiper-pagination-custom,.elementor-lightbox .swiper-container .swiper-pagination-fraction,.elementor-lightbox .swiper-container~.swiper-pagination-bullets.swiper-pagination-horizontal,.elementor-lightbox .swiper-container~.swiper-pagination-custom,.elementor-lightbox .swiper-container~.swiper-pagination-fraction,.elementor-lightbox .swiper .swiper-horizontal>.swiper-pagination-bullets,.elementor-lightbox .swiper .swiper-pagination-bullets.swiper-pagination-horizontal,.elementor-lightbox .swiper .swiper-pagination-custom,.elementor-lightbox .swiper .swiper-pagination-fraction,.elementor-lightbox .swiper~.swiper-pagination-bullets.swiper-pagination-horizontal,.elementor-lightbox .swiper~.swiper-pagination-custom,.elementor-lightbox .swiper~.swiper-pagination-fraction{bottom:5px}.elementor-element .swiper-container.swiper-cube .elementor-swiper-button,.elementor-element .swiper-container.swiper-cube~.elementor-swiper-button,.elementor-element .swiper.swiper-cube .elementor-swiper-button,.elementor-element .swiper.swiper-cube~.elementor-swiper-button,.elementor-lightbox .swiper-container.swiper-cube .elementor-swiper-button,.elementor-lightbox .swiper-container.swiper-cube~.elementor-swiper-button,.elementor-lightbox .swiper.swiper-cube .elementor-swiper-button,.elementor-lightbox .swiper.swiper-cube~.elementor-swiper-button{transform:translate3d(0,-50%,1px)}.elementor-element :where(.swiper-container-horizontal)~.swiper-pagination-bullets,.elementor-lightbox :where(.swiper-container-horizontal)~.swiper-pagination-bullets{bottom:5px;left:0;width:100%}.elementor-element :where(.swiper-container-horizontal)~.swiper-pagination-bullets .swiper-pagination-bullet,.elementor-lightbox :where(.swiper-container-horizontal)~.swiper-pagination-bullets .swiper-pagination-bullet{margin:0 var(--swiper-pagination-bullet-horizontal-gap,4px)}.elementor-element :where(.swiper-container-horizontal)~.swiper-pagination-progressbar,.elementor-lightbox :where(.swiper-container-horizontal)~.swiper-pagination-progressbar{width:100%;height:4px;left:0;top:0}.elementor-element.elementor-pagination-position-outside .swiper,.elementor-element.elementor-pagination-position-outside .swiper-container,.elementor-lightbox.elementor-pagination-position-outside .swiper,.elementor-lightbox.elementor-pagination-position-outside .swiper-container{padding-bottom:30px}.elementor-element.elementor-pagination-position-outside .swiper-container .elementor-swiper-button,.elementor-element.elementor-pagination-position-outside .swiper-container~.elementor-swiper-button,.elementor-element.elementor-pagination-position-outside .swiper .elementor-swiper-button,.elementor-element.elementor-pagination-position-outside .swiper~.elementor-swiper-button,.elementor-lightbox.elementor-pagination-position-outside .swiper-container .elementor-swiper-button,.elementor-lightbox.elementor-pagination-position-outside .swiper-container~.elementor-swiper-button,.elementor-lightbox.elementor-pagination-position-outside .swiper .elementor-swiper-button,.elementor-lightbox.elementor-pagination-position-outside .swiper~.elementor-swiper-button{top:calc(50% - 30px / 2)}.elementor-element .elementor-swiper,.elementor-lightbox .elementor-swiper{position:relative}.elementor-element .elementor-main-swiper,.elementor-lightbox .elementor-main-swiper{position:static}.elementor-element.elementor-arrows-position-outside .swiper,.elementor-element.elementor-arrows-position-outside .swiper-container,.elementor-lightbox.elementor-arrows-position-outside .swiper,.elementor-lightbox.elementor-arrows-position-outside .swiper-container{width:calc(100% - 60px)}.elementor-element.elementor-arrows-position-outside .swiper-container .elementor-swiper-button-prev,.elementor-element.elementor-arrows-position-outside .swiper-container~.elementor-swiper-button-prev,.elementor-element.elementor-arrows-position-outside .swiper .elementor-swiper-button-prev,.elementor-element.elementor-arrows-position-outside .swiper~.elementor-swiper-button-prev,.elementor-lightbox.elementor-arrows-position-outside .swiper-container .elementor-swiper-button-prev,.elementor-lightbox.elementor-arrows-position-outside .swiper-container~.elementor-swiper-button-prev,.elementor-lightbox.elementor-arrows-position-outside .swiper .elementor-swiper-button-prev,.elementor-lightbox.elementor-arrows-position-outside .swiper~.elementor-swiper-button-prev{left:0}.elementor-element.elementor-arrows-position-outside .swiper-container .elementor-swiper-button-next,.elementor-element.elementor-arrows-position-outside .swiper-container~.elementor-swiper-button-next,.elementor-element.elementor-arrows-position-outside .swiper .elementor-swiper-button-next,.elementor-element.elementor-arrows-position-outside .swiper~.elementor-swiper-button-next,.elementor-lightbox.elementor-arrows-position-outside .swiper-container .elementor-swiper-button-next,.elementor-lightbox.elementor-arrows-position-outside .swiper-container~.elementor-swiper-button-next,.elementor-lightbox.elementor-arrows-position-outside .swiper .elementor-swiper-button-next,.elementor-lightbox.elementor-arrows-position-outside .swiper~.elementor-swiper-button-next{right:0}.elementor-lightbox{--lightbox-ui-color:hsla(0,0%,93.3%,0.9);--lightbox-ui-color-hover:#fff;--lightbox-text-color:var(--lightbox-ui-color);--lightbox-header-icons-size:20px;--lightbox-navigation-icons-size:25px}.elementor-lightbox:not(.elementor-popup-modal) .dialog-header,.elementor-lightbox:not(.elementor-popup-modal) .dialog-message{text-align:center}.elementor-lightbox .dialog-header{display:none}.elementor-lightbox .dialog-widget-content{background:none;box-shadow:none;width:100%;height:100%}.elementor-lightbox .dialog-message{animation-duration:.3s;height:100%}.elementor-lightbox .dialog-message.dialog-lightbox-message{padding:0}.elementor-lightbox .dialog-lightbox-close-button{cursor:pointer;position:absolute;font-size:var(--lightbox-header-icons-size);left:.75em;margin-top:13px;padding:.25em;z-index:2;line-height:1;display:flex}.elementor-lightbox .dialog-lightbox-close-button svg{height:1em;width:1em}.elementor-lightbox .dialog-lightbox-close-button,.elementor-lightbox .elementor-swiper-button{color:var(--lightbox-ui-color);transition:all .3s;opacity:1}.elementor-lightbox .dialog-lightbox-close-button svg,.elementor-lightbox .elementor-swiper-button svg{fill:var(--lightbox-ui-color)}.elementor-lightbox .dialog-lightbox-close-button:hover,.elementor-lightbox .elementor-swiper-button:hover{color:var(--lightbox-ui-color-hover)}.elementor-lightbox .dialog-lightbox-close-button:hover svg,.elementor-lightbox .elementor-swiper-button:hover svg{fill:var(--lightbox-ui-color-hover)}.elementor-lightbox .swiper,.elementor-lightbox .swiper-container{height:100%}.elementor-lightbox .elementor-lightbox-item{display:flex;align-items:center;justify-content:center;position:relative;padding:70px;box-sizing:border-box;height:100%;margin:auto}@media (max-width:ELEMENTOR_SCREEN_MOBILE_MAX){.elementor-lightbox .elementor-lightbox-item{padding:70px 0}}.elementor-lightbox .elementor-lightbox-image{max-height:100%;-webkit-user-select:none;-moz-user-select:none;user-select:none}.elementor-lightbox .elementor-lightbox-image,.elementor-lightbox .elementor-lightbox-image:hover{opacity:1;filter:none;border:none}.elementor-lightbox .elementor-lightbox-image{box-shadow:0 0 30px rgba(0,0,0,.3),0 0 8px -5px rgba(0,0,0,.3);border-radius:2px}.elementor-lightbox .elementor-video-container{width:100%;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.elementor-lightbox .elementor-video-container .elementor-video-landscape,.elementor-lightbox .elementor-video-container .elementor-video-portrait,.elementor-lightbox .elementor-video-container .elementor-video-square{width:100%;height:100%;margin:auto}.elementor-lightbox .elementor-video-container .elementor-video-landscape iframe,.elementor-lightbox .elementor-video-container .elementor-video-portrait iframe,.elementor-lightbox .elementor-video-container .elementor-video-square iframe{border:0;background-color:#000}.elementor-lightbox .elementor-video-container .elementor-video-landscape iframe,.elementor-lightbox .elementor-video-container .elementor-video-landscape video,.elementor-lightbox .elementor-video-container .elementor-video-portrait iframe,.elementor-lightbox .elementor-video-container .elementor-video-portrait video,.elementor-lightbox .elementor-video-container .elementor-video-square iframe,.elementor-lightbox .elementor-video-container .elementor-video-square video{aspect-ratio:var(--video-aspect-ratio,1.77777)}@supports not (aspect-ratio:1/1){.elementor-lightbox .elementor-video-container .elementor-video-landscape,.elementor-lightbox .elementor-video-container .elementor-video-portrait,.elementor-lightbox .elementor-video-container .elementor-video-square{position:relative;overflow:hidden;height:0;padding-bottom:calc(100% / var(--video-aspect-ratio, 1.77777))}.elementor-lightbox .elementor-video-container .elementor-video-landscape iframe,.elementor-lightbox .elementor-video-container .elementor-video-landscape video,.elementor-lightbox .elementor-video-container .elementor-video-portrait iframe,.elementor-lightbox .elementor-video-container .elementor-video-portrait video,.elementor-lightbox .elementor-video-container .elementor-video-square iframe,.elementor-lightbox .elementor-video-container .elementor-video-square video{position:absolute;top:0;right:0;bottom:0;left:0}}.elementor-lightbox .elementor-video-container .elementor-video-square iframe,.elementor-lightbox .elementor-video-container .elementor-video-square video{width:min(90vh,90vw);height:min(90vh,90vw)}.elementor-lightbox .elementor-video-container .elementor-video-landscape iframe,.elementor-lightbox .elementor-video-container .elementor-video-landscape video{width:100%;max-height:90vh}.elementor-lightbox .elementor-video-container .elementor-video-portrait iframe,.elementor-lightbox .elementor-video-container .elementor-video-portrait video{height:100%;max-width:90vw}@media (min-width:ELEMENTOR_SCREEN_TABLET_NEXT){.elementor-lightbox .elementor-video-container .elementor-video-landscape{width:85vw;max-height:85vh}.elementor-lightbox .elementor-video-container .elementor-video-portrait{height:85vh;max-width:85vw}}@media (max-width:ELEMENTOR_SCREEN_TABLET_MAX){.elementor-lightbox .elementor-video-container .elementor-video-landscape{width:95vw;max-height:95vh}.elementor-lightbox .elementor-video-container .elementor-video-portrait{height:95vh;max-width:95vw}}.elementor-lightbox .swiper-container .elementor-swiper-button-prev,.elementor-lightbox .swiper .elementor-swiper-button-prev{left:0}.elementor-lightbox .swiper-container .elementor-swiper-button-next,.elementor-lightbox .swiper .elementor-swiper-button-next{right:0}.elementor-lightbox .swiper-container .swiper-pagination-fraction,.elementor-lightbox .swiper .swiper-pagination-fraction{width:-moz-max-content;width:max-content;color:#fff}.elementor-lightbox .elementor-swiper-button:focus{outline-width:1px}.elementor-lightbox .elementor-swiper-button-next,.elementor-lightbox .elementor-swiper-button-prev{height:100%;display:flex;align-items:center;width:15%;justify-content:center;font-size:var(--lightbox-navigation-icons-size)}@media (max-width:ELEMENTOR_SCREEN_MOBILE_MAX){.elementor-lightbox .elementor-swiper-button:focus{outline:none}.elementor-lightbox .elementor-swiper-button-next,.elementor-lightbox .elementor-swiper-button-prev{width:20%}.elementor-lightbox .elementor-swiper-button-next i,.elementor-lightbox .elementor-swiper-button-prev i{padding:10px;background-color:rgba(0,0,0,.5)}.elementor-lightbox .elementor-swiper-button-prev{left:0;justify-content:flex-start}.elementor-lightbox .elementor-swiper-button-next{right:0;justify-content:flex-end}}.elementor-slideshow__counter{color:currentColor;font-size:.75em;width:-moz-max-content;width:max-content}.elementor-slideshow__footer,.elementor-slideshow__header{position:absolute;left:0;width:100%;padding:15px 20px;transition:.3s}.elementor-slideshow__footer{color:var(--lightbox-text-color)}.elementor-slideshow__header{color:var(--lightbox-ui-color);display:flex;flex-direction:row-reverse;font-size:var(--lightbox-header-icons-size);padding-right:1em;padding-left:2.6em;top:0;align-items:center;z-index:10}.elementor-slideshow__header>i,.elementor-slideshow__header>svg{cursor:pointer;padding:.25em;margin:0 .35em}.elementor-slideshow__header>i{font-size:inherit}.elementor-slideshow__header>i:hover{color:var(--lightbox-ui-color-hover)}.elementor-slideshow__header>svg{box-sizing:content-box;fill:var(--lightbox-ui-color);height:1em;width:1em}.elementor-slideshow__header>svg:hover{fill:var(--lightbox-ui-color-hover)}.elementor-slideshow__header .elementor-slideshow__counter{margin-left:auto}.elementor-slideshow__header .elementor-icon-share{z-index:5}.elementor-slideshow__share-menu{background-color:transparent;width:0;height:0;position:absolute;overflow:hidden;transition:background-color .4s}.elementor-slideshow__share-menu .elementor-slideshow__share-links a{color:#0c0d0e}.elementor-slideshow__share-links{display:block;position:absolute;min-width:200px;left:2.8em;top:3em;background-color:#fff;border-radius:3px;padding:14px 20px;transform:scale(0);opacity:0;transform-origin:90% 10%;transition:all .25s .1s;box-shadow:0 4px 15px rgba(0,0,0,.3)}.elementor-slideshow__share-links a{text-align:right;color:#3f444b;font-size:12px;line-height:2.5;display:block;opacity:0;transition:opacity .5s .1s}.elementor-slideshow__share-links a:hover{color:#000}.elementor-slideshow__share-links a i,.elementor-slideshow__share-links a svg{margin-left:.75em}.elementor-slideshow__share-links a i{font-size:1.25em}.elementor-slideshow__share-links a svg{height:1.25em;width:1.25em}.elementor-slideshow__share-links:before{content:"";display:block;position:absolute;top:1px;left:.5em;border:.45em solid transparent;border-bottom-color:#fff;transform:translateY(-100%) scaleX(.7)}.elementor-slideshow__footer{bottom:0;z-index:5;position:fixed}.elementor-slideshow__description,.elementor-slideshow__title{margin:0}.elementor-slideshow__title{font-size:16px;font-weight:700}.elementor-slideshow__description{font-size:14px}.elementor-slideshow--ui-hidden .elementor-slideshow__footer,.elementor-slideshow--ui-hidden .elementor-slideshow__header{opacity:0;pointer-events:none}.elementor-slideshow--ui-hidden .elementor-swiper-button-next,.elementor-slideshow--ui-hidden .elementor-swiper-button-prev{opacity:0}.elementor-slideshow--fullscreen-mode .elementor-video-container{width:100%}.elementor-slideshow--zoom-mode .elementor-slideshow__footer,.elementor-slideshow--zoom-mode .elementor-slideshow__header{background-color:rgba(0,0,0,.5)}.elementor-slideshow--zoom-mode .elementor-swiper-button-next,.elementor-slideshow--zoom-mode .elementor-swiper-button-prev{opacity:0;pointer-events:none}.elementor-slideshow--share-mode .elementor-slideshow__share-menu{top:0;left:0;width:100vw;height:100vh;opacity:1;cursor:default;background-color:rgba(0,0,0,.5)}.elementor-slideshow--share-mode .elementor-slideshow__share-links{transform:scale(1)}.elementor-slideshow--share-mode .elementor-slideshow__share-links,.elementor-slideshow--share-mode .elementor-slideshow__share-links a{opacity:1}.elementor-slideshow--share-mode .elementor-slideshow__share-links .eicon-twitter{color:#1da1f2}.elementor-slideshow--share-mode .elementor-slideshow__share-links .eicon-facebook{color:#3b5998}.elementor-slideshow--share-mode .elementor-slideshow__share-links .eicon-pinterest{color:#bd081c}.elementor-slideshow--share-mode .elementor-slideshow__share-links .eicon-download-bold{color:#9da5ae}.elementor-slideshow--share-mode .elementor-slideshow__share-links .e-eicon-twitter{fill:#1da1f2}.elementor-slideshow--share-mode .elementor-slideshow__share-links .e-eicon-facebook{fill:#3b5998}.elementor-slideshow--share-mode .elementor-slideshow__share-links .e-eicon-pinterest{fill:#bd081c}.elementor-slideshow--share-mode .elementor-slideshow__share-links .e-eicon-download-bold{fill:#9da5ae}.elementor-slideshow--share-mode .eicon-share-arrow{z-index:2}.animated{animation-duration:1.25s}.animated.animated-slow{animation-duration:2s}.animated.animated-fast{animation-duration:.75s}.animated.infinite{animation-iteration-count:infinite}.animated.reverse{animation-direction:reverse;animation-fill-mode:forwards}@media (prefers-reduced-motion:reduce){.animated{animation:none}}.elementor-shape{overflow:hidden;position:absolute;left:0;width:100%;line-height:0;direction:ltr}.elementor-shape-top{top:-1px}.elementor-shape-top:not([data-negative=false]) svg{z-index:-1}.elementor-shape-bottom{bottom:-1px}.elementor-shape-bottom:not([data-negative=true]) svg{z-index:-1}.elementor-shape[data-negative=false].elementor-shape-bottom,.elementor-shape[data-negative=true].elementor-shape-top{transform:rotate(180deg)}.elementor-shape svg{display:block;width:calc(100% + 1.3px);position:relative;left:50%;transform:translateX(-50%)}.elementor-shape .elementor-shape-fill{fill:#fff;transform-origin:center;transform:rotateY(0deg)}#wp-admin-bar-elementor_edit_page>.ab-item:before{content:"\e813";font-family:eicons;top:3px;font-size:18px}#wp-admin-bar-elementor_edit_page .ab-submenu .ab-item{display:flex;width:200px}#wp-admin-bar-elementor_edit_page .elementor-edit-link-title{white-space:nowrap;text-overflow:ellipsis;overflow:hidden;width:100%}#wp-admin-bar-elementor_edit_page .elementor-edit-link-type{background:#3f444b;font-size:11px;line-height:9px;margin-top:6px;padding:4px 8px;border-radius:3px}#wp-admin-bar-elementor_inspector>.ab-item:before{content:"\f348";top:2px}#wpadminbar *{font-style:normal}.page-template-elementor_canvas.elementor-page:before{display:none}.elementor-post__thumbnail__link{transition:none}#left-area ul.elementor-icon-list-items,.elementor-edit-area .elementor-element ul.elementor-icon-list-items,.elementor .elementor-element ul.elementor-icon-list-items{padding:0}.e--ua-appleWebkit.rtl{--flex-right:flex-start}.e--ua-appleWebkit .elementor-share-buttons--align-right,.e--ua-appleWebkit .elementor-widget-social-icons.e-grid-align-right{--justify-content:var(--flex-right,flex-end)}.e--ua-appleWebkit .elementor-share-buttons--align-center,.e--ua-appleWebkit .elementor-widget-social-icons.e-grid-align-center{--justify-content:center}.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-center .elementor-grid,.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-justify .elementor-grid,.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-right .elementor-grid,.e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-center .elementor-grid,.e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-right .elementor-grid{width:auto;display:flex;flex-wrap:wrap;justify-content:var(--justify-content,space-between);margin-left:calc(-.5 * var(--grid-column-gap));margin-right:calc(-.5 * var(--grid-column-gap))}.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-center .elementor-grid-item,.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-justify .elementor-grid-item,.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-right .elementor-grid-item,.e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-center .elementor-grid-item,.e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-right .elementor-grid-item{margin-left:calc(.5 * var(--grid-column-gap));margin-right:calc(.5 * var(--grid-column-gap))}.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-left .elementor-grid,.e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-left .elementor-grid{display:inline-block}.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-left .elementor-grid,.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-left .elementor-grid-item,.e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-left .elementor-grid,.e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-left .elementor-grid-item{margin-left:0;margin-right:0}@media (max-width:ELEMENTOR_SCREEN_TABLET_MAX){.e--ua-appleWebkit .elementor-share-buttons-tablet--align-right,.e--ua-appleWebkit .elementor-widget-social-icons.e-grid-align-tablet-right{--justify-content:var(--flex-right,flex-end)}.e--ua-appleWebkit .elementor-share-buttons-tablet--align-center,.e--ua-appleWebkit .elementor-widget-social-icons.e-grid-align-tablet-center{--justify-content:center}.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-tablet-center .elementor-grid,.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-tablet-justify .elementor-grid,.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-tablet-right .elementor-grid,.e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-tablet-center .elementor-grid,.e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-tablet-right .elementor-grid{width:auto;display:flex;flex-wrap:wrap;justify-content:var(--justify-content,space-between);margin-left:calc(-.5 * var(--grid-column-gap));margin-right:calc(-.5 * var(--grid-column-gap))}.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-tablet-center .elementor-grid-item,.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-tablet-justify .elementor-grid-item,.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-tablet-right .elementor-grid-item,.e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-tablet-center .elementor-grid-item,.e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-tablet-right .elementor-grid-item{margin-left:calc(.5 * var(--grid-column-gap));margin-right:calc(.5 * var(--grid-column-gap))}.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons-tablet--align-left .elementor-grid,.e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-tablet-left .elementor-grid{display:inline-block}.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons-tablet--align-left .elementor-grid,.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons-tablet--align-left .elementor-grid-item,.e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-tablet-left .elementor-grid,.e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-tablet-left .elementor-grid-item{margin-left:0;margin-right:0}}@media (max-width:ELEMENTOR_SCREEN_MOBILE_MAX){.e--ua-appleWebkit .elementor-share-buttons-mobile--align-right,.e--ua-appleWebkit .elementor-widget-social-icons.e-grid-align-mobile-right{--justify-content:var(--flex-right,flex-end)}.e--ua-appleWebkit .elementor-share-buttons-mobile--align-center,.e--ua-appleWebkit .elementor-widget-social-icons.e-grid-align-mobile-center{--justify-content:center}.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-mobile-center .elementor-grid,.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-mobile-justify .elementor-grid,.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-mobile-right .elementor-grid,.e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-mobile-center .elementor-grid,.e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-mobile-right .elementor-grid{width:auto;display:flex;flex-wrap:wrap;justify-content:var(--justify-content,space-between);margin-left:calc(-.5 * var(--grid-column-gap));margin-right:calc(-.5 * var(--grid-column-gap))}.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-mobile-center .elementor-grid-item,.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-mobile-justify .elementor-grid-item,.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-mobile-right .elementor-grid-item,.e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-mobile-center .elementor-grid-item,.e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-mobile-right .elementor-grid-item{margin-left:calc(.5 * var(--grid-column-gap));margin-right:calc(.5 * var(--grid-column-gap))}.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons-mobile--align-left .elementor-grid,.e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-mobile-left .elementor-grid{display:inline-block}.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons-mobile--align-left .elementor-grid,.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons-mobile--align-left .elementor-grid-item,.e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-mobile-left .elementor-grid,.e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-mobile-left .elementor-grid-item{margin-left:0;margin-right:0}}@media (max-width:ELEMENTOR_SCREEN_MOBILE_MAX){.elementor .elementor-hidden-mobile,.elementor .elementor-hidden-phone{display:none}}@media (min-width:ELEMENTOR_SCREEN_MOBILE_EXTRA_MIN) and (max-width:ELEMENTOR_SCREEN_MOBILE_EXTRA_MAX){.elementor .elementor-hidden-mobile_extra{display:none}}@media (min-width:ELEMENTOR_SCREEN_TABLET_MIN) and (max-width:ELEMENTOR_SCREEN_TABLET_MAX){.elementor .elementor-hidden-tablet{display:none}}@media (min-width:ELEMENTOR_SCREEN_TABLET_EXTRA_MIN) and (max-width:ELEMENTOR_SCREEN_TABLET_EXTRA_MAX){.elementor .elementor-hidden-tablet_extra{display:none}}@media (min-width:ELEMENTOR_SCREEN_LAPTOP_MIN) and (max-width:ELEMENTOR_SCREEN_LAPTOP_MAX){.elementor .elementor-hidden-laptop{display:none}}@media (min-width:ELEMENTOR_SCREEN_DESKTOP_MIN) and (max-width:ELEMENTOR_SCREEN_DESKTOP_MAX){.elementor .elementor-hidden-desktop{display:none}}@media (min-width:ELEMENTOR_SCREEN_WIDESCREEN_MIN){.elementor .elementor-hidden-widescreen{display:none}}.elementor-widget-text-path{font-size:20px;text-align:var(--alignment,right)}.elementor-widget-text-path svg{width:var(--width);max-width:100%;height:auto;overflow:visible;word-spacing:var(--word-spacing);transform:rotate(var(--rotate,0)) scaleX(var(--scale-x,1)) scaleY(var(--scale-y,1))}.elementor-widget-text-path svg path{vector-effect:non-scaling-stroke;fill:var(--path-fill,transparent);stroke:var(--stroke-color,transparent);stroke-width:var(--stroke-width,1px);transition:var(--stroke-transition) stroke,var(--stroke-transition) fill}.elementor-widget-text-path svg:hover path{--path-fill:var(--path-fill-hover);--stroke-color:var(--stroke-color-hover);--stroke-width:var(--stroke-width-hover)}.elementor-widget-text-path svg text{--fill:var(--text-color);fill:var(--fill);direction:var(--direction,rtl);transition:var(--transition) stroke,var(--transition) stroke-width,var(--transition) fill}.elementor-widget-text-path svg text:hover{--color:var(--text-color-hover,var(--text-color));--fill:var(--color);color:var(--color)}.elementor-widget-n-tabs{--n-tabs-color-accent-fallback:#61ce70;--n-tabs-color-secondary-fallback:#54595f;--n-tabs-default-padding-block:15px;--n-tabs-default-padding-inline:35px;--n-tabs-background-color:transparent;--n-tabs-display:flex;--n-tabs-direction:column;--n-tabs-gap:10px;--n-tabs-heading-display:flex;--n-tabs-heading-direction:row;--n-tabs-heading-grow:initial;--n-tabs-heading-justify-content:center;--n-tabs-heading-width:initial;--n-tabs-heading-overflow-x:initial;--n-tabs-heading-wrap:nowrap;--n-tabs-border-width:1px;--n-tabs-border-color:#d5d8dc;--n-tabs-content-display:flex;--n-tabs-title-color:var(--e-global-color-secondary,var(--n-tabs-color-secondary-fallback));--n-tabs-title-color-hover:#fff;--n-tabs-title-color-active:#fff;--n-tabs-title-background-color:#f1f2f3;--n-tabs-title-background-color-hover:var(--e-global-color-accent,var(--n-tabs-color-accent-fallback));--n-tabs-title-background-color-active:var(--e-global-color-accent,var(--n-tabs-color-accent-fallback));--n-tabs-title-width:initial;--n-tabs-title-height:initial;--n-tabs-title-font-size:1rem;--n-tabs-title-white-space:initial;--n-tabs-title-justify-content-toggle:initial;--n-tabs-title-align-items-toggle:center;--n-tabs-title-justify-content:center;--n-tabs-title-align-items:center;--n-tabs-title-text-align:center;--n-tabs-title-direction:row;--n-tabs-title-gap:10px;--n-tabs-title-flex-grow:0;--n-tabs-title-flex-basis:content;--n-tabs-title-flex-shrink:initial;--n-tabs-title-order:initial;--n-tabs-title-padding-block-start:var(--n-tabs-default-padding-block);--n-tabs-title-padding-inline-end:var(--n-tabs-default-padding-inline);--n-tabs-title-padding-block-end:var(--n-tabs-default-padding-block);--n-tabs-title-padding-inline-start:var(--n-tabs-default-padding-inline);--n-tabs-title-border-radius:initial;--n-tabs-title-transition:0.3s;--n-tabs-icon-color:var(--e-global-color-secondary,var(--n-tabs-color-secondary-fallback));--n-tabs-icon-color-hover:var(--n-tabs-title-color-hover);--n-tabs-icon-color-active:#fff;--n-tabs-icon-gap:5px;width:100%;max-width:100%}.elementor-widget-n-tabs .e-n-tabs{display:var(--n-tabs-display);flex-direction:var(--n-tabs-direction);gap:var(--n-tabs-gap);text-align:start;min-width:0}.elementor-widget-n-tabs .e-n-tabs-heading{display:var(--n-tabs-heading-display);flex-basis:var(--n-tabs-heading-width);flex-direction:var(--n-tabs-heading-direction);flex-shrink:0;justify-content:var(--n-tabs-heading-justify-content);gap:var(--n-tabs-title-gap);overflow-x:var(--n-tabs-heading-overflow-x);flex-wrap:var(--n-tabs-heading-wrap);-ms-overflow-style:none;scrollbar-width:none}.elementor-widget-n-tabs .e-n-tabs-heading::-webkit-scrollbar{display:none}.elementor-widget-n-tabs .e-n-tabs-heading.e-scroll{cursor:grabbing;cursor:-webkit-grabbing}.elementor-widget-n-tabs .e-n-tabs-heading.e-scroll-active{position:relative}.elementor-widget-n-tabs .e-n-tabs-heading.e-scroll-active:before{content:"";position:absolute;inset-block:0;inset-inline:-1000vw;z-index:2}.elementor-widget-n-tabs .e-n-tabs-content{display:var(--n-tabs-content-display);flex-grow:1;min-width:0}.elementor-widget-n-tabs .e-n-tabs-content>.e-con:not(.e-active){display:none}.elementor-widget-n-tabs .e-n-tabs:not(.e-activated)>.e-n-tabs-content>.e-con:first-child{display:flex}.elementor-widget-n-tabs .e-n-tab-title{all:unset;-webkit-user-select:none;-moz-user-select:none;user-select:none;display:flex;align-items:var(--n-tabs-title-align-items-toggle,var(--n-tabs-title-align-items));flex-direction:var(--n-tabs-title-direction);justify-content:var(--n-tabs-title-justify-content-toggle,var(--n-tabs-title-justify-content));gap:var(--n-tabs-icon-gap);border-width:var(--n-tabs-border-width);position:relative;cursor:pointer;outline:none;flex-grow:var(--n-tabs-title-flex-grow);flex-basis:var(--n-tabs-title-flex-basis);flex-shrink:var(--n-tabs-title-flex-shrink);padding-block-start:var(--n-tabs-title-padding-block-start);padding-inline-end:var(--n-tabs-title-padding-inline-end);padding-block-end:var(--n-tabs-title-padding-block-end);padding-inline-start:var(--n-tabs-title-padding-inline-start);border-radius:var(--n-tabs-title-border-radius);height:var(--n-tabs-title-height);width:var(--n-tabs-title-width);white-space:var(--n-tabs-title-white-space);transition:background var(--n-tabs-title-transition),color var(--n-tabs-title-transition),border var(--n-tabs-title-transition),box-shadow var(--n-tabs-title-transition),text-shadow var(--n-tabs-title-transition),stroke var(--n-tabs-title-transition),stroke-width var(--n-tabs-title-transition),-webkit-text-stroke-width var(--n-tabs-title-transition),-webkit-text-stroke-color var(--n-tabs-title-transition),transform var(--n-tabs-title-transition)}.elementor-widget-n-tabs .e-n-tab-title:focus-visible{outline:5px auto -webkit-focus-ring-color}.elementor-widget-n-tabs .e-n-tab-title span i,.elementor-widget-n-tabs .e-n-tab-title span svg{transition:color var(--n-tabs-title-transition),fill var(--n-tabs-title-transition)}.elementor-widget-n-tabs .e-n-tab-title-text{display:flex;align-items:center;font-size:var(--n-tabs-title-font-size);text-align:var(--n-tabs-title-text-align)}.elementor-widget-n-tabs .e-n-tab-title .e-n-tab-icon{display:flex;align-items:center;flex-direction:column;flex-shrink:0;order:var(--n-tabs-icon-order);overflow:hidden}.elementor-widget-n-tabs .e-n-tab-title .e-n-tab-icon i{font-size:var(--n-tabs-icon-size,var(--n-tabs-title-font-size))}.elementor-widget-n-tabs .e-n-tab-title .e-n-tab-icon svg{width:var(--n-tabs-icon-size,var(--n-tabs-title-font-size));height:var(--n-tabs-icon-size,var(--n-tabs-title-font-size))}.elementor-widget-n-tabs .e-n-tab-title .e-n-tab-icon:empty{display:none}.elementor-widget-n-tabs .e-n-tab-title[aria-selected=false]{background-color:var(--n-tabs-title-background-color)}.elementor-widget-n-tabs .e-n-tab-title[aria-selected=false],.elementor-widget-n-tabs .e-n-tab-title[aria-selected=false] a{color:var(--n-tabs-title-color)}.elementor-widget-n-tabs .e-n-tab-title[aria-selected=false] .e-n-tab-icon i{color:var(--n-tabs-icon-color)}.elementor-widget-n-tabs .e-n-tab-title[aria-selected=false] .e-n-tab-icon svg{fill:var(--n-tabs-icon-color)}.elementor-widget-n-tabs .e-n-tab-title[aria-selected=false] .e-n-tab-icon i:last-child,.elementor-widget-n-tabs .e-n-tab-title[aria-selected=false] .e-n-tab-icon svg:last-child{transform:translateY(-100vh);height:0;opacity:0}.elementor-widget-n-tabs .e-n-tab-title[aria-selected=true],.elementor-widget-n-tabs .e-n-tab-title[aria-selected=true] a{color:var(--n-tabs-title-color-active)}.elementor-widget-n-tabs .e-n-tab-title[aria-selected=true] .e-n-tab-icon i{color:var(--n-tabs-icon-color-active)}.elementor-widget-n-tabs .e-n-tab-title[aria-selected=true] .e-n-tab-icon svg{fill:var(--n-tabs-icon-color-active)}.elementor-widget-n-tabs .e-n-tab-title[aria-selected=true] .e-n-tab-icon i:first-child,.elementor-widget-n-tabs .e-n-tab-title[aria-selected=true] .e-n-tab-icon svg:first-child{transform:translateY(-100vh);height:0;opacity:0}.elementor-widget-n-tabs .e-n-tab-title[aria-selected=true][class*=elementor-animation-]:active,.elementor-widget-n-tabs .e-n-tab-title[aria-selected=true][class*=elementor-animation-]:focus,.elementor-widget-n-tabs .e-n-tab-title[aria-selected=true][class*=elementor-animation-]:hover{transform:none;animation:initial}.elementor-widget-n-tabs [data-touch-mode=false] .e-n-tab-title[aria-selected=false]:hover,.elementor-widget-n-tabs [data-touch-mode=false] .e-n-tab-title[aria-selected=false]:hover a{color:var(--n-tabs-title-color-hover)}.elementor-widget-n-tabs [data-touch-mode=false] .e-n-tab-title[aria-selected=false]:hover .e-n-tab-icon i{color:var(--n-tabs-icon-color-hover)}.elementor-widget-n-tabs [data-touch-mode=false] .e-n-tab-title[aria-selected=false]:hover .e-n-tab-icon svg{fill:var(--n-tabs-icon-color-hover)}.elementor-widget-n-tabs [data-touch-mode=true] .e-n-tab-title[aria-selected=false]:hover,.elementor-widget-n-tabs [data-touch-mode=true] .e-n-tab-title[aria-selected=false]:hover a{color:var(--n-tabs-title-color-active)}.elementor-widget-n-tabs [data-touch-mode=true] .e-n-tab-title[aria-selected=false]:hover .e-n-tab-icon i{color:var(--n-tabs-icon-color-active)}.elementor-widget-n-tabs [data-touch-mode=true] .e-n-tab-title[aria-selected=false]:hover .e-n-tab-icon svg{fill:var(--n-tabs-icon-color-active)}.elementor-widget-n-tabs [data-touch-mode=true] .e-n-tab-title[aria-selected=false]:hover .e-n-tab-icon i:first-child,.elementor-widget-n-tabs [data-touch-mode=true] .e-n-tab-title[aria-selected=false]:hover .e-n-tab-icon svg:first-child{transform:translateY(-100vh);height:0;opacity:0}.elementor-widget-n-tabs [data-touch-mode=true] .e-n-tab-title[aria-selected=false]:hover[class*=elementor-animation-]:active,.elementor-widget-n-tabs [data-touch-mode=true] .e-n-tab-title[aria-selected=false]:hover[class*=elementor-animation-]:focus,.elementor-widget-n-tabs [data-touch-mode=true] .e-n-tab-title[aria-selected=false]:hover[class*=elementor-animation-]:hover{transform:none;animation:initial}.elementor-widget-n-tabs [data-touch-mode=true] .e-n-tab-title[aria-selected=false]:hover .e-n-tab-icon i:last-child,.elementor-widget-n-tabs [data-touch-mode=true] .e-n-tab-title[aria-selected=false]:hover .e-n-tab-icon svg:last-child{transform:none;height:auto;opacity:1}.elementor .elementor-element.elementor-widget-n-tabs>.elementor-widget-container>.e-n-tabs[data-touch-mode=false]>.e-n-tabs-heading .e-n-tab-title[aria-selected=false]:hover{background-color:var(--n-tabs-title-background-color-hover);background-image:none}.elementor .elementor-element.elementor-widget-n-tabs>.elementor-widget-container>.e-n-tabs>.e-n-tabs-heading .e-n-tab-title[aria-selected=true],.elementor .elementor-element.elementor-widget-n-tabs>.elementor-widget-container>.e-n-tabs[data-touch-mode=true]>.e-n-tabs-heading .e-n-tab-title[aria-selected=false]:hover{background-color:var(--n-tabs-title-background-color-active);background-image:none}@media (max-width:ELEMENTOR_SCREEN_MOBILE_MAX){.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-mobile{--n-tabs-direction:column;--n-tabs-heading-display:contents;--n-tabs-content-display:contents}.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-mobile .e-n-tabs{gap:0}.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-mobile .e-n-tabs-content>.e-con{order:var(--n-tabs-title-order)}.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-mobile .e-n-tab-title{order:var(--n-tabs-title-order);width:auto}.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-mobile .e-n-tab-title:not(:first-child){margin-block-start:var(--n-tabs-title-gap)}.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-mobile .e-n-tab-title[aria-selected=true]{margin-block-end:var(--n-tabs-gap)}}@media (max-width:ELEMENTOR_SCREEN_MOBILE_EXTRA_MAX){.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-mobile_extra{--n-tabs-direction:column;--n-tabs-heading-display:contents;--n-tabs-content-display:contents}.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-mobile_extra .e-n-tabs{gap:0}.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-mobile_extra .e-n-tabs-content>.e-con{order:var(--n-tabs-title-order)}.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-mobile_extra .e-n-tab-title{order:var(--n-tabs-title-order);width:auto}.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-mobile_extra .e-n-tab-title:not(:first-child){margin-block-start:var(--n-tabs-title-gap)}.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-mobile_extra .e-n-tab-title[aria-selected=true]{margin-block-end:var(--n-tabs-gap)}}@media (max-width:ELEMENTOR_SCREEN_TABLET_MAX){.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-tablet{--n-tabs-direction:column;--n-tabs-heading-display:contents;--n-tabs-content-display:contents}.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-tablet .e-n-tabs{gap:0}.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-tablet .e-n-tabs-content>.e-con{order:var(--n-tabs-title-order)}.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-tablet .e-n-tab-title{order:var(--n-tabs-title-order);width:auto}.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-tablet .e-n-tab-title:not(:first-child){margin-block-start:var(--n-tabs-title-gap)}.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-tablet .e-n-tab-title[aria-selected=true]{margin-block-end:var(--n-tabs-gap)}}@media (max-width:ELEMENTOR_SCREEN_TABLET_EXTRA_MAX){.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-tablet_extra{--n-tabs-direction:column;--n-tabs-heading-display:contents;--n-tabs-content-display:contents}.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-tablet_extra .e-n-tabs{gap:0}.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-tablet_extra .e-n-tabs-content>.e-con{order:var(--n-tabs-title-order)}.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-tablet_extra .e-n-tab-title{order:var(--n-tabs-title-order);width:auto}.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-tablet_extra .e-n-tab-title:not(:first-child){margin-block-start:var(--n-tabs-title-gap)}.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-tablet_extra .e-n-tab-title[aria-selected=true]{margin-block-end:var(--n-tabs-gap)}}@media (max-width:ELEMENTOR_SCREEN_LAPTOP_MAX){.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-laptop{--n-tabs-direction:column;--n-tabs-heading-display:contents;--n-tabs-content-display:contents}.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-laptop .e-n-tabs{gap:0}.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-laptop .e-n-tabs-content>.e-con{order:var(--n-tabs-title-order)}.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-laptop .e-n-tab-title{order:var(--n-tabs-title-order);width:auto}.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-laptop .e-n-tab-title:not(:first-child){margin-block-start:var(--n-tabs-title-gap)}.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-laptop .e-n-tab-title[aria-selected=true]{margin-block-end:var(--n-tabs-gap)}}.elementor-widget-n-accordion{--n-accordion-title-font-size:20px;--n-accordion-title-flex-grow:initial;--n-accordion-title-justify-content:initial;--n-accordion-title-icon-order:-1;--n-accordion-border-width:1px;--n-accordion-border-color:#d5d8dc;--n-accordion-border-style:solid;--n-accordion-item-title-flex-grow:initial;--n-accordion-item-title-space-between:0px;--n-accordion-item-title-distance-from-content:0px;--n-accordion-padding:10px;--n-accordion-border-radius:0px;--n-accordion-icon-size:15px;--n-accordion-title-normal-color:#1f2124;--n-accordion-title-hover-color:#1f2124;--n-accordion-title-active-color:#1f2124;--n-accordion-icon-normal-color:var(--n-accordion-title-normal-color);--n-accordion-icon-hover-color:var(--n-accordion-title-hover-color);--n-accordion-icon-active-color:var(--n-accordion-title-active-color);--n-accordion-icon-gap:0 10px;width:100%}.elementor-widget-n-accordion .e-n-accordion details>summary::-webkit-details-marker{display:none}.elementor-widget-n-accordion .e-n-accordion-item{display:flex;flex-direction:column;position:relative}.elementor-widget-n-accordion .e-n-accordion-item:not(:last-child){margin-block-end:var(--n-accordion-item-title-space-between)}.elementor-widget-n-accordion .e-n-accordion-item-title,:where(.elementor-widget-n-accordion .e-n-accordion-item>.e-con){border:var(--n-accordion-border-width) var(--n-accordion-border-style) var(--n-accordion-border-color)}.elementor-widget-n-accordion .e-n-accordion-item-title{display:flex;flex-direction:row;list-style:none;padding:var(--n-accordion-padding);justify-content:var(--n-accordion-title-justify-content);border-radius:var(--n-accordion-border-radius);flex-grow:var(--n-menu-title-flex-grow);gap:var(--n-accordion-icon-gap);color:var(--n-accordion-title-normal-color);align-items:center;cursor:pointer}.elementor-widget-n-accordion .e-n-accordion-item-title-header{display:flex}.elementor-widget-n-accordion .e-n-accordion-item-title-header h1,.elementor-widget-n-accordion .e-n-accordion-item-title-header h2,.elementor-widget-n-accordion .e-n-accordion-item-title-header h3,.elementor-widget-n-accordion .e-n-accordion-item-title-header h4,.elementor-widget-n-accordion .e-n-accordion-item-title-header h5,.elementor-widget-n-accordion .e-n-accordion-item-title-header h6,.elementor-widget-n-accordion .e-n-accordion-item-title-header p{margin-block-start:0;margin-block-end:0}.elementor-widget-n-accordion .e-n-accordion-item-title-text{font-size:var(--n-accordion-title-font-size);align-items:center}.elementor-widget-n-accordion .e-n-accordion-item-title-icon{display:flex;flex-direction:row;align-items:center;order:var(--n-accordion-title-icon-order);position:relative;width:-moz-fit-content;width:fit-content}.elementor-widget-n-accordion .e-n-accordion-item-title-icon span{height:var(--n-accordion-icon-size);width:auto}.elementor-widget-n-accordion .e-n-accordion-item-title-icon span>i{color:var(--n-accordion-icon-normal-color);font-size:var(--n-accordion-icon-size)}.elementor-widget-n-accordion .e-n-accordion-item-title-icon span>svg{fill:var(--n-accordion-icon-normal-color);height:var(--n-accordion-icon-size)}.elementor-widget-n-accordion .e-n-accordion-item-title>span{cursor:pointer}.elementor-widget-n-accordion .e-n-accordion-item[open] .e-n-accordion-item-title{margin-block-end:var(--n-accordion-item-title-distance-from-content);color:var(--n-accordion-title-active-color)}.elementor-widget-n-accordion .e-n-accordion-item[open] .e-n-accordion-item-title-icon .e-opened{display:flex}.elementor-widget-n-accordion .e-n-accordion-item[open] .e-n-accordion-item-title-icon .e-closed{display:none}.elementor-widget-n-accordion .e-n-accordion-item[open] .e-n-accordion-item-title-icon span>i{color:var(--n-accordion-icon-active-color)}.elementor-widget-n-accordion .e-n-accordion-item[open] .e-n-accordion-item-title-icon span>svg{fill:var(--n-accordion-icon-active-color)}.elementor-widget-n-accordion .e-n-accordion-item:not([open]):hover .e-n-accordion-item-title{color:var(--n-accordion-title-hover-color)}.elementor-widget-n-accordion .e-n-accordion-item:not([open]):hover .e-n-accordion-item-title-icon span>i{color:var(--n-accordion-icon-hover-color)}.elementor-widget-n-accordion .e-n-accordion-item:not([open]):hover .e-n-accordion-item-title-icon span>svg{fill:var(--n-accordion-icon-hover-color)}.elementor-widget-n-accordion .e-n-accordion-item .e-n-accordion-item-title-icon .e-opened{display:none}.elementor-widget-n-accordion .e-n-accordion-item .e-n-accordion-item-title-icon .e-closed{display:flex}.elementor-widget-n-accordion .e-n-accordion-item .e-n-accordion-item-title-icon span>svg{fill:var(--n-accordion-icon-normal-color)}.elementor-widget-n-accordion .e-n-accordion-item .e-n-accordion-item-title-icon span>i{color:var(--n-accordion-icon-normal-color)}.elementor-widget-n-accordion .e-n-accordion-item>span{cursor:pointer} \ No newline at end of file diff --git a/wp-content/plugins/elementor/assets/css/templates/frontend-lite.css b/wp-content/plugins/elementor/assets/css/templates/frontend-lite.css new file mode 100644 index 0000000..218ad15 --- /dev/null +++ b/wp-content/plugins/elementor/assets/css/templates/frontend-lite.css @@ -0,0 +1,3790 @@ +.dialog-widget-content { + background-color: var(--e-a-bg-default); + position: absolute; + border-radius: 3px; + box-shadow: 2px 8px 23px 3px rgba(0, 0, 0, 0.2); + overflow: hidden; +} + +.dialog-message { + line-height: 1.5; + box-sizing: border-box; +} + +.dialog-close-button { + cursor: pointer; + position: absolute; + margin-block-start: 15px; + right: 15px; + color: var(--e-a-color-txt); + font-size: 15px; + line-height: 1; + transition: var(--e-a-transition-hover); +} +.dialog-close-button:hover { + color: var(--e-a-color-txt-hover); +} + +.dialog-prevent-scroll { + overflow: hidden; + max-height: 100vh; +} + +.dialog-type-lightbox { + position: fixed; + height: 100%; + width: 100%; + bottom: 0; + left: 0; + background-color: rgba(0, 0, 0, 0.8); + z-index: 9999; + user-select: none; +} + +.elementor-editor-active .elementor-popup-modal { + background-color: initial; +} + +.dialog-type-confirm .dialog-widget-content, +.dialog-type-alert .dialog-widget-content { + margin: auto; + width: 400px; + padding: 20px; +} +.dialog-type-confirm .dialog-header, +.dialog-type-alert .dialog-header { + font-size: 15px; + font-weight: 500; +} +.dialog-type-confirm .dialog-header:after, +.dialog-type-alert .dialog-header:after { + content: ""; + display: block; + border-block-end: var(--e-a-border); + padding-block-end: 10px; + margin-block-end: 10px; + margin-inline-start: -20px; + margin-inline-end: -20px; +} +.dialog-type-confirm .dialog-message, +.dialog-type-alert .dialog-message { + min-height: 50px; +} +.dialog-type-confirm .dialog-buttons-wrapper, +.dialog-type-alert .dialog-buttons-wrapper { + padding-block-start: 10px; + display: flex; + justify-content: flex-end; + gap: 15px; +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button { + font-size: 12px; + font-weight: 500; + line-height: 1.2; + padding: 8px 16px; + outline: none; + border: none; + border-radius: var(--e-a-border-radius); + background-color: var(--e-a-btn-bg); + color: var(--e-a-btn-color-invert); + transition: var(--e-a-transition-hover); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button:hover { + border: none; +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button:focus { + background-color: var(--e-a-btn-bg-hover); + color: var(--e-a-btn-color-invert); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:active, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button:active { + background-color: var(--e-a-btn-bg-active); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:not([disabled]), +.dialog-type-alert .dialog-buttons-wrapper .dialog-button:not([disabled]) { + cursor: pointer; +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:disabled, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button:disabled { + background-color: var(--e-a-btn-bg-disabled); + color: var(--e-a-btn-color-disabled); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:not(.elementor-button-state) .elementor-state-icon, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button:not(.elementor-button-state) .elementor-state-icon { + display: none; +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel { + background: transparent; + color: var(--e-a-color-txt); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel:focus { + background: var(--e-a-bg-hover); + color: var(--e-a-color-txt-hover); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt:disabled, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel:disabled, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt:disabled, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel:disabled { + background: transparent; + color: var(--e-a-color-txt-disabled); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt-border, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt-border { + border: 1px solid var(--e-a-color-txt-muted); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-success, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-success, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-success, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-success { + background-color: var(--e-a-btn-bg-success); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-success:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-success:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-success:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-success:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-success:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-success:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-success:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-success:focus { + background-color: var(--e-a-btn-bg-success-hover); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-take_over, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-take_over, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok { + background-color: var(--e-a-btn-bg-primary); + color: var(--e-a-btn-color); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-take_over:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-take_over:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-take_over:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-take_over:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok:focus { + background-color: var(--e-a-btn-bg-primary-hover); + color: var(--e-a-btn-color); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary.e-btn-txt, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-take_over, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary.dialog-cancel, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-ok, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary.e-btn-txt, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-take_over, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary.dialog-cancel, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-ok, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel { + background: transparent; + color: var(--e-a-color-primary-bold); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary.e-btn-txt:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-take_over:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary.dialog-cancel:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-ok:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary.e-btn-txt:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-take_over:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary.dialog-cancel:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-ok:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary.e-btn-txt:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-take_over:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary.dialog-cancel:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-ok:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary.e-btn-txt:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-take_over:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary.dialog-cancel:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-ok:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel:focus { + background: var(--e-a-bg-primary); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.go-pro, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-accent, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.go-pro, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-accent { + background-color: var(--e-a-btn-bg-accent); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.go-pro:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.go-pro:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-accent:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-accent:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.go-pro:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.go-pro:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-accent:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-accent:focus { + background-color: var(--e-a-btn-bg-accent-hover); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.go-pro:active, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-accent:active, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.go-pro:active, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-accent:active { + background-color: var(--e-a-btn-bg-accent-active); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-info, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-info, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-info, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-info { + background-color: var(--e-a-btn-bg-info); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-info:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-info:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-info:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-info:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-info:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-info:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-info:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-info:focus { + background-color: var(--e-a-btn-bg-info-hover); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-warning, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-warning, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-warning, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-warning { + background-color: var(--e-a-btn-bg-warning); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-warning:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-warning:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-warning:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-warning:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-warning:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-warning:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-warning:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-warning:focus { + background-color: var(--e-a-btn-bg-warning-hover); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-danger, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-danger, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-danger, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-danger { + background-color: var(--e-a-btn-bg-danger); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-danger:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-danger:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-danger:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-danger:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-danger:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-danger:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-danger:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-danger:focus { + background-color: var(--e-a-btn-bg-danger-hover); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button i, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button i { + margin-inline-end: 5px; +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button:visited, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button:visited { + color: initial; +} +.flatpickr-calendar { + width: 280px; +} +.flatpickr-calendar .flatpickr-current-month span.cur-month { + font-weight: 300; +} +.flatpickr-calendar .dayContainer { + width: 280px; + min-width: 280px; + max-width: 280px; +} +.flatpickr-calendar .flatpickr-days { + width: 280px; +} +.flatpickr-calendar .flatpickr-day { + max-width: 37px; + height: 37px; + line-height: 37px; +} + +.elementor-hidden { + display: none; +} + +.elementor-screen-only, +.screen-reader-text, +.screen-reader-text span, +.ui-helper-hidden-accessible { + position: absolute; + top: -10000em; + width: 1px; + height: 1px; + margin: -1px; + padding: 0; + overflow: hidden; + clip: rect(0, 0, 0, 0); + border: 0; +} + +.elementor-clearfix:after { + content: ""; + display: block; + clear: both; + width: 0; + height: 0; +} + +.e-logo-wrapper { + background: var(--e-a-bg-logo); + display: inline-block; + padding: 0.75em; + border-radius: 50%; + line-height: 1; +} +.e-logo-wrapper i { + color: var(--e-a-color-logo); + font-size: 1em; +} + +.elementor *, .elementor *:before, .elementor *:after { + box-sizing: border-box; +} +.elementor a { + box-shadow: none; + text-decoration: none; +} +.elementor hr { + margin: 0; + background-color: transparent; +} +.elementor img { + height: auto; + max-width: 100%; + border: none; + border-radius: 0; + box-shadow: none; +} +.elementor .elementor-widget:not(.elementor-widget-text-editor):not(.elementor-widget-theme-post-content) figure { + margin: 0; +} +.elementor embed, +.elementor iframe, +.elementor object, +.elementor video { + max-width: 100%; + width: 100%; + margin: 0; + line-height: 1; + border: none; +} +.elementor .elementor-background-video-container, +.elementor .elementor-background-holder, +.elementor .elementor-background { + height: 100%; + width: 100%; + top: 0; + left: 0; + position: absolute; + overflow: hidden; + z-index: 0; + direction: ltr; +} +.elementor .elementor-background-video-container { + transition: opacity 1s; + pointer-events: none; +} +.elementor .elementor-background-video-container.elementor-loading { + opacity: 0; +} +.elementor .elementor-background-video-embed { + max-width: none; +} +.elementor .elementor-background-video-embed, .elementor .elementor-background-video-hosted { + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); +} +.elementor .elementor-background-video { + max-width: none; + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); +} +.elementor .elementor-html5-video { + object-fit: cover; +} +.elementor .elementor-background-overlay { + height: 100%; + width: 100%; + top: 0; + left: 0; + position: absolute; +} +.elementor .elementor-background-slideshow { + position: absolute; + width: 100%; + height: 100%; + z-index: 0; + top: 0; + left: 0; +} +.elementor .elementor-background-slideshow__slide__image { + width: 100%; + height: 100%; + background-position: center center; + background-size: cover; +} + +.elementor-widget-wrap > .elementor-element.elementor-absolute, +.e-con > .elementor-element.elementor-absolute, +.e-con-inner > .elementor-element.elementor-absolute { + position: absolute; +} +.elementor-widget-wrap > .elementor-element.elementor-fixed, +.e-con > .elementor-element.elementor-fixed, +.e-con-inner > .elementor-element.elementor-fixed { + position: fixed; +} + +.elementor-widget-wrap .elementor-element.elementor-widget__width-auto, .elementor-widget-wrap .elementor-element.elementor-widget__width-initial { + max-width: 100%; +} +@media (max-width: ELEMENTOR_SCREEN_TABLET_MAX) { + .elementor-widget-wrap .elementor-element.elementor-widget-tablet__width-auto, .elementor-widget-wrap .elementor-element.elementor-widget-tablet__width-initial { + max-width: 100%; + } +} +@media (max-width: ELEMENTOR_SCREEN_MOBILE_MAX) { + .elementor-widget-wrap .elementor-element.elementor-widget-mobile__width-auto, .elementor-widget-wrap .elementor-element.elementor-widget-mobile__width-initial { + max-width: 100%; + } +} + +.elementor-element { + --flex-direction: initial; + --flex-wrap: initial; + --justify-content: initial; + --align-items: initial; + --align-content: initial; + --gap: initial; + --flex-basis: initial; + --flex-grow: initial; + --flex-shrink: initial; + --order: initial; + --align-self: initial; + flex-basis: var(--flex-basis); + flex-grow: var(--flex-grow); + flex-shrink: var(--flex-shrink); + order: var(--order); + align-self: var(--align-self); +} +.elementor-element.elementor-absolute, .elementor-element.elementor-fixed { + z-index: 1; +} +.elementor-element:where(.e-con-full, .elementor-widget) { + flex-direction: var(--flex-direction); + flex-wrap: var(--flex-wrap); + justify-content: var(--justify-content); + align-items: var(--align-items); + align-content: var(--align-content); + gap: var(--gap); +} + +.elementor-invisible { + visibility: hidden; +} + +.elementor-align-center { + text-align: center; +} +.elementor-align-center .elementor-button { + width: auto; +} +.elementor-align-right { + text-align: right; +} +.elementor-align-right .elementor-button { + width: auto; +} +.elementor-align-left { + text-align: left; +} +.elementor-align-left .elementor-button { + width: auto; +} +.elementor-align-justify .elementor-button { + width: 100%; +} + +.elementor-custom-embed-play { + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); +} +.elementor-custom-embed-play i { + font-size: 100px; + color: #fff; + text-shadow: 1px 0 6px rgba(0, 0, 0, 0.3); +} +.elementor-custom-embed-play svg { + height: 100px; + width: 100px; + fill: #fff; + filter: drop-shadow(1px 0 6px rgba(0, 0, 0, 0.3)); +} +.elementor-custom-embed-play i, +.elementor-custom-embed-play svg { + opacity: 0.8; + transition: all 0.5s; +} +.elementor-custom-embed-play.elementor-playing i { + font-family: eicons; +} +.elementor-custom-embed-play.elementor-playing i:before { + content: "\e8fb"; +} +.elementor-custom-embed-play.elementor-playing i, +.elementor-custom-embed-play.elementor-playing svg { + animation: eicon-spin 2s infinite linear; +} + +.elementor-tag { + display: inline-flex; +} + +.elementor-ken-burns { + transition-property: transform; + transition-duration: 10s; + transition-timing-function: linear; +} +.elementor-ken-burns--out { + transform: scale(1.3); +} +.elementor-ken-burns--active { + transition-duration: 20s; +} +.elementor-ken-burns--active.elementor-ken-burns--out { + transform: scale(1); +} +.elementor-ken-burns--active.elementor-ken-burns--in { + transform: scale(1.3); +} + +@media (min-width: ELEMENTOR_SCREEN_WIDESCREEN_MIN) { + .elementor-widescreen-align-center { + text-align: center; + } + .elementor-widescreen-align-center .elementor-button { + width: auto; + } + .elementor-widescreen-align-right { + text-align: right; + } + .elementor-widescreen-align-right .elementor-button { + width: auto; + } + .elementor-widescreen-align-left { + text-align: left; + } + .elementor-widescreen-align-left .elementor-button { + width: auto; + } + .elementor-widescreen-align-justify .elementor-button { + width: 100%; + } +} +@media (max-width: ELEMENTOR_SCREEN_LAPTOP_MAX) { + .elementor-laptop-align-center { + text-align: center; + } + .elementor-laptop-align-center .elementor-button { + width: auto; + } + .elementor-laptop-align-right { + text-align: right; + } + .elementor-laptop-align-right .elementor-button { + width: auto; + } + .elementor-laptop-align-left { + text-align: left; + } + .elementor-laptop-align-left .elementor-button { + width: auto; + } + .elementor-laptop-align-justify .elementor-button { + width: 100%; + } +} +@media (max-width: ELEMENTOR_SCREEN_TABLET_EXTRA_MAX) { + .elementor-tablet_extra-align-center { + text-align: center; + } + .elementor-tablet_extra-align-center .elementor-button { + width: auto; + } + .elementor-tablet_extra-align-right { + text-align: right; + } + .elementor-tablet_extra-align-right .elementor-button { + width: auto; + } + .elementor-tablet_extra-align-left { + text-align: left; + } + .elementor-tablet_extra-align-left .elementor-button { + width: auto; + } + .elementor-tablet_extra-align-justify .elementor-button { + width: 100%; + } +} +@media (max-width: ELEMENTOR_SCREEN_TABLET_MAX) { + .elementor-tablet-align-center { + text-align: center; + } + .elementor-tablet-align-center .elementor-button { + width: auto; + } + .elementor-tablet-align-right { + text-align: right; + } + .elementor-tablet-align-right .elementor-button { + width: auto; + } + .elementor-tablet-align-left { + text-align: left; + } + .elementor-tablet-align-left .elementor-button { + width: auto; + } + .elementor-tablet-align-justify .elementor-button { + width: 100%; + } +} +@media (max-width: ELEMENTOR_SCREEN_MOBILE_EXTRA_MAX) { + .elementor-mobile_extra-align-center { + text-align: center; + } + .elementor-mobile_extra-align-center .elementor-button { + width: auto; + } + .elementor-mobile_extra-align-right { + text-align: right; + } + .elementor-mobile_extra-align-right .elementor-button { + width: auto; + } + .elementor-mobile_extra-align-left { + text-align: left; + } + .elementor-mobile_extra-align-left .elementor-button { + width: auto; + } + .elementor-mobile_extra-align-justify .elementor-button { + width: 100%; + } +} +@media (max-width: ELEMENTOR_SCREEN_MOBILE_MAX) { + .elementor-mobile-align-center { + text-align: center; + } + .elementor-mobile-align-center .elementor-button { + width: auto; + } + .elementor-mobile-align-right { + text-align: right; + } + .elementor-mobile-align-right .elementor-button { + width: auto; + } + .elementor-mobile-align-left { + text-align: left; + } + .elementor-mobile-align-left .elementor-button { + width: auto; + } + .elementor-mobile-align-justify .elementor-button { + width: 100%; + } +} +:root { + --page-title-display: block; +} + +.elementor-page-title, h1.entry-title { + display: var(--page-title-display); +} + +@keyframes eicon-spin { + 0% { + transform: rotate(0deg); + } + 100% { + transform: rotate(359deg); + } +} +.eicon-animation-spin { + animation: eicon-spin 2s infinite linear; +} + +.elementor-section { + position: relative; +} +.elementor-section .elementor-container { + display: flex; + margin-right: auto; + margin-left: auto; + position: relative; +} +@media (max-width: ELEMENTOR_SCREEN_TABLET_MAX) { + .elementor-section .elementor-container { + flex-wrap: wrap; + } +} +.elementor-section.elementor-section-boxed > .elementor-container { + max-width: 1140px; +} +.elementor-section.elementor-section-stretched { + position: relative; + width: 100%; +} +.elementor-section.elementor-section-items-top > .elementor-container { + align-items: flex-start; +} +.elementor-section.elementor-section-items-middle > .elementor-container { + align-items: center; +} +.elementor-section.elementor-section-items-bottom > .elementor-container { + align-items: flex-end; +} +@media (min-width: ELEMENTOR_SCREEN_MOBILE_NEXT) { + .elementor-section.elementor-section-height-full { + height: 100vh; + } + .elementor-section.elementor-section-height-full > .elementor-container { + height: 100%; + } +} + +.elementor-bc-flex-widget .elementor-section-content-top > .elementor-container > .elementor-column > .elementor-widget-wrap { + align-items: flex-start; +} +.elementor-bc-flex-widget .elementor-section-content-middle > .elementor-container > .elementor-column > .elementor-widget-wrap { + align-items: center; +} +.elementor-bc-flex-widget .elementor-section-content-bottom > .elementor-container > .elementor-column > .elementor-widget-wrap { + align-items: flex-end; +} + +.elementor-row { + width: 100%; + display: flex; +} +@media (max-width: ELEMENTOR_SCREEN_TABLET_MAX) { + .elementor-row { + flex-wrap: wrap; + } +} + +.elementor-widget-wrap { + position: relative; + width: 100%; + flex-wrap: wrap; + align-content: flex-start; +} +.elementor:not(.elementor-bc-flex-widget) .elementor-widget-wrap { + display: flex; +} +.elementor-widget-wrap > .elementor-element { + width: 100%; +} +.elementor-widget-wrap.e-swiper-container { + width: calc(100% - (var(--e-column-margin-left, 0px) + var(--e-column-margin-right, 0px))); +} + +.elementor-widget { + position: relative; +} +.elementor-widget:not(:last-child) { + margin-bottom: 20px; +} +.elementor-widget:not(:last-child).elementor-widget__width-auto, .elementor-widget:not(:last-child).elementor-widget__width-initial, .elementor-widget:not(:last-child).elementor-absolute { + margin-bottom: 0; +} + +.elementor-column { + position: relative; + min-height: 1px; + display: flex; +} + +.elementor-column-wrap { + width: 100%; + position: relative; + display: flex; +} + +.elementor-column-gap-narrow > .elementor-column > .elementor-element-populated { + padding: 5px; +} +.elementor-column-gap-default > .elementor-column > .elementor-element-populated { + padding: 10px; +} +.elementor-column-gap-extended > .elementor-column > .elementor-element-populated { + padding: 15px; +} +.elementor-column-gap-wide > .elementor-column > .elementor-element-populated { + padding: 20px; +} +.elementor-column-gap-wider > .elementor-column > .elementor-element-populated { + padding: 30px; +} + +.elementor-inner-section .elementor-column-gap-no .elementor-element-populated { + padding: 0; +} + +@media (min-width: ELEMENTOR_SCREEN_MOBILE_NEXT) { + .elementor-column.elementor-col-10, .elementor-column[data-col="10"] { + width: 10%; + } + .elementor-column.elementor-col-11, .elementor-column[data-col="11"] { + width: 11.111%; + } + .elementor-column.elementor-col-12, .elementor-column[data-col="12"] { + width: 12.5%; + } + .elementor-column.elementor-col-14, .elementor-column[data-col="14"] { + width: 14.285%; + } + .elementor-column.elementor-col-16, .elementor-column[data-col="16"] { + width: 16.666%; + } + .elementor-column.elementor-col-20, .elementor-column[data-col="20"] { + width: 20%; + } + .elementor-column.elementor-col-25, .elementor-column[data-col="25"] { + width: 25%; + } + .elementor-column.elementor-col-30, .elementor-column[data-col="30"] { + width: 30%; + } + .elementor-column.elementor-col-33, .elementor-column[data-col="33"] { + width: 33.333%; + } + .elementor-column.elementor-col-40, .elementor-column[data-col="40"] { + width: 40%; + } + .elementor-column.elementor-col-50, .elementor-column[data-col="50"] { + width: 50%; + } + .elementor-column.elementor-col-60, .elementor-column[data-col="60"] { + width: 60%; + } + .elementor-column.elementor-col-66, .elementor-column[data-col="66"] { + width: 66.666%; + } + .elementor-column.elementor-col-70, .elementor-column[data-col="70"] { + width: 70%; + } + .elementor-column.elementor-col-75, .elementor-column[data-col="75"] { + width: 75%; + } + .elementor-column.elementor-col-80, .elementor-column[data-col="80"] { + width: 80%; + } + .elementor-column.elementor-col-83, .elementor-column[data-col="83"] { + width: 83.333%; + } + .elementor-column.elementor-col-90, .elementor-column[data-col="90"] { + width: 90%; + } + .elementor-column.elementor-col-100, .elementor-column[data-col="100"] { + width: 100%; + } +} +@media (max-width: 479px) { + .elementor-column.elementor-xs-10 { + width: 10%; + } + .elementor-column.elementor-xs-11 { + width: 11.111%; + } + .elementor-column.elementor-xs-12 { + width: 12.5%; + } + .elementor-column.elementor-xs-14 { + width: 14.285%; + } + .elementor-column.elementor-xs-16 { + width: 16.666%; + } + .elementor-column.elementor-xs-20 { + width: 20%; + } + .elementor-column.elementor-xs-25 { + width: 25%; + } + .elementor-column.elementor-xs-30 { + width: 30%; + } + .elementor-column.elementor-xs-33 { + width: 33.333%; + } + .elementor-column.elementor-xs-40 { + width: 40%; + } + .elementor-column.elementor-xs-50 { + width: 50%; + } + .elementor-column.elementor-xs-60 { + width: 60%; + } + .elementor-column.elementor-xs-66 { + width: 66.666%; + } + .elementor-column.elementor-xs-70 { + width: 70%; + } + .elementor-column.elementor-xs-75 { + width: 75%; + } + .elementor-column.elementor-xs-80 { + width: 80%; + } + .elementor-column.elementor-xs-83 { + width: 83.333%; + } + .elementor-column.elementor-xs-90 { + width: 90%; + } + .elementor-column.elementor-xs-100 { + width: 100%; + } +} +@media (max-width: ELEMENTOR_SCREEN_MOBILE_MAX) { + .elementor-column.elementor-sm-10 { + width: 10%; + } + .elementor-column.elementor-sm-11 { + width: 11.111%; + } + .elementor-column.elementor-sm-12 { + width: 12.5%; + } + .elementor-column.elementor-sm-14 { + width: 14.285%; + } + .elementor-column.elementor-sm-16 { + width: 16.666%; + } + .elementor-column.elementor-sm-20 { + width: 20%; + } + .elementor-column.elementor-sm-25 { + width: 25%; + } + .elementor-column.elementor-sm-30 { + width: 30%; + } + .elementor-column.elementor-sm-33 { + width: 33.333%; + } + .elementor-column.elementor-sm-40 { + width: 40%; + } + .elementor-column.elementor-sm-50 { + width: 50%; + } + .elementor-column.elementor-sm-60 { + width: 60%; + } + .elementor-column.elementor-sm-66 { + width: 66.666%; + } + .elementor-column.elementor-sm-70 { + width: 70%; + } + .elementor-column.elementor-sm-75 { + width: 75%; + } + .elementor-column.elementor-sm-80 { + width: 80%; + } + .elementor-column.elementor-sm-83 { + width: 83.333%; + } + .elementor-column.elementor-sm-90 { + width: 90%; + } + .elementor-column.elementor-sm-100 { + width: 100%; + } +} +@media (min-width: ELEMENTOR_SCREEN_MOBILE_NEXT) and (max-width: ELEMENTOR_SCREEN_TABLET_MAX) { + .elementor-column.elementor-md-10 { + width: 10%; + } + .elementor-column.elementor-md-11 { + width: 11.111%; + } + .elementor-column.elementor-md-12 { + width: 12.5%; + } + .elementor-column.elementor-md-14 { + width: 14.285%; + } + .elementor-column.elementor-md-16 { + width: 16.666%; + } + .elementor-column.elementor-md-20 { + width: 20%; + } + .elementor-column.elementor-md-25 { + width: 25%; + } + .elementor-column.elementor-md-30 { + width: 30%; + } + .elementor-column.elementor-md-33 { + width: 33.333%; + } + .elementor-column.elementor-md-40 { + width: 40%; + } + .elementor-column.elementor-md-50 { + width: 50%; + } + .elementor-column.elementor-md-60 { + width: 60%; + } + .elementor-column.elementor-md-66 { + width: 66.666%; + } + .elementor-column.elementor-md-70 { + width: 70%; + } + .elementor-column.elementor-md-75 { + width: 75%; + } + .elementor-column.elementor-md-80 { + width: 80%; + } + .elementor-column.elementor-md-83 { + width: 83.333%; + } + .elementor-column.elementor-md-90 { + width: 90%; + } + .elementor-column.elementor-md-100 { + width: 100%; + } +} + +@media (min-width: ELEMENTOR_SCREEN_WIDESCREEN_MIN) { + .elementor-reverse-widescreen > .elementor-container > :nth-child(1) { + order: 10; + } + .elementor-reverse-widescreen > .elementor-container > :nth-child(2) { + order: 9; + } + .elementor-reverse-widescreen > .elementor-container > :nth-child(3) { + order: 8; + } + .elementor-reverse-widescreen > .elementor-container > :nth-child(4) { + order: 7; + } + .elementor-reverse-widescreen > .elementor-container > :nth-child(5) { + order: 6; + } + .elementor-reverse-widescreen > .elementor-container > :nth-child(6) { + order: 5; + } + .elementor-reverse-widescreen > .elementor-container > :nth-child(7) { + order: 4; + } + .elementor-reverse-widescreen > .elementor-container > :nth-child(8) { + order: 3; + } + .elementor-reverse-widescreen > .elementor-container > :nth-child(9) { + order: 2; + } + .elementor-reverse-widescreen > .elementor-container > :nth-child(10) { + order: 1; + } +} +@media (min-width: ELEMENTOR_SCREEN_TABLET_NEXT) and (max-width: ELEMENTOR_SCREEN_LAPTOP_MAX) { + .elementor-reverse-laptop > .elementor-container > :nth-child(1) { + order: 10; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(2) { + order: 9; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(3) { + order: 8; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(4) { + order: 7; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(5) { + order: 6; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(6) { + order: 5; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(7) { + order: 4; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(8) { + order: 3; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(9) { + order: 2; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(10) { + order: 1; + } +} +@media (min-width: ELEMENTOR_SCREEN_TABLET_EXTRA_NEXT) and (max-width: ELEMENTOR_SCREEN_LAPTOP_MAX) { + .elementor-reverse-laptop > .elementor-container > :nth-child(1) { + order: 10; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(2) { + order: 9; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(3) { + order: 8; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(4) { + order: 7; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(5) { + order: 6; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(6) { + order: 5; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(7) { + order: 4; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(8) { + order: 3; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(9) { + order: 2; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(10) { + order: 1; + } +} +@media (min-width: ELEMENTOR_SCREEN_TABLET_NEXT) and (max-width: ELEMENTOR_SCREEN_TABLET_EXTRA_MAX) { + .elementor-reverse-laptop > .elementor-container > :nth-child(1) { + order: initial; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(2) { + order: initial; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(3) { + order: initial; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(4) { + order: initial; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(5) { + order: initial; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(6) { + order: initial; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(7) { + order: initial; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(8) { + order: initial; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(9) { + order: initial; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(10) { + order: initial; + } + .elementor-reverse-tablet_extra > .elementor-container > :nth-child(1) { + order: 10; + } + .elementor-reverse-tablet_extra > .elementor-container > :nth-child(2) { + order: 9; + } + .elementor-reverse-tablet_extra > .elementor-container > :nth-child(3) { + order: 8; + } + .elementor-reverse-tablet_extra > .elementor-container > :nth-child(4) { + order: 7; + } + .elementor-reverse-tablet_extra > .elementor-container > :nth-child(5) { + order: 6; + } + .elementor-reverse-tablet_extra > .elementor-container > :nth-child(6) { + order: 5; + } + .elementor-reverse-tablet_extra > .elementor-container > :nth-child(7) { + order: 4; + } + .elementor-reverse-tablet_extra > .elementor-container > :nth-child(8) { + order: 3; + } + .elementor-reverse-tablet_extra > .elementor-container > :nth-child(9) { + order: 2; + } + .elementor-reverse-tablet_extra > .elementor-container > :nth-child(10) { + order: 1; + } +} +@media (min-width: ELEMENTOR_SCREEN_MOBILE_NEXT) and (max-width: ELEMENTOR_SCREEN_TABLET_MAX) { + .elementor-reverse-tablet > .elementor-container > :nth-child(1) { + order: 10; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(2) { + order: 9; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(3) { + order: 8; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(4) { + order: 7; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(5) { + order: 6; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(6) { + order: 5; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(7) { + order: 4; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(8) { + order: 3; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(9) { + order: 2; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(10) { + order: 1; + } +} +@media (min-width: ELEMENTOR_SCREEN_MOBILE_EXTRA_NEXT) and (max-width: ELEMENTOR_SCREEN_TABLET_MAX) { + .elementor-reverse-tablet > .elementor-container > :nth-child(1) { + order: 10; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(2) { + order: 9; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(3) { + order: 8; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(4) { + order: 7; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(5) { + order: 6; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(6) { + order: 5; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(7) { + order: 4; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(8) { + order: 3; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(9) { + order: 2; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(10) { + order: 1; + } +} +@media (min-width: ELEMENTOR_SCREEN_MOBILE_NEXT) and (max-width: ELEMENTOR_SCREEN_MOBILE_EXTRA_MAX) { + .elementor-reverse-tablet > .elementor-container > :nth-child(1) { + order: initial; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(2) { + order: initial; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(3) { + order: initial; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(4) { + order: initial; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(5) { + order: initial; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(6) { + order: initial; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(7) { + order: initial; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(8) { + order: initial; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(9) { + order: initial; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(10) { + order: initial; + } + .elementor-reverse-mobile_extra > .elementor-container > :nth-child(1) { + order: 10; + } + .elementor-reverse-mobile_extra > .elementor-container > :nth-child(2) { + order: 9; + } + .elementor-reverse-mobile_extra > .elementor-container > :nth-child(3) { + order: 8; + } + .elementor-reverse-mobile_extra > .elementor-container > :nth-child(4) { + order: 7; + } + .elementor-reverse-mobile_extra > .elementor-container > :nth-child(5) { + order: 6; + } + .elementor-reverse-mobile_extra > .elementor-container > :nth-child(6) { + order: 5; + } + .elementor-reverse-mobile_extra > .elementor-container > :nth-child(7) { + order: 4; + } + .elementor-reverse-mobile_extra > .elementor-container > :nth-child(8) { + order: 3; + } + .elementor-reverse-mobile_extra > .elementor-container > :nth-child(9) { + order: 2; + } + .elementor-reverse-mobile_extra > .elementor-container > :nth-child(10) { + order: 1; + } +} +@media (max-width: ELEMENTOR_SCREEN_MOBILE_MAX) { + .elementor-reverse-mobile > .elementor-container > :nth-child(1) { + order: 10; + } + .elementor-reverse-mobile > .elementor-container > :nth-child(2) { + order: 9; + } + .elementor-reverse-mobile > .elementor-container > :nth-child(3) { + order: 8; + } + .elementor-reverse-mobile > .elementor-container > :nth-child(4) { + order: 7; + } + .elementor-reverse-mobile > .elementor-container > :nth-child(5) { + order: 6; + } + .elementor-reverse-mobile > .elementor-container > :nth-child(6) { + order: 5; + } + .elementor-reverse-mobile > .elementor-container > :nth-child(7) { + order: 4; + } + .elementor-reverse-mobile > .elementor-container > :nth-child(8) { + order: 3; + } + .elementor-reverse-mobile > .elementor-container > :nth-child(9) { + order: 2; + } + .elementor-reverse-mobile > .elementor-container > :nth-child(10) { + order: 1; + } + .elementor-column { + width: 100%; + } +} +ul.elementor-icon-list-items.elementor-inline-items { + display: flex; + flex-wrap: wrap; +} +ul.elementor-icon-list-items.elementor-inline-items .elementor-inline-item { + word-break: break-word; +} + +.elementor-grid { + display: grid; + grid-column-gap: var(--grid-column-gap); + grid-row-gap: var(--grid-row-gap); +} +.elementor-grid .elementor-grid-item { + min-width: 0; +} +.elementor-grid-0 .elementor-grid { + display: inline-block; + width: 100%; + word-spacing: var(--grid-column-gap); + margin-bottom: calc(-1 * var(--grid-row-gap)); +} +.elementor-grid-0 .elementor-grid .elementor-grid-item { + display: inline-block; + margin-bottom: var(--grid-row-gap); + word-break: break-word; +} +.elementor-grid-1 .elementor-grid { + grid-template-columns: repeat(1, 1fr); +} +.elementor-grid-2 .elementor-grid { + grid-template-columns: repeat(2, 1fr); +} +.elementor-grid-3 .elementor-grid { + grid-template-columns: repeat(3, 1fr); +} +.elementor-grid-4 .elementor-grid { + grid-template-columns: repeat(4, 1fr); +} +.elementor-grid-5 .elementor-grid { + grid-template-columns: repeat(5, 1fr); +} +.elementor-grid-6 .elementor-grid { + grid-template-columns: repeat(6, 1fr); +} +.elementor-grid-7 .elementor-grid { + grid-template-columns: repeat(7, 1fr); +} +.elementor-grid-8 .elementor-grid { + grid-template-columns: repeat(8, 1fr); +} +.elementor-grid-9 .elementor-grid { + grid-template-columns: repeat(9, 1fr); +} +.elementor-grid-10 .elementor-grid { + grid-template-columns: repeat(10, 1fr); +} +.elementor-grid-11 .elementor-grid { + grid-template-columns: repeat(11, 1fr); +} +.elementor-grid-12 .elementor-grid { + grid-template-columns: repeat(12, 1fr); +} +@media (min-width: ELEMENTOR_SCREEN_WIDESCREEN_MIN) { + .elementor-grid-widescreen-0 .elementor-grid { + display: inline-block; + width: 100%; + word-spacing: var(--grid-column-gap); + margin-bottom: calc(-1 * var(--grid-row-gap)); + } + .elementor-grid-widescreen-0 .elementor-grid .elementor-grid-item { + display: inline-block; + margin-bottom: var(--grid-row-gap); + word-break: break-word; + } + .elementor-grid-widescreen-1 .elementor-grid { + grid-template-columns: repeat(1, 1fr); + } + .elementor-grid-widescreen-2 .elementor-grid { + grid-template-columns: repeat(2, 1fr); + } + .elementor-grid-widescreen-3 .elementor-grid { + grid-template-columns: repeat(3, 1fr); + } + .elementor-grid-widescreen-4 .elementor-grid { + grid-template-columns: repeat(4, 1fr); + } + .elementor-grid-widescreen-5 .elementor-grid { + grid-template-columns: repeat(5, 1fr); + } + .elementor-grid-widescreen-6 .elementor-grid { + grid-template-columns: repeat(6, 1fr); + } + .elementor-grid-widescreen-7 .elementor-grid { + grid-template-columns: repeat(7, 1fr); + } + .elementor-grid-widescreen-8 .elementor-grid { + grid-template-columns: repeat(8, 1fr); + } + .elementor-grid-widescreen-9 .elementor-grid { + grid-template-columns: repeat(9, 1fr); + } + .elementor-grid-widescreen-10 .elementor-grid { + grid-template-columns: repeat(10, 1fr); + } + .elementor-grid-widescreen-11 .elementor-grid { + grid-template-columns: repeat(11, 1fr); + } + .elementor-grid-widescreen-12 .elementor-grid { + grid-template-columns: repeat(12, 1fr); + } +} +@media (max-width: ELEMENTOR_SCREEN_LAPTOP_MAX) { + .elementor-grid-laptop-0 .elementor-grid { + display: inline-block; + width: 100%; + word-spacing: var(--grid-column-gap); + margin-bottom: calc(-1 * var(--grid-row-gap)); + } + .elementor-grid-laptop-0 .elementor-grid .elementor-grid-item { + display: inline-block; + margin-bottom: var(--grid-row-gap); + word-break: break-word; + } + .elementor-grid-laptop-1 .elementor-grid { + grid-template-columns: repeat(1, 1fr); + } + .elementor-grid-laptop-2 .elementor-grid { + grid-template-columns: repeat(2, 1fr); + } + .elementor-grid-laptop-3 .elementor-grid { + grid-template-columns: repeat(3, 1fr); + } + .elementor-grid-laptop-4 .elementor-grid { + grid-template-columns: repeat(4, 1fr); + } + .elementor-grid-laptop-5 .elementor-grid { + grid-template-columns: repeat(5, 1fr); + } + .elementor-grid-laptop-6 .elementor-grid { + grid-template-columns: repeat(6, 1fr); + } + .elementor-grid-laptop-7 .elementor-grid { + grid-template-columns: repeat(7, 1fr); + } + .elementor-grid-laptop-8 .elementor-grid { + grid-template-columns: repeat(8, 1fr); + } + .elementor-grid-laptop-9 .elementor-grid { + grid-template-columns: repeat(9, 1fr); + } + .elementor-grid-laptop-10 .elementor-grid { + grid-template-columns: repeat(10, 1fr); + } + .elementor-grid-laptop-11 .elementor-grid { + grid-template-columns: repeat(11, 1fr); + } + .elementor-grid-laptop-12 .elementor-grid { + grid-template-columns: repeat(12, 1fr); + } +} +@media (max-width: ELEMENTOR_SCREEN_TABLET_EXTRA_MAX) { + .elementor-grid-tablet_extra-0 .elementor-grid { + display: inline-block; + width: 100%; + word-spacing: var(--grid-column-gap); + margin-bottom: calc(-1 * var(--grid-row-gap)); + } + .elementor-grid-tablet_extra-0 .elementor-grid .elementor-grid-item { + display: inline-block; + margin-bottom: var(--grid-row-gap); + word-break: break-word; + } + .elementor-grid-tablet_extra-1 .elementor-grid { + grid-template-columns: repeat(1, 1fr); + } + .elementor-grid-tablet_extra-2 .elementor-grid { + grid-template-columns: repeat(2, 1fr); + } + .elementor-grid-tablet_extra-3 .elementor-grid { + grid-template-columns: repeat(3, 1fr); + } + .elementor-grid-tablet_extra-4 .elementor-grid { + grid-template-columns: repeat(4, 1fr); + } + .elementor-grid-tablet_extra-5 .elementor-grid { + grid-template-columns: repeat(5, 1fr); + } + .elementor-grid-tablet_extra-6 .elementor-grid { + grid-template-columns: repeat(6, 1fr); + } + .elementor-grid-tablet_extra-7 .elementor-grid { + grid-template-columns: repeat(7, 1fr); + } + .elementor-grid-tablet_extra-8 .elementor-grid { + grid-template-columns: repeat(8, 1fr); + } + .elementor-grid-tablet_extra-9 .elementor-grid { + grid-template-columns: repeat(9, 1fr); + } + .elementor-grid-tablet_extra-10 .elementor-grid { + grid-template-columns: repeat(10, 1fr); + } + .elementor-grid-tablet_extra-11 .elementor-grid { + grid-template-columns: repeat(11, 1fr); + } + .elementor-grid-tablet_extra-12 .elementor-grid { + grid-template-columns: repeat(12, 1fr); + } +} +@media (max-width: ELEMENTOR_SCREEN_TABLET_MAX) { + .elementor-grid-tablet-0 .elementor-grid { + display: inline-block; + width: 100%; + word-spacing: var(--grid-column-gap); + margin-bottom: calc(-1 * var(--grid-row-gap)); + } + .elementor-grid-tablet-0 .elementor-grid .elementor-grid-item { + display: inline-block; + margin-bottom: var(--grid-row-gap); + word-break: break-word; + } + .elementor-grid-tablet-1 .elementor-grid { + grid-template-columns: repeat(1, 1fr); + } + .elementor-grid-tablet-2 .elementor-grid { + grid-template-columns: repeat(2, 1fr); + } + .elementor-grid-tablet-3 .elementor-grid { + grid-template-columns: repeat(3, 1fr); + } + .elementor-grid-tablet-4 .elementor-grid { + grid-template-columns: repeat(4, 1fr); + } + .elementor-grid-tablet-5 .elementor-grid { + grid-template-columns: repeat(5, 1fr); + } + .elementor-grid-tablet-6 .elementor-grid { + grid-template-columns: repeat(6, 1fr); + } + .elementor-grid-tablet-7 .elementor-grid { + grid-template-columns: repeat(7, 1fr); + } + .elementor-grid-tablet-8 .elementor-grid { + grid-template-columns: repeat(8, 1fr); + } + .elementor-grid-tablet-9 .elementor-grid { + grid-template-columns: repeat(9, 1fr); + } + .elementor-grid-tablet-10 .elementor-grid { + grid-template-columns: repeat(10, 1fr); + } + .elementor-grid-tablet-11 .elementor-grid { + grid-template-columns: repeat(11, 1fr); + } + .elementor-grid-tablet-12 .elementor-grid { + grid-template-columns: repeat(12, 1fr); + } +} +@media (max-width: ELEMENTOR_SCREEN_MOBILE_EXTRA_MAX) { + .elementor-grid-mobile_extra-0 .elementor-grid { + display: inline-block; + width: 100%; + word-spacing: var(--grid-column-gap); + margin-bottom: calc(-1 * var(--grid-row-gap)); + } + .elementor-grid-mobile_extra-0 .elementor-grid .elementor-grid-item { + display: inline-block; + margin-bottom: var(--grid-row-gap); + word-break: break-word; + } + .elementor-grid-mobile_extra-1 .elementor-grid { + grid-template-columns: repeat(1, 1fr); + } + .elementor-grid-mobile_extra-2 .elementor-grid { + grid-template-columns: repeat(2, 1fr); + } + .elementor-grid-mobile_extra-3 .elementor-grid { + grid-template-columns: repeat(3, 1fr); + } + .elementor-grid-mobile_extra-4 .elementor-grid { + grid-template-columns: repeat(4, 1fr); + } + .elementor-grid-mobile_extra-5 .elementor-grid { + grid-template-columns: repeat(5, 1fr); + } + .elementor-grid-mobile_extra-6 .elementor-grid { + grid-template-columns: repeat(6, 1fr); + } + .elementor-grid-mobile_extra-7 .elementor-grid { + grid-template-columns: repeat(7, 1fr); + } + .elementor-grid-mobile_extra-8 .elementor-grid { + grid-template-columns: repeat(8, 1fr); + } + .elementor-grid-mobile_extra-9 .elementor-grid { + grid-template-columns: repeat(9, 1fr); + } + .elementor-grid-mobile_extra-10 .elementor-grid { + grid-template-columns: repeat(10, 1fr); + } + .elementor-grid-mobile_extra-11 .elementor-grid { + grid-template-columns: repeat(11, 1fr); + } + .elementor-grid-mobile_extra-12 .elementor-grid { + grid-template-columns: repeat(12, 1fr); + } +} +@media (max-width: ELEMENTOR_SCREEN_MOBILE_MAX) { + .elementor-grid-mobile-0 .elementor-grid { + display: inline-block; + width: 100%; + word-spacing: var(--grid-column-gap); + margin-bottom: calc(-1 * var(--grid-row-gap)); + } + .elementor-grid-mobile-0 .elementor-grid .elementor-grid-item { + display: inline-block; + margin-bottom: var(--grid-row-gap); + word-break: break-word; + } + .elementor-grid-mobile-1 .elementor-grid { + grid-template-columns: repeat(1, 1fr); + } + .elementor-grid-mobile-2 .elementor-grid { + grid-template-columns: repeat(2, 1fr); + } + .elementor-grid-mobile-3 .elementor-grid { + grid-template-columns: repeat(3, 1fr); + } + .elementor-grid-mobile-4 .elementor-grid { + grid-template-columns: repeat(4, 1fr); + } + .elementor-grid-mobile-5 .elementor-grid { + grid-template-columns: repeat(5, 1fr); + } + .elementor-grid-mobile-6 .elementor-grid { + grid-template-columns: repeat(6, 1fr); + } + .elementor-grid-mobile-7 .elementor-grid { + grid-template-columns: repeat(7, 1fr); + } + .elementor-grid-mobile-8 .elementor-grid { + grid-template-columns: repeat(8, 1fr); + } + .elementor-grid-mobile-9 .elementor-grid { + grid-template-columns: repeat(9, 1fr); + } + .elementor-grid-mobile-10 .elementor-grid { + grid-template-columns: repeat(10, 1fr); + } + .elementor-grid-mobile-11 .elementor-grid { + grid-template-columns: repeat(11, 1fr); + } + .elementor-grid-mobile-12 .elementor-grid { + grid-template-columns: repeat(12, 1fr); + } +} + +@media (min-width: ELEMENTOR_SCREEN_DESKTOP_MIN) { + #elementor-device-mode:after { + content: "desktop"; + } +} +@media (min-width: ELEMENTOR_SCREEN_WIDESCREEN_MIN) { + #elementor-device-mode:after { + content: "widescreen"; + } +} +@media (max-width: ELEMENTOR_SCREEN_LAPTOP_MAX) { + #elementor-device-mode:after { + content: "laptop"; + } +} +@media (max-width: ELEMENTOR_SCREEN_TABLET_EXTRA_MAX) { + #elementor-device-mode:after { + content: "tablet_extra"; + } +} +@media (max-width: ELEMENTOR_SCREEN_TABLET_MAX) { + #elementor-device-mode:after { + content: "tablet"; + } +} +@media (max-width: ELEMENTOR_SCREEN_MOBILE_EXTRA_MAX) { + #elementor-device-mode:after { + content: "mobile_extra"; + } +} +@media (max-width: ELEMENTOR_SCREEN_MOBILE_MAX) { + #elementor-device-mode:after { + content: "mobile"; + } +} + +.e-con { + --border-radius: 0; + --border-block-start-width: 0px; + --border-inline-end-width: 0px; + --border-block-end-width: 0px; + --border-inline-start-width: 0px; + --border-style: initial; + --border-color: initial; + --container-widget-width: 100%; + --container-widget-height: initial; + --container-widget-flex-grow: 0; + --container-widget-align-self: initial; + --content-width: min(100%, var(--container-max-width, 1140px)); + --width: 100%; + --min-height: initial; + --height: auto; + --text-align: initial; + --margin-block-start: 0px; + --margin-inline-end: 0px; + --margin-block-end: 0px; + --margin-inline-start: 0px; + --padding-block-start: var(--container-default-padding-block-start, 10px); + --padding-inline-end: var(--container-default-padding-inline-end, 10px); + --padding-block-end: var(--container-default-padding-block-end, 10px); + --padding-inline-start: var(--container-default-padding-inline-start, 10px); + --position: relative; + --z-index: revert; + --overflow: visible; + --gap: var(--widgets-spacing, 20px); + --overlay-mix-blend-mode: initial; + --overlay-opacity: 1; + --overlay-transition: 0.3s; + --e-con-grid-template-columns: repeat(3, 1fr); + --e-con-grid-template-rows: repeat(2, 1fr); + position: var(--position); + width: var(--width); + min-width: 0; + min-height: var(--min-height); + height: var(--height); + border-radius: var(--border-radius); + margin-block-start: var(--bc-margin-block-start, var(--margin-block-start)); + margin-inline-end: var(--bc-margin-inline-end, var(--margin-inline-end)); + margin-block-end: var(--bc-margin-block-end, var(--margin-block-end)); + margin-inline-start: var(--bc-margin-inline-start, var(--margin-inline-start)); + padding-inline-start: var(--bc-padding-inline-start, var(--padding-inline-start)); + padding-inline-end: var(--bc-padding-inline-end, var(--padding-inline-end)); + z-index: var(--z-index); + overflow: var(--overflow); + transition: background var(--background-transition, 0.3s), border var(--border-transition, 0.3s), box-shadow var(--border-transition, 0.3s), transform var(--e-con-transform-transition-duration, 0.4s); +} +.e-con.e-flex { + --flex-direction: column; + --flex-basis: auto; + --flex-grow: 0; + --flex-shrink: 1; + flex: var(--flex-grow) var(--flex-shrink) var(--flex-basis); +} +.e-con-full, .e-con > .e-con-inner { + text-align: var(--text-align); + padding-block-start: var(--bc-padding-block-start, var(--padding-block-start)); + padding-block-end: var(--bc-padding-block-end, var(--padding-block-end)); +} +.e-con-full.e-flex, .e-con.e-flex > .e-con-inner { + flex-direction: var(--flex-direction); +} +.e-con, .e-con > .e-con-inner { + display: var(--display); +} +.e-con.e-grid { + --grid-justify-content: start; + --grid-align-content: start; + --grid-auto-flow: row; +} +.e-con.e-grid, .e-con.e-grid > .e-con-inner { + grid-template-columns: var(--e-con-grid-template-columns); + grid-template-rows: var(--e-con-grid-template-rows); + justify-content: var(--grid-justify-content); + align-content: var(--grid-align-content); + grid-auto-flow: var(--grid-auto-flow); + justify-items: var(--justify-items); + align-items: var(--align-items); +} +.e-con-boxed.e-flex { + flex-direction: column; + flex-wrap: initial; + justify-content: initial; + align-items: initial; + align-content: initial; +} +.e-con-boxed.e-grid { + justify-items: initial; + grid-template-columns: 1fr; + grid-template-rows: 1fr; +} +.e-con-boxed { + text-align: initial; + gap: initial; +} +.e-con.e-flex > .e-con-inner { + flex-wrap: var(--flex-wrap); + justify-content: var(--justify-content); + align-items: var(--align-items); + align-content: var(--align-content); + flex-basis: initial; + flex-grow: 1; + flex-shrink: initial; + align-self: initial; +} +.e-con.e-grid > .e-con-inner { + justify-items: var(--justify-items); + align-items: var(--align-items); +} +.e-con > .e-con-inner { + gap: var(--gap); + width: 100%; + max-width: var(--content-width); + margin: 0 auto; + padding-inline-start: 0; + padding-inline-end: 0; + height: 100%; +} +:is(.elementor-section-wrap, [data-elementor-id]) > .e-con { + --margin-inline-end: auto; + --margin-inline-start: auto; + max-width: min(100%, var(--width)); +} +.e-con .elementor-widget.elementor-widget { + margin-block-end: 0; +} +.e-con::before, :is(.e-con, .e-con > .e-con-inner) > .elementor-background-video-container::before, +.e-con > .elementor-motion-effects-container > .elementor-motion-effects-layer::before, +.e-con > .elementor-background-slideshow::before { + content: var(--background-overlay); + display: block; + position: absolute; + mix-blend-mode: var(--overlay-mix-blend-mode); + opacity: var(--overlay-opacity); + transition: var(--overlay-transition, 0.3s); + border-radius: var(--border-radius); + border-style: var(--border-style); + border-color: var(--border-color); + border-block-start-width: var(--border-block-start-width); + border-inline-end-width: var(--border-inline-end-width); + border-block-end-width: var(--border-block-end-width); + border-inline-start-width: var(--border-inline-start-width); + top: calc(0px - var(--border-block-start-width)); + left: calc(0px - var(--border-inline-start-width)); + width: max(100% + var(--border-inline-end-width) + var(--border-inline-start-width), 100%); + height: max(100% + var(--border-block-start-width) + var(--border-block-end-width), 100%); +} +.e-con::before { + transition: background var(--overlay-transition, 0.3s), border-radius var(--border-transition, 0.3s), opacity var(--overlay-transition, 0.3s); +} +.e-con > .elementor-background-slideshow, :is(.e-con, .e-con > .e-con-inner) > .elementor-background-video-container { + border-radius: var(--border-radius); + border-style: var(--border-style); + border-color: var(--border-color); + border-block-start-width: var(--border-block-start-width); + border-inline-end-width: var(--border-inline-end-width); + border-block-end-width: var(--border-block-end-width); + border-inline-start-width: var(--border-inline-start-width); + top: calc(0px - var(--border-block-start-width)); + left: calc(0px - var(--border-inline-start-width)); + width: max(100% + var(--border-inline-end-width) + var(--border-inline-start-width), 100%); + height: max(100% + var(--border-block-start-width) + var(--border-block-end-width), 100%); +} +@media (max-width: ELEMENTOR_SCREEN_MOBILE_MAX) { + :is(.e-con, .e-con > .e-con-inner) > .elementor-background-video-container.elementor-hidden-phone { + display: none; + } +} +:is(.e-con, .e-con > .e-con-inner) > .elementor-background-video-container::before { + z-index: 1; +} +:is(.e-con, .e-con > .e-con-inner) > .elementor-background-slideshow::before { + z-index: 2; +} +.e-con .elementor-widget { + min-width: 0; +} +.e-con .elementor-widget-video, .e-con .elementor-widget-google_maps, .e-con .elementor-widget-empty { + width: 100%; +} +.e-con .elementor-widget.e-widget-swiper { + width: 100%; +} +.e-con > .elementor-widget > .elementor-widget-container, .e-con > .e-con-inner > .elementor-widget > .elementor-widget-container { + height: 100%; +} +.elementor.elementor .e-con > .elementor-widget, .e-con.e-con > .e-con-inner > .elementor-widget { + max-width: 100%; +} + +@media (max-width: 767px) { + .e-con.e-flex { + --width: 100%; + --flex-wrap: wrap; + } +} +.e-con { + --bc-margin-block-start: var(--margin-top); + --bc-margin-block-end: var(--margin-bottom); + --bc-margin-inline-start: var(--margin-left); + --bc-margin-inline-end: var(--margin-right); + --bc-padding-block-start: var(--padding-top); + --bc-padding-block-end: var(--padding-bottom); + --bc-padding-inline-start: var(--padding-left); + --bc-padding-inline-end: var(--padding-right); +} +[dir=rtl] .e-con { + --bc-margin-inline-start: var(--margin-right); + --bc-margin-inline-end: var(--margin-left); + --bc-padding-inline-start: var(--padding-right); + --bc-padding-inline-end: var(--padding-left); +} + +.elementor-form-fields-wrapper { + display: flex; + flex-wrap: wrap; +} +.elementor-form-fields-wrapper.elementor-labels-above .elementor-field-group > input, .elementor-form-fields-wrapper.elementor-labels-above .elementor-field-group > textarea, .elementor-form-fields-wrapper.elementor-labels-above .elementor-field-group > .elementor-select-wrapper, .elementor-form-fields-wrapper.elementor-labels-above .elementor-field-group .elementor-field-subgroup { + flex-basis: 100%; + max-width: 100%; +} +.elementor-form-fields-wrapper.elementor-labels-inline > .elementor-field-group > input, .elementor-form-fields-wrapper.elementor-labels-inline > .elementor-field-group .elementor-select-wrapper { + flex-grow: 1; +} + +.elementor-field-group { + flex-wrap: wrap; + align-items: center; +} +.elementor-field-group.elementor-field-type-submit { + align-items: flex-end; +} +.elementor-field-group .elementor-field-textual { + width: 100%; + max-width: 100%; + border: 1px solid #69727D; + background-color: transparent; + color: #1f2124; + vertical-align: middle; + flex-grow: 1; +} +.elementor-field-group .elementor-field-textual:focus { + box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.1) inset; + outline: 0; +} +.elementor-field-group .elementor-field-textual::-webkit-input-placeholder { + color: inherit; + font-family: inherit; + opacity: 0.6; +} +.elementor-field-group .elementor-field-textual:-ms-input-placeholder { + color: inherit; + font-family: inherit; + opacity: 0.6; +} +.elementor-field-group .elementor-field-textual::-moz-placeholder { + color: inherit; + font-family: inherit; + opacity: 0.6; +} +.elementor-field-group .elementor-field-textual:-moz-placeholder { + color: inherit; + font-family: inherit; + opacity: 0.6; +} +.elementor-field-group .elementor-field-textual::placeholder { + color: inherit; + font-family: inherit; + opacity: 0.6; +} +.elementor-field-group .elementor-select-wrapper { + display: flex; + position: relative; + width: 100%; +} +.elementor-field-group .elementor-select-wrapper select { + appearance: none; + color: inherit; + font-size: inherit; + font-family: inherit; + font-weight: inherit; + font-style: inherit; + text-transform: inherit; + letter-spacing: inherit; + line-height: inherit; + flex-basis: 100%; + padding-right: 20px; +} +.elementor-field-group .elementor-select-wrapper:before { + content: "\e92a"; + font-family: "eicons"; + font-size: 15px; + position: absolute; + top: 50%; + transform: translateY(-50%); + right: 10px; + pointer-events: none; + text-shadow: 0 0 3px rgba(0, 0, 0, 0.3); +} +.elementor-field-group.elementor-field-type-select-multiple .elementor-select-wrapper:before { + content: ""; +} + +.elementor-field-subgroup { + display: flex; + flex-wrap: wrap; +} +.elementor-field-subgroup .elementor-field-option label { + display: inline-block; +} +.elementor-field-subgroup.elementor-subgroup-inline .elementor-field-option { + padding-right: 10px; +} +.elementor-field-subgroup:not(.elementor-subgroup-inline) .elementor-field-option { + flex-basis: 100%; +} + +.elementor-field-type-checkbox .elementor-field-subgroup .elementor-field-option input, +.elementor-field-type-checkbox .elementor-field-subgroup .elementor-field-option label, +.elementor-field-type-radio .elementor-field-subgroup .elementor-field-option input, +.elementor-field-type-radio .elementor-field-subgroup .elementor-field-option label, +.elementor-field-type-acceptance .elementor-field-subgroup .elementor-field-option input, +.elementor-field-type-acceptance .elementor-field-subgroup .elementor-field-option label { + display: inline; +} + +.elementor-field-label { + cursor: pointer; +} +.elementor-mark-required .elementor-field-label:after { + content: "*"; + color: red; + padding-left: 0.2em; +} + +.elementor-field-textual { + line-height: 1.4; + font-size: 15px; + min-height: 40px; + padding: 5px 14px; + border-radius: 3px; +} +.elementor-field-textual.elementor-size-xs { + font-size: 13px; + min-height: 33px; + padding: 4px 12px; + border-radius: 2px; +} +.elementor-field-textual.elementor-size-md { + font-size: 16px; + min-height: 47px; + padding: 6px 16px; + border-radius: 4px; +} +.elementor-field-textual.elementor-size-lg { + font-size: 18px; + min-height: 59px; + padding: 7px 20px; + border-radius: 5px; +} +.elementor-field-textual.elementor-size-xl { + font-size: 20px; + min-height: 72px; + padding: 8px 24px; + border-radius: 6px; +} + +.elementor-button-align-stretch .elementor-field-type-submit:not(.e-form__buttons__wrapper) .elementor-button { + flex-basis: 100%; +} +.elementor-button-align-stretch .e-form__buttons__wrapper { + flex-basis: 50%; + flex-grow: 1; +} +.elementor-button-align-stretch .e-form__buttons__wrapper__button { + flex-basis: 100%; +} +.elementor-button-align-center .elementor-field-type-submit, +.elementor-button-align-center .e-form__buttons { + justify-content: center; +} +.elementor-button-align-start .elementor-field-type-submit, +.elementor-button-align-start .e-form__buttons { + justify-content: flex-start; +} +.elementor-button-align-end .elementor-field-type-submit, +.elementor-button-align-end .e-form__buttons { + justify-content: flex-end; +} +.elementor-button-align-center .elementor-field-type-submit:not(.e-form__buttons__wrapper) .elementor-button, .elementor-button-align-start .elementor-field-type-submit:not(.e-form__buttons__wrapper) .elementor-button, .elementor-button-align-end .elementor-field-type-submit:not(.e-form__buttons__wrapper) .elementor-button { + flex-basis: initial; +} +.elementor-button-align-center .e-form__buttons__wrapper, .elementor-button-align-start .e-form__buttons__wrapper, .elementor-button-align-end .e-form__buttons__wrapper { + flex-grow: initial; +} +.elementor-button-align-center .e-form__buttons__wrapper, .elementor-button-align-center .e-form__buttons__wrapper__button, .elementor-button-align-start .e-form__buttons__wrapper, .elementor-button-align-start .e-form__buttons__wrapper__button, .elementor-button-align-end .e-form__buttons__wrapper, .elementor-button-align-end .e-form__buttons__wrapper__button { + flex-basis: initial; +} + +@media screen and (max-width: ELEMENTOR_SCREEN_TABLET_MAX) { + .elementor-tablet-button-align-stretch .elementor-field-type-submit:not(.e-form__buttons__wrapper) .elementor-button { + flex-basis: 100%; + } + .elementor-tablet-button-align-stretch .e-form__buttons__wrapper { + flex-basis: 50%; + flex-grow: 1; + } + .elementor-tablet-button-align-stretch .e-form__buttons__wrapper__button { + flex-basis: 100%; + } + .elementor-tablet-button-align-center .elementor-field-type-submit, + .elementor-tablet-button-align-center .e-form__buttons { + justify-content: center; + } + .elementor-tablet-button-align-start .elementor-field-type-submit, + .elementor-tablet-button-align-start .e-form__buttons { + justify-content: flex-start; + } + .elementor-tablet-button-align-end .elementor-field-type-submit, + .elementor-tablet-button-align-end .e-form__buttons { + justify-content: flex-end; + } + .elementor-tablet-button-align-center .elementor-field-type-submit:not(.e-form__buttons__wrapper) .elementor-button, .elementor-tablet-button-align-start .elementor-field-type-submit:not(.e-form__buttons__wrapper) .elementor-button, .elementor-tablet-button-align-end .elementor-field-type-submit:not(.e-form__buttons__wrapper) .elementor-button { + flex-basis: initial; + } + .elementor-tablet-button-align-center .e-form__buttons__wrapper, .elementor-tablet-button-align-start .e-form__buttons__wrapper, .elementor-tablet-button-align-end .e-form__buttons__wrapper { + flex-grow: initial; + } + .elementor-tablet-button-align-center .e-form__buttons__wrapper, .elementor-tablet-button-align-center .e-form__buttons__wrapper__button, .elementor-tablet-button-align-start .e-form__buttons__wrapper, .elementor-tablet-button-align-start .e-form__buttons__wrapper__button, .elementor-tablet-button-align-end .e-form__buttons__wrapper, .elementor-tablet-button-align-end .e-form__buttons__wrapper__button { + flex-basis: initial; + } +} +@media screen and (max-width: ELEMENTOR_SCREEN_MOBILE_MAX) { + .elementor-mobile-button-align-stretch .elementor-field-type-submit:not(.e-form__buttons__wrapper) .elementor-button { + flex-basis: 100%; + } + .elementor-mobile-button-align-stretch .e-form__buttons__wrapper { + flex-basis: 50%; + flex-grow: 1; + } + .elementor-mobile-button-align-stretch .e-form__buttons__wrapper__button { + flex-basis: 100%; + } + .elementor-mobile-button-align-center .elementor-field-type-submit, + .elementor-mobile-button-align-center .e-form__buttons { + justify-content: center; + } + .elementor-mobile-button-align-start .elementor-field-type-submit, + .elementor-mobile-button-align-start .e-form__buttons { + justify-content: flex-start; + } + .elementor-mobile-button-align-end .elementor-field-type-submit, + .elementor-mobile-button-align-end .e-form__buttons { + justify-content: flex-end; + } + .elementor-mobile-button-align-center .elementor-field-type-submit:not(.e-form__buttons__wrapper) .elementor-button, .elementor-mobile-button-align-start .elementor-field-type-submit:not(.e-form__buttons__wrapper) .elementor-button, .elementor-mobile-button-align-end .elementor-field-type-submit:not(.e-form__buttons__wrapper) .elementor-button { + flex-basis: initial; + } + .elementor-mobile-button-align-center .e-form__buttons__wrapper, .elementor-mobile-button-align-start .e-form__buttons__wrapper, .elementor-mobile-button-align-end .e-form__buttons__wrapper { + flex-grow: initial; + } + .elementor-mobile-button-align-center .e-form__buttons__wrapper, .elementor-mobile-button-align-center .e-form__buttons__wrapper__button, .elementor-mobile-button-align-start .e-form__buttons__wrapper, .elementor-mobile-button-align-start .e-form__buttons__wrapper__button, .elementor-mobile-button-align-end .e-form__buttons__wrapper, .elementor-mobile-button-align-end .e-form__buttons__wrapper__button { + flex-basis: initial; + } +} +.elementor-error .elementor-field { + border-color: #d9534f; +} +.elementor-error .help-inline { + color: #d9534f; + font-size: 0.9em; +} + +.elementor-message { + margin: 10px 0; + font-size: 1em; + line-height: 1; +} +.elementor-message:before { + content: "\e90e"; + display: inline-block; + font-family: eicons; + font-weight: normal; + font-style: normal; + vertical-align: middle; + margin-right: 5px; +} +.elementor-message.elementor-message-danger { + color: #d9534f; +} +.elementor-message.elementor-message-danger:before { + content: "\e87f"; +} +.elementor-message.form-message-success { + color: #5cb85c; +} + +.elementor-form .elementor-button { + padding-top: 0; + padding-bottom: 0; + border: none; +} +.elementor-form .elementor-button > span { + display: flex; + justify-content: center; +} +.elementor-form .elementor-button.elementor-size-xs { + min-height: 33px; +} +.elementor-form .elementor-button.elementor-size-sm { + min-height: 40px; +} +.elementor-form .elementor-button.elementor-size-md { + min-height: 47px; +} +.elementor-form .elementor-button.elementor-size-lg { + min-height: 59px; +} +.elementor-form .elementor-button.elementor-size-xl { + min-height: 72px; +} + +.elementor-element .elementor-widget-container { + transition: background 0.3s, border 0.3s, border-radius 0.3s, box-shadow 0.3s, transform var(--e-transform-transition-duration, 400ms); +} + +.elementor-button { + display: inline-block; + line-height: 1; + background-color: #69727D; + font-size: 15px; + padding: 12px 24px; + border-radius: 3px; + color: #fff; + fill: #fff; + text-align: center; + transition: all 0.3s; +} +.elementor-button:hover, .elementor-button:focus, .elementor-button:visited { + color: #fff; +} +.elementor-button-content-wrapper { + display: flex; + justify-content: center; +} +.elementor-button-icon { + flex-grow: 0; + order: 5; +} +.elementor-button-icon svg { + width: 1em; + height: auto; +} +.elementor-button-icon .e-font-icon-svg { + height: 1em; +} +.elementor-button-text { + flex-grow: 1; + order: 10; + display: inline-block; +} +.elementor-button.elementor-size-xs { + font-size: 13px; + padding: 10px 20px; + border-radius: 2px; +} +.elementor-button.elementor-size-md { + font-size: 16px; + padding: 15px 30px; + border-radius: 4px; +} +.elementor-button.elementor-size-lg { + font-size: 18px; + padding: 20px 40px; + border-radius: 5px; +} +.elementor-button.elementor-size-xl { + font-size: 20px; + padding: 25px 50px; + border-radius: 6px; +} +.elementor-button .elementor-align-icon-right { + margin-left: 5px; + order: 15; +} +.elementor-button .elementor-align-icon-left { + margin-right: 5px; + order: 5; +} +.elementor-button span { + text-decoration: inherit; +} + +.elementor-element.elementor-button-info .elementor-button { + background-color: #5bc0de; +} +.elementor-element.elementor-button-success .elementor-button { + background-color: #5cb85c; +} +.elementor-element.elementor-button-warning .elementor-button { + background-color: #f0ad4e; +} +.elementor-element.elementor-button-danger .elementor-button { + background-color: #d9534f; +} + +.elementor-widget-button .elementor-button .elementor-button-info { + background-color: #5bc0de; +} +.elementor-widget-button .elementor-button .elementor-button-success { + background-color: #5cb85c; +} +.elementor-widget-button .elementor-button .elementor-button-warning { + background-color: #f0ad4e; +} +.elementor-widget-button .elementor-button .elementor-button-danger { + background-color: #d9534f; +} + +.elementor-tab-title a { + color: inherit; +} + +.elementor-view-stacked .elementor-icon { + padding: 0.5em; + background-color: #69727D; + color: #fff; + fill: #fff; +} + +.elementor-view-framed .elementor-icon { + padding: 0.5em; + color: #69727D; + border: 3px solid #69727D; + background-color: transparent; +} + +.elementor-icon { + display: inline-block; + line-height: 1; + transition: all 0.3s; + color: #69727D; + font-size: 50px; + text-align: center; +} +.elementor-icon:hover { + color: #69727D; +} +.elementor-icon i, .elementor-icon svg { + width: 1em; + height: 1em; + position: relative; + display: block; +} +.elementor-icon i:before, .elementor-icon svg:before { + position: absolute; + left: 50%; + transform: translateX(-50%); +} +.elementor-icon i.fad { + width: initial; +} + +.elementor-shape-circle .elementor-icon { + border-radius: 50%; +} + +.e-transform .elementor-widget-container { + transform: perspective(var(--e-transform-perspective, 0)) rotateZ(var(--e-transform-rotateZ, 0)) rotateX(var(--e-transform-rotateX, 0)) rotateY(var(--e-transform-rotateY, 0)) translate(var(--e-transform-translate, 0)) translateX(var(--e-transform-translateX, 0)) translateY(var(--e-transform-translateY, 0)) scaleX(calc(var(--e-transform-flipX, 1) * var(--e-transform-scaleX, var(--e-transform-scale, 1)))) scaleY(calc(var(--e-transform-flipY, 1) * var(--e-transform-scaleY, var(--e-transform-scale, 1)))) skewX(var(--e-transform-skewX, 0)) skewY(var(--e-transform-skewY, 0)); + transform-origin: var(--e-transform-origin-y) var(--e-transform-origin-x); +} + +.e-con.e-transform { + transform: perspective(var(--e-con-transform-perspective, 0)) rotateZ(var(--e-con-transform-rotateZ, 0)) rotateX(var(--e-con-transform-rotateX, 0)) rotateY(var(--e-con-transform-rotateY, 0)) translate(var(--e-con-transform-translate, 0)) translateX(var(--e-con-transform-translateX, 0)) translateY(var(--e-con-transform-translateY, 0)) scaleX(calc(var(--e-con-transform-flipX, 1) * var(--e-con-transform-scaleX, var(--e-con-transform-scale, 1)))) scaleY(calc(var(--e-con-transform-flipY, 1) * var(--e-con-transform-scaleY, var(--e-con-transform-scale, 1)))) skewX(var(--e-con-transform-skewX, 0)) skewY(var(--e-con-transform-skewY, 0)); + transform-origin: var(--e-con-transform-origin-y) var(--e-con-transform-origin-x); +} + +.elementor-element, .elementor-lightbox { + --swiper-theme-color: #000; + --swiper-navigation-size: 44px; + --swiper-pagination-bullet-size: 6px; + --swiper-pagination-bullet-horizontal-gap: 6px; +} +.elementor-element .swiper .swiper-slide figure, +.elementor-element .swiper-container .swiper-slide figure, .elementor-lightbox .swiper .swiper-slide figure, +.elementor-lightbox .swiper-container .swiper-slide figure { + line-height: 0; +} +.elementor-element .swiper .elementor-lightbox-content-source, +.elementor-element .swiper-container .elementor-lightbox-content-source, .elementor-lightbox .swiper .elementor-lightbox-content-source, +.elementor-lightbox .swiper-container .elementor-lightbox-content-source { + display: none; +} +.elementor-element .swiper .elementor-swiper-button, +.elementor-element .swiper ~ .elementor-swiper-button, +.elementor-element .swiper-container .elementor-swiper-button, +.elementor-element .swiper-container ~ .elementor-swiper-button, .elementor-lightbox .swiper .elementor-swiper-button, +.elementor-lightbox .swiper ~ .elementor-swiper-button, +.elementor-lightbox .swiper-container .elementor-swiper-button, +.elementor-lightbox .swiper-container ~ .elementor-swiper-button { + position: absolute; + display: inline-flex; + z-index: 1; + cursor: pointer; + font-size: 25px; + color: rgba(238, 238, 238, 0.9); + top: 50%; + transform: translateY(-50%); +} +.elementor-element .swiper .elementor-swiper-button svg, +.elementor-element .swiper ~ .elementor-swiper-button svg, +.elementor-element .swiper-container .elementor-swiper-button svg, +.elementor-element .swiper-container ~ .elementor-swiper-button svg, .elementor-lightbox .swiper .elementor-swiper-button svg, +.elementor-lightbox .swiper ~ .elementor-swiper-button svg, +.elementor-lightbox .swiper-container .elementor-swiper-button svg, +.elementor-lightbox .swiper-container ~ .elementor-swiper-button svg { + fill: rgba(238, 238, 238, 0.9); + height: 1em; + width: 1em; +} +.elementor-element .swiper .elementor-swiper-button-prev, +.elementor-element .swiper ~ .elementor-swiper-button-prev, +.elementor-element .swiper-container .elementor-swiper-button-prev, +.elementor-element .swiper-container ~ .elementor-swiper-button-prev, .elementor-lightbox .swiper .elementor-swiper-button-prev, +.elementor-lightbox .swiper ~ .elementor-swiper-button-prev, +.elementor-lightbox .swiper-container .elementor-swiper-button-prev, +.elementor-lightbox .swiper-container ~ .elementor-swiper-button-prev { + left: 10px; +} +.elementor-element .swiper .elementor-swiper-button-next, +.elementor-element .swiper ~ .elementor-swiper-button-next, +.elementor-element .swiper-container .elementor-swiper-button-next, +.elementor-element .swiper-container ~ .elementor-swiper-button-next, .elementor-lightbox .swiper .elementor-swiper-button-next, +.elementor-lightbox .swiper ~ .elementor-swiper-button-next, +.elementor-lightbox .swiper-container .elementor-swiper-button-next, +.elementor-lightbox .swiper-container ~ .elementor-swiper-button-next { + right: 10px; +} +.elementor-element .swiper .elementor-swiper-button.swiper-button-disabled, +.elementor-element .swiper ~ .elementor-swiper-button.swiper-button-disabled, +.elementor-element .swiper-container .elementor-swiper-button.swiper-button-disabled, +.elementor-element .swiper-container ~ .elementor-swiper-button.swiper-button-disabled, .elementor-lightbox .swiper .elementor-swiper-button.swiper-button-disabled, +.elementor-lightbox .swiper ~ .elementor-swiper-button.swiper-button-disabled, +.elementor-lightbox .swiper-container .elementor-swiper-button.swiper-button-disabled, +.elementor-lightbox .swiper-container ~ .elementor-swiper-button.swiper-button-disabled { + opacity: 0.3; +} +.elementor-element .swiper .swiper-image-stretch .swiper-slide .swiper-slide-image, +.elementor-element .swiper-container .swiper-image-stretch .swiper-slide .swiper-slide-image, .elementor-lightbox .swiper .swiper-image-stretch .swiper-slide .swiper-slide-image, +.elementor-lightbox .swiper-container .swiper-image-stretch .swiper-slide .swiper-slide-image { + width: 100%; +} +.elementor-element .swiper .swiper-pagination-fraction, +.elementor-element .swiper .swiper-pagination-custom, +.elementor-element .swiper .swiper-horizontal > .swiper-pagination-bullets, +.elementor-element .swiper .swiper-pagination-bullets.swiper-pagination-horizontal, +.elementor-element .swiper ~ .swiper-pagination-fraction, +.elementor-element .swiper ~ .swiper-pagination-custom, +.elementor-element .swiper ~ .swiper-pagination-bullets.swiper-pagination-horizontal, +.elementor-element .swiper-container .swiper-pagination-fraction, +.elementor-element .swiper-container .swiper-pagination-custom, +.elementor-element .swiper-container .swiper-horizontal > .swiper-pagination-bullets, +.elementor-element .swiper-container .swiper-pagination-bullets.swiper-pagination-horizontal, +.elementor-element .swiper-container ~ .swiper-pagination-fraction, +.elementor-element .swiper-container ~ .swiper-pagination-custom, +.elementor-element .swiper-container ~ .swiper-pagination-bullets.swiper-pagination-horizontal, .elementor-lightbox .swiper .swiper-pagination-fraction, +.elementor-lightbox .swiper .swiper-pagination-custom, +.elementor-lightbox .swiper .swiper-horizontal > .swiper-pagination-bullets, +.elementor-lightbox .swiper .swiper-pagination-bullets.swiper-pagination-horizontal, +.elementor-lightbox .swiper ~ .swiper-pagination-fraction, +.elementor-lightbox .swiper ~ .swiper-pagination-custom, +.elementor-lightbox .swiper ~ .swiper-pagination-bullets.swiper-pagination-horizontal, +.elementor-lightbox .swiper-container .swiper-pagination-fraction, +.elementor-lightbox .swiper-container .swiper-pagination-custom, +.elementor-lightbox .swiper-container .swiper-horizontal > .swiper-pagination-bullets, +.elementor-lightbox .swiper-container .swiper-pagination-bullets.swiper-pagination-horizontal, +.elementor-lightbox .swiper-container ~ .swiper-pagination-fraction, +.elementor-lightbox .swiper-container ~ .swiper-pagination-custom, +.elementor-lightbox .swiper-container ~ .swiper-pagination-bullets.swiper-pagination-horizontal { + bottom: 5px; +} +.elementor-element .swiper.swiper-cube .elementor-swiper-button, +.elementor-element .swiper.swiper-cube ~ .elementor-swiper-button, +.elementor-element .swiper-container.swiper-cube .elementor-swiper-button, +.elementor-element .swiper-container.swiper-cube ~ .elementor-swiper-button, .elementor-lightbox .swiper.swiper-cube .elementor-swiper-button, +.elementor-lightbox .swiper.swiper-cube ~ .elementor-swiper-button, +.elementor-lightbox .swiper-container.swiper-cube .elementor-swiper-button, +.elementor-lightbox .swiper-container.swiper-cube ~ .elementor-swiper-button { + transform: translate3d(0, -50%, 1px); +} +.elementor-element :where(.swiper-container-horizontal) ~ .swiper-pagination-bullets, .elementor-lightbox :where(.swiper-container-horizontal) ~ .swiper-pagination-bullets { + bottom: 5px; + left: 0; + width: 100%; +} +.elementor-element :where(.swiper-container-horizontal) ~ .swiper-pagination-bullets .swiper-pagination-bullet, .elementor-lightbox :where(.swiper-container-horizontal) ~ .swiper-pagination-bullets .swiper-pagination-bullet { + margin: 0 var(--swiper-pagination-bullet-horizontal-gap, 4px); +} +.elementor-element :where(.swiper-container-horizontal) ~ .swiper-pagination-progressbar, .elementor-lightbox :where(.swiper-container-horizontal) ~ .swiper-pagination-progressbar { + width: 100%; + height: 4px; + left: 0; + top: 0; +} +.elementor-element.elementor-pagination-position-outside .swiper, +.elementor-element.elementor-pagination-position-outside .swiper-container, .elementor-lightbox.elementor-pagination-position-outside .swiper, +.elementor-lightbox.elementor-pagination-position-outside .swiper-container { + padding-bottom: 30px; +} +.elementor-element.elementor-pagination-position-outside .swiper .elementor-swiper-button, +.elementor-element.elementor-pagination-position-outside .swiper ~ .elementor-swiper-button, +.elementor-element.elementor-pagination-position-outside .swiper-container .elementor-swiper-button, +.elementor-element.elementor-pagination-position-outside .swiper-container ~ .elementor-swiper-button, .elementor-lightbox.elementor-pagination-position-outside .swiper .elementor-swiper-button, +.elementor-lightbox.elementor-pagination-position-outside .swiper ~ .elementor-swiper-button, +.elementor-lightbox.elementor-pagination-position-outside .swiper-container .elementor-swiper-button, +.elementor-lightbox.elementor-pagination-position-outside .swiper-container ~ .elementor-swiper-button { + top: calc(50% - 30px / 2); +} +.elementor-element .elementor-swiper, .elementor-lightbox .elementor-swiper { + position: relative; +} +.elementor-element .elementor-main-swiper, .elementor-lightbox .elementor-main-swiper { + position: static; +} +.elementor-element.elementor-arrows-position-outside .swiper, +.elementor-element.elementor-arrows-position-outside .swiper-container, .elementor-lightbox.elementor-arrows-position-outside .swiper, +.elementor-lightbox.elementor-arrows-position-outside .swiper-container { + width: calc(100% - 60px); +} +.elementor-element.elementor-arrows-position-outside .swiper .elementor-swiper-button-prev, +.elementor-element.elementor-arrows-position-outside .swiper ~ .elementor-swiper-button-prev, +.elementor-element.elementor-arrows-position-outside .swiper-container .elementor-swiper-button-prev, +.elementor-element.elementor-arrows-position-outside .swiper-container ~ .elementor-swiper-button-prev, .elementor-lightbox.elementor-arrows-position-outside .swiper .elementor-swiper-button-prev, +.elementor-lightbox.elementor-arrows-position-outside .swiper ~ .elementor-swiper-button-prev, +.elementor-lightbox.elementor-arrows-position-outside .swiper-container .elementor-swiper-button-prev, +.elementor-lightbox.elementor-arrows-position-outside .swiper-container ~ .elementor-swiper-button-prev { + left: 0; +} +.elementor-element.elementor-arrows-position-outside .swiper .elementor-swiper-button-next, +.elementor-element.elementor-arrows-position-outside .swiper ~ .elementor-swiper-button-next, +.elementor-element.elementor-arrows-position-outside .swiper-container .elementor-swiper-button-next, +.elementor-element.elementor-arrows-position-outside .swiper-container ~ .elementor-swiper-button-next, .elementor-lightbox.elementor-arrows-position-outside .swiper .elementor-swiper-button-next, +.elementor-lightbox.elementor-arrows-position-outside .swiper ~ .elementor-swiper-button-next, +.elementor-lightbox.elementor-arrows-position-outside .swiper-container .elementor-swiper-button-next, +.elementor-lightbox.elementor-arrows-position-outside .swiper-container ~ .elementor-swiper-button-next { + right: 0; +} + +.elementor-lightbox { + --lightbox-ui-color: rgba(238, 238, 238, 0.9); + --lightbox-ui-color-hover: #fff; + --lightbox-text-color: var(--lightbox-ui-color); + --lightbox-header-icons-size: 20px; + --lightbox-navigation-icons-size: 25px; +} +.elementor-lightbox:not(.elementor-popup-modal) .dialog-header, +.elementor-lightbox:not(.elementor-popup-modal) .dialog-message { + text-align: center; +} +.elementor-lightbox .dialog-header { + display: none; +} +.elementor-lightbox .dialog-widget-content { + background: none; + box-shadow: none; + width: 100%; + height: 100%; +} +.elementor-lightbox .dialog-message { + animation-duration: 0.3s; + height: 100%; +} +.elementor-lightbox .dialog-message.dialog-lightbox-message { + padding: 0; +} +.elementor-lightbox .dialog-lightbox-close-button { + cursor: pointer; + position: absolute; + font-size: var(--lightbox-header-icons-size); + right: 0.75em; + margin-top: 13px; + padding: 0.25em; + z-index: 2; + line-height: 1; + display: flex; +} +.elementor-lightbox .dialog-lightbox-close-button svg { + height: 1em; + width: 1em; +} +.elementor-lightbox .dialog-lightbox-close-button, +.elementor-lightbox .elementor-swiper-button { + color: var(--lightbox-ui-color); + transition: all 0.3s; + opacity: 1; +} +.elementor-lightbox .dialog-lightbox-close-button svg, +.elementor-lightbox .elementor-swiper-button svg { + fill: var(--lightbox-ui-color); +} +.elementor-lightbox .dialog-lightbox-close-button:hover, +.elementor-lightbox .elementor-swiper-button:hover { + color: var(--lightbox-ui-color-hover); +} +.elementor-lightbox .dialog-lightbox-close-button:hover svg, +.elementor-lightbox .elementor-swiper-button:hover svg { + fill: var(--lightbox-ui-color-hover); +} +.elementor-lightbox .swiper, +.elementor-lightbox .swiper-container { + height: 100%; +} +.elementor-lightbox .elementor-lightbox-item { + display: flex; + align-items: center; + justify-content: center; + position: relative; + padding: 70px; + box-sizing: border-box; + height: 100%; + margin: auto; +} +@media (max-width: ELEMENTOR_SCREEN_MOBILE_MAX) { + .elementor-lightbox .elementor-lightbox-item { + padding: 70px 0; + } +} +.elementor-lightbox .elementor-lightbox-image { + max-height: 100%; + user-select: none; +} +.elementor-lightbox .elementor-lightbox-image, .elementor-lightbox .elementor-lightbox-image:hover { + opacity: 1; + filter: none; + border: none; +} +.elementor-lightbox .elementor-lightbox-image { + box-shadow: 0 0 30px rgba(0, 0, 0, 0.3), 0 0 8px -5px rgba(0, 0, 0, 0.3); + border-radius: 2px; +} +.elementor-lightbox .elementor-video-container { + width: 100%; + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); +} +.elementor-lightbox .elementor-video-container .elementor-video-square, +.elementor-lightbox .elementor-video-container .elementor-video-landscape, +.elementor-lightbox .elementor-video-container .elementor-video-portrait { + width: 100%; + height: 100%; + margin: auto; +} +.elementor-lightbox .elementor-video-container .elementor-video-square iframe, +.elementor-lightbox .elementor-video-container .elementor-video-landscape iframe, +.elementor-lightbox .elementor-video-container .elementor-video-portrait iframe { + border: 0; + background-color: #000; +} +.elementor-lightbox .elementor-video-container .elementor-video-square iframe, +.elementor-lightbox .elementor-video-container .elementor-video-square video, +.elementor-lightbox .elementor-video-container .elementor-video-landscape iframe, +.elementor-lightbox .elementor-video-container .elementor-video-landscape video, +.elementor-lightbox .elementor-video-container .elementor-video-portrait iframe, +.elementor-lightbox .elementor-video-container .elementor-video-portrait video { + aspect-ratio: var(--video-aspect-ratio, 1.77777); +} +@supports not (aspect-ratio: 1/1) { + .elementor-lightbox .elementor-video-container .elementor-video-square, + .elementor-lightbox .elementor-video-container .elementor-video-landscape, + .elementor-lightbox .elementor-video-container .elementor-video-portrait { + position: relative; + overflow: hidden; + height: 0; + padding-bottom: calc(100% / var(--video-aspect-ratio, 1.77777)); + } + .elementor-lightbox .elementor-video-container .elementor-video-square iframe, + .elementor-lightbox .elementor-video-container .elementor-video-square video, + .elementor-lightbox .elementor-video-container .elementor-video-landscape iframe, + .elementor-lightbox .elementor-video-container .elementor-video-landscape video, + .elementor-lightbox .elementor-video-container .elementor-video-portrait iframe, + .elementor-lightbox .elementor-video-container .elementor-video-portrait video { + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + } +} +.elementor-lightbox .elementor-video-container .elementor-video-square iframe, +.elementor-lightbox .elementor-video-container .elementor-video-square video { + width: min(90vh, 90vw); + height: min(90vh, 90vw); +} +.elementor-lightbox .elementor-video-container .elementor-video-landscape iframe, +.elementor-lightbox .elementor-video-container .elementor-video-landscape video { + width: 100%; + max-height: 90vh; +} +.elementor-lightbox .elementor-video-container .elementor-video-portrait iframe, +.elementor-lightbox .elementor-video-container .elementor-video-portrait video { + height: 100%; + max-width: 90vw; +} +@media (min-width: ELEMENTOR_SCREEN_TABLET_NEXT) { + .elementor-lightbox .elementor-video-container .elementor-video-landscape { + width: 85vw; + max-height: 85vh; + } + .elementor-lightbox .elementor-video-container .elementor-video-portrait { + height: 85vh; + max-width: 85vw; + } +} +@media (max-width: ELEMENTOR_SCREEN_TABLET_MAX) { + .elementor-lightbox .elementor-video-container .elementor-video-landscape { + width: 95vw; + max-height: 95vh; + } + .elementor-lightbox .elementor-video-container .elementor-video-portrait { + height: 95vh; + max-width: 95vw; + } +} +.elementor-lightbox .swiper .elementor-swiper-button-prev, +.elementor-lightbox .swiper-container .elementor-swiper-button-prev { + left: 0; +} +.elementor-lightbox .swiper .elementor-swiper-button-next, +.elementor-lightbox .swiper-container .elementor-swiper-button-next { + right: 0; +} +.elementor-lightbox .swiper .swiper-pagination-fraction, +.elementor-lightbox .swiper-container .swiper-pagination-fraction { + width: max-content; + color: #ffffff; +} +.elementor-lightbox .elementor-swiper-button:focus { + outline-width: 1px; +} +.elementor-lightbox .elementor-swiper-button-prev, .elementor-lightbox .elementor-swiper-button-next { + height: 100%; + display: flex; + align-items: center; + width: 15%; + justify-content: center; + font-size: var(--lightbox-navigation-icons-size); +} +@media (max-width: ELEMENTOR_SCREEN_MOBILE_MAX) { + .elementor-lightbox .elementor-swiper-button:focus { + outline: none; + } + .elementor-lightbox .elementor-swiper-button-prev, .elementor-lightbox .elementor-swiper-button-next { + width: 20%; + } + .elementor-lightbox .elementor-swiper-button-prev i, .elementor-lightbox .elementor-swiper-button-next i { + padding: 10px; + background-color: rgba(0, 0, 0, 0.5); + } + .elementor-lightbox .elementor-swiper-button-prev { + left: 0; + justify-content: flex-start; + } + .elementor-lightbox .elementor-swiper-button-next { + right: 0; + justify-content: flex-end; + } +} + +.elementor-slideshow__counter { + color: currentColor; + font-size: 0.75em; + width: max-content; +} +.elementor-slideshow__header, .elementor-slideshow__footer { + position: absolute; + left: 0; + width: 100%; + padding: 15px 20px; + transition: 0.3s; +} +.elementor-slideshow__footer { + color: var(--lightbox-text-color); +} +.elementor-slideshow__header { + color: var(--lightbox-ui-color); + display: flex; + flex-direction: row-reverse; + font-size: var(--lightbox-header-icons-size); + padding-left: 1em; + padding-right: 2.6em; + top: 0; + align-items: center; + z-index: 10; +} +.elementor-slideshow__header > i, +.elementor-slideshow__header > svg { + cursor: pointer; + padding: 0.25em; + margin: 0 0.35em; +} +.elementor-slideshow__header > i { + font-size: inherit; +} +.elementor-slideshow__header > i:hover { + color: var(--lightbox-ui-color-hover); +} +.elementor-slideshow__header > svg { + box-sizing: content-box; + fill: var(--lightbox-ui-color); + height: 1em; + width: 1em; +} +.elementor-slideshow__header > svg:hover { + fill: var(--lightbox-ui-color-hover); +} +.elementor-slideshow__header .elementor-slideshow__counter { + margin-right: auto; +} +.elementor-slideshow__header .elementor-icon-share { + z-index: 5; +} +.elementor-slideshow__share-menu { + background-color: rgba(0, 0, 0, 0); + width: 0; + height: 0; + position: absolute; + overflow: hidden; + transition: background-color 400ms; +} +.elementor-slideshow__share-menu .elementor-slideshow__share-links a { + color: #0C0D0E; +} +.elementor-slideshow__share-links { + display: block; + position: absolute; + min-width: 200px; + right: 2.8em; + top: 3em; + background-color: #fff; + border-radius: 3px; + padding: 14px 20px; + transform: scale(0); + opacity: 0; + transform-origin: 90% 10%; + transition: all 250ms 100ms; + box-shadow: 0 4px 15px rgba(0, 0, 0, 0.3); +} +.elementor-slideshow__share-links a { + text-align: left; + color: #3f444b; + font-size: 12px; + line-height: 2.5; + display: block; + opacity: 0; + transition: opacity 500ms 100ms; +} +.elementor-slideshow__share-links a:hover { + color: #000; +} +.elementor-slideshow__share-links a i, +.elementor-slideshow__share-links a svg { + margin-right: 0.75em; +} +.elementor-slideshow__share-links a i { + font-size: 1.25em; +} +.elementor-slideshow__share-links a svg { + height: 1.25em; + width: 1.25em; +} +.elementor-slideshow__share-links:before { + content: ""; + display: block; + position: absolute; + top: 1px; + right: 0.5em; + border: 0.45em solid; + border-color: transparent transparent #fff transparent; + transform: translateY(-100%) scaleX(0.7); +} +.elementor-slideshow__footer { + bottom: 0; + z-index: 5; + position: fixed; +} +.elementor-slideshow__title, .elementor-slideshow__description { + margin: 0; +} +.elementor-slideshow__title { + font-size: 16px; + font-weight: bold; +} +.elementor-slideshow__description { + font-size: 14px; +} +.elementor-slideshow--ui-hidden .elementor-slideshow__header, .elementor-slideshow--ui-hidden .elementor-slideshow__footer { + opacity: 0; + pointer-events: none; +} +.elementor-slideshow--ui-hidden .elementor-swiper-button-prev, .elementor-slideshow--ui-hidden .elementor-swiper-button-next { + opacity: 0; +} +.elementor-slideshow--fullscreen-mode .elementor-video-container { + width: 100%; +} +.elementor-slideshow--zoom-mode .elementor-slideshow__header, .elementor-slideshow--zoom-mode .elementor-slideshow__footer { + background-color: rgba(0, 0, 0, 0.5); +} +.elementor-slideshow--zoom-mode .elementor-swiper-button-prev, .elementor-slideshow--zoom-mode .elementor-swiper-button-next { + opacity: 0; + pointer-events: none; +} +.elementor-slideshow--share-mode .elementor-slideshow__share-menu { + top: 0; + left: 0; + width: 100vw; + height: 100vh; + opacity: 1; + cursor: default; + background-color: rgba(0, 0, 0, 0.5); +} +.elementor-slideshow--share-mode .elementor-slideshow__share-links { + transform: scale(1); +} +.elementor-slideshow--share-mode .elementor-slideshow__share-links, .elementor-slideshow--share-mode .elementor-slideshow__share-links a { + opacity: 1; +} +.elementor-slideshow--share-mode .elementor-slideshow__share-links .eicon-twitter { + color: #1DA1F2; +} +.elementor-slideshow--share-mode .elementor-slideshow__share-links .eicon-facebook { + color: #3b5998; +} +.elementor-slideshow--share-mode .elementor-slideshow__share-links .eicon-pinterest { + color: #bd081c; +} +.elementor-slideshow--share-mode .elementor-slideshow__share-links .eicon-download-bold { + color: #9DA5AE; +} +.elementor-slideshow--share-mode .elementor-slideshow__share-links .e-eicon-twitter { + fill: #1DA1F2; +} +.elementor-slideshow--share-mode .elementor-slideshow__share-links .e-eicon-facebook { + fill: #3b5998; +} +.elementor-slideshow--share-mode .elementor-slideshow__share-links .e-eicon-pinterest { + fill: #bd081c; +} +.elementor-slideshow--share-mode .elementor-slideshow__share-links .e-eicon-download-bold { + fill: #9DA5AE; +} +.elementor-slideshow--share-mode .eicon-share-arrow { + z-index: 2; +} + +.animated { + animation-duration: 1.25s; +} +.animated.animated-slow { + animation-duration: 2s; +} +.animated.animated-fast { + animation-duration: 0.75s; +} +.animated.infinite { + animation-iteration-count: infinite; +} +.animated.reverse { + animation-direction: reverse; + animation-fill-mode: forwards; +} + +@media (prefers-reduced-motion: reduce) { + .animated { + animation: none; + } +} +.elementor-shape { + overflow: hidden; + position: absolute; + left: 0; + width: 100%; + line-height: 0; + direction: ltr; + /* + * @TODO: The `z-index: -1` rules below are temporary fixes for Chrome 85 issue. + * It will be removed in a future version of Chrome. + */ +} +.elementor-shape-top { + top: -1px; +} +.elementor-shape-top:not([data-negative=false]) svg { + z-index: -1; +} +.elementor-shape-bottom { + bottom: -1px; +} +.elementor-shape-bottom:not([data-negative=true]) svg { + z-index: -1; +} +.elementor-shape[data-negative=false].elementor-shape-bottom { + transform: rotate(180deg); +} +.elementor-shape[data-negative=true].elementor-shape-top { + transform: rotate(180deg); +} +.elementor-shape svg { + display: block; + width: calc(100% + 1.3px); + position: relative; + left: 50%; + transform: translateX(-50%); +} +.elementor-shape .elementor-shape-fill { + fill: #fff; + transform-origin: center; + transform: rotateY(0deg); +} + +#wp-admin-bar-elementor_edit_page > .ab-item::before { + content: "\e813"; + font-family: eicons; + top: 3px; + font-size: 18px; +} +#wp-admin-bar-elementor_edit_page .ab-submenu .ab-item { + display: flex; + width: 200px; +} +#wp-admin-bar-elementor_edit_page .elementor-edit-link-title { + white-space: nowrap; + text-overflow: ellipsis; + overflow: hidden; + width: 100%; +} +#wp-admin-bar-elementor_edit_page .elementor-edit-link-type { + background: #3f444b; + font-size: 11px; + line-height: 9px; + margin-top: 6px; + padding: 4px 8px; + border-radius: 3px; +} + +#wp-admin-bar-elementor_inspector > .ab-item::before { + content: "\f348"; + top: 2px; +} + +#wpadminbar * { + font-style: normal; +} + +.page-template-elementor_canvas.elementor-page:before { + display: none; +} + +.elementor-post__thumbnail__link { + transition: none; +} + +#left-area ul.elementor-icon-list-items, +.elementor .elementor-element ul.elementor-icon-list-items, +.elementor-edit-area .elementor-element ul.elementor-icon-list-items { + padding: 0; +} + +.e--ua-appleWebkit.rtl { + --flex-right: flex-start; +} +.e--ua-appleWebkit .elementor-widget-social-icons.e-grid-align-right, +.e--ua-appleWebkit .elementor-share-buttons--align-right { + --justify-content: var(--flex-right, flex-end); +} +.e--ua-appleWebkit .elementor-widget-social-icons.e-grid-align-center, +.e--ua-appleWebkit .elementor-share-buttons--align-center { + --justify-content: center; +} +.e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-right .elementor-grid, .e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-center .elementor-grid, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-right .elementor-grid, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-center .elementor-grid, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-justify .elementor-grid { + width: auto; + display: flex; + flex-wrap: wrap; + justify-content: var(--justify-content, space-between); + margin-left: calc(-0.5 * var(--grid-column-gap)); + margin-right: calc(-0.5 * var(--grid-column-gap)); +} +.e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-right .elementor-grid-item, .e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-center .elementor-grid-item, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-right .elementor-grid-item, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-center .elementor-grid-item, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-justify .elementor-grid-item { + margin-left: calc(0.5 * var(--grid-column-gap)); + margin-right: calc(0.5 * var(--grid-column-gap)); +} +.e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-left .elementor-grid, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-left .elementor-grid { + display: inline-block; +} +.e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-left .elementor-grid, .e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-left .elementor-grid-item, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-left .elementor-grid, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-left .elementor-grid-item { + margin-left: 0; + margin-right: 0; +} +@media (max-width: ELEMENTOR_SCREEN_TABLET_MAX) { + .e--ua-appleWebkit .elementor-widget-social-icons.e-grid-align-tablet-right, + .e--ua-appleWebkit .elementor-share-buttons-tablet--align-right { + --justify-content: var(--flex-right, flex-end); + } + .e--ua-appleWebkit .elementor-widget-social-icons.e-grid-align-tablet-center, + .e--ua-appleWebkit .elementor-share-buttons-tablet--align-center { + --justify-content: center; + } + .e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-tablet-right .elementor-grid, .e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-tablet-center .elementor-grid, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-tablet-right .elementor-grid, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-tablet-center .elementor-grid, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-tablet-justify .elementor-grid { + width: auto; + display: flex; + flex-wrap: wrap; + justify-content: var(--justify-content, space-between); + margin-left: calc(-0.5 * var(--grid-column-gap)); + margin-right: calc(-0.5 * var(--grid-column-gap)); + } + .e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-tablet-right .elementor-grid-item, .e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-tablet-center .elementor-grid-item, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-tablet-right .elementor-grid-item, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-tablet-center .elementor-grid-item, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-tablet-justify .elementor-grid-item { + margin-left: calc(0.5 * var(--grid-column-gap)); + margin-right: calc(0.5 * var(--grid-column-gap)); + } + .e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-tablet-left .elementor-grid, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons-tablet--align-left .elementor-grid { + display: inline-block; + } + .e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-tablet-left .elementor-grid, .e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-tablet-left .elementor-grid-item, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons-tablet--align-left .elementor-grid, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons-tablet--align-left .elementor-grid-item { + margin-left: 0; + margin-right: 0; + } +} +@media (max-width: ELEMENTOR_SCREEN_MOBILE_MAX) { + .e--ua-appleWebkit .elementor-widget-social-icons.e-grid-align-mobile-right, + .e--ua-appleWebkit .elementor-share-buttons-mobile--align-right { + --justify-content: var(--flex-right, flex-end); + } + .e--ua-appleWebkit .elementor-widget-social-icons.e-grid-align-mobile-center, + .e--ua-appleWebkit .elementor-share-buttons-mobile--align-center { + --justify-content: center; + } + .e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-mobile-right .elementor-grid, .e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-mobile-center .elementor-grid, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-mobile-right .elementor-grid, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-mobile-center .elementor-grid, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-mobile-justify .elementor-grid { + width: auto; + display: flex; + flex-wrap: wrap; + justify-content: var(--justify-content, space-between); + margin-left: calc(-0.5 * var(--grid-column-gap)); + margin-right: calc(-0.5 * var(--grid-column-gap)); + } + .e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-mobile-right .elementor-grid-item, .e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-mobile-center .elementor-grid-item, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-mobile-right .elementor-grid-item, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-mobile-center .elementor-grid-item, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-mobile-justify .elementor-grid-item { + margin-left: calc(0.5 * var(--grid-column-gap)); + margin-right: calc(0.5 * var(--grid-column-gap)); + } + .e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-mobile-left .elementor-grid, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons-mobile--align-left .elementor-grid { + display: inline-block; + } + .e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-mobile-left .elementor-grid, .e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-mobile-left .elementor-grid-item, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons-mobile--align-left .elementor-grid, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons-mobile--align-left .elementor-grid-item { + margin-left: 0; + margin-right: 0; + } +} + +@media (max-width: ELEMENTOR_SCREEN_MOBILE_MAX) { + .elementor .elementor-hidden-mobile { + display: none; + } + .elementor .elementor-hidden-phone { + display: none; + } +} +@media (min-width: ELEMENTOR_SCREEN_MOBILE_EXTRA_MIN) and (max-width: ELEMENTOR_SCREEN_MOBILE_EXTRA_MAX) { + .elementor .elementor-hidden-mobile_extra { + display: none; + } +} +@media (min-width: ELEMENTOR_SCREEN_TABLET_MIN) and (max-width: ELEMENTOR_SCREEN_TABLET_MAX) { + .elementor .elementor-hidden-tablet { + display: none; + } +} +@media (min-width: ELEMENTOR_SCREEN_TABLET_EXTRA_MIN) and (max-width: ELEMENTOR_SCREEN_TABLET_EXTRA_MAX) { + .elementor .elementor-hidden-tablet_extra { + display: none; + } +} +@media (min-width: ELEMENTOR_SCREEN_LAPTOP_MIN) and (max-width: ELEMENTOR_SCREEN_LAPTOP_MAX) { + .elementor .elementor-hidden-laptop { + display: none; + } +} +@media (min-width: ELEMENTOR_SCREEN_DESKTOP_MIN) and (max-width: ELEMENTOR_SCREEN_DESKTOP_MAX) { + .elementor .elementor-hidden-desktop { + display: none; + } +} +@media (min-width: ELEMENTOR_SCREEN_WIDESCREEN_MIN) { + .elementor .elementor-hidden-widescreen { + display: none; + } +} + +.elementor-widget-text-path { + font-size: 20px; + text-align: var(--alignment, left); +} +.elementor-widget-text-path svg { + width: var(--width); + max-width: 100%; + height: auto; + overflow: visible; + word-spacing: var(--word-spacing); + transform: rotate(var(--rotate, 0)) scaleX(var(--scale-x, 1)) scaleY(var(--scale-y, 1)); +} +.elementor-widget-text-path svg path { + vector-effect: non-scaling-stroke; /* Prevent stroke size scaling when resizing the SVG. */ + fill: var(--path-fill, transparent); + stroke: var(--stroke-color, transparent); + stroke-width: var(--stroke-width, 1px); + transition: var(--stroke-transition) stroke, var(--stroke-transition) fill; +} +.elementor-widget-text-path svg:hover path { + --path-fill: var( --path-fill-hover ); + --stroke-color: var( --stroke-color-hover ); + --stroke-width: var( --stroke-width-hover ); +} +.elementor-widget-text-path svg text { + --fill: var( --text-color ); + fill: var(--fill); + direction: var(--direction, ltr); + transition: var(--transition) stroke, var(--transition) stroke-width, var(--transition) fill; +} +.elementor-widget-text-path svg text:hover { + --color: var( --text-color-hover, var( --text-color ) ); + --fill: var( --color ); + color: var(--color); +} + +.elementor-widget-n-tabs { + --n-tabs-color-accent-fallback: #61CE70; + --n-tabs-color-secondary-fallback: #54595F; + --n-tabs-default-padding-block: 15px; + --n-tabs-default-padding-inline: 35px; + --n-tabs-background-color: transparent; + --n-tabs-display: flex; + --n-tabs-direction: column; + --n-tabs-gap: 10px; + --n-tabs-heading-display: flex; + --n-tabs-heading-direction: row; + --n-tabs-heading-grow: initial; + --n-tabs-heading-justify-content: center; + --n-tabs-heading-width: initial; + --n-tabs-heading-overflow-x: initial; + --n-tabs-heading-wrap: nowrap; + --n-tabs-border-width: 1px; + --n-tabs-border-color: #D5D8DC; + --n-tabs-content-display: flex; + --n-tabs-title-color: var(--e-global-color-secondary, var(--n-tabs-color-secondary-fallback)); + --n-tabs-title-color-hover: #ffffff; + --n-tabs-title-color-active: #ffffff; + --n-tabs-title-background-color: #F1F2F3; + --n-tabs-title-background-color-hover: var(--e-global-color-accent, var(--n-tabs-color-accent-fallback)); + --n-tabs-title-background-color-active: var(--e-global-color-accent, var(--n-tabs-color-accent-fallback)); + --n-tabs-title-width: initial; + --n-tabs-title-height: initial; + --n-tabs-title-font-size: 1rem; + --n-tabs-title-white-space: initial; + --n-tabs-title-justify-content-toggle: initial; + --n-tabs-title-align-items-toggle: center; + --n-tabs-title-justify-content: center; + --n-tabs-title-align-items: center; + --n-tabs-title-text-align: center; + --n-tabs-title-direction: row; + --n-tabs-title-gap: 10px; + --n-tabs-title-flex-grow: 0; + --n-tabs-title-flex-basis: content; + --n-tabs-title-flex-shrink: initial; + --n-tabs-title-order: initial; + --n-tabs-title-padding-block-start: var(--n-tabs-default-padding-block); + --n-tabs-title-padding-inline-end: var(--n-tabs-default-padding-inline); + --n-tabs-title-padding-block-end: var(--n-tabs-default-padding-block); + --n-tabs-title-padding-inline-start: var(--n-tabs-default-padding-inline); + --n-tabs-title-border-radius: initial; + --n-tabs-title-transition: 0.3s; + --n-tabs-icon-color: var(--e-global-color-secondary, var(--n-tabs-color-secondary-fallback)); + --n-tabs-icon-color-hover: var(--n-tabs-title-color-hover); + --n-tabs-icon-color-active: #ffffff; + --n-tabs-icon-gap: 5px; + width: 100%; + max-width: 100%; /* Fix issue with new created n-tabs inside n-tabs with overflow */ +} +.elementor-widget-n-tabs .e-n-tabs { + display: var(--n-tabs-display); + flex-direction: var(--n-tabs-direction); + gap: var(--n-tabs-gap); + text-align: start; + min-width: 0; +} +.elementor-widget-n-tabs .e-n-tabs-heading { + display: var(--n-tabs-heading-display); + flex-basis: var(--n-tabs-heading-width); + flex-direction: var(--n-tabs-heading-direction); + flex-shrink: 0; + justify-content: var(--n-tabs-heading-justify-content); + gap: var(--n-tabs-title-gap); + overflow-x: var(--n-tabs-heading-overflow-x); + flex-wrap: var(--n-tabs-heading-wrap); + -ms-overflow-style: none; /* IE and Edge */ + scrollbar-width: none; /* Firefox */ +} +.elementor-widget-n-tabs .e-n-tabs-heading::-webkit-scrollbar { + display: none; /* Hide scrollbar for Chrome, Safari and Opera */ +} +.elementor-widget-n-tabs .e-n-tabs-heading.e-scroll { + cursor: grabbing; + cursor: -webkit-grabbing; +} +.elementor-widget-n-tabs .e-n-tabs-heading.e-scroll-active { + position: relative; +} +.elementor-widget-n-tabs .e-n-tabs-heading.e-scroll-active::before { + content: ""; + position: absolute; + inset-block: 0; + inset-inline: -1000vw; + z-index: 2; +} +.elementor-widget-n-tabs .e-n-tabs-content { + display: var(--n-tabs-content-display); + flex-grow: 1; + min-width: 0; +} +.elementor-widget-n-tabs .e-n-tabs-content > .e-con:not(.e-active) { + display: none; +} +.elementor-widget-n-tabs .e-n-tabs:not(.e-activated) > .e-n-tabs-content > .e-con:nth-child(1) { + display: flex; +} +.elementor-widget-n-tabs .e-n-tab-title { + all: unset; + user-select: none; + display: flex; + align-items: var(--n-tabs-title-align-items-toggle, var(--n-tabs-title-align-items)); + flex-direction: var(--n-tabs-title-direction); + justify-content: var(--n-tabs-title-justify-content-toggle, var(--n-tabs-title-justify-content)); + gap: var(--n-tabs-icon-gap); + border-width: var(--n-tabs-border-width); + position: relative; + cursor: pointer; + outline: none; + flex-grow: var(--n-tabs-title-flex-grow); + flex-basis: var(--n-tabs-title-flex-basis); + flex-shrink: var(--n-tabs-title-flex-shrink); + padding-block-start: var(--n-tabs-title-padding-block-start); + padding-inline-end: var(--n-tabs-title-padding-inline-end); + padding-block-end: var(--n-tabs-title-padding-block-end); + padding-inline-start: var(--n-tabs-title-padding-inline-start); + border-radius: var(--n-tabs-title-border-radius); + height: var(--n-tabs-title-height); + width: var(--n-tabs-title-width); + white-space: var(--n-tabs-title-white-space); + transition: background var(--n-tabs-title-transition), color var(--n-tabs-title-transition), border var(--n-tabs-title-transition), box-shadow var(--n-tabs-title-transition), text-shadow var(--n-tabs-title-transition), stroke var(--n-tabs-title-transition), stroke-width var(--n-tabs-title-transition), -webkit-text-stroke-width var(--n-tabs-title-transition), -webkit-text-stroke-color var(--n-tabs-title-transition), transform var(--n-tabs-title-transition); +} +.elementor-widget-n-tabs .e-n-tab-title:focus-visible { + outline: 5px auto -webkit-focus-ring-color; +} +.elementor-widget-n-tabs .e-n-tab-title span svg, .elementor-widget-n-tabs .e-n-tab-title span i { + transition: color var(--n-tabs-title-transition), fill var(--n-tabs-title-transition); +} +.elementor-widget-n-tabs .e-n-tab-title-text { + display: flex; + align-items: center; + font-size: var(--n-tabs-title-font-size); + text-align: var(--n-tabs-title-text-align); +} +.elementor-widget-n-tabs .e-n-tab-title .e-n-tab-icon { + display: flex; + align-items: center; + flex-direction: column; + flex-shrink: 0; + order: var(--n-tabs-icon-order); + overflow: hidden; +} +.elementor-widget-n-tabs .e-n-tab-title .e-n-tab-icon i { + font-size: var(--n-tabs-icon-size, var(--n-tabs-title-font-size)); +} +.elementor-widget-n-tabs .e-n-tab-title .e-n-tab-icon svg { + width: var(--n-tabs-icon-size, var(--n-tabs-title-font-size)); + height: var(--n-tabs-icon-size, var(--n-tabs-title-font-size)); +} +.elementor-widget-n-tabs .e-n-tab-title .e-n-tab-icon:empty { + display: none; +} +.elementor-widget-n-tabs .e-n-tab-title[aria-selected=false] { + background-color: var(--n-tabs-title-background-color); +} +.elementor-widget-n-tabs .e-n-tab-title[aria-selected=false], .elementor-widget-n-tabs .e-n-tab-title[aria-selected=false] a { + color: var(--n-tabs-title-color); +} +.elementor-widget-n-tabs .e-n-tab-title[aria-selected=false] .e-n-tab-icon i { + color: var(--n-tabs-icon-color); +} +.elementor-widget-n-tabs .e-n-tab-title[aria-selected=false] .e-n-tab-icon svg { + fill: var(--n-tabs-icon-color); +} +.elementor-widget-n-tabs .e-n-tab-title[aria-selected=false] .e-n-tab-icon i:last-child, +.elementor-widget-n-tabs .e-n-tab-title[aria-selected=false] .e-n-tab-icon svg:last-child { + transform: translate(0, -100vh); + height: 0; + opacity: 0; +} +.elementor-widget-n-tabs .e-n-tab-title[aria-selected=true], .elementor-widget-n-tabs .e-n-tab-title[aria-selected=true] a { + color: var(--n-tabs-title-color-active); +} +.elementor-widget-n-tabs .e-n-tab-title[aria-selected=true] .e-n-tab-icon i { + color: var(--n-tabs-icon-color-active); +} +.elementor-widget-n-tabs .e-n-tab-title[aria-selected=true] .e-n-tab-icon svg { + fill: var(--n-tabs-icon-color-active); +} +.elementor-widget-n-tabs .e-n-tab-title[aria-selected=true] .e-n-tab-icon i:first-child, +.elementor-widget-n-tabs .e-n-tab-title[aria-selected=true] .e-n-tab-icon svg:first-child { + transform: translate(0, -100vh); + height: 0; + opacity: 0; +} +.elementor-widget-n-tabs .e-n-tab-title[aria-selected=true][class*=elementor-animation-]:focus, .elementor-widget-n-tabs .e-n-tab-title[aria-selected=true][class*=elementor-animation-]:active, .elementor-widget-n-tabs .e-n-tab-title[aria-selected=true][class*=elementor-animation-]:hover { + transform: initial; + animation: initial; +} +.elementor-widget-n-tabs [data-touch-mode=false] .e-n-tab-title[aria-selected=false]:hover, .elementor-widget-n-tabs [data-touch-mode=false] .e-n-tab-title[aria-selected=false]:hover a { + color: var(--n-tabs-title-color-hover); +} +.elementor-widget-n-tabs [data-touch-mode=false] .e-n-tab-title[aria-selected=false]:hover .e-n-tab-icon i { + color: var(--n-tabs-icon-color-hover); +} +.elementor-widget-n-tabs [data-touch-mode=false] .e-n-tab-title[aria-selected=false]:hover .e-n-tab-icon svg { + fill: var(--n-tabs-icon-color-hover); +} +.elementor-widget-n-tabs [data-touch-mode=true] .e-n-tab-title[aria-selected=false]:hover, .elementor-widget-n-tabs [data-touch-mode=true] .e-n-tab-title[aria-selected=false]:hover a { + color: var(--n-tabs-title-color-active); +} +.elementor-widget-n-tabs [data-touch-mode=true] .e-n-tab-title[aria-selected=false]:hover .e-n-tab-icon i { + color: var(--n-tabs-icon-color-active); +} +.elementor-widget-n-tabs [data-touch-mode=true] .e-n-tab-title[aria-selected=false]:hover .e-n-tab-icon svg { + fill: var(--n-tabs-icon-color-active); +} +.elementor-widget-n-tabs [data-touch-mode=true] .e-n-tab-title[aria-selected=false]:hover .e-n-tab-icon i:first-child, +.elementor-widget-n-tabs [data-touch-mode=true] .e-n-tab-title[aria-selected=false]:hover .e-n-tab-icon svg:first-child { + transform: translate(0, -100vh); + height: 0; + opacity: 0; +} +.elementor-widget-n-tabs [data-touch-mode=true] .e-n-tab-title[aria-selected=false]:hover[class*=elementor-animation-]:focus, .elementor-widget-n-tabs [data-touch-mode=true] .e-n-tab-title[aria-selected=false]:hover[class*=elementor-animation-]:active, .elementor-widget-n-tabs [data-touch-mode=true] .e-n-tab-title[aria-selected=false]:hover[class*=elementor-animation-]:hover { + transform: initial; + animation: initial; +} +.elementor-widget-n-tabs [data-touch-mode=true] .e-n-tab-title[aria-selected=false]:hover .e-n-tab-icon i:last-child, +.elementor-widget-n-tabs [data-touch-mode=true] .e-n-tab-title[aria-selected=false]:hover .e-n-tab-icon svg:last-child { + transform: initial; + height: initial; + opacity: initial; +} + +.elementor .elementor-element.elementor-widget-n-tabs > .elementor-widget-container > .e-n-tabs[data-touch-mode=false] > .e-n-tabs-heading .e-n-tab-title[aria-selected=false]:hover { + background-color: var(--n-tabs-title-background-color-hover); + background-image: initial; +} + +.elementor .elementor-element.elementor-widget-n-tabs > .elementor-widget-container > .e-n-tabs > .e-n-tabs-heading .e-n-tab-title[aria-selected=true], +.elementor .elementor-element.elementor-widget-n-tabs > .elementor-widget-container > .e-n-tabs[data-touch-mode=true] > .e-n-tabs-heading .e-n-tab-title[aria-selected=false]:hover { + background-color: var(--n-tabs-title-background-color-active); + background-image: initial; +} + +@media (max-width: ELEMENTOR_SCREEN_MOBILE_MAX) { + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-mobile { + --n-tabs-direction: column; + --n-tabs-heading-display: contents; + --n-tabs-content-display: contents; + } + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-mobile .e-n-tabs { + gap: 0; + } + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-mobile .e-n-tabs-content > .e-con { + order: var(--n-tabs-title-order); + } + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-mobile .e-n-tab-title { + order: var(--n-tabs-title-order); + width: initial; + } + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-mobile .e-n-tab-title:not(:first-child) { + margin-block-start: var(--n-tabs-title-gap); + } + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-mobile .e-n-tab-title[aria-selected=true] { + margin-block-end: var(--n-tabs-gap); + } +} +@media (max-width: ELEMENTOR_SCREEN_MOBILE_EXTRA_MAX) { + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-mobile_extra { + --n-tabs-direction: column; + --n-tabs-heading-display: contents; + --n-tabs-content-display: contents; + } + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-mobile_extra .e-n-tabs { + gap: 0; + } + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-mobile_extra .e-n-tabs-content > .e-con { + order: var(--n-tabs-title-order); + } + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-mobile_extra .e-n-tab-title { + order: var(--n-tabs-title-order); + width: initial; + } + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-mobile_extra .e-n-tab-title:not(:first-child) { + margin-block-start: var(--n-tabs-title-gap); + } + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-mobile_extra .e-n-tab-title[aria-selected=true] { + margin-block-end: var(--n-tabs-gap); + } +} +@media (max-width: ELEMENTOR_SCREEN_TABLET_MAX) { + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-tablet { + --n-tabs-direction: column; + --n-tabs-heading-display: contents; + --n-tabs-content-display: contents; + } + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-tablet .e-n-tabs { + gap: 0; + } + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-tablet .e-n-tabs-content > .e-con { + order: var(--n-tabs-title-order); + } + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-tablet .e-n-tab-title { + order: var(--n-tabs-title-order); + width: initial; + } + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-tablet .e-n-tab-title:not(:first-child) { + margin-block-start: var(--n-tabs-title-gap); + } + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-tablet .e-n-tab-title[aria-selected=true] { + margin-block-end: var(--n-tabs-gap); + } +} +@media (max-width: ELEMENTOR_SCREEN_TABLET_EXTRA_MAX) { + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-tablet_extra { + --n-tabs-direction: column; + --n-tabs-heading-display: contents; + --n-tabs-content-display: contents; + } + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-tablet_extra .e-n-tabs { + gap: 0; + } + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-tablet_extra .e-n-tabs-content > .e-con { + order: var(--n-tabs-title-order); + } + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-tablet_extra .e-n-tab-title { + order: var(--n-tabs-title-order); + width: initial; + } + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-tablet_extra .e-n-tab-title:not(:first-child) { + margin-block-start: var(--n-tabs-title-gap); + } + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-tablet_extra .e-n-tab-title[aria-selected=true] { + margin-block-end: var(--n-tabs-gap); + } +} +@media (max-width: ELEMENTOR_SCREEN_LAPTOP_MAX) { + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-laptop { + --n-tabs-direction: column; + --n-tabs-heading-display: contents; + --n-tabs-content-display: contents; + } + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-laptop .e-n-tabs { + gap: 0; + } + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-laptop .e-n-tabs-content > .e-con { + order: var(--n-tabs-title-order); + } + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-laptop .e-n-tab-title { + order: var(--n-tabs-title-order); + width: initial; + } + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-laptop .e-n-tab-title:not(:first-child) { + margin-block-start: var(--n-tabs-title-gap); + } + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-laptop .e-n-tab-title[aria-selected=true] { + margin-block-end: var(--n-tabs-gap); + } +} +.elementor-widget-n-accordion { + --n-accordion-title-font-size: 20px; + --n-accordion-title-flex-grow: initial; + --n-accordion-title-justify-content: initial; + --n-accordion-title-icon-order: -1; + --n-accordion-border-width: 1px; + --n-accordion-border-color: #D5D8DC; + --n-accordion-border-style: solid; + --n-accordion-item-title-flex-grow: initial; + --n-accordion-item-title-space-between: 0px; + --n-accordion-item-title-distance-from-content: 0px; + --n-accordion-padding: 10px; + --n-accordion-border-radius: 0px; + --n-accordion-icon-size: 15px; + --n-accordion-title-normal-color: #1f2124; + --n-accordion-title-hover-color: #1f2124; + --n-accordion-title-active-color: #1f2124; + --n-accordion-icon-normal-color: var(--n-accordion-title-normal-color); + --n-accordion-icon-hover-color: var(--n-accordion-title-hover-color); + --n-accordion-icon-active-color: var(--n-accordion-title-active-color); + --n-accordion-icon-gap: 0 10px; + width: 100%; +} +.elementor-widget-n-accordion .e-n-accordion details > summary::-webkit-details-marker { + display: none; +} +.elementor-widget-n-accordion .e-n-accordion-item { + display: flex; + flex-direction: column; + position: relative; +} +.elementor-widget-n-accordion .e-n-accordion-item:not(:last-child) { + margin-block-end: var(--n-accordion-item-title-space-between); +} +:where(.elementor-widget-n-accordion .e-n-accordion-item > .e-con) { + border: var(--n-accordion-border-width) var(--n-accordion-border-style) var(--n-accordion-border-color); +} +.elementor-widget-n-accordion .e-n-accordion-item-title { + display: flex; + flex-direction: row; + list-style: none; + padding: var(--n-accordion-padding); + border-width: var(--n-accordion-border-width); + border-color: var(--n-accordion-border-color); + border-style: var(--n-accordion-border-style); + justify-content: var(--n-accordion-title-justify-content); + border-radius: var(--n-accordion-border-radius); + flex-grow: var(--n-menu-title-flex-grow); + gap: var(--n-accordion-icon-gap); + color: var(--n-accordion-title-normal-color); + align-items: center; + cursor: pointer; +} +.elementor-widget-n-accordion .e-n-accordion-item-title-header { + display: flex; +} +.elementor-widget-n-accordion .e-n-accordion-item-title-header h1, .elementor-widget-n-accordion .e-n-accordion-item-title-header h2, .elementor-widget-n-accordion .e-n-accordion-item-title-header h3, .elementor-widget-n-accordion .e-n-accordion-item-title-header h4, .elementor-widget-n-accordion .e-n-accordion-item-title-header h5, .elementor-widget-n-accordion .e-n-accordion-item-title-header h6, .elementor-widget-n-accordion .e-n-accordion-item-title-header p { + margin-block-start: 0; + margin-block-end: 0; +} +.elementor-widget-n-accordion .e-n-accordion-item-title-text { + font-size: var(--n-accordion-title-font-size); + align-items: center; +} +.elementor-widget-n-accordion .e-n-accordion-item-title-icon { + display: flex; + flex-direction: row; + align-items: center; + order: var(--n-accordion-title-icon-order); + position: relative; + width: fit-content; +} +.elementor-widget-n-accordion .e-n-accordion-item-title-icon span { + height: var(--n-accordion-icon-size); + width: auto; +} +.elementor-widget-n-accordion .e-n-accordion-item-title-icon span > i { + color: var(--n-accordion-icon-normal-color); + font-size: var(--n-accordion-icon-size); +} +.elementor-widget-n-accordion .e-n-accordion-item-title-icon span > svg { + fill: var(--n-accordion-icon-normal-color); + height: var(--n-accordion-icon-size); +} +.elementor-widget-n-accordion .e-n-accordion-item-title > span { + cursor: pointer; +} +.elementor-widget-n-accordion .e-n-accordion-item[open] .e-n-accordion-item-title { + margin-block-end: var(--n-accordion-item-title-distance-from-content); + color: var(--n-accordion-title-active-color); +} +.elementor-widget-n-accordion .e-n-accordion-item[open] .e-n-accordion-item-title-icon .e-opened { + display: flex; +} +.elementor-widget-n-accordion .e-n-accordion-item[open] .e-n-accordion-item-title-icon .e-closed { + display: none; +} +.elementor-widget-n-accordion .e-n-accordion-item[open] .e-n-accordion-item-title-icon span > i { + color: var(--n-accordion-icon-active-color); +} +.elementor-widget-n-accordion .e-n-accordion-item[open] .e-n-accordion-item-title-icon span > svg { + fill: var(--n-accordion-icon-active-color); +} +.elementor-widget-n-accordion .e-n-accordion-item:not([open]):hover .e-n-accordion-item-title { + color: var(--n-accordion-title-hover-color); +} +.elementor-widget-n-accordion .e-n-accordion-item:not([open]):hover .e-n-accordion-item-title-icon span > i { + color: var(--n-accordion-icon-hover-color); +} +.elementor-widget-n-accordion .e-n-accordion-item:not([open]):hover .e-n-accordion-item-title-icon span > svg { + fill: var(--n-accordion-icon-hover-color); +} +.elementor-widget-n-accordion .e-n-accordion-item .e-n-accordion-item-title-icon .e-opened { + display: none; +} +.elementor-widget-n-accordion .e-n-accordion-item .e-n-accordion-item-title-icon .e-closed { + display: flex; +} +.elementor-widget-n-accordion .e-n-accordion-item .e-n-accordion-item-title-icon span > svg { + fill: var(--n-accordion-icon-normal-color); +} +.elementor-widget-n-accordion .e-n-accordion-item .e-n-accordion-item-title-icon span > i { + color: var(--n-accordion-icon-normal-color); +} +.elementor-widget-n-accordion .e-n-accordion-item > span { + cursor: pointer; +} + +/*# sourceMappingURL=frontend-lite.css.map */ \ No newline at end of file diff --git a/wp-content/plugins/elementor/assets/css/templates/frontend-lite.min.css b/wp-content/plugins/elementor/assets/css/templates/frontend-lite.min.css new file mode 100644 index 0000000..bce9901 --- /dev/null +++ b/wp-content/plugins/elementor/assets/css/templates/frontend-lite.min.css @@ -0,0 +1 @@ +.dialog-widget-content{background-color:var(--e-a-bg-default);position:absolute;border-radius:3px;box-shadow:2px 8px 23px 3px rgba(0,0,0,.2);overflow:hidden}.dialog-message{line-height:1.5;box-sizing:border-box}.dialog-close-button{cursor:pointer;position:absolute;margin-block-start:15px;right:15px;color:var(--e-a-color-txt);font-size:15px;line-height:1;transition:var(--e-a-transition-hover)}.dialog-close-button:hover{color:var(--e-a-color-txt-hover)}.dialog-prevent-scroll{overflow:hidden;max-height:100vh}.dialog-type-lightbox{position:fixed;height:100%;width:100%;bottom:0;left:0;background-color:rgba(0,0,0,.8);z-index:9999;-webkit-user-select:none;-moz-user-select:none;user-select:none}.elementor-editor-active .elementor-popup-modal{background-color:initial}.dialog-type-alert .dialog-widget-content,.dialog-type-confirm .dialog-widget-content{margin:auto;width:400px;padding:20px}.dialog-type-alert .dialog-header,.dialog-type-confirm .dialog-header{font-size:15px;font-weight:500}.dialog-type-alert .dialog-header:after,.dialog-type-confirm .dialog-header:after{content:"";display:block;border-block-end:var(--e-a-border);padding-block-end:10px;margin-block-end:10px;margin-inline-start:-20px;margin-inline-end:-20px}.dialog-type-alert .dialog-message,.dialog-type-confirm .dialog-message{min-height:50px}.dialog-type-alert .dialog-buttons-wrapper,.dialog-type-confirm .dialog-buttons-wrapper{padding-block-start:10px;display:flex;justify-content:flex-end;gap:15px}.dialog-type-alert .dialog-buttons-wrapper .dialog-button,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button{font-size:12px;font-weight:500;line-height:1.2;padding:8px 16px;outline:none;border:none;border-radius:var(--e-a-border-radius);background-color:var(--e-a-btn-bg);color:var(--e-a-btn-color-invert);transition:var(--e-a-transition-hover)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:hover{border:none}.dialog-type-alert .dialog-buttons-wrapper .dialog-button:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:hover{background-color:var(--e-a-btn-bg-hover);color:var(--e-a-btn-color-invert)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button:active,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:active{background-color:var(--e-a-btn-bg-active)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button:not([disabled]),.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:not([disabled]){cursor:pointer}.dialog-type-alert .dialog-buttons-wrapper .dialog-button:disabled,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:disabled{background-color:var(--e-a-btn-bg-disabled);color:var(--e-a-btn-color-disabled)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button:not(.elementor-button-state) .elementor-state-icon,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:not(.elementor-button-state) .elementor-state-icon{display:none}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt{background:transparent;color:var(--e-a-color-txt)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel:hover,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt:hover{background:var(--e-a-bg-hover);color:var(--e-a-color-txt-hover)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel:disabled,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt:disabled,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel:disabled,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt:disabled{background:transparent;color:var(--e-a-color-txt-disabled)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt-border,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt-border{border:1px solid var(--e-a-color-txt-muted)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-success,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-success,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-success,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-success{background-color:var(--e-a-btn-bg-success)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-success:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-success:hover,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-success:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-success:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-success:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-success:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-success:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-success:hover{background-color:var(--e-a-btn-bg-success-hover)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-take_over,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-take_over,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary{background-color:var(--e-a-btn-bg-primary);color:var(--e-a-btn-color)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok:hover,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-take_over:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-take_over:hover,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-take_over:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-take_over:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary:hover{background-color:var(--e-a-btn-bg-primary-hover);color:var(--e-a-btn-color)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-ok,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-take_over,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary.dialog-cancel,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary.e-btn-txt,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-ok,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-take_over,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary.dialog-cancel,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary.e-btn-txt{background:transparent;color:var(--e-a-color-primary-bold)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over:hover,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel:hover,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-ok:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-ok:hover,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-take_over:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-take_over:hover,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary.dialog-cancel:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary.dialog-cancel:hover,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary.e-btn-txt:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary.e-btn-txt:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-ok:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-ok:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-take_over:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-take_over:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary.dialog-cancel:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary.dialog-cancel:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary.e-btn-txt:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary.e-btn-txt:hover{background:var(--e-a-bg-primary)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-accent,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.go-pro,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-accent,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.go-pro{background-color:var(--e-a-btn-bg-accent)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-accent:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-accent:hover,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.go-pro:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.go-pro:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-accent:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-accent:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.go-pro:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.go-pro:hover{background-color:var(--e-a-btn-bg-accent-hover)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-accent:active,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.go-pro:active,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-accent:active,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.go-pro:active{background-color:var(--e-a-btn-bg-accent-active)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-info,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-info,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-info,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-info{background-color:var(--e-a-btn-bg-info)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-info:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-info:hover,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-info:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-info:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-info:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-info:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-info:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-info:hover{background-color:var(--e-a-btn-bg-info-hover)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-warning,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-warning,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-warning,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-warning{background-color:var(--e-a-btn-bg-warning)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-warning:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-warning:hover,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-warning:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-warning:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-warning:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-warning:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-warning:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-warning:hover{background-color:var(--e-a-btn-bg-warning-hover)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-danger,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-danger,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-danger,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-danger{background-color:var(--e-a-btn-bg-danger)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-danger:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-danger:hover,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-danger:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-danger:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-danger:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-danger:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-danger:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-danger:hover{background-color:var(--e-a-btn-bg-danger-hover)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button i,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button i{margin-inline-end:5px}.dialog-type-alert .dialog-buttons-wrapper .dialog-button:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button:hover,.dialog-type-alert .dialog-buttons-wrapper .dialog-button:visited,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:visited{color:initial}.flatpickr-calendar{width:280px}.flatpickr-calendar .flatpickr-current-month span.cur-month{font-weight:300}.flatpickr-calendar .dayContainer{width:280px;min-width:280px;max-width:280px}.flatpickr-calendar .flatpickr-days{width:280px}.flatpickr-calendar .flatpickr-day{max-width:37px;height:37px;line-height:37px}.elementor-hidden{display:none}.elementor-screen-only,.screen-reader-text,.screen-reader-text span,.ui-helper-hidden-accessible{position:absolute;top:-10000em;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.elementor-clearfix:after{content:"";display:block;clear:both;width:0;height:0}.e-logo-wrapper{background:var(--e-a-bg-logo);display:inline-block;padding:.75em;border-radius:50%;line-height:1}.e-logo-wrapper i{color:var(--e-a-color-logo);font-size:1em}.elementor *,.elementor :after,.elementor :before{box-sizing:border-box}.elementor a{box-shadow:none;text-decoration:none}.elementor hr{margin:0;background-color:transparent}.elementor img{height:auto;max-width:100%;border:none;border-radius:0;box-shadow:none}.elementor .elementor-widget:not(.elementor-widget-text-editor):not(.elementor-widget-theme-post-content) figure{margin:0}.elementor embed,.elementor iframe,.elementor object,.elementor video{max-width:100%;width:100%;margin:0;line-height:1;border:none}.elementor .elementor-background,.elementor .elementor-background-holder,.elementor .elementor-background-video-container{height:100%;width:100%;top:0;left:0;position:absolute;overflow:hidden;z-index:0;direction:ltr}.elementor .elementor-background-video-container{transition:opacity 1s;pointer-events:none}.elementor .elementor-background-video-container.elementor-loading{opacity:0}.elementor .elementor-background-video-embed{max-width:none}.elementor .elementor-background-video,.elementor .elementor-background-video-embed,.elementor .elementor-background-video-hosted{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.elementor .elementor-background-video{max-width:none}.elementor .elementor-html5-video{-o-object-fit:cover;object-fit:cover}.elementor .elementor-background-overlay,.elementor .elementor-background-slideshow{height:100%;width:100%;top:0;left:0;position:absolute}.elementor .elementor-background-slideshow{z-index:0}.elementor .elementor-background-slideshow__slide__image{width:100%;height:100%;background-position:50%;background-size:cover}.e-con-inner>.elementor-element.elementor-absolute,.e-con>.elementor-element.elementor-absolute,.elementor-widget-wrap>.elementor-element.elementor-absolute{position:absolute}.e-con-inner>.elementor-element.elementor-fixed,.e-con>.elementor-element.elementor-fixed,.elementor-widget-wrap>.elementor-element.elementor-fixed{position:fixed}.elementor-widget-wrap .elementor-element.elementor-widget__width-auto,.elementor-widget-wrap .elementor-element.elementor-widget__width-initial{max-width:100%}@media (max-width:ELEMENTOR_SCREEN_TABLET_MAX){.elementor-widget-wrap .elementor-element.elementor-widget-tablet__width-auto,.elementor-widget-wrap .elementor-element.elementor-widget-tablet__width-initial{max-width:100%}}@media (max-width:ELEMENTOR_SCREEN_MOBILE_MAX){.elementor-widget-wrap .elementor-element.elementor-widget-mobile__width-auto,.elementor-widget-wrap .elementor-element.elementor-widget-mobile__width-initial{max-width:100%}}.elementor-element{--flex-direction:initial;--flex-wrap:initial;--justify-content:initial;--align-items:initial;--align-content:initial;--gap:initial;--flex-basis:initial;--flex-grow:initial;--flex-shrink:initial;--order:initial;--align-self:initial;flex-basis:var(--flex-basis);flex-grow:var(--flex-grow);flex-shrink:var(--flex-shrink);order:var(--order);align-self:var(--align-self)}.elementor-element.elementor-absolute,.elementor-element.elementor-fixed{z-index:1}.elementor-element:where(.e-con-full,.elementor-widget){flex-direction:var(--flex-direction);flex-wrap:var(--flex-wrap);justify-content:var(--justify-content);align-items:var(--align-items);align-content:var(--align-content);gap:var(--gap)}.elementor-invisible{visibility:hidden}.elementor-align-center{text-align:center}.elementor-align-center .elementor-button{width:auto}.elementor-align-right{text-align:right}.elementor-align-right .elementor-button{width:auto}.elementor-align-left{text-align:left}.elementor-align-left .elementor-button{width:auto}.elementor-align-justify .elementor-button{width:100%}.elementor-custom-embed-play{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.elementor-custom-embed-play i{font-size:100px;color:#fff;text-shadow:1px 0 6px rgba(0,0,0,.3)}.elementor-custom-embed-play svg{height:100px;width:100px;fill:#fff;filter:drop-shadow(1px 0 6px rgba(0,0,0,.3))}.elementor-custom-embed-play i,.elementor-custom-embed-play svg{opacity:.8;transition:all .5s}.elementor-custom-embed-play.elementor-playing i{font-family:eicons}.elementor-custom-embed-play.elementor-playing i:before{content:"\e8fb"}.elementor-custom-embed-play.elementor-playing i,.elementor-custom-embed-play.elementor-playing svg{animation:eicon-spin 2s linear infinite}.elementor-tag{display:inline-flex}.elementor-ken-burns{transition-property:transform;transition-duration:10s;transition-timing-function:linear}.elementor-ken-burns--out{transform:scale(1.3)}.elementor-ken-burns--active{transition-duration:20s}.elementor-ken-burns--active.elementor-ken-burns--out{transform:scale(1)}.elementor-ken-burns--active.elementor-ken-burns--in{transform:scale(1.3)}@media (min-width:ELEMENTOR_SCREEN_WIDESCREEN_MIN){.elementor-widescreen-align-center{text-align:center}.elementor-widescreen-align-center .elementor-button{width:auto}.elementor-widescreen-align-right{text-align:right}.elementor-widescreen-align-right .elementor-button{width:auto}.elementor-widescreen-align-left{text-align:left}.elementor-widescreen-align-left .elementor-button{width:auto}.elementor-widescreen-align-justify .elementor-button{width:100%}}@media (max-width:ELEMENTOR_SCREEN_LAPTOP_MAX){.elementor-laptop-align-center{text-align:center}.elementor-laptop-align-center .elementor-button{width:auto}.elementor-laptop-align-right{text-align:right}.elementor-laptop-align-right .elementor-button{width:auto}.elementor-laptop-align-left{text-align:left}.elementor-laptop-align-left .elementor-button{width:auto}.elementor-laptop-align-justify .elementor-button{width:100%}}@media (max-width:ELEMENTOR_SCREEN_TABLET_EXTRA_MAX){.elementor-tablet_extra-align-center{text-align:center}.elementor-tablet_extra-align-center .elementor-button{width:auto}.elementor-tablet_extra-align-right{text-align:right}.elementor-tablet_extra-align-right .elementor-button{width:auto}.elementor-tablet_extra-align-left{text-align:left}.elementor-tablet_extra-align-left .elementor-button{width:auto}.elementor-tablet_extra-align-justify .elementor-button{width:100%}}@media (max-width:ELEMENTOR_SCREEN_TABLET_MAX){.elementor-tablet-align-center{text-align:center}.elementor-tablet-align-center .elementor-button{width:auto}.elementor-tablet-align-right{text-align:right}.elementor-tablet-align-right .elementor-button{width:auto}.elementor-tablet-align-left{text-align:left}.elementor-tablet-align-left .elementor-button{width:auto}.elementor-tablet-align-justify .elementor-button{width:100%}}@media (max-width:ELEMENTOR_SCREEN_MOBILE_EXTRA_MAX){.elementor-mobile_extra-align-center{text-align:center}.elementor-mobile_extra-align-center .elementor-button{width:auto}.elementor-mobile_extra-align-right{text-align:right}.elementor-mobile_extra-align-right .elementor-button{width:auto}.elementor-mobile_extra-align-left{text-align:left}.elementor-mobile_extra-align-left .elementor-button{width:auto}.elementor-mobile_extra-align-justify .elementor-button{width:100%}}@media (max-width:ELEMENTOR_SCREEN_MOBILE_MAX){.elementor-mobile-align-center{text-align:center}.elementor-mobile-align-center .elementor-button{width:auto}.elementor-mobile-align-right{text-align:right}.elementor-mobile-align-right .elementor-button{width:auto}.elementor-mobile-align-left{text-align:left}.elementor-mobile-align-left .elementor-button{width:auto}.elementor-mobile-align-justify .elementor-button{width:100%}}:root{--page-title-display:block}.elementor-page-title,h1.entry-title{display:var(--page-title-display)}@keyframes eicon-spin{0%{transform:rotate(0deg)}to{transform:rotate(359deg)}}.eicon-animation-spin{animation:eicon-spin 2s linear infinite}.elementor-section{position:relative}.elementor-section .elementor-container{display:flex;margin-right:auto;margin-left:auto;position:relative}@media (max-width:ELEMENTOR_SCREEN_TABLET_MAX){.elementor-section .elementor-container{flex-wrap:wrap}}.elementor-section.elementor-section-boxed>.elementor-container{max-width:1140px}.elementor-section.elementor-section-stretched{position:relative;width:100%}.elementor-section.elementor-section-items-top>.elementor-container{align-items:flex-start}.elementor-section.elementor-section-items-middle>.elementor-container{align-items:center}.elementor-section.elementor-section-items-bottom>.elementor-container{align-items:flex-end}@media (min-width:ELEMENTOR_SCREEN_MOBILE_NEXT){.elementor-section.elementor-section-height-full{height:100vh}.elementor-section.elementor-section-height-full>.elementor-container{height:100%}}.elementor-bc-flex-widget .elementor-section-content-top>.elementor-container>.elementor-column>.elementor-widget-wrap{align-items:flex-start}.elementor-bc-flex-widget .elementor-section-content-middle>.elementor-container>.elementor-column>.elementor-widget-wrap{align-items:center}.elementor-bc-flex-widget .elementor-section-content-bottom>.elementor-container>.elementor-column>.elementor-widget-wrap{align-items:flex-end}.elementor-row{width:100%;display:flex}@media (max-width:ELEMENTOR_SCREEN_TABLET_MAX){.elementor-row{flex-wrap:wrap}}.elementor-widget-wrap{position:relative;width:100%;flex-wrap:wrap;align-content:flex-start}.elementor:not(.elementor-bc-flex-widget) .elementor-widget-wrap{display:flex}.elementor-widget-wrap>.elementor-element{width:100%}.elementor-widget-wrap.e-swiper-container{width:calc(100% - (var(--e-column-margin-left, 0px) + var(--e-column-margin-right, 0px)))}.elementor-widget{position:relative}.elementor-widget:not(:last-child){margin-bottom:20px}.elementor-widget:not(:last-child).elementor-absolute,.elementor-widget:not(:last-child).elementor-widget__width-auto,.elementor-widget:not(:last-child).elementor-widget__width-initial{margin-bottom:0}.elementor-column{position:relative;min-height:1px;display:flex}.elementor-column-wrap{width:100%;position:relative;display:flex}.elementor-column-gap-narrow>.elementor-column>.elementor-element-populated{padding:5px}.elementor-column-gap-default>.elementor-column>.elementor-element-populated{padding:10px}.elementor-column-gap-extended>.elementor-column>.elementor-element-populated{padding:15px}.elementor-column-gap-wide>.elementor-column>.elementor-element-populated{padding:20px}.elementor-column-gap-wider>.elementor-column>.elementor-element-populated{padding:30px}.elementor-inner-section .elementor-column-gap-no .elementor-element-populated{padding:0}@media (min-width:ELEMENTOR_SCREEN_MOBILE_NEXT){.elementor-column.elementor-col-10,.elementor-column[data-col="10"]{width:10%}.elementor-column.elementor-col-11,.elementor-column[data-col="11"]{width:11.111%}.elementor-column.elementor-col-12,.elementor-column[data-col="12"]{width:12.5%}.elementor-column.elementor-col-14,.elementor-column[data-col="14"]{width:14.285%}.elementor-column.elementor-col-16,.elementor-column[data-col="16"]{width:16.666%}.elementor-column.elementor-col-20,.elementor-column[data-col="20"]{width:20%}.elementor-column.elementor-col-25,.elementor-column[data-col="25"]{width:25%}.elementor-column.elementor-col-30,.elementor-column[data-col="30"]{width:30%}.elementor-column.elementor-col-33,.elementor-column[data-col="33"]{width:33.333%}.elementor-column.elementor-col-40,.elementor-column[data-col="40"]{width:40%}.elementor-column.elementor-col-50,.elementor-column[data-col="50"]{width:50%}.elementor-column.elementor-col-60,.elementor-column[data-col="60"]{width:60%}.elementor-column.elementor-col-66,.elementor-column[data-col="66"]{width:66.666%}.elementor-column.elementor-col-70,.elementor-column[data-col="70"]{width:70%}.elementor-column.elementor-col-75,.elementor-column[data-col="75"]{width:75%}.elementor-column.elementor-col-80,.elementor-column[data-col="80"]{width:80%}.elementor-column.elementor-col-83,.elementor-column[data-col="83"]{width:83.333%}.elementor-column.elementor-col-90,.elementor-column[data-col="90"]{width:90%}.elementor-column.elementor-col-100,.elementor-column[data-col="100"]{width:100%}}@media (max-width:479px){.elementor-column.elementor-xs-10{width:10%}.elementor-column.elementor-xs-11{width:11.111%}.elementor-column.elementor-xs-12{width:12.5%}.elementor-column.elementor-xs-14{width:14.285%}.elementor-column.elementor-xs-16{width:16.666%}.elementor-column.elementor-xs-20{width:20%}.elementor-column.elementor-xs-25{width:25%}.elementor-column.elementor-xs-30{width:30%}.elementor-column.elementor-xs-33{width:33.333%}.elementor-column.elementor-xs-40{width:40%}.elementor-column.elementor-xs-50{width:50%}.elementor-column.elementor-xs-60{width:60%}.elementor-column.elementor-xs-66{width:66.666%}.elementor-column.elementor-xs-70{width:70%}.elementor-column.elementor-xs-75{width:75%}.elementor-column.elementor-xs-80{width:80%}.elementor-column.elementor-xs-83{width:83.333%}.elementor-column.elementor-xs-90{width:90%}.elementor-column.elementor-xs-100{width:100%}}@media (max-width:ELEMENTOR_SCREEN_MOBILE_MAX){.elementor-column.elementor-sm-10{width:10%}.elementor-column.elementor-sm-11{width:11.111%}.elementor-column.elementor-sm-12{width:12.5%}.elementor-column.elementor-sm-14{width:14.285%}.elementor-column.elementor-sm-16{width:16.666%}.elementor-column.elementor-sm-20{width:20%}.elementor-column.elementor-sm-25{width:25%}.elementor-column.elementor-sm-30{width:30%}.elementor-column.elementor-sm-33{width:33.333%}.elementor-column.elementor-sm-40{width:40%}.elementor-column.elementor-sm-50{width:50%}.elementor-column.elementor-sm-60{width:60%}.elementor-column.elementor-sm-66{width:66.666%}.elementor-column.elementor-sm-70{width:70%}.elementor-column.elementor-sm-75{width:75%}.elementor-column.elementor-sm-80{width:80%}.elementor-column.elementor-sm-83{width:83.333%}.elementor-column.elementor-sm-90{width:90%}.elementor-column.elementor-sm-100{width:100%}}@media (min-width:ELEMENTOR_SCREEN_MOBILE_NEXT) and (max-width:ELEMENTOR_SCREEN_TABLET_MAX){.elementor-column.elementor-md-10{width:10%}.elementor-column.elementor-md-11{width:11.111%}.elementor-column.elementor-md-12{width:12.5%}.elementor-column.elementor-md-14{width:14.285%}.elementor-column.elementor-md-16{width:16.666%}.elementor-column.elementor-md-20{width:20%}.elementor-column.elementor-md-25{width:25%}.elementor-column.elementor-md-30{width:30%}.elementor-column.elementor-md-33{width:33.333%}.elementor-column.elementor-md-40{width:40%}.elementor-column.elementor-md-50{width:50%}.elementor-column.elementor-md-60{width:60%}.elementor-column.elementor-md-66{width:66.666%}.elementor-column.elementor-md-70{width:70%}.elementor-column.elementor-md-75{width:75%}.elementor-column.elementor-md-80{width:80%}.elementor-column.elementor-md-83{width:83.333%}.elementor-column.elementor-md-90{width:90%}.elementor-column.elementor-md-100{width:100%}}@media (min-width:ELEMENTOR_SCREEN_WIDESCREEN_MIN){.elementor-reverse-widescreen>.elementor-container>:first-child{order:10}.elementor-reverse-widescreen>.elementor-container>:nth-child(2){order:9}.elementor-reverse-widescreen>.elementor-container>:nth-child(3){order:8}.elementor-reverse-widescreen>.elementor-container>:nth-child(4){order:7}.elementor-reverse-widescreen>.elementor-container>:nth-child(5){order:6}.elementor-reverse-widescreen>.elementor-container>:nth-child(6){order:5}.elementor-reverse-widescreen>.elementor-container>:nth-child(7){order:4}.elementor-reverse-widescreen>.elementor-container>:nth-child(8){order:3}.elementor-reverse-widescreen>.elementor-container>:nth-child(9){order:2}.elementor-reverse-widescreen>.elementor-container>:nth-child(10){order:1}}@media (min-width:ELEMENTOR_SCREEN_TABLET_NEXT) and (max-width:ELEMENTOR_SCREEN_LAPTOP_MAX){.elementor-reverse-laptop>.elementor-container>:first-child{order:10}.elementor-reverse-laptop>.elementor-container>:nth-child(2){order:9}.elementor-reverse-laptop>.elementor-container>:nth-child(3){order:8}.elementor-reverse-laptop>.elementor-container>:nth-child(4){order:7}.elementor-reverse-laptop>.elementor-container>:nth-child(5){order:6}.elementor-reverse-laptop>.elementor-container>:nth-child(6){order:5}.elementor-reverse-laptop>.elementor-container>:nth-child(7){order:4}.elementor-reverse-laptop>.elementor-container>:nth-child(8){order:3}.elementor-reverse-laptop>.elementor-container>:nth-child(9){order:2}.elementor-reverse-laptop>.elementor-container>:nth-child(10){order:1}}@media (min-width:ELEMENTOR_SCREEN_TABLET_EXTRA_NEXT) and (max-width:ELEMENTOR_SCREEN_LAPTOP_MAX){.elementor-reverse-laptop>.elementor-container>:first-child{order:10}.elementor-reverse-laptop>.elementor-container>:nth-child(2){order:9}.elementor-reverse-laptop>.elementor-container>:nth-child(3){order:8}.elementor-reverse-laptop>.elementor-container>:nth-child(4){order:7}.elementor-reverse-laptop>.elementor-container>:nth-child(5){order:6}.elementor-reverse-laptop>.elementor-container>:nth-child(6){order:5}.elementor-reverse-laptop>.elementor-container>:nth-child(7){order:4}.elementor-reverse-laptop>.elementor-container>:nth-child(8){order:3}.elementor-reverse-laptop>.elementor-container>:nth-child(9){order:2}.elementor-reverse-laptop>.elementor-container>:nth-child(10){order:1}}@media (min-width:ELEMENTOR_SCREEN_TABLET_NEXT) and (max-width:ELEMENTOR_SCREEN_TABLET_EXTRA_MAX){.elementor-reverse-laptop>.elementor-container>:first-child,.elementor-reverse-laptop>.elementor-container>:nth-child(2),.elementor-reverse-laptop>.elementor-container>:nth-child(3),.elementor-reverse-laptop>.elementor-container>:nth-child(4),.elementor-reverse-laptop>.elementor-container>:nth-child(5),.elementor-reverse-laptop>.elementor-container>:nth-child(6),.elementor-reverse-laptop>.elementor-container>:nth-child(7),.elementor-reverse-laptop>.elementor-container>:nth-child(8),.elementor-reverse-laptop>.elementor-container>:nth-child(9),.elementor-reverse-laptop>.elementor-container>:nth-child(10){order:0}.elementor-reverse-tablet_extra>.elementor-container>:first-child{order:10}.elementor-reverse-tablet_extra>.elementor-container>:nth-child(2){order:9}.elementor-reverse-tablet_extra>.elementor-container>:nth-child(3){order:8}.elementor-reverse-tablet_extra>.elementor-container>:nth-child(4){order:7}.elementor-reverse-tablet_extra>.elementor-container>:nth-child(5){order:6}.elementor-reverse-tablet_extra>.elementor-container>:nth-child(6){order:5}.elementor-reverse-tablet_extra>.elementor-container>:nth-child(7){order:4}.elementor-reverse-tablet_extra>.elementor-container>:nth-child(8){order:3}.elementor-reverse-tablet_extra>.elementor-container>:nth-child(9){order:2}.elementor-reverse-tablet_extra>.elementor-container>:nth-child(10){order:1}}@media (min-width:ELEMENTOR_SCREEN_MOBILE_NEXT) and (max-width:ELEMENTOR_SCREEN_TABLET_MAX){.elementor-reverse-tablet>.elementor-container>:first-child{order:10}.elementor-reverse-tablet>.elementor-container>:nth-child(2){order:9}.elementor-reverse-tablet>.elementor-container>:nth-child(3){order:8}.elementor-reverse-tablet>.elementor-container>:nth-child(4){order:7}.elementor-reverse-tablet>.elementor-container>:nth-child(5){order:6}.elementor-reverse-tablet>.elementor-container>:nth-child(6){order:5}.elementor-reverse-tablet>.elementor-container>:nth-child(7){order:4}.elementor-reverse-tablet>.elementor-container>:nth-child(8){order:3}.elementor-reverse-tablet>.elementor-container>:nth-child(9){order:2}.elementor-reverse-tablet>.elementor-container>:nth-child(10){order:1}}@media (min-width:ELEMENTOR_SCREEN_MOBILE_EXTRA_NEXT) and (max-width:ELEMENTOR_SCREEN_TABLET_MAX){.elementor-reverse-tablet>.elementor-container>:first-child{order:10}.elementor-reverse-tablet>.elementor-container>:nth-child(2){order:9}.elementor-reverse-tablet>.elementor-container>:nth-child(3){order:8}.elementor-reverse-tablet>.elementor-container>:nth-child(4){order:7}.elementor-reverse-tablet>.elementor-container>:nth-child(5){order:6}.elementor-reverse-tablet>.elementor-container>:nth-child(6){order:5}.elementor-reverse-tablet>.elementor-container>:nth-child(7){order:4}.elementor-reverse-tablet>.elementor-container>:nth-child(8){order:3}.elementor-reverse-tablet>.elementor-container>:nth-child(9){order:2}.elementor-reverse-tablet>.elementor-container>:nth-child(10){order:1}}@media (min-width:ELEMENTOR_SCREEN_MOBILE_NEXT) and (max-width:ELEMENTOR_SCREEN_MOBILE_EXTRA_MAX){.elementor-reverse-tablet>.elementor-container>:first-child,.elementor-reverse-tablet>.elementor-container>:nth-child(2),.elementor-reverse-tablet>.elementor-container>:nth-child(3),.elementor-reverse-tablet>.elementor-container>:nth-child(4),.elementor-reverse-tablet>.elementor-container>:nth-child(5),.elementor-reverse-tablet>.elementor-container>:nth-child(6),.elementor-reverse-tablet>.elementor-container>:nth-child(7),.elementor-reverse-tablet>.elementor-container>:nth-child(8),.elementor-reverse-tablet>.elementor-container>:nth-child(9),.elementor-reverse-tablet>.elementor-container>:nth-child(10){order:0}.elementor-reverse-mobile_extra>.elementor-container>:first-child{order:10}.elementor-reverse-mobile_extra>.elementor-container>:nth-child(2){order:9}.elementor-reverse-mobile_extra>.elementor-container>:nth-child(3){order:8}.elementor-reverse-mobile_extra>.elementor-container>:nth-child(4){order:7}.elementor-reverse-mobile_extra>.elementor-container>:nth-child(5){order:6}.elementor-reverse-mobile_extra>.elementor-container>:nth-child(6){order:5}.elementor-reverse-mobile_extra>.elementor-container>:nth-child(7){order:4}.elementor-reverse-mobile_extra>.elementor-container>:nth-child(8){order:3}.elementor-reverse-mobile_extra>.elementor-container>:nth-child(9){order:2}.elementor-reverse-mobile_extra>.elementor-container>:nth-child(10){order:1}}@media (max-width:ELEMENTOR_SCREEN_MOBILE_MAX){.elementor-reverse-mobile>.elementor-container>:first-child{order:10}.elementor-reverse-mobile>.elementor-container>:nth-child(2){order:9}.elementor-reverse-mobile>.elementor-container>:nth-child(3){order:8}.elementor-reverse-mobile>.elementor-container>:nth-child(4){order:7}.elementor-reverse-mobile>.elementor-container>:nth-child(5){order:6}.elementor-reverse-mobile>.elementor-container>:nth-child(6){order:5}.elementor-reverse-mobile>.elementor-container>:nth-child(7){order:4}.elementor-reverse-mobile>.elementor-container>:nth-child(8){order:3}.elementor-reverse-mobile>.elementor-container>:nth-child(9){order:2}.elementor-reverse-mobile>.elementor-container>:nth-child(10){order:1}.elementor-column{width:100%}}ul.elementor-icon-list-items.elementor-inline-items{display:flex;flex-wrap:wrap}ul.elementor-icon-list-items.elementor-inline-items .elementor-inline-item{word-break:break-word}.elementor-grid{display:grid;grid-column-gap:var(--grid-column-gap);grid-row-gap:var(--grid-row-gap)}.elementor-grid .elementor-grid-item{min-width:0}.elementor-grid-0 .elementor-grid{display:inline-block;width:100%;word-spacing:var(--grid-column-gap);margin-bottom:calc(-1 * var(--grid-row-gap))}.elementor-grid-0 .elementor-grid .elementor-grid-item{display:inline-block;margin-bottom:var(--grid-row-gap);word-break:break-word}.elementor-grid-1 .elementor-grid{grid-template-columns:repeat(1,1fr)}.elementor-grid-2 .elementor-grid{grid-template-columns:repeat(2,1fr)}.elementor-grid-3 .elementor-grid{grid-template-columns:repeat(3,1fr)}.elementor-grid-4 .elementor-grid{grid-template-columns:repeat(4,1fr)}.elementor-grid-5 .elementor-grid{grid-template-columns:repeat(5,1fr)}.elementor-grid-6 .elementor-grid{grid-template-columns:repeat(6,1fr)}.elementor-grid-7 .elementor-grid{grid-template-columns:repeat(7,1fr)}.elementor-grid-8 .elementor-grid{grid-template-columns:repeat(8,1fr)}.elementor-grid-9 .elementor-grid{grid-template-columns:repeat(9,1fr)}.elementor-grid-10 .elementor-grid{grid-template-columns:repeat(10,1fr)}.elementor-grid-11 .elementor-grid{grid-template-columns:repeat(11,1fr)}.elementor-grid-12 .elementor-grid{grid-template-columns:repeat(12,1fr)}@media (min-width:ELEMENTOR_SCREEN_WIDESCREEN_MIN){.elementor-grid-widescreen-0 .elementor-grid{display:inline-block;width:100%;word-spacing:var(--grid-column-gap);margin-bottom:calc(-1 * var(--grid-row-gap))}.elementor-grid-widescreen-0 .elementor-grid .elementor-grid-item{display:inline-block;margin-bottom:var(--grid-row-gap);word-break:break-word}.elementor-grid-widescreen-1 .elementor-grid{grid-template-columns:repeat(1,1fr)}.elementor-grid-widescreen-2 .elementor-grid{grid-template-columns:repeat(2,1fr)}.elementor-grid-widescreen-3 .elementor-grid{grid-template-columns:repeat(3,1fr)}.elementor-grid-widescreen-4 .elementor-grid{grid-template-columns:repeat(4,1fr)}.elementor-grid-widescreen-5 .elementor-grid{grid-template-columns:repeat(5,1fr)}.elementor-grid-widescreen-6 .elementor-grid{grid-template-columns:repeat(6,1fr)}.elementor-grid-widescreen-7 .elementor-grid{grid-template-columns:repeat(7,1fr)}.elementor-grid-widescreen-8 .elementor-grid{grid-template-columns:repeat(8,1fr)}.elementor-grid-widescreen-9 .elementor-grid{grid-template-columns:repeat(9,1fr)}.elementor-grid-widescreen-10 .elementor-grid{grid-template-columns:repeat(10,1fr)}.elementor-grid-widescreen-11 .elementor-grid{grid-template-columns:repeat(11,1fr)}.elementor-grid-widescreen-12 .elementor-grid{grid-template-columns:repeat(12,1fr)}}@media (max-width:ELEMENTOR_SCREEN_LAPTOP_MAX){.elementor-grid-laptop-0 .elementor-grid{display:inline-block;width:100%;word-spacing:var(--grid-column-gap);margin-bottom:calc(-1 * var(--grid-row-gap))}.elementor-grid-laptop-0 .elementor-grid .elementor-grid-item{display:inline-block;margin-bottom:var(--grid-row-gap);word-break:break-word}.elementor-grid-laptop-1 .elementor-grid{grid-template-columns:repeat(1,1fr)}.elementor-grid-laptop-2 .elementor-grid{grid-template-columns:repeat(2,1fr)}.elementor-grid-laptop-3 .elementor-grid{grid-template-columns:repeat(3,1fr)}.elementor-grid-laptop-4 .elementor-grid{grid-template-columns:repeat(4,1fr)}.elementor-grid-laptop-5 .elementor-grid{grid-template-columns:repeat(5,1fr)}.elementor-grid-laptop-6 .elementor-grid{grid-template-columns:repeat(6,1fr)}.elementor-grid-laptop-7 .elementor-grid{grid-template-columns:repeat(7,1fr)}.elementor-grid-laptop-8 .elementor-grid{grid-template-columns:repeat(8,1fr)}.elementor-grid-laptop-9 .elementor-grid{grid-template-columns:repeat(9,1fr)}.elementor-grid-laptop-10 .elementor-grid{grid-template-columns:repeat(10,1fr)}.elementor-grid-laptop-11 .elementor-grid{grid-template-columns:repeat(11,1fr)}.elementor-grid-laptop-12 .elementor-grid{grid-template-columns:repeat(12,1fr)}}@media (max-width:ELEMENTOR_SCREEN_TABLET_EXTRA_MAX){.elementor-grid-tablet_extra-0 .elementor-grid{display:inline-block;width:100%;word-spacing:var(--grid-column-gap);margin-bottom:calc(-1 * var(--grid-row-gap))}.elementor-grid-tablet_extra-0 .elementor-grid .elementor-grid-item{display:inline-block;margin-bottom:var(--grid-row-gap);word-break:break-word}.elementor-grid-tablet_extra-1 .elementor-grid{grid-template-columns:repeat(1,1fr)}.elementor-grid-tablet_extra-2 .elementor-grid{grid-template-columns:repeat(2,1fr)}.elementor-grid-tablet_extra-3 .elementor-grid{grid-template-columns:repeat(3,1fr)}.elementor-grid-tablet_extra-4 .elementor-grid{grid-template-columns:repeat(4,1fr)}.elementor-grid-tablet_extra-5 .elementor-grid{grid-template-columns:repeat(5,1fr)}.elementor-grid-tablet_extra-6 .elementor-grid{grid-template-columns:repeat(6,1fr)}.elementor-grid-tablet_extra-7 .elementor-grid{grid-template-columns:repeat(7,1fr)}.elementor-grid-tablet_extra-8 .elementor-grid{grid-template-columns:repeat(8,1fr)}.elementor-grid-tablet_extra-9 .elementor-grid{grid-template-columns:repeat(9,1fr)}.elementor-grid-tablet_extra-10 .elementor-grid{grid-template-columns:repeat(10,1fr)}.elementor-grid-tablet_extra-11 .elementor-grid{grid-template-columns:repeat(11,1fr)}.elementor-grid-tablet_extra-12 .elementor-grid{grid-template-columns:repeat(12,1fr)}}@media (max-width:ELEMENTOR_SCREEN_TABLET_MAX){.elementor-grid-tablet-0 .elementor-grid{display:inline-block;width:100%;word-spacing:var(--grid-column-gap);margin-bottom:calc(-1 * var(--grid-row-gap))}.elementor-grid-tablet-0 .elementor-grid .elementor-grid-item{display:inline-block;margin-bottom:var(--grid-row-gap);word-break:break-word}.elementor-grid-tablet-1 .elementor-grid{grid-template-columns:repeat(1,1fr)}.elementor-grid-tablet-2 .elementor-grid{grid-template-columns:repeat(2,1fr)}.elementor-grid-tablet-3 .elementor-grid{grid-template-columns:repeat(3,1fr)}.elementor-grid-tablet-4 .elementor-grid{grid-template-columns:repeat(4,1fr)}.elementor-grid-tablet-5 .elementor-grid{grid-template-columns:repeat(5,1fr)}.elementor-grid-tablet-6 .elementor-grid{grid-template-columns:repeat(6,1fr)}.elementor-grid-tablet-7 .elementor-grid{grid-template-columns:repeat(7,1fr)}.elementor-grid-tablet-8 .elementor-grid{grid-template-columns:repeat(8,1fr)}.elementor-grid-tablet-9 .elementor-grid{grid-template-columns:repeat(9,1fr)}.elementor-grid-tablet-10 .elementor-grid{grid-template-columns:repeat(10,1fr)}.elementor-grid-tablet-11 .elementor-grid{grid-template-columns:repeat(11,1fr)}.elementor-grid-tablet-12 .elementor-grid{grid-template-columns:repeat(12,1fr)}}@media (max-width:ELEMENTOR_SCREEN_MOBILE_EXTRA_MAX){.elementor-grid-mobile_extra-0 .elementor-grid{display:inline-block;width:100%;word-spacing:var(--grid-column-gap);margin-bottom:calc(-1 * var(--grid-row-gap))}.elementor-grid-mobile_extra-0 .elementor-grid .elementor-grid-item{display:inline-block;margin-bottom:var(--grid-row-gap);word-break:break-word}.elementor-grid-mobile_extra-1 .elementor-grid{grid-template-columns:repeat(1,1fr)}.elementor-grid-mobile_extra-2 .elementor-grid{grid-template-columns:repeat(2,1fr)}.elementor-grid-mobile_extra-3 .elementor-grid{grid-template-columns:repeat(3,1fr)}.elementor-grid-mobile_extra-4 .elementor-grid{grid-template-columns:repeat(4,1fr)}.elementor-grid-mobile_extra-5 .elementor-grid{grid-template-columns:repeat(5,1fr)}.elementor-grid-mobile_extra-6 .elementor-grid{grid-template-columns:repeat(6,1fr)}.elementor-grid-mobile_extra-7 .elementor-grid{grid-template-columns:repeat(7,1fr)}.elementor-grid-mobile_extra-8 .elementor-grid{grid-template-columns:repeat(8,1fr)}.elementor-grid-mobile_extra-9 .elementor-grid{grid-template-columns:repeat(9,1fr)}.elementor-grid-mobile_extra-10 .elementor-grid{grid-template-columns:repeat(10,1fr)}.elementor-grid-mobile_extra-11 .elementor-grid{grid-template-columns:repeat(11,1fr)}.elementor-grid-mobile_extra-12 .elementor-grid{grid-template-columns:repeat(12,1fr)}}@media (max-width:ELEMENTOR_SCREEN_MOBILE_MAX){.elementor-grid-mobile-0 .elementor-grid{display:inline-block;width:100%;word-spacing:var(--grid-column-gap);margin-bottom:calc(-1 * var(--grid-row-gap))}.elementor-grid-mobile-0 .elementor-grid .elementor-grid-item{display:inline-block;margin-bottom:var(--grid-row-gap);word-break:break-word}.elementor-grid-mobile-1 .elementor-grid{grid-template-columns:repeat(1,1fr)}.elementor-grid-mobile-2 .elementor-grid{grid-template-columns:repeat(2,1fr)}.elementor-grid-mobile-3 .elementor-grid{grid-template-columns:repeat(3,1fr)}.elementor-grid-mobile-4 .elementor-grid{grid-template-columns:repeat(4,1fr)}.elementor-grid-mobile-5 .elementor-grid{grid-template-columns:repeat(5,1fr)}.elementor-grid-mobile-6 .elementor-grid{grid-template-columns:repeat(6,1fr)}.elementor-grid-mobile-7 .elementor-grid{grid-template-columns:repeat(7,1fr)}.elementor-grid-mobile-8 .elementor-grid{grid-template-columns:repeat(8,1fr)}.elementor-grid-mobile-9 .elementor-grid{grid-template-columns:repeat(9,1fr)}.elementor-grid-mobile-10 .elementor-grid{grid-template-columns:repeat(10,1fr)}.elementor-grid-mobile-11 .elementor-grid{grid-template-columns:repeat(11,1fr)}.elementor-grid-mobile-12 .elementor-grid{grid-template-columns:repeat(12,1fr)}}@media (min-width:ELEMENTOR_SCREEN_DESKTOP_MIN){#elementor-device-mode:after{content:"desktop"}}@media (min-width:ELEMENTOR_SCREEN_WIDESCREEN_MIN){#elementor-device-mode:after{content:"widescreen"}}@media (max-width:ELEMENTOR_SCREEN_LAPTOP_MAX){#elementor-device-mode:after{content:"laptop"}}@media (max-width:ELEMENTOR_SCREEN_TABLET_EXTRA_MAX){#elementor-device-mode:after{content:"tablet_extra"}}@media (max-width:ELEMENTOR_SCREEN_TABLET_MAX){#elementor-device-mode:after{content:"tablet"}}@media (max-width:ELEMENTOR_SCREEN_MOBILE_EXTRA_MAX){#elementor-device-mode:after{content:"mobile_extra"}}@media (max-width:ELEMENTOR_SCREEN_MOBILE_MAX){#elementor-device-mode:after{content:"mobile"}}.e-con{--border-radius:0;--border-block-start-width:0px;--border-inline-end-width:0px;--border-block-end-width:0px;--border-inline-start-width:0px;--border-style:initial;--border-color:initial;--container-widget-width:100%;--container-widget-height:initial;--container-widget-flex-grow:0;--container-widget-align-self:initial;--content-width:min(100%,var(--container-max-width,1140px));--width:100%;--min-height:initial;--height:auto;--text-align:initial;--margin-block-start:0px;--margin-inline-end:0px;--margin-block-end:0px;--margin-inline-start:0px;--padding-block-start:var(--container-default-padding-block-start,10px);--padding-inline-end:var(--container-default-padding-inline-end,10px);--padding-block-end:var(--container-default-padding-block-end,10px);--padding-inline-start:var(--container-default-padding-inline-start,10px);--position:relative;--z-index:revert;--overflow:visible;--gap:var(--widgets-spacing,20px);--overlay-mix-blend-mode:initial;--overlay-opacity:1;--overlay-transition:0.3s;--e-con-grid-template-columns:repeat(3,1fr);--e-con-grid-template-rows:repeat(2,1fr);position:var(--position);width:var(--width);min-width:0;min-height:var(--min-height);height:var(--height);border-radius:var(--border-radius);margin-block-start:var(--bc-margin-block-start,var(--margin-block-start));margin-inline-end:var(--bc-margin-inline-end,var(--margin-inline-end));margin-block-end:var(--bc-margin-block-end,var(--margin-block-end));margin-inline-start:var(--bc-margin-inline-start,var(--margin-inline-start));padding-inline-start:var(--bc-padding-inline-start,var(--padding-inline-start));padding-inline-end:var(--bc-padding-inline-end,var(--padding-inline-end));z-index:var(--z-index);overflow:var(--overflow);transition:background var(--background-transition,.3s),border var(--border-transition,.3s),box-shadow var(--border-transition,.3s),transform var(--e-con-transform-transition-duration,.4s)}.e-con.e-flex{--flex-direction:column;--flex-basis:auto;--flex-grow:0;--flex-shrink:1;flex:var(--flex-grow) var(--flex-shrink) var(--flex-basis)}.e-con-full,.e-con>.e-con-inner{text-align:var(--text-align);padding-block-start:var(--bc-padding-block-start,var(--padding-block-start));padding-block-end:var(--bc-padding-block-end,var(--padding-block-end))}.e-con-full.e-flex,.e-con.e-flex>.e-con-inner{flex-direction:var(--flex-direction)}.e-con,.e-con>.e-con-inner{display:var(--display)}.e-con.e-grid{--grid-justify-content:start;--grid-align-content:start;--grid-auto-flow:row}.e-con.e-grid,.e-con.e-grid>.e-con-inner{grid-template-columns:var(--e-con-grid-template-columns);grid-template-rows:var(--e-con-grid-template-rows);justify-content:var(--grid-justify-content);align-content:var(--grid-align-content);grid-auto-flow:var(--grid-auto-flow);justify-items:var(--justify-items);align-items:var(--align-items)}.e-con-boxed.e-flex{flex-direction:column;flex-wrap:nowrap;justify-content:normal;align-items:normal;align-content:normal}.e-con-boxed.e-grid{justify-items:legacy;grid-template-columns:1fr;grid-template-rows:1fr}.e-con-boxed{text-align:initial;gap:initial}.e-con.e-flex>.e-con-inner{flex-wrap:var(--flex-wrap);justify-content:var(--justify-content);align-items:var(--align-items);align-content:var(--align-content);flex-basis:auto;flex-grow:1;flex-shrink:1;align-self:auto}.e-con.e-grid>.e-con-inner{justify-items:var(--justify-items);align-items:var(--align-items)}.e-con>.e-con-inner{gap:var(--gap);width:100%;max-width:var(--content-width);margin:0 auto;padding-inline-start:0;padding-inline-end:0;height:100%}:is(.elementor-section-wrap,[data-elementor-id])>.e-con{--margin-inline-end:auto;--margin-inline-start:auto;max-width:min(100%,var(--width))}.e-con .elementor-widget.elementor-widget{margin-block-end:0}.e-con:before,.e-con>.elementor-background-slideshow:before,.e-con>.elementor-motion-effects-container>.elementor-motion-effects-layer:before,:is(.e-con,.e-con>.e-con-inner)>.elementor-background-video-container:before{content:var(--background-overlay);display:block;position:absolute;mix-blend-mode:var(--overlay-mix-blend-mode);opacity:var(--overlay-opacity);transition:var(--overlay-transition,.3s);border-radius:var(--border-radius);border-style:var(--border-style);border-color:var(--border-color);border-block-start-width:var(--border-block-start-width);border-inline-end-width:var(--border-inline-end-width);border-block-end-width:var(--border-block-end-width);border-inline-start-width:var(--border-inline-start-width);top:calc(0px - var(--border-block-start-width));left:calc(0px - var(--border-inline-start-width));width:max(100% + var(--border-inline-end-width) + var(--border-inline-start-width),100%);height:max(100% + var(--border-block-start-width) + var(--border-block-end-width),100%)}.e-con:before{transition:background var(--overlay-transition,.3s),border-radius var(--border-transition,.3s),opacity var(--overlay-transition,.3s)}.e-con>.elementor-background-slideshow,:is(.e-con,.e-con>.e-con-inner)>.elementor-background-video-container{border-radius:var(--border-radius);border-style:var(--border-style);border-color:var(--border-color);border-block-start-width:var(--border-block-start-width);border-inline-end-width:var(--border-inline-end-width);border-block-end-width:var(--border-block-end-width);border-inline-start-width:var(--border-inline-start-width);top:calc(0px - var(--border-block-start-width));left:calc(0px - var(--border-inline-start-width));width:max(100% + var(--border-inline-end-width) + var(--border-inline-start-width),100%);height:max(100% + var(--border-block-start-width) + var(--border-block-end-width),100%)}@media (max-width:ELEMENTOR_SCREEN_MOBILE_MAX){:is(.e-con,.e-con>.e-con-inner)>.elementor-background-video-container.elementor-hidden-phone{display:none}}:is(.e-con,.e-con>.e-con-inner)>.elementor-background-video-container:before{z-index:1}:is(.e-con,.e-con>.e-con-inner)>.elementor-background-slideshow:before{z-index:2}.e-con .elementor-widget{min-width:0}.e-con .elementor-widget-empty,.e-con .elementor-widget-google_maps,.e-con .elementor-widget-video,.e-con .elementor-widget.e-widget-swiper{width:100%}.e-con>.e-con-inner>.elementor-widget>.elementor-widget-container,.e-con>.elementor-widget>.elementor-widget-container{height:100%}.e-con.e-con>.e-con-inner>.elementor-widget,.elementor.elementor .e-con>.elementor-widget{max-width:100%}@media (max-width:767px){.e-con.e-flex{--width:100%;--flex-wrap:wrap}}.e-con{--bc-margin-block-start:var(--margin-top);--bc-margin-block-end:var(--margin-bottom);--bc-margin-inline-start:var(--margin-left);--bc-margin-inline-end:var(--margin-right);--bc-padding-block-start:var(--padding-top);--bc-padding-block-end:var(--padding-bottom);--bc-padding-inline-start:var(--padding-left);--bc-padding-inline-end:var(--padding-right)}[dir=rtl] .e-con{--bc-margin-inline-start:var(--margin-right);--bc-margin-inline-end:var(--margin-left);--bc-padding-inline-start:var(--padding-right);--bc-padding-inline-end:var(--padding-left)}.elementor-form-fields-wrapper{display:flex;flex-wrap:wrap}.elementor-form-fields-wrapper.elementor-labels-above .elementor-field-group .elementor-field-subgroup,.elementor-form-fields-wrapper.elementor-labels-above .elementor-field-group>.elementor-select-wrapper,.elementor-form-fields-wrapper.elementor-labels-above .elementor-field-group>input,.elementor-form-fields-wrapper.elementor-labels-above .elementor-field-group>textarea{flex-basis:100%;max-width:100%}.elementor-form-fields-wrapper.elementor-labels-inline>.elementor-field-group .elementor-select-wrapper,.elementor-form-fields-wrapper.elementor-labels-inline>.elementor-field-group>input{flex-grow:1}.elementor-field-group{flex-wrap:wrap;align-items:center}.elementor-field-group.elementor-field-type-submit{align-items:flex-end}.elementor-field-group .elementor-field-textual{width:100%;max-width:100%;border:1px solid #69727d;background-color:transparent;color:#1f2124;vertical-align:middle;flex-grow:1}.elementor-field-group .elementor-field-textual:focus{box-shadow:inset 0 0 0 1px rgba(0,0,0,.1);outline:0}.elementor-field-group .elementor-field-textual::-moz-placeholder{color:inherit;font-family:inherit;opacity:.6}.elementor-field-group .elementor-field-textual::placeholder{color:inherit;font-family:inherit;opacity:.6}.elementor-field-group .elementor-select-wrapper{display:flex;position:relative;width:100%}.elementor-field-group .elementor-select-wrapper select{-webkit-appearance:none;-moz-appearance:none;appearance:none;color:inherit;font-size:inherit;font-family:inherit;font-weight:inherit;font-style:inherit;text-transform:inherit;letter-spacing:inherit;line-height:inherit;flex-basis:100%;padding-right:20px}.elementor-field-group .elementor-select-wrapper:before{content:"\e92a";font-family:eicons;font-size:15px;position:absolute;top:50%;transform:translateY(-50%);right:10px;pointer-events:none;text-shadow:0 0 3px rgba(0,0,0,.3)}.elementor-field-group.elementor-field-type-select-multiple .elementor-select-wrapper:before{content:""}.elementor-field-subgroup{display:flex;flex-wrap:wrap}.elementor-field-subgroup .elementor-field-option label{display:inline-block}.elementor-field-subgroup.elementor-subgroup-inline .elementor-field-option{padding-right:10px}.elementor-field-subgroup:not(.elementor-subgroup-inline) .elementor-field-option{flex-basis:100%}.elementor-field-type-acceptance .elementor-field-subgroup .elementor-field-option input,.elementor-field-type-acceptance .elementor-field-subgroup .elementor-field-option label,.elementor-field-type-checkbox .elementor-field-subgroup .elementor-field-option input,.elementor-field-type-checkbox .elementor-field-subgroup .elementor-field-option label,.elementor-field-type-radio .elementor-field-subgroup .elementor-field-option input,.elementor-field-type-radio .elementor-field-subgroup .elementor-field-option label{display:inline}.elementor-field-label{cursor:pointer}.elementor-mark-required .elementor-field-label:after{content:"*";color:red;padding-left:.2em}.elementor-field-textual{line-height:1.4;font-size:15px;min-height:40px;padding:5px 14px;border-radius:3px}.elementor-field-textual.elementor-size-xs{font-size:13px;min-height:33px;padding:4px 12px;border-radius:2px}.elementor-field-textual.elementor-size-md{font-size:16px;min-height:47px;padding:6px 16px;border-radius:4px}.elementor-field-textual.elementor-size-lg{font-size:18px;min-height:59px;padding:7px 20px;border-radius:5px}.elementor-field-textual.elementor-size-xl{font-size:20px;min-height:72px;padding:8px 24px;border-radius:6px}.elementor-button-align-stretch .elementor-field-type-submit:not(.e-form__buttons__wrapper) .elementor-button{flex-basis:100%}.elementor-button-align-stretch .e-form__buttons__wrapper{flex-basis:50%;flex-grow:1}.elementor-button-align-stretch .e-form__buttons__wrapper__button{flex-basis:100%}.elementor-button-align-center .e-form__buttons,.elementor-button-align-center .elementor-field-type-submit{justify-content:center}.elementor-button-align-start .e-form__buttons,.elementor-button-align-start .elementor-field-type-submit{justify-content:flex-start}.elementor-button-align-end .e-form__buttons,.elementor-button-align-end .elementor-field-type-submit{justify-content:flex-end}.elementor-button-align-center .elementor-field-type-submit:not(.e-form__buttons__wrapper) .elementor-button,.elementor-button-align-end .elementor-field-type-submit:not(.e-form__buttons__wrapper) .elementor-button,.elementor-button-align-start .elementor-field-type-submit:not(.e-form__buttons__wrapper) .elementor-button{flex-basis:auto}.elementor-button-align-center .e-form__buttons__wrapper,.elementor-button-align-end .e-form__buttons__wrapper,.elementor-button-align-start .e-form__buttons__wrapper{flex-grow:0}.elementor-button-align-center .e-form__buttons__wrapper,.elementor-button-align-center .e-form__buttons__wrapper__button,.elementor-button-align-end .e-form__buttons__wrapper,.elementor-button-align-end .e-form__buttons__wrapper__button,.elementor-button-align-start .e-form__buttons__wrapper,.elementor-button-align-start .e-form__buttons__wrapper__button{flex-basis:auto}@media screen and (max-width:ELEMENTOR_SCREEN_TABLET_MAX){.elementor-tablet-button-align-stretch .elementor-field-type-submit:not(.e-form__buttons__wrapper) .elementor-button{flex-basis:100%}.elementor-tablet-button-align-stretch .e-form__buttons__wrapper{flex-basis:50%;flex-grow:1}.elementor-tablet-button-align-stretch .e-form__buttons__wrapper__button{flex-basis:100%}.elementor-tablet-button-align-center .e-form__buttons,.elementor-tablet-button-align-center .elementor-field-type-submit{justify-content:center}.elementor-tablet-button-align-start .e-form__buttons,.elementor-tablet-button-align-start .elementor-field-type-submit{justify-content:flex-start}.elementor-tablet-button-align-end .e-form__buttons,.elementor-tablet-button-align-end .elementor-field-type-submit{justify-content:flex-end}.elementor-tablet-button-align-center .elementor-field-type-submit:not(.e-form__buttons__wrapper) .elementor-button,.elementor-tablet-button-align-end .elementor-field-type-submit:not(.e-form__buttons__wrapper) .elementor-button,.elementor-tablet-button-align-start .elementor-field-type-submit:not(.e-form__buttons__wrapper) .elementor-button{flex-basis:auto}.elementor-tablet-button-align-center .e-form__buttons__wrapper,.elementor-tablet-button-align-end .e-form__buttons__wrapper,.elementor-tablet-button-align-start .e-form__buttons__wrapper{flex-grow:0}.elementor-tablet-button-align-center .e-form__buttons__wrapper,.elementor-tablet-button-align-center .e-form__buttons__wrapper__button,.elementor-tablet-button-align-end .e-form__buttons__wrapper,.elementor-tablet-button-align-end .e-form__buttons__wrapper__button,.elementor-tablet-button-align-start .e-form__buttons__wrapper,.elementor-tablet-button-align-start .e-form__buttons__wrapper__button{flex-basis:auto}}@media screen and (max-width:ELEMENTOR_SCREEN_MOBILE_MAX){.elementor-mobile-button-align-stretch .elementor-field-type-submit:not(.e-form__buttons__wrapper) .elementor-button{flex-basis:100%}.elementor-mobile-button-align-stretch .e-form__buttons__wrapper{flex-basis:50%;flex-grow:1}.elementor-mobile-button-align-stretch .e-form__buttons__wrapper__button{flex-basis:100%}.elementor-mobile-button-align-center .e-form__buttons,.elementor-mobile-button-align-center .elementor-field-type-submit{justify-content:center}.elementor-mobile-button-align-start .e-form__buttons,.elementor-mobile-button-align-start .elementor-field-type-submit{justify-content:flex-start}.elementor-mobile-button-align-end .e-form__buttons,.elementor-mobile-button-align-end .elementor-field-type-submit{justify-content:flex-end}.elementor-mobile-button-align-center .elementor-field-type-submit:not(.e-form__buttons__wrapper) .elementor-button,.elementor-mobile-button-align-end .elementor-field-type-submit:not(.e-form__buttons__wrapper) .elementor-button,.elementor-mobile-button-align-start .elementor-field-type-submit:not(.e-form__buttons__wrapper) .elementor-button{flex-basis:auto}.elementor-mobile-button-align-center .e-form__buttons__wrapper,.elementor-mobile-button-align-end .e-form__buttons__wrapper,.elementor-mobile-button-align-start .e-form__buttons__wrapper{flex-grow:0}.elementor-mobile-button-align-center .e-form__buttons__wrapper,.elementor-mobile-button-align-center .e-form__buttons__wrapper__button,.elementor-mobile-button-align-end .e-form__buttons__wrapper,.elementor-mobile-button-align-end .e-form__buttons__wrapper__button,.elementor-mobile-button-align-start .e-form__buttons__wrapper,.elementor-mobile-button-align-start .e-form__buttons__wrapper__button{flex-basis:auto}}.elementor-error .elementor-field{border-color:#d9534f}.elementor-error .help-inline{color:#d9534f;font-size:.9em}.elementor-message{margin:10px 0;font-size:1em;line-height:1}.elementor-message:before{content:"\e90e";display:inline-block;font-family:eicons;font-weight:400;font-style:normal;vertical-align:middle;margin-right:5px}.elementor-message.elementor-message-danger{color:#d9534f}.elementor-message.elementor-message-danger:before{content:"\e87f"}.elementor-message.form-message-success{color:#5cb85c}.elementor-form .elementor-button{padding-top:0;padding-bottom:0;border:none}.elementor-form .elementor-button>span{display:flex;justify-content:center}.elementor-form .elementor-button.elementor-size-xs{min-height:33px}.elementor-form .elementor-button.elementor-size-sm{min-height:40px}.elementor-form .elementor-button.elementor-size-md{min-height:47px}.elementor-form .elementor-button.elementor-size-lg{min-height:59px}.elementor-form .elementor-button.elementor-size-xl{min-height:72px}.elementor-element .elementor-widget-container{transition:background .3s,border .3s,border-radius .3s,box-shadow .3s,transform var(--e-transform-transition-duration,.4s)}.elementor-button{display:inline-block;line-height:1;background-color:#69727d;font-size:15px;padding:12px 24px;border-radius:3px;color:#fff;fill:#fff;text-align:center;transition:all .3s}.elementor-button:focus,.elementor-button:hover,.elementor-button:visited{color:#fff}.elementor-button-content-wrapper{display:flex;justify-content:center}.elementor-button-icon{flex-grow:0;order:5}.elementor-button-icon svg{width:1em;height:auto}.elementor-button-icon .e-font-icon-svg{height:1em}.elementor-button-text{flex-grow:1;order:10;display:inline-block}.elementor-button.elementor-size-xs{font-size:13px;padding:10px 20px;border-radius:2px}.elementor-button.elementor-size-md{font-size:16px;padding:15px 30px;border-radius:4px}.elementor-button.elementor-size-lg{font-size:18px;padding:20px 40px;border-radius:5px}.elementor-button.elementor-size-xl{font-size:20px;padding:25px 50px;border-radius:6px}.elementor-button .elementor-align-icon-right{margin-left:5px;order:15}.elementor-button .elementor-align-icon-left{margin-right:5px;order:5}.elementor-button span{text-decoration:inherit}.elementor-element.elementor-button-info .elementor-button{background-color:#5bc0de}.elementor-element.elementor-button-success .elementor-button{background-color:#5cb85c}.elementor-element.elementor-button-warning .elementor-button{background-color:#f0ad4e}.elementor-element.elementor-button-danger .elementor-button{background-color:#d9534f}.elementor-widget-button .elementor-button .elementor-button-info{background-color:#5bc0de}.elementor-widget-button .elementor-button .elementor-button-success{background-color:#5cb85c}.elementor-widget-button .elementor-button .elementor-button-warning{background-color:#f0ad4e}.elementor-widget-button .elementor-button .elementor-button-danger{background-color:#d9534f}.elementor-tab-title a{color:inherit}.elementor-view-stacked .elementor-icon{padding:.5em;background-color:#69727d;color:#fff;fill:#fff}.elementor-view-framed .elementor-icon{padding:.5em;color:#69727d;border:3px solid #69727d;background-color:transparent}.elementor-icon{display:inline-block;line-height:1;transition:all .3s;color:#69727d;font-size:50px;text-align:center}.elementor-icon:hover{color:#69727d}.elementor-icon i,.elementor-icon svg{width:1em;height:1em;position:relative;display:block}.elementor-icon i:before,.elementor-icon svg:before{position:absolute;left:50%;transform:translateX(-50%)}.elementor-icon i.fad{width:auto}.elementor-shape-circle .elementor-icon{border-radius:50%}.e-transform .elementor-widget-container{transform:perspective(var(--e-transform-perspective,0)) rotate(var(--e-transform-rotateZ,0)) rotateX(var(--e-transform-rotateX,0)) rotateY(var(--e-transform-rotateY,0)) translate(var(--e-transform-translate,0)) translateX(var(--e-transform-translateX,0)) translateY(var(--e-transform-translateY,0)) scaleX(calc(var(--e-transform-flipX, 1) * var(--e-transform-scaleX, var(--e-transform-scale, 1)))) scaleY(calc(var(--e-transform-flipY, 1) * var(--e-transform-scaleY, var(--e-transform-scale, 1)))) skewX(var(--e-transform-skewX,0)) skewY(var(--e-transform-skewY,0));transform-origin:var(--e-transform-origin-y) var(--e-transform-origin-x)}.e-con.e-transform{transform:perspective(var(--e-con-transform-perspective,0)) rotate(var(--e-con-transform-rotateZ,0)) rotateX(var(--e-con-transform-rotateX,0)) rotateY(var(--e-con-transform-rotateY,0)) translate(var(--e-con-transform-translate,0)) translateX(var(--e-con-transform-translateX,0)) translateY(var(--e-con-transform-translateY,0)) scaleX(calc(var(--e-con-transform-flipX, 1) * var(--e-con-transform-scaleX, var(--e-con-transform-scale, 1)))) scaleY(calc(var(--e-con-transform-flipY, 1) * var(--e-con-transform-scaleY, var(--e-con-transform-scale, 1)))) skewX(var(--e-con-transform-skewX,0)) skewY(var(--e-con-transform-skewY,0));transform-origin:var(--e-con-transform-origin-y) var(--e-con-transform-origin-x)}.elementor-element,.elementor-lightbox{--swiper-theme-color:#000;--swiper-navigation-size:44px;--swiper-pagination-bullet-size:6px;--swiper-pagination-bullet-horizontal-gap:6px}.elementor-element .swiper-container .swiper-slide figure,.elementor-element .swiper .swiper-slide figure,.elementor-lightbox .swiper-container .swiper-slide figure,.elementor-lightbox .swiper .swiper-slide figure{line-height:0}.elementor-element .swiper-container .elementor-lightbox-content-source,.elementor-element .swiper .elementor-lightbox-content-source,.elementor-lightbox .swiper-container .elementor-lightbox-content-source,.elementor-lightbox .swiper .elementor-lightbox-content-source{display:none}.elementor-element .swiper-container .elementor-swiper-button,.elementor-element .swiper-container~.elementor-swiper-button,.elementor-element .swiper .elementor-swiper-button,.elementor-element .swiper~.elementor-swiper-button,.elementor-lightbox .swiper-container .elementor-swiper-button,.elementor-lightbox .swiper-container~.elementor-swiper-button,.elementor-lightbox .swiper .elementor-swiper-button,.elementor-lightbox .swiper~.elementor-swiper-button{position:absolute;display:inline-flex;z-index:1;cursor:pointer;font-size:25px;color:hsla(0,0%,93.3%,.9);top:50%;transform:translateY(-50%)}.elementor-element .swiper-container .elementor-swiper-button svg,.elementor-element .swiper-container~.elementor-swiper-button svg,.elementor-element .swiper .elementor-swiper-button svg,.elementor-element .swiper~.elementor-swiper-button svg,.elementor-lightbox .swiper-container .elementor-swiper-button svg,.elementor-lightbox .swiper-container~.elementor-swiper-button svg,.elementor-lightbox .swiper .elementor-swiper-button svg,.elementor-lightbox .swiper~.elementor-swiper-button svg{fill:hsla(0,0%,93.3%,.9);height:1em;width:1em}.elementor-element .swiper-container .elementor-swiper-button-prev,.elementor-element .swiper-container~.elementor-swiper-button-prev,.elementor-element .swiper .elementor-swiper-button-prev,.elementor-element .swiper~.elementor-swiper-button-prev,.elementor-lightbox .swiper-container .elementor-swiper-button-prev,.elementor-lightbox .swiper-container~.elementor-swiper-button-prev,.elementor-lightbox .swiper .elementor-swiper-button-prev,.elementor-lightbox .swiper~.elementor-swiper-button-prev{left:10px}.elementor-element .swiper-container .elementor-swiper-button-next,.elementor-element .swiper-container~.elementor-swiper-button-next,.elementor-element .swiper .elementor-swiper-button-next,.elementor-element .swiper~.elementor-swiper-button-next,.elementor-lightbox .swiper-container .elementor-swiper-button-next,.elementor-lightbox .swiper-container~.elementor-swiper-button-next,.elementor-lightbox .swiper .elementor-swiper-button-next,.elementor-lightbox .swiper~.elementor-swiper-button-next{right:10px}.elementor-element .swiper-container .elementor-swiper-button.swiper-button-disabled,.elementor-element .swiper-container~.elementor-swiper-button.swiper-button-disabled,.elementor-element .swiper .elementor-swiper-button.swiper-button-disabled,.elementor-element .swiper~.elementor-swiper-button.swiper-button-disabled,.elementor-lightbox .swiper-container .elementor-swiper-button.swiper-button-disabled,.elementor-lightbox .swiper-container~.elementor-swiper-button.swiper-button-disabled,.elementor-lightbox .swiper .elementor-swiper-button.swiper-button-disabled,.elementor-lightbox .swiper~.elementor-swiper-button.swiper-button-disabled{opacity:.3}.elementor-element .swiper-container .swiper-image-stretch .swiper-slide .swiper-slide-image,.elementor-element .swiper .swiper-image-stretch .swiper-slide .swiper-slide-image,.elementor-lightbox .swiper-container .swiper-image-stretch .swiper-slide .swiper-slide-image,.elementor-lightbox .swiper .swiper-image-stretch .swiper-slide .swiper-slide-image{width:100%}.elementor-element .swiper-container .swiper-horizontal>.swiper-pagination-bullets,.elementor-element .swiper-container .swiper-pagination-bullets.swiper-pagination-horizontal,.elementor-element .swiper-container .swiper-pagination-custom,.elementor-element .swiper-container .swiper-pagination-fraction,.elementor-element .swiper-container~.swiper-pagination-bullets.swiper-pagination-horizontal,.elementor-element .swiper-container~.swiper-pagination-custom,.elementor-element .swiper-container~.swiper-pagination-fraction,.elementor-element .swiper .swiper-horizontal>.swiper-pagination-bullets,.elementor-element .swiper .swiper-pagination-bullets.swiper-pagination-horizontal,.elementor-element .swiper .swiper-pagination-custom,.elementor-element .swiper .swiper-pagination-fraction,.elementor-element .swiper~.swiper-pagination-bullets.swiper-pagination-horizontal,.elementor-element .swiper~.swiper-pagination-custom,.elementor-element .swiper~.swiper-pagination-fraction,.elementor-lightbox .swiper-container .swiper-horizontal>.swiper-pagination-bullets,.elementor-lightbox .swiper-container .swiper-pagination-bullets.swiper-pagination-horizontal,.elementor-lightbox .swiper-container .swiper-pagination-custom,.elementor-lightbox .swiper-container .swiper-pagination-fraction,.elementor-lightbox .swiper-container~.swiper-pagination-bullets.swiper-pagination-horizontal,.elementor-lightbox .swiper-container~.swiper-pagination-custom,.elementor-lightbox .swiper-container~.swiper-pagination-fraction,.elementor-lightbox .swiper .swiper-horizontal>.swiper-pagination-bullets,.elementor-lightbox .swiper .swiper-pagination-bullets.swiper-pagination-horizontal,.elementor-lightbox .swiper .swiper-pagination-custom,.elementor-lightbox .swiper .swiper-pagination-fraction,.elementor-lightbox .swiper~.swiper-pagination-bullets.swiper-pagination-horizontal,.elementor-lightbox .swiper~.swiper-pagination-custom,.elementor-lightbox .swiper~.swiper-pagination-fraction{bottom:5px}.elementor-element .swiper-container.swiper-cube .elementor-swiper-button,.elementor-element .swiper-container.swiper-cube~.elementor-swiper-button,.elementor-element .swiper.swiper-cube .elementor-swiper-button,.elementor-element .swiper.swiper-cube~.elementor-swiper-button,.elementor-lightbox .swiper-container.swiper-cube .elementor-swiper-button,.elementor-lightbox .swiper-container.swiper-cube~.elementor-swiper-button,.elementor-lightbox .swiper.swiper-cube .elementor-swiper-button,.elementor-lightbox .swiper.swiper-cube~.elementor-swiper-button{transform:translate3d(0,-50%,1px)}.elementor-element :where(.swiper-container-horizontal)~.swiper-pagination-bullets,.elementor-lightbox :where(.swiper-container-horizontal)~.swiper-pagination-bullets{bottom:5px;left:0;width:100%}.elementor-element :where(.swiper-container-horizontal)~.swiper-pagination-bullets .swiper-pagination-bullet,.elementor-lightbox :where(.swiper-container-horizontal)~.swiper-pagination-bullets .swiper-pagination-bullet{margin:0 var(--swiper-pagination-bullet-horizontal-gap,4px)}.elementor-element :where(.swiper-container-horizontal)~.swiper-pagination-progressbar,.elementor-lightbox :where(.swiper-container-horizontal)~.swiper-pagination-progressbar{width:100%;height:4px;left:0;top:0}.elementor-element.elementor-pagination-position-outside .swiper,.elementor-element.elementor-pagination-position-outside .swiper-container,.elementor-lightbox.elementor-pagination-position-outside .swiper,.elementor-lightbox.elementor-pagination-position-outside .swiper-container{padding-bottom:30px}.elementor-element.elementor-pagination-position-outside .swiper-container .elementor-swiper-button,.elementor-element.elementor-pagination-position-outside .swiper-container~.elementor-swiper-button,.elementor-element.elementor-pagination-position-outside .swiper .elementor-swiper-button,.elementor-element.elementor-pagination-position-outside .swiper~.elementor-swiper-button,.elementor-lightbox.elementor-pagination-position-outside .swiper-container .elementor-swiper-button,.elementor-lightbox.elementor-pagination-position-outside .swiper-container~.elementor-swiper-button,.elementor-lightbox.elementor-pagination-position-outside .swiper .elementor-swiper-button,.elementor-lightbox.elementor-pagination-position-outside .swiper~.elementor-swiper-button{top:calc(50% - 30px / 2)}.elementor-element .elementor-swiper,.elementor-lightbox .elementor-swiper{position:relative}.elementor-element .elementor-main-swiper,.elementor-lightbox .elementor-main-swiper{position:static}.elementor-element.elementor-arrows-position-outside .swiper,.elementor-element.elementor-arrows-position-outside .swiper-container,.elementor-lightbox.elementor-arrows-position-outside .swiper,.elementor-lightbox.elementor-arrows-position-outside .swiper-container{width:calc(100% - 60px)}.elementor-element.elementor-arrows-position-outside .swiper-container .elementor-swiper-button-prev,.elementor-element.elementor-arrows-position-outside .swiper-container~.elementor-swiper-button-prev,.elementor-element.elementor-arrows-position-outside .swiper .elementor-swiper-button-prev,.elementor-element.elementor-arrows-position-outside .swiper~.elementor-swiper-button-prev,.elementor-lightbox.elementor-arrows-position-outside .swiper-container .elementor-swiper-button-prev,.elementor-lightbox.elementor-arrows-position-outside .swiper-container~.elementor-swiper-button-prev,.elementor-lightbox.elementor-arrows-position-outside .swiper .elementor-swiper-button-prev,.elementor-lightbox.elementor-arrows-position-outside .swiper~.elementor-swiper-button-prev{left:0}.elementor-element.elementor-arrows-position-outside .swiper-container .elementor-swiper-button-next,.elementor-element.elementor-arrows-position-outside .swiper-container~.elementor-swiper-button-next,.elementor-element.elementor-arrows-position-outside .swiper .elementor-swiper-button-next,.elementor-element.elementor-arrows-position-outside .swiper~.elementor-swiper-button-next,.elementor-lightbox.elementor-arrows-position-outside .swiper-container .elementor-swiper-button-next,.elementor-lightbox.elementor-arrows-position-outside .swiper-container~.elementor-swiper-button-next,.elementor-lightbox.elementor-arrows-position-outside .swiper .elementor-swiper-button-next,.elementor-lightbox.elementor-arrows-position-outside .swiper~.elementor-swiper-button-next{right:0}.elementor-lightbox{--lightbox-ui-color:hsla(0,0%,93.3%,0.9);--lightbox-ui-color-hover:#fff;--lightbox-text-color:var(--lightbox-ui-color);--lightbox-header-icons-size:20px;--lightbox-navigation-icons-size:25px}.elementor-lightbox:not(.elementor-popup-modal) .dialog-header,.elementor-lightbox:not(.elementor-popup-modal) .dialog-message{text-align:center}.elementor-lightbox .dialog-header{display:none}.elementor-lightbox .dialog-widget-content{background:none;box-shadow:none;width:100%;height:100%}.elementor-lightbox .dialog-message{animation-duration:.3s;height:100%}.elementor-lightbox .dialog-message.dialog-lightbox-message{padding:0}.elementor-lightbox .dialog-lightbox-close-button{cursor:pointer;position:absolute;font-size:var(--lightbox-header-icons-size);right:.75em;margin-top:13px;padding:.25em;z-index:2;line-height:1;display:flex}.elementor-lightbox .dialog-lightbox-close-button svg{height:1em;width:1em}.elementor-lightbox .dialog-lightbox-close-button,.elementor-lightbox .elementor-swiper-button{color:var(--lightbox-ui-color);transition:all .3s;opacity:1}.elementor-lightbox .dialog-lightbox-close-button svg,.elementor-lightbox .elementor-swiper-button svg{fill:var(--lightbox-ui-color)}.elementor-lightbox .dialog-lightbox-close-button:hover,.elementor-lightbox .elementor-swiper-button:hover{color:var(--lightbox-ui-color-hover)}.elementor-lightbox .dialog-lightbox-close-button:hover svg,.elementor-lightbox .elementor-swiper-button:hover svg{fill:var(--lightbox-ui-color-hover)}.elementor-lightbox .swiper,.elementor-lightbox .swiper-container{height:100%}.elementor-lightbox .elementor-lightbox-item{display:flex;align-items:center;justify-content:center;position:relative;padding:70px;box-sizing:border-box;height:100%;margin:auto}@media (max-width:ELEMENTOR_SCREEN_MOBILE_MAX){.elementor-lightbox .elementor-lightbox-item{padding:70px 0}}.elementor-lightbox .elementor-lightbox-image{max-height:100%;-webkit-user-select:none;-moz-user-select:none;user-select:none}.elementor-lightbox .elementor-lightbox-image,.elementor-lightbox .elementor-lightbox-image:hover{opacity:1;filter:none;border:none}.elementor-lightbox .elementor-lightbox-image{box-shadow:0 0 30px rgba(0,0,0,.3),0 0 8px -5px rgba(0,0,0,.3);border-radius:2px}.elementor-lightbox .elementor-video-container{width:100%;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.elementor-lightbox .elementor-video-container .elementor-video-landscape,.elementor-lightbox .elementor-video-container .elementor-video-portrait,.elementor-lightbox .elementor-video-container .elementor-video-square{width:100%;height:100%;margin:auto}.elementor-lightbox .elementor-video-container .elementor-video-landscape iframe,.elementor-lightbox .elementor-video-container .elementor-video-portrait iframe,.elementor-lightbox .elementor-video-container .elementor-video-square iframe{border:0;background-color:#000}.elementor-lightbox .elementor-video-container .elementor-video-landscape iframe,.elementor-lightbox .elementor-video-container .elementor-video-landscape video,.elementor-lightbox .elementor-video-container .elementor-video-portrait iframe,.elementor-lightbox .elementor-video-container .elementor-video-portrait video,.elementor-lightbox .elementor-video-container .elementor-video-square iframe,.elementor-lightbox .elementor-video-container .elementor-video-square video{aspect-ratio:var(--video-aspect-ratio,1.77777)}@supports not (aspect-ratio:1/1){.elementor-lightbox .elementor-video-container .elementor-video-landscape,.elementor-lightbox .elementor-video-container .elementor-video-portrait,.elementor-lightbox .elementor-video-container .elementor-video-square{position:relative;overflow:hidden;height:0;padding-bottom:calc(100% / var(--video-aspect-ratio, 1.77777))}.elementor-lightbox .elementor-video-container .elementor-video-landscape iframe,.elementor-lightbox .elementor-video-container .elementor-video-landscape video,.elementor-lightbox .elementor-video-container .elementor-video-portrait iframe,.elementor-lightbox .elementor-video-container .elementor-video-portrait video,.elementor-lightbox .elementor-video-container .elementor-video-square iframe,.elementor-lightbox .elementor-video-container .elementor-video-square video{position:absolute;top:0;right:0;bottom:0;left:0}}.elementor-lightbox .elementor-video-container .elementor-video-square iframe,.elementor-lightbox .elementor-video-container .elementor-video-square video{width:min(90vh,90vw);height:min(90vh,90vw)}.elementor-lightbox .elementor-video-container .elementor-video-landscape iframe,.elementor-lightbox .elementor-video-container .elementor-video-landscape video{width:100%;max-height:90vh}.elementor-lightbox .elementor-video-container .elementor-video-portrait iframe,.elementor-lightbox .elementor-video-container .elementor-video-portrait video{height:100%;max-width:90vw}@media (min-width:ELEMENTOR_SCREEN_TABLET_NEXT){.elementor-lightbox .elementor-video-container .elementor-video-landscape{width:85vw;max-height:85vh}.elementor-lightbox .elementor-video-container .elementor-video-portrait{height:85vh;max-width:85vw}}@media (max-width:ELEMENTOR_SCREEN_TABLET_MAX){.elementor-lightbox .elementor-video-container .elementor-video-landscape{width:95vw;max-height:95vh}.elementor-lightbox .elementor-video-container .elementor-video-portrait{height:95vh;max-width:95vw}}.elementor-lightbox .swiper-container .elementor-swiper-button-prev,.elementor-lightbox .swiper .elementor-swiper-button-prev{left:0}.elementor-lightbox .swiper-container .elementor-swiper-button-next,.elementor-lightbox .swiper .elementor-swiper-button-next{right:0}.elementor-lightbox .swiper-container .swiper-pagination-fraction,.elementor-lightbox .swiper .swiper-pagination-fraction{width:-moz-max-content;width:max-content;color:#fff}.elementor-lightbox .elementor-swiper-button:focus{outline-width:1px}.elementor-lightbox .elementor-swiper-button-next,.elementor-lightbox .elementor-swiper-button-prev{height:100%;display:flex;align-items:center;width:15%;justify-content:center;font-size:var(--lightbox-navigation-icons-size)}@media (max-width:ELEMENTOR_SCREEN_MOBILE_MAX){.elementor-lightbox .elementor-swiper-button:focus{outline:none}.elementor-lightbox .elementor-swiper-button-next,.elementor-lightbox .elementor-swiper-button-prev{width:20%}.elementor-lightbox .elementor-swiper-button-next i,.elementor-lightbox .elementor-swiper-button-prev i{padding:10px;background-color:rgba(0,0,0,.5)}.elementor-lightbox .elementor-swiper-button-prev{left:0;justify-content:flex-start}.elementor-lightbox .elementor-swiper-button-next{right:0;justify-content:flex-end}}.elementor-slideshow__counter{color:currentColor;font-size:.75em;width:-moz-max-content;width:max-content}.elementor-slideshow__footer,.elementor-slideshow__header{position:absolute;left:0;width:100%;padding:15px 20px;transition:.3s}.elementor-slideshow__footer{color:var(--lightbox-text-color)}.elementor-slideshow__header{color:var(--lightbox-ui-color);display:flex;flex-direction:row-reverse;font-size:var(--lightbox-header-icons-size);padding-left:1em;padding-right:2.6em;top:0;align-items:center;z-index:10}.elementor-slideshow__header>i,.elementor-slideshow__header>svg{cursor:pointer;padding:.25em;margin:0 .35em}.elementor-slideshow__header>i{font-size:inherit}.elementor-slideshow__header>i:hover{color:var(--lightbox-ui-color-hover)}.elementor-slideshow__header>svg{box-sizing:content-box;fill:var(--lightbox-ui-color);height:1em;width:1em}.elementor-slideshow__header>svg:hover{fill:var(--lightbox-ui-color-hover)}.elementor-slideshow__header .elementor-slideshow__counter{margin-right:auto}.elementor-slideshow__header .elementor-icon-share{z-index:5}.elementor-slideshow__share-menu{background-color:transparent;width:0;height:0;position:absolute;overflow:hidden;transition:background-color .4s}.elementor-slideshow__share-menu .elementor-slideshow__share-links a{color:#0c0d0e}.elementor-slideshow__share-links{display:block;position:absolute;min-width:200px;right:2.8em;top:3em;background-color:#fff;border-radius:3px;padding:14px 20px;transform:scale(0);opacity:0;transform-origin:90% 10%;transition:all .25s .1s;box-shadow:0 4px 15px rgba(0,0,0,.3)}.elementor-slideshow__share-links a{text-align:left;color:#3f444b;font-size:12px;line-height:2.5;display:block;opacity:0;transition:opacity .5s .1s}.elementor-slideshow__share-links a:hover{color:#000}.elementor-slideshow__share-links a i,.elementor-slideshow__share-links a svg{margin-right:.75em}.elementor-slideshow__share-links a i{font-size:1.25em}.elementor-slideshow__share-links a svg{height:1.25em;width:1.25em}.elementor-slideshow__share-links:before{content:"";display:block;position:absolute;top:1px;right:.5em;border:.45em solid transparent;border-bottom-color:#fff;transform:translateY(-100%) scaleX(.7)}.elementor-slideshow__footer{bottom:0;z-index:5;position:fixed}.elementor-slideshow__description,.elementor-slideshow__title{margin:0}.elementor-slideshow__title{font-size:16px;font-weight:700}.elementor-slideshow__description{font-size:14px}.elementor-slideshow--ui-hidden .elementor-slideshow__footer,.elementor-slideshow--ui-hidden .elementor-slideshow__header{opacity:0;pointer-events:none}.elementor-slideshow--ui-hidden .elementor-swiper-button-next,.elementor-slideshow--ui-hidden .elementor-swiper-button-prev{opacity:0}.elementor-slideshow--fullscreen-mode .elementor-video-container{width:100%}.elementor-slideshow--zoom-mode .elementor-slideshow__footer,.elementor-slideshow--zoom-mode .elementor-slideshow__header{background-color:rgba(0,0,0,.5)}.elementor-slideshow--zoom-mode .elementor-swiper-button-next,.elementor-slideshow--zoom-mode .elementor-swiper-button-prev{opacity:0;pointer-events:none}.elementor-slideshow--share-mode .elementor-slideshow__share-menu{top:0;left:0;width:100vw;height:100vh;opacity:1;cursor:default;background-color:rgba(0,0,0,.5)}.elementor-slideshow--share-mode .elementor-slideshow__share-links{transform:scale(1)}.elementor-slideshow--share-mode .elementor-slideshow__share-links,.elementor-slideshow--share-mode .elementor-slideshow__share-links a{opacity:1}.elementor-slideshow--share-mode .elementor-slideshow__share-links .eicon-twitter{color:#1da1f2}.elementor-slideshow--share-mode .elementor-slideshow__share-links .eicon-facebook{color:#3b5998}.elementor-slideshow--share-mode .elementor-slideshow__share-links .eicon-pinterest{color:#bd081c}.elementor-slideshow--share-mode .elementor-slideshow__share-links .eicon-download-bold{color:#9da5ae}.elementor-slideshow--share-mode .elementor-slideshow__share-links .e-eicon-twitter{fill:#1da1f2}.elementor-slideshow--share-mode .elementor-slideshow__share-links .e-eicon-facebook{fill:#3b5998}.elementor-slideshow--share-mode .elementor-slideshow__share-links .e-eicon-pinterest{fill:#bd081c}.elementor-slideshow--share-mode .elementor-slideshow__share-links .e-eicon-download-bold{fill:#9da5ae}.elementor-slideshow--share-mode .eicon-share-arrow{z-index:2}.animated{animation-duration:1.25s}.animated.animated-slow{animation-duration:2s}.animated.animated-fast{animation-duration:.75s}.animated.infinite{animation-iteration-count:infinite}.animated.reverse{animation-direction:reverse;animation-fill-mode:forwards}@media (prefers-reduced-motion:reduce){.animated{animation:none}}.elementor-shape{overflow:hidden;position:absolute;left:0;width:100%;line-height:0;direction:ltr}.elementor-shape-top{top:-1px}.elementor-shape-top:not([data-negative=false]) svg{z-index:-1}.elementor-shape-bottom{bottom:-1px}.elementor-shape-bottom:not([data-negative=true]) svg{z-index:-1}.elementor-shape[data-negative=false].elementor-shape-bottom,.elementor-shape[data-negative=true].elementor-shape-top{transform:rotate(180deg)}.elementor-shape svg{display:block;width:calc(100% + 1.3px);position:relative;left:50%;transform:translateX(-50%)}.elementor-shape .elementor-shape-fill{fill:#fff;transform-origin:center;transform:rotateY(0deg)}#wp-admin-bar-elementor_edit_page>.ab-item:before{content:"\e813";font-family:eicons;top:3px;font-size:18px}#wp-admin-bar-elementor_edit_page .ab-submenu .ab-item{display:flex;width:200px}#wp-admin-bar-elementor_edit_page .elementor-edit-link-title{white-space:nowrap;text-overflow:ellipsis;overflow:hidden;width:100%}#wp-admin-bar-elementor_edit_page .elementor-edit-link-type{background:#3f444b;font-size:11px;line-height:9px;margin-top:6px;padding:4px 8px;border-radius:3px}#wp-admin-bar-elementor_inspector>.ab-item:before{content:"\f348";top:2px}#wpadminbar *{font-style:normal}.page-template-elementor_canvas.elementor-page:before{display:none}.elementor-post__thumbnail__link{transition:none}#left-area ul.elementor-icon-list-items,.elementor-edit-area .elementor-element ul.elementor-icon-list-items,.elementor .elementor-element ul.elementor-icon-list-items{padding:0}.e--ua-appleWebkit.rtl{--flex-right:flex-start}.e--ua-appleWebkit .elementor-share-buttons--align-right,.e--ua-appleWebkit .elementor-widget-social-icons.e-grid-align-right{--justify-content:var(--flex-right,flex-end)}.e--ua-appleWebkit .elementor-share-buttons--align-center,.e--ua-appleWebkit .elementor-widget-social-icons.e-grid-align-center{--justify-content:center}.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-center .elementor-grid,.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-justify .elementor-grid,.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-right .elementor-grid,.e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-center .elementor-grid,.e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-right .elementor-grid{width:auto;display:flex;flex-wrap:wrap;justify-content:var(--justify-content,space-between);margin-left:calc(-.5 * var(--grid-column-gap));margin-right:calc(-.5 * var(--grid-column-gap))}.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-center .elementor-grid-item,.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-justify .elementor-grid-item,.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-right .elementor-grid-item,.e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-center .elementor-grid-item,.e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-right .elementor-grid-item{margin-left:calc(.5 * var(--grid-column-gap));margin-right:calc(.5 * var(--grid-column-gap))}.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-left .elementor-grid,.e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-left .elementor-grid{display:inline-block}.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-left .elementor-grid,.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-left .elementor-grid-item,.e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-left .elementor-grid,.e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-left .elementor-grid-item{margin-left:0;margin-right:0}@media (max-width:ELEMENTOR_SCREEN_TABLET_MAX){.e--ua-appleWebkit .elementor-share-buttons-tablet--align-right,.e--ua-appleWebkit .elementor-widget-social-icons.e-grid-align-tablet-right{--justify-content:var(--flex-right,flex-end)}.e--ua-appleWebkit .elementor-share-buttons-tablet--align-center,.e--ua-appleWebkit .elementor-widget-social-icons.e-grid-align-tablet-center{--justify-content:center}.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-tablet-center .elementor-grid,.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-tablet-justify .elementor-grid,.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-tablet-right .elementor-grid,.e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-tablet-center .elementor-grid,.e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-tablet-right .elementor-grid{width:auto;display:flex;flex-wrap:wrap;justify-content:var(--justify-content,space-between);margin-left:calc(-.5 * var(--grid-column-gap));margin-right:calc(-.5 * var(--grid-column-gap))}.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-tablet-center .elementor-grid-item,.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-tablet-justify .elementor-grid-item,.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-tablet-right .elementor-grid-item,.e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-tablet-center .elementor-grid-item,.e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-tablet-right .elementor-grid-item{margin-left:calc(.5 * var(--grid-column-gap));margin-right:calc(.5 * var(--grid-column-gap))}.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons-tablet--align-left .elementor-grid,.e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-tablet-left .elementor-grid{display:inline-block}.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons-tablet--align-left .elementor-grid,.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons-tablet--align-left .elementor-grid-item,.e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-tablet-left .elementor-grid,.e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-tablet-left .elementor-grid-item{margin-left:0;margin-right:0}}@media (max-width:ELEMENTOR_SCREEN_MOBILE_MAX){.e--ua-appleWebkit .elementor-share-buttons-mobile--align-right,.e--ua-appleWebkit .elementor-widget-social-icons.e-grid-align-mobile-right{--justify-content:var(--flex-right,flex-end)}.e--ua-appleWebkit .elementor-share-buttons-mobile--align-center,.e--ua-appleWebkit .elementor-widget-social-icons.e-grid-align-mobile-center{--justify-content:center}.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-mobile-center .elementor-grid,.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-mobile-justify .elementor-grid,.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-mobile-right .elementor-grid,.e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-mobile-center .elementor-grid,.e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-mobile-right .elementor-grid{width:auto;display:flex;flex-wrap:wrap;justify-content:var(--justify-content,space-between);margin-left:calc(-.5 * var(--grid-column-gap));margin-right:calc(-.5 * var(--grid-column-gap))}.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-mobile-center .elementor-grid-item,.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-mobile-justify .elementor-grid-item,.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-mobile-right .elementor-grid-item,.e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-mobile-center .elementor-grid-item,.e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-mobile-right .elementor-grid-item{margin-left:calc(.5 * var(--grid-column-gap));margin-right:calc(.5 * var(--grid-column-gap))}.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons-mobile--align-left .elementor-grid,.e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-mobile-left .elementor-grid{display:inline-block}.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons-mobile--align-left .elementor-grid,.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons-mobile--align-left .elementor-grid-item,.e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-mobile-left .elementor-grid,.e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-mobile-left .elementor-grid-item{margin-left:0;margin-right:0}}@media (max-width:ELEMENTOR_SCREEN_MOBILE_MAX){.elementor .elementor-hidden-mobile,.elementor .elementor-hidden-phone{display:none}}@media (min-width:ELEMENTOR_SCREEN_MOBILE_EXTRA_MIN) and (max-width:ELEMENTOR_SCREEN_MOBILE_EXTRA_MAX){.elementor .elementor-hidden-mobile_extra{display:none}}@media (min-width:ELEMENTOR_SCREEN_TABLET_MIN) and (max-width:ELEMENTOR_SCREEN_TABLET_MAX){.elementor .elementor-hidden-tablet{display:none}}@media (min-width:ELEMENTOR_SCREEN_TABLET_EXTRA_MIN) and (max-width:ELEMENTOR_SCREEN_TABLET_EXTRA_MAX){.elementor .elementor-hidden-tablet_extra{display:none}}@media (min-width:ELEMENTOR_SCREEN_LAPTOP_MIN) and (max-width:ELEMENTOR_SCREEN_LAPTOP_MAX){.elementor .elementor-hidden-laptop{display:none}}@media (min-width:ELEMENTOR_SCREEN_DESKTOP_MIN) and (max-width:ELEMENTOR_SCREEN_DESKTOP_MAX){.elementor .elementor-hidden-desktop{display:none}}@media (min-width:ELEMENTOR_SCREEN_WIDESCREEN_MIN){.elementor .elementor-hidden-widescreen{display:none}}.elementor-widget-text-path{font-size:20px;text-align:var(--alignment,left)}.elementor-widget-text-path svg{width:var(--width);max-width:100%;height:auto;overflow:visible;word-spacing:var(--word-spacing);transform:rotate(var(--rotate,0)) scaleX(var(--scale-x,1)) scaleY(var(--scale-y,1))}.elementor-widget-text-path svg path{vector-effect:non-scaling-stroke;fill:var(--path-fill,transparent);stroke:var(--stroke-color,transparent);stroke-width:var(--stroke-width,1px);transition:var(--stroke-transition) stroke,var(--stroke-transition) fill}.elementor-widget-text-path svg:hover path{--path-fill:var(--path-fill-hover);--stroke-color:var(--stroke-color-hover);--stroke-width:var(--stroke-width-hover)}.elementor-widget-text-path svg text{--fill:var(--text-color);fill:var(--fill);direction:var(--direction,ltr);transition:var(--transition) stroke,var(--transition) stroke-width,var(--transition) fill}.elementor-widget-text-path svg text:hover{--color:var(--text-color-hover,var(--text-color));--fill:var(--color);color:var(--color)}.elementor-widget-n-tabs{--n-tabs-color-accent-fallback:#61ce70;--n-tabs-color-secondary-fallback:#54595f;--n-tabs-default-padding-block:15px;--n-tabs-default-padding-inline:35px;--n-tabs-background-color:transparent;--n-tabs-display:flex;--n-tabs-direction:column;--n-tabs-gap:10px;--n-tabs-heading-display:flex;--n-tabs-heading-direction:row;--n-tabs-heading-grow:initial;--n-tabs-heading-justify-content:center;--n-tabs-heading-width:initial;--n-tabs-heading-overflow-x:initial;--n-tabs-heading-wrap:nowrap;--n-tabs-border-width:1px;--n-tabs-border-color:#d5d8dc;--n-tabs-content-display:flex;--n-tabs-title-color:var(--e-global-color-secondary,var(--n-tabs-color-secondary-fallback));--n-tabs-title-color-hover:#fff;--n-tabs-title-color-active:#fff;--n-tabs-title-background-color:#f1f2f3;--n-tabs-title-background-color-hover:var(--e-global-color-accent,var(--n-tabs-color-accent-fallback));--n-tabs-title-background-color-active:var(--e-global-color-accent,var(--n-tabs-color-accent-fallback));--n-tabs-title-width:initial;--n-tabs-title-height:initial;--n-tabs-title-font-size:1rem;--n-tabs-title-white-space:initial;--n-tabs-title-justify-content-toggle:initial;--n-tabs-title-align-items-toggle:center;--n-tabs-title-justify-content:center;--n-tabs-title-align-items:center;--n-tabs-title-text-align:center;--n-tabs-title-direction:row;--n-tabs-title-gap:10px;--n-tabs-title-flex-grow:0;--n-tabs-title-flex-basis:content;--n-tabs-title-flex-shrink:initial;--n-tabs-title-order:initial;--n-tabs-title-padding-block-start:var(--n-tabs-default-padding-block);--n-tabs-title-padding-inline-end:var(--n-tabs-default-padding-inline);--n-tabs-title-padding-block-end:var(--n-tabs-default-padding-block);--n-tabs-title-padding-inline-start:var(--n-tabs-default-padding-inline);--n-tabs-title-border-radius:initial;--n-tabs-title-transition:0.3s;--n-tabs-icon-color:var(--e-global-color-secondary,var(--n-tabs-color-secondary-fallback));--n-tabs-icon-color-hover:var(--n-tabs-title-color-hover);--n-tabs-icon-color-active:#fff;--n-tabs-icon-gap:5px;width:100%;max-width:100%}.elementor-widget-n-tabs .e-n-tabs{display:var(--n-tabs-display);flex-direction:var(--n-tabs-direction);gap:var(--n-tabs-gap);text-align:start;min-width:0}.elementor-widget-n-tabs .e-n-tabs-heading{display:var(--n-tabs-heading-display);flex-basis:var(--n-tabs-heading-width);flex-direction:var(--n-tabs-heading-direction);flex-shrink:0;justify-content:var(--n-tabs-heading-justify-content);gap:var(--n-tabs-title-gap);overflow-x:var(--n-tabs-heading-overflow-x);flex-wrap:var(--n-tabs-heading-wrap);-ms-overflow-style:none;scrollbar-width:none}.elementor-widget-n-tabs .e-n-tabs-heading::-webkit-scrollbar{display:none}.elementor-widget-n-tabs .e-n-tabs-heading.e-scroll{cursor:grabbing;cursor:-webkit-grabbing}.elementor-widget-n-tabs .e-n-tabs-heading.e-scroll-active{position:relative}.elementor-widget-n-tabs .e-n-tabs-heading.e-scroll-active:before{content:"";position:absolute;inset-block:0;inset-inline:-1000vw;z-index:2}.elementor-widget-n-tabs .e-n-tabs-content{display:var(--n-tabs-content-display);flex-grow:1;min-width:0}.elementor-widget-n-tabs .e-n-tabs-content>.e-con:not(.e-active){display:none}.elementor-widget-n-tabs .e-n-tabs:not(.e-activated)>.e-n-tabs-content>.e-con:first-child{display:flex}.elementor-widget-n-tabs .e-n-tab-title{all:unset;-webkit-user-select:none;-moz-user-select:none;user-select:none;display:flex;align-items:var(--n-tabs-title-align-items-toggle,var(--n-tabs-title-align-items));flex-direction:var(--n-tabs-title-direction);justify-content:var(--n-tabs-title-justify-content-toggle,var(--n-tabs-title-justify-content));gap:var(--n-tabs-icon-gap);border-width:var(--n-tabs-border-width);position:relative;cursor:pointer;outline:none;flex-grow:var(--n-tabs-title-flex-grow);flex-basis:var(--n-tabs-title-flex-basis);flex-shrink:var(--n-tabs-title-flex-shrink);padding-block-start:var(--n-tabs-title-padding-block-start);padding-inline-end:var(--n-tabs-title-padding-inline-end);padding-block-end:var(--n-tabs-title-padding-block-end);padding-inline-start:var(--n-tabs-title-padding-inline-start);border-radius:var(--n-tabs-title-border-radius);height:var(--n-tabs-title-height);width:var(--n-tabs-title-width);white-space:var(--n-tabs-title-white-space);transition:background var(--n-tabs-title-transition),color var(--n-tabs-title-transition),border var(--n-tabs-title-transition),box-shadow var(--n-tabs-title-transition),text-shadow var(--n-tabs-title-transition),stroke var(--n-tabs-title-transition),stroke-width var(--n-tabs-title-transition),-webkit-text-stroke-width var(--n-tabs-title-transition),-webkit-text-stroke-color var(--n-tabs-title-transition),transform var(--n-tabs-title-transition)}.elementor-widget-n-tabs .e-n-tab-title:focus-visible{outline:5px auto -webkit-focus-ring-color}.elementor-widget-n-tabs .e-n-tab-title span i,.elementor-widget-n-tabs .e-n-tab-title span svg{transition:color var(--n-tabs-title-transition),fill var(--n-tabs-title-transition)}.elementor-widget-n-tabs .e-n-tab-title-text{display:flex;align-items:center;font-size:var(--n-tabs-title-font-size);text-align:var(--n-tabs-title-text-align)}.elementor-widget-n-tabs .e-n-tab-title .e-n-tab-icon{display:flex;align-items:center;flex-direction:column;flex-shrink:0;order:var(--n-tabs-icon-order);overflow:hidden}.elementor-widget-n-tabs .e-n-tab-title .e-n-tab-icon i{font-size:var(--n-tabs-icon-size,var(--n-tabs-title-font-size))}.elementor-widget-n-tabs .e-n-tab-title .e-n-tab-icon svg{width:var(--n-tabs-icon-size,var(--n-tabs-title-font-size));height:var(--n-tabs-icon-size,var(--n-tabs-title-font-size))}.elementor-widget-n-tabs .e-n-tab-title .e-n-tab-icon:empty{display:none}.elementor-widget-n-tabs .e-n-tab-title[aria-selected=false]{background-color:var(--n-tabs-title-background-color)}.elementor-widget-n-tabs .e-n-tab-title[aria-selected=false],.elementor-widget-n-tabs .e-n-tab-title[aria-selected=false] a{color:var(--n-tabs-title-color)}.elementor-widget-n-tabs .e-n-tab-title[aria-selected=false] .e-n-tab-icon i{color:var(--n-tabs-icon-color)}.elementor-widget-n-tabs .e-n-tab-title[aria-selected=false] .e-n-tab-icon svg{fill:var(--n-tabs-icon-color)}.elementor-widget-n-tabs .e-n-tab-title[aria-selected=false] .e-n-tab-icon i:last-child,.elementor-widget-n-tabs .e-n-tab-title[aria-selected=false] .e-n-tab-icon svg:last-child{transform:translateY(-100vh);height:0;opacity:0}.elementor-widget-n-tabs .e-n-tab-title[aria-selected=true],.elementor-widget-n-tabs .e-n-tab-title[aria-selected=true] a{color:var(--n-tabs-title-color-active)}.elementor-widget-n-tabs .e-n-tab-title[aria-selected=true] .e-n-tab-icon i{color:var(--n-tabs-icon-color-active)}.elementor-widget-n-tabs .e-n-tab-title[aria-selected=true] .e-n-tab-icon svg{fill:var(--n-tabs-icon-color-active)}.elementor-widget-n-tabs .e-n-tab-title[aria-selected=true] .e-n-tab-icon i:first-child,.elementor-widget-n-tabs .e-n-tab-title[aria-selected=true] .e-n-tab-icon svg:first-child{transform:translateY(-100vh);height:0;opacity:0}.elementor-widget-n-tabs .e-n-tab-title[aria-selected=true][class*=elementor-animation-]:active,.elementor-widget-n-tabs .e-n-tab-title[aria-selected=true][class*=elementor-animation-]:focus,.elementor-widget-n-tabs .e-n-tab-title[aria-selected=true][class*=elementor-animation-]:hover{transform:none;animation:initial}.elementor-widget-n-tabs [data-touch-mode=false] .e-n-tab-title[aria-selected=false]:hover,.elementor-widget-n-tabs [data-touch-mode=false] .e-n-tab-title[aria-selected=false]:hover a{color:var(--n-tabs-title-color-hover)}.elementor-widget-n-tabs [data-touch-mode=false] .e-n-tab-title[aria-selected=false]:hover .e-n-tab-icon i{color:var(--n-tabs-icon-color-hover)}.elementor-widget-n-tabs [data-touch-mode=false] .e-n-tab-title[aria-selected=false]:hover .e-n-tab-icon svg{fill:var(--n-tabs-icon-color-hover)}.elementor-widget-n-tabs [data-touch-mode=true] .e-n-tab-title[aria-selected=false]:hover,.elementor-widget-n-tabs [data-touch-mode=true] .e-n-tab-title[aria-selected=false]:hover a{color:var(--n-tabs-title-color-active)}.elementor-widget-n-tabs [data-touch-mode=true] .e-n-tab-title[aria-selected=false]:hover .e-n-tab-icon i{color:var(--n-tabs-icon-color-active)}.elementor-widget-n-tabs [data-touch-mode=true] .e-n-tab-title[aria-selected=false]:hover .e-n-tab-icon svg{fill:var(--n-tabs-icon-color-active)}.elementor-widget-n-tabs [data-touch-mode=true] .e-n-tab-title[aria-selected=false]:hover .e-n-tab-icon i:first-child,.elementor-widget-n-tabs [data-touch-mode=true] .e-n-tab-title[aria-selected=false]:hover .e-n-tab-icon svg:first-child{transform:translateY(-100vh);height:0;opacity:0}.elementor-widget-n-tabs [data-touch-mode=true] .e-n-tab-title[aria-selected=false]:hover[class*=elementor-animation-]:active,.elementor-widget-n-tabs [data-touch-mode=true] .e-n-tab-title[aria-selected=false]:hover[class*=elementor-animation-]:focus,.elementor-widget-n-tabs [data-touch-mode=true] .e-n-tab-title[aria-selected=false]:hover[class*=elementor-animation-]:hover{transform:none;animation:initial}.elementor-widget-n-tabs [data-touch-mode=true] .e-n-tab-title[aria-selected=false]:hover .e-n-tab-icon i:last-child,.elementor-widget-n-tabs [data-touch-mode=true] .e-n-tab-title[aria-selected=false]:hover .e-n-tab-icon svg:last-child{transform:none;height:auto;opacity:1}.elementor .elementor-element.elementor-widget-n-tabs>.elementor-widget-container>.e-n-tabs[data-touch-mode=false]>.e-n-tabs-heading .e-n-tab-title[aria-selected=false]:hover{background-color:var(--n-tabs-title-background-color-hover);background-image:none}.elementor .elementor-element.elementor-widget-n-tabs>.elementor-widget-container>.e-n-tabs>.e-n-tabs-heading .e-n-tab-title[aria-selected=true],.elementor .elementor-element.elementor-widget-n-tabs>.elementor-widget-container>.e-n-tabs[data-touch-mode=true]>.e-n-tabs-heading .e-n-tab-title[aria-selected=false]:hover{background-color:var(--n-tabs-title-background-color-active);background-image:none}@media (max-width:ELEMENTOR_SCREEN_MOBILE_MAX){.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-mobile{--n-tabs-direction:column;--n-tabs-heading-display:contents;--n-tabs-content-display:contents}.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-mobile .e-n-tabs{gap:0}.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-mobile .e-n-tabs-content>.e-con{order:var(--n-tabs-title-order)}.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-mobile .e-n-tab-title{order:var(--n-tabs-title-order);width:auto}.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-mobile .e-n-tab-title:not(:first-child){margin-block-start:var(--n-tabs-title-gap)}.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-mobile .e-n-tab-title[aria-selected=true]{margin-block-end:var(--n-tabs-gap)}}@media (max-width:ELEMENTOR_SCREEN_MOBILE_EXTRA_MAX){.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-mobile_extra{--n-tabs-direction:column;--n-tabs-heading-display:contents;--n-tabs-content-display:contents}.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-mobile_extra .e-n-tabs{gap:0}.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-mobile_extra .e-n-tabs-content>.e-con{order:var(--n-tabs-title-order)}.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-mobile_extra .e-n-tab-title{order:var(--n-tabs-title-order);width:auto}.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-mobile_extra .e-n-tab-title:not(:first-child){margin-block-start:var(--n-tabs-title-gap)}.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-mobile_extra .e-n-tab-title[aria-selected=true]{margin-block-end:var(--n-tabs-gap)}}@media (max-width:ELEMENTOR_SCREEN_TABLET_MAX){.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-tablet{--n-tabs-direction:column;--n-tabs-heading-display:contents;--n-tabs-content-display:contents}.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-tablet .e-n-tabs{gap:0}.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-tablet .e-n-tabs-content>.e-con{order:var(--n-tabs-title-order)}.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-tablet .e-n-tab-title{order:var(--n-tabs-title-order);width:auto}.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-tablet .e-n-tab-title:not(:first-child){margin-block-start:var(--n-tabs-title-gap)}.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-tablet .e-n-tab-title[aria-selected=true]{margin-block-end:var(--n-tabs-gap)}}@media (max-width:ELEMENTOR_SCREEN_TABLET_EXTRA_MAX){.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-tablet_extra{--n-tabs-direction:column;--n-tabs-heading-display:contents;--n-tabs-content-display:contents}.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-tablet_extra .e-n-tabs{gap:0}.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-tablet_extra .e-n-tabs-content>.e-con{order:var(--n-tabs-title-order)}.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-tablet_extra .e-n-tab-title{order:var(--n-tabs-title-order);width:auto}.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-tablet_extra .e-n-tab-title:not(:first-child){margin-block-start:var(--n-tabs-title-gap)}.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-tablet_extra .e-n-tab-title[aria-selected=true]{margin-block-end:var(--n-tabs-gap)}}@media (max-width:ELEMENTOR_SCREEN_LAPTOP_MAX){.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-laptop{--n-tabs-direction:column;--n-tabs-heading-display:contents;--n-tabs-content-display:contents}.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-laptop .e-n-tabs{gap:0}.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-laptop .e-n-tabs-content>.e-con{order:var(--n-tabs-title-order)}.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-laptop .e-n-tab-title{order:var(--n-tabs-title-order);width:auto}.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-laptop .e-n-tab-title:not(:first-child){margin-block-start:var(--n-tabs-title-gap)}.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-laptop .e-n-tab-title[aria-selected=true]{margin-block-end:var(--n-tabs-gap)}}.elementor-widget-n-accordion{--n-accordion-title-font-size:20px;--n-accordion-title-flex-grow:initial;--n-accordion-title-justify-content:initial;--n-accordion-title-icon-order:-1;--n-accordion-border-width:1px;--n-accordion-border-color:#d5d8dc;--n-accordion-border-style:solid;--n-accordion-item-title-flex-grow:initial;--n-accordion-item-title-space-between:0px;--n-accordion-item-title-distance-from-content:0px;--n-accordion-padding:10px;--n-accordion-border-radius:0px;--n-accordion-icon-size:15px;--n-accordion-title-normal-color:#1f2124;--n-accordion-title-hover-color:#1f2124;--n-accordion-title-active-color:#1f2124;--n-accordion-icon-normal-color:var(--n-accordion-title-normal-color);--n-accordion-icon-hover-color:var(--n-accordion-title-hover-color);--n-accordion-icon-active-color:var(--n-accordion-title-active-color);--n-accordion-icon-gap:0 10px;width:100%}.elementor-widget-n-accordion .e-n-accordion details>summary::-webkit-details-marker{display:none}.elementor-widget-n-accordion .e-n-accordion-item{display:flex;flex-direction:column;position:relative}.elementor-widget-n-accordion .e-n-accordion-item:not(:last-child){margin-block-end:var(--n-accordion-item-title-space-between)}.elementor-widget-n-accordion .e-n-accordion-item-title,:where(.elementor-widget-n-accordion .e-n-accordion-item>.e-con){border:var(--n-accordion-border-width) var(--n-accordion-border-style) var(--n-accordion-border-color)}.elementor-widget-n-accordion .e-n-accordion-item-title{display:flex;flex-direction:row;list-style:none;padding:var(--n-accordion-padding);justify-content:var(--n-accordion-title-justify-content);border-radius:var(--n-accordion-border-radius);flex-grow:var(--n-menu-title-flex-grow);gap:var(--n-accordion-icon-gap);color:var(--n-accordion-title-normal-color);align-items:center;cursor:pointer}.elementor-widget-n-accordion .e-n-accordion-item-title-header{display:flex}.elementor-widget-n-accordion .e-n-accordion-item-title-header h1,.elementor-widget-n-accordion .e-n-accordion-item-title-header h2,.elementor-widget-n-accordion .e-n-accordion-item-title-header h3,.elementor-widget-n-accordion .e-n-accordion-item-title-header h4,.elementor-widget-n-accordion .e-n-accordion-item-title-header h5,.elementor-widget-n-accordion .e-n-accordion-item-title-header h6,.elementor-widget-n-accordion .e-n-accordion-item-title-header p{margin-block-start:0;margin-block-end:0}.elementor-widget-n-accordion .e-n-accordion-item-title-text{font-size:var(--n-accordion-title-font-size);align-items:center}.elementor-widget-n-accordion .e-n-accordion-item-title-icon{display:flex;flex-direction:row;align-items:center;order:var(--n-accordion-title-icon-order);position:relative;width:-moz-fit-content;width:fit-content}.elementor-widget-n-accordion .e-n-accordion-item-title-icon span{height:var(--n-accordion-icon-size);width:auto}.elementor-widget-n-accordion .e-n-accordion-item-title-icon span>i{color:var(--n-accordion-icon-normal-color);font-size:var(--n-accordion-icon-size)}.elementor-widget-n-accordion .e-n-accordion-item-title-icon span>svg{fill:var(--n-accordion-icon-normal-color);height:var(--n-accordion-icon-size)}.elementor-widget-n-accordion .e-n-accordion-item-title>span{cursor:pointer}.elementor-widget-n-accordion .e-n-accordion-item[open] .e-n-accordion-item-title{margin-block-end:var(--n-accordion-item-title-distance-from-content);color:var(--n-accordion-title-active-color)}.elementor-widget-n-accordion .e-n-accordion-item[open] .e-n-accordion-item-title-icon .e-opened{display:flex}.elementor-widget-n-accordion .e-n-accordion-item[open] .e-n-accordion-item-title-icon .e-closed{display:none}.elementor-widget-n-accordion .e-n-accordion-item[open] .e-n-accordion-item-title-icon span>i{color:var(--n-accordion-icon-active-color)}.elementor-widget-n-accordion .e-n-accordion-item[open] .e-n-accordion-item-title-icon span>svg{fill:var(--n-accordion-icon-active-color)}.elementor-widget-n-accordion .e-n-accordion-item:not([open]):hover .e-n-accordion-item-title{color:var(--n-accordion-title-hover-color)}.elementor-widget-n-accordion .e-n-accordion-item:not([open]):hover .e-n-accordion-item-title-icon span>i{color:var(--n-accordion-icon-hover-color)}.elementor-widget-n-accordion .e-n-accordion-item:not([open]):hover .e-n-accordion-item-title-icon span>svg{fill:var(--n-accordion-icon-hover-color)}.elementor-widget-n-accordion .e-n-accordion-item .e-n-accordion-item-title-icon .e-opened{display:none}.elementor-widget-n-accordion .e-n-accordion-item .e-n-accordion-item-title-icon .e-closed{display:flex}.elementor-widget-n-accordion .e-n-accordion-item .e-n-accordion-item-title-icon span>svg{fill:var(--n-accordion-icon-normal-color)}.elementor-widget-n-accordion .e-n-accordion-item .e-n-accordion-item-title-icon span>i{color:var(--n-accordion-icon-normal-color)}.elementor-widget-n-accordion .e-n-accordion-item>span{cursor:pointer} \ No newline at end of file diff --git a/wp-content/plugins/elementor/assets/css/templates/frontend-rtl.css b/wp-content/plugins/elementor/assets/css/templates/frontend-rtl.css new file mode 100644 index 0000000..7f7603f --- /dev/null +++ b/wp-content/plugins/elementor/assets/css/templates/frontend-rtl.css @@ -0,0 +1,5690 @@ +@charset "UTF-8"; +.dialog-widget-content { + background-color: var(--e-a-bg-default); + position: absolute; + border-radius: 3px; + box-shadow: 2px 8px 23px 3px rgba(0, 0, 0, 0.2); + overflow: hidden; +} + +.dialog-message { + line-height: 1.5; + box-sizing: border-box; +} + +.dialog-close-button { + cursor: pointer; + position: absolute; + margin-block-start: 15px; + left: 15px; + color: var(--e-a-color-txt); + font-size: 15px; + line-height: 1; + transition: var(--e-a-transition-hover); +} +.dialog-close-button:hover { + color: var(--e-a-color-txt-hover); +} + +.dialog-prevent-scroll { + overflow: hidden; + max-height: 100vh; +} + +.dialog-type-lightbox { + position: fixed; + height: 100%; + width: 100%; + bottom: 0; + left: 0; + background-color: rgba(0, 0, 0, 0.8); + z-index: 9999; + user-select: none; +} + +.elementor-editor-active .elementor-popup-modal { + background-color: initial; +} + +.dialog-type-confirm .dialog-widget-content, +.dialog-type-alert .dialog-widget-content { + margin: auto; + width: 400px; + padding: 20px; +} +.dialog-type-confirm .dialog-header, +.dialog-type-alert .dialog-header { + font-size: 15px; + font-weight: 500; +} +.dialog-type-confirm .dialog-header:after, +.dialog-type-alert .dialog-header:after { + content: ""; + display: block; + border-block-end: var(--e-a-border); + padding-block-end: 10px; + margin-block-end: 10px; + margin-inline-start: -20px; + margin-inline-end: -20px; +} +.dialog-type-confirm .dialog-message, +.dialog-type-alert .dialog-message { + min-height: 50px; +} +.dialog-type-confirm .dialog-buttons-wrapper, +.dialog-type-alert .dialog-buttons-wrapper { + padding-block-start: 10px; + display: flex; + justify-content: flex-end; + gap: 15px; +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button { + font-size: 12px; + font-weight: 500; + line-height: 1.2; + padding: 8px 16px; + outline: none; + border: none; + border-radius: var(--e-a-border-radius); + background-color: var(--e-a-btn-bg); + color: var(--e-a-btn-color-invert); + transition: var(--e-a-transition-hover); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button:hover { + border: none; +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button:focus { + background-color: var(--e-a-btn-bg-hover); + color: var(--e-a-btn-color-invert); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:active, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button:active { + background-color: var(--e-a-btn-bg-active); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:not([disabled]), +.dialog-type-alert .dialog-buttons-wrapper .dialog-button:not([disabled]) { + cursor: pointer; +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:disabled, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button:disabled { + background-color: var(--e-a-btn-bg-disabled); + color: var(--e-a-btn-color-disabled); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:not(.elementor-button-state) .elementor-state-icon, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button:not(.elementor-button-state) .elementor-state-icon { + display: none; +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel { + background: transparent; + color: var(--e-a-color-txt); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel:focus { + background: var(--e-a-bg-hover); + color: var(--e-a-color-txt-hover); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt:disabled, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel:disabled, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt:disabled, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel:disabled { + background: transparent; + color: var(--e-a-color-txt-disabled); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt-border, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt-border { + border: 1px solid var(--e-a-color-txt-muted); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-success, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-success, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-success, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-success { + background-color: var(--e-a-btn-bg-success); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-success:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-success:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-success:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-success:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-success:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-success:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-success:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-success:focus { + background-color: var(--e-a-btn-bg-success-hover); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-take_over, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-take_over, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok { + background-color: var(--e-a-btn-bg-primary); + color: var(--e-a-btn-color); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-take_over:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-take_over:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-take_over:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-take_over:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok:focus { + background-color: var(--e-a-btn-bg-primary-hover); + color: var(--e-a-btn-color); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary.e-btn-txt, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-take_over, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary.dialog-cancel, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-ok, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary.e-btn-txt, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-take_over, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary.dialog-cancel, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-ok, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel { + background: transparent; + color: var(--e-a-color-primary-bold); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary.e-btn-txt:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-take_over:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary.dialog-cancel:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-ok:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary.e-btn-txt:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-take_over:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary.dialog-cancel:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-ok:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary.e-btn-txt:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-take_over:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary.dialog-cancel:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-ok:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary.e-btn-txt:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-take_over:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary.dialog-cancel:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-ok:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel:focus { + background: var(--e-a-bg-primary); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.go-pro, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-accent, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.go-pro, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-accent { + background-color: var(--e-a-btn-bg-accent); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.go-pro:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.go-pro:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-accent:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-accent:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.go-pro:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.go-pro:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-accent:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-accent:focus { + background-color: var(--e-a-btn-bg-accent-hover); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.go-pro:active, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-accent:active, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.go-pro:active, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-accent:active { + background-color: var(--e-a-btn-bg-accent-active); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-info, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-info, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-info, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-info { + background-color: var(--e-a-btn-bg-info); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-info:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-info:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-info:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-info:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-info:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-info:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-info:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-info:focus { + background-color: var(--e-a-btn-bg-info-hover); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-warning, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-warning, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-warning, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-warning { + background-color: var(--e-a-btn-bg-warning); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-warning:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-warning:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-warning:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-warning:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-warning:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-warning:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-warning:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-warning:focus { + background-color: var(--e-a-btn-bg-warning-hover); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-danger, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-danger, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-danger, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-danger { + background-color: var(--e-a-btn-bg-danger); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-danger:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-danger:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-danger:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-danger:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-danger:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-danger:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-danger:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-danger:focus { + background-color: var(--e-a-btn-bg-danger-hover); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button i, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button i { + margin-inline-end: 5px; +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button:visited, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button:visited { + color: initial; +} +.flatpickr-calendar { + width: 280px; +} +.flatpickr-calendar .flatpickr-current-month span.cur-month { + font-weight: 300; +} +.flatpickr-calendar .dayContainer { + width: 280px; + min-width: 280px; + max-width: 280px; +} +.flatpickr-calendar .flatpickr-days { + width: 280px; +} +.flatpickr-calendar .flatpickr-day { + max-width: 37px; + height: 37px; + line-height: 37px; +} + +.elementor-hidden { + display: none; +} + +.elementor-screen-only, +.screen-reader-text, +.screen-reader-text span, +.ui-helper-hidden-accessible { + position: absolute; + top: -10000em; + width: 1px; + height: 1px; + margin: -1px; + padding: 0; + overflow: hidden; + clip: rect(0, 0, 0, 0); + border: 0; +} + +.elementor-clearfix:after { + content: ""; + display: block; + clear: both; + width: 0; + height: 0; +} + +.e-logo-wrapper { + background: var(--e-a-bg-logo); + display: inline-block; + padding: 0.75em; + border-radius: 50%; + line-height: 1; +} +.e-logo-wrapper i { + color: var(--e-a-color-logo); + font-size: 1em; +} + +.elementor *, .elementor *:before, .elementor *:after { + box-sizing: border-box; +} +.elementor a { + box-shadow: none; + text-decoration: none; +} +.elementor hr { + margin: 0; + background-color: transparent; +} +.elementor img { + height: auto; + max-width: 100%; + border: none; + border-radius: 0; + box-shadow: none; +} +.elementor .elementor-widget:not(.elementor-widget-text-editor):not(.elementor-widget-theme-post-content) figure { + margin: 0; +} +.elementor embed, +.elementor iframe, +.elementor object, +.elementor video { + max-width: 100%; + width: 100%; + margin: 0; + line-height: 1; + border: none; +} +.elementor .elementor-background-video-container, +.elementor .elementor-background-holder, +.elementor .elementor-background { + height: 100%; + width: 100%; + top: 0; + left: 0; + position: absolute; + overflow: hidden; + z-index: 0; + direction: ltr; +} +.elementor .elementor-background-video-container { + transition: opacity 1s; + pointer-events: none; +} +.elementor .elementor-background-video-container.elementor-loading { + opacity: 0; +} +.elementor .elementor-background-video-embed { + max-width: none; +} +.elementor .elementor-background-video-embed, .elementor .elementor-background-video-hosted { + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); +} +.elementor .elementor-background-video { + max-width: none; + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); +} +.elementor .elementor-html5-video { + object-fit: cover; +} +.elementor .elementor-background-overlay { + height: 100%; + width: 100%; + top: 0; + left: 0; + position: absolute; +} +.elementor .elementor-background-slideshow { + position: absolute; + width: 100%; + height: 100%; + z-index: 0; + top: 0; + right: 0; +} +.elementor .elementor-background-slideshow__slide__image { + width: 100%; + height: 100%; + background-position: center center; + background-size: cover; +} + +.elementor-widget-wrap > .elementor-element.elementor-absolute, +.e-con > .elementor-element.elementor-absolute, +.e-con-inner > .elementor-element.elementor-absolute { + position: absolute; +} +.elementor-widget-wrap > .elementor-element.elementor-fixed, +.e-con > .elementor-element.elementor-fixed, +.e-con-inner > .elementor-element.elementor-fixed { + position: fixed; +} + +.elementor-widget-wrap .elementor-element.elementor-widget__width-auto, .elementor-widget-wrap .elementor-element.elementor-widget__width-initial { + max-width: 100%; +} +@media (max-width: ELEMENTOR_SCREEN_TABLET_MAX) { + .elementor-widget-wrap .elementor-element.elementor-widget-tablet__width-auto, .elementor-widget-wrap .elementor-element.elementor-widget-tablet__width-initial { + max-width: 100%; + } +} +@media (max-width: ELEMENTOR_SCREEN_MOBILE_MAX) { + .elementor-widget-wrap .elementor-element.elementor-widget-mobile__width-auto, .elementor-widget-wrap .elementor-element.elementor-widget-mobile__width-initial { + max-width: 100%; + } +} + +.elementor-element { + --flex-direction: initial; + --flex-wrap: initial; + --justify-content: initial; + --align-items: initial; + --align-content: initial; + --gap: initial; + --flex-basis: initial; + --flex-grow: initial; + --flex-shrink: initial; + --order: initial; + --align-self: initial; + flex-basis: var(--flex-basis); + flex-grow: var(--flex-grow); + flex-shrink: var(--flex-shrink); + order: var(--order); + align-self: var(--align-self); +} +.elementor-element.elementor-absolute, .elementor-element.elementor-fixed { + z-index: 1; +} +.elementor-element:where(.e-con-full, .elementor-widget) { + flex-direction: var(--flex-direction); + flex-wrap: var(--flex-wrap); + justify-content: var(--justify-content); + align-items: var(--align-items); + align-content: var(--align-content); + gap: var(--gap); +} + +.elementor-invisible { + visibility: hidden; +} + +.elementor-align-center { + text-align: center; +} +.elementor-align-center .elementor-button { + width: auto; +} +.elementor-align-right { + text-align: right; +} +.elementor-align-right .elementor-button { + width: auto; +} +.elementor-align-left { + text-align: left; +} +.elementor-align-left .elementor-button { + width: auto; +} +.elementor-align-justify .elementor-button { + width: 100%; +} + +.elementor-custom-embed-play { + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); +} +.elementor-custom-embed-play i { + font-size: 100px; + color: #fff; + text-shadow: 1px 0 6px rgba(0, 0, 0, 0.3); +} +.elementor-custom-embed-play svg { + height: 100px; + width: 100px; + fill: #fff; + filter: drop-shadow(1px 0 6px rgba(0, 0, 0, 0.3)); +} +.elementor-custom-embed-play i, +.elementor-custom-embed-play svg { + opacity: 0.8; + transition: all 0.5s; +} +.elementor-custom-embed-play.elementor-playing i { + font-family: eicons; +} +.elementor-custom-embed-play.elementor-playing i:before { + content: "\e8fb"; +} +.elementor-custom-embed-play.elementor-playing i, +.elementor-custom-embed-play.elementor-playing svg { + animation: eicon-spin 2s infinite linear; +} + +.elementor-tag { + display: inline-flex; +} + +.elementor-ken-burns { + transition-property: transform; + transition-duration: 10s; + transition-timing-function: linear; +} +.elementor-ken-burns--out { + transform: scale(1.3); +} +.elementor-ken-burns--active { + transition-duration: 20s; +} +.elementor-ken-burns--active.elementor-ken-burns--out { + transform: scale(1); +} +.elementor-ken-burns--active.elementor-ken-burns--in { + transform: scale(1.3); +} + +@media (min-width: ELEMENTOR_SCREEN_WIDESCREEN_MIN) { + .elementor-widescreen-align-center { + text-align: center; + } + .elementor-widescreen-align-center .elementor-button { + width: auto; + } + .elementor-widescreen-align-right { + text-align: right; + } + .elementor-widescreen-align-right .elementor-button { + width: auto; + } + .elementor-widescreen-align-left { + text-align: left; + } + .elementor-widescreen-align-left .elementor-button { + width: auto; + } + .elementor-widescreen-align-justify .elementor-button { + width: 100%; + } +} +@media (max-width: ELEMENTOR_SCREEN_LAPTOP_MAX) { + .elementor-laptop-align-center { + text-align: center; + } + .elementor-laptop-align-center .elementor-button { + width: auto; + } + .elementor-laptop-align-right { + text-align: right; + } + .elementor-laptop-align-right .elementor-button { + width: auto; + } + .elementor-laptop-align-left { + text-align: left; + } + .elementor-laptop-align-left .elementor-button { + width: auto; + } + .elementor-laptop-align-justify .elementor-button { + width: 100%; + } +} +@media (max-width: ELEMENTOR_SCREEN_TABLET_EXTRA_MAX) { + .elementor-tablet_extra-align-center { + text-align: center; + } + .elementor-tablet_extra-align-center .elementor-button { + width: auto; + } + .elementor-tablet_extra-align-right { + text-align: right; + } + .elementor-tablet_extra-align-right .elementor-button { + width: auto; + } + .elementor-tablet_extra-align-left { + text-align: left; + } + .elementor-tablet_extra-align-left .elementor-button { + width: auto; + } + .elementor-tablet_extra-align-justify .elementor-button { + width: 100%; + } +} +@media (max-width: ELEMENTOR_SCREEN_TABLET_MAX) { + .elementor-tablet-align-center { + text-align: center; + } + .elementor-tablet-align-center .elementor-button { + width: auto; + } + .elementor-tablet-align-right { + text-align: right; + } + .elementor-tablet-align-right .elementor-button { + width: auto; + } + .elementor-tablet-align-left { + text-align: left; + } + .elementor-tablet-align-left .elementor-button { + width: auto; + } + .elementor-tablet-align-justify .elementor-button { + width: 100%; + } +} +@media (max-width: ELEMENTOR_SCREEN_MOBILE_EXTRA_MAX) { + .elementor-mobile_extra-align-center { + text-align: center; + } + .elementor-mobile_extra-align-center .elementor-button { + width: auto; + } + .elementor-mobile_extra-align-right { + text-align: right; + } + .elementor-mobile_extra-align-right .elementor-button { + width: auto; + } + .elementor-mobile_extra-align-left { + text-align: left; + } + .elementor-mobile_extra-align-left .elementor-button { + width: auto; + } + .elementor-mobile_extra-align-justify .elementor-button { + width: 100%; + } +} +@media (max-width: ELEMENTOR_SCREEN_MOBILE_MAX) { + .elementor-mobile-align-center { + text-align: center; + } + .elementor-mobile-align-center .elementor-button { + width: auto; + } + .elementor-mobile-align-right { + text-align: right; + } + .elementor-mobile-align-right .elementor-button { + width: auto; + } + .elementor-mobile-align-left { + text-align: left; + } + .elementor-mobile-align-left .elementor-button { + width: auto; + } + .elementor-mobile-align-justify .elementor-button { + width: 100%; + } +} +:root { + --page-title-display: block; +} + +.elementor-page-title, h1.entry-title { + display: var(--page-title-display); +} + +@keyframes eicon-spin { + 0% { + transform: rotate(0deg); + } + 100% { + transform: rotate(359deg); + } +} +.eicon-animation-spin { + animation: eicon-spin 2s infinite linear; +} + +.elementor-section { + position: relative; +} +.elementor-section .elementor-container { + display: flex; + margin-right: auto; + margin-left: auto; + position: relative; +} +@media (max-width: ELEMENTOR_SCREEN_TABLET_MAX) { + .elementor-section .elementor-container { + flex-wrap: wrap; + } +} +.elementor-section.elementor-section-boxed > .elementor-container { + max-width: 1140px; +} +.elementor-section.elementor-section-stretched { + position: relative; + width: 100%; +} +.elementor-section.elementor-section-items-top > .elementor-container { + align-items: flex-start; +} +.elementor-section.elementor-section-items-middle > .elementor-container { + align-items: center; +} +.elementor-section.elementor-section-items-bottom > .elementor-container { + align-items: flex-end; +} +@media (min-width: ELEMENTOR_SCREEN_MOBILE_NEXT) { + .elementor-section.elementor-section-height-full { + height: 100vh; + } + .elementor-section.elementor-section-height-full > .elementor-container { + height: 100%; + } +} + +.elementor-bc-flex-widget .elementor-section-content-top > .elementor-container > .elementor-column > .elementor-widget-wrap { + align-items: flex-start; +} +.elementor-bc-flex-widget .elementor-section-content-middle > .elementor-container > .elementor-column > .elementor-widget-wrap { + align-items: center; +} +.elementor-bc-flex-widget .elementor-section-content-bottom > .elementor-container > .elementor-column > .elementor-widget-wrap { + align-items: flex-end; +} + +.elementor-row { + width: 100%; + display: flex; +} +@media (max-width: ELEMENTOR_SCREEN_TABLET_MAX) { + .elementor-row { + flex-wrap: wrap; + } +} + +.elementor-widget-wrap { + position: relative; + width: 100%; + flex-wrap: wrap; + align-content: flex-start; +} +.elementor:not(.elementor-bc-flex-widget) .elementor-widget-wrap { + display: flex; +} +.elementor-widget-wrap > .elementor-element { + width: 100%; +} +.elementor-widget-wrap.e-swiper-container { + width: calc(100% - (var(--e-column-margin-left, 0px) + var(--e-column-margin-right, 0px))); +} + +.elementor-widget { + position: relative; +} +.elementor-widget:not(:last-child) { + margin-bottom: 20px; +} +.elementor-widget:not(:last-child).elementor-widget__width-auto, .elementor-widget:not(:last-child).elementor-widget__width-initial, .elementor-widget:not(:last-child).elementor-absolute { + margin-bottom: 0; +} + +.elementor-column { + position: relative; + min-height: 1px; + display: flex; +} + +.elementor-column-wrap { + width: 100%; + position: relative; + display: flex; +} + +.elementor-column-gap-narrow > .elementor-column > .elementor-element-populated { + padding: 5px; +} +.elementor-column-gap-default > .elementor-column > .elementor-element-populated { + padding: 10px; +} +.elementor-column-gap-extended > .elementor-column > .elementor-element-populated { + padding: 15px; +} +.elementor-column-gap-wide > .elementor-column > .elementor-element-populated { + padding: 20px; +} +.elementor-column-gap-wider > .elementor-column > .elementor-element-populated { + padding: 30px; +} + +.elementor-inner-section .elementor-column-gap-no .elementor-element-populated { + padding: 0; +} + +@media (min-width: ELEMENTOR_SCREEN_MOBILE_NEXT) { + .elementor-column.elementor-col-10, .elementor-column[data-col="10"] { + width: 10%; + } + .elementor-column.elementor-col-11, .elementor-column[data-col="11"] { + width: 11.111%; + } + .elementor-column.elementor-col-12, .elementor-column[data-col="12"] { + width: 12.5%; + } + .elementor-column.elementor-col-14, .elementor-column[data-col="14"] { + width: 14.285%; + } + .elementor-column.elementor-col-16, .elementor-column[data-col="16"] { + width: 16.666%; + } + .elementor-column.elementor-col-20, .elementor-column[data-col="20"] { + width: 20%; + } + .elementor-column.elementor-col-25, .elementor-column[data-col="25"] { + width: 25%; + } + .elementor-column.elementor-col-30, .elementor-column[data-col="30"] { + width: 30%; + } + .elementor-column.elementor-col-33, .elementor-column[data-col="33"] { + width: 33.333%; + } + .elementor-column.elementor-col-40, .elementor-column[data-col="40"] { + width: 40%; + } + .elementor-column.elementor-col-50, .elementor-column[data-col="50"] { + width: 50%; + } + .elementor-column.elementor-col-60, .elementor-column[data-col="60"] { + width: 60%; + } + .elementor-column.elementor-col-66, .elementor-column[data-col="66"] { + width: 66.666%; + } + .elementor-column.elementor-col-70, .elementor-column[data-col="70"] { + width: 70%; + } + .elementor-column.elementor-col-75, .elementor-column[data-col="75"] { + width: 75%; + } + .elementor-column.elementor-col-80, .elementor-column[data-col="80"] { + width: 80%; + } + .elementor-column.elementor-col-83, .elementor-column[data-col="83"] { + width: 83.333%; + } + .elementor-column.elementor-col-90, .elementor-column[data-col="90"] { + width: 90%; + } + .elementor-column.elementor-col-100, .elementor-column[data-col="100"] { + width: 100%; + } +} +@media (max-width: 479px) { + .elementor-column.elementor-xs-10 { + width: 10%; + } + .elementor-column.elementor-xs-11 { + width: 11.111%; + } + .elementor-column.elementor-xs-12 { + width: 12.5%; + } + .elementor-column.elementor-xs-14 { + width: 14.285%; + } + .elementor-column.elementor-xs-16 { + width: 16.666%; + } + .elementor-column.elementor-xs-20 { + width: 20%; + } + .elementor-column.elementor-xs-25 { + width: 25%; + } + .elementor-column.elementor-xs-30 { + width: 30%; + } + .elementor-column.elementor-xs-33 { + width: 33.333%; + } + .elementor-column.elementor-xs-40 { + width: 40%; + } + .elementor-column.elementor-xs-50 { + width: 50%; + } + .elementor-column.elementor-xs-60 { + width: 60%; + } + .elementor-column.elementor-xs-66 { + width: 66.666%; + } + .elementor-column.elementor-xs-70 { + width: 70%; + } + .elementor-column.elementor-xs-75 { + width: 75%; + } + .elementor-column.elementor-xs-80 { + width: 80%; + } + .elementor-column.elementor-xs-83 { + width: 83.333%; + } + .elementor-column.elementor-xs-90 { + width: 90%; + } + .elementor-column.elementor-xs-100 { + width: 100%; + } +} +@media (max-width: ELEMENTOR_SCREEN_MOBILE_MAX) { + .elementor-column.elementor-sm-10 { + width: 10%; + } + .elementor-column.elementor-sm-11 { + width: 11.111%; + } + .elementor-column.elementor-sm-12 { + width: 12.5%; + } + .elementor-column.elementor-sm-14 { + width: 14.285%; + } + .elementor-column.elementor-sm-16 { + width: 16.666%; + } + .elementor-column.elementor-sm-20 { + width: 20%; + } + .elementor-column.elementor-sm-25 { + width: 25%; + } + .elementor-column.elementor-sm-30 { + width: 30%; + } + .elementor-column.elementor-sm-33 { + width: 33.333%; + } + .elementor-column.elementor-sm-40 { + width: 40%; + } + .elementor-column.elementor-sm-50 { + width: 50%; + } + .elementor-column.elementor-sm-60 { + width: 60%; + } + .elementor-column.elementor-sm-66 { + width: 66.666%; + } + .elementor-column.elementor-sm-70 { + width: 70%; + } + .elementor-column.elementor-sm-75 { + width: 75%; + } + .elementor-column.elementor-sm-80 { + width: 80%; + } + .elementor-column.elementor-sm-83 { + width: 83.333%; + } + .elementor-column.elementor-sm-90 { + width: 90%; + } + .elementor-column.elementor-sm-100 { + width: 100%; + } +} +@media (min-width: ELEMENTOR_SCREEN_MOBILE_NEXT) and (max-width: ELEMENTOR_SCREEN_TABLET_MAX) { + .elementor-column.elementor-md-10 { + width: 10%; + } + .elementor-column.elementor-md-11 { + width: 11.111%; + } + .elementor-column.elementor-md-12 { + width: 12.5%; + } + .elementor-column.elementor-md-14 { + width: 14.285%; + } + .elementor-column.elementor-md-16 { + width: 16.666%; + } + .elementor-column.elementor-md-20 { + width: 20%; + } + .elementor-column.elementor-md-25 { + width: 25%; + } + .elementor-column.elementor-md-30 { + width: 30%; + } + .elementor-column.elementor-md-33 { + width: 33.333%; + } + .elementor-column.elementor-md-40 { + width: 40%; + } + .elementor-column.elementor-md-50 { + width: 50%; + } + .elementor-column.elementor-md-60 { + width: 60%; + } + .elementor-column.elementor-md-66 { + width: 66.666%; + } + .elementor-column.elementor-md-70 { + width: 70%; + } + .elementor-column.elementor-md-75 { + width: 75%; + } + .elementor-column.elementor-md-80 { + width: 80%; + } + .elementor-column.elementor-md-83 { + width: 83.333%; + } + .elementor-column.elementor-md-90 { + width: 90%; + } + .elementor-column.elementor-md-100 { + width: 100%; + } +} + +@media (min-width: ELEMENTOR_SCREEN_WIDESCREEN_MIN) { + .elementor-reverse-widescreen > .elementor-container > :nth-child(1) { + order: 10; + } + .elementor-reverse-widescreen > .elementor-container > :nth-child(2) { + order: 9; + } + .elementor-reverse-widescreen > .elementor-container > :nth-child(3) { + order: 8; + } + .elementor-reverse-widescreen > .elementor-container > :nth-child(4) { + order: 7; + } + .elementor-reverse-widescreen > .elementor-container > :nth-child(5) { + order: 6; + } + .elementor-reverse-widescreen > .elementor-container > :nth-child(6) { + order: 5; + } + .elementor-reverse-widescreen > .elementor-container > :nth-child(7) { + order: 4; + } + .elementor-reverse-widescreen > .elementor-container > :nth-child(8) { + order: 3; + } + .elementor-reverse-widescreen > .elementor-container > :nth-child(9) { + order: 2; + } + .elementor-reverse-widescreen > .elementor-container > :nth-child(10) { + order: 1; + } +} +@media (min-width: ELEMENTOR_SCREEN_TABLET_NEXT) and (max-width: ELEMENTOR_SCREEN_LAPTOP_MAX) { + .elementor-reverse-laptop > .elementor-container > :nth-child(1) { + order: 10; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(2) { + order: 9; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(3) { + order: 8; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(4) { + order: 7; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(5) { + order: 6; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(6) { + order: 5; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(7) { + order: 4; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(8) { + order: 3; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(9) { + order: 2; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(10) { + order: 1; + } +} +@media (min-width: ELEMENTOR_SCREEN_TABLET_EXTRA_NEXT) and (max-width: ELEMENTOR_SCREEN_LAPTOP_MAX) { + .elementor-reverse-laptop > .elementor-container > :nth-child(1) { + order: 10; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(2) { + order: 9; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(3) { + order: 8; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(4) { + order: 7; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(5) { + order: 6; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(6) { + order: 5; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(7) { + order: 4; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(8) { + order: 3; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(9) { + order: 2; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(10) { + order: 1; + } +} +@media (min-width: ELEMENTOR_SCREEN_TABLET_NEXT) and (max-width: ELEMENTOR_SCREEN_TABLET_EXTRA_MAX) { + .elementor-reverse-laptop > .elementor-container > :nth-child(1) { + order: initial; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(2) { + order: initial; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(3) { + order: initial; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(4) { + order: initial; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(5) { + order: initial; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(6) { + order: initial; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(7) { + order: initial; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(8) { + order: initial; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(9) { + order: initial; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(10) { + order: initial; + } + .elementor-reverse-tablet_extra > .elementor-container > :nth-child(1) { + order: 10; + } + .elementor-reverse-tablet_extra > .elementor-container > :nth-child(2) { + order: 9; + } + .elementor-reverse-tablet_extra > .elementor-container > :nth-child(3) { + order: 8; + } + .elementor-reverse-tablet_extra > .elementor-container > :nth-child(4) { + order: 7; + } + .elementor-reverse-tablet_extra > .elementor-container > :nth-child(5) { + order: 6; + } + .elementor-reverse-tablet_extra > .elementor-container > :nth-child(6) { + order: 5; + } + .elementor-reverse-tablet_extra > .elementor-container > :nth-child(7) { + order: 4; + } + .elementor-reverse-tablet_extra > .elementor-container > :nth-child(8) { + order: 3; + } + .elementor-reverse-tablet_extra > .elementor-container > :nth-child(9) { + order: 2; + } + .elementor-reverse-tablet_extra > .elementor-container > :nth-child(10) { + order: 1; + } +} +@media (min-width: ELEMENTOR_SCREEN_MOBILE_NEXT) and (max-width: ELEMENTOR_SCREEN_TABLET_MAX) { + .elementor-reverse-tablet > .elementor-container > :nth-child(1) { + order: 10; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(2) { + order: 9; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(3) { + order: 8; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(4) { + order: 7; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(5) { + order: 6; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(6) { + order: 5; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(7) { + order: 4; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(8) { + order: 3; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(9) { + order: 2; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(10) { + order: 1; + } +} +@media (min-width: ELEMENTOR_SCREEN_MOBILE_EXTRA_NEXT) and (max-width: ELEMENTOR_SCREEN_TABLET_MAX) { + .elementor-reverse-tablet > .elementor-container > :nth-child(1) { + order: 10; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(2) { + order: 9; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(3) { + order: 8; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(4) { + order: 7; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(5) { + order: 6; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(6) { + order: 5; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(7) { + order: 4; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(8) { + order: 3; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(9) { + order: 2; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(10) { + order: 1; + } +} +@media (min-width: ELEMENTOR_SCREEN_MOBILE_NEXT) and (max-width: ELEMENTOR_SCREEN_MOBILE_EXTRA_MAX) { + .elementor-reverse-tablet > .elementor-container > :nth-child(1) { + order: initial; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(2) { + order: initial; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(3) { + order: initial; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(4) { + order: initial; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(5) { + order: initial; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(6) { + order: initial; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(7) { + order: initial; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(8) { + order: initial; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(9) { + order: initial; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(10) { + order: initial; + } + .elementor-reverse-mobile_extra > .elementor-container > :nth-child(1) { + order: 10; + } + .elementor-reverse-mobile_extra > .elementor-container > :nth-child(2) { + order: 9; + } + .elementor-reverse-mobile_extra > .elementor-container > :nth-child(3) { + order: 8; + } + .elementor-reverse-mobile_extra > .elementor-container > :nth-child(4) { + order: 7; + } + .elementor-reverse-mobile_extra > .elementor-container > :nth-child(5) { + order: 6; + } + .elementor-reverse-mobile_extra > .elementor-container > :nth-child(6) { + order: 5; + } + .elementor-reverse-mobile_extra > .elementor-container > :nth-child(7) { + order: 4; + } + .elementor-reverse-mobile_extra > .elementor-container > :nth-child(8) { + order: 3; + } + .elementor-reverse-mobile_extra > .elementor-container > :nth-child(9) { + order: 2; + } + .elementor-reverse-mobile_extra > .elementor-container > :nth-child(10) { + order: 1; + } +} +@media (max-width: ELEMENTOR_SCREEN_MOBILE_MAX) { + .elementor-reverse-mobile > .elementor-container > :nth-child(1) { + order: 10; + } + .elementor-reverse-mobile > .elementor-container > :nth-child(2) { + order: 9; + } + .elementor-reverse-mobile > .elementor-container > :nth-child(3) { + order: 8; + } + .elementor-reverse-mobile > .elementor-container > :nth-child(4) { + order: 7; + } + .elementor-reverse-mobile > .elementor-container > :nth-child(5) { + order: 6; + } + .elementor-reverse-mobile > .elementor-container > :nth-child(6) { + order: 5; + } + .elementor-reverse-mobile > .elementor-container > :nth-child(7) { + order: 4; + } + .elementor-reverse-mobile > .elementor-container > :nth-child(8) { + order: 3; + } + .elementor-reverse-mobile > .elementor-container > :nth-child(9) { + order: 2; + } + .elementor-reverse-mobile > .elementor-container > :nth-child(10) { + order: 1; + } + .elementor-column { + width: 100%; + } +} +ul.elementor-icon-list-items.elementor-inline-items { + display: flex; + flex-wrap: wrap; +} +ul.elementor-icon-list-items.elementor-inline-items .elementor-inline-item { + word-break: break-word; +} + +.elementor-grid { + display: grid; + grid-column-gap: var(--grid-column-gap); + grid-row-gap: var(--grid-row-gap); +} +.elementor-grid .elementor-grid-item { + min-width: 0; +} +.elementor-grid-0 .elementor-grid { + display: inline-block; + width: 100%; + word-spacing: var(--grid-column-gap); + margin-bottom: calc(-1 * var(--grid-row-gap)); +} +.elementor-grid-0 .elementor-grid .elementor-grid-item { + display: inline-block; + margin-bottom: var(--grid-row-gap); + word-break: break-word; +} +.elementor-grid-1 .elementor-grid { + grid-template-columns: repeat(1, 1fr); +} +.elementor-grid-2 .elementor-grid { + grid-template-columns: repeat(2, 1fr); +} +.elementor-grid-3 .elementor-grid { + grid-template-columns: repeat(3, 1fr); +} +.elementor-grid-4 .elementor-grid { + grid-template-columns: repeat(4, 1fr); +} +.elementor-grid-5 .elementor-grid { + grid-template-columns: repeat(5, 1fr); +} +.elementor-grid-6 .elementor-grid { + grid-template-columns: repeat(6, 1fr); +} +.elementor-grid-7 .elementor-grid { + grid-template-columns: repeat(7, 1fr); +} +.elementor-grid-8 .elementor-grid { + grid-template-columns: repeat(8, 1fr); +} +.elementor-grid-9 .elementor-grid { + grid-template-columns: repeat(9, 1fr); +} +.elementor-grid-10 .elementor-grid { + grid-template-columns: repeat(10, 1fr); +} +.elementor-grid-11 .elementor-grid { + grid-template-columns: repeat(11, 1fr); +} +.elementor-grid-12 .elementor-grid { + grid-template-columns: repeat(12, 1fr); +} +@media (min-width: ELEMENTOR_SCREEN_WIDESCREEN_MIN) { + .elementor-grid-widescreen-0 .elementor-grid { + display: inline-block; + width: 100%; + word-spacing: var(--grid-column-gap); + margin-bottom: calc(-1 * var(--grid-row-gap)); + } + .elementor-grid-widescreen-0 .elementor-grid .elementor-grid-item { + display: inline-block; + margin-bottom: var(--grid-row-gap); + word-break: break-word; + } + .elementor-grid-widescreen-1 .elementor-grid { + grid-template-columns: repeat(1, 1fr); + } + .elementor-grid-widescreen-2 .elementor-grid { + grid-template-columns: repeat(2, 1fr); + } + .elementor-grid-widescreen-3 .elementor-grid { + grid-template-columns: repeat(3, 1fr); + } + .elementor-grid-widescreen-4 .elementor-grid { + grid-template-columns: repeat(4, 1fr); + } + .elementor-grid-widescreen-5 .elementor-grid { + grid-template-columns: repeat(5, 1fr); + } + .elementor-grid-widescreen-6 .elementor-grid { + grid-template-columns: repeat(6, 1fr); + } + .elementor-grid-widescreen-7 .elementor-grid { + grid-template-columns: repeat(7, 1fr); + } + .elementor-grid-widescreen-8 .elementor-grid { + grid-template-columns: repeat(8, 1fr); + } + .elementor-grid-widescreen-9 .elementor-grid { + grid-template-columns: repeat(9, 1fr); + } + .elementor-grid-widescreen-10 .elementor-grid { + grid-template-columns: repeat(10, 1fr); + } + .elementor-grid-widescreen-11 .elementor-grid { + grid-template-columns: repeat(11, 1fr); + } + .elementor-grid-widescreen-12 .elementor-grid { + grid-template-columns: repeat(12, 1fr); + } +} +@media (max-width: ELEMENTOR_SCREEN_LAPTOP_MAX) { + .elementor-grid-laptop-0 .elementor-grid { + display: inline-block; + width: 100%; + word-spacing: var(--grid-column-gap); + margin-bottom: calc(-1 * var(--grid-row-gap)); + } + .elementor-grid-laptop-0 .elementor-grid .elementor-grid-item { + display: inline-block; + margin-bottom: var(--grid-row-gap); + word-break: break-word; + } + .elementor-grid-laptop-1 .elementor-grid { + grid-template-columns: repeat(1, 1fr); + } + .elementor-grid-laptop-2 .elementor-grid { + grid-template-columns: repeat(2, 1fr); + } + .elementor-grid-laptop-3 .elementor-grid { + grid-template-columns: repeat(3, 1fr); + } + .elementor-grid-laptop-4 .elementor-grid { + grid-template-columns: repeat(4, 1fr); + } + .elementor-grid-laptop-5 .elementor-grid { + grid-template-columns: repeat(5, 1fr); + } + .elementor-grid-laptop-6 .elementor-grid { + grid-template-columns: repeat(6, 1fr); + } + .elementor-grid-laptop-7 .elementor-grid { + grid-template-columns: repeat(7, 1fr); + } + .elementor-grid-laptop-8 .elementor-grid { + grid-template-columns: repeat(8, 1fr); + } + .elementor-grid-laptop-9 .elementor-grid { + grid-template-columns: repeat(9, 1fr); + } + .elementor-grid-laptop-10 .elementor-grid { + grid-template-columns: repeat(10, 1fr); + } + .elementor-grid-laptop-11 .elementor-grid { + grid-template-columns: repeat(11, 1fr); + } + .elementor-grid-laptop-12 .elementor-grid { + grid-template-columns: repeat(12, 1fr); + } +} +@media (max-width: ELEMENTOR_SCREEN_TABLET_EXTRA_MAX) { + .elementor-grid-tablet_extra-0 .elementor-grid { + display: inline-block; + width: 100%; + word-spacing: var(--grid-column-gap); + margin-bottom: calc(-1 * var(--grid-row-gap)); + } + .elementor-grid-tablet_extra-0 .elementor-grid .elementor-grid-item { + display: inline-block; + margin-bottom: var(--grid-row-gap); + word-break: break-word; + } + .elementor-grid-tablet_extra-1 .elementor-grid { + grid-template-columns: repeat(1, 1fr); + } + .elementor-grid-tablet_extra-2 .elementor-grid { + grid-template-columns: repeat(2, 1fr); + } + .elementor-grid-tablet_extra-3 .elementor-grid { + grid-template-columns: repeat(3, 1fr); + } + .elementor-grid-tablet_extra-4 .elementor-grid { + grid-template-columns: repeat(4, 1fr); + } + .elementor-grid-tablet_extra-5 .elementor-grid { + grid-template-columns: repeat(5, 1fr); + } + .elementor-grid-tablet_extra-6 .elementor-grid { + grid-template-columns: repeat(6, 1fr); + } + .elementor-grid-tablet_extra-7 .elementor-grid { + grid-template-columns: repeat(7, 1fr); + } + .elementor-grid-tablet_extra-8 .elementor-grid { + grid-template-columns: repeat(8, 1fr); + } + .elementor-grid-tablet_extra-9 .elementor-grid { + grid-template-columns: repeat(9, 1fr); + } + .elementor-grid-tablet_extra-10 .elementor-grid { + grid-template-columns: repeat(10, 1fr); + } + .elementor-grid-tablet_extra-11 .elementor-grid { + grid-template-columns: repeat(11, 1fr); + } + .elementor-grid-tablet_extra-12 .elementor-grid { + grid-template-columns: repeat(12, 1fr); + } +} +@media (max-width: ELEMENTOR_SCREEN_TABLET_MAX) { + .elementor-grid-tablet-0 .elementor-grid { + display: inline-block; + width: 100%; + word-spacing: var(--grid-column-gap); + margin-bottom: calc(-1 * var(--grid-row-gap)); + } + .elementor-grid-tablet-0 .elementor-grid .elementor-grid-item { + display: inline-block; + margin-bottom: var(--grid-row-gap); + word-break: break-word; + } + .elementor-grid-tablet-1 .elementor-grid { + grid-template-columns: repeat(1, 1fr); + } + .elementor-grid-tablet-2 .elementor-grid { + grid-template-columns: repeat(2, 1fr); + } + .elementor-grid-tablet-3 .elementor-grid { + grid-template-columns: repeat(3, 1fr); + } + .elementor-grid-tablet-4 .elementor-grid { + grid-template-columns: repeat(4, 1fr); + } + .elementor-grid-tablet-5 .elementor-grid { + grid-template-columns: repeat(5, 1fr); + } + .elementor-grid-tablet-6 .elementor-grid { + grid-template-columns: repeat(6, 1fr); + } + .elementor-grid-tablet-7 .elementor-grid { + grid-template-columns: repeat(7, 1fr); + } + .elementor-grid-tablet-8 .elementor-grid { + grid-template-columns: repeat(8, 1fr); + } + .elementor-grid-tablet-9 .elementor-grid { + grid-template-columns: repeat(9, 1fr); + } + .elementor-grid-tablet-10 .elementor-grid { + grid-template-columns: repeat(10, 1fr); + } + .elementor-grid-tablet-11 .elementor-grid { + grid-template-columns: repeat(11, 1fr); + } + .elementor-grid-tablet-12 .elementor-grid { + grid-template-columns: repeat(12, 1fr); + } +} +@media (max-width: ELEMENTOR_SCREEN_MOBILE_EXTRA_MAX) { + .elementor-grid-mobile_extra-0 .elementor-grid { + display: inline-block; + width: 100%; + word-spacing: var(--grid-column-gap); + margin-bottom: calc(-1 * var(--grid-row-gap)); + } + .elementor-grid-mobile_extra-0 .elementor-grid .elementor-grid-item { + display: inline-block; + margin-bottom: var(--grid-row-gap); + word-break: break-word; + } + .elementor-grid-mobile_extra-1 .elementor-grid { + grid-template-columns: repeat(1, 1fr); + } + .elementor-grid-mobile_extra-2 .elementor-grid { + grid-template-columns: repeat(2, 1fr); + } + .elementor-grid-mobile_extra-3 .elementor-grid { + grid-template-columns: repeat(3, 1fr); + } + .elementor-grid-mobile_extra-4 .elementor-grid { + grid-template-columns: repeat(4, 1fr); + } + .elementor-grid-mobile_extra-5 .elementor-grid { + grid-template-columns: repeat(5, 1fr); + } + .elementor-grid-mobile_extra-6 .elementor-grid { + grid-template-columns: repeat(6, 1fr); + } + .elementor-grid-mobile_extra-7 .elementor-grid { + grid-template-columns: repeat(7, 1fr); + } + .elementor-grid-mobile_extra-8 .elementor-grid { + grid-template-columns: repeat(8, 1fr); + } + .elementor-grid-mobile_extra-9 .elementor-grid { + grid-template-columns: repeat(9, 1fr); + } + .elementor-grid-mobile_extra-10 .elementor-grid { + grid-template-columns: repeat(10, 1fr); + } + .elementor-grid-mobile_extra-11 .elementor-grid { + grid-template-columns: repeat(11, 1fr); + } + .elementor-grid-mobile_extra-12 .elementor-grid { + grid-template-columns: repeat(12, 1fr); + } +} +@media (max-width: ELEMENTOR_SCREEN_MOBILE_MAX) { + .elementor-grid-mobile-0 .elementor-grid { + display: inline-block; + width: 100%; + word-spacing: var(--grid-column-gap); + margin-bottom: calc(-1 * var(--grid-row-gap)); + } + .elementor-grid-mobile-0 .elementor-grid .elementor-grid-item { + display: inline-block; + margin-bottom: var(--grid-row-gap); + word-break: break-word; + } + .elementor-grid-mobile-1 .elementor-grid { + grid-template-columns: repeat(1, 1fr); + } + .elementor-grid-mobile-2 .elementor-grid { + grid-template-columns: repeat(2, 1fr); + } + .elementor-grid-mobile-3 .elementor-grid { + grid-template-columns: repeat(3, 1fr); + } + .elementor-grid-mobile-4 .elementor-grid { + grid-template-columns: repeat(4, 1fr); + } + .elementor-grid-mobile-5 .elementor-grid { + grid-template-columns: repeat(5, 1fr); + } + .elementor-grid-mobile-6 .elementor-grid { + grid-template-columns: repeat(6, 1fr); + } + .elementor-grid-mobile-7 .elementor-grid { + grid-template-columns: repeat(7, 1fr); + } + .elementor-grid-mobile-8 .elementor-grid { + grid-template-columns: repeat(8, 1fr); + } + .elementor-grid-mobile-9 .elementor-grid { + grid-template-columns: repeat(9, 1fr); + } + .elementor-grid-mobile-10 .elementor-grid { + grid-template-columns: repeat(10, 1fr); + } + .elementor-grid-mobile-11 .elementor-grid { + grid-template-columns: repeat(11, 1fr); + } + .elementor-grid-mobile-12 .elementor-grid { + grid-template-columns: repeat(12, 1fr); + } +} + +@media (min-width: ELEMENTOR_SCREEN_DESKTOP_MIN) { + #elementor-device-mode:after { + content: "desktop"; + } +} +@media (min-width: ELEMENTOR_SCREEN_WIDESCREEN_MIN) { + #elementor-device-mode:after { + content: "widescreen"; + } +} +@media (max-width: ELEMENTOR_SCREEN_LAPTOP_MAX) { + #elementor-device-mode:after { + content: "laptop"; + } +} +@media (max-width: ELEMENTOR_SCREEN_TABLET_EXTRA_MAX) { + #elementor-device-mode:after { + content: "tablet_extra"; + } +} +@media (max-width: ELEMENTOR_SCREEN_TABLET_MAX) { + #elementor-device-mode:after { + content: "tablet"; + } +} +@media (max-width: ELEMENTOR_SCREEN_MOBILE_EXTRA_MAX) { + #elementor-device-mode:after { + content: "mobile_extra"; + } +} +@media (max-width: ELEMENTOR_SCREEN_MOBILE_MAX) { + #elementor-device-mode:after { + content: "mobile"; + } +} + +.e-con { + --border-radius: 0; + --border-block-start-width: 0px; + --border-inline-end-width: 0px; + --border-block-end-width: 0px; + --border-inline-start-width: 0px; + --border-style: initial; + --border-color: initial; + --container-widget-width: 100%; + --container-widget-height: initial; + --container-widget-flex-grow: 0; + --container-widget-align-self: initial; + --content-width: min(100%, var(--container-max-width, 1140px)); + --width: 100%; + --min-height: initial; + --height: auto; + --text-align: initial; + --margin-block-start: 0px; + --margin-inline-end: 0px; + --margin-block-end: 0px; + --margin-inline-start: 0px; + --padding-block-start: var(--container-default-padding-block-start, 10px); + --padding-inline-end: var(--container-default-padding-inline-end, 10px); + --padding-block-end: var(--container-default-padding-block-end, 10px); + --padding-inline-start: var(--container-default-padding-inline-start, 10px); + --position: relative; + --z-index: revert; + --overflow: visible; + --gap: var(--widgets-spacing, 20px); + --overlay-mix-blend-mode: initial; + --overlay-opacity: 1; + --overlay-transition: 0.3s; + --e-con-grid-template-columns: repeat(3, 1fr); + --e-con-grid-template-rows: repeat(2, 1fr); + position: var(--position); + width: var(--width); + min-width: 0; + min-height: var(--min-height); + height: var(--height); + border-radius: var(--border-radius); + margin-block-start: var(--bc-margin-block-start, var(--margin-block-start)); + margin-inline-end: var(--bc-margin-inline-end, var(--margin-inline-end)); + margin-block-end: var(--bc-margin-block-end, var(--margin-block-end)); + margin-inline-start: var(--bc-margin-inline-start, var(--margin-inline-start)); + padding-inline-start: var(--bc-padding-inline-start, var(--padding-inline-start)); + padding-inline-end: var(--bc-padding-inline-end, var(--padding-inline-end)); + z-index: var(--z-index); + overflow: var(--overflow); + transition: background var(--background-transition, 0.3s), border var(--border-transition, 0.3s), box-shadow var(--border-transition, 0.3s), transform var(--e-con-transform-transition-duration, 0.4s); +} +.e-con.e-flex { + --flex-direction: column; + --flex-basis: auto; + --flex-grow: 0; + --flex-shrink: 1; + flex: var(--flex-grow) var(--flex-shrink) var(--flex-basis); +} +.e-con-full, .e-con > .e-con-inner { + text-align: var(--text-align); + padding-block-start: var(--bc-padding-block-start, var(--padding-block-start)); + padding-block-end: var(--bc-padding-block-end, var(--padding-block-end)); +} +.e-con-full.e-flex, .e-con.e-flex > .e-con-inner { + flex-direction: var(--flex-direction); +} +.e-con, .e-con > .e-con-inner { + display: var(--display); +} +.e-con.e-grid { + --grid-justify-content: start; + --grid-align-content: start; + --grid-auto-flow: row; +} +.e-con.e-grid, .e-con.e-grid > .e-con-inner { + grid-template-columns: var(--e-con-grid-template-columns); + grid-template-rows: var(--e-con-grid-template-rows); + justify-content: var(--grid-justify-content); + align-content: var(--grid-align-content); + grid-auto-flow: var(--grid-auto-flow); + justify-items: var(--justify-items); + align-items: var(--align-items); +} +.e-con-boxed.e-flex { + flex-direction: column; + flex-wrap: initial; + justify-content: initial; + align-items: initial; + align-content: initial; +} +.e-con-boxed.e-grid { + justify-items: initial; + grid-template-columns: 1fr; + grid-template-rows: 1fr; +} +.e-con-boxed { + text-align: initial; + gap: initial; +} +.e-con.e-flex > .e-con-inner { + flex-wrap: var(--flex-wrap); + justify-content: var(--justify-content); + align-items: var(--align-items); + align-content: var(--align-content); + flex-basis: initial; + flex-grow: 1; + flex-shrink: initial; + align-self: initial; +} +.e-con.e-grid > .e-con-inner { + justify-items: var(--justify-items); + align-items: var(--align-items); +} +.e-con > .e-con-inner { + gap: var(--gap); + width: 100%; + max-width: var(--content-width); + margin: 0 auto; + padding-inline-start: 0; + padding-inline-end: 0; + height: 100%; +} +:is(.elementor-section-wrap, [data-elementor-id]) > .e-con { + --margin-inline-end: auto; + --margin-inline-start: auto; + max-width: min(100%, var(--width)); +} +.e-con .elementor-widget.elementor-widget { + margin-block-end: 0; +} +.e-con::before, :is(.e-con, .e-con > .e-con-inner) > .elementor-background-video-container::before, +.e-con > .elementor-motion-effects-container > .elementor-motion-effects-layer::before, +.e-con > .elementor-background-slideshow::before { + content: var(--background-overlay); + display: block; + position: absolute; + mix-blend-mode: var(--overlay-mix-blend-mode); + opacity: var(--overlay-opacity); + transition: var(--overlay-transition, 0.3s); + border-radius: var(--border-radius); + border-style: var(--border-style); + border-color: var(--border-color); + border-block-start-width: var(--border-block-start-width); + border-inline-end-width: var(--border-inline-end-width); + border-block-end-width: var(--border-block-end-width); + border-inline-start-width: var(--border-inline-start-width); + top: calc(0px - var(--border-block-start-width)); + left: calc(0px - var(--border-inline-start-width)); + width: max(100% + var(--border-inline-end-width) + var(--border-inline-start-width), 100%); + height: max(100% + var(--border-block-start-width) + var(--border-block-end-width), 100%); +} +.e-con::before { + transition: background var(--overlay-transition, 0.3s), border-radius var(--border-transition, 0.3s), opacity var(--overlay-transition, 0.3s); +} +.e-con > .elementor-background-slideshow, :is(.e-con, .e-con > .e-con-inner) > .elementor-background-video-container { + border-radius: var(--border-radius); + border-style: var(--border-style); + border-color: var(--border-color); + border-block-start-width: var(--border-block-start-width); + border-inline-end-width: var(--border-inline-end-width); + border-block-end-width: var(--border-block-end-width); + border-inline-start-width: var(--border-inline-start-width); + top: calc(0px - var(--border-block-start-width)); + left: calc(0px - var(--border-inline-start-width)); + width: max(100% + var(--border-inline-end-width) + var(--border-inline-start-width), 100%); + height: max(100% + var(--border-block-start-width) + var(--border-block-end-width), 100%); +} +@media (max-width: ELEMENTOR_SCREEN_MOBILE_MAX) { + :is(.e-con, .e-con > .e-con-inner) > .elementor-background-video-container.elementor-hidden-phone { + display: none; + } +} +:is(.e-con, .e-con > .e-con-inner) > .elementor-background-video-container::before { + z-index: 1; +} +:is(.e-con, .e-con > .e-con-inner) > .elementor-background-slideshow::before { + z-index: 2; +} +.e-con .elementor-widget { + min-width: 0; +} +.e-con .elementor-widget-video, .e-con .elementor-widget-google_maps, .e-con .elementor-widget-empty { + width: 100%; +} +.e-con .elementor-widget.e-widget-swiper { + width: 100%; +} +.e-con > .elementor-widget > .elementor-widget-container, .e-con > .e-con-inner > .elementor-widget > .elementor-widget-container { + height: 100%; +} +.elementor.elementor .e-con > .elementor-widget, .e-con.e-con > .e-con-inner > .elementor-widget { + max-width: 100%; +} + +@media (max-width: 767px) { + .e-con.e-flex { + --width: 100%; + --flex-wrap: wrap; + } +} +.e-con { + --bc-margin-block-start: var(--margin-top); + --bc-margin-block-end: var(--margin-bottom); + --bc-margin-inline-start: var(--margin-left); + --bc-margin-inline-end: var(--margin-right); + --bc-padding-block-start: var(--padding-top); + --bc-padding-block-end: var(--padding-bottom); + --bc-padding-inline-start: var(--padding-left); + --bc-padding-inline-end: var(--padding-right); +} +[dir=rtl] .e-con { + --bc-margin-inline-start: var(--margin-right); + --bc-margin-inline-end: var(--margin-left); + --bc-padding-inline-start: var(--padding-right); + --bc-padding-inline-end: var(--padding-left); +} + +.elementor-form-fields-wrapper { + display: flex; + flex-wrap: wrap; +} +.elementor-form-fields-wrapper.elementor-labels-above .elementor-field-group > input, .elementor-form-fields-wrapper.elementor-labels-above .elementor-field-group > textarea, .elementor-form-fields-wrapper.elementor-labels-above .elementor-field-group > .elementor-select-wrapper, .elementor-form-fields-wrapper.elementor-labels-above .elementor-field-group .elementor-field-subgroup { + flex-basis: 100%; + max-width: 100%; +} +.elementor-form-fields-wrapper.elementor-labels-inline > .elementor-field-group > input, .elementor-form-fields-wrapper.elementor-labels-inline > .elementor-field-group .elementor-select-wrapper { + flex-grow: 1; +} + +.elementor-field-group { + flex-wrap: wrap; + align-items: center; +} +.elementor-field-group.elementor-field-type-submit { + align-items: flex-end; +} +.elementor-field-group .elementor-field-textual { + width: 100%; + max-width: 100%; + border: 1px solid #69727D; + background-color: transparent; + color: #1f2124; + vertical-align: middle; + flex-grow: 1; +} +.elementor-field-group .elementor-field-textual:focus { + box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.1) inset; + outline: 0; +} +.elementor-field-group .elementor-field-textual::-webkit-input-placeholder { + color: inherit; + font-family: inherit; + opacity: 0.6; +} +.elementor-field-group .elementor-field-textual:-ms-input-placeholder { + color: inherit; + font-family: inherit; + opacity: 0.6; +} +.elementor-field-group .elementor-field-textual::-moz-placeholder { + color: inherit; + font-family: inherit; + opacity: 0.6; +} +.elementor-field-group .elementor-field-textual:-moz-placeholder { + color: inherit; + font-family: inherit; + opacity: 0.6; +} +.elementor-field-group .elementor-field-textual::placeholder { + color: inherit; + font-family: inherit; + opacity: 0.6; +} +.elementor-field-group .elementor-select-wrapper { + display: flex; + position: relative; + width: 100%; +} +.elementor-field-group .elementor-select-wrapper select { + appearance: none; + color: inherit; + font-size: inherit; + font-family: inherit; + font-weight: inherit; + font-style: inherit; + text-transform: inherit; + letter-spacing: inherit; + line-height: inherit; + flex-basis: 100%; + padding-left: 20px; +} +.elementor-field-group .elementor-select-wrapper:before { + content: "\e92a"; + font-family: "eicons"; + font-size: 15px; + position: absolute; + top: 50%; + transform: translateY(-50%); + left: 10px; + pointer-events: none; + text-shadow: 0 0 3px rgba(0, 0, 0, 0.3); +} +.elementor-field-group.elementor-field-type-select-multiple .elementor-select-wrapper:before { + content: ""; +} + +.elementor-field-subgroup { + display: flex; + flex-wrap: wrap; +} +.elementor-field-subgroup .elementor-field-option label { + display: inline-block; +} +.elementor-field-subgroup.elementor-subgroup-inline .elementor-field-option { + padding-left: 10px; +} +.elementor-field-subgroup:not(.elementor-subgroup-inline) .elementor-field-option { + flex-basis: 100%; +} + +.elementor-field-type-checkbox .elementor-field-subgroup .elementor-field-option input, +.elementor-field-type-checkbox .elementor-field-subgroup .elementor-field-option label, +.elementor-field-type-radio .elementor-field-subgroup .elementor-field-option input, +.elementor-field-type-radio .elementor-field-subgroup .elementor-field-option label, +.elementor-field-type-acceptance .elementor-field-subgroup .elementor-field-option input, +.elementor-field-type-acceptance .elementor-field-subgroup .elementor-field-option label { + display: inline; +} + +.elementor-field-label { + cursor: pointer; +} +.elementor-mark-required .elementor-field-label:after { + content: "*"; + color: red; + padding-right: 0.2em; +} + +.elementor-field-textual { + line-height: 1.4; + font-size: 15px; + min-height: 40px; + padding: 5px 14px; + border-radius: 3px; +} +.elementor-field-textual.elementor-size-xs { + font-size: 13px; + min-height: 33px; + padding: 4px 12px; + border-radius: 2px; +} +.elementor-field-textual.elementor-size-md { + font-size: 16px; + min-height: 47px; + padding: 6px 16px; + border-radius: 4px; +} +.elementor-field-textual.elementor-size-lg { + font-size: 18px; + min-height: 59px; + padding: 7px 20px; + border-radius: 5px; +} +.elementor-field-textual.elementor-size-xl { + font-size: 20px; + min-height: 72px; + padding: 8px 24px; + border-radius: 6px; +} + +.elementor-button-align-stretch .elementor-field-type-submit:not(.e-form__buttons__wrapper) .elementor-button { + flex-basis: 100%; +} +.elementor-button-align-stretch .e-form__buttons__wrapper { + flex-basis: 50%; + flex-grow: 1; +} +.elementor-button-align-stretch .e-form__buttons__wrapper__button { + flex-basis: 100%; +} +.elementor-button-align-center .elementor-field-type-submit, +.elementor-button-align-center .e-form__buttons { + justify-content: center; +} +.elementor-button-align-start .elementor-field-type-submit, +.elementor-button-align-start .e-form__buttons { + justify-content: flex-end; +} +.elementor-button-align-end .elementor-field-type-submit, +.elementor-button-align-end .e-form__buttons { + justify-content: flex-start; +} +.elementor-button-align-center .elementor-field-type-submit:not(.e-form__buttons__wrapper) .elementor-button, .elementor-button-align-start .elementor-field-type-submit:not(.e-form__buttons__wrapper) .elementor-button, .elementor-button-align-end .elementor-field-type-submit:not(.e-form__buttons__wrapper) .elementor-button { + flex-basis: initial; +} +.elementor-button-align-center .e-form__buttons__wrapper, .elementor-button-align-start .e-form__buttons__wrapper, .elementor-button-align-end .e-form__buttons__wrapper { + flex-grow: initial; +} +.elementor-button-align-center .e-form__buttons__wrapper, .elementor-button-align-center .e-form__buttons__wrapper__button, .elementor-button-align-start .e-form__buttons__wrapper, .elementor-button-align-start .e-form__buttons__wrapper__button, .elementor-button-align-end .e-form__buttons__wrapper, .elementor-button-align-end .e-form__buttons__wrapper__button { + flex-basis: initial; +} + +@media screen and (max-width: ELEMENTOR_SCREEN_TABLET_MAX) { + .elementor-tablet-button-align-stretch .elementor-field-type-submit:not(.e-form__buttons__wrapper) .elementor-button { + flex-basis: 100%; + } + .elementor-tablet-button-align-stretch .e-form__buttons__wrapper { + flex-basis: 50%; + flex-grow: 1; + } + .elementor-tablet-button-align-stretch .e-form__buttons__wrapper__button { + flex-basis: 100%; + } + .elementor-tablet-button-align-center .elementor-field-type-submit, + .elementor-tablet-button-align-center .e-form__buttons { + justify-content: center; + } + .elementor-tablet-button-align-start .elementor-field-type-submit, + .elementor-tablet-button-align-start .e-form__buttons { + justify-content: flex-end; + } + .elementor-tablet-button-align-end .elementor-field-type-submit, + .elementor-tablet-button-align-end .e-form__buttons { + justify-content: flex-start; + } + .elementor-tablet-button-align-center .elementor-field-type-submit:not(.e-form__buttons__wrapper) .elementor-button, .elementor-tablet-button-align-start .elementor-field-type-submit:not(.e-form__buttons__wrapper) .elementor-button, .elementor-tablet-button-align-end .elementor-field-type-submit:not(.e-form__buttons__wrapper) .elementor-button { + flex-basis: initial; + } + .elementor-tablet-button-align-center .e-form__buttons__wrapper, .elementor-tablet-button-align-start .e-form__buttons__wrapper, .elementor-tablet-button-align-end .e-form__buttons__wrapper { + flex-grow: initial; + } + .elementor-tablet-button-align-center .e-form__buttons__wrapper, .elementor-tablet-button-align-center .e-form__buttons__wrapper__button, .elementor-tablet-button-align-start .e-form__buttons__wrapper, .elementor-tablet-button-align-start .e-form__buttons__wrapper__button, .elementor-tablet-button-align-end .e-form__buttons__wrapper, .elementor-tablet-button-align-end .e-form__buttons__wrapper__button { + flex-basis: initial; + } +} +@media screen and (max-width: ELEMENTOR_SCREEN_MOBILE_MAX) { + .elementor-mobile-button-align-stretch .elementor-field-type-submit:not(.e-form__buttons__wrapper) .elementor-button { + flex-basis: 100%; + } + .elementor-mobile-button-align-stretch .e-form__buttons__wrapper { + flex-basis: 50%; + flex-grow: 1; + } + .elementor-mobile-button-align-stretch .e-form__buttons__wrapper__button { + flex-basis: 100%; + } + .elementor-mobile-button-align-center .elementor-field-type-submit, + .elementor-mobile-button-align-center .e-form__buttons { + justify-content: center; + } + .elementor-mobile-button-align-start .elementor-field-type-submit, + .elementor-mobile-button-align-start .e-form__buttons { + justify-content: flex-end; + } + .elementor-mobile-button-align-end .elementor-field-type-submit, + .elementor-mobile-button-align-end .e-form__buttons { + justify-content: flex-start; + } + .elementor-mobile-button-align-center .elementor-field-type-submit:not(.e-form__buttons__wrapper) .elementor-button, .elementor-mobile-button-align-start .elementor-field-type-submit:not(.e-form__buttons__wrapper) .elementor-button, .elementor-mobile-button-align-end .elementor-field-type-submit:not(.e-form__buttons__wrapper) .elementor-button { + flex-basis: initial; + } + .elementor-mobile-button-align-center .e-form__buttons__wrapper, .elementor-mobile-button-align-start .e-form__buttons__wrapper, .elementor-mobile-button-align-end .e-form__buttons__wrapper { + flex-grow: initial; + } + .elementor-mobile-button-align-center .e-form__buttons__wrapper, .elementor-mobile-button-align-center .e-form__buttons__wrapper__button, .elementor-mobile-button-align-start .e-form__buttons__wrapper, .elementor-mobile-button-align-start .e-form__buttons__wrapper__button, .elementor-mobile-button-align-end .e-form__buttons__wrapper, .elementor-mobile-button-align-end .e-form__buttons__wrapper__button { + flex-basis: initial; + } +} +.elementor-error .elementor-field { + border-color: #d9534f; +} +.elementor-error .help-inline { + color: #d9534f; + font-size: 0.9em; +} + +.elementor-message { + margin: 10px 0; + font-size: 1em; + line-height: 1; +} +.elementor-message:before { + content: "\e90e"; + display: inline-block; + font-family: eicons; + font-weight: normal; + font-style: normal; + vertical-align: middle; + margin-left: 5px; +} +.elementor-message.elementor-message-danger { + color: #d9534f; +} +.elementor-message.elementor-message-danger:before { + content: "\e87f"; +} +.elementor-message.form-message-success { + color: #5cb85c; +} + +.elementor-form .elementor-button { + padding-top: 0; + padding-bottom: 0; + border: none; +} +.elementor-form .elementor-button > span { + display: flex; + justify-content: center; +} +.elementor-form .elementor-button.elementor-size-xs { + min-height: 33px; +} +.elementor-form .elementor-button.elementor-size-sm { + min-height: 40px; +} +.elementor-form .elementor-button.elementor-size-md { + min-height: 47px; +} +.elementor-form .elementor-button.elementor-size-lg { + min-height: 59px; +} +.elementor-form .elementor-button.elementor-size-xl { + min-height: 72px; +} + +.elementor-element .elementor-widget-container { + transition: background 0.3s, border 0.3s, border-radius 0.3s, box-shadow 0.3s, transform var(--e-transform-transition-duration, 400ms); +} + +.elementor-button { + display: inline-block; + line-height: 1; + background-color: #69727D; + font-size: 15px; + padding: 12px 24px; + border-radius: 3px; + color: #fff; + fill: #fff; + text-align: center; + transition: all 0.3s; +} +.elementor-button:hover, .elementor-button:focus, .elementor-button:visited { + color: #fff; +} +.elementor-button-content-wrapper { + display: flex; + justify-content: center; +} +.elementor-button-icon { + flex-grow: 0; + order: 5; +} +.elementor-button-icon svg { + width: 1em; + height: auto; +} +.elementor-button-icon .e-font-icon-svg { + height: 1em; +} +.elementor-button-text { + flex-grow: 1; + order: 10; + display: inline-block; +} +.elementor-button.elementor-size-xs { + font-size: 13px; + padding: 10px 20px; + border-radius: 2px; +} +.elementor-button.elementor-size-md { + font-size: 16px; + padding: 15px 30px; + border-radius: 4px; +} +.elementor-button.elementor-size-lg { + font-size: 18px; + padding: 20px 40px; + border-radius: 5px; +} +.elementor-button.elementor-size-xl { + font-size: 20px; + padding: 25px 50px; + border-radius: 6px; +} +.elementor-button .elementor-align-icon-right { + margin-left: 5px; + order: 5; +} +.elementor-button .elementor-align-icon-left { + margin-right: 5px; + order: 15; +} +.elementor-button span { + text-decoration: inherit; +} + +.elementor-element.elementor-button-info .elementor-button { + background-color: #5bc0de; +} +.elementor-element.elementor-button-success .elementor-button { + background-color: #5cb85c; +} +.elementor-element.elementor-button-warning .elementor-button { + background-color: #f0ad4e; +} +.elementor-element.elementor-button-danger .elementor-button { + background-color: #d9534f; +} + +.elementor-widget-button .elementor-button .elementor-button-info { + background-color: #5bc0de; +} +.elementor-widget-button .elementor-button .elementor-button-success { + background-color: #5cb85c; +} +.elementor-widget-button .elementor-button .elementor-button-warning { + background-color: #f0ad4e; +} +.elementor-widget-button .elementor-button .elementor-button-danger { + background-color: #d9534f; +} + +.elementor-tab-title a { + color: inherit; +} + +.elementor-view-stacked .elementor-icon { + padding: 0.5em; + background-color: #69727D; + color: #fff; + fill: #fff; +} + +.elementor-view-framed .elementor-icon { + padding: 0.5em; + color: #69727D; + border: 3px solid #69727D; + background-color: transparent; +} + +.elementor-icon { + display: inline-block; + line-height: 1; + transition: all 0.3s; + color: #69727D; + font-size: 50px; + text-align: center; +} +.elementor-icon:hover { + color: #69727D; +} +.elementor-icon i, .elementor-icon svg { + width: 1em; + height: 1em; + position: relative; + display: block; +} +.elementor-icon i:before, .elementor-icon svg:before { + position: absolute; + left: 50%; + transform: translateX(-50%); +} +.elementor-icon i.fad { + width: initial; +} + +.elementor-shape-circle .elementor-icon { + border-radius: 50%; +} + +.e-transform .elementor-widget-container { + transform: perspective(var(--e-transform-perspective, 0)) rotateZ(var(--e-transform-rotateZ, 0)) rotateX(var(--e-transform-rotateX, 0)) rotateY(var(--e-transform-rotateY, 0)) translate(var(--e-transform-translate, 0)) translateX(var(--e-transform-translateX, 0)) translateY(var(--e-transform-translateY, 0)) scaleX(calc(var(--e-transform-flipX, 1) * var(--e-transform-scaleX, var(--e-transform-scale, 1)))) scaleY(calc(var(--e-transform-flipY, 1) * var(--e-transform-scaleY, var(--e-transform-scale, 1)))) skewX(var(--e-transform-skewX, 0)) skewY(var(--e-transform-skewY, 0)); + transform-origin: var(--e-transform-origin-y) var(--e-transform-origin-x); +} + +.e-con.e-transform { + transform: perspective(var(--e-con-transform-perspective, 0)) rotateZ(var(--e-con-transform-rotateZ, 0)) rotateX(var(--e-con-transform-rotateX, 0)) rotateY(var(--e-con-transform-rotateY, 0)) translate(var(--e-con-transform-translate, 0)) translateX(var(--e-con-transform-translateX, 0)) translateY(var(--e-con-transform-translateY, 0)) scaleX(calc(var(--e-con-transform-flipX, 1) * var(--e-con-transform-scaleX, var(--e-con-transform-scale, 1)))) scaleY(calc(var(--e-con-transform-flipY, 1) * var(--e-con-transform-scaleY, var(--e-con-transform-scale, 1)))) skewX(var(--e-con-transform-skewX, 0)) skewY(var(--e-con-transform-skewY, 0)); + transform-origin: var(--e-con-transform-origin-y) var(--e-con-transform-origin-x); +} + +.elementor-element, .elementor-lightbox { + --swiper-theme-color: #000; + --swiper-navigation-size: 44px; + --swiper-pagination-bullet-size: 6px; + --swiper-pagination-bullet-horizontal-gap: 6px; +} +.elementor-element .swiper .swiper-slide figure, +.elementor-element .swiper-container .swiper-slide figure, .elementor-lightbox .swiper .swiper-slide figure, +.elementor-lightbox .swiper-container .swiper-slide figure { + line-height: 0; +} +.elementor-element .swiper .elementor-lightbox-content-source, +.elementor-element .swiper-container .elementor-lightbox-content-source, .elementor-lightbox .swiper .elementor-lightbox-content-source, +.elementor-lightbox .swiper-container .elementor-lightbox-content-source { + display: none; +} +.elementor-element .swiper .elementor-swiper-button, +.elementor-element .swiper ~ .elementor-swiper-button, +.elementor-element .swiper-container .elementor-swiper-button, +.elementor-element .swiper-container ~ .elementor-swiper-button, .elementor-lightbox .swiper .elementor-swiper-button, +.elementor-lightbox .swiper ~ .elementor-swiper-button, +.elementor-lightbox .swiper-container .elementor-swiper-button, +.elementor-lightbox .swiper-container ~ .elementor-swiper-button { + position: absolute; + display: inline-flex; + z-index: 1; + cursor: pointer; + font-size: 25px; + color: rgba(238, 238, 238, 0.9); + top: 50%; + transform: translateY(-50%); +} +.elementor-element .swiper .elementor-swiper-button svg, +.elementor-element .swiper ~ .elementor-swiper-button svg, +.elementor-element .swiper-container .elementor-swiper-button svg, +.elementor-element .swiper-container ~ .elementor-swiper-button svg, .elementor-lightbox .swiper .elementor-swiper-button svg, +.elementor-lightbox .swiper ~ .elementor-swiper-button svg, +.elementor-lightbox .swiper-container .elementor-swiper-button svg, +.elementor-lightbox .swiper-container ~ .elementor-swiper-button svg { + fill: rgba(238, 238, 238, 0.9); + height: 1em; + width: 1em; +} +.elementor-element .swiper .elementor-swiper-button-prev, +.elementor-element .swiper ~ .elementor-swiper-button-prev, +.elementor-element .swiper-container .elementor-swiper-button-prev, +.elementor-element .swiper-container ~ .elementor-swiper-button-prev, .elementor-lightbox .swiper .elementor-swiper-button-prev, +.elementor-lightbox .swiper ~ .elementor-swiper-button-prev, +.elementor-lightbox .swiper-container .elementor-swiper-button-prev, +.elementor-lightbox .swiper-container ~ .elementor-swiper-button-prev { + left: 10px; +} +.elementor-element .swiper .elementor-swiper-button-next, +.elementor-element .swiper ~ .elementor-swiper-button-next, +.elementor-element .swiper-container .elementor-swiper-button-next, +.elementor-element .swiper-container ~ .elementor-swiper-button-next, .elementor-lightbox .swiper .elementor-swiper-button-next, +.elementor-lightbox .swiper ~ .elementor-swiper-button-next, +.elementor-lightbox .swiper-container .elementor-swiper-button-next, +.elementor-lightbox .swiper-container ~ .elementor-swiper-button-next { + right: 10px; +} +.elementor-element .swiper .elementor-swiper-button.swiper-button-disabled, +.elementor-element .swiper ~ .elementor-swiper-button.swiper-button-disabled, +.elementor-element .swiper-container .elementor-swiper-button.swiper-button-disabled, +.elementor-element .swiper-container ~ .elementor-swiper-button.swiper-button-disabled, .elementor-lightbox .swiper .elementor-swiper-button.swiper-button-disabled, +.elementor-lightbox .swiper ~ .elementor-swiper-button.swiper-button-disabled, +.elementor-lightbox .swiper-container .elementor-swiper-button.swiper-button-disabled, +.elementor-lightbox .swiper-container ~ .elementor-swiper-button.swiper-button-disabled { + opacity: 0.3; +} +.elementor-element .swiper .swiper-image-stretch .swiper-slide .swiper-slide-image, +.elementor-element .swiper-container .swiper-image-stretch .swiper-slide .swiper-slide-image, .elementor-lightbox .swiper .swiper-image-stretch .swiper-slide .swiper-slide-image, +.elementor-lightbox .swiper-container .swiper-image-stretch .swiper-slide .swiper-slide-image { + width: 100%; +} +.elementor-element .swiper .swiper-pagination-fraction, +.elementor-element .swiper .swiper-pagination-custom, +.elementor-element .swiper .swiper-horizontal > .swiper-pagination-bullets, +.elementor-element .swiper .swiper-pagination-bullets.swiper-pagination-horizontal, +.elementor-element .swiper ~ .swiper-pagination-fraction, +.elementor-element .swiper ~ .swiper-pagination-custom, +.elementor-element .swiper ~ .swiper-pagination-bullets.swiper-pagination-horizontal, +.elementor-element .swiper-container .swiper-pagination-fraction, +.elementor-element .swiper-container .swiper-pagination-custom, +.elementor-element .swiper-container .swiper-horizontal > .swiper-pagination-bullets, +.elementor-element .swiper-container .swiper-pagination-bullets.swiper-pagination-horizontal, +.elementor-element .swiper-container ~ .swiper-pagination-fraction, +.elementor-element .swiper-container ~ .swiper-pagination-custom, +.elementor-element .swiper-container ~ .swiper-pagination-bullets.swiper-pagination-horizontal, .elementor-lightbox .swiper .swiper-pagination-fraction, +.elementor-lightbox .swiper .swiper-pagination-custom, +.elementor-lightbox .swiper .swiper-horizontal > .swiper-pagination-bullets, +.elementor-lightbox .swiper .swiper-pagination-bullets.swiper-pagination-horizontal, +.elementor-lightbox .swiper ~ .swiper-pagination-fraction, +.elementor-lightbox .swiper ~ .swiper-pagination-custom, +.elementor-lightbox .swiper ~ .swiper-pagination-bullets.swiper-pagination-horizontal, +.elementor-lightbox .swiper-container .swiper-pagination-fraction, +.elementor-lightbox .swiper-container .swiper-pagination-custom, +.elementor-lightbox .swiper-container .swiper-horizontal > .swiper-pagination-bullets, +.elementor-lightbox .swiper-container .swiper-pagination-bullets.swiper-pagination-horizontal, +.elementor-lightbox .swiper-container ~ .swiper-pagination-fraction, +.elementor-lightbox .swiper-container ~ .swiper-pagination-custom, +.elementor-lightbox .swiper-container ~ .swiper-pagination-bullets.swiper-pagination-horizontal { + bottom: 5px; +} +.elementor-element .swiper.swiper-cube .elementor-swiper-button, +.elementor-element .swiper.swiper-cube ~ .elementor-swiper-button, +.elementor-element .swiper-container.swiper-cube .elementor-swiper-button, +.elementor-element .swiper-container.swiper-cube ~ .elementor-swiper-button, .elementor-lightbox .swiper.swiper-cube .elementor-swiper-button, +.elementor-lightbox .swiper.swiper-cube ~ .elementor-swiper-button, +.elementor-lightbox .swiper-container.swiper-cube .elementor-swiper-button, +.elementor-lightbox .swiper-container.swiper-cube ~ .elementor-swiper-button { + transform: translate3d(0, -50%, 1px); +} +.elementor-element :where(.swiper-container-horizontal) ~ .swiper-pagination-bullets, .elementor-lightbox :where(.swiper-container-horizontal) ~ .swiper-pagination-bullets { + bottom: 5px; + left: 0; + width: 100%; +} +.elementor-element :where(.swiper-container-horizontal) ~ .swiper-pagination-bullets .swiper-pagination-bullet, .elementor-lightbox :where(.swiper-container-horizontal) ~ .swiper-pagination-bullets .swiper-pagination-bullet { + margin: 0 var(--swiper-pagination-bullet-horizontal-gap, 4px); +} +.elementor-element :where(.swiper-container-horizontal) ~ .swiper-pagination-progressbar, .elementor-lightbox :where(.swiper-container-horizontal) ~ .swiper-pagination-progressbar { + width: 100%; + height: 4px; + left: 0; + top: 0; +} +.elementor-element.elementor-pagination-position-outside .swiper, +.elementor-element.elementor-pagination-position-outside .swiper-container, .elementor-lightbox.elementor-pagination-position-outside .swiper, +.elementor-lightbox.elementor-pagination-position-outside .swiper-container { + padding-bottom: 30px; +} +.elementor-element.elementor-pagination-position-outside .swiper .elementor-swiper-button, +.elementor-element.elementor-pagination-position-outside .swiper ~ .elementor-swiper-button, +.elementor-element.elementor-pagination-position-outside .swiper-container .elementor-swiper-button, +.elementor-element.elementor-pagination-position-outside .swiper-container ~ .elementor-swiper-button, .elementor-lightbox.elementor-pagination-position-outside .swiper .elementor-swiper-button, +.elementor-lightbox.elementor-pagination-position-outside .swiper ~ .elementor-swiper-button, +.elementor-lightbox.elementor-pagination-position-outside .swiper-container .elementor-swiper-button, +.elementor-lightbox.elementor-pagination-position-outside .swiper-container ~ .elementor-swiper-button { + top: calc(50% - 30px / 2); +} +.elementor-element .elementor-swiper, .elementor-lightbox .elementor-swiper { + position: relative; +} +.elementor-element .elementor-main-swiper, .elementor-lightbox .elementor-main-swiper { + position: static; +} +.elementor-element.elementor-arrows-position-outside .swiper, +.elementor-element.elementor-arrows-position-outside .swiper-container, .elementor-lightbox.elementor-arrows-position-outside .swiper, +.elementor-lightbox.elementor-arrows-position-outside .swiper-container { + width: calc(100% - 60px); +} +.elementor-element.elementor-arrows-position-outside .swiper .elementor-swiper-button-prev, +.elementor-element.elementor-arrows-position-outside .swiper ~ .elementor-swiper-button-prev, +.elementor-element.elementor-arrows-position-outside .swiper-container .elementor-swiper-button-prev, +.elementor-element.elementor-arrows-position-outside .swiper-container ~ .elementor-swiper-button-prev, .elementor-lightbox.elementor-arrows-position-outside .swiper .elementor-swiper-button-prev, +.elementor-lightbox.elementor-arrows-position-outside .swiper ~ .elementor-swiper-button-prev, +.elementor-lightbox.elementor-arrows-position-outside .swiper-container .elementor-swiper-button-prev, +.elementor-lightbox.elementor-arrows-position-outside .swiper-container ~ .elementor-swiper-button-prev { + left: 0; +} +.elementor-element.elementor-arrows-position-outside .swiper .elementor-swiper-button-next, +.elementor-element.elementor-arrows-position-outside .swiper ~ .elementor-swiper-button-next, +.elementor-element.elementor-arrows-position-outside .swiper-container .elementor-swiper-button-next, +.elementor-element.elementor-arrows-position-outside .swiper-container ~ .elementor-swiper-button-next, .elementor-lightbox.elementor-arrows-position-outside .swiper .elementor-swiper-button-next, +.elementor-lightbox.elementor-arrows-position-outside .swiper ~ .elementor-swiper-button-next, +.elementor-lightbox.elementor-arrows-position-outside .swiper-container .elementor-swiper-button-next, +.elementor-lightbox.elementor-arrows-position-outside .swiper-container ~ .elementor-swiper-button-next { + right: 0; +} + +.elementor-lightbox { + --lightbox-ui-color: rgba(238, 238, 238, 0.9); + --lightbox-ui-color-hover: #fff; + --lightbox-text-color: var(--lightbox-ui-color); + --lightbox-header-icons-size: 20px; + --lightbox-navigation-icons-size: 25px; +} +.elementor-lightbox:not(.elementor-popup-modal) .dialog-header, +.elementor-lightbox:not(.elementor-popup-modal) .dialog-message { + text-align: center; +} +.elementor-lightbox .dialog-header { + display: none; +} +.elementor-lightbox .dialog-widget-content { + background: none; + box-shadow: none; + width: 100%; + height: 100%; +} +.elementor-lightbox .dialog-message { + animation-duration: 0.3s; + height: 100%; +} +.elementor-lightbox .dialog-message.dialog-lightbox-message { + padding: 0; +} +.elementor-lightbox .dialog-lightbox-close-button { + cursor: pointer; + position: absolute; + font-size: var(--lightbox-header-icons-size); + left: 0.75em; + margin-top: 13px; + padding: 0.25em; + z-index: 2; + line-height: 1; + display: flex; +} +.elementor-lightbox .dialog-lightbox-close-button svg { + height: 1em; + width: 1em; +} +.elementor-lightbox .dialog-lightbox-close-button, +.elementor-lightbox .elementor-swiper-button { + color: var(--lightbox-ui-color); + transition: all 0.3s; + opacity: 1; +} +.elementor-lightbox .dialog-lightbox-close-button svg, +.elementor-lightbox .elementor-swiper-button svg { + fill: var(--lightbox-ui-color); +} +.elementor-lightbox .dialog-lightbox-close-button:hover, +.elementor-lightbox .elementor-swiper-button:hover { + color: var(--lightbox-ui-color-hover); +} +.elementor-lightbox .dialog-lightbox-close-button:hover svg, +.elementor-lightbox .elementor-swiper-button:hover svg { + fill: var(--lightbox-ui-color-hover); +} +.elementor-lightbox .swiper, +.elementor-lightbox .swiper-container { + height: 100%; +} +.elementor-lightbox .elementor-lightbox-item { + display: flex; + align-items: center; + justify-content: center; + position: relative; + padding: 70px; + box-sizing: border-box; + height: 100%; + margin: auto; +} +@media (max-width: ELEMENTOR_SCREEN_MOBILE_MAX) { + .elementor-lightbox .elementor-lightbox-item { + padding: 70px 0; + } +} +.elementor-lightbox .elementor-lightbox-image { + max-height: 100%; + user-select: none; +} +.elementor-lightbox .elementor-lightbox-image, .elementor-lightbox .elementor-lightbox-image:hover { + opacity: 1; + filter: none; + border: none; +} +.elementor-lightbox .elementor-lightbox-image { + box-shadow: 0 0 30px rgba(0, 0, 0, 0.3), 0 0 8px -5px rgba(0, 0, 0, 0.3); + border-radius: 2px; +} +.elementor-lightbox .elementor-video-container { + width: 100%; + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); +} +.elementor-lightbox .elementor-video-container .elementor-video-square, +.elementor-lightbox .elementor-video-container .elementor-video-landscape, +.elementor-lightbox .elementor-video-container .elementor-video-portrait { + width: 100%; + height: 100%; + margin: auto; +} +.elementor-lightbox .elementor-video-container .elementor-video-square iframe, +.elementor-lightbox .elementor-video-container .elementor-video-landscape iframe, +.elementor-lightbox .elementor-video-container .elementor-video-portrait iframe { + border: 0; + background-color: #000; +} +.elementor-lightbox .elementor-video-container .elementor-video-square iframe, +.elementor-lightbox .elementor-video-container .elementor-video-square video, +.elementor-lightbox .elementor-video-container .elementor-video-landscape iframe, +.elementor-lightbox .elementor-video-container .elementor-video-landscape video, +.elementor-lightbox .elementor-video-container .elementor-video-portrait iframe, +.elementor-lightbox .elementor-video-container .elementor-video-portrait video { + aspect-ratio: var(--video-aspect-ratio, 1.77777); +} +@supports not (aspect-ratio: 1/1) { + .elementor-lightbox .elementor-video-container .elementor-video-square, + .elementor-lightbox .elementor-video-container .elementor-video-landscape, + .elementor-lightbox .elementor-video-container .elementor-video-portrait { + position: relative; + overflow: hidden; + height: 0; + padding-bottom: calc(100% / var(--video-aspect-ratio, 1.77777)); + } + .elementor-lightbox .elementor-video-container .elementor-video-square iframe, + .elementor-lightbox .elementor-video-container .elementor-video-square video, + .elementor-lightbox .elementor-video-container .elementor-video-landscape iframe, + .elementor-lightbox .elementor-video-container .elementor-video-landscape video, + .elementor-lightbox .elementor-video-container .elementor-video-portrait iframe, + .elementor-lightbox .elementor-video-container .elementor-video-portrait video { + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + } +} +.elementor-lightbox .elementor-video-container .elementor-video-square iframe, +.elementor-lightbox .elementor-video-container .elementor-video-square video { + width: min(90vh, 90vw); + height: min(90vh, 90vw); +} +.elementor-lightbox .elementor-video-container .elementor-video-landscape iframe, +.elementor-lightbox .elementor-video-container .elementor-video-landscape video { + width: 100%; + max-height: 90vh; +} +.elementor-lightbox .elementor-video-container .elementor-video-portrait iframe, +.elementor-lightbox .elementor-video-container .elementor-video-portrait video { + height: 100%; + max-width: 90vw; +} +@media (min-width: ELEMENTOR_SCREEN_TABLET_NEXT) { + .elementor-lightbox .elementor-video-container .elementor-video-landscape { + width: 85vw; + max-height: 85vh; + } + .elementor-lightbox .elementor-video-container .elementor-video-portrait { + height: 85vh; + max-width: 85vw; + } +} +@media (max-width: ELEMENTOR_SCREEN_TABLET_MAX) { + .elementor-lightbox .elementor-video-container .elementor-video-landscape { + width: 95vw; + max-height: 95vh; + } + .elementor-lightbox .elementor-video-container .elementor-video-portrait { + height: 95vh; + max-width: 95vw; + } +} +.elementor-lightbox .swiper .elementor-swiper-button-prev, +.elementor-lightbox .swiper-container .elementor-swiper-button-prev { + left: 0; +} +.elementor-lightbox .swiper .elementor-swiper-button-next, +.elementor-lightbox .swiper-container .elementor-swiper-button-next { + right: 0; +} +.elementor-lightbox .swiper .swiper-pagination-fraction, +.elementor-lightbox .swiper-container .swiper-pagination-fraction { + width: max-content; + color: #ffffff; +} +.elementor-lightbox .elementor-swiper-button:focus { + outline-width: 1px; +} +.elementor-lightbox .elementor-swiper-button-prev, .elementor-lightbox .elementor-swiper-button-next { + height: 100%; + display: flex; + align-items: center; + width: 15%; + justify-content: center; + font-size: var(--lightbox-navigation-icons-size); +} +@media (max-width: ELEMENTOR_SCREEN_MOBILE_MAX) { + .elementor-lightbox .elementor-swiper-button:focus { + outline: none; + } + .elementor-lightbox .elementor-swiper-button-prev, .elementor-lightbox .elementor-swiper-button-next { + width: 20%; + } + .elementor-lightbox .elementor-swiper-button-prev i, .elementor-lightbox .elementor-swiper-button-next i { + padding: 10px; + background-color: rgba(0, 0, 0, 0.5); + } + .elementor-lightbox .elementor-swiper-button-prev { + left: 0; + justify-content: flex-start; + } + .elementor-lightbox .elementor-swiper-button-next { + right: 0; + justify-content: flex-end; + } +} + +.elementor-slideshow__counter { + color: currentColor; + font-size: 0.75em; + width: max-content; +} +.elementor-slideshow__header, .elementor-slideshow__footer { + position: absolute; + left: 0; + width: 100%; + padding: 15px 20px; + transition: 0.3s; +} +.elementor-slideshow__footer { + color: var(--lightbox-text-color); +} +.elementor-slideshow__header { + color: var(--lightbox-ui-color); + display: flex; + flex-direction: row-reverse; + font-size: var(--lightbox-header-icons-size); + padding-right: 1em; + padding-left: 2.6em; + top: 0; + align-items: center; + z-index: 10; +} +.elementor-slideshow__header > i, +.elementor-slideshow__header > svg { + cursor: pointer; + padding: 0.25em; + margin: 0 0.35em; +} +.elementor-slideshow__header > i { + font-size: inherit; +} +.elementor-slideshow__header > i:hover { + color: var(--lightbox-ui-color-hover); +} +.elementor-slideshow__header > svg { + box-sizing: content-box; + fill: var(--lightbox-ui-color); + height: 1em; + width: 1em; +} +.elementor-slideshow__header > svg:hover { + fill: var(--lightbox-ui-color-hover); +} +.elementor-slideshow__header .elementor-slideshow__counter { + margin-left: auto; +} +.elementor-slideshow__header .elementor-icon-share { + z-index: 5; +} +.elementor-slideshow__share-menu { + background-color: rgba(0, 0, 0, 0); + width: 0; + height: 0; + position: absolute; + overflow: hidden; + transition: background-color 400ms; +} +.elementor-slideshow__share-menu .elementor-slideshow__share-links a { + color: #0C0D0E; +} +.elementor-slideshow__share-links { + display: block; + position: absolute; + min-width: 200px; + left: 2.8em; + top: 3em; + background-color: #fff; + border-radius: 3px; + padding: 14px 20px; + transform: scale(0); + opacity: 0; + transform-origin: 90% 10%; + transition: all 250ms 100ms; + box-shadow: 0 4px 15px rgba(0, 0, 0, 0.3); +} +.elementor-slideshow__share-links a { + text-align: right; + color: #3f444b; + font-size: 12px; + line-height: 2.5; + display: block; + opacity: 0; + transition: opacity 500ms 100ms; +} +.elementor-slideshow__share-links a:hover { + color: #000; +} +.elementor-slideshow__share-links a i, +.elementor-slideshow__share-links a svg { + margin-left: 0.75em; +} +.elementor-slideshow__share-links a i { + font-size: 1.25em; +} +.elementor-slideshow__share-links a svg { + height: 1.25em; + width: 1.25em; +} +.elementor-slideshow__share-links:before { + content: ""; + display: block; + position: absolute; + top: 1px; + left: 0.5em; + border: 0.45em solid; + border-color: transparent transparent #fff transparent; + transform: translateY(-100%) scaleX(0.7); +} +.elementor-slideshow__footer { + bottom: 0; + z-index: 5; + position: fixed; +} +.elementor-slideshow__title, .elementor-slideshow__description { + margin: 0; +} +.elementor-slideshow__title { + font-size: 16px; + font-weight: bold; +} +.elementor-slideshow__description { + font-size: 14px; +} +.elementor-slideshow--ui-hidden .elementor-slideshow__header, .elementor-slideshow--ui-hidden .elementor-slideshow__footer { + opacity: 0; + pointer-events: none; +} +.elementor-slideshow--ui-hidden .elementor-swiper-button-prev, .elementor-slideshow--ui-hidden .elementor-swiper-button-next { + opacity: 0; +} +.elementor-slideshow--fullscreen-mode .elementor-video-container { + width: 100%; +} +.elementor-slideshow--zoom-mode .elementor-slideshow__header, .elementor-slideshow--zoom-mode .elementor-slideshow__footer { + background-color: rgba(0, 0, 0, 0.5); +} +.elementor-slideshow--zoom-mode .elementor-swiper-button-prev, .elementor-slideshow--zoom-mode .elementor-swiper-button-next { + opacity: 0; + pointer-events: none; +} +.elementor-slideshow--share-mode .elementor-slideshow__share-menu { + top: 0; + left: 0; + width: 100vw; + height: 100vh; + opacity: 1; + cursor: default; + background-color: rgba(0, 0, 0, 0.5); +} +.elementor-slideshow--share-mode .elementor-slideshow__share-links { + transform: scale(1); +} +.elementor-slideshow--share-mode .elementor-slideshow__share-links, .elementor-slideshow--share-mode .elementor-slideshow__share-links a { + opacity: 1; +} +.elementor-slideshow--share-mode .elementor-slideshow__share-links .eicon-twitter { + color: #1DA1F2; +} +.elementor-slideshow--share-mode .elementor-slideshow__share-links .eicon-facebook { + color: #3b5998; +} +.elementor-slideshow--share-mode .elementor-slideshow__share-links .eicon-pinterest { + color: #bd081c; +} +.elementor-slideshow--share-mode .elementor-slideshow__share-links .eicon-download-bold { + color: #9DA5AE; +} +.elementor-slideshow--share-mode .elementor-slideshow__share-links .e-eicon-twitter { + fill: #1DA1F2; +} +.elementor-slideshow--share-mode .elementor-slideshow__share-links .e-eicon-facebook { + fill: #3b5998; +} +.elementor-slideshow--share-mode .elementor-slideshow__share-links .e-eicon-pinterest { + fill: #bd081c; +} +.elementor-slideshow--share-mode .elementor-slideshow__share-links .e-eicon-download-bold { + fill: #9DA5AE; +} +.elementor-slideshow--share-mode .eicon-share-arrow { + z-index: 2; +} + +.animated { + animation-duration: 1.25s; +} +.animated.animated-slow { + animation-duration: 2s; +} +.animated.animated-fast { + animation-duration: 0.75s; +} +.animated.infinite { + animation-iteration-count: infinite; +} +.animated.reverse { + animation-direction: reverse; + animation-fill-mode: forwards; +} + +@media (prefers-reduced-motion: reduce) { + .animated { + animation: none; + } +} +.elementor-shape { + overflow: hidden; + position: absolute; + left: 0; + width: 100%; + line-height: 0; + direction: ltr; + /* + * @TODO: The `z-index: -1` rules below are temporary fixes for Chrome 85 issue. + * It will be removed in a future version of Chrome. + */ +} +.elementor-shape-top { + top: -1px; +} +.elementor-shape-top:not([data-negative=false]) svg { + z-index: -1; +} +.elementor-shape-bottom { + bottom: -1px; +} +.elementor-shape-bottom:not([data-negative=true]) svg { + z-index: -1; +} +.elementor-shape[data-negative=false].elementor-shape-bottom { + transform: rotate(180deg); +} +.elementor-shape[data-negative=true].elementor-shape-top { + transform: rotate(180deg); +} +.elementor-shape svg { + display: block; + width: calc(100% + 1.3px); + position: relative; + left: 50%; + transform: translateX(-50%); +} +.elementor-shape .elementor-shape-fill { + fill: #fff; + transform-origin: center; + transform: rotateY(0deg); +} + +#wp-admin-bar-elementor_edit_page > .ab-item::before { + content: "\e813"; + font-family: eicons; + top: 3px; + font-size: 18px; +} +#wp-admin-bar-elementor_edit_page .ab-submenu .ab-item { + display: flex; + width: 200px; +} +#wp-admin-bar-elementor_edit_page .elementor-edit-link-title { + white-space: nowrap; + text-overflow: ellipsis; + overflow: hidden; + width: 100%; +} +#wp-admin-bar-elementor_edit_page .elementor-edit-link-type { + background: #3f444b; + font-size: 11px; + line-height: 9px; + margin-top: 6px; + padding: 4px 8px; + border-radius: 3px; +} + +#wp-admin-bar-elementor_inspector > .ab-item::before { + content: "\f348"; + top: 2px; +} + +#wpadminbar * { + font-style: normal; +} + +.page-template-elementor_canvas.elementor-page:before { + display: none; +} + +.elementor-post__thumbnail__link { + transition: none; +} + +#left-area ul.elementor-icon-list-items, +.elementor .elementor-element ul.elementor-icon-list-items, +.elementor-edit-area .elementor-element ul.elementor-icon-list-items { + padding: 0; +} + +.e--ua-appleWebkit.rtl { + --flex-right: flex-start; +} +.e--ua-appleWebkit .elementor-widget-social-icons.e-grid-align-right, +.e--ua-appleWebkit .elementor-share-buttons--align-right { + --justify-content: var(--flex-right, flex-end); +} +.e--ua-appleWebkit .elementor-widget-social-icons.e-grid-align-center, +.e--ua-appleWebkit .elementor-share-buttons--align-center { + --justify-content: center; +} +.e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-right .elementor-grid, .e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-center .elementor-grid, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-right .elementor-grid, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-center .elementor-grid, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-justify .elementor-grid { + width: auto; + display: flex; + flex-wrap: wrap; + justify-content: var(--justify-content, space-between); + margin-left: calc(-0.5 * var(--grid-column-gap)); + margin-right: calc(-0.5 * var(--grid-column-gap)); +} +.e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-right .elementor-grid-item, .e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-center .elementor-grid-item, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-right .elementor-grid-item, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-center .elementor-grid-item, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-justify .elementor-grid-item { + margin-left: calc(0.5 * var(--grid-column-gap)); + margin-right: calc(0.5 * var(--grid-column-gap)); +} +.e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-left .elementor-grid, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-left .elementor-grid { + display: inline-block; +} +.e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-left .elementor-grid, .e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-left .elementor-grid-item, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-left .elementor-grid, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-left .elementor-grid-item { + margin-left: 0; + margin-right: 0; +} +@media (max-width: ELEMENTOR_SCREEN_TABLET_MAX) { + .e--ua-appleWebkit .elementor-widget-social-icons.e-grid-align-tablet-right, + .e--ua-appleWebkit .elementor-share-buttons-tablet--align-right { + --justify-content: var(--flex-right, flex-end); + } + .e--ua-appleWebkit .elementor-widget-social-icons.e-grid-align-tablet-center, + .e--ua-appleWebkit .elementor-share-buttons-tablet--align-center { + --justify-content: center; + } + .e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-tablet-right .elementor-grid, .e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-tablet-center .elementor-grid, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-tablet-right .elementor-grid, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-tablet-center .elementor-grid, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-tablet-justify .elementor-grid { + width: auto; + display: flex; + flex-wrap: wrap; + justify-content: var(--justify-content, space-between); + margin-left: calc(-0.5 * var(--grid-column-gap)); + margin-right: calc(-0.5 * var(--grid-column-gap)); + } + .e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-tablet-right .elementor-grid-item, .e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-tablet-center .elementor-grid-item, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-tablet-right .elementor-grid-item, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-tablet-center .elementor-grid-item, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-tablet-justify .elementor-grid-item { + margin-left: calc(0.5 * var(--grid-column-gap)); + margin-right: calc(0.5 * var(--grid-column-gap)); + } + .e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-tablet-left .elementor-grid, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons-tablet--align-left .elementor-grid { + display: inline-block; + } + .e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-tablet-left .elementor-grid, .e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-tablet-left .elementor-grid-item, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons-tablet--align-left .elementor-grid, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons-tablet--align-left .elementor-grid-item { + margin-left: 0; + margin-right: 0; + } +} +@media (max-width: ELEMENTOR_SCREEN_MOBILE_MAX) { + .e--ua-appleWebkit .elementor-widget-social-icons.e-grid-align-mobile-right, + .e--ua-appleWebkit .elementor-share-buttons-mobile--align-right { + --justify-content: var(--flex-right, flex-end); + } + .e--ua-appleWebkit .elementor-widget-social-icons.e-grid-align-mobile-center, + .e--ua-appleWebkit .elementor-share-buttons-mobile--align-center { + --justify-content: center; + } + .e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-mobile-right .elementor-grid, .e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-mobile-center .elementor-grid, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-mobile-right .elementor-grid, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-mobile-center .elementor-grid, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-mobile-justify .elementor-grid { + width: auto; + display: flex; + flex-wrap: wrap; + justify-content: var(--justify-content, space-between); + margin-left: calc(-0.5 * var(--grid-column-gap)); + margin-right: calc(-0.5 * var(--grid-column-gap)); + } + .e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-mobile-right .elementor-grid-item, .e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-mobile-center .elementor-grid-item, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-mobile-right .elementor-grid-item, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-mobile-center .elementor-grid-item, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-mobile-justify .elementor-grid-item { + margin-left: calc(0.5 * var(--grid-column-gap)); + margin-right: calc(0.5 * var(--grid-column-gap)); + } + .e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-mobile-left .elementor-grid, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons-mobile--align-left .elementor-grid { + display: inline-block; + } + .e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-mobile-left .elementor-grid, .e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-mobile-left .elementor-grid-item, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons-mobile--align-left .elementor-grid, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons-mobile--align-left .elementor-grid-item { + margin-left: 0; + margin-right: 0; + } +} + +@media (max-width: ELEMENTOR_SCREEN_MOBILE_MAX) { + .elementor .elementor-hidden-mobile { + display: none; + } + .elementor .elementor-hidden-phone { + display: none; + } +} +@media (min-width: ELEMENTOR_SCREEN_MOBILE_EXTRA_MIN) and (max-width: ELEMENTOR_SCREEN_MOBILE_EXTRA_MAX) { + .elementor .elementor-hidden-mobile_extra { + display: none; + } +} +@media (min-width: ELEMENTOR_SCREEN_TABLET_MIN) and (max-width: ELEMENTOR_SCREEN_TABLET_MAX) { + .elementor .elementor-hidden-tablet { + display: none; + } +} +@media (min-width: ELEMENTOR_SCREEN_TABLET_EXTRA_MIN) and (max-width: ELEMENTOR_SCREEN_TABLET_EXTRA_MAX) { + .elementor .elementor-hidden-tablet_extra { + display: none; + } +} +@media (min-width: ELEMENTOR_SCREEN_LAPTOP_MIN) and (max-width: ELEMENTOR_SCREEN_LAPTOP_MAX) { + .elementor .elementor-hidden-laptop { + display: none; + } +} +@media (min-width: ELEMENTOR_SCREEN_DESKTOP_MIN) and (max-width: ELEMENTOR_SCREEN_DESKTOP_MAX) { + .elementor .elementor-hidden-desktop { + display: none; + } +} +@media (min-width: ELEMENTOR_SCREEN_WIDESCREEN_MIN) { + .elementor .elementor-hidden-widescreen { + display: none; + } +} + +.elementor-widget-text-path { + font-size: 20px; + text-align: var(--alignment, right); +} +.elementor-widget-text-path svg { + width: var(--width); + max-width: 100%; + height: auto; + overflow: visible; + word-spacing: var(--word-spacing); + transform: rotate(var(--rotate, 0)) scaleX(var(--scale-x, 1)) scaleY(var(--scale-y, 1)); +} +.elementor-widget-text-path svg path { + vector-effect: non-scaling-stroke; /* Prevent stroke size scaling when resizing the SVG. */ + fill: var(--path-fill, transparent); + stroke: var(--stroke-color, transparent); + stroke-width: var(--stroke-width, 1px); + transition: var(--stroke-transition) stroke, var(--stroke-transition) fill; +} +.elementor-widget-text-path svg:hover path { + --path-fill: var( --path-fill-hover ); + --stroke-color: var( --stroke-color-hover ); + --stroke-width: var( --stroke-width-hover ); +} +.elementor-widget-text-path svg text { + --fill: var( --text-color ); + fill: var(--fill); + direction: var(--direction, rtl); + transition: var(--transition) stroke, var(--transition) stroke-width, var(--transition) fill; +} +.elementor-widget-text-path svg text:hover { + --color: var( --text-color-hover, var( --text-color ) ); + --fill: var( --color ); + color: var(--color); +} + +.elementor-widget-n-tabs { + --n-tabs-color-accent-fallback: #61CE70; + --n-tabs-color-secondary-fallback: #54595F; + --n-tabs-default-padding-block: 15px; + --n-tabs-default-padding-inline: 35px; + --n-tabs-background-color: transparent; + --n-tabs-display: flex; + --n-tabs-direction: column; + --n-tabs-gap: 10px; + --n-tabs-heading-display: flex; + --n-tabs-heading-direction: row; + --n-tabs-heading-grow: initial; + --n-tabs-heading-justify-content: center; + --n-tabs-heading-width: initial; + --n-tabs-heading-overflow-x: initial; + --n-tabs-heading-wrap: nowrap; + --n-tabs-border-width: 1px; + --n-tabs-border-color: #D5D8DC; + --n-tabs-content-display: flex; + --n-tabs-title-color: var(--e-global-color-secondary, var(--n-tabs-color-secondary-fallback)); + --n-tabs-title-color-hover: #ffffff; + --n-tabs-title-color-active: #ffffff; + --n-tabs-title-background-color: #F1F2F3; + --n-tabs-title-background-color-hover: var(--e-global-color-accent, var(--n-tabs-color-accent-fallback)); + --n-tabs-title-background-color-active: var(--e-global-color-accent, var(--n-tabs-color-accent-fallback)); + --n-tabs-title-width: initial; + --n-tabs-title-height: initial; + --n-tabs-title-font-size: 1rem; + --n-tabs-title-white-space: initial; + --n-tabs-title-justify-content-toggle: initial; + --n-tabs-title-align-items-toggle: center; + --n-tabs-title-justify-content: center; + --n-tabs-title-align-items: center; + --n-tabs-title-text-align: center; + --n-tabs-title-direction: row; + --n-tabs-title-gap: 10px; + --n-tabs-title-flex-grow: 0; + --n-tabs-title-flex-basis: content; + --n-tabs-title-flex-shrink: initial; + --n-tabs-title-order: initial; + --n-tabs-title-padding-block-start: var(--n-tabs-default-padding-block); + --n-tabs-title-padding-inline-end: var(--n-tabs-default-padding-inline); + --n-tabs-title-padding-block-end: var(--n-tabs-default-padding-block); + --n-tabs-title-padding-inline-start: var(--n-tabs-default-padding-inline); + --n-tabs-title-border-radius: initial; + --n-tabs-title-transition: 0.3s; + --n-tabs-icon-color: var(--e-global-color-secondary, var(--n-tabs-color-secondary-fallback)); + --n-tabs-icon-color-hover: var(--n-tabs-title-color-hover); + --n-tabs-icon-color-active: #ffffff; + --n-tabs-icon-gap: 5px; + width: 100%; + max-width: 100%; /* Fix issue with new created n-tabs inside n-tabs with overflow */ +} +.elementor-widget-n-tabs .e-n-tabs { + display: var(--n-tabs-display); + flex-direction: var(--n-tabs-direction); + gap: var(--n-tabs-gap); + text-align: start; + min-width: 0; +} +.elementor-widget-n-tabs .e-n-tabs-heading { + display: var(--n-tabs-heading-display); + flex-basis: var(--n-tabs-heading-width); + flex-direction: var(--n-tabs-heading-direction); + flex-shrink: 0; + justify-content: var(--n-tabs-heading-justify-content); + gap: var(--n-tabs-title-gap); + overflow-x: var(--n-tabs-heading-overflow-x); + flex-wrap: var(--n-tabs-heading-wrap); + -ms-overflow-style: none; /* IE and Edge */ + scrollbar-width: none; /* Firefox */ +} +.elementor-widget-n-tabs .e-n-tabs-heading::-webkit-scrollbar { + display: none; /* Hide scrollbar for Chrome, Safari and Opera */ +} +.elementor-widget-n-tabs .e-n-tabs-heading.e-scroll { + cursor: grabbing; + cursor: -webkit-grabbing; +} +.elementor-widget-n-tabs .e-n-tabs-heading.e-scroll-active { + position: relative; +} +.elementor-widget-n-tabs .e-n-tabs-heading.e-scroll-active::before { + content: ""; + position: absolute; + inset-block: 0; + inset-inline: -1000vw; + z-index: 2; +} +.elementor-widget-n-tabs .e-n-tabs-content { + display: var(--n-tabs-content-display); + flex-grow: 1; + min-width: 0; +} +.elementor-widget-n-tabs .e-n-tabs-content > .e-con:not(.e-active) { + display: none; +} +.elementor-widget-n-tabs .e-n-tabs:not(.e-activated) > .e-n-tabs-content > .e-con:nth-child(1) { + display: flex; +} +.elementor-widget-n-tabs .e-n-tab-title { + all: unset; + user-select: none; + display: flex; + align-items: var(--n-tabs-title-align-items-toggle, var(--n-tabs-title-align-items)); + flex-direction: var(--n-tabs-title-direction); + justify-content: var(--n-tabs-title-justify-content-toggle, var(--n-tabs-title-justify-content)); + gap: var(--n-tabs-icon-gap); + border-width: var(--n-tabs-border-width); + position: relative; + cursor: pointer; + outline: none; + flex-grow: var(--n-tabs-title-flex-grow); + flex-basis: var(--n-tabs-title-flex-basis); + flex-shrink: var(--n-tabs-title-flex-shrink); + padding-block-start: var(--n-tabs-title-padding-block-start); + padding-inline-end: var(--n-tabs-title-padding-inline-end); + padding-block-end: var(--n-tabs-title-padding-block-end); + padding-inline-start: var(--n-tabs-title-padding-inline-start); + border-radius: var(--n-tabs-title-border-radius); + height: var(--n-tabs-title-height); + width: var(--n-tabs-title-width); + white-space: var(--n-tabs-title-white-space); + transition: background var(--n-tabs-title-transition), color var(--n-tabs-title-transition), border var(--n-tabs-title-transition), box-shadow var(--n-tabs-title-transition), text-shadow var(--n-tabs-title-transition), stroke var(--n-tabs-title-transition), stroke-width var(--n-tabs-title-transition), -webkit-text-stroke-width var(--n-tabs-title-transition), -webkit-text-stroke-color var(--n-tabs-title-transition), transform var(--n-tabs-title-transition); +} +.elementor-widget-n-tabs .e-n-tab-title:focus-visible { + outline: 5px auto -webkit-focus-ring-color; +} +.elementor-widget-n-tabs .e-n-tab-title span svg, .elementor-widget-n-tabs .e-n-tab-title span i { + transition: color var(--n-tabs-title-transition), fill var(--n-tabs-title-transition); +} +.elementor-widget-n-tabs .e-n-tab-title-text { + display: flex; + align-items: center; + font-size: var(--n-tabs-title-font-size); + text-align: var(--n-tabs-title-text-align); +} +.elementor-widget-n-tabs .e-n-tab-title .e-n-tab-icon { + display: flex; + align-items: center; + flex-direction: column; + flex-shrink: 0; + order: var(--n-tabs-icon-order); + overflow: hidden; +} +.elementor-widget-n-tabs .e-n-tab-title .e-n-tab-icon i { + font-size: var(--n-tabs-icon-size, var(--n-tabs-title-font-size)); +} +.elementor-widget-n-tabs .e-n-tab-title .e-n-tab-icon svg { + width: var(--n-tabs-icon-size, var(--n-tabs-title-font-size)); + height: var(--n-tabs-icon-size, var(--n-tabs-title-font-size)); +} +.elementor-widget-n-tabs .e-n-tab-title .e-n-tab-icon:empty { + display: none; +} +.elementor-widget-n-tabs .e-n-tab-title[aria-selected=false] { + background-color: var(--n-tabs-title-background-color); +} +.elementor-widget-n-tabs .e-n-tab-title[aria-selected=false], .elementor-widget-n-tabs .e-n-tab-title[aria-selected=false] a { + color: var(--n-tabs-title-color); +} +.elementor-widget-n-tabs .e-n-tab-title[aria-selected=false] .e-n-tab-icon i { + color: var(--n-tabs-icon-color); +} +.elementor-widget-n-tabs .e-n-tab-title[aria-selected=false] .e-n-tab-icon svg { + fill: var(--n-tabs-icon-color); +} +.elementor-widget-n-tabs .e-n-tab-title[aria-selected=false] .e-n-tab-icon i:last-child, +.elementor-widget-n-tabs .e-n-tab-title[aria-selected=false] .e-n-tab-icon svg:last-child { + transform: translate(0, -100vh); + height: 0; + opacity: 0; +} +.elementor-widget-n-tabs .e-n-tab-title[aria-selected=true], .elementor-widget-n-tabs .e-n-tab-title[aria-selected=true] a { + color: var(--n-tabs-title-color-active); +} +.elementor-widget-n-tabs .e-n-tab-title[aria-selected=true] .e-n-tab-icon i { + color: var(--n-tabs-icon-color-active); +} +.elementor-widget-n-tabs .e-n-tab-title[aria-selected=true] .e-n-tab-icon svg { + fill: var(--n-tabs-icon-color-active); +} +.elementor-widget-n-tabs .e-n-tab-title[aria-selected=true] .e-n-tab-icon i:first-child, +.elementor-widget-n-tabs .e-n-tab-title[aria-selected=true] .e-n-tab-icon svg:first-child { + transform: translate(0, -100vh); + height: 0; + opacity: 0; +} +.elementor-widget-n-tabs .e-n-tab-title[aria-selected=true][class*=elementor-animation-]:focus, .elementor-widget-n-tabs .e-n-tab-title[aria-selected=true][class*=elementor-animation-]:active, .elementor-widget-n-tabs .e-n-tab-title[aria-selected=true][class*=elementor-animation-]:hover { + transform: initial; + animation: initial; +} +.elementor-widget-n-tabs [data-touch-mode=false] .e-n-tab-title[aria-selected=false]:hover, .elementor-widget-n-tabs [data-touch-mode=false] .e-n-tab-title[aria-selected=false]:hover a { + color: var(--n-tabs-title-color-hover); +} +.elementor-widget-n-tabs [data-touch-mode=false] .e-n-tab-title[aria-selected=false]:hover .e-n-tab-icon i { + color: var(--n-tabs-icon-color-hover); +} +.elementor-widget-n-tabs [data-touch-mode=false] .e-n-tab-title[aria-selected=false]:hover .e-n-tab-icon svg { + fill: var(--n-tabs-icon-color-hover); +} +.elementor-widget-n-tabs [data-touch-mode=true] .e-n-tab-title[aria-selected=false]:hover, .elementor-widget-n-tabs [data-touch-mode=true] .e-n-tab-title[aria-selected=false]:hover a { + color: var(--n-tabs-title-color-active); +} +.elementor-widget-n-tabs [data-touch-mode=true] .e-n-tab-title[aria-selected=false]:hover .e-n-tab-icon i { + color: var(--n-tabs-icon-color-active); +} +.elementor-widget-n-tabs [data-touch-mode=true] .e-n-tab-title[aria-selected=false]:hover .e-n-tab-icon svg { + fill: var(--n-tabs-icon-color-active); +} +.elementor-widget-n-tabs [data-touch-mode=true] .e-n-tab-title[aria-selected=false]:hover .e-n-tab-icon i:first-child, +.elementor-widget-n-tabs [data-touch-mode=true] .e-n-tab-title[aria-selected=false]:hover .e-n-tab-icon svg:first-child { + transform: translate(0, -100vh); + height: 0; + opacity: 0; +} +.elementor-widget-n-tabs [data-touch-mode=true] .e-n-tab-title[aria-selected=false]:hover[class*=elementor-animation-]:focus, .elementor-widget-n-tabs [data-touch-mode=true] .e-n-tab-title[aria-selected=false]:hover[class*=elementor-animation-]:active, .elementor-widget-n-tabs [data-touch-mode=true] .e-n-tab-title[aria-selected=false]:hover[class*=elementor-animation-]:hover { + transform: initial; + animation: initial; +} +.elementor-widget-n-tabs [data-touch-mode=true] .e-n-tab-title[aria-selected=false]:hover .e-n-tab-icon i:last-child, +.elementor-widget-n-tabs [data-touch-mode=true] .e-n-tab-title[aria-selected=false]:hover .e-n-tab-icon svg:last-child { + transform: initial; + height: initial; + opacity: initial; +} + +.elementor .elementor-element.elementor-widget-n-tabs > .elementor-widget-container > .e-n-tabs[data-touch-mode=false] > .e-n-tabs-heading .e-n-tab-title[aria-selected=false]:hover { + background-color: var(--n-tabs-title-background-color-hover); + background-image: initial; +} + +.elementor .elementor-element.elementor-widget-n-tabs > .elementor-widget-container > .e-n-tabs > .e-n-tabs-heading .e-n-tab-title[aria-selected=true], +.elementor .elementor-element.elementor-widget-n-tabs > .elementor-widget-container > .e-n-tabs[data-touch-mode=true] > .e-n-tabs-heading .e-n-tab-title[aria-selected=false]:hover { + background-color: var(--n-tabs-title-background-color-active); + background-image: initial; +} + +@media (max-width: ELEMENTOR_SCREEN_MOBILE_MAX) { + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-mobile { + --n-tabs-direction: column; + --n-tabs-heading-display: contents; + --n-tabs-content-display: contents; + } + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-mobile .e-n-tabs { + gap: 0; + } + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-mobile .e-n-tabs-content > .e-con { + order: var(--n-tabs-title-order); + } + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-mobile .e-n-tab-title { + order: var(--n-tabs-title-order); + width: initial; + } + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-mobile .e-n-tab-title:not(:first-child) { + margin-block-start: var(--n-tabs-title-gap); + } + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-mobile .e-n-tab-title[aria-selected=true] { + margin-block-end: var(--n-tabs-gap); + } +} +@media (max-width: ELEMENTOR_SCREEN_MOBILE_EXTRA_MAX) { + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-mobile_extra { + --n-tabs-direction: column; + --n-tabs-heading-display: contents; + --n-tabs-content-display: contents; + } + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-mobile_extra .e-n-tabs { + gap: 0; + } + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-mobile_extra .e-n-tabs-content > .e-con { + order: var(--n-tabs-title-order); + } + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-mobile_extra .e-n-tab-title { + order: var(--n-tabs-title-order); + width: initial; + } + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-mobile_extra .e-n-tab-title:not(:first-child) { + margin-block-start: var(--n-tabs-title-gap); + } + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-mobile_extra .e-n-tab-title[aria-selected=true] { + margin-block-end: var(--n-tabs-gap); + } +} +@media (max-width: ELEMENTOR_SCREEN_TABLET_MAX) { + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-tablet { + --n-tabs-direction: column; + --n-tabs-heading-display: contents; + --n-tabs-content-display: contents; + } + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-tablet .e-n-tabs { + gap: 0; + } + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-tablet .e-n-tabs-content > .e-con { + order: var(--n-tabs-title-order); + } + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-tablet .e-n-tab-title { + order: var(--n-tabs-title-order); + width: initial; + } + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-tablet .e-n-tab-title:not(:first-child) { + margin-block-start: var(--n-tabs-title-gap); + } + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-tablet .e-n-tab-title[aria-selected=true] { + margin-block-end: var(--n-tabs-gap); + } +} +@media (max-width: ELEMENTOR_SCREEN_TABLET_EXTRA_MAX) { + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-tablet_extra { + --n-tabs-direction: column; + --n-tabs-heading-display: contents; + --n-tabs-content-display: contents; + } + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-tablet_extra .e-n-tabs { + gap: 0; + } + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-tablet_extra .e-n-tabs-content > .e-con { + order: var(--n-tabs-title-order); + } + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-tablet_extra .e-n-tab-title { + order: var(--n-tabs-title-order); + width: initial; + } + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-tablet_extra .e-n-tab-title:not(:first-child) { + margin-block-start: var(--n-tabs-title-gap); + } + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-tablet_extra .e-n-tab-title[aria-selected=true] { + margin-block-end: var(--n-tabs-gap); + } +} +@media (max-width: ELEMENTOR_SCREEN_LAPTOP_MAX) { + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-laptop { + --n-tabs-direction: column; + --n-tabs-heading-display: contents; + --n-tabs-content-display: contents; + } + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-laptop .e-n-tabs { + gap: 0; + } + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-laptop .e-n-tabs-content > .e-con { + order: var(--n-tabs-title-order); + } + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-laptop .e-n-tab-title { + order: var(--n-tabs-title-order); + width: initial; + } + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-laptop .e-n-tab-title:not(:first-child) { + margin-block-start: var(--n-tabs-title-gap); + } + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-laptop .e-n-tab-title[aria-selected=true] { + margin-block-end: var(--n-tabs-gap); + } +} +.elementor-widget-n-accordion { + --n-accordion-title-font-size: 20px; + --n-accordion-title-flex-grow: initial; + --n-accordion-title-justify-content: initial; + --n-accordion-title-icon-order: -1; + --n-accordion-border-width: 1px; + --n-accordion-border-color: #D5D8DC; + --n-accordion-border-style: solid; + --n-accordion-item-title-flex-grow: initial; + --n-accordion-item-title-space-between: 0px; + --n-accordion-item-title-distance-from-content: 0px; + --n-accordion-padding: 10px; + --n-accordion-border-radius: 0px; + --n-accordion-icon-size: 15px; + --n-accordion-title-normal-color: #1f2124; + --n-accordion-title-hover-color: #1f2124; + --n-accordion-title-active-color: #1f2124; + --n-accordion-icon-normal-color: var(--n-accordion-title-normal-color); + --n-accordion-icon-hover-color: var(--n-accordion-title-hover-color); + --n-accordion-icon-active-color: var(--n-accordion-title-active-color); + --n-accordion-icon-gap: 0 10px; + width: 100%; +} +.elementor-widget-n-accordion .e-n-accordion details > summary::-webkit-details-marker { + display: none; +} +.elementor-widget-n-accordion .e-n-accordion-item { + display: flex; + flex-direction: column; + position: relative; +} +.elementor-widget-n-accordion .e-n-accordion-item:not(:last-child) { + margin-block-end: var(--n-accordion-item-title-space-between); +} +:where(.elementor-widget-n-accordion .e-n-accordion-item > .e-con) { + border: var(--n-accordion-border-width) var(--n-accordion-border-style) var(--n-accordion-border-color); +} +.elementor-widget-n-accordion .e-n-accordion-item-title { + display: flex; + flex-direction: row; + list-style: none; + padding: var(--n-accordion-padding); + border-width: var(--n-accordion-border-width); + border-color: var(--n-accordion-border-color); + border-style: var(--n-accordion-border-style); + justify-content: var(--n-accordion-title-justify-content); + border-radius: var(--n-accordion-border-radius); + flex-grow: var(--n-menu-title-flex-grow); + gap: var(--n-accordion-icon-gap); + color: var(--n-accordion-title-normal-color); + align-items: center; + cursor: pointer; +} +.elementor-widget-n-accordion .e-n-accordion-item-title-header { + display: flex; +} +.elementor-widget-n-accordion .e-n-accordion-item-title-header h1, .elementor-widget-n-accordion .e-n-accordion-item-title-header h2, .elementor-widget-n-accordion .e-n-accordion-item-title-header h3, .elementor-widget-n-accordion .e-n-accordion-item-title-header h4, .elementor-widget-n-accordion .e-n-accordion-item-title-header h5, .elementor-widget-n-accordion .e-n-accordion-item-title-header h6, .elementor-widget-n-accordion .e-n-accordion-item-title-header p { + margin-block-start: 0; + margin-block-end: 0; +} +.elementor-widget-n-accordion .e-n-accordion-item-title-text { + font-size: var(--n-accordion-title-font-size); + align-items: center; +} +.elementor-widget-n-accordion .e-n-accordion-item-title-icon { + display: flex; + flex-direction: row; + align-items: center; + order: var(--n-accordion-title-icon-order); + position: relative; + width: fit-content; +} +.elementor-widget-n-accordion .e-n-accordion-item-title-icon span { + height: var(--n-accordion-icon-size); + width: auto; +} +.elementor-widget-n-accordion .e-n-accordion-item-title-icon span > i { + color: var(--n-accordion-icon-normal-color); + font-size: var(--n-accordion-icon-size); +} +.elementor-widget-n-accordion .e-n-accordion-item-title-icon span > svg { + fill: var(--n-accordion-icon-normal-color); + height: var(--n-accordion-icon-size); +} +.elementor-widget-n-accordion .e-n-accordion-item-title > span { + cursor: pointer; +} +.elementor-widget-n-accordion .e-n-accordion-item[open] .e-n-accordion-item-title { + margin-block-end: var(--n-accordion-item-title-distance-from-content); + color: var(--n-accordion-title-active-color); +} +.elementor-widget-n-accordion .e-n-accordion-item[open] .e-n-accordion-item-title-icon .e-opened { + display: flex; +} +.elementor-widget-n-accordion .e-n-accordion-item[open] .e-n-accordion-item-title-icon .e-closed { + display: none; +} +.elementor-widget-n-accordion .e-n-accordion-item[open] .e-n-accordion-item-title-icon span > i { + color: var(--n-accordion-icon-active-color); +} +.elementor-widget-n-accordion .e-n-accordion-item[open] .e-n-accordion-item-title-icon span > svg { + fill: var(--n-accordion-icon-active-color); +} +.elementor-widget-n-accordion .e-n-accordion-item:not([open]):hover .e-n-accordion-item-title { + color: var(--n-accordion-title-hover-color); +} +.elementor-widget-n-accordion .e-n-accordion-item:not([open]):hover .e-n-accordion-item-title-icon span > i { + color: var(--n-accordion-icon-hover-color); +} +.elementor-widget-n-accordion .e-n-accordion-item:not([open]):hover .e-n-accordion-item-title-icon span > svg { + fill: var(--n-accordion-icon-hover-color); +} +.elementor-widget-n-accordion .e-n-accordion-item .e-n-accordion-item-title-icon .e-opened { + display: none; +} +.elementor-widget-n-accordion .e-n-accordion-item .e-n-accordion-item-title-icon .e-closed { + display: flex; +} +.elementor-widget-n-accordion .e-n-accordion-item .e-n-accordion-item-title-icon span > svg { + fill: var(--n-accordion-icon-normal-color); +} +.elementor-widget-n-accordion .e-n-accordion-item .e-n-accordion-item-title-icon span > i { + color: var(--n-accordion-icon-normal-color); +} +.elementor-widget-n-accordion .e-n-accordion-item > span { + cursor: pointer; +} + +.elementor-accordion { + text-align: right; +} +.elementor-accordion .elementor-accordion-item { + border: 1px solid #D5D8DC; +} +.elementor-accordion .elementor-accordion-item + .elementor-accordion-item { + border-top: none; +} +.elementor-accordion .elementor-tab-title { + margin: 0; + padding: 15px 20px; + font-weight: bold; + line-height: 1; + cursor: pointer; + outline: none; +} +.elementor-accordion .elementor-tab-title .elementor-accordion-icon { + display: inline-block; + width: 1.5em; +} +.elementor-accordion .elementor-tab-title .elementor-accordion-icon svg { + width: 1em; + height: 1em; +} +.elementor-accordion .elementor-tab-title .elementor-accordion-icon.elementor-accordion-icon-right { + float: right; + text-align: right; +} +.elementor-accordion .elementor-tab-title .elementor-accordion-icon.elementor-accordion-icon-left { + float: left; + text-align: left; +} +.elementor-accordion .elementor-tab-title .elementor-accordion-icon .elementor-accordion-icon-closed { + display: block; +} +.elementor-accordion .elementor-tab-title .elementor-accordion-icon .elementor-accordion-icon-opened { + display: none; +} +.elementor-accordion .elementor-tab-title.elementor-active .elementor-accordion-icon-closed { + display: none; +} +.elementor-accordion .elementor-tab-title.elementor-active .elementor-accordion-icon-opened { + display: block; +} +.elementor-accordion .elementor-tab-content { + display: none; + padding: 15px 20px; + border-top: 1px solid #D5D8DC; +} + +@media (max-width: ELEMENTOR_SCREEN_MOBILE_MAX) { + .elementor-accordion .elementor-tab-title { + padding: 12px 15px; + } + .elementor-accordion .elementor-tab-title .elementor-accordion-icon { + width: 1.2em; + } + .elementor-accordion .elementor-tab-content { + padding: 7px 15px; + } +} +.e-con > .elementor-widget-accordion, +.e-con-inner > .elementor-widget-accordion { + width: var(--container-widget-width); + --flex-grow: var( --container-widget-flex-grow ); +} + +.elementor-alert { + padding: 15px; + border-left: 5px solid transparent; + position: relative; + text-align: right; +} +.elementor-alert .elementor-alert-title { + display: block; + font-weight: bold; +} +.elementor-alert .elementor-alert-description { + font-size: 13px; +} +.elementor-alert button.elementor-alert-dismiss { + position: absolute; + left: var(--dismiss-icon-horizontal-position, 10px); + top: var(--dismiss-icon-vertical-position, 10px); + padding: 3px; + font-size: var(--dismiss-icon-size, 20px); + line-height: 1; + background: transparent; + color: var(--dismiss-icon-normal-color, inherit); + border: none; + cursor: pointer; + transition-duration: var(--dismiss-icon-hover-transition-duration, 0.3s); +} +.elementor-alert button.elementor-alert-dismiss:hover { + color: var(--dismiss-icon-hover-color, inherit); +} +.elementor-alert button.elementor-alert-dismiss svg { + width: var(--dismiss-icon-size, 20px); + height: var(--dismiss-icon-size, 20px); + fill: var(--dismiss-icon-normal-color, currentColor); + transition-duration: var(--dismiss-icon-hover-transition-duration, 0.3s); +} +.elementor-alert button.elementor-alert-dismiss svg:hover { + fill: var(--dismiss-icon-hover-color, currentColor); +} +.elementor-alert.elementor-alert-info { + color: #31708f; + background-color: #d9edf7; + border-color: #bcdff1; +} +.elementor-alert.elementor-alert-success { + color: #3c763d; + background-color: #dff0d8; + border-color: #cae6be; +} +.elementor-alert.elementor-alert-warning { + color: #8a6d3b; + background-color: #fcf8e3; + border-color: #f9f0c3; +} +.elementor-alert.elementor-alert-danger { + color: #a94442; + background-color: #f2dede; + border-color: #e8c4c4; +} + +@media (max-width: ELEMENTOR_SCREEN_MOBILE_MAX) { + .elementor-alert { + padding: 10px; + } + .elementor-alert button.elementor-alert-dismiss { + right: 7px; + top: 7px; + } +} +.elementor-counter .elementor-counter-number-wrapper { + display: flex; + font-size: 69px; + font-weight: 600; + line-height: 1; +} +.elementor-counter .elementor-counter-number-prefix, .elementor-counter .elementor-counter-number-suffix { + flex-grow: 1; + white-space: pre-wrap; +} +.elementor-counter .elementor-counter-number-prefix { + text-align: left; +} +.elementor-counter .elementor-counter-number-suffix { + text-align: right; +} +.elementor-counter .elementor-counter-title { + text-align: center; + font-size: 19px; + font-weight: 400; + line-height: 2.5; +} + +.elementor-widget-divider { + --divider-border-style: none; + --divider-border-width: 1px; + --divider-color: #0C0D0E; + --divider-icon-size: 20px; + --divider-element-spacing: 10px; + --divider-pattern-height: 24px; + --divider-pattern-size: 20px; + --divider-pattern-url: none; + --divider-pattern-repeat: repeat-x; +} +.elementor-widget-divider .elementor-divider { + display: flex; +} +.elementor-widget-divider .elementor-divider__text { + font-size: 15px; + line-height: 1; + max-width: 95%; +} +.elementor-widget-divider .elementor-divider__element { + margin: 0 var(--divider-element-spacing); + flex-shrink: 0; +} +.elementor-widget-divider .elementor-icon { + font-size: var(--divider-icon-size); +} +.elementor-widget-divider .elementor-divider-separator { + display: flex; + margin: 0; + direction: ltr; +} +.elementor-widget-divider--view-line_text .elementor-divider-separator, .elementor-widget-divider--view-line_icon .elementor-divider-separator { + align-items: center; +} +.elementor-widget-divider--view-line_text .elementor-divider-separator:before, .elementor-widget-divider--view-line_text .elementor-divider-separator:after, .elementor-widget-divider--view-line_icon .elementor-divider-separator:before, .elementor-widget-divider--view-line_icon .elementor-divider-separator:after { + display: block; + content: ""; + border-block-end: 0; + flex-grow: 1; + border-block-start: var(--divider-border-width) var(--divider-border-style) var(--divider-color); +} +.elementor-widget-divider--element-align-left .elementor-divider .elementor-divider-separator > .elementor-divider__svg:first-of-type { + flex-grow: 0; + flex-shrink: 100; +} +.elementor-widget-divider--element-align-left .elementor-divider-separator:before { + content: none; +} +.elementor-widget-divider--element-align-left .elementor-divider__element { + margin-left: 0; +} +.elementor-widget-divider--element-align-right .elementor-divider .elementor-divider-separator > .elementor-divider__svg:last-of-type { + flex-grow: 0; + flex-shrink: 100; +} +.elementor-widget-divider--element-align-right .elementor-divider-separator:after { + content: none; +} +.elementor-widget-divider--element-align-right .elementor-divider__element { + margin-right: 0; +} +.elementor-widget-divider--element-align-start .elementor-divider .elementor-divider-separator > .elementor-divider__svg:first-of-type { + flex-grow: 0; + flex-shrink: 100; +} +.elementor-widget-divider--element-align-start .elementor-divider-separator:before { + content: none; +} +.elementor-widget-divider--element-align-start .elementor-divider__element { + margin-inline-start: 0; +} +.elementor-widget-divider--element-align-end .elementor-divider .elementor-divider-separator > .elementor-divider__svg:last-of-type { + flex-grow: 0; + flex-shrink: 100; +} +.elementor-widget-divider--element-align-end .elementor-divider-separator:after { + content: none; +} +.elementor-widget-divider--element-align-end .elementor-divider__element { + margin-inline-end: 0; +} +.elementor-widget-divider:not(.elementor-widget-divider--view-line_text):not(.elementor-widget-divider--view-line_icon) .elementor-divider-separator { + border-block-start: var(--divider-border-width) var(--divider-border-style) var(--divider-color); +} +.elementor-widget-divider--separator-type-pattern { + --divider-border-style: none; +} +.elementor-widget-divider--separator-type-pattern.elementor-widget-divider--view-line .elementor-divider-separator, .elementor-widget-divider--separator-type-pattern:not([class*=elementor-widget-divider--view]) .elementor-divider-separator, .elementor-widget-divider--separator-type-pattern:not(.elementor-widget-divider--view-line) .elementor-divider-separator:before, .elementor-widget-divider--separator-type-pattern:not(.elementor-widget-divider--view-line) .elementor-divider-separator:after { + width: 100%; + min-height: var(--divider-pattern-height); + -webkit-mask-size: var(--divider-pattern-size) 100%; + mask-size: var(--divider-pattern-size) 100%; + -webkit-mask-repeat: var(--divider-pattern-repeat); + mask-repeat: var(--divider-pattern-repeat); + background-color: var(--divider-color); + -webkit-mask-image: var(--divider-pattern-url); + mask-image: var(--divider-pattern-url); +} +.elementor-widget-divider--no-spacing { + --divider-pattern-size: auto; +} +.elementor-widget-divider--bg-round { + --divider-pattern-repeat: round; +} + +.rtl .elementor-widget-divider .elementor-divider__text { + direction: rtl; +} + +.e-con > .elementor-widget-divider, +.e-con-inner > .elementor-widget-divider { + width: var(--container-widget-width, 100%); + --flex-grow: var( --container-widget-flex-grow ); +} + +.elementor-image-gallery .gallery-item { + display: inline-block; + text-align: center; + vertical-align: top; + width: 100%; + max-width: 100%; + margin: 0 auto; +} +.elementor-image-gallery .gallery-item img { + margin: 0 auto; +} +.elementor-image-gallery .gallery-item .gallery-caption { + margin: 0; +} +.elementor-image-gallery figure img { + display: block; +} +.elementor-image-gallery figure figcaption { + width: 100%; +} +.gallery-spacing-custom .elementor-image-gallery .gallery-icon { + padding: 0; +} +@media (min-width: ELEMENTOR_SCREEN_MOBILE_NEXT) { + .elementor-image-gallery .gallery-columns-2 .gallery-item { + max-width: 50%; + } + .elementor-image-gallery .gallery-columns-3 .gallery-item { + max-width: 33.33%; + } + .elementor-image-gallery .gallery-columns-4 .gallery-item { + max-width: 25%; + } + .elementor-image-gallery .gallery-columns-5 .gallery-item { + max-width: 20%; + } + .elementor-image-gallery .gallery-columns-6 .gallery-item { + max-width: 16.666%; + } + .elementor-image-gallery .gallery-columns-7 .gallery-item { + max-width: 14.28%; + } + .elementor-image-gallery .gallery-columns-8 .gallery-item { + max-width: 12.5%; + } + .elementor-image-gallery .gallery-columns-9 .gallery-item { + max-width: 11.11%; + } + .elementor-image-gallery .gallery-columns-10 .gallery-item { + max-width: 10%; + } +} +@media (min-width: 480px) and (max-width: ELEMENTOR_SCREEN_MOBILE_MAX) { + .elementor-image-gallery .gallery.gallery-columns-2 .gallery-item, .elementor-image-gallery .gallery.gallery-columns-3 .gallery-item, .elementor-image-gallery .gallery.gallery-columns-4 .gallery-item, .elementor-image-gallery .gallery.gallery-columns-5 .gallery-item, .elementor-image-gallery .gallery.gallery-columns-6 .gallery-item, .elementor-image-gallery .gallery.gallery-columns-7 .gallery-item, .elementor-image-gallery .gallery.gallery-columns-8 .gallery-item, .elementor-image-gallery .gallery.gallery-columns-9 .gallery-item, .elementor-image-gallery .gallery.gallery-columns-10 .gallery-item { + max-width: 50%; + } +} +@media (max-width: 479px) { + .elementor-image-gallery .gallery.gallery-columns-2 .gallery-item, .elementor-image-gallery .gallery.gallery-columns-3 .gallery-item, .elementor-image-gallery .gallery.gallery-columns-4 .gallery-item, .elementor-image-gallery .gallery.gallery-columns-5 .gallery-item, .elementor-image-gallery .gallery.gallery-columns-6 .gallery-item, .elementor-image-gallery .gallery.gallery-columns-7 .gallery-item, .elementor-image-gallery .gallery.gallery-columns-8 .gallery-item, .elementor-image-gallery .gallery.gallery-columns-9 .gallery-item, .elementor-image-gallery .gallery.gallery-columns-10 .gallery-item { + max-width: 100%; + } +} + +.elementor-widget-google_maps .elementor-widget-container { + overflow: hidden; +} +.elementor-widget-google_maps .elementor-custom-embed { + line-height: 0; +} +.elementor-widget-google_maps iframe { + height: 300px; +} + +.elementor-heading-title { + padding: 0; + margin: 0; + line-height: 1; +} + +.elementor-widget-heading .elementor-heading-title[class*=elementor-size-] > a { + color: inherit; + font-size: inherit; + line-height: inherit; +} +.elementor-widget-heading .elementor-heading-title.elementor-size-small { + font-size: 15px; +} +.elementor-widget-heading .elementor-heading-title.elementor-size-medium { + font-size: 19px; +} +.elementor-widget-heading .elementor-heading-title.elementor-size-large { + font-size: 29px; +} +.elementor-widget-heading .elementor-heading-title.elementor-size-xl { + font-size: 39px; +} +.elementor-widget-heading .elementor-heading-title.elementor-size-xxl { + font-size: 59px; +} + +.elementor-widget-icon-box .elementor-icon-box-wrapper { + display: block; + text-align: center; +} +.elementor-widget-icon-box .elementor-icon-box-icon { + margin-bottom: var(--icon-box-icon-margin, 15px); + margin-right: auto; + margin-left: auto; +} +@media (min-width: ELEMENTOR_SCREEN_MOBILE_NEXT) { + .elementor-widget-icon-box.elementor-vertical-align-top .elementor-icon-box-wrapper { + align-items: flex-start; + } + .elementor-widget-icon-box.elementor-vertical-align-middle .elementor-icon-box-wrapper { + align-items: center; + } + .elementor-widget-icon-box.elementor-vertical-align-bottom .elementor-icon-box-wrapper { + align-items: flex-end; + } +} +.elementor-widget-icon-box.elementor-position-left .elementor-icon-box-wrapper, .elementor-widget-icon-box.elementor-position-right .elementor-icon-box-wrapper { + display: flex; +} +.elementor-widget-icon-box.elementor-position-left .elementor-icon-box-icon, .elementor-widget-icon-box.elementor-position-right .elementor-icon-box-icon { + display: inline-flex; + flex: 0 0 auto; +} +.elementor-widget-icon-box.elementor-position-right .elementor-icon-box-wrapper { + text-align: left; + flex-direction: row; +} +.elementor-widget-icon-box.elementor-position-right .elementor-icon-box-icon { + margin-left: var(--icon-box-icon-margin, 15px); + margin-right: 0; + margin-bottom: unset; +} +.elementor-widget-icon-box.elementor-position-left .elementor-icon-box-wrapper { + text-align: right; + flex-direction: row-reverse; +} +.elementor-widget-icon-box.elementor-position-left .elementor-icon-box-icon { + margin-right: var(--icon-box-icon-margin, 15px); + margin-left: 0; + margin-bottom: unset; +} +.elementor-widget-icon-box.elementor-position-top .elementor-icon-box-wrapper { + display: block; + text-align: center; + flex-direction: unset; +} +.elementor-widget-icon-box.elementor-position-top .elementor-icon-box-icon { + margin-bottom: var(--icon-box-icon-margin, 15px); + margin-right: auto; + margin-left: auto; +} +@media (min-width: ELEMENTOR_SCREEN_WIDESCREEN_MIN) { + .elementor-widget-icon-box.elementor-widescreen-position-left .elementor-icon-box-wrapper, .elementor-widget-icon-box.elementor-widescreen-position-right .elementor-icon-box-wrapper { + display: flex; + } + .elementor-widget-icon-box.elementor-widescreen-position-left .elementor-icon-box-icon, .elementor-widget-icon-box.elementor-widescreen-position-right .elementor-icon-box-icon { + display: inline-flex; + flex: 0 0 auto; + } + .elementor-widget-icon-box.elementor-widescreen-position-right .elementor-icon-box-wrapper { + text-align: left; + flex-direction: row; + } + .elementor-widget-icon-box.elementor-widescreen-position-right .elementor-icon-box-icon { + margin-left: var(--icon-box-icon-margin, 15px); + margin-right: 0; + margin-bottom: unset; + } + .elementor-widget-icon-box.elementor-widescreen-position-left .elementor-icon-box-wrapper { + text-align: right; + flex-direction: row-reverse; + } + .elementor-widget-icon-box.elementor-widescreen-position-left .elementor-icon-box-icon { + margin-right: var(--icon-box-icon-margin, 15px); + margin-left: 0; + margin-bottom: unset; + } + .elementor-widget-icon-box.elementor-widescreen-position-top .elementor-icon-box-wrapper { + display: block; + text-align: center; + flex-direction: unset; + } + .elementor-widget-icon-box.elementor-widescreen-position-top .elementor-icon-box-icon { + margin-bottom: var(--icon-box-icon-margin, 15px); + margin-right: auto; + margin-left: auto; + } +} +@media (max-width: ELEMENTOR_SCREEN_LAPTOP_MAX) { + .elementor-widget-icon-box.elementor-laptop-position-left .elementor-icon-box-wrapper, .elementor-widget-icon-box.elementor-laptop-position-right .elementor-icon-box-wrapper { + display: flex; + } + .elementor-widget-icon-box.elementor-laptop-position-left .elementor-icon-box-icon, .elementor-widget-icon-box.elementor-laptop-position-right .elementor-icon-box-icon { + display: inline-flex; + flex: 0 0 auto; + } + .elementor-widget-icon-box.elementor-laptop-position-right .elementor-icon-box-wrapper { + text-align: left; + flex-direction: row; + } + .elementor-widget-icon-box.elementor-laptop-position-right .elementor-icon-box-icon { + margin-left: var(--icon-box-icon-margin, 15px); + margin-right: 0; + margin-bottom: unset; + } + .elementor-widget-icon-box.elementor-laptop-position-left .elementor-icon-box-wrapper { + text-align: right; + flex-direction: row-reverse; + } + .elementor-widget-icon-box.elementor-laptop-position-left .elementor-icon-box-icon { + margin-right: var(--icon-box-icon-margin, 15px); + margin-left: 0; + margin-bottom: unset; + } + .elementor-widget-icon-box.elementor-laptop-position-top .elementor-icon-box-wrapper { + display: block; + text-align: center; + flex-direction: unset; + } + .elementor-widget-icon-box.elementor-laptop-position-top .elementor-icon-box-icon { + margin-bottom: var(--icon-box-icon-margin, 15px); + margin-right: auto; + margin-left: auto; + } +} +@media (max-width: ELEMENTOR_SCREEN_TABLET_EXTRA_MAX) { + .elementor-widget-icon-box.elementor-tablet_extra-position-left .elementor-icon-box-wrapper, .elementor-widget-icon-box.elementor-tablet_extra-position-right .elementor-icon-box-wrapper { + display: flex; + } + .elementor-widget-icon-box.elementor-tablet_extra-position-left .elementor-icon-box-icon, .elementor-widget-icon-box.elementor-tablet_extra-position-right .elementor-icon-box-icon { + display: inline-flex; + flex: 0 0 auto; + } + .elementor-widget-icon-box.elementor-tablet_extra-position-right .elementor-icon-box-wrapper { + text-align: left; + flex-direction: row; + } + .elementor-widget-icon-box.elementor-tablet_extra-position-right .elementor-icon-box-icon { + margin-left: var(--icon-box-icon-margin, 15px); + margin-right: 0; + margin-bottom: unset; + } + .elementor-widget-icon-box.elementor-tablet_extra-position-left .elementor-icon-box-wrapper { + text-align: right; + flex-direction: row-reverse; + } + .elementor-widget-icon-box.elementor-tablet_extra-position-left .elementor-icon-box-icon { + margin-right: var(--icon-box-icon-margin, 15px); + margin-left: 0; + margin-bottom: unset; + } + .elementor-widget-icon-box.elementor-tablet_extra-position-top .elementor-icon-box-wrapper { + display: block; + text-align: center; + flex-direction: unset; + } + .elementor-widget-icon-box.elementor-tablet_extra-position-top .elementor-icon-box-icon { + margin-bottom: var(--icon-box-icon-margin, 15px); + margin-right: auto; + margin-left: auto; + } +} +@media (max-width: ELEMENTOR_SCREEN_TABLET_MAX) { + .elementor-widget-icon-box.elementor-tablet-position-left .elementor-icon-box-wrapper, .elementor-widget-icon-box.elementor-tablet-position-right .elementor-icon-box-wrapper { + display: flex; + } + .elementor-widget-icon-box.elementor-tablet-position-left .elementor-icon-box-icon, .elementor-widget-icon-box.elementor-tablet-position-right .elementor-icon-box-icon { + display: inline-flex; + flex: 0 0 auto; + } + .elementor-widget-icon-box.elementor-tablet-position-right .elementor-icon-box-wrapper { + text-align: left; + flex-direction: row; + } + .elementor-widget-icon-box.elementor-tablet-position-right .elementor-icon-box-icon { + margin-left: var(--icon-box-icon-margin, 15px); + margin-right: 0; + margin-bottom: unset; + } + .elementor-widget-icon-box.elementor-tablet-position-left .elementor-icon-box-wrapper { + text-align: right; + flex-direction: row-reverse; + } + .elementor-widget-icon-box.elementor-tablet-position-left .elementor-icon-box-icon { + margin-right: var(--icon-box-icon-margin, 15px); + margin-left: 0; + margin-bottom: unset; + } + .elementor-widget-icon-box.elementor-tablet-position-top .elementor-icon-box-wrapper { + display: block; + text-align: center; + flex-direction: unset; + } + .elementor-widget-icon-box.elementor-tablet-position-top .elementor-icon-box-icon { + margin-bottom: var(--icon-box-icon-margin, 15px); + margin-right: auto; + margin-left: auto; + } +} +@media (max-width: ELEMENTOR_SCREEN_MOBILE_EXTRA_MAX) { + .elementor-widget-icon-box.elementor-mobile_extra-position-left .elementor-icon-box-wrapper, .elementor-widget-icon-box.elementor-mobile_extra-position-right .elementor-icon-box-wrapper { + display: flex; + } + .elementor-widget-icon-box.elementor-mobile_extra-position-left .elementor-icon-box-icon, .elementor-widget-icon-box.elementor-mobile_extra-position-right .elementor-icon-box-icon { + display: inline-flex; + flex: 0 0 auto; + } + .elementor-widget-icon-box.elementor-mobile_extra-position-right .elementor-icon-box-wrapper { + text-align: left; + flex-direction: row; + } + .elementor-widget-icon-box.elementor-mobile_extra-position-right .elementor-icon-box-icon { + margin-left: var(--icon-box-icon-margin, 15px); + margin-right: 0; + margin-bottom: unset; + } + .elementor-widget-icon-box.elementor-mobile_extra-position-left .elementor-icon-box-wrapper { + text-align: right; + flex-direction: row-reverse; + } + .elementor-widget-icon-box.elementor-mobile_extra-position-left .elementor-icon-box-icon { + margin-right: var(--icon-box-icon-margin, 15px); + margin-left: 0; + margin-bottom: unset; + } + .elementor-widget-icon-box.elementor-mobile_extra-position-top .elementor-icon-box-wrapper { + display: block; + text-align: center; + flex-direction: unset; + } + .elementor-widget-icon-box.elementor-mobile_extra-position-top .elementor-icon-box-icon { + margin-bottom: var(--icon-box-icon-margin, 15px); + margin-right: auto; + margin-left: auto; + } +} +@media (max-width: ELEMENTOR_SCREEN_MOBILE_MAX) { + .elementor-widget-icon-box.elementor-mobile-position-left .elementor-icon-box-wrapper, .elementor-widget-icon-box.elementor-mobile-position-right .elementor-icon-box-wrapper { + display: flex; + } + .elementor-widget-icon-box.elementor-mobile-position-left .elementor-icon-box-icon, .elementor-widget-icon-box.elementor-mobile-position-right .elementor-icon-box-icon { + display: inline-flex; + flex: 0 0 auto; + } + .elementor-widget-icon-box.elementor-mobile-position-right .elementor-icon-box-wrapper { + text-align: left; + flex-direction: row; + } + .elementor-widget-icon-box.elementor-mobile-position-right .elementor-icon-box-icon { + margin-left: var(--icon-box-icon-margin, 15px); + margin-right: 0; + margin-bottom: unset; + } + .elementor-widget-icon-box.elementor-mobile-position-left .elementor-icon-box-wrapper { + text-align: right; + flex-direction: row-reverse; + } + .elementor-widget-icon-box.elementor-mobile-position-left .elementor-icon-box-icon { + margin-right: var(--icon-box-icon-margin, 15px); + margin-left: 0; + margin-bottom: unset; + } + .elementor-widget-icon-box.elementor-mobile-position-top .elementor-icon-box-wrapper { + display: block; + text-align: center; + flex-direction: unset; + } + .elementor-widget-icon-box.elementor-mobile-position-top .elementor-icon-box-icon { + margin-bottom: var(--icon-box-icon-margin, 15px); + margin-right: auto; + margin-left: auto; + } + .elementor-widget-icon-box.elementor-position-left .elementor-icon-box-icon, .elementor-widget-icon-box.elementor-position-right .elementor-icon-box-icon { + display: block; + flex: unset; + } +} +.elementor-widget-icon-box .elementor-icon-box-title a { + color: inherit; +} +.elementor-widget-icon-box .elementor-icon-box-content { + flex-grow: 1; +} +.elementor-widget-icon-box .elementor-icon-box-description { + margin: 0; +} + +.elementor-widget.elementor-icon-list--layout-inline .elementor-widget-container { + overflow: hidden; +} +.elementor-widget .elementor-icon-list-items.elementor-inline-items { + margin-right: -8px; + margin-left: -8px; +} +.elementor-widget .elementor-icon-list-items.elementor-inline-items .elementor-icon-list-item { + margin-right: 8px; + margin-left: 8px; +} +.elementor-widget .elementor-icon-list-items.elementor-inline-items .elementor-icon-list-item:after { + width: auto; + left: auto; + right: auto; + position: relative; + height: 100%; + border-top: 0; + border-bottom: 0; + border-right: 0; + border-left-width: 1px; + border-style: solid; + left: -8px; +} +.elementor-widget .elementor-icon-list-items { + list-style-type: none; + margin: 0; + padding: 0; +} +.elementor-widget .elementor-icon-list-item { + margin: 0; + padding: 0; + position: relative; +} +.elementor-widget .elementor-icon-list-item:after { + position: absolute; + bottom: 0; + width: 100%; +} +.elementor-widget .elementor-icon-list-item, .elementor-widget .elementor-icon-list-item a { + display: flex; + font-size: inherit; + align-items: var(--icon-vertical-align, center); +} +.elementor-widget .elementor-icon-list-icon + .elementor-icon-list-text { + align-self: center; + padding-right: 5px; +} +.elementor-widget .elementor-icon-list-icon { + display: flex; + position: relative; + top: var(--icon-vertical-offset, initial); +} +.elementor-widget .elementor-icon-list-icon svg { + width: var(--e-icon-list-icon-size, 1em); + height: var(--e-icon-list-icon-size, 1em); +} +.elementor-widget .elementor-icon-list-icon i { + width: 1.25em; + font-size: var(--e-icon-list-icon-size); +} +.elementor-widget.elementor-widget-icon-list .elementor-icon-list-icon { + text-align: var(--e-icon-list-icon-align); +} +.elementor-widget.elementor-widget-icon-list .elementor-icon-list-icon svg { + margin: var(--e-icon-list-icon-margin, 0 calc(var(--e-icon-list-icon-size, 1em) * 0.25) 0 0); +} +.elementor-widget.elementor-list-item-link-full_width a { + width: 100%; +} +.elementor-widget.elementor-align-center .elementor-icon-list-item, .elementor-widget.elementor-align-center .elementor-icon-list-item a { + justify-content: center; +} +.elementor-widget.elementor-align-center .elementor-icon-list-item:after { + margin: auto; +} +.elementor-widget.elementor-align-center .elementor-inline-items { + justify-content: center; +} +.elementor-widget.elementor-align-left .elementor-icon-list-item, .elementor-widget.elementor-align-left .elementor-icon-list-item a { + justify-content: flex-end; + text-align: left; +} +.elementor-widget.elementor-align-left .elementor-inline-items { + justify-content: flex-end; +} +.elementor-widget.elementor-align-right .elementor-icon-list-item, .elementor-widget.elementor-align-right .elementor-icon-list-item a { + justify-content: flex-start; + text-align: right; +} +.elementor-widget.elementor-align-right .elementor-icon-list-items { + justify-content: flex-start; +} +.elementor-widget:not(.elementor-align-right) .elementor-icon-list-item:after { + right: 0; +} +.elementor-widget:not(.elementor-align-left) .elementor-icon-list-item:after { + left: 0; +} +@media (min-width: ELEMENTOR_SCREEN_WIDESCREEN_MIN) { + .elementor-widget.elementor-widescreen-align-center .elementor-icon-list-item, .elementor-widget.elementor-widescreen-align-center .elementor-icon-list-item a { + justify-content: center; + } + .elementor-widget.elementor-widescreen-align-center .elementor-icon-list-item:after { + margin: auto; + } + .elementor-widget.elementor-widescreen-align-center .elementor-inline-items { + justify-content: center; + } + .elementor-widget.elementor-widescreen-align-left .elementor-icon-list-item, .elementor-widget.elementor-widescreen-align-left .elementor-icon-list-item a { + justify-content: flex-end; + text-align: left; + } + .elementor-widget.elementor-widescreen-align-left .elementor-inline-items { + justify-content: flex-end; + } + .elementor-widget.elementor-widescreen-align-right .elementor-icon-list-item, .elementor-widget.elementor-widescreen-align-right .elementor-icon-list-item a { + justify-content: flex-start; + text-align: right; + } + .elementor-widget.elementor-widescreen-align-right .elementor-icon-list-items { + justify-content: flex-start; + } + .elementor-widget:not(.elementor-widescreen-align-right) .elementor-icon-list-item:after { + right: 0; + } + .elementor-widget:not(.elementor-widescreen-align-left) .elementor-icon-list-item:after { + left: 0; + } +} +@media (max-width: ELEMENTOR_SCREEN_LAPTOP_MAX) { + .elementor-widget.elementor-laptop-align-center .elementor-icon-list-item, .elementor-widget.elementor-laptop-align-center .elementor-icon-list-item a { + justify-content: center; + } + .elementor-widget.elementor-laptop-align-center .elementor-icon-list-item:after { + margin: auto; + } + .elementor-widget.elementor-laptop-align-center .elementor-inline-items { + justify-content: center; + } + .elementor-widget.elementor-laptop-align-left .elementor-icon-list-item, .elementor-widget.elementor-laptop-align-left .elementor-icon-list-item a { + justify-content: flex-end; + text-align: left; + } + .elementor-widget.elementor-laptop-align-left .elementor-inline-items { + justify-content: flex-end; + } + .elementor-widget.elementor-laptop-align-right .elementor-icon-list-item, .elementor-widget.elementor-laptop-align-right .elementor-icon-list-item a { + justify-content: flex-start; + text-align: right; + } + .elementor-widget.elementor-laptop-align-right .elementor-icon-list-items { + justify-content: flex-start; + } + .elementor-widget:not(.elementor-laptop-align-right) .elementor-icon-list-item:after { + right: 0; + } + .elementor-widget:not(.elementor-laptop-align-left) .elementor-icon-list-item:after { + left: 0; + } +} +@media (max-width: ELEMENTOR_SCREEN_TABLET_EXTRA_MAX) { + .elementor-widget.elementor-tablet_extra-align-center .elementor-icon-list-item, .elementor-widget.elementor-tablet_extra-align-center .elementor-icon-list-item a { + justify-content: center; + } + .elementor-widget.elementor-tablet_extra-align-center .elementor-icon-list-item:after { + margin: auto; + } + .elementor-widget.elementor-tablet_extra-align-center .elementor-inline-items { + justify-content: center; + } + .elementor-widget.elementor-tablet_extra-align-left .elementor-icon-list-item, .elementor-widget.elementor-tablet_extra-align-left .elementor-icon-list-item a { + justify-content: flex-end; + text-align: left; + } + .elementor-widget.elementor-tablet_extra-align-left .elementor-inline-items { + justify-content: flex-end; + } + .elementor-widget.elementor-tablet_extra-align-right .elementor-icon-list-item, .elementor-widget.elementor-tablet_extra-align-right .elementor-icon-list-item a { + justify-content: flex-start; + text-align: right; + } + .elementor-widget.elementor-tablet_extra-align-right .elementor-icon-list-items { + justify-content: flex-start; + } + .elementor-widget:not(.elementor-tablet_extra-align-right) .elementor-icon-list-item:after { + right: 0; + } + .elementor-widget:not(.elementor-tablet_extra-align-left) .elementor-icon-list-item:after { + left: 0; + } +} +@media (max-width: ELEMENTOR_SCREEN_TABLET_MAX) { + .elementor-widget.elementor-tablet-align-center .elementor-icon-list-item, .elementor-widget.elementor-tablet-align-center .elementor-icon-list-item a { + justify-content: center; + } + .elementor-widget.elementor-tablet-align-center .elementor-icon-list-item:after { + margin: auto; + } + .elementor-widget.elementor-tablet-align-center .elementor-inline-items { + justify-content: center; + } + .elementor-widget.elementor-tablet-align-left .elementor-icon-list-item, .elementor-widget.elementor-tablet-align-left .elementor-icon-list-item a { + justify-content: flex-end; + text-align: left; + } + .elementor-widget.elementor-tablet-align-left .elementor-inline-items { + justify-content: flex-end; + } + .elementor-widget.elementor-tablet-align-right .elementor-icon-list-item, .elementor-widget.elementor-tablet-align-right .elementor-icon-list-item a { + justify-content: flex-start; + text-align: right; + } + .elementor-widget.elementor-tablet-align-right .elementor-icon-list-items { + justify-content: flex-start; + } + .elementor-widget:not(.elementor-tablet-align-right) .elementor-icon-list-item:after { + right: 0; + } + .elementor-widget:not(.elementor-tablet-align-left) .elementor-icon-list-item:after { + left: 0; + } +} +@media (max-width: ELEMENTOR_SCREEN_MOBILE_EXTRA_MAX) { + .elementor-widget.elementor-mobile_extra-align-center .elementor-icon-list-item, .elementor-widget.elementor-mobile_extra-align-center .elementor-icon-list-item a { + justify-content: center; + } + .elementor-widget.elementor-mobile_extra-align-center .elementor-icon-list-item:after { + margin: auto; + } + .elementor-widget.elementor-mobile_extra-align-center .elementor-inline-items { + justify-content: center; + } + .elementor-widget.elementor-mobile_extra-align-left .elementor-icon-list-item, .elementor-widget.elementor-mobile_extra-align-left .elementor-icon-list-item a { + justify-content: flex-end; + text-align: left; + } + .elementor-widget.elementor-mobile_extra-align-left .elementor-inline-items { + justify-content: flex-end; + } + .elementor-widget.elementor-mobile_extra-align-right .elementor-icon-list-item, .elementor-widget.elementor-mobile_extra-align-right .elementor-icon-list-item a { + justify-content: flex-start; + text-align: right; + } + .elementor-widget.elementor-mobile_extra-align-right .elementor-icon-list-items { + justify-content: flex-start; + } + .elementor-widget:not(.elementor-mobile_extra-align-right) .elementor-icon-list-item:after { + right: 0; + } + .elementor-widget:not(.elementor-mobile_extra-align-left) .elementor-icon-list-item:after { + left: 0; + } +} +@media (max-width: ELEMENTOR_SCREEN_MOBILE_MAX) { + .elementor-widget.elementor-mobile-align-center .elementor-icon-list-item, .elementor-widget.elementor-mobile-align-center .elementor-icon-list-item a { + justify-content: center; + } + .elementor-widget.elementor-mobile-align-center .elementor-icon-list-item:after { + margin: auto; + } + .elementor-widget.elementor-mobile-align-center .elementor-inline-items { + justify-content: center; + } + .elementor-widget.elementor-mobile-align-left .elementor-icon-list-item, .elementor-widget.elementor-mobile-align-left .elementor-icon-list-item a { + justify-content: flex-end; + text-align: left; + } + .elementor-widget.elementor-mobile-align-left .elementor-inline-items { + justify-content: flex-end; + } + .elementor-widget.elementor-mobile-align-right .elementor-icon-list-item, .elementor-widget.elementor-mobile-align-right .elementor-icon-list-item a { + justify-content: flex-start; + text-align: right; + } + .elementor-widget.elementor-mobile-align-right .elementor-icon-list-items { + justify-content: flex-start; + } + .elementor-widget:not(.elementor-mobile-align-right) .elementor-icon-list-item:after { + right: 0; + } + .elementor-widget:not(.elementor-mobile-align-left) .elementor-icon-list-item:after { + left: 0; + } +} + +.elementor-widget-image { + text-align: center; +} +.elementor-widget-image a { + display: inline-block; +} +.elementor-widget-image a img[src$=".svg"] { + width: 48px; +} +.elementor-widget-image img { + vertical-align: middle; + display: inline-block; +} + +.elementor-widget-image-box .elementor-image-box-content { + width: 100%; +} +@media (min-width: ELEMENTOR_SCREEN_MOBILE_NEXT) { + .elementor-widget-image-box.elementor-position-left .elementor-image-box-wrapper, .elementor-widget-image-box.elementor-position-right .elementor-image-box-wrapper { + display: flex; + } + .elementor-widget-image-box.elementor-position-right .elementor-image-box-wrapper { + text-align: left; + flex-direction: row; + } + .elementor-widget-image-box.elementor-position-left .elementor-image-box-wrapper { + text-align: right; + flex-direction: row-reverse; + } + .elementor-widget-image-box.elementor-position-top .elementor-image-box-img { + margin: auto; + } + .elementor-widget-image-box.elementor-vertical-align-top .elementor-image-box-wrapper { + align-items: flex-start; + } + .elementor-widget-image-box.elementor-vertical-align-middle .elementor-image-box-wrapper { + align-items: center; + } + .elementor-widget-image-box.elementor-vertical-align-bottom .elementor-image-box-wrapper { + align-items: flex-end; + } +} +@media (max-width: ELEMENTOR_SCREEN_MOBILE_MAX) { + .elementor-widget-image-box .elementor-image-box-img { + margin-left: auto !important; + margin-right: auto !important; + margin-bottom: 15px; + } +} +.elementor-widget-image-box .elementor-image-box-img { + display: inline-block; +} +.elementor-widget-image-box .elementor-image-box-title a { + color: inherit; +} +.elementor-widget-image-box .elementor-image-box-wrapper { + text-align: center; +} +.elementor-widget-image-box .elementor-image-box-description { + margin: 0; +} + +.elementor-widget-image-carousel .swiper-container, +.elementor-widget-image-carousel .swiper { + position: static; +} +.elementor-widget-image-carousel .swiper-container .swiper-slide figure, +.elementor-widget-image-carousel .swiper .swiper-slide figure { + line-height: inherit; +} +.elementor-widget-image-carousel .swiper-slide { + text-align: center; +} + +.elementor-image-carousel-wrapper:not(.swiper-container-initialized):not(.swiper-initialized) .swiper-slide { + max-width: calc(100% / var(--e-image-carousel-slides-to-show, 3)); +} + +body.elementor-page .elementor-widget-menu-anchor { + margin-bottom: 0; +} + +.elementor-widget-progress { + text-align: right; +} + +.elementor-progress-wrapper { + position: relative; + background-color: #eeeeee; + color: #ffffff; + height: 100%; + border-radius: 2px; +} + +.elementor-progress-bar { + display: flex; + background-color: #69727D; + width: 0; + font-size: 11px; + height: 30px; + line-height: 30px; + border-radius: 2px; + transition: width 1s ease-in-out; +} + +.elementor-progress-text { + flex-grow: 1; + white-space: nowrap; + text-overflow: ellipsis; + overflow: hidden; + padding-right: 15px; +} + +.elementor-progress-percentage { + padding-left: 15px; +} + +.elementor-widget-progress .elementor-progress-wrapper.progress-info .elementor-progress-bar { + background-color: #5bc0de; +} +.elementor-widget-progress .elementor-progress-wrapper.progress-success .elementor-progress-bar { + background-color: #5cb85c; +} +.elementor-widget-progress .elementor-progress-wrapper.progress-warning .elementor-progress-bar { + background-color: #f0ad4e; +} +.elementor-widget-progress .elementor-progress-wrapper.progress-danger .elementor-progress-bar { + background-color: #d9534f; +} + +.elementor-progress .elementor-title { + display: block; +} + +@media (max-width: ELEMENTOR_SCREEN_MOBILE_MAX) { + .elementor-progress-text { + padding-right: 10px; + } +} +.e-con .elementor-progress-wrapper, +.e-con-inner .elementor-progress-wrapper { + height: initial; +} + +.elementor-widget-social-icons { + /*TODO: This Grid-0 needs to be removed after PRO is Updated */ +} +.elementor-widget-social-icons.elementor-grid-0 .elementor-widget-container, .elementor-widget-social-icons.elementor-grid-tablet-0 .elementor-widget-container, .elementor-widget-social-icons.elementor-grid-mobile-0 .elementor-widget-container { + line-height: 1; + font-size: 0; +} +.elementor-widget-social-icons:not(.elementor-grid-0):not(.elementor-grid-tablet-0):not(.elementor-grid-mobile-0) .elementor-grid { + display: inline-grid; +} +.elementor-widget-social-icons .elementor-grid { + grid-column-gap: var(--grid-column-gap, 5px); + grid-row-gap: var(--grid-row-gap, 5px); + grid-template-columns: var(--grid-template-columns); + justify-content: var(--justify-content, center); + justify-items: var(--justify-content, center); +} + +.elementor-icon.elementor-social-icon { + font-size: var(--icon-size, 25px); + line-height: var(--icon-size, 25px); + width: calc(var(--icon-size, 25px) + 2 * var(--icon-padding, 0.5em)); + height: calc(var(--icon-size, 25px) + 2 * var(--icon-padding, 0.5em)); +} + +.elementor-social-icon { + --e-social-icon-icon-color: #fff; + display: inline-flex; + background-color: #69727D; + align-items: center; + justify-content: center; + text-align: center; + cursor: pointer; +} +.elementor-social-icon i { + color: var(--e-social-icon-icon-color); +} +.elementor-social-icon svg { + fill: var(--e-social-icon-icon-color); +} +.elementor-social-icon:last-child { + margin: 0; +} +.elementor-social-icon:hover { + opacity: 0.9; + color: white; +} +.elementor-social-icon-android { + background-color: #A4C639; +} +.elementor-social-icon-apple { + background-color: #999999; +} +.elementor-social-icon-behance { + background-color: #1769ff; +} +.elementor-social-icon-bitbucket { + background-color: #205081; +} +.elementor-social-icon-codepen { + background-color: #000000; +} +.elementor-social-icon-delicious { + background-color: #3399ff; +} +.elementor-social-icon-deviantart { + background-color: #05cc47; +} +.elementor-social-icon-digg { + background-color: #005be2; +} +.elementor-social-icon-dribbble { + background-color: #ea4c89; +} +.elementor-social-icon-elementor { + background-color: #D30C5C; +} +.elementor-social-icon-envelope { + background-color: #ea4335; +} +.elementor-social-icon-facebook, .elementor-social-icon-facebook-f { + background-color: #3b5998; +} +.elementor-social-icon-flickr { + background-color: #0063dc; +} +.elementor-social-icon-foursquare { + background-color: #2d5be3; +} +.elementor-social-icon-freecodecamp, .elementor-social-icon-free-code-camp { + background-color: #006400; +} +.elementor-social-icon-github { + background-color: #333333; +} +.elementor-social-icon-gitlab { + background-color: #e24329; +} +.elementor-social-icon-globe { + background-color: #69727D; +} +.elementor-social-icon-google-plus, .elementor-social-icon-google-plus-g { + background-color: #dd4b39; +} +.elementor-social-icon-houzz { + background-color: #7ac142; +} +.elementor-social-icon-instagram { + background-color: #262626; +} +.elementor-social-icon-jsfiddle { + background-color: #487AA2; +} +.elementor-social-icon-link { + background-color: #818a91; +} +.elementor-social-icon-linkedin, .elementor-social-icon-linkedin-in { + background-color: #0077b5; +} +.elementor-social-icon-medium { + background-color: #00ab6b; +} +.elementor-social-icon-meetup { + background-color: #ec1c40; +} +.elementor-social-icon-mixcloud { + background-color: #273a4b; +} +.elementor-social-icon-odnoklassniki { + background-color: #F4731C; +} +.elementor-social-icon-pinterest { + background-color: #bd081c; +} +.elementor-social-icon-product-hunt { + background-color: #da552f; +} +.elementor-social-icon-reddit { + background-color: #ff4500; +} +.elementor-social-icon-rss { + background-color: #f26522; +} +.elementor-social-icon-shopping-cart { + background-color: #4CAF50; +} +.elementor-social-icon-skype { + background-color: #00AFF0; +} +.elementor-social-icon-slideshare { + background-color: #0077b5; +} +.elementor-social-icon-snapchat { + background-color: #fffc00; +} +.elementor-social-icon-soundcloud { + background-color: #ff8800; +} +.elementor-social-icon-spotify { + background-color: #2ebd59; +} +.elementor-social-icon-stack-overflow { + background-color: #fe7a15; +} +.elementor-social-icon-steam { + background-color: #00adee; +} +.elementor-social-icon-stumbleupon { + background-color: #EB4924; +} +.elementor-social-icon-telegram { + background-color: #2CA5E0; +} +.elementor-social-icon-threads { + background-color: #000000; +} +.elementor-social-icon-thumb-tack { + background-color: #1aa1d8; +} +.elementor-social-icon-tripadvisor { + background-color: #589442; +} +.elementor-social-icon-tumblr { + background-color: #35465c; +} +.elementor-social-icon-twitch { + background-color: #6441A5; +} +.elementor-social-icon-twitter { + background-color: #1DA1F2; +} +.elementor-social-icon-viber { + background-color: #665cac; +} +.elementor-social-icon-vimeo { + background-color: #1ab7ea; +} +.elementor-social-icon-vk { + background-color: #45668e; +} +.elementor-social-icon-weibo { + background-color: #DD2430; +} +.elementor-social-icon-weixin { + background-color: #31A918; +} +.elementor-social-icon-whatsapp { + background-color: #25d366; +} +.elementor-social-icon-wordpress { + background-color: #21759b; +} +.elementor-social-icon-x-twitter { + background-color: #000000; +} +.elementor-social-icon-xing { + background-color: #026466; +} +.elementor-social-icon-yelp { + background-color: #af0606; +} +.elementor-social-icon-youtube { + background-color: #cd201f; +} +.elementor-social-icon-500px { + background-color: #0099e5; +} + +.elementor-shape-rounded .elementor-icon.elementor-social-icon { + border-radius: 10%; +} + +.elementor-shape-circle .elementor-icon.elementor-social-icon { + border-radius: 50%; +} + +.elementor-column .elementor-spacer-inner { + height: var(--spacer-size); +} + +.e-con { + --container-widget-width: 100%; +} + +.e-con > .elementor-widget-spacer, +.e-con-inner > .elementor-widget-spacer { + width: var(--container-widget-width, var(--spacer-size)); + --align-self: var( --container-widget-align-self, initial ); + --flex-shrink: 0; +} +.e-con > .elementor-widget-spacer > .elementor-widget-container, +.e-con-inner > .elementor-widget-spacer > .elementor-widget-container { + height: 100%; + width: 100%; +} +.e-con > .elementor-widget-spacer > .elementor-widget-container > .elementor-spacer, +.e-con-inner > .elementor-widget-spacer > .elementor-widget-container > .elementor-spacer { + height: 100%; +} +.e-con > .elementor-widget-spacer > .elementor-widget-container > .elementor-spacer > .elementor-spacer-inner, +.e-con-inner > .elementor-widget-spacer > .elementor-widget-container > .elementor-spacer > .elementor-spacer-inner { + height: var(--container-widget-height, var(--spacer-size)); +} +.e-con > .elementor-widget-spacer.elementor-widget-empty, +.e-con-inner > .elementor-widget-spacer.elementor-widget-empty { + position: relative; + min-height: 22px; + min-width: 22px; +} +.e-con > .elementor-widget-spacer.elementor-widget-empty .elementor-widget-empty-icon, +.e-con-inner > .elementor-widget-spacer.elementor-widget-empty .elementor-widget-empty-icon { + position: absolute; + top: 0; + bottom: 0; + left: 0; + right: 0; + margin: auto; + padding: 0; + width: 22px; + height: 22px; +} + +.elementor-star-rating { + color: #CCD6DF; + font-family: eicons; + display: inline-block; +} +.elementor-star-rating i { + display: inline-block; + position: relative; + font-style: normal; + cursor: default; +} +.elementor-star-rating i:before { + content: "\e934"; + display: block; + font-size: inherit; + font-family: inherit; + position: absolute; + overflow: hidden; + color: #f0ad4e; + top: 0; + right: 0; +} +.elementor-star-rating .elementor-star-empty:before { + content: none; +} +.elementor-star-rating .elementor-star-1:before { + width: 10%; +} +.elementor-star-rating .elementor-star-2:before { + width: 20%; +} +.elementor-star-rating .elementor-star-3:before { + width: 30%; +} +.elementor-star-rating .elementor-star-4:before { + width: 40%; +} +.elementor-star-rating .elementor-star-5:before { + width: 50%; +} +.elementor-star-rating .elementor-star-6:before { + width: 60%; +} +.elementor-star-rating .elementor-star-7:before { + width: 70%; +} +.elementor-star-rating .elementor-star-8:before { + width: 80%; +} +.elementor-star-rating .elementor-star-9:before { + width: 90%; +} +.elementor-star-rating__wrapper { + display: flex; + align-items: center; +} +.elementor-star-rating__title { + margin-left: 10px; +} + +.elementor-star-rating--align-right .elementor-star-rating__wrapper { + text-align: right; + justify-content: flex-start; +} +.elementor-star-rating--align-left .elementor-star-rating__wrapper { + text-align: left; + justify-content: flex-end; +} +.elementor-star-rating--align-center .elementor-star-rating__wrapper { + text-align: center; + justify-content: center; +} +.elementor-star-rating--align-justify .elementor-star-rating__title { + margin-left: auto; +} + +@media (max-width: ELEMENTOR_SCREEN_TABLET_MAX) { + .elementor-star-rating-tablet--align-right .elementor-star-rating__wrapper { + text-align: right; + justify-content: flex-start; + } + .elementor-star-rating-tablet--align-left .elementor-star-rating__wrapper { + text-align: left; + justify-content: flex-end; + } + .elementor-star-rating-tablet--align-center .elementor-star-rating__wrapper { + text-align: center; + justify-content: center; + } + .elementor-star-rating-tablet--align-justify .elementor-star-rating__title { + margin-left: auto; + } +} +@media (max-width: ELEMENTOR_SCREEN_MOBILE_MAX) { + .elementor-star-rating-mobile--align-right .elementor-star-rating__wrapper { + text-align: right; + justify-content: flex-start; + } + .elementor-star-rating-mobile--align-left .elementor-star-rating__wrapper { + text-align: left; + justify-content: flex-end; + } + .elementor-star-rating-mobile--align-center .elementor-star-rating__wrapper { + text-align: center; + justify-content: center; + } + .elementor-star-rating-mobile--align-justify .elementor-star-rating__title { + margin-left: auto; + } +} +.last-star { + letter-spacing: 0; +} + +.elementor--star-style-star_unicode .elementor-star-rating { + font-family: "Arial", "Helvetica", sans-serif; +} +.elementor--star-style-star_unicode .elementor-star-rating i:not(.elementor-star-empty):before { + content: "★"; +} + +.elementor-widget-tabs.elementor-tabs-view-vertical .elementor-tabs-wrapper { + width: 25%; + flex-shrink: 0; +} +.elementor-widget-tabs.elementor-tabs-view-vertical .elementor-tab-desktop-title.elementor-active { + border-left-style: none; +} +.elementor-widget-tabs.elementor-tabs-view-vertical .elementor-tab-desktop-title.elementor-active:before, .elementor-widget-tabs.elementor-tabs-view-vertical .elementor-tab-desktop-title.elementor-active:after { + height: 999em; + width: 0; + left: 0; + border-left-style: solid; +} +.elementor-widget-tabs.elementor-tabs-view-vertical .elementor-tab-desktop-title.elementor-active:before { + top: 0; + transform: translateY(-100%); +} +.elementor-widget-tabs.elementor-tabs-view-vertical .elementor-tab-desktop-title.elementor-active:after { + top: 100%; +} +.elementor-widget-tabs.elementor-tabs-view-horizontal .elementor-tab-desktop-title { + display: table-cell; +} +.elementor-widget-tabs.elementor-tabs-view-horizontal .elementor-tab-desktop-title.elementor-active { + border-bottom-style: none; +} +.elementor-widget-tabs.elementor-tabs-view-horizontal .elementor-tab-desktop-title.elementor-active:before, .elementor-widget-tabs.elementor-tabs-view-horizontal .elementor-tab-desktop-title.elementor-active:after { + bottom: 0; + height: 0; + width: 999em; + border-bottom-style: solid; +} +.elementor-widget-tabs.elementor-tabs-view-horizontal .elementor-tab-desktop-title.elementor-active:before { + right: 100%; +} +.elementor-widget-tabs.elementor-tabs-view-horizontal .elementor-tab-desktop-title.elementor-active:after { + left: 100%; +} +.elementor-widget-tabs .elementor-tab-title, +.elementor-widget-tabs .elementor-tab-title:before, +.elementor-widget-tabs .elementor-tab-title:after, +.elementor-widget-tabs .elementor-tab-content, +.elementor-widget-tabs .elementor-tabs-content-wrapper { + border: 1px none #D5D8DC; +} +.elementor-widget-tabs .elementor-tabs { + text-align: right; +} +.elementor-widget-tabs .elementor-tabs-wrapper { + overflow: hidden; +} +.elementor-widget-tabs .elementor-tab-title { + cursor: pointer; + outline: var(--focus-outline, none); +} +.elementor-widget-tabs .elementor-tab-desktop-title { + position: relative; + padding: 20px 25px; + font-weight: bold; + line-height: 1; + border: solid transparent; +} +.elementor-widget-tabs .elementor-tab-desktop-title.elementor-active { + border-color: #D5D8DC; +} +.elementor-widget-tabs .elementor-tab-desktop-title.elementor-active:before, .elementor-widget-tabs .elementor-tab-desktop-title.elementor-active:after { + display: block; + content: ""; + position: absolute; +} +.elementor-widget-tabs .elementor-tab-desktop-title:focus-visible { + border: 1px solid #000000; +} +.elementor-widget-tabs .elementor-tab-mobile-title { + padding: 10px 10px; + cursor: pointer; +} +.elementor-widget-tabs .elementor-tab-content { + padding: 20px; + display: none; +} + +@media (max-width: ELEMENTOR_SCREEN_MOBILE_MAX) { + .elementor-tabs .elementor-tab-title, + .elementor-tabs .elementor-tab-content { + border-style: solid; + border-bottom-style: none; + } + .elementor-tabs .elementor-tabs-wrapper { + display: none; + } + .elementor-tabs .elementor-tabs-content-wrapper { + border-bottom-style: solid; + } + .elementor-tabs .elementor-tab-content { + padding: 10px; + } +} +@media (min-width: ELEMENTOR_SCREEN_MOBILE_NEXT) { + .elementor-widget-tabs.elementor-tabs-view-vertical .elementor-tabs { + display: flex; + } + .elementor-widget-tabs.elementor-tabs-view-vertical .elementor-tabs-wrapper { + flex-direction: column; + } + .elementor-widget-tabs.elementor-tabs-view-vertical .elementor-tabs-content-wrapper { + flex-grow: 1; + border-style: solid; + border-right-style: none; + } + .elementor-widget-tabs.elementor-tabs-view-horizontal .elementor-tab-content { + border-style: solid; + border-top-style: none; + } + .elementor-widget-tabs.elementor-tabs-alignment-center .elementor-tabs-wrapper, .elementor-widget-tabs.elementor-tabs-alignment-end .elementor-tabs-wrapper, .elementor-widget-tabs.elementor-tabs-alignment-stretch .elementor-tabs-wrapper { + display: flex; + } + .elementor-widget-tabs.elementor-tabs-alignment-center .elementor-tabs-wrapper { + justify-content: center; + } + .elementor-widget-tabs.elementor-tabs-alignment-end .elementor-tabs-wrapper { + justify-content: flex-end; + } + .elementor-widget-tabs.elementor-tabs-alignment-stretch.elementor-tabs-view-horizontal .elementor-tab-title { + width: 100%; + } + .elementor-widget-tabs.elementor-tabs-alignment-stretch.elementor-tabs-view-vertical .elementor-tab-title { + height: 100%; + } + .elementor-tabs .elementor-tab-mobile-title { + display: none; + } +} +.elementor-testimonial-wrapper { + overflow: hidden; + text-align: center; +} +.elementor-testimonial-wrapper .elementor-testimonial-content { + font-size: 1.3em; + margin-bottom: 20px; +} +.elementor-testimonial-wrapper .elementor-testimonial-name { + line-height: 1.5; + display: block; +} +.elementor-testimonial-wrapper .elementor-testimonial-job { + font-size: 0.85em; + display: block; +} +.elementor-testimonial-wrapper .elementor-testimonial-meta { + width: 100%; + line-height: 1; +} +.elementor-testimonial-wrapper .elementor-testimonial-meta-inner { + display: inline-block; +} +.elementor-testimonial-wrapper .elementor-testimonial-meta .elementor-testimonial-details, +.elementor-testimonial-wrapper .elementor-testimonial-meta .elementor-testimonial-image { + display: table-cell; + vertical-align: middle; +} +.elementor-testimonial-wrapper .elementor-testimonial-meta .elementor-testimonial-image img { + width: 60px; + height: 60px; + border-radius: 50%; + object-fit: cover; + max-width: none; +} +.elementor-testimonial-wrapper .elementor-testimonial-meta.elementor-testimonial-image-position-aside .elementor-testimonial-image { + padding-left: 15px; +} +.elementor-testimonial-wrapper .elementor-testimonial-meta.elementor-testimonial-image-position-aside .elementor-testimonial-details { + text-align: right; +} +.elementor-testimonial-wrapper .elementor-testimonial-meta.elementor-testimonial-image-position-top .elementor-testimonial-details, +.elementor-testimonial-wrapper .elementor-testimonial-meta.elementor-testimonial-image-position-top .elementor-testimonial-image { + display: block; +} +.elementor-testimonial-wrapper .elementor-testimonial-meta.elementor-testimonial-image-position-top .elementor-testimonial-image { + margin-bottom: 20px; +} + +.elementor-widget-text-editor.elementor-drop-cap-view-stacked .elementor-drop-cap { + background-color: #69727D; + color: #fff; +} +.elementor-widget-text-editor.elementor-drop-cap-view-framed .elementor-drop-cap { + color: #69727D; + border: 3px solid; + background-color: transparent; +} +.elementor-widget-text-editor:not(.elementor-drop-cap-view-default) .elementor-drop-cap { + margin-top: 8px; +} +.elementor-widget-text-editor:not(.elementor-drop-cap-view-default) .elementor-drop-cap-letter { + width: 1em; + height: 1em; +} +.elementor-widget-text-editor .elementor-drop-cap { + float: right; + text-align: center; + line-height: 1; + font-size: 50px; +} +.elementor-widget-text-editor .elementor-drop-cap-letter { + display: inline-block; +} + +.elementor-toggle { + text-align: right; +} +.elementor-toggle .elementor-tab-title { + font-weight: bold; + line-height: 1; + margin: 0; + padding: 15px; + border-bottom: 1px solid #D5D8DC; + cursor: pointer; + outline: none; +} +.elementor-toggle .elementor-tab-title .elementor-toggle-icon { + display: inline-block; + width: 1em; +} +.elementor-toggle .elementor-tab-title .elementor-toggle-icon svg { + margin-inline-start: -5px; + width: 1em; + height: 1em; +} +.elementor-toggle .elementor-tab-title .elementor-toggle-icon.elementor-toggle-icon-right { + float: right; + text-align: right; +} +.elementor-toggle .elementor-tab-title .elementor-toggle-icon.elementor-toggle-icon-left { + float: left; + text-align: left; +} +.elementor-toggle .elementor-tab-title .elementor-toggle-icon .elementor-toggle-icon-closed { + display: block; +} +.elementor-toggle .elementor-tab-title .elementor-toggle-icon .elementor-toggle-icon-opened { + display: none; +} +.elementor-toggle .elementor-tab-title.elementor-active { + border-bottom: none; +} +.elementor-toggle .elementor-tab-title.elementor-active .elementor-toggle-icon-closed { + display: none; +} +.elementor-toggle .elementor-tab-title.elementor-active .elementor-toggle-icon-opened { + display: block; +} +.elementor-toggle .elementor-tab-content { + padding: 15px; + border-bottom: 1px solid #D5D8DC; + display: none; +} + +@media (max-width: ELEMENTOR_SCREEN_MOBILE_MAX) { + .elementor-toggle .elementor-tab-title { + padding: 12px; + } + .elementor-toggle .elementor-tab-content { + padding: 12px 10px; + } +} +.e-con > .elementor-widget-toggle, +.e-con-inner > .elementor-widget-toggle { + width: var(--container-widget-width); + --flex-grow: var( --container-widget-flex-grow ); +} + +.elementor-widget-video .elementor-widget-container { + overflow: hidden; + transform: translate3d(0, 0, 0); +} +.elementor-widget-video .elementor-wrapper { + aspect-ratio: var(--video-aspect-ratio); +} +.elementor-widget-video .elementor-wrapper iframe, +.elementor-widget-video .elementor-wrapper video { + height: 100%; + width: 100%; + display: flex; + border: none; + background-color: #000000; +} +@supports not (aspect-ratio: 1/1) { + .elementor-widget-video .elementor-wrapper { + position: relative; + overflow: hidden; + height: 0; + padding-bottom: calc(100% / var(--video-aspect-ratio)); + } + .elementor-widget-video .elementor-wrapper iframe, + .elementor-widget-video .elementor-wrapper video { + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + } +} +.elementor-widget-video .elementor-open-inline .elementor-custom-embed-image-overlay { + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + background-size: cover; + background-position: center center; +} +.elementor-widget-video .elementor-custom-embed-image-overlay { + cursor: pointer; + text-align: center; +} +.elementor-widget-video .elementor-custom-embed-image-overlay:hover .elementor-custom-embed-play i { + opacity: 1; +} +.elementor-widget-video .elementor-custom-embed-image-overlay img { + display: block; + width: 100%; + aspect-ratio: var(--video-aspect-ratio); + object-fit: cover; + object-position: center center; +} +@supports not (aspect-ratio: 1/1) { + .elementor-widget-video .elementor-custom-embed-image-overlay { + position: relative; + overflow: hidden; + height: 0; + padding-bottom: calc(100% / var(--video-aspect-ratio)); + } + .elementor-widget-video .elementor-custom-embed-image-overlay img { + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + } +} +.elementor-widget-video .e-hosted-video .elementor-video { + object-fit: cover; +} + +.e-con > .elementor-widget-video, +.e-con-inner > .elementor-widget-video { + width: var(--container-widget-width); + --flex-grow: var( --container-widget-flex-grow ); +} + +.elementor-widget-rating { + --e-rating-gap: 0px; + --e-rating-icon-font-size: 16px; + --e-rating-icon-color: #CCD6DF; + --e-rating-icon-marked-color: #f0ad4e; + --e-rating-icon-marked-width: 100%; + --e-rating-justify-content: flex-start; +} +.elementor-widget-rating .e-rating { + display: flex; + justify-content: var(--e-rating-justify-content); +} +.elementor-widget-rating .e-rating-wrapper { + display: flex; + justify-content: inherit; + flex-direction: row; + flex-wrap: wrap; + width: fit-content; + margin-block-end: calc(0px - var(--e-rating-gap)); + margin-inline-end: calc(0px - var(--e-rating-gap)); +} +.elementor-widget-rating .e-rating .e-icon { + position: relative; + margin-block-end: var(--e-rating-gap); + margin-inline-end: var(--e-rating-gap); +} +.elementor-widget-rating .e-rating .e-icon-wrapper.e-icon-marked { + --e-rating-icon-color: var(--e-rating-icon-marked-color); + width: var(--e-rating-icon-marked-width); + position: absolute; + z-index: 1; + height: 100%; + left: 0; + top: 0; + overflow: hidden; +} +.elementor-widget-rating .e-rating .e-icon-wrapper :is(i, svg) { + display: flex; + flex-shrink: 0; +} +.elementor-widget-rating .e-rating .e-icon-wrapper i { + font-size: var(--e-rating-icon-font-size); + color: var(--e-rating-icon-color); +} +.elementor-widget-rating .e-rating .e-icon-wrapper svg { + width: auto; + height: var(--e-rating-icon-font-size); + fill: var(--e-rating-icon-color); +} + +/*# sourceMappingURL=frontend-rtl.css.map */ \ No newline at end of file diff --git a/wp-content/plugins/elementor/assets/css/templates/frontend-rtl.min.css b/wp-content/plugins/elementor/assets/css/templates/frontend-rtl.min.css new file mode 100644 index 0000000..17cbdcc --- /dev/null +++ b/wp-content/plugins/elementor/assets/css/templates/frontend-rtl.min.css @@ -0,0 +1 @@ +@charset "UTF-8";.dialog-widget-content{background-color:var(--e-a-bg-default);position:absolute;border-radius:3px;box-shadow:2px 8px 23px 3px rgba(0,0,0,.2);overflow:hidden}.dialog-message{line-height:1.5;box-sizing:border-box}.dialog-close-button{cursor:pointer;position:absolute;margin-block-start:15px;left:15px;color:var(--e-a-color-txt);font-size:15px;line-height:1;transition:var(--e-a-transition-hover)}.dialog-close-button:hover{color:var(--e-a-color-txt-hover)}.dialog-prevent-scroll{overflow:hidden;max-height:100vh}.dialog-type-lightbox{position:fixed;height:100%;width:100%;bottom:0;left:0;background-color:rgba(0,0,0,.8);z-index:9999;-webkit-user-select:none;-moz-user-select:none;user-select:none}.elementor-editor-active .elementor-popup-modal{background-color:initial}.dialog-type-alert .dialog-widget-content,.dialog-type-confirm .dialog-widget-content{margin:auto;width:400px;padding:20px}.dialog-type-alert .dialog-header,.dialog-type-confirm .dialog-header{font-size:15px;font-weight:500}.dialog-type-alert .dialog-header:after,.dialog-type-confirm .dialog-header:after{content:"";display:block;border-block-end:var(--e-a-border);padding-block-end:10px;margin-block-end:10px;margin-inline-start:-20px;margin-inline-end:-20px}.dialog-type-alert .dialog-message,.dialog-type-confirm .dialog-message{min-height:50px}.dialog-type-alert .dialog-buttons-wrapper,.dialog-type-confirm .dialog-buttons-wrapper{padding-block-start:10px;display:flex;justify-content:flex-end;gap:15px}.dialog-type-alert .dialog-buttons-wrapper .dialog-button,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button{font-size:12px;font-weight:500;line-height:1.2;padding:8px 16px;outline:none;border:none;border-radius:var(--e-a-border-radius);background-color:var(--e-a-btn-bg);color:var(--e-a-btn-color-invert);transition:var(--e-a-transition-hover)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:hover{border:none}.dialog-type-alert .dialog-buttons-wrapper .dialog-button:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:hover{background-color:var(--e-a-btn-bg-hover);color:var(--e-a-btn-color-invert)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button:active,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:active{background-color:var(--e-a-btn-bg-active)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button:not([disabled]),.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:not([disabled]){cursor:pointer}.dialog-type-alert .dialog-buttons-wrapper .dialog-button:disabled,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:disabled{background-color:var(--e-a-btn-bg-disabled);color:var(--e-a-btn-color-disabled)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button:not(.elementor-button-state) .elementor-state-icon,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:not(.elementor-button-state) .elementor-state-icon{display:none}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt{background:transparent;color:var(--e-a-color-txt)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel:hover,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt:hover{background:var(--e-a-bg-hover);color:var(--e-a-color-txt-hover)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel:disabled,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt:disabled,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel:disabled,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt:disabled{background:transparent;color:var(--e-a-color-txt-disabled)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt-border,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt-border{border:1px solid var(--e-a-color-txt-muted)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-success,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-success,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-success,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-success{background-color:var(--e-a-btn-bg-success)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-success:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-success:hover,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-success:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-success:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-success:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-success:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-success:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-success:hover{background-color:var(--e-a-btn-bg-success-hover)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-take_over,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-take_over,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary{background-color:var(--e-a-btn-bg-primary);color:var(--e-a-btn-color)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok:hover,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-take_over:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-take_over:hover,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-take_over:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-take_over:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary:hover{background-color:var(--e-a-btn-bg-primary-hover);color:var(--e-a-btn-color)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-ok,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-take_over,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary.dialog-cancel,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary.e-btn-txt,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-ok,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-take_over,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary.dialog-cancel,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary.e-btn-txt{background:transparent;color:var(--e-a-color-primary-bold)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over:hover,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel:hover,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-ok:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-ok:hover,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-take_over:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-take_over:hover,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary.dialog-cancel:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary.dialog-cancel:hover,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary.e-btn-txt:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary.e-btn-txt:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-ok:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-ok:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-take_over:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-take_over:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary.dialog-cancel:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary.dialog-cancel:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary.e-btn-txt:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary.e-btn-txt:hover{background:var(--e-a-bg-primary)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-accent,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.go-pro,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-accent,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.go-pro{background-color:var(--e-a-btn-bg-accent)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-accent:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-accent:hover,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.go-pro:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.go-pro:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-accent:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-accent:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.go-pro:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.go-pro:hover{background-color:var(--e-a-btn-bg-accent-hover)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-accent:active,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.go-pro:active,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-accent:active,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.go-pro:active{background-color:var(--e-a-btn-bg-accent-active)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-info,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-info,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-info,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-info{background-color:var(--e-a-btn-bg-info)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-info:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-info:hover,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-info:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-info:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-info:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-info:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-info:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-info:hover{background-color:var(--e-a-btn-bg-info-hover)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-warning,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-warning,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-warning,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-warning{background-color:var(--e-a-btn-bg-warning)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-warning:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-warning:hover,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-warning:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-warning:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-warning:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-warning:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-warning:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-warning:hover{background-color:var(--e-a-btn-bg-warning-hover)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-danger,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-danger,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-danger,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-danger{background-color:var(--e-a-btn-bg-danger)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-danger:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-danger:hover,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-danger:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-danger:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-danger:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-danger:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-danger:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-danger:hover{background-color:var(--e-a-btn-bg-danger-hover)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button i,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button i{margin-inline-end:5px}.dialog-type-alert .dialog-buttons-wrapper .dialog-button:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button:hover,.dialog-type-alert .dialog-buttons-wrapper .dialog-button:visited,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:visited{color:initial}.flatpickr-calendar{width:280px}.flatpickr-calendar .flatpickr-current-month span.cur-month{font-weight:300}.flatpickr-calendar .dayContainer{width:280px;min-width:280px;max-width:280px}.flatpickr-calendar .flatpickr-days{width:280px}.flatpickr-calendar .flatpickr-day{max-width:37px;height:37px;line-height:37px}.elementor-hidden{display:none}.elementor-screen-only,.screen-reader-text,.screen-reader-text span,.ui-helper-hidden-accessible{position:absolute;top:-10000em;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.elementor-clearfix:after{content:"";display:block;clear:both;width:0;height:0}.e-logo-wrapper{background:var(--e-a-bg-logo);display:inline-block;padding:.75em;border-radius:50%;line-height:1}.e-logo-wrapper i{color:var(--e-a-color-logo);font-size:1em}.elementor *,.elementor :after,.elementor :before{box-sizing:border-box}.elementor a{box-shadow:none;text-decoration:none}.elementor hr{margin:0;background-color:transparent}.elementor img{height:auto;max-width:100%;border:none;border-radius:0;box-shadow:none}.elementor .elementor-widget:not(.elementor-widget-text-editor):not(.elementor-widget-theme-post-content) figure{margin:0}.elementor embed,.elementor iframe,.elementor object,.elementor video{max-width:100%;width:100%;margin:0;line-height:1;border:none}.elementor .elementor-background,.elementor .elementor-background-holder,.elementor .elementor-background-video-container{height:100%;width:100%;top:0;left:0;position:absolute;overflow:hidden;z-index:0;direction:ltr}.elementor .elementor-background-video-container{transition:opacity 1s;pointer-events:none}.elementor .elementor-background-video-container.elementor-loading{opacity:0}.elementor .elementor-background-video-embed{max-width:none}.elementor .elementor-background-video,.elementor .elementor-background-video-embed,.elementor .elementor-background-video-hosted{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.elementor .elementor-background-video{max-width:none}.elementor .elementor-html5-video{-o-object-fit:cover;object-fit:cover}.elementor .elementor-background-overlay{height:100%;width:100%;top:0;left:0;position:absolute}.elementor .elementor-background-slideshow{position:absolute;width:100%;height:100%;z-index:0;top:0;right:0}.elementor .elementor-background-slideshow__slide__image{width:100%;height:100%;background-position:50%;background-size:cover}.e-con-inner>.elementor-element.elementor-absolute,.e-con>.elementor-element.elementor-absolute,.elementor-widget-wrap>.elementor-element.elementor-absolute{position:absolute}.e-con-inner>.elementor-element.elementor-fixed,.e-con>.elementor-element.elementor-fixed,.elementor-widget-wrap>.elementor-element.elementor-fixed{position:fixed}.elementor-widget-wrap .elementor-element.elementor-widget__width-auto,.elementor-widget-wrap .elementor-element.elementor-widget__width-initial{max-width:100%}@media (max-width:ELEMENTOR_SCREEN_TABLET_MAX){.elementor-widget-wrap .elementor-element.elementor-widget-tablet__width-auto,.elementor-widget-wrap .elementor-element.elementor-widget-tablet__width-initial{max-width:100%}}@media (max-width:ELEMENTOR_SCREEN_MOBILE_MAX){.elementor-widget-wrap .elementor-element.elementor-widget-mobile__width-auto,.elementor-widget-wrap .elementor-element.elementor-widget-mobile__width-initial{max-width:100%}}.elementor-element{--flex-direction:initial;--flex-wrap:initial;--justify-content:initial;--align-items:initial;--align-content:initial;--gap:initial;--flex-basis:initial;--flex-grow:initial;--flex-shrink:initial;--order:initial;--align-self:initial;flex-basis:var(--flex-basis);flex-grow:var(--flex-grow);flex-shrink:var(--flex-shrink);order:var(--order);align-self:var(--align-self)}.elementor-element.elementor-absolute,.elementor-element.elementor-fixed{z-index:1}.elementor-element:where(.e-con-full,.elementor-widget){flex-direction:var(--flex-direction);flex-wrap:var(--flex-wrap);justify-content:var(--justify-content);align-items:var(--align-items);align-content:var(--align-content);gap:var(--gap)}.elementor-invisible{visibility:hidden}.elementor-align-center{text-align:center}.elementor-align-center .elementor-button{width:auto}.elementor-align-right{text-align:right}.elementor-align-right .elementor-button{width:auto}.elementor-align-left{text-align:left}.elementor-align-left .elementor-button{width:auto}.elementor-align-justify .elementor-button{width:100%}.elementor-custom-embed-play{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.elementor-custom-embed-play i{font-size:100px;color:#fff;text-shadow:1px 0 6px rgba(0,0,0,.3)}.elementor-custom-embed-play svg{height:100px;width:100px;fill:#fff;filter:drop-shadow(1px 0 6px rgba(0,0,0,.3))}.elementor-custom-embed-play i,.elementor-custom-embed-play svg{opacity:.8;transition:all .5s}.elementor-custom-embed-play.elementor-playing i{font-family:eicons}.elementor-custom-embed-play.elementor-playing i:before{content:"\e8fb"}.elementor-custom-embed-play.elementor-playing i,.elementor-custom-embed-play.elementor-playing svg{animation:eicon-spin 2s linear infinite}.elementor-tag{display:inline-flex}.elementor-ken-burns{transition-property:transform;transition-duration:10s;transition-timing-function:linear}.elementor-ken-burns--out{transform:scale(1.3)}.elementor-ken-burns--active{transition-duration:20s}.elementor-ken-burns--active.elementor-ken-burns--out{transform:scale(1)}.elementor-ken-burns--active.elementor-ken-burns--in{transform:scale(1.3)}@media (min-width:ELEMENTOR_SCREEN_WIDESCREEN_MIN){.elementor-widescreen-align-center{text-align:center}.elementor-widescreen-align-center .elementor-button{width:auto}.elementor-widescreen-align-right{text-align:right}.elementor-widescreen-align-right .elementor-button{width:auto}.elementor-widescreen-align-left{text-align:left}.elementor-widescreen-align-left .elementor-button{width:auto}.elementor-widescreen-align-justify .elementor-button{width:100%}}@media (max-width:ELEMENTOR_SCREEN_LAPTOP_MAX){.elementor-laptop-align-center{text-align:center}.elementor-laptop-align-center .elementor-button{width:auto}.elementor-laptop-align-right{text-align:right}.elementor-laptop-align-right .elementor-button{width:auto}.elementor-laptop-align-left{text-align:left}.elementor-laptop-align-left .elementor-button{width:auto}.elementor-laptop-align-justify .elementor-button{width:100%}}@media (max-width:ELEMENTOR_SCREEN_TABLET_EXTRA_MAX){.elementor-tablet_extra-align-center{text-align:center}.elementor-tablet_extra-align-center .elementor-button{width:auto}.elementor-tablet_extra-align-right{text-align:right}.elementor-tablet_extra-align-right .elementor-button{width:auto}.elementor-tablet_extra-align-left{text-align:left}.elementor-tablet_extra-align-left .elementor-button{width:auto}.elementor-tablet_extra-align-justify .elementor-button{width:100%}}@media (max-width:ELEMENTOR_SCREEN_TABLET_MAX){.elementor-tablet-align-center{text-align:center}.elementor-tablet-align-center .elementor-button{width:auto}.elementor-tablet-align-right{text-align:right}.elementor-tablet-align-right .elementor-button{width:auto}.elementor-tablet-align-left{text-align:left}.elementor-tablet-align-left .elementor-button{width:auto}.elementor-tablet-align-justify .elementor-button{width:100%}}@media (max-width:ELEMENTOR_SCREEN_MOBILE_EXTRA_MAX){.elementor-mobile_extra-align-center{text-align:center}.elementor-mobile_extra-align-center .elementor-button{width:auto}.elementor-mobile_extra-align-right{text-align:right}.elementor-mobile_extra-align-right .elementor-button{width:auto}.elementor-mobile_extra-align-left{text-align:left}.elementor-mobile_extra-align-left .elementor-button{width:auto}.elementor-mobile_extra-align-justify .elementor-button{width:100%}}@media (max-width:ELEMENTOR_SCREEN_MOBILE_MAX){.elementor-mobile-align-center{text-align:center}.elementor-mobile-align-center .elementor-button{width:auto}.elementor-mobile-align-right{text-align:right}.elementor-mobile-align-right .elementor-button{width:auto}.elementor-mobile-align-left{text-align:left}.elementor-mobile-align-left .elementor-button{width:auto}.elementor-mobile-align-justify .elementor-button{width:100%}}:root{--page-title-display:block}.elementor-page-title,h1.entry-title{display:var(--page-title-display)}@keyframes eicon-spin{0%{transform:rotate(0deg)}to{transform:rotate(359deg)}}.eicon-animation-spin{animation:eicon-spin 2s linear infinite}.elementor-section{position:relative}.elementor-section .elementor-container{display:flex;margin-right:auto;margin-left:auto;position:relative}@media (max-width:ELEMENTOR_SCREEN_TABLET_MAX){.elementor-section .elementor-container{flex-wrap:wrap}}.elementor-section.elementor-section-boxed>.elementor-container{max-width:1140px}.elementor-section.elementor-section-stretched{position:relative;width:100%}.elementor-section.elementor-section-items-top>.elementor-container{align-items:flex-start}.elementor-section.elementor-section-items-middle>.elementor-container{align-items:center}.elementor-section.elementor-section-items-bottom>.elementor-container{align-items:flex-end}@media (min-width:ELEMENTOR_SCREEN_MOBILE_NEXT){.elementor-section.elementor-section-height-full{height:100vh}.elementor-section.elementor-section-height-full>.elementor-container{height:100%}}.elementor-bc-flex-widget .elementor-section-content-top>.elementor-container>.elementor-column>.elementor-widget-wrap{align-items:flex-start}.elementor-bc-flex-widget .elementor-section-content-middle>.elementor-container>.elementor-column>.elementor-widget-wrap{align-items:center}.elementor-bc-flex-widget .elementor-section-content-bottom>.elementor-container>.elementor-column>.elementor-widget-wrap{align-items:flex-end}.elementor-row{width:100%;display:flex}@media (max-width:ELEMENTOR_SCREEN_TABLET_MAX){.elementor-row{flex-wrap:wrap}}.elementor-widget-wrap{position:relative;width:100%;flex-wrap:wrap;align-content:flex-start}.elementor:not(.elementor-bc-flex-widget) .elementor-widget-wrap{display:flex}.elementor-widget-wrap>.elementor-element{width:100%}.elementor-widget-wrap.e-swiper-container{width:calc(100% - (var(--e-column-margin-left, 0px) + var(--e-column-margin-right, 0px)))}.elementor-widget{position:relative}.elementor-widget:not(:last-child){margin-bottom:20px}.elementor-widget:not(:last-child).elementor-absolute,.elementor-widget:not(:last-child).elementor-widget__width-auto,.elementor-widget:not(:last-child).elementor-widget__width-initial{margin-bottom:0}.elementor-column{position:relative;min-height:1px;display:flex}.elementor-column-wrap{width:100%;position:relative;display:flex}.elementor-column-gap-narrow>.elementor-column>.elementor-element-populated{padding:5px}.elementor-column-gap-default>.elementor-column>.elementor-element-populated{padding:10px}.elementor-column-gap-extended>.elementor-column>.elementor-element-populated{padding:15px}.elementor-column-gap-wide>.elementor-column>.elementor-element-populated{padding:20px}.elementor-column-gap-wider>.elementor-column>.elementor-element-populated{padding:30px}.elementor-inner-section .elementor-column-gap-no .elementor-element-populated{padding:0}@media (min-width:ELEMENTOR_SCREEN_MOBILE_NEXT){.elementor-column.elementor-col-10,.elementor-column[data-col="10"]{width:10%}.elementor-column.elementor-col-11,.elementor-column[data-col="11"]{width:11.111%}.elementor-column.elementor-col-12,.elementor-column[data-col="12"]{width:12.5%}.elementor-column.elementor-col-14,.elementor-column[data-col="14"]{width:14.285%}.elementor-column.elementor-col-16,.elementor-column[data-col="16"]{width:16.666%}.elementor-column.elementor-col-20,.elementor-column[data-col="20"]{width:20%}.elementor-column.elementor-col-25,.elementor-column[data-col="25"]{width:25%}.elementor-column.elementor-col-30,.elementor-column[data-col="30"]{width:30%}.elementor-column.elementor-col-33,.elementor-column[data-col="33"]{width:33.333%}.elementor-column.elementor-col-40,.elementor-column[data-col="40"]{width:40%}.elementor-column.elementor-col-50,.elementor-column[data-col="50"]{width:50%}.elementor-column.elementor-col-60,.elementor-column[data-col="60"]{width:60%}.elementor-column.elementor-col-66,.elementor-column[data-col="66"]{width:66.666%}.elementor-column.elementor-col-70,.elementor-column[data-col="70"]{width:70%}.elementor-column.elementor-col-75,.elementor-column[data-col="75"]{width:75%}.elementor-column.elementor-col-80,.elementor-column[data-col="80"]{width:80%}.elementor-column.elementor-col-83,.elementor-column[data-col="83"]{width:83.333%}.elementor-column.elementor-col-90,.elementor-column[data-col="90"]{width:90%}.elementor-column.elementor-col-100,.elementor-column[data-col="100"]{width:100%}}@media (max-width:479px){.elementor-column.elementor-xs-10{width:10%}.elementor-column.elementor-xs-11{width:11.111%}.elementor-column.elementor-xs-12{width:12.5%}.elementor-column.elementor-xs-14{width:14.285%}.elementor-column.elementor-xs-16{width:16.666%}.elementor-column.elementor-xs-20{width:20%}.elementor-column.elementor-xs-25{width:25%}.elementor-column.elementor-xs-30{width:30%}.elementor-column.elementor-xs-33{width:33.333%}.elementor-column.elementor-xs-40{width:40%}.elementor-column.elementor-xs-50{width:50%}.elementor-column.elementor-xs-60{width:60%}.elementor-column.elementor-xs-66{width:66.666%}.elementor-column.elementor-xs-70{width:70%}.elementor-column.elementor-xs-75{width:75%}.elementor-column.elementor-xs-80{width:80%}.elementor-column.elementor-xs-83{width:83.333%}.elementor-column.elementor-xs-90{width:90%}.elementor-column.elementor-xs-100{width:100%}}@media (max-width:ELEMENTOR_SCREEN_MOBILE_MAX){.elementor-column.elementor-sm-10{width:10%}.elementor-column.elementor-sm-11{width:11.111%}.elementor-column.elementor-sm-12{width:12.5%}.elementor-column.elementor-sm-14{width:14.285%}.elementor-column.elementor-sm-16{width:16.666%}.elementor-column.elementor-sm-20{width:20%}.elementor-column.elementor-sm-25{width:25%}.elementor-column.elementor-sm-30{width:30%}.elementor-column.elementor-sm-33{width:33.333%}.elementor-column.elementor-sm-40{width:40%}.elementor-column.elementor-sm-50{width:50%}.elementor-column.elementor-sm-60{width:60%}.elementor-column.elementor-sm-66{width:66.666%}.elementor-column.elementor-sm-70{width:70%}.elementor-column.elementor-sm-75{width:75%}.elementor-column.elementor-sm-80{width:80%}.elementor-column.elementor-sm-83{width:83.333%}.elementor-column.elementor-sm-90{width:90%}.elementor-column.elementor-sm-100{width:100%}}@media (min-width:ELEMENTOR_SCREEN_MOBILE_NEXT) and (max-width:ELEMENTOR_SCREEN_TABLET_MAX){.elementor-column.elementor-md-10{width:10%}.elementor-column.elementor-md-11{width:11.111%}.elementor-column.elementor-md-12{width:12.5%}.elementor-column.elementor-md-14{width:14.285%}.elementor-column.elementor-md-16{width:16.666%}.elementor-column.elementor-md-20{width:20%}.elementor-column.elementor-md-25{width:25%}.elementor-column.elementor-md-30{width:30%}.elementor-column.elementor-md-33{width:33.333%}.elementor-column.elementor-md-40{width:40%}.elementor-column.elementor-md-50{width:50%}.elementor-column.elementor-md-60{width:60%}.elementor-column.elementor-md-66{width:66.666%}.elementor-column.elementor-md-70{width:70%}.elementor-column.elementor-md-75{width:75%}.elementor-column.elementor-md-80{width:80%}.elementor-column.elementor-md-83{width:83.333%}.elementor-column.elementor-md-90{width:90%}.elementor-column.elementor-md-100{width:100%}}@media (min-width:ELEMENTOR_SCREEN_WIDESCREEN_MIN){.elementor-reverse-widescreen>.elementor-container>:first-child{order:10}.elementor-reverse-widescreen>.elementor-container>:nth-child(2){order:9}.elementor-reverse-widescreen>.elementor-container>:nth-child(3){order:8}.elementor-reverse-widescreen>.elementor-container>:nth-child(4){order:7}.elementor-reverse-widescreen>.elementor-container>:nth-child(5){order:6}.elementor-reverse-widescreen>.elementor-container>:nth-child(6){order:5}.elementor-reverse-widescreen>.elementor-container>:nth-child(7){order:4}.elementor-reverse-widescreen>.elementor-container>:nth-child(8){order:3}.elementor-reverse-widescreen>.elementor-container>:nth-child(9){order:2}.elementor-reverse-widescreen>.elementor-container>:nth-child(10){order:1}}@media (min-width:ELEMENTOR_SCREEN_TABLET_NEXT) and (max-width:ELEMENTOR_SCREEN_LAPTOP_MAX){.elementor-reverse-laptop>.elementor-container>:first-child{order:10}.elementor-reverse-laptop>.elementor-container>:nth-child(2){order:9}.elementor-reverse-laptop>.elementor-container>:nth-child(3){order:8}.elementor-reverse-laptop>.elementor-container>:nth-child(4){order:7}.elementor-reverse-laptop>.elementor-container>:nth-child(5){order:6}.elementor-reverse-laptop>.elementor-container>:nth-child(6){order:5}.elementor-reverse-laptop>.elementor-container>:nth-child(7){order:4}.elementor-reverse-laptop>.elementor-container>:nth-child(8){order:3}.elementor-reverse-laptop>.elementor-container>:nth-child(9){order:2}.elementor-reverse-laptop>.elementor-container>:nth-child(10){order:1}}@media (min-width:ELEMENTOR_SCREEN_TABLET_EXTRA_NEXT) and (max-width:ELEMENTOR_SCREEN_LAPTOP_MAX){.elementor-reverse-laptop>.elementor-container>:first-child{order:10}.elementor-reverse-laptop>.elementor-container>:nth-child(2){order:9}.elementor-reverse-laptop>.elementor-container>:nth-child(3){order:8}.elementor-reverse-laptop>.elementor-container>:nth-child(4){order:7}.elementor-reverse-laptop>.elementor-container>:nth-child(5){order:6}.elementor-reverse-laptop>.elementor-container>:nth-child(6){order:5}.elementor-reverse-laptop>.elementor-container>:nth-child(7){order:4}.elementor-reverse-laptop>.elementor-container>:nth-child(8){order:3}.elementor-reverse-laptop>.elementor-container>:nth-child(9){order:2}.elementor-reverse-laptop>.elementor-container>:nth-child(10){order:1}}@media (min-width:ELEMENTOR_SCREEN_TABLET_NEXT) and (max-width:ELEMENTOR_SCREEN_TABLET_EXTRA_MAX){.elementor-reverse-laptop>.elementor-container>:first-child,.elementor-reverse-laptop>.elementor-container>:nth-child(2),.elementor-reverse-laptop>.elementor-container>:nth-child(3),.elementor-reverse-laptop>.elementor-container>:nth-child(4),.elementor-reverse-laptop>.elementor-container>:nth-child(5),.elementor-reverse-laptop>.elementor-container>:nth-child(6),.elementor-reverse-laptop>.elementor-container>:nth-child(7),.elementor-reverse-laptop>.elementor-container>:nth-child(8),.elementor-reverse-laptop>.elementor-container>:nth-child(9),.elementor-reverse-laptop>.elementor-container>:nth-child(10){order:0}.elementor-reverse-tablet_extra>.elementor-container>:first-child{order:10}.elementor-reverse-tablet_extra>.elementor-container>:nth-child(2){order:9}.elementor-reverse-tablet_extra>.elementor-container>:nth-child(3){order:8}.elementor-reverse-tablet_extra>.elementor-container>:nth-child(4){order:7}.elementor-reverse-tablet_extra>.elementor-container>:nth-child(5){order:6}.elementor-reverse-tablet_extra>.elementor-container>:nth-child(6){order:5}.elementor-reverse-tablet_extra>.elementor-container>:nth-child(7){order:4}.elementor-reverse-tablet_extra>.elementor-container>:nth-child(8){order:3}.elementor-reverse-tablet_extra>.elementor-container>:nth-child(9){order:2}.elementor-reverse-tablet_extra>.elementor-container>:nth-child(10){order:1}}@media (min-width:ELEMENTOR_SCREEN_MOBILE_NEXT) and (max-width:ELEMENTOR_SCREEN_TABLET_MAX){.elementor-reverse-tablet>.elementor-container>:first-child{order:10}.elementor-reverse-tablet>.elementor-container>:nth-child(2){order:9}.elementor-reverse-tablet>.elementor-container>:nth-child(3){order:8}.elementor-reverse-tablet>.elementor-container>:nth-child(4){order:7}.elementor-reverse-tablet>.elementor-container>:nth-child(5){order:6}.elementor-reverse-tablet>.elementor-container>:nth-child(6){order:5}.elementor-reverse-tablet>.elementor-container>:nth-child(7){order:4}.elementor-reverse-tablet>.elementor-container>:nth-child(8){order:3}.elementor-reverse-tablet>.elementor-container>:nth-child(9){order:2}.elementor-reverse-tablet>.elementor-container>:nth-child(10){order:1}}@media (min-width:ELEMENTOR_SCREEN_MOBILE_EXTRA_NEXT) and (max-width:ELEMENTOR_SCREEN_TABLET_MAX){.elementor-reverse-tablet>.elementor-container>:first-child{order:10}.elementor-reverse-tablet>.elementor-container>:nth-child(2){order:9}.elementor-reverse-tablet>.elementor-container>:nth-child(3){order:8}.elementor-reverse-tablet>.elementor-container>:nth-child(4){order:7}.elementor-reverse-tablet>.elementor-container>:nth-child(5){order:6}.elementor-reverse-tablet>.elementor-container>:nth-child(6){order:5}.elementor-reverse-tablet>.elementor-container>:nth-child(7){order:4}.elementor-reverse-tablet>.elementor-container>:nth-child(8){order:3}.elementor-reverse-tablet>.elementor-container>:nth-child(9){order:2}.elementor-reverse-tablet>.elementor-container>:nth-child(10){order:1}}@media (min-width:ELEMENTOR_SCREEN_MOBILE_NEXT) and (max-width:ELEMENTOR_SCREEN_MOBILE_EXTRA_MAX){.elementor-reverse-tablet>.elementor-container>:first-child,.elementor-reverse-tablet>.elementor-container>:nth-child(2),.elementor-reverse-tablet>.elementor-container>:nth-child(3),.elementor-reverse-tablet>.elementor-container>:nth-child(4),.elementor-reverse-tablet>.elementor-container>:nth-child(5),.elementor-reverse-tablet>.elementor-container>:nth-child(6),.elementor-reverse-tablet>.elementor-container>:nth-child(7),.elementor-reverse-tablet>.elementor-container>:nth-child(8),.elementor-reverse-tablet>.elementor-container>:nth-child(9),.elementor-reverse-tablet>.elementor-container>:nth-child(10){order:0}.elementor-reverse-mobile_extra>.elementor-container>:first-child{order:10}.elementor-reverse-mobile_extra>.elementor-container>:nth-child(2){order:9}.elementor-reverse-mobile_extra>.elementor-container>:nth-child(3){order:8}.elementor-reverse-mobile_extra>.elementor-container>:nth-child(4){order:7}.elementor-reverse-mobile_extra>.elementor-container>:nth-child(5){order:6}.elementor-reverse-mobile_extra>.elementor-container>:nth-child(6){order:5}.elementor-reverse-mobile_extra>.elementor-container>:nth-child(7){order:4}.elementor-reverse-mobile_extra>.elementor-container>:nth-child(8){order:3}.elementor-reverse-mobile_extra>.elementor-container>:nth-child(9){order:2}.elementor-reverse-mobile_extra>.elementor-container>:nth-child(10){order:1}}@media (max-width:ELEMENTOR_SCREEN_MOBILE_MAX){.elementor-reverse-mobile>.elementor-container>:first-child{order:10}.elementor-reverse-mobile>.elementor-container>:nth-child(2){order:9}.elementor-reverse-mobile>.elementor-container>:nth-child(3){order:8}.elementor-reverse-mobile>.elementor-container>:nth-child(4){order:7}.elementor-reverse-mobile>.elementor-container>:nth-child(5){order:6}.elementor-reverse-mobile>.elementor-container>:nth-child(6){order:5}.elementor-reverse-mobile>.elementor-container>:nth-child(7){order:4}.elementor-reverse-mobile>.elementor-container>:nth-child(8){order:3}.elementor-reverse-mobile>.elementor-container>:nth-child(9){order:2}.elementor-reverse-mobile>.elementor-container>:nth-child(10){order:1}.elementor-column{width:100%}}ul.elementor-icon-list-items.elementor-inline-items{display:flex;flex-wrap:wrap}ul.elementor-icon-list-items.elementor-inline-items .elementor-inline-item{word-break:break-word}.elementor-grid{display:grid;grid-column-gap:var(--grid-column-gap);grid-row-gap:var(--grid-row-gap)}.elementor-grid .elementor-grid-item{min-width:0}.elementor-grid-0 .elementor-grid{display:inline-block;width:100%;word-spacing:var(--grid-column-gap);margin-bottom:calc(-1 * var(--grid-row-gap))}.elementor-grid-0 .elementor-grid .elementor-grid-item{display:inline-block;margin-bottom:var(--grid-row-gap);word-break:break-word}.elementor-grid-1 .elementor-grid{grid-template-columns:repeat(1,1fr)}.elementor-grid-2 .elementor-grid{grid-template-columns:repeat(2,1fr)}.elementor-grid-3 .elementor-grid{grid-template-columns:repeat(3,1fr)}.elementor-grid-4 .elementor-grid{grid-template-columns:repeat(4,1fr)}.elementor-grid-5 .elementor-grid{grid-template-columns:repeat(5,1fr)}.elementor-grid-6 .elementor-grid{grid-template-columns:repeat(6,1fr)}.elementor-grid-7 .elementor-grid{grid-template-columns:repeat(7,1fr)}.elementor-grid-8 .elementor-grid{grid-template-columns:repeat(8,1fr)}.elementor-grid-9 .elementor-grid{grid-template-columns:repeat(9,1fr)}.elementor-grid-10 .elementor-grid{grid-template-columns:repeat(10,1fr)}.elementor-grid-11 .elementor-grid{grid-template-columns:repeat(11,1fr)}.elementor-grid-12 .elementor-grid{grid-template-columns:repeat(12,1fr)}@media (min-width:ELEMENTOR_SCREEN_WIDESCREEN_MIN){.elementor-grid-widescreen-0 .elementor-grid{display:inline-block;width:100%;word-spacing:var(--grid-column-gap);margin-bottom:calc(-1 * var(--grid-row-gap))}.elementor-grid-widescreen-0 .elementor-grid .elementor-grid-item{display:inline-block;margin-bottom:var(--grid-row-gap);word-break:break-word}.elementor-grid-widescreen-1 .elementor-grid{grid-template-columns:repeat(1,1fr)}.elementor-grid-widescreen-2 .elementor-grid{grid-template-columns:repeat(2,1fr)}.elementor-grid-widescreen-3 .elementor-grid{grid-template-columns:repeat(3,1fr)}.elementor-grid-widescreen-4 .elementor-grid{grid-template-columns:repeat(4,1fr)}.elementor-grid-widescreen-5 .elementor-grid{grid-template-columns:repeat(5,1fr)}.elementor-grid-widescreen-6 .elementor-grid{grid-template-columns:repeat(6,1fr)}.elementor-grid-widescreen-7 .elementor-grid{grid-template-columns:repeat(7,1fr)}.elementor-grid-widescreen-8 .elementor-grid{grid-template-columns:repeat(8,1fr)}.elementor-grid-widescreen-9 .elementor-grid{grid-template-columns:repeat(9,1fr)}.elementor-grid-widescreen-10 .elementor-grid{grid-template-columns:repeat(10,1fr)}.elementor-grid-widescreen-11 .elementor-grid{grid-template-columns:repeat(11,1fr)}.elementor-grid-widescreen-12 .elementor-grid{grid-template-columns:repeat(12,1fr)}}@media (max-width:ELEMENTOR_SCREEN_LAPTOP_MAX){.elementor-grid-laptop-0 .elementor-grid{display:inline-block;width:100%;word-spacing:var(--grid-column-gap);margin-bottom:calc(-1 * var(--grid-row-gap))}.elementor-grid-laptop-0 .elementor-grid .elementor-grid-item{display:inline-block;margin-bottom:var(--grid-row-gap);word-break:break-word}.elementor-grid-laptop-1 .elementor-grid{grid-template-columns:repeat(1,1fr)}.elementor-grid-laptop-2 .elementor-grid{grid-template-columns:repeat(2,1fr)}.elementor-grid-laptop-3 .elementor-grid{grid-template-columns:repeat(3,1fr)}.elementor-grid-laptop-4 .elementor-grid{grid-template-columns:repeat(4,1fr)}.elementor-grid-laptop-5 .elementor-grid{grid-template-columns:repeat(5,1fr)}.elementor-grid-laptop-6 .elementor-grid{grid-template-columns:repeat(6,1fr)}.elementor-grid-laptop-7 .elementor-grid{grid-template-columns:repeat(7,1fr)}.elementor-grid-laptop-8 .elementor-grid{grid-template-columns:repeat(8,1fr)}.elementor-grid-laptop-9 .elementor-grid{grid-template-columns:repeat(9,1fr)}.elementor-grid-laptop-10 .elementor-grid{grid-template-columns:repeat(10,1fr)}.elementor-grid-laptop-11 .elementor-grid{grid-template-columns:repeat(11,1fr)}.elementor-grid-laptop-12 .elementor-grid{grid-template-columns:repeat(12,1fr)}}@media (max-width:ELEMENTOR_SCREEN_TABLET_EXTRA_MAX){.elementor-grid-tablet_extra-0 .elementor-grid{display:inline-block;width:100%;word-spacing:var(--grid-column-gap);margin-bottom:calc(-1 * var(--grid-row-gap))}.elementor-grid-tablet_extra-0 .elementor-grid .elementor-grid-item{display:inline-block;margin-bottom:var(--grid-row-gap);word-break:break-word}.elementor-grid-tablet_extra-1 .elementor-grid{grid-template-columns:repeat(1,1fr)}.elementor-grid-tablet_extra-2 .elementor-grid{grid-template-columns:repeat(2,1fr)}.elementor-grid-tablet_extra-3 .elementor-grid{grid-template-columns:repeat(3,1fr)}.elementor-grid-tablet_extra-4 .elementor-grid{grid-template-columns:repeat(4,1fr)}.elementor-grid-tablet_extra-5 .elementor-grid{grid-template-columns:repeat(5,1fr)}.elementor-grid-tablet_extra-6 .elementor-grid{grid-template-columns:repeat(6,1fr)}.elementor-grid-tablet_extra-7 .elementor-grid{grid-template-columns:repeat(7,1fr)}.elementor-grid-tablet_extra-8 .elementor-grid{grid-template-columns:repeat(8,1fr)}.elementor-grid-tablet_extra-9 .elementor-grid{grid-template-columns:repeat(9,1fr)}.elementor-grid-tablet_extra-10 .elementor-grid{grid-template-columns:repeat(10,1fr)}.elementor-grid-tablet_extra-11 .elementor-grid{grid-template-columns:repeat(11,1fr)}.elementor-grid-tablet_extra-12 .elementor-grid{grid-template-columns:repeat(12,1fr)}}@media (max-width:ELEMENTOR_SCREEN_TABLET_MAX){.elementor-grid-tablet-0 .elementor-grid{display:inline-block;width:100%;word-spacing:var(--grid-column-gap);margin-bottom:calc(-1 * var(--grid-row-gap))}.elementor-grid-tablet-0 .elementor-grid .elementor-grid-item{display:inline-block;margin-bottom:var(--grid-row-gap);word-break:break-word}.elementor-grid-tablet-1 .elementor-grid{grid-template-columns:repeat(1,1fr)}.elementor-grid-tablet-2 .elementor-grid{grid-template-columns:repeat(2,1fr)}.elementor-grid-tablet-3 .elementor-grid{grid-template-columns:repeat(3,1fr)}.elementor-grid-tablet-4 .elementor-grid{grid-template-columns:repeat(4,1fr)}.elementor-grid-tablet-5 .elementor-grid{grid-template-columns:repeat(5,1fr)}.elementor-grid-tablet-6 .elementor-grid{grid-template-columns:repeat(6,1fr)}.elementor-grid-tablet-7 .elementor-grid{grid-template-columns:repeat(7,1fr)}.elementor-grid-tablet-8 .elementor-grid{grid-template-columns:repeat(8,1fr)}.elementor-grid-tablet-9 .elementor-grid{grid-template-columns:repeat(9,1fr)}.elementor-grid-tablet-10 .elementor-grid{grid-template-columns:repeat(10,1fr)}.elementor-grid-tablet-11 .elementor-grid{grid-template-columns:repeat(11,1fr)}.elementor-grid-tablet-12 .elementor-grid{grid-template-columns:repeat(12,1fr)}}@media (max-width:ELEMENTOR_SCREEN_MOBILE_EXTRA_MAX){.elementor-grid-mobile_extra-0 .elementor-grid{display:inline-block;width:100%;word-spacing:var(--grid-column-gap);margin-bottom:calc(-1 * var(--grid-row-gap))}.elementor-grid-mobile_extra-0 .elementor-grid .elementor-grid-item{display:inline-block;margin-bottom:var(--grid-row-gap);word-break:break-word}.elementor-grid-mobile_extra-1 .elementor-grid{grid-template-columns:repeat(1,1fr)}.elementor-grid-mobile_extra-2 .elementor-grid{grid-template-columns:repeat(2,1fr)}.elementor-grid-mobile_extra-3 .elementor-grid{grid-template-columns:repeat(3,1fr)}.elementor-grid-mobile_extra-4 .elementor-grid{grid-template-columns:repeat(4,1fr)}.elementor-grid-mobile_extra-5 .elementor-grid{grid-template-columns:repeat(5,1fr)}.elementor-grid-mobile_extra-6 .elementor-grid{grid-template-columns:repeat(6,1fr)}.elementor-grid-mobile_extra-7 .elementor-grid{grid-template-columns:repeat(7,1fr)}.elementor-grid-mobile_extra-8 .elementor-grid{grid-template-columns:repeat(8,1fr)}.elementor-grid-mobile_extra-9 .elementor-grid{grid-template-columns:repeat(9,1fr)}.elementor-grid-mobile_extra-10 .elementor-grid{grid-template-columns:repeat(10,1fr)}.elementor-grid-mobile_extra-11 .elementor-grid{grid-template-columns:repeat(11,1fr)}.elementor-grid-mobile_extra-12 .elementor-grid{grid-template-columns:repeat(12,1fr)}}@media (max-width:ELEMENTOR_SCREEN_MOBILE_MAX){.elementor-grid-mobile-0 .elementor-grid{display:inline-block;width:100%;word-spacing:var(--grid-column-gap);margin-bottom:calc(-1 * var(--grid-row-gap))}.elementor-grid-mobile-0 .elementor-grid .elementor-grid-item{display:inline-block;margin-bottom:var(--grid-row-gap);word-break:break-word}.elementor-grid-mobile-1 .elementor-grid{grid-template-columns:repeat(1,1fr)}.elementor-grid-mobile-2 .elementor-grid{grid-template-columns:repeat(2,1fr)}.elementor-grid-mobile-3 .elementor-grid{grid-template-columns:repeat(3,1fr)}.elementor-grid-mobile-4 .elementor-grid{grid-template-columns:repeat(4,1fr)}.elementor-grid-mobile-5 .elementor-grid{grid-template-columns:repeat(5,1fr)}.elementor-grid-mobile-6 .elementor-grid{grid-template-columns:repeat(6,1fr)}.elementor-grid-mobile-7 .elementor-grid{grid-template-columns:repeat(7,1fr)}.elementor-grid-mobile-8 .elementor-grid{grid-template-columns:repeat(8,1fr)}.elementor-grid-mobile-9 .elementor-grid{grid-template-columns:repeat(9,1fr)}.elementor-grid-mobile-10 .elementor-grid{grid-template-columns:repeat(10,1fr)}.elementor-grid-mobile-11 .elementor-grid{grid-template-columns:repeat(11,1fr)}.elementor-grid-mobile-12 .elementor-grid{grid-template-columns:repeat(12,1fr)}}@media (min-width:ELEMENTOR_SCREEN_DESKTOP_MIN){#elementor-device-mode:after{content:"desktop"}}@media (min-width:ELEMENTOR_SCREEN_WIDESCREEN_MIN){#elementor-device-mode:after{content:"widescreen"}}@media (max-width:ELEMENTOR_SCREEN_LAPTOP_MAX){#elementor-device-mode:after{content:"laptop"}}@media (max-width:ELEMENTOR_SCREEN_TABLET_EXTRA_MAX){#elementor-device-mode:after{content:"tablet_extra"}}@media (max-width:ELEMENTOR_SCREEN_TABLET_MAX){#elementor-device-mode:after{content:"tablet"}}@media (max-width:ELEMENTOR_SCREEN_MOBILE_EXTRA_MAX){#elementor-device-mode:after{content:"mobile_extra"}}@media (max-width:ELEMENTOR_SCREEN_MOBILE_MAX){#elementor-device-mode:after{content:"mobile"}}.e-con{--border-radius:0;--border-block-start-width:0px;--border-inline-end-width:0px;--border-block-end-width:0px;--border-inline-start-width:0px;--border-style:initial;--border-color:initial;--container-widget-height:initial;--container-widget-flex-grow:0;--container-widget-align-self:initial;--content-width:min(100%,var(--container-max-width,1140px));--width:100%;--min-height:initial;--height:auto;--text-align:initial;--margin-block-start:0px;--margin-inline-end:0px;--margin-block-end:0px;--margin-inline-start:0px;--padding-block-start:var(--container-default-padding-block-start,10px);--padding-inline-end:var(--container-default-padding-inline-end,10px);--padding-block-end:var(--container-default-padding-block-end,10px);--padding-inline-start:var(--container-default-padding-inline-start,10px);--position:relative;--z-index:revert;--overflow:visible;--gap:var(--widgets-spacing,20px);--overlay-mix-blend-mode:initial;--overlay-opacity:1;--overlay-transition:0.3s;--e-con-grid-template-columns:repeat(3,1fr);--e-con-grid-template-rows:repeat(2,1fr);position:var(--position);width:var(--width);min-width:0;min-height:var(--min-height);height:var(--height);border-radius:var(--border-radius);margin-block-start:var(--bc-margin-block-start,var(--margin-block-start));margin-inline-end:var(--bc-margin-inline-end,var(--margin-inline-end));margin-block-end:var(--bc-margin-block-end,var(--margin-block-end));margin-inline-start:var(--bc-margin-inline-start,var(--margin-inline-start));padding-inline-start:var(--bc-padding-inline-start,var(--padding-inline-start));padding-inline-end:var(--bc-padding-inline-end,var(--padding-inline-end));z-index:var(--z-index);overflow:var(--overflow);transition:background var(--background-transition,.3s),border var(--border-transition,.3s),box-shadow var(--border-transition,.3s),transform var(--e-con-transform-transition-duration,.4s)}.e-con.e-flex{--flex-direction:column;--flex-basis:auto;--flex-grow:0;--flex-shrink:1;flex:var(--flex-grow) var(--flex-shrink) var(--flex-basis)}.e-con-full,.e-con>.e-con-inner{text-align:var(--text-align);padding-block-start:var(--bc-padding-block-start,var(--padding-block-start));padding-block-end:var(--bc-padding-block-end,var(--padding-block-end))}.e-con-full.e-flex,.e-con.e-flex>.e-con-inner{flex-direction:var(--flex-direction)}.e-con,.e-con>.e-con-inner{display:var(--display)}.e-con.e-grid{--grid-justify-content:start;--grid-align-content:start;--grid-auto-flow:row}.e-con.e-grid,.e-con.e-grid>.e-con-inner{grid-template-columns:var(--e-con-grid-template-columns);grid-template-rows:var(--e-con-grid-template-rows);justify-content:var(--grid-justify-content);align-content:var(--grid-align-content);grid-auto-flow:var(--grid-auto-flow);justify-items:var(--justify-items);align-items:var(--align-items)}.e-con-boxed.e-flex{flex-direction:column;flex-wrap:nowrap;justify-content:normal;align-items:normal;align-content:normal}.e-con-boxed.e-grid{justify-items:legacy;grid-template-columns:1fr;grid-template-rows:1fr}.e-con-boxed{text-align:initial;gap:initial}.e-con.e-flex>.e-con-inner{flex-wrap:var(--flex-wrap);justify-content:var(--justify-content);align-items:var(--align-items);align-content:var(--align-content);flex-basis:auto;flex-grow:1;flex-shrink:1;align-self:auto}.e-con.e-grid>.e-con-inner{justify-items:var(--justify-items);align-items:var(--align-items)}.e-con>.e-con-inner{gap:var(--gap);width:100%;max-width:var(--content-width);margin:0 auto;padding-inline-start:0;padding-inline-end:0;height:100%}:is(.elementor-section-wrap,[data-elementor-id])>.e-con{--margin-inline-end:auto;--margin-inline-start:auto;max-width:min(100%,var(--width))}.e-con .elementor-widget.elementor-widget{margin-block-end:0}.e-con:before,.e-con>.elementor-background-slideshow:before,.e-con>.elementor-motion-effects-container>.elementor-motion-effects-layer:before,:is(.e-con,.e-con>.e-con-inner)>.elementor-background-video-container:before{content:var(--background-overlay);display:block;position:absolute;mix-blend-mode:var(--overlay-mix-blend-mode);opacity:var(--overlay-opacity);transition:var(--overlay-transition,.3s);border-radius:var(--border-radius);border-style:var(--border-style);border-color:var(--border-color);border-block-start-width:var(--border-block-start-width);border-inline-end-width:var(--border-inline-end-width);border-block-end-width:var(--border-block-end-width);border-inline-start-width:var(--border-inline-start-width);top:calc(0px - var(--border-block-start-width));left:calc(0px - var(--border-inline-start-width));width:max(100% + var(--border-inline-end-width) + var(--border-inline-start-width),100%);height:max(100% + var(--border-block-start-width) + var(--border-block-end-width),100%)}.e-con:before{transition:background var(--overlay-transition,.3s),border-radius var(--border-transition,.3s),opacity var(--overlay-transition,.3s)}.e-con>.elementor-background-slideshow,:is(.e-con,.e-con>.e-con-inner)>.elementor-background-video-container{border-radius:var(--border-radius);border-style:var(--border-style);border-color:var(--border-color);border-block-start-width:var(--border-block-start-width);border-inline-end-width:var(--border-inline-end-width);border-block-end-width:var(--border-block-end-width);border-inline-start-width:var(--border-inline-start-width);top:calc(0px - var(--border-block-start-width));left:calc(0px - var(--border-inline-start-width));width:max(100% + var(--border-inline-end-width) + var(--border-inline-start-width),100%);height:max(100% + var(--border-block-start-width) + var(--border-block-end-width),100%)}@media (max-width:ELEMENTOR_SCREEN_MOBILE_MAX){:is(.e-con,.e-con>.e-con-inner)>.elementor-background-video-container.elementor-hidden-phone{display:none}}:is(.e-con,.e-con>.e-con-inner)>.elementor-background-video-container:before{z-index:1}:is(.e-con,.e-con>.e-con-inner)>.elementor-background-slideshow:before{z-index:2}.e-con .elementor-widget{min-width:0}.e-con .elementor-widget-empty,.e-con .elementor-widget-google_maps,.e-con .elementor-widget-video,.e-con .elementor-widget.e-widget-swiper{width:100%}.e-con>.e-con-inner>.elementor-widget>.elementor-widget-container,.e-con>.elementor-widget>.elementor-widget-container{height:100%}.e-con.e-con>.e-con-inner>.elementor-widget,.elementor.elementor .e-con>.elementor-widget{max-width:100%}@media (max-width:767px){.e-con.e-flex{--width:100%;--flex-wrap:wrap}}.e-con{--bc-margin-block-start:var(--margin-top);--bc-margin-block-end:var(--margin-bottom);--bc-margin-inline-start:var(--margin-left);--bc-margin-inline-end:var(--margin-right);--bc-padding-block-start:var(--padding-top);--bc-padding-block-end:var(--padding-bottom);--bc-padding-inline-start:var(--padding-left);--bc-padding-inline-end:var(--padding-right)}[dir=rtl] .e-con{--bc-margin-inline-start:var(--margin-right);--bc-margin-inline-end:var(--margin-left);--bc-padding-inline-start:var(--padding-right);--bc-padding-inline-end:var(--padding-left)}.elementor-form-fields-wrapper{display:flex;flex-wrap:wrap}.elementor-form-fields-wrapper.elementor-labels-above .elementor-field-group .elementor-field-subgroup,.elementor-form-fields-wrapper.elementor-labels-above .elementor-field-group>.elementor-select-wrapper,.elementor-form-fields-wrapper.elementor-labels-above .elementor-field-group>input,.elementor-form-fields-wrapper.elementor-labels-above .elementor-field-group>textarea{flex-basis:100%;max-width:100%}.elementor-form-fields-wrapper.elementor-labels-inline>.elementor-field-group .elementor-select-wrapper,.elementor-form-fields-wrapper.elementor-labels-inline>.elementor-field-group>input{flex-grow:1}.elementor-field-group{flex-wrap:wrap;align-items:center}.elementor-field-group.elementor-field-type-submit{align-items:flex-end}.elementor-field-group .elementor-field-textual{width:100%;max-width:100%;border:1px solid #69727d;background-color:transparent;color:#1f2124;vertical-align:middle;flex-grow:1}.elementor-field-group .elementor-field-textual:focus{box-shadow:inset 0 0 0 1px rgba(0,0,0,.1);outline:0}.elementor-field-group .elementor-field-textual::-moz-placeholder{color:inherit;font-family:inherit;opacity:.6}.elementor-field-group .elementor-field-textual::placeholder{color:inherit;font-family:inherit;opacity:.6}.elementor-field-group .elementor-select-wrapper{display:flex;position:relative;width:100%}.elementor-field-group .elementor-select-wrapper select{-webkit-appearance:none;-moz-appearance:none;appearance:none;color:inherit;font-size:inherit;font-family:inherit;font-weight:inherit;font-style:inherit;text-transform:inherit;letter-spacing:inherit;line-height:inherit;flex-basis:100%;padding-left:20px}.elementor-field-group .elementor-select-wrapper:before{content:"\e92a";font-family:eicons;font-size:15px;position:absolute;top:50%;transform:translateY(-50%);left:10px;pointer-events:none;text-shadow:0 0 3px rgba(0,0,0,.3)}.elementor-field-group.elementor-field-type-select-multiple .elementor-select-wrapper:before{content:""}.elementor-field-subgroup{display:flex;flex-wrap:wrap}.elementor-field-subgroup .elementor-field-option label{display:inline-block}.elementor-field-subgroup.elementor-subgroup-inline .elementor-field-option{padding-left:10px}.elementor-field-subgroup:not(.elementor-subgroup-inline) .elementor-field-option{flex-basis:100%}.elementor-field-type-acceptance .elementor-field-subgroup .elementor-field-option input,.elementor-field-type-acceptance .elementor-field-subgroup .elementor-field-option label,.elementor-field-type-checkbox .elementor-field-subgroup .elementor-field-option input,.elementor-field-type-checkbox .elementor-field-subgroup .elementor-field-option label,.elementor-field-type-radio .elementor-field-subgroup .elementor-field-option input,.elementor-field-type-radio .elementor-field-subgroup .elementor-field-option label{display:inline}.elementor-field-label{cursor:pointer}.elementor-mark-required .elementor-field-label:after{content:"*";color:red;padding-right:.2em}.elementor-field-textual{line-height:1.4;font-size:15px;min-height:40px;padding:5px 14px;border-radius:3px}.elementor-field-textual.elementor-size-xs{font-size:13px;min-height:33px;padding:4px 12px;border-radius:2px}.elementor-field-textual.elementor-size-md{font-size:16px;min-height:47px;padding:6px 16px;border-radius:4px}.elementor-field-textual.elementor-size-lg{font-size:18px;min-height:59px;padding:7px 20px;border-radius:5px}.elementor-field-textual.elementor-size-xl{font-size:20px;min-height:72px;padding:8px 24px;border-radius:6px}.elementor-button-align-stretch .elementor-field-type-submit:not(.e-form__buttons__wrapper) .elementor-button{flex-basis:100%}.elementor-button-align-stretch .e-form__buttons__wrapper{flex-basis:50%;flex-grow:1}.elementor-button-align-stretch .e-form__buttons__wrapper__button{flex-basis:100%}.elementor-button-align-center .e-form__buttons,.elementor-button-align-center .elementor-field-type-submit{justify-content:center}.elementor-button-align-start .e-form__buttons,.elementor-button-align-start .elementor-field-type-submit{justify-content:flex-end}.elementor-button-align-end .e-form__buttons,.elementor-button-align-end .elementor-field-type-submit{justify-content:flex-start}.elementor-button-align-center .elementor-field-type-submit:not(.e-form__buttons__wrapper) .elementor-button,.elementor-button-align-end .elementor-field-type-submit:not(.e-form__buttons__wrapper) .elementor-button,.elementor-button-align-start .elementor-field-type-submit:not(.e-form__buttons__wrapper) .elementor-button{flex-basis:auto}.elementor-button-align-center .e-form__buttons__wrapper,.elementor-button-align-end .e-form__buttons__wrapper,.elementor-button-align-start .e-form__buttons__wrapper{flex-grow:0}.elementor-button-align-center .e-form__buttons__wrapper,.elementor-button-align-center .e-form__buttons__wrapper__button,.elementor-button-align-end .e-form__buttons__wrapper,.elementor-button-align-end .e-form__buttons__wrapper__button,.elementor-button-align-start .e-form__buttons__wrapper,.elementor-button-align-start .e-form__buttons__wrapper__button{flex-basis:auto}@media screen and (max-width:ELEMENTOR_SCREEN_TABLET_MAX){.elementor-tablet-button-align-stretch .elementor-field-type-submit:not(.e-form__buttons__wrapper) .elementor-button{flex-basis:100%}.elementor-tablet-button-align-stretch .e-form__buttons__wrapper{flex-basis:50%;flex-grow:1}.elementor-tablet-button-align-stretch .e-form__buttons__wrapper__button{flex-basis:100%}.elementor-tablet-button-align-center .e-form__buttons,.elementor-tablet-button-align-center .elementor-field-type-submit{justify-content:center}.elementor-tablet-button-align-start .e-form__buttons,.elementor-tablet-button-align-start .elementor-field-type-submit{justify-content:flex-end}.elementor-tablet-button-align-end .e-form__buttons,.elementor-tablet-button-align-end .elementor-field-type-submit{justify-content:flex-start}.elementor-tablet-button-align-center .elementor-field-type-submit:not(.e-form__buttons__wrapper) .elementor-button,.elementor-tablet-button-align-end .elementor-field-type-submit:not(.e-form__buttons__wrapper) .elementor-button,.elementor-tablet-button-align-start .elementor-field-type-submit:not(.e-form__buttons__wrapper) .elementor-button{flex-basis:auto}.elementor-tablet-button-align-center .e-form__buttons__wrapper,.elementor-tablet-button-align-end .e-form__buttons__wrapper,.elementor-tablet-button-align-start .e-form__buttons__wrapper{flex-grow:0}.elementor-tablet-button-align-center .e-form__buttons__wrapper,.elementor-tablet-button-align-center .e-form__buttons__wrapper__button,.elementor-tablet-button-align-end .e-form__buttons__wrapper,.elementor-tablet-button-align-end .e-form__buttons__wrapper__button,.elementor-tablet-button-align-start .e-form__buttons__wrapper,.elementor-tablet-button-align-start .e-form__buttons__wrapper__button{flex-basis:auto}}@media screen and (max-width:ELEMENTOR_SCREEN_MOBILE_MAX){.elementor-mobile-button-align-stretch .elementor-field-type-submit:not(.e-form__buttons__wrapper) .elementor-button{flex-basis:100%}.elementor-mobile-button-align-stretch .e-form__buttons__wrapper{flex-basis:50%;flex-grow:1}.elementor-mobile-button-align-stretch .e-form__buttons__wrapper__button{flex-basis:100%}.elementor-mobile-button-align-center .e-form__buttons,.elementor-mobile-button-align-center .elementor-field-type-submit{justify-content:center}.elementor-mobile-button-align-start .e-form__buttons,.elementor-mobile-button-align-start .elementor-field-type-submit{justify-content:flex-end}.elementor-mobile-button-align-end .e-form__buttons,.elementor-mobile-button-align-end .elementor-field-type-submit{justify-content:flex-start}.elementor-mobile-button-align-center .elementor-field-type-submit:not(.e-form__buttons__wrapper) .elementor-button,.elementor-mobile-button-align-end .elementor-field-type-submit:not(.e-form__buttons__wrapper) .elementor-button,.elementor-mobile-button-align-start .elementor-field-type-submit:not(.e-form__buttons__wrapper) .elementor-button{flex-basis:auto}.elementor-mobile-button-align-center .e-form__buttons__wrapper,.elementor-mobile-button-align-end .e-form__buttons__wrapper,.elementor-mobile-button-align-start .e-form__buttons__wrapper{flex-grow:0}.elementor-mobile-button-align-center .e-form__buttons__wrapper,.elementor-mobile-button-align-center .e-form__buttons__wrapper__button,.elementor-mobile-button-align-end .e-form__buttons__wrapper,.elementor-mobile-button-align-end .e-form__buttons__wrapper__button,.elementor-mobile-button-align-start .e-form__buttons__wrapper,.elementor-mobile-button-align-start .e-form__buttons__wrapper__button{flex-basis:auto}}.elementor-error .elementor-field{border-color:#d9534f}.elementor-error .help-inline{color:#d9534f;font-size:.9em}.elementor-message{margin:10px 0;font-size:1em;line-height:1}.elementor-message:before{content:"\e90e";display:inline-block;font-family:eicons;font-weight:400;font-style:normal;vertical-align:middle;margin-left:5px}.elementor-message.elementor-message-danger{color:#d9534f}.elementor-message.elementor-message-danger:before{content:"\e87f"}.elementor-message.form-message-success{color:#5cb85c}.elementor-form .elementor-button{padding-top:0;padding-bottom:0;border:none}.elementor-form .elementor-button>span{display:flex;justify-content:center}.elementor-form .elementor-button.elementor-size-xs{min-height:33px}.elementor-form .elementor-button.elementor-size-sm{min-height:40px}.elementor-form .elementor-button.elementor-size-md{min-height:47px}.elementor-form .elementor-button.elementor-size-lg{min-height:59px}.elementor-form .elementor-button.elementor-size-xl{min-height:72px}.elementor-element .elementor-widget-container{transition:background .3s,border .3s,border-radius .3s,box-shadow .3s,transform var(--e-transform-transition-duration,.4s)}.elementor-button{display:inline-block;line-height:1;background-color:#69727d;font-size:15px;padding:12px 24px;border-radius:3px;color:#fff;fill:#fff;text-align:center;transition:all .3s}.elementor-button:focus,.elementor-button:hover,.elementor-button:visited{color:#fff}.elementor-button-content-wrapper{display:flex;justify-content:center}.elementor-button-icon{flex-grow:0;order:5}.elementor-button-icon svg{width:1em;height:auto}.elementor-button-icon .e-font-icon-svg{height:1em}.elementor-button-text{flex-grow:1;order:10;display:inline-block}.elementor-button.elementor-size-xs{font-size:13px;padding:10px 20px;border-radius:2px}.elementor-button.elementor-size-md{font-size:16px;padding:15px 30px;border-radius:4px}.elementor-button.elementor-size-lg{font-size:18px;padding:20px 40px;border-radius:5px}.elementor-button.elementor-size-xl{font-size:20px;padding:25px 50px;border-radius:6px}.elementor-button .elementor-align-icon-right{margin-left:5px;order:5}.elementor-button .elementor-align-icon-left{margin-right:5px;order:15}.elementor-button span{text-decoration:inherit}.elementor-element.elementor-button-info .elementor-button{background-color:#5bc0de}.elementor-element.elementor-button-success .elementor-button{background-color:#5cb85c}.elementor-element.elementor-button-warning .elementor-button{background-color:#f0ad4e}.elementor-element.elementor-button-danger .elementor-button{background-color:#d9534f}.elementor-widget-button .elementor-button .elementor-button-info{background-color:#5bc0de}.elementor-widget-button .elementor-button .elementor-button-success{background-color:#5cb85c}.elementor-widget-button .elementor-button .elementor-button-warning{background-color:#f0ad4e}.elementor-widget-button .elementor-button .elementor-button-danger{background-color:#d9534f}.elementor-tab-title a{color:inherit}.elementor-view-stacked .elementor-icon{padding:.5em;background-color:#69727d;color:#fff;fill:#fff}.elementor-view-framed .elementor-icon{padding:.5em;color:#69727d;border:3px solid #69727d;background-color:transparent}.elementor-icon{display:inline-block;line-height:1;transition:all .3s;color:#69727d;font-size:50px;text-align:center}.elementor-icon:hover{color:#69727d}.elementor-icon i,.elementor-icon svg{width:1em;height:1em;position:relative;display:block}.elementor-icon i:before,.elementor-icon svg:before{position:absolute;left:50%;transform:translateX(-50%)}.elementor-icon i.fad{width:auto}.elementor-shape-circle .elementor-icon{border-radius:50%}.e-transform .elementor-widget-container{transform:perspective(var(--e-transform-perspective,0)) rotate(var(--e-transform-rotateZ,0)) rotateX(var(--e-transform-rotateX,0)) rotateY(var(--e-transform-rotateY,0)) translate(var(--e-transform-translate,0)) translateX(var(--e-transform-translateX,0)) translateY(var(--e-transform-translateY,0)) scaleX(calc(var(--e-transform-flipX, 1) * var(--e-transform-scaleX, var(--e-transform-scale, 1)))) scaleY(calc(var(--e-transform-flipY, 1) * var(--e-transform-scaleY, var(--e-transform-scale, 1)))) skewX(var(--e-transform-skewX,0)) skewY(var(--e-transform-skewY,0));transform-origin:var(--e-transform-origin-y) var(--e-transform-origin-x)}.e-con.e-transform{transform:perspective(var(--e-con-transform-perspective,0)) rotate(var(--e-con-transform-rotateZ,0)) rotateX(var(--e-con-transform-rotateX,0)) rotateY(var(--e-con-transform-rotateY,0)) translate(var(--e-con-transform-translate,0)) translateX(var(--e-con-transform-translateX,0)) translateY(var(--e-con-transform-translateY,0)) scaleX(calc(var(--e-con-transform-flipX, 1) * var(--e-con-transform-scaleX, var(--e-con-transform-scale, 1)))) scaleY(calc(var(--e-con-transform-flipY, 1) * var(--e-con-transform-scaleY, var(--e-con-transform-scale, 1)))) skewX(var(--e-con-transform-skewX,0)) skewY(var(--e-con-transform-skewY,0));transform-origin:var(--e-con-transform-origin-y) var(--e-con-transform-origin-x)}.elementor-element,.elementor-lightbox{--swiper-theme-color:#000;--swiper-navigation-size:44px;--swiper-pagination-bullet-size:6px;--swiper-pagination-bullet-horizontal-gap:6px}.elementor-element .swiper-container .swiper-slide figure,.elementor-element .swiper .swiper-slide figure,.elementor-lightbox .swiper-container .swiper-slide figure,.elementor-lightbox .swiper .swiper-slide figure{line-height:0}.elementor-element .swiper-container .elementor-lightbox-content-source,.elementor-element .swiper .elementor-lightbox-content-source,.elementor-lightbox .swiper-container .elementor-lightbox-content-source,.elementor-lightbox .swiper .elementor-lightbox-content-source{display:none}.elementor-element .swiper-container .elementor-swiper-button,.elementor-element .swiper-container~.elementor-swiper-button,.elementor-element .swiper .elementor-swiper-button,.elementor-element .swiper~.elementor-swiper-button,.elementor-lightbox .swiper-container .elementor-swiper-button,.elementor-lightbox .swiper-container~.elementor-swiper-button,.elementor-lightbox .swiper .elementor-swiper-button,.elementor-lightbox .swiper~.elementor-swiper-button{position:absolute;display:inline-flex;z-index:1;cursor:pointer;font-size:25px;color:hsla(0,0%,93.3%,.9);top:50%;transform:translateY(-50%)}.elementor-element .swiper-container .elementor-swiper-button svg,.elementor-element .swiper-container~.elementor-swiper-button svg,.elementor-element .swiper .elementor-swiper-button svg,.elementor-element .swiper~.elementor-swiper-button svg,.elementor-lightbox .swiper-container .elementor-swiper-button svg,.elementor-lightbox .swiper-container~.elementor-swiper-button svg,.elementor-lightbox .swiper .elementor-swiper-button svg,.elementor-lightbox .swiper~.elementor-swiper-button svg{fill:hsla(0,0%,93.3%,.9);height:1em;width:1em}.elementor-element .swiper-container .elementor-swiper-button-prev,.elementor-element .swiper-container~.elementor-swiper-button-prev,.elementor-element .swiper .elementor-swiper-button-prev,.elementor-element .swiper~.elementor-swiper-button-prev,.elementor-lightbox .swiper-container .elementor-swiper-button-prev,.elementor-lightbox .swiper-container~.elementor-swiper-button-prev,.elementor-lightbox .swiper .elementor-swiper-button-prev,.elementor-lightbox .swiper~.elementor-swiper-button-prev{left:10px}.elementor-element .swiper-container .elementor-swiper-button-next,.elementor-element .swiper-container~.elementor-swiper-button-next,.elementor-element .swiper .elementor-swiper-button-next,.elementor-element .swiper~.elementor-swiper-button-next,.elementor-lightbox .swiper-container .elementor-swiper-button-next,.elementor-lightbox .swiper-container~.elementor-swiper-button-next,.elementor-lightbox .swiper .elementor-swiper-button-next,.elementor-lightbox .swiper~.elementor-swiper-button-next{right:10px}.elementor-element .swiper-container .elementor-swiper-button.swiper-button-disabled,.elementor-element .swiper-container~.elementor-swiper-button.swiper-button-disabled,.elementor-element .swiper .elementor-swiper-button.swiper-button-disabled,.elementor-element .swiper~.elementor-swiper-button.swiper-button-disabled,.elementor-lightbox .swiper-container .elementor-swiper-button.swiper-button-disabled,.elementor-lightbox .swiper-container~.elementor-swiper-button.swiper-button-disabled,.elementor-lightbox .swiper .elementor-swiper-button.swiper-button-disabled,.elementor-lightbox .swiper~.elementor-swiper-button.swiper-button-disabled{opacity:.3}.elementor-element .swiper-container .swiper-image-stretch .swiper-slide .swiper-slide-image,.elementor-element .swiper .swiper-image-stretch .swiper-slide .swiper-slide-image,.elementor-lightbox .swiper-container .swiper-image-stretch .swiper-slide .swiper-slide-image,.elementor-lightbox .swiper .swiper-image-stretch .swiper-slide .swiper-slide-image{width:100%}.elementor-element .swiper-container .swiper-horizontal>.swiper-pagination-bullets,.elementor-element .swiper-container .swiper-pagination-bullets.swiper-pagination-horizontal,.elementor-element .swiper-container .swiper-pagination-custom,.elementor-element .swiper-container .swiper-pagination-fraction,.elementor-element .swiper-container~.swiper-pagination-bullets.swiper-pagination-horizontal,.elementor-element .swiper-container~.swiper-pagination-custom,.elementor-element .swiper-container~.swiper-pagination-fraction,.elementor-element .swiper .swiper-horizontal>.swiper-pagination-bullets,.elementor-element .swiper .swiper-pagination-bullets.swiper-pagination-horizontal,.elementor-element .swiper .swiper-pagination-custom,.elementor-element .swiper .swiper-pagination-fraction,.elementor-element .swiper~.swiper-pagination-bullets.swiper-pagination-horizontal,.elementor-element .swiper~.swiper-pagination-custom,.elementor-element .swiper~.swiper-pagination-fraction,.elementor-lightbox .swiper-container .swiper-horizontal>.swiper-pagination-bullets,.elementor-lightbox .swiper-container .swiper-pagination-bullets.swiper-pagination-horizontal,.elementor-lightbox .swiper-container .swiper-pagination-custom,.elementor-lightbox .swiper-container .swiper-pagination-fraction,.elementor-lightbox .swiper-container~.swiper-pagination-bullets.swiper-pagination-horizontal,.elementor-lightbox .swiper-container~.swiper-pagination-custom,.elementor-lightbox .swiper-container~.swiper-pagination-fraction,.elementor-lightbox .swiper .swiper-horizontal>.swiper-pagination-bullets,.elementor-lightbox .swiper .swiper-pagination-bullets.swiper-pagination-horizontal,.elementor-lightbox .swiper .swiper-pagination-custom,.elementor-lightbox .swiper .swiper-pagination-fraction,.elementor-lightbox .swiper~.swiper-pagination-bullets.swiper-pagination-horizontal,.elementor-lightbox .swiper~.swiper-pagination-custom,.elementor-lightbox .swiper~.swiper-pagination-fraction{bottom:5px}.elementor-element .swiper-container.swiper-cube .elementor-swiper-button,.elementor-element .swiper-container.swiper-cube~.elementor-swiper-button,.elementor-element .swiper.swiper-cube .elementor-swiper-button,.elementor-element .swiper.swiper-cube~.elementor-swiper-button,.elementor-lightbox .swiper-container.swiper-cube .elementor-swiper-button,.elementor-lightbox .swiper-container.swiper-cube~.elementor-swiper-button,.elementor-lightbox .swiper.swiper-cube .elementor-swiper-button,.elementor-lightbox .swiper.swiper-cube~.elementor-swiper-button{transform:translate3d(0,-50%,1px)}.elementor-element :where(.swiper-container-horizontal)~.swiper-pagination-bullets,.elementor-lightbox :where(.swiper-container-horizontal)~.swiper-pagination-bullets{bottom:5px;left:0;width:100%}.elementor-element :where(.swiper-container-horizontal)~.swiper-pagination-bullets .swiper-pagination-bullet,.elementor-lightbox :where(.swiper-container-horizontal)~.swiper-pagination-bullets .swiper-pagination-bullet{margin:0 var(--swiper-pagination-bullet-horizontal-gap,4px)}.elementor-element :where(.swiper-container-horizontal)~.swiper-pagination-progressbar,.elementor-lightbox :where(.swiper-container-horizontal)~.swiper-pagination-progressbar{width:100%;height:4px;left:0;top:0}.elementor-element.elementor-pagination-position-outside .swiper,.elementor-element.elementor-pagination-position-outside .swiper-container,.elementor-lightbox.elementor-pagination-position-outside .swiper,.elementor-lightbox.elementor-pagination-position-outside .swiper-container{padding-bottom:30px}.elementor-element.elementor-pagination-position-outside .swiper-container .elementor-swiper-button,.elementor-element.elementor-pagination-position-outside .swiper-container~.elementor-swiper-button,.elementor-element.elementor-pagination-position-outside .swiper .elementor-swiper-button,.elementor-element.elementor-pagination-position-outside .swiper~.elementor-swiper-button,.elementor-lightbox.elementor-pagination-position-outside .swiper-container .elementor-swiper-button,.elementor-lightbox.elementor-pagination-position-outside .swiper-container~.elementor-swiper-button,.elementor-lightbox.elementor-pagination-position-outside .swiper .elementor-swiper-button,.elementor-lightbox.elementor-pagination-position-outside .swiper~.elementor-swiper-button{top:calc(50% - 30px / 2)}.elementor-element .elementor-swiper,.elementor-lightbox .elementor-swiper{position:relative}.elementor-element .elementor-main-swiper,.elementor-lightbox .elementor-main-swiper{position:static}.elementor-element.elementor-arrows-position-outside .swiper,.elementor-element.elementor-arrows-position-outside .swiper-container,.elementor-lightbox.elementor-arrows-position-outside .swiper,.elementor-lightbox.elementor-arrows-position-outside .swiper-container{width:calc(100% - 60px)}.elementor-element.elementor-arrows-position-outside .swiper-container .elementor-swiper-button-prev,.elementor-element.elementor-arrows-position-outside .swiper-container~.elementor-swiper-button-prev,.elementor-element.elementor-arrows-position-outside .swiper .elementor-swiper-button-prev,.elementor-element.elementor-arrows-position-outside .swiper~.elementor-swiper-button-prev,.elementor-lightbox.elementor-arrows-position-outside .swiper-container .elementor-swiper-button-prev,.elementor-lightbox.elementor-arrows-position-outside .swiper-container~.elementor-swiper-button-prev,.elementor-lightbox.elementor-arrows-position-outside .swiper .elementor-swiper-button-prev,.elementor-lightbox.elementor-arrows-position-outside .swiper~.elementor-swiper-button-prev{left:0}.elementor-element.elementor-arrows-position-outside .swiper-container .elementor-swiper-button-next,.elementor-element.elementor-arrows-position-outside .swiper-container~.elementor-swiper-button-next,.elementor-element.elementor-arrows-position-outside .swiper .elementor-swiper-button-next,.elementor-element.elementor-arrows-position-outside .swiper~.elementor-swiper-button-next,.elementor-lightbox.elementor-arrows-position-outside .swiper-container .elementor-swiper-button-next,.elementor-lightbox.elementor-arrows-position-outside .swiper-container~.elementor-swiper-button-next,.elementor-lightbox.elementor-arrows-position-outside .swiper .elementor-swiper-button-next,.elementor-lightbox.elementor-arrows-position-outside .swiper~.elementor-swiper-button-next{right:0}.elementor-lightbox{--lightbox-ui-color:hsla(0,0%,93.3%,0.9);--lightbox-ui-color-hover:#fff;--lightbox-text-color:var(--lightbox-ui-color);--lightbox-header-icons-size:20px;--lightbox-navigation-icons-size:25px}.elementor-lightbox:not(.elementor-popup-modal) .dialog-header,.elementor-lightbox:not(.elementor-popup-modal) .dialog-message{text-align:center}.elementor-lightbox .dialog-header{display:none}.elementor-lightbox .dialog-widget-content{background:none;box-shadow:none;width:100%;height:100%}.elementor-lightbox .dialog-message{animation-duration:.3s;height:100%}.elementor-lightbox .dialog-message.dialog-lightbox-message{padding:0}.elementor-lightbox .dialog-lightbox-close-button{cursor:pointer;position:absolute;font-size:var(--lightbox-header-icons-size);left:.75em;margin-top:13px;padding:.25em;z-index:2;line-height:1;display:flex}.elementor-lightbox .dialog-lightbox-close-button svg{height:1em;width:1em}.elementor-lightbox .dialog-lightbox-close-button,.elementor-lightbox .elementor-swiper-button{color:var(--lightbox-ui-color);transition:all .3s;opacity:1}.elementor-lightbox .dialog-lightbox-close-button svg,.elementor-lightbox .elementor-swiper-button svg{fill:var(--lightbox-ui-color)}.elementor-lightbox .dialog-lightbox-close-button:hover,.elementor-lightbox .elementor-swiper-button:hover{color:var(--lightbox-ui-color-hover)}.elementor-lightbox .dialog-lightbox-close-button:hover svg,.elementor-lightbox .elementor-swiper-button:hover svg{fill:var(--lightbox-ui-color-hover)}.elementor-lightbox .swiper,.elementor-lightbox .swiper-container{height:100%}.elementor-lightbox .elementor-lightbox-item{display:flex;align-items:center;justify-content:center;position:relative;padding:70px;box-sizing:border-box;height:100%;margin:auto}@media (max-width:ELEMENTOR_SCREEN_MOBILE_MAX){.elementor-lightbox .elementor-lightbox-item{padding:70px 0}}.elementor-lightbox .elementor-lightbox-image{max-height:100%;-webkit-user-select:none;-moz-user-select:none;user-select:none}.elementor-lightbox .elementor-lightbox-image,.elementor-lightbox .elementor-lightbox-image:hover{opacity:1;filter:none;border:none}.elementor-lightbox .elementor-lightbox-image{box-shadow:0 0 30px rgba(0,0,0,.3),0 0 8px -5px rgba(0,0,0,.3);border-radius:2px}.elementor-lightbox .elementor-video-container{width:100%;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.elementor-lightbox .elementor-video-container .elementor-video-landscape,.elementor-lightbox .elementor-video-container .elementor-video-portrait,.elementor-lightbox .elementor-video-container .elementor-video-square{width:100%;height:100%;margin:auto}.elementor-lightbox .elementor-video-container .elementor-video-landscape iframe,.elementor-lightbox .elementor-video-container .elementor-video-portrait iframe,.elementor-lightbox .elementor-video-container .elementor-video-square iframe{border:0;background-color:#000}.elementor-lightbox .elementor-video-container .elementor-video-landscape iframe,.elementor-lightbox .elementor-video-container .elementor-video-landscape video,.elementor-lightbox .elementor-video-container .elementor-video-portrait iframe,.elementor-lightbox .elementor-video-container .elementor-video-portrait video,.elementor-lightbox .elementor-video-container .elementor-video-square iframe,.elementor-lightbox .elementor-video-container .elementor-video-square video{aspect-ratio:var(--video-aspect-ratio,1.77777)}@supports not (aspect-ratio:1/1){.elementor-lightbox .elementor-video-container .elementor-video-landscape,.elementor-lightbox .elementor-video-container .elementor-video-portrait,.elementor-lightbox .elementor-video-container .elementor-video-square{position:relative;overflow:hidden;height:0;padding-bottom:calc(100% / var(--video-aspect-ratio, 1.77777))}.elementor-lightbox .elementor-video-container .elementor-video-landscape iframe,.elementor-lightbox .elementor-video-container .elementor-video-landscape video,.elementor-lightbox .elementor-video-container .elementor-video-portrait iframe,.elementor-lightbox .elementor-video-container .elementor-video-portrait video,.elementor-lightbox .elementor-video-container .elementor-video-square iframe,.elementor-lightbox .elementor-video-container .elementor-video-square video{position:absolute;top:0;right:0;bottom:0;left:0}}.elementor-lightbox .elementor-video-container .elementor-video-square iframe,.elementor-lightbox .elementor-video-container .elementor-video-square video{width:min(90vh,90vw);height:min(90vh,90vw)}.elementor-lightbox .elementor-video-container .elementor-video-landscape iframe,.elementor-lightbox .elementor-video-container .elementor-video-landscape video{width:100%;max-height:90vh}.elementor-lightbox .elementor-video-container .elementor-video-portrait iframe,.elementor-lightbox .elementor-video-container .elementor-video-portrait video{height:100%;max-width:90vw}@media (min-width:ELEMENTOR_SCREEN_TABLET_NEXT){.elementor-lightbox .elementor-video-container .elementor-video-landscape{width:85vw;max-height:85vh}.elementor-lightbox .elementor-video-container .elementor-video-portrait{height:85vh;max-width:85vw}}@media (max-width:ELEMENTOR_SCREEN_TABLET_MAX){.elementor-lightbox .elementor-video-container .elementor-video-landscape{width:95vw;max-height:95vh}.elementor-lightbox .elementor-video-container .elementor-video-portrait{height:95vh;max-width:95vw}}.elementor-lightbox .swiper-container .elementor-swiper-button-prev,.elementor-lightbox .swiper .elementor-swiper-button-prev{left:0}.elementor-lightbox .swiper-container .elementor-swiper-button-next,.elementor-lightbox .swiper .elementor-swiper-button-next{right:0}.elementor-lightbox .swiper-container .swiper-pagination-fraction,.elementor-lightbox .swiper .swiper-pagination-fraction{width:-moz-max-content;width:max-content;color:#fff}.elementor-lightbox .elementor-swiper-button:focus{outline-width:1px}.elementor-lightbox .elementor-swiper-button-next,.elementor-lightbox .elementor-swiper-button-prev{height:100%;display:flex;align-items:center;width:15%;justify-content:center;font-size:var(--lightbox-navigation-icons-size)}@media (max-width:ELEMENTOR_SCREEN_MOBILE_MAX){.elementor-lightbox .elementor-swiper-button:focus{outline:none}.elementor-lightbox .elementor-swiper-button-next,.elementor-lightbox .elementor-swiper-button-prev{width:20%}.elementor-lightbox .elementor-swiper-button-next i,.elementor-lightbox .elementor-swiper-button-prev i{padding:10px;background-color:rgba(0,0,0,.5)}.elementor-lightbox .elementor-swiper-button-prev{left:0;justify-content:flex-start}.elementor-lightbox .elementor-swiper-button-next{right:0;justify-content:flex-end}}.elementor-slideshow__counter{color:currentColor;font-size:.75em;width:-moz-max-content;width:max-content}.elementor-slideshow__footer,.elementor-slideshow__header{position:absolute;left:0;width:100%;padding:15px 20px;transition:.3s}.elementor-slideshow__footer{color:var(--lightbox-text-color)}.elementor-slideshow__header{color:var(--lightbox-ui-color);display:flex;flex-direction:row-reverse;font-size:var(--lightbox-header-icons-size);padding-right:1em;padding-left:2.6em;top:0;align-items:center;z-index:10}.elementor-slideshow__header>i,.elementor-slideshow__header>svg{cursor:pointer;padding:.25em;margin:0 .35em}.elementor-slideshow__header>i{font-size:inherit}.elementor-slideshow__header>i:hover{color:var(--lightbox-ui-color-hover)}.elementor-slideshow__header>svg{box-sizing:content-box;fill:var(--lightbox-ui-color);height:1em;width:1em}.elementor-slideshow__header>svg:hover{fill:var(--lightbox-ui-color-hover)}.elementor-slideshow__header .elementor-slideshow__counter{margin-left:auto}.elementor-slideshow__header .elementor-icon-share{z-index:5}.elementor-slideshow__share-menu{background-color:transparent;width:0;height:0;position:absolute;overflow:hidden;transition:background-color .4s}.elementor-slideshow__share-menu .elementor-slideshow__share-links a{color:#0c0d0e}.elementor-slideshow__share-links{display:block;position:absolute;min-width:200px;left:2.8em;top:3em;background-color:#fff;border-radius:3px;padding:14px 20px;transform:scale(0);opacity:0;transform-origin:90% 10%;transition:all .25s .1s;box-shadow:0 4px 15px rgba(0,0,0,.3)}.elementor-slideshow__share-links a{text-align:right;color:#3f444b;font-size:12px;line-height:2.5;display:block;opacity:0;transition:opacity .5s .1s}.elementor-slideshow__share-links a:hover{color:#000}.elementor-slideshow__share-links a i,.elementor-slideshow__share-links a svg{margin-left:.75em}.elementor-slideshow__share-links a i{font-size:1.25em}.elementor-slideshow__share-links a svg{height:1.25em;width:1.25em}.elementor-slideshow__share-links:before{content:"";display:block;position:absolute;top:1px;left:.5em;border:.45em solid transparent;border-bottom-color:#fff;transform:translateY(-100%) scaleX(.7)}.elementor-slideshow__footer{bottom:0;z-index:5;position:fixed}.elementor-slideshow__description,.elementor-slideshow__title{margin:0}.elementor-slideshow__title{font-size:16px;font-weight:700}.elementor-slideshow__description{font-size:14px}.elementor-slideshow--ui-hidden .elementor-slideshow__footer,.elementor-slideshow--ui-hidden .elementor-slideshow__header{opacity:0;pointer-events:none}.elementor-slideshow--ui-hidden .elementor-swiper-button-next,.elementor-slideshow--ui-hidden .elementor-swiper-button-prev{opacity:0}.elementor-slideshow--fullscreen-mode .elementor-video-container{width:100%}.elementor-slideshow--zoom-mode .elementor-slideshow__footer,.elementor-slideshow--zoom-mode .elementor-slideshow__header{background-color:rgba(0,0,0,.5)}.elementor-slideshow--zoom-mode .elementor-swiper-button-next,.elementor-slideshow--zoom-mode .elementor-swiper-button-prev{opacity:0;pointer-events:none}.elementor-slideshow--share-mode .elementor-slideshow__share-menu{top:0;left:0;width:100vw;height:100vh;opacity:1;cursor:default;background-color:rgba(0,0,0,.5)}.elementor-slideshow--share-mode .elementor-slideshow__share-links{transform:scale(1)}.elementor-slideshow--share-mode .elementor-slideshow__share-links,.elementor-slideshow--share-mode .elementor-slideshow__share-links a{opacity:1}.elementor-slideshow--share-mode .elementor-slideshow__share-links .eicon-twitter{color:#1da1f2}.elementor-slideshow--share-mode .elementor-slideshow__share-links .eicon-facebook{color:#3b5998}.elementor-slideshow--share-mode .elementor-slideshow__share-links .eicon-pinterest{color:#bd081c}.elementor-slideshow--share-mode .elementor-slideshow__share-links .eicon-download-bold{color:#9da5ae}.elementor-slideshow--share-mode .elementor-slideshow__share-links .e-eicon-twitter{fill:#1da1f2}.elementor-slideshow--share-mode .elementor-slideshow__share-links .e-eicon-facebook{fill:#3b5998}.elementor-slideshow--share-mode .elementor-slideshow__share-links .e-eicon-pinterest{fill:#bd081c}.elementor-slideshow--share-mode .elementor-slideshow__share-links .e-eicon-download-bold{fill:#9da5ae}.elementor-slideshow--share-mode .eicon-share-arrow{z-index:2}.animated{animation-duration:1.25s}.animated.animated-slow{animation-duration:2s}.animated.animated-fast{animation-duration:.75s}.animated.infinite{animation-iteration-count:infinite}.animated.reverse{animation-direction:reverse;animation-fill-mode:forwards}@media (prefers-reduced-motion:reduce){.animated{animation:none}}.elementor-shape{overflow:hidden;position:absolute;left:0;width:100%;line-height:0;direction:ltr}.elementor-shape-top{top:-1px}.elementor-shape-top:not([data-negative=false]) svg{z-index:-1}.elementor-shape-bottom{bottom:-1px}.elementor-shape-bottom:not([data-negative=true]) svg{z-index:-1}.elementor-shape[data-negative=false].elementor-shape-bottom,.elementor-shape[data-negative=true].elementor-shape-top{transform:rotate(180deg)}.elementor-shape svg{display:block;width:calc(100% + 1.3px);position:relative;left:50%;transform:translateX(-50%)}.elementor-shape .elementor-shape-fill{fill:#fff;transform-origin:center;transform:rotateY(0deg)}#wp-admin-bar-elementor_edit_page>.ab-item:before{content:"\e813";font-family:eicons;top:3px;font-size:18px}#wp-admin-bar-elementor_edit_page .ab-submenu .ab-item{display:flex;width:200px}#wp-admin-bar-elementor_edit_page .elementor-edit-link-title{white-space:nowrap;text-overflow:ellipsis;overflow:hidden;width:100%}#wp-admin-bar-elementor_edit_page .elementor-edit-link-type{background:#3f444b;font-size:11px;line-height:9px;margin-top:6px;padding:4px 8px;border-radius:3px}#wp-admin-bar-elementor_inspector>.ab-item:before{content:"\f348";top:2px}#wpadminbar *{font-style:normal}.page-template-elementor_canvas.elementor-page:before{display:none}.elementor-post__thumbnail__link{transition:none}#left-area ul.elementor-icon-list-items,.elementor-edit-area .elementor-element ul.elementor-icon-list-items,.elementor .elementor-element ul.elementor-icon-list-items{padding:0}.e--ua-appleWebkit.rtl{--flex-right:flex-start}.e--ua-appleWebkit .elementor-share-buttons--align-right,.e--ua-appleWebkit .elementor-widget-social-icons.e-grid-align-right{--justify-content:var(--flex-right,flex-end)}.e--ua-appleWebkit .elementor-share-buttons--align-center,.e--ua-appleWebkit .elementor-widget-social-icons.e-grid-align-center{--justify-content:center}.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-center .elementor-grid,.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-justify .elementor-grid,.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-right .elementor-grid,.e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-center .elementor-grid,.e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-right .elementor-grid{width:auto;display:flex;flex-wrap:wrap;justify-content:var(--justify-content,space-between);margin-left:calc(-.5 * var(--grid-column-gap));margin-right:calc(-.5 * var(--grid-column-gap))}.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-center .elementor-grid-item,.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-justify .elementor-grid-item,.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-right .elementor-grid-item,.e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-center .elementor-grid-item,.e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-right .elementor-grid-item{margin-left:calc(.5 * var(--grid-column-gap));margin-right:calc(.5 * var(--grid-column-gap))}.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-left .elementor-grid,.e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-left .elementor-grid{display:inline-block}.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-left .elementor-grid,.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-left .elementor-grid-item,.e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-left .elementor-grid,.e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-left .elementor-grid-item{margin-left:0;margin-right:0}@media (max-width:ELEMENTOR_SCREEN_TABLET_MAX){.e--ua-appleWebkit .elementor-share-buttons-tablet--align-right,.e--ua-appleWebkit .elementor-widget-social-icons.e-grid-align-tablet-right{--justify-content:var(--flex-right,flex-end)}.e--ua-appleWebkit .elementor-share-buttons-tablet--align-center,.e--ua-appleWebkit .elementor-widget-social-icons.e-grid-align-tablet-center{--justify-content:center}.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-tablet-center .elementor-grid,.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-tablet-justify .elementor-grid,.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-tablet-right .elementor-grid,.e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-tablet-center .elementor-grid,.e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-tablet-right .elementor-grid{width:auto;display:flex;flex-wrap:wrap;justify-content:var(--justify-content,space-between);margin-left:calc(-.5 * var(--grid-column-gap));margin-right:calc(-.5 * var(--grid-column-gap))}.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-tablet-center .elementor-grid-item,.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-tablet-justify .elementor-grid-item,.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-tablet-right .elementor-grid-item,.e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-tablet-center .elementor-grid-item,.e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-tablet-right .elementor-grid-item{margin-left:calc(.5 * var(--grid-column-gap));margin-right:calc(.5 * var(--grid-column-gap))}.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons-tablet--align-left .elementor-grid,.e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-tablet-left .elementor-grid{display:inline-block}.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons-tablet--align-left .elementor-grid,.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons-tablet--align-left .elementor-grid-item,.e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-tablet-left .elementor-grid,.e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-tablet-left .elementor-grid-item{margin-left:0;margin-right:0}}@media (max-width:ELEMENTOR_SCREEN_MOBILE_MAX){.e--ua-appleWebkit .elementor-share-buttons-mobile--align-right,.e--ua-appleWebkit .elementor-widget-social-icons.e-grid-align-mobile-right{--justify-content:var(--flex-right,flex-end)}.e--ua-appleWebkit .elementor-share-buttons-mobile--align-center,.e--ua-appleWebkit .elementor-widget-social-icons.e-grid-align-mobile-center{--justify-content:center}.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-mobile-center .elementor-grid,.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-mobile-justify .elementor-grid,.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-mobile-right .elementor-grid,.e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-mobile-center .elementor-grid,.e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-mobile-right .elementor-grid{width:auto;display:flex;flex-wrap:wrap;justify-content:var(--justify-content,space-between);margin-left:calc(-.5 * var(--grid-column-gap));margin-right:calc(-.5 * var(--grid-column-gap))}.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-mobile-center .elementor-grid-item,.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-mobile-justify .elementor-grid-item,.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-mobile-right .elementor-grid-item,.e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-mobile-center .elementor-grid-item,.e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-mobile-right .elementor-grid-item{margin-left:calc(.5 * var(--grid-column-gap));margin-right:calc(.5 * var(--grid-column-gap))}.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons-mobile--align-left .elementor-grid,.e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-mobile-left .elementor-grid{display:inline-block}.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons-mobile--align-left .elementor-grid,.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons-mobile--align-left .elementor-grid-item,.e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-mobile-left .elementor-grid,.e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-mobile-left .elementor-grid-item{margin-left:0;margin-right:0}}@media (max-width:ELEMENTOR_SCREEN_MOBILE_MAX){.elementor .elementor-hidden-mobile,.elementor .elementor-hidden-phone{display:none}}@media (min-width:ELEMENTOR_SCREEN_MOBILE_EXTRA_MIN) and (max-width:ELEMENTOR_SCREEN_MOBILE_EXTRA_MAX){.elementor .elementor-hidden-mobile_extra{display:none}}@media (min-width:ELEMENTOR_SCREEN_TABLET_MIN) and (max-width:ELEMENTOR_SCREEN_TABLET_MAX){.elementor .elementor-hidden-tablet{display:none}}@media (min-width:ELEMENTOR_SCREEN_TABLET_EXTRA_MIN) and (max-width:ELEMENTOR_SCREEN_TABLET_EXTRA_MAX){.elementor .elementor-hidden-tablet_extra{display:none}}@media (min-width:ELEMENTOR_SCREEN_LAPTOP_MIN) and (max-width:ELEMENTOR_SCREEN_LAPTOP_MAX){.elementor .elementor-hidden-laptop{display:none}}@media (min-width:ELEMENTOR_SCREEN_DESKTOP_MIN) and (max-width:ELEMENTOR_SCREEN_DESKTOP_MAX){.elementor .elementor-hidden-desktop{display:none}}@media (min-width:ELEMENTOR_SCREEN_WIDESCREEN_MIN){.elementor .elementor-hidden-widescreen{display:none}}.elementor-widget-text-path{font-size:20px;text-align:var(--alignment,right)}.elementor-widget-text-path svg{width:var(--width);max-width:100%;height:auto;overflow:visible;word-spacing:var(--word-spacing);transform:rotate(var(--rotate,0)) scaleX(var(--scale-x,1)) scaleY(var(--scale-y,1))}.elementor-widget-text-path svg path{vector-effect:non-scaling-stroke;fill:var(--path-fill,transparent);stroke:var(--stroke-color,transparent);stroke-width:var(--stroke-width,1px);transition:var(--stroke-transition) stroke,var(--stroke-transition) fill}.elementor-widget-text-path svg:hover path{--path-fill:var(--path-fill-hover);--stroke-color:var(--stroke-color-hover);--stroke-width:var(--stroke-width-hover)}.elementor-widget-text-path svg text{--fill:var(--text-color);fill:var(--fill);direction:var(--direction,rtl);transition:var(--transition) stroke,var(--transition) stroke-width,var(--transition) fill}.elementor-widget-text-path svg text:hover{--color:var(--text-color-hover,var(--text-color));--fill:var(--color);color:var(--color)}.elementor-widget-n-tabs{--n-tabs-color-accent-fallback:#61ce70;--n-tabs-color-secondary-fallback:#54595f;--n-tabs-default-padding-block:15px;--n-tabs-default-padding-inline:35px;--n-tabs-background-color:transparent;--n-tabs-display:flex;--n-tabs-direction:column;--n-tabs-gap:10px;--n-tabs-heading-display:flex;--n-tabs-heading-direction:row;--n-tabs-heading-grow:initial;--n-tabs-heading-justify-content:center;--n-tabs-heading-width:initial;--n-tabs-heading-overflow-x:initial;--n-tabs-heading-wrap:nowrap;--n-tabs-border-width:1px;--n-tabs-border-color:#d5d8dc;--n-tabs-content-display:flex;--n-tabs-title-color:var(--e-global-color-secondary,var(--n-tabs-color-secondary-fallback));--n-tabs-title-color-hover:#fff;--n-tabs-title-color-active:#fff;--n-tabs-title-background-color:#f1f2f3;--n-tabs-title-background-color-hover:var(--e-global-color-accent,var(--n-tabs-color-accent-fallback));--n-tabs-title-background-color-active:var(--e-global-color-accent,var(--n-tabs-color-accent-fallback));--n-tabs-title-width:initial;--n-tabs-title-height:initial;--n-tabs-title-font-size:1rem;--n-tabs-title-white-space:initial;--n-tabs-title-justify-content-toggle:initial;--n-tabs-title-align-items-toggle:center;--n-tabs-title-justify-content:center;--n-tabs-title-align-items:center;--n-tabs-title-text-align:center;--n-tabs-title-direction:row;--n-tabs-title-gap:10px;--n-tabs-title-flex-grow:0;--n-tabs-title-flex-basis:content;--n-tabs-title-flex-shrink:initial;--n-tabs-title-order:initial;--n-tabs-title-padding-block-start:var(--n-tabs-default-padding-block);--n-tabs-title-padding-inline-end:var(--n-tabs-default-padding-inline);--n-tabs-title-padding-block-end:var(--n-tabs-default-padding-block);--n-tabs-title-padding-inline-start:var(--n-tabs-default-padding-inline);--n-tabs-title-border-radius:initial;--n-tabs-title-transition:0.3s;--n-tabs-icon-color:var(--e-global-color-secondary,var(--n-tabs-color-secondary-fallback));--n-tabs-icon-color-hover:var(--n-tabs-title-color-hover);--n-tabs-icon-color-active:#fff;--n-tabs-icon-gap:5px;width:100%;max-width:100%}.elementor-widget-n-tabs .e-n-tabs{display:var(--n-tabs-display);flex-direction:var(--n-tabs-direction);gap:var(--n-tabs-gap);text-align:start;min-width:0}.elementor-widget-n-tabs .e-n-tabs-heading{display:var(--n-tabs-heading-display);flex-basis:var(--n-tabs-heading-width);flex-direction:var(--n-tabs-heading-direction);flex-shrink:0;justify-content:var(--n-tabs-heading-justify-content);gap:var(--n-tabs-title-gap);overflow-x:var(--n-tabs-heading-overflow-x);flex-wrap:var(--n-tabs-heading-wrap);-ms-overflow-style:none;scrollbar-width:none}.elementor-widget-n-tabs .e-n-tabs-heading::-webkit-scrollbar{display:none}.elementor-widget-n-tabs .e-n-tabs-heading.e-scroll{cursor:grabbing;cursor:-webkit-grabbing}.elementor-widget-n-tabs .e-n-tabs-heading.e-scroll-active{position:relative}.elementor-widget-n-tabs .e-n-tabs-heading.e-scroll-active:before{content:"";position:absolute;inset-block:0;inset-inline:-1000vw;z-index:2}.elementor-widget-n-tabs .e-n-tabs-content{display:var(--n-tabs-content-display);flex-grow:1;min-width:0}.elementor-widget-n-tabs .e-n-tabs-content>.e-con:not(.e-active){display:none}.elementor-widget-n-tabs .e-n-tabs:not(.e-activated)>.e-n-tabs-content>.e-con:first-child{display:flex}.elementor-widget-n-tabs .e-n-tab-title{all:unset;-webkit-user-select:none;-moz-user-select:none;user-select:none;display:flex;align-items:var(--n-tabs-title-align-items-toggle,var(--n-tabs-title-align-items));flex-direction:var(--n-tabs-title-direction);justify-content:var(--n-tabs-title-justify-content-toggle,var(--n-tabs-title-justify-content));gap:var(--n-tabs-icon-gap);border-width:var(--n-tabs-border-width);position:relative;cursor:pointer;outline:none;flex-grow:var(--n-tabs-title-flex-grow);flex-basis:var(--n-tabs-title-flex-basis);flex-shrink:var(--n-tabs-title-flex-shrink);padding-block-start:var(--n-tabs-title-padding-block-start);padding-inline-end:var(--n-tabs-title-padding-inline-end);padding-block-end:var(--n-tabs-title-padding-block-end);padding-inline-start:var(--n-tabs-title-padding-inline-start);border-radius:var(--n-tabs-title-border-radius);height:var(--n-tabs-title-height);width:var(--n-tabs-title-width);white-space:var(--n-tabs-title-white-space);transition:background var(--n-tabs-title-transition),color var(--n-tabs-title-transition),border var(--n-tabs-title-transition),box-shadow var(--n-tabs-title-transition),text-shadow var(--n-tabs-title-transition),stroke var(--n-tabs-title-transition),stroke-width var(--n-tabs-title-transition),-webkit-text-stroke-width var(--n-tabs-title-transition),-webkit-text-stroke-color var(--n-tabs-title-transition),transform var(--n-tabs-title-transition)}.elementor-widget-n-tabs .e-n-tab-title:focus-visible{outline:5px auto -webkit-focus-ring-color}.elementor-widget-n-tabs .e-n-tab-title span i,.elementor-widget-n-tabs .e-n-tab-title span svg{transition:color var(--n-tabs-title-transition),fill var(--n-tabs-title-transition)}.elementor-widget-n-tabs .e-n-tab-title-text{display:flex;align-items:center;font-size:var(--n-tabs-title-font-size);text-align:var(--n-tabs-title-text-align)}.elementor-widget-n-tabs .e-n-tab-title .e-n-tab-icon{display:flex;align-items:center;flex-direction:column;flex-shrink:0;order:var(--n-tabs-icon-order);overflow:hidden}.elementor-widget-n-tabs .e-n-tab-title .e-n-tab-icon i{font-size:var(--n-tabs-icon-size,var(--n-tabs-title-font-size))}.elementor-widget-n-tabs .e-n-tab-title .e-n-tab-icon svg{width:var(--n-tabs-icon-size,var(--n-tabs-title-font-size));height:var(--n-tabs-icon-size,var(--n-tabs-title-font-size))}.elementor-widget-n-tabs .e-n-tab-title .e-n-tab-icon:empty{display:none}.elementor-widget-n-tabs .e-n-tab-title[aria-selected=false]{background-color:var(--n-tabs-title-background-color)}.elementor-widget-n-tabs .e-n-tab-title[aria-selected=false],.elementor-widget-n-tabs .e-n-tab-title[aria-selected=false] a{color:var(--n-tabs-title-color)}.elementor-widget-n-tabs .e-n-tab-title[aria-selected=false] .e-n-tab-icon i{color:var(--n-tabs-icon-color)}.elementor-widget-n-tabs .e-n-tab-title[aria-selected=false] .e-n-tab-icon svg{fill:var(--n-tabs-icon-color)}.elementor-widget-n-tabs .e-n-tab-title[aria-selected=false] .e-n-tab-icon i:last-child,.elementor-widget-n-tabs .e-n-tab-title[aria-selected=false] .e-n-tab-icon svg:last-child{transform:translateY(-100vh);height:0;opacity:0}.elementor-widget-n-tabs .e-n-tab-title[aria-selected=true],.elementor-widget-n-tabs .e-n-tab-title[aria-selected=true] a{color:var(--n-tabs-title-color-active)}.elementor-widget-n-tabs .e-n-tab-title[aria-selected=true] .e-n-tab-icon i{color:var(--n-tabs-icon-color-active)}.elementor-widget-n-tabs .e-n-tab-title[aria-selected=true] .e-n-tab-icon svg{fill:var(--n-tabs-icon-color-active)}.elementor-widget-n-tabs .e-n-tab-title[aria-selected=true] .e-n-tab-icon i:first-child,.elementor-widget-n-tabs .e-n-tab-title[aria-selected=true] .e-n-tab-icon svg:first-child{transform:translateY(-100vh);height:0;opacity:0}.elementor-widget-n-tabs .e-n-tab-title[aria-selected=true][class*=elementor-animation-]:active,.elementor-widget-n-tabs .e-n-tab-title[aria-selected=true][class*=elementor-animation-]:focus,.elementor-widget-n-tabs .e-n-tab-title[aria-selected=true][class*=elementor-animation-]:hover{transform:none;animation:initial}.elementor-widget-n-tabs [data-touch-mode=false] .e-n-tab-title[aria-selected=false]:hover,.elementor-widget-n-tabs [data-touch-mode=false] .e-n-tab-title[aria-selected=false]:hover a{color:var(--n-tabs-title-color-hover)}.elementor-widget-n-tabs [data-touch-mode=false] .e-n-tab-title[aria-selected=false]:hover .e-n-tab-icon i{color:var(--n-tabs-icon-color-hover)}.elementor-widget-n-tabs [data-touch-mode=false] .e-n-tab-title[aria-selected=false]:hover .e-n-tab-icon svg{fill:var(--n-tabs-icon-color-hover)}.elementor-widget-n-tabs [data-touch-mode=true] .e-n-tab-title[aria-selected=false]:hover,.elementor-widget-n-tabs [data-touch-mode=true] .e-n-tab-title[aria-selected=false]:hover a{color:var(--n-tabs-title-color-active)}.elementor-widget-n-tabs [data-touch-mode=true] .e-n-tab-title[aria-selected=false]:hover .e-n-tab-icon i{color:var(--n-tabs-icon-color-active)}.elementor-widget-n-tabs [data-touch-mode=true] .e-n-tab-title[aria-selected=false]:hover .e-n-tab-icon svg{fill:var(--n-tabs-icon-color-active)}.elementor-widget-n-tabs [data-touch-mode=true] .e-n-tab-title[aria-selected=false]:hover .e-n-tab-icon i:first-child,.elementor-widget-n-tabs [data-touch-mode=true] .e-n-tab-title[aria-selected=false]:hover .e-n-tab-icon svg:first-child{transform:translateY(-100vh);height:0;opacity:0}.elementor-widget-n-tabs [data-touch-mode=true] .e-n-tab-title[aria-selected=false]:hover[class*=elementor-animation-]:active,.elementor-widget-n-tabs [data-touch-mode=true] .e-n-tab-title[aria-selected=false]:hover[class*=elementor-animation-]:focus,.elementor-widget-n-tabs [data-touch-mode=true] .e-n-tab-title[aria-selected=false]:hover[class*=elementor-animation-]:hover{transform:none;animation:initial}.elementor-widget-n-tabs [data-touch-mode=true] .e-n-tab-title[aria-selected=false]:hover .e-n-tab-icon i:last-child,.elementor-widget-n-tabs [data-touch-mode=true] .e-n-tab-title[aria-selected=false]:hover .e-n-tab-icon svg:last-child{transform:none;height:auto;opacity:1}.elementor .elementor-element.elementor-widget-n-tabs>.elementor-widget-container>.e-n-tabs[data-touch-mode=false]>.e-n-tabs-heading .e-n-tab-title[aria-selected=false]:hover{background-color:var(--n-tabs-title-background-color-hover);background-image:none}.elementor .elementor-element.elementor-widget-n-tabs>.elementor-widget-container>.e-n-tabs>.e-n-tabs-heading .e-n-tab-title[aria-selected=true],.elementor .elementor-element.elementor-widget-n-tabs>.elementor-widget-container>.e-n-tabs[data-touch-mode=true]>.e-n-tabs-heading .e-n-tab-title[aria-selected=false]:hover{background-color:var(--n-tabs-title-background-color-active);background-image:none}@media (max-width:ELEMENTOR_SCREEN_MOBILE_MAX){.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-mobile{--n-tabs-direction:column;--n-tabs-heading-display:contents;--n-tabs-content-display:contents}.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-mobile .e-n-tabs{gap:0}.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-mobile .e-n-tabs-content>.e-con{order:var(--n-tabs-title-order)}.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-mobile .e-n-tab-title{order:var(--n-tabs-title-order);width:auto}.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-mobile .e-n-tab-title:not(:first-child){margin-block-start:var(--n-tabs-title-gap)}.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-mobile .e-n-tab-title[aria-selected=true]{margin-block-end:var(--n-tabs-gap)}}@media (max-width:ELEMENTOR_SCREEN_MOBILE_EXTRA_MAX){.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-mobile_extra{--n-tabs-direction:column;--n-tabs-heading-display:contents;--n-tabs-content-display:contents}.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-mobile_extra .e-n-tabs{gap:0}.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-mobile_extra .e-n-tabs-content>.e-con{order:var(--n-tabs-title-order)}.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-mobile_extra .e-n-tab-title{order:var(--n-tabs-title-order);width:auto}.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-mobile_extra .e-n-tab-title:not(:first-child){margin-block-start:var(--n-tabs-title-gap)}.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-mobile_extra .e-n-tab-title[aria-selected=true]{margin-block-end:var(--n-tabs-gap)}}@media (max-width:ELEMENTOR_SCREEN_TABLET_MAX){.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-tablet{--n-tabs-direction:column;--n-tabs-heading-display:contents;--n-tabs-content-display:contents}.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-tablet .e-n-tabs{gap:0}.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-tablet .e-n-tabs-content>.e-con{order:var(--n-tabs-title-order)}.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-tablet .e-n-tab-title{order:var(--n-tabs-title-order);width:auto}.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-tablet .e-n-tab-title:not(:first-child){margin-block-start:var(--n-tabs-title-gap)}.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-tablet .e-n-tab-title[aria-selected=true]{margin-block-end:var(--n-tabs-gap)}}@media (max-width:ELEMENTOR_SCREEN_TABLET_EXTRA_MAX){.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-tablet_extra{--n-tabs-direction:column;--n-tabs-heading-display:contents;--n-tabs-content-display:contents}.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-tablet_extra .e-n-tabs{gap:0}.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-tablet_extra .e-n-tabs-content>.e-con{order:var(--n-tabs-title-order)}.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-tablet_extra .e-n-tab-title{order:var(--n-tabs-title-order);width:auto}.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-tablet_extra .e-n-tab-title:not(:first-child){margin-block-start:var(--n-tabs-title-gap)}.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-tablet_extra .e-n-tab-title[aria-selected=true]{margin-block-end:var(--n-tabs-gap)}}@media (max-width:ELEMENTOR_SCREEN_LAPTOP_MAX){.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-laptop{--n-tabs-direction:column;--n-tabs-heading-display:contents;--n-tabs-content-display:contents}.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-laptop .e-n-tabs{gap:0}.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-laptop .e-n-tabs-content>.e-con{order:var(--n-tabs-title-order)}.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-laptop .e-n-tab-title{order:var(--n-tabs-title-order);width:auto}.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-laptop .e-n-tab-title:not(:first-child){margin-block-start:var(--n-tabs-title-gap)}.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-laptop .e-n-tab-title[aria-selected=true]{margin-block-end:var(--n-tabs-gap)}}.elementor-widget-n-accordion{--n-accordion-title-font-size:20px;--n-accordion-title-flex-grow:initial;--n-accordion-title-justify-content:initial;--n-accordion-title-icon-order:-1;--n-accordion-border-width:1px;--n-accordion-border-color:#d5d8dc;--n-accordion-border-style:solid;--n-accordion-item-title-flex-grow:initial;--n-accordion-item-title-space-between:0px;--n-accordion-item-title-distance-from-content:0px;--n-accordion-padding:10px;--n-accordion-border-radius:0px;--n-accordion-icon-size:15px;--n-accordion-title-normal-color:#1f2124;--n-accordion-title-hover-color:#1f2124;--n-accordion-title-active-color:#1f2124;--n-accordion-icon-normal-color:var(--n-accordion-title-normal-color);--n-accordion-icon-hover-color:var(--n-accordion-title-hover-color);--n-accordion-icon-active-color:var(--n-accordion-title-active-color);--n-accordion-icon-gap:0 10px;width:100%}.elementor-widget-n-accordion .e-n-accordion details>summary::-webkit-details-marker{display:none}.elementor-widget-n-accordion .e-n-accordion-item{display:flex;flex-direction:column;position:relative}.elementor-widget-n-accordion .e-n-accordion-item:not(:last-child){margin-block-end:var(--n-accordion-item-title-space-between)}.elementor-widget-n-accordion .e-n-accordion-item-title,:where(.elementor-widget-n-accordion .e-n-accordion-item>.e-con){border:var(--n-accordion-border-width) var(--n-accordion-border-style) var(--n-accordion-border-color)}.elementor-widget-n-accordion .e-n-accordion-item-title{display:flex;flex-direction:row;list-style:none;padding:var(--n-accordion-padding);justify-content:var(--n-accordion-title-justify-content);border-radius:var(--n-accordion-border-radius);flex-grow:var(--n-menu-title-flex-grow);gap:var(--n-accordion-icon-gap);color:var(--n-accordion-title-normal-color);align-items:center;cursor:pointer}.elementor-widget-n-accordion .e-n-accordion-item-title-header{display:flex}.elementor-widget-n-accordion .e-n-accordion-item-title-header h1,.elementor-widget-n-accordion .e-n-accordion-item-title-header h2,.elementor-widget-n-accordion .e-n-accordion-item-title-header h3,.elementor-widget-n-accordion .e-n-accordion-item-title-header h4,.elementor-widget-n-accordion .e-n-accordion-item-title-header h5,.elementor-widget-n-accordion .e-n-accordion-item-title-header h6,.elementor-widget-n-accordion .e-n-accordion-item-title-header p{margin-block-start:0;margin-block-end:0}.elementor-widget-n-accordion .e-n-accordion-item-title-text{font-size:var(--n-accordion-title-font-size);align-items:center}.elementor-widget-n-accordion .e-n-accordion-item-title-icon{display:flex;flex-direction:row;align-items:center;order:var(--n-accordion-title-icon-order);position:relative;width:-moz-fit-content;width:fit-content}.elementor-widget-n-accordion .e-n-accordion-item-title-icon span{height:var(--n-accordion-icon-size);width:auto}.elementor-widget-n-accordion .e-n-accordion-item-title-icon span>i{color:var(--n-accordion-icon-normal-color);font-size:var(--n-accordion-icon-size)}.elementor-widget-n-accordion .e-n-accordion-item-title-icon span>svg{fill:var(--n-accordion-icon-normal-color);height:var(--n-accordion-icon-size)}.elementor-widget-n-accordion .e-n-accordion-item-title>span{cursor:pointer}.elementor-widget-n-accordion .e-n-accordion-item[open] .e-n-accordion-item-title{margin-block-end:var(--n-accordion-item-title-distance-from-content);color:var(--n-accordion-title-active-color)}.elementor-widget-n-accordion .e-n-accordion-item[open] .e-n-accordion-item-title-icon .e-opened{display:flex}.elementor-widget-n-accordion .e-n-accordion-item[open] .e-n-accordion-item-title-icon .e-closed{display:none}.elementor-widget-n-accordion .e-n-accordion-item[open] .e-n-accordion-item-title-icon span>i{color:var(--n-accordion-icon-active-color)}.elementor-widget-n-accordion .e-n-accordion-item[open] .e-n-accordion-item-title-icon span>svg{fill:var(--n-accordion-icon-active-color)}.elementor-widget-n-accordion .e-n-accordion-item:not([open]):hover .e-n-accordion-item-title{color:var(--n-accordion-title-hover-color)}.elementor-widget-n-accordion .e-n-accordion-item:not([open]):hover .e-n-accordion-item-title-icon span>i{color:var(--n-accordion-icon-hover-color)}.elementor-widget-n-accordion .e-n-accordion-item:not([open]):hover .e-n-accordion-item-title-icon span>svg{fill:var(--n-accordion-icon-hover-color)}.elementor-widget-n-accordion .e-n-accordion-item .e-n-accordion-item-title-icon .e-opened{display:none}.elementor-widget-n-accordion .e-n-accordion-item .e-n-accordion-item-title-icon .e-closed{display:flex}.elementor-widget-n-accordion .e-n-accordion-item .e-n-accordion-item-title-icon span>svg{fill:var(--n-accordion-icon-normal-color)}.elementor-widget-n-accordion .e-n-accordion-item .e-n-accordion-item-title-icon span>i{color:var(--n-accordion-icon-normal-color)}.elementor-widget-n-accordion .e-n-accordion-item>span{cursor:pointer}.elementor-accordion{text-align:right}.elementor-accordion .elementor-accordion-item{border:1px solid #d5d8dc}.elementor-accordion .elementor-accordion-item+.elementor-accordion-item{border-top:none}.elementor-accordion .elementor-tab-title{margin:0;padding:15px 20px;font-weight:700;line-height:1;cursor:pointer;outline:none}.elementor-accordion .elementor-tab-title .elementor-accordion-icon{display:inline-block;width:1.5em}.elementor-accordion .elementor-tab-title .elementor-accordion-icon svg{width:1em;height:1em}.elementor-accordion .elementor-tab-title .elementor-accordion-icon.elementor-accordion-icon-right{float:right;text-align:right}.elementor-accordion .elementor-tab-title .elementor-accordion-icon.elementor-accordion-icon-left{float:left;text-align:left}.elementor-accordion .elementor-tab-title .elementor-accordion-icon .elementor-accordion-icon-closed{display:block}.elementor-accordion .elementor-tab-title .elementor-accordion-icon .elementor-accordion-icon-opened,.elementor-accordion .elementor-tab-title.elementor-active .elementor-accordion-icon-closed{display:none}.elementor-accordion .elementor-tab-title.elementor-active .elementor-accordion-icon-opened{display:block}.elementor-accordion .elementor-tab-content{display:none;padding:15px 20px;border-top:1px solid #d5d8dc}@media (max-width:ELEMENTOR_SCREEN_MOBILE_MAX){.elementor-accordion .elementor-tab-title{padding:12px 15px}.elementor-accordion .elementor-tab-title .elementor-accordion-icon{width:1.2em}.elementor-accordion .elementor-tab-content{padding:7px 15px}}.e-con-inner>.elementor-widget-accordion,.e-con>.elementor-widget-accordion{width:var(--container-widget-width);--flex-grow:var(--container-widget-flex-grow)}.elementor-alert{padding:15px;border-left:5px solid transparent;position:relative;text-align:right}.elementor-alert .elementor-alert-title{display:block;font-weight:700}.elementor-alert .elementor-alert-description{font-size:13px}.elementor-alert button.elementor-alert-dismiss{position:absolute;left:var(--dismiss-icon-horizontal-position,10px);top:var(--dismiss-icon-vertical-position,10px);padding:3px;font-size:var(--dismiss-icon-size,20px);line-height:1;background:transparent;color:var(--dismiss-icon-normal-color,inherit);border:none;cursor:pointer;transition-duration:var(--dismiss-icon-hover-transition-duration,.3s)}.elementor-alert button.elementor-alert-dismiss:hover{color:var(--dismiss-icon-hover-color,inherit)}.elementor-alert button.elementor-alert-dismiss svg{width:var(--dismiss-icon-size,20px);height:var(--dismiss-icon-size,20px);fill:var(--dismiss-icon-normal-color,currentColor);transition-duration:var(--dismiss-icon-hover-transition-duration,.3s)}.elementor-alert button.elementor-alert-dismiss svg:hover{fill:var(--dismiss-icon-hover-color,currentColor)}.elementor-alert.elementor-alert-info{color:#31708f;background-color:#d9edf7;border-color:#bcdff1}.elementor-alert.elementor-alert-success{color:#3c763d;background-color:#dff0d8;border-color:#cae6be}.elementor-alert.elementor-alert-warning{color:#8a6d3b;background-color:#fcf8e3;border-color:#f9f0c3}.elementor-alert.elementor-alert-danger{color:#a94442;background-color:#f2dede;border-color:#e8c4c4}@media (max-width:ELEMENTOR_SCREEN_MOBILE_MAX){.elementor-alert{padding:10px}.elementor-alert button.elementor-alert-dismiss{right:7px;top:7px}}.elementor-counter .elementor-counter-number-wrapper{display:flex;font-size:69px;font-weight:600;line-height:1}.elementor-counter .elementor-counter-number-prefix,.elementor-counter .elementor-counter-number-suffix{flex-grow:1;white-space:pre-wrap}.elementor-counter .elementor-counter-number-prefix{text-align:left}.elementor-counter .elementor-counter-number-suffix{text-align:right}.elementor-counter .elementor-counter-title{text-align:center;font-size:19px;font-weight:400;line-height:2.5}.elementor-widget-divider{--divider-border-style:none;--divider-border-width:1px;--divider-color:#0c0d0e;--divider-icon-size:20px;--divider-element-spacing:10px;--divider-pattern-height:24px;--divider-pattern-size:20px;--divider-pattern-url:none;--divider-pattern-repeat:repeat-x}.elementor-widget-divider .elementor-divider{display:flex}.elementor-widget-divider .elementor-divider__text{font-size:15px;line-height:1;max-width:95%}.elementor-widget-divider .elementor-divider__element{margin:0 var(--divider-element-spacing);flex-shrink:0}.elementor-widget-divider .elementor-icon{font-size:var(--divider-icon-size)}.elementor-widget-divider .elementor-divider-separator{display:flex;margin:0;direction:ltr}.elementor-widget-divider--view-line_icon .elementor-divider-separator,.elementor-widget-divider--view-line_text .elementor-divider-separator{align-items:center}.elementor-widget-divider--view-line_icon .elementor-divider-separator:after,.elementor-widget-divider--view-line_icon .elementor-divider-separator:before,.elementor-widget-divider--view-line_text .elementor-divider-separator:after,.elementor-widget-divider--view-line_text .elementor-divider-separator:before{display:block;content:"";border-block-end:0;flex-grow:1;border-block-start:var(--divider-border-width) var(--divider-border-style) var(--divider-color)}.elementor-widget-divider--element-align-left .elementor-divider .elementor-divider-separator>.elementor-divider__svg:first-of-type{flex-grow:0;flex-shrink:100}.elementor-widget-divider--element-align-left .elementor-divider-separator:before{content:none}.elementor-widget-divider--element-align-left .elementor-divider__element{margin-left:0}.elementor-widget-divider--element-align-right .elementor-divider .elementor-divider-separator>.elementor-divider__svg:last-of-type{flex-grow:0;flex-shrink:100}.elementor-widget-divider--element-align-right .elementor-divider-separator:after{content:none}.elementor-widget-divider--element-align-right .elementor-divider__element{margin-right:0}.elementor-widget-divider--element-align-start .elementor-divider .elementor-divider-separator>.elementor-divider__svg:first-of-type{flex-grow:0;flex-shrink:100}.elementor-widget-divider--element-align-start .elementor-divider-separator:before{content:none}.elementor-widget-divider--element-align-start .elementor-divider__element{margin-inline-start:0}.elementor-widget-divider--element-align-end .elementor-divider .elementor-divider-separator>.elementor-divider__svg:last-of-type{flex-grow:0;flex-shrink:100}.elementor-widget-divider--element-align-end .elementor-divider-separator:after{content:none}.elementor-widget-divider--element-align-end .elementor-divider__element{margin-inline-end:0}.elementor-widget-divider:not(.elementor-widget-divider--view-line_text):not(.elementor-widget-divider--view-line_icon) .elementor-divider-separator{border-block-start:var(--divider-border-width) var(--divider-border-style) var(--divider-color)}.elementor-widget-divider--separator-type-pattern{--divider-border-style:none}.elementor-widget-divider--separator-type-pattern.elementor-widget-divider--view-line .elementor-divider-separator,.elementor-widget-divider--separator-type-pattern:not(.elementor-widget-divider--view-line) .elementor-divider-separator:after,.elementor-widget-divider--separator-type-pattern:not(.elementor-widget-divider--view-line) .elementor-divider-separator:before,.elementor-widget-divider--separator-type-pattern:not([class*=elementor-widget-divider--view]) .elementor-divider-separator{width:100%;min-height:var(--divider-pattern-height);-webkit-mask-size:var(--divider-pattern-size) 100%;mask-size:var(--divider-pattern-size) 100%;-webkit-mask-repeat:var(--divider-pattern-repeat);mask-repeat:var(--divider-pattern-repeat);background-color:var(--divider-color);-webkit-mask-image:var(--divider-pattern-url);mask-image:var(--divider-pattern-url)}.elementor-widget-divider--no-spacing{--divider-pattern-size:auto}.elementor-widget-divider--bg-round{--divider-pattern-repeat:round}.rtl .elementor-widget-divider .elementor-divider__text{direction:rtl}.e-con-inner>.elementor-widget-divider,.e-con>.elementor-widget-divider{width:var(--container-widget-width,100%);--flex-grow:var(--container-widget-flex-grow)}.elementor-image-gallery .gallery-item{display:inline-block;text-align:center;vertical-align:top;width:100%;max-width:100%;margin:0 auto}.elementor-image-gallery .gallery-item img{margin:0 auto}.elementor-image-gallery .gallery-item .gallery-caption{margin:0}.elementor-image-gallery figure img{display:block}.elementor-image-gallery figure figcaption{width:100%}.gallery-spacing-custom .elementor-image-gallery .gallery-icon{padding:0}@media (min-width:ELEMENTOR_SCREEN_MOBILE_NEXT){.elementor-image-gallery .gallery-columns-2 .gallery-item{max-width:50%}.elementor-image-gallery .gallery-columns-3 .gallery-item{max-width:33.33%}.elementor-image-gallery .gallery-columns-4 .gallery-item{max-width:25%}.elementor-image-gallery .gallery-columns-5 .gallery-item{max-width:20%}.elementor-image-gallery .gallery-columns-6 .gallery-item{max-width:16.666%}.elementor-image-gallery .gallery-columns-7 .gallery-item{max-width:14.28%}.elementor-image-gallery .gallery-columns-8 .gallery-item{max-width:12.5%}.elementor-image-gallery .gallery-columns-9 .gallery-item{max-width:11.11%}.elementor-image-gallery .gallery-columns-10 .gallery-item{max-width:10%}}@media (min-width:480px) and (max-width:ELEMENTOR_SCREEN_MOBILE_MAX){.elementor-image-gallery .gallery.gallery-columns-2 .gallery-item,.elementor-image-gallery .gallery.gallery-columns-3 .gallery-item,.elementor-image-gallery .gallery.gallery-columns-4 .gallery-item,.elementor-image-gallery .gallery.gallery-columns-5 .gallery-item,.elementor-image-gallery .gallery.gallery-columns-6 .gallery-item,.elementor-image-gallery .gallery.gallery-columns-7 .gallery-item,.elementor-image-gallery .gallery.gallery-columns-8 .gallery-item,.elementor-image-gallery .gallery.gallery-columns-9 .gallery-item,.elementor-image-gallery .gallery.gallery-columns-10 .gallery-item{max-width:50%}}@media (max-width:479px){.elementor-image-gallery .gallery.gallery-columns-2 .gallery-item,.elementor-image-gallery .gallery.gallery-columns-3 .gallery-item,.elementor-image-gallery .gallery.gallery-columns-4 .gallery-item,.elementor-image-gallery .gallery.gallery-columns-5 .gallery-item,.elementor-image-gallery .gallery.gallery-columns-6 .gallery-item,.elementor-image-gallery .gallery.gallery-columns-7 .gallery-item,.elementor-image-gallery .gallery.gallery-columns-8 .gallery-item,.elementor-image-gallery .gallery.gallery-columns-9 .gallery-item,.elementor-image-gallery .gallery.gallery-columns-10 .gallery-item{max-width:100%}}.elementor-widget-google_maps .elementor-widget-container{overflow:hidden}.elementor-widget-google_maps .elementor-custom-embed{line-height:0}.elementor-widget-google_maps iframe{height:300px}.elementor-heading-title{padding:0;margin:0;line-height:1}.elementor-widget-heading .elementor-heading-title[class*=elementor-size-]>a{color:inherit;font-size:inherit;line-height:inherit}.elementor-widget-heading .elementor-heading-title.elementor-size-small{font-size:15px}.elementor-widget-heading .elementor-heading-title.elementor-size-medium{font-size:19px}.elementor-widget-heading .elementor-heading-title.elementor-size-large{font-size:29px}.elementor-widget-heading .elementor-heading-title.elementor-size-xl{font-size:39px}.elementor-widget-heading .elementor-heading-title.elementor-size-xxl{font-size:59px}.elementor-widget-icon-box .elementor-icon-box-wrapper{display:block;text-align:center}.elementor-widget-icon-box .elementor-icon-box-icon{margin-bottom:var(--icon-box-icon-margin,15px);margin-right:auto;margin-left:auto}@media (min-width:ELEMENTOR_SCREEN_MOBILE_NEXT){.elementor-widget-icon-box.elementor-vertical-align-top .elementor-icon-box-wrapper{align-items:flex-start}.elementor-widget-icon-box.elementor-vertical-align-middle .elementor-icon-box-wrapper{align-items:center}.elementor-widget-icon-box.elementor-vertical-align-bottom .elementor-icon-box-wrapper{align-items:flex-end}}.elementor-widget-icon-box.elementor-position-left .elementor-icon-box-wrapper,.elementor-widget-icon-box.elementor-position-right .elementor-icon-box-wrapper{display:flex}.elementor-widget-icon-box.elementor-position-left .elementor-icon-box-icon,.elementor-widget-icon-box.elementor-position-right .elementor-icon-box-icon{display:inline-flex;flex:0 0 auto}.elementor-widget-icon-box.elementor-position-right .elementor-icon-box-wrapper{text-align:left;flex-direction:row}.elementor-widget-icon-box.elementor-position-right .elementor-icon-box-icon{margin-left:var(--icon-box-icon-margin,15px);margin-right:0;margin-bottom:unset}.elementor-widget-icon-box.elementor-position-left .elementor-icon-box-wrapper{text-align:right;flex-direction:row-reverse}.elementor-widget-icon-box.elementor-position-left .elementor-icon-box-icon{margin-right:var(--icon-box-icon-margin,15px);margin-left:0;margin-bottom:unset}.elementor-widget-icon-box.elementor-position-top .elementor-icon-box-wrapper{display:block;text-align:center;flex-direction:unset}.elementor-widget-icon-box.elementor-position-top .elementor-icon-box-icon{margin-bottom:var(--icon-box-icon-margin,15px);margin-right:auto;margin-left:auto}@media (min-width:ELEMENTOR_SCREEN_WIDESCREEN_MIN){.elementor-widget-icon-box.elementor-widescreen-position-left .elementor-icon-box-wrapper,.elementor-widget-icon-box.elementor-widescreen-position-right .elementor-icon-box-wrapper{display:flex}.elementor-widget-icon-box.elementor-widescreen-position-left .elementor-icon-box-icon,.elementor-widget-icon-box.elementor-widescreen-position-right .elementor-icon-box-icon{display:inline-flex;flex:0 0 auto}.elementor-widget-icon-box.elementor-widescreen-position-right .elementor-icon-box-wrapper{text-align:left;flex-direction:row}.elementor-widget-icon-box.elementor-widescreen-position-right .elementor-icon-box-icon{margin-left:var(--icon-box-icon-margin,15px);margin-right:0;margin-bottom:unset}.elementor-widget-icon-box.elementor-widescreen-position-left .elementor-icon-box-wrapper{text-align:right;flex-direction:row-reverse}.elementor-widget-icon-box.elementor-widescreen-position-left .elementor-icon-box-icon{margin-right:var(--icon-box-icon-margin,15px);margin-left:0;margin-bottom:unset}.elementor-widget-icon-box.elementor-widescreen-position-top .elementor-icon-box-wrapper{display:block;text-align:center;flex-direction:unset}.elementor-widget-icon-box.elementor-widescreen-position-top .elementor-icon-box-icon{margin-bottom:var(--icon-box-icon-margin,15px);margin-right:auto;margin-left:auto}}@media (max-width:ELEMENTOR_SCREEN_LAPTOP_MAX){.elementor-widget-icon-box.elementor-laptop-position-left .elementor-icon-box-wrapper,.elementor-widget-icon-box.elementor-laptop-position-right .elementor-icon-box-wrapper{display:flex}.elementor-widget-icon-box.elementor-laptop-position-left .elementor-icon-box-icon,.elementor-widget-icon-box.elementor-laptop-position-right .elementor-icon-box-icon{display:inline-flex;flex:0 0 auto}.elementor-widget-icon-box.elementor-laptop-position-right .elementor-icon-box-wrapper{text-align:left;flex-direction:row}.elementor-widget-icon-box.elementor-laptop-position-right .elementor-icon-box-icon{margin-left:var(--icon-box-icon-margin,15px);margin-right:0;margin-bottom:unset}.elementor-widget-icon-box.elementor-laptop-position-left .elementor-icon-box-wrapper{text-align:right;flex-direction:row-reverse}.elementor-widget-icon-box.elementor-laptop-position-left .elementor-icon-box-icon{margin-right:var(--icon-box-icon-margin,15px);margin-left:0;margin-bottom:unset}.elementor-widget-icon-box.elementor-laptop-position-top .elementor-icon-box-wrapper{display:block;text-align:center;flex-direction:unset}.elementor-widget-icon-box.elementor-laptop-position-top .elementor-icon-box-icon{margin-bottom:var(--icon-box-icon-margin,15px);margin-right:auto;margin-left:auto}}@media (max-width:ELEMENTOR_SCREEN_TABLET_EXTRA_MAX){.elementor-widget-icon-box.elementor-tablet_extra-position-left .elementor-icon-box-wrapper,.elementor-widget-icon-box.elementor-tablet_extra-position-right .elementor-icon-box-wrapper{display:flex}.elementor-widget-icon-box.elementor-tablet_extra-position-left .elementor-icon-box-icon,.elementor-widget-icon-box.elementor-tablet_extra-position-right .elementor-icon-box-icon{display:inline-flex;flex:0 0 auto}.elementor-widget-icon-box.elementor-tablet_extra-position-right .elementor-icon-box-wrapper{text-align:left;flex-direction:row}.elementor-widget-icon-box.elementor-tablet_extra-position-right .elementor-icon-box-icon{margin-left:var(--icon-box-icon-margin,15px);margin-right:0;margin-bottom:unset}.elementor-widget-icon-box.elementor-tablet_extra-position-left .elementor-icon-box-wrapper{text-align:right;flex-direction:row-reverse}.elementor-widget-icon-box.elementor-tablet_extra-position-left .elementor-icon-box-icon{margin-right:var(--icon-box-icon-margin,15px);margin-left:0;margin-bottom:unset}.elementor-widget-icon-box.elementor-tablet_extra-position-top .elementor-icon-box-wrapper{display:block;text-align:center;flex-direction:unset}.elementor-widget-icon-box.elementor-tablet_extra-position-top .elementor-icon-box-icon{margin-bottom:var(--icon-box-icon-margin,15px);margin-right:auto;margin-left:auto}}@media (max-width:ELEMENTOR_SCREEN_TABLET_MAX){.elementor-widget-icon-box.elementor-tablet-position-left .elementor-icon-box-wrapper,.elementor-widget-icon-box.elementor-tablet-position-right .elementor-icon-box-wrapper{display:flex}.elementor-widget-icon-box.elementor-tablet-position-left .elementor-icon-box-icon,.elementor-widget-icon-box.elementor-tablet-position-right .elementor-icon-box-icon{display:inline-flex;flex:0 0 auto}.elementor-widget-icon-box.elementor-tablet-position-right .elementor-icon-box-wrapper{text-align:left;flex-direction:row}.elementor-widget-icon-box.elementor-tablet-position-right .elementor-icon-box-icon{margin-left:var(--icon-box-icon-margin,15px);margin-right:0;margin-bottom:unset}.elementor-widget-icon-box.elementor-tablet-position-left .elementor-icon-box-wrapper{text-align:right;flex-direction:row-reverse}.elementor-widget-icon-box.elementor-tablet-position-left .elementor-icon-box-icon{margin-right:var(--icon-box-icon-margin,15px);margin-left:0;margin-bottom:unset}.elementor-widget-icon-box.elementor-tablet-position-top .elementor-icon-box-wrapper{display:block;text-align:center;flex-direction:unset}.elementor-widget-icon-box.elementor-tablet-position-top .elementor-icon-box-icon{margin-bottom:var(--icon-box-icon-margin,15px);margin-right:auto;margin-left:auto}}@media (max-width:ELEMENTOR_SCREEN_MOBILE_EXTRA_MAX){.elementor-widget-icon-box.elementor-mobile_extra-position-left .elementor-icon-box-wrapper,.elementor-widget-icon-box.elementor-mobile_extra-position-right .elementor-icon-box-wrapper{display:flex}.elementor-widget-icon-box.elementor-mobile_extra-position-left .elementor-icon-box-icon,.elementor-widget-icon-box.elementor-mobile_extra-position-right .elementor-icon-box-icon{display:inline-flex;flex:0 0 auto}.elementor-widget-icon-box.elementor-mobile_extra-position-right .elementor-icon-box-wrapper{text-align:left;flex-direction:row}.elementor-widget-icon-box.elementor-mobile_extra-position-right .elementor-icon-box-icon{margin-left:var(--icon-box-icon-margin,15px);margin-right:0;margin-bottom:unset}.elementor-widget-icon-box.elementor-mobile_extra-position-left .elementor-icon-box-wrapper{text-align:right;flex-direction:row-reverse}.elementor-widget-icon-box.elementor-mobile_extra-position-left .elementor-icon-box-icon{margin-right:var(--icon-box-icon-margin,15px);margin-left:0;margin-bottom:unset}.elementor-widget-icon-box.elementor-mobile_extra-position-top .elementor-icon-box-wrapper{display:block;text-align:center;flex-direction:unset}.elementor-widget-icon-box.elementor-mobile_extra-position-top .elementor-icon-box-icon{margin-bottom:var(--icon-box-icon-margin,15px);margin-right:auto;margin-left:auto}}@media (max-width:ELEMENTOR_SCREEN_MOBILE_MAX){.elementor-widget-icon-box.elementor-mobile-position-left .elementor-icon-box-wrapper,.elementor-widget-icon-box.elementor-mobile-position-right .elementor-icon-box-wrapper{display:flex}.elementor-widget-icon-box.elementor-mobile-position-left .elementor-icon-box-icon,.elementor-widget-icon-box.elementor-mobile-position-right .elementor-icon-box-icon{display:inline-flex;flex:0 0 auto}.elementor-widget-icon-box.elementor-mobile-position-right .elementor-icon-box-wrapper{text-align:left;flex-direction:row}.elementor-widget-icon-box.elementor-mobile-position-right .elementor-icon-box-icon{margin-left:var(--icon-box-icon-margin,15px);margin-right:0;margin-bottom:unset}.elementor-widget-icon-box.elementor-mobile-position-left .elementor-icon-box-wrapper{text-align:right;flex-direction:row-reverse}.elementor-widget-icon-box.elementor-mobile-position-left .elementor-icon-box-icon{margin-right:var(--icon-box-icon-margin,15px);margin-left:0;margin-bottom:unset}.elementor-widget-icon-box.elementor-mobile-position-top .elementor-icon-box-wrapper{display:block;text-align:center;flex-direction:unset}.elementor-widget-icon-box.elementor-mobile-position-top .elementor-icon-box-icon{margin-bottom:var(--icon-box-icon-margin,15px);margin-right:auto;margin-left:auto}.elementor-widget-icon-box.elementor-position-left .elementor-icon-box-icon,.elementor-widget-icon-box.elementor-position-right .elementor-icon-box-icon{display:block;flex:unset}}.elementor-widget-icon-box .elementor-icon-box-title a{color:inherit}.elementor-widget-icon-box .elementor-icon-box-content{flex-grow:1}.elementor-widget-icon-box .elementor-icon-box-description{margin:0}.elementor-widget.elementor-icon-list--layout-inline .elementor-widget-container{overflow:hidden}.elementor-widget .elementor-icon-list-items.elementor-inline-items{margin-right:-8px;margin-left:-8px}.elementor-widget .elementor-icon-list-items.elementor-inline-items .elementor-icon-list-item{margin-right:8px;margin-left:8px}.elementor-widget .elementor-icon-list-items.elementor-inline-items .elementor-icon-list-item:after{width:auto;left:auto;right:auto;position:relative;height:100%;border-top:0;border-bottom:0;border-right:0;border-left-width:1px;border-style:solid;left:-8px}.elementor-widget .elementor-icon-list-items{list-style-type:none;margin:0;padding:0}.elementor-widget .elementor-icon-list-item{margin:0;padding:0;position:relative}.elementor-widget .elementor-icon-list-item:after{position:absolute;bottom:0;width:100%}.elementor-widget .elementor-icon-list-item,.elementor-widget .elementor-icon-list-item a{display:flex;font-size:inherit;align-items:var(--icon-vertical-align,center)}.elementor-widget .elementor-icon-list-icon+.elementor-icon-list-text{align-self:center;padding-right:5px}.elementor-widget .elementor-icon-list-icon{display:flex;position:relative;top:var(--icon-vertical-offset,initial)}.elementor-widget .elementor-icon-list-icon svg{width:var(--e-icon-list-icon-size,1em);height:var(--e-icon-list-icon-size,1em)}.elementor-widget .elementor-icon-list-icon i{width:1.25em;font-size:var(--e-icon-list-icon-size)}.elementor-widget.elementor-widget-icon-list .elementor-icon-list-icon{text-align:var(--e-icon-list-icon-align)}.elementor-widget.elementor-widget-icon-list .elementor-icon-list-icon svg{margin:var(--e-icon-list-icon-margin,0 calc(var(--e-icon-list-icon-size, 1em) * .25) 0 0)}.elementor-widget.elementor-list-item-link-full_width a{width:100%}.elementor-widget.elementor-align-center .elementor-icon-list-item,.elementor-widget.elementor-align-center .elementor-icon-list-item a{justify-content:center}.elementor-widget.elementor-align-center .elementor-icon-list-item:after{margin:auto}.elementor-widget.elementor-align-center .elementor-inline-items{justify-content:center}.elementor-widget.elementor-align-left .elementor-icon-list-item,.elementor-widget.elementor-align-left .elementor-icon-list-item a{justify-content:flex-end;text-align:left}.elementor-widget.elementor-align-left .elementor-inline-items{justify-content:flex-end}.elementor-widget.elementor-align-right .elementor-icon-list-item,.elementor-widget.elementor-align-right .elementor-icon-list-item a{justify-content:flex-start;text-align:right}.elementor-widget.elementor-align-right .elementor-icon-list-items{justify-content:flex-start}.elementor-widget:not(.elementor-align-right) .elementor-icon-list-item:after{right:0}.elementor-widget:not(.elementor-align-left) .elementor-icon-list-item:after{left:0}@media (min-width:ELEMENTOR_SCREEN_WIDESCREEN_MIN){.elementor-widget.elementor-widescreen-align-center .elementor-icon-list-item,.elementor-widget.elementor-widescreen-align-center .elementor-icon-list-item a{justify-content:center}.elementor-widget.elementor-widescreen-align-center .elementor-icon-list-item:after{margin:auto}.elementor-widget.elementor-widescreen-align-center .elementor-inline-items{justify-content:center}.elementor-widget.elementor-widescreen-align-left .elementor-icon-list-item,.elementor-widget.elementor-widescreen-align-left .elementor-icon-list-item a{justify-content:flex-end;text-align:left}.elementor-widget.elementor-widescreen-align-left .elementor-inline-items{justify-content:flex-end}.elementor-widget.elementor-widescreen-align-right .elementor-icon-list-item,.elementor-widget.elementor-widescreen-align-right .elementor-icon-list-item a{justify-content:flex-start;text-align:right}.elementor-widget.elementor-widescreen-align-right .elementor-icon-list-items{justify-content:flex-start}.elementor-widget:not(.elementor-widescreen-align-right) .elementor-icon-list-item:after{right:0}.elementor-widget:not(.elementor-widescreen-align-left) .elementor-icon-list-item:after{left:0}}@media (max-width:ELEMENTOR_SCREEN_LAPTOP_MAX){.elementor-widget.elementor-laptop-align-center .elementor-icon-list-item,.elementor-widget.elementor-laptop-align-center .elementor-icon-list-item a{justify-content:center}.elementor-widget.elementor-laptop-align-center .elementor-icon-list-item:after{margin:auto}.elementor-widget.elementor-laptop-align-center .elementor-inline-items{justify-content:center}.elementor-widget.elementor-laptop-align-left .elementor-icon-list-item,.elementor-widget.elementor-laptop-align-left .elementor-icon-list-item a{justify-content:flex-end;text-align:left}.elementor-widget.elementor-laptop-align-left .elementor-inline-items{justify-content:flex-end}.elementor-widget.elementor-laptop-align-right .elementor-icon-list-item,.elementor-widget.elementor-laptop-align-right .elementor-icon-list-item a{justify-content:flex-start;text-align:right}.elementor-widget.elementor-laptop-align-right .elementor-icon-list-items{justify-content:flex-start}.elementor-widget:not(.elementor-laptop-align-right) .elementor-icon-list-item:after{right:0}.elementor-widget:not(.elementor-laptop-align-left) .elementor-icon-list-item:after{left:0}}@media (max-width:ELEMENTOR_SCREEN_TABLET_EXTRA_MAX){.elementor-widget.elementor-tablet_extra-align-center .elementor-icon-list-item,.elementor-widget.elementor-tablet_extra-align-center .elementor-icon-list-item a{justify-content:center}.elementor-widget.elementor-tablet_extra-align-center .elementor-icon-list-item:after{margin:auto}.elementor-widget.elementor-tablet_extra-align-center .elementor-inline-items{justify-content:center}.elementor-widget.elementor-tablet_extra-align-left .elementor-icon-list-item,.elementor-widget.elementor-tablet_extra-align-left .elementor-icon-list-item a{justify-content:flex-end;text-align:left}.elementor-widget.elementor-tablet_extra-align-left .elementor-inline-items{justify-content:flex-end}.elementor-widget.elementor-tablet_extra-align-right .elementor-icon-list-item,.elementor-widget.elementor-tablet_extra-align-right .elementor-icon-list-item a{justify-content:flex-start;text-align:right}.elementor-widget.elementor-tablet_extra-align-right .elementor-icon-list-items{justify-content:flex-start}.elementor-widget:not(.elementor-tablet_extra-align-right) .elementor-icon-list-item:after{right:0}.elementor-widget:not(.elementor-tablet_extra-align-left) .elementor-icon-list-item:after{left:0}}@media (max-width:ELEMENTOR_SCREEN_TABLET_MAX){.elementor-widget.elementor-tablet-align-center .elementor-icon-list-item,.elementor-widget.elementor-tablet-align-center .elementor-icon-list-item a{justify-content:center}.elementor-widget.elementor-tablet-align-center .elementor-icon-list-item:after{margin:auto}.elementor-widget.elementor-tablet-align-center .elementor-inline-items{justify-content:center}.elementor-widget.elementor-tablet-align-left .elementor-icon-list-item,.elementor-widget.elementor-tablet-align-left .elementor-icon-list-item a{justify-content:flex-end;text-align:left}.elementor-widget.elementor-tablet-align-left .elementor-inline-items{justify-content:flex-end}.elementor-widget.elementor-tablet-align-right .elementor-icon-list-item,.elementor-widget.elementor-tablet-align-right .elementor-icon-list-item a{justify-content:flex-start;text-align:right}.elementor-widget.elementor-tablet-align-right .elementor-icon-list-items{justify-content:flex-start}.elementor-widget:not(.elementor-tablet-align-right) .elementor-icon-list-item:after{right:0}.elementor-widget:not(.elementor-tablet-align-left) .elementor-icon-list-item:after{left:0}}@media (max-width:ELEMENTOR_SCREEN_MOBILE_EXTRA_MAX){.elementor-widget.elementor-mobile_extra-align-center .elementor-icon-list-item,.elementor-widget.elementor-mobile_extra-align-center .elementor-icon-list-item a{justify-content:center}.elementor-widget.elementor-mobile_extra-align-center .elementor-icon-list-item:after{margin:auto}.elementor-widget.elementor-mobile_extra-align-center .elementor-inline-items{justify-content:center}.elementor-widget.elementor-mobile_extra-align-left .elementor-icon-list-item,.elementor-widget.elementor-mobile_extra-align-left .elementor-icon-list-item a{justify-content:flex-end;text-align:left}.elementor-widget.elementor-mobile_extra-align-left .elementor-inline-items{justify-content:flex-end}.elementor-widget.elementor-mobile_extra-align-right .elementor-icon-list-item,.elementor-widget.elementor-mobile_extra-align-right .elementor-icon-list-item a{justify-content:flex-start;text-align:right}.elementor-widget.elementor-mobile_extra-align-right .elementor-icon-list-items{justify-content:flex-start}.elementor-widget:not(.elementor-mobile_extra-align-right) .elementor-icon-list-item:after{right:0}.elementor-widget:not(.elementor-mobile_extra-align-left) .elementor-icon-list-item:after{left:0}}@media (max-width:ELEMENTOR_SCREEN_MOBILE_MAX){.elementor-widget.elementor-mobile-align-center .elementor-icon-list-item,.elementor-widget.elementor-mobile-align-center .elementor-icon-list-item a{justify-content:center}.elementor-widget.elementor-mobile-align-center .elementor-icon-list-item:after{margin:auto}.elementor-widget.elementor-mobile-align-center .elementor-inline-items{justify-content:center}.elementor-widget.elementor-mobile-align-left .elementor-icon-list-item,.elementor-widget.elementor-mobile-align-left .elementor-icon-list-item a{justify-content:flex-end;text-align:left}.elementor-widget.elementor-mobile-align-left .elementor-inline-items{justify-content:flex-end}.elementor-widget.elementor-mobile-align-right .elementor-icon-list-item,.elementor-widget.elementor-mobile-align-right .elementor-icon-list-item a{justify-content:flex-start;text-align:right}.elementor-widget.elementor-mobile-align-right .elementor-icon-list-items{justify-content:flex-start}.elementor-widget:not(.elementor-mobile-align-right) .elementor-icon-list-item:after{right:0}.elementor-widget:not(.elementor-mobile-align-left) .elementor-icon-list-item:after{left:0}}.elementor-widget-image{text-align:center}.elementor-widget-image a{display:inline-block}.elementor-widget-image a img[src$=".svg"]{width:48px}.elementor-widget-image img{vertical-align:middle;display:inline-block}.elementor-widget-image-box .elementor-image-box-content{width:100%}@media (min-width:ELEMENTOR_SCREEN_MOBILE_NEXT){.elementor-widget-image-box.elementor-position-left .elementor-image-box-wrapper,.elementor-widget-image-box.elementor-position-right .elementor-image-box-wrapper{display:flex}.elementor-widget-image-box.elementor-position-right .elementor-image-box-wrapper{text-align:left;flex-direction:row}.elementor-widget-image-box.elementor-position-left .elementor-image-box-wrapper{text-align:right;flex-direction:row-reverse}.elementor-widget-image-box.elementor-position-top .elementor-image-box-img{margin:auto}.elementor-widget-image-box.elementor-vertical-align-top .elementor-image-box-wrapper{align-items:flex-start}.elementor-widget-image-box.elementor-vertical-align-middle .elementor-image-box-wrapper{align-items:center}.elementor-widget-image-box.elementor-vertical-align-bottom .elementor-image-box-wrapper{align-items:flex-end}}@media (max-width:ELEMENTOR_SCREEN_MOBILE_MAX){.elementor-widget-image-box .elementor-image-box-img{margin-left:auto!important;margin-right:auto!important;margin-bottom:15px}}.elementor-widget-image-box .elementor-image-box-img{display:inline-block}.elementor-widget-image-box .elementor-image-box-title a{color:inherit}.elementor-widget-image-box .elementor-image-box-wrapper{text-align:center}.elementor-widget-image-box .elementor-image-box-description{margin:0}.elementor-widget-image-carousel .swiper,.elementor-widget-image-carousel .swiper-container{position:static}.elementor-widget-image-carousel .swiper-container .swiper-slide figure,.elementor-widget-image-carousel .swiper .swiper-slide figure{line-height:inherit}.elementor-widget-image-carousel .swiper-slide{text-align:center}.elementor-image-carousel-wrapper:not(.swiper-container-initialized):not(.swiper-initialized) .swiper-slide{max-width:calc(100% / var(--e-image-carousel-slides-to-show, 3))}body.elementor-page .elementor-widget-menu-anchor{margin-bottom:0}.elementor-widget-progress{text-align:right}.elementor-progress-wrapper{position:relative;background-color:#eee;color:#fff;height:100%;border-radius:2px}.elementor-progress-bar{display:flex;background-color:#69727d;width:0;font-size:11px;height:30px;line-height:30px;border-radius:2px;transition:width 1s ease-in-out}.elementor-progress-text{flex-grow:1;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;padding-right:15px}.elementor-progress-percentage{padding-left:15px}.elementor-widget-progress .elementor-progress-wrapper.progress-info .elementor-progress-bar{background-color:#5bc0de}.elementor-widget-progress .elementor-progress-wrapper.progress-success .elementor-progress-bar{background-color:#5cb85c}.elementor-widget-progress .elementor-progress-wrapper.progress-warning .elementor-progress-bar{background-color:#f0ad4e}.elementor-widget-progress .elementor-progress-wrapper.progress-danger .elementor-progress-bar{background-color:#d9534f}.elementor-progress .elementor-title{display:block}@media (max-width:ELEMENTOR_SCREEN_MOBILE_MAX){.elementor-progress-text{padding-right:10px}}.e-con-inner .elementor-progress-wrapper,.e-con .elementor-progress-wrapper{height:auto}.elementor-widget-social-icons.elementor-grid-0 .elementor-widget-container,.elementor-widget-social-icons.elementor-grid-mobile-0 .elementor-widget-container,.elementor-widget-social-icons.elementor-grid-tablet-0 .elementor-widget-container{line-height:1;font-size:0}.elementor-widget-social-icons:not(.elementor-grid-0):not(.elementor-grid-tablet-0):not(.elementor-grid-mobile-0) .elementor-grid{display:inline-grid}.elementor-widget-social-icons .elementor-grid{grid-column-gap:var(--grid-column-gap,5px);grid-row-gap:var(--grid-row-gap,5px);grid-template-columns:var(--grid-template-columns);justify-content:var(--justify-content,center);justify-items:var(--justify-content,center)}.elementor-icon.elementor-social-icon{font-size:var(--icon-size,25px);line-height:var(--icon-size,25px);width:calc(var(--icon-size, 25px) + 2 * var(--icon-padding, .5em));height:calc(var(--icon-size, 25px) + 2 * var(--icon-padding, .5em))}.elementor-social-icon{--e-social-icon-icon-color:#fff;display:inline-flex;background-color:#69727d;align-items:center;justify-content:center;text-align:center;cursor:pointer}.elementor-social-icon i{color:var(--e-social-icon-icon-color)}.elementor-social-icon svg{fill:var(--e-social-icon-icon-color)}.elementor-social-icon:last-child{margin:0}.elementor-social-icon:hover{opacity:.9;color:#fff}.elementor-social-icon-android{background-color:#a4c639}.elementor-social-icon-apple{background-color:#999}.elementor-social-icon-behance{background-color:#1769ff}.elementor-social-icon-bitbucket{background-color:#205081}.elementor-social-icon-codepen{background-color:#000}.elementor-social-icon-delicious{background-color:#39f}.elementor-social-icon-deviantart{background-color:#05cc47}.elementor-social-icon-digg{background-color:#005be2}.elementor-social-icon-dribbble{background-color:#ea4c89}.elementor-social-icon-elementor{background-color:#d30c5c}.elementor-social-icon-envelope{background-color:#ea4335}.elementor-social-icon-facebook,.elementor-social-icon-facebook-f{background-color:#3b5998}.elementor-social-icon-flickr{background-color:#0063dc}.elementor-social-icon-foursquare{background-color:#2d5be3}.elementor-social-icon-free-code-camp,.elementor-social-icon-freecodecamp{background-color:#006400}.elementor-social-icon-github{background-color:#333}.elementor-social-icon-gitlab{background-color:#e24329}.elementor-social-icon-globe{background-color:#69727d}.elementor-social-icon-google-plus,.elementor-social-icon-google-plus-g{background-color:#dd4b39}.elementor-social-icon-houzz{background-color:#7ac142}.elementor-social-icon-instagram{background-color:#262626}.elementor-social-icon-jsfiddle{background-color:#487aa2}.elementor-social-icon-link{background-color:#818a91}.elementor-social-icon-linkedin,.elementor-social-icon-linkedin-in{background-color:#0077b5}.elementor-social-icon-medium{background-color:#00ab6b}.elementor-social-icon-meetup{background-color:#ec1c40}.elementor-social-icon-mixcloud{background-color:#273a4b}.elementor-social-icon-odnoklassniki{background-color:#f4731c}.elementor-social-icon-pinterest{background-color:#bd081c}.elementor-social-icon-product-hunt{background-color:#da552f}.elementor-social-icon-reddit{background-color:#ff4500}.elementor-social-icon-rss{background-color:#f26522}.elementor-social-icon-shopping-cart{background-color:#4caf50}.elementor-social-icon-skype{background-color:#00aff0}.elementor-social-icon-slideshare{background-color:#0077b5}.elementor-social-icon-snapchat{background-color:#fffc00}.elementor-social-icon-soundcloud{background-color:#f80}.elementor-social-icon-spotify{background-color:#2ebd59}.elementor-social-icon-stack-overflow{background-color:#fe7a15}.elementor-social-icon-steam{background-color:#00adee}.elementor-social-icon-stumbleupon{background-color:#eb4924}.elementor-social-icon-telegram{background-color:#2ca5e0}.elementor-social-icon-threads{background-color:#000}.elementor-social-icon-thumb-tack{background-color:#1aa1d8}.elementor-social-icon-tripadvisor{background-color:#589442}.elementor-social-icon-tumblr{background-color:#35465c}.elementor-social-icon-twitch{background-color:#6441a5}.elementor-social-icon-twitter{background-color:#1da1f2}.elementor-social-icon-viber{background-color:#665cac}.elementor-social-icon-vimeo{background-color:#1ab7ea}.elementor-social-icon-vk{background-color:#45668e}.elementor-social-icon-weibo{background-color:#dd2430}.elementor-social-icon-weixin{background-color:#31a918}.elementor-social-icon-whatsapp{background-color:#25d366}.elementor-social-icon-wordpress{background-color:#21759b}.elementor-social-icon-x-twitter{background-color:#000}.elementor-social-icon-xing{background-color:#026466}.elementor-social-icon-yelp{background-color:#af0606}.elementor-social-icon-youtube{background-color:#cd201f}.elementor-social-icon-500px{background-color:#0099e5}.elementor-shape-rounded .elementor-icon.elementor-social-icon{border-radius:10%}.elementor-shape-circle .elementor-icon.elementor-social-icon{border-radius:50%}.elementor-column .elementor-spacer-inner{height:var(--spacer-size)}.e-con{--container-widget-width:100%}.e-con-inner>.elementor-widget-spacer,.e-con>.elementor-widget-spacer{width:var(--container-widget-width,var(--spacer-size));--align-self:var(--container-widget-align-self,initial);--flex-shrink:0}.e-con-inner>.elementor-widget-spacer>.elementor-widget-container,.e-con>.elementor-widget-spacer>.elementor-widget-container{height:100%;width:100%}.e-con-inner>.elementor-widget-spacer>.elementor-widget-container>.elementor-spacer,.e-con>.elementor-widget-spacer>.elementor-widget-container>.elementor-spacer{height:100%}.e-con-inner>.elementor-widget-spacer>.elementor-widget-container>.elementor-spacer>.elementor-spacer-inner,.e-con>.elementor-widget-spacer>.elementor-widget-container>.elementor-spacer>.elementor-spacer-inner{height:var(--container-widget-height,var(--spacer-size))}.e-con-inner>.elementor-widget-spacer.elementor-widget-empty,.e-con>.elementor-widget-spacer.elementor-widget-empty{position:relative;min-height:22px;min-width:22px}.e-con-inner>.elementor-widget-spacer.elementor-widget-empty .elementor-widget-empty-icon,.e-con>.elementor-widget-spacer.elementor-widget-empty .elementor-widget-empty-icon{position:absolute;top:0;bottom:0;left:0;right:0;margin:auto;padding:0;width:22px;height:22px}.elementor-star-rating{color:#ccd6df;font-family:eicons;display:inline-block}.elementor-star-rating i{display:inline-block;position:relative;font-style:normal;cursor:default}.elementor-star-rating i:before{content:"\e934";display:block;font-size:inherit;font-family:inherit;position:absolute;overflow:hidden;color:#f0ad4e;top:0;right:0}.elementor-star-rating .elementor-star-empty:before{content:none}.elementor-star-rating .elementor-star-1:before{width:10%}.elementor-star-rating .elementor-star-2:before{width:20%}.elementor-star-rating .elementor-star-3:before{width:30%}.elementor-star-rating .elementor-star-4:before{width:40%}.elementor-star-rating .elementor-star-5:before{width:50%}.elementor-star-rating .elementor-star-6:before{width:60%}.elementor-star-rating .elementor-star-7:before{width:70%}.elementor-star-rating .elementor-star-8:before{width:80%}.elementor-star-rating .elementor-star-9:before{width:90%}.elementor-star-rating__wrapper{display:flex;align-items:center}.elementor-star-rating__title{margin-left:10px}.elementor-star-rating--align-right .elementor-star-rating__wrapper{text-align:right;justify-content:flex-start}.elementor-star-rating--align-left .elementor-star-rating__wrapper{text-align:left;justify-content:flex-end}.elementor-star-rating--align-center .elementor-star-rating__wrapper{text-align:center;justify-content:center}.elementor-star-rating--align-justify .elementor-star-rating__title{margin-left:auto}@media (max-width:ELEMENTOR_SCREEN_TABLET_MAX){.elementor-star-rating-tablet--align-right .elementor-star-rating__wrapper{text-align:right;justify-content:flex-start}.elementor-star-rating-tablet--align-left .elementor-star-rating__wrapper{text-align:left;justify-content:flex-end}.elementor-star-rating-tablet--align-center .elementor-star-rating__wrapper{text-align:center;justify-content:center}.elementor-star-rating-tablet--align-justify .elementor-star-rating__title{margin-left:auto}}@media (max-width:ELEMENTOR_SCREEN_MOBILE_MAX){.elementor-star-rating-mobile--align-right .elementor-star-rating__wrapper{text-align:right;justify-content:flex-start}.elementor-star-rating-mobile--align-left .elementor-star-rating__wrapper{text-align:left;justify-content:flex-end}.elementor-star-rating-mobile--align-center .elementor-star-rating__wrapper{text-align:center;justify-content:center}.elementor-star-rating-mobile--align-justify .elementor-star-rating__title{margin-left:auto}}.last-star{letter-spacing:0}.elementor--star-style-star_unicode .elementor-star-rating{font-family:Arial,Helvetica,sans-serif}.elementor--star-style-star_unicode .elementor-star-rating i:not(.elementor-star-empty):before{content:"★"}.elementor-widget-tabs.elementor-tabs-view-vertical .elementor-tabs-wrapper{width:25%;flex-shrink:0}.elementor-widget-tabs.elementor-tabs-view-vertical .elementor-tab-desktop-title.elementor-active{border-left-style:none}.elementor-widget-tabs.elementor-tabs-view-vertical .elementor-tab-desktop-title.elementor-active:after,.elementor-widget-tabs.elementor-tabs-view-vertical .elementor-tab-desktop-title.elementor-active:before{height:999em;width:0;left:0;border-left-style:solid}.elementor-widget-tabs.elementor-tabs-view-vertical .elementor-tab-desktop-title.elementor-active:before{top:0;transform:translateY(-100%)}.elementor-widget-tabs.elementor-tabs-view-vertical .elementor-tab-desktop-title.elementor-active:after{top:100%}.elementor-widget-tabs.elementor-tabs-view-horizontal .elementor-tab-desktop-title{display:table-cell}.elementor-widget-tabs.elementor-tabs-view-horizontal .elementor-tab-desktop-title.elementor-active{border-bottom-style:none}.elementor-widget-tabs.elementor-tabs-view-horizontal .elementor-tab-desktop-title.elementor-active:after,.elementor-widget-tabs.elementor-tabs-view-horizontal .elementor-tab-desktop-title.elementor-active:before{bottom:0;height:0;width:999em;border-bottom-style:solid}.elementor-widget-tabs.elementor-tabs-view-horizontal .elementor-tab-desktop-title.elementor-active:before{right:100%}.elementor-widget-tabs.elementor-tabs-view-horizontal .elementor-tab-desktop-title.elementor-active:after{left:100%}.elementor-widget-tabs .elementor-tab-content,.elementor-widget-tabs .elementor-tab-title,.elementor-widget-tabs .elementor-tab-title:after,.elementor-widget-tabs .elementor-tab-title:before,.elementor-widget-tabs .elementor-tabs-content-wrapper{border:1px #d5d8dc}.elementor-widget-tabs .elementor-tabs{text-align:right}.elementor-widget-tabs .elementor-tabs-wrapper{overflow:hidden}.elementor-widget-tabs .elementor-tab-title{cursor:pointer;outline:var(--focus-outline,none)}.elementor-widget-tabs .elementor-tab-desktop-title{position:relative;padding:20px 25px;font-weight:700;line-height:1;border:solid transparent}.elementor-widget-tabs .elementor-tab-desktop-title.elementor-active{border-color:#d5d8dc}.elementor-widget-tabs .elementor-tab-desktop-title.elementor-active:after,.elementor-widget-tabs .elementor-tab-desktop-title.elementor-active:before{display:block;content:"";position:absolute}.elementor-widget-tabs .elementor-tab-desktop-title:focus-visible{border:1px solid #000}.elementor-widget-tabs .elementor-tab-mobile-title{padding:10px;cursor:pointer}.elementor-widget-tabs .elementor-tab-content{padding:20px;display:none}@media (max-width:ELEMENTOR_SCREEN_MOBILE_MAX){.elementor-tabs .elementor-tab-content,.elementor-tabs .elementor-tab-title{border-style:solid solid none}.elementor-tabs .elementor-tabs-wrapper{display:none}.elementor-tabs .elementor-tabs-content-wrapper{border-bottom-style:solid}.elementor-tabs .elementor-tab-content{padding:10px}}@media (min-width:ELEMENTOR_SCREEN_MOBILE_NEXT){.elementor-widget-tabs.elementor-tabs-view-vertical .elementor-tabs{display:flex}.elementor-widget-tabs.elementor-tabs-view-vertical .elementor-tabs-wrapper{flex-direction:column}.elementor-widget-tabs.elementor-tabs-view-vertical .elementor-tabs-content-wrapper{flex-grow:1;border-style:solid none solid solid}.elementor-widget-tabs.elementor-tabs-view-horizontal .elementor-tab-content{border-style:none solid solid}.elementor-widget-tabs.elementor-tabs-alignment-center .elementor-tabs-wrapper,.elementor-widget-tabs.elementor-tabs-alignment-end .elementor-tabs-wrapper,.elementor-widget-tabs.elementor-tabs-alignment-stretch .elementor-tabs-wrapper{display:flex}.elementor-widget-tabs.elementor-tabs-alignment-center .elementor-tabs-wrapper{justify-content:center}.elementor-widget-tabs.elementor-tabs-alignment-end .elementor-tabs-wrapper{justify-content:flex-end}.elementor-widget-tabs.elementor-tabs-alignment-stretch.elementor-tabs-view-horizontal .elementor-tab-title{width:100%}.elementor-widget-tabs.elementor-tabs-alignment-stretch.elementor-tabs-view-vertical .elementor-tab-title{height:100%}.elementor-tabs .elementor-tab-mobile-title{display:none}}.elementor-testimonial-wrapper{overflow:hidden;text-align:center}.elementor-testimonial-wrapper .elementor-testimonial-content{font-size:1.3em;margin-bottom:20px}.elementor-testimonial-wrapper .elementor-testimonial-name{line-height:1.5;display:block}.elementor-testimonial-wrapper .elementor-testimonial-job{font-size:.85em;display:block}.elementor-testimonial-wrapper .elementor-testimonial-meta{width:100%;line-height:1}.elementor-testimonial-wrapper .elementor-testimonial-meta-inner{display:inline-block}.elementor-testimonial-wrapper .elementor-testimonial-meta .elementor-testimonial-details,.elementor-testimonial-wrapper .elementor-testimonial-meta .elementor-testimonial-image{display:table-cell;vertical-align:middle}.elementor-testimonial-wrapper .elementor-testimonial-meta .elementor-testimonial-image img{width:60px;height:60px;border-radius:50%;-o-object-fit:cover;object-fit:cover;max-width:none}.elementor-testimonial-wrapper .elementor-testimonial-meta.elementor-testimonial-image-position-aside .elementor-testimonial-image{padding-left:15px}.elementor-testimonial-wrapper .elementor-testimonial-meta.elementor-testimonial-image-position-aside .elementor-testimonial-details{text-align:right}.elementor-testimonial-wrapper .elementor-testimonial-meta.elementor-testimonial-image-position-top .elementor-testimonial-details,.elementor-testimonial-wrapper .elementor-testimonial-meta.elementor-testimonial-image-position-top .elementor-testimonial-image{display:block}.elementor-testimonial-wrapper .elementor-testimonial-meta.elementor-testimonial-image-position-top .elementor-testimonial-image{margin-bottom:20px}.elementor-widget-text-editor.elementor-drop-cap-view-stacked .elementor-drop-cap{background-color:#69727d;color:#fff}.elementor-widget-text-editor.elementor-drop-cap-view-framed .elementor-drop-cap{color:#69727d;border:3px solid;background-color:transparent}.elementor-widget-text-editor:not(.elementor-drop-cap-view-default) .elementor-drop-cap{margin-top:8px}.elementor-widget-text-editor:not(.elementor-drop-cap-view-default) .elementor-drop-cap-letter{width:1em;height:1em}.elementor-widget-text-editor .elementor-drop-cap{float:right;text-align:center;line-height:1;font-size:50px}.elementor-widget-text-editor .elementor-drop-cap-letter{display:inline-block}.elementor-toggle{text-align:right}.elementor-toggle .elementor-tab-title{font-weight:700;line-height:1;margin:0;padding:15px;border-bottom:1px solid #d5d8dc;cursor:pointer;outline:none}.elementor-toggle .elementor-tab-title .elementor-toggle-icon{display:inline-block;width:1em}.elementor-toggle .elementor-tab-title .elementor-toggle-icon svg{margin-inline-start:-5px;width:1em;height:1em}.elementor-toggle .elementor-tab-title .elementor-toggle-icon.elementor-toggle-icon-right{float:right;text-align:right}.elementor-toggle .elementor-tab-title .elementor-toggle-icon.elementor-toggle-icon-left{float:left;text-align:left}.elementor-toggle .elementor-tab-title .elementor-toggle-icon .elementor-toggle-icon-closed{display:block}.elementor-toggle .elementor-tab-title .elementor-toggle-icon .elementor-toggle-icon-opened{display:none}.elementor-toggle .elementor-tab-title.elementor-active{border-bottom:none}.elementor-toggle .elementor-tab-title.elementor-active .elementor-toggle-icon-closed{display:none}.elementor-toggle .elementor-tab-title.elementor-active .elementor-toggle-icon-opened{display:block}.elementor-toggle .elementor-tab-content{padding:15px;border-bottom:1px solid #d5d8dc;display:none}@media (max-width:ELEMENTOR_SCREEN_MOBILE_MAX){.elementor-toggle .elementor-tab-title{padding:12px}.elementor-toggle .elementor-tab-content{padding:12px 10px}}.e-con-inner>.elementor-widget-toggle,.e-con>.elementor-widget-toggle{width:var(--container-widget-width);--flex-grow:var(--container-widget-flex-grow)}.elementor-widget-video .elementor-widget-container{overflow:hidden;transform:translateZ(0)}.elementor-widget-video .elementor-wrapper{aspect-ratio:var(--video-aspect-ratio)}.elementor-widget-video .elementor-wrapper iframe,.elementor-widget-video .elementor-wrapper video{height:100%;width:100%;display:flex;border:none;background-color:#000}@supports not (aspect-ratio:1/1){.elementor-widget-video .elementor-wrapper{position:relative;overflow:hidden;height:0;padding-bottom:calc(100% / var(--video-aspect-ratio))}.elementor-widget-video .elementor-wrapper iframe,.elementor-widget-video .elementor-wrapper video{position:absolute;top:0;right:0;bottom:0;left:0}}.elementor-widget-video .elementor-open-inline .elementor-custom-embed-image-overlay{position:absolute;top:0;right:0;bottom:0;left:0;background-size:cover;background-position:50%}.elementor-widget-video .elementor-custom-embed-image-overlay{cursor:pointer;text-align:center}.elementor-widget-video .elementor-custom-embed-image-overlay:hover .elementor-custom-embed-play i{opacity:1}.elementor-widget-video .elementor-custom-embed-image-overlay img{display:block;width:100%;aspect-ratio:var(--video-aspect-ratio);-o-object-fit:cover;object-fit:cover;-o-object-position:center center;object-position:center center}@supports not (aspect-ratio:1/1){.elementor-widget-video .elementor-custom-embed-image-overlay{position:relative;overflow:hidden;height:0;padding-bottom:calc(100% / var(--video-aspect-ratio))}.elementor-widget-video .elementor-custom-embed-image-overlay img{position:absolute;top:0;right:0;bottom:0;left:0}}.elementor-widget-video .e-hosted-video .elementor-video{-o-object-fit:cover;object-fit:cover}.e-con-inner>.elementor-widget-video,.e-con>.elementor-widget-video{width:var(--container-widget-width);--flex-grow:var(--container-widget-flex-grow)}.elementor-widget-rating{--e-rating-gap:0px;--e-rating-icon-font-size:16px;--e-rating-icon-color:#ccd6df;--e-rating-icon-marked-color:#f0ad4e;--e-rating-icon-marked-width:100%;--e-rating-justify-content:flex-start}.elementor-widget-rating .e-rating{display:flex;justify-content:var(--e-rating-justify-content)}.elementor-widget-rating .e-rating-wrapper{display:flex;justify-content:inherit;flex-direction:row;flex-wrap:wrap;width:-moz-fit-content;width:fit-content;margin-block-end:calc(0px - var(--e-rating-gap));margin-inline-end:calc(0px - var(--e-rating-gap))}.elementor-widget-rating .e-rating .e-icon{position:relative;margin-block-end:var(--e-rating-gap);margin-inline-end:var(--e-rating-gap)}.elementor-widget-rating .e-rating .e-icon-wrapper.e-icon-marked{--e-rating-icon-color:var(--e-rating-icon-marked-color);width:var(--e-rating-icon-marked-width);position:absolute;z-index:1;height:100%;left:0;top:0;overflow:hidden}.elementor-widget-rating .e-rating .e-icon-wrapper :is(i,svg){display:flex;flex-shrink:0}.elementor-widget-rating .e-rating .e-icon-wrapper i{font-size:var(--e-rating-icon-font-size);color:var(--e-rating-icon-color)}.elementor-widget-rating .e-rating .e-icon-wrapper svg{width:auto;height:var(--e-rating-icon-font-size);fill:var(--e-rating-icon-color)} \ No newline at end of file diff --git a/wp-content/plugins/elementor/assets/css/templates/frontend.css b/wp-content/plugins/elementor/assets/css/templates/frontend.css new file mode 100644 index 0000000..fb7f69f --- /dev/null +++ b/wp-content/plugins/elementor/assets/css/templates/frontend.css @@ -0,0 +1,5690 @@ +@charset "UTF-8"; +.dialog-widget-content { + background-color: var(--e-a-bg-default); + position: absolute; + border-radius: 3px; + box-shadow: 2px 8px 23px 3px rgba(0, 0, 0, 0.2); + overflow: hidden; +} + +.dialog-message { + line-height: 1.5; + box-sizing: border-box; +} + +.dialog-close-button { + cursor: pointer; + position: absolute; + margin-block-start: 15px; + right: 15px; + color: var(--e-a-color-txt); + font-size: 15px; + line-height: 1; + transition: var(--e-a-transition-hover); +} +.dialog-close-button:hover { + color: var(--e-a-color-txt-hover); +} + +.dialog-prevent-scroll { + overflow: hidden; + max-height: 100vh; +} + +.dialog-type-lightbox { + position: fixed; + height: 100%; + width: 100%; + bottom: 0; + left: 0; + background-color: rgba(0, 0, 0, 0.8); + z-index: 9999; + user-select: none; +} + +.elementor-editor-active .elementor-popup-modal { + background-color: initial; +} + +.dialog-type-confirm .dialog-widget-content, +.dialog-type-alert .dialog-widget-content { + margin: auto; + width: 400px; + padding: 20px; +} +.dialog-type-confirm .dialog-header, +.dialog-type-alert .dialog-header { + font-size: 15px; + font-weight: 500; +} +.dialog-type-confirm .dialog-header:after, +.dialog-type-alert .dialog-header:after { + content: ""; + display: block; + border-block-end: var(--e-a-border); + padding-block-end: 10px; + margin-block-end: 10px; + margin-inline-start: -20px; + margin-inline-end: -20px; +} +.dialog-type-confirm .dialog-message, +.dialog-type-alert .dialog-message { + min-height: 50px; +} +.dialog-type-confirm .dialog-buttons-wrapper, +.dialog-type-alert .dialog-buttons-wrapper { + padding-block-start: 10px; + display: flex; + justify-content: flex-end; + gap: 15px; +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button { + font-size: 12px; + font-weight: 500; + line-height: 1.2; + padding: 8px 16px; + outline: none; + border: none; + border-radius: var(--e-a-border-radius); + background-color: var(--e-a-btn-bg); + color: var(--e-a-btn-color-invert); + transition: var(--e-a-transition-hover); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button:hover { + border: none; +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button:focus { + background-color: var(--e-a-btn-bg-hover); + color: var(--e-a-btn-color-invert); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:active, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button:active { + background-color: var(--e-a-btn-bg-active); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:not([disabled]), +.dialog-type-alert .dialog-buttons-wrapper .dialog-button:not([disabled]) { + cursor: pointer; +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:disabled, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button:disabled { + background-color: var(--e-a-btn-bg-disabled); + color: var(--e-a-btn-color-disabled); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:not(.elementor-button-state) .elementor-state-icon, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button:not(.elementor-button-state) .elementor-state-icon { + display: none; +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel { + background: transparent; + color: var(--e-a-color-txt); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel:focus { + background: var(--e-a-bg-hover); + color: var(--e-a-color-txt-hover); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt:disabled, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel:disabled, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt:disabled, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel:disabled { + background: transparent; + color: var(--e-a-color-txt-disabled); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt-border, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt-border { + border: 1px solid var(--e-a-color-txt-muted); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-success, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-success, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-success, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-success { + background-color: var(--e-a-btn-bg-success); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-success:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-success:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-success:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-success:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-success:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-success:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-success:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-success:focus { + background-color: var(--e-a-btn-bg-success-hover); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-take_over, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-take_over, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok { + background-color: var(--e-a-btn-bg-primary); + color: var(--e-a-btn-color); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-take_over:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-take_over:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-take_over:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-take_over:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok:focus { + background-color: var(--e-a-btn-bg-primary-hover); + color: var(--e-a-btn-color); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary.e-btn-txt, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-take_over, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary.dialog-cancel, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-ok, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary.e-btn-txt, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-take_over, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary.dialog-cancel, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-ok, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel { + background: transparent; + color: var(--e-a-color-primary-bold); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary.e-btn-txt:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-take_over:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary.dialog-cancel:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-ok:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary.e-btn-txt:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-take_over:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary.dialog-cancel:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-ok:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary.e-btn-txt:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-take_over:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary.dialog-cancel:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-ok:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary.e-btn-txt:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-take_over:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary.dialog-cancel:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-ok:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel:focus { + background: var(--e-a-bg-primary); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.go-pro, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-accent, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.go-pro, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-accent { + background-color: var(--e-a-btn-bg-accent); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.go-pro:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.go-pro:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-accent:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-accent:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.go-pro:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.go-pro:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-accent:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-accent:focus { + background-color: var(--e-a-btn-bg-accent-hover); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.go-pro:active, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-accent:active, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.go-pro:active, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-accent:active { + background-color: var(--e-a-btn-bg-accent-active); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-info, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-info, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-info, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-info { + background-color: var(--e-a-btn-bg-info); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-info:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-info:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-info:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-info:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-info:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-info:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-info:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-info:focus { + background-color: var(--e-a-btn-bg-info-hover); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-warning, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-warning, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-warning, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-warning { + background-color: var(--e-a-btn-bg-warning); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-warning:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-warning:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-warning:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-warning:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-warning:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-warning:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-warning:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-warning:focus { + background-color: var(--e-a-btn-bg-warning-hover); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-danger, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-danger, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-danger, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-danger { + background-color: var(--e-a-btn-bg-danger); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-danger:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-danger:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-danger:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-danger:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-danger:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-danger:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-danger:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-danger:focus { + background-color: var(--e-a-btn-bg-danger-hover); +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button i, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button i { + margin-inline-end: 5px; +} +.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button:visited, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button:hover, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button:focus, +.dialog-type-alert .dialog-buttons-wrapper .dialog-button:visited { + color: initial; +} +.flatpickr-calendar { + width: 280px; +} +.flatpickr-calendar .flatpickr-current-month span.cur-month { + font-weight: 300; +} +.flatpickr-calendar .dayContainer { + width: 280px; + min-width: 280px; + max-width: 280px; +} +.flatpickr-calendar .flatpickr-days { + width: 280px; +} +.flatpickr-calendar .flatpickr-day { + max-width: 37px; + height: 37px; + line-height: 37px; +} + +.elementor-hidden { + display: none; +} + +.elementor-screen-only, +.screen-reader-text, +.screen-reader-text span, +.ui-helper-hidden-accessible { + position: absolute; + top: -10000em; + width: 1px; + height: 1px; + margin: -1px; + padding: 0; + overflow: hidden; + clip: rect(0, 0, 0, 0); + border: 0; +} + +.elementor-clearfix:after { + content: ""; + display: block; + clear: both; + width: 0; + height: 0; +} + +.e-logo-wrapper { + background: var(--e-a-bg-logo); + display: inline-block; + padding: 0.75em; + border-radius: 50%; + line-height: 1; +} +.e-logo-wrapper i { + color: var(--e-a-color-logo); + font-size: 1em; +} + +.elementor *, .elementor *:before, .elementor *:after { + box-sizing: border-box; +} +.elementor a { + box-shadow: none; + text-decoration: none; +} +.elementor hr { + margin: 0; + background-color: transparent; +} +.elementor img { + height: auto; + max-width: 100%; + border: none; + border-radius: 0; + box-shadow: none; +} +.elementor .elementor-widget:not(.elementor-widget-text-editor):not(.elementor-widget-theme-post-content) figure { + margin: 0; +} +.elementor embed, +.elementor iframe, +.elementor object, +.elementor video { + max-width: 100%; + width: 100%; + margin: 0; + line-height: 1; + border: none; +} +.elementor .elementor-background-video-container, +.elementor .elementor-background-holder, +.elementor .elementor-background { + height: 100%; + width: 100%; + top: 0; + left: 0; + position: absolute; + overflow: hidden; + z-index: 0; + direction: ltr; +} +.elementor .elementor-background-video-container { + transition: opacity 1s; + pointer-events: none; +} +.elementor .elementor-background-video-container.elementor-loading { + opacity: 0; +} +.elementor .elementor-background-video-embed { + max-width: none; +} +.elementor .elementor-background-video-embed, .elementor .elementor-background-video-hosted { + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); +} +.elementor .elementor-background-video { + max-width: none; + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); +} +.elementor .elementor-html5-video { + object-fit: cover; +} +.elementor .elementor-background-overlay { + height: 100%; + width: 100%; + top: 0; + left: 0; + position: absolute; +} +.elementor .elementor-background-slideshow { + position: absolute; + width: 100%; + height: 100%; + z-index: 0; + top: 0; + left: 0; +} +.elementor .elementor-background-slideshow__slide__image { + width: 100%; + height: 100%; + background-position: center center; + background-size: cover; +} + +.elementor-widget-wrap > .elementor-element.elementor-absolute, +.e-con > .elementor-element.elementor-absolute, +.e-con-inner > .elementor-element.elementor-absolute { + position: absolute; +} +.elementor-widget-wrap > .elementor-element.elementor-fixed, +.e-con > .elementor-element.elementor-fixed, +.e-con-inner > .elementor-element.elementor-fixed { + position: fixed; +} + +.elementor-widget-wrap .elementor-element.elementor-widget__width-auto, .elementor-widget-wrap .elementor-element.elementor-widget__width-initial { + max-width: 100%; +} +@media (max-width: ELEMENTOR_SCREEN_TABLET_MAX) { + .elementor-widget-wrap .elementor-element.elementor-widget-tablet__width-auto, .elementor-widget-wrap .elementor-element.elementor-widget-tablet__width-initial { + max-width: 100%; + } +} +@media (max-width: ELEMENTOR_SCREEN_MOBILE_MAX) { + .elementor-widget-wrap .elementor-element.elementor-widget-mobile__width-auto, .elementor-widget-wrap .elementor-element.elementor-widget-mobile__width-initial { + max-width: 100%; + } +} + +.elementor-element { + --flex-direction: initial; + --flex-wrap: initial; + --justify-content: initial; + --align-items: initial; + --align-content: initial; + --gap: initial; + --flex-basis: initial; + --flex-grow: initial; + --flex-shrink: initial; + --order: initial; + --align-self: initial; + flex-basis: var(--flex-basis); + flex-grow: var(--flex-grow); + flex-shrink: var(--flex-shrink); + order: var(--order); + align-self: var(--align-self); +} +.elementor-element.elementor-absolute, .elementor-element.elementor-fixed { + z-index: 1; +} +.elementor-element:where(.e-con-full, .elementor-widget) { + flex-direction: var(--flex-direction); + flex-wrap: var(--flex-wrap); + justify-content: var(--justify-content); + align-items: var(--align-items); + align-content: var(--align-content); + gap: var(--gap); +} + +.elementor-invisible { + visibility: hidden; +} + +.elementor-align-center { + text-align: center; +} +.elementor-align-center .elementor-button { + width: auto; +} +.elementor-align-right { + text-align: right; +} +.elementor-align-right .elementor-button { + width: auto; +} +.elementor-align-left { + text-align: left; +} +.elementor-align-left .elementor-button { + width: auto; +} +.elementor-align-justify .elementor-button { + width: 100%; +} + +.elementor-custom-embed-play { + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); +} +.elementor-custom-embed-play i { + font-size: 100px; + color: #fff; + text-shadow: 1px 0 6px rgba(0, 0, 0, 0.3); +} +.elementor-custom-embed-play svg { + height: 100px; + width: 100px; + fill: #fff; + filter: drop-shadow(1px 0 6px rgba(0, 0, 0, 0.3)); +} +.elementor-custom-embed-play i, +.elementor-custom-embed-play svg { + opacity: 0.8; + transition: all 0.5s; +} +.elementor-custom-embed-play.elementor-playing i { + font-family: eicons; +} +.elementor-custom-embed-play.elementor-playing i:before { + content: "\e8fb"; +} +.elementor-custom-embed-play.elementor-playing i, +.elementor-custom-embed-play.elementor-playing svg { + animation: eicon-spin 2s infinite linear; +} + +.elementor-tag { + display: inline-flex; +} + +.elementor-ken-burns { + transition-property: transform; + transition-duration: 10s; + transition-timing-function: linear; +} +.elementor-ken-burns--out { + transform: scale(1.3); +} +.elementor-ken-burns--active { + transition-duration: 20s; +} +.elementor-ken-burns--active.elementor-ken-burns--out { + transform: scale(1); +} +.elementor-ken-burns--active.elementor-ken-burns--in { + transform: scale(1.3); +} + +@media (min-width: ELEMENTOR_SCREEN_WIDESCREEN_MIN) { + .elementor-widescreen-align-center { + text-align: center; + } + .elementor-widescreen-align-center .elementor-button { + width: auto; + } + .elementor-widescreen-align-right { + text-align: right; + } + .elementor-widescreen-align-right .elementor-button { + width: auto; + } + .elementor-widescreen-align-left { + text-align: left; + } + .elementor-widescreen-align-left .elementor-button { + width: auto; + } + .elementor-widescreen-align-justify .elementor-button { + width: 100%; + } +} +@media (max-width: ELEMENTOR_SCREEN_LAPTOP_MAX) { + .elementor-laptop-align-center { + text-align: center; + } + .elementor-laptop-align-center .elementor-button { + width: auto; + } + .elementor-laptop-align-right { + text-align: right; + } + .elementor-laptop-align-right .elementor-button { + width: auto; + } + .elementor-laptop-align-left { + text-align: left; + } + .elementor-laptop-align-left .elementor-button { + width: auto; + } + .elementor-laptop-align-justify .elementor-button { + width: 100%; + } +} +@media (max-width: ELEMENTOR_SCREEN_TABLET_EXTRA_MAX) { + .elementor-tablet_extra-align-center { + text-align: center; + } + .elementor-tablet_extra-align-center .elementor-button { + width: auto; + } + .elementor-tablet_extra-align-right { + text-align: right; + } + .elementor-tablet_extra-align-right .elementor-button { + width: auto; + } + .elementor-tablet_extra-align-left { + text-align: left; + } + .elementor-tablet_extra-align-left .elementor-button { + width: auto; + } + .elementor-tablet_extra-align-justify .elementor-button { + width: 100%; + } +} +@media (max-width: ELEMENTOR_SCREEN_TABLET_MAX) { + .elementor-tablet-align-center { + text-align: center; + } + .elementor-tablet-align-center .elementor-button { + width: auto; + } + .elementor-tablet-align-right { + text-align: right; + } + .elementor-tablet-align-right .elementor-button { + width: auto; + } + .elementor-tablet-align-left { + text-align: left; + } + .elementor-tablet-align-left .elementor-button { + width: auto; + } + .elementor-tablet-align-justify .elementor-button { + width: 100%; + } +} +@media (max-width: ELEMENTOR_SCREEN_MOBILE_EXTRA_MAX) { + .elementor-mobile_extra-align-center { + text-align: center; + } + .elementor-mobile_extra-align-center .elementor-button { + width: auto; + } + .elementor-mobile_extra-align-right { + text-align: right; + } + .elementor-mobile_extra-align-right .elementor-button { + width: auto; + } + .elementor-mobile_extra-align-left { + text-align: left; + } + .elementor-mobile_extra-align-left .elementor-button { + width: auto; + } + .elementor-mobile_extra-align-justify .elementor-button { + width: 100%; + } +} +@media (max-width: ELEMENTOR_SCREEN_MOBILE_MAX) { + .elementor-mobile-align-center { + text-align: center; + } + .elementor-mobile-align-center .elementor-button { + width: auto; + } + .elementor-mobile-align-right { + text-align: right; + } + .elementor-mobile-align-right .elementor-button { + width: auto; + } + .elementor-mobile-align-left { + text-align: left; + } + .elementor-mobile-align-left .elementor-button { + width: auto; + } + .elementor-mobile-align-justify .elementor-button { + width: 100%; + } +} +:root { + --page-title-display: block; +} + +.elementor-page-title, h1.entry-title { + display: var(--page-title-display); +} + +@keyframes eicon-spin { + 0% { + transform: rotate(0deg); + } + 100% { + transform: rotate(359deg); + } +} +.eicon-animation-spin { + animation: eicon-spin 2s infinite linear; +} + +.elementor-section { + position: relative; +} +.elementor-section .elementor-container { + display: flex; + margin-right: auto; + margin-left: auto; + position: relative; +} +@media (max-width: ELEMENTOR_SCREEN_TABLET_MAX) { + .elementor-section .elementor-container { + flex-wrap: wrap; + } +} +.elementor-section.elementor-section-boxed > .elementor-container { + max-width: 1140px; +} +.elementor-section.elementor-section-stretched { + position: relative; + width: 100%; +} +.elementor-section.elementor-section-items-top > .elementor-container { + align-items: flex-start; +} +.elementor-section.elementor-section-items-middle > .elementor-container { + align-items: center; +} +.elementor-section.elementor-section-items-bottom > .elementor-container { + align-items: flex-end; +} +@media (min-width: ELEMENTOR_SCREEN_MOBILE_NEXT) { + .elementor-section.elementor-section-height-full { + height: 100vh; + } + .elementor-section.elementor-section-height-full > .elementor-container { + height: 100%; + } +} + +.elementor-bc-flex-widget .elementor-section-content-top > .elementor-container > .elementor-column > .elementor-widget-wrap { + align-items: flex-start; +} +.elementor-bc-flex-widget .elementor-section-content-middle > .elementor-container > .elementor-column > .elementor-widget-wrap { + align-items: center; +} +.elementor-bc-flex-widget .elementor-section-content-bottom > .elementor-container > .elementor-column > .elementor-widget-wrap { + align-items: flex-end; +} + +.elementor-row { + width: 100%; + display: flex; +} +@media (max-width: ELEMENTOR_SCREEN_TABLET_MAX) { + .elementor-row { + flex-wrap: wrap; + } +} + +.elementor-widget-wrap { + position: relative; + width: 100%; + flex-wrap: wrap; + align-content: flex-start; +} +.elementor:not(.elementor-bc-flex-widget) .elementor-widget-wrap { + display: flex; +} +.elementor-widget-wrap > .elementor-element { + width: 100%; +} +.elementor-widget-wrap.e-swiper-container { + width: calc(100% - (var(--e-column-margin-left, 0px) + var(--e-column-margin-right, 0px))); +} + +.elementor-widget { + position: relative; +} +.elementor-widget:not(:last-child) { + margin-bottom: 20px; +} +.elementor-widget:not(:last-child).elementor-widget__width-auto, .elementor-widget:not(:last-child).elementor-widget__width-initial, .elementor-widget:not(:last-child).elementor-absolute { + margin-bottom: 0; +} + +.elementor-column { + position: relative; + min-height: 1px; + display: flex; +} + +.elementor-column-wrap { + width: 100%; + position: relative; + display: flex; +} + +.elementor-column-gap-narrow > .elementor-column > .elementor-element-populated { + padding: 5px; +} +.elementor-column-gap-default > .elementor-column > .elementor-element-populated { + padding: 10px; +} +.elementor-column-gap-extended > .elementor-column > .elementor-element-populated { + padding: 15px; +} +.elementor-column-gap-wide > .elementor-column > .elementor-element-populated { + padding: 20px; +} +.elementor-column-gap-wider > .elementor-column > .elementor-element-populated { + padding: 30px; +} + +.elementor-inner-section .elementor-column-gap-no .elementor-element-populated { + padding: 0; +} + +@media (min-width: ELEMENTOR_SCREEN_MOBILE_NEXT) { + .elementor-column.elementor-col-10, .elementor-column[data-col="10"] { + width: 10%; + } + .elementor-column.elementor-col-11, .elementor-column[data-col="11"] { + width: 11.111%; + } + .elementor-column.elementor-col-12, .elementor-column[data-col="12"] { + width: 12.5%; + } + .elementor-column.elementor-col-14, .elementor-column[data-col="14"] { + width: 14.285%; + } + .elementor-column.elementor-col-16, .elementor-column[data-col="16"] { + width: 16.666%; + } + .elementor-column.elementor-col-20, .elementor-column[data-col="20"] { + width: 20%; + } + .elementor-column.elementor-col-25, .elementor-column[data-col="25"] { + width: 25%; + } + .elementor-column.elementor-col-30, .elementor-column[data-col="30"] { + width: 30%; + } + .elementor-column.elementor-col-33, .elementor-column[data-col="33"] { + width: 33.333%; + } + .elementor-column.elementor-col-40, .elementor-column[data-col="40"] { + width: 40%; + } + .elementor-column.elementor-col-50, .elementor-column[data-col="50"] { + width: 50%; + } + .elementor-column.elementor-col-60, .elementor-column[data-col="60"] { + width: 60%; + } + .elementor-column.elementor-col-66, .elementor-column[data-col="66"] { + width: 66.666%; + } + .elementor-column.elementor-col-70, .elementor-column[data-col="70"] { + width: 70%; + } + .elementor-column.elementor-col-75, .elementor-column[data-col="75"] { + width: 75%; + } + .elementor-column.elementor-col-80, .elementor-column[data-col="80"] { + width: 80%; + } + .elementor-column.elementor-col-83, .elementor-column[data-col="83"] { + width: 83.333%; + } + .elementor-column.elementor-col-90, .elementor-column[data-col="90"] { + width: 90%; + } + .elementor-column.elementor-col-100, .elementor-column[data-col="100"] { + width: 100%; + } +} +@media (max-width: 479px) { + .elementor-column.elementor-xs-10 { + width: 10%; + } + .elementor-column.elementor-xs-11 { + width: 11.111%; + } + .elementor-column.elementor-xs-12 { + width: 12.5%; + } + .elementor-column.elementor-xs-14 { + width: 14.285%; + } + .elementor-column.elementor-xs-16 { + width: 16.666%; + } + .elementor-column.elementor-xs-20 { + width: 20%; + } + .elementor-column.elementor-xs-25 { + width: 25%; + } + .elementor-column.elementor-xs-30 { + width: 30%; + } + .elementor-column.elementor-xs-33 { + width: 33.333%; + } + .elementor-column.elementor-xs-40 { + width: 40%; + } + .elementor-column.elementor-xs-50 { + width: 50%; + } + .elementor-column.elementor-xs-60 { + width: 60%; + } + .elementor-column.elementor-xs-66 { + width: 66.666%; + } + .elementor-column.elementor-xs-70 { + width: 70%; + } + .elementor-column.elementor-xs-75 { + width: 75%; + } + .elementor-column.elementor-xs-80 { + width: 80%; + } + .elementor-column.elementor-xs-83 { + width: 83.333%; + } + .elementor-column.elementor-xs-90 { + width: 90%; + } + .elementor-column.elementor-xs-100 { + width: 100%; + } +} +@media (max-width: ELEMENTOR_SCREEN_MOBILE_MAX) { + .elementor-column.elementor-sm-10 { + width: 10%; + } + .elementor-column.elementor-sm-11 { + width: 11.111%; + } + .elementor-column.elementor-sm-12 { + width: 12.5%; + } + .elementor-column.elementor-sm-14 { + width: 14.285%; + } + .elementor-column.elementor-sm-16 { + width: 16.666%; + } + .elementor-column.elementor-sm-20 { + width: 20%; + } + .elementor-column.elementor-sm-25 { + width: 25%; + } + .elementor-column.elementor-sm-30 { + width: 30%; + } + .elementor-column.elementor-sm-33 { + width: 33.333%; + } + .elementor-column.elementor-sm-40 { + width: 40%; + } + .elementor-column.elementor-sm-50 { + width: 50%; + } + .elementor-column.elementor-sm-60 { + width: 60%; + } + .elementor-column.elementor-sm-66 { + width: 66.666%; + } + .elementor-column.elementor-sm-70 { + width: 70%; + } + .elementor-column.elementor-sm-75 { + width: 75%; + } + .elementor-column.elementor-sm-80 { + width: 80%; + } + .elementor-column.elementor-sm-83 { + width: 83.333%; + } + .elementor-column.elementor-sm-90 { + width: 90%; + } + .elementor-column.elementor-sm-100 { + width: 100%; + } +} +@media (min-width: ELEMENTOR_SCREEN_MOBILE_NEXT) and (max-width: ELEMENTOR_SCREEN_TABLET_MAX) { + .elementor-column.elementor-md-10 { + width: 10%; + } + .elementor-column.elementor-md-11 { + width: 11.111%; + } + .elementor-column.elementor-md-12 { + width: 12.5%; + } + .elementor-column.elementor-md-14 { + width: 14.285%; + } + .elementor-column.elementor-md-16 { + width: 16.666%; + } + .elementor-column.elementor-md-20 { + width: 20%; + } + .elementor-column.elementor-md-25 { + width: 25%; + } + .elementor-column.elementor-md-30 { + width: 30%; + } + .elementor-column.elementor-md-33 { + width: 33.333%; + } + .elementor-column.elementor-md-40 { + width: 40%; + } + .elementor-column.elementor-md-50 { + width: 50%; + } + .elementor-column.elementor-md-60 { + width: 60%; + } + .elementor-column.elementor-md-66 { + width: 66.666%; + } + .elementor-column.elementor-md-70 { + width: 70%; + } + .elementor-column.elementor-md-75 { + width: 75%; + } + .elementor-column.elementor-md-80 { + width: 80%; + } + .elementor-column.elementor-md-83 { + width: 83.333%; + } + .elementor-column.elementor-md-90 { + width: 90%; + } + .elementor-column.elementor-md-100 { + width: 100%; + } +} + +@media (min-width: ELEMENTOR_SCREEN_WIDESCREEN_MIN) { + .elementor-reverse-widescreen > .elementor-container > :nth-child(1) { + order: 10; + } + .elementor-reverse-widescreen > .elementor-container > :nth-child(2) { + order: 9; + } + .elementor-reverse-widescreen > .elementor-container > :nth-child(3) { + order: 8; + } + .elementor-reverse-widescreen > .elementor-container > :nth-child(4) { + order: 7; + } + .elementor-reverse-widescreen > .elementor-container > :nth-child(5) { + order: 6; + } + .elementor-reverse-widescreen > .elementor-container > :nth-child(6) { + order: 5; + } + .elementor-reverse-widescreen > .elementor-container > :nth-child(7) { + order: 4; + } + .elementor-reverse-widescreen > .elementor-container > :nth-child(8) { + order: 3; + } + .elementor-reverse-widescreen > .elementor-container > :nth-child(9) { + order: 2; + } + .elementor-reverse-widescreen > .elementor-container > :nth-child(10) { + order: 1; + } +} +@media (min-width: ELEMENTOR_SCREEN_TABLET_NEXT) and (max-width: ELEMENTOR_SCREEN_LAPTOP_MAX) { + .elementor-reverse-laptop > .elementor-container > :nth-child(1) { + order: 10; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(2) { + order: 9; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(3) { + order: 8; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(4) { + order: 7; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(5) { + order: 6; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(6) { + order: 5; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(7) { + order: 4; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(8) { + order: 3; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(9) { + order: 2; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(10) { + order: 1; + } +} +@media (min-width: ELEMENTOR_SCREEN_TABLET_EXTRA_NEXT) and (max-width: ELEMENTOR_SCREEN_LAPTOP_MAX) { + .elementor-reverse-laptop > .elementor-container > :nth-child(1) { + order: 10; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(2) { + order: 9; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(3) { + order: 8; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(4) { + order: 7; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(5) { + order: 6; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(6) { + order: 5; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(7) { + order: 4; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(8) { + order: 3; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(9) { + order: 2; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(10) { + order: 1; + } +} +@media (min-width: ELEMENTOR_SCREEN_TABLET_NEXT) and (max-width: ELEMENTOR_SCREEN_TABLET_EXTRA_MAX) { + .elementor-reverse-laptop > .elementor-container > :nth-child(1) { + order: initial; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(2) { + order: initial; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(3) { + order: initial; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(4) { + order: initial; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(5) { + order: initial; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(6) { + order: initial; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(7) { + order: initial; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(8) { + order: initial; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(9) { + order: initial; + } + .elementor-reverse-laptop > .elementor-container > :nth-child(10) { + order: initial; + } + .elementor-reverse-tablet_extra > .elementor-container > :nth-child(1) { + order: 10; + } + .elementor-reverse-tablet_extra > .elementor-container > :nth-child(2) { + order: 9; + } + .elementor-reverse-tablet_extra > .elementor-container > :nth-child(3) { + order: 8; + } + .elementor-reverse-tablet_extra > .elementor-container > :nth-child(4) { + order: 7; + } + .elementor-reverse-tablet_extra > .elementor-container > :nth-child(5) { + order: 6; + } + .elementor-reverse-tablet_extra > .elementor-container > :nth-child(6) { + order: 5; + } + .elementor-reverse-tablet_extra > .elementor-container > :nth-child(7) { + order: 4; + } + .elementor-reverse-tablet_extra > .elementor-container > :nth-child(8) { + order: 3; + } + .elementor-reverse-tablet_extra > .elementor-container > :nth-child(9) { + order: 2; + } + .elementor-reverse-tablet_extra > .elementor-container > :nth-child(10) { + order: 1; + } +} +@media (min-width: ELEMENTOR_SCREEN_MOBILE_NEXT) and (max-width: ELEMENTOR_SCREEN_TABLET_MAX) { + .elementor-reverse-tablet > .elementor-container > :nth-child(1) { + order: 10; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(2) { + order: 9; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(3) { + order: 8; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(4) { + order: 7; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(5) { + order: 6; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(6) { + order: 5; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(7) { + order: 4; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(8) { + order: 3; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(9) { + order: 2; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(10) { + order: 1; + } +} +@media (min-width: ELEMENTOR_SCREEN_MOBILE_EXTRA_NEXT) and (max-width: ELEMENTOR_SCREEN_TABLET_MAX) { + .elementor-reverse-tablet > .elementor-container > :nth-child(1) { + order: 10; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(2) { + order: 9; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(3) { + order: 8; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(4) { + order: 7; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(5) { + order: 6; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(6) { + order: 5; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(7) { + order: 4; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(8) { + order: 3; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(9) { + order: 2; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(10) { + order: 1; + } +} +@media (min-width: ELEMENTOR_SCREEN_MOBILE_NEXT) and (max-width: ELEMENTOR_SCREEN_MOBILE_EXTRA_MAX) { + .elementor-reverse-tablet > .elementor-container > :nth-child(1) { + order: initial; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(2) { + order: initial; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(3) { + order: initial; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(4) { + order: initial; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(5) { + order: initial; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(6) { + order: initial; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(7) { + order: initial; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(8) { + order: initial; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(9) { + order: initial; + } + .elementor-reverse-tablet > .elementor-container > :nth-child(10) { + order: initial; + } + .elementor-reverse-mobile_extra > .elementor-container > :nth-child(1) { + order: 10; + } + .elementor-reverse-mobile_extra > .elementor-container > :nth-child(2) { + order: 9; + } + .elementor-reverse-mobile_extra > .elementor-container > :nth-child(3) { + order: 8; + } + .elementor-reverse-mobile_extra > .elementor-container > :nth-child(4) { + order: 7; + } + .elementor-reverse-mobile_extra > .elementor-container > :nth-child(5) { + order: 6; + } + .elementor-reverse-mobile_extra > .elementor-container > :nth-child(6) { + order: 5; + } + .elementor-reverse-mobile_extra > .elementor-container > :nth-child(7) { + order: 4; + } + .elementor-reverse-mobile_extra > .elementor-container > :nth-child(8) { + order: 3; + } + .elementor-reverse-mobile_extra > .elementor-container > :nth-child(9) { + order: 2; + } + .elementor-reverse-mobile_extra > .elementor-container > :nth-child(10) { + order: 1; + } +} +@media (max-width: ELEMENTOR_SCREEN_MOBILE_MAX) { + .elementor-reverse-mobile > .elementor-container > :nth-child(1) { + order: 10; + } + .elementor-reverse-mobile > .elementor-container > :nth-child(2) { + order: 9; + } + .elementor-reverse-mobile > .elementor-container > :nth-child(3) { + order: 8; + } + .elementor-reverse-mobile > .elementor-container > :nth-child(4) { + order: 7; + } + .elementor-reverse-mobile > .elementor-container > :nth-child(5) { + order: 6; + } + .elementor-reverse-mobile > .elementor-container > :nth-child(6) { + order: 5; + } + .elementor-reverse-mobile > .elementor-container > :nth-child(7) { + order: 4; + } + .elementor-reverse-mobile > .elementor-container > :nth-child(8) { + order: 3; + } + .elementor-reverse-mobile > .elementor-container > :nth-child(9) { + order: 2; + } + .elementor-reverse-mobile > .elementor-container > :nth-child(10) { + order: 1; + } + .elementor-column { + width: 100%; + } +} +ul.elementor-icon-list-items.elementor-inline-items { + display: flex; + flex-wrap: wrap; +} +ul.elementor-icon-list-items.elementor-inline-items .elementor-inline-item { + word-break: break-word; +} + +.elementor-grid { + display: grid; + grid-column-gap: var(--grid-column-gap); + grid-row-gap: var(--grid-row-gap); +} +.elementor-grid .elementor-grid-item { + min-width: 0; +} +.elementor-grid-0 .elementor-grid { + display: inline-block; + width: 100%; + word-spacing: var(--grid-column-gap); + margin-bottom: calc(-1 * var(--grid-row-gap)); +} +.elementor-grid-0 .elementor-grid .elementor-grid-item { + display: inline-block; + margin-bottom: var(--grid-row-gap); + word-break: break-word; +} +.elementor-grid-1 .elementor-grid { + grid-template-columns: repeat(1, 1fr); +} +.elementor-grid-2 .elementor-grid { + grid-template-columns: repeat(2, 1fr); +} +.elementor-grid-3 .elementor-grid { + grid-template-columns: repeat(3, 1fr); +} +.elementor-grid-4 .elementor-grid { + grid-template-columns: repeat(4, 1fr); +} +.elementor-grid-5 .elementor-grid { + grid-template-columns: repeat(5, 1fr); +} +.elementor-grid-6 .elementor-grid { + grid-template-columns: repeat(6, 1fr); +} +.elementor-grid-7 .elementor-grid { + grid-template-columns: repeat(7, 1fr); +} +.elementor-grid-8 .elementor-grid { + grid-template-columns: repeat(8, 1fr); +} +.elementor-grid-9 .elementor-grid { + grid-template-columns: repeat(9, 1fr); +} +.elementor-grid-10 .elementor-grid { + grid-template-columns: repeat(10, 1fr); +} +.elementor-grid-11 .elementor-grid { + grid-template-columns: repeat(11, 1fr); +} +.elementor-grid-12 .elementor-grid { + grid-template-columns: repeat(12, 1fr); +} +@media (min-width: ELEMENTOR_SCREEN_WIDESCREEN_MIN) { + .elementor-grid-widescreen-0 .elementor-grid { + display: inline-block; + width: 100%; + word-spacing: var(--grid-column-gap); + margin-bottom: calc(-1 * var(--grid-row-gap)); + } + .elementor-grid-widescreen-0 .elementor-grid .elementor-grid-item { + display: inline-block; + margin-bottom: var(--grid-row-gap); + word-break: break-word; + } + .elementor-grid-widescreen-1 .elementor-grid { + grid-template-columns: repeat(1, 1fr); + } + .elementor-grid-widescreen-2 .elementor-grid { + grid-template-columns: repeat(2, 1fr); + } + .elementor-grid-widescreen-3 .elementor-grid { + grid-template-columns: repeat(3, 1fr); + } + .elementor-grid-widescreen-4 .elementor-grid { + grid-template-columns: repeat(4, 1fr); + } + .elementor-grid-widescreen-5 .elementor-grid { + grid-template-columns: repeat(5, 1fr); + } + .elementor-grid-widescreen-6 .elementor-grid { + grid-template-columns: repeat(6, 1fr); + } + .elementor-grid-widescreen-7 .elementor-grid { + grid-template-columns: repeat(7, 1fr); + } + .elementor-grid-widescreen-8 .elementor-grid { + grid-template-columns: repeat(8, 1fr); + } + .elementor-grid-widescreen-9 .elementor-grid { + grid-template-columns: repeat(9, 1fr); + } + .elementor-grid-widescreen-10 .elementor-grid { + grid-template-columns: repeat(10, 1fr); + } + .elementor-grid-widescreen-11 .elementor-grid { + grid-template-columns: repeat(11, 1fr); + } + .elementor-grid-widescreen-12 .elementor-grid { + grid-template-columns: repeat(12, 1fr); + } +} +@media (max-width: ELEMENTOR_SCREEN_LAPTOP_MAX) { + .elementor-grid-laptop-0 .elementor-grid { + display: inline-block; + width: 100%; + word-spacing: var(--grid-column-gap); + margin-bottom: calc(-1 * var(--grid-row-gap)); + } + .elementor-grid-laptop-0 .elementor-grid .elementor-grid-item { + display: inline-block; + margin-bottom: var(--grid-row-gap); + word-break: break-word; + } + .elementor-grid-laptop-1 .elementor-grid { + grid-template-columns: repeat(1, 1fr); + } + .elementor-grid-laptop-2 .elementor-grid { + grid-template-columns: repeat(2, 1fr); + } + .elementor-grid-laptop-3 .elementor-grid { + grid-template-columns: repeat(3, 1fr); + } + .elementor-grid-laptop-4 .elementor-grid { + grid-template-columns: repeat(4, 1fr); + } + .elementor-grid-laptop-5 .elementor-grid { + grid-template-columns: repeat(5, 1fr); + } + .elementor-grid-laptop-6 .elementor-grid { + grid-template-columns: repeat(6, 1fr); + } + .elementor-grid-laptop-7 .elementor-grid { + grid-template-columns: repeat(7, 1fr); + } + .elementor-grid-laptop-8 .elementor-grid { + grid-template-columns: repeat(8, 1fr); + } + .elementor-grid-laptop-9 .elementor-grid { + grid-template-columns: repeat(9, 1fr); + } + .elementor-grid-laptop-10 .elementor-grid { + grid-template-columns: repeat(10, 1fr); + } + .elementor-grid-laptop-11 .elementor-grid { + grid-template-columns: repeat(11, 1fr); + } + .elementor-grid-laptop-12 .elementor-grid { + grid-template-columns: repeat(12, 1fr); + } +} +@media (max-width: ELEMENTOR_SCREEN_TABLET_EXTRA_MAX) { + .elementor-grid-tablet_extra-0 .elementor-grid { + display: inline-block; + width: 100%; + word-spacing: var(--grid-column-gap); + margin-bottom: calc(-1 * var(--grid-row-gap)); + } + .elementor-grid-tablet_extra-0 .elementor-grid .elementor-grid-item { + display: inline-block; + margin-bottom: var(--grid-row-gap); + word-break: break-word; + } + .elementor-grid-tablet_extra-1 .elementor-grid { + grid-template-columns: repeat(1, 1fr); + } + .elementor-grid-tablet_extra-2 .elementor-grid { + grid-template-columns: repeat(2, 1fr); + } + .elementor-grid-tablet_extra-3 .elementor-grid { + grid-template-columns: repeat(3, 1fr); + } + .elementor-grid-tablet_extra-4 .elementor-grid { + grid-template-columns: repeat(4, 1fr); + } + .elementor-grid-tablet_extra-5 .elementor-grid { + grid-template-columns: repeat(5, 1fr); + } + .elementor-grid-tablet_extra-6 .elementor-grid { + grid-template-columns: repeat(6, 1fr); + } + .elementor-grid-tablet_extra-7 .elementor-grid { + grid-template-columns: repeat(7, 1fr); + } + .elementor-grid-tablet_extra-8 .elementor-grid { + grid-template-columns: repeat(8, 1fr); + } + .elementor-grid-tablet_extra-9 .elementor-grid { + grid-template-columns: repeat(9, 1fr); + } + .elementor-grid-tablet_extra-10 .elementor-grid { + grid-template-columns: repeat(10, 1fr); + } + .elementor-grid-tablet_extra-11 .elementor-grid { + grid-template-columns: repeat(11, 1fr); + } + .elementor-grid-tablet_extra-12 .elementor-grid { + grid-template-columns: repeat(12, 1fr); + } +} +@media (max-width: ELEMENTOR_SCREEN_TABLET_MAX) { + .elementor-grid-tablet-0 .elementor-grid { + display: inline-block; + width: 100%; + word-spacing: var(--grid-column-gap); + margin-bottom: calc(-1 * var(--grid-row-gap)); + } + .elementor-grid-tablet-0 .elementor-grid .elementor-grid-item { + display: inline-block; + margin-bottom: var(--grid-row-gap); + word-break: break-word; + } + .elementor-grid-tablet-1 .elementor-grid { + grid-template-columns: repeat(1, 1fr); + } + .elementor-grid-tablet-2 .elementor-grid { + grid-template-columns: repeat(2, 1fr); + } + .elementor-grid-tablet-3 .elementor-grid { + grid-template-columns: repeat(3, 1fr); + } + .elementor-grid-tablet-4 .elementor-grid { + grid-template-columns: repeat(4, 1fr); + } + .elementor-grid-tablet-5 .elementor-grid { + grid-template-columns: repeat(5, 1fr); + } + .elementor-grid-tablet-6 .elementor-grid { + grid-template-columns: repeat(6, 1fr); + } + .elementor-grid-tablet-7 .elementor-grid { + grid-template-columns: repeat(7, 1fr); + } + .elementor-grid-tablet-8 .elementor-grid { + grid-template-columns: repeat(8, 1fr); + } + .elementor-grid-tablet-9 .elementor-grid { + grid-template-columns: repeat(9, 1fr); + } + .elementor-grid-tablet-10 .elementor-grid { + grid-template-columns: repeat(10, 1fr); + } + .elementor-grid-tablet-11 .elementor-grid { + grid-template-columns: repeat(11, 1fr); + } + .elementor-grid-tablet-12 .elementor-grid { + grid-template-columns: repeat(12, 1fr); + } +} +@media (max-width: ELEMENTOR_SCREEN_MOBILE_EXTRA_MAX) { + .elementor-grid-mobile_extra-0 .elementor-grid { + display: inline-block; + width: 100%; + word-spacing: var(--grid-column-gap); + margin-bottom: calc(-1 * var(--grid-row-gap)); + } + .elementor-grid-mobile_extra-0 .elementor-grid .elementor-grid-item { + display: inline-block; + margin-bottom: var(--grid-row-gap); + word-break: break-word; + } + .elementor-grid-mobile_extra-1 .elementor-grid { + grid-template-columns: repeat(1, 1fr); + } + .elementor-grid-mobile_extra-2 .elementor-grid { + grid-template-columns: repeat(2, 1fr); + } + .elementor-grid-mobile_extra-3 .elementor-grid { + grid-template-columns: repeat(3, 1fr); + } + .elementor-grid-mobile_extra-4 .elementor-grid { + grid-template-columns: repeat(4, 1fr); + } + .elementor-grid-mobile_extra-5 .elementor-grid { + grid-template-columns: repeat(5, 1fr); + } + .elementor-grid-mobile_extra-6 .elementor-grid { + grid-template-columns: repeat(6, 1fr); + } + .elementor-grid-mobile_extra-7 .elementor-grid { + grid-template-columns: repeat(7, 1fr); + } + .elementor-grid-mobile_extra-8 .elementor-grid { + grid-template-columns: repeat(8, 1fr); + } + .elementor-grid-mobile_extra-9 .elementor-grid { + grid-template-columns: repeat(9, 1fr); + } + .elementor-grid-mobile_extra-10 .elementor-grid { + grid-template-columns: repeat(10, 1fr); + } + .elementor-grid-mobile_extra-11 .elementor-grid { + grid-template-columns: repeat(11, 1fr); + } + .elementor-grid-mobile_extra-12 .elementor-grid { + grid-template-columns: repeat(12, 1fr); + } +} +@media (max-width: ELEMENTOR_SCREEN_MOBILE_MAX) { + .elementor-grid-mobile-0 .elementor-grid { + display: inline-block; + width: 100%; + word-spacing: var(--grid-column-gap); + margin-bottom: calc(-1 * var(--grid-row-gap)); + } + .elementor-grid-mobile-0 .elementor-grid .elementor-grid-item { + display: inline-block; + margin-bottom: var(--grid-row-gap); + word-break: break-word; + } + .elementor-grid-mobile-1 .elementor-grid { + grid-template-columns: repeat(1, 1fr); + } + .elementor-grid-mobile-2 .elementor-grid { + grid-template-columns: repeat(2, 1fr); + } + .elementor-grid-mobile-3 .elementor-grid { + grid-template-columns: repeat(3, 1fr); + } + .elementor-grid-mobile-4 .elementor-grid { + grid-template-columns: repeat(4, 1fr); + } + .elementor-grid-mobile-5 .elementor-grid { + grid-template-columns: repeat(5, 1fr); + } + .elementor-grid-mobile-6 .elementor-grid { + grid-template-columns: repeat(6, 1fr); + } + .elementor-grid-mobile-7 .elementor-grid { + grid-template-columns: repeat(7, 1fr); + } + .elementor-grid-mobile-8 .elementor-grid { + grid-template-columns: repeat(8, 1fr); + } + .elementor-grid-mobile-9 .elementor-grid { + grid-template-columns: repeat(9, 1fr); + } + .elementor-grid-mobile-10 .elementor-grid { + grid-template-columns: repeat(10, 1fr); + } + .elementor-grid-mobile-11 .elementor-grid { + grid-template-columns: repeat(11, 1fr); + } + .elementor-grid-mobile-12 .elementor-grid { + grid-template-columns: repeat(12, 1fr); + } +} + +@media (min-width: ELEMENTOR_SCREEN_DESKTOP_MIN) { + #elementor-device-mode:after { + content: "desktop"; + } +} +@media (min-width: ELEMENTOR_SCREEN_WIDESCREEN_MIN) { + #elementor-device-mode:after { + content: "widescreen"; + } +} +@media (max-width: ELEMENTOR_SCREEN_LAPTOP_MAX) { + #elementor-device-mode:after { + content: "laptop"; + } +} +@media (max-width: ELEMENTOR_SCREEN_TABLET_EXTRA_MAX) { + #elementor-device-mode:after { + content: "tablet_extra"; + } +} +@media (max-width: ELEMENTOR_SCREEN_TABLET_MAX) { + #elementor-device-mode:after { + content: "tablet"; + } +} +@media (max-width: ELEMENTOR_SCREEN_MOBILE_EXTRA_MAX) { + #elementor-device-mode:after { + content: "mobile_extra"; + } +} +@media (max-width: ELEMENTOR_SCREEN_MOBILE_MAX) { + #elementor-device-mode:after { + content: "mobile"; + } +} + +.e-con { + --border-radius: 0; + --border-block-start-width: 0px; + --border-inline-end-width: 0px; + --border-block-end-width: 0px; + --border-inline-start-width: 0px; + --border-style: initial; + --border-color: initial; + --container-widget-width: 100%; + --container-widget-height: initial; + --container-widget-flex-grow: 0; + --container-widget-align-self: initial; + --content-width: min(100%, var(--container-max-width, 1140px)); + --width: 100%; + --min-height: initial; + --height: auto; + --text-align: initial; + --margin-block-start: 0px; + --margin-inline-end: 0px; + --margin-block-end: 0px; + --margin-inline-start: 0px; + --padding-block-start: var(--container-default-padding-block-start, 10px); + --padding-inline-end: var(--container-default-padding-inline-end, 10px); + --padding-block-end: var(--container-default-padding-block-end, 10px); + --padding-inline-start: var(--container-default-padding-inline-start, 10px); + --position: relative; + --z-index: revert; + --overflow: visible; + --gap: var(--widgets-spacing, 20px); + --overlay-mix-blend-mode: initial; + --overlay-opacity: 1; + --overlay-transition: 0.3s; + --e-con-grid-template-columns: repeat(3, 1fr); + --e-con-grid-template-rows: repeat(2, 1fr); + position: var(--position); + width: var(--width); + min-width: 0; + min-height: var(--min-height); + height: var(--height); + border-radius: var(--border-radius); + margin-block-start: var(--bc-margin-block-start, var(--margin-block-start)); + margin-inline-end: var(--bc-margin-inline-end, var(--margin-inline-end)); + margin-block-end: var(--bc-margin-block-end, var(--margin-block-end)); + margin-inline-start: var(--bc-margin-inline-start, var(--margin-inline-start)); + padding-inline-start: var(--bc-padding-inline-start, var(--padding-inline-start)); + padding-inline-end: var(--bc-padding-inline-end, var(--padding-inline-end)); + z-index: var(--z-index); + overflow: var(--overflow); + transition: background var(--background-transition, 0.3s), border var(--border-transition, 0.3s), box-shadow var(--border-transition, 0.3s), transform var(--e-con-transform-transition-duration, 0.4s); +} +.e-con.e-flex { + --flex-direction: column; + --flex-basis: auto; + --flex-grow: 0; + --flex-shrink: 1; + flex: var(--flex-grow) var(--flex-shrink) var(--flex-basis); +} +.e-con-full, .e-con > .e-con-inner { + text-align: var(--text-align); + padding-block-start: var(--bc-padding-block-start, var(--padding-block-start)); + padding-block-end: var(--bc-padding-block-end, var(--padding-block-end)); +} +.e-con-full.e-flex, .e-con.e-flex > .e-con-inner { + flex-direction: var(--flex-direction); +} +.e-con, .e-con > .e-con-inner { + display: var(--display); +} +.e-con.e-grid { + --grid-justify-content: start; + --grid-align-content: start; + --grid-auto-flow: row; +} +.e-con.e-grid, .e-con.e-grid > .e-con-inner { + grid-template-columns: var(--e-con-grid-template-columns); + grid-template-rows: var(--e-con-grid-template-rows); + justify-content: var(--grid-justify-content); + align-content: var(--grid-align-content); + grid-auto-flow: var(--grid-auto-flow); + justify-items: var(--justify-items); + align-items: var(--align-items); +} +.e-con-boxed.e-flex { + flex-direction: column; + flex-wrap: initial; + justify-content: initial; + align-items: initial; + align-content: initial; +} +.e-con-boxed.e-grid { + justify-items: initial; + grid-template-columns: 1fr; + grid-template-rows: 1fr; +} +.e-con-boxed { + text-align: initial; + gap: initial; +} +.e-con.e-flex > .e-con-inner { + flex-wrap: var(--flex-wrap); + justify-content: var(--justify-content); + align-items: var(--align-items); + align-content: var(--align-content); + flex-basis: initial; + flex-grow: 1; + flex-shrink: initial; + align-self: initial; +} +.e-con.e-grid > .e-con-inner { + justify-items: var(--justify-items); + align-items: var(--align-items); +} +.e-con > .e-con-inner { + gap: var(--gap); + width: 100%; + max-width: var(--content-width); + margin: 0 auto; + padding-inline-start: 0; + padding-inline-end: 0; + height: 100%; +} +:is(.elementor-section-wrap, [data-elementor-id]) > .e-con { + --margin-inline-end: auto; + --margin-inline-start: auto; + max-width: min(100%, var(--width)); +} +.e-con .elementor-widget.elementor-widget { + margin-block-end: 0; +} +.e-con::before, :is(.e-con, .e-con > .e-con-inner) > .elementor-background-video-container::before, +.e-con > .elementor-motion-effects-container > .elementor-motion-effects-layer::before, +.e-con > .elementor-background-slideshow::before { + content: var(--background-overlay); + display: block; + position: absolute; + mix-blend-mode: var(--overlay-mix-blend-mode); + opacity: var(--overlay-opacity); + transition: var(--overlay-transition, 0.3s); + border-radius: var(--border-radius); + border-style: var(--border-style); + border-color: var(--border-color); + border-block-start-width: var(--border-block-start-width); + border-inline-end-width: var(--border-inline-end-width); + border-block-end-width: var(--border-block-end-width); + border-inline-start-width: var(--border-inline-start-width); + top: calc(0px - var(--border-block-start-width)); + left: calc(0px - var(--border-inline-start-width)); + width: max(100% + var(--border-inline-end-width) + var(--border-inline-start-width), 100%); + height: max(100% + var(--border-block-start-width) + var(--border-block-end-width), 100%); +} +.e-con::before { + transition: background var(--overlay-transition, 0.3s), border-radius var(--border-transition, 0.3s), opacity var(--overlay-transition, 0.3s); +} +.e-con > .elementor-background-slideshow, :is(.e-con, .e-con > .e-con-inner) > .elementor-background-video-container { + border-radius: var(--border-radius); + border-style: var(--border-style); + border-color: var(--border-color); + border-block-start-width: var(--border-block-start-width); + border-inline-end-width: var(--border-inline-end-width); + border-block-end-width: var(--border-block-end-width); + border-inline-start-width: var(--border-inline-start-width); + top: calc(0px - var(--border-block-start-width)); + left: calc(0px - var(--border-inline-start-width)); + width: max(100% + var(--border-inline-end-width) + var(--border-inline-start-width), 100%); + height: max(100% + var(--border-block-start-width) + var(--border-block-end-width), 100%); +} +@media (max-width: ELEMENTOR_SCREEN_MOBILE_MAX) { + :is(.e-con, .e-con > .e-con-inner) > .elementor-background-video-container.elementor-hidden-phone { + display: none; + } +} +:is(.e-con, .e-con > .e-con-inner) > .elementor-background-video-container::before { + z-index: 1; +} +:is(.e-con, .e-con > .e-con-inner) > .elementor-background-slideshow::before { + z-index: 2; +} +.e-con .elementor-widget { + min-width: 0; +} +.e-con .elementor-widget-video, .e-con .elementor-widget-google_maps, .e-con .elementor-widget-empty { + width: 100%; +} +.e-con .elementor-widget.e-widget-swiper { + width: 100%; +} +.e-con > .elementor-widget > .elementor-widget-container, .e-con > .e-con-inner > .elementor-widget > .elementor-widget-container { + height: 100%; +} +.elementor.elementor .e-con > .elementor-widget, .e-con.e-con > .e-con-inner > .elementor-widget { + max-width: 100%; +} + +@media (max-width: 767px) { + .e-con.e-flex { + --width: 100%; + --flex-wrap: wrap; + } +} +.e-con { + --bc-margin-block-start: var(--margin-top); + --bc-margin-block-end: var(--margin-bottom); + --bc-margin-inline-start: var(--margin-left); + --bc-margin-inline-end: var(--margin-right); + --bc-padding-block-start: var(--padding-top); + --bc-padding-block-end: var(--padding-bottom); + --bc-padding-inline-start: var(--padding-left); + --bc-padding-inline-end: var(--padding-right); +} +[dir=rtl] .e-con { + --bc-margin-inline-start: var(--margin-right); + --bc-margin-inline-end: var(--margin-left); + --bc-padding-inline-start: var(--padding-right); + --bc-padding-inline-end: var(--padding-left); +} + +.elementor-form-fields-wrapper { + display: flex; + flex-wrap: wrap; +} +.elementor-form-fields-wrapper.elementor-labels-above .elementor-field-group > input, .elementor-form-fields-wrapper.elementor-labels-above .elementor-field-group > textarea, .elementor-form-fields-wrapper.elementor-labels-above .elementor-field-group > .elementor-select-wrapper, .elementor-form-fields-wrapper.elementor-labels-above .elementor-field-group .elementor-field-subgroup { + flex-basis: 100%; + max-width: 100%; +} +.elementor-form-fields-wrapper.elementor-labels-inline > .elementor-field-group > input, .elementor-form-fields-wrapper.elementor-labels-inline > .elementor-field-group .elementor-select-wrapper { + flex-grow: 1; +} + +.elementor-field-group { + flex-wrap: wrap; + align-items: center; +} +.elementor-field-group.elementor-field-type-submit { + align-items: flex-end; +} +.elementor-field-group .elementor-field-textual { + width: 100%; + max-width: 100%; + border: 1px solid #69727D; + background-color: transparent; + color: #1f2124; + vertical-align: middle; + flex-grow: 1; +} +.elementor-field-group .elementor-field-textual:focus { + box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.1) inset; + outline: 0; +} +.elementor-field-group .elementor-field-textual::-webkit-input-placeholder { + color: inherit; + font-family: inherit; + opacity: 0.6; +} +.elementor-field-group .elementor-field-textual:-ms-input-placeholder { + color: inherit; + font-family: inherit; + opacity: 0.6; +} +.elementor-field-group .elementor-field-textual::-moz-placeholder { + color: inherit; + font-family: inherit; + opacity: 0.6; +} +.elementor-field-group .elementor-field-textual:-moz-placeholder { + color: inherit; + font-family: inherit; + opacity: 0.6; +} +.elementor-field-group .elementor-field-textual::placeholder { + color: inherit; + font-family: inherit; + opacity: 0.6; +} +.elementor-field-group .elementor-select-wrapper { + display: flex; + position: relative; + width: 100%; +} +.elementor-field-group .elementor-select-wrapper select { + appearance: none; + color: inherit; + font-size: inherit; + font-family: inherit; + font-weight: inherit; + font-style: inherit; + text-transform: inherit; + letter-spacing: inherit; + line-height: inherit; + flex-basis: 100%; + padding-right: 20px; +} +.elementor-field-group .elementor-select-wrapper:before { + content: "\e92a"; + font-family: "eicons"; + font-size: 15px; + position: absolute; + top: 50%; + transform: translateY(-50%); + right: 10px; + pointer-events: none; + text-shadow: 0 0 3px rgba(0, 0, 0, 0.3); +} +.elementor-field-group.elementor-field-type-select-multiple .elementor-select-wrapper:before { + content: ""; +} + +.elementor-field-subgroup { + display: flex; + flex-wrap: wrap; +} +.elementor-field-subgroup .elementor-field-option label { + display: inline-block; +} +.elementor-field-subgroup.elementor-subgroup-inline .elementor-field-option { + padding-right: 10px; +} +.elementor-field-subgroup:not(.elementor-subgroup-inline) .elementor-field-option { + flex-basis: 100%; +} + +.elementor-field-type-checkbox .elementor-field-subgroup .elementor-field-option input, +.elementor-field-type-checkbox .elementor-field-subgroup .elementor-field-option label, +.elementor-field-type-radio .elementor-field-subgroup .elementor-field-option input, +.elementor-field-type-radio .elementor-field-subgroup .elementor-field-option label, +.elementor-field-type-acceptance .elementor-field-subgroup .elementor-field-option input, +.elementor-field-type-acceptance .elementor-field-subgroup .elementor-field-option label { + display: inline; +} + +.elementor-field-label { + cursor: pointer; +} +.elementor-mark-required .elementor-field-label:after { + content: "*"; + color: red; + padding-left: 0.2em; +} + +.elementor-field-textual { + line-height: 1.4; + font-size: 15px; + min-height: 40px; + padding: 5px 14px; + border-radius: 3px; +} +.elementor-field-textual.elementor-size-xs { + font-size: 13px; + min-height: 33px; + padding: 4px 12px; + border-radius: 2px; +} +.elementor-field-textual.elementor-size-md { + font-size: 16px; + min-height: 47px; + padding: 6px 16px; + border-radius: 4px; +} +.elementor-field-textual.elementor-size-lg { + font-size: 18px; + min-height: 59px; + padding: 7px 20px; + border-radius: 5px; +} +.elementor-field-textual.elementor-size-xl { + font-size: 20px; + min-height: 72px; + padding: 8px 24px; + border-radius: 6px; +} + +.elementor-button-align-stretch .elementor-field-type-submit:not(.e-form__buttons__wrapper) .elementor-button { + flex-basis: 100%; +} +.elementor-button-align-stretch .e-form__buttons__wrapper { + flex-basis: 50%; + flex-grow: 1; +} +.elementor-button-align-stretch .e-form__buttons__wrapper__button { + flex-basis: 100%; +} +.elementor-button-align-center .elementor-field-type-submit, +.elementor-button-align-center .e-form__buttons { + justify-content: center; +} +.elementor-button-align-start .elementor-field-type-submit, +.elementor-button-align-start .e-form__buttons { + justify-content: flex-start; +} +.elementor-button-align-end .elementor-field-type-submit, +.elementor-button-align-end .e-form__buttons { + justify-content: flex-end; +} +.elementor-button-align-center .elementor-field-type-submit:not(.e-form__buttons__wrapper) .elementor-button, .elementor-button-align-start .elementor-field-type-submit:not(.e-form__buttons__wrapper) .elementor-button, .elementor-button-align-end .elementor-field-type-submit:not(.e-form__buttons__wrapper) .elementor-button { + flex-basis: initial; +} +.elementor-button-align-center .e-form__buttons__wrapper, .elementor-button-align-start .e-form__buttons__wrapper, .elementor-button-align-end .e-form__buttons__wrapper { + flex-grow: initial; +} +.elementor-button-align-center .e-form__buttons__wrapper, .elementor-button-align-center .e-form__buttons__wrapper__button, .elementor-button-align-start .e-form__buttons__wrapper, .elementor-button-align-start .e-form__buttons__wrapper__button, .elementor-button-align-end .e-form__buttons__wrapper, .elementor-button-align-end .e-form__buttons__wrapper__button { + flex-basis: initial; +} + +@media screen and (max-width: ELEMENTOR_SCREEN_TABLET_MAX) { + .elementor-tablet-button-align-stretch .elementor-field-type-submit:not(.e-form__buttons__wrapper) .elementor-button { + flex-basis: 100%; + } + .elementor-tablet-button-align-stretch .e-form__buttons__wrapper { + flex-basis: 50%; + flex-grow: 1; + } + .elementor-tablet-button-align-stretch .e-form__buttons__wrapper__button { + flex-basis: 100%; + } + .elementor-tablet-button-align-center .elementor-field-type-submit, + .elementor-tablet-button-align-center .e-form__buttons { + justify-content: center; + } + .elementor-tablet-button-align-start .elementor-field-type-submit, + .elementor-tablet-button-align-start .e-form__buttons { + justify-content: flex-start; + } + .elementor-tablet-button-align-end .elementor-field-type-submit, + .elementor-tablet-button-align-end .e-form__buttons { + justify-content: flex-end; + } + .elementor-tablet-button-align-center .elementor-field-type-submit:not(.e-form__buttons__wrapper) .elementor-button, .elementor-tablet-button-align-start .elementor-field-type-submit:not(.e-form__buttons__wrapper) .elementor-button, .elementor-tablet-button-align-end .elementor-field-type-submit:not(.e-form__buttons__wrapper) .elementor-button { + flex-basis: initial; + } + .elementor-tablet-button-align-center .e-form__buttons__wrapper, .elementor-tablet-button-align-start .e-form__buttons__wrapper, .elementor-tablet-button-align-end .e-form__buttons__wrapper { + flex-grow: initial; + } + .elementor-tablet-button-align-center .e-form__buttons__wrapper, .elementor-tablet-button-align-center .e-form__buttons__wrapper__button, .elementor-tablet-button-align-start .e-form__buttons__wrapper, .elementor-tablet-button-align-start .e-form__buttons__wrapper__button, .elementor-tablet-button-align-end .e-form__buttons__wrapper, .elementor-tablet-button-align-end .e-form__buttons__wrapper__button { + flex-basis: initial; + } +} +@media screen and (max-width: ELEMENTOR_SCREEN_MOBILE_MAX) { + .elementor-mobile-button-align-stretch .elementor-field-type-submit:not(.e-form__buttons__wrapper) .elementor-button { + flex-basis: 100%; + } + .elementor-mobile-button-align-stretch .e-form__buttons__wrapper { + flex-basis: 50%; + flex-grow: 1; + } + .elementor-mobile-button-align-stretch .e-form__buttons__wrapper__button { + flex-basis: 100%; + } + .elementor-mobile-button-align-center .elementor-field-type-submit, + .elementor-mobile-button-align-center .e-form__buttons { + justify-content: center; + } + .elementor-mobile-button-align-start .elementor-field-type-submit, + .elementor-mobile-button-align-start .e-form__buttons { + justify-content: flex-start; + } + .elementor-mobile-button-align-end .elementor-field-type-submit, + .elementor-mobile-button-align-end .e-form__buttons { + justify-content: flex-end; + } + .elementor-mobile-button-align-center .elementor-field-type-submit:not(.e-form__buttons__wrapper) .elementor-button, .elementor-mobile-button-align-start .elementor-field-type-submit:not(.e-form__buttons__wrapper) .elementor-button, .elementor-mobile-button-align-end .elementor-field-type-submit:not(.e-form__buttons__wrapper) .elementor-button { + flex-basis: initial; + } + .elementor-mobile-button-align-center .e-form__buttons__wrapper, .elementor-mobile-button-align-start .e-form__buttons__wrapper, .elementor-mobile-button-align-end .e-form__buttons__wrapper { + flex-grow: initial; + } + .elementor-mobile-button-align-center .e-form__buttons__wrapper, .elementor-mobile-button-align-center .e-form__buttons__wrapper__button, .elementor-mobile-button-align-start .e-form__buttons__wrapper, .elementor-mobile-button-align-start .e-form__buttons__wrapper__button, .elementor-mobile-button-align-end .e-form__buttons__wrapper, .elementor-mobile-button-align-end .e-form__buttons__wrapper__button { + flex-basis: initial; + } +} +.elementor-error .elementor-field { + border-color: #d9534f; +} +.elementor-error .help-inline { + color: #d9534f; + font-size: 0.9em; +} + +.elementor-message { + margin: 10px 0; + font-size: 1em; + line-height: 1; +} +.elementor-message:before { + content: "\e90e"; + display: inline-block; + font-family: eicons; + font-weight: normal; + font-style: normal; + vertical-align: middle; + margin-right: 5px; +} +.elementor-message.elementor-message-danger { + color: #d9534f; +} +.elementor-message.elementor-message-danger:before { + content: "\e87f"; +} +.elementor-message.form-message-success { + color: #5cb85c; +} + +.elementor-form .elementor-button { + padding-top: 0; + padding-bottom: 0; + border: none; +} +.elementor-form .elementor-button > span { + display: flex; + justify-content: center; +} +.elementor-form .elementor-button.elementor-size-xs { + min-height: 33px; +} +.elementor-form .elementor-button.elementor-size-sm { + min-height: 40px; +} +.elementor-form .elementor-button.elementor-size-md { + min-height: 47px; +} +.elementor-form .elementor-button.elementor-size-lg { + min-height: 59px; +} +.elementor-form .elementor-button.elementor-size-xl { + min-height: 72px; +} + +.elementor-element .elementor-widget-container { + transition: background 0.3s, border 0.3s, border-radius 0.3s, box-shadow 0.3s, transform var(--e-transform-transition-duration, 400ms); +} + +.elementor-button { + display: inline-block; + line-height: 1; + background-color: #69727D; + font-size: 15px; + padding: 12px 24px; + border-radius: 3px; + color: #fff; + fill: #fff; + text-align: center; + transition: all 0.3s; +} +.elementor-button:hover, .elementor-button:focus, .elementor-button:visited { + color: #fff; +} +.elementor-button-content-wrapper { + display: flex; + justify-content: center; +} +.elementor-button-icon { + flex-grow: 0; + order: 5; +} +.elementor-button-icon svg { + width: 1em; + height: auto; +} +.elementor-button-icon .e-font-icon-svg { + height: 1em; +} +.elementor-button-text { + flex-grow: 1; + order: 10; + display: inline-block; +} +.elementor-button.elementor-size-xs { + font-size: 13px; + padding: 10px 20px; + border-radius: 2px; +} +.elementor-button.elementor-size-md { + font-size: 16px; + padding: 15px 30px; + border-radius: 4px; +} +.elementor-button.elementor-size-lg { + font-size: 18px; + padding: 20px 40px; + border-radius: 5px; +} +.elementor-button.elementor-size-xl { + font-size: 20px; + padding: 25px 50px; + border-radius: 6px; +} +.elementor-button .elementor-align-icon-right { + margin-left: 5px; + order: 15; +} +.elementor-button .elementor-align-icon-left { + margin-right: 5px; + order: 5; +} +.elementor-button span { + text-decoration: inherit; +} + +.elementor-element.elementor-button-info .elementor-button { + background-color: #5bc0de; +} +.elementor-element.elementor-button-success .elementor-button { + background-color: #5cb85c; +} +.elementor-element.elementor-button-warning .elementor-button { + background-color: #f0ad4e; +} +.elementor-element.elementor-button-danger .elementor-button { + background-color: #d9534f; +} + +.elementor-widget-button .elementor-button .elementor-button-info { + background-color: #5bc0de; +} +.elementor-widget-button .elementor-button .elementor-button-success { + background-color: #5cb85c; +} +.elementor-widget-button .elementor-button .elementor-button-warning { + background-color: #f0ad4e; +} +.elementor-widget-button .elementor-button .elementor-button-danger { + background-color: #d9534f; +} + +.elementor-tab-title a { + color: inherit; +} + +.elementor-view-stacked .elementor-icon { + padding: 0.5em; + background-color: #69727D; + color: #fff; + fill: #fff; +} + +.elementor-view-framed .elementor-icon { + padding: 0.5em; + color: #69727D; + border: 3px solid #69727D; + background-color: transparent; +} + +.elementor-icon { + display: inline-block; + line-height: 1; + transition: all 0.3s; + color: #69727D; + font-size: 50px; + text-align: center; +} +.elementor-icon:hover { + color: #69727D; +} +.elementor-icon i, .elementor-icon svg { + width: 1em; + height: 1em; + position: relative; + display: block; +} +.elementor-icon i:before, .elementor-icon svg:before { + position: absolute; + left: 50%; + transform: translateX(-50%); +} +.elementor-icon i.fad { + width: initial; +} + +.elementor-shape-circle .elementor-icon { + border-radius: 50%; +} + +.e-transform .elementor-widget-container { + transform: perspective(var(--e-transform-perspective, 0)) rotateZ(var(--e-transform-rotateZ, 0)) rotateX(var(--e-transform-rotateX, 0)) rotateY(var(--e-transform-rotateY, 0)) translate(var(--e-transform-translate, 0)) translateX(var(--e-transform-translateX, 0)) translateY(var(--e-transform-translateY, 0)) scaleX(calc(var(--e-transform-flipX, 1) * var(--e-transform-scaleX, var(--e-transform-scale, 1)))) scaleY(calc(var(--e-transform-flipY, 1) * var(--e-transform-scaleY, var(--e-transform-scale, 1)))) skewX(var(--e-transform-skewX, 0)) skewY(var(--e-transform-skewY, 0)); + transform-origin: var(--e-transform-origin-y) var(--e-transform-origin-x); +} + +.e-con.e-transform { + transform: perspective(var(--e-con-transform-perspective, 0)) rotateZ(var(--e-con-transform-rotateZ, 0)) rotateX(var(--e-con-transform-rotateX, 0)) rotateY(var(--e-con-transform-rotateY, 0)) translate(var(--e-con-transform-translate, 0)) translateX(var(--e-con-transform-translateX, 0)) translateY(var(--e-con-transform-translateY, 0)) scaleX(calc(var(--e-con-transform-flipX, 1) * var(--e-con-transform-scaleX, var(--e-con-transform-scale, 1)))) scaleY(calc(var(--e-con-transform-flipY, 1) * var(--e-con-transform-scaleY, var(--e-con-transform-scale, 1)))) skewX(var(--e-con-transform-skewX, 0)) skewY(var(--e-con-transform-skewY, 0)); + transform-origin: var(--e-con-transform-origin-y) var(--e-con-transform-origin-x); +} + +.elementor-element, .elementor-lightbox { + --swiper-theme-color: #000; + --swiper-navigation-size: 44px; + --swiper-pagination-bullet-size: 6px; + --swiper-pagination-bullet-horizontal-gap: 6px; +} +.elementor-element .swiper .swiper-slide figure, +.elementor-element .swiper-container .swiper-slide figure, .elementor-lightbox .swiper .swiper-slide figure, +.elementor-lightbox .swiper-container .swiper-slide figure { + line-height: 0; +} +.elementor-element .swiper .elementor-lightbox-content-source, +.elementor-element .swiper-container .elementor-lightbox-content-source, .elementor-lightbox .swiper .elementor-lightbox-content-source, +.elementor-lightbox .swiper-container .elementor-lightbox-content-source { + display: none; +} +.elementor-element .swiper .elementor-swiper-button, +.elementor-element .swiper ~ .elementor-swiper-button, +.elementor-element .swiper-container .elementor-swiper-button, +.elementor-element .swiper-container ~ .elementor-swiper-button, .elementor-lightbox .swiper .elementor-swiper-button, +.elementor-lightbox .swiper ~ .elementor-swiper-button, +.elementor-lightbox .swiper-container .elementor-swiper-button, +.elementor-lightbox .swiper-container ~ .elementor-swiper-button { + position: absolute; + display: inline-flex; + z-index: 1; + cursor: pointer; + font-size: 25px; + color: rgba(238, 238, 238, 0.9); + top: 50%; + transform: translateY(-50%); +} +.elementor-element .swiper .elementor-swiper-button svg, +.elementor-element .swiper ~ .elementor-swiper-button svg, +.elementor-element .swiper-container .elementor-swiper-button svg, +.elementor-element .swiper-container ~ .elementor-swiper-button svg, .elementor-lightbox .swiper .elementor-swiper-button svg, +.elementor-lightbox .swiper ~ .elementor-swiper-button svg, +.elementor-lightbox .swiper-container .elementor-swiper-button svg, +.elementor-lightbox .swiper-container ~ .elementor-swiper-button svg { + fill: rgba(238, 238, 238, 0.9); + height: 1em; + width: 1em; +} +.elementor-element .swiper .elementor-swiper-button-prev, +.elementor-element .swiper ~ .elementor-swiper-button-prev, +.elementor-element .swiper-container .elementor-swiper-button-prev, +.elementor-element .swiper-container ~ .elementor-swiper-button-prev, .elementor-lightbox .swiper .elementor-swiper-button-prev, +.elementor-lightbox .swiper ~ .elementor-swiper-button-prev, +.elementor-lightbox .swiper-container .elementor-swiper-button-prev, +.elementor-lightbox .swiper-container ~ .elementor-swiper-button-prev { + left: 10px; +} +.elementor-element .swiper .elementor-swiper-button-next, +.elementor-element .swiper ~ .elementor-swiper-button-next, +.elementor-element .swiper-container .elementor-swiper-button-next, +.elementor-element .swiper-container ~ .elementor-swiper-button-next, .elementor-lightbox .swiper .elementor-swiper-button-next, +.elementor-lightbox .swiper ~ .elementor-swiper-button-next, +.elementor-lightbox .swiper-container .elementor-swiper-button-next, +.elementor-lightbox .swiper-container ~ .elementor-swiper-button-next { + right: 10px; +} +.elementor-element .swiper .elementor-swiper-button.swiper-button-disabled, +.elementor-element .swiper ~ .elementor-swiper-button.swiper-button-disabled, +.elementor-element .swiper-container .elementor-swiper-button.swiper-button-disabled, +.elementor-element .swiper-container ~ .elementor-swiper-button.swiper-button-disabled, .elementor-lightbox .swiper .elementor-swiper-button.swiper-button-disabled, +.elementor-lightbox .swiper ~ .elementor-swiper-button.swiper-button-disabled, +.elementor-lightbox .swiper-container .elementor-swiper-button.swiper-button-disabled, +.elementor-lightbox .swiper-container ~ .elementor-swiper-button.swiper-button-disabled { + opacity: 0.3; +} +.elementor-element .swiper .swiper-image-stretch .swiper-slide .swiper-slide-image, +.elementor-element .swiper-container .swiper-image-stretch .swiper-slide .swiper-slide-image, .elementor-lightbox .swiper .swiper-image-stretch .swiper-slide .swiper-slide-image, +.elementor-lightbox .swiper-container .swiper-image-stretch .swiper-slide .swiper-slide-image { + width: 100%; +} +.elementor-element .swiper .swiper-pagination-fraction, +.elementor-element .swiper .swiper-pagination-custom, +.elementor-element .swiper .swiper-horizontal > .swiper-pagination-bullets, +.elementor-element .swiper .swiper-pagination-bullets.swiper-pagination-horizontal, +.elementor-element .swiper ~ .swiper-pagination-fraction, +.elementor-element .swiper ~ .swiper-pagination-custom, +.elementor-element .swiper ~ .swiper-pagination-bullets.swiper-pagination-horizontal, +.elementor-element .swiper-container .swiper-pagination-fraction, +.elementor-element .swiper-container .swiper-pagination-custom, +.elementor-element .swiper-container .swiper-horizontal > .swiper-pagination-bullets, +.elementor-element .swiper-container .swiper-pagination-bullets.swiper-pagination-horizontal, +.elementor-element .swiper-container ~ .swiper-pagination-fraction, +.elementor-element .swiper-container ~ .swiper-pagination-custom, +.elementor-element .swiper-container ~ .swiper-pagination-bullets.swiper-pagination-horizontal, .elementor-lightbox .swiper .swiper-pagination-fraction, +.elementor-lightbox .swiper .swiper-pagination-custom, +.elementor-lightbox .swiper .swiper-horizontal > .swiper-pagination-bullets, +.elementor-lightbox .swiper .swiper-pagination-bullets.swiper-pagination-horizontal, +.elementor-lightbox .swiper ~ .swiper-pagination-fraction, +.elementor-lightbox .swiper ~ .swiper-pagination-custom, +.elementor-lightbox .swiper ~ .swiper-pagination-bullets.swiper-pagination-horizontal, +.elementor-lightbox .swiper-container .swiper-pagination-fraction, +.elementor-lightbox .swiper-container .swiper-pagination-custom, +.elementor-lightbox .swiper-container .swiper-horizontal > .swiper-pagination-bullets, +.elementor-lightbox .swiper-container .swiper-pagination-bullets.swiper-pagination-horizontal, +.elementor-lightbox .swiper-container ~ .swiper-pagination-fraction, +.elementor-lightbox .swiper-container ~ .swiper-pagination-custom, +.elementor-lightbox .swiper-container ~ .swiper-pagination-bullets.swiper-pagination-horizontal { + bottom: 5px; +} +.elementor-element .swiper.swiper-cube .elementor-swiper-button, +.elementor-element .swiper.swiper-cube ~ .elementor-swiper-button, +.elementor-element .swiper-container.swiper-cube .elementor-swiper-button, +.elementor-element .swiper-container.swiper-cube ~ .elementor-swiper-button, .elementor-lightbox .swiper.swiper-cube .elementor-swiper-button, +.elementor-lightbox .swiper.swiper-cube ~ .elementor-swiper-button, +.elementor-lightbox .swiper-container.swiper-cube .elementor-swiper-button, +.elementor-lightbox .swiper-container.swiper-cube ~ .elementor-swiper-button { + transform: translate3d(0, -50%, 1px); +} +.elementor-element :where(.swiper-container-horizontal) ~ .swiper-pagination-bullets, .elementor-lightbox :where(.swiper-container-horizontal) ~ .swiper-pagination-bullets { + bottom: 5px; + left: 0; + width: 100%; +} +.elementor-element :where(.swiper-container-horizontal) ~ .swiper-pagination-bullets .swiper-pagination-bullet, .elementor-lightbox :where(.swiper-container-horizontal) ~ .swiper-pagination-bullets .swiper-pagination-bullet { + margin: 0 var(--swiper-pagination-bullet-horizontal-gap, 4px); +} +.elementor-element :where(.swiper-container-horizontal) ~ .swiper-pagination-progressbar, .elementor-lightbox :where(.swiper-container-horizontal) ~ .swiper-pagination-progressbar { + width: 100%; + height: 4px; + left: 0; + top: 0; +} +.elementor-element.elementor-pagination-position-outside .swiper, +.elementor-element.elementor-pagination-position-outside .swiper-container, .elementor-lightbox.elementor-pagination-position-outside .swiper, +.elementor-lightbox.elementor-pagination-position-outside .swiper-container { + padding-bottom: 30px; +} +.elementor-element.elementor-pagination-position-outside .swiper .elementor-swiper-button, +.elementor-element.elementor-pagination-position-outside .swiper ~ .elementor-swiper-button, +.elementor-element.elementor-pagination-position-outside .swiper-container .elementor-swiper-button, +.elementor-element.elementor-pagination-position-outside .swiper-container ~ .elementor-swiper-button, .elementor-lightbox.elementor-pagination-position-outside .swiper .elementor-swiper-button, +.elementor-lightbox.elementor-pagination-position-outside .swiper ~ .elementor-swiper-button, +.elementor-lightbox.elementor-pagination-position-outside .swiper-container .elementor-swiper-button, +.elementor-lightbox.elementor-pagination-position-outside .swiper-container ~ .elementor-swiper-button { + top: calc(50% - 30px / 2); +} +.elementor-element .elementor-swiper, .elementor-lightbox .elementor-swiper { + position: relative; +} +.elementor-element .elementor-main-swiper, .elementor-lightbox .elementor-main-swiper { + position: static; +} +.elementor-element.elementor-arrows-position-outside .swiper, +.elementor-element.elementor-arrows-position-outside .swiper-container, .elementor-lightbox.elementor-arrows-position-outside .swiper, +.elementor-lightbox.elementor-arrows-position-outside .swiper-container { + width: calc(100% - 60px); +} +.elementor-element.elementor-arrows-position-outside .swiper .elementor-swiper-button-prev, +.elementor-element.elementor-arrows-position-outside .swiper ~ .elementor-swiper-button-prev, +.elementor-element.elementor-arrows-position-outside .swiper-container .elementor-swiper-button-prev, +.elementor-element.elementor-arrows-position-outside .swiper-container ~ .elementor-swiper-button-prev, .elementor-lightbox.elementor-arrows-position-outside .swiper .elementor-swiper-button-prev, +.elementor-lightbox.elementor-arrows-position-outside .swiper ~ .elementor-swiper-button-prev, +.elementor-lightbox.elementor-arrows-position-outside .swiper-container .elementor-swiper-button-prev, +.elementor-lightbox.elementor-arrows-position-outside .swiper-container ~ .elementor-swiper-button-prev { + left: 0; +} +.elementor-element.elementor-arrows-position-outside .swiper .elementor-swiper-button-next, +.elementor-element.elementor-arrows-position-outside .swiper ~ .elementor-swiper-button-next, +.elementor-element.elementor-arrows-position-outside .swiper-container .elementor-swiper-button-next, +.elementor-element.elementor-arrows-position-outside .swiper-container ~ .elementor-swiper-button-next, .elementor-lightbox.elementor-arrows-position-outside .swiper .elementor-swiper-button-next, +.elementor-lightbox.elementor-arrows-position-outside .swiper ~ .elementor-swiper-button-next, +.elementor-lightbox.elementor-arrows-position-outside .swiper-container .elementor-swiper-button-next, +.elementor-lightbox.elementor-arrows-position-outside .swiper-container ~ .elementor-swiper-button-next { + right: 0; +} + +.elementor-lightbox { + --lightbox-ui-color: rgba(238, 238, 238, 0.9); + --lightbox-ui-color-hover: #fff; + --lightbox-text-color: var(--lightbox-ui-color); + --lightbox-header-icons-size: 20px; + --lightbox-navigation-icons-size: 25px; +} +.elementor-lightbox:not(.elementor-popup-modal) .dialog-header, +.elementor-lightbox:not(.elementor-popup-modal) .dialog-message { + text-align: center; +} +.elementor-lightbox .dialog-header { + display: none; +} +.elementor-lightbox .dialog-widget-content { + background: none; + box-shadow: none; + width: 100%; + height: 100%; +} +.elementor-lightbox .dialog-message { + animation-duration: 0.3s; + height: 100%; +} +.elementor-lightbox .dialog-message.dialog-lightbox-message { + padding: 0; +} +.elementor-lightbox .dialog-lightbox-close-button { + cursor: pointer; + position: absolute; + font-size: var(--lightbox-header-icons-size); + right: 0.75em; + margin-top: 13px; + padding: 0.25em; + z-index: 2; + line-height: 1; + display: flex; +} +.elementor-lightbox .dialog-lightbox-close-button svg { + height: 1em; + width: 1em; +} +.elementor-lightbox .dialog-lightbox-close-button, +.elementor-lightbox .elementor-swiper-button { + color: var(--lightbox-ui-color); + transition: all 0.3s; + opacity: 1; +} +.elementor-lightbox .dialog-lightbox-close-button svg, +.elementor-lightbox .elementor-swiper-button svg { + fill: var(--lightbox-ui-color); +} +.elementor-lightbox .dialog-lightbox-close-button:hover, +.elementor-lightbox .elementor-swiper-button:hover { + color: var(--lightbox-ui-color-hover); +} +.elementor-lightbox .dialog-lightbox-close-button:hover svg, +.elementor-lightbox .elementor-swiper-button:hover svg { + fill: var(--lightbox-ui-color-hover); +} +.elementor-lightbox .swiper, +.elementor-lightbox .swiper-container { + height: 100%; +} +.elementor-lightbox .elementor-lightbox-item { + display: flex; + align-items: center; + justify-content: center; + position: relative; + padding: 70px; + box-sizing: border-box; + height: 100%; + margin: auto; +} +@media (max-width: ELEMENTOR_SCREEN_MOBILE_MAX) { + .elementor-lightbox .elementor-lightbox-item { + padding: 70px 0; + } +} +.elementor-lightbox .elementor-lightbox-image { + max-height: 100%; + user-select: none; +} +.elementor-lightbox .elementor-lightbox-image, .elementor-lightbox .elementor-lightbox-image:hover { + opacity: 1; + filter: none; + border: none; +} +.elementor-lightbox .elementor-lightbox-image { + box-shadow: 0 0 30px rgba(0, 0, 0, 0.3), 0 0 8px -5px rgba(0, 0, 0, 0.3); + border-radius: 2px; +} +.elementor-lightbox .elementor-video-container { + width: 100%; + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); +} +.elementor-lightbox .elementor-video-container .elementor-video-square, +.elementor-lightbox .elementor-video-container .elementor-video-landscape, +.elementor-lightbox .elementor-video-container .elementor-video-portrait { + width: 100%; + height: 100%; + margin: auto; +} +.elementor-lightbox .elementor-video-container .elementor-video-square iframe, +.elementor-lightbox .elementor-video-container .elementor-video-landscape iframe, +.elementor-lightbox .elementor-video-container .elementor-video-portrait iframe { + border: 0; + background-color: #000; +} +.elementor-lightbox .elementor-video-container .elementor-video-square iframe, +.elementor-lightbox .elementor-video-container .elementor-video-square video, +.elementor-lightbox .elementor-video-container .elementor-video-landscape iframe, +.elementor-lightbox .elementor-video-container .elementor-video-landscape video, +.elementor-lightbox .elementor-video-container .elementor-video-portrait iframe, +.elementor-lightbox .elementor-video-container .elementor-video-portrait video { + aspect-ratio: var(--video-aspect-ratio, 1.77777); +} +@supports not (aspect-ratio: 1/1) { + .elementor-lightbox .elementor-video-container .elementor-video-square, + .elementor-lightbox .elementor-video-container .elementor-video-landscape, + .elementor-lightbox .elementor-video-container .elementor-video-portrait { + position: relative; + overflow: hidden; + height: 0; + padding-bottom: calc(100% / var(--video-aspect-ratio, 1.77777)); + } + .elementor-lightbox .elementor-video-container .elementor-video-square iframe, + .elementor-lightbox .elementor-video-container .elementor-video-square video, + .elementor-lightbox .elementor-video-container .elementor-video-landscape iframe, + .elementor-lightbox .elementor-video-container .elementor-video-landscape video, + .elementor-lightbox .elementor-video-container .elementor-video-portrait iframe, + .elementor-lightbox .elementor-video-container .elementor-video-portrait video { + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + } +} +.elementor-lightbox .elementor-video-container .elementor-video-square iframe, +.elementor-lightbox .elementor-video-container .elementor-video-square video { + width: min(90vh, 90vw); + height: min(90vh, 90vw); +} +.elementor-lightbox .elementor-video-container .elementor-video-landscape iframe, +.elementor-lightbox .elementor-video-container .elementor-video-landscape video { + width: 100%; + max-height: 90vh; +} +.elementor-lightbox .elementor-video-container .elementor-video-portrait iframe, +.elementor-lightbox .elementor-video-container .elementor-video-portrait video { + height: 100%; + max-width: 90vw; +} +@media (min-width: ELEMENTOR_SCREEN_TABLET_NEXT) { + .elementor-lightbox .elementor-video-container .elementor-video-landscape { + width: 85vw; + max-height: 85vh; + } + .elementor-lightbox .elementor-video-container .elementor-video-portrait { + height: 85vh; + max-width: 85vw; + } +} +@media (max-width: ELEMENTOR_SCREEN_TABLET_MAX) { + .elementor-lightbox .elementor-video-container .elementor-video-landscape { + width: 95vw; + max-height: 95vh; + } + .elementor-lightbox .elementor-video-container .elementor-video-portrait { + height: 95vh; + max-width: 95vw; + } +} +.elementor-lightbox .swiper .elementor-swiper-button-prev, +.elementor-lightbox .swiper-container .elementor-swiper-button-prev { + left: 0; +} +.elementor-lightbox .swiper .elementor-swiper-button-next, +.elementor-lightbox .swiper-container .elementor-swiper-button-next { + right: 0; +} +.elementor-lightbox .swiper .swiper-pagination-fraction, +.elementor-lightbox .swiper-container .swiper-pagination-fraction { + width: max-content; + color: #ffffff; +} +.elementor-lightbox .elementor-swiper-button:focus { + outline-width: 1px; +} +.elementor-lightbox .elementor-swiper-button-prev, .elementor-lightbox .elementor-swiper-button-next { + height: 100%; + display: flex; + align-items: center; + width: 15%; + justify-content: center; + font-size: var(--lightbox-navigation-icons-size); +} +@media (max-width: ELEMENTOR_SCREEN_MOBILE_MAX) { + .elementor-lightbox .elementor-swiper-button:focus { + outline: none; + } + .elementor-lightbox .elementor-swiper-button-prev, .elementor-lightbox .elementor-swiper-button-next { + width: 20%; + } + .elementor-lightbox .elementor-swiper-button-prev i, .elementor-lightbox .elementor-swiper-button-next i { + padding: 10px; + background-color: rgba(0, 0, 0, 0.5); + } + .elementor-lightbox .elementor-swiper-button-prev { + left: 0; + justify-content: flex-start; + } + .elementor-lightbox .elementor-swiper-button-next { + right: 0; + justify-content: flex-end; + } +} + +.elementor-slideshow__counter { + color: currentColor; + font-size: 0.75em; + width: max-content; +} +.elementor-slideshow__header, .elementor-slideshow__footer { + position: absolute; + left: 0; + width: 100%; + padding: 15px 20px; + transition: 0.3s; +} +.elementor-slideshow__footer { + color: var(--lightbox-text-color); +} +.elementor-slideshow__header { + color: var(--lightbox-ui-color); + display: flex; + flex-direction: row-reverse; + font-size: var(--lightbox-header-icons-size); + padding-left: 1em; + padding-right: 2.6em; + top: 0; + align-items: center; + z-index: 10; +} +.elementor-slideshow__header > i, +.elementor-slideshow__header > svg { + cursor: pointer; + padding: 0.25em; + margin: 0 0.35em; +} +.elementor-slideshow__header > i { + font-size: inherit; +} +.elementor-slideshow__header > i:hover { + color: var(--lightbox-ui-color-hover); +} +.elementor-slideshow__header > svg { + box-sizing: content-box; + fill: var(--lightbox-ui-color); + height: 1em; + width: 1em; +} +.elementor-slideshow__header > svg:hover { + fill: var(--lightbox-ui-color-hover); +} +.elementor-slideshow__header .elementor-slideshow__counter { + margin-right: auto; +} +.elementor-slideshow__header .elementor-icon-share { + z-index: 5; +} +.elementor-slideshow__share-menu { + background-color: rgba(0, 0, 0, 0); + width: 0; + height: 0; + position: absolute; + overflow: hidden; + transition: background-color 400ms; +} +.elementor-slideshow__share-menu .elementor-slideshow__share-links a { + color: #0C0D0E; +} +.elementor-slideshow__share-links { + display: block; + position: absolute; + min-width: 200px; + right: 2.8em; + top: 3em; + background-color: #fff; + border-radius: 3px; + padding: 14px 20px; + transform: scale(0); + opacity: 0; + transform-origin: 90% 10%; + transition: all 250ms 100ms; + box-shadow: 0 4px 15px rgba(0, 0, 0, 0.3); +} +.elementor-slideshow__share-links a { + text-align: left; + color: #3f444b; + font-size: 12px; + line-height: 2.5; + display: block; + opacity: 0; + transition: opacity 500ms 100ms; +} +.elementor-slideshow__share-links a:hover { + color: #000; +} +.elementor-slideshow__share-links a i, +.elementor-slideshow__share-links a svg { + margin-right: 0.75em; +} +.elementor-slideshow__share-links a i { + font-size: 1.25em; +} +.elementor-slideshow__share-links a svg { + height: 1.25em; + width: 1.25em; +} +.elementor-slideshow__share-links:before { + content: ""; + display: block; + position: absolute; + top: 1px; + right: 0.5em; + border: 0.45em solid; + border-color: transparent transparent #fff transparent; + transform: translateY(-100%) scaleX(0.7); +} +.elementor-slideshow__footer { + bottom: 0; + z-index: 5; + position: fixed; +} +.elementor-slideshow__title, .elementor-slideshow__description { + margin: 0; +} +.elementor-slideshow__title { + font-size: 16px; + font-weight: bold; +} +.elementor-slideshow__description { + font-size: 14px; +} +.elementor-slideshow--ui-hidden .elementor-slideshow__header, .elementor-slideshow--ui-hidden .elementor-slideshow__footer { + opacity: 0; + pointer-events: none; +} +.elementor-slideshow--ui-hidden .elementor-swiper-button-prev, .elementor-slideshow--ui-hidden .elementor-swiper-button-next { + opacity: 0; +} +.elementor-slideshow--fullscreen-mode .elementor-video-container { + width: 100%; +} +.elementor-slideshow--zoom-mode .elementor-slideshow__header, .elementor-slideshow--zoom-mode .elementor-slideshow__footer { + background-color: rgba(0, 0, 0, 0.5); +} +.elementor-slideshow--zoom-mode .elementor-swiper-button-prev, .elementor-slideshow--zoom-mode .elementor-swiper-button-next { + opacity: 0; + pointer-events: none; +} +.elementor-slideshow--share-mode .elementor-slideshow__share-menu { + top: 0; + left: 0; + width: 100vw; + height: 100vh; + opacity: 1; + cursor: default; + background-color: rgba(0, 0, 0, 0.5); +} +.elementor-slideshow--share-mode .elementor-slideshow__share-links { + transform: scale(1); +} +.elementor-slideshow--share-mode .elementor-slideshow__share-links, .elementor-slideshow--share-mode .elementor-slideshow__share-links a { + opacity: 1; +} +.elementor-slideshow--share-mode .elementor-slideshow__share-links .eicon-twitter { + color: #1DA1F2; +} +.elementor-slideshow--share-mode .elementor-slideshow__share-links .eicon-facebook { + color: #3b5998; +} +.elementor-slideshow--share-mode .elementor-slideshow__share-links .eicon-pinterest { + color: #bd081c; +} +.elementor-slideshow--share-mode .elementor-slideshow__share-links .eicon-download-bold { + color: #9DA5AE; +} +.elementor-slideshow--share-mode .elementor-slideshow__share-links .e-eicon-twitter { + fill: #1DA1F2; +} +.elementor-slideshow--share-mode .elementor-slideshow__share-links .e-eicon-facebook { + fill: #3b5998; +} +.elementor-slideshow--share-mode .elementor-slideshow__share-links .e-eicon-pinterest { + fill: #bd081c; +} +.elementor-slideshow--share-mode .elementor-slideshow__share-links .e-eicon-download-bold { + fill: #9DA5AE; +} +.elementor-slideshow--share-mode .eicon-share-arrow { + z-index: 2; +} + +.animated { + animation-duration: 1.25s; +} +.animated.animated-slow { + animation-duration: 2s; +} +.animated.animated-fast { + animation-duration: 0.75s; +} +.animated.infinite { + animation-iteration-count: infinite; +} +.animated.reverse { + animation-direction: reverse; + animation-fill-mode: forwards; +} + +@media (prefers-reduced-motion: reduce) { + .animated { + animation: none; + } +} +.elementor-shape { + overflow: hidden; + position: absolute; + left: 0; + width: 100%; + line-height: 0; + direction: ltr; + /* + * @TODO: The `z-index: -1` rules below are temporary fixes for Chrome 85 issue. + * It will be removed in a future version of Chrome. + */ +} +.elementor-shape-top { + top: -1px; +} +.elementor-shape-top:not([data-negative=false]) svg { + z-index: -1; +} +.elementor-shape-bottom { + bottom: -1px; +} +.elementor-shape-bottom:not([data-negative=true]) svg { + z-index: -1; +} +.elementor-shape[data-negative=false].elementor-shape-bottom { + transform: rotate(180deg); +} +.elementor-shape[data-negative=true].elementor-shape-top { + transform: rotate(180deg); +} +.elementor-shape svg { + display: block; + width: calc(100% + 1.3px); + position: relative; + left: 50%; + transform: translateX(-50%); +} +.elementor-shape .elementor-shape-fill { + fill: #fff; + transform-origin: center; + transform: rotateY(0deg); +} + +#wp-admin-bar-elementor_edit_page > .ab-item::before { + content: "\e813"; + font-family: eicons; + top: 3px; + font-size: 18px; +} +#wp-admin-bar-elementor_edit_page .ab-submenu .ab-item { + display: flex; + width: 200px; +} +#wp-admin-bar-elementor_edit_page .elementor-edit-link-title { + white-space: nowrap; + text-overflow: ellipsis; + overflow: hidden; + width: 100%; +} +#wp-admin-bar-elementor_edit_page .elementor-edit-link-type { + background: #3f444b; + font-size: 11px; + line-height: 9px; + margin-top: 6px; + padding: 4px 8px; + border-radius: 3px; +} + +#wp-admin-bar-elementor_inspector > .ab-item::before { + content: "\f348"; + top: 2px; +} + +#wpadminbar * { + font-style: normal; +} + +.page-template-elementor_canvas.elementor-page:before { + display: none; +} + +.elementor-post__thumbnail__link { + transition: none; +} + +#left-area ul.elementor-icon-list-items, +.elementor .elementor-element ul.elementor-icon-list-items, +.elementor-edit-area .elementor-element ul.elementor-icon-list-items { + padding: 0; +} + +.e--ua-appleWebkit.rtl { + --flex-right: flex-start; +} +.e--ua-appleWebkit .elementor-widget-social-icons.e-grid-align-right, +.e--ua-appleWebkit .elementor-share-buttons--align-right { + --justify-content: var(--flex-right, flex-end); +} +.e--ua-appleWebkit .elementor-widget-social-icons.e-grid-align-center, +.e--ua-appleWebkit .elementor-share-buttons--align-center { + --justify-content: center; +} +.e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-right .elementor-grid, .e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-center .elementor-grid, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-right .elementor-grid, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-center .elementor-grid, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-justify .elementor-grid { + width: auto; + display: flex; + flex-wrap: wrap; + justify-content: var(--justify-content, space-between); + margin-left: calc(-0.5 * var(--grid-column-gap)); + margin-right: calc(-0.5 * var(--grid-column-gap)); +} +.e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-right .elementor-grid-item, .e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-center .elementor-grid-item, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-right .elementor-grid-item, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-center .elementor-grid-item, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-justify .elementor-grid-item { + margin-left: calc(0.5 * var(--grid-column-gap)); + margin-right: calc(0.5 * var(--grid-column-gap)); +} +.e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-left .elementor-grid, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-left .elementor-grid { + display: inline-block; +} +.e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-left .elementor-grid, .e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-left .elementor-grid-item, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-left .elementor-grid, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-left .elementor-grid-item { + margin-left: 0; + margin-right: 0; +} +@media (max-width: ELEMENTOR_SCREEN_TABLET_MAX) { + .e--ua-appleWebkit .elementor-widget-social-icons.e-grid-align-tablet-right, + .e--ua-appleWebkit .elementor-share-buttons-tablet--align-right { + --justify-content: var(--flex-right, flex-end); + } + .e--ua-appleWebkit .elementor-widget-social-icons.e-grid-align-tablet-center, + .e--ua-appleWebkit .elementor-share-buttons-tablet--align-center { + --justify-content: center; + } + .e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-tablet-right .elementor-grid, .e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-tablet-center .elementor-grid, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-tablet-right .elementor-grid, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-tablet-center .elementor-grid, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-tablet-justify .elementor-grid { + width: auto; + display: flex; + flex-wrap: wrap; + justify-content: var(--justify-content, space-between); + margin-left: calc(-0.5 * var(--grid-column-gap)); + margin-right: calc(-0.5 * var(--grid-column-gap)); + } + .e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-tablet-right .elementor-grid-item, .e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-tablet-center .elementor-grid-item, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-tablet-right .elementor-grid-item, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-tablet-center .elementor-grid-item, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-tablet-justify .elementor-grid-item { + margin-left: calc(0.5 * var(--grid-column-gap)); + margin-right: calc(0.5 * var(--grid-column-gap)); + } + .e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-tablet-left .elementor-grid, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons-tablet--align-left .elementor-grid { + display: inline-block; + } + .e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-tablet-left .elementor-grid, .e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-tablet-left .elementor-grid-item, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons-tablet--align-left .elementor-grid, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons-tablet--align-left .elementor-grid-item { + margin-left: 0; + margin-right: 0; + } +} +@media (max-width: ELEMENTOR_SCREEN_MOBILE_MAX) { + .e--ua-appleWebkit .elementor-widget-social-icons.e-grid-align-mobile-right, + .e--ua-appleWebkit .elementor-share-buttons-mobile--align-right { + --justify-content: var(--flex-right, flex-end); + } + .e--ua-appleWebkit .elementor-widget-social-icons.e-grid-align-mobile-center, + .e--ua-appleWebkit .elementor-share-buttons-mobile--align-center { + --justify-content: center; + } + .e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-mobile-right .elementor-grid, .e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-mobile-center .elementor-grid, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-mobile-right .elementor-grid, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-mobile-center .elementor-grid, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-mobile-justify .elementor-grid { + width: auto; + display: flex; + flex-wrap: wrap; + justify-content: var(--justify-content, space-between); + margin-left: calc(-0.5 * var(--grid-column-gap)); + margin-right: calc(-0.5 * var(--grid-column-gap)); + } + .e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-mobile-right .elementor-grid-item, .e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-mobile-center .elementor-grid-item, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-mobile-right .elementor-grid-item, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-mobile-center .elementor-grid-item, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-mobile-justify .elementor-grid-item { + margin-left: calc(0.5 * var(--grid-column-gap)); + margin-right: calc(0.5 * var(--grid-column-gap)); + } + .e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-mobile-left .elementor-grid, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons-mobile--align-left .elementor-grid { + display: inline-block; + } + .e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-mobile-left .elementor-grid, .e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-mobile-left .elementor-grid-item, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons-mobile--align-left .elementor-grid, .e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons-mobile--align-left .elementor-grid-item { + margin-left: 0; + margin-right: 0; + } +} + +@media (max-width: ELEMENTOR_SCREEN_MOBILE_MAX) { + .elementor .elementor-hidden-mobile { + display: none; + } + .elementor .elementor-hidden-phone { + display: none; + } +} +@media (min-width: ELEMENTOR_SCREEN_MOBILE_EXTRA_MIN) and (max-width: ELEMENTOR_SCREEN_MOBILE_EXTRA_MAX) { + .elementor .elementor-hidden-mobile_extra { + display: none; + } +} +@media (min-width: ELEMENTOR_SCREEN_TABLET_MIN) and (max-width: ELEMENTOR_SCREEN_TABLET_MAX) { + .elementor .elementor-hidden-tablet { + display: none; + } +} +@media (min-width: ELEMENTOR_SCREEN_TABLET_EXTRA_MIN) and (max-width: ELEMENTOR_SCREEN_TABLET_EXTRA_MAX) { + .elementor .elementor-hidden-tablet_extra { + display: none; + } +} +@media (min-width: ELEMENTOR_SCREEN_LAPTOP_MIN) and (max-width: ELEMENTOR_SCREEN_LAPTOP_MAX) { + .elementor .elementor-hidden-laptop { + display: none; + } +} +@media (min-width: ELEMENTOR_SCREEN_DESKTOP_MIN) and (max-width: ELEMENTOR_SCREEN_DESKTOP_MAX) { + .elementor .elementor-hidden-desktop { + display: none; + } +} +@media (min-width: ELEMENTOR_SCREEN_WIDESCREEN_MIN) { + .elementor .elementor-hidden-widescreen { + display: none; + } +} + +.elementor-widget-text-path { + font-size: 20px; + text-align: var(--alignment, left); +} +.elementor-widget-text-path svg { + width: var(--width); + max-width: 100%; + height: auto; + overflow: visible; + word-spacing: var(--word-spacing); + transform: rotate(var(--rotate, 0)) scaleX(var(--scale-x, 1)) scaleY(var(--scale-y, 1)); +} +.elementor-widget-text-path svg path { + vector-effect: non-scaling-stroke; /* Prevent stroke size scaling when resizing the SVG. */ + fill: var(--path-fill, transparent); + stroke: var(--stroke-color, transparent); + stroke-width: var(--stroke-width, 1px); + transition: var(--stroke-transition) stroke, var(--stroke-transition) fill; +} +.elementor-widget-text-path svg:hover path { + --path-fill: var( --path-fill-hover ); + --stroke-color: var( --stroke-color-hover ); + --stroke-width: var( --stroke-width-hover ); +} +.elementor-widget-text-path svg text { + --fill: var( --text-color ); + fill: var(--fill); + direction: var(--direction, ltr); + transition: var(--transition) stroke, var(--transition) stroke-width, var(--transition) fill; +} +.elementor-widget-text-path svg text:hover { + --color: var( --text-color-hover, var( --text-color ) ); + --fill: var( --color ); + color: var(--color); +} + +.elementor-widget-n-tabs { + --n-tabs-color-accent-fallback: #61CE70; + --n-tabs-color-secondary-fallback: #54595F; + --n-tabs-default-padding-block: 15px; + --n-tabs-default-padding-inline: 35px; + --n-tabs-background-color: transparent; + --n-tabs-display: flex; + --n-tabs-direction: column; + --n-tabs-gap: 10px; + --n-tabs-heading-display: flex; + --n-tabs-heading-direction: row; + --n-tabs-heading-grow: initial; + --n-tabs-heading-justify-content: center; + --n-tabs-heading-width: initial; + --n-tabs-heading-overflow-x: initial; + --n-tabs-heading-wrap: nowrap; + --n-tabs-border-width: 1px; + --n-tabs-border-color: #D5D8DC; + --n-tabs-content-display: flex; + --n-tabs-title-color: var(--e-global-color-secondary, var(--n-tabs-color-secondary-fallback)); + --n-tabs-title-color-hover: #ffffff; + --n-tabs-title-color-active: #ffffff; + --n-tabs-title-background-color: #F1F2F3; + --n-tabs-title-background-color-hover: var(--e-global-color-accent, var(--n-tabs-color-accent-fallback)); + --n-tabs-title-background-color-active: var(--e-global-color-accent, var(--n-tabs-color-accent-fallback)); + --n-tabs-title-width: initial; + --n-tabs-title-height: initial; + --n-tabs-title-font-size: 1rem; + --n-tabs-title-white-space: initial; + --n-tabs-title-justify-content-toggle: initial; + --n-tabs-title-align-items-toggle: center; + --n-tabs-title-justify-content: center; + --n-tabs-title-align-items: center; + --n-tabs-title-text-align: center; + --n-tabs-title-direction: row; + --n-tabs-title-gap: 10px; + --n-tabs-title-flex-grow: 0; + --n-tabs-title-flex-basis: content; + --n-tabs-title-flex-shrink: initial; + --n-tabs-title-order: initial; + --n-tabs-title-padding-block-start: var(--n-tabs-default-padding-block); + --n-tabs-title-padding-inline-end: var(--n-tabs-default-padding-inline); + --n-tabs-title-padding-block-end: var(--n-tabs-default-padding-block); + --n-tabs-title-padding-inline-start: var(--n-tabs-default-padding-inline); + --n-tabs-title-border-radius: initial; + --n-tabs-title-transition: 0.3s; + --n-tabs-icon-color: var(--e-global-color-secondary, var(--n-tabs-color-secondary-fallback)); + --n-tabs-icon-color-hover: var(--n-tabs-title-color-hover); + --n-tabs-icon-color-active: #ffffff; + --n-tabs-icon-gap: 5px; + width: 100%; + max-width: 100%; /* Fix issue with new created n-tabs inside n-tabs with overflow */ +} +.elementor-widget-n-tabs .e-n-tabs { + display: var(--n-tabs-display); + flex-direction: var(--n-tabs-direction); + gap: var(--n-tabs-gap); + text-align: start; + min-width: 0; +} +.elementor-widget-n-tabs .e-n-tabs-heading { + display: var(--n-tabs-heading-display); + flex-basis: var(--n-tabs-heading-width); + flex-direction: var(--n-tabs-heading-direction); + flex-shrink: 0; + justify-content: var(--n-tabs-heading-justify-content); + gap: var(--n-tabs-title-gap); + overflow-x: var(--n-tabs-heading-overflow-x); + flex-wrap: var(--n-tabs-heading-wrap); + -ms-overflow-style: none; /* IE and Edge */ + scrollbar-width: none; /* Firefox */ +} +.elementor-widget-n-tabs .e-n-tabs-heading::-webkit-scrollbar { + display: none; /* Hide scrollbar for Chrome, Safari and Opera */ +} +.elementor-widget-n-tabs .e-n-tabs-heading.e-scroll { + cursor: grabbing; + cursor: -webkit-grabbing; +} +.elementor-widget-n-tabs .e-n-tabs-heading.e-scroll-active { + position: relative; +} +.elementor-widget-n-tabs .e-n-tabs-heading.e-scroll-active::before { + content: ""; + position: absolute; + inset-block: 0; + inset-inline: -1000vw; + z-index: 2; +} +.elementor-widget-n-tabs .e-n-tabs-content { + display: var(--n-tabs-content-display); + flex-grow: 1; + min-width: 0; +} +.elementor-widget-n-tabs .e-n-tabs-content > .e-con:not(.e-active) { + display: none; +} +.elementor-widget-n-tabs .e-n-tabs:not(.e-activated) > .e-n-tabs-content > .e-con:nth-child(1) { + display: flex; +} +.elementor-widget-n-tabs .e-n-tab-title { + all: unset; + user-select: none; + display: flex; + align-items: var(--n-tabs-title-align-items-toggle, var(--n-tabs-title-align-items)); + flex-direction: var(--n-tabs-title-direction); + justify-content: var(--n-tabs-title-justify-content-toggle, var(--n-tabs-title-justify-content)); + gap: var(--n-tabs-icon-gap); + border-width: var(--n-tabs-border-width); + position: relative; + cursor: pointer; + outline: none; + flex-grow: var(--n-tabs-title-flex-grow); + flex-basis: var(--n-tabs-title-flex-basis); + flex-shrink: var(--n-tabs-title-flex-shrink); + padding-block-start: var(--n-tabs-title-padding-block-start); + padding-inline-end: var(--n-tabs-title-padding-inline-end); + padding-block-end: var(--n-tabs-title-padding-block-end); + padding-inline-start: var(--n-tabs-title-padding-inline-start); + border-radius: var(--n-tabs-title-border-radius); + height: var(--n-tabs-title-height); + width: var(--n-tabs-title-width); + white-space: var(--n-tabs-title-white-space); + transition: background var(--n-tabs-title-transition), color var(--n-tabs-title-transition), border var(--n-tabs-title-transition), box-shadow var(--n-tabs-title-transition), text-shadow var(--n-tabs-title-transition), stroke var(--n-tabs-title-transition), stroke-width var(--n-tabs-title-transition), -webkit-text-stroke-width var(--n-tabs-title-transition), -webkit-text-stroke-color var(--n-tabs-title-transition), transform var(--n-tabs-title-transition); +} +.elementor-widget-n-tabs .e-n-tab-title:focus-visible { + outline: 5px auto -webkit-focus-ring-color; +} +.elementor-widget-n-tabs .e-n-tab-title span svg, .elementor-widget-n-tabs .e-n-tab-title span i { + transition: color var(--n-tabs-title-transition), fill var(--n-tabs-title-transition); +} +.elementor-widget-n-tabs .e-n-tab-title-text { + display: flex; + align-items: center; + font-size: var(--n-tabs-title-font-size); + text-align: var(--n-tabs-title-text-align); +} +.elementor-widget-n-tabs .e-n-tab-title .e-n-tab-icon { + display: flex; + align-items: center; + flex-direction: column; + flex-shrink: 0; + order: var(--n-tabs-icon-order); + overflow: hidden; +} +.elementor-widget-n-tabs .e-n-tab-title .e-n-tab-icon i { + font-size: var(--n-tabs-icon-size, var(--n-tabs-title-font-size)); +} +.elementor-widget-n-tabs .e-n-tab-title .e-n-tab-icon svg { + width: var(--n-tabs-icon-size, var(--n-tabs-title-font-size)); + height: var(--n-tabs-icon-size, var(--n-tabs-title-font-size)); +} +.elementor-widget-n-tabs .e-n-tab-title .e-n-tab-icon:empty { + display: none; +} +.elementor-widget-n-tabs .e-n-tab-title[aria-selected=false] { + background-color: var(--n-tabs-title-background-color); +} +.elementor-widget-n-tabs .e-n-tab-title[aria-selected=false], .elementor-widget-n-tabs .e-n-tab-title[aria-selected=false] a { + color: var(--n-tabs-title-color); +} +.elementor-widget-n-tabs .e-n-tab-title[aria-selected=false] .e-n-tab-icon i { + color: var(--n-tabs-icon-color); +} +.elementor-widget-n-tabs .e-n-tab-title[aria-selected=false] .e-n-tab-icon svg { + fill: var(--n-tabs-icon-color); +} +.elementor-widget-n-tabs .e-n-tab-title[aria-selected=false] .e-n-tab-icon i:last-child, +.elementor-widget-n-tabs .e-n-tab-title[aria-selected=false] .e-n-tab-icon svg:last-child { + transform: translate(0, -100vh); + height: 0; + opacity: 0; +} +.elementor-widget-n-tabs .e-n-tab-title[aria-selected=true], .elementor-widget-n-tabs .e-n-tab-title[aria-selected=true] a { + color: var(--n-tabs-title-color-active); +} +.elementor-widget-n-tabs .e-n-tab-title[aria-selected=true] .e-n-tab-icon i { + color: var(--n-tabs-icon-color-active); +} +.elementor-widget-n-tabs .e-n-tab-title[aria-selected=true] .e-n-tab-icon svg { + fill: var(--n-tabs-icon-color-active); +} +.elementor-widget-n-tabs .e-n-tab-title[aria-selected=true] .e-n-tab-icon i:first-child, +.elementor-widget-n-tabs .e-n-tab-title[aria-selected=true] .e-n-tab-icon svg:first-child { + transform: translate(0, -100vh); + height: 0; + opacity: 0; +} +.elementor-widget-n-tabs .e-n-tab-title[aria-selected=true][class*=elementor-animation-]:focus, .elementor-widget-n-tabs .e-n-tab-title[aria-selected=true][class*=elementor-animation-]:active, .elementor-widget-n-tabs .e-n-tab-title[aria-selected=true][class*=elementor-animation-]:hover { + transform: initial; + animation: initial; +} +.elementor-widget-n-tabs [data-touch-mode=false] .e-n-tab-title[aria-selected=false]:hover, .elementor-widget-n-tabs [data-touch-mode=false] .e-n-tab-title[aria-selected=false]:hover a { + color: var(--n-tabs-title-color-hover); +} +.elementor-widget-n-tabs [data-touch-mode=false] .e-n-tab-title[aria-selected=false]:hover .e-n-tab-icon i { + color: var(--n-tabs-icon-color-hover); +} +.elementor-widget-n-tabs [data-touch-mode=false] .e-n-tab-title[aria-selected=false]:hover .e-n-tab-icon svg { + fill: var(--n-tabs-icon-color-hover); +} +.elementor-widget-n-tabs [data-touch-mode=true] .e-n-tab-title[aria-selected=false]:hover, .elementor-widget-n-tabs [data-touch-mode=true] .e-n-tab-title[aria-selected=false]:hover a { + color: var(--n-tabs-title-color-active); +} +.elementor-widget-n-tabs [data-touch-mode=true] .e-n-tab-title[aria-selected=false]:hover .e-n-tab-icon i { + color: var(--n-tabs-icon-color-active); +} +.elementor-widget-n-tabs [data-touch-mode=true] .e-n-tab-title[aria-selected=false]:hover .e-n-tab-icon svg { + fill: var(--n-tabs-icon-color-active); +} +.elementor-widget-n-tabs [data-touch-mode=true] .e-n-tab-title[aria-selected=false]:hover .e-n-tab-icon i:first-child, +.elementor-widget-n-tabs [data-touch-mode=true] .e-n-tab-title[aria-selected=false]:hover .e-n-tab-icon svg:first-child { + transform: translate(0, -100vh); + height: 0; + opacity: 0; +} +.elementor-widget-n-tabs [data-touch-mode=true] .e-n-tab-title[aria-selected=false]:hover[class*=elementor-animation-]:focus, .elementor-widget-n-tabs [data-touch-mode=true] .e-n-tab-title[aria-selected=false]:hover[class*=elementor-animation-]:active, .elementor-widget-n-tabs [data-touch-mode=true] .e-n-tab-title[aria-selected=false]:hover[class*=elementor-animation-]:hover { + transform: initial; + animation: initial; +} +.elementor-widget-n-tabs [data-touch-mode=true] .e-n-tab-title[aria-selected=false]:hover .e-n-tab-icon i:last-child, +.elementor-widget-n-tabs [data-touch-mode=true] .e-n-tab-title[aria-selected=false]:hover .e-n-tab-icon svg:last-child { + transform: initial; + height: initial; + opacity: initial; +} + +.elementor .elementor-element.elementor-widget-n-tabs > .elementor-widget-container > .e-n-tabs[data-touch-mode=false] > .e-n-tabs-heading .e-n-tab-title[aria-selected=false]:hover { + background-color: var(--n-tabs-title-background-color-hover); + background-image: initial; +} + +.elementor .elementor-element.elementor-widget-n-tabs > .elementor-widget-container > .e-n-tabs > .e-n-tabs-heading .e-n-tab-title[aria-selected=true], +.elementor .elementor-element.elementor-widget-n-tabs > .elementor-widget-container > .e-n-tabs[data-touch-mode=true] > .e-n-tabs-heading .e-n-tab-title[aria-selected=false]:hover { + background-color: var(--n-tabs-title-background-color-active); + background-image: initial; +} + +@media (max-width: ELEMENTOR_SCREEN_MOBILE_MAX) { + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-mobile { + --n-tabs-direction: column; + --n-tabs-heading-display: contents; + --n-tabs-content-display: contents; + } + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-mobile .e-n-tabs { + gap: 0; + } + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-mobile .e-n-tabs-content > .e-con { + order: var(--n-tabs-title-order); + } + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-mobile .e-n-tab-title { + order: var(--n-tabs-title-order); + width: initial; + } + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-mobile .e-n-tab-title:not(:first-child) { + margin-block-start: var(--n-tabs-title-gap); + } + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-mobile .e-n-tab-title[aria-selected=true] { + margin-block-end: var(--n-tabs-gap); + } +} +@media (max-width: ELEMENTOR_SCREEN_MOBILE_EXTRA_MAX) { + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-mobile_extra { + --n-tabs-direction: column; + --n-tabs-heading-display: contents; + --n-tabs-content-display: contents; + } + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-mobile_extra .e-n-tabs { + gap: 0; + } + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-mobile_extra .e-n-tabs-content > .e-con { + order: var(--n-tabs-title-order); + } + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-mobile_extra .e-n-tab-title { + order: var(--n-tabs-title-order); + width: initial; + } + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-mobile_extra .e-n-tab-title:not(:first-child) { + margin-block-start: var(--n-tabs-title-gap); + } + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-mobile_extra .e-n-tab-title[aria-selected=true] { + margin-block-end: var(--n-tabs-gap); + } +} +@media (max-width: ELEMENTOR_SCREEN_TABLET_MAX) { + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-tablet { + --n-tabs-direction: column; + --n-tabs-heading-display: contents; + --n-tabs-content-display: contents; + } + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-tablet .e-n-tabs { + gap: 0; + } + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-tablet .e-n-tabs-content > .e-con { + order: var(--n-tabs-title-order); + } + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-tablet .e-n-tab-title { + order: var(--n-tabs-title-order); + width: initial; + } + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-tablet .e-n-tab-title:not(:first-child) { + margin-block-start: var(--n-tabs-title-gap); + } + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-tablet .e-n-tab-title[aria-selected=true] { + margin-block-end: var(--n-tabs-gap); + } +} +@media (max-width: ELEMENTOR_SCREEN_TABLET_EXTRA_MAX) { + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-tablet_extra { + --n-tabs-direction: column; + --n-tabs-heading-display: contents; + --n-tabs-content-display: contents; + } + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-tablet_extra .e-n-tabs { + gap: 0; + } + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-tablet_extra .e-n-tabs-content > .e-con { + order: var(--n-tabs-title-order); + } + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-tablet_extra .e-n-tab-title { + order: var(--n-tabs-title-order); + width: initial; + } + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-tablet_extra .e-n-tab-title:not(:first-child) { + margin-block-start: var(--n-tabs-title-gap); + } + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-tablet_extra .e-n-tab-title[aria-selected=true] { + margin-block-end: var(--n-tabs-gap); + } +} +@media (max-width: ELEMENTOR_SCREEN_LAPTOP_MAX) { + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-laptop { + --n-tabs-direction: column; + --n-tabs-heading-display: contents; + --n-tabs-content-display: contents; + } + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-laptop .e-n-tabs { + gap: 0; + } + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-laptop .e-n-tabs-content > .e-con { + order: var(--n-tabs-title-order); + } + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-laptop .e-n-tab-title { + order: var(--n-tabs-title-order); + width: initial; + } + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-laptop .e-n-tab-title:not(:first-child) { + margin-block-start: var(--n-tabs-title-gap); + } + .elementor.elementor .elementor-widget-n-tabs.e-n-tabs-laptop .e-n-tab-title[aria-selected=true] { + margin-block-end: var(--n-tabs-gap); + } +} +.elementor-widget-n-accordion { + --n-accordion-title-font-size: 20px; + --n-accordion-title-flex-grow: initial; + --n-accordion-title-justify-content: initial; + --n-accordion-title-icon-order: -1; + --n-accordion-border-width: 1px; + --n-accordion-border-color: #D5D8DC; + --n-accordion-border-style: solid; + --n-accordion-item-title-flex-grow: initial; + --n-accordion-item-title-space-between: 0px; + --n-accordion-item-title-distance-from-content: 0px; + --n-accordion-padding: 10px; + --n-accordion-border-radius: 0px; + --n-accordion-icon-size: 15px; + --n-accordion-title-normal-color: #1f2124; + --n-accordion-title-hover-color: #1f2124; + --n-accordion-title-active-color: #1f2124; + --n-accordion-icon-normal-color: var(--n-accordion-title-normal-color); + --n-accordion-icon-hover-color: var(--n-accordion-title-hover-color); + --n-accordion-icon-active-color: var(--n-accordion-title-active-color); + --n-accordion-icon-gap: 0 10px; + width: 100%; +} +.elementor-widget-n-accordion .e-n-accordion details > summary::-webkit-details-marker { + display: none; +} +.elementor-widget-n-accordion .e-n-accordion-item { + display: flex; + flex-direction: column; + position: relative; +} +.elementor-widget-n-accordion .e-n-accordion-item:not(:last-child) { + margin-block-end: var(--n-accordion-item-title-space-between); +} +:where(.elementor-widget-n-accordion .e-n-accordion-item > .e-con) { + border: var(--n-accordion-border-width) var(--n-accordion-border-style) var(--n-accordion-border-color); +} +.elementor-widget-n-accordion .e-n-accordion-item-title { + display: flex; + flex-direction: row; + list-style: none; + padding: var(--n-accordion-padding); + border-width: var(--n-accordion-border-width); + border-color: var(--n-accordion-border-color); + border-style: var(--n-accordion-border-style); + justify-content: var(--n-accordion-title-justify-content); + border-radius: var(--n-accordion-border-radius); + flex-grow: var(--n-menu-title-flex-grow); + gap: var(--n-accordion-icon-gap); + color: var(--n-accordion-title-normal-color); + align-items: center; + cursor: pointer; +} +.elementor-widget-n-accordion .e-n-accordion-item-title-header { + display: flex; +} +.elementor-widget-n-accordion .e-n-accordion-item-title-header h1, .elementor-widget-n-accordion .e-n-accordion-item-title-header h2, .elementor-widget-n-accordion .e-n-accordion-item-title-header h3, .elementor-widget-n-accordion .e-n-accordion-item-title-header h4, .elementor-widget-n-accordion .e-n-accordion-item-title-header h5, .elementor-widget-n-accordion .e-n-accordion-item-title-header h6, .elementor-widget-n-accordion .e-n-accordion-item-title-header p { + margin-block-start: 0; + margin-block-end: 0; +} +.elementor-widget-n-accordion .e-n-accordion-item-title-text { + font-size: var(--n-accordion-title-font-size); + align-items: center; +} +.elementor-widget-n-accordion .e-n-accordion-item-title-icon { + display: flex; + flex-direction: row; + align-items: center; + order: var(--n-accordion-title-icon-order); + position: relative; + width: fit-content; +} +.elementor-widget-n-accordion .e-n-accordion-item-title-icon span { + height: var(--n-accordion-icon-size); + width: auto; +} +.elementor-widget-n-accordion .e-n-accordion-item-title-icon span > i { + color: var(--n-accordion-icon-normal-color); + font-size: var(--n-accordion-icon-size); +} +.elementor-widget-n-accordion .e-n-accordion-item-title-icon span > svg { + fill: var(--n-accordion-icon-normal-color); + height: var(--n-accordion-icon-size); +} +.elementor-widget-n-accordion .e-n-accordion-item-title > span { + cursor: pointer; +} +.elementor-widget-n-accordion .e-n-accordion-item[open] .e-n-accordion-item-title { + margin-block-end: var(--n-accordion-item-title-distance-from-content); + color: var(--n-accordion-title-active-color); +} +.elementor-widget-n-accordion .e-n-accordion-item[open] .e-n-accordion-item-title-icon .e-opened { + display: flex; +} +.elementor-widget-n-accordion .e-n-accordion-item[open] .e-n-accordion-item-title-icon .e-closed { + display: none; +} +.elementor-widget-n-accordion .e-n-accordion-item[open] .e-n-accordion-item-title-icon span > i { + color: var(--n-accordion-icon-active-color); +} +.elementor-widget-n-accordion .e-n-accordion-item[open] .e-n-accordion-item-title-icon span > svg { + fill: var(--n-accordion-icon-active-color); +} +.elementor-widget-n-accordion .e-n-accordion-item:not([open]):hover .e-n-accordion-item-title { + color: var(--n-accordion-title-hover-color); +} +.elementor-widget-n-accordion .e-n-accordion-item:not([open]):hover .e-n-accordion-item-title-icon span > i { + color: var(--n-accordion-icon-hover-color); +} +.elementor-widget-n-accordion .e-n-accordion-item:not([open]):hover .e-n-accordion-item-title-icon span > svg { + fill: var(--n-accordion-icon-hover-color); +} +.elementor-widget-n-accordion .e-n-accordion-item .e-n-accordion-item-title-icon .e-opened { + display: none; +} +.elementor-widget-n-accordion .e-n-accordion-item .e-n-accordion-item-title-icon .e-closed { + display: flex; +} +.elementor-widget-n-accordion .e-n-accordion-item .e-n-accordion-item-title-icon span > svg { + fill: var(--n-accordion-icon-normal-color); +} +.elementor-widget-n-accordion .e-n-accordion-item .e-n-accordion-item-title-icon span > i { + color: var(--n-accordion-icon-normal-color); +} +.elementor-widget-n-accordion .e-n-accordion-item > span { + cursor: pointer; +} + +.elementor-accordion { + text-align: left; +} +.elementor-accordion .elementor-accordion-item { + border: 1px solid #D5D8DC; +} +.elementor-accordion .elementor-accordion-item + .elementor-accordion-item { + border-top: none; +} +.elementor-accordion .elementor-tab-title { + margin: 0; + padding: 15px 20px; + font-weight: bold; + line-height: 1; + cursor: pointer; + outline: none; +} +.elementor-accordion .elementor-tab-title .elementor-accordion-icon { + display: inline-block; + width: 1.5em; +} +.elementor-accordion .elementor-tab-title .elementor-accordion-icon svg { + width: 1em; + height: 1em; +} +.elementor-accordion .elementor-tab-title .elementor-accordion-icon.elementor-accordion-icon-right { + float: right; + text-align: right; +} +.elementor-accordion .elementor-tab-title .elementor-accordion-icon.elementor-accordion-icon-left { + float: left; + text-align: left; +} +.elementor-accordion .elementor-tab-title .elementor-accordion-icon .elementor-accordion-icon-closed { + display: block; +} +.elementor-accordion .elementor-tab-title .elementor-accordion-icon .elementor-accordion-icon-opened { + display: none; +} +.elementor-accordion .elementor-tab-title.elementor-active .elementor-accordion-icon-closed { + display: none; +} +.elementor-accordion .elementor-tab-title.elementor-active .elementor-accordion-icon-opened { + display: block; +} +.elementor-accordion .elementor-tab-content { + display: none; + padding: 15px 20px; + border-top: 1px solid #D5D8DC; +} + +@media (max-width: ELEMENTOR_SCREEN_MOBILE_MAX) { + .elementor-accordion .elementor-tab-title { + padding: 12px 15px; + } + .elementor-accordion .elementor-tab-title .elementor-accordion-icon { + width: 1.2em; + } + .elementor-accordion .elementor-tab-content { + padding: 7px 15px; + } +} +.e-con > .elementor-widget-accordion, +.e-con-inner > .elementor-widget-accordion { + width: var(--container-widget-width); + --flex-grow: var( --container-widget-flex-grow ); +} + +.elementor-alert { + padding: 15px; + border-left: 5px solid transparent; + position: relative; + text-align: left; +} +.elementor-alert .elementor-alert-title { + display: block; + font-weight: bold; +} +.elementor-alert .elementor-alert-description { + font-size: 13px; +} +.elementor-alert button.elementor-alert-dismiss { + position: absolute; + right: var(--dismiss-icon-horizontal-position, 10px); + top: var(--dismiss-icon-vertical-position, 10px); + padding: 3px; + font-size: var(--dismiss-icon-size, 20px); + line-height: 1; + background: transparent; + color: var(--dismiss-icon-normal-color, inherit); + border: none; + cursor: pointer; + transition-duration: var(--dismiss-icon-hover-transition-duration, 0.3s); +} +.elementor-alert button.elementor-alert-dismiss:hover { + color: var(--dismiss-icon-hover-color, inherit); +} +.elementor-alert button.elementor-alert-dismiss svg { + width: var(--dismiss-icon-size, 20px); + height: var(--dismiss-icon-size, 20px); + fill: var(--dismiss-icon-normal-color, currentColor); + transition-duration: var(--dismiss-icon-hover-transition-duration, 0.3s); +} +.elementor-alert button.elementor-alert-dismiss svg:hover { + fill: var(--dismiss-icon-hover-color, currentColor); +} +.elementor-alert.elementor-alert-info { + color: #31708f; + background-color: #d9edf7; + border-color: #bcdff1; +} +.elementor-alert.elementor-alert-success { + color: #3c763d; + background-color: #dff0d8; + border-color: #cae6be; +} +.elementor-alert.elementor-alert-warning { + color: #8a6d3b; + background-color: #fcf8e3; + border-color: #f9f0c3; +} +.elementor-alert.elementor-alert-danger { + color: #a94442; + background-color: #f2dede; + border-color: #e8c4c4; +} + +@media (max-width: ELEMENTOR_SCREEN_MOBILE_MAX) { + .elementor-alert { + padding: 10px; + } + .elementor-alert button.elementor-alert-dismiss { + right: 7px; + top: 7px; + } +} +.elementor-counter .elementor-counter-number-wrapper { + display: flex; + font-size: 69px; + font-weight: 600; + line-height: 1; +} +.elementor-counter .elementor-counter-number-prefix, .elementor-counter .elementor-counter-number-suffix { + flex-grow: 1; + white-space: pre-wrap; +} +.elementor-counter .elementor-counter-number-prefix { + text-align: right; +} +.elementor-counter .elementor-counter-number-suffix { + text-align: left; +} +.elementor-counter .elementor-counter-title { + text-align: center; + font-size: 19px; + font-weight: 400; + line-height: 2.5; +} + +.elementor-widget-divider { + --divider-border-style: none; + --divider-border-width: 1px; + --divider-color: #0C0D0E; + --divider-icon-size: 20px; + --divider-element-spacing: 10px; + --divider-pattern-height: 24px; + --divider-pattern-size: 20px; + --divider-pattern-url: none; + --divider-pattern-repeat: repeat-x; +} +.elementor-widget-divider .elementor-divider { + display: flex; +} +.elementor-widget-divider .elementor-divider__text { + font-size: 15px; + line-height: 1; + max-width: 95%; +} +.elementor-widget-divider .elementor-divider__element { + margin: 0 var(--divider-element-spacing); + flex-shrink: 0; +} +.elementor-widget-divider .elementor-icon { + font-size: var(--divider-icon-size); +} +.elementor-widget-divider .elementor-divider-separator { + display: flex; + margin: 0; + direction: ltr; +} +.elementor-widget-divider--view-line_text .elementor-divider-separator, .elementor-widget-divider--view-line_icon .elementor-divider-separator { + align-items: center; +} +.elementor-widget-divider--view-line_text .elementor-divider-separator:before, .elementor-widget-divider--view-line_text .elementor-divider-separator:after, .elementor-widget-divider--view-line_icon .elementor-divider-separator:before, .elementor-widget-divider--view-line_icon .elementor-divider-separator:after { + display: block; + content: ""; + border-block-end: 0; + flex-grow: 1; + border-block-start: var(--divider-border-width) var(--divider-border-style) var(--divider-color); +} +.elementor-widget-divider--element-align-left .elementor-divider .elementor-divider-separator > .elementor-divider__svg:first-of-type { + flex-grow: 0; + flex-shrink: 100; +} +.elementor-widget-divider--element-align-left .elementor-divider-separator:before { + content: none; +} +.elementor-widget-divider--element-align-left .elementor-divider__element { + margin-left: 0; +} +.elementor-widget-divider--element-align-right .elementor-divider .elementor-divider-separator > .elementor-divider__svg:last-of-type { + flex-grow: 0; + flex-shrink: 100; +} +.elementor-widget-divider--element-align-right .elementor-divider-separator:after { + content: none; +} +.elementor-widget-divider--element-align-right .elementor-divider__element { + margin-right: 0; +} +.elementor-widget-divider--element-align-start .elementor-divider .elementor-divider-separator > .elementor-divider__svg:first-of-type { + flex-grow: 0; + flex-shrink: 100; +} +.elementor-widget-divider--element-align-start .elementor-divider-separator:before { + content: none; +} +.elementor-widget-divider--element-align-start .elementor-divider__element { + margin-inline-start: 0; +} +.elementor-widget-divider--element-align-end .elementor-divider .elementor-divider-separator > .elementor-divider__svg:last-of-type { + flex-grow: 0; + flex-shrink: 100; +} +.elementor-widget-divider--element-align-end .elementor-divider-separator:after { + content: none; +} +.elementor-widget-divider--element-align-end .elementor-divider__element { + margin-inline-end: 0; +} +.elementor-widget-divider:not(.elementor-widget-divider--view-line_text):not(.elementor-widget-divider--view-line_icon) .elementor-divider-separator { + border-block-start: var(--divider-border-width) var(--divider-border-style) var(--divider-color); +} +.elementor-widget-divider--separator-type-pattern { + --divider-border-style: none; +} +.elementor-widget-divider--separator-type-pattern.elementor-widget-divider--view-line .elementor-divider-separator, .elementor-widget-divider--separator-type-pattern:not([class*=elementor-widget-divider--view]) .elementor-divider-separator, .elementor-widget-divider--separator-type-pattern:not(.elementor-widget-divider--view-line) .elementor-divider-separator:before, .elementor-widget-divider--separator-type-pattern:not(.elementor-widget-divider--view-line) .elementor-divider-separator:after { + width: 100%; + min-height: var(--divider-pattern-height); + -webkit-mask-size: var(--divider-pattern-size) 100%; + mask-size: var(--divider-pattern-size) 100%; + -webkit-mask-repeat: var(--divider-pattern-repeat); + mask-repeat: var(--divider-pattern-repeat); + background-color: var(--divider-color); + -webkit-mask-image: var(--divider-pattern-url); + mask-image: var(--divider-pattern-url); +} +.elementor-widget-divider--no-spacing { + --divider-pattern-size: auto; +} +.elementor-widget-divider--bg-round { + --divider-pattern-repeat: round; +} + +.rtl .elementor-widget-divider .elementor-divider__text { + direction: rtl; +} + +.e-con > .elementor-widget-divider, +.e-con-inner > .elementor-widget-divider { + width: var(--container-widget-width, 100%); + --flex-grow: var( --container-widget-flex-grow ); +} + +.elementor-image-gallery .gallery-item { + display: inline-block; + text-align: center; + vertical-align: top; + width: 100%; + max-width: 100%; + margin: 0 auto; +} +.elementor-image-gallery .gallery-item img { + margin: 0 auto; +} +.elementor-image-gallery .gallery-item .gallery-caption { + margin: 0; +} +.elementor-image-gallery figure img { + display: block; +} +.elementor-image-gallery figure figcaption { + width: 100%; +} +.gallery-spacing-custom .elementor-image-gallery .gallery-icon { + padding: 0; +} +@media (min-width: ELEMENTOR_SCREEN_MOBILE_NEXT) { + .elementor-image-gallery .gallery-columns-2 .gallery-item { + max-width: 50%; + } + .elementor-image-gallery .gallery-columns-3 .gallery-item { + max-width: 33.33%; + } + .elementor-image-gallery .gallery-columns-4 .gallery-item { + max-width: 25%; + } + .elementor-image-gallery .gallery-columns-5 .gallery-item { + max-width: 20%; + } + .elementor-image-gallery .gallery-columns-6 .gallery-item { + max-width: 16.666%; + } + .elementor-image-gallery .gallery-columns-7 .gallery-item { + max-width: 14.28%; + } + .elementor-image-gallery .gallery-columns-8 .gallery-item { + max-width: 12.5%; + } + .elementor-image-gallery .gallery-columns-9 .gallery-item { + max-width: 11.11%; + } + .elementor-image-gallery .gallery-columns-10 .gallery-item { + max-width: 10%; + } +} +@media (min-width: 480px) and (max-width: ELEMENTOR_SCREEN_MOBILE_MAX) { + .elementor-image-gallery .gallery.gallery-columns-2 .gallery-item, .elementor-image-gallery .gallery.gallery-columns-3 .gallery-item, .elementor-image-gallery .gallery.gallery-columns-4 .gallery-item, .elementor-image-gallery .gallery.gallery-columns-5 .gallery-item, .elementor-image-gallery .gallery.gallery-columns-6 .gallery-item, .elementor-image-gallery .gallery.gallery-columns-7 .gallery-item, .elementor-image-gallery .gallery.gallery-columns-8 .gallery-item, .elementor-image-gallery .gallery.gallery-columns-9 .gallery-item, .elementor-image-gallery .gallery.gallery-columns-10 .gallery-item { + max-width: 50%; + } +} +@media (max-width: 479px) { + .elementor-image-gallery .gallery.gallery-columns-2 .gallery-item, .elementor-image-gallery .gallery.gallery-columns-3 .gallery-item, .elementor-image-gallery .gallery.gallery-columns-4 .gallery-item, .elementor-image-gallery .gallery.gallery-columns-5 .gallery-item, .elementor-image-gallery .gallery.gallery-columns-6 .gallery-item, .elementor-image-gallery .gallery.gallery-columns-7 .gallery-item, .elementor-image-gallery .gallery.gallery-columns-8 .gallery-item, .elementor-image-gallery .gallery.gallery-columns-9 .gallery-item, .elementor-image-gallery .gallery.gallery-columns-10 .gallery-item { + max-width: 100%; + } +} + +.elementor-widget-google_maps .elementor-widget-container { + overflow: hidden; +} +.elementor-widget-google_maps .elementor-custom-embed { + line-height: 0; +} +.elementor-widget-google_maps iframe { + height: 300px; +} + +.elementor-heading-title { + padding: 0; + margin: 0; + line-height: 1; +} + +.elementor-widget-heading .elementor-heading-title[class*=elementor-size-] > a { + color: inherit; + font-size: inherit; + line-height: inherit; +} +.elementor-widget-heading .elementor-heading-title.elementor-size-small { + font-size: 15px; +} +.elementor-widget-heading .elementor-heading-title.elementor-size-medium { + font-size: 19px; +} +.elementor-widget-heading .elementor-heading-title.elementor-size-large { + font-size: 29px; +} +.elementor-widget-heading .elementor-heading-title.elementor-size-xl { + font-size: 39px; +} +.elementor-widget-heading .elementor-heading-title.elementor-size-xxl { + font-size: 59px; +} + +.elementor-widget-icon-box .elementor-icon-box-wrapper { + display: block; + text-align: center; +} +.elementor-widget-icon-box .elementor-icon-box-icon { + margin-bottom: var(--icon-box-icon-margin, 15px); + margin-right: auto; + margin-left: auto; +} +@media (min-width: ELEMENTOR_SCREEN_MOBILE_NEXT) { + .elementor-widget-icon-box.elementor-vertical-align-top .elementor-icon-box-wrapper { + align-items: flex-start; + } + .elementor-widget-icon-box.elementor-vertical-align-middle .elementor-icon-box-wrapper { + align-items: center; + } + .elementor-widget-icon-box.elementor-vertical-align-bottom .elementor-icon-box-wrapper { + align-items: flex-end; + } +} +.elementor-widget-icon-box.elementor-position-left .elementor-icon-box-wrapper, .elementor-widget-icon-box.elementor-position-right .elementor-icon-box-wrapper { + display: flex; +} +.elementor-widget-icon-box.elementor-position-left .elementor-icon-box-icon, .elementor-widget-icon-box.elementor-position-right .elementor-icon-box-icon { + display: inline-flex; + flex: 0 0 auto; +} +.elementor-widget-icon-box.elementor-position-right .elementor-icon-box-wrapper { + text-align: right; + flex-direction: row-reverse; +} +.elementor-widget-icon-box.elementor-position-right .elementor-icon-box-icon { + margin-left: var(--icon-box-icon-margin, 15px); + margin-right: 0; + margin-bottom: unset; +} +.elementor-widget-icon-box.elementor-position-left .elementor-icon-box-wrapper { + text-align: left; + flex-direction: row; +} +.elementor-widget-icon-box.elementor-position-left .elementor-icon-box-icon { + margin-right: var(--icon-box-icon-margin, 15px); + margin-left: 0; + margin-bottom: unset; +} +.elementor-widget-icon-box.elementor-position-top .elementor-icon-box-wrapper { + display: block; + text-align: center; + flex-direction: unset; +} +.elementor-widget-icon-box.elementor-position-top .elementor-icon-box-icon { + margin-bottom: var(--icon-box-icon-margin, 15px); + margin-right: auto; + margin-left: auto; +} +@media (min-width: ELEMENTOR_SCREEN_WIDESCREEN_MIN) { + .elementor-widget-icon-box.elementor-widescreen-position-left .elementor-icon-box-wrapper, .elementor-widget-icon-box.elementor-widescreen-position-right .elementor-icon-box-wrapper { + display: flex; + } + .elementor-widget-icon-box.elementor-widescreen-position-left .elementor-icon-box-icon, .elementor-widget-icon-box.elementor-widescreen-position-right .elementor-icon-box-icon { + display: inline-flex; + flex: 0 0 auto; + } + .elementor-widget-icon-box.elementor-widescreen-position-right .elementor-icon-box-wrapper { + text-align: right; + flex-direction: row-reverse; + } + .elementor-widget-icon-box.elementor-widescreen-position-right .elementor-icon-box-icon { + margin-left: var(--icon-box-icon-margin, 15px); + margin-right: 0; + margin-bottom: unset; + } + .elementor-widget-icon-box.elementor-widescreen-position-left .elementor-icon-box-wrapper { + text-align: left; + flex-direction: row; + } + .elementor-widget-icon-box.elementor-widescreen-position-left .elementor-icon-box-icon { + margin-right: var(--icon-box-icon-margin, 15px); + margin-left: 0; + margin-bottom: unset; + } + .elementor-widget-icon-box.elementor-widescreen-position-top .elementor-icon-box-wrapper { + display: block; + text-align: center; + flex-direction: unset; + } + .elementor-widget-icon-box.elementor-widescreen-position-top .elementor-icon-box-icon { + margin-bottom: var(--icon-box-icon-margin, 15px); + margin-right: auto; + margin-left: auto; + } +} +@media (max-width: ELEMENTOR_SCREEN_LAPTOP_MAX) { + .elementor-widget-icon-box.elementor-laptop-position-left .elementor-icon-box-wrapper, .elementor-widget-icon-box.elementor-laptop-position-right .elementor-icon-box-wrapper { + display: flex; + } + .elementor-widget-icon-box.elementor-laptop-position-left .elementor-icon-box-icon, .elementor-widget-icon-box.elementor-laptop-position-right .elementor-icon-box-icon { + display: inline-flex; + flex: 0 0 auto; + } + .elementor-widget-icon-box.elementor-laptop-position-right .elementor-icon-box-wrapper { + text-align: right; + flex-direction: row-reverse; + } + .elementor-widget-icon-box.elementor-laptop-position-right .elementor-icon-box-icon { + margin-left: var(--icon-box-icon-margin, 15px); + margin-right: 0; + margin-bottom: unset; + } + .elementor-widget-icon-box.elementor-laptop-position-left .elementor-icon-box-wrapper { + text-align: left; + flex-direction: row; + } + .elementor-widget-icon-box.elementor-laptop-position-left .elementor-icon-box-icon { + margin-right: var(--icon-box-icon-margin, 15px); + margin-left: 0; + margin-bottom: unset; + } + .elementor-widget-icon-box.elementor-laptop-position-top .elementor-icon-box-wrapper { + display: block; + text-align: center; + flex-direction: unset; + } + .elementor-widget-icon-box.elementor-laptop-position-top .elementor-icon-box-icon { + margin-bottom: var(--icon-box-icon-margin, 15px); + margin-right: auto; + margin-left: auto; + } +} +@media (max-width: ELEMENTOR_SCREEN_TABLET_EXTRA_MAX) { + .elementor-widget-icon-box.elementor-tablet_extra-position-left .elementor-icon-box-wrapper, .elementor-widget-icon-box.elementor-tablet_extra-position-right .elementor-icon-box-wrapper { + display: flex; + } + .elementor-widget-icon-box.elementor-tablet_extra-position-left .elementor-icon-box-icon, .elementor-widget-icon-box.elementor-tablet_extra-position-right .elementor-icon-box-icon { + display: inline-flex; + flex: 0 0 auto; + } + .elementor-widget-icon-box.elementor-tablet_extra-position-right .elementor-icon-box-wrapper { + text-align: right; + flex-direction: row-reverse; + } + .elementor-widget-icon-box.elementor-tablet_extra-position-right .elementor-icon-box-icon { + margin-left: var(--icon-box-icon-margin, 15px); + margin-right: 0; + margin-bottom: unset; + } + .elementor-widget-icon-box.elementor-tablet_extra-position-left .elementor-icon-box-wrapper { + text-align: left; + flex-direction: row; + } + .elementor-widget-icon-box.elementor-tablet_extra-position-left .elementor-icon-box-icon { + margin-right: var(--icon-box-icon-margin, 15px); + margin-left: 0; + margin-bottom: unset; + } + .elementor-widget-icon-box.elementor-tablet_extra-position-top .elementor-icon-box-wrapper { + display: block; + text-align: center; + flex-direction: unset; + } + .elementor-widget-icon-box.elementor-tablet_extra-position-top .elementor-icon-box-icon { + margin-bottom: var(--icon-box-icon-margin, 15px); + margin-right: auto; + margin-left: auto; + } +} +@media (max-width: ELEMENTOR_SCREEN_TABLET_MAX) { + .elementor-widget-icon-box.elementor-tablet-position-left .elementor-icon-box-wrapper, .elementor-widget-icon-box.elementor-tablet-position-right .elementor-icon-box-wrapper { + display: flex; + } + .elementor-widget-icon-box.elementor-tablet-position-left .elementor-icon-box-icon, .elementor-widget-icon-box.elementor-tablet-position-right .elementor-icon-box-icon { + display: inline-flex; + flex: 0 0 auto; + } + .elementor-widget-icon-box.elementor-tablet-position-right .elementor-icon-box-wrapper { + text-align: right; + flex-direction: row-reverse; + } + .elementor-widget-icon-box.elementor-tablet-position-right .elementor-icon-box-icon { + margin-left: var(--icon-box-icon-margin, 15px); + margin-right: 0; + margin-bottom: unset; + } + .elementor-widget-icon-box.elementor-tablet-position-left .elementor-icon-box-wrapper { + text-align: left; + flex-direction: row; + } + .elementor-widget-icon-box.elementor-tablet-position-left .elementor-icon-box-icon { + margin-right: var(--icon-box-icon-margin, 15px); + margin-left: 0; + margin-bottom: unset; + } + .elementor-widget-icon-box.elementor-tablet-position-top .elementor-icon-box-wrapper { + display: block; + text-align: center; + flex-direction: unset; + } + .elementor-widget-icon-box.elementor-tablet-position-top .elementor-icon-box-icon { + margin-bottom: var(--icon-box-icon-margin, 15px); + margin-right: auto; + margin-left: auto; + } +} +@media (max-width: ELEMENTOR_SCREEN_MOBILE_EXTRA_MAX) { + .elementor-widget-icon-box.elementor-mobile_extra-position-left .elementor-icon-box-wrapper, .elementor-widget-icon-box.elementor-mobile_extra-position-right .elementor-icon-box-wrapper { + display: flex; + } + .elementor-widget-icon-box.elementor-mobile_extra-position-left .elementor-icon-box-icon, .elementor-widget-icon-box.elementor-mobile_extra-position-right .elementor-icon-box-icon { + display: inline-flex; + flex: 0 0 auto; + } + .elementor-widget-icon-box.elementor-mobile_extra-position-right .elementor-icon-box-wrapper { + text-align: right; + flex-direction: row-reverse; + } + .elementor-widget-icon-box.elementor-mobile_extra-position-right .elementor-icon-box-icon { + margin-left: var(--icon-box-icon-margin, 15px); + margin-right: 0; + margin-bottom: unset; + } + .elementor-widget-icon-box.elementor-mobile_extra-position-left .elementor-icon-box-wrapper { + text-align: left; + flex-direction: row; + } + .elementor-widget-icon-box.elementor-mobile_extra-position-left .elementor-icon-box-icon { + margin-right: var(--icon-box-icon-margin, 15px); + margin-left: 0; + margin-bottom: unset; + } + .elementor-widget-icon-box.elementor-mobile_extra-position-top .elementor-icon-box-wrapper { + display: block; + text-align: center; + flex-direction: unset; + } + .elementor-widget-icon-box.elementor-mobile_extra-position-top .elementor-icon-box-icon { + margin-bottom: var(--icon-box-icon-margin, 15px); + margin-right: auto; + margin-left: auto; + } +} +@media (max-width: ELEMENTOR_SCREEN_MOBILE_MAX) { + .elementor-widget-icon-box.elementor-mobile-position-left .elementor-icon-box-wrapper, .elementor-widget-icon-box.elementor-mobile-position-right .elementor-icon-box-wrapper { + display: flex; + } + .elementor-widget-icon-box.elementor-mobile-position-left .elementor-icon-box-icon, .elementor-widget-icon-box.elementor-mobile-position-right .elementor-icon-box-icon { + display: inline-flex; + flex: 0 0 auto; + } + .elementor-widget-icon-box.elementor-mobile-position-right .elementor-icon-box-wrapper { + text-align: right; + flex-direction: row-reverse; + } + .elementor-widget-icon-box.elementor-mobile-position-right .elementor-icon-box-icon { + margin-left: var(--icon-box-icon-margin, 15px); + margin-right: 0; + margin-bottom: unset; + } + .elementor-widget-icon-box.elementor-mobile-position-left .elementor-icon-box-wrapper { + text-align: left; + flex-direction: row; + } + .elementor-widget-icon-box.elementor-mobile-position-left .elementor-icon-box-icon { + margin-right: var(--icon-box-icon-margin, 15px); + margin-left: 0; + margin-bottom: unset; + } + .elementor-widget-icon-box.elementor-mobile-position-top .elementor-icon-box-wrapper { + display: block; + text-align: center; + flex-direction: unset; + } + .elementor-widget-icon-box.elementor-mobile-position-top .elementor-icon-box-icon { + margin-bottom: var(--icon-box-icon-margin, 15px); + margin-right: auto; + margin-left: auto; + } + .elementor-widget-icon-box.elementor-position-left .elementor-icon-box-icon, .elementor-widget-icon-box.elementor-position-right .elementor-icon-box-icon { + display: block; + flex: unset; + } +} +.elementor-widget-icon-box .elementor-icon-box-title a { + color: inherit; +} +.elementor-widget-icon-box .elementor-icon-box-content { + flex-grow: 1; +} +.elementor-widget-icon-box .elementor-icon-box-description { + margin: 0; +} + +.elementor-widget.elementor-icon-list--layout-inline .elementor-widget-container { + overflow: hidden; +} +.elementor-widget .elementor-icon-list-items.elementor-inline-items { + margin-right: -8px; + margin-left: -8px; +} +.elementor-widget .elementor-icon-list-items.elementor-inline-items .elementor-icon-list-item { + margin-right: 8px; + margin-left: 8px; +} +.elementor-widget .elementor-icon-list-items.elementor-inline-items .elementor-icon-list-item:after { + width: auto; + left: auto; + right: auto; + position: relative; + height: 100%; + border-top: 0; + border-bottom: 0; + border-right: 0; + border-left-width: 1px; + border-style: solid; + right: -8px; +} +.elementor-widget .elementor-icon-list-items { + list-style-type: none; + margin: 0; + padding: 0; +} +.elementor-widget .elementor-icon-list-item { + margin: 0; + padding: 0; + position: relative; +} +.elementor-widget .elementor-icon-list-item:after { + position: absolute; + bottom: 0; + width: 100%; +} +.elementor-widget .elementor-icon-list-item, .elementor-widget .elementor-icon-list-item a { + display: flex; + font-size: inherit; + align-items: var(--icon-vertical-align, center); +} +.elementor-widget .elementor-icon-list-icon + .elementor-icon-list-text { + align-self: center; + padding-left: 5px; +} +.elementor-widget .elementor-icon-list-icon { + display: flex; + position: relative; + top: var(--icon-vertical-offset, initial); +} +.elementor-widget .elementor-icon-list-icon svg { + width: var(--e-icon-list-icon-size, 1em); + height: var(--e-icon-list-icon-size, 1em); +} +.elementor-widget .elementor-icon-list-icon i { + width: 1.25em; + font-size: var(--e-icon-list-icon-size); +} +.elementor-widget.elementor-widget-icon-list .elementor-icon-list-icon { + text-align: var(--e-icon-list-icon-align); +} +.elementor-widget.elementor-widget-icon-list .elementor-icon-list-icon svg { + margin: var(--e-icon-list-icon-margin, 0 calc(var(--e-icon-list-icon-size, 1em) * 0.25) 0 0); +} +.elementor-widget.elementor-list-item-link-full_width a { + width: 100%; +} +.elementor-widget.elementor-align-center .elementor-icon-list-item, .elementor-widget.elementor-align-center .elementor-icon-list-item a { + justify-content: center; +} +.elementor-widget.elementor-align-center .elementor-icon-list-item:after { + margin: auto; +} +.elementor-widget.elementor-align-center .elementor-inline-items { + justify-content: center; +} +.elementor-widget.elementor-align-left .elementor-icon-list-item, .elementor-widget.elementor-align-left .elementor-icon-list-item a { + justify-content: flex-start; + text-align: left; +} +.elementor-widget.elementor-align-left .elementor-inline-items { + justify-content: flex-start; +} +.elementor-widget.elementor-align-right .elementor-icon-list-item, .elementor-widget.elementor-align-right .elementor-icon-list-item a { + justify-content: flex-end; + text-align: right; +} +.elementor-widget.elementor-align-right .elementor-icon-list-items { + justify-content: flex-end; +} +.elementor-widget:not(.elementor-align-right) .elementor-icon-list-item:after { + left: 0; +} +.elementor-widget:not(.elementor-align-left) .elementor-icon-list-item:after { + right: 0; +} +@media (min-width: ELEMENTOR_SCREEN_WIDESCREEN_MIN) { + .elementor-widget.elementor-widescreen-align-center .elementor-icon-list-item, .elementor-widget.elementor-widescreen-align-center .elementor-icon-list-item a { + justify-content: center; + } + .elementor-widget.elementor-widescreen-align-center .elementor-icon-list-item:after { + margin: auto; + } + .elementor-widget.elementor-widescreen-align-center .elementor-inline-items { + justify-content: center; + } + .elementor-widget.elementor-widescreen-align-left .elementor-icon-list-item, .elementor-widget.elementor-widescreen-align-left .elementor-icon-list-item a { + justify-content: flex-start; + text-align: left; + } + .elementor-widget.elementor-widescreen-align-left .elementor-inline-items { + justify-content: flex-start; + } + .elementor-widget.elementor-widescreen-align-right .elementor-icon-list-item, .elementor-widget.elementor-widescreen-align-right .elementor-icon-list-item a { + justify-content: flex-end; + text-align: right; + } + .elementor-widget.elementor-widescreen-align-right .elementor-icon-list-items { + justify-content: flex-end; + } + .elementor-widget:not(.elementor-widescreen-align-right) .elementor-icon-list-item:after { + left: 0; + } + .elementor-widget:not(.elementor-widescreen-align-left) .elementor-icon-list-item:after { + right: 0; + } +} +@media (max-width: ELEMENTOR_SCREEN_LAPTOP_MAX) { + .elementor-widget.elementor-laptop-align-center .elementor-icon-list-item, .elementor-widget.elementor-laptop-align-center .elementor-icon-list-item a { + justify-content: center; + } + .elementor-widget.elementor-laptop-align-center .elementor-icon-list-item:after { + margin: auto; + } + .elementor-widget.elementor-laptop-align-center .elementor-inline-items { + justify-content: center; + } + .elementor-widget.elementor-laptop-align-left .elementor-icon-list-item, .elementor-widget.elementor-laptop-align-left .elementor-icon-list-item a { + justify-content: flex-start; + text-align: left; + } + .elementor-widget.elementor-laptop-align-left .elementor-inline-items { + justify-content: flex-start; + } + .elementor-widget.elementor-laptop-align-right .elementor-icon-list-item, .elementor-widget.elementor-laptop-align-right .elementor-icon-list-item a { + justify-content: flex-end; + text-align: right; + } + .elementor-widget.elementor-laptop-align-right .elementor-icon-list-items { + justify-content: flex-end; + } + .elementor-widget:not(.elementor-laptop-align-right) .elementor-icon-list-item:after { + left: 0; + } + .elementor-widget:not(.elementor-laptop-align-left) .elementor-icon-list-item:after { + right: 0; + } +} +@media (max-width: ELEMENTOR_SCREEN_TABLET_EXTRA_MAX) { + .elementor-widget.elementor-tablet_extra-align-center .elementor-icon-list-item, .elementor-widget.elementor-tablet_extra-align-center .elementor-icon-list-item a { + justify-content: center; + } + .elementor-widget.elementor-tablet_extra-align-center .elementor-icon-list-item:after { + margin: auto; + } + .elementor-widget.elementor-tablet_extra-align-center .elementor-inline-items { + justify-content: center; + } + .elementor-widget.elementor-tablet_extra-align-left .elementor-icon-list-item, .elementor-widget.elementor-tablet_extra-align-left .elementor-icon-list-item a { + justify-content: flex-start; + text-align: left; + } + .elementor-widget.elementor-tablet_extra-align-left .elementor-inline-items { + justify-content: flex-start; + } + .elementor-widget.elementor-tablet_extra-align-right .elementor-icon-list-item, .elementor-widget.elementor-tablet_extra-align-right .elementor-icon-list-item a { + justify-content: flex-end; + text-align: right; + } + .elementor-widget.elementor-tablet_extra-align-right .elementor-icon-list-items { + justify-content: flex-end; + } + .elementor-widget:not(.elementor-tablet_extra-align-right) .elementor-icon-list-item:after { + left: 0; + } + .elementor-widget:not(.elementor-tablet_extra-align-left) .elementor-icon-list-item:after { + right: 0; + } +} +@media (max-width: ELEMENTOR_SCREEN_TABLET_MAX) { + .elementor-widget.elementor-tablet-align-center .elementor-icon-list-item, .elementor-widget.elementor-tablet-align-center .elementor-icon-list-item a { + justify-content: center; + } + .elementor-widget.elementor-tablet-align-center .elementor-icon-list-item:after { + margin: auto; + } + .elementor-widget.elementor-tablet-align-center .elementor-inline-items { + justify-content: center; + } + .elementor-widget.elementor-tablet-align-left .elementor-icon-list-item, .elementor-widget.elementor-tablet-align-left .elementor-icon-list-item a { + justify-content: flex-start; + text-align: left; + } + .elementor-widget.elementor-tablet-align-left .elementor-inline-items { + justify-content: flex-start; + } + .elementor-widget.elementor-tablet-align-right .elementor-icon-list-item, .elementor-widget.elementor-tablet-align-right .elementor-icon-list-item a { + justify-content: flex-end; + text-align: right; + } + .elementor-widget.elementor-tablet-align-right .elementor-icon-list-items { + justify-content: flex-end; + } + .elementor-widget:not(.elementor-tablet-align-right) .elementor-icon-list-item:after { + left: 0; + } + .elementor-widget:not(.elementor-tablet-align-left) .elementor-icon-list-item:after { + right: 0; + } +} +@media (max-width: ELEMENTOR_SCREEN_MOBILE_EXTRA_MAX) { + .elementor-widget.elementor-mobile_extra-align-center .elementor-icon-list-item, .elementor-widget.elementor-mobile_extra-align-center .elementor-icon-list-item a { + justify-content: center; + } + .elementor-widget.elementor-mobile_extra-align-center .elementor-icon-list-item:after { + margin: auto; + } + .elementor-widget.elementor-mobile_extra-align-center .elementor-inline-items { + justify-content: center; + } + .elementor-widget.elementor-mobile_extra-align-left .elementor-icon-list-item, .elementor-widget.elementor-mobile_extra-align-left .elementor-icon-list-item a { + justify-content: flex-start; + text-align: left; + } + .elementor-widget.elementor-mobile_extra-align-left .elementor-inline-items { + justify-content: flex-start; + } + .elementor-widget.elementor-mobile_extra-align-right .elementor-icon-list-item, .elementor-widget.elementor-mobile_extra-align-right .elementor-icon-list-item a { + justify-content: flex-end; + text-align: right; + } + .elementor-widget.elementor-mobile_extra-align-right .elementor-icon-list-items { + justify-content: flex-end; + } + .elementor-widget:not(.elementor-mobile_extra-align-right) .elementor-icon-list-item:after { + left: 0; + } + .elementor-widget:not(.elementor-mobile_extra-align-left) .elementor-icon-list-item:after { + right: 0; + } +} +@media (max-width: ELEMENTOR_SCREEN_MOBILE_MAX) { + .elementor-widget.elementor-mobile-align-center .elementor-icon-list-item, .elementor-widget.elementor-mobile-align-center .elementor-icon-list-item a { + justify-content: center; + } + .elementor-widget.elementor-mobile-align-center .elementor-icon-list-item:after { + margin: auto; + } + .elementor-widget.elementor-mobile-align-center .elementor-inline-items { + justify-content: center; + } + .elementor-widget.elementor-mobile-align-left .elementor-icon-list-item, .elementor-widget.elementor-mobile-align-left .elementor-icon-list-item a { + justify-content: flex-start; + text-align: left; + } + .elementor-widget.elementor-mobile-align-left .elementor-inline-items { + justify-content: flex-start; + } + .elementor-widget.elementor-mobile-align-right .elementor-icon-list-item, .elementor-widget.elementor-mobile-align-right .elementor-icon-list-item a { + justify-content: flex-end; + text-align: right; + } + .elementor-widget.elementor-mobile-align-right .elementor-icon-list-items { + justify-content: flex-end; + } + .elementor-widget:not(.elementor-mobile-align-right) .elementor-icon-list-item:after { + left: 0; + } + .elementor-widget:not(.elementor-mobile-align-left) .elementor-icon-list-item:after { + right: 0; + } +} + +.elementor-widget-image { + text-align: center; +} +.elementor-widget-image a { + display: inline-block; +} +.elementor-widget-image a img[src$=".svg"] { + width: 48px; +} +.elementor-widget-image img { + vertical-align: middle; + display: inline-block; +} + +.elementor-widget-image-box .elementor-image-box-content { + width: 100%; +} +@media (min-width: ELEMENTOR_SCREEN_MOBILE_NEXT) { + .elementor-widget-image-box.elementor-position-left .elementor-image-box-wrapper, .elementor-widget-image-box.elementor-position-right .elementor-image-box-wrapper { + display: flex; + } + .elementor-widget-image-box.elementor-position-right .elementor-image-box-wrapper { + text-align: right; + flex-direction: row-reverse; + } + .elementor-widget-image-box.elementor-position-left .elementor-image-box-wrapper { + text-align: left; + flex-direction: row; + } + .elementor-widget-image-box.elementor-position-top .elementor-image-box-img { + margin: auto; + } + .elementor-widget-image-box.elementor-vertical-align-top .elementor-image-box-wrapper { + align-items: flex-start; + } + .elementor-widget-image-box.elementor-vertical-align-middle .elementor-image-box-wrapper { + align-items: center; + } + .elementor-widget-image-box.elementor-vertical-align-bottom .elementor-image-box-wrapper { + align-items: flex-end; + } +} +@media (max-width: ELEMENTOR_SCREEN_MOBILE_MAX) { + .elementor-widget-image-box .elementor-image-box-img { + margin-left: auto !important; + margin-right: auto !important; + margin-bottom: 15px; + } +} +.elementor-widget-image-box .elementor-image-box-img { + display: inline-block; +} +.elementor-widget-image-box .elementor-image-box-title a { + color: inherit; +} +.elementor-widget-image-box .elementor-image-box-wrapper { + text-align: center; +} +.elementor-widget-image-box .elementor-image-box-description { + margin: 0; +} + +.elementor-widget-image-carousel .swiper-container, +.elementor-widget-image-carousel .swiper { + position: static; +} +.elementor-widget-image-carousel .swiper-container .swiper-slide figure, +.elementor-widget-image-carousel .swiper .swiper-slide figure { + line-height: inherit; +} +.elementor-widget-image-carousel .swiper-slide { + text-align: center; +} + +.elementor-image-carousel-wrapper:not(.swiper-container-initialized):not(.swiper-initialized) .swiper-slide { + max-width: calc(100% / var(--e-image-carousel-slides-to-show, 3)); +} + +body.elementor-page .elementor-widget-menu-anchor { + margin-bottom: 0; +} + +.elementor-widget-progress { + text-align: left; +} + +.elementor-progress-wrapper { + position: relative; + background-color: #eeeeee; + color: #ffffff; + height: 100%; + border-radius: 2px; +} + +.elementor-progress-bar { + display: flex; + background-color: #69727D; + width: 0; + font-size: 11px; + height: 30px; + line-height: 30px; + border-radius: 2px; + transition: width 1s ease-in-out; +} + +.elementor-progress-text { + flex-grow: 1; + white-space: nowrap; + text-overflow: ellipsis; + overflow: hidden; + padding-left: 15px; +} + +.elementor-progress-percentage { + padding-right: 15px; +} + +.elementor-widget-progress .elementor-progress-wrapper.progress-info .elementor-progress-bar { + background-color: #5bc0de; +} +.elementor-widget-progress .elementor-progress-wrapper.progress-success .elementor-progress-bar { + background-color: #5cb85c; +} +.elementor-widget-progress .elementor-progress-wrapper.progress-warning .elementor-progress-bar { + background-color: #f0ad4e; +} +.elementor-widget-progress .elementor-progress-wrapper.progress-danger .elementor-progress-bar { + background-color: #d9534f; +} + +.elementor-progress .elementor-title { + display: block; +} + +@media (max-width: ELEMENTOR_SCREEN_MOBILE_MAX) { + .elementor-progress-text { + padding-left: 10px; + } +} +.e-con .elementor-progress-wrapper, +.e-con-inner .elementor-progress-wrapper { + height: initial; +} + +.elementor-widget-social-icons { + /*TODO: This Grid-0 needs to be removed after PRO is Updated */ +} +.elementor-widget-social-icons.elementor-grid-0 .elementor-widget-container, .elementor-widget-social-icons.elementor-grid-tablet-0 .elementor-widget-container, .elementor-widget-social-icons.elementor-grid-mobile-0 .elementor-widget-container { + line-height: 1; + font-size: 0; +} +.elementor-widget-social-icons:not(.elementor-grid-0):not(.elementor-grid-tablet-0):not(.elementor-grid-mobile-0) .elementor-grid { + display: inline-grid; +} +.elementor-widget-social-icons .elementor-grid { + grid-column-gap: var(--grid-column-gap, 5px); + grid-row-gap: var(--grid-row-gap, 5px); + grid-template-columns: var(--grid-template-columns); + justify-content: var(--justify-content, center); + justify-items: var(--justify-content, center); +} + +.elementor-icon.elementor-social-icon { + font-size: var(--icon-size, 25px); + line-height: var(--icon-size, 25px); + width: calc(var(--icon-size, 25px) + 2 * var(--icon-padding, 0.5em)); + height: calc(var(--icon-size, 25px) + 2 * var(--icon-padding, 0.5em)); +} + +.elementor-social-icon { + --e-social-icon-icon-color: #fff; + display: inline-flex; + background-color: #69727D; + align-items: center; + justify-content: center; + text-align: center; + cursor: pointer; +} +.elementor-social-icon i { + color: var(--e-social-icon-icon-color); +} +.elementor-social-icon svg { + fill: var(--e-social-icon-icon-color); +} +.elementor-social-icon:last-child { + margin: 0; +} +.elementor-social-icon:hover { + opacity: 0.9; + color: white; +} +.elementor-social-icon-android { + background-color: #A4C639; +} +.elementor-social-icon-apple { + background-color: #999999; +} +.elementor-social-icon-behance { + background-color: #1769ff; +} +.elementor-social-icon-bitbucket { + background-color: #205081; +} +.elementor-social-icon-codepen { + background-color: #000000; +} +.elementor-social-icon-delicious { + background-color: #3399ff; +} +.elementor-social-icon-deviantart { + background-color: #05cc47; +} +.elementor-social-icon-digg { + background-color: #005be2; +} +.elementor-social-icon-dribbble { + background-color: #ea4c89; +} +.elementor-social-icon-elementor { + background-color: #D30C5C; +} +.elementor-social-icon-envelope { + background-color: #ea4335; +} +.elementor-social-icon-facebook, .elementor-social-icon-facebook-f { + background-color: #3b5998; +} +.elementor-social-icon-flickr { + background-color: #0063dc; +} +.elementor-social-icon-foursquare { + background-color: #2d5be3; +} +.elementor-social-icon-freecodecamp, .elementor-social-icon-free-code-camp { + background-color: #006400; +} +.elementor-social-icon-github { + background-color: #333333; +} +.elementor-social-icon-gitlab { + background-color: #e24329; +} +.elementor-social-icon-globe { + background-color: #69727D; +} +.elementor-social-icon-google-plus, .elementor-social-icon-google-plus-g { + background-color: #dd4b39; +} +.elementor-social-icon-houzz { + background-color: #7ac142; +} +.elementor-social-icon-instagram { + background-color: #262626; +} +.elementor-social-icon-jsfiddle { + background-color: #487AA2; +} +.elementor-social-icon-link { + background-color: #818a91; +} +.elementor-social-icon-linkedin, .elementor-social-icon-linkedin-in { + background-color: #0077b5; +} +.elementor-social-icon-medium { + background-color: #00ab6b; +} +.elementor-social-icon-meetup { + background-color: #ec1c40; +} +.elementor-social-icon-mixcloud { + background-color: #273a4b; +} +.elementor-social-icon-odnoklassniki { + background-color: #F4731C; +} +.elementor-social-icon-pinterest { + background-color: #bd081c; +} +.elementor-social-icon-product-hunt { + background-color: #da552f; +} +.elementor-social-icon-reddit { + background-color: #ff4500; +} +.elementor-social-icon-rss { + background-color: #f26522; +} +.elementor-social-icon-shopping-cart { + background-color: #4CAF50; +} +.elementor-social-icon-skype { + background-color: #00AFF0; +} +.elementor-social-icon-slideshare { + background-color: #0077b5; +} +.elementor-social-icon-snapchat { + background-color: #fffc00; +} +.elementor-social-icon-soundcloud { + background-color: #ff8800; +} +.elementor-social-icon-spotify { + background-color: #2ebd59; +} +.elementor-social-icon-stack-overflow { + background-color: #fe7a15; +} +.elementor-social-icon-steam { + background-color: #00adee; +} +.elementor-social-icon-stumbleupon { + background-color: #EB4924; +} +.elementor-social-icon-telegram { + background-color: #2CA5E0; +} +.elementor-social-icon-threads { + background-color: #000000; +} +.elementor-social-icon-thumb-tack { + background-color: #1aa1d8; +} +.elementor-social-icon-tripadvisor { + background-color: #589442; +} +.elementor-social-icon-tumblr { + background-color: #35465c; +} +.elementor-social-icon-twitch { + background-color: #6441A5; +} +.elementor-social-icon-twitter { + background-color: #1DA1F2; +} +.elementor-social-icon-viber { + background-color: #665cac; +} +.elementor-social-icon-vimeo { + background-color: #1ab7ea; +} +.elementor-social-icon-vk { + background-color: #45668e; +} +.elementor-social-icon-weibo { + background-color: #DD2430; +} +.elementor-social-icon-weixin { + background-color: #31A918; +} +.elementor-social-icon-whatsapp { + background-color: #25d366; +} +.elementor-social-icon-wordpress { + background-color: #21759b; +} +.elementor-social-icon-x-twitter { + background-color: #000000; +} +.elementor-social-icon-xing { + background-color: #026466; +} +.elementor-social-icon-yelp { + background-color: #af0606; +} +.elementor-social-icon-youtube { + background-color: #cd201f; +} +.elementor-social-icon-500px { + background-color: #0099e5; +} + +.elementor-shape-rounded .elementor-icon.elementor-social-icon { + border-radius: 10%; +} + +.elementor-shape-circle .elementor-icon.elementor-social-icon { + border-radius: 50%; +} + +.elementor-column .elementor-spacer-inner { + height: var(--spacer-size); +} + +.e-con { + --container-widget-width: 100%; +} + +.e-con > .elementor-widget-spacer, +.e-con-inner > .elementor-widget-spacer { + width: var(--container-widget-width, var(--spacer-size)); + --align-self: var( --container-widget-align-self, initial ); + --flex-shrink: 0; +} +.e-con > .elementor-widget-spacer > .elementor-widget-container, +.e-con-inner > .elementor-widget-spacer > .elementor-widget-container { + height: 100%; + width: 100%; +} +.e-con > .elementor-widget-spacer > .elementor-widget-container > .elementor-spacer, +.e-con-inner > .elementor-widget-spacer > .elementor-widget-container > .elementor-spacer { + height: 100%; +} +.e-con > .elementor-widget-spacer > .elementor-widget-container > .elementor-spacer > .elementor-spacer-inner, +.e-con-inner > .elementor-widget-spacer > .elementor-widget-container > .elementor-spacer > .elementor-spacer-inner { + height: var(--container-widget-height, var(--spacer-size)); +} +.e-con > .elementor-widget-spacer.elementor-widget-empty, +.e-con-inner > .elementor-widget-spacer.elementor-widget-empty { + position: relative; + min-height: 22px; + min-width: 22px; +} +.e-con > .elementor-widget-spacer.elementor-widget-empty .elementor-widget-empty-icon, +.e-con-inner > .elementor-widget-spacer.elementor-widget-empty .elementor-widget-empty-icon { + position: absolute; + top: 0; + bottom: 0; + left: 0; + right: 0; + margin: auto; + padding: 0; + width: 22px; + height: 22px; +} + +.elementor-star-rating { + color: #CCD6DF; + font-family: eicons; + display: inline-block; +} +.elementor-star-rating i { + display: inline-block; + position: relative; + font-style: normal; + cursor: default; +} +.elementor-star-rating i:before { + content: "\e934"; + display: block; + font-size: inherit; + font-family: inherit; + position: absolute; + overflow: hidden; + color: #f0ad4e; + top: 0; + left: 0; +} +.elementor-star-rating .elementor-star-empty:before { + content: none; +} +.elementor-star-rating .elementor-star-1:before { + width: 10%; +} +.elementor-star-rating .elementor-star-2:before { + width: 20%; +} +.elementor-star-rating .elementor-star-3:before { + width: 30%; +} +.elementor-star-rating .elementor-star-4:before { + width: 40%; +} +.elementor-star-rating .elementor-star-5:before { + width: 50%; +} +.elementor-star-rating .elementor-star-6:before { + width: 60%; +} +.elementor-star-rating .elementor-star-7:before { + width: 70%; +} +.elementor-star-rating .elementor-star-8:before { + width: 80%; +} +.elementor-star-rating .elementor-star-9:before { + width: 90%; +} +.elementor-star-rating__wrapper { + display: flex; + align-items: center; +} +.elementor-star-rating__title { + margin-right: 10px; +} + +.elementor-star-rating--align-right .elementor-star-rating__wrapper { + text-align: right; + justify-content: flex-end; +} +.elementor-star-rating--align-left .elementor-star-rating__wrapper { + text-align: left; + justify-content: flex-start; +} +.elementor-star-rating--align-center .elementor-star-rating__wrapper { + text-align: center; + justify-content: center; +} +.elementor-star-rating--align-justify .elementor-star-rating__title { + margin-right: auto; +} + +@media (max-width: ELEMENTOR_SCREEN_TABLET_MAX) { + .elementor-star-rating-tablet--align-right .elementor-star-rating__wrapper { + text-align: right; + justify-content: flex-end; + } + .elementor-star-rating-tablet--align-left .elementor-star-rating__wrapper { + text-align: left; + justify-content: flex-start; + } + .elementor-star-rating-tablet--align-center .elementor-star-rating__wrapper { + text-align: center; + justify-content: center; + } + .elementor-star-rating-tablet--align-justify .elementor-star-rating__title { + margin-right: auto; + } +} +@media (max-width: ELEMENTOR_SCREEN_MOBILE_MAX) { + .elementor-star-rating-mobile--align-right .elementor-star-rating__wrapper { + text-align: right; + justify-content: flex-end; + } + .elementor-star-rating-mobile--align-left .elementor-star-rating__wrapper { + text-align: left; + justify-content: flex-start; + } + .elementor-star-rating-mobile--align-center .elementor-star-rating__wrapper { + text-align: center; + justify-content: center; + } + .elementor-star-rating-mobile--align-justify .elementor-star-rating__title { + margin-right: auto; + } +} +.last-star { + letter-spacing: 0; +} + +.elementor--star-style-star_unicode .elementor-star-rating { + font-family: "Arial", "Helvetica", sans-serif; +} +.elementor--star-style-star_unicode .elementor-star-rating i:not(.elementor-star-empty):before { + content: "★"; +} + +.elementor-widget-tabs.elementor-tabs-view-vertical .elementor-tabs-wrapper { + width: 25%; + flex-shrink: 0; +} +.elementor-widget-tabs.elementor-tabs-view-vertical .elementor-tab-desktop-title.elementor-active { + border-right-style: none; +} +.elementor-widget-tabs.elementor-tabs-view-vertical .elementor-tab-desktop-title.elementor-active:before, .elementor-widget-tabs.elementor-tabs-view-vertical .elementor-tab-desktop-title.elementor-active:after { + height: 999em; + width: 0; + right: 0; + border-right-style: solid; +} +.elementor-widget-tabs.elementor-tabs-view-vertical .elementor-tab-desktop-title.elementor-active:before { + top: 0; + transform: translateY(-100%); +} +.elementor-widget-tabs.elementor-tabs-view-vertical .elementor-tab-desktop-title.elementor-active:after { + top: 100%; +} +.elementor-widget-tabs.elementor-tabs-view-horizontal .elementor-tab-desktop-title { + display: table-cell; +} +.elementor-widget-tabs.elementor-tabs-view-horizontal .elementor-tab-desktop-title.elementor-active { + border-bottom-style: none; +} +.elementor-widget-tabs.elementor-tabs-view-horizontal .elementor-tab-desktop-title.elementor-active:before, .elementor-widget-tabs.elementor-tabs-view-horizontal .elementor-tab-desktop-title.elementor-active:after { + bottom: 0; + height: 0; + width: 999em; + border-bottom-style: solid; +} +.elementor-widget-tabs.elementor-tabs-view-horizontal .elementor-tab-desktop-title.elementor-active:before { + right: 100%; +} +.elementor-widget-tabs.elementor-tabs-view-horizontal .elementor-tab-desktop-title.elementor-active:after { + left: 100%; +} +.elementor-widget-tabs .elementor-tab-title, +.elementor-widget-tabs .elementor-tab-title:before, +.elementor-widget-tabs .elementor-tab-title:after, +.elementor-widget-tabs .elementor-tab-content, +.elementor-widget-tabs .elementor-tabs-content-wrapper { + border: 1px none #D5D8DC; +} +.elementor-widget-tabs .elementor-tabs { + text-align: left; +} +.elementor-widget-tabs .elementor-tabs-wrapper { + overflow: hidden; +} +.elementor-widget-tabs .elementor-tab-title { + cursor: pointer; + outline: var(--focus-outline, none); +} +.elementor-widget-tabs .elementor-tab-desktop-title { + position: relative; + padding: 20px 25px; + font-weight: bold; + line-height: 1; + border: solid transparent; +} +.elementor-widget-tabs .elementor-tab-desktop-title.elementor-active { + border-color: #D5D8DC; +} +.elementor-widget-tabs .elementor-tab-desktop-title.elementor-active:before, .elementor-widget-tabs .elementor-tab-desktop-title.elementor-active:after { + display: block; + content: ""; + position: absolute; +} +.elementor-widget-tabs .elementor-tab-desktop-title:focus-visible { + border: 1px solid #000000; +} +.elementor-widget-tabs .elementor-tab-mobile-title { + padding: 10px 10px; + cursor: pointer; +} +.elementor-widget-tabs .elementor-tab-content { + padding: 20px; + display: none; +} + +@media (max-width: ELEMENTOR_SCREEN_MOBILE_MAX) { + .elementor-tabs .elementor-tab-title, + .elementor-tabs .elementor-tab-content { + border-style: solid; + border-bottom-style: none; + } + .elementor-tabs .elementor-tabs-wrapper { + display: none; + } + .elementor-tabs .elementor-tabs-content-wrapper { + border-bottom-style: solid; + } + .elementor-tabs .elementor-tab-content { + padding: 10px; + } +} +@media (min-width: ELEMENTOR_SCREEN_MOBILE_NEXT) { + .elementor-widget-tabs.elementor-tabs-view-vertical .elementor-tabs { + display: flex; + } + .elementor-widget-tabs.elementor-tabs-view-vertical .elementor-tabs-wrapper { + flex-direction: column; + } + .elementor-widget-tabs.elementor-tabs-view-vertical .elementor-tabs-content-wrapper { + flex-grow: 1; + border-style: solid; + border-left-style: none; + } + .elementor-widget-tabs.elementor-tabs-view-horizontal .elementor-tab-content { + border-style: solid; + border-top-style: none; + } + .elementor-widget-tabs.elementor-tabs-alignment-center .elementor-tabs-wrapper, .elementor-widget-tabs.elementor-tabs-alignment-end .elementor-tabs-wrapper, .elementor-widget-tabs.elementor-tabs-alignment-stretch .elementor-tabs-wrapper { + display: flex; + } + .elementor-widget-tabs.elementor-tabs-alignment-center .elementor-tabs-wrapper { + justify-content: center; + } + .elementor-widget-tabs.elementor-tabs-alignment-end .elementor-tabs-wrapper { + justify-content: flex-end; + } + .elementor-widget-tabs.elementor-tabs-alignment-stretch.elementor-tabs-view-horizontal .elementor-tab-title { + width: 100%; + } + .elementor-widget-tabs.elementor-tabs-alignment-stretch.elementor-tabs-view-vertical .elementor-tab-title { + height: 100%; + } + .elementor-tabs .elementor-tab-mobile-title { + display: none; + } +} +.elementor-testimonial-wrapper { + overflow: hidden; + text-align: center; +} +.elementor-testimonial-wrapper .elementor-testimonial-content { + font-size: 1.3em; + margin-bottom: 20px; +} +.elementor-testimonial-wrapper .elementor-testimonial-name { + line-height: 1.5; + display: block; +} +.elementor-testimonial-wrapper .elementor-testimonial-job { + font-size: 0.85em; + display: block; +} +.elementor-testimonial-wrapper .elementor-testimonial-meta { + width: 100%; + line-height: 1; +} +.elementor-testimonial-wrapper .elementor-testimonial-meta-inner { + display: inline-block; +} +.elementor-testimonial-wrapper .elementor-testimonial-meta .elementor-testimonial-details, +.elementor-testimonial-wrapper .elementor-testimonial-meta .elementor-testimonial-image { + display: table-cell; + vertical-align: middle; +} +.elementor-testimonial-wrapper .elementor-testimonial-meta .elementor-testimonial-image img { + width: 60px; + height: 60px; + border-radius: 50%; + object-fit: cover; + max-width: none; +} +.elementor-testimonial-wrapper .elementor-testimonial-meta.elementor-testimonial-image-position-aside .elementor-testimonial-image { + padding-right: 15px; +} +.elementor-testimonial-wrapper .elementor-testimonial-meta.elementor-testimonial-image-position-aside .elementor-testimonial-details { + text-align: left; +} +.elementor-testimonial-wrapper .elementor-testimonial-meta.elementor-testimonial-image-position-top .elementor-testimonial-details, +.elementor-testimonial-wrapper .elementor-testimonial-meta.elementor-testimonial-image-position-top .elementor-testimonial-image { + display: block; +} +.elementor-testimonial-wrapper .elementor-testimonial-meta.elementor-testimonial-image-position-top .elementor-testimonial-image { + margin-bottom: 20px; +} + +.elementor-widget-text-editor.elementor-drop-cap-view-stacked .elementor-drop-cap { + background-color: #69727D; + color: #fff; +} +.elementor-widget-text-editor.elementor-drop-cap-view-framed .elementor-drop-cap { + color: #69727D; + border: 3px solid; + background-color: transparent; +} +.elementor-widget-text-editor:not(.elementor-drop-cap-view-default) .elementor-drop-cap { + margin-top: 8px; +} +.elementor-widget-text-editor:not(.elementor-drop-cap-view-default) .elementor-drop-cap-letter { + width: 1em; + height: 1em; +} +.elementor-widget-text-editor .elementor-drop-cap { + float: left; + text-align: center; + line-height: 1; + font-size: 50px; +} +.elementor-widget-text-editor .elementor-drop-cap-letter { + display: inline-block; +} + +.elementor-toggle { + text-align: left; +} +.elementor-toggle .elementor-tab-title { + font-weight: bold; + line-height: 1; + margin: 0; + padding: 15px; + border-bottom: 1px solid #D5D8DC; + cursor: pointer; + outline: none; +} +.elementor-toggle .elementor-tab-title .elementor-toggle-icon { + display: inline-block; + width: 1em; +} +.elementor-toggle .elementor-tab-title .elementor-toggle-icon svg { + margin-inline-start: -5px; + width: 1em; + height: 1em; +} +.elementor-toggle .elementor-tab-title .elementor-toggle-icon.elementor-toggle-icon-right { + float: right; + text-align: right; +} +.elementor-toggle .elementor-tab-title .elementor-toggle-icon.elementor-toggle-icon-left { + float: left; + text-align: left; +} +.elementor-toggle .elementor-tab-title .elementor-toggle-icon .elementor-toggle-icon-closed { + display: block; +} +.elementor-toggle .elementor-tab-title .elementor-toggle-icon .elementor-toggle-icon-opened { + display: none; +} +.elementor-toggle .elementor-tab-title.elementor-active { + border-bottom: none; +} +.elementor-toggle .elementor-tab-title.elementor-active .elementor-toggle-icon-closed { + display: none; +} +.elementor-toggle .elementor-tab-title.elementor-active .elementor-toggle-icon-opened { + display: block; +} +.elementor-toggle .elementor-tab-content { + padding: 15px; + border-bottom: 1px solid #D5D8DC; + display: none; +} + +@media (max-width: ELEMENTOR_SCREEN_MOBILE_MAX) { + .elementor-toggle .elementor-tab-title { + padding: 12px; + } + .elementor-toggle .elementor-tab-content { + padding: 12px 10px; + } +} +.e-con > .elementor-widget-toggle, +.e-con-inner > .elementor-widget-toggle { + width: var(--container-widget-width); + --flex-grow: var( --container-widget-flex-grow ); +} + +.elementor-widget-video .elementor-widget-container { + overflow: hidden; + transform: translate3d(0, 0, 0); +} +.elementor-widget-video .elementor-wrapper { + aspect-ratio: var(--video-aspect-ratio); +} +.elementor-widget-video .elementor-wrapper iframe, +.elementor-widget-video .elementor-wrapper video { + height: 100%; + width: 100%; + display: flex; + border: none; + background-color: #000000; +} +@supports not (aspect-ratio: 1/1) { + .elementor-widget-video .elementor-wrapper { + position: relative; + overflow: hidden; + height: 0; + padding-bottom: calc(100% / var(--video-aspect-ratio)); + } + .elementor-widget-video .elementor-wrapper iframe, + .elementor-widget-video .elementor-wrapper video { + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + } +} +.elementor-widget-video .elementor-open-inline .elementor-custom-embed-image-overlay { + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + background-size: cover; + background-position: center center; +} +.elementor-widget-video .elementor-custom-embed-image-overlay { + cursor: pointer; + text-align: center; +} +.elementor-widget-video .elementor-custom-embed-image-overlay:hover .elementor-custom-embed-play i { + opacity: 1; +} +.elementor-widget-video .elementor-custom-embed-image-overlay img { + display: block; + width: 100%; + aspect-ratio: var(--video-aspect-ratio); + object-fit: cover; + object-position: center center; +} +@supports not (aspect-ratio: 1/1) { + .elementor-widget-video .elementor-custom-embed-image-overlay { + position: relative; + overflow: hidden; + height: 0; + padding-bottom: calc(100% / var(--video-aspect-ratio)); + } + .elementor-widget-video .elementor-custom-embed-image-overlay img { + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + } +} +.elementor-widget-video .e-hosted-video .elementor-video { + object-fit: cover; +} + +.e-con > .elementor-widget-video, +.e-con-inner > .elementor-widget-video { + width: var(--container-widget-width); + --flex-grow: var( --container-widget-flex-grow ); +} + +.elementor-widget-rating { + --e-rating-gap: 0px; + --e-rating-icon-font-size: 16px; + --e-rating-icon-color: #CCD6DF; + --e-rating-icon-marked-color: #f0ad4e; + --e-rating-icon-marked-width: 100%; + --e-rating-justify-content: flex-start; +} +.elementor-widget-rating .e-rating { + display: flex; + justify-content: var(--e-rating-justify-content); +} +.elementor-widget-rating .e-rating-wrapper { + display: flex; + justify-content: inherit; + flex-direction: row; + flex-wrap: wrap; + width: fit-content; + margin-block-end: calc(0px - var(--e-rating-gap)); + margin-inline-end: calc(0px - var(--e-rating-gap)); +} +.elementor-widget-rating .e-rating .e-icon { + position: relative; + margin-block-end: var(--e-rating-gap); + margin-inline-end: var(--e-rating-gap); +} +.elementor-widget-rating .e-rating .e-icon-wrapper.e-icon-marked { + --e-rating-icon-color: var(--e-rating-icon-marked-color); + width: var(--e-rating-icon-marked-width); + position: absolute; + z-index: 1; + height: 100%; + left: 0; + top: 0; + overflow: hidden; +} +.elementor-widget-rating .e-rating .e-icon-wrapper :is(i, svg) { + display: flex; + flex-shrink: 0; +} +.elementor-widget-rating .e-rating .e-icon-wrapper i { + font-size: var(--e-rating-icon-font-size); + color: var(--e-rating-icon-color); +} +.elementor-widget-rating .e-rating .e-icon-wrapper svg { + width: auto; + height: var(--e-rating-icon-font-size); + fill: var(--e-rating-icon-color); +} + +/*# sourceMappingURL=frontend.css.map */ \ No newline at end of file diff --git a/wp-content/plugins/elementor/assets/css/templates/frontend.min.css b/wp-content/plugins/elementor/assets/css/templates/frontend.min.css new file mode 100644 index 0000000..91e2203 --- /dev/null +++ b/wp-content/plugins/elementor/assets/css/templates/frontend.min.css @@ -0,0 +1 @@ +@charset "UTF-8";.dialog-widget-content{background-color:var(--e-a-bg-default);position:absolute;border-radius:3px;box-shadow:2px 8px 23px 3px rgba(0,0,0,.2);overflow:hidden}.dialog-message{line-height:1.5;box-sizing:border-box}.dialog-close-button{cursor:pointer;position:absolute;margin-block-start:15px;right:15px;color:var(--e-a-color-txt);font-size:15px;line-height:1;transition:var(--e-a-transition-hover)}.dialog-close-button:hover{color:var(--e-a-color-txt-hover)}.dialog-prevent-scroll{overflow:hidden;max-height:100vh}.dialog-type-lightbox{position:fixed;height:100%;width:100%;bottom:0;left:0;background-color:rgba(0,0,0,.8);z-index:9999;-webkit-user-select:none;-moz-user-select:none;user-select:none}.elementor-editor-active .elementor-popup-modal{background-color:initial}.dialog-type-alert .dialog-widget-content,.dialog-type-confirm .dialog-widget-content{margin:auto;width:400px;padding:20px}.dialog-type-alert .dialog-header,.dialog-type-confirm .dialog-header{font-size:15px;font-weight:500}.dialog-type-alert .dialog-header:after,.dialog-type-confirm .dialog-header:after{content:"";display:block;border-block-end:var(--e-a-border);padding-block-end:10px;margin-block-end:10px;margin-inline-start:-20px;margin-inline-end:-20px}.dialog-type-alert .dialog-message,.dialog-type-confirm .dialog-message{min-height:50px}.dialog-type-alert .dialog-buttons-wrapper,.dialog-type-confirm .dialog-buttons-wrapper{padding-block-start:10px;display:flex;justify-content:flex-end;gap:15px}.dialog-type-alert .dialog-buttons-wrapper .dialog-button,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button{font-size:12px;font-weight:500;line-height:1.2;padding:8px 16px;outline:none;border:none;border-radius:var(--e-a-border-radius);background-color:var(--e-a-btn-bg);color:var(--e-a-btn-color-invert);transition:var(--e-a-transition-hover)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:hover{border:none}.dialog-type-alert .dialog-buttons-wrapper .dialog-button:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:hover{background-color:var(--e-a-btn-bg-hover);color:var(--e-a-btn-color-invert)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button:active,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:active{background-color:var(--e-a-btn-bg-active)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button:not([disabled]),.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:not([disabled]){cursor:pointer}.dialog-type-alert .dialog-buttons-wrapper .dialog-button:disabled,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:disabled{background-color:var(--e-a-btn-bg-disabled);color:var(--e-a-btn-color-disabled)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button:not(.elementor-button-state) .elementor-state-icon,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:not(.elementor-button-state) .elementor-state-icon{display:none}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt{background:transparent;color:var(--e-a-color-txt)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel:hover,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt:hover{background:var(--e-a-bg-hover);color:var(--e-a-color-txt-hover)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel:disabled,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt:disabled,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel:disabled,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt:disabled{background:transparent;color:var(--e-a-color-txt-disabled)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt-border,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt-border{border:1px solid var(--e-a-color-txt-muted)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-success,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-success,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-success,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-success{background-color:var(--e-a-btn-bg-success)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-success:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-success:hover,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-success:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-success:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-success:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-success:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-success:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-success:hover{background-color:var(--e-a-btn-bg-success-hover)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-take_over,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-take_over,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary{background-color:var(--e-a-btn-bg-primary);color:var(--e-a-btn-color)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok:hover,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-take_over:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-take_over:hover,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-take_over:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-take_over:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary:hover{background-color:var(--e-a-btn-bg-primary-hover);color:var(--e-a-btn-color)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-ok,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-take_over,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary.dialog-cancel,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary.e-btn-txt,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-ok,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-take_over,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary.dialog-cancel,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary.e-btn-txt{background:transparent;color:var(--e-a-color-primary-bold)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over:hover,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel:hover,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-ok:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-ok:hover,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-take_over:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-take_over:hover,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary.dialog-cancel:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary.dialog-cancel:hover,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary.e-btn-txt:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary.e-btn-txt:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-ok:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-ok:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-take_over:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-take_over:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary.dialog-cancel:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary.dialog-cancel:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary.e-btn-txt:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary.e-btn-txt:hover{background:var(--e-a-bg-primary)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-accent,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.go-pro,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-accent,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.go-pro{background-color:var(--e-a-btn-bg-accent)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-accent:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-accent:hover,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.go-pro:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.go-pro:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-accent:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-accent:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.go-pro:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.go-pro:hover{background-color:var(--e-a-btn-bg-accent-hover)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-accent:active,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.go-pro:active,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-accent:active,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.go-pro:active{background-color:var(--e-a-btn-bg-accent-active)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-info,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-info,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-info,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-info{background-color:var(--e-a-btn-bg-info)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-info:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-info:hover,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-info:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-info:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-info:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-info:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-info:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-info:hover{background-color:var(--e-a-btn-bg-info-hover)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-warning,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-warning,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-warning,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-warning{background-color:var(--e-a-btn-bg-warning)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-warning:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-warning:hover,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-warning:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-warning:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-warning:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-warning:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-warning:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-warning:hover{background-color:var(--e-a-btn-bg-warning-hover)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-danger,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-danger,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-danger,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-danger{background-color:var(--e-a-btn-bg-danger)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-danger:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-danger:hover,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-danger:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-danger:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-danger:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-danger:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-danger:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-danger:hover{background-color:var(--e-a-btn-bg-danger-hover)}.dialog-type-alert .dialog-buttons-wrapper .dialog-button i,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button i{margin-inline-end:5px}.dialog-type-alert .dialog-buttons-wrapper .dialog-button:focus,.dialog-type-alert .dialog-buttons-wrapper .dialog-button:hover,.dialog-type-alert .dialog-buttons-wrapper .dialog-button:visited,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:focus,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:hover,.dialog-type-confirm .dialog-buttons-wrapper .dialog-button:visited{color:initial}.flatpickr-calendar{width:280px}.flatpickr-calendar .flatpickr-current-month span.cur-month{font-weight:300}.flatpickr-calendar .dayContainer{width:280px;min-width:280px;max-width:280px}.flatpickr-calendar .flatpickr-days{width:280px}.flatpickr-calendar .flatpickr-day{max-width:37px;height:37px;line-height:37px}.elementor-hidden{display:none}.elementor-screen-only,.screen-reader-text,.screen-reader-text span,.ui-helper-hidden-accessible{position:absolute;top:-10000em;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.elementor-clearfix:after{content:"";display:block;clear:both;width:0;height:0}.e-logo-wrapper{background:var(--e-a-bg-logo);display:inline-block;padding:.75em;border-radius:50%;line-height:1}.e-logo-wrapper i{color:var(--e-a-color-logo);font-size:1em}.elementor *,.elementor :after,.elementor :before{box-sizing:border-box}.elementor a{box-shadow:none;text-decoration:none}.elementor hr{margin:0;background-color:transparent}.elementor img{height:auto;max-width:100%;border:none;border-radius:0;box-shadow:none}.elementor .elementor-widget:not(.elementor-widget-text-editor):not(.elementor-widget-theme-post-content) figure{margin:0}.elementor embed,.elementor iframe,.elementor object,.elementor video{max-width:100%;width:100%;margin:0;line-height:1;border:none}.elementor .elementor-background,.elementor .elementor-background-holder,.elementor .elementor-background-video-container{height:100%;width:100%;top:0;left:0;position:absolute;overflow:hidden;z-index:0;direction:ltr}.elementor .elementor-background-video-container{transition:opacity 1s;pointer-events:none}.elementor .elementor-background-video-container.elementor-loading{opacity:0}.elementor .elementor-background-video-embed{max-width:none}.elementor .elementor-background-video,.elementor .elementor-background-video-embed,.elementor .elementor-background-video-hosted{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.elementor .elementor-background-video{max-width:none}.elementor .elementor-html5-video{-o-object-fit:cover;object-fit:cover}.elementor .elementor-background-overlay,.elementor .elementor-background-slideshow{height:100%;width:100%;top:0;left:0;position:absolute}.elementor .elementor-background-slideshow{z-index:0}.elementor .elementor-background-slideshow__slide__image{width:100%;height:100%;background-position:50%;background-size:cover}.e-con-inner>.elementor-element.elementor-absolute,.e-con>.elementor-element.elementor-absolute,.elementor-widget-wrap>.elementor-element.elementor-absolute{position:absolute}.e-con-inner>.elementor-element.elementor-fixed,.e-con>.elementor-element.elementor-fixed,.elementor-widget-wrap>.elementor-element.elementor-fixed{position:fixed}.elementor-widget-wrap .elementor-element.elementor-widget__width-auto,.elementor-widget-wrap .elementor-element.elementor-widget__width-initial{max-width:100%}@media (max-width:ELEMENTOR_SCREEN_TABLET_MAX){.elementor-widget-wrap .elementor-element.elementor-widget-tablet__width-auto,.elementor-widget-wrap .elementor-element.elementor-widget-tablet__width-initial{max-width:100%}}@media (max-width:ELEMENTOR_SCREEN_MOBILE_MAX){.elementor-widget-wrap .elementor-element.elementor-widget-mobile__width-auto,.elementor-widget-wrap .elementor-element.elementor-widget-mobile__width-initial{max-width:100%}}.elementor-element{--flex-direction:initial;--flex-wrap:initial;--justify-content:initial;--align-items:initial;--align-content:initial;--gap:initial;--flex-basis:initial;--flex-grow:initial;--flex-shrink:initial;--order:initial;--align-self:initial;flex-basis:var(--flex-basis);flex-grow:var(--flex-grow);flex-shrink:var(--flex-shrink);order:var(--order);align-self:var(--align-self)}.elementor-element.elementor-absolute,.elementor-element.elementor-fixed{z-index:1}.elementor-element:where(.e-con-full,.elementor-widget){flex-direction:var(--flex-direction);flex-wrap:var(--flex-wrap);justify-content:var(--justify-content);align-items:var(--align-items);align-content:var(--align-content);gap:var(--gap)}.elementor-invisible{visibility:hidden}.elementor-align-center{text-align:center}.elementor-align-center .elementor-button{width:auto}.elementor-align-right{text-align:right}.elementor-align-right .elementor-button{width:auto}.elementor-align-left{text-align:left}.elementor-align-left .elementor-button{width:auto}.elementor-align-justify .elementor-button{width:100%}.elementor-custom-embed-play{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.elementor-custom-embed-play i{font-size:100px;color:#fff;text-shadow:1px 0 6px rgba(0,0,0,.3)}.elementor-custom-embed-play svg{height:100px;width:100px;fill:#fff;filter:drop-shadow(1px 0 6px rgba(0,0,0,.3))}.elementor-custom-embed-play i,.elementor-custom-embed-play svg{opacity:.8;transition:all .5s}.elementor-custom-embed-play.elementor-playing i{font-family:eicons}.elementor-custom-embed-play.elementor-playing i:before{content:"\e8fb"}.elementor-custom-embed-play.elementor-playing i,.elementor-custom-embed-play.elementor-playing svg{animation:eicon-spin 2s linear infinite}.elementor-tag{display:inline-flex}.elementor-ken-burns{transition-property:transform;transition-duration:10s;transition-timing-function:linear}.elementor-ken-burns--out{transform:scale(1.3)}.elementor-ken-burns--active{transition-duration:20s}.elementor-ken-burns--active.elementor-ken-burns--out{transform:scale(1)}.elementor-ken-burns--active.elementor-ken-burns--in{transform:scale(1.3)}@media (min-width:ELEMENTOR_SCREEN_WIDESCREEN_MIN){.elementor-widescreen-align-center{text-align:center}.elementor-widescreen-align-center .elementor-button{width:auto}.elementor-widescreen-align-right{text-align:right}.elementor-widescreen-align-right .elementor-button{width:auto}.elementor-widescreen-align-left{text-align:left}.elementor-widescreen-align-left .elementor-button{width:auto}.elementor-widescreen-align-justify .elementor-button{width:100%}}@media (max-width:ELEMENTOR_SCREEN_LAPTOP_MAX){.elementor-laptop-align-center{text-align:center}.elementor-laptop-align-center .elementor-button{width:auto}.elementor-laptop-align-right{text-align:right}.elementor-laptop-align-right .elementor-button{width:auto}.elementor-laptop-align-left{text-align:left}.elementor-laptop-align-left .elementor-button{width:auto}.elementor-laptop-align-justify .elementor-button{width:100%}}@media (max-width:ELEMENTOR_SCREEN_TABLET_EXTRA_MAX){.elementor-tablet_extra-align-center{text-align:center}.elementor-tablet_extra-align-center .elementor-button{width:auto}.elementor-tablet_extra-align-right{text-align:right}.elementor-tablet_extra-align-right .elementor-button{width:auto}.elementor-tablet_extra-align-left{text-align:left}.elementor-tablet_extra-align-left .elementor-button{width:auto}.elementor-tablet_extra-align-justify .elementor-button{width:100%}}@media (max-width:ELEMENTOR_SCREEN_TABLET_MAX){.elementor-tablet-align-center{text-align:center}.elementor-tablet-align-center .elementor-button{width:auto}.elementor-tablet-align-right{text-align:right}.elementor-tablet-align-right .elementor-button{width:auto}.elementor-tablet-align-left{text-align:left}.elementor-tablet-align-left .elementor-button{width:auto}.elementor-tablet-align-justify .elementor-button{width:100%}}@media (max-width:ELEMENTOR_SCREEN_MOBILE_EXTRA_MAX){.elementor-mobile_extra-align-center{text-align:center}.elementor-mobile_extra-align-center .elementor-button{width:auto}.elementor-mobile_extra-align-right{text-align:right}.elementor-mobile_extra-align-right .elementor-button{width:auto}.elementor-mobile_extra-align-left{text-align:left}.elementor-mobile_extra-align-left .elementor-button{width:auto}.elementor-mobile_extra-align-justify .elementor-button{width:100%}}@media (max-width:ELEMENTOR_SCREEN_MOBILE_MAX){.elementor-mobile-align-center{text-align:center}.elementor-mobile-align-center .elementor-button{width:auto}.elementor-mobile-align-right{text-align:right}.elementor-mobile-align-right .elementor-button{width:auto}.elementor-mobile-align-left{text-align:left}.elementor-mobile-align-left .elementor-button{width:auto}.elementor-mobile-align-justify .elementor-button{width:100%}}:root{--page-title-display:block}.elementor-page-title,h1.entry-title{display:var(--page-title-display)}@keyframes eicon-spin{0%{transform:rotate(0deg)}to{transform:rotate(359deg)}}.eicon-animation-spin{animation:eicon-spin 2s linear infinite}.elementor-section{position:relative}.elementor-section .elementor-container{display:flex;margin-right:auto;margin-left:auto;position:relative}@media (max-width:ELEMENTOR_SCREEN_TABLET_MAX){.elementor-section .elementor-container{flex-wrap:wrap}}.elementor-section.elementor-section-boxed>.elementor-container{max-width:1140px}.elementor-section.elementor-section-stretched{position:relative;width:100%}.elementor-section.elementor-section-items-top>.elementor-container{align-items:flex-start}.elementor-section.elementor-section-items-middle>.elementor-container{align-items:center}.elementor-section.elementor-section-items-bottom>.elementor-container{align-items:flex-end}@media (min-width:ELEMENTOR_SCREEN_MOBILE_NEXT){.elementor-section.elementor-section-height-full{height:100vh}.elementor-section.elementor-section-height-full>.elementor-container{height:100%}}.elementor-bc-flex-widget .elementor-section-content-top>.elementor-container>.elementor-column>.elementor-widget-wrap{align-items:flex-start}.elementor-bc-flex-widget .elementor-section-content-middle>.elementor-container>.elementor-column>.elementor-widget-wrap{align-items:center}.elementor-bc-flex-widget .elementor-section-content-bottom>.elementor-container>.elementor-column>.elementor-widget-wrap{align-items:flex-end}.elementor-row{width:100%;display:flex}@media (max-width:ELEMENTOR_SCREEN_TABLET_MAX){.elementor-row{flex-wrap:wrap}}.elementor-widget-wrap{position:relative;width:100%;flex-wrap:wrap;align-content:flex-start}.elementor:not(.elementor-bc-flex-widget) .elementor-widget-wrap{display:flex}.elementor-widget-wrap>.elementor-element{width:100%}.elementor-widget-wrap.e-swiper-container{width:calc(100% - (var(--e-column-margin-left, 0px) + var(--e-column-margin-right, 0px)))}.elementor-widget{position:relative}.elementor-widget:not(:last-child){margin-bottom:20px}.elementor-widget:not(:last-child).elementor-absolute,.elementor-widget:not(:last-child).elementor-widget__width-auto,.elementor-widget:not(:last-child).elementor-widget__width-initial{margin-bottom:0}.elementor-column{position:relative;min-height:1px;display:flex}.elementor-column-wrap{width:100%;position:relative;display:flex}.elementor-column-gap-narrow>.elementor-column>.elementor-element-populated{padding:5px}.elementor-column-gap-default>.elementor-column>.elementor-element-populated{padding:10px}.elementor-column-gap-extended>.elementor-column>.elementor-element-populated{padding:15px}.elementor-column-gap-wide>.elementor-column>.elementor-element-populated{padding:20px}.elementor-column-gap-wider>.elementor-column>.elementor-element-populated{padding:30px}.elementor-inner-section .elementor-column-gap-no .elementor-element-populated{padding:0}@media (min-width:ELEMENTOR_SCREEN_MOBILE_NEXT){.elementor-column.elementor-col-10,.elementor-column[data-col="10"]{width:10%}.elementor-column.elementor-col-11,.elementor-column[data-col="11"]{width:11.111%}.elementor-column.elementor-col-12,.elementor-column[data-col="12"]{width:12.5%}.elementor-column.elementor-col-14,.elementor-column[data-col="14"]{width:14.285%}.elementor-column.elementor-col-16,.elementor-column[data-col="16"]{width:16.666%}.elementor-column.elementor-col-20,.elementor-column[data-col="20"]{width:20%}.elementor-column.elementor-col-25,.elementor-column[data-col="25"]{width:25%}.elementor-column.elementor-col-30,.elementor-column[data-col="30"]{width:30%}.elementor-column.elementor-col-33,.elementor-column[data-col="33"]{width:33.333%}.elementor-column.elementor-col-40,.elementor-column[data-col="40"]{width:40%}.elementor-column.elementor-col-50,.elementor-column[data-col="50"]{width:50%}.elementor-column.elementor-col-60,.elementor-column[data-col="60"]{width:60%}.elementor-column.elementor-col-66,.elementor-column[data-col="66"]{width:66.666%}.elementor-column.elementor-col-70,.elementor-column[data-col="70"]{width:70%}.elementor-column.elementor-col-75,.elementor-column[data-col="75"]{width:75%}.elementor-column.elementor-col-80,.elementor-column[data-col="80"]{width:80%}.elementor-column.elementor-col-83,.elementor-column[data-col="83"]{width:83.333%}.elementor-column.elementor-col-90,.elementor-column[data-col="90"]{width:90%}.elementor-column.elementor-col-100,.elementor-column[data-col="100"]{width:100%}}@media (max-width:479px){.elementor-column.elementor-xs-10{width:10%}.elementor-column.elementor-xs-11{width:11.111%}.elementor-column.elementor-xs-12{width:12.5%}.elementor-column.elementor-xs-14{width:14.285%}.elementor-column.elementor-xs-16{width:16.666%}.elementor-column.elementor-xs-20{width:20%}.elementor-column.elementor-xs-25{width:25%}.elementor-column.elementor-xs-30{width:30%}.elementor-column.elementor-xs-33{width:33.333%}.elementor-column.elementor-xs-40{width:40%}.elementor-column.elementor-xs-50{width:50%}.elementor-column.elementor-xs-60{width:60%}.elementor-column.elementor-xs-66{width:66.666%}.elementor-column.elementor-xs-70{width:70%}.elementor-column.elementor-xs-75{width:75%}.elementor-column.elementor-xs-80{width:80%}.elementor-column.elementor-xs-83{width:83.333%}.elementor-column.elementor-xs-90{width:90%}.elementor-column.elementor-xs-100{width:100%}}@media (max-width:ELEMENTOR_SCREEN_MOBILE_MAX){.elementor-column.elementor-sm-10{width:10%}.elementor-column.elementor-sm-11{width:11.111%}.elementor-column.elementor-sm-12{width:12.5%}.elementor-column.elementor-sm-14{width:14.285%}.elementor-column.elementor-sm-16{width:16.666%}.elementor-column.elementor-sm-20{width:20%}.elementor-column.elementor-sm-25{width:25%}.elementor-column.elementor-sm-30{width:30%}.elementor-column.elementor-sm-33{width:33.333%}.elementor-column.elementor-sm-40{width:40%}.elementor-column.elementor-sm-50{width:50%}.elementor-column.elementor-sm-60{width:60%}.elementor-column.elementor-sm-66{width:66.666%}.elementor-column.elementor-sm-70{width:70%}.elementor-column.elementor-sm-75{width:75%}.elementor-column.elementor-sm-80{width:80%}.elementor-column.elementor-sm-83{width:83.333%}.elementor-column.elementor-sm-90{width:90%}.elementor-column.elementor-sm-100{width:100%}}@media (min-width:ELEMENTOR_SCREEN_MOBILE_NEXT) and (max-width:ELEMENTOR_SCREEN_TABLET_MAX){.elementor-column.elementor-md-10{width:10%}.elementor-column.elementor-md-11{width:11.111%}.elementor-column.elementor-md-12{width:12.5%}.elementor-column.elementor-md-14{width:14.285%}.elementor-column.elementor-md-16{width:16.666%}.elementor-column.elementor-md-20{width:20%}.elementor-column.elementor-md-25{width:25%}.elementor-column.elementor-md-30{width:30%}.elementor-column.elementor-md-33{width:33.333%}.elementor-column.elementor-md-40{width:40%}.elementor-column.elementor-md-50{width:50%}.elementor-column.elementor-md-60{width:60%}.elementor-column.elementor-md-66{width:66.666%}.elementor-column.elementor-md-70{width:70%}.elementor-column.elementor-md-75{width:75%}.elementor-column.elementor-md-80{width:80%}.elementor-column.elementor-md-83{width:83.333%}.elementor-column.elementor-md-90{width:90%}.elementor-column.elementor-md-100{width:100%}}@media (min-width:ELEMENTOR_SCREEN_WIDESCREEN_MIN){.elementor-reverse-widescreen>.elementor-container>:first-child{order:10}.elementor-reverse-widescreen>.elementor-container>:nth-child(2){order:9}.elementor-reverse-widescreen>.elementor-container>:nth-child(3){order:8}.elementor-reverse-widescreen>.elementor-container>:nth-child(4){order:7}.elementor-reverse-widescreen>.elementor-container>:nth-child(5){order:6}.elementor-reverse-widescreen>.elementor-container>:nth-child(6){order:5}.elementor-reverse-widescreen>.elementor-container>:nth-child(7){order:4}.elementor-reverse-widescreen>.elementor-container>:nth-child(8){order:3}.elementor-reverse-widescreen>.elementor-container>:nth-child(9){order:2}.elementor-reverse-widescreen>.elementor-container>:nth-child(10){order:1}}@media (min-width:ELEMENTOR_SCREEN_TABLET_NEXT) and (max-width:ELEMENTOR_SCREEN_LAPTOP_MAX){.elementor-reverse-laptop>.elementor-container>:first-child{order:10}.elementor-reverse-laptop>.elementor-container>:nth-child(2){order:9}.elementor-reverse-laptop>.elementor-container>:nth-child(3){order:8}.elementor-reverse-laptop>.elementor-container>:nth-child(4){order:7}.elementor-reverse-laptop>.elementor-container>:nth-child(5){order:6}.elementor-reverse-laptop>.elementor-container>:nth-child(6){order:5}.elementor-reverse-laptop>.elementor-container>:nth-child(7){order:4}.elementor-reverse-laptop>.elementor-container>:nth-child(8){order:3}.elementor-reverse-laptop>.elementor-container>:nth-child(9){order:2}.elementor-reverse-laptop>.elementor-container>:nth-child(10){order:1}}@media (min-width:ELEMENTOR_SCREEN_TABLET_EXTRA_NEXT) and (max-width:ELEMENTOR_SCREEN_LAPTOP_MAX){.elementor-reverse-laptop>.elementor-container>:first-child{order:10}.elementor-reverse-laptop>.elementor-container>:nth-child(2){order:9}.elementor-reverse-laptop>.elementor-container>:nth-child(3){order:8}.elementor-reverse-laptop>.elementor-container>:nth-child(4){order:7}.elementor-reverse-laptop>.elementor-container>:nth-child(5){order:6}.elementor-reverse-laptop>.elementor-container>:nth-child(6){order:5}.elementor-reverse-laptop>.elementor-container>:nth-child(7){order:4}.elementor-reverse-laptop>.elementor-container>:nth-child(8){order:3}.elementor-reverse-laptop>.elementor-container>:nth-child(9){order:2}.elementor-reverse-laptop>.elementor-container>:nth-child(10){order:1}}@media (min-width:ELEMENTOR_SCREEN_TABLET_NEXT) and (max-width:ELEMENTOR_SCREEN_TABLET_EXTRA_MAX){.elementor-reverse-laptop>.elementor-container>:first-child,.elementor-reverse-laptop>.elementor-container>:nth-child(2),.elementor-reverse-laptop>.elementor-container>:nth-child(3),.elementor-reverse-laptop>.elementor-container>:nth-child(4),.elementor-reverse-laptop>.elementor-container>:nth-child(5),.elementor-reverse-laptop>.elementor-container>:nth-child(6),.elementor-reverse-laptop>.elementor-container>:nth-child(7),.elementor-reverse-laptop>.elementor-container>:nth-child(8),.elementor-reverse-laptop>.elementor-container>:nth-child(9),.elementor-reverse-laptop>.elementor-container>:nth-child(10){order:0}.elementor-reverse-tablet_extra>.elementor-container>:first-child{order:10}.elementor-reverse-tablet_extra>.elementor-container>:nth-child(2){order:9}.elementor-reverse-tablet_extra>.elementor-container>:nth-child(3){order:8}.elementor-reverse-tablet_extra>.elementor-container>:nth-child(4){order:7}.elementor-reverse-tablet_extra>.elementor-container>:nth-child(5){order:6}.elementor-reverse-tablet_extra>.elementor-container>:nth-child(6){order:5}.elementor-reverse-tablet_extra>.elementor-container>:nth-child(7){order:4}.elementor-reverse-tablet_extra>.elementor-container>:nth-child(8){order:3}.elementor-reverse-tablet_extra>.elementor-container>:nth-child(9){order:2}.elementor-reverse-tablet_extra>.elementor-container>:nth-child(10){order:1}}@media (min-width:ELEMENTOR_SCREEN_MOBILE_NEXT) and (max-width:ELEMENTOR_SCREEN_TABLET_MAX){.elementor-reverse-tablet>.elementor-container>:first-child{order:10}.elementor-reverse-tablet>.elementor-container>:nth-child(2){order:9}.elementor-reverse-tablet>.elementor-container>:nth-child(3){order:8}.elementor-reverse-tablet>.elementor-container>:nth-child(4){order:7}.elementor-reverse-tablet>.elementor-container>:nth-child(5){order:6}.elementor-reverse-tablet>.elementor-container>:nth-child(6){order:5}.elementor-reverse-tablet>.elementor-container>:nth-child(7){order:4}.elementor-reverse-tablet>.elementor-container>:nth-child(8){order:3}.elementor-reverse-tablet>.elementor-container>:nth-child(9){order:2}.elementor-reverse-tablet>.elementor-container>:nth-child(10){order:1}}@media (min-width:ELEMENTOR_SCREEN_MOBILE_EXTRA_NEXT) and (max-width:ELEMENTOR_SCREEN_TABLET_MAX){.elementor-reverse-tablet>.elementor-container>:first-child{order:10}.elementor-reverse-tablet>.elementor-container>:nth-child(2){order:9}.elementor-reverse-tablet>.elementor-container>:nth-child(3){order:8}.elementor-reverse-tablet>.elementor-container>:nth-child(4){order:7}.elementor-reverse-tablet>.elementor-container>:nth-child(5){order:6}.elementor-reverse-tablet>.elementor-container>:nth-child(6){order:5}.elementor-reverse-tablet>.elementor-container>:nth-child(7){order:4}.elementor-reverse-tablet>.elementor-container>:nth-child(8){order:3}.elementor-reverse-tablet>.elementor-container>:nth-child(9){order:2}.elementor-reverse-tablet>.elementor-container>:nth-child(10){order:1}}@media (min-width:ELEMENTOR_SCREEN_MOBILE_NEXT) and (max-width:ELEMENTOR_SCREEN_MOBILE_EXTRA_MAX){.elementor-reverse-tablet>.elementor-container>:first-child,.elementor-reverse-tablet>.elementor-container>:nth-child(2),.elementor-reverse-tablet>.elementor-container>:nth-child(3),.elementor-reverse-tablet>.elementor-container>:nth-child(4),.elementor-reverse-tablet>.elementor-container>:nth-child(5),.elementor-reverse-tablet>.elementor-container>:nth-child(6),.elementor-reverse-tablet>.elementor-container>:nth-child(7),.elementor-reverse-tablet>.elementor-container>:nth-child(8),.elementor-reverse-tablet>.elementor-container>:nth-child(9),.elementor-reverse-tablet>.elementor-container>:nth-child(10){order:0}.elementor-reverse-mobile_extra>.elementor-container>:first-child{order:10}.elementor-reverse-mobile_extra>.elementor-container>:nth-child(2){order:9}.elementor-reverse-mobile_extra>.elementor-container>:nth-child(3){order:8}.elementor-reverse-mobile_extra>.elementor-container>:nth-child(4){order:7}.elementor-reverse-mobile_extra>.elementor-container>:nth-child(5){order:6}.elementor-reverse-mobile_extra>.elementor-container>:nth-child(6){order:5}.elementor-reverse-mobile_extra>.elementor-container>:nth-child(7){order:4}.elementor-reverse-mobile_extra>.elementor-container>:nth-child(8){order:3}.elementor-reverse-mobile_extra>.elementor-container>:nth-child(9){order:2}.elementor-reverse-mobile_extra>.elementor-container>:nth-child(10){order:1}}@media (max-width:ELEMENTOR_SCREEN_MOBILE_MAX){.elementor-reverse-mobile>.elementor-container>:first-child{order:10}.elementor-reverse-mobile>.elementor-container>:nth-child(2){order:9}.elementor-reverse-mobile>.elementor-container>:nth-child(3){order:8}.elementor-reverse-mobile>.elementor-container>:nth-child(4){order:7}.elementor-reverse-mobile>.elementor-container>:nth-child(5){order:6}.elementor-reverse-mobile>.elementor-container>:nth-child(6){order:5}.elementor-reverse-mobile>.elementor-container>:nth-child(7){order:4}.elementor-reverse-mobile>.elementor-container>:nth-child(8){order:3}.elementor-reverse-mobile>.elementor-container>:nth-child(9){order:2}.elementor-reverse-mobile>.elementor-container>:nth-child(10){order:1}.elementor-column{width:100%}}ul.elementor-icon-list-items.elementor-inline-items{display:flex;flex-wrap:wrap}ul.elementor-icon-list-items.elementor-inline-items .elementor-inline-item{word-break:break-word}.elementor-grid{display:grid;grid-column-gap:var(--grid-column-gap);grid-row-gap:var(--grid-row-gap)}.elementor-grid .elementor-grid-item{min-width:0}.elementor-grid-0 .elementor-grid{display:inline-block;width:100%;word-spacing:var(--grid-column-gap);margin-bottom:calc(-1 * var(--grid-row-gap))}.elementor-grid-0 .elementor-grid .elementor-grid-item{display:inline-block;margin-bottom:var(--grid-row-gap);word-break:break-word}.elementor-grid-1 .elementor-grid{grid-template-columns:repeat(1,1fr)}.elementor-grid-2 .elementor-grid{grid-template-columns:repeat(2,1fr)}.elementor-grid-3 .elementor-grid{grid-template-columns:repeat(3,1fr)}.elementor-grid-4 .elementor-grid{grid-template-columns:repeat(4,1fr)}.elementor-grid-5 .elementor-grid{grid-template-columns:repeat(5,1fr)}.elementor-grid-6 .elementor-grid{grid-template-columns:repeat(6,1fr)}.elementor-grid-7 .elementor-grid{grid-template-columns:repeat(7,1fr)}.elementor-grid-8 .elementor-grid{grid-template-columns:repeat(8,1fr)}.elementor-grid-9 .elementor-grid{grid-template-columns:repeat(9,1fr)}.elementor-grid-10 .elementor-grid{grid-template-columns:repeat(10,1fr)}.elementor-grid-11 .elementor-grid{grid-template-columns:repeat(11,1fr)}.elementor-grid-12 .elementor-grid{grid-template-columns:repeat(12,1fr)}@media (min-width:ELEMENTOR_SCREEN_WIDESCREEN_MIN){.elementor-grid-widescreen-0 .elementor-grid{display:inline-block;width:100%;word-spacing:var(--grid-column-gap);margin-bottom:calc(-1 * var(--grid-row-gap))}.elementor-grid-widescreen-0 .elementor-grid .elementor-grid-item{display:inline-block;margin-bottom:var(--grid-row-gap);word-break:break-word}.elementor-grid-widescreen-1 .elementor-grid{grid-template-columns:repeat(1,1fr)}.elementor-grid-widescreen-2 .elementor-grid{grid-template-columns:repeat(2,1fr)}.elementor-grid-widescreen-3 .elementor-grid{grid-template-columns:repeat(3,1fr)}.elementor-grid-widescreen-4 .elementor-grid{grid-template-columns:repeat(4,1fr)}.elementor-grid-widescreen-5 .elementor-grid{grid-template-columns:repeat(5,1fr)}.elementor-grid-widescreen-6 .elementor-grid{grid-template-columns:repeat(6,1fr)}.elementor-grid-widescreen-7 .elementor-grid{grid-template-columns:repeat(7,1fr)}.elementor-grid-widescreen-8 .elementor-grid{grid-template-columns:repeat(8,1fr)}.elementor-grid-widescreen-9 .elementor-grid{grid-template-columns:repeat(9,1fr)}.elementor-grid-widescreen-10 .elementor-grid{grid-template-columns:repeat(10,1fr)}.elementor-grid-widescreen-11 .elementor-grid{grid-template-columns:repeat(11,1fr)}.elementor-grid-widescreen-12 .elementor-grid{grid-template-columns:repeat(12,1fr)}}@media (max-width:ELEMENTOR_SCREEN_LAPTOP_MAX){.elementor-grid-laptop-0 .elementor-grid{display:inline-block;width:100%;word-spacing:var(--grid-column-gap);margin-bottom:calc(-1 * var(--grid-row-gap))}.elementor-grid-laptop-0 .elementor-grid .elementor-grid-item{display:inline-block;margin-bottom:var(--grid-row-gap);word-break:break-word}.elementor-grid-laptop-1 .elementor-grid{grid-template-columns:repeat(1,1fr)}.elementor-grid-laptop-2 .elementor-grid{grid-template-columns:repeat(2,1fr)}.elementor-grid-laptop-3 .elementor-grid{grid-template-columns:repeat(3,1fr)}.elementor-grid-laptop-4 .elementor-grid{grid-template-columns:repeat(4,1fr)}.elementor-grid-laptop-5 .elementor-grid{grid-template-columns:repeat(5,1fr)}.elementor-grid-laptop-6 .elementor-grid{grid-template-columns:repeat(6,1fr)}.elementor-grid-laptop-7 .elementor-grid{grid-template-columns:repeat(7,1fr)}.elementor-grid-laptop-8 .elementor-grid{grid-template-columns:repeat(8,1fr)}.elementor-grid-laptop-9 .elementor-grid{grid-template-columns:repeat(9,1fr)}.elementor-grid-laptop-10 .elementor-grid{grid-template-columns:repeat(10,1fr)}.elementor-grid-laptop-11 .elementor-grid{grid-template-columns:repeat(11,1fr)}.elementor-grid-laptop-12 .elementor-grid{grid-template-columns:repeat(12,1fr)}}@media (max-width:ELEMENTOR_SCREEN_TABLET_EXTRA_MAX){.elementor-grid-tablet_extra-0 .elementor-grid{display:inline-block;width:100%;word-spacing:var(--grid-column-gap);margin-bottom:calc(-1 * var(--grid-row-gap))}.elementor-grid-tablet_extra-0 .elementor-grid .elementor-grid-item{display:inline-block;margin-bottom:var(--grid-row-gap);word-break:break-word}.elementor-grid-tablet_extra-1 .elementor-grid{grid-template-columns:repeat(1,1fr)}.elementor-grid-tablet_extra-2 .elementor-grid{grid-template-columns:repeat(2,1fr)}.elementor-grid-tablet_extra-3 .elementor-grid{grid-template-columns:repeat(3,1fr)}.elementor-grid-tablet_extra-4 .elementor-grid{grid-template-columns:repeat(4,1fr)}.elementor-grid-tablet_extra-5 .elementor-grid{grid-template-columns:repeat(5,1fr)}.elementor-grid-tablet_extra-6 .elementor-grid{grid-template-columns:repeat(6,1fr)}.elementor-grid-tablet_extra-7 .elementor-grid{grid-template-columns:repeat(7,1fr)}.elementor-grid-tablet_extra-8 .elementor-grid{grid-template-columns:repeat(8,1fr)}.elementor-grid-tablet_extra-9 .elementor-grid{grid-template-columns:repeat(9,1fr)}.elementor-grid-tablet_extra-10 .elementor-grid{grid-template-columns:repeat(10,1fr)}.elementor-grid-tablet_extra-11 .elementor-grid{grid-template-columns:repeat(11,1fr)}.elementor-grid-tablet_extra-12 .elementor-grid{grid-template-columns:repeat(12,1fr)}}@media (max-width:ELEMENTOR_SCREEN_TABLET_MAX){.elementor-grid-tablet-0 .elementor-grid{display:inline-block;width:100%;word-spacing:var(--grid-column-gap);margin-bottom:calc(-1 * var(--grid-row-gap))}.elementor-grid-tablet-0 .elementor-grid .elementor-grid-item{display:inline-block;margin-bottom:var(--grid-row-gap);word-break:break-word}.elementor-grid-tablet-1 .elementor-grid{grid-template-columns:repeat(1,1fr)}.elementor-grid-tablet-2 .elementor-grid{grid-template-columns:repeat(2,1fr)}.elementor-grid-tablet-3 .elementor-grid{grid-template-columns:repeat(3,1fr)}.elementor-grid-tablet-4 .elementor-grid{grid-template-columns:repeat(4,1fr)}.elementor-grid-tablet-5 .elementor-grid{grid-template-columns:repeat(5,1fr)}.elementor-grid-tablet-6 .elementor-grid{grid-template-columns:repeat(6,1fr)}.elementor-grid-tablet-7 .elementor-grid{grid-template-columns:repeat(7,1fr)}.elementor-grid-tablet-8 .elementor-grid{grid-template-columns:repeat(8,1fr)}.elementor-grid-tablet-9 .elementor-grid{grid-template-columns:repeat(9,1fr)}.elementor-grid-tablet-10 .elementor-grid{grid-template-columns:repeat(10,1fr)}.elementor-grid-tablet-11 .elementor-grid{grid-template-columns:repeat(11,1fr)}.elementor-grid-tablet-12 .elementor-grid{grid-template-columns:repeat(12,1fr)}}@media (max-width:ELEMENTOR_SCREEN_MOBILE_EXTRA_MAX){.elementor-grid-mobile_extra-0 .elementor-grid{display:inline-block;width:100%;word-spacing:var(--grid-column-gap);margin-bottom:calc(-1 * var(--grid-row-gap))}.elementor-grid-mobile_extra-0 .elementor-grid .elementor-grid-item{display:inline-block;margin-bottom:var(--grid-row-gap);word-break:break-word}.elementor-grid-mobile_extra-1 .elementor-grid{grid-template-columns:repeat(1,1fr)}.elementor-grid-mobile_extra-2 .elementor-grid{grid-template-columns:repeat(2,1fr)}.elementor-grid-mobile_extra-3 .elementor-grid{grid-template-columns:repeat(3,1fr)}.elementor-grid-mobile_extra-4 .elementor-grid{grid-template-columns:repeat(4,1fr)}.elementor-grid-mobile_extra-5 .elementor-grid{grid-template-columns:repeat(5,1fr)}.elementor-grid-mobile_extra-6 .elementor-grid{grid-template-columns:repeat(6,1fr)}.elementor-grid-mobile_extra-7 .elementor-grid{grid-template-columns:repeat(7,1fr)}.elementor-grid-mobile_extra-8 .elementor-grid{grid-template-columns:repeat(8,1fr)}.elementor-grid-mobile_extra-9 .elementor-grid{grid-template-columns:repeat(9,1fr)}.elementor-grid-mobile_extra-10 .elementor-grid{grid-template-columns:repeat(10,1fr)}.elementor-grid-mobile_extra-11 .elementor-grid{grid-template-columns:repeat(11,1fr)}.elementor-grid-mobile_extra-12 .elementor-grid{grid-template-columns:repeat(12,1fr)}}@media (max-width:ELEMENTOR_SCREEN_MOBILE_MAX){.elementor-grid-mobile-0 .elementor-grid{display:inline-block;width:100%;word-spacing:var(--grid-column-gap);margin-bottom:calc(-1 * var(--grid-row-gap))}.elementor-grid-mobile-0 .elementor-grid .elementor-grid-item{display:inline-block;margin-bottom:var(--grid-row-gap);word-break:break-word}.elementor-grid-mobile-1 .elementor-grid{grid-template-columns:repeat(1,1fr)}.elementor-grid-mobile-2 .elementor-grid{grid-template-columns:repeat(2,1fr)}.elementor-grid-mobile-3 .elementor-grid{grid-template-columns:repeat(3,1fr)}.elementor-grid-mobile-4 .elementor-grid{grid-template-columns:repeat(4,1fr)}.elementor-grid-mobile-5 .elementor-grid{grid-template-columns:repeat(5,1fr)}.elementor-grid-mobile-6 .elementor-grid{grid-template-columns:repeat(6,1fr)}.elementor-grid-mobile-7 .elementor-grid{grid-template-columns:repeat(7,1fr)}.elementor-grid-mobile-8 .elementor-grid{grid-template-columns:repeat(8,1fr)}.elementor-grid-mobile-9 .elementor-grid{grid-template-columns:repeat(9,1fr)}.elementor-grid-mobile-10 .elementor-grid{grid-template-columns:repeat(10,1fr)}.elementor-grid-mobile-11 .elementor-grid{grid-template-columns:repeat(11,1fr)}.elementor-grid-mobile-12 .elementor-grid{grid-template-columns:repeat(12,1fr)}}@media (min-width:ELEMENTOR_SCREEN_DESKTOP_MIN){#elementor-device-mode:after{content:"desktop"}}@media (min-width:ELEMENTOR_SCREEN_WIDESCREEN_MIN){#elementor-device-mode:after{content:"widescreen"}}@media (max-width:ELEMENTOR_SCREEN_LAPTOP_MAX){#elementor-device-mode:after{content:"laptop"}}@media (max-width:ELEMENTOR_SCREEN_TABLET_EXTRA_MAX){#elementor-device-mode:after{content:"tablet_extra"}}@media (max-width:ELEMENTOR_SCREEN_TABLET_MAX){#elementor-device-mode:after{content:"tablet"}}@media (max-width:ELEMENTOR_SCREEN_MOBILE_EXTRA_MAX){#elementor-device-mode:after{content:"mobile_extra"}}@media (max-width:ELEMENTOR_SCREEN_MOBILE_MAX){#elementor-device-mode:after{content:"mobile"}}.e-con{--border-radius:0;--border-block-start-width:0px;--border-inline-end-width:0px;--border-block-end-width:0px;--border-inline-start-width:0px;--border-style:initial;--border-color:initial;--container-widget-height:initial;--container-widget-flex-grow:0;--container-widget-align-self:initial;--content-width:min(100%,var(--container-max-width,1140px));--width:100%;--min-height:initial;--height:auto;--text-align:initial;--margin-block-start:0px;--margin-inline-end:0px;--margin-block-end:0px;--margin-inline-start:0px;--padding-block-start:var(--container-default-padding-block-start,10px);--padding-inline-end:var(--container-default-padding-inline-end,10px);--padding-block-end:var(--container-default-padding-block-end,10px);--padding-inline-start:var(--container-default-padding-inline-start,10px);--position:relative;--z-index:revert;--overflow:visible;--gap:var(--widgets-spacing,20px);--overlay-mix-blend-mode:initial;--overlay-opacity:1;--overlay-transition:0.3s;--e-con-grid-template-columns:repeat(3,1fr);--e-con-grid-template-rows:repeat(2,1fr);position:var(--position);width:var(--width);min-width:0;min-height:var(--min-height);height:var(--height);border-radius:var(--border-radius);margin-block-start:var(--bc-margin-block-start,var(--margin-block-start));margin-inline-end:var(--bc-margin-inline-end,var(--margin-inline-end));margin-block-end:var(--bc-margin-block-end,var(--margin-block-end));margin-inline-start:var(--bc-margin-inline-start,var(--margin-inline-start));padding-inline-start:var(--bc-padding-inline-start,var(--padding-inline-start));padding-inline-end:var(--bc-padding-inline-end,var(--padding-inline-end));z-index:var(--z-index);overflow:var(--overflow);transition:background var(--background-transition,.3s),border var(--border-transition,.3s),box-shadow var(--border-transition,.3s),transform var(--e-con-transform-transition-duration,.4s)}.e-con.e-flex{--flex-direction:column;--flex-basis:auto;--flex-grow:0;--flex-shrink:1;flex:var(--flex-grow) var(--flex-shrink) var(--flex-basis)}.e-con-full,.e-con>.e-con-inner{text-align:var(--text-align);padding-block-start:var(--bc-padding-block-start,var(--padding-block-start));padding-block-end:var(--bc-padding-block-end,var(--padding-block-end))}.e-con-full.e-flex,.e-con.e-flex>.e-con-inner{flex-direction:var(--flex-direction)}.e-con,.e-con>.e-con-inner{display:var(--display)}.e-con.e-grid{--grid-justify-content:start;--grid-align-content:start;--grid-auto-flow:row}.e-con.e-grid,.e-con.e-grid>.e-con-inner{grid-template-columns:var(--e-con-grid-template-columns);grid-template-rows:var(--e-con-grid-template-rows);justify-content:var(--grid-justify-content);align-content:var(--grid-align-content);grid-auto-flow:var(--grid-auto-flow);justify-items:var(--justify-items);align-items:var(--align-items)}.e-con-boxed.e-flex{flex-direction:column;flex-wrap:nowrap;justify-content:normal;align-items:normal;align-content:normal}.e-con-boxed.e-grid{justify-items:legacy;grid-template-columns:1fr;grid-template-rows:1fr}.e-con-boxed{text-align:initial;gap:initial}.e-con.e-flex>.e-con-inner{flex-wrap:var(--flex-wrap);justify-content:var(--justify-content);align-items:var(--align-items);align-content:var(--align-content);flex-basis:auto;flex-grow:1;flex-shrink:1;align-self:auto}.e-con.e-grid>.e-con-inner{justify-items:var(--justify-items);align-items:var(--align-items)}.e-con>.e-con-inner{gap:var(--gap);width:100%;max-width:var(--content-width);margin:0 auto;padding-inline-start:0;padding-inline-end:0;height:100%}:is(.elementor-section-wrap,[data-elementor-id])>.e-con{--margin-inline-end:auto;--margin-inline-start:auto;max-width:min(100%,var(--width))}.e-con .elementor-widget.elementor-widget{margin-block-end:0}.e-con:before,.e-con>.elementor-background-slideshow:before,.e-con>.elementor-motion-effects-container>.elementor-motion-effects-layer:before,:is(.e-con,.e-con>.e-con-inner)>.elementor-background-video-container:before{content:var(--background-overlay);display:block;position:absolute;mix-blend-mode:var(--overlay-mix-blend-mode);opacity:var(--overlay-opacity);transition:var(--overlay-transition,.3s);border-radius:var(--border-radius);border-style:var(--border-style);border-color:var(--border-color);border-block-start-width:var(--border-block-start-width);border-inline-end-width:var(--border-inline-end-width);border-block-end-width:var(--border-block-end-width);border-inline-start-width:var(--border-inline-start-width);top:calc(0px - var(--border-block-start-width));left:calc(0px - var(--border-inline-start-width));width:max(100% + var(--border-inline-end-width) + var(--border-inline-start-width),100%);height:max(100% + var(--border-block-start-width) + var(--border-block-end-width),100%)}.e-con:before{transition:background var(--overlay-transition,.3s),border-radius var(--border-transition,.3s),opacity var(--overlay-transition,.3s)}.e-con>.elementor-background-slideshow,:is(.e-con,.e-con>.e-con-inner)>.elementor-background-video-container{border-radius:var(--border-radius);border-style:var(--border-style);border-color:var(--border-color);border-block-start-width:var(--border-block-start-width);border-inline-end-width:var(--border-inline-end-width);border-block-end-width:var(--border-block-end-width);border-inline-start-width:var(--border-inline-start-width);top:calc(0px - var(--border-block-start-width));left:calc(0px - var(--border-inline-start-width));width:max(100% + var(--border-inline-end-width) + var(--border-inline-start-width),100%);height:max(100% + var(--border-block-start-width) + var(--border-block-end-width),100%)}@media (max-width:ELEMENTOR_SCREEN_MOBILE_MAX){:is(.e-con,.e-con>.e-con-inner)>.elementor-background-video-container.elementor-hidden-phone{display:none}}:is(.e-con,.e-con>.e-con-inner)>.elementor-background-video-container:before{z-index:1}:is(.e-con,.e-con>.e-con-inner)>.elementor-background-slideshow:before{z-index:2}.e-con .elementor-widget{min-width:0}.e-con .elementor-widget-empty,.e-con .elementor-widget-google_maps,.e-con .elementor-widget-video,.e-con .elementor-widget.e-widget-swiper{width:100%}.e-con>.e-con-inner>.elementor-widget>.elementor-widget-container,.e-con>.elementor-widget>.elementor-widget-container{height:100%}.e-con.e-con>.e-con-inner>.elementor-widget,.elementor.elementor .e-con>.elementor-widget{max-width:100%}@media (max-width:767px){.e-con.e-flex{--width:100%;--flex-wrap:wrap}}.e-con{--bc-margin-block-start:var(--margin-top);--bc-margin-block-end:var(--margin-bottom);--bc-margin-inline-start:var(--margin-left);--bc-margin-inline-end:var(--margin-right);--bc-padding-block-start:var(--padding-top);--bc-padding-block-end:var(--padding-bottom);--bc-padding-inline-start:var(--padding-left);--bc-padding-inline-end:var(--padding-right)}[dir=rtl] .e-con{--bc-margin-inline-start:var(--margin-right);--bc-margin-inline-end:var(--margin-left);--bc-padding-inline-start:var(--padding-right);--bc-padding-inline-end:var(--padding-left)}.elementor-form-fields-wrapper{display:flex;flex-wrap:wrap}.elementor-form-fields-wrapper.elementor-labels-above .elementor-field-group .elementor-field-subgroup,.elementor-form-fields-wrapper.elementor-labels-above .elementor-field-group>.elementor-select-wrapper,.elementor-form-fields-wrapper.elementor-labels-above .elementor-field-group>input,.elementor-form-fields-wrapper.elementor-labels-above .elementor-field-group>textarea{flex-basis:100%;max-width:100%}.elementor-form-fields-wrapper.elementor-labels-inline>.elementor-field-group .elementor-select-wrapper,.elementor-form-fields-wrapper.elementor-labels-inline>.elementor-field-group>input{flex-grow:1}.elementor-field-group{flex-wrap:wrap;align-items:center}.elementor-field-group.elementor-field-type-submit{align-items:flex-end}.elementor-field-group .elementor-field-textual{width:100%;max-width:100%;border:1px solid #69727d;background-color:transparent;color:#1f2124;vertical-align:middle;flex-grow:1}.elementor-field-group .elementor-field-textual:focus{box-shadow:inset 0 0 0 1px rgba(0,0,0,.1);outline:0}.elementor-field-group .elementor-field-textual::-moz-placeholder{color:inherit;font-family:inherit;opacity:.6}.elementor-field-group .elementor-field-textual::placeholder{color:inherit;font-family:inherit;opacity:.6}.elementor-field-group .elementor-select-wrapper{display:flex;position:relative;width:100%}.elementor-field-group .elementor-select-wrapper select{-webkit-appearance:none;-moz-appearance:none;appearance:none;color:inherit;font-size:inherit;font-family:inherit;font-weight:inherit;font-style:inherit;text-transform:inherit;letter-spacing:inherit;line-height:inherit;flex-basis:100%;padding-right:20px}.elementor-field-group .elementor-select-wrapper:before{content:"\e92a";font-family:eicons;font-size:15px;position:absolute;top:50%;transform:translateY(-50%);right:10px;pointer-events:none;text-shadow:0 0 3px rgba(0,0,0,.3)}.elementor-field-group.elementor-field-type-select-multiple .elementor-select-wrapper:before{content:""}.elementor-field-subgroup{display:flex;flex-wrap:wrap}.elementor-field-subgroup .elementor-field-option label{display:inline-block}.elementor-field-subgroup.elementor-subgroup-inline .elementor-field-option{padding-right:10px}.elementor-field-subgroup:not(.elementor-subgroup-inline) .elementor-field-option{flex-basis:100%}.elementor-field-type-acceptance .elementor-field-subgroup .elementor-field-option input,.elementor-field-type-acceptance .elementor-field-subgroup .elementor-field-option label,.elementor-field-type-checkbox .elementor-field-subgroup .elementor-field-option input,.elementor-field-type-checkbox .elementor-field-subgroup .elementor-field-option label,.elementor-field-type-radio .elementor-field-subgroup .elementor-field-option input,.elementor-field-type-radio .elementor-field-subgroup .elementor-field-option label{display:inline}.elementor-field-label{cursor:pointer}.elementor-mark-required .elementor-field-label:after{content:"*";color:red;padding-left:.2em}.elementor-field-textual{line-height:1.4;font-size:15px;min-height:40px;padding:5px 14px;border-radius:3px}.elementor-field-textual.elementor-size-xs{font-size:13px;min-height:33px;padding:4px 12px;border-radius:2px}.elementor-field-textual.elementor-size-md{font-size:16px;min-height:47px;padding:6px 16px;border-radius:4px}.elementor-field-textual.elementor-size-lg{font-size:18px;min-height:59px;padding:7px 20px;border-radius:5px}.elementor-field-textual.elementor-size-xl{font-size:20px;min-height:72px;padding:8px 24px;border-radius:6px}.elementor-button-align-stretch .elementor-field-type-submit:not(.e-form__buttons__wrapper) .elementor-button{flex-basis:100%}.elementor-button-align-stretch .e-form__buttons__wrapper{flex-basis:50%;flex-grow:1}.elementor-button-align-stretch .e-form__buttons__wrapper__button{flex-basis:100%}.elementor-button-align-center .e-form__buttons,.elementor-button-align-center .elementor-field-type-submit{justify-content:center}.elementor-button-align-start .e-form__buttons,.elementor-button-align-start .elementor-field-type-submit{justify-content:flex-start}.elementor-button-align-end .e-form__buttons,.elementor-button-align-end .elementor-field-type-submit{justify-content:flex-end}.elementor-button-align-center .elementor-field-type-submit:not(.e-form__buttons__wrapper) .elementor-button,.elementor-button-align-end .elementor-field-type-submit:not(.e-form__buttons__wrapper) .elementor-button,.elementor-button-align-start .elementor-field-type-submit:not(.e-form__buttons__wrapper) .elementor-button{flex-basis:auto}.elementor-button-align-center .e-form__buttons__wrapper,.elementor-button-align-end .e-form__buttons__wrapper,.elementor-button-align-start .e-form__buttons__wrapper{flex-grow:0}.elementor-button-align-center .e-form__buttons__wrapper,.elementor-button-align-center .e-form__buttons__wrapper__button,.elementor-button-align-end .e-form__buttons__wrapper,.elementor-button-align-end .e-form__buttons__wrapper__button,.elementor-button-align-start .e-form__buttons__wrapper,.elementor-button-align-start .e-form__buttons__wrapper__button{flex-basis:auto}@media screen and (max-width:ELEMENTOR_SCREEN_TABLET_MAX){.elementor-tablet-button-align-stretch .elementor-field-type-submit:not(.e-form__buttons__wrapper) .elementor-button{flex-basis:100%}.elementor-tablet-button-align-stretch .e-form__buttons__wrapper{flex-basis:50%;flex-grow:1}.elementor-tablet-button-align-stretch .e-form__buttons__wrapper__button{flex-basis:100%}.elementor-tablet-button-align-center .e-form__buttons,.elementor-tablet-button-align-center .elementor-field-type-submit{justify-content:center}.elementor-tablet-button-align-start .e-form__buttons,.elementor-tablet-button-align-start .elementor-field-type-submit{justify-content:flex-start}.elementor-tablet-button-align-end .e-form__buttons,.elementor-tablet-button-align-end .elementor-field-type-submit{justify-content:flex-end}.elementor-tablet-button-align-center .elementor-field-type-submit:not(.e-form__buttons__wrapper) .elementor-button,.elementor-tablet-button-align-end .elementor-field-type-submit:not(.e-form__buttons__wrapper) .elementor-button,.elementor-tablet-button-align-start .elementor-field-type-submit:not(.e-form__buttons__wrapper) .elementor-button{flex-basis:auto}.elementor-tablet-button-align-center .e-form__buttons__wrapper,.elementor-tablet-button-align-end .e-form__buttons__wrapper,.elementor-tablet-button-align-start .e-form__buttons__wrapper{flex-grow:0}.elementor-tablet-button-align-center .e-form__buttons__wrapper,.elementor-tablet-button-align-center .e-form__buttons__wrapper__button,.elementor-tablet-button-align-end .e-form__buttons__wrapper,.elementor-tablet-button-align-end .e-form__buttons__wrapper__button,.elementor-tablet-button-align-start .e-form__buttons__wrapper,.elementor-tablet-button-align-start .e-form__buttons__wrapper__button{flex-basis:auto}}@media screen and (max-width:ELEMENTOR_SCREEN_MOBILE_MAX){.elementor-mobile-button-align-stretch .elementor-field-type-submit:not(.e-form__buttons__wrapper) .elementor-button{flex-basis:100%}.elementor-mobile-button-align-stretch .e-form__buttons__wrapper{flex-basis:50%;flex-grow:1}.elementor-mobile-button-align-stretch .e-form__buttons__wrapper__button{flex-basis:100%}.elementor-mobile-button-align-center .e-form__buttons,.elementor-mobile-button-align-center .elementor-field-type-submit{justify-content:center}.elementor-mobile-button-align-start .e-form__buttons,.elementor-mobile-button-align-start .elementor-field-type-submit{justify-content:flex-start}.elementor-mobile-button-align-end .e-form__buttons,.elementor-mobile-button-align-end .elementor-field-type-submit{justify-content:flex-end}.elementor-mobile-button-align-center .elementor-field-type-submit:not(.e-form__buttons__wrapper) .elementor-button,.elementor-mobile-button-align-end .elementor-field-type-submit:not(.e-form__buttons__wrapper) .elementor-button,.elementor-mobile-button-align-start .elementor-field-type-submit:not(.e-form__buttons__wrapper) .elementor-button{flex-basis:auto}.elementor-mobile-button-align-center .e-form__buttons__wrapper,.elementor-mobile-button-align-end .e-form__buttons__wrapper,.elementor-mobile-button-align-start .e-form__buttons__wrapper{flex-grow:0}.elementor-mobile-button-align-center .e-form__buttons__wrapper,.elementor-mobile-button-align-center .e-form__buttons__wrapper__button,.elementor-mobile-button-align-end .e-form__buttons__wrapper,.elementor-mobile-button-align-end .e-form__buttons__wrapper__button,.elementor-mobile-button-align-start .e-form__buttons__wrapper,.elementor-mobile-button-align-start .e-form__buttons__wrapper__button{flex-basis:auto}}.elementor-error .elementor-field{border-color:#d9534f}.elementor-error .help-inline{color:#d9534f;font-size:.9em}.elementor-message{margin:10px 0;font-size:1em;line-height:1}.elementor-message:before{content:"\e90e";display:inline-block;font-family:eicons;font-weight:400;font-style:normal;vertical-align:middle;margin-right:5px}.elementor-message.elementor-message-danger{color:#d9534f}.elementor-message.elementor-message-danger:before{content:"\e87f"}.elementor-message.form-message-success{color:#5cb85c}.elementor-form .elementor-button{padding-top:0;padding-bottom:0;border:none}.elementor-form .elementor-button>span{display:flex;justify-content:center}.elementor-form .elementor-button.elementor-size-xs{min-height:33px}.elementor-form .elementor-button.elementor-size-sm{min-height:40px}.elementor-form .elementor-button.elementor-size-md{min-height:47px}.elementor-form .elementor-button.elementor-size-lg{min-height:59px}.elementor-form .elementor-button.elementor-size-xl{min-height:72px}.elementor-element .elementor-widget-container{transition:background .3s,border .3s,border-radius .3s,box-shadow .3s,transform var(--e-transform-transition-duration,.4s)}.elementor-button{display:inline-block;line-height:1;background-color:#69727d;font-size:15px;padding:12px 24px;border-radius:3px;color:#fff;fill:#fff;text-align:center;transition:all .3s}.elementor-button:focus,.elementor-button:hover,.elementor-button:visited{color:#fff}.elementor-button-content-wrapper{display:flex;justify-content:center}.elementor-button-icon{flex-grow:0;order:5}.elementor-button-icon svg{width:1em;height:auto}.elementor-button-icon .e-font-icon-svg{height:1em}.elementor-button-text{flex-grow:1;order:10;display:inline-block}.elementor-button.elementor-size-xs{font-size:13px;padding:10px 20px;border-radius:2px}.elementor-button.elementor-size-md{font-size:16px;padding:15px 30px;border-radius:4px}.elementor-button.elementor-size-lg{font-size:18px;padding:20px 40px;border-radius:5px}.elementor-button.elementor-size-xl{font-size:20px;padding:25px 50px;border-radius:6px}.elementor-button .elementor-align-icon-right{margin-left:5px;order:15}.elementor-button .elementor-align-icon-left{margin-right:5px;order:5}.elementor-button span{text-decoration:inherit}.elementor-element.elementor-button-info .elementor-button{background-color:#5bc0de}.elementor-element.elementor-button-success .elementor-button{background-color:#5cb85c}.elementor-element.elementor-button-warning .elementor-button{background-color:#f0ad4e}.elementor-element.elementor-button-danger .elementor-button{background-color:#d9534f}.elementor-widget-button .elementor-button .elementor-button-info{background-color:#5bc0de}.elementor-widget-button .elementor-button .elementor-button-success{background-color:#5cb85c}.elementor-widget-button .elementor-button .elementor-button-warning{background-color:#f0ad4e}.elementor-widget-button .elementor-button .elementor-button-danger{background-color:#d9534f}.elementor-tab-title a{color:inherit}.elementor-view-stacked .elementor-icon{padding:.5em;background-color:#69727d;color:#fff;fill:#fff}.elementor-view-framed .elementor-icon{padding:.5em;color:#69727d;border:3px solid #69727d;background-color:transparent}.elementor-icon{display:inline-block;line-height:1;transition:all .3s;color:#69727d;font-size:50px;text-align:center}.elementor-icon:hover{color:#69727d}.elementor-icon i,.elementor-icon svg{width:1em;height:1em;position:relative;display:block}.elementor-icon i:before,.elementor-icon svg:before{position:absolute;left:50%;transform:translateX(-50%)}.elementor-icon i.fad{width:auto}.elementor-shape-circle .elementor-icon{border-radius:50%}.e-transform .elementor-widget-container{transform:perspective(var(--e-transform-perspective,0)) rotate(var(--e-transform-rotateZ,0)) rotateX(var(--e-transform-rotateX,0)) rotateY(var(--e-transform-rotateY,0)) translate(var(--e-transform-translate,0)) translateX(var(--e-transform-translateX,0)) translateY(var(--e-transform-translateY,0)) scaleX(calc(var(--e-transform-flipX, 1) * var(--e-transform-scaleX, var(--e-transform-scale, 1)))) scaleY(calc(var(--e-transform-flipY, 1) * var(--e-transform-scaleY, var(--e-transform-scale, 1)))) skewX(var(--e-transform-skewX,0)) skewY(var(--e-transform-skewY,0));transform-origin:var(--e-transform-origin-y) var(--e-transform-origin-x)}.e-con.e-transform{transform:perspective(var(--e-con-transform-perspective,0)) rotate(var(--e-con-transform-rotateZ,0)) rotateX(var(--e-con-transform-rotateX,0)) rotateY(var(--e-con-transform-rotateY,0)) translate(var(--e-con-transform-translate,0)) translateX(var(--e-con-transform-translateX,0)) translateY(var(--e-con-transform-translateY,0)) scaleX(calc(var(--e-con-transform-flipX, 1) * var(--e-con-transform-scaleX, var(--e-con-transform-scale, 1)))) scaleY(calc(var(--e-con-transform-flipY, 1) * var(--e-con-transform-scaleY, var(--e-con-transform-scale, 1)))) skewX(var(--e-con-transform-skewX,0)) skewY(var(--e-con-transform-skewY,0));transform-origin:var(--e-con-transform-origin-y) var(--e-con-transform-origin-x)}.elementor-element,.elementor-lightbox{--swiper-theme-color:#000;--swiper-navigation-size:44px;--swiper-pagination-bullet-size:6px;--swiper-pagination-bullet-horizontal-gap:6px}.elementor-element .swiper-container .swiper-slide figure,.elementor-element .swiper .swiper-slide figure,.elementor-lightbox .swiper-container .swiper-slide figure,.elementor-lightbox .swiper .swiper-slide figure{line-height:0}.elementor-element .swiper-container .elementor-lightbox-content-source,.elementor-element .swiper .elementor-lightbox-content-source,.elementor-lightbox .swiper-container .elementor-lightbox-content-source,.elementor-lightbox .swiper .elementor-lightbox-content-source{display:none}.elementor-element .swiper-container .elementor-swiper-button,.elementor-element .swiper-container~.elementor-swiper-button,.elementor-element .swiper .elementor-swiper-button,.elementor-element .swiper~.elementor-swiper-button,.elementor-lightbox .swiper-container .elementor-swiper-button,.elementor-lightbox .swiper-container~.elementor-swiper-button,.elementor-lightbox .swiper .elementor-swiper-button,.elementor-lightbox .swiper~.elementor-swiper-button{position:absolute;display:inline-flex;z-index:1;cursor:pointer;font-size:25px;color:hsla(0,0%,93.3%,.9);top:50%;transform:translateY(-50%)}.elementor-element .swiper-container .elementor-swiper-button svg,.elementor-element .swiper-container~.elementor-swiper-button svg,.elementor-element .swiper .elementor-swiper-button svg,.elementor-element .swiper~.elementor-swiper-button svg,.elementor-lightbox .swiper-container .elementor-swiper-button svg,.elementor-lightbox .swiper-container~.elementor-swiper-button svg,.elementor-lightbox .swiper .elementor-swiper-button svg,.elementor-lightbox .swiper~.elementor-swiper-button svg{fill:hsla(0,0%,93.3%,.9);height:1em;width:1em}.elementor-element .swiper-container .elementor-swiper-button-prev,.elementor-element .swiper-container~.elementor-swiper-button-prev,.elementor-element .swiper .elementor-swiper-button-prev,.elementor-element .swiper~.elementor-swiper-button-prev,.elementor-lightbox .swiper-container .elementor-swiper-button-prev,.elementor-lightbox .swiper-container~.elementor-swiper-button-prev,.elementor-lightbox .swiper .elementor-swiper-button-prev,.elementor-lightbox .swiper~.elementor-swiper-button-prev{left:10px}.elementor-element .swiper-container .elementor-swiper-button-next,.elementor-element .swiper-container~.elementor-swiper-button-next,.elementor-element .swiper .elementor-swiper-button-next,.elementor-element .swiper~.elementor-swiper-button-next,.elementor-lightbox .swiper-container .elementor-swiper-button-next,.elementor-lightbox .swiper-container~.elementor-swiper-button-next,.elementor-lightbox .swiper .elementor-swiper-button-next,.elementor-lightbox .swiper~.elementor-swiper-button-next{right:10px}.elementor-element .swiper-container .elementor-swiper-button.swiper-button-disabled,.elementor-element .swiper-container~.elementor-swiper-button.swiper-button-disabled,.elementor-element .swiper .elementor-swiper-button.swiper-button-disabled,.elementor-element .swiper~.elementor-swiper-button.swiper-button-disabled,.elementor-lightbox .swiper-container .elementor-swiper-button.swiper-button-disabled,.elementor-lightbox .swiper-container~.elementor-swiper-button.swiper-button-disabled,.elementor-lightbox .swiper .elementor-swiper-button.swiper-button-disabled,.elementor-lightbox .swiper~.elementor-swiper-button.swiper-button-disabled{opacity:.3}.elementor-element .swiper-container .swiper-image-stretch .swiper-slide .swiper-slide-image,.elementor-element .swiper .swiper-image-stretch .swiper-slide .swiper-slide-image,.elementor-lightbox .swiper-container .swiper-image-stretch .swiper-slide .swiper-slide-image,.elementor-lightbox .swiper .swiper-image-stretch .swiper-slide .swiper-slide-image{width:100%}.elementor-element .swiper-container .swiper-horizontal>.swiper-pagination-bullets,.elementor-element .swiper-container .swiper-pagination-bullets.swiper-pagination-horizontal,.elementor-element .swiper-container .swiper-pagination-custom,.elementor-element .swiper-container .swiper-pagination-fraction,.elementor-element .swiper-container~.swiper-pagination-bullets.swiper-pagination-horizontal,.elementor-element .swiper-container~.swiper-pagination-custom,.elementor-element .swiper-container~.swiper-pagination-fraction,.elementor-element .swiper .swiper-horizontal>.swiper-pagination-bullets,.elementor-element .swiper .swiper-pagination-bullets.swiper-pagination-horizontal,.elementor-element .swiper .swiper-pagination-custom,.elementor-element .swiper .swiper-pagination-fraction,.elementor-element .swiper~.swiper-pagination-bullets.swiper-pagination-horizontal,.elementor-element .swiper~.swiper-pagination-custom,.elementor-element .swiper~.swiper-pagination-fraction,.elementor-lightbox .swiper-container .swiper-horizontal>.swiper-pagination-bullets,.elementor-lightbox .swiper-container .swiper-pagination-bullets.swiper-pagination-horizontal,.elementor-lightbox .swiper-container .swiper-pagination-custom,.elementor-lightbox .swiper-container .swiper-pagination-fraction,.elementor-lightbox .swiper-container~.swiper-pagination-bullets.swiper-pagination-horizontal,.elementor-lightbox .swiper-container~.swiper-pagination-custom,.elementor-lightbox .swiper-container~.swiper-pagination-fraction,.elementor-lightbox .swiper .swiper-horizontal>.swiper-pagination-bullets,.elementor-lightbox .swiper .swiper-pagination-bullets.swiper-pagination-horizontal,.elementor-lightbox .swiper .swiper-pagination-custom,.elementor-lightbox .swiper .swiper-pagination-fraction,.elementor-lightbox .swiper~.swiper-pagination-bullets.swiper-pagination-horizontal,.elementor-lightbox .swiper~.swiper-pagination-custom,.elementor-lightbox .swiper~.swiper-pagination-fraction{bottom:5px}.elementor-element .swiper-container.swiper-cube .elementor-swiper-button,.elementor-element .swiper-container.swiper-cube~.elementor-swiper-button,.elementor-element .swiper.swiper-cube .elementor-swiper-button,.elementor-element .swiper.swiper-cube~.elementor-swiper-button,.elementor-lightbox .swiper-container.swiper-cube .elementor-swiper-button,.elementor-lightbox .swiper-container.swiper-cube~.elementor-swiper-button,.elementor-lightbox .swiper.swiper-cube .elementor-swiper-button,.elementor-lightbox .swiper.swiper-cube~.elementor-swiper-button{transform:translate3d(0,-50%,1px)}.elementor-element :where(.swiper-container-horizontal)~.swiper-pagination-bullets,.elementor-lightbox :where(.swiper-container-horizontal)~.swiper-pagination-bullets{bottom:5px;left:0;width:100%}.elementor-element :where(.swiper-container-horizontal)~.swiper-pagination-bullets .swiper-pagination-bullet,.elementor-lightbox :where(.swiper-container-horizontal)~.swiper-pagination-bullets .swiper-pagination-bullet{margin:0 var(--swiper-pagination-bullet-horizontal-gap,4px)}.elementor-element :where(.swiper-container-horizontal)~.swiper-pagination-progressbar,.elementor-lightbox :where(.swiper-container-horizontal)~.swiper-pagination-progressbar{width:100%;height:4px;left:0;top:0}.elementor-element.elementor-pagination-position-outside .swiper,.elementor-element.elementor-pagination-position-outside .swiper-container,.elementor-lightbox.elementor-pagination-position-outside .swiper,.elementor-lightbox.elementor-pagination-position-outside .swiper-container{padding-bottom:30px}.elementor-element.elementor-pagination-position-outside .swiper-container .elementor-swiper-button,.elementor-element.elementor-pagination-position-outside .swiper-container~.elementor-swiper-button,.elementor-element.elementor-pagination-position-outside .swiper .elementor-swiper-button,.elementor-element.elementor-pagination-position-outside .swiper~.elementor-swiper-button,.elementor-lightbox.elementor-pagination-position-outside .swiper-container .elementor-swiper-button,.elementor-lightbox.elementor-pagination-position-outside .swiper-container~.elementor-swiper-button,.elementor-lightbox.elementor-pagination-position-outside .swiper .elementor-swiper-button,.elementor-lightbox.elementor-pagination-position-outside .swiper~.elementor-swiper-button{top:calc(50% - 30px / 2)}.elementor-element .elementor-swiper,.elementor-lightbox .elementor-swiper{position:relative}.elementor-element .elementor-main-swiper,.elementor-lightbox .elementor-main-swiper{position:static}.elementor-element.elementor-arrows-position-outside .swiper,.elementor-element.elementor-arrows-position-outside .swiper-container,.elementor-lightbox.elementor-arrows-position-outside .swiper,.elementor-lightbox.elementor-arrows-position-outside .swiper-container{width:calc(100% - 60px)}.elementor-element.elementor-arrows-position-outside .swiper-container .elementor-swiper-button-prev,.elementor-element.elementor-arrows-position-outside .swiper-container~.elementor-swiper-button-prev,.elementor-element.elementor-arrows-position-outside .swiper .elementor-swiper-button-prev,.elementor-element.elementor-arrows-position-outside .swiper~.elementor-swiper-button-prev,.elementor-lightbox.elementor-arrows-position-outside .swiper-container .elementor-swiper-button-prev,.elementor-lightbox.elementor-arrows-position-outside .swiper-container~.elementor-swiper-button-prev,.elementor-lightbox.elementor-arrows-position-outside .swiper .elementor-swiper-button-prev,.elementor-lightbox.elementor-arrows-position-outside .swiper~.elementor-swiper-button-prev{left:0}.elementor-element.elementor-arrows-position-outside .swiper-container .elementor-swiper-button-next,.elementor-element.elementor-arrows-position-outside .swiper-container~.elementor-swiper-button-next,.elementor-element.elementor-arrows-position-outside .swiper .elementor-swiper-button-next,.elementor-element.elementor-arrows-position-outside .swiper~.elementor-swiper-button-next,.elementor-lightbox.elementor-arrows-position-outside .swiper-container .elementor-swiper-button-next,.elementor-lightbox.elementor-arrows-position-outside .swiper-container~.elementor-swiper-button-next,.elementor-lightbox.elementor-arrows-position-outside .swiper .elementor-swiper-button-next,.elementor-lightbox.elementor-arrows-position-outside .swiper~.elementor-swiper-button-next{right:0}.elementor-lightbox{--lightbox-ui-color:hsla(0,0%,93.3%,0.9);--lightbox-ui-color-hover:#fff;--lightbox-text-color:var(--lightbox-ui-color);--lightbox-header-icons-size:20px;--lightbox-navigation-icons-size:25px}.elementor-lightbox:not(.elementor-popup-modal) .dialog-header,.elementor-lightbox:not(.elementor-popup-modal) .dialog-message{text-align:center}.elementor-lightbox .dialog-header{display:none}.elementor-lightbox .dialog-widget-content{background:none;box-shadow:none;width:100%;height:100%}.elementor-lightbox .dialog-message{animation-duration:.3s;height:100%}.elementor-lightbox .dialog-message.dialog-lightbox-message{padding:0}.elementor-lightbox .dialog-lightbox-close-button{cursor:pointer;position:absolute;font-size:var(--lightbox-header-icons-size);right:.75em;margin-top:13px;padding:.25em;z-index:2;line-height:1;display:flex}.elementor-lightbox .dialog-lightbox-close-button svg{height:1em;width:1em}.elementor-lightbox .dialog-lightbox-close-button,.elementor-lightbox .elementor-swiper-button{color:var(--lightbox-ui-color);transition:all .3s;opacity:1}.elementor-lightbox .dialog-lightbox-close-button svg,.elementor-lightbox .elementor-swiper-button svg{fill:var(--lightbox-ui-color)}.elementor-lightbox .dialog-lightbox-close-button:hover,.elementor-lightbox .elementor-swiper-button:hover{color:var(--lightbox-ui-color-hover)}.elementor-lightbox .dialog-lightbox-close-button:hover svg,.elementor-lightbox .elementor-swiper-button:hover svg{fill:var(--lightbox-ui-color-hover)}.elementor-lightbox .swiper,.elementor-lightbox .swiper-container{height:100%}.elementor-lightbox .elementor-lightbox-item{display:flex;align-items:center;justify-content:center;position:relative;padding:70px;box-sizing:border-box;height:100%;margin:auto}@media (max-width:ELEMENTOR_SCREEN_MOBILE_MAX){.elementor-lightbox .elementor-lightbox-item{padding:70px 0}}.elementor-lightbox .elementor-lightbox-image{max-height:100%;-webkit-user-select:none;-moz-user-select:none;user-select:none}.elementor-lightbox .elementor-lightbox-image,.elementor-lightbox .elementor-lightbox-image:hover{opacity:1;filter:none;border:none}.elementor-lightbox .elementor-lightbox-image{box-shadow:0 0 30px rgba(0,0,0,.3),0 0 8px -5px rgba(0,0,0,.3);border-radius:2px}.elementor-lightbox .elementor-video-container{width:100%;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.elementor-lightbox .elementor-video-container .elementor-video-landscape,.elementor-lightbox .elementor-video-container .elementor-video-portrait,.elementor-lightbox .elementor-video-container .elementor-video-square{width:100%;height:100%;margin:auto}.elementor-lightbox .elementor-video-container .elementor-video-landscape iframe,.elementor-lightbox .elementor-video-container .elementor-video-portrait iframe,.elementor-lightbox .elementor-video-container .elementor-video-square iframe{border:0;background-color:#000}.elementor-lightbox .elementor-video-container .elementor-video-landscape iframe,.elementor-lightbox .elementor-video-container .elementor-video-landscape video,.elementor-lightbox .elementor-video-container .elementor-video-portrait iframe,.elementor-lightbox .elementor-video-container .elementor-video-portrait video,.elementor-lightbox .elementor-video-container .elementor-video-square iframe,.elementor-lightbox .elementor-video-container .elementor-video-square video{aspect-ratio:var(--video-aspect-ratio,1.77777)}@supports not (aspect-ratio:1/1){.elementor-lightbox .elementor-video-container .elementor-video-landscape,.elementor-lightbox .elementor-video-container .elementor-video-portrait,.elementor-lightbox .elementor-video-container .elementor-video-square{position:relative;overflow:hidden;height:0;padding-bottom:calc(100% / var(--video-aspect-ratio, 1.77777))}.elementor-lightbox .elementor-video-container .elementor-video-landscape iframe,.elementor-lightbox .elementor-video-container .elementor-video-landscape video,.elementor-lightbox .elementor-video-container .elementor-video-portrait iframe,.elementor-lightbox .elementor-video-container .elementor-video-portrait video,.elementor-lightbox .elementor-video-container .elementor-video-square iframe,.elementor-lightbox .elementor-video-container .elementor-video-square video{position:absolute;top:0;right:0;bottom:0;left:0}}.elementor-lightbox .elementor-video-container .elementor-video-square iframe,.elementor-lightbox .elementor-video-container .elementor-video-square video{width:min(90vh,90vw);height:min(90vh,90vw)}.elementor-lightbox .elementor-video-container .elementor-video-landscape iframe,.elementor-lightbox .elementor-video-container .elementor-video-landscape video{width:100%;max-height:90vh}.elementor-lightbox .elementor-video-container .elementor-video-portrait iframe,.elementor-lightbox .elementor-video-container .elementor-video-portrait video{height:100%;max-width:90vw}@media (min-width:ELEMENTOR_SCREEN_TABLET_NEXT){.elementor-lightbox .elementor-video-container .elementor-video-landscape{width:85vw;max-height:85vh}.elementor-lightbox .elementor-video-container .elementor-video-portrait{height:85vh;max-width:85vw}}@media (max-width:ELEMENTOR_SCREEN_TABLET_MAX){.elementor-lightbox .elementor-video-container .elementor-video-landscape{width:95vw;max-height:95vh}.elementor-lightbox .elementor-video-container .elementor-video-portrait{height:95vh;max-width:95vw}}.elementor-lightbox .swiper-container .elementor-swiper-button-prev,.elementor-lightbox .swiper .elementor-swiper-button-prev{left:0}.elementor-lightbox .swiper-container .elementor-swiper-button-next,.elementor-lightbox .swiper .elementor-swiper-button-next{right:0}.elementor-lightbox .swiper-container .swiper-pagination-fraction,.elementor-lightbox .swiper .swiper-pagination-fraction{width:-moz-max-content;width:max-content;color:#fff}.elementor-lightbox .elementor-swiper-button:focus{outline-width:1px}.elementor-lightbox .elementor-swiper-button-next,.elementor-lightbox .elementor-swiper-button-prev{height:100%;display:flex;align-items:center;width:15%;justify-content:center;font-size:var(--lightbox-navigation-icons-size)}@media (max-width:ELEMENTOR_SCREEN_MOBILE_MAX){.elementor-lightbox .elementor-swiper-button:focus{outline:none}.elementor-lightbox .elementor-swiper-button-next,.elementor-lightbox .elementor-swiper-button-prev{width:20%}.elementor-lightbox .elementor-swiper-button-next i,.elementor-lightbox .elementor-swiper-button-prev i{padding:10px;background-color:rgba(0,0,0,.5)}.elementor-lightbox .elementor-swiper-button-prev{left:0;justify-content:flex-start}.elementor-lightbox .elementor-swiper-button-next{right:0;justify-content:flex-end}}.elementor-slideshow__counter{color:currentColor;font-size:.75em;width:-moz-max-content;width:max-content}.elementor-slideshow__footer,.elementor-slideshow__header{position:absolute;left:0;width:100%;padding:15px 20px;transition:.3s}.elementor-slideshow__footer{color:var(--lightbox-text-color)}.elementor-slideshow__header{color:var(--lightbox-ui-color);display:flex;flex-direction:row-reverse;font-size:var(--lightbox-header-icons-size);padding-left:1em;padding-right:2.6em;top:0;align-items:center;z-index:10}.elementor-slideshow__header>i,.elementor-slideshow__header>svg{cursor:pointer;padding:.25em;margin:0 .35em}.elementor-slideshow__header>i{font-size:inherit}.elementor-slideshow__header>i:hover{color:var(--lightbox-ui-color-hover)}.elementor-slideshow__header>svg{box-sizing:content-box;fill:var(--lightbox-ui-color);height:1em;width:1em}.elementor-slideshow__header>svg:hover{fill:var(--lightbox-ui-color-hover)}.elementor-slideshow__header .elementor-slideshow__counter{margin-right:auto}.elementor-slideshow__header .elementor-icon-share{z-index:5}.elementor-slideshow__share-menu{background-color:transparent;width:0;height:0;position:absolute;overflow:hidden;transition:background-color .4s}.elementor-slideshow__share-menu .elementor-slideshow__share-links a{color:#0c0d0e}.elementor-slideshow__share-links{display:block;position:absolute;min-width:200px;right:2.8em;top:3em;background-color:#fff;border-radius:3px;padding:14px 20px;transform:scale(0);opacity:0;transform-origin:90% 10%;transition:all .25s .1s;box-shadow:0 4px 15px rgba(0,0,0,.3)}.elementor-slideshow__share-links a{text-align:left;color:#3f444b;font-size:12px;line-height:2.5;display:block;opacity:0;transition:opacity .5s .1s}.elementor-slideshow__share-links a:hover{color:#000}.elementor-slideshow__share-links a i,.elementor-slideshow__share-links a svg{margin-right:.75em}.elementor-slideshow__share-links a i{font-size:1.25em}.elementor-slideshow__share-links a svg{height:1.25em;width:1.25em}.elementor-slideshow__share-links:before{content:"";display:block;position:absolute;top:1px;right:.5em;border:.45em solid transparent;border-bottom-color:#fff;transform:translateY(-100%) scaleX(.7)}.elementor-slideshow__footer{bottom:0;z-index:5;position:fixed}.elementor-slideshow__description,.elementor-slideshow__title{margin:0}.elementor-slideshow__title{font-size:16px;font-weight:700}.elementor-slideshow__description{font-size:14px}.elementor-slideshow--ui-hidden .elementor-slideshow__footer,.elementor-slideshow--ui-hidden .elementor-slideshow__header{opacity:0;pointer-events:none}.elementor-slideshow--ui-hidden .elementor-swiper-button-next,.elementor-slideshow--ui-hidden .elementor-swiper-button-prev{opacity:0}.elementor-slideshow--fullscreen-mode .elementor-video-container{width:100%}.elementor-slideshow--zoom-mode .elementor-slideshow__footer,.elementor-slideshow--zoom-mode .elementor-slideshow__header{background-color:rgba(0,0,0,.5)}.elementor-slideshow--zoom-mode .elementor-swiper-button-next,.elementor-slideshow--zoom-mode .elementor-swiper-button-prev{opacity:0;pointer-events:none}.elementor-slideshow--share-mode .elementor-slideshow__share-menu{top:0;left:0;width:100vw;height:100vh;opacity:1;cursor:default;background-color:rgba(0,0,0,.5)}.elementor-slideshow--share-mode .elementor-slideshow__share-links{transform:scale(1)}.elementor-slideshow--share-mode .elementor-slideshow__share-links,.elementor-slideshow--share-mode .elementor-slideshow__share-links a{opacity:1}.elementor-slideshow--share-mode .elementor-slideshow__share-links .eicon-twitter{color:#1da1f2}.elementor-slideshow--share-mode .elementor-slideshow__share-links .eicon-facebook{color:#3b5998}.elementor-slideshow--share-mode .elementor-slideshow__share-links .eicon-pinterest{color:#bd081c}.elementor-slideshow--share-mode .elementor-slideshow__share-links .eicon-download-bold{color:#9da5ae}.elementor-slideshow--share-mode .elementor-slideshow__share-links .e-eicon-twitter{fill:#1da1f2}.elementor-slideshow--share-mode .elementor-slideshow__share-links .e-eicon-facebook{fill:#3b5998}.elementor-slideshow--share-mode .elementor-slideshow__share-links .e-eicon-pinterest{fill:#bd081c}.elementor-slideshow--share-mode .elementor-slideshow__share-links .e-eicon-download-bold{fill:#9da5ae}.elementor-slideshow--share-mode .eicon-share-arrow{z-index:2}.animated{animation-duration:1.25s}.animated.animated-slow{animation-duration:2s}.animated.animated-fast{animation-duration:.75s}.animated.infinite{animation-iteration-count:infinite}.animated.reverse{animation-direction:reverse;animation-fill-mode:forwards}@media (prefers-reduced-motion:reduce){.animated{animation:none}}.elementor-shape{overflow:hidden;position:absolute;left:0;width:100%;line-height:0;direction:ltr}.elementor-shape-top{top:-1px}.elementor-shape-top:not([data-negative=false]) svg{z-index:-1}.elementor-shape-bottom{bottom:-1px}.elementor-shape-bottom:not([data-negative=true]) svg{z-index:-1}.elementor-shape[data-negative=false].elementor-shape-bottom,.elementor-shape[data-negative=true].elementor-shape-top{transform:rotate(180deg)}.elementor-shape svg{display:block;width:calc(100% + 1.3px);position:relative;left:50%;transform:translateX(-50%)}.elementor-shape .elementor-shape-fill{fill:#fff;transform-origin:center;transform:rotateY(0deg)}#wp-admin-bar-elementor_edit_page>.ab-item:before{content:"\e813";font-family:eicons;top:3px;font-size:18px}#wp-admin-bar-elementor_edit_page .ab-submenu .ab-item{display:flex;width:200px}#wp-admin-bar-elementor_edit_page .elementor-edit-link-title{white-space:nowrap;text-overflow:ellipsis;overflow:hidden;width:100%}#wp-admin-bar-elementor_edit_page .elementor-edit-link-type{background:#3f444b;font-size:11px;line-height:9px;margin-top:6px;padding:4px 8px;border-radius:3px}#wp-admin-bar-elementor_inspector>.ab-item:before{content:"\f348";top:2px}#wpadminbar *{font-style:normal}.page-template-elementor_canvas.elementor-page:before{display:none}.elementor-post__thumbnail__link{transition:none}#left-area ul.elementor-icon-list-items,.elementor-edit-area .elementor-element ul.elementor-icon-list-items,.elementor .elementor-element ul.elementor-icon-list-items{padding:0}.e--ua-appleWebkit.rtl{--flex-right:flex-start}.e--ua-appleWebkit .elementor-share-buttons--align-right,.e--ua-appleWebkit .elementor-widget-social-icons.e-grid-align-right{--justify-content:var(--flex-right,flex-end)}.e--ua-appleWebkit .elementor-share-buttons--align-center,.e--ua-appleWebkit .elementor-widget-social-icons.e-grid-align-center{--justify-content:center}.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-center .elementor-grid,.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-justify .elementor-grid,.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-right .elementor-grid,.e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-center .elementor-grid,.e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-right .elementor-grid{width:auto;display:flex;flex-wrap:wrap;justify-content:var(--justify-content,space-between);margin-left:calc(-.5 * var(--grid-column-gap));margin-right:calc(-.5 * var(--grid-column-gap))}.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-center .elementor-grid-item,.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-justify .elementor-grid-item,.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-right .elementor-grid-item,.e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-center .elementor-grid-item,.e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-right .elementor-grid-item{margin-left:calc(.5 * var(--grid-column-gap));margin-right:calc(.5 * var(--grid-column-gap))}.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-left .elementor-grid,.e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-left .elementor-grid{display:inline-block}.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-left .elementor-grid,.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-left .elementor-grid-item,.e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-left .elementor-grid,.e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-left .elementor-grid-item{margin-left:0;margin-right:0}@media (max-width:ELEMENTOR_SCREEN_TABLET_MAX){.e--ua-appleWebkit .elementor-share-buttons-tablet--align-right,.e--ua-appleWebkit .elementor-widget-social-icons.e-grid-align-tablet-right{--justify-content:var(--flex-right,flex-end)}.e--ua-appleWebkit .elementor-share-buttons-tablet--align-center,.e--ua-appleWebkit .elementor-widget-social-icons.e-grid-align-tablet-center{--justify-content:center}.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-tablet-center .elementor-grid,.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-tablet-justify .elementor-grid,.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-tablet-right .elementor-grid,.e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-tablet-center .elementor-grid,.e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-tablet-right .elementor-grid{width:auto;display:flex;flex-wrap:wrap;justify-content:var(--justify-content,space-between);margin-left:calc(-.5 * var(--grid-column-gap));margin-right:calc(-.5 * var(--grid-column-gap))}.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-tablet-center .elementor-grid-item,.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-tablet-justify .elementor-grid-item,.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-tablet-right .elementor-grid-item,.e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-tablet-center .elementor-grid-item,.e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-tablet-right .elementor-grid-item{margin-left:calc(.5 * var(--grid-column-gap));margin-right:calc(.5 * var(--grid-column-gap))}.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons-tablet--align-left .elementor-grid,.e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-tablet-left .elementor-grid{display:inline-block}.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons-tablet--align-left .elementor-grid,.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons-tablet--align-left .elementor-grid-item,.e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-tablet-left .elementor-grid,.e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-tablet-left .elementor-grid-item{margin-left:0;margin-right:0}}@media (max-width:ELEMENTOR_SCREEN_MOBILE_MAX){.e--ua-appleWebkit .elementor-share-buttons-mobile--align-right,.e--ua-appleWebkit .elementor-widget-social-icons.e-grid-align-mobile-right{--justify-content:var(--flex-right,flex-end)}.e--ua-appleWebkit .elementor-share-buttons-mobile--align-center,.e--ua-appleWebkit .elementor-widget-social-icons.e-grid-align-mobile-center{--justify-content:center}.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-mobile-center .elementor-grid,.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-mobile-justify .elementor-grid,.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-mobile-right .elementor-grid,.e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-mobile-center .elementor-grid,.e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-mobile-right .elementor-grid{width:auto;display:flex;flex-wrap:wrap;justify-content:var(--justify-content,space-between);margin-left:calc(-.5 * var(--grid-column-gap));margin-right:calc(-.5 * var(--grid-column-gap))}.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-mobile-center .elementor-grid-item,.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-mobile-justify .elementor-grid-item,.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons--align-mobile-right .elementor-grid-item,.e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-mobile-center .elementor-grid-item,.e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-mobile-right .elementor-grid-item{margin-left:calc(.5 * var(--grid-column-gap));margin-right:calc(.5 * var(--grid-column-gap))}.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons-mobile--align-left .elementor-grid,.e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-mobile-left .elementor-grid{display:inline-block}.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons-mobile--align-left .elementor-grid,.e--ua-appleWebkit .elementor-grid-0.elementor-share-buttons-mobile--align-left .elementor-grid-item,.e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-mobile-left .elementor-grid,.e--ua-appleWebkit .elementor-grid-0.elementor-widget-social-icons.e-grid-align-mobile-left .elementor-grid-item{margin-left:0;margin-right:0}}@media (max-width:ELEMENTOR_SCREEN_MOBILE_MAX){.elementor .elementor-hidden-mobile,.elementor .elementor-hidden-phone{display:none}}@media (min-width:ELEMENTOR_SCREEN_MOBILE_EXTRA_MIN) and (max-width:ELEMENTOR_SCREEN_MOBILE_EXTRA_MAX){.elementor .elementor-hidden-mobile_extra{display:none}}@media (min-width:ELEMENTOR_SCREEN_TABLET_MIN) and (max-width:ELEMENTOR_SCREEN_TABLET_MAX){.elementor .elementor-hidden-tablet{display:none}}@media (min-width:ELEMENTOR_SCREEN_TABLET_EXTRA_MIN) and (max-width:ELEMENTOR_SCREEN_TABLET_EXTRA_MAX){.elementor .elementor-hidden-tablet_extra{display:none}}@media (min-width:ELEMENTOR_SCREEN_LAPTOP_MIN) and (max-width:ELEMENTOR_SCREEN_LAPTOP_MAX){.elementor .elementor-hidden-laptop{display:none}}@media (min-width:ELEMENTOR_SCREEN_DESKTOP_MIN) and (max-width:ELEMENTOR_SCREEN_DESKTOP_MAX){.elementor .elementor-hidden-desktop{display:none}}@media (min-width:ELEMENTOR_SCREEN_WIDESCREEN_MIN){.elementor .elementor-hidden-widescreen{display:none}}.elementor-widget-text-path{font-size:20px;text-align:var(--alignment,left)}.elementor-widget-text-path svg{width:var(--width);max-width:100%;height:auto;overflow:visible;word-spacing:var(--word-spacing);transform:rotate(var(--rotate,0)) scaleX(var(--scale-x,1)) scaleY(var(--scale-y,1))}.elementor-widget-text-path svg path{vector-effect:non-scaling-stroke;fill:var(--path-fill,transparent);stroke:var(--stroke-color,transparent);stroke-width:var(--stroke-width,1px);transition:var(--stroke-transition) stroke,var(--stroke-transition) fill}.elementor-widget-text-path svg:hover path{--path-fill:var(--path-fill-hover);--stroke-color:var(--stroke-color-hover);--stroke-width:var(--stroke-width-hover)}.elementor-widget-text-path svg text{--fill:var(--text-color);fill:var(--fill);direction:var(--direction,ltr);transition:var(--transition) stroke,var(--transition) stroke-width,var(--transition) fill}.elementor-widget-text-path svg text:hover{--color:var(--text-color-hover,var(--text-color));--fill:var(--color);color:var(--color)}.elementor-widget-n-tabs{--n-tabs-color-accent-fallback:#61ce70;--n-tabs-color-secondary-fallback:#54595f;--n-tabs-default-padding-block:15px;--n-tabs-default-padding-inline:35px;--n-tabs-background-color:transparent;--n-tabs-display:flex;--n-tabs-direction:column;--n-tabs-gap:10px;--n-tabs-heading-display:flex;--n-tabs-heading-direction:row;--n-tabs-heading-grow:initial;--n-tabs-heading-justify-content:center;--n-tabs-heading-width:initial;--n-tabs-heading-overflow-x:initial;--n-tabs-heading-wrap:nowrap;--n-tabs-border-width:1px;--n-tabs-border-color:#d5d8dc;--n-tabs-content-display:flex;--n-tabs-title-color:var(--e-global-color-secondary,var(--n-tabs-color-secondary-fallback));--n-tabs-title-color-hover:#fff;--n-tabs-title-color-active:#fff;--n-tabs-title-background-color:#f1f2f3;--n-tabs-title-background-color-hover:var(--e-global-color-accent,var(--n-tabs-color-accent-fallback));--n-tabs-title-background-color-active:var(--e-global-color-accent,var(--n-tabs-color-accent-fallback));--n-tabs-title-width:initial;--n-tabs-title-height:initial;--n-tabs-title-font-size:1rem;--n-tabs-title-white-space:initial;--n-tabs-title-justify-content-toggle:initial;--n-tabs-title-align-items-toggle:center;--n-tabs-title-justify-content:center;--n-tabs-title-align-items:center;--n-tabs-title-text-align:center;--n-tabs-title-direction:row;--n-tabs-title-gap:10px;--n-tabs-title-flex-grow:0;--n-tabs-title-flex-basis:content;--n-tabs-title-flex-shrink:initial;--n-tabs-title-order:initial;--n-tabs-title-padding-block-start:var(--n-tabs-default-padding-block);--n-tabs-title-padding-inline-end:var(--n-tabs-default-padding-inline);--n-tabs-title-padding-block-end:var(--n-tabs-default-padding-block);--n-tabs-title-padding-inline-start:var(--n-tabs-default-padding-inline);--n-tabs-title-border-radius:initial;--n-tabs-title-transition:0.3s;--n-tabs-icon-color:var(--e-global-color-secondary,var(--n-tabs-color-secondary-fallback));--n-tabs-icon-color-hover:var(--n-tabs-title-color-hover);--n-tabs-icon-color-active:#fff;--n-tabs-icon-gap:5px;width:100%;max-width:100%}.elementor-widget-n-tabs .e-n-tabs{display:var(--n-tabs-display);flex-direction:var(--n-tabs-direction);gap:var(--n-tabs-gap);text-align:start;min-width:0}.elementor-widget-n-tabs .e-n-tabs-heading{display:var(--n-tabs-heading-display);flex-basis:var(--n-tabs-heading-width);flex-direction:var(--n-tabs-heading-direction);flex-shrink:0;justify-content:var(--n-tabs-heading-justify-content);gap:var(--n-tabs-title-gap);overflow-x:var(--n-tabs-heading-overflow-x);flex-wrap:var(--n-tabs-heading-wrap);-ms-overflow-style:none;scrollbar-width:none}.elementor-widget-n-tabs .e-n-tabs-heading::-webkit-scrollbar{display:none}.elementor-widget-n-tabs .e-n-tabs-heading.e-scroll{cursor:grabbing;cursor:-webkit-grabbing}.elementor-widget-n-tabs .e-n-tabs-heading.e-scroll-active{position:relative}.elementor-widget-n-tabs .e-n-tabs-heading.e-scroll-active:before{content:"";position:absolute;inset-block:0;inset-inline:-1000vw;z-index:2}.elementor-widget-n-tabs .e-n-tabs-content{display:var(--n-tabs-content-display);flex-grow:1;min-width:0}.elementor-widget-n-tabs .e-n-tabs-content>.e-con:not(.e-active){display:none}.elementor-widget-n-tabs .e-n-tabs:not(.e-activated)>.e-n-tabs-content>.e-con:first-child{display:flex}.elementor-widget-n-tabs .e-n-tab-title{all:unset;-webkit-user-select:none;-moz-user-select:none;user-select:none;display:flex;align-items:var(--n-tabs-title-align-items-toggle,var(--n-tabs-title-align-items));flex-direction:var(--n-tabs-title-direction);justify-content:var(--n-tabs-title-justify-content-toggle,var(--n-tabs-title-justify-content));gap:var(--n-tabs-icon-gap);border-width:var(--n-tabs-border-width);position:relative;cursor:pointer;outline:none;flex-grow:var(--n-tabs-title-flex-grow);flex-basis:var(--n-tabs-title-flex-basis);flex-shrink:var(--n-tabs-title-flex-shrink);padding-block-start:var(--n-tabs-title-padding-block-start);padding-inline-end:var(--n-tabs-title-padding-inline-end);padding-block-end:var(--n-tabs-title-padding-block-end);padding-inline-start:var(--n-tabs-title-padding-inline-start);border-radius:var(--n-tabs-title-border-radius);height:var(--n-tabs-title-height);width:var(--n-tabs-title-width);white-space:var(--n-tabs-title-white-space);transition:background var(--n-tabs-title-transition),color var(--n-tabs-title-transition),border var(--n-tabs-title-transition),box-shadow var(--n-tabs-title-transition),text-shadow var(--n-tabs-title-transition),stroke var(--n-tabs-title-transition),stroke-width var(--n-tabs-title-transition),-webkit-text-stroke-width var(--n-tabs-title-transition),-webkit-text-stroke-color var(--n-tabs-title-transition),transform var(--n-tabs-title-transition)}.elementor-widget-n-tabs .e-n-tab-title:focus-visible{outline:5px auto -webkit-focus-ring-color}.elementor-widget-n-tabs .e-n-tab-title span i,.elementor-widget-n-tabs .e-n-tab-title span svg{transition:color var(--n-tabs-title-transition),fill var(--n-tabs-title-transition)}.elementor-widget-n-tabs .e-n-tab-title-text{display:flex;align-items:center;font-size:var(--n-tabs-title-font-size);text-align:var(--n-tabs-title-text-align)}.elementor-widget-n-tabs .e-n-tab-title .e-n-tab-icon{display:flex;align-items:center;flex-direction:column;flex-shrink:0;order:var(--n-tabs-icon-order);overflow:hidden}.elementor-widget-n-tabs .e-n-tab-title .e-n-tab-icon i{font-size:var(--n-tabs-icon-size,var(--n-tabs-title-font-size))}.elementor-widget-n-tabs .e-n-tab-title .e-n-tab-icon svg{width:var(--n-tabs-icon-size,var(--n-tabs-title-font-size));height:var(--n-tabs-icon-size,var(--n-tabs-title-font-size))}.elementor-widget-n-tabs .e-n-tab-title .e-n-tab-icon:empty{display:none}.elementor-widget-n-tabs .e-n-tab-title[aria-selected=false]{background-color:var(--n-tabs-title-background-color)}.elementor-widget-n-tabs .e-n-tab-title[aria-selected=false],.elementor-widget-n-tabs .e-n-tab-title[aria-selected=false] a{color:var(--n-tabs-title-color)}.elementor-widget-n-tabs .e-n-tab-title[aria-selected=false] .e-n-tab-icon i{color:var(--n-tabs-icon-color)}.elementor-widget-n-tabs .e-n-tab-title[aria-selected=false] .e-n-tab-icon svg{fill:var(--n-tabs-icon-color)}.elementor-widget-n-tabs .e-n-tab-title[aria-selected=false] .e-n-tab-icon i:last-child,.elementor-widget-n-tabs .e-n-tab-title[aria-selected=false] .e-n-tab-icon svg:last-child{transform:translateY(-100vh);height:0;opacity:0}.elementor-widget-n-tabs .e-n-tab-title[aria-selected=true],.elementor-widget-n-tabs .e-n-tab-title[aria-selected=true] a{color:var(--n-tabs-title-color-active)}.elementor-widget-n-tabs .e-n-tab-title[aria-selected=true] .e-n-tab-icon i{color:var(--n-tabs-icon-color-active)}.elementor-widget-n-tabs .e-n-tab-title[aria-selected=true] .e-n-tab-icon svg{fill:var(--n-tabs-icon-color-active)}.elementor-widget-n-tabs .e-n-tab-title[aria-selected=true] .e-n-tab-icon i:first-child,.elementor-widget-n-tabs .e-n-tab-title[aria-selected=true] .e-n-tab-icon svg:first-child{transform:translateY(-100vh);height:0;opacity:0}.elementor-widget-n-tabs .e-n-tab-title[aria-selected=true][class*=elementor-animation-]:active,.elementor-widget-n-tabs .e-n-tab-title[aria-selected=true][class*=elementor-animation-]:focus,.elementor-widget-n-tabs .e-n-tab-title[aria-selected=true][class*=elementor-animation-]:hover{transform:none;animation:initial}.elementor-widget-n-tabs [data-touch-mode=false] .e-n-tab-title[aria-selected=false]:hover,.elementor-widget-n-tabs [data-touch-mode=false] .e-n-tab-title[aria-selected=false]:hover a{color:var(--n-tabs-title-color-hover)}.elementor-widget-n-tabs [data-touch-mode=false] .e-n-tab-title[aria-selected=false]:hover .e-n-tab-icon i{color:var(--n-tabs-icon-color-hover)}.elementor-widget-n-tabs [data-touch-mode=false] .e-n-tab-title[aria-selected=false]:hover .e-n-tab-icon svg{fill:var(--n-tabs-icon-color-hover)}.elementor-widget-n-tabs [data-touch-mode=true] .e-n-tab-title[aria-selected=false]:hover,.elementor-widget-n-tabs [data-touch-mode=true] .e-n-tab-title[aria-selected=false]:hover a{color:var(--n-tabs-title-color-active)}.elementor-widget-n-tabs [data-touch-mode=true] .e-n-tab-title[aria-selected=false]:hover .e-n-tab-icon i{color:var(--n-tabs-icon-color-active)}.elementor-widget-n-tabs [data-touch-mode=true] .e-n-tab-title[aria-selected=false]:hover .e-n-tab-icon svg{fill:var(--n-tabs-icon-color-active)}.elementor-widget-n-tabs [data-touch-mode=true] .e-n-tab-title[aria-selected=false]:hover .e-n-tab-icon i:first-child,.elementor-widget-n-tabs [data-touch-mode=true] .e-n-tab-title[aria-selected=false]:hover .e-n-tab-icon svg:first-child{transform:translateY(-100vh);height:0;opacity:0}.elementor-widget-n-tabs [data-touch-mode=true] .e-n-tab-title[aria-selected=false]:hover[class*=elementor-animation-]:active,.elementor-widget-n-tabs [data-touch-mode=true] .e-n-tab-title[aria-selected=false]:hover[class*=elementor-animation-]:focus,.elementor-widget-n-tabs [data-touch-mode=true] .e-n-tab-title[aria-selected=false]:hover[class*=elementor-animation-]:hover{transform:none;animation:initial}.elementor-widget-n-tabs [data-touch-mode=true] .e-n-tab-title[aria-selected=false]:hover .e-n-tab-icon i:last-child,.elementor-widget-n-tabs [data-touch-mode=true] .e-n-tab-title[aria-selected=false]:hover .e-n-tab-icon svg:last-child{transform:none;height:auto;opacity:1}.elementor .elementor-element.elementor-widget-n-tabs>.elementor-widget-container>.e-n-tabs[data-touch-mode=false]>.e-n-tabs-heading .e-n-tab-title[aria-selected=false]:hover{background-color:var(--n-tabs-title-background-color-hover);background-image:none}.elementor .elementor-element.elementor-widget-n-tabs>.elementor-widget-container>.e-n-tabs>.e-n-tabs-heading .e-n-tab-title[aria-selected=true],.elementor .elementor-element.elementor-widget-n-tabs>.elementor-widget-container>.e-n-tabs[data-touch-mode=true]>.e-n-tabs-heading .e-n-tab-title[aria-selected=false]:hover{background-color:var(--n-tabs-title-background-color-active);background-image:none}@media (max-width:ELEMENTOR_SCREEN_MOBILE_MAX){.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-mobile{--n-tabs-direction:column;--n-tabs-heading-display:contents;--n-tabs-content-display:contents}.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-mobile .e-n-tabs{gap:0}.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-mobile .e-n-tabs-content>.e-con{order:var(--n-tabs-title-order)}.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-mobile .e-n-tab-title{order:var(--n-tabs-title-order);width:auto}.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-mobile .e-n-tab-title:not(:first-child){margin-block-start:var(--n-tabs-title-gap)}.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-mobile .e-n-tab-title[aria-selected=true]{margin-block-end:var(--n-tabs-gap)}}@media (max-width:ELEMENTOR_SCREEN_MOBILE_EXTRA_MAX){.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-mobile_extra{--n-tabs-direction:column;--n-tabs-heading-display:contents;--n-tabs-content-display:contents}.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-mobile_extra .e-n-tabs{gap:0}.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-mobile_extra .e-n-tabs-content>.e-con{order:var(--n-tabs-title-order)}.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-mobile_extra .e-n-tab-title{order:var(--n-tabs-title-order);width:auto}.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-mobile_extra .e-n-tab-title:not(:first-child){margin-block-start:var(--n-tabs-title-gap)}.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-mobile_extra .e-n-tab-title[aria-selected=true]{margin-block-end:var(--n-tabs-gap)}}@media (max-width:ELEMENTOR_SCREEN_TABLET_MAX){.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-tablet{--n-tabs-direction:column;--n-tabs-heading-display:contents;--n-tabs-content-display:contents}.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-tablet .e-n-tabs{gap:0}.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-tablet .e-n-tabs-content>.e-con{order:var(--n-tabs-title-order)}.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-tablet .e-n-tab-title{order:var(--n-tabs-title-order);width:auto}.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-tablet .e-n-tab-title:not(:first-child){margin-block-start:var(--n-tabs-title-gap)}.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-tablet .e-n-tab-title[aria-selected=true]{margin-block-end:var(--n-tabs-gap)}}@media (max-width:ELEMENTOR_SCREEN_TABLET_EXTRA_MAX){.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-tablet_extra{--n-tabs-direction:column;--n-tabs-heading-display:contents;--n-tabs-content-display:contents}.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-tablet_extra .e-n-tabs{gap:0}.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-tablet_extra .e-n-tabs-content>.e-con{order:var(--n-tabs-title-order)}.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-tablet_extra .e-n-tab-title{order:var(--n-tabs-title-order);width:auto}.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-tablet_extra .e-n-tab-title:not(:first-child){margin-block-start:var(--n-tabs-title-gap)}.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-tablet_extra .e-n-tab-title[aria-selected=true]{margin-block-end:var(--n-tabs-gap)}}@media (max-width:ELEMENTOR_SCREEN_LAPTOP_MAX){.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-laptop{--n-tabs-direction:column;--n-tabs-heading-display:contents;--n-tabs-content-display:contents}.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-laptop .e-n-tabs{gap:0}.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-laptop .e-n-tabs-content>.e-con{order:var(--n-tabs-title-order)}.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-laptop .e-n-tab-title{order:var(--n-tabs-title-order);width:auto}.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-laptop .e-n-tab-title:not(:first-child){margin-block-start:var(--n-tabs-title-gap)}.elementor.elementor .elementor-widget-n-tabs.e-n-tabs-laptop .e-n-tab-title[aria-selected=true]{margin-block-end:var(--n-tabs-gap)}}.elementor-widget-n-accordion{--n-accordion-title-font-size:20px;--n-accordion-title-flex-grow:initial;--n-accordion-title-justify-content:initial;--n-accordion-title-icon-order:-1;--n-accordion-border-width:1px;--n-accordion-border-color:#d5d8dc;--n-accordion-border-style:solid;--n-accordion-item-title-flex-grow:initial;--n-accordion-item-title-space-between:0px;--n-accordion-item-title-distance-from-content:0px;--n-accordion-padding:10px;--n-accordion-border-radius:0px;--n-accordion-icon-size:15px;--n-accordion-title-normal-color:#1f2124;--n-accordion-title-hover-color:#1f2124;--n-accordion-title-active-color:#1f2124;--n-accordion-icon-normal-color:var(--n-accordion-title-normal-color);--n-accordion-icon-hover-color:var(--n-accordion-title-hover-color);--n-accordion-icon-active-color:var(--n-accordion-title-active-color);--n-accordion-icon-gap:0 10px;width:100%}.elementor-widget-n-accordion .e-n-accordion details>summary::-webkit-details-marker{display:none}.elementor-widget-n-accordion .e-n-accordion-item{display:flex;flex-direction:column;position:relative}.elementor-widget-n-accordion .e-n-accordion-item:not(:last-child){margin-block-end:var(--n-accordion-item-title-space-between)}.elementor-widget-n-accordion .e-n-accordion-item-title,:where(.elementor-widget-n-accordion .e-n-accordion-item>.e-con){border:var(--n-accordion-border-width) var(--n-accordion-border-style) var(--n-accordion-border-color)}.elementor-widget-n-accordion .e-n-accordion-item-title{display:flex;flex-direction:row;list-style:none;padding:var(--n-accordion-padding);justify-content:var(--n-accordion-title-justify-content);border-radius:var(--n-accordion-border-radius);flex-grow:var(--n-menu-title-flex-grow);gap:var(--n-accordion-icon-gap);color:var(--n-accordion-title-normal-color);align-items:center;cursor:pointer}.elementor-widget-n-accordion .e-n-accordion-item-title-header{display:flex}.elementor-widget-n-accordion .e-n-accordion-item-title-header h1,.elementor-widget-n-accordion .e-n-accordion-item-title-header h2,.elementor-widget-n-accordion .e-n-accordion-item-title-header h3,.elementor-widget-n-accordion .e-n-accordion-item-title-header h4,.elementor-widget-n-accordion .e-n-accordion-item-title-header h5,.elementor-widget-n-accordion .e-n-accordion-item-title-header h6,.elementor-widget-n-accordion .e-n-accordion-item-title-header p{margin-block-start:0;margin-block-end:0}.elementor-widget-n-accordion .e-n-accordion-item-title-text{font-size:var(--n-accordion-title-font-size);align-items:center}.elementor-widget-n-accordion .e-n-accordion-item-title-icon{display:flex;flex-direction:row;align-items:center;order:var(--n-accordion-title-icon-order);position:relative;width:-moz-fit-content;width:fit-content}.elementor-widget-n-accordion .e-n-accordion-item-title-icon span{height:var(--n-accordion-icon-size);width:auto}.elementor-widget-n-accordion .e-n-accordion-item-title-icon span>i{color:var(--n-accordion-icon-normal-color);font-size:var(--n-accordion-icon-size)}.elementor-widget-n-accordion .e-n-accordion-item-title-icon span>svg{fill:var(--n-accordion-icon-normal-color);height:var(--n-accordion-icon-size)}.elementor-widget-n-accordion .e-n-accordion-item-title>span{cursor:pointer}.elementor-widget-n-accordion .e-n-accordion-item[open] .e-n-accordion-item-title{margin-block-end:var(--n-accordion-item-title-distance-from-content);color:var(--n-accordion-title-active-color)}.elementor-widget-n-accordion .e-n-accordion-item[open] .e-n-accordion-item-title-icon .e-opened{display:flex}.elementor-widget-n-accordion .e-n-accordion-item[open] .e-n-accordion-item-title-icon .e-closed{display:none}.elementor-widget-n-accordion .e-n-accordion-item[open] .e-n-accordion-item-title-icon span>i{color:var(--n-accordion-icon-active-color)}.elementor-widget-n-accordion .e-n-accordion-item[open] .e-n-accordion-item-title-icon span>svg{fill:var(--n-accordion-icon-active-color)}.elementor-widget-n-accordion .e-n-accordion-item:not([open]):hover .e-n-accordion-item-title{color:var(--n-accordion-title-hover-color)}.elementor-widget-n-accordion .e-n-accordion-item:not([open]):hover .e-n-accordion-item-title-icon span>i{color:var(--n-accordion-icon-hover-color)}.elementor-widget-n-accordion .e-n-accordion-item:not([open]):hover .e-n-accordion-item-title-icon span>svg{fill:var(--n-accordion-icon-hover-color)}.elementor-widget-n-accordion .e-n-accordion-item .e-n-accordion-item-title-icon .e-opened{display:none}.elementor-widget-n-accordion .e-n-accordion-item .e-n-accordion-item-title-icon .e-closed{display:flex}.elementor-widget-n-accordion .e-n-accordion-item .e-n-accordion-item-title-icon span>svg{fill:var(--n-accordion-icon-normal-color)}.elementor-widget-n-accordion .e-n-accordion-item .e-n-accordion-item-title-icon span>i{color:var(--n-accordion-icon-normal-color)}.elementor-widget-n-accordion .e-n-accordion-item>span{cursor:pointer}.elementor-accordion{text-align:left}.elementor-accordion .elementor-accordion-item{border:1px solid #d5d8dc}.elementor-accordion .elementor-accordion-item+.elementor-accordion-item{border-top:none}.elementor-accordion .elementor-tab-title{margin:0;padding:15px 20px;font-weight:700;line-height:1;cursor:pointer;outline:none}.elementor-accordion .elementor-tab-title .elementor-accordion-icon{display:inline-block;width:1.5em}.elementor-accordion .elementor-tab-title .elementor-accordion-icon svg{width:1em;height:1em}.elementor-accordion .elementor-tab-title .elementor-accordion-icon.elementor-accordion-icon-right{float:right;text-align:right}.elementor-accordion .elementor-tab-title .elementor-accordion-icon.elementor-accordion-icon-left{float:left;text-align:left}.elementor-accordion .elementor-tab-title .elementor-accordion-icon .elementor-accordion-icon-closed{display:block}.elementor-accordion .elementor-tab-title .elementor-accordion-icon .elementor-accordion-icon-opened,.elementor-accordion .elementor-tab-title.elementor-active .elementor-accordion-icon-closed{display:none}.elementor-accordion .elementor-tab-title.elementor-active .elementor-accordion-icon-opened{display:block}.elementor-accordion .elementor-tab-content{display:none;padding:15px 20px;border-top:1px solid #d5d8dc}@media (max-width:ELEMENTOR_SCREEN_MOBILE_MAX){.elementor-accordion .elementor-tab-title{padding:12px 15px}.elementor-accordion .elementor-tab-title .elementor-accordion-icon{width:1.2em}.elementor-accordion .elementor-tab-content{padding:7px 15px}}.e-con-inner>.elementor-widget-accordion,.e-con>.elementor-widget-accordion{width:var(--container-widget-width);--flex-grow:var(--container-widget-flex-grow)}.elementor-alert{padding:15px;border-left:5px solid transparent;position:relative;text-align:left}.elementor-alert .elementor-alert-title{display:block;font-weight:700}.elementor-alert .elementor-alert-description{font-size:13px}.elementor-alert button.elementor-alert-dismiss{position:absolute;right:var(--dismiss-icon-horizontal-position,10px);top:var(--dismiss-icon-vertical-position,10px);padding:3px;font-size:var(--dismiss-icon-size,20px);line-height:1;background:transparent;color:var(--dismiss-icon-normal-color,inherit);border:none;cursor:pointer;transition-duration:var(--dismiss-icon-hover-transition-duration,.3s)}.elementor-alert button.elementor-alert-dismiss:hover{color:var(--dismiss-icon-hover-color,inherit)}.elementor-alert button.elementor-alert-dismiss svg{width:var(--dismiss-icon-size,20px);height:var(--dismiss-icon-size,20px);fill:var(--dismiss-icon-normal-color,currentColor);transition-duration:var(--dismiss-icon-hover-transition-duration,.3s)}.elementor-alert button.elementor-alert-dismiss svg:hover{fill:var(--dismiss-icon-hover-color,currentColor)}.elementor-alert.elementor-alert-info{color:#31708f;background-color:#d9edf7;border-color:#bcdff1}.elementor-alert.elementor-alert-success{color:#3c763d;background-color:#dff0d8;border-color:#cae6be}.elementor-alert.elementor-alert-warning{color:#8a6d3b;background-color:#fcf8e3;border-color:#f9f0c3}.elementor-alert.elementor-alert-danger{color:#a94442;background-color:#f2dede;border-color:#e8c4c4}@media (max-width:ELEMENTOR_SCREEN_MOBILE_MAX){.elementor-alert{padding:10px}.elementor-alert button.elementor-alert-dismiss{right:7px;top:7px}}.elementor-counter .elementor-counter-number-wrapper{display:flex;font-size:69px;font-weight:600;line-height:1}.elementor-counter .elementor-counter-number-prefix,.elementor-counter .elementor-counter-number-suffix{flex-grow:1;white-space:pre-wrap}.elementor-counter .elementor-counter-number-prefix{text-align:right}.elementor-counter .elementor-counter-number-suffix{text-align:left}.elementor-counter .elementor-counter-title{text-align:center;font-size:19px;font-weight:400;line-height:2.5}.elementor-widget-divider{--divider-border-style:none;--divider-border-width:1px;--divider-color:#0c0d0e;--divider-icon-size:20px;--divider-element-spacing:10px;--divider-pattern-height:24px;--divider-pattern-size:20px;--divider-pattern-url:none;--divider-pattern-repeat:repeat-x}.elementor-widget-divider .elementor-divider{display:flex}.elementor-widget-divider .elementor-divider__text{font-size:15px;line-height:1;max-width:95%}.elementor-widget-divider .elementor-divider__element{margin:0 var(--divider-element-spacing);flex-shrink:0}.elementor-widget-divider .elementor-icon{font-size:var(--divider-icon-size)}.elementor-widget-divider .elementor-divider-separator{display:flex;margin:0;direction:ltr}.elementor-widget-divider--view-line_icon .elementor-divider-separator,.elementor-widget-divider--view-line_text .elementor-divider-separator{align-items:center}.elementor-widget-divider--view-line_icon .elementor-divider-separator:after,.elementor-widget-divider--view-line_icon .elementor-divider-separator:before,.elementor-widget-divider--view-line_text .elementor-divider-separator:after,.elementor-widget-divider--view-line_text .elementor-divider-separator:before{display:block;content:"";border-block-end:0;flex-grow:1;border-block-start:var(--divider-border-width) var(--divider-border-style) var(--divider-color)}.elementor-widget-divider--element-align-left .elementor-divider .elementor-divider-separator>.elementor-divider__svg:first-of-type{flex-grow:0;flex-shrink:100}.elementor-widget-divider--element-align-left .elementor-divider-separator:before{content:none}.elementor-widget-divider--element-align-left .elementor-divider__element{margin-left:0}.elementor-widget-divider--element-align-right .elementor-divider .elementor-divider-separator>.elementor-divider__svg:last-of-type{flex-grow:0;flex-shrink:100}.elementor-widget-divider--element-align-right .elementor-divider-separator:after{content:none}.elementor-widget-divider--element-align-right .elementor-divider__element{margin-right:0}.elementor-widget-divider--element-align-start .elementor-divider .elementor-divider-separator>.elementor-divider__svg:first-of-type{flex-grow:0;flex-shrink:100}.elementor-widget-divider--element-align-start .elementor-divider-separator:before{content:none}.elementor-widget-divider--element-align-start .elementor-divider__element{margin-inline-start:0}.elementor-widget-divider--element-align-end .elementor-divider .elementor-divider-separator>.elementor-divider__svg:last-of-type{flex-grow:0;flex-shrink:100}.elementor-widget-divider--element-align-end .elementor-divider-separator:after{content:none}.elementor-widget-divider--element-align-end .elementor-divider__element{margin-inline-end:0}.elementor-widget-divider:not(.elementor-widget-divider--view-line_text):not(.elementor-widget-divider--view-line_icon) .elementor-divider-separator{border-block-start:var(--divider-border-width) var(--divider-border-style) var(--divider-color)}.elementor-widget-divider--separator-type-pattern{--divider-border-style:none}.elementor-widget-divider--separator-type-pattern.elementor-widget-divider--view-line .elementor-divider-separator,.elementor-widget-divider--separator-type-pattern:not(.elementor-widget-divider--view-line) .elementor-divider-separator:after,.elementor-widget-divider--separator-type-pattern:not(.elementor-widget-divider--view-line) .elementor-divider-separator:before,.elementor-widget-divider--separator-type-pattern:not([class*=elementor-widget-divider--view]) .elementor-divider-separator{width:100%;min-height:var(--divider-pattern-height);-webkit-mask-size:var(--divider-pattern-size) 100%;mask-size:var(--divider-pattern-size) 100%;-webkit-mask-repeat:var(--divider-pattern-repeat);mask-repeat:var(--divider-pattern-repeat);background-color:var(--divider-color);-webkit-mask-image:var(--divider-pattern-url);mask-image:var(--divider-pattern-url)}.elementor-widget-divider--no-spacing{--divider-pattern-size:auto}.elementor-widget-divider--bg-round{--divider-pattern-repeat:round}.rtl .elementor-widget-divider .elementor-divider__text{direction:rtl}.e-con-inner>.elementor-widget-divider,.e-con>.elementor-widget-divider{width:var(--container-widget-width,100%);--flex-grow:var(--container-widget-flex-grow)}.elementor-image-gallery .gallery-item{display:inline-block;text-align:center;vertical-align:top;width:100%;max-width:100%;margin:0 auto}.elementor-image-gallery .gallery-item img{margin:0 auto}.elementor-image-gallery .gallery-item .gallery-caption{margin:0}.elementor-image-gallery figure img{display:block}.elementor-image-gallery figure figcaption{width:100%}.gallery-spacing-custom .elementor-image-gallery .gallery-icon{padding:0}@media (min-width:ELEMENTOR_SCREEN_MOBILE_NEXT){.elementor-image-gallery .gallery-columns-2 .gallery-item{max-width:50%}.elementor-image-gallery .gallery-columns-3 .gallery-item{max-width:33.33%}.elementor-image-gallery .gallery-columns-4 .gallery-item{max-width:25%}.elementor-image-gallery .gallery-columns-5 .gallery-item{max-width:20%}.elementor-image-gallery .gallery-columns-6 .gallery-item{max-width:16.666%}.elementor-image-gallery .gallery-columns-7 .gallery-item{max-width:14.28%}.elementor-image-gallery .gallery-columns-8 .gallery-item{max-width:12.5%}.elementor-image-gallery .gallery-columns-9 .gallery-item{max-width:11.11%}.elementor-image-gallery .gallery-columns-10 .gallery-item{max-width:10%}}@media (min-width:480px) and (max-width:ELEMENTOR_SCREEN_MOBILE_MAX){.elementor-image-gallery .gallery.gallery-columns-2 .gallery-item,.elementor-image-gallery .gallery.gallery-columns-3 .gallery-item,.elementor-image-gallery .gallery.gallery-columns-4 .gallery-item,.elementor-image-gallery .gallery.gallery-columns-5 .gallery-item,.elementor-image-gallery .gallery.gallery-columns-6 .gallery-item,.elementor-image-gallery .gallery.gallery-columns-7 .gallery-item,.elementor-image-gallery .gallery.gallery-columns-8 .gallery-item,.elementor-image-gallery .gallery.gallery-columns-9 .gallery-item,.elementor-image-gallery .gallery.gallery-columns-10 .gallery-item{max-width:50%}}@media (max-width:479px){.elementor-image-gallery .gallery.gallery-columns-2 .gallery-item,.elementor-image-gallery .gallery.gallery-columns-3 .gallery-item,.elementor-image-gallery .gallery.gallery-columns-4 .gallery-item,.elementor-image-gallery .gallery.gallery-columns-5 .gallery-item,.elementor-image-gallery .gallery.gallery-columns-6 .gallery-item,.elementor-image-gallery .gallery.gallery-columns-7 .gallery-item,.elementor-image-gallery .gallery.gallery-columns-8 .gallery-item,.elementor-image-gallery .gallery.gallery-columns-9 .gallery-item,.elementor-image-gallery .gallery.gallery-columns-10 .gallery-item{max-width:100%}}.elementor-widget-google_maps .elementor-widget-container{overflow:hidden}.elementor-widget-google_maps .elementor-custom-embed{line-height:0}.elementor-widget-google_maps iframe{height:300px}.elementor-heading-title{padding:0;margin:0;line-height:1}.elementor-widget-heading .elementor-heading-title[class*=elementor-size-]>a{color:inherit;font-size:inherit;line-height:inherit}.elementor-widget-heading .elementor-heading-title.elementor-size-small{font-size:15px}.elementor-widget-heading .elementor-heading-title.elementor-size-medium{font-size:19px}.elementor-widget-heading .elementor-heading-title.elementor-size-large{font-size:29px}.elementor-widget-heading .elementor-heading-title.elementor-size-xl{font-size:39px}.elementor-widget-heading .elementor-heading-title.elementor-size-xxl{font-size:59px}.elementor-widget-icon-box .elementor-icon-box-wrapper{display:block;text-align:center}.elementor-widget-icon-box .elementor-icon-box-icon{margin-bottom:var(--icon-box-icon-margin,15px);margin-right:auto;margin-left:auto}@media (min-width:ELEMENTOR_SCREEN_MOBILE_NEXT){.elementor-widget-icon-box.elementor-vertical-align-top .elementor-icon-box-wrapper{align-items:flex-start}.elementor-widget-icon-box.elementor-vertical-align-middle .elementor-icon-box-wrapper{align-items:center}.elementor-widget-icon-box.elementor-vertical-align-bottom .elementor-icon-box-wrapper{align-items:flex-end}}.elementor-widget-icon-box.elementor-position-left .elementor-icon-box-wrapper,.elementor-widget-icon-box.elementor-position-right .elementor-icon-box-wrapper{display:flex}.elementor-widget-icon-box.elementor-position-left .elementor-icon-box-icon,.elementor-widget-icon-box.elementor-position-right .elementor-icon-box-icon{display:inline-flex;flex:0 0 auto}.elementor-widget-icon-box.elementor-position-right .elementor-icon-box-wrapper{text-align:right;flex-direction:row-reverse}.elementor-widget-icon-box.elementor-position-right .elementor-icon-box-icon{margin-left:var(--icon-box-icon-margin,15px);margin-right:0;margin-bottom:unset}.elementor-widget-icon-box.elementor-position-left .elementor-icon-box-wrapper{text-align:left;flex-direction:row}.elementor-widget-icon-box.elementor-position-left .elementor-icon-box-icon{margin-right:var(--icon-box-icon-margin,15px);margin-left:0;margin-bottom:unset}.elementor-widget-icon-box.elementor-position-top .elementor-icon-box-wrapper{display:block;text-align:center;flex-direction:unset}.elementor-widget-icon-box.elementor-position-top .elementor-icon-box-icon{margin-bottom:var(--icon-box-icon-margin,15px);margin-right:auto;margin-left:auto}@media (min-width:ELEMENTOR_SCREEN_WIDESCREEN_MIN){.elementor-widget-icon-box.elementor-widescreen-position-left .elementor-icon-box-wrapper,.elementor-widget-icon-box.elementor-widescreen-position-right .elementor-icon-box-wrapper{display:flex}.elementor-widget-icon-box.elementor-widescreen-position-left .elementor-icon-box-icon,.elementor-widget-icon-box.elementor-widescreen-position-right .elementor-icon-box-icon{display:inline-flex;flex:0 0 auto}.elementor-widget-icon-box.elementor-widescreen-position-right .elementor-icon-box-wrapper{text-align:right;flex-direction:row-reverse}.elementor-widget-icon-box.elementor-widescreen-position-right .elementor-icon-box-icon{margin-left:var(--icon-box-icon-margin,15px);margin-right:0;margin-bottom:unset}.elementor-widget-icon-box.elementor-widescreen-position-left .elementor-icon-box-wrapper{text-align:left;flex-direction:row}.elementor-widget-icon-box.elementor-widescreen-position-left .elementor-icon-box-icon{margin-right:var(--icon-box-icon-margin,15px);margin-left:0;margin-bottom:unset}.elementor-widget-icon-box.elementor-widescreen-position-top .elementor-icon-box-wrapper{display:block;text-align:center;flex-direction:unset}.elementor-widget-icon-box.elementor-widescreen-position-top .elementor-icon-box-icon{margin-bottom:var(--icon-box-icon-margin,15px);margin-right:auto;margin-left:auto}}@media (max-width:ELEMENTOR_SCREEN_LAPTOP_MAX){.elementor-widget-icon-box.elementor-laptop-position-left .elementor-icon-box-wrapper,.elementor-widget-icon-box.elementor-laptop-position-right .elementor-icon-box-wrapper{display:flex}.elementor-widget-icon-box.elementor-laptop-position-left .elementor-icon-box-icon,.elementor-widget-icon-box.elementor-laptop-position-right .elementor-icon-box-icon{display:inline-flex;flex:0 0 auto}.elementor-widget-icon-box.elementor-laptop-position-right .elementor-icon-box-wrapper{text-align:right;flex-direction:row-reverse}.elementor-widget-icon-box.elementor-laptop-position-right .elementor-icon-box-icon{margin-left:var(--icon-box-icon-margin,15px);margin-right:0;margin-bottom:unset}.elementor-widget-icon-box.elementor-laptop-position-left .elementor-icon-box-wrapper{text-align:left;flex-direction:row}.elementor-widget-icon-box.elementor-laptop-position-left .elementor-icon-box-icon{margin-right:var(--icon-box-icon-margin,15px);margin-left:0;margin-bottom:unset}.elementor-widget-icon-box.elementor-laptop-position-top .elementor-icon-box-wrapper{display:block;text-align:center;flex-direction:unset}.elementor-widget-icon-box.elementor-laptop-position-top .elementor-icon-box-icon{margin-bottom:var(--icon-box-icon-margin,15px);margin-right:auto;margin-left:auto}}@media (max-width:ELEMENTOR_SCREEN_TABLET_EXTRA_MAX){.elementor-widget-icon-box.elementor-tablet_extra-position-left .elementor-icon-box-wrapper,.elementor-widget-icon-box.elementor-tablet_extra-position-right .elementor-icon-box-wrapper{display:flex}.elementor-widget-icon-box.elementor-tablet_extra-position-left .elementor-icon-box-icon,.elementor-widget-icon-box.elementor-tablet_extra-position-right .elementor-icon-box-icon{display:inline-flex;flex:0 0 auto}.elementor-widget-icon-box.elementor-tablet_extra-position-right .elementor-icon-box-wrapper{text-align:right;flex-direction:row-reverse}.elementor-widget-icon-box.elementor-tablet_extra-position-right .elementor-icon-box-icon{margin-left:var(--icon-box-icon-margin,15px);margin-right:0;margin-bottom:unset}.elementor-widget-icon-box.elementor-tablet_extra-position-left .elementor-icon-box-wrapper{text-align:left;flex-direction:row}.elementor-widget-icon-box.elementor-tablet_extra-position-left .elementor-icon-box-icon{margin-right:var(--icon-box-icon-margin,15px);margin-left:0;margin-bottom:unset}.elementor-widget-icon-box.elementor-tablet_extra-position-top .elementor-icon-box-wrapper{display:block;text-align:center;flex-direction:unset}.elementor-widget-icon-box.elementor-tablet_extra-position-top .elementor-icon-box-icon{margin-bottom:var(--icon-box-icon-margin,15px);margin-right:auto;margin-left:auto}}@media (max-width:ELEMENTOR_SCREEN_TABLET_MAX){.elementor-widget-icon-box.elementor-tablet-position-left .elementor-icon-box-wrapper,.elementor-widget-icon-box.elementor-tablet-position-right .elementor-icon-box-wrapper{display:flex}.elementor-widget-icon-box.elementor-tablet-position-left .elementor-icon-box-icon,.elementor-widget-icon-box.elementor-tablet-position-right .elementor-icon-box-icon{display:inline-flex;flex:0 0 auto}.elementor-widget-icon-box.elementor-tablet-position-right .elementor-icon-box-wrapper{text-align:right;flex-direction:row-reverse}.elementor-widget-icon-box.elementor-tablet-position-right .elementor-icon-box-icon{margin-left:var(--icon-box-icon-margin,15px);margin-right:0;margin-bottom:unset}.elementor-widget-icon-box.elementor-tablet-position-left .elementor-icon-box-wrapper{text-align:left;flex-direction:row}.elementor-widget-icon-box.elementor-tablet-position-left .elementor-icon-box-icon{margin-right:var(--icon-box-icon-margin,15px);margin-left:0;margin-bottom:unset}.elementor-widget-icon-box.elementor-tablet-position-top .elementor-icon-box-wrapper{display:block;text-align:center;flex-direction:unset}.elementor-widget-icon-box.elementor-tablet-position-top .elementor-icon-box-icon{margin-bottom:var(--icon-box-icon-margin,15px);margin-right:auto;margin-left:auto}}@media (max-width:ELEMENTOR_SCREEN_MOBILE_EXTRA_MAX){.elementor-widget-icon-box.elementor-mobile_extra-position-left .elementor-icon-box-wrapper,.elementor-widget-icon-box.elementor-mobile_extra-position-right .elementor-icon-box-wrapper{display:flex}.elementor-widget-icon-box.elementor-mobile_extra-position-left .elementor-icon-box-icon,.elementor-widget-icon-box.elementor-mobile_extra-position-right .elementor-icon-box-icon{display:inline-flex;flex:0 0 auto}.elementor-widget-icon-box.elementor-mobile_extra-position-right .elementor-icon-box-wrapper{text-align:right;flex-direction:row-reverse}.elementor-widget-icon-box.elementor-mobile_extra-position-right .elementor-icon-box-icon{margin-left:var(--icon-box-icon-margin,15px);margin-right:0;margin-bottom:unset}.elementor-widget-icon-box.elementor-mobile_extra-position-left .elementor-icon-box-wrapper{text-align:left;flex-direction:row}.elementor-widget-icon-box.elementor-mobile_extra-position-left .elementor-icon-box-icon{margin-right:var(--icon-box-icon-margin,15px);margin-left:0;margin-bottom:unset}.elementor-widget-icon-box.elementor-mobile_extra-position-top .elementor-icon-box-wrapper{display:block;text-align:center;flex-direction:unset}.elementor-widget-icon-box.elementor-mobile_extra-position-top .elementor-icon-box-icon{margin-bottom:var(--icon-box-icon-margin,15px);margin-right:auto;margin-left:auto}}@media (max-width:ELEMENTOR_SCREEN_MOBILE_MAX){.elementor-widget-icon-box.elementor-mobile-position-left .elementor-icon-box-wrapper,.elementor-widget-icon-box.elementor-mobile-position-right .elementor-icon-box-wrapper{display:flex}.elementor-widget-icon-box.elementor-mobile-position-left .elementor-icon-box-icon,.elementor-widget-icon-box.elementor-mobile-position-right .elementor-icon-box-icon{display:inline-flex;flex:0 0 auto}.elementor-widget-icon-box.elementor-mobile-position-right .elementor-icon-box-wrapper{text-align:right;flex-direction:row-reverse}.elementor-widget-icon-box.elementor-mobile-position-right .elementor-icon-box-icon{margin-left:var(--icon-box-icon-margin,15px);margin-right:0;margin-bottom:unset}.elementor-widget-icon-box.elementor-mobile-position-left .elementor-icon-box-wrapper{text-align:left;flex-direction:row}.elementor-widget-icon-box.elementor-mobile-position-left .elementor-icon-box-icon{margin-right:var(--icon-box-icon-margin,15px);margin-left:0;margin-bottom:unset}.elementor-widget-icon-box.elementor-mobile-position-top .elementor-icon-box-wrapper{display:block;text-align:center;flex-direction:unset}.elementor-widget-icon-box.elementor-mobile-position-top .elementor-icon-box-icon{margin-bottom:var(--icon-box-icon-margin,15px);margin-right:auto;margin-left:auto}.elementor-widget-icon-box.elementor-position-left .elementor-icon-box-icon,.elementor-widget-icon-box.elementor-position-right .elementor-icon-box-icon{display:block;flex:unset}}.elementor-widget-icon-box .elementor-icon-box-title a{color:inherit}.elementor-widget-icon-box .elementor-icon-box-content{flex-grow:1}.elementor-widget-icon-box .elementor-icon-box-description{margin:0}.elementor-widget.elementor-icon-list--layout-inline .elementor-widget-container{overflow:hidden}.elementor-widget .elementor-icon-list-items.elementor-inline-items{margin-right:-8px;margin-left:-8px}.elementor-widget .elementor-icon-list-items.elementor-inline-items .elementor-icon-list-item{margin-right:8px;margin-left:8px}.elementor-widget .elementor-icon-list-items.elementor-inline-items .elementor-icon-list-item:after{width:auto;left:auto;right:auto;position:relative;height:100%;border-top:0;border-bottom:0;border-right:0;border-left-width:1px;border-style:solid;right:-8px}.elementor-widget .elementor-icon-list-items{list-style-type:none;margin:0;padding:0}.elementor-widget .elementor-icon-list-item{margin:0;padding:0;position:relative}.elementor-widget .elementor-icon-list-item:after{position:absolute;bottom:0;width:100%}.elementor-widget .elementor-icon-list-item,.elementor-widget .elementor-icon-list-item a{display:flex;font-size:inherit;align-items:var(--icon-vertical-align,center)}.elementor-widget .elementor-icon-list-icon+.elementor-icon-list-text{align-self:center;padding-left:5px}.elementor-widget .elementor-icon-list-icon{display:flex;position:relative;top:var(--icon-vertical-offset,initial)}.elementor-widget .elementor-icon-list-icon svg{width:var(--e-icon-list-icon-size,1em);height:var(--e-icon-list-icon-size,1em)}.elementor-widget .elementor-icon-list-icon i{width:1.25em;font-size:var(--e-icon-list-icon-size)}.elementor-widget.elementor-widget-icon-list .elementor-icon-list-icon{text-align:var(--e-icon-list-icon-align)}.elementor-widget.elementor-widget-icon-list .elementor-icon-list-icon svg{margin:var(--e-icon-list-icon-margin,0 calc(var(--e-icon-list-icon-size, 1em) * .25) 0 0)}.elementor-widget.elementor-list-item-link-full_width a{width:100%}.elementor-widget.elementor-align-center .elementor-icon-list-item,.elementor-widget.elementor-align-center .elementor-icon-list-item a{justify-content:center}.elementor-widget.elementor-align-center .elementor-icon-list-item:after{margin:auto}.elementor-widget.elementor-align-center .elementor-inline-items{justify-content:center}.elementor-widget.elementor-align-left .elementor-icon-list-item,.elementor-widget.elementor-align-left .elementor-icon-list-item a{justify-content:flex-start;text-align:left}.elementor-widget.elementor-align-left .elementor-inline-items{justify-content:flex-start}.elementor-widget.elementor-align-right .elementor-icon-list-item,.elementor-widget.elementor-align-right .elementor-icon-list-item a{justify-content:flex-end;text-align:right}.elementor-widget.elementor-align-right .elementor-icon-list-items{justify-content:flex-end}.elementor-widget:not(.elementor-align-right) .elementor-icon-list-item:after{left:0}.elementor-widget:not(.elementor-align-left) .elementor-icon-list-item:after{right:0}@media (min-width:ELEMENTOR_SCREEN_WIDESCREEN_MIN){.elementor-widget.elementor-widescreen-align-center .elementor-icon-list-item,.elementor-widget.elementor-widescreen-align-center .elementor-icon-list-item a{justify-content:center}.elementor-widget.elementor-widescreen-align-center .elementor-icon-list-item:after{margin:auto}.elementor-widget.elementor-widescreen-align-center .elementor-inline-items{justify-content:center}.elementor-widget.elementor-widescreen-align-left .elementor-icon-list-item,.elementor-widget.elementor-widescreen-align-left .elementor-icon-list-item a{justify-content:flex-start;text-align:left}.elementor-widget.elementor-widescreen-align-left .elementor-inline-items{justify-content:flex-start}.elementor-widget.elementor-widescreen-align-right .elementor-icon-list-item,.elementor-widget.elementor-widescreen-align-right .elementor-icon-list-item a{justify-content:flex-end;text-align:right}.elementor-widget.elementor-widescreen-align-right .elementor-icon-list-items{justify-content:flex-end}.elementor-widget:not(.elementor-widescreen-align-right) .elementor-icon-list-item:after{left:0}.elementor-widget:not(.elementor-widescreen-align-left) .elementor-icon-list-item:after{right:0}}@media (max-width:ELEMENTOR_SCREEN_LAPTOP_MAX){.elementor-widget.elementor-laptop-align-center .elementor-icon-list-item,.elementor-widget.elementor-laptop-align-center .elementor-icon-list-item a{justify-content:center}.elementor-widget.elementor-laptop-align-center .elementor-icon-list-item:after{margin:auto}.elementor-widget.elementor-laptop-align-center .elementor-inline-items{justify-content:center}.elementor-widget.elementor-laptop-align-left .elementor-icon-list-item,.elementor-widget.elementor-laptop-align-left .elementor-icon-list-item a{justify-content:flex-start;text-align:left}.elementor-widget.elementor-laptop-align-left .elementor-inline-items{justify-content:flex-start}.elementor-widget.elementor-laptop-align-right .elementor-icon-list-item,.elementor-widget.elementor-laptop-align-right .elementor-icon-list-item a{justify-content:flex-end;text-align:right}.elementor-widget.elementor-laptop-align-right .elementor-icon-list-items{justify-content:flex-end}.elementor-widget:not(.elementor-laptop-align-right) .elementor-icon-list-item:after{left:0}.elementor-widget:not(.elementor-laptop-align-left) .elementor-icon-list-item:after{right:0}}@media (max-width:ELEMENTOR_SCREEN_TABLET_EXTRA_MAX){.elementor-widget.elementor-tablet_extra-align-center .elementor-icon-list-item,.elementor-widget.elementor-tablet_extra-align-center .elementor-icon-list-item a{justify-content:center}.elementor-widget.elementor-tablet_extra-align-center .elementor-icon-list-item:after{margin:auto}.elementor-widget.elementor-tablet_extra-align-center .elementor-inline-items{justify-content:center}.elementor-widget.elementor-tablet_extra-align-left .elementor-icon-list-item,.elementor-widget.elementor-tablet_extra-align-left .elementor-icon-list-item a{justify-content:flex-start;text-align:left}.elementor-widget.elementor-tablet_extra-align-left .elementor-inline-items{justify-content:flex-start}.elementor-widget.elementor-tablet_extra-align-right .elementor-icon-list-item,.elementor-widget.elementor-tablet_extra-align-right .elementor-icon-list-item a{justify-content:flex-end;text-align:right}.elementor-widget.elementor-tablet_extra-align-right .elementor-icon-list-items{justify-content:flex-end}.elementor-widget:not(.elementor-tablet_extra-align-right) .elementor-icon-list-item:after{left:0}.elementor-widget:not(.elementor-tablet_extra-align-left) .elementor-icon-list-item:after{right:0}}@media (max-width:ELEMENTOR_SCREEN_TABLET_MAX){.elementor-widget.elementor-tablet-align-center .elementor-icon-list-item,.elementor-widget.elementor-tablet-align-center .elementor-icon-list-item a{justify-content:center}.elementor-widget.elementor-tablet-align-center .elementor-icon-list-item:after{margin:auto}.elementor-widget.elementor-tablet-align-center .elementor-inline-items{justify-content:center}.elementor-widget.elementor-tablet-align-left .elementor-icon-list-item,.elementor-widget.elementor-tablet-align-left .elementor-icon-list-item a{justify-content:flex-start;text-align:left}.elementor-widget.elementor-tablet-align-left .elementor-inline-items{justify-content:flex-start}.elementor-widget.elementor-tablet-align-right .elementor-icon-list-item,.elementor-widget.elementor-tablet-align-right .elementor-icon-list-item a{justify-content:flex-end;text-align:right}.elementor-widget.elementor-tablet-align-right .elementor-icon-list-items{justify-content:flex-end}.elementor-widget:not(.elementor-tablet-align-right) .elementor-icon-list-item:after{left:0}.elementor-widget:not(.elementor-tablet-align-left) .elementor-icon-list-item:after{right:0}}@media (max-width:ELEMENTOR_SCREEN_MOBILE_EXTRA_MAX){.elementor-widget.elementor-mobile_extra-align-center .elementor-icon-list-item,.elementor-widget.elementor-mobile_extra-align-center .elementor-icon-list-item a{justify-content:center}.elementor-widget.elementor-mobile_extra-align-center .elementor-icon-list-item:after{margin:auto}.elementor-widget.elementor-mobile_extra-align-center .elementor-inline-items{justify-content:center}.elementor-widget.elementor-mobile_extra-align-left .elementor-icon-list-item,.elementor-widget.elementor-mobile_extra-align-left .elementor-icon-list-item a{justify-content:flex-start;text-align:left}.elementor-widget.elementor-mobile_extra-align-left .elementor-inline-items{justify-content:flex-start}.elementor-widget.elementor-mobile_extra-align-right .elementor-icon-list-item,.elementor-widget.elementor-mobile_extra-align-right .elementor-icon-list-item a{justify-content:flex-end;text-align:right}.elementor-widget.elementor-mobile_extra-align-right .elementor-icon-list-items{justify-content:flex-end}.elementor-widget:not(.elementor-mobile_extra-align-right) .elementor-icon-list-item:after{left:0}.elementor-widget:not(.elementor-mobile_extra-align-left) .elementor-icon-list-item:after{right:0}}@media (max-width:ELEMENTOR_SCREEN_MOBILE_MAX){.elementor-widget.elementor-mobile-align-center .elementor-icon-list-item,.elementor-widget.elementor-mobile-align-center .elementor-icon-list-item a{justify-content:center}.elementor-widget.elementor-mobile-align-center .elementor-icon-list-item:after{margin:auto}.elementor-widget.elementor-mobile-align-center .elementor-inline-items{justify-content:center}.elementor-widget.elementor-mobile-align-left .elementor-icon-list-item,.elementor-widget.elementor-mobile-align-left .elementor-icon-list-item a{justify-content:flex-start;text-align:left}.elementor-widget.elementor-mobile-align-left .elementor-inline-items{justify-content:flex-start}.elementor-widget.elementor-mobile-align-right .elementor-icon-list-item,.elementor-widget.elementor-mobile-align-right .elementor-icon-list-item a{justify-content:flex-end;text-align:right}.elementor-widget.elementor-mobile-align-right .elementor-icon-list-items{justify-content:flex-end}.elementor-widget:not(.elementor-mobile-align-right) .elementor-icon-list-item:after{left:0}.elementor-widget:not(.elementor-mobile-align-left) .elementor-icon-list-item:after{right:0}}.elementor-widget-image{text-align:center}.elementor-widget-image a{display:inline-block}.elementor-widget-image a img[src$=".svg"]{width:48px}.elementor-widget-image img{vertical-align:middle;display:inline-block}.elementor-widget-image-box .elementor-image-box-content{width:100%}@media (min-width:ELEMENTOR_SCREEN_MOBILE_NEXT){.elementor-widget-image-box.elementor-position-left .elementor-image-box-wrapper,.elementor-widget-image-box.elementor-position-right .elementor-image-box-wrapper{display:flex}.elementor-widget-image-box.elementor-position-right .elementor-image-box-wrapper{text-align:right;flex-direction:row-reverse}.elementor-widget-image-box.elementor-position-left .elementor-image-box-wrapper{text-align:left;flex-direction:row}.elementor-widget-image-box.elementor-position-top .elementor-image-box-img{margin:auto}.elementor-widget-image-box.elementor-vertical-align-top .elementor-image-box-wrapper{align-items:flex-start}.elementor-widget-image-box.elementor-vertical-align-middle .elementor-image-box-wrapper{align-items:center}.elementor-widget-image-box.elementor-vertical-align-bottom .elementor-image-box-wrapper{align-items:flex-end}}@media (max-width:ELEMENTOR_SCREEN_MOBILE_MAX){.elementor-widget-image-box .elementor-image-box-img{margin-left:auto!important;margin-right:auto!important;margin-bottom:15px}}.elementor-widget-image-box .elementor-image-box-img{display:inline-block}.elementor-widget-image-box .elementor-image-box-title a{color:inherit}.elementor-widget-image-box .elementor-image-box-wrapper{text-align:center}.elementor-widget-image-box .elementor-image-box-description{margin:0}.elementor-widget-image-carousel .swiper,.elementor-widget-image-carousel .swiper-container{position:static}.elementor-widget-image-carousel .swiper-container .swiper-slide figure,.elementor-widget-image-carousel .swiper .swiper-slide figure{line-height:inherit}.elementor-widget-image-carousel .swiper-slide{text-align:center}.elementor-image-carousel-wrapper:not(.swiper-container-initialized):not(.swiper-initialized) .swiper-slide{max-width:calc(100% / var(--e-image-carousel-slides-to-show, 3))}body.elementor-page .elementor-widget-menu-anchor{margin-bottom:0}.elementor-widget-progress{text-align:left}.elementor-progress-wrapper{position:relative;background-color:#eee;color:#fff;height:100%;border-radius:2px}.elementor-progress-bar{display:flex;background-color:#69727d;width:0;font-size:11px;height:30px;line-height:30px;border-radius:2px;transition:width 1s ease-in-out}.elementor-progress-text{flex-grow:1;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;padding-left:15px}.elementor-progress-percentage{padding-right:15px}.elementor-widget-progress .elementor-progress-wrapper.progress-info .elementor-progress-bar{background-color:#5bc0de}.elementor-widget-progress .elementor-progress-wrapper.progress-success .elementor-progress-bar{background-color:#5cb85c}.elementor-widget-progress .elementor-progress-wrapper.progress-warning .elementor-progress-bar{background-color:#f0ad4e}.elementor-widget-progress .elementor-progress-wrapper.progress-danger .elementor-progress-bar{background-color:#d9534f}.elementor-progress .elementor-title{display:block}@media (max-width:ELEMENTOR_SCREEN_MOBILE_MAX){.elementor-progress-text{padding-left:10px}}.e-con-inner .elementor-progress-wrapper,.e-con .elementor-progress-wrapper{height:auto}.elementor-widget-social-icons.elementor-grid-0 .elementor-widget-container,.elementor-widget-social-icons.elementor-grid-mobile-0 .elementor-widget-container,.elementor-widget-social-icons.elementor-grid-tablet-0 .elementor-widget-container{line-height:1;font-size:0}.elementor-widget-social-icons:not(.elementor-grid-0):not(.elementor-grid-tablet-0):not(.elementor-grid-mobile-0) .elementor-grid{display:inline-grid}.elementor-widget-social-icons .elementor-grid{grid-column-gap:var(--grid-column-gap,5px);grid-row-gap:var(--grid-row-gap,5px);grid-template-columns:var(--grid-template-columns);justify-content:var(--justify-content,center);justify-items:var(--justify-content,center)}.elementor-icon.elementor-social-icon{font-size:var(--icon-size,25px);line-height:var(--icon-size,25px);width:calc(var(--icon-size, 25px) + 2 * var(--icon-padding, .5em));height:calc(var(--icon-size, 25px) + 2 * var(--icon-padding, .5em))}.elementor-social-icon{--e-social-icon-icon-color:#fff;display:inline-flex;background-color:#69727d;align-items:center;justify-content:center;text-align:center;cursor:pointer}.elementor-social-icon i{color:var(--e-social-icon-icon-color)}.elementor-social-icon svg{fill:var(--e-social-icon-icon-color)}.elementor-social-icon:last-child{margin:0}.elementor-social-icon:hover{opacity:.9;color:#fff}.elementor-social-icon-android{background-color:#a4c639}.elementor-social-icon-apple{background-color:#999}.elementor-social-icon-behance{background-color:#1769ff}.elementor-social-icon-bitbucket{background-color:#205081}.elementor-social-icon-codepen{background-color:#000}.elementor-social-icon-delicious{background-color:#39f}.elementor-social-icon-deviantart{background-color:#05cc47}.elementor-social-icon-digg{background-color:#005be2}.elementor-social-icon-dribbble{background-color:#ea4c89}.elementor-social-icon-elementor{background-color:#d30c5c}.elementor-social-icon-envelope{background-color:#ea4335}.elementor-social-icon-facebook,.elementor-social-icon-facebook-f{background-color:#3b5998}.elementor-social-icon-flickr{background-color:#0063dc}.elementor-social-icon-foursquare{background-color:#2d5be3}.elementor-social-icon-free-code-camp,.elementor-social-icon-freecodecamp{background-color:#006400}.elementor-social-icon-github{background-color:#333}.elementor-social-icon-gitlab{background-color:#e24329}.elementor-social-icon-globe{background-color:#69727d}.elementor-social-icon-google-plus,.elementor-social-icon-google-plus-g{background-color:#dd4b39}.elementor-social-icon-houzz{background-color:#7ac142}.elementor-social-icon-instagram{background-color:#262626}.elementor-social-icon-jsfiddle{background-color:#487aa2}.elementor-social-icon-link{background-color:#818a91}.elementor-social-icon-linkedin,.elementor-social-icon-linkedin-in{background-color:#0077b5}.elementor-social-icon-medium{background-color:#00ab6b}.elementor-social-icon-meetup{background-color:#ec1c40}.elementor-social-icon-mixcloud{background-color:#273a4b}.elementor-social-icon-odnoklassniki{background-color:#f4731c}.elementor-social-icon-pinterest{background-color:#bd081c}.elementor-social-icon-product-hunt{background-color:#da552f}.elementor-social-icon-reddit{background-color:#ff4500}.elementor-social-icon-rss{background-color:#f26522}.elementor-social-icon-shopping-cart{background-color:#4caf50}.elementor-social-icon-skype{background-color:#00aff0}.elementor-social-icon-slideshare{background-color:#0077b5}.elementor-social-icon-snapchat{background-color:#fffc00}.elementor-social-icon-soundcloud{background-color:#f80}.elementor-social-icon-spotify{background-color:#2ebd59}.elementor-social-icon-stack-overflow{background-color:#fe7a15}.elementor-social-icon-steam{background-color:#00adee}.elementor-social-icon-stumbleupon{background-color:#eb4924}.elementor-social-icon-telegram{background-color:#2ca5e0}.elementor-social-icon-threads{background-color:#000}.elementor-social-icon-thumb-tack{background-color:#1aa1d8}.elementor-social-icon-tripadvisor{background-color:#589442}.elementor-social-icon-tumblr{background-color:#35465c}.elementor-social-icon-twitch{background-color:#6441a5}.elementor-social-icon-twitter{background-color:#1da1f2}.elementor-social-icon-viber{background-color:#665cac}.elementor-social-icon-vimeo{background-color:#1ab7ea}.elementor-social-icon-vk{background-color:#45668e}.elementor-social-icon-weibo{background-color:#dd2430}.elementor-social-icon-weixin{background-color:#31a918}.elementor-social-icon-whatsapp{background-color:#25d366}.elementor-social-icon-wordpress{background-color:#21759b}.elementor-social-icon-x-twitter{background-color:#000}.elementor-social-icon-xing{background-color:#026466}.elementor-social-icon-yelp{background-color:#af0606}.elementor-social-icon-youtube{background-color:#cd201f}.elementor-social-icon-500px{background-color:#0099e5}.elementor-shape-rounded .elementor-icon.elementor-social-icon{border-radius:10%}.elementor-shape-circle .elementor-icon.elementor-social-icon{border-radius:50%}.elementor-column .elementor-spacer-inner{height:var(--spacer-size)}.e-con{--container-widget-width:100%}.e-con-inner>.elementor-widget-spacer,.e-con>.elementor-widget-spacer{width:var(--container-widget-width,var(--spacer-size));--align-self:var(--container-widget-align-self,initial);--flex-shrink:0}.e-con-inner>.elementor-widget-spacer>.elementor-widget-container,.e-con>.elementor-widget-spacer>.elementor-widget-container{height:100%;width:100%}.e-con-inner>.elementor-widget-spacer>.elementor-widget-container>.elementor-spacer,.e-con>.elementor-widget-spacer>.elementor-widget-container>.elementor-spacer{height:100%}.e-con-inner>.elementor-widget-spacer>.elementor-widget-container>.elementor-spacer>.elementor-spacer-inner,.e-con>.elementor-widget-spacer>.elementor-widget-container>.elementor-spacer>.elementor-spacer-inner{height:var(--container-widget-height,var(--spacer-size))}.e-con-inner>.elementor-widget-spacer.elementor-widget-empty,.e-con>.elementor-widget-spacer.elementor-widget-empty{position:relative;min-height:22px;min-width:22px}.e-con-inner>.elementor-widget-spacer.elementor-widget-empty .elementor-widget-empty-icon,.e-con>.elementor-widget-spacer.elementor-widget-empty .elementor-widget-empty-icon{position:absolute;top:0;bottom:0;left:0;right:0;margin:auto;padding:0;width:22px;height:22px}.elementor-star-rating{color:#ccd6df;font-family:eicons;display:inline-block}.elementor-star-rating i{display:inline-block;position:relative;font-style:normal;cursor:default}.elementor-star-rating i:before{content:"\e934";display:block;font-size:inherit;font-family:inherit;position:absolute;overflow:hidden;color:#f0ad4e;top:0;left:0}.elementor-star-rating .elementor-star-empty:before{content:none}.elementor-star-rating .elementor-star-1:before{width:10%}.elementor-star-rating .elementor-star-2:before{width:20%}.elementor-star-rating .elementor-star-3:before{width:30%}.elementor-star-rating .elementor-star-4:before{width:40%}.elementor-star-rating .elementor-star-5:before{width:50%}.elementor-star-rating .elementor-star-6:before{width:60%}.elementor-star-rating .elementor-star-7:before{width:70%}.elementor-star-rating .elementor-star-8:before{width:80%}.elementor-star-rating .elementor-star-9:before{width:90%}.elementor-star-rating__wrapper{display:flex;align-items:center}.elementor-star-rating__title{margin-right:10px}.elementor-star-rating--align-right .elementor-star-rating__wrapper{text-align:right;justify-content:flex-end}.elementor-star-rating--align-left .elementor-star-rating__wrapper{text-align:left;justify-content:flex-start}.elementor-star-rating--align-center .elementor-star-rating__wrapper{text-align:center;justify-content:center}.elementor-star-rating--align-justify .elementor-star-rating__title{margin-right:auto}@media (max-width:ELEMENTOR_SCREEN_TABLET_MAX){.elementor-star-rating-tablet--align-right .elementor-star-rating__wrapper{text-align:right;justify-content:flex-end}.elementor-star-rating-tablet--align-left .elementor-star-rating__wrapper{text-align:left;justify-content:flex-start}.elementor-star-rating-tablet--align-center .elementor-star-rating__wrapper{text-align:center;justify-content:center}.elementor-star-rating-tablet--align-justify .elementor-star-rating__title{margin-right:auto}}@media (max-width:ELEMENTOR_SCREEN_MOBILE_MAX){.elementor-star-rating-mobile--align-right .elementor-star-rating__wrapper{text-align:right;justify-content:flex-end}.elementor-star-rating-mobile--align-left .elementor-star-rating__wrapper{text-align:left;justify-content:flex-start}.elementor-star-rating-mobile--align-center .elementor-star-rating__wrapper{text-align:center;justify-content:center}.elementor-star-rating-mobile--align-justify .elementor-star-rating__title{margin-right:auto}}.last-star{letter-spacing:0}.elementor--star-style-star_unicode .elementor-star-rating{font-family:Arial,Helvetica,sans-serif}.elementor--star-style-star_unicode .elementor-star-rating i:not(.elementor-star-empty):before{content:"★"}.elementor-widget-tabs.elementor-tabs-view-vertical .elementor-tabs-wrapper{width:25%;flex-shrink:0}.elementor-widget-tabs.elementor-tabs-view-vertical .elementor-tab-desktop-title.elementor-active{border-right-style:none}.elementor-widget-tabs.elementor-tabs-view-vertical .elementor-tab-desktop-title.elementor-active:after,.elementor-widget-tabs.elementor-tabs-view-vertical .elementor-tab-desktop-title.elementor-active:before{height:999em;width:0;right:0;border-right-style:solid}.elementor-widget-tabs.elementor-tabs-view-vertical .elementor-tab-desktop-title.elementor-active:before{top:0;transform:translateY(-100%)}.elementor-widget-tabs.elementor-tabs-view-vertical .elementor-tab-desktop-title.elementor-active:after{top:100%}.elementor-widget-tabs.elementor-tabs-view-horizontal .elementor-tab-desktop-title{display:table-cell}.elementor-widget-tabs.elementor-tabs-view-horizontal .elementor-tab-desktop-title.elementor-active{border-bottom-style:none}.elementor-widget-tabs.elementor-tabs-view-horizontal .elementor-tab-desktop-title.elementor-active:after,.elementor-widget-tabs.elementor-tabs-view-horizontal .elementor-tab-desktop-title.elementor-active:before{bottom:0;height:0;width:999em;border-bottom-style:solid}.elementor-widget-tabs.elementor-tabs-view-horizontal .elementor-tab-desktop-title.elementor-active:before{right:100%}.elementor-widget-tabs.elementor-tabs-view-horizontal .elementor-tab-desktop-title.elementor-active:after{left:100%}.elementor-widget-tabs .elementor-tab-content,.elementor-widget-tabs .elementor-tab-title,.elementor-widget-tabs .elementor-tab-title:after,.elementor-widget-tabs .elementor-tab-title:before,.elementor-widget-tabs .elementor-tabs-content-wrapper{border:1px #d5d8dc}.elementor-widget-tabs .elementor-tabs{text-align:left}.elementor-widget-tabs .elementor-tabs-wrapper{overflow:hidden}.elementor-widget-tabs .elementor-tab-title{cursor:pointer;outline:var(--focus-outline,none)}.elementor-widget-tabs .elementor-tab-desktop-title{position:relative;padding:20px 25px;font-weight:700;line-height:1;border:solid transparent}.elementor-widget-tabs .elementor-tab-desktop-title.elementor-active{border-color:#d5d8dc}.elementor-widget-tabs .elementor-tab-desktop-title.elementor-active:after,.elementor-widget-tabs .elementor-tab-desktop-title.elementor-active:before{display:block;content:"";position:absolute}.elementor-widget-tabs .elementor-tab-desktop-title:focus-visible{border:1px solid #000}.elementor-widget-tabs .elementor-tab-mobile-title{padding:10px;cursor:pointer}.elementor-widget-tabs .elementor-tab-content{padding:20px;display:none}@media (max-width:ELEMENTOR_SCREEN_MOBILE_MAX){.elementor-tabs .elementor-tab-content,.elementor-tabs .elementor-tab-title{border-style:solid solid none}.elementor-tabs .elementor-tabs-wrapper{display:none}.elementor-tabs .elementor-tabs-content-wrapper{border-bottom-style:solid}.elementor-tabs .elementor-tab-content{padding:10px}}@media (min-width:ELEMENTOR_SCREEN_MOBILE_NEXT){.elementor-widget-tabs.elementor-tabs-view-vertical .elementor-tabs{display:flex}.elementor-widget-tabs.elementor-tabs-view-vertical .elementor-tabs-wrapper{flex-direction:column}.elementor-widget-tabs.elementor-tabs-view-vertical .elementor-tabs-content-wrapper{flex-grow:1;border-style:solid solid solid none}.elementor-widget-tabs.elementor-tabs-view-horizontal .elementor-tab-content{border-style:none solid solid}.elementor-widget-tabs.elementor-tabs-alignment-center .elementor-tabs-wrapper,.elementor-widget-tabs.elementor-tabs-alignment-end .elementor-tabs-wrapper,.elementor-widget-tabs.elementor-tabs-alignment-stretch .elementor-tabs-wrapper{display:flex}.elementor-widget-tabs.elementor-tabs-alignment-center .elementor-tabs-wrapper{justify-content:center}.elementor-widget-tabs.elementor-tabs-alignment-end .elementor-tabs-wrapper{justify-content:flex-end}.elementor-widget-tabs.elementor-tabs-alignment-stretch.elementor-tabs-view-horizontal .elementor-tab-title{width:100%}.elementor-widget-tabs.elementor-tabs-alignment-stretch.elementor-tabs-view-vertical .elementor-tab-title{height:100%}.elementor-tabs .elementor-tab-mobile-title{display:none}}.elementor-testimonial-wrapper{overflow:hidden;text-align:center}.elementor-testimonial-wrapper .elementor-testimonial-content{font-size:1.3em;margin-bottom:20px}.elementor-testimonial-wrapper .elementor-testimonial-name{line-height:1.5;display:block}.elementor-testimonial-wrapper .elementor-testimonial-job{font-size:.85em;display:block}.elementor-testimonial-wrapper .elementor-testimonial-meta{width:100%;line-height:1}.elementor-testimonial-wrapper .elementor-testimonial-meta-inner{display:inline-block}.elementor-testimonial-wrapper .elementor-testimonial-meta .elementor-testimonial-details,.elementor-testimonial-wrapper .elementor-testimonial-meta .elementor-testimonial-image{display:table-cell;vertical-align:middle}.elementor-testimonial-wrapper .elementor-testimonial-meta .elementor-testimonial-image img{width:60px;height:60px;border-radius:50%;-o-object-fit:cover;object-fit:cover;max-width:none}.elementor-testimonial-wrapper .elementor-testimonial-meta.elementor-testimonial-image-position-aside .elementor-testimonial-image{padding-right:15px}.elementor-testimonial-wrapper .elementor-testimonial-meta.elementor-testimonial-image-position-aside .elementor-testimonial-details{text-align:left}.elementor-testimonial-wrapper .elementor-testimonial-meta.elementor-testimonial-image-position-top .elementor-testimonial-details,.elementor-testimonial-wrapper .elementor-testimonial-meta.elementor-testimonial-image-position-top .elementor-testimonial-image{display:block}.elementor-testimonial-wrapper .elementor-testimonial-meta.elementor-testimonial-image-position-top .elementor-testimonial-image{margin-bottom:20px}.elementor-widget-text-editor.elementor-drop-cap-view-stacked .elementor-drop-cap{background-color:#69727d;color:#fff}.elementor-widget-text-editor.elementor-drop-cap-view-framed .elementor-drop-cap{color:#69727d;border:3px solid;background-color:transparent}.elementor-widget-text-editor:not(.elementor-drop-cap-view-default) .elementor-drop-cap{margin-top:8px}.elementor-widget-text-editor:not(.elementor-drop-cap-view-default) .elementor-drop-cap-letter{width:1em;height:1em}.elementor-widget-text-editor .elementor-drop-cap{float:left;text-align:center;line-height:1;font-size:50px}.elementor-widget-text-editor .elementor-drop-cap-letter{display:inline-block}.elementor-toggle{text-align:left}.elementor-toggle .elementor-tab-title{font-weight:700;line-height:1;margin:0;padding:15px;border-bottom:1px solid #d5d8dc;cursor:pointer;outline:none}.elementor-toggle .elementor-tab-title .elementor-toggle-icon{display:inline-block;width:1em}.elementor-toggle .elementor-tab-title .elementor-toggle-icon svg{margin-inline-start:-5px;width:1em;height:1em}.elementor-toggle .elementor-tab-title .elementor-toggle-icon.elementor-toggle-icon-right{float:right;text-align:right}.elementor-toggle .elementor-tab-title .elementor-toggle-icon.elementor-toggle-icon-left{float:left;text-align:left}.elementor-toggle .elementor-tab-title .elementor-toggle-icon .elementor-toggle-icon-closed{display:block}.elementor-toggle .elementor-tab-title .elementor-toggle-icon .elementor-toggle-icon-opened{display:none}.elementor-toggle .elementor-tab-title.elementor-active{border-bottom:none}.elementor-toggle .elementor-tab-title.elementor-active .elementor-toggle-icon-closed{display:none}.elementor-toggle .elementor-tab-title.elementor-active .elementor-toggle-icon-opened{display:block}.elementor-toggle .elementor-tab-content{padding:15px;border-bottom:1px solid #d5d8dc;display:none}@media (max-width:ELEMENTOR_SCREEN_MOBILE_MAX){.elementor-toggle .elementor-tab-title{padding:12px}.elementor-toggle .elementor-tab-content{padding:12px 10px}}.e-con-inner>.elementor-widget-toggle,.e-con>.elementor-widget-toggle{width:var(--container-widget-width);--flex-grow:var(--container-widget-flex-grow)}.elementor-widget-video .elementor-widget-container{overflow:hidden;transform:translateZ(0)}.elementor-widget-video .elementor-wrapper{aspect-ratio:var(--video-aspect-ratio)}.elementor-widget-video .elementor-wrapper iframe,.elementor-widget-video .elementor-wrapper video{height:100%;width:100%;display:flex;border:none;background-color:#000}@supports not (aspect-ratio:1/1){.elementor-widget-video .elementor-wrapper{position:relative;overflow:hidden;height:0;padding-bottom:calc(100% / var(--video-aspect-ratio))}.elementor-widget-video .elementor-wrapper iframe,.elementor-widget-video .elementor-wrapper video{position:absolute;top:0;right:0;bottom:0;left:0}}.elementor-widget-video .elementor-open-inline .elementor-custom-embed-image-overlay{position:absolute;top:0;right:0;bottom:0;left:0;background-size:cover;background-position:50%}.elementor-widget-video .elementor-custom-embed-image-overlay{cursor:pointer;text-align:center}.elementor-widget-video .elementor-custom-embed-image-overlay:hover .elementor-custom-embed-play i{opacity:1}.elementor-widget-video .elementor-custom-embed-image-overlay img{display:block;width:100%;aspect-ratio:var(--video-aspect-ratio);-o-object-fit:cover;object-fit:cover;-o-object-position:center center;object-position:center center}@supports not (aspect-ratio:1/1){.elementor-widget-video .elementor-custom-embed-image-overlay{position:relative;overflow:hidden;height:0;padding-bottom:calc(100% / var(--video-aspect-ratio))}.elementor-widget-video .elementor-custom-embed-image-overlay img{position:absolute;top:0;right:0;bottom:0;left:0}}.elementor-widget-video .e-hosted-video .elementor-video{-o-object-fit:cover;object-fit:cover}.e-con-inner>.elementor-widget-video,.e-con>.elementor-widget-video{width:var(--container-widget-width);--flex-grow:var(--container-widget-flex-grow)}.elementor-widget-rating{--e-rating-gap:0px;--e-rating-icon-font-size:16px;--e-rating-icon-color:#ccd6df;--e-rating-icon-marked-color:#f0ad4e;--e-rating-icon-marked-width:100%;--e-rating-justify-content:flex-start}.elementor-widget-rating .e-rating{display:flex;justify-content:var(--e-rating-justify-content)}.elementor-widget-rating .e-rating-wrapper{display:flex;justify-content:inherit;flex-direction:row;flex-wrap:wrap;width:-moz-fit-content;width:fit-content;margin-block-end:calc(0px - var(--e-rating-gap));margin-inline-end:calc(0px - var(--e-rating-gap))}.elementor-widget-rating .e-rating .e-icon{position:relative;margin-block-end:var(--e-rating-gap);margin-inline-end:var(--e-rating-gap)}.elementor-widget-rating .e-rating .e-icon-wrapper.e-icon-marked{--e-rating-icon-color:var(--e-rating-icon-marked-color);width:var(--e-rating-icon-marked-width);position:absolute;z-index:1;height:100%;left:0;top:0;overflow:hidden}.elementor-widget-rating .e-rating .e-icon-wrapper :is(i,svg){display:flex;flex-shrink:0}.elementor-widget-rating .e-rating .e-icon-wrapper i{font-size:var(--e-rating-icon-font-size);color:var(--e-rating-icon-color)}.elementor-widget-rating .e-rating .e-icon-wrapper svg{width:auto;height:var(--e-rating-icon-font-size);fill:var(--e-rating-icon-color)} \ No newline at end of file diff --git a/wp-content/plugins/elementor/assets/css/templates/widget-accordion-rtl.min.css b/wp-content/plugins/elementor/assets/css/templates/widget-accordion-rtl.min.css new file mode 100644 index 0000000..74e30cb --- /dev/null +++ b/wp-content/plugins/elementor/assets/css/templates/widget-accordion-rtl.min.css @@ -0,0 +1 @@ +.elementor-accordion{text-align:right}.elementor-accordion .elementor-accordion-item{border:1px solid #d5d8dc}.elementor-accordion .elementor-accordion-item+.elementor-accordion-item{border-top:none}.elementor-accordion .elementor-tab-title{margin:0;padding:15px 20px;font-weight:700;line-height:1;cursor:pointer;outline:none}.elementor-accordion .elementor-tab-title .elementor-accordion-icon{display:inline-block;width:1.5em}.elementor-accordion .elementor-tab-title .elementor-accordion-icon svg{width:1em;height:1em}.elementor-accordion .elementor-tab-title .elementor-accordion-icon.elementor-accordion-icon-right{float:right;text-align:right}.elementor-accordion .elementor-tab-title .elementor-accordion-icon.elementor-accordion-icon-left{float:left;text-align:left}.elementor-accordion .elementor-tab-title .elementor-accordion-icon .elementor-accordion-icon-closed{display:block}.elementor-accordion .elementor-tab-title .elementor-accordion-icon .elementor-accordion-icon-opened,.elementor-accordion .elementor-tab-title.elementor-active .elementor-accordion-icon-closed{display:none}.elementor-accordion .elementor-tab-title.elementor-active .elementor-accordion-icon-opened{display:block}.elementor-accordion .elementor-tab-content{display:none;padding:15px 20px;border-top:1px solid #d5d8dc}@media (max-width:ELEMENTOR_SCREEN_MOBILE_MAX){.elementor-accordion .elementor-tab-title{padding:12px 15px}.elementor-accordion .elementor-tab-title .elementor-accordion-icon{width:1.2em}.elementor-accordion .elementor-tab-content{padding:7px 15px}}.e-con-inner>.elementor-widget-accordion,.e-con>.elementor-widget-accordion{width:var(--container-widget-width);--flex-grow:var(--container-widget-flex-grow)} \ No newline at end of file diff --git a/wp-content/plugins/elementor/assets/css/templates/widget-accordion.min.css b/wp-content/plugins/elementor/assets/css/templates/widget-accordion.min.css new file mode 100644 index 0000000..ff95fde --- /dev/null +++ b/wp-content/plugins/elementor/assets/css/templates/widget-accordion.min.css @@ -0,0 +1 @@ +.elementor-accordion{text-align:left}.elementor-accordion .elementor-accordion-item{border:1px solid #d5d8dc}.elementor-accordion .elementor-accordion-item+.elementor-accordion-item{border-top:none}.elementor-accordion .elementor-tab-title{margin:0;padding:15px 20px;font-weight:700;line-height:1;cursor:pointer;outline:none}.elementor-accordion .elementor-tab-title .elementor-accordion-icon{display:inline-block;width:1.5em}.elementor-accordion .elementor-tab-title .elementor-accordion-icon svg{width:1em;height:1em}.elementor-accordion .elementor-tab-title .elementor-accordion-icon.elementor-accordion-icon-right{float:right;text-align:right}.elementor-accordion .elementor-tab-title .elementor-accordion-icon.elementor-accordion-icon-left{float:left;text-align:left}.elementor-accordion .elementor-tab-title .elementor-accordion-icon .elementor-accordion-icon-closed{display:block}.elementor-accordion .elementor-tab-title .elementor-accordion-icon .elementor-accordion-icon-opened,.elementor-accordion .elementor-tab-title.elementor-active .elementor-accordion-icon-closed{display:none}.elementor-accordion .elementor-tab-title.elementor-active .elementor-accordion-icon-opened{display:block}.elementor-accordion .elementor-tab-content{display:none;padding:15px 20px;border-top:1px solid #d5d8dc}@media (max-width:ELEMENTOR_SCREEN_MOBILE_MAX){.elementor-accordion .elementor-tab-title{padding:12px 15px}.elementor-accordion .elementor-tab-title .elementor-accordion-icon{width:1.2em}.elementor-accordion .elementor-tab-content{padding:7px 15px}}.e-con-inner>.elementor-widget-accordion,.e-con>.elementor-widget-accordion{width:var(--container-widget-width);--flex-grow:var(--container-widget-flex-grow)} \ No newline at end of file diff --git a/wp-content/plugins/elementor/assets/css/templates/widget-alert-rtl.min.css b/wp-content/plugins/elementor/assets/css/templates/widget-alert-rtl.min.css new file mode 100644 index 0000000..e047325 --- /dev/null +++ b/wp-content/plugins/elementor/assets/css/templates/widget-alert-rtl.min.css @@ -0,0 +1 @@ +.elementor-alert{padding:15px;border-left:5px solid transparent;position:relative;text-align:right}.elementor-alert .elementor-alert-title{display:block;font-weight:700}.elementor-alert .elementor-alert-description{font-size:13px}.elementor-alert button.elementor-alert-dismiss{position:absolute;left:var(--dismiss-icon-horizontal-position,10px);top:var(--dismiss-icon-vertical-position,10px);padding:3px;font-size:var(--dismiss-icon-size,20px);line-height:1;background:transparent;color:var(--dismiss-icon-normal-color,inherit);border:none;cursor:pointer;transition-duration:var(--dismiss-icon-hover-transition-duration,.3s)}.elementor-alert button.elementor-alert-dismiss:hover{color:var(--dismiss-icon-hover-color,inherit)}.elementor-alert button.elementor-alert-dismiss svg{width:var(--dismiss-icon-size,20px);height:var(--dismiss-icon-size,20px);fill:var(--dismiss-icon-normal-color,currentColor);transition-duration:var(--dismiss-icon-hover-transition-duration,.3s)}.elementor-alert button.elementor-alert-dismiss svg:hover{fill:var(--dismiss-icon-hover-color,currentColor)}.elementor-alert.elementor-alert-info{color:#31708f;background-color:#d9edf7;border-color:#bcdff1}.elementor-alert.elementor-alert-success{color:#3c763d;background-color:#dff0d8;border-color:#cae6be}.elementor-alert.elementor-alert-warning{color:#8a6d3b;background-color:#fcf8e3;border-color:#f9f0c3}.elementor-alert.elementor-alert-danger{color:#a94442;background-color:#f2dede;border-color:#e8c4c4}@media (max-width:ELEMENTOR_SCREEN_MOBILE_MAX){.elementor-alert{padding:10px}.elementor-alert button.elementor-alert-dismiss{right:7px;top:7px}} \ No newline at end of file diff --git a/wp-content/plugins/elementor/assets/css/templates/widget-alert.min.css b/wp-content/plugins/elementor/assets/css/templates/widget-alert.min.css new file mode 100644 index 0000000..7625982 --- /dev/null +++ b/wp-content/plugins/elementor/assets/css/templates/widget-alert.min.css @@ -0,0 +1 @@ +.elementor-alert{padding:15px;border-left:5px solid transparent;position:relative;text-align:left}.elementor-alert .elementor-alert-title{display:block;font-weight:700}.elementor-alert .elementor-alert-description{font-size:13px}.elementor-alert button.elementor-alert-dismiss{position:absolute;right:var(--dismiss-icon-horizontal-position,10px);top:var(--dismiss-icon-vertical-position,10px);padding:3px;font-size:var(--dismiss-icon-size,20px);line-height:1;background:transparent;color:var(--dismiss-icon-normal-color,inherit);border:none;cursor:pointer;transition-duration:var(--dismiss-icon-hover-transition-duration,.3s)}.elementor-alert button.elementor-alert-dismiss:hover{color:var(--dismiss-icon-hover-color,inherit)}.elementor-alert button.elementor-alert-dismiss svg{width:var(--dismiss-icon-size,20px);height:var(--dismiss-icon-size,20px);fill:var(--dismiss-icon-normal-color,currentColor);transition-duration:var(--dismiss-icon-hover-transition-duration,.3s)}.elementor-alert button.elementor-alert-dismiss svg:hover{fill:var(--dismiss-icon-hover-color,currentColor)}.elementor-alert.elementor-alert-info{color:#31708f;background-color:#d9edf7;border-color:#bcdff1}.elementor-alert.elementor-alert-success{color:#3c763d;background-color:#dff0d8;border-color:#cae6be}.elementor-alert.elementor-alert-warning{color:#8a6d3b;background-color:#fcf8e3;border-color:#f9f0c3}.elementor-alert.elementor-alert-danger{color:#a94442;background-color:#f2dede;border-color:#e8c4c4}@media (max-width:ELEMENTOR_SCREEN_MOBILE_MAX){.elementor-alert{padding:10px}.elementor-alert button.elementor-alert-dismiss{right:7px;top:7px}} \ No newline at end of file diff --git a/wp-content/plugins/elementor/assets/css/templates/widget-icon-box-rtl.min.css b/wp-content/plugins/elementor/assets/css/templates/widget-icon-box-rtl.min.css new file mode 100644 index 0000000..474bb13 --- /dev/null +++ b/wp-content/plugins/elementor/assets/css/templates/widget-icon-box-rtl.min.css @@ -0,0 +1 @@ +.elementor-widget-icon-box .elementor-icon-box-wrapper{display:block;text-align:center}.elementor-widget-icon-box .elementor-icon-box-icon{margin-bottom:var(--icon-box-icon-margin,15px);margin-right:auto;margin-left:auto}@media (min-width:ELEMENTOR_SCREEN_MOBILE_NEXT){.elementor-widget-icon-box.elementor-vertical-align-top .elementor-icon-box-wrapper{align-items:flex-start}.elementor-widget-icon-box.elementor-vertical-align-middle .elementor-icon-box-wrapper{align-items:center}.elementor-widget-icon-box.elementor-vertical-align-bottom .elementor-icon-box-wrapper{align-items:flex-end}}.elementor-widget-icon-box.elementor-position-left .elementor-icon-box-wrapper,.elementor-widget-icon-box.elementor-position-right .elementor-icon-box-wrapper{display:flex}.elementor-widget-icon-box.elementor-position-left .elementor-icon-box-icon,.elementor-widget-icon-box.elementor-position-right .elementor-icon-box-icon{display:inline-flex;flex:0 0 auto}.elementor-widget-icon-box.elementor-position-right .elementor-icon-box-wrapper{text-align:left;flex-direction:row}.elementor-widget-icon-box.elementor-position-right .elementor-icon-box-icon{margin-left:var(--icon-box-icon-margin,15px);margin-right:0;margin-bottom:unset}.elementor-widget-icon-box.elementor-position-left .elementor-icon-box-wrapper{text-align:right;flex-direction:row-reverse}.elementor-widget-icon-box.elementor-position-left .elementor-icon-box-icon{margin-right:var(--icon-box-icon-margin,15px);margin-left:0;margin-bottom:unset}.elementor-widget-icon-box.elementor-position-top .elementor-icon-box-wrapper{display:block;text-align:center;flex-direction:unset}.elementor-widget-icon-box.elementor-position-top .elementor-icon-box-icon{margin-bottom:var(--icon-box-icon-margin,15px);margin-right:auto;margin-left:auto}@media (min-width:ELEMENTOR_SCREEN_WIDESCREEN_MIN){.elementor-widget-icon-box.elementor-widescreen-position-left .elementor-icon-box-wrapper,.elementor-widget-icon-box.elementor-widescreen-position-right .elementor-icon-box-wrapper{display:flex}.elementor-widget-icon-box.elementor-widescreen-position-left .elementor-icon-box-icon,.elementor-widget-icon-box.elementor-widescreen-position-right .elementor-icon-box-icon{display:inline-flex;flex:0 0 auto}.elementor-widget-icon-box.elementor-widescreen-position-right .elementor-icon-box-wrapper{text-align:left;flex-direction:row}.elementor-widget-icon-box.elementor-widescreen-position-right .elementor-icon-box-icon{margin-left:var(--icon-box-icon-margin,15px);margin-right:0;margin-bottom:unset}.elementor-widget-icon-box.elementor-widescreen-position-left .elementor-icon-box-wrapper{text-align:right;flex-direction:row-reverse}.elementor-widget-icon-box.elementor-widescreen-position-left .elementor-icon-box-icon{margin-right:var(--icon-box-icon-margin,15px);margin-left:0;margin-bottom:unset}.elementor-widget-icon-box.elementor-widescreen-position-top .elementor-icon-box-wrapper{display:block;text-align:center;flex-direction:unset}.elementor-widget-icon-box.elementor-widescreen-position-top .elementor-icon-box-icon{margin-bottom:var(--icon-box-icon-margin,15px);margin-right:auto;margin-left:auto}}@media (max-width:ELEMENTOR_SCREEN_LAPTOP_MAX){.elementor-widget-icon-box.elementor-laptop-position-left .elementor-icon-box-wrapper,.elementor-widget-icon-box.elementor-laptop-position-right .elementor-icon-box-wrapper{display:flex}.elementor-widget-icon-box.elementor-laptop-position-left .elementor-icon-box-icon,.elementor-widget-icon-box.elementor-laptop-position-right .elementor-icon-box-icon{display:inline-flex;flex:0 0 auto}.elementor-widget-icon-box.elementor-laptop-position-right .elementor-icon-box-wrapper{text-align:left;flex-direction:row}.elementor-widget-icon-box.elementor-laptop-position-right .elementor-icon-box-icon{margin-left:var(--icon-box-icon-margin,15px);margin-right:0;margin-bottom:unset}.elementor-widget-icon-box.elementor-laptop-position-left .elementor-icon-box-wrapper{text-align:right;flex-direction:row-reverse}.elementor-widget-icon-box.elementor-laptop-position-left .elementor-icon-box-icon{margin-right:var(--icon-box-icon-margin,15px);margin-left:0;margin-bottom:unset}.elementor-widget-icon-box.elementor-laptop-position-top .elementor-icon-box-wrapper{display:block;text-align:center;flex-direction:unset}.elementor-widget-icon-box.elementor-laptop-position-top .elementor-icon-box-icon{margin-bottom:var(--icon-box-icon-margin,15px);margin-right:auto;margin-left:auto}}@media (max-width:ELEMENTOR_SCREEN_TABLET_EXTRA_MAX){.elementor-widget-icon-box.elementor-tablet_extra-position-left .elementor-icon-box-wrapper,.elementor-widget-icon-box.elementor-tablet_extra-position-right .elementor-icon-box-wrapper{display:flex}.elementor-widget-icon-box.elementor-tablet_extra-position-left .elementor-icon-box-icon,.elementor-widget-icon-box.elementor-tablet_extra-position-right .elementor-icon-box-icon{display:inline-flex;flex:0 0 auto}.elementor-widget-icon-box.elementor-tablet_extra-position-right .elementor-icon-box-wrapper{text-align:left;flex-direction:row}.elementor-widget-icon-box.elementor-tablet_extra-position-right .elementor-icon-box-icon{margin-left:var(--icon-box-icon-margin,15px);margin-right:0;margin-bottom:unset}.elementor-widget-icon-box.elementor-tablet_extra-position-left .elementor-icon-box-wrapper{text-align:right;flex-direction:row-reverse}.elementor-widget-icon-box.elementor-tablet_extra-position-left .elementor-icon-box-icon{margin-right:var(--icon-box-icon-margin,15px);margin-left:0;margin-bottom:unset}.elementor-widget-icon-box.elementor-tablet_extra-position-top .elementor-icon-box-wrapper{display:block;text-align:center;flex-direction:unset}.elementor-widget-icon-box.elementor-tablet_extra-position-top .elementor-icon-box-icon{margin-bottom:var(--icon-box-icon-margin,15px);margin-right:auto;margin-left:auto}}@media (max-width:ELEMENTOR_SCREEN_TABLET_MAX){.elementor-widget-icon-box.elementor-tablet-position-left .elementor-icon-box-wrapper,.elementor-widget-icon-box.elementor-tablet-position-right .elementor-icon-box-wrapper{display:flex}.elementor-widget-icon-box.elementor-tablet-position-left .elementor-icon-box-icon,.elementor-widget-icon-box.elementor-tablet-position-right .elementor-icon-box-icon{display:inline-flex;flex:0 0 auto}.elementor-widget-icon-box.elementor-tablet-position-right .elementor-icon-box-wrapper{text-align:left;flex-direction:row}.elementor-widget-icon-box.elementor-tablet-position-right .elementor-icon-box-icon{margin-left:var(--icon-box-icon-margin,15px);margin-right:0;margin-bottom:unset}.elementor-widget-icon-box.elementor-tablet-position-left .elementor-icon-box-wrapper{text-align:right;flex-direction:row-reverse}.elementor-widget-icon-box.elementor-tablet-position-left .elementor-icon-box-icon{margin-right:var(--icon-box-icon-margin,15px);margin-left:0;margin-bottom:unset}.elementor-widget-icon-box.elementor-tablet-position-top .elementor-icon-box-wrapper{display:block;text-align:center;flex-direction:unset}.elementor-widget-icon-box.elementor-tablet-position-top .elementor-icon-box-icon{margin-bottom:var(--icon-box-icon-margin,15px);margin-right:auto;margin-left:auto}}@media (max-width:ELEMENTOR_SCREEN_MOBILE_EXTRA_MAX){.elementor-widget-icon-box.elementor-mobile_extra-position-left .elementor-icon-box-wrapper,.elementor-widget-icon-box.elementor-mobile_extra-position-right .elementor-icon-box-wrapper{display:flex}.elementor-widget-icon-box.elementor-mobile_extra-position-left .elementor-icon-box-icon,.elementor-widget-icon-box.elementor-mobile_extra-position-right .elementor-icon-box-icon{display:inline-flex;flex:0 0 auto}.elementor-widget-icon-box.elementor-mobile_extra-position-right .elementor-icon-box-wrapper{text-align:left;flex-direction:row}.elementor-widget-icon-box.elementor-mobile_extra-position-right .elementor-icon-box-icon{margin-left:var(--icon-box-icon-margin,15px);margin-right:0;margin-bottom:unset}.elementor-widget-icon-box.elementor-mobile_extra-position-left .elementor-icon-box-wrapper{text-align:right;flex-direction:row-reverse}.elementor-widget-icon-box.elementor-mobile_extra-position-left .elementor-icon-box-icon{margin-right:var(--icon-box-icon-margin,15px);margin-left:0;margin-bottom:unset}.elementor-widget-icon-box.elementor-mobile_extra-position-top .elementor-icon-box-wrapper{display:block;text-align:center;flex-direction:unset}.elementor-widget-icon-box.elementor-mobile_extra-position-top .elementor-icon-box-icon{margin-bottom:var(--icon-box-icon-margin,15px);margin-right:auto;margin-left:auto}}@media (max-width:ELEMENTOR_SCREEN_MOBILE_MAX){.elementor-widget-icon-box.elementor-mobile-position-left .elementor-icon-box-wrapper,.elementor-widget-icon-box.elementor-mobile-position-right .elementor-icon-box-wrapper{display:flex}.elementor-widget-icon-box.elementor-mobile-position-left .elementor-icon-box-icon,.elementor-widget-icon-box.elementor-mobile-position-right .elementor-icon-box-icon{display:inline-flex;flex:0 0 auto}.elementor-widget-icon-box.elementor-mobile-position-right .elementor-icon-box-wrapper{text-align:left;flex-direction:row}.elementor-widget-icon-box.elementor-mobile-position-right .elementor-icon-box-icon{margin-left:var(--icon-box-icon-margin,15px);margin-right:0;margin-bottom:unset}.elementor-widget-icon-box.elementor-mobile-position-left .elementor-icon-box-wrapper{text-align:right;flex-direction:row-reverse}.elementor-widget-icon-box.elementor-mobile-position-left .elementor-icon-box-icon{margin-right:var(--icon-box-icon-margin,15px);margin-left:0;margin-bottom:unset}.elementor-widget-icon-box.elementor-mobile-position-top .elementor-icon-box-wrapper{display:block;text-align:center;flex-direction:unset}.elementor-widget-icon-box.elementor-mobile-position-top .elementor-icon-box-icon{margin-bottom:var(--icon-box-icon-margin,15px);margin-right:auto;margin-left:auto}.elementor-widget-icon-box.elementor-position-left .elementor-icon-box-icon,.elementor-widget-icon-box.elementor-position-right .elementor-icon-box-icon{display:block;flex:unset}}.elementor-widget-icon-box .elementor-icon-box-title a{color:inherit}.elementor-widget-icon-box .elementor-icon-box-content{flex-grow:1}.elementor-widget-icon-box .elementor-icon-box-description{margin:0} \ No newline at end of file diff --git a/wp-content/plugins/elementor/assets/css/templates/widget-icon-box.min.css b/wp-content/plugins/elementor/assets/css/templates/widget-icon-box.min.css new file mode 100644 index 0000000..26bbb78 --- /dev/null +++ b/wp-content/plugins/elementor/assets/css/templates/widget-icon-box.min.css @@ -0,0 +1 @@ +.elementor-widget-icon-box .elementor-icon-box-wrapper{display:block;text-align:center}.elementor-widget-icon-box .elementor-icon-box-icon{margin-bottom:var(--icon-box-icon-margin,15px);margin-right:auto;margin-left:auto}@media (min-width:ELEMENTOR_SCREEN_MOBILE_NEXT){.elementor-widget-icon-box.elementor-vertical-align-top .elementor-icon-box-wrapper{align-items:flex-start}.elementor-widget-icon-box.elementor-vertical-align-middle .elementor-icon-box-wrapper{align-items:center}.elementor-widget-icon-box.elementor-vertical-align-bottom .elementor-icon-box-wrapper{align-items:flex-end}}.elementor-widget-icon-box.elementor-position-left .elementor-icon-box-wrapper,.elementor-widget-icon-box.elementor-position-right .elementor-icon-box-wrapper{display:flex}.elementor-widget-icon-box.elementor-position-left .elementor-icon-box-icon,.elementor-widget-icon-box.elementor-position-right .elementor-icon-box-icon{display:inline-flex;flex:0 0 auto}.elementor-widget-icon-box.elementor-position-right .elementor-icon-box-wrapper{text-align:right;flex-direction:row-reverse}.elementor-widget-icon-box.elementor-position-right .elementor-icon-box-icon{margin-left:var(--icon-box-icon-margin,15px);margin-right:0;margin-bottom:unset}.elementor-widget-icon-box.elementor-position-left .elementor-icon-box-wrapper{text-align:left;flex-direction:row}.elementor-widget-icon-box.elementor-position-left .elementor-icon-box-icon{margin-right:var(--icon-box-icon-margin,15px);margin-left:0;margin-bottom:unset}.elementor-widget-icon-box.elementor-position-top .elementor-icon-box-wrapper{display:block;text-align:center;flex-direction:unset}.elementor-widget-icon-box.elementor-position-top .elementor-icon-box-icon{margin-bottom:var(--icon-box-icon-margin,15px);margin-right:auto;margin-left:auto}@media (min-width:ELEMENTOR_SCREEN_WIDESCREEN_MIN){.elementor-widget-icon-box.elementor-widescreen-position-left .elementor-icon-box-wrapper,.elementor-widget-icon-box.elementor-widescreen-position-right .elementor-icon-box-wrapper{display:flex}.elementor-widget-icon-box.elementor-widescreen-position-left .elementor-icon-box-icon,.elementor-widget-icon-box.elementor-widescreen-position-right .elementor-icon-box-icon{display:inline-flex;flex:0 0 auto}.elementor-widget-icon-box.elementor-widescreen-position-right .elementor-icon-box-wrapper{text-align:right;flex-direction:row-reverse}.elementor-widget-icon-box.elementor-widescreen-position-right .elementor-icon-box-icon{margin-left:var(--icon-box-icon-margin,15px);margin-right:0;margin-bottom:unset}.elementor-widget-icon-box.elementor-widescreen-position-left .elementor-icon-box-wrapper{text-align:left;flex-direction:row}.elementor-widget-icon-box.elementor-widescreen-position-left .elementor-icon-box-icon{margin-right:var(--icon-box-icon-margin,15px);margin-left:0;margin-bottom:unset}.elementor-widget-icon-box.elementor-widescreen-position-top .elementor-icon-box-wrapper{display:block;text-align:center;flex-direction:unset}.elementor-widget-icon-box.elementor-widescreen-position-top .elementor-icon-box-icon{margin-bottom:var(--icon-box-icon-margin,15px);margin-right:auto;margin-left:auto}}@media (max-width:ELEMENTOR_SCREEN_LAPTOP_MAX){.elementor-widget-icon-box.elementor-laptop-position-left .elementor-icon-box-wrapper,.elementor-widget-icon-box.elementor-laptop-position-right .elementor-icon-box-wrapper{display:flex}.elementor-widget-icon-box.elementor-laptop-position-left .elementor-icon-box-icon,.elementor-widget-icon-box.elementor-laptop-position-right .elementor-icon-box-icon{display:inline-flex;flex:0 0 auto}.elementor-widget-icon-box.elementor-laptop-position-right .elementor-icon-box-wrapper{text-align:right;flex-direction:row-reverse}.elementor-widget-icon-box.elementor-laptop-position-right .elementor-icon-box-icon{margin-left:var(--icon-box-icon-margin,15px);margin-right:0;margin-bottom:unset}.elementor-widget-icon-box.elementor-laptop-position-left .elementor-icon-box-wrapper{text-align:left;flex-direction:row}.elementor-widget-icon-box.elementor-laptop-position-left .elementor-icon-box-icon{margin-right:var(--icon-box-icon-margin,15px);margin-left:0;margin-bottom:unset}.elementor-widget-icon-box.elementor-laptop-position-top .elementor-icon-box-wrapper{display:block;text-align:center;flex-direction:unset}.elementor-widget-icon-box.elementor-laptop-position-top .elementor-icon-box-icon{margin-bottom:var(--icon-box-icon-margin,15px);margin-right:auto;margin-left:auto}}@media (max-width:ELEMENTOR_SCREEN_TABLET_EXTRA_MAX){.elementor-widget-icon-box.elementor-tablet_extra-position-left .elementor-icon-box-wrapper,.elementor-widget-icon-box.elementor-tablet_extra-position-right .elementor-icon-box-wrapper{display:flex}.elementor-widget-icon-box.elementor-tablet_extra-position-left .elementor-icon-box-icon,.elementor-widget-icon-box.elementor-tablet_extra-position-right .elementor-icon-box-icon{display:inline-flex;flex:0 0 auto}.elementor-widget-icon-box.elementor-tablet_extra-position-right .elementor-icon-box-wrapper{text-align:right;flex-direction:row-reverse}.elementor-widget-icon-box.elementor-tablet_extra-position-right .elementor-icon-box-icon{margin-left:var(--icon-box-icon-margin,15px);margin-right:0;margin-bottom:unset}.elementor-widget-icon-box.elementor-tablet_extra-position-left .elementor-icon-box-wrapper{text-align:left;flex-direction:row}.elementor-widget-icon-box.elementor-tablet_extra-position-left .elementor-icon-box-icon{margin-right:var(--icon-box-icon-margin,15px);margin-left:0;margin-bottom:unset}.elementor-widget-icon-box.elementor-tablet_extra-position-top .elementor-icon-box-wrapper{display:block;text-align:center;flex-direction:unset}.elementor-widget-icon-box.elementor-tablet_extra-position-top .elementor-icon-box-icon{margin-bottom:var(--icon-box-icon-margin,15px);margin-right:auto;margin-left:auto}}@media (max-width:ELEMENTOR_SCREEN_TABLET_MAX){.elementor-widget-icon-box.elementor-tablet-position-left .elementor-icon-box-wrapper,.elementor-widget-icon-box.elementor-tablet-position-right .elementor-icon-box-wrapper{display:flex}.elementor-widget-icon-box.elementor-tablet-position-left .elementor-icon-box-icon,.elementor-widget-icon-box.elementor-tablet-position-right .elementor-icon-box-icon{display:inline-flex;flex:0 0 auto}.elementor-widget-icon-box.elementor-tablet-position-right .elementor-icon-box-wrapper{text-align:right;flex-direction:row-reverse}.elementor-widget-icon-box.elementor-tablet-position-right .elementor-icon-box-icon{margin-left:var(--icon-box-icon-margin,15px);margin-right:0;margin-bottom:unset}.elementor-widget-icon-box.elementor-tablet-position-left .elementor-icon-box-wrapper{text-align:left;flex-direction:row}.elementor-widget-icon-box.elementor-tablet-position-left .elementor-icon-box-icon{margin-right:var(--icon-box-icon-margin,15px);margin-left:0;margin-bottom:unset}.elementor-widget-icon-box.elementor-tablet-position-top .elementor-icon-box-wrapper{display:block;text-align:center;flex-direction:unset}.elementor-widget-icon-box.elementor-tablet-position-top .elementor-icon-box-icon{margin-bottom:var(--icon-box-icon-margin,15px);margin-right:auto;margin-left:auto}}@media (max-width:ELEMENTOR_SCREEN_MOBILE_EXTRA_MAX){.elementor-widget-icon-box.elementor-mobile_extra-position-left .elementor-icon-box-wrapper,.elementor-widget-icon-box.elementor-mobile_extra-position-right .elementor-icon-box-wrapper{display:flex}.elementor-widget-icon-box.elementor-mobile_extra-position-left .elementor-icon-box-icon,.elementor-widget-icon-box.elementor-mobile_extra-position-right .elementor-icon-box-icon{display:inline-flex;flex:0 0 auto}.elementor-widget-icon-box.elementor-mobile_extra-position-right .elementor-icon-box-wrapper{text-align:right;flex-direction:row-reverse}.elementor-widget-icon-box.elementor-mobile_extra-position-right .elementor-icon-box-icon{margin-left:var(--icon-box-icon-margin,15px);margin-right:0;margin-bottom:unset}.elementor-widget-icon-box.elementor-mobile_extra-position-left .elementor-icon-box-wrapper{text-align:left;flex-direction:row}.elementor-widget-icon-box.elementor-mobile_extra-position-left .elementor-icon-box-icon{margin-right:var(--icon-box-icon-margin,15px);margin-left:0;margin-bottom:unset}.elementor-widget-icon-box.elementor-mobile_extra-position-top .elementor-icon-box-wrapper{display:block;text-align:center;flex-direction:unset}.elementor-widget-icon-box.elementor-mobile_extra-position-top .elementor-icon-box-icon{margin-bottom:var(--icon-box-icon-margin,15px);margin-right:auto;margin-left:auto}}@media (max-width:ELEMENTOR_SCREEN_MOBILE_MAX){.elementor-widget-icon-box.elementor-mobile-position-left .elementor-icon-box-wrapper,.elementor-widget-icon-box.elementor-mobile-position-right .elementor-icon-box-wrapper{display:flex}.elementor-widget-icon-box.elementor-mobile-position-left .elementor-icon-box-icon,.elementor-widget-icon-box.elementor-mobile-position-right .elementor-icon-box-icon{display:inline-flex;flex:0 0 auto}.elementor-widget-icon-box.elementor-mobile-position-right .elementor-icon-box-wrapper{text-align:right;flex-direction:row-reverse}.elementor-widget-icon-box.elementor-mobile-position-right .elementor-icon-box-icon{margin-left:var(--icon-box-icon-margin,15px);margin-right:0;margin-bottom:unset}.elementor-widget-icon-box.elementor-mobile-position-left .elementor-icon-box-wrapper{text-align:left;flex-direction:row}.elementor-widget-icon-box.elementor-mobile-position-left .elementor-icon-box-icon{margin-right:var(--icon-box-icon-margin,15px);margin-left:0;margin-bottom:unset}.elementor-widget-icon-box.elementor-mobile-position-top .elementor-icon-box-wrapper{display:block;text-align:center;flex-direction:unset}.elementor-widget-icon-box.elementor-mobile-position-top .elementor-icon-box-icon{margin-bottom:var(--icon-box-icon-margin,15px);margin-right:auto;margin-left:auto}.elementor-widget-icon-box.elementor-position-left .elementor-icon-box-icon,.elementor-widget-icon-box.elementor-position-right .elementor-icon-box-icon{display:block;flex:unset}}.elementor-widget-icon-box .elementor-icon-box-title a{color:inherit}.elementor-widget-icon-box .elementor-icon-box-content{flex-grow:1}.elementor-widget-icon-box .elementor-icon-box-description{margin:0} \ No newline at end of file diff --git a/wp-content/plugins/elementor/assets/css/templates/widget-icon-list-rtl.min.css b/wp-content/plugins/elementor/assets/css/templates/widget-icon-list-rtl.min.css new file mode 100644 index 0000000..2436712 --- /dev/null +++ b/wp-content/plugins/elementor/assets/css/templates/widget-icon-list-rtl.min.css @@ -0,0 +1 @@ +.elementor-widget.elementor-icon-list--layout-inline .elementor-widget-container{overflow:hidden}.elementor-widget .elementor-icon-list-items.elementor-inline-items{margin-right:-8px;margin-left:-8px}.elementor-widget .elementor-icon-list-items.elementor-inline-items .elementor-icon-list-item{margin-right:8px;margin-left:8px}.elementor-widget .elementor-icon-list-items.elementor-inline-items .elementor-icon-list-item:after{width:auto;left:auto;right:auto;position:relative;height:100%;border-top:0;border-bottom:0;border-right:0;border-left-width:1px;border-style:solid;left:-8px}.elementor-widget .elementor-icon-list-items{list-style-type:none;margin:0;padding:0}.elementor-widget .elementor-icon-list-item{margin:0;padding:0;position:relative}.elementor-widget .elementor-icon-list-item:after{position:absolute;bottom:0;width:100%}.elementor-widget .elementor-icon-list-item,.elementor-widget .elementor-icon-list-item a{display:flex;font-size:inherit;align-items:var(--icon-vertical-align,center)}.elementor-widget .elementor-icon-list-icon+.elementor-icon-list-text{align-self:center;padding-right:5px}.elementor-widget .elementor-icon-list-icon{display:flex;position:relative;top:var(--icon-vertical-offset,initial)}.elementor-widget .elementor-icon-list-icon svg{width:var(--e-icon-list-icon-size,1em);height:var(--e-icon-list-icon-size,1em)}.elementor-widget .elementor-icon-list-icon i{width:1.25em;font-size:var(--e-icon-list-icon-size)}.elementor-widget.elementor-widget-icon-list .elementor-icon-list-icon{text-align:var(--e-icon-list-icon-align)}.elementor-widget.elementor-widget-icon-list .elementor-icon-list-icon svg{margin:var(--e-icon-list-icon-margin,0 calc(var(--e-icon-list-icon-size, 1em) * .25) 0 0)}.elementor-widget.elementor-list-item-link-full_width a{width:100%}.elementor-widget.elementor-align-center .elementor-icon-list-item,.elementor-widget.elementor-align-center .elementor-icon-list-item a{justify-content:center}.elementor-widget.elementor-align-center .elementor-icon-list-item:after{margin:auto}.elementor-widget.elementor-align-center .elementor-inline-items{justify-content:center}.elementor-widget.elementor-align-left .elementor-icon-list-item,.elementor-widget.elementor-align-left .elementor-icon-list-item a{justify-content:flex-end;text-align:left}.elementor-widget.elementor-align-left .elementor-inline-items{justify-content:flex-end}.elementor-widget.elementor-align-right .elementor-icon-list-item,.elementor-widget.elementor-align-right .elementor-icon-list-item a{justify-content:flex-start;text-align:right}.elementor-widget.elementor-align-right .elementor-icon-list-items{justify-content:flex-start}.elementor-widget:not(.elementor-align-right) .elementor-icon-list-item:after{right:0}.elementor-widget:not(.elementor-align-left) .elementor-icon-list-item:after{left:0}@media (min-width:ELEMENTOR_SCREEN_WIDESCREEN_MIN){.elementor-widget.elementor-widescreen-align-center .elementor-icon-list-item,.elementor-widget.elementor-widescreen-align-center .elementor-icon-list-item a{justify-content:center}.elementor-widget.elementor-widescreen-align-center .elementor-icon-list-item:after{margin:auto}.elementor-widget.elementor-widescreen-align-center .elementor-inline-items{justify-content:center}.elementor-widget.elementor-widescreen-align-left .elementor-icon-list-item,.elementor-widget.elementor-widescreen-align-left .elementor-icon-list-item a{justify-content:flex-end;text-align:left}.elementor-widget.elementor-widescreen-align-left .elementor-inline-items{justify-content:flex-end}.elementor-widget.elementor-widescreen-align-right .elementor-icon-list-item,.elementor-widget.elementor-widescreen-align-right .elementor-icon-list-item a{justify-content:flex-start;text-align:right}.elementor-widget.elementor-widescreen-align-right .elementor-icon-list-items{justify-content:flex-start}.elementor-widget:not(.elementor-widescreen-align-right) .elementor-icon-list-item:after{right:0}.elementor-widget:not(.elementor-widescreen-align-left) .elementor-icon-list-item:after{left:0}}@media (max-width:ELEMENTOR_SCREEN_LAPTOP_MAX){.elementor-widget.elementor-laptop-align-center .elementor-icon-list-item,.elementor-widget.elementor-laptop-align-center .elementor-icon-list-item a{justify-content:center}.elementor-widget.elementor-laptop-align-center .elementor-icon-list-item:after{margin:auto}.elementor-widget.elementor-laptop-align-center .elementor-inline-items{justify-content:center}.elementor-widget.elementor-laptop-align-left .elementor-icon-list-item,.elementor-widget.elementor-laptop-align-left .elementor-icon-list-item a{justify-content:flex-end;text-align:left}.elementor-widget.elementor-laptop-align-left .elementor-inline-items{justify-content:flex-end}.elementor-widget.elementor-laptop-align-right .elementor-icon-list-item,.elementor-widget.elementor-laptop-align-right .elementor-icon-list-item a{justify-content:flex-start;text-align:right}.elementor-widget.elementor-laptop-align-right .elementor-icon-list-items{justify-content:flex-start}.elementor-widget:not(.elementor-laptop-align-right) .elementor-icon-list-item:after{right:0}.elementor-widget:not(.elementor-laptop-align-left) .elementor-icon-list-item:after{left:0}}@media (max-width:ELEMENTOR_SCREEN_TABLET_EXTRA_MAX){.elementor-widget.elementor-tablet_extra-align-center .elementor-icon-list-item,.elementor-widget.elementor-tablet_extra-align-center .elementor-icon-list-item a{justify-content:center}.elementor-widget.elementor-tablet_extra-align-center .elementor-icon-list-item:after{margin:auto}.elementor-widget.elementor-tablet_extra-align-center .elementor-inline-items{justify-content:center}.elementor-widget.elementor-tablet_extra-align-left .elementor-icon-list-item,.elementor-widget.elementor-tablet_extra-align-left .elementor-icon-list-item a{justify-content:flex-end;text-align:left}.elementor-widget.elementor-tablet_extra-align-left .elementor-inline-items{justify-content:flex-end}.elementor-widget.elementor-tablet_extra-align-right .elementor-icon-list-item,.elementor-widget.elementor-tablet_extra-align-right .elementor-icon-list-item a{justify-content:flex-start;text-align:right}.elementor-widget.elementor-tablet_extra-align-right .elementor-icon-list-items{justify-content:flex-start}.elementor-widget:not(.elementor-tablet_extra-align-right) .elementor-icon-list-item:after{right:0}.elementor-widget:not(.elementor-tablet_extra-align-left) .elementor-icon-list-item:after{left:0}}@media (max-width:ELEMENTOR_SCREEN_TABLET_MAX){.elementor-widget.elementor-tablet-align-center .elementor-icon-list-item,.elementor-widget.elementor-tablet-align-center .elementor-icon-list-item a{justify-content:center}.elementor-widget.elementor-tablet-align-center .elementor-icon-list-item:after{margin:auto}.elementor-widget.elementor-tablet-align-center .elementor-inline-items{justify-content:center}.elementor-widget.elementor-tablet-align-left .elementor-icon-list-item,.elementor-widget.elementor-tablet-align-left .elementor-icon-list-item a{justify-content:flex-end;text-align:left}.elementor-widget.elementor-tablet-align-left .elementor-inline-items{justify-content:flex-end}.elementor-widget.elementor-tablet-align-right .elementor-icon-list-item,.elementor-widget.elementor-tablet-align-right .elementor-icon-list-item a{justify-content:flex-start;text-align:right}.elementor-widget.elementor-tablet-align-right .elementor-icon-list-items{justify-content:flex-start}.elementor-widget:not(.elementor-tablet-align-right) .elementor-icon-list-item:after{right:0}.elementor-widget:not(.elementor-tablet-align-left) .elementor-icon-list-item:after{left:0}}@media (max-width:ELEMENTOR_SCREEN_MOBILE_EXTRA_MAX){.elementor-widget.elementor-mobile_extra-align-center .elementor-icon-list-item,.elementor-widget.elementor-mobile_extra-align-center .elementor-icon-list-item a{justify-content:center}.elementor-widget.elementor-mobile_extra-align-center .elementor-icon-list-item:after{margin:auto}.elementor-widget.elementor-mobile_extra-align-center .elementor-inline-items{justify-content:center}.elementor-widget.elementor-mobile_extra-align-left .elementor-icon-list-item,.elementor-widget.elementor-mobile_extra-align-left .elementor-icon-list-item a{justify-content:flex-end;text-align:left}.elementor-widget.elementor-mobile_extra-align-left .elementor-inline-items{justify-content:flex-end}.elementor-widget.elementor-mobile_extra-align-right .elementor-icon-list-item,.elementor-widget.elementor-mobile_extra-align-right .elementor-icon-list-item a{justify-content:flex-start;text-align:right}.elementor-widget.elementor-mobile_extra-align-right .elementor-icon-list-items{justify-content:flex-start}.elementor-widget:not(.elementor-mobile_extra-align-right) .elementor-icon-list-item:after{right:0}.elementor-widget:not(.elementor-mobile_extra-align-left) .elementor-icon-list-item:after{left:0}}@media (max-width:ELEMENTOR_SCREEN_MOBILE_MAX){.elementor-widget.elementor-mobile-align-center .elementor-icon-list-item,.elementor-widget.elementor-mobile-align-center .elementor-icon-list-item a{justify-content:center}.elementor-widget.elementor-mobile-align-center .elementor-icon-list-item:after{margin:auto}.elementor-widget.elementor-mobile-align-center .elementor-inline-items{justify-content:center}.elementor-widget.elementor-mobile-align-left .elementor-icon-list-item,.elementor-widget.elementor-mobile-align-left .elementor-icon-list-item a{justify-content:flex-end;text-align:left}.elementor-widget.elementor-mobile-align-left .elementor-inline-items{justify-content:flex-end}.elementor-widget.elementor-mobile-align-right .elementor-icon-list-item,.elementor-widget.elementor-mobile-align-right .elementor-icon-list-item a{justify-content:flex-start;text-align:right}.elementor-widget.elementor-mobile-align-right .elementor-icon-list-items{justify-content:flex-start}.elementor-widget:not(.elementor-mobile-align-right) .elementor-icon-list-item:after{right:0}.elementor-widget:not(.elementor-mobile-align-left) .elementor-icon-list-item:after{left:0}} \ No newline at end of file diff --git a/wp-content/plugins/elementor/assets/css/templates/widget-icon-list.min.css b/wp-content/plugins/elementor/assets/css/templates/widget-icon-list.min.css new file mode 100644 index 0000000..a3da759 --- /dev/null +++ b/wp-content/plugins/elementor/assets/css/templates/widget-icon-list.min.css @@ -0,0 +1 @@ +.elementor-widget.elementor-icon-list--layout-inline .elementor-widget-container{overflow:hidden}.elementor-widget .elementor-icon-list-items.elementor-inline-items{margin-right:-8px;margin-left:-8px}.elementor-widget .elementor-icon-list-items.elementor-inline-items .elementor-icon-list-item{margin-right:8px;margin-left:8px}.elementor-widget .elementor-icon-list-items.elementor-inline-items .elementor-icon-list-item:after{width:auto;left:auto;right:auto;position:relative;height:100%;border-top:0;border-bottom:0;border-right:0;border-left-width:1px;border-style:solid;right:-8px}.elementor-widget .elementor-icon-list-items{list-style-type:none;margin:0;padding:0}.elementor-widget .elementor-icon-list-item{margin:0;padding:0;position:relative}.elementor-widget .elementor-icon-list-item:after{position:absolute;bottom:0;width:100%}.elementor-widget .elementor-icon-list-item,.elementor-widget .elementor-icon-list-item a{display:flex;font-size:inherit;align-items:var(--icon-vertical-align,center)}.elementor-widget .elementor-icon-list-icon+.elementor-icon-list-text{align-self:center;padding-left:5px}.elementor-widget .elementor-icon-list-icon{display:flex;position:relative;top:var(--icon-vertical-offset,initial)}.elementor-widget .elementor-icon-list-icon svg{width:var(--e-icon-list-icon-size,1em);height:var(--e-icon-list-icon-size,1em)}.elementor-widget .elementor-icon-list-icon i{width:1.25em;font-size:var(--e-icon-list-icon-size)}.elementor-widget.elementor-widget-icon-list .elementor-icon-list-icon{text-align:var(--e-icon-list-icon-align)}.elementor-widget.elementor-widget-icon-list .elementor-icon-list-icon svg{margin:var(--e-icon-list-icon-margin,0 calc(var(--e-icon-list-icon-size, 1em) * .25) 0 0)}.elementor-widget.elementor-list-item-link-full_width a{width:100%}.elementor-widget.elementor-align-center .elementor-icon-list-item,.elementor-widget.elementor-align-center .elementor-icon-list-item a{justify-content:center}.elementor-widget.elementor-align-center .elementor-icon-list-item:after{margin:auto}.elementor-widget.elementor-align-center .elementor-inline-items{justify-content:center}.elementor-widget.elementor-align-left .elementor-icon-list-item,.elementor-widget.elementor-align-left .elementor-icon-list-item a{justify-content:flex-start;text-align:left}.elementor-widget.elementor-align-left .elementor-inline-items{justify-content:flex-start}.elementor-widget.elementor-align-right .elementor-icon-list-item,.elementor-widget.elementor-align-right .elementor-icon-list-item a{justify-content:flex-end;text-align:right}.elementor-widget.elementor-align-right .elementor-icon-list-items{justify-content:flex-end}.elementor-widget:not(.elementor-align-right) .elementor-icon-list-item:after{left:0}.elementor-widget:not(.elementor-align-left) .elementor-icon-list-item:after{right:0}@media (min-width:ELEMENTOR_SCREEN_WIDESCREEN_MIN){.elementor-widget.elementor-widescreen-align-center .elementor-icon-list-item,.elementor-widget.elementor-widescreen-align-center .elementor-icon-list-item a{justify-content:center}.elementor-widget.elementor-widescreen-align-center .elementor-icon-list-item:after{margin:auto}.elementor-widget.elementor-widescreen-align-center .elementor-inline-items{justify-content:center}.elementor-widget.elementor-widescreen-align-left .elementor-icon-list-item,.elementor-widget.elementor-widescreen-align-left .elementor-icon-list-item a{justify-content:flex-start;text-align:left}.elementor-widget.elementor-widescreen-align-left .elementor-inline-items{justify-content:flex-start}.elementor-widget.elementor-widescreen-align-right .elementor-icon-list-item,.elementor-widget.elementor-widescreen-align-right .elementor-icon-list-item a{justify-content:flex-end;text-align:right}.elementor-widget.elementor-widescreen-align-right .elementor-icon-list-items{justify-content:flex-end}.elementor-widget:not(.elementor-widescreen-align-right) .elementor-icon-list-item:after{left:0}.elementor-widget:not(.elementor-widescreen-align-left) .elementor-icon-list-item:after{right:0}}@media (max-width:ELEMENTOR_SCREEN_LAPTOP_MAX){.elementor-widget.elementor-laptop-align-center .elementor-icon-list-item,.elementor-widget.elementor-laptop-align-center .elementor-icon-list-item a{justify-content:center}.elementor-widget.elementor-laptop-align-center .elementor-icon-list-item:after{margin:auto}.elementor-widget.elementor-laptop-align-center .elementor-inline-items{justify-content:center}.elementor-widget.elementor-laptop-align-left .elementor-icon-list-item,.elementor-widget.elementor-laptop-align-left .elementor-icon-list-item a{justify-content:flex-start;text-align:left}.elementor-widget.elementor-laptop-align-left .elementor-inline-items{justify-content:flex-start}.elementor-widget.elementor-laptop-align-right .elementor-icon-list-item,.elementor-widget.elementor-laptop-align-right .elementor-icon-list-item a{justify-content:flex-end;text-align:right}.elementor-widget.elementor-laptop-align-right .elementor-icon-list-items{justify-content:flex-end}.elementor-widget:not(.elementor-laptop-align-right) .elementor-icon-list-item:after{left:0}.elementor-widget:not(.elementor-laptop-align-left) .elementor-icon-list-item:after{right:0}}@media (max-width:ELEMENTOR_SCREEN_TABLET_EXTRA_MAX){.elementor-widget.elementor-tablet_extra-align-center .elementor-icon-list-item,.elementor-widget.elementor-tablet_extra-align-center .elementor-icon-list-item a{justify-content:center}.elementor-widget.elementor-tablet_extra-align-center .elementor-icon-list-item:after{margin:auto}.elementor-widget.elementor-tablet_extra-align-center .elementor-inline-items{justify-content:center}.elementor-widget.elementor-tablet_extra-align-left .elementor-icon-list-item,.elementor-widget.elementor-tablet_extra-align-left .elementor-icon-list-item a{justify-content:flex-start;text-align:left}.elementor-widget.elementor-tablet_extra-align-left .elementor-inline-items{justify-content:flex-start}.elementor-widget.elementor-tablet_extra-align-right .elementor-icon-list-item,.elementor-widget.elementor-tablet_extra-align-right .elementor-icon-list-item a{justify-content:flex-end;text-align:right}.elementor-widget.elementor-tablet_extra-align-right .elementor-icon-list-items{justify-content:flex-end}.elementor-widget:not(.elementor-tablet_extra-align-right) .elementor-icon-list-item:after{left:0}.elementor-widget:not(.elementor-tablet_extra-align-left) .elementor-icon-list-item:after{right:0}}@media (max-width:ELEMENTOR_SCREEN_TABLET_MAX){.elementor-widget.elementor-tablet-align-center .elementor-icon-list-item,.elementor-widget.elementor-tablet-align-center .elementor-icon-list-item a{justify-content:center}.elementor-widget.elementor-tablet-align-center .elementor-icon-list-item:after{margin:auto}.elementor-widget.elementor-tablet-align-center .elementor-inline-items{justify-content:center}.elementor-widget.elementor-tablet-align-left .elementor-icon-list-item,.elementor-widget.elementor-tablet-align-left .elementor-icon-list-item a{justify-content:flex-start;text-align:left}.elementor-widget.elementor-tablet-align-left .elementor-inline-items{justify-content:flex-start}.elementor-widget.elementor-tablet-align-right .elementor-icon-list-item,.elementor-widget.elementor-tablet-align-right .elementor-icon-list-item a{justify-content:flex-end;text-align:right}.elementor-widget.elementor-tablet-align-right .elementor-icon-list-items{justify-content:flex-end}.elementor-widget:not(.elementor-tablet-align-right) .elementor-icon-list-item:after{left:0}.elementor-widget:not(.elementor-tablet-align-left) .elementor-icon-list-item:after{right:0}}@media (max-width:ELEMENTOR_SCREEN_MOBILE_EXTRA_MAX){.elementor-widget.elementor-mobile_extra-align-center .elementor-icon-list-item,.elementor-widget.elementor-mobile_extra-align-center .elementor-icon-list-item a{justify-content:center}.elementor-widget.elementor-mobile_extra-align-center .elementor-icon-list-item:after{margin:auto}.elementor-widget.elementor-mobile_extra-align-center .elementor-inline-items{justify-content:center}.elementor-widget.elementor-mobile_extra-align-left .elementor-icon-list-item,.elementor-widget.elementor-mobile_extra-align-left .elementor-icon-list-item a{justify-content:flex-start;text-align:left}.elementor-widget.elementor-mobile_extra-align-left .elementor-inline-items{justify-content:flex-start}.elementor-widget.elementor-mobile_extra-align-right .elementor-icon-list-item,.elementor-widget.elementor-mobile_extra-align-right .elementor-icon-list-item a{justify-content:flex-end;text-align:right}.elementor-widget.elementor-mobile_extra-align-right .elementor-icon-list-items{justify-content:flex-end}.elementor-widget:not(.elementor-mobile_extra-align-right) .elementor-icon-list-item:after{left:0}.elementor-widget:not(.elementor-mobile_extra-align-left) .elementor-icon-list-item:after{right:0}}@media (max-width:ELEMENTOR_SCREEN_MOBILE_MAX){.elementor-widget.elementor-mobile-align-center .elementor-icon-list-item,.elementor-widget.elementor-mobile-align-center .elementor-icon-list-item a{justify-content:center}.elementor-widget.elementor-mobile-align-center .elementor-icon-list-item:after{margin:auto}.elementor-widget.elementor-mobile-align-center .elementor-inline-items{justify-content:center}.elementor-widget.elementor-mobile-align-left .elementor-icon-list-item,.elementor-widget.elementor-mobile-align-left .elementor-icon-list-item a{justify-content:flex-start;text-align:left}.elementor-widget.elementor-mobile-align-left .elementor-inline-items{justify-content:flex-start}.elementor-widget.elementor-mobile-align-right .elementor-icon-list-item,.elementor-widget.elementor-mobile-align-right .elementor-icon-list-item a{justify-content:flex-end;text-align:right}.elementor-widget.elementor-mobile-align-right .elementor-icon-list-items{justify-content:flex-end}.elementor-widget:not(.elementor-mobile-align-right) .elementor-icon-list-item:after{left:0}.elementor-widget:not(.elementor-mobile-align-left) .elementor-icon-list-item:after{right:0}} \ No newline at end of file diff --git a/wp-content/plugins/elementor/assets/css/templates/widget-image-box-rtl.min.css b/wp-content/plugins/elementor/assets/css/templates/widget-image-box-rtl.min.css new file mode 100644 index 0000000..4a3153d --- /dev/null +++ b/wp-content/plugins/elementor/assets/css/templates/widget-image-box-rtl.min.css @@ -0,0 +1 @@ +.elementor-widget-image-box .elementor-image-box-content{width:100%}@media (min-width:ELEMENTOR_SCREEN_MOBILE_NEXT){.elementor-widget-image-box.elementor-position-left .elementor-image-box-wrapper,.elementor-widget-image-box.elementor-position-right .elementor-image-box-wrapper{display:flex}.elementor-widget-image-box.elementor-position-right .elementor-image-box-wrapper{text-align:left;flex-direction:row}.elementor-widget-image-box.elementor-position-left .elementor-image-box-wrapper{text-align:right;flex-direction:row-reverse}.elementor-widget-image-box.elementor-position-top .elementor-image-box-img{margin:auto}.elementor-widget-image-box.elementor-vertical-align-top .elementor-image-box-wrapper{align-items:flex-start}.elementor-widget-image-box.elementor-vertical-align-middle .elementor-image-box-wrapper{align-items:center}.elementor-widget-image-box.elementor-vertical-align-bottom .elementor-image-box-wrapper{align-items:flex-end}}@media (max-width:ELEMENTOR_SCREEN_MOBILE_MAX){.elementor-widget-image-box .elementor-image-box-img{margin-left:auto!important;margin-right:auto!important;margin-bottom:15px}}.elementor-widget-image-box .elementor-image-box-img{display:inline-block}.elementor-widget-image-box .elementor-image-box-title a{color:inherit}.elementor-widget-image-box .elementor-image-box-wrapper{text-align:center}.elementor-widget-image-box .elementor-image-box-description{margin:0} \ No newline at end of file diff --git a/wp-content/plugins/elementor/assets/css/templates/widget-image-box.min.css b/wp-content/plugins/elementor/assets/css/templates/widget-image-box.min.css new file mode 100644 index 0000000..3cc70e3 --- /dev/null +++ b/wp-content/plugins/elementor/assets/css/templates/widget-image-box.min.css @@ -0,0 +1 @@ +.elementor-widget-image-box .elementor-image-box-content{width:100%}@media (min-width:ELEMENTOR_SCREEN_MOBILE_NEXT){.elementor-widget-image-box.elementor-position-left .elementor-image-box-wrapper,.elementor-widget-image-box.elementor-position-right .elementor-image-box-wrapper{display:flex}.elementor-widget-image-box.elementor-position-right .elementor-image-box-wrapper{text-align:right;flex-direction:row-reverse}.elementor-widget-image-box.elementor-position-left .elementor-image-box-wrapper{text-align:left;flex-direction:row}.elementor-widget-image-box.elementor-position-top .elementor-image-box-img{margin:auto}.elementor-widget-image-box.elementor-vertical-align-top .elementor-image-box-wrapper{align-items:flex-start}.elementor-widget-image-box.elementor-vertical-align-middle .elementor-image-box-wrapper{align-items:center}.elementor-widget-image-box.elementor-vertical-align-bottom .elementor-image-box-wrapper{align-items:flex-end}}@media (max-width:ELEMENTOR_SCREEN_MOBILE_MAX){.elementor-widget-image-box .elementor-image-box-img{margin-left:auto!important;margin-right:auto!important;margin-bottom:15px}}.elementor-widget-image-box .elementor-image-box-img{display:inline-block}.elementor-widget-image-box .elementor-image-box-title a{color:inherit}.elementor-widget-image-box .elementor-image-box-wrapper{text-align:center}.elementor-widget-image-box .elementor-image-box-description{margin:0} \ No newline at end of file diff --git a/wp-content/plugins/elementor/assets/css/templates/widget-image-gallery-rtl.min.css b/wp-content/plugins/elementor/assets/css/templates/widget-image-gallery-rtl.min.css new file mode 100644 index 0000000..b31b865 --- /dev/null +++ b/wp-content/plugins/elementor/assets/css/templates/widget-image-gallery-rtl.min.css @@ -0,0 +1 @@ +.elementor-image-gallery .gallery-item{display:inline-block;text-align:center;vertical-align:top;width:100%;max-width:100%;margin:0 auto}.elementor-image-gallery .gallery-item img{margin:0 auto}.elementor-image-gallery .gallery-item .gallery-caption{margin:0}.elementor-image-gallery figure img{display:block}.elementor-image-gallery figure figcaption{width:100%}.gallery-spacing-custom .elementor-image-gallery .gallery-icon{padding:0}@media (min-width:ELEMENTOR_SCREEN_MOBILE_NEXT){.elementor-image-gallery .gallery-columns-2 .gallery-item{max-width:50%}.elementor-image-gallery .gallery-columns-3 .gallery-item{max-width:33.33%}.elementor-image-gallery .gallery-columns-4 .gallery-item{max-width:25%}.elementor-image-gallery .gallery-columns-5 .gallery-item{max-width:20%}.elementor-image-gallery .gallery-columns-6 .gallery-item{max-width:16.666%}.elementor-image-gallery .gallery-columns-7 .gallery-item{max-width:14.28%}.elementor-image-gallery .gallery-columns-8 .gallery-item{max-width:12.5%}.elementor-image-gallery .gallery-columns-9 .gallery-item{max-width:11.11%}.elementor-image-gallery .gallery-columns-10 .gallery-item{max-width:10%}}@media (min-width:480px) and (max-width:ELEMENTOR_SCREEN_MOBILE_MAX){.elementor-image-gallery .gallery.gallery-columns-2 .gallery-item,.elementor-image-gallery .gallery.gallery-columns-3 .gallery-item,.elementor-image-gallery .gallery.gallery-columns-4 .gallery-item,.elementor-image-gallery .gallery.gallery-columns-5 .gallery-item,.elementor-image-gallery .gallery.gallery-columns-6 .gallery-item,.elementor-image-gallery .gallery.gallery-columns-7 .gallery-item,.elementor-image-gallery .gallery.gallery-columns-8 .gallery-item,.elementor-image-gallery .gallery.gallery-columns-9 .gallery-item,.elementor-image-gallery .gallery.gallery-columns-10 .gallery-item{max-width:50%}}@media (max-width:479px){.elementor-image-gallery .gallery.gallery-columns-2 .gallery-item,.elementor-image-gallery .gallery.gallery-columns-3 .gallery-item,.elementor-image-gallery .gallery.gallery-columns-4 .gallery-item,.elementor-image-gallery .gallery.gallery-columns-5 .gallery-item,.elementor-image-gallery .gallery.gallery-columns-6 .gallery-item,.elementor-image-gallery .gallery.gallery-columns-7 .gallery-item,.elementor-image-gallery .gallery.gallery-columns-8 .gallery-item,.elementor-image-gallery .gallery.gallery-columns-9 .gallery-item,.elementor-image-gallery .gallery.gallery-columns-10 .gallery-item{max-width:100%}} \ No newline at end of file diff --git a/wp-content/plugins/elementor/assets/css/templates/widget-image-gallery.min.css b/wp-content/plugins/elementor/assets/css/templates/widget-image-gallery.min.css new file mode 100644 index 0000000..b31b865 --- /dev/null +++ b/wp-content/plugins/elementor/assets/css/templates/widget-image-gallery.min.css @@ -0,0 +1 @@ +.elementor-image-gallery .gallery-item{display:inline-block;text-align:center;vertical-align:top;width:100%;max-width:100%;margin:0 auto}.elementor-image-gallery .gallery-item img{margin:0 auto}.elementor-image-gallery .gallery-item .gallery-caption{margin:0}.elementor-image-gallery figure img{display:block}.elementor-image-gallery figure figcaption{width:100%}.gallery-spacing-custom .elementor-image-gallery .gallery-icon{padding:0}@media (min-width:ELEMENTOR_SCREEN_MOBILE_NEXT){.elementor-image-gallery .gallery-columns-2 .gallery-item{max-width:50%}.elementor-image-gallery .gallery-columns-3 .gallery-item{max-width:33.33%}.elementor-image-gallery .gallery-columns-4 .gallery-item{max-width:25%}.elementor-image-gallery .gallery-columns-5 .gallery-item{max-width:20%}.elementor-image-gallery .gallery-columns-6 .gallery-item{max-width:16.666%}.elementor-image-gallery .gallery-columns-7 .gallery-item{max-width:14.28%}.elementor-image-gallery .gallery-columns-8 .gallery-item{max-width:12.5%}.elementor-image-gallery .gallery-columns-9 .gallery-item{max-width:11.11%}.elementor-image-gallery .gallery-columns-10 .gallery-item{max-width:10%}}@media (min-width:480px) and (max-width:ELEMENTOR_SCREEN_MOBILE_MAX){.elementor-image-gallery .gallery.gallery-columns-2 .gallery-item,.elementor-image-gallery .gallery.gallery-columns-3 .gallery-item,.elementor-image-gallery .gallery.gallery-columns-4 .gallery-item,.elementor-image-gallery .gallery.gallery-columns-5 .gallery-item,.elementor-image-gallery .gallery.gallery-columns-6 .gallery-item,.elementor-image-gallery .gallery.gallery-columns-7 .gallery-item,.elementor-image-gallery .gallery.gallery-columns-8 .gallery-item,.elementor-image-gallery .gallery.gallery-columns-9 .gallery-item,.elementor-image-gallery .gallery.gallery-columns-10 .gallery-item{max-width:50%}}@media (max-width:479px){.elementor-image-gallery .gallery.gallery-columns-2 .gallery-item,.elementor-image-gallery .gallery.gallery-columns-3 .gallery-item,.elementor-image-gallery .gallery.gallery-columns-4 .gallery-item,.elementor-image-gallery .gallery.gallery-columns-5 .gallery-item,.elementor-image-gallery .gallery.gallery-columns-6 .gallery-item,.elementor-image-gallery .gallery.gallery-columns-7 .gallery-item,.elementor-image-gallery .gallery.gallery-columns-8 .gallery-item,.elementor-image-gallery .gallery.gallery-columns-9 .gallery-item,.elementor-image-gallery .gallery.gallery-columns-10 .gallery-item{max-width:100%}} \ No newline at end of file diff --git a/wp-content/plugins/elementor/assets/css/templates/widget-progress-rtl.min.css b/wp-content/plugins/elementor/assets/css/templates/widget-progress-rtl.min.css new file mode 100644 index 0000000..7bbf084 --- /dev/null +++ b/wp-content/plugins/elementor/assets/css/templates/widget-progress-rtl.min.css @@ -0,0 +1 @@ +.elementor-widget-progress{text-align:right}.elementor-progress-wrapper{position:relative;background-color:#eee;color:#fff;height:100%;border-radius:2px}.elementor-progress-bar{display:flex;background-color:#69727d;width:0;font-size:11px;height:30px;line-height:30px;border-radius:2px;transition:width 1s ease-in-out}.elementor-progress-text{flex-grow:1;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;padding-right:15px}.elementor-progress-percentage{padding-left:15px}.elementor-widget-progress .elementor-progress-wrapper.progress-info .elementor-progress-bar{background-color:#5bc0de}.elementor-widget-progress .elementor-progress-wrapper.progress-success .elementor-progress-bar{background-color:#5cb85c}.elementor-widget-progress .elementor-progress-wrapper.progress-warning .elementor-progress-bar{background-color:#f0ad4e}.elementor-widget-progress .elementor-progress-wrapper.progress-danger .elementor-progress-bar{background-color:#d9534f}.elementor-progress .elementor-title{display:block}@media (max-width:ELEMENTOR_SCREEN_MOBILE_MAX){.elementor-progress-text{padding-right:10px}}.e-con-inner .elementor-progress-wrapper,.e-con .elementor-progress-wrapper{height:auto} \ No newline at end of file diff --git a/wp-content/plugins/elementor/assets/css/templates/widget-progress.min.css b/wp-content/plugins/elementor/assets/css/templates/widget-progress.min.css new file mode 100644 index 0000000..2d13e70 --- /dev/null +++ b/wp-content/plugins/elementor/assets/css/templates/widget-progress.min.css @@ -0,0 +1 @@ +.elementor-widget-progress{text-align:left}.elementor-progress-wrapper{position:relative;background-color:#eee;color:#fff;height:100%;border-radius:2px}.elementor-progress-bar{display:flex;background-color:#69727d;width:0;font-size:11px;height:30px;line-height:30px;border-radius:2px;transition:width 1s ease-in-out}.elementor-progress-text{flex-grow:1;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;padding-left:15px}.elementor-progress-percentage{padding-right:15px}.elementor-widget-progress .elementor-progress-wrapper.progress-info .elementor-progress-bar{background-color:#5bc0de}.elementor-widget-progress .elementor-progress-wrapper.progress-success .elementor-progress-bar{background-color:#5cb85c}.elementor-widget-progress .elementor-progress-wrapper.progress-warning .elementor-progress-bar{background-color:#f0ad4e}.elementor-widget-progress .elementor-progress-wrapper.progress-danger .elementor-progress-bar{background-color:#d9534f}.elementor-progress .elementor-title{display:block}@media (max-width:ELEMENTOR_SCREEN_MOBILE_MAX){.elementor-progress-text{padding-left:10px}}.e-con-inner .elementor-progress-wrapper,.e-con .elementor-progress-wrapper{height:auto} \ No newline at end of file diff --git a/wp-content/plugins/elementor/assets/css/templates/widget-star-rating-rtl.min.css b/wp-content/plugins/elementor/assets/css/templates/widget-star-rating-rtl.min.css new file mode 100644 index 0000000..45593d8 --- /dev/null +++ b/wp-content/plugins/elementor/assets/css/templates/widget-star-rating-rtl.min.css @@ -0,0 +1 @@ +@charset "UTF-8";.elementor-star-rating{color:#ccd6df;font-family:eicons;display:inline-block}.elementor-star-rating i{display:inline-block;position:relative;font-style:normal;cursor:default}.elementor-star-rating i:before{content:"\e934";display:block;font-size:inherit;font-family:inherit;position:absolute;overflow:hidden;color:#f0ad4e;top:0;right:0}.elementor-star-rating .elementor-star-empty:before{content:none}.elementor-star-rating .elementor-star-1:before{width:10%}.elementor-star-rating .elementor-star-2:before{width:20%}.elementor-star-rating .elementor-star-3:before{width:30%}.elementor-star-rating .elementor-star-4:before{width:40%}.elementor-star-rating .elementor-star-5:before{width:50%}.elementor-star-rating .elementor-star-6:before{width:60%}.elementor-star-rating .elementor-star-7:before{width:70%}.elementor-star-rating .elementor-star-8:before{width:80%}.elementor-star-rating .elementor-star-9:before{width:90%}.elementor-star-rating__wrapper{display:flex;align-items:center}.elementor-star-rating__title{margin-left:10px}.elementor-star-rating--align-right .elementor-star-rating__wrapper{text-align:right;justify-content:flex-start}.elementor-star-rating--align-left .elementor-star-rating__wrapper{text-align:left;justify-content:flex-end}.elementor-star-rating--align-center .elementor-star-rating__wrapper{text-align:center;justify-content:center}.elementor-star-rating--align-justify .elementor-star-rating__title{margin-left:auto}@media (max-width:ELEMENTOR_SCREEN_TABLET_MAX){.elementor-star-rating-tablet--align-right .elementor-star-rating__wrapper{text-align:right;justify-content:flex-start}.elementor-star-rating-tablet--align-left .elementor-star-rating__wrapper{text-align:left;justify-content:flex-end}.elementor-star-rating-tablet--align-center .elementor-star-rating__wrapper{text-align:center;justify-content:center}.elementor-star-rating-tablet--align-justify .elementor-star-rating__title{margin-left:auto}}@media (max-width:ELEMENTOR_SCREEN_MOBILE_MAX){.elementor-star-rating-mobile--align-right .elementor-star-rating__wrapper{text-align:right;justify-content:flex-start}.elementor-star-rating-mobile--align-left .elementor-star-rating__wrapper{text-align:left;justify-content:flex-end}.elementor-star-rating-mobile--align-center .elementor-star-rating__wrapper{text-align:center;justify-content:center}.elementor-star-rating-mobile--align-justify .elementor-star-rating__title{margin-left:auto}}.last-star{letter-spacing:0}.elementor--star-style-star_unicode .elementor-star-rating{font-family:Arial,Helvetica,sans-serif}.elementor--star-style-star_unicode .elementor-star-rating i:not(.elementor-star-empty):before{content:"★"} \ No newline at end of file diff --git a/wp-content/plugins/elementor/assets/css/templates/widget-star-rating.min.css b/wp-content/plugins/elementor/assets/css/templates/widget-star-rating.min.css new file mode 100644 index 0000000..f40b647 --- /dev/null +++ b/wp-content/plugins/elementor/assets/css/templates/widget-star-rating.min.css @@ -0,0 +1 @@ +@charset "UTF-8";.elementor-star-rating{color:#ccd6df;font-family:eicons;display:inline-block}.elementor-star-rating i{display:inline-block;position:relative;font-style:normal;cursor:default}.elementor-star-rating i:before{content:"\e934";display:block;font-size:inherit;font-family:inherit;position:absolute;overflow:hidden;color:#f0ad4e;top:0;left:0}.elementor-star-rating .elementor-star-empty:before{content:none}.elementor-star-rating .elementor-star-1:before{width:10%}.elementor-star-rating .elementor-star-2:before{width:20%}.elementor-star-rating .elementor-star-3:before{width:30%}.elementor-star-rating .elementor-star-4:before{width:40%}.elementor-star-rating .elementor-star-5:before{width:50%}.elementor-star-rating .elementor-star-6:before{width:60%}.elementor-star-rating .elementor-star-7:before{width:70%}.elementor-star-rating .elementor-star-8:before{width:80%}.elementor-star-rating .elementor-star-9:before{width:90%}.elementor-star-rating__wrapper{display:flex;align-items:center}.elementor-star-rating__title{margin-right:10px}.elementor-star-rating--align-right .elementor-star-rating__wrapper{text-align:right;justify-content:flex-end}.elementor-star-rating--align-left .elementor-star-rating__wrapper{text-align:left;justify-content:flex-start}.elementor-star-rating--align-center .elementor-star-rating__wrapper{text-align:center;justify-content:center}.elementor-star-rating--align-justify .elementor-star-rating__title{margin-right:auto}@media (max-width:ELEMENTOR_SCREEN_TABLET_MAX){.elementor-star-rating-tablet--align-right .elementor-star-rating__wrapper{text-align:right;justify-content:flex-end}.elementor-star-rating-tablet--align-left .elementor-star-rating__wrapper{text-align:left;justify-content:flex-start}.elementor-star-rating-tablet--align-center .elementor-star-rating__wrapper{text-align:center;justify-content:center}.elementor-star-rating-tablet--align-justify .elementor-star-rating__title{margin-right:auto}}@media (max-width:ELEMENTOR_SCREEN_MOBILE_MAX){.elementor-star-rating-mobile--align-right .elementor-star-rating__wrapper{text-align:right;justify-content:flex-end}.elementor-star-rating-mobile--align-left .elementor-star-rating__wrapper{text-align:left;justify-content:flex-start}.elementor-star-rating-mobile--align-center .elementor-star-rating__wrapper{text-align:center;justify-content:center}.elementor-star-rating-mobile--align-justify .elementor-star-rating__title{margin-right:auto}}.last-star{letter-spacing:0}.elementor--star-style-star_unicode .elementor-star-rating{font-family:Arial,Helvetica,sans-serif}.elementor--star-style-star_unicode .elementor-star-rating i:not(.elementor-star-empty):before{content:"★"} \ No newline at end of file diff --git a/wp-content/plugins/elementor/assets/css/templates/widget-tabs-rtl.min.css b/wp-content/plugins/elementor/assets/css/templates/widget-tabs-rtl.min.css new file mode 100644 index 0000000..72b9bac --- /dev/null +++ b/wp-content/plugins/elementor/assets/css/templates/widget-tabs-rtl.min.css @@ -0,0 +1 @@ +.elementor-widget-tabs.elementor-tabs-view-vertical .elementor-tabs-wrapper{width:25%;flex-shrink:0}.elementor-widget-tabs.elementor-tabs-view-vertical .elementor-tab-desktop-title.elementor-active{border-left-style:none}.elementor-widget-tabs.elementor-tabs-view-vertical .elementor-tab-desktop-title.elementor-active:after,.elementor-widget-tabs.elementor-tabs-view-vertical .elementor-tab-desktop-title.elementor-active:before{height:999em;width:0;left:0;border-left-style:solid}.elementor-widget-tabs.elementor-tabs-view-vertical .elementor-tab-desktop-title.elementor-active:before{top:0;transform:translateY(-100%)}.elementor-widget-tabs.elementor-tabs-view-vertical .elementor-tab-desktop-title.elementor-active:after{top:100%}.elementor-widget-tabs.elementor-tabs-view-horizontal .elementor-tab-desktop-title{display:table-cell}.elementor-widget-tabs.elementor-tabs-view-horizontal .elementor-tab-desktop-title.elementor-active{border-bottom-style:none}.elementor-widget-tabs.elementor-tabs-view-horizontal .elementor-tab-desktop-title.elementor-active:after,.elementor-widget-tabs.elementor-tabs-view-horizontal .elementor-tab-desktop-title.elementor-active:before{bottom:0;height:0;width:999em;border-bottom-style:solid}.elementor-widget-tabs.elementor-tabs-view-horizontal .elementor-tab-desktop-title.elementor-active:before{right:100%}.elementor-widget-tabs.elementor-tabs-view-horizontal .elementor-tab-desktop-title.elementor-active:after{left:100%}.elementor-widget-tabs .elementor-tab-content,.elementor-widget-tabs .elementor-tab-title,.elementor-widget-tabs .elementor-tab-title:after,.elementor-widget-tabs .elementor-tab-title:before,.elementor-widget-tabs .elementor-tabs-content-wrapper{border:1px #d5d8dc}.elementor-widget-tabs .elementor-tabs{text-align:right}.elementor-widget-tabs .elementor-tabs-wrapper{overflow:hidden}.elementor-widget-tabs .elementor-tab-title{cursor:pointer;outline:var(--focus-outline,none)}.elementor-widget-tabs .elementor-tab-desktop-title{position:relative;padding:20px 25px;font-weight:700;line-height:1;border:solid transparent}.elementor-widget-tabs .elementor-tab-desktop-title.elementor-active{border-color:#d5d8dc}.elementor-widget-tabs .elementor-tab-desktop-title.elementor-active:after,.elementor-widget-tabs .elementor-tab-desktop-title.elementor-active:before{display:block;content:"";position:absolute}.elementor-widget-tabs .elementor-tab-desktop-title:focus-visible{border:1px solid #000}.elementor-widget-tabs .elementor-tab-mobile-title{padding:10px;cursor:pointer}.elementor-widget-tabs .elementor-tab-content{padding:20px;display:none}@media (max-width:ELEMENTOR_SCREEN_MOBILE_MAX){.elementor-tabs .elementor-tab-content,.elementor-tabs .elementor-tab-title{border-style:solid solid none}.elementor-tabs .elementor-tabs-wrapper{display:none}.elementor-tabs .elementor-tabs-content-wrapper{border-bottom-style:solid}.elementor-tabs .elementor-tab-content{padding:10px}}@media (min-width:ELEMENTOR_SCREEN_MOBILE_NEXT){.elementor-widget-tabs.elementor-tabs-view-vertical .elementor-tabs{display:flex}.elementor-widget-tabs.elementor-tabs-view-vertical .elementor-tabs-wrapper{flex-direction:column}.elementor-widget-tabs.elementor-tabs-view-vertical .elementor-tabs-content-wrapper{flex-grow:1;border-style:solid none solid solid}.elementor-widget-tabs.elementor-tabs-view-horizontal .elementor-tab-content{border-style:none solid solid}.elementor-widget-tabs.elementor-tabs-alignment-center .elementor-tabs-wrapper,.elementor-widget-tabs.elementor-tabs-alignment-end .elementor-tabs-wrapper,.elementor-widget-tabs.elementor-tabs-alignment-stretch .elementor-tabs-wrapper{display:flex}.elementor-widget-tabs.elementor-tabs-alignment-center .elementor-tabs-wrapper{justify-content:center}.elementor-widget-tabs.elementor-tabs-alignment-end .elementor-tabs-wrapper{justify-content:flex-end}.elementor-widget-tabs.elementor-tabs-alignment-stretch.elementor-tabs-view-horizontal .elementor-tab-title{width:100%}.elementor-widget-tabs.elementor-tabs-alignment-stretch.elementor-tabs-view-vertical .elementor-tab-title{height:100%}.elementor-tabs .elementor-tab-mobile-title{display:none}} \ No newline at end of file diff --git a/wp-content/plugins/elementor/assets/css/templates/widget-tabs.min.css b/wp-content/plugins/elementor/assets/css/templates/widget-tabs.min.css new file mode 100644 index 0000000..985f86a --- /dev/null +++ b/wp-content/plugins/elementor/assets/css/templates/widget-tabs.min.css @@ -0,0 +1 @@ +.elementor-widget-tabs.elementor-tabs-view-vertical .elementor-tabs-wrapper{width:25%;flex-shrink:0}.elementor-widget-tabs.elementor-tabs-view-vertical .elementor-tab-desktop-title.elementor-active{border-right-style:none}.elementor-widget-tabs.elementor-tabs-view-vertical .elementor-tab-desktop-title.elementor-active:after,.elementor-widget-tabs.elementor-tabs-view-vertical .elementor-tab-desktop-title.elementor-active:before{height:999em;width:0;right:0;border-right-style:solid}.elementor-widget-tabs.elementor-tabs-view-vertical .elementor-tab-desktop-title.elementor-active:before{top:0;transform:translateY(-100%)}.elementor-widget-tabs.elementor-tabs-view-vertical .elementor-tab-desktop-title.elementor-active:after{top:100%}.elementor-widget-tabs.elementor-tabs-view-horizontal .elementor-tab-desktop-title{display:table-cell}.elementor-widget-tabs.elementor-tabs-view-horizontal .elementor-tab-desktop-title.elementor-active{border-bottom-style:none}.elementor-widget-tabs.elementor-tabs-view-horizontal .elementor-tab-desktop-title.elementor-active:after,.elementor-widget-tabs.elementor-tabs-view-horizontal .elementor-tab-desktop-title.elementor-active:before{bottom:0;height:0;width:999em;border-bottom-style:solid}.elementor-widget-tabs.elementor-tabs-view-horizontal .elementor-tab-desktop-title.elementor-active:before{right:100%}.elementor-widget-tabs.elementor-tabs-view-horizontal .elementor-tab-desktop-title.elementor-active:after{left:100%}.elementor-widget-tabs .elementor-tab-content,.elementor-widget-tabs .elementor-tab-title,.elementor-widget-tabs .elementor-tab-title:after,.elementor-widget-tabs .elementor-tab-title:before,.elementor-widget-tabs .elementor-tabs-content-wrapper{border:1px #d5d8dc}.elementor-widget-tabs .elementor-tabs{text-align:left}.elementor-widget-tabs .elementor-tabs-wrapper{overflow:hidden}.elementor-widget-tabs .elementor-tab-title{cursor:pointer;outline:var(--focus-outline,none)}.elementor-widget-tabs .elementor-tab-desktop-title{position:relative;padding:20px 25px;font-weight:700;line-height:1;border:solid transparent}.elementor-widget-tabs .elementor-tab-desktop-title.elementor-active{border-color:#d5d8dc}.elementor-widget-tabs .elementor-tab-desktop-title.elementor-active:after,.elementor-widget-tabs .elementor-tab-desktop-title.elementor-active:before{display:block;content:"";position:absolute}.elementor-widget-tabs .elementor-tab-desktop-title:focus-visible{border:1px solid #000}.elementor-widget-tabs .elementor-tab-mobile-title{padding:10px;cursor:pointer}.elementor-widget-tabs .elementor-tab-content{padding:20px;display:none}@media (max-width:ELEMENTOR_SCREEN_MOBILE_MAX){.elementor-tabs .elementor-tab-content,.elementor-tabs .elementor-tab-title{border-style:solid solid none}.elementor-tabs .elementor-tabs-wrapper{display:none}.elementor-tabs .elementor-tabs-content-wrapper{border-bottom-style:solid}.elementor-tabs .elementor-tab-content{padding:10px}}@media (min-width:ELEMENTOR_SCREEN_MOBILE_NEXT){.elementor-widget-tabs.elementor-tabs-view-vertical .elementor-tabs{display:flex}.elementor-widget-tabs.elementor-tabs-view-vertical .elementor-tabs-wrapper{flex-direction:column}.elementor-widget-tabs.elementor-tabs-view-vertical .elementor-tabs-content-wrapper{flex-grow:1;border-style:solid solid solid none}.elementor-widget-tabs.elementor-tabs-view-horizontal .elementor-tab-content{border-style:none solid solid}.elementor-widget-tabs.elementor-tabs-alignment-center .elementor-tabs-wrapper,.elementor-widget-tabs.elementor-tabs-alignment-end .elementor-tabs-wrapper,.elementor-widget-tabs.elementor-tabs-alignment-stretch .elementor-tabs-wrapper{display:flex}.elementor-widget-tabs.elementor-tabs-alignment-center .elementor-tabs-wrapper{justify-content:center}.elementor-widget-tabs.elementor-tabs-alignment-end .elementor-tabs-wrapper{justify-content:flex-end}.elementor-widget-tabs.elementor-tabs-alignment-stretch.elementor-tabs-view-horizontal .elementor-tab-title{width:100%}.elementor-widget-tabs.elementor-tabs-alignment-stretch.elementor-tabs-view-vertical .elementor-tab-title{height:100%}.elementor-tabs .elementor-tab-mobile-title{display:none}} \ No newline at end of file diff --git a/wp-content/plugins/elementor/assets/css/templates/widget-toggle-rtl.min.css b/wp-content/plugins/elementor/assets/css/templates/widget-toggle-rtl.min.css new file mode 100644 index 0000000..975a124 --- /dev/null +++ b/wp-content/plugins/elementor/assets/css/templates/widget-toggle-rtl.min.css @@ -0,0 +1 @@ +.elementor-toggle{text-align:right}.elementor-toggle .elementor-tab-title{font-weight:700;line-height:1;margin:0;padding:15px;border-bottom:1px solid #d5d8dc;cursor:pointer;outline:none}.elementor-toggle .elementor-tab-title .elementor-toggle-icon{display:inline-block;width:1em}.elementor-toggle .elementor-tab-title .elementor-toggle-icon svg{margin-inline-start:-5px;width:1em;height:1em}.elementor-toggle .elementor-tab-title .elementor-toggle-icon.elementor-toggle-icon-right{float:right;text-align:right}.elementor-toggle .elementor-tab-title .elementor-toggle-icon.elementor-toggle-icon-left{float:left;text-align:left}.elementor-toggle .elementor-tab-title .elementor-toggle-icon .elementor-toggle-icon-closed{display:block}.elementor-toggle .elementor-tab-title .elementor-toggle-icon .elementor-toggle-icon-opened{display:none}.elementor-toggle .elementor-tab-title.elementor-active{border-bottom:none}.elementor-toggle .elementor-tab-title.elementor-active .elementor-toggle-icon-closed{display:none}.elementor-toggle .elementor-tab-title.elementor-active .elementor-toggle-icon-opened{display:block}.elementor-toggle .elementor-tab-content{padding:15px;border-bottom:1px solid #d5d8dc;display:none}@media (max-width:ELEMENTOR_SCREEN_MOBILE_MAX){.elementor-toggle .elementor-tab-title{padding:12px}.elementor-toggle .elementor-tab-content{padding:12px 10px}}.e-con-inner>.elementor-widget-toggle,.e-con>.elementor-widget-toggle{width:var(--container-widget-width);--flex-grow:var(--container-widget-flex-grow)} \ No newline at end of file diff --git a/wp-content/plugins/elementor/assets/css/templates/widget-toggle.min.css b/wp-content/plugins/elementor/assets/css/templates/widget-toggle.min.css new file mode 100644 index 0000000..3f92bf8 --- /dev/null +++ b/wp-content/plugins/elementor/assets/css/templates/widget-toggle.min.css @@ -0,0 +1 @@ +.elementor-toggle{text-align:left}.elementor-toggle .elementor-tab-title{font-weight:700;line-height:1;margin:0;padding:15px;border-bottom:1px solid #d5d8dc;cursor:pointer;outline:none}.elementor-toggle .elementor-tab-title .elementor-toggle-icon{display:inline-block;width:1em}.elementor-toggle .elementor-tab-title .elementor-toggle-icon svg{margin-inline-start:-5px;width:1em;height:1em}.elementor-toggle .elementor-tab-title .elementor-toggle-icon.elementor-toggle-icon-right{float:right;text-align:right}.elementor-toggle .elementor-tab-title .elementor-toggle-icon.elementor-toggle-icon-left{float:left;text-align:left}.elementor-toggle .elementor-tab-title .elementor-toggle-icon .elementor-toggle-icon-closed{display:block}.elementor-toggle .elementor-tab-title .elementor-toggle-icon .elementor-toggle-icon-opened{display:none}.elementor-toggle .elementor-tab-title.elementor-active{border-bottom:none}.elementor-toggle .elementor-tab-title.elementor-active .elementor-toggle-icon-closed{display:none}.elementor-toggle .elementor-tab-title.elementor-active .elementor-toggle-icon-opened{display:block}.elementor-toggle .elementor-tab-content{padding:15px;border-bottom:1px solid #d5d8dc;display:none}@media (max-width:ELEMENTOR_SCREEN_MOBILE_MAX){.elementor-toggle .elementor-tab-title{padding:12px}.elementor-toggle .elementor-tab-content{padding:12px 10px}}.e-con-inner>.elementor-widget-toggle,.e-con>.elementor-widget-toggle{width:var(--container-widget-width);--flex-grow:var(--container-widget-flex-grow)} \ No newline at end of file diff --git a/wp-content/plugins/elementor/assets/css/theme-dark.css b/wp-content/plugins/elementor/assets/css/theme-dark.css new file mode 100644 index 0000000..ec1e342 --- /dev/null +++ b/wp-content/plugins/elementor/assets/css/theme-dark.css @@ -0,0 +1,77 @@ +/*! elementor - v3.20.0 - 26-03-2024 */ +:root { + color-scheme: dark; + --e-a-color-white: #ffffff; + --e-a-color-black: #000000; + --e-a-color-logo: #000000; + --e-a-color-primary: #524CFF; + --e-a-color-primary-bold: #F0ABFC; + --e-a-color-secondary: #515962; + --e-a-color-success: #0A875A; + --e-a-color-danger: #DC2626; + --e-a-color-info: #2563EB; + --e-a-color-warning: #F59E0B; + --e-a-color-accent: #93003f; + --e-a-color-accent-promotion: #D6107C; + --e-a-color-global: #1DDDBF; + --e-a-bg-default: #1f2124; + --e-a-bg-invert: #ffffff; + --e-a-bg-hover: #2b2c31; + --e-a-bg-active: #333438; + --e-a-bg-active-bold: #3f444b; + --e-a-bg-loading: #F9FAFA; + --e-a-bg-logo: #ffffff; + --e-a-bg-primary: #310132; + --e-a-bg-secondary: #515962; + --e-a-bg-success: #032317; + --e-a-bg-info: #0A1A3D; + --e-a-bg-danger: #390A0A; + --e-a-bg-warning: #311808; + --e-a-color-txt: #D5D8DC; + --e-a-color-txt-muted: #9DA5AE; + --e-a-color-txt-disabled: #69727D; + --e-a-color-txt-invert: #ffffff; + --e-a-color-txt-accent: #ffffff; + --e-a-color-txt-hover: #9DA5AE; + --e-a-color-txt-active: #ffffff; + --e-a-border-color: #333438; + --e-a-border-color-bold: #3f444b; + --e-a-border-color-focus: #515962; + --e-a-border-color-accent: #ffffff; + --e-a-border: 1px solid var(--e-a-border-color); + --e-a-border-bold: 1px solid var(--e-a-border-color-bold); + --e-a-border-radius: 3px; + --e-a-btn-color: #0C0D0E; + --e-a-btn-color-invert: var(--e-a-color-txt-invert); + --e-a-btn-color-disabled: var(--e-a-color-txt-disabled); + --e-a-btn-bg: #515962; + --e-a-btn-bg-hover: #3a4046; + --e-a-btn-bg-active: #23262a; + --e-a-btn-bg-disabled: #D5D8DC; + --e-a-btn-bg-primary: #F3BAFD; + --e-a-btn-bg-primary-hover: #EB8EFB; + --e-a-btn-bg-primary-active:#F0ABFC; + --e-a-btn-bg-accent: #93003f; + --e-a-btn-bg-accent-hover: #8F1A4C; + --e-a-btn-bg-accent-active: #A93365; + --e-a-btn-bg-info: #2563EB; + --e-a-btn-bg-info-hover: #134cca; + --e-a-btn-bg-info-active: #0e3b9c; + --e-a-btn-bg-success: #0A875A; + --e-a-btn-bg-success-hover: #06583a; + --e-a-btn-bg-success-active:#03281b; + --e-a-btn-bg-warning: #F59E0B; + --e-a-btn-bg-warning-hover: #c57f08; + --e-a-btn-bg-warning-active:#945f06; + --e-a-btn-bg-danger: #DC2626; + --e-a-btn-bg-danger-hover: #b21d1d; + --e-a-btn-bg-danger-active: #861616; + --e-a-dark-bg: #0C0D0E; + --e-a-dark-color-txt: #9DA5AE; + --e-a-dark-color-txt-hover: #D5D8DC; + --e-a-font-family: Roboto, Arial, Helvetica, sans-serif; + --e-a-transition-hover: all .3s; + --e-a-popover-shadow: 0 2px 15px rgba(0, 0, 0, 0.9); + --e-a-dropdown-shadow: 0 0 3px rgba(0, 0, 0, 0.9); +} +/*# sourceMappingURL=theme-dark.css.map */ \ No newline at end of file diff --git a/wp-content/plugins/elementor/assets/css/theme-dark.min.css b/wp-content/plugins/elementor/assets/css/theme-dark.min.css new file mode 100644 index 0000000..8c72935 --- /dev/null +++ b/wp-content/plugins/elementor/assets/css/theme-dark.min.css @@ -0,0 +1,2 @@ +/*! elementor - v3.20.0 - 26-03-2024 */ +:root{color-scheme:dark;--e-a-color-white:#fff;--e-a-color-black:#000;--e-a-color-logo:#000;--e-a-color-primary:#524cff;--e-a-color-primary-bold:#f0abfc;--e-a-color-secondary:#515962;--e-a-color-success:#0a875a;--e-a-color-danger:#dc2626;--e-a-color-info:#2563eb;--e-a-color-warning:#f59e0b;--e-a-color-accent:#93003f;--e-a-color-accent-promotion:#d6107c;--e-a-color-global:#1dddbf;--e-a-bg-default:#1f2124;--e-a-bg-invert:#fff;--e-a-bg-hover:#2b2c31;--e-a-bg-active:#333438;--e-a-bg-active-bold:#3f444b;--e-a-bg-loading:#f9fafa;--e-a-bg-logo:#fff;--e-a-bg-primary:#310132;--e-a-bg-secondary:#515962;--e-a-bg-success:#032317;--e-a-bg-info:#0a1a3d;--e-a-bg-danger:#390a0a;--e-a-bg-warning:#311808;--e-a-color-txt:#d5d8dc;--e-a-color-txt-muted:#9da5ae;--e-a-color-txt-disabled:#69727d;--e-a-color-txt-invert:#fff;--e-a-color-txt-accent:#fff;--e-a-color-txt-hover:#9da5ae;--e-a-color-txt-active:#fff;--e-a-border-color:#333438;--e-a-border-color-bold:#3f444b;--e-a-border-color-focus:#515962;--e-a-border-color-accent:#fff;--e-a-border:1px solid var(--e-a-border-color);--e-a-border-bold:1px solid var(--e-a-border-color-bold);--e-a-border-radius:3px;--e-a-btn-color:#0c0d0e;--e-a-btn-color-invert:var(--e-a-color-txt-invert);--e-a-btn-color-disabled:var(--e-a-color-txt-disabled);--e-a-btn-bg:#515962;--e-a-btn-bg-hover:#3a4046;--e-a-btn-bg-active:#23262a;--e-a-btn-bg-disabled:#d5d8dc;--e-a-btn-bg-primary:#f3bafd;--e-a-btn-bg-primary-hover:#eb8efb;--e-a-btn-bg-primary-active:#f0abfc;--e-a-btn-bg-accent:#93003f;--e-a-btn-bg-accent-hover:#8f1a4c;--e-a-btn-bg-accent-active:#a93365;--e-a-btn-bg-info:#2563eb;--e-a-btn-bg-info-hover:#134cca;--e-a-btn-bg-info-active:#0e3b9c;--e-a-btn-bg-success:#0a875a;--e-a-btn-bg-success-hover:#06583a;--e-a-btn-bg-success-active:#03281b;--e-a-btn-bg-warning:#f59e0b;--e-a-btn-bg-warning-hover:#c57f08;--e-a-btn-bg-warning-active:#945f06;--e-a-btn-bg-danger:#dc2626;--e-a-btn-bg-danger-hover:#b21d1d;--e-a-btn-bg-danger-active:#861616;--e-a-dark-bg:#0c0d0e;--e-a-dark-color-txt:#9da5ae;--e-a-dark-color-txt-hover:#d5d8dc;--e-a-font-family:Roboto,Arial,Helvetica,sans-serif;--e-a-transition-hover:all .3s;--e-a-popover-shadow:0 2px 15px rgba(0,0,0,0.9);--e-a-dropdown-shadow:0 0 3px rgba(0,0,0,0.9)} \ No newline at end of file diff --git a/wp-content/plugins/elementor/assets/css/theme-light.css b/wp-content/plugins/elementor/assets/css/theme-light.css new file mode 100644 index 0000000..03965d7 --- /dev/null +++ b/wp-content/plugins/elementor/assets/css/theme-light.css @@ -0,0 +1,76 @@ +/*! elementor - v3.20.0 - 26-03-2024 */ +:root { + --e-a-color-white: #ffffff; + --e-a-color-black: #000000; + --e-a-color-logo: #ffffff; + --e-a-color-primary: #F3BAFD; + --e-a-color-primary-bold: #D004D4; + --e-a-color-secondary: #515962; + --e-a-color-success: #0A875A; + --e-a-color-danger: #DC2626; + --e-a-color-info: #2563EB; + --e-a-color-warning: #F59E0B; + --e-a-color-accent: #93003f; + --e-a-color-accent-promotion: #93003f; + --e-a-color-global: #1DDDBF; + --e-a-bg-default: #ffffff; + --e-a-bg-invert: #0C0D0E; + --e-a-bg-hover: #F1F2F3; + --e-a-bg-active: #E6E8EA; + --e-a-bg-active-bold: #D5D8DC; + --e-a-bg-loading: #F9FAFA; + --e-a-bg-logo: #000000; + --e-a-bg-primary: #FAE8FF; + --e-a-bg-secondary: #515962; + --e-a-bg-success: #F2FDF5; + --e-a-bg-info: #F0F7FF; + --e-a-bg-danger: #FEF1F4; + --e-a-bg-warning: #FFFBEB; + --e-a-color-txt: #515962; + --e-a-color-txt-muted: #818A96; + --e-a-color-txt-disabled: #BABFC5; + --e-a-color-txt-invert: #ffffff; + --e-a-color-txt-accent: #0C0D0E; + --e-a-color-txt-hover: #3f444b; + --e-a-color-txt-active: #0C0D0E; + --e-a-border-color: #E6E8EA; + --e-a-border-color-bold: #D5D8DC; + --e-a-border-color-focus: #BABFC5; + --e-a-border-color-accent: #0C0D0E; + --e-a-border: 1px solid var(--e-a-border-color); + --e-a-border-bold: 1px solid var(--e-a-border-color-bold); + --e-a-border-radius: 3px; + --e-a-btn-color: #0C0D0E; + --e-a-btn-color-invert: var(--e-a-color-txt-invert); + --e-a-btn-color-disabled: var(--e-a-color-txt-disabled); + --e-a-btn-bg: #515962; + --e-a-btn-bg-hover: #3a4046; + --e-a-btn-bg-active: #23262a; + --e-a-btn-bg-disabled: #D5D8DC; + --e-a-btn-bg-primary: #F3BAFD; + --e-a-btn-bg-primary-hover: #F5D0FE; + --e-a-btn-bg-primary-active:#F0ABFC; + --e-a-btn-bg-accent: #93003f; + --e-a-btn-bg-accent-hover: #8F1A4C; + --e-a-btn-bg-accent-active: #A93365; + --e-a-btn-bg-info: #2563EB; + --e-a-btn-bg-info-hover: #134cca; + --e-a-btn-bg-info-active: #0e3b9c; + --e-a-btn-bg-success: #0A875A; + --e-a-btn-bg-success-hover: #06583a; + --e-a-btn-bg-success-active:#03281b; + --e-a-btn-bg-warning: #F59E0B; + --e-a-btn-bg-warning-hover: #c57f08; + --e-a-btn-bg-warning-active:#945f06; + --e-a-btn-bg-danger: #DC2626; + --e-a-btn-bg-danger-hover: #b21d1d; + --e-a-btn-bg-danger-active: #861616; + --e-a-dark-bg: #0C0D0E; + --e-a-dark-color-txt: #9DA5AE; + --e-a-dark-color-txt-hover: #D5D8DC; + --e-a-font-family: Roboto, Arial, Helvetica, sans-serif; + --e-a-transition-hover: all .3s; + --e-a-popover-shadow: 0 2px 15px rgba(0, 0, 0, 0.3); + --e-a-dropdown-shadow: 0 0 3px rgba(0, 0, 0, 0.2); +} +/*# sourceMappingURL=theme-light.css.map */ \ No newline at end of file diff --git a/wp-content/plugins/elementor/assets/css/theme-light.min.css b/wp-content/plugins/elementor/assets/css/theme-light.min.css new file mode 100644 index 0000000..f7d4821 --- /dev/null +++ b/wp-content/plugins/elementor/assets/css/theme-light.min.css @@ -0,0 +1,2 @@ +/*! elementor - v3.20.0 - 26-03-2024 */ +:root{--e-a-color-white:#fff;--e-a-color-black:#000;--e-a-color-logo:#fff;--e-a-color-primary:#f3bafd;--e-a-color-primary-bold:#d004d4;--e-a-color-secondary:#515962;--e-a-color-success:#0a875a;--e-a-color-danger:#dc2626;--e-a-color-info:#2563eb;--e-a-color-warning:#f59e0b;--e-a-color-accent:#93003f;--e-a-color-accent-promotion:#93003f;--e-a-color-global:#1dddbf;--e-a-bg-default:#fff;--e-a-bg-invert:#0c0d0e;--e-a-bg-hover:#f1f2f3;--e-a-bg-active:#e6e8ea;--e-a-bg-active-bold:#d5d8dc;--e-a-bg-loading:#f9fafa;--e-a-bg-logo:#000;--e-a-bg-primary:#fae8ff;--e-a-bg-secondary:#515962;--e-a-bg-success:#f2fdf5;--e-a-bg-info:#f0f7ff;--e-a-bg-danger:#fef1f4;--e-a-bg-warning:#fffbeb;--e-a-color-txt:#515962;--e-a-color-txt-muted:#818a96;--e-a-color-txt-disabled:#babfc5;--e-a-color-txt-invert:#fff;--e-a-color-txt-accent:#0c0d0e;--e-a-color-txt-hover:#3f444b;--e-a-color-txt-active:#0c0d0e;--e-a-border-color:#e6e8ea;--e-a-border-color-bold:#d5d8dc;--e-a-border-color-focus:#babfc5;--e-a-border-color-accent:#0c0d0e;--e-a-border:1px solid var(--e-a-border-color);--e-a-border-bold:1px solid var(--e-a-border-color-bold);--e-a-border-radius:3px;--e-a-btn-color:#0c0d0e;--e-a-btn-color-invert:var(--e-a-color-txt-invert);--e-a-btn-color-disabled:var(--e-a-color-txt-disabled);--e-a-btn-bg:#515962;--e-a-btn-bg-hover:#3a4046;--e-a-btn-bg-active:#23262a;--e-a-btn-bg-disabled:#d5d8dc;--e-a-btn-bg-primary:#f3bafd;--e-a-btn-bg-primary-hover:#f5d0fe;--e-a-btn-bg-primary-active:#f0abfc;--e-a-btn-bg-accent:#93003f;--e-a-btn-bg-accent-hover:#8f1a4c;--e-a-btn-bg-accent-active:#a93365;--e-a-btn-bg-info:#2563eb;--e-a-btn-bg-info-hover:#134cca;--e-a-btn-bg-info-active:#0e3b9c;--e-a-btn-bg-success:#0a875a;--e-a-btn-bg-success-hover:#06583a;--e-a-btn-bg-success-active:#03281b;--e-a-btn-bg-warning:#f59e0b;--e-a-btn-bg-warning-hover:#c57f08;--e-a-btn-bg-warning-active:#945f06;--e-a-btn-bg-danger:#dc2626;--e-a-btn-bg-danger-hover:#b21d1d;--e-a-btn-bg-danger-active:#861616;--e-a-dark-bg:#0c0d0e;--e-a-dark-color-txt:#9da5ae;--e-a-dark-color-txt-hover:#d5d8dc;--e-a-font-family:Roboto,Arial,Helvetica,sans-serif;--e-a-transition-hover:all .3s;--e-a-popover-shadow:0 2px 15px rgba(0,0,0,0.3);--e-a-dropdown-shadow:0 0 3px rgba(0,0,0,0.2)} \ No newline at end of file diff --git a/wp-content/plugins/elementor/assets/css/widget-accordion-rtl.min.css b/wp-content/plugins/elementor/assets/css/widget-accordion-rtl.min.css new file mode 100644 index 0000000..606c9a6 --- /dev/null +++ b/wp-content/plugins/elementor/assets/css/widget-accordion-rtl.min.css @@ -0,0 +1,2 @@ +/*! elementor - v3.20.0 - 26-03-2024 */ +.elementor-accordion{text-align:right}.elementor-accordion .elementor-accordion-item{border:1px solid #d5d8dc}.elementor-accordion .elementor-accordion-item+.elementor-accordion-item{border-top:none}.elementor-accordion .elementor-tab-title{margin:0;padding:15px 20px;font-weight:700;line-height:1;cursor:pointer;outline:none}.elementor-accordion .elementor-tab-title .elementor-accordion-icon{display:inline-block;width:1.5em}.elementor-accordion .elementor-tab-title .elementor-accordion-icon svg{width:1em;height:1em}.elementor-accordion .elementor-tab-title .elementor-accordion-icon.elementor-accordion-icon-right{float:right;text-align:right}.elementor-accordion .elementor-tab-title .elementor-accordion-icon.elementor-accordion-icon-left{float:left;text-align:left}.elementor-accordion .elementor-tab-title .elementor-accordion-icon .elementor-accordion-icon-closed{display:block}.elementor-accordion .elementor-tab-title .elementor-accordion-icon .elementor-accordion-icon-opened,.elementor-accordion .elementor-tab-title.elementor-active .elementor-accordion-icon-closed{display:none}.elementor-accordion .elementor-tab-title.elementor-active .elementor-accordion-icon-opened{display:block}.elementor-accordion .elementor-tab-content{display:none;padding:15px 20px;border-top:1px solid #d5d8dc}@media (max-width:767px){.elementor-accordion .elementor-tab-title{padding:12px 15px}.elementor-accordion .elementor-tab-title .elementor-accordion-icon{width:1.2em}.elementor-accordion .elementor-tab-content{padding:7px 15px}}.e-con-inner>.elementor-widget-accordion,.e-con>.elementor-widget-accordion{width:var(--container-widget-width);--flex-grow:var(--container-widget-flex-grow)} \ No newline at end of file diff --git a/wp-content/plugins/elementor/assets/css/widget-accordion.min.css b/wp-content/plugins/elementor/assets/css/widget-accordion.min.css new file mode 100644 index 0000000..fbb0be0 --- /dev/null +++ b/wp-content/plugins/elementor/assets/css/widget-accordion.min.css @@ -0,0 +1,2 @@ +/*! elementor - v3.20.0 - 26-03-2024 */ +.elementor-accordion{text-align:left}.elementor-accordion .elementor-accordion-item{border:1px solid #d5d8dc}.elementor-accordion .elementor-accordion-item+.elementor-accordion-item{border-top:none}.elementor-accordion .elementor-tab-title{margin:0;padding:15px 20px;font-weight:700;line-height:1;cursor:pointer;outline:none}.elementor-accordion .elementor-tab-title .elementor-accordion-icon{display:inline-block;width:1.5em}.elementor-accordion .elementor-tab-title .elementor-accordion-icon svg{width:1em;height:1em}.elementor-accordion .elementor-tab-title .elementor-accordion-icon.elementor-accordion-icon-right{float:right;text-align:right}.elementor-accordion .elementor-tab-title .elementor-accordion-icon.elementor-accordion-icon-left{float:left;text-align:left}.elementor-accordion .elementor-tab-title .elementor-accordion-icon .elementor-accordion-icon-closed{display:block}.elementor-accordion .elementor-tab-title .elementor-accordion-icon .elementor-accordion-icon-opened,.elementor-accordion .elementor-tab-title.elementor-active .elementor-accordion-icon-closed{display:none}.elementor-accordion .elementor-tab-title.elementor-active .elementor-accordion-icon-opened{display:block}.elementor-accordion .elementor-tab-content{display:none;padding:15px 20px;border-top:1px solid #d5d8dc}@media (max-width:767px){.elementor-accordion .elementor-tab-title{padding:12px 15px}.elementor-accordion .elementor-tab-title .elementor-accordion-icon{width:1.2em}.elementor-accordion .elementor-tab-content{padding:7px 15px}}.e-con-inner>.elementor-widget-accordion,.e-con>.elementor-widget-accordion{width:var(--container-widget-width);--flex-grow:var(--container-widget-flex-grow)} \ No newline at end of file diff --git a/wp-content/plugins/elementor/assets/css/widget-alert-rtl.min.css b/wp-content/plugins/elementor/assets/css/widget-alert-rtl.min.css new file mode 100644 index 0000000..d5256ba --- /dev/null +++ b/wp-content/plugins/elementor/assets/css/widget-alert-rtl.min.css @@ -0,0 +1,2 @@ +/*! elementor - v3.20.0 - 26-03-2024 */ +.elementor-alert{padding:15px;border-left:5px solid transparent;position:relative;text-align:right}.elementor-alert .elementor-alert-title{display:block;font-weight:700}.elementor-alert .elementor-alert-description{font-size:13px}.elementor-alert button.elementor-alert-dismiss{position:absolute;left:var(--dismiss-icon-horizontal-position,10px);top:var(--dismiss-icon-vertical-position,10px);padding:3px;font-size:var(--dismiss-icon-size,20px);line-height:1;background:transparent;color:var(--dismiss-icon-normal-color,inherit);border:none;cursor:pointer;transition-duration:var(--dismiss-icon-hover-transition-duration,.3s)}.elementor-alert button.elementor-alert-dismiss:hover{color:var(--dismiss-icon-hover-color,inherit)}.elementor-alert button.elementor-alert-dismiss svg{width:var(--dismiss-icon-size,20px);height:var(--dismiss-icon-size,20px);fill:var(--dismiss-icon-normal-color,currentColor);transition-duration:var(--dismiss-icon-hover-transition-duration,.3s)}.elementor-alert button.elementor-alert-dismiss svg:hover{fill:var(--dismiss-icon-hover-color,currentColor)}.elementor-alert.elementor-alert-info{color:#31708f;background-color:#d9edf7;border-color:#bcdff1}.elementor-alert.elementor-alert-success{color:#3c763d;background-color:#dff0d8;border-color:#cae6be}.elementor-alert.elementor-alert-warning{color:#8a6d3b;background-color:#fcf8e3;border-color:#f9f0c3}.elementor-alert.elementor-alert-danger{color:#a94442;background-color:#f2dede;border-color:#e8c4c4}@media (max-width:767px){.elementor-alert{padding:10px}.elementor-alert button.elementor-alert-dismiss{right:7px;top:7px}} \ No newline at end of file diff --git a/wp-content/plugins/elementor/assets/css/widget-alert.min.css b/wp-content/plugins/elementor/assets/css/widget-alert.min.css new file mode 100644 index 0000000..045c768 --- /dev/null +++ b/wp-content/plugins/elementor/assets/css/widget-alert.min.css @@ -0,0 +1,2 @@ +/*! elementor - v3.20.0 - 26-03-2024 */ +.elementor-alert{padding:15px;border-left:5px solid transparent;position:relative;text-align:left}.elementor-alert .elementor-alert-title{display:block;font-weight:700}.elementor-alert .elementor-alert-description{font-size:13px}.elementor-alert button.elementor-alert-dismiss{position:absolute;right:var(--dismiss-icon-horizontal-position,10px);top:var(--dismiss-icon-vertical-position,10px);padding:3px;font-size:var(--dismiss-icon-size,20px);line-height:1;background:transparent;color:var(--dismiss-icon-normal-color,inherit);border:none;cursor:pointer;transition-duration:var(--dismiss-icon-hover-transition-duration,.3s)}.elementor-alert button.elementor-alert-dismiss:hover{color:var(--dismiss-icon-hover-color,inherit)}.elementor-alert button.elementor-alert-dismiss svg{width:var(--dismiss-icon-size,20px);height:var(--dismiss-icon-size,20px);fill:var(--dismiss-icon-normal-color,currentColor);transition-duration:var(--dismiss-icon-hover-transition-duration,.3s)}.elementor-alert button.elementor-alert-dismiss svg:hover{fill:var(--dismiss-icon-hover-color,currentColor)}.elementor-alert.elementor-alert-info{color:#31708f;background-color:#d9edf7;border-color:#bcdff1}.elementor-alert.elementor-alert-success{color:#3c763d;background-color:#dff0d8;border-color:#cae6be}.elementor-alert.elementor-alert-warning{color:#8a6d3b;background-color:#fcf8e3;border-color:#f9f0c3}.elementor-alert.elementor-alert-danger{color:#a94442;background-color:#f2dede;border-color:#e8c4c4}@media (max-width:767px){.elementor-alert{padding:10px}.elementor-alert button.elementor-alert-dismiss{right:7px;top:7px}} \ No newline at end of file diff --git a/wp-content/plugins/elementor/assets/css/widget-counter-rtl.min.css b/wp-content/plugins/elementor/assets/css/widget-counter-rtl.min.css new file mode 100644 index 0000000..9f820b8 --- /dev/null +++ b/wp-content/plugins/elementor/assets/css/widget-counter-rtl.min.css @@ -0,0 +1,2 @@ +/*! elementor - v3.20.0 - 26-03-2024 */ +.elementor-counter .elementor-counter-number-wrapper{display:flex;font-size:69px;font-weight:600;line-height:1}.elementor-counter .elementor-counter-number-prefix,.elementor-counter .elementor-counter-number-suffix{flex-grow:1;white-space:pre-wrap}.elementor-counter .elementor-counter-number-prefix{text-align:left}.elementor-counter .elementor-counter-number-suffix{text-align:right}.elementor-counter .elementor-counter-title{text-align:center;font-size:19px;font-weight:400;line-height:2.5} \ No newline at end of file diff --git a/wp-content/plugins/elementor/assets/css/widget-counter.min.css b/wp-content/plugins/elementor/assets/css/widget-counter.min.css new file mode 100644 index 0000000..34011e2 --- /dev/null +++ b/wp-content/plugins/elementor/assets/css/widget-counter.min.css @@ -0,0 +1,2 @@ +/*! elementor - v3.20.0 - 26-03-2024 */ +.elementor-counter .elementor-counter-number-wrapper{display:flex;font-size:69px;font-weight:600;line-height:1}.elementor-counter .elementor-counter-number-prefix,.elementor-counter .elementor-counter-number-suffix{flex-grow:1;white-space:pre-wrap}.elementor-counter .elementor-counter-number-prefix{text-align:right}.elementor-counter .elementor-counter-number-suffix{text-align:left}.elementor-counter .elementor-counter-title{text-align:center;font-size:19px;font-weight:400;line-height:2.5} \ No newline at end of file diff --git a/wp-content/plugins/elementor/assets/css/widget-divider-rtl.min.css b/wp-content/plugins/elementor/assets/css/widget-divider-rtl.min.css new file mode 100644 index 0000000..7d8deb7 --- /dev/null +++ b/wp-content/plugins/elementor/assets/css/widget-divider-rtl.min.css @@ -0,0 +1,2 @@ +/*! elementor - v3.20.0 - 26-03-2024 */ +.elementor-widget-divider{--divider-border-style:none;--divider-border-width:1px;--divider-color:#0c0d0e;--divider-icon-size:20px;--divider-element-spacing:10px;--divider-pattern-height:24px;--divider-pattern-size:20px;--divider-pattern-url:none;--divider-pattern-repeat:repeat-x}.elementor-widget-divider .elementor-divider{display:flex}.elementor-widget-divider .elementor-divider__text{font-size:15px;line-height:1;max-width:95%}.elementor-widget-divider .elementor-divider__element{margin:0 var(--divider-element-spacing);flex-shrink:0}.elementor-widget-divider .elementor-icon{font-size:var(--divider-icon-size)}.elementor-widget-divider .elementor-divider-separator{display:flex;margin:0;direction:ltr}.elementor-widget-divider--view-line_icon .elementor-divider-separator,.elementor-widget-divider--view-line_text .elementor-divider-separator{align-items:center}.elementor-widget-divider--view-line_icon .elementor-divider-separator:after,.elementor-widget-divider--view-line_icon .elementor-divider-separator:before,.elementor-widget-divider--view-line_text .elementor-divider-separator:after,.elementor-widget-divider--view-line_text .elementor-divider-separator:before{display:block;content:"";border-block-end:0;flex-grow:1;border-block-start:var(--divider-border-width) var(--divider-border-style) var(--divider-color)}.elementor-widget-divider--element-align-left .elementor-divider .elementor-divider-separator>.elementor-divider__svg:first-of-type{flex-grow:0;flex-shrink:100}.elementor-widget-divider--element-align-left .elementor-divider-separator:before{content:none}.elementor-widget-divider--element-align-left .elementor-divider__element{margin-left:0}.elementor-widget-divider--element-align-right .elementor-divider .elementor-divider-separator>.elementor-divider__svg:last-of-type{flex-grow:0;flex-shrink:100}.elementor-widget-divider--element-align-right .elementor-divider-separator:after{content:none}.elementor-widget-divider--element-align-right .elementor-divider__element{margin-right:0}.elementor-widget-divider--element-align-start .elementor-divider .elementor-divider-separator>.elementor-divider__svg:first-of-type{flex-grow:0;flex-shrink:100}.elementor-widget-divider--element-align-start .elementor-divider-separator:before{content:none}.elementor-widget-divider--element-align-start .elementor-divider__element{margin-inline-start:0}.elementor-widget-divider--element-align-end .elementor-divider .elementor-divider-separator>.elementor-divider__svg:last-of-type{flex-grow:0;flex-shrink:100}.elementor-widget-divider--element-align-end .elementor-divider-separator:after{content:none}.elementor-widget-divider--element-align-end .elementor-divider__element{margin-inline-end:0}.elementor-widget-divider:not(.elementor-widget-divider--view-line_text):not(.elementor-widget-divider--view-line_icon) .elementor-divider-separator{border-block-start:var(--divider-border-width) var(--divider-border-style) var(--divider-color)}.elementor-widget-divider--separator-type-pattern{--divider-border-style:none}.elementor-widget-divider--separator-type-pattern.elementor-widget-divider--view-line .elementor-divider-separator,.elementor-widget-divider--separator-type-pattern:not(.elementor-widget-divider--view-line) .elementor-divider-separator:after,.elementor-widget-divider--separator-type-pattern:not(.elementor-widget-divider--view-line) .elementor-divider-separator:before,.elementor-widget-divider--separator-type-pattern:not([class*=elementor-widget-divider--view]) .elementor-divider-separator{width:100%;min-height:var(--divider-pattern-height);-webkit-mask-size:var(--divider-pattern-size) 100%;mask-size:var(--divider-pattern-size) 100%;-webkit-mask-repeat:var(--divider-pattern-repeat);mask-repeat:var(--divider-pattern-repeat);background-color:var(--divider-color);-webkit-mask-image:var(--divider-pattern-url);mask-image:var(--divider-pattern-url)}.elementor-widget-divider--no-spacing{--divider-pattern-size:auto}.elementor-widget-divider--bg-round{--divider-pattern-repeat:round}.rtl .elementor-widget-divider .elementor-divider__text{direction:rtl}.e-con-inner>.elementor-widget-divider,.e-con>.elementor-widget-divider{width:var(--container-widget-width,100%);--flex-grow:var(--container-widget-flex-grow)} \ No newline at end of file diff --git a/wp-content/plugins/elementor/assets/css/widget-divider.min.css b/wp-content/plugins/elementor/assets/css/widget-divider.min.css new file mode 100644 index 0000000..7d8deb7 --- /dev/null +++ b/wp-content/plugins/elementor/assets/css/widget-divider.min.css @@ -0,0 +1,2 @@ +/*! elementor - v3.20.0 - 26-03-2024 */ +.elementor-widget-divider{--divider-border-style:none;--divider-border-width:1px;--divider-color:#0c0d0e;--divider-icon-size:20px;--divider-element-spacing:10px;--divider-pattern-height:24px;--divider-pattern-size:20px;--divider-pattern-url:none;--divider-pattern-repeat:repeat-x}.elementor-widget-divider .elementor-divider{display:flex}.elementor-widget-divider .elementor-divider__text{font-size:15px;line-height:1;max-width:95%}.elementor-widget-divider .elementor-divider__element{margin:0 var(--divider-element-spacing);flex-shrink:0}.elementor-widget-divider .elementor-icon{font-size:var(--divider-icon-size)}.elementor-widget-divider .elementor-divider-separator{display:flex;margin:0;direction:ltr}.elementor-widget-divider--view-line_icon .elementor-divider-separator,.elementor-widget-divider--view-line_text .elementor-divider-separator{align-items:center}.elementor-widget-divider--view-line_icon .elementor-divider-separator:after,.elementor-widget-divider--view-line_icon .elementor-divider-separator:before,.elementor-widget-divider--view-line_text .elementor-divider-separator:after,.elementor-widget-divider--view-line_text .elementor-divider-separator:before{display:block;content:"";border-block-end:0;flex-grow:1;border-block-start:var(--divider-border-width) var(--divider-border-style) var(--divider-color)}.elementor-widget-divider--element-align-left .elementor-divider .elementor-divider-separator>.elementor-divider__svg:first-of-type{flex-grow:0;flex-shrink:100}.elementor-widget-divider--element-align-left .elementor-divider-separator:before{content:none}.elementor-widget-divider--element-align-left .elementor-divider__element{margin-left:0}.elementor-widget-divider--element-align-right .elementor-divider .elementor-divider-separator>.elementor-divider__svg:last-of-type{flex-grow:0;flex-shrink:100}.elementor-widget-divider--element-align-right .elementor-divider-separator:after{content:none}.elementor-widget-divider--element-align-right .elementor-divider__element{margin-right:0}.elementor-widget-divider--element-align-start .elementor-divider .elementor-divider-separator>.elementor-divider__svg:first-of-type{flex-grow:0;flex-shrink:100}.elementor-widget-divider--element-align-start .elementor-divider-separator:before{content:none}.elementor-widget-divider--element-align-start .elementor-divider__element{margin-inline-start:0}.elementor-widget-divider--element-align-end .elementor-divider .elementor-divider-separator>.elementor-divider__svg:last-of-type{flex-grow:0;flex-shrink:100}.elementor-widget-divider--element-align-end .elementor-divider-separator:after{content:none}.elementor-widget-divider--element-align-end .elementor-divider__element{margin-inline-end:0}.elementor-widget-divider:not(.elementor-widget-divider--view-line_text):not(.elementor-widget-divider--view-line_icon) .elementor-divider-separator{border-block-start:var(--divider-border-width) var(--divider-border-style) var(--divider-color)}.elementor-widget-divider--separator-type-pattern{--divider-border-style:none}.elementor-widget-divider--separator-type-pattern.elementor-widget-divider--view-line .elementor-divider-separator,.elementor-widget-divider--separator-type-pattern:not(.elementor-widget-divider--view-line) .elementor-divider-separator:after,.elementor-widget-divider--separator-type-pattern:not(.elementor-widget-divider--view-line) .elementor-divider-separator:before,.elementor-widget-divider--separator-type-pattern:not([class*=elementor-widget-divider--view]) .elementor-divider-separator{width:100%;min-height:var(--divider-pattern-height);-webkit-mask-size:var(--divider-pattern-size) 100%;mask-size:var(--divider-pattern-size) 100%;-webkit-mask-repeat:var(--divider-pattern-repeat);mask-repeat:var(--divider-pattern-repeat);background-color:var(--divider-color);-webkit-mask-image:var(--divider-pattern-url);mask-image:var(--divider-pattern-url)}.elementor-widget-divider--no-spacing{--divider-pattern-size:auto}.elementor-widget-divider--bg-round{--divider-pattern-repeat:round}.rtl .elementor-widget-divider .elementor-divider__text{direction:rtl}.e-con-inner>.elementor-widget-divider,.e-con>.elementor-widget-divider{width:var(--container-widget-width,100%);--flex-grow:var(--container-widget-flex-grow)} \ No newline at end of file diff --git a/wp-content/plugins/elementor/assets/css/widget-google_maps-rtl.min.css b/wp-content/plugins/elementor/assets/css/widget-google_maps-rtl.min.css new file mode 100644 index 0000000..05be090 --- /dev/null +++ b/wp-content/plugins/elementor/assets/css/widget-google_maps-rtl.min.css @@ -0,0 +1,2 @@ +/*! elementor - v3.20.0 - 26-03-2024 */ +.elementor-widget-google_maps .elementor-widget-container{overflow:hidden}.elementor-widget-google_maps .elementor-custom-embed{line-height:0}.elementor-widget-google_maps iframe{height:300px} \ No newline at end of file diff --git a/wp-content/plugins/elementor/assets/css/widget-google_maps.min.css b/wp-content/plugins/elementor/assets/css/widget-google_maps.min.css new file mode 100644 index 0000000..05be090 --- /dev/null +++ b/wp-content/plugins/elementor/assets/css/widget-google_maps.min.css @@ -0,0 +1,2 @@ +/*! elementor - v3.20.0 - 26-03-2024 */ +.elementor-widget-google_maps .elementor-widget-container{overflow:hidden}.elementor-widget-google_maps .elementor-custom-embed{line-height:0}.elementor-widget-google_maps iframe{height:300px} \ No newline at end of file diff --git a/wp-content/plugins/elementor/assets/css/widget-heading-rtl.min.css b/wp-content/plugins/elementor/assets/css/widget-heading-rtl.min.css new file mode 100644 index 0000000..99c5c1d --- /dev/null +++ b/wp-content/plugins/elementor/assets/css/widget-heading-rtl.min.css @@ -0,0 +1,2 @@ +/*! elementor - v3.20.0 - 26-03-2024 */ +.elementor-heading-title{padding:0;margin:0;line-height:1}.elementor-widget-heading .elementor-heading-title[class*=elementor-size-]>a{color:inherit;font-size:inherit;line-height:inherit}.elementor-widget-heading .elementor-heading-title.elementor-size-small{font-size:15px}.elementor-widget-heading .elementor-heading-title.elementor-size-medium{font-size:19px}.elementor-widget-heading .elementor-heading-title.elementor-size-large{font-size:29px}.elementor-widget-heading .elementor-heading-title.elementor-size-xl{font-size:39px}.elementor-widget-heading .elementor-heading-title.elementor-size-xxl{font-size:59px} \ No newline at end of file diff --git a/wp-content/plugins/elementor/assets/css/widget-heading.min.css b/wp-content/plugins/elementor/assets/css/widget-heading.min.css new file mode 100644 index 0000000..99c5c1d --- /dev/null +++ b/wp-content/plugins/elementor/assets/css/widget-heading.min.css @@ -0,0 +1,2 @@ +/*! elementor - v3.20.0 - 26-03-2024 */ +.elementor-heading-title{padding:0;margin:0;line-height:1}.elementor-widget-heading .elementor-heading-title[class*=elementor-size-]>a{color:inherit;font-size:inherit;line-height:inherit}.elementor-widget-heading .elementor-heading-title.elementor-size-small{font-size:15px}.elementor-widget-heading .elementor-heading-title.elementor-size-medium{font-size:19px}.elementor-widget-heading .elementor-heading-title.elementor-size-large{font-size:29px}.elementor-widget-heading .elementor-heading-title.elementor-size-xl{font-size:39px}.elementor-widget-heading .elementor-heading-title.elementor-size-xxl{font-size:59px} \ No newline at end of file diff --git a/wp-content/plugins/elementor/assets/css/widget-icon-box-rtl.min.css b/wp-content/plugins/elementor/assets/css/widget-icon-box-rtl.min.css new file mode 100644 index 0000000..f93ba01 --- /dev/null +++ b/wp-content/plugins/elementor/assets/css/widget-icon-box-rtl.min.css @@ -0,0 +1,2 @@ +/*! elementor - v3.20.0 - 26-03-2024 */ +.elementor-widget-icon-box .elementor-icon-box-wrapper{display:block;text-align:center}.elementor-widget-icon-box .elementor-icon-box-icon{margin-bottom:var(--icon-box-icon-margin,15px);margin-right:auto;margin-left:auto}@media (min-width:768px){.elementor-widget-icon-box.elementor-vertical-align-top .elementor-icon-box-wrapper{align-items:flex-start}.elementor-widget-icon-box.elementor-vertical-align-middle .elementor-icon-box-wrapper{align-items:center}.elementor-widget-icon-box.elementor-vertical-align-bottom .elementor-icon-box-wrapper{align-items:flex-end}}.elementor-widget-icon-box.elementor-position-left .elementor-icon-box-wrapper,.elementor-widget-icon-box.elementor-position-right .elementor-icon-box-wrapper{display:flex}.elementor-widget-icon-box.elementor-position-left .elementor-icon-box-icon,.elementor-widget-icon-box.elementor-position-right .elementor-icon-box-icon{display:inline-flex;flex:0 0 auto}.elementor-widget-icon-box.elementor-position-right .elementor-icon-box-wrapper{text-align:left;flex-direction:row}.elementor-widget-icon-box.elementor-position-right .elementor-icon-box-icon{margin-left:var(--icon-box-icon-margin,15px);margin-right:0;margin-bottom:unset}.elementor-widget-icon-box.elementor-position-left .elementor-icon-box-wrapper{text-align:right;flex-direction:row-reverse}.elementor-widget-icon-box.elementor-position-left .elementor-icon-box-icon{margin-right:var(--icon-box-icon-margin,15px);margin-left:0;margin-bottom:unset}.elementor-widget-icon-box.elementor-position-top .elementor-icon-box-wrapper{display:block;text-align:center;flex-direction:unset}.elementor-widget-icon-box.elementor-position-top .elementor-icon-box-icon{margin-bottom:var(--icon-box-icon-margin,15px);margin-right:auto;margin-left:auto}@media (min-width:-1){.elementor-widget-icon-box.elementor-widescreen-position-left .elementor-icon-box-wrapper,.elementor-widget-icon-box.elementor-widescreen-position-right .elementor-icon-box-wrapper{display:flex}.elementor-widget-icon-box.elementor-widescreen-position-left .elementor-icon-box-icon,.elementor-widget-icon-box.elementor-widescreen-position-right .elementor-icon-box-icon{display:inline-flex;flex:0 0 auto}.elementor-widget-icon-box.elementor-widescreen-position-right .elementor-icon-box-wrapper{text-align:left;flex-direction:row}.elementor-widget-icon-box.elementor-widescreen-position-right .elementor-icon-box-icon{margin-left:var(--icon-box-icon-margin,15px);margin-right:0;margin-bottom:unset}.elementor-widget-icon-box.elementor-widescreen-position-left .elementor-icon-box-wrapper{text-align:right;flex-direction:row-reverse}.elementor-widget-icon-box.elementor-widescreen-position-left .elementor-icon-box-icon{margin-right:var(--icon-box-icon-margin,15px);margin-left:0;margin-bottom:unset}.elementor-widget-icon-box.elementor-widescreen-position-top .elementor-icon-box-wrapper{display:block;text-align:center;flex-direction:unset}.elementor-widget-icon-box.elementor-widescreen-position-top .elementor-icon-box-icon{margin-bottom:var(--icon-box-icon-margin,15px);margin-right:auto;margin-left:auto}}@media (max-width:-1){.elementor-widget-icon-box.elementor-laptop-position-left .elementor-icon-box-wrapper,.elementor-widget-icon-box.elementor-laptop-position-right .elementor-icon-box-wrapper{display:flex}.elementor-widget-icon-box.elementor-laptop-position-left .elementor-icon-box-icon,.elementor-widget-icon-box.elementor-laptop-position-right .elementor-icon-box-icon{display:inline-flex;flex:0 0 auto}.elementor-widget-icon-box.elementor-laptop-position-right .elementor-icon-box-wrapper{text-align:left;flex-direction:row}.elementor-widget-icon-box.elementor-laptop-position-right .elementor-icon-box-icon{margin-left:var(--icon-box-icon-margin,15px);margin-right:0;margin-bottom:unset}.elementor-widget-icon-box.elementor-laptop-position-left .elementor-icon-box-wrapper{text-align:right;flex-direction:row-reverse}.elementor-widget-icon-box.elementor-laptop-position-left .elementor-icon-box-icon{margin-right:var(--icon-box-icon-margin,15px);margin-left:0;margin-bottom:unset}.elementor-widget-icon-box.elementor-laptop-position-top .elementor-icon-box-wrapper{display:block;text-align:center;flex-direction:unset}.elementor-widget-icon-box.elementor-laptop-position-top .elementor-icon-box-icon{margin-bottom:var(--icon-box-icon-margin,15px);margin-right:auto;margin-left:auto}}@media (max-width:-1){.elementor-widget-icon-box.elementor-tablet_extra-position-left .elementor-icon-box-wrapper,.elementor-widget-icon-box.elementor-tablet_extra-position-right .elementor-icon-box-wrapper{display:flex}.elementor-widget-icon-box.elementor-tablet_extra-position-left .elementor-icon-box-icon,.elementor-widget-icon-box.elementor-tablet_extra-position-right .elementor-icon-box-icon{display:inline-flex;flex:0 0 auto}.elementor-widget-icon-box.elementor-tablet_extra-position-right .elementor-icon-box-wrapper{text-align:left;flex-direction:row}.elementor-widget-icon-box.elementor-tablet_extra-position-right .elementor-icon-box-icon{margin-left:var(--icon-box-icon-margin,15px);margin-right:0;margin-bottom:unset}.elementor-widget-icon-box.elementor-tablet_extra-position-left .elementor-icon-box-wrapper{text-align:right;flex-direction:row-reverse}.elementor-widget-icon-box.elementor-tablet_extra-position-left .elementor-icon-box-icon{margin-right:var(--icon-box-icon-margin,15px);margin-left:0;margin-bottom:unset}.elementor-widget-icon-box.elementor-tablet_extra-position-top .elementor-icon-box-wrapper{display:block;text-align:center;flex-direction:unset}.elementor-widget-icon-box.elementor-tablet_extra-position-top .elementor-icon-box-icon{margin-bottom:var(--icon-box-icon-margin,15px);margin-right:auto;margin-left:auto}}@media (max-width:1024px){.elementor-widget-icon-box.elementor-tablet-position-left .elementor-icon-box-wrapper,.elementor-widget-icon-box.elementor-tablet-position-right .elementor-icon-box-wrapper{display:flex}.elementor-widget-icon-box.elementor-tablet-position-left .elementor-icon-box-icon,.elementor-widget-icon-box.elementor-tablet-position-right .elementor-icon-box-icon{display:inline-flex;flex:0 0 auto}.elementor-widget-icon-box.elementor-tablet-position-right .elementor-icon-box-wrapper{text-align:left;flex-direction:row}.elementor-widget-icon-box.elementor-tablet-position-right .elementor-icon-box-icon{margin-left:var(--icon-box-icon-margin,15px);margin-right:0;margin-bottom:unset}.elementor-widget-icon-box.elementor-tablet-position-left .elementor-icon-box-wrapper{text-align:right;flex-direction:row-reverse}.elementor-widget-icon-box.elementor-tablet-position-left .elementor-icon-box-icon{margin-right:var(--icon-box-icon-margin,15px);margin-left:0;margin-bottom:unset}.elementor-widget-icon-box.elementor-tablet-position-top .elementor-icon-box-wrapper{display:block;text-align:center;flex-direction:unset}.elementor-widget-icon-box.elementor-tablet-position-top .elementor-icon-box-icon{margin-bottom:var(--icon-box-icon-margin,15px);margin-right:auto;margin-left:auto}}@media (max-width:-1){.elementor-widget-icon-box.elementor-mobile_extra-position-left .elementor-icon-box-wrapper,.elementor-widget-icon-box.elementor-mobile_extra-position-right .elementor-icon-box-wrapper{display:flex}.elementor-widget-icon-box.elementor-mobile_extra-position-left .elementor-icon-box-icon,.elementor-widget-icon-box.elementor-mobile_extra-position-right .elementor-icon-box-icon{display:inline-flex;flex:0 0 auto}.elementor-widget-icon-box.elementor-mobile_extra-position-right .elementor-icon-box-wrapper{text-align:left;flex-direction:row}.elementor-widget-icon-box.elementor-mobile_extra-position-right .elementor-icon-box-icon{margin-left:var(--icon-box-icon-margin,15px);margin-right:0;margin-bottom:unset}.elementor-widget-icon-box.elementor-mobile_extra-position-left .elementor-icon-box-wrapper{text-align:right;flex-direction:row-reverse}.elementor-widget-icon-box.elementor-mobile_extra-position-left .elementor-icon-box-icon{margin-right:var(--icon-box-icon-margin,15px);margin-left:0;margin-bottom:unset}.elementor-widget-icon-box.elementor-mobile_extra-position-top .elementor-icon-box-wrapper{display:block;text-align:center;flex-direction:unset}.elementor-widget-icon-box.elementor-mobile_extra-position-top .elementor-icon-box-icon{margin-bottom:var(--icon-box-icon-margin,15px);margin-right:auto;margin-left:auto}}@media (max-width:767px){.elementor-widget-icon-box.elementor-mobile-position-left .elementor-icon-box-wrapper,.elementor-widget-icon-box.elementor-mobile-position-right .elementor-icon-box-wrapper{display:flex}.elementor-widget-icon-box.elementor-mobile-position-left .elementor-icon-box-icon,.elementor-widget-icon-box.elementor-mobile-position-right .elementor-icon-box-icon{display:inline-flex;flex:0 0 auto}.elementor-widget-icon-box.elementor-mobile-position-right .elementor-icon-box-wrapper{text-align:left;flex-direction:row}.elementor-widget-icon-box.elementor-mobile-position-right .elementor-icon-box-icon{margin-left:var(--icon-box-icon-margin,15px);margin-right:0;margin-bottom:unset}.elementor-widget-icon-box.elementor-mobile-position-left .elementor-icon-box-wrapper{text-align:right;flex-direction:row-reverse}.elementor-widget-icon-box.elementor-mobile-position-left .elementor-icon-box-icon{margin-right:var(--icon-box-icon-margin,15px);margin-left:0;margin-bottom:unset}.elementor-widget-icon-box.elementor-mobile-position-top .elementor-icon-box-wrapper{display:block;text-align:center;flex-direction:unset}.elementor-widget-icon-box.elementor-mobile-position-top .elementor-icon-box-icon{margin-bottom:var(--icon-box-icon-margin,15px);margin-right:auto;margin-left:auto}.elementor-widget-icon-box.elementor-position-left .elementor-icon-box-icon,.elementor-widget-icon-box.elementor-position-right .elementor-icon-box-icon{display:block;flex:unset}}.elementor-widget-icon-box .elementor-icon-box-title a{color:inherit}.elementor-widget-icon-box .elementor-icon-box-content{flex-grow:1}.elementor-widget-icon-box .elementor-icon-box-description{margin:0} \ No newline at end of file diff --git a/wp-content/plugins/elementor/assets/css/widget-icon-box.min.css b/wp-content/plugins/elementor/assets/css/widget-icon-box.min.css new file mode 100644 index 0000000..65edd64 --- /dev/null +++ b/wp-content/plugins/elementor/assets/css/widget-icon-box.min.css @@ -0,0 +1,2 @@ +/*! elementor - v3.20.0 - 26-03-2024 */ +.elementor-widget-icon-box .elementor-icon-box-wrapper{display:block;text-align:center}.elementor-widget-icon-box .elementor-icon-box-icon{margin-bottom:var(--icon-box-icon-margin,15px);margin-right:auto;margin-left:auto}@media (min-width:768px){.elementor-widget-icon-box.elementor-vertical-align-top .elementor-icon-box-wrapper{align-items:flex-start}.elementor-widget-icon-box.elementor-vertical-align-middle .elementor-icon-box-wrapper{align-items:center}.elementor-widget-icon-box.elementor-vertical-align-bottom .elementor-icon-box-wrapper{align-items:flex-end}}.elementor-widget-icon-box.elementor-position-left .elementor-icon-box-wrapper,.elementor-widget-icon-box.elementor-position-right .elementor-icon-box-wrapper{display:flex}.elementor-widget-icon-box.elementor-position-left .elementor-icon-box-icon,.elementor-widget-icon-box.elementor-position-right .elementor-icon-box-icon{display:inline-flex;flex:0 0 auto}.elementor-widget-icon-box.elementor-position-right .elementor-icon-box-wrapper{text-align:right;flex-direction:row-reverse}.elementor-widget-icon-box.elementor-position-right .elementor-icon-box-icon{margin-left:var(--icon-box-icon-margin,15px);margin-right:0;margin-bottom:unset}.elementor-widget-icon-box.elementor-position-left .elementor-icon-box-wrapper{text-align:left;flex-direction:row}.elementor-widget-icon-box.elementor-position-left .elementor-icon-box-icon{margin-right:var(--icon-box-icon-margin,15px);margin-left:0;margin-bottom:unset}.elementor-widget-icon-box.elementor-position-top .elementor-icon-box-wrapper{display:block;text-align:center;flex-direction:unset}.elementor-widget-icon-box.elementor-position-top .elementor-icon-box-icon{margin-bottom:var(--icon-box-icon-margin,15px);margin-right:auto;margin-left:auto}@media (min-width:-1){.elementor-widget-icon-box.elementor-widescreen-position-left .elementor-icon-box-wrapper,.elementor-widget-icon-box.elementor-widescreen-position-right .elementor-icon-box-wrapper{display:flex}.elementor-widget-icon-box.elementor-widescreen-position-left .elementor-icon-box-icon,.elementor-widget-icon-box.elementor-widescreen-position-right .elementor-icon-box-icon{display:inline-flex;flex:0 0 auto}.elementor-widget-icon-box.elementor-widescreen-position-right .elementor-icon-box-wrapper{text-align:right;flex-direction:row-reverse}.elementor-widget-icon-box.elementor-widescreen-position-right .elementor-icon-box-icon{margin-left:var(--icon-box-icon-margin,15px);margin-right:0;margin-bottom:unset}.elementor-widget-icon-box.elementor-widescreen-position-left .elementor-icon-box-wrapper{text-align:left;flex-direction:row}.elementor-widget-icon-box.elementor-widescreen-position-left .elementor-icon-box-icon{margin-right:var(--icon-box-icon-margin,15px);margin-left:0;margin-bottom:unset}.elementor-widget-icon-box.elementor-widescreen-position-top .elementor-icon-box-wrapper{display:block;text-align:center;flex-direction:unset}.elementor-widget-icon-box.elementor-widescreen-position-top .elementor-icon-box-icon{margin-bottom:var(--icon-box-icon-margin,15px);margin-right:auto;margin-left:auto}}@media (max-width:-1){.elementor-widget-icon-box.elementor-laptop-position-left .elementor-icon-box-wrapper,.elementor-widget-icon-box.elementor-laptop-position-right .elementor-icon-box-wrapper{display:flex}.elementor-widget-icon-box.elementor-laptop-position-left .elementor-icon-box-icon,.elementor-widget-icon-box.elementor-laptop-position-right .elementor-icon-box-icon{display:inline-flex;flex:0 0 auto}.elementor-widget-icon-box.elementor-laptop-position-right .elementor-icon-box-wrapper{text-align:right;flex-direction:row-reverse}.elementor-widget-icon-box.elementor-laptop-position-right .elementor-icon-box-icon{margin-left:var(--icon-box-icon-margin,15px);margin-right:0;margin-bottom:unset}.elementor-widget-icon-box.elementor-laptop-position-left .elementor-icon-box-wrapper{text-align:left;flex-direction:row}.elementor-widget-icon-box.elementor-laptop-position-left .elementor-icon-box-icon{margin-right:var(--icon-box-icon-margin,15px);margin-left:0;margin-bottom:unset}.elementor-widget-icon-box.elementor-laptop-position-top .elementor-icon-box-wrapper{display:block;text-align:center;flex-direction:unset}.elementor-widget-icon-box.elementor-laptop-position-top .elementor-icon-box-icon{margin-bottom:var(--icon-box-icon-margin,15px);margin-right:auto;margin-left:auto}}@media (max-width:-1){.elementor-widget-icon-box.elementor-tablet_extra-position-left .elementor-icon-box-wrapper,.elementor-widget-icon-box.elementor-tablet_extra-position-right .elementor-icon-box-wrapper{display:flex}.elementor-widget-icon-box.elementor-tablet_extra-position-left .elementor-icon-box-icon,.elementor-widget-icon-box.elementor-tablet_extra-position-right .elementor-icon-box-icon{display:inline-flex;flex:0 0 auto}.elementor-widget-icon-box.elementor-tablet_extra-position-right .elementor-icon-box-wrapper{text-align:right;flex-direction:row-reverse}.elementor-widget-icon-box.elementor-tablet_extra-position-right .elementor-icon-box-icon{margin-left:var(--icon-box-icon-margin,15px);margin-right:0;margin-bottom:unset}.elementor-widget-icon-box.elementor-tablet_extra-position-left .elementor-icon-box-wrapper{text-align:left;flex-direction:row}.elementor-widget-icon-box.elementor-tablet_extra-position-left .elementor-icon-box-icon{margin-right:var(--icon-box-icon-margin,15px);margin-left:0;margin-bottom:unset}.elementor-widget-icon-box.elementor-tablet_extra-position-top .elementor-icon-box-wrapper{display:block;text-align:center;flex-direction:unset}.elementor-widget-icon-box.elementor-tablet_extra-position-top .elementor-icon-box-icon{margin-bottom:var(--icon-box-icon-margin,15px);margin-right:auto;margin-left:auto}}@media (max-width:1024px){.elementor-widget-icon-box.elementor-tablet-position-left .elementor-icon-box-wrapper,.elementor-widget-icon-box.elementor-tablet-position-right .elementor-icon-box-wrapper{display:flex}.elementor-widget-icon-box.elementor-tablet-position-left .elementor-icon-box-icon,.elementor-widget-icon-box.elementor-tablet-position-right .elementor-icon-box-icon{display:inline-flex;flex:0 0 auto}.elementor-widget-icon-box.elementor-tablet-position-right .elementor-icon-box-wrapper{text-align:right;flex-direction:row-reverse}.elementor-widget-icon-box.elementor-tablet-position-right .elementor-icon-box-icon{margin-left:var(--icon-box-icon-margin,15px);margin-right:0;margin-bottom:unset}.elementor-widget-icon-box.elementor-tablet-position-left .elementor-icon-box-wrapper{text-align:left;flex-direction:row}.elementor-widget-icon-box.elementor-tablet-position-left .elementor-icon-box-icon{margin-right:var(--icon-box-icon-margin,15px);margin-left:0;margin-bottom:unset}.elementor-widget-icon-box.elementor-tablet-position-top .elementor-icon-box-wrapper{display:block;text-align:center;flex-direction:unset}.elementor-widget-icon-box.elementor-tablet-position-top .elementor-icon-box-icon{margin-bottom:var(--icon-box-icon-margin,15px);margin-right:auto;margin-left:auto}}@media (max-width:-1){.elementor-widget-icon-box.elementor-mobile_extra-position-left .elementor-icon-box-wrapper,.elementor-widget-icon-box.elementor-mobile_extra-position-right .elementor-icon-box-wrapper{display:flex}.elementor-widget-icon-box.elementor-mobile_extra-position-left .elementor-icon-box-icon,.elementor-widget-icon-box.elementor-mobile_extra-position-right .elementor-icon-box-icon{display:inline-flex;flex:0 0 auto}.elementor-widget-icon-box.elementor-mobile_extra-position-right .elementor-icon-box-wrapper{text-align:right;flex-direction:row-reverse}.elementor-widget-icon-box.elementor-mobile_extra-position-right .elementor-icon-box-icon{margin-left:var(--icon-box-icon-margin,15px);margin-right:0;margin-bottom:unset}.elementor-widget-icon-box.elementor-mobile_extra-position-left .elementor-icon-box-wrapper{text-align:left;flex-direction:row}.elementor-widget-icon-box.elementor-mobile_extra-position-left .elementor-icon-box-icon{margin-right:var(--icon-box-icon-margin,15px);margin-left:0;margin-bottom:unset}.elementor-widget-icon-box.elementor-mobile_extra-position-top .elementor-icon-box-wrapper{display:block;text-align:center;flex-direction:unset}.elementor-widget-icon-box.elementor-mobile_extra-position-top .elementor-icon-box-icon{margin-bottom:var(--icon-box-icon-margin,15px);margin-right:auto;margin-left:auto}}@media (max-width:767px){.elementor-widget-icon-box.elementor-mobile-position-left .elementor-icon-box-wrapper,.elementor-widget-icon-box.elementor-mobile-position-right .elementor-icon-box-wrapper{display:flex}.elementor-widget-icon-box.elementor-mobile-position-left .elementor-icon-box-icon,.elementor-widget-icon-box.elementor-mobile-position-right .elementor-icon-box-icon{display:inline-flex;flex:0 0 auto}.elementor-widget-icon-box.elementor-mobile-position-right .elementor-icon-box-wrapper{text-align:right;flex-direction:row-reverse}.elementor-widget-icon-box.elementor-mobile-position-right .elementor-icon-box-icon{margin-left:var(--icon-box-icon-margin,15px);margin-right:0;margin-bottom:unset}.elementor-widget-icon-box.elementor-mobile-position-left .elementor-icon-box-wrapper{text-align:left;flex-direction:row}.elementor-widget-icon-box.elementor-mobile-position-left .elementor-icon-box-icon{margin-right:var(--icon-box-icon-margin,15px);margin-left:0;margin-bottom:unset}.elementor-widget-icon-box.elementor-mobile-position-top .elementor-icon-box-wrapper{display:block;text-align:center;flex-direction:unset}.elementor-widget-icon-box.elementor-mobile-position-top .elementor-icon-box-icon{margin-bottom:var(--icon-box-icon-margin,15px);margin-right:auto;margin-left:auto}.elementor-widget-icon-box.elementor-position-left .elementor-icon-box-icon,.elementor-widget-icon-box.elementor-position-right .elementor-icon-box-icon{display:block;flex:unset}}.elementor-widget-icon-box .elementor-icon-box-title a{color:inherit}.elementor-widget-icon-box .elementor-icon-box-content{flex-grow:1}.elementor-widget-icon-box .elementor-icon-box-description{margin:0} \ No newline at end of file diff --git a/wp-content/plugins/elementor/assets/css/widget-icon-list-rtl.min.css b/wp-content/plugins/elementor/assets/css/widget-icon-list-rtl.min.css new file mode 100644 index 0000000..16dd3bf --- /dev/null +++ b/wp-content/plugins/elementor/assets/css/widget-icon-list-rtl.min.css @@ -0,0 +1,2 @@ +/*! elementor - v3.20.0 - 26-03-2024 */ +.elementor-widget.elementor-icon-list--layout-inline .elementor-widget-container{overflow:hidden}.elementor-widget .elementor-icon-list-items.elementor-inline-items{margin-right:-8px;margin-left:-8px}.elementor-widget .elementor-icon-list-items.elementor-inline-items .elementor-icon-list-item{margin-right:8px;margin-left:8px}.elementor-widget .elementor-icon-list-items.elementor-inline-items .elementor-icon-list-item:after{width:auto;left:auto;right:auto;position:relative;height:100%;border-top:0;border-bottom:0;border-right:0;border-left-width:1px;border-style:solid;left:-8px}.elementor-widget .elementor-icon-list-items{list-style-type:none;margin:0;padding:0}.elementor-widget .elementor-icon-list-item{margin:0;padding:0;position:relative}.elementor-widget .elementor-icon-list-item:after{position:absolute;bottom:0;width:100%}.elementor-widget .elementor-icon-list-item,.elementor-widget .elementor-icon-list-item a{display:flex;font-size:inherit;align-items:var(--icon-vertical-align,center)}.elementor-widget .elementor-icon-list-icon+.elementor-icon-list-text{align-self:center;padding-right:5px}.elementor-widget .elementor-icon-list-icon{display:flex;position:relative;top:var(--icon-vertical-offset,initial)}.elementor-widget .elementor-icon-list-icon svg{width:var(--e-icon-list-icon-size,1em);height:var(--e-icon-list-icon-size,1em)}.elementor-widget .elementor-icon-list-icon i{width:1.25em;font-size:var(--e-icon-list-icon-size)}.elementor-widget.elementor-widget-icon-list .elementor-icon-list-icon{text-align:var(--e-icon-list-icon-align)}.elementor-widget.elementor-widget-icon-list .elementor-icon-list-icon svg{margin:var(--e-icon-list-icon-margin,0 calc(var(--e-icon-list-icon-size, 1em) * .25) 0 0)}.elementor-widget.elementor-list-item-link-full_width a{width:100%}.elementor-widget.elementor-align-center .elementor-icon-list-item,.elementor-widget.elementor-align-center .elementor-icon-list-item a{justify-content:center}.elementor-widget.elementor-align-center .elementor-icon-list-item:after{margin:auto}.elementor-widget.elementor-align-center .elementor-inline-items{justify-content:center}.elementor-widget.elementor-align-left .elementor-icon-list-item,.elementor-widget.elementor-align-left .elementor-icon-list-item a{justify-content:flex-end;text-align:left}.elementor-widget.elementor-align-left .elementor-inline-items{justify-content:flex-end}.elementor-widget.elementor-align-right .elementor-icon-list-item,.elementor-widget.elementor-align-right .elementor-icon-list-item a{justify-content:flex-start;text-align:right}.elementor-widget.elementor-align-right .elementor-icon-list-items{justify-content:flex-start}.elementor-widget:not(.elementor-align-right) .elementor-icon-list-item:after{right:0}.elementor-widget:not(.elementor-align-left) .elementor-icon-list-item:after{left:0}@media (min-width:-1){.elementor-widget.elementor-widescreen-align-center .elementor-icon-list-item,.elementor-widget.elementor-widescreen-align-center .elementor-icon-list-item a{justify-content:center}.elementor-widget.elementor-widescreen-align-center .elementor-icon-list-item:after{margin:auto}.elementor-widget.elementor-widescreen-align-center .elementor-inline-items{justify-content:center}.elementor-widget.elementor-widescreen-align-left .elementor-icon-list-item,.elementor-widget.elementor-widescreen-align-left .elementor-icon-list-item a{justify-content:flex-end;text-align:left}.elementor-widget.elementor-widescreen-align-left .elementor-inline-items{justify-content:flex-end}.elementor-widget.elementor-widescreen-align-right .elementor-icon-list-item,.elementor-widget.elementor-widescreen-align-right .elementor-icon-list-item a{justify-content:flex-start;text-align:right}.elementor-widget.elementor-widescreen-align-right .elementor-icon-list-items{justify-content:flex-start}.elementor-widget:not(.elementor-widescreen-align-right) .elementor-icon-list-item:after{right:0}.elementor-widget:not(.elementor-widescreen-align-left) .elementor-icon-list-item:after{left:0}}@media (max-width:-1){.elementor-widget.elementor-laptop-align-center .elementor-icon-list-item,.elementor-widget.elementor-laptop-align-center .elementor-icon-list-item a{justify-content:center}.elementor-widget.elementor-laptop-align-center .elementor-icon-list-item:after{margin:auto}.elementor-widget.elementor-laptop-align-center .elementor-inline-items{justify-content:center}.elementor-widget.elementor-laptop-align-left .elementor-icon-list-item,.elementor-widget.elementor-laptop-align-left .elementor-icon-list-item a{justify-content:flex-end;text-align:left}.elementor-widget.elementor-laptop-align-left .elementor-inline-items{justify-content:flex-end}.elementor-widget.elementor-laptop-align-right .elementor-icon-list-item,.elementor-widget.elementor-laptop-align-right .elementor-icon-list-item a{justify-content:flex-start;text-align:right}.elementor-widget.elementor-laptop-align-right .elementor-icon-list-items{justify-content:flex-start}.elementor-widget:not(.elementor-laptop-align-right) .elementor-icon-list-item:after{right:0}.elementor-widget:not(.elementor-laptop-align-left) .elementor-icon-list-item:after{left:0}}@media (max-width:-1){.elementor-widget.elementor-tablet_extra-align-center .elementor-icon-list-item,.elementor-widget.elementor-tablet_extra-align-center .elementor-icon-list-item a{justify-content:center}.elementor-widget.elementor-tablet_extra-align-center .elementor-icon-list-item:after{margin:auto}.elementor-widget.elementor-tablet_extra-align-center .elementor-inline-items{justify-content:center}.elementor-widget.elementor-tablet_extra-align-left .elementor-icon-list-item,.elementor-widget.elementor-tablet_extra-align-left .elementor-icon-list-item a{justify-content:flex-end;text-align:left}.elementor-widget.elementor-tablet_extra-align-left .elementor-inline-items{justify-content:flex-end}.elementor-widget.elementor-tablet_extra-align-right .elementor-icon-list-item,.elementor-widget.elementor-tablet_extra-align-right .elementor-icon-list-item a{justify-content:flex-start;text-align:right}.elementor-widget.elementor-tablet_extra-align-right .elementor-icon-list-items{justify-content:flex-start}.elementor-widget:not(.elementor-tablet_extra-align-right) .elementor-icon-list-item:after{right:0}.elementor-widget:not(.elementor-tablet_extra-align-left) .elementor-icon-list-item:after{left:0}}@media (max-width:1024px){.elementor-widget.elementor-tablet-align-center .elementor-icon-list-item,.elementor-widget.elementor-tablet-align-center .elementor-icon-list-item a{justify-content:center}.elementor-widget.elementor-tablet-align-center .elementor-icon-list-item:after{margin:auto}.elementor-widget.elementor-tablet-align-center .elementor-inline-items{justify-content:center}.elementor-widget.elementor-tablet-align-left .elementor-icon-list-item,.elementor-widget.elementor-tablet-align-left .elementor-icon-list-item a{justify-content:flex-end;text-align:left}.elementor-widget.elementor-tablet-align-left .elementor-inline-items{justify-content:flex-end}.elementor-widget.elementor-tablet-align-right .elementor-icon-list-item,.elementor-widget.elementor-tablet-align-right .elementor-icon-list-item a{justify-content:flex-start;text-align:right}.elementor-widget.elementor-tablet-align-right .elementor-icon-list-items{justify-content:flex-start}.elementor-widget:not(.elementor-tablet-align-right) .elementor-icon-list-item:after{right:0}.elementor-widget:not(.elementor-tablet-align-left) .elementor-icon-list-item:after{left:0}}@media (max-width:-1){.elementor-widget.elementor-mobile_extra-align-center .elementor-icon-list-item,.elementor-widget.elementor-mobile_extra-align-center .elementor-icon-list-item a{justify-content:center}.elementor-widget.elementor-mobile_extra-align-center .elementor-icon-list-item:after{margin:auto}.elementor-widget.elementor-mobile_extra-align-center .elementor-inline-items{justify-content:center}.elementor-widget.elementor-mobile_extra-align-left .elementor-icon-list-item,.elementor-widget.elementor-mobile_extra-align-left .elementor-icon-list-item a{justify-content:flex-end;text-align:left}.elementor-widget.elementor-mobile_extra-align-left .elementor-inline-items{justify-content:flex-end}.elementor-widget.elementor-mobile_extra-align-right .elementor-icon-list-item,.elementor-widget.elementor-mobile_extra-align-right .elementor-icon-list-item a{justify-content:flex-start;text-align:right}.elementor-widget.elementor-mobile_extra-align-right .elementor-icon-list-items{justify-content:flex-start}.elementor-widget:not(.elementor-mobile_extra-align-right) .elementor-icon-list-item:after{right:0}.elementor-widget:not(.elementor-mobile_extra-align-left) .elementor-icon-list-item:after{left:0}}@media (max-width:767px){.elementor-widget.elementor-mobile-align-center .elementor-icon-list-item,.elementor-widget.elementor-mobile-align-center .elementor-icon-list-item a{justify-content:center}.elementor-widget.elementor-mobile-align-center .elementor-icon-list-item:after{margin:auto}.elementor-widget.elementor-mobile-align-center .elementor-inline-items{justify-content:center}.elementor-widget.elementor-mobile-align-left .elementor-icon-list-item,.elementor-widget.elementor-mobile-align-left .elementor-icon-list-item a{justify-content:flex-end;text-align:left}.elementor-widget.elementor-mobile-align-left .elementor-inline-items{justify-content:flex-end}.elementor-widget.elementor-mobile-align-right .elementor-icon-list-item,.elementor-widget.elementor-mobile-align-right .elementor-icon-list-item a{justify-content:flex-start;text-align:right}.elementor-widget.elementor-mobile-align-right .elementor-icon-list-items{justify-content:flex-start}.elementor-widget:not(.elementor-mobile-align-right) .elementor-icon-list-item:after{right:0}.elementor-widget:not(.elementor-mobile-align-left) .elementor-icon-list-item:after{left:0}} \ No newline at end of file diff --git a/wp-content/plugins/elementor/assets/css/widget-icon-list.min.css b/wp-content/plugins/elementor/assets/css/widget-icon-list.min.css new file mode 100644 index 0000000..1a79a90 --- /dev/null +++ b/wp-content/plugins/elementor/assets/css/widget-icon-list.min.css @@ -0,0 +1,2 @@ +/*! elementor - v3.20.0 - 26-03-2024 */ +.elementor-widget.elementor-icon-list--layout-inline .elementor-widget-container{overflow:hidden}.elementor-widget .elementor-icon-list-items.elementor-inline-items{margin-right:-8px;margin-left:-8px}.elementor-widget .elementor-icon-list-items.elementor-inline-items .elementor-icon-list-item{margin-right:8px;margin-left:8px}.elementor-widget .elementor-icon-list-items.elementor-inline-items .elementor-icon-list-item:after{width:auto;left:auto;right:auto;position:relative;height:100%;border-top:0;border-bottom:0;border-right:0;border-left-width:1px;border-style:solid;right:-8px}.elementor-widget .elementor-icon-list-items{list-style-type:none;margin:0;padding:0}.elementor-widget .elementor-icon-list-item{margin:0;padding:0;position:relative}.elementor-widget .elementor-icon-list-item:after{position:absolute;bottom:0;width:100%}.elementor-widget .elementor-icon-list-item,.elementor-widget .elementor-icon-list-item a{display:flex;font-size:inherit;align-items:var(--icon-vertical-align,center)}.elementor-widget .elementor-icon-list-icon+.elementor-icon-list-text{align-self:center;padding-left:5px}.elementor-widget .elementor-icon-list-icon{display:flex;position:relative;top:var(--icon-vertical-offset,initial)}.elementor-widget .elementor-icon-list-icon svg{width:var(--e-icon-list-icon-size,1em);height:var(--e-icon-list-icon-size,1em)}.elementor-widget .elementor-icon-list-icon i{width:1.25em;font-size:var(--e-icon-list-icon-size)}.elementor-widget.elementor-widget-icon-list .elementor-icon-list-icon{text-align:var(--e-icon-list-icon-align)}.elementor-widget.elementor-widget-icon-list .elementor-icon-list-icon svg{margin:var(--e-icon-list-icon-margin,0 calc(var(--e-icon-list-icon-size, 1em) * .25) 0 0)}.elementor-widget.elementor-list-item-link-full_width a{width:100%}.elementor-widget.elementor-align-center .elementor-icon-list-item,.elementor-widget.elementor-align-center .elementor-icon-list-item a{justify-content:center}.elementor-widget.elementor-align-center .elementor-icon-list-item:after{margin:auto}.elementor-widget.elementor-align-center .elementor-inline-items{justify-content:center}.elementor-widget.elementor-align-left .elementor-icon-list-item,.elementor-widget.elementor-align-left .elementor-icon-list-item a{justify-content:flex-start;text-align:left}.elementor-widget.elementor-align-left .elementor-inline-items{justify-content:flex-start}.elementor-widget.elementor-align-right .elementor-icon-list-item,.elementor-widget.elementor-align-right .elementor-icon-list-item a{justify-content:flex-end;text-align:right}.elementor-widget.elementor-align-right .elementor-icon-list-items{justify-content:flex-end}.elementor-widget:not(.elementor-align-right) .elementor-icon-list-item:after{left:0}.elementor-widget:not(.elementor-align-left) .elementor-icon-list-item:after{right:0}@media (min-width:-1){.elementor-widget.elementor-widescreen-align-center .elementor-icon-list-item,.elementor-widget.elementor-widescreen-align-center .elementor-icon-list-item a{justify-content:center}.elementor-widget.elementor-widescreen-align-center .elementor-icon-list-item:after{margin:auto}.elementor-widget.elementor-widescreen-align-center .elementor-inline-items{justify-content:center}.elementor-widget.elementor-widescreen-align-left .elementor-icon-list-item,.elementor-widget.elementor-widescreen-align-left .elementor-icon-list-item a{justify-content:flex-start;text-align:left}.elementor-widget.elementor-widescreen-align-left .elementor-inline-items{justify-content:flex-start}.elementor-widget.elementor-widescreen-align-right .elementor-icon-list-item,.elementor-widget.elementor-widescreen-align-right .elementor-icon-list-item a{justify-content:flex-end;text-align:right}.elementor-widget.elementor-widescreen-align-right .elementor-icon-list-items{justify-content:flex-end}.elementor-widget:not(.elementor-widescreen-align-right) .elementor-icon-list-item:after{left:0}.elementor-widget:not(.elementor-widescreen-align-left) .elementor-icon-list-item:after{right:0}}@media (max-width:-1){.elementor-widget.elementor-laptop-align-center .elementor-icon-list-item,.elementor-widget.elementor-laptop-align-center .elementor-icon-list-item a{justify-content:center}.elementor-widget.elementor-laptop-align-center .elementor-icon-list-item:after{margin:auto}.elementor-widget.elementor-laptop-align-center .elementor-inline-items{justify-content:center}.elementor-widget.elementor-laptop-align-left .elementor-icon-list-item,.elementor-widget.elementor-laptop-align-left .elementor-icon-list-item a{justify-content:flex-start;text-align:left}.elementor-widget.elementor-laptop-align-left .elementor-inline-items{justify-content:flex-start}.elementor-widget.elementor-laptop-align-right .elementor-icon-list-item,.elementor-widget.elementor-laptop-align-right .elementor-icon-list-item a{justify-content:flex-end;text-align:right}.elementor-widget.elementor-laptop-align-right .elementor-icon-list-items{justify-content:flex-end}.elementor-widget:not(.elementor-laptop-align-right) .elementor-icon-list-item:after{left:0}.elementor-widget:not(.elementor-laptop-align-left) .elementor-icon-list-item:after{right:0}}@media (max-width:-1){.elementor-widget.elementor-tablet_extra-align-center .elementor-icon-list-item,.elementor-widget.elementor-tablet_extra-align-center .elementor-icon-list-item a{justify-content:center}.elementor-widget.elementor-tablet_extra-align-center .elementor-icon-list-item:after{margin:auto}.elementor-widget.elementor-tablet_extra-align-center .elementor-inline-items{justify-content:center}.elementor-widget.elementor-tablet_extra-align-left .elementor-icon-list-item,.elementor-widget.elementor-tablet_extra-align-left .elementor-icon-list-item a{justify-content:flex-start;text-align:left}.elementor-widget.elementor-tablet_extra-align-left .elementor-inline-items{justify-content:flex-start}.elementor-widget.elementor-tablet_extra-align-right .elementor-icon-list-item,.elementor-widget.elementor-tablet_extra-align-right .elementor-icon-list-item a{justify-content:flex-end;text-align:right}.elementor-widget.elementor-tablet_extra-align-right .elementor-icon-list-items{justify-content:flex-end}.elementor-widget:not(.elementor-tablet_extra-align-right) .elementor-icon-list-item:after{left:0}.elementor-widget:not(.elementor-tablet_extra-align-left) .elementor-icon-list-item:after{right:0}}@media (max-width:1024px){.elementor-widget.elementor-tablet-align-center .elementor-icon-list-item,.elementor-widget.elementor-tablet-align-center .elementor-icon-list-item a{justify-content:center}.elementor-widget.elementor-tablet-align-center .elementor-icon-list-item:after{margin:auto}.elementor-widget.elementor-tablet-align-center .elementor-inline-items{justify-content:center}.elementor-widget.elementor-tablet-align-left .elementor-icon-list-item,.elementor-widget.elementor-tablet-align-left .elementor-icon-list-item a{justify-content:flex-start;text-align:left}.elementor-widget.elementor-tablet-align-left .elementor-inline-items{justify-content:flex-start}.elementor-widget.elementor-tablet-align-right .elementor-icon-list-item,.elementor-widget.elementor-tablet-align-right .elementor-icon-list-item a{justify-content:flex-end;text-align:right}.elementor-widget.elementor-tablet-align-right .elementor-icon-list-items{justify-content:flex-end}.elementor-widget:not(.elementor-tablet-align-right) .elementor-icon-list-item:after{left:0}.elementor-widget:not(.elementor-tablet-align-left) .elementor-icon-list-item:after{right:0}}@media (max-width:-1){.elementor-widget.elementor-mobile_extra-align-center .elementor-icon-list-item,.elementor-widget.elementor-mobile_extra-align-center .elementor-icon-list-item a{justify-content:center}.elementor-widget.elementor-mobile_extra-align-center .elementor-icon-list-item:after{margin:auto}.elementor-widget.elementor-mobile_extra-align-center .elementor-inline-items{justify-content:center}.elementor-widget.elementor-mobile_extra-align-left .elementor-icon-list-item,.elementor-widget.elementor-mobile_extra-align-left .elementor-icon-list-item a{justify-content:flex-start;text-align:left}.elementor-widget.elementor-mobile_extra-align-left .elementor-inline-items{justify-content:flex-start}.elementor-widget.elementor-mobile_extra-align-right .elementor-icon-list-item,.elementor-widget.elementor-mobile_extra-align-right .elementor-icon-list-item a{justify-content:flex-end;text-align:right}.elementor-widget.elementor-mobile_extra-align-right .elementor-icon-list-items{justify-content:flex-end}.elementor-widget:not(.elementor-mobile_extra-align-right) .elementor-icon-list-item:after{left:0}.elementor-widget:not(.elementor-mobile_extra-align-left) .elementor-icon-list-item:after{right:0}}@media (max-width:767px){.elementor-widget.elementor-mobile-align-center .elementor-icon-list-item,.elementor-widget.elementor-mobile-align-center .elementor-icon-list-item a{justify-content:center}.elementor-widget.elementor-mobile-align-center .elementor-icon-list-item:after{margin:auto}.elementor-widget.elementor-mobile-align-center .elementor-inline-items{justify-content:center}.elementor-widget.elementor-mobile-align-left .elementor-icon-list-item,.elementor-widget.elementor-mobile-align-left .elementor-icon-list-item a{justify-content:flex-start;text-align:left}.elementor-widget.elementor-mobile-align-left .elementor-inline-items{justify-content:flex-start}.elementor-widget.elementor-mobile-align-right .elementor-icon-list-item,.elementor-widget.elementor-mobile-align-right .elementor-icon-list-item a{justify-content:flex-end;text-align:right}.elementor-widget.elementor-mobile-align-right .elementor-icon-list-items{justify-content:flex-end}.elementor-widget:not(.elementor-mobile-align-right) .elementor-icon-list-item:after{left:0}.elementor-widget:not(.elementor-mobile-align-left) .elementor-icon-list-item:after{right:0}} \ No newline at end of file diff --git a/wp-content/plugins/elementor/assets/css/widget-image-box-rtl.min.css b/wp-content/plugins/elementor/assets/css/widget-image-box-rtl.min.css new file mode 100644 index 0000000..8523ce4 --- /dev/null +++ b/wp-content/plugins/elementor/assets/css/widget-image-box-rtl.min.css @@ -0,0 +1,2 @@ +/*! elementor - v3.20.0 - 26-03-2024 */ +.elementor-widget-image-box .elementor-image-box-content{width:100%}@media (min-width:768px){.elementor-widget-image-box.elementor-position-left .elementor-image-box-wrapper,.elementor-widget-image-box.elementor-position-right .elementor-image-box-wrapper{display:flex}.elementor-widget-image-box.elementor-position-right .elementor-image-box-wrapper{text-align:left;flex-direction:row}.elementor-widget-image-box.elementor-position-left .elementor-image-box-wrapper{text-align:right;flex-direction:row-reverse}.elementor-widget-image-box.elementor-position-top .elementor-image-box-img{margin:auto}.elementor-widget-image-box.elementor-vertical-align-top .elementor-image-box-wrapper{align-items:flex-start}.elementor-widget-image-box.elementor-vertical-align-middle .elementor-image-box-wrapper{align-items:center}.elementor-widget-image-box.elementor-vertical-align-bottom .elementor-image-box-wrapper{align-items:flex-end}}@media (max-width:767px){.elementor-widget-image-box .elementor-image-box-img{margin-left:auto!important;margin-right:auto!important;margin-bottom:15px}}.elementor-widget-image-box .elementor-image-box-img{display:inline-block}.elementor-widget-image-box .elementor-image-box-title a{color:inherit}.elementor-widget-image-box .elementor-image-box-wrapper{text-align:center}.elementor-widget-image-box .elementor-image-box-description{margin:0} \ No newline at end of file diff --git a/wp-content/plugins/elementor/assets/css/widget-image-box.min.css b/wp-content/plugins/elementor/assets/css/widget-image-box.min.css new file mode 100644 index 0000000..f2a45b8 --- /dev/null +++ b/wp-content/plugins/elementor/assets/css/widget-image-box.min.css @@ -0,0 +1,2 @@ +/*! elementor - v3.20.0 - 26-03-2024 */ +.elementor-widget-image-box .elementor-image-box-content{width:100%}@media (min-width:768px){.elementor-widget-image-box.elementor-position-left .elementor-image-box-wrapper,.elementor-widget-image-box.elementor-position-right .elementor-image-box-wrapper{display:flex}.elementor-widget-image-box.elementor-position-right .elementor-image-box-wrapper{text-align:right;flex-direction:row-reverse}.elementor-widget-image-box.elementor-position-left .elementor-image-box-wrapper{text-align:left;flex-direction:row}.elementor-widget-image-box.elementor-position-top .elementor-image-box-img{margin:auto}.elementor-widget-image-box.elementor-vertical-align-top .elementor-image-box-wrapper{align-items:flex-start}.elementor-widget-image-box.elementor-vertical-align-middle .elementor-image-box-wrapper{align-items:center}.elementor-widget-image-box.elementor-vertical-align-bottom .elementor-image-box-wrapper{align-items:flex-end}}@media (max-width:767px){.elementor-widget-image-box .elementor-image-box-img{margin-left:auto!important;margin-right:auto!important;margin-bottom:15px}}.elementor-widget-image-box .elementor-image-box-img{display:inline-block}.elementor-widget-image-box .elementor-image-box-title a{color:inherit}.elementor-widget-image-box .elementor-image-box-wrapper{text-align:center}.elementor-widget-image-box .elementor-image-box-description{margin:0} \ No newline at end of file diff --git a/wp-content/plugins/elementor/assets/css/widget-image-carousel-rtl.min.css b/wp-content/plugins/elementor/assets/css/widget-image-carousel-rtl.min.css new file mode 100644 index 0000000..dae57a7 --- /dev/null +++ b/wp-content/plugins/elementor/assets/css/widget-image-carousel-rtl.min.css @@ -0,0 +1,2 @@ +/*! elementor - v3.20.0 - 26-03-2024 */ +.elementor-widget-image-carousel .swiper,.elementor-widget-image-carousel .swiper-container{position:static}.elementor-widget-image-carousel .swiper-container .swiper-slide figure,.elementor-widget-image-carousel .swiper .swiper-slide figure{line-height:inherit}.elementor-widget-image-carousel .swiper-slide{text-align:center}.elementor-image-carousel-wrapper:not(.swiper-container-initialized):not(.swiper-initialized) .swiper-slide{max-width:calc(100% / var(--e-image-carousel-slides-to-show, 3))} \ No newline at end of file diff --git a/wp-content/plugins/elementor/assets/css/widget-image-carousel.min.css b/wp-content/plugins/elementor/assets/css/widget-image-carousel.min.css new file mode 100644 index 0000000..dae57a7 --- /dev/null +++ b/wp-content/plugins/elementor/assets/css/widget-image-carousel.min.css @@ -0,0 +1,2 @@ +/*! elementor - v3.20.0 - 26-03-2024 */ +.elementor-widget-image-carousel .swiper,.elementor-widget-image-carousel .swiper-container{position:static}.elementor-widget-image-carousel .swiper-container .swiper-slide figure,.elementor-widget-image-carousel .swiper .swiper-slide figure{line-height:inherit}.elementor-widget-image-carousel .swiper-slide{text-align:center}.elementor-image-carousel-wrapper:not(.swiper-container-initialized):not(.swiper-initialized) .swiper-slide{max-width:calc(100% / var(--e-image-carousel-slides-to-show, 3))} \ No newline at end of file diff --git a/wp-content/plugins/elementor/assets/css/widget-image-gallery-rtl.min.css b/wp-content/plugins/elementor/assets/css/widget-image-gallery-rtl.min.css new file mode 100644 index 0000000..bc86660 --- /dev/null +++ b/wp-content/plugins/elementor/assets/css/widget-image-gallery-rtl.min.css @@ -0,0 +1,2 @@ +/*! elementor - v3.20.0 - 26-03-2024 */ +.elementor-image-gallery .gallery-item{display:inline-block;text-align:center;vertical-align:top;width:100%;max-width:100%;margin:0 auto}.elementor-image-gallery .gallery-item img{margin:0 auto}.elementor-image-gallery .gallery-item .gallery-caption{margin:0}.elementor-image-gallery figure img{display:block}.elementor-image-gallery figure figcaption{width:100%}.gallery-spacing-custom .elementor-image-gallery .gallery-icon{padding:0}@media (min-width:768px){.elementor-image-gallery .gallery-columns-2 .gallery-item{max-width:50%}.elementor-image-gallery .gallery-columns-3 .gallery-item{max-width:33.33%}.elementor-image-gallery .gallery-columns-4 .gallery-item{max-width:25%}.elementor-image-gallery .gallery-columns-5 .gallery-item{max-width:20%}.elementor-image-gallery .gallery-columns-6 .gallery-item{max-width:16.666%}.elementor-image-gallery .gallery-columns-7 .gallery-item{max-width:14.28%}.elementor-image-gallery .gallery-columns-8 .gallery-item{max-width:12.5%}.elementor-image-gallery .gallery-columns-9 .gallery-item{max-width:11.11%}.elementor-image-gallery .gallery-columns-10 .gallery-item{max-width:10%}}@media (min-width:480px) and (max-width:767px){.elementor-image-gallery .gallery.gallery-columns-2 .gallery-item,.elementor-image-gallery .gallery.gallery-columns-3 .gallery-item,.elementor-image-gallery .gallery.gallery-columns-4 .gallery-item,.elementor-image-gallery .gallery.gallery-columns-5 .gallery-item,.elementor-image-gallery .gallery.gallery-columns-6 .gallery-item,.elementor-image-gallery .gallery.gallery-columns-7 .gallery-item,.elementor-image-gallery .gallery.gallery-columns-8 .gallery-item,.elementor-image-gallery .gallery.gallery-columns-9 .gallery-item,.elementor-image-gallery .gallery.gallery-columns-10 .gallery-item{max-width:50%}}@media (max-width:479px){.elementor-image-gallery .gallery.gallery-columns-2 .gallery-item,.elementor-image-gallery .gallery.gallery-columns-3 .gallery-item,.elementor-image-gallery .gallery.gallery-columns-4 .gallery-item,.elementor-image-gallery .gallery.gallery-columns-5 .gallery-item,.elementor-image-gallery .gallery.gallery-columns-6 .gallery-item,.elementor-image-gallery .gallery.gallery-columns-7 .gallery-item,.elementor-image-gallery .gallery.gallery-columns-8 .gallery-item,.elementor-image-gallery .gallery.gallery-columns-9 .gallery-item,.elementor-image-gallery .gallery.gallery-columns-10 .gallery-item{max-width:100%}} \ No newline at end of file diff --git a/wp-content/plugins/elementor/assets/css/widget-image-gallery.min.css b/wp-content/plugins/elementor/assets/css/widget-image-gallery.min.css new file mode 100644 index 0000000..bc86660 --- /dev/null +++ b/wp-content/plugins/elementor/assets/css/widget-image-gallery.min.css @@ -0,0 +1,2 @@ +/*! elementor - v3.20.0 - 26-03-2024 */ +.elementor-image-gallery .gallery-item{display:inline-block;text-align:center;vertical-align:top;width:100%;max-width:100%;margin:0 auto}.elementor-image-gallery .gallery-item img{margin:0 auto}.elementor-image-gallery .gallery-item .gallery-caption{margin:0}.elementor-image-gallery figure img{display:block}.elementor-image-gallery figure figcaption{width:100%}.gallery-spacing-custom .elementor-image-gallery .gallery-icon{padding:0}@media (min-width:768px){.elementor-image-gallery .gallery-columns-2 .gallery-item{max-width:50%}.elementor-image-gallery .gallery-columns-3 .gallery-item{max-width:33.33%}.elementor-image-gallery .gallery-columns-4 .gallery-item{max-width:25%}.elementor-image-gallery .gallery-columns-5 .gallery-item{max-width:20%}.elementor-image-gallery .gallery-columns-6 .gallery-item{max-width:16.666%}.elementor-image-gallery .gallery-columns-7 .gallery-item{max-width:14.28%}.elementor-image-gallery .gallery-columns-8 .gallery-item{max-width:12.5%}.elementor-image-gallery .gallery-columns-9 .gallery-item{max-width:11.11%}.elementor-image-gallery .gallery-columns-10 .gallery-item{max-width:10%}}@media (min-width:480px) and (max-width:767px){.elementor-image-gallery .gallery.gallery-columns-2 .gallery-item,.elementor-image-gallery .gallery.gallery-columns-3 .gallery-item,.elementor-image-gallery .gallery.gallery-columns-4 .gallery-item,.elementor-image-gallery .gallery.gallery-columns-5 .gallery-item,.elementor-image-gallery .gallery.gallery-columns-6 .gallery-item,.elementor-image-gallery .gallery.gallery-columns-7 .gallery-item,.elementor-image-gallery .gallery.gallery-columns-8 .gallery-item,.elementor-image-gallery .gallery.gallery-columns-9 .gallery-item,.elementor-image-gallery .gallery.gallery-columns-10 .gallery-item{max-width:50%}}@media (max-width:479px){.elementor-image-gallery .gallery.gallery-columns-2 .gallery-item,.elementor-image-gallery .gallery.gallery-columns-3 .gallery-item,.elementor-image-gallery .gallery.gallery-columns-4 .gallery-item,.elementor-image-gallery .gallery.gallery-columns-5 .gallery-item,.elementor-image-gallery .gallery.gallery-columns-6 .gallery-item,.elementor-image-gallery .gallery.gallery-columns-7 .gallery-item,.elementor-image-gallery .gallery.gallery-columns-8 .gallery-item,.elementor-image-gallery .gallery.gallery-columns-9 .gallery-item,.elementor-image-gallery .gallery.gallery-columns-10 .gallery-item{max-width:100%}} \ No newline at end of file diff --git a/wp-content/plugins/elementor/assets/css/widget-image-rtl.min.css b/wp-content/plugins/elementor/assets/css/widget-image-rtl.min.css new file mode 100644 index 0000000..4ffea79 --- /dev/null +++ b/wp-content/plugins/elementor/assets/css/widget-image-rtl.min.css @@ -0,0 +1,2 @@ +/*! elementor - v3.20.0 - 26-03-2024 */ +.elementor-widget-image{text-align:center}.elementor-widget-image a{display:inline-block}.elementor-widget-image a img[src$=".svg"]{width:48px}.elementor-widget-image img{vertical-align:middle;display:inline-block} \ No newline at end of file diff --git a/wp-content/plugins/elementor/assets/css/widget-image.min.css b/wp-content/plugins/elementor/assets/css/widget-image.min.css new file mode 100644 index 0000000..4ffea79 --- /dev/null +++ b/wp-content/plugins/elementor/assets/css/widget-image.min.css @@ -0,0 +1,2 @@ +/*! elementor - v3.20.0 - 26-03-2024 */ +.elementor-widget-image{text-align:center}.elementor-widget-image a{display:inline-block}.elementor-widget-image a img[src$=".svg"]{width:48px}.elementor-widget-image img{vertical-align:middle;display:inline-block} \ No newline at end of file diff --git a/wp-content/plugins/elementor/assets/css/widget-menu-anchor-rtl.min.css b/wp-content/plugins/elementor/assets/css/widget-menu-anchor-rtl.min.css new file mode 100644 index 0000000..1e79a12 --- /dev/null +++ b/wp-content/plugins/elementor/assets/css/widget-menu-anchor-rtl.min.css @@ -0,0 +1,2 @@ +/*! elementor - v3.20.0 - 26-03-2024 */ +body.elementor-page .elementor-widget-menu-anchor{margin-bottom:0} \ No newline at end of file diff --git a/wp-content/plugins/elementor/assets/css/widget-menu-anchor.min.css b/wp-content/plugins/elementor/assets/css/widget-menu-anchor.min.css new file mode 100644 index 0000000..1e79a12 --- /dev/null +++ b/wp-content/plugins/elementor/assets/css/widget-menu-anchor.min.css @@ -0,0 +1,2 @@ +/*! elementor - v3.20.0 - 26-03-2024 */ +body.elementor-page .elementor-widget-menu-anchor{margin-bottom:0} \ No newline at end of file diff --git a/wp-content/plugins/elementor/assets/css/widget-progress-rtl.min.css b/wp-content/plugins/elementor/assets/css/widget-progress-rtl.min.css new file mode 100644 index 0000000..1e5c6b7 --- /dev/null +++ b/wp-content/plugins/elementor/assets/css/widget-progress-rtl.min.css @@ -0,0 +1,2 @@ +/*! elementor - v3.20.0 - 26-03-2024 */ +.elementor-widget-progress{text-align:right}.elementor-progress-wrapper{position:relative;background-color:#eee;color:#fff;height:100%;border-radius:2px}.elementor-progress-bar{display:flex;background-color:#69727d;width:0;font-size:11px;height:30px;line-height:30px;border-radius:2px;transition:width 1s ease-in-out}.elementor-progress-text{flex-grow:1;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;padding-right:15px}.elementor-progress-percentage{padding-left:15px}.elementor-widget-progress .elementor-progress-wrapper.progress-info .elementor-progress-bar{background-color:#5bc0de}.elementor-widget-progress .elementor-progress-wrapper.progress-success .elementor-progress-bar{background-color:#5cb85c}.elementor-widget-progress .elementor-progress-wrapper.progress-warning .elementor-progress-bar{background-color:#f0ad4e}.elementor-widget-progress .elementor-progress-wrapper.progress-danger .elementor-progress-bar{background-color:#d9534f}.elementor-progress .elementor-title{display:block}@media (max-width:767px){.elementor-progress-text{padding-right:10px}}.e-con-inner .elementor-progress-wrapper,.e-con .elementor-progress-wrapper{height:auto} \ No newline at end of file diff --git a/wp-content/plugins/elementor/assets/css/widget-progress.min.css b/wp-content/plugins/elementor/assets/css/widget-progress.min.css new file mode 100644 index 0000000..ba60460 --- /dev/null +++ b/wp-content/plugins/elementor/assets/css/widget-progress.min.css @@ -0,0 +1,2 @@ +/*! elementor - v3.20.0 - 26-03-2024 */ +.elementor-widget-progress{text-align:left}.elementor-progress-wrapper{position:relative;background-color:#eee;color:#fff;height:100%;border-radius:2px}.elementor-progress-bar{display:flex;background-color:#69727d;width:0;font-size:11px;height:30px;line-height:30px;border-radius:2px;transition:width 1s ease-in-out}.elementor-progress-text{flex-grow:1;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;padding-left:15px}.elementor-progress-percentage{padding-right:15px}.elementor-widget-progress .elementor-progress-wrapper.progress-info .elementor-progress-bar{background-color:#5bc0de}.elementor-widget-progress .elementor-progress-wrapper.progress-success .elementor-progress-bar{background-color:#5cb85c}.elementor-widget-progress .elementor-progress-wrapper.progress-warning .elementor-progress-bar{background-color:#f0ad4e}.elementor-widget-progress .elementor-progress-wrapper.progress-danger .elementor-progress-bar{background-color:#d9534f}.elementor-progress .elementor-title{display:block}@media (max-width:767px){.elementor-progress-text{padding-left:10px}}.e-con-inner .elementor-progress-wrapper,.e-con .elementor-progress-wrapper{height:auto} \ No newline at end of file diff --git a/wp-content/plugins/elementor/assets/css/widget-rating-rtl.min.css b/wp-content/plugins/elementor/assets/css/widget-rating-rtl.min.css new file mode 100644 index 0000000..d5d2c3c --- /dev/null +++ b/wp-content/plugins/elementor/assets/css/widget-rating-rtl.min.css @@ -0,0 +1,2 @@ +/*! elementor - v3.20.0 - 26-03-2024 */ +.elementor-widget-rating{--e-rating-gap:0px;--e-rating-icon-font-size:16px;--e-rating-icon-color:#ccd6df;--e-rating-icon-marked-color:#f0ad4e;--e-rating-icon-marked-width:100%;--e-rating-justify-content:flex-start}.elementor-widget-rating .e-rating{display:flex;justify-content:var(--e-rating-justify-content)}.elementor-widget-rating .e-rating-wrapper{display:flex;justify-content:inherit;flex-direction:row;flex-wrap:wrap;width:-moz-fit-content;width:fit-content;margin-block-end:calc(0px - var(--e-rating-gap));margin-inline-end:calc(0px - var(--e-rating-gap))}.elementor-widget-rating .e-rating .e-icon{position:relative;margin-block-end:var(--e-rating-gap);margin-inline-end:var(--e-rating-gap)}.elementor-widget-rating .e-rating .e-icon-wrapper.e-icon-marked{--e-rating-icon-color:var(--e-rating-icon-marked-color);width:var(--e-rating-icon-marked-width);position:absolute;z-index:1;height:100%;left:0;top:0;overflow:hidden}.elementor-widget-rating .e-rating .e-icon-wrapper :is(i,svg){display:flex;flex-shrink:0}.elementor-widget-rating .e-rating .e-icon-wrapper i{font-size:var(--e-rating-icon-font-size);color:var(--e-rating-icon-color)}.elementor-widget-rating .e-rating .e-icon-wrapper svg{width:auto;height:var(--e-rating-icon-font-size);fill:var(--e-rating-icon-color)} \ No newline at end of file diff --git a/wp-content/plugins/elementor/assets/css/widget-rating.min.css b/wp-content/plugins/elementor/assets/css/widget-rating.min.css new file mode 100644 index 0000000..d5d2c3c --- /dev/null +++ b/wp-content/plugins/elementor/assets/css/widget-rating.min.css @@ -0,0 +1,2 @@ +/*! elementor - v3.20.0 - 26-03-2024 */ +.elementor-widget-rating{--e-rating-gap:0px;--e-rating-icon-font-size:16px;--e-rating-icon-color:#ccd6df;--e-rating-icon-marked-color:#f0ad4e;--e-rating-icon-marked-width:100%;--e-rating-justify-content:flex-start}.elementor-widget-rating .e-rating{display:flex;justify-content:var(--e-rating-justify-content)}.elementor-widget-rating .e-rating-wrapper{display:flex;justify-content:inherit;flex-direction:row;flex-wrap:wrap;width:-moz-fit-content;width:fit-content;margin-block-end:calc(0px - var(--e-rating-gap));margin-inline-end:calc(0px - var(--e-rating-gap))}.elementor-widget-rating .e-rating .e-icon{position:relative;margin-block-end:var(--e-rating-gap);margin-inline-end:var(--e-rating-gap)}.elementor-widget-rating .e-rating .e-icon-wrapper.e-icon-marked{--e-rating-icon-color:var(--e-rating-icon-marked-color);width:var(--e-rating-icon-marked-width);position:absolute;z-index:1;height:100%;left:0;top:0;overflow:hidden}.elementor-widget-rating .e-rating .e-icon-wrapper :is(i,svg){display:flex;flex-shrink:0}.elementor-widget-rating .e-rating .e-icon-wrapper i{font-size:var(--e-rating-icon-font-size);color:var(--e-rating-icon-color)}.elementor-widget-rating .e-rating .e-icon-wrapper svg{width:auto;height:var(--e-rating-icon-font-size);fill:var(--e-rating-icon-color)} \ No newline at end of file diff --git a/wp-content/plugins/elementor/assets/css/widget-social-icons-rtl.min.css b/wp-content/plugins/elementor/assets/css/widget-social-icons-rtl.min.css new file mode 100644 index 0000000..d42e86a --- /dev/null +++ b/wp-content/plugins/elementor/assets/css/widget-social-icons-rtl.min.css @@ -0,0 +1,2 @@ +/*! elementor - v3.20.0 - 26-03-2024 */ +.elementor-widget-social-icons.elementor-grid-0 .elementor-widget-container,.elementor-widget-social-icons.elementor-grid-mobile-0 .elementor-widget-container,.elementor-widget-social-icons.elementor-grid-tablet-0 .elementor-widget-container{line-height:1;font-size:0}.elementor-widget-social-icons:not(.elementor-grid-0):not(.elementor-grid-tablet-0):not(.elementor-grid-mobile-0) .elementor-grid{display:inline-grid}.elementor-widget-social-icons .elementor-grid{grid-column-gap:var(--grid-column-gap,5px);grid-row-gap:var(--grid-row-gap,5px);grid-template-columns:var(--grid-template-columns);justify-content:var(--justify-content,center);justify-items:var(--justify-content,center)}.elementor-icon.elementor-social-icon{font-size:var(--icon-size,25px);line-height:var(--icon-size,25px);width:calc(var(--icon-size, 25px) + 2 * var(--icon-padding, .5em));height:calc(var(--icon-size, 25px) + 2 * var(--icon-padding, .5em))}.elementor-social-icon{--e-social-icon-icon-color:#fff;display:inline-flex;background-color:#69727d;align-items:center;justify-content:center;text-align:center;cursor:pointer}.elementor-social-icon i{color:var(--e-social-icon-icon-color)}.elementor-social-icon svg{fill:var(--e-social-icon-icon-color)}.elementor-social-icon:last-child{margin:0}.elementor-social-icon:hover{opacity:.9;color:#fff}.elementor-social-icon-android{background-color:#a4c639}.elementor-social-icon-apple{background-color:#999}.elementor-social-icon-behance{background-color:#1769ff}.elementor-social-icon-bitbucket{background-color:#205081}.elementor-social-icon-codepen{background-color:#000}.elementor-social-icon-delicious{background-color:#39f}.elementor-social-icon-deviantart{background-color:#05cc47}.elementor-social-icon-digg{background-color:#005be2}.elementor-social-icon-dribbble{background-color:#ea4c89}.elementor-social-icon-elementor{background-color:#d30c5c}.elementor-social-icon-envelope{background-color:#ea4335}.elementor-social-icon-facebook,.elementor-social-icon-facebook-f{background-color:#3b5998}.elementor-social-icon-flickr{background-color:#0063dc}.elementor-social-icon-foursquare{background-color:#2d5be3}.elementor-social-icon-free-code-camp,.elementor-social-icon-freecodecamp{background-color:#006400}.elementor-social-icon-github{background-color:#333}.elementor-social-icon-gitlab{background-color:#e24329}.elementor-social-icon-globe{background-color:#69727d}.elementor-social-icon-google-plus,.elementor-social-icon-google-plus-g{background-color:#dd4b39}.elementor-social-icon-houzz{background-color:#7ac142}.elementor-social-icon-instagram{background-color:#262626}.elementor-social-icon-jsfiddle{background-color:#487aa2}.elementor-social-icon-link{background-color:#818a91}.elementor-social-icon-linkedin,.elementor-social-icon-linkedin-in{background-color:#0077b5}.elementor-social-icon-medium{background-color:#00ab6b}.elementor-social-icon-meetup{background-color:#ec1c40}.elementor-social-icon-mixcloud{background-color:#273a4b}.elementor-social-icon-odnoklassniki{background-color:#f4731c}.elementor-social-icon-pinterest{background-color:#bd081c}.elementor-social-icon-product-hunt{background-color:#da552f}.elementor-social-icon-reddit{background-color:#ff4500}.elementor-social-icon-rss{background-color:#f26522}.elementor-social-icon-shopping-cart{background-color:#4caf50}.elementor-social-icon-skype{background-color:#00aff0}.elementor-social-icon-slideshare{background-color:#0077b5}.elementor-social-icon-snapchat{background-color:#fffc00}.elementor-social-icon-soundcloud{background-color:#f80}.elementor-social-icon-spotify{background-color:#2ebd59}.elementor-social-icon-stack-overflow{background-color:#fe7a15}.elementor-social-icon-steam{background-color:#00adee}.elementor-social-icon-stumbleupon{background-color:#eb4924}.elementor-social-icon-telegram{background-color:#2ca5e0}.elementor-social-icon-threads{background-color:#000}.elementor-social-icon-thumb-tack{background-color:#1aa1d8}.elementor-social-icon-tripadvisor{background-color:#589442}.elementor-social-icon-tumblr{background-color:#35465c}.elementor-social-icon-twitch{background-color:#6441a5}.elementor-social-icon-twitter{background-color:#1da1f2}.elementor-social-icon-viber{background-color:#665cac}.elementor-social-icon-vimeo{background-color:#1ab7ea}.elementor-social-icon-vk{background-color:#45668e}.elementor-social-icon-weibo{background-color:#dd2430}.elementor-social-icon-weixin{background-color:#31a918}.elementor-social-icon-whatsapp{background-color:#25d366}.elementor-social-icon-wordpress{background-color:#21759b}.elementor-social-icon-x-twitter{background-color:#000}.elementor-social-icon-xing{background-color:#026466}.elementor-social-icon-yelp{background-color:#af0606}.elementor-social-icon-youtube{background-color:#cd201f}.elementor-social-icon-500px{background-color:#0099e5}.elementor-shape-rounded .elementor-icon.elementor-social-icon{border-radius:10%}.elementor-shape-circle .elementor-icon.elementor-social-icon{border-radius:50%} \ No newline at end of file diff --git a/wp-content/plugins/elementor/assets/css/widget-social-icons.min.css b/wp-content/plugins/elementor/assets/css/widget-social-icons.min.css new file mode 100644 index 0000000..d42e86a --- /dev/null +++ b/wp-content/plugins/elementor/assets/css/widget-social-icons.min.css @@ -0,0 +1,2 @@ +/*! elementor - v3.20.0 - 26-03-2024 */ +.elementor-widget-social-icons.elementor-grid-0 .elementor-widget-container,.elementor-widget-social-icons.elementor-grid-mobile-0 .elementor-widget-container,.elementor-widget-social-icons.elementor-grid-tablet-0 .elementor-widget-container{line-height:1;font-size:0}.elementor-widget-social-icons:not(.elementor-grid-0):not(.elementor-grid-tablet-0):not(.elementor-grid-mobile-0) .elementor-grid{display:inline-grid}.elementor-widget-social-icons .elementor-grid{grid-column-gap:var(--grid-column-gap,5px);grid-row-gap:var(--grid-row-gap,5px);grid-template-columns:var(--grid-template-columns);justify-content:var(--justify-content,center);justify-items:var(--justify-content,center)}.elementor-icon.elementor-social-icon{font-size:var(--icon-size,25px);line-height:var(--icon-size,25px);width:calc(var(--icon-size, 25px) + 2 * var(--icon-padding, .5em));height:calc(var(--icon-size, 25px) + 2 * var(--icon-padding, .5em))}.elementor-social-icon{--e-social-icon-icon-color:#fff;display:inline-flex;background-color:#69727d;align-items:center;justify-content:center;text-align:center;cursor:pointer}.elementor-social-icon i{color:var(--e-social-icon-icon-color)}.elementor-social-icon svg{fill:var(--e-social-icon-icon-color)}.elementor-social-icon:last-child{margin:0}.elementor-social-icon:hover{opacity:.9;color:#fff}.elementor-social-icon-android{background-color:#a4c639}.elementor-social-icon-apple{background-color:#999}.elementor-social-icon-behance{background-color:#1769ff}.elementor-social-icon-bitbucket{background-color:#205081}.elementor-social-icon-codepen{background-color:#000}.elementor-social-icon-delicious{background-color:#39f}.elementor-social-icon-deviantart{background-color:#05cc47}.elementor-social-icon-digg{background-color:#005be2}.elementor-social-icon-dribbble{background-color:#ea4c89}.elementor-social-icon-elementor{background-color:#d30c5c}.elementor-social-icon-envelope{background-color:#ea4335}.elementor-social-icon-facebook,.elementor-social-icon-facebook-f{background-color:#3b5998}.elementor-social-icon-flickr{background-color:#0063dc}.elementor-social-icon-foursquare{background-color:#2d5be3}.elementor-social-icon-free-code-camp,.elementor-social-icon-freecodecamp{background-color:#006400}.elementor-social-icon-github{background-color:#333}.elementor-social-icon-gitlab{background-color:#e24329}.elementor-social-icon-globe{background-color:#69727d}.elementor-social-icon-google-plus,.elementor-social-icon-google-plus-g{background-color:#dd4b39}.elementor-social-icon-houzz{background-color:#7ac142}.elementor-social-icon-instagram{background-color:#262626}.elementor-social-icon-jsfiddle{background-color:#487aa2}.elementor-social-icon-link{background-color:#818a91}.elementor-social-icon-linkedin,.elementor-social-icon-linkedin-in{background-color:#0077b5}.elementor-social-icon-medium{background-color:#00ab6b}.elementor-social-icon-meetup{background-color:#ec1c40}.elementor-social-icon-mixcloud{background-color:#273a4b}.elementor-social-icon-odnoklassniki{background-color:#f4731c}.elementor-social-icon-pinterest{background-color:#bd081c}.elementor-social-icon-product-hunt{background-color:#da552f}.elementor-social-icon-reddit{background-color:#ff4500}.elementor-social-icon-rss{background-color:#f26522}.elementor-social-icon-shopping-cart{background-color:#4caf50}.elementor-social-icon-skype{background-color:#00aff0}.elementor-social-icon-slideshare{background-color:#0077b5}.elementor-social-icon-snapchat{background-color:#fffc00}.elementor-social-icon-soundcloud{background-color:#f80}.elementor-social-icon-spotify{background-color:#2ebd59}.elementor-social-icon-stack-overflow{background-color:#fe7a15}.elementor-social-icon-steam{background-color:#00adee}.elementor-social-icon-stumbleupon{background-color:#eb4924}.elementor-social-icon-telegram{background-color:#2ca5e0}.elementor-social-icon-threads{background-color:#000}.elementor-social-icon-thumb-tack{background-color:#1aa1d8}.elementor-social-icon-tripadvisor{background-color:#589442}.elementor-social-icon-tumblr{background-color:#35465c}.elementor-social-icon-twitch{background-color:#6441a5}.elementor-social-icon-twitter{background-color:#1da1f2}.elementor-social-icon-viber{background-color:#665cac}.elementor-social-icon-vimeo{background-color:#1ab7ea}.elementor-social-icon-vk{background-color:#45668e}.elementor-social-icon-weibo{background-color:#dd2430}.elementor-social-icon-weixin{background-color:#31a918}.elementor-social-icon-whatsapp{background-color:#25d366}.elementor-social-icon-wordpress{background-color:#21759b}.elementor-social-icon-x-twitter{background-color:#000}.elementor-social-icon-xing{background-color:#026466}.elementor-social-icon-yelp{background-color:#af0606}.elementor-social-icon-youtube{background-color:#cd201f}.elementor-social-icon-500px{background-color:#0099e5}.elementor-shape-rounded .elementor-icon.elementor-social-icon{border-radius:10%}.elementor-shape-circle .elementor-icon.elementor-social-icon{border-radius:50%} \ No newline at end of file diff --git a/wp-content/plugins/elementor/assets/css/widget-spacer-rtl.min.css b/wp-content/plugins/elementor/assets/css/widget-spacer-rtl.min.css new file mode 100644 index 0000000..abe7fca --- /dev/null +++ b/wp-content/plugins/elementor/assets/css/widget-spacer-rtl.min.css @@ -0,0 +1,2 @@ +/*! elementor - v3.20.0 - 26-03-2024 */ +.elementor-column .elementor-spacer-inner{height:var(--spacer-size)}.e-con{--container-widget-width:100%}.e-con-inner>.elementor-widget-spacer,.e-con>.elementor-widget-spacer{width:var(--container-widget-width,var(--spacer-size));--align-self:var(--container-widget-align-self,initial);--flex-shrink:0}.e-con-inner>.elementor-widget-spacer>.elementor-widget-container,.e-con>.elementor-widget-spacer>.elementor-widget-container{height:100%;width:100%}.e-con-inner>.elementor-widget-spacer>.elementor-widget-container>.elementor-spacer,.e-con>.elementor-widget-spacer>.elementor-widget-container>.elementor-spacer{height:100%}.e-con-inner>.elementor-widget-spacer>.elementor-widget-container>.elementor-spacer>.elementor-spacer-inner,.e-con>.elementor-widget-spacer>.elementor-widget-container>.elementor-spacer>.elementor-spacer-inner{height:var(--container-widget-height,var(--spacer-size))}.e-con-inner>.elementor-widget-spacer.elementor-widget-empty,.e-con>.elementor-widget-spacer.elementor-widget-empty{position:relative;min-height:22px;min-width:22px}.e-con-inner>.elementor-widget-spacer.elementor-widget-empty .elementor-widget-empty-icon,.e-con>.elementor-widget-spacer.elementor-widget-empty .elementor-widget-empty-icon{position:absolute;top:0;bottom:0;left:0;right:0;margin:auto;padding:0;width:22px;height:22px} \ No newline at end of file diff --git a/wp-content/plugins/elementor/assets/css/widget-spacer.min.css b/wp-content/plugins/elementor/assets/css/widget-spacer.min.css new file mode 100644 index 0000000..abe7fca --- /dev/null +++ b/wp-content/plugins/elementor/assets/css/widget-spacer.min.css @@ -0,0 +1,2 @@ +/*! elementor - v3.20.0 - 26-03-2024 */ +.elementor-column .elementor-spacer-inner{height:var(--spacer-size)}.e-con{--container-widget-width:100%}.e-con-inner>.elementor-widget-spacer,.e-con>.elementor-widget-spacer{width:var(--container-widget-width,var(--spacer-size));--align-self:var(--container-widget-align-self,initial);--flex-shrink:0}.e-con-inner>.elementor-widget-spacer>.elementor-widget-container,.e-con>.elementor-widget-spacer>.elementor-widget-container{height:100%;width:100%}.e-con-inner>.elementor-widget-spacer>.elementor-widget-container>.elementor-spacer,.e-con>.elementor-widget-spacer>.elementor-widget-container>.elementor-spacer{height:100%}.e-con-inner>.elementor-widget-spacer>.elementor-widget-container>.elementor-spacer>.elementor-spacer-inner,.e-con>.elementor-widget-spacer>.elementor-widget-container>.elementor-spacer>.elementor-spacer-inner{height:var(--container-widget-height,var(--spacer-size))}.e-con-inner>.elementor-widget-spacer.elementor-widget-empty,.e-con>.elementor-widget-spacer.elementor-widget-empty{position:relative;min-height:22px;min-width:22px}.e-con-inner>.elementor-widget-spacer.elementor-widget-empty .elementor-widget-empty-icon,.e-con>.elementor-widget-spacer.elementor-widget-empty .elementor-widget-empty-icon{position:absolute;top:0;bottom:0;left:0;right:0;margin:auto;padding:0;width:22px;height:22px} \ No newline at end of file diff --git a/wp-content/plugins/elementor/assets/css/widget-star-rating-rtl.min.css b/wp-content/plugins/elementor/assets/css/widget-star-rating-rtl.min.css new file mode 100644 index 0000000..da435ca --- /dev/null +++ b/wp-content/plugins/elementor/assets/css/widget-star-rating-rtl.min.css @@ -0,0 +1,2 @@ +/*! elementor - v3.20.0 - 26-03-2024 */ +@charset "UTF-8";.elementor-star-rating{color:#ccd6df;font-family:eicons;display:inline-block}.elementor-star-rating i{display:inline-block;position:relative;font-style:normal;cursor:default}.elementor-star-rating i:before{content:"\e934";display:block;font-size:inherit;font-family:inherit;position:absolute;overflow:hidden;color:#f0ad4e;top:0;right:0}.elementor-star-rating .elementor-star-empty:before{content:none}.elementor-star-rating .elementor-star-1:before{width:10%}.elementor-star-rating .elementor-star-2:before{width:20%}.elementor-star-rating .elementor-star-3:before{width:30%}.elementor-star-rating .elementor-star-4:before{width:40%}.elementor-star-rating .elementor-star-5:before{width:50%}.elementor-star-rating .elementor-star-6:before{width:60%}.elementor-star-rating .elementor-star-7:before{width:70%}.elementor-star-rating .elementor-star-8:before{width:80%}.elementor-star-rating .elementor-star-9:before{width:90%}.elementor-star-rating__wrapper{display:flex;align-items:center}.elementor-star-rating__title{margin-left:10px}.elementor-star-rating--align-right .elementor-star-rating__wrapper{text-align:right;justify-content:flex-start}.elementor-star-rating--align-left .elementor-star-rating__wrapper{text-align:left;justify-content:flex-end}.elementor-star-rating--align-center .elementor-star-rating__wrapper{text-align:center;justify-content:center}.elementor-star-rating--align-justify .elementor-star-rating__title{margin-left:auto}@media (max-width:1024px){.elementor-star-rating-tablet--align-right .elementor-star-rating__wrapper{text-align:right;justify-content:flex-start}.elementor-star-rating-tablet--align-left .elementor-star-rating__wrapper{text-align:left;justify-content:flex-end}.elementor-star-rating-tablet--align-center .elementor-star-rating__wrapper{text-align:center;justify-content:center}.elementor-star-rating-tablet--align-justify .elementor-star-rating__title{margin-left:auto}}@media (max-width:767px){.elementor-star-rating-mobile--align-right .elementor-star-rating__wrapper{text-align:right;justify-content:flex-start}.elementor-star-rating-mobile--align-left .elementor-star-rating__wrapper{text-align:left;justify-content:flex-end}.elementor-star-rating-mobile--align-center .elementor-star-rating__wrapper{text-align:center;justify-content:center}.elementor-star-rating-mobile--align-justify .elementor-star-rating__title{margin-left:auto}}.last-star{letter-spacing:0}.elementor--star-style-star_unicode .elementor-star-rating{font-family:Arial,Helvetica,sans-serif}.elementor--star-style-star_unicode .elementor-star-rating i:not(.elementor-star-empty):before{content:"★"} \ No newline at end of file diff --git a/wp-content/plugins/elementor/assets/css/widget-star-rating.min.css b/wp-content/plugins/elementor/assets/css/widget-star-rating.min.css new file mode 100644 index 0000000..3830673 --- /dev/null +++ b/wp-content/plugins/elementor/assets/css/widget-star-rating.min.css @@ -0,0 +1,2 @@ +/*! elementor - v3.20.0 - 26-03-2024 */ +@charset "UTF-8";.elementor-star-rating{color:#ccd6df;font-family:eicons;display:inline-block}.elementor-star-rating i{display:inline-block;position:relative;font-style:normal;cursor:default}.elementor-star-rating i:before{content:"\e934";display:block;font-size:inherit;font-family:inherit;position:absolute;overflow:hidden;color:#f0ad4e;top:0;left:0}.elementor-star-rating .elementor-star-empty:before{content:none}.elementor-star-rating .elementor-star-1:before{width:10%}.elementor-star-rating .elementor-star-2:before{width:20%}.elementor-star-rating .elementor-star-3:before{width:30%}.elementor-star-rating .elementor-star-4:before{width:40%}.elementor-star-rating .elementor-star-5:before{width:50%}.elementor-star-rating .elementor-star-6:before{width:60%}.elementor-star-rating .elementor-star-7:before{width:70%}.elementor-star-rating .elementor-star-8:before{width:80%}.elementor-star-rating .elementor-star-9:before{width:90%}.elementor-star-rating__wrapper{display:flex;align-items:center}.elementor-star-rating__title{margin-right:10px}.elementor-star-rating--align-right .elementor-star-rating__wrapper{text-align:right;justify-content:flex-end}.elementor-star-rating--align-left .elementor-star-rating__wrapper{text-align:left;justify-content:flex-start}.elementor-star-rating--align-center .elementor-star-rating__wrapper{text-align:center;justify-content:center}.elementor-star-rating--align-justify .elementor-star-rating__title{margin-right:auto}@media (max-width:1024px){.elementor-star-rating-tablet--align-right .elementor-star-rating__wrapper{text-align:right;justify-content:flex-end}.elementor-star-rating-tablet--align-left .elementor-star-rating__wrapper{text-align:left;justify-content:flex-start}.elementor-star-rating-tablet--align-center .elementor-star-rating__wrapper{text-align:center;justify-content:center}.elementor-star-rating-tablet--align-justify .elementor-star-rating__title{margin-right:auto}}@media (max-width:767px){.elementor-star-rating-mobile--align-right .elementor-star-rating__wrapper{text-align:right;justify-content:flex-end}.elementor-star-rating-mobile--align-left .elementor-star-rating__wrapper{text-align:left;justify-content:flex-start}.elementor-star-rating-mobile--align-center .elementor-star-rating__wrapper{text-align:center;justify-content:center}.elementor-star-rating-mobile--align-justify .elementor-star-rating__title{margin-right:auto}}.last-star{letter-spacing:0}.elementor--star-style-star_unicode .elementor-star-rating{font-family:Arial,Helvetica,sans-serif}.elementor--star-style-star_unicode .elementor-star-rating i:not(.elementor-star-empty):before{content:"★"} \ No newline at end of file diff --git a/wp-content/plugins/elementor/assets/css/widget-tabs-rtl.min.css b/wp-content/plugins/elementor/assets/css/widget-tabs-rtl.min.css new file mode 100644 index 0000000..5c5e02f --- /dev/null +++ b/wp-content/plugins/elementor/assets/css/widget-tabs-rtl.min.css @@ -0,0 +1,2 @@ +/*! elementor - v3.20.0 - 26-03-2024 */ +.elementor-widget-tabs.elementor-tabs-view-vertical .elementor-tabs-wrapper{width:25%;flex-shrink:0}.elementor-widget-tabs.elementor-tabs-view-vertical .elementor-tab-desktop-title.elementor-active{border-left-style:none}.elementor-widget-tabs.elementor-tabs-view-vertical .elementor-tab-desktop-title.elementor-active:after,.elementor-widget-tabs.elementor-tabs-view-vertical .elementor-tab-desktop-title.elementor-active:before{height:999em;width:0;left:0;border-left-style:solid}.elementor-widget-tabs.elementor-tabs-view-vertical .elementor-tab-desktop-title.elementor-active:before{top:0;transform:translateY(-100%)}.elementor-widget-tabs.elementor-tabs-view-vertical .elementor-tab-desktop-title.elementor-active:after{top:100%}.elementor-widget-tabs.elementor-tabs-view-horizontal .elementor-tab-desktop-title{display:table-cell}.elementor-widget-tabs.elementor-tabs-view-horizontal .elementor-tab-desktop-title.elementor-active{border-bottom-style:none}.elementor-widget-tabs.elementor-tabs-view-horizontal .elementor-tab-desktop-title.elementor-active:after,.elementor-widget-tabs.elementor-tabs-view-horizontal .elementor-tab-desktop-title.elementor-active:before{bottom:0;height:0;width:999em;border-bottom-style:solid}.elementor-widget-tabs.elementor-tabs-view-horizontal .elementor-tab-desktop-title.elementor-active:before{right:100%}.elementor-widget-tabs.elementor-tabs-view-horizontal .elementor-tab-desktop-title.elementor-active:after{left:100%}.elementor-widget-tabs .elementor-tab-content,.elementor-widget-tabs .elementor-tab-title,.elementor-widget-tabs .elementor-tab-title:after,.elementor-widget-tabs .elementor-tab-title:before,.elementor-widget-tabs .elementor-tabs-content-wrapper{border:1px #d5d8dc}.elementor-widget-tabs .elementor-tabs{text-align:right}.elementor-widget-tabs .elementor-tabs-wrapper{overflow:hidden}.elementor-widget-tabs .elementor-tab-title{cursor:pointer;outline:var(--focus-outline,none)}.elementor-widget-tabs .elementor-tab-desktop-title{position:relative;padding:20px 25px;font-weight:700;line-height:1;border:solid transparent}.elementor-widget-tabs .elementor-tab-desktop-title.elementor-active{border-color:#d5d8dc}.elementor-widget-tabs .elementor-tab-desktop-title.elementor-active:after,.elementor-widget-tabs .elementor-tab-desktop-title.elementor-active:before{display:block;content:"";position:absolute}.elementor-widget-tabs .elementor-tab-desktop-title:focus-visible{border:1px solid #000}.elementor-widget-tabs .elementor-tab-mobile-title{padding:10px;cursor:pointer}.elementor-widget-tabs .elementor-tab-content{padding:20px;display:none}@media (max-width:767px){.elementor-tabs .elementor-tab-content,.elementor-tabs .elementor-tab-title{border-style:solid solid none}.elementor-tabs .elementor-tabs-wrapper{display:none}.elementor-tabs .elementor-tabs-content-wrapper{border-bottom-style:solid}.elementor-tabs .elementor-tab-content{padding:10px}}@media (min-width:768px){.elementor-widget-tabs.elementor-tabs-view-vertical .elementor-tabs{display:flex}.elementor-widget-tabs.elementor-tabs-view-vertical .elementor-tabs-wrapper{flex-direction:column}.elementor-widget-tabs.elementor-tabs-view-vertical .elementor-tabs-content-wrapper{flex-grow:1;border-style:solid none solid solid}.elementor-widget-tabs.elementor-tabs-view-horizontal .elementor-tab-content{border-style:none solid solid}.elementor-widget-tabs.elementor-tabs-alignment-center .elementor-tabs-wrapper,.elementor-widget-tabs.elementor-tabs-alignment-end .elementor-tabs-wrapper,.elementor-widget-tabs.elementor-tabs-alignment-stretch .elementor-tabs-wrapper{display:flex}.elementor-widget-tabs.elementor-tabs-alignment-center .elementor-tabs-wrapper{justify-content:center}.elementor-widget-tabs.elementor-tabs-alignment-end .elementor-tabs-wrapper{justify-content:flex-end}.elementor-widget-tabs.elementor-tabs-alignment-stretch.elementor-tabs-view-horizontal .elementor-tab-title{width:100%}.elementor-widget-tabs.elementor-tabs-alignment-stretch.elementor-tabs-view-vertical .elementor-tab-title{height:100%}.elementor-tabs .elementor-tab-mobile-title{display:none}} \ No newline at end of file diff --git a/wp-content/plugins/elementor/assets/css/widget-tabs.min.css b/wp-content/plugins/elementor/assets/css/widget-tabs.min.css new file mode 100644 index 0000000..5481bbe --- /dev/null +++ b/wp-content/plugins/elementor/assets/css/widget-tabs.min.css @@ -0,0 +1,2 @@ +/*! elementor - v3.20.0 - 26-03-2024 */ +.elementor-widget-tabs.elementor-tabs-view-vertical .elementor-tabs-wrapper{width:25%;flex-shrink:0}.elementor-widget-tabs.elementor-tabs-view-vertical .elementor-tab-desktop-title.elementor-active{border-right-style:none}.elementor-widget-tabs.elementor-tabs-view-vertical .elementor-tab-desktop-title.elementor-active:after,.elementor-widget-tabs.elementor-tabs-view-vertical .elementor-tab-desktop-title.elementor-active:before{height:999em;width:0;right:0;border-right-style:solid}.elementor-widget-tabs.elementor-tabs-view-vertical .elementor-tab-desktop-title.elementor-active:before{top:0;transform:translateY(-100%)}.elementor-widget-tabs.elementor-tabs-view-vertical .elementor-tab-desktop-title.elementor-active:after{top:100%}.elementor-widget-tabs.elementor-tabs-view-horizontal .elementor-tab-desktop-title{display:table-cell}.elementor-widget-tabs.elementor-tabs-view-horizontal .elementor-tab-desktop-title.elementor-active{border-bottom-style:none}.elementor-widget-tabs.elementor-tabs-view-horizontal .elementor-tab-desktop-title.elementor-active:after,.elementor-widget-tabs.elementor-tabs-view-horizontal .elementor-tab-desktop-title.elementor-active:before{bottom:0;height:0;width:999em;border-bottom-style:solid}.elementor-widget-tabs.elementor-tabs-view-horizontal .elementor-tab-desktop-title.elementor-active:before{right:100%}.elementor-widget-tabs.elementor-tabs-view-horizontal .elementor-tab-desktop-title.elementor-active:after{left:100%}.elementor-widget-tabs .elementor-tab-content,.elementor-widget-tabs .elementor-tab-title,.elementor-widget-tabs .elementor-tab-title:after,.elementor-widget-tabs .elementor-tab-title:before,.elementor-widget-tabs .elementor-tabs-content-wrapper{border:1px #d5d8dc}.elementor-widget-tabs .elementor-tabs{text-align:left}.elementor-widget-tabs .elementor-tabs-wrapper{overflow:hidden}.elementor-widget-tabs .elementor-tab-title{cursor:pointer;outline:var(--focus-outline,none)}.elementor-widget-tabs .elementor-tab-desktop-title{position:relative;padding:20px 25px;font-weight:700;line-height:1;border:solid transparent}.elementor-widget-tabs .elementor-tab-desktop-title.elementor-active{border-color:#d5d8dc}.elementor-widget-tabs .elementor-tab-desktop-title.elementor-active:after,.elementor-widget-tabs .elementor-tab-desktop-title.elementor-active:before{display:block;content:"";position:absolute}.elementor-widget-tabs .elementor-tab-desktop-title:focus-visible{border:1px solid #000}.elementor-widget-tabs .elementor-tab-mobile-title{padding:10px;cursor:pointer}.elementor-widget-tabs .elementor-tab-content{padding:20px;display:none}@media (max-width:767px){.elementor-tabs .elementor-tab-content,.elementor-tabs .elementor-tab-title{border-style:solid solid none}.elementor-tabs .elementor-tabs-wrapper{display:none}.elementor-tabs .elementor-tabs-content-wrapper{border-bottom-style:solid}.elementor-tabs .elementor-tab-content{padding:10px}}@media (min-width:768px){.elementor-widget-tabs.elementor-tabs-view-vertical .elementor-tabs{display:flex}.elementor-widget-tabs.elementor-tabs-view-vertical .elementor-tabs-wrapper{flex-direction:column}.elementor-widget-tabs.elementor-tabs-view-vertical .elementor-tabs-content-wrapper{flex-grow:1;border-style:solid solid solid none}.elementor-widget-tabs.elementor-tabs-view-horizontal .elementor-tab-content{border-style:none solid solid}.elementor-widget-tabs.elementor-tabs-alignment-center .elementor-tabs-wrapper,.elementor-widget-tabs.elementor-tabs-alignment-end .elementor-tabs-wrapper,.elementor-widget-tabs.elementor-tabs-alignment-stretch .elementor-tabs-wrapper{display:flex}.elementor-widget-tabs.elementor-tabs-alignment-center .elementor-tabs-wrapper{justify-content:center}.elementor-widget-tabs.elementor-tabs-alignment-end .elementor-tabs-wrapper{justify-content:flex-end}.elementor-widget-tabs.elementor-tabs-alignment-stretch.elementor-tabs-view-horizontal .elementor-tab-title{width:100%}.elementor-widget-tabs.elementor-tabs-alignment-stretch.elementor-tabs-view-vertical .elementor-tab-title{height:100%}.elementor-tabs .elementor-tab-mobile-title{display:none}} \ No newline at end of file diff --git a/wp-content/plugins/elementor/assets/css/widget-testimonial-rtl.min.css b/wp-content/plugins/elementor/assets/css/widget-testimonial-rtl.min.css new file mode 100644 index 0000000..6746a6d --- /dev/null +++ b/wp-content/plugins/elementor/assets/css/widget-testimonial-rtl.min.css @@ -0,0 +1,2 @@ +/*! elementor - v3.20.0 - 26-03-2024 */ +.elementor-testimonial-wrapper{overflow:hidden;text-align:center}.elementor-testimonial-wrapper .elementor-testimonial-content{font-size:1.3em;margin-bottom:20px}.elementor-testimonial-wrapper .elementor-testimonial-name{line-height:1.5;display:block}.elementor-testimonial-wrapper .elementor-testimonial-job{font-size:.85em;display:block}.elementor-testimonial-wrapper .elementor-testimonial-meta{width:100%;line-height:1}.elementor-testimonial-wrapper .elementor-testimonial-meta-inner{display:inline-block}.elementor-testimonial-wrapper .elementor-testimonial-meta .elementor-testimonial-details,.elementor-testimonial-wrapper .elementor-testimonial-meta .elementor-testimonial-image{display:table-cell;vertical-align:middle}.elementor-testimonial-wrapper .elementor-testimonial-meta .elementor-testimonial-image img{width:60px;height:60px;border-radius:50%;-o-object-fit:cover;object-fit:cover;max-width:none}.elementor-testimonial-wrapper .elementor-testimonial-meta.elementor-testimonial-image-position-aside .elementor-testimonial-image{padding-left:15px}.elementor-testimonial-wrapper .elementor-testimonial-meta.elementor-testimonial-image-position-aside .elementor-testimonial-details{text-align:right}.elementor-testimonial-wrapper .elementor-testimonial-meta.elementor-testimonial-image-position-top .elementor-testimonial-details,.elementor-testimonial-wrapper .elementor-testimonial-meta.elementor-testimonial-image-position-top .elementor-testimonial-image{display:block}.elementor-testimonial-wrapper .elementor-testimonial-meta.elementor-testimonial-image-position-top .elementor-testimonial-image{margin-bottom:20px} \ No newline at end of file diff --git a/wp-content/plugins/elementor/assets/css/widget-testimonial.min.css b/wp-content/plugins/elementor/assets/css/widget-testimonial.min.css new file mode 100644 index 0000000..8480808 --- /dev/null +++ b/wp-content/plugins/elementor/assets/css/widget-testimonial.min.css @@ -0,0 +1,2 @@ +/*! elementor - v3.20.0 - 26-03-2024 */ +.elementor-testimonial-wrapper{overflow:hidden;text-align:center}.elementor-testimonial-wrapper .elementor-testimonial-content{font-size:1.3em;margin-bottom:20px}.elementor-testimonial-wrapper .elementor-testimonial-name{line-height:1.5;display:block}.elementor-testimonial-wrapper .elementor-testimonial-job{font-size:.85em;display:block}.elementor-testimonial-wrapper .elementor-testimonial-meta{width:100%;line-height:1}.elementor-testimonial-wrapper .elementor-testimonial-meta-inner{display:inline-block}.elementor-testimonial-wrapper .elementor-testimonial-meta .elementor-testimonial-details,.elementor-testimonial-wrapper .elementor-testimonial-meta .elementor-testimonial-image{display:table-cell;vertical-align:middle}.elementor-testimonial-wrapper .elementor-testimonial-meta .elementor-testimonial-image img{width:60px;height:60px;border-radius:50%;-o-object-fit:cover;object-fit:cover;max-width:none}.elementor-testimonial-wrapper .elementor-testimonial-meta.elementor-testimonial-image-position-aside .elementor-testimonial-image{padding-right:15px}.elementor-testimonial-wrapper .elementor-testimonial-meta.elementor-testimonial-image-position-aside .elementor-testimonial-details{text-align:left}.elementor-testimonial-wrapper .elementor-testimonial-meta.elementor-testimonial-image-position-top .elementor-testimonial-details,.elementor-testimonial-wrapper .elementor-testimonial-meta.elementor-testimonial-image-position-top .elementor-testimonial-image{display:block}.elementor-testimonial-wrapper .elementor-testimonial-meta.elementor-testimonial-image-position-top .elementor-testimonial-image{margin-bottom:20px} \ No newline at end of file diff --git a/wp-content/plugins/elementor/assets/css/widget-text-editor-rtl.min.css b/wp-content/plugins/elementor/assets/css/widget-text-editor-rtl.min.css new file mode 100644 index 0000000..c367fc5 --- /dev/null +++ b/wp-content/plugins/elementor/assets/css/widget-text-editor-rtl.min.css @@ -0,0 +1,2 @@ +/*! elementor - v3.20.0 - 26-03-2024 */ +.elementor-widget-text-editor.elementor-drop-cap-view-stacked .elementor-drop-cap{background-color:#69727d;color:#fff}.elementor-widget-text-editor.elementor-drop-cap-view-framed .elementor-drop-cap{color:#69727d;border:3px solid;background-color:transparent}.elementor-widget-text-editor:not(.elementor-drop-cap-view-default) .elementor-drop-cap{margin-top:8px}.elementor-widget-text-editor:not(.elementor-drop-cap-view-default) .elementor-drop-cap-letter{width:1em;height:1em}.elementor-widget-text-editor .elementor-drop-cap{float:right;text-align:center;line-height:1;font-size:50px}.elementor-widget-text-editor .elementor-drop-cap-letter{display:inline-block} \ No newline at end of file diff --git a/wp-content/plugins/elementor/assets/css/widget-text-editor.min.css b/wp-content/plugins/elementor/assets/css/widget-text-editor.min.css new file mode 100644 index 0000000..962e285 --- /dev/null +++ b/wp-content/plugins/elementor/assets/css/widget-text-editor.min.css @@ -0,0 +1,2 @@ +/*! elementor - v3.20.0 - 26-03-2024 */ +.elementor-widget-text-editor.elementor-drop-cap-view-stacked .elementor-drop-cap{background-color:#69727d;color:#fff}.elementor-widget-text-editor.elementor-drop-cap-view-framed .elementor-drop-cap{color:#69727d;border:3px solid;background-color:transparent}.elementor-widget-text-editor:not(.elementor-drop-cap-view-default) .elementor-drop-cap{margin-top:8px}.elementor-widget-text-editor:not(.elementor-drop-cap-view-default) .elementor-drop-cap-letter{width:1em;height:1em}.elementor-widget-text-editor .elementor-drop-cap{float:left;text-align:center;line-height:1;font-size:50px}.elementor-widget-text-editor .elementor-drop-cap-letter{display:inline-block} \ No newline at end of file diff --git a/wp-content/plugins/elementor/assets/css/widget-toggle-rtl.min.css b/wp-content/plugins/elementor/assets/css/widget-toggle-rtl.min.css new file mode 100644 index 0000000..33a4a21 --- /dev/null +++ b/wp-content/plugins/elementor/assets/css/widget-toggle-rtl.min.css @@ -0,0 +1,2 @@ +/*! elementor - v3.20.0 - 26-03-2024 */ +.elementor-toggle{text-align:right}.elementor-toggle .elementor-tab-title{font-weight:700;line-height:1;margin:0;padding:15px;border-bottom:1px solid #d5d8dc;cursor:pointer;outline:none}.elementor-toggle .elementor-tab-title .elementor-toggle-icon{display:inline-block;width:1em}.elementor-toggle .elementor-tab-title .elementor-toggle-icon svg{margin-inline-start:-5px;width:1em;height:1em}.elementor-toggle .elementor-tab-title .elementor-toggle-icon.elementor-toggle-icon-right{float:right;text-align:right}.elementor-toggle .elementor-tab-title .elementor-toggle-icon.elementor-toggle-icon-left{float:left;text-align:left}.elementor-toggle .elementor-tab-title .elementor-toggle-icon .elementor-toggle-icon-closed{display:block}.elementor-toggle .elementor-tab-title .elementor-toggle-icon .elementor-toggle-icon-opened{display:none}.elementor-toggle .elementor-tab-title.elementor-active{border-bottom:none}.elementor-toggle .elementor-tab-title.elementor-active .elementor-toggle-icon-closed{display:none}.elementor-toggle .elementor-tab-title.elementor-active .elementor-toggle-icon-opened{display:block}.elementor-toggle .elementor-tab-content{padding:15px;border-bottom:1px solid #d5d8dc;display:none}@media (max-width:767px){.elementor-toggle .elementor-tab-title{padding:12px}.elementor-toggle .elementor-tab-content{padding:12px 10px}}.e-con-inner>.elementor-widget-toggle,.e-con>.elementor-widget-toggle{width:var(--container-widget-width);--flex-grow:var(--container-widget-flex-grow)} \ No newline at end of file diff --git a/wp-content/plugins/elementor/assets/css/widget-toggle.min.css b/wp-content/plugins/elementor/assets/css/widget-toggle.min.css new file mode 100644 index 0000000..e0a69d7 --- /dev/null +++ b/wp-content/plugins/elementor/assets/css/widget-toggle.min.css @@ -0,0 +1,2 @@ +/*! elementor - v3.20.0 - 26-03-2024 */ +.elementor-toggle{text-align:left}.elementor-toggle .elementor-tab-title{font-weight:700;line-height:1;margin:0;padding:15px;border-bottom:1px solid #d5d8dc;cursor:pointer;outline:none}.elementor-toggle .elementor-tab-title .elementor-toggle-icon{display:inline-block;width:1em}.elementor-toggle .elementor-tab-title .elementor-toggle-icon svg{margin-inline-start:-5px;width:1em;height:1em}.elementor-toggle .elementor-tab-title .elementor-toggle-icon.elementor-toggle-icon-right{float:right;text-align:right}.elementor-toggle .elementor-tab-title .elementor-toggle-icon.elementor-toggle-icon-left{float:left;text-align:left}.elementor-toggle .elementor-tab-title .elementor-toggle-icon .elementor-toggle-icon-closed{display:block}.elementor-toggle .elementor-tab-title .elementor-toggle-icon .elementor-toggle-icon-opened{display:none}.elementor-toggle .elementor-tab-title.elementor-active{border-bottom:none}.elementor-toggle .elementor-tab-title.elementor-active .elementor-toggle-icon-closed{display:none}.elementor-toggle .elementor-tab-title.elementor-active .elementor-toggle-icon-opened{display:block}.elementor-toggle .elementor-tab-content{padding:15px;border-bottom:1px solid #d5d8dc;display:none}@media (max-width:767px){.elementor-toggle .elementor-tab-title{padding:12px}.elementor-toggle .elementor-tab-content{padding:12px 10px}}.e-con-inner>.elementor-widget-toggle,.e-con>.elementor-widget-toggle{width:var(--container-widget-width);--flex-grow:var(--container-widget-flex-grow)} \ No newline at end of file diff --git a/wp-content/plugins/elementor/assets/css/widget-video-rtl.min.css b/wp-content/plugins/elementor/assets/css/widget-video-rtl.min.css new file mode 100644 index 0000000..34a89b6 --- /dev/null +++ b/wp-content/plugins/elementor/assets/css/widget-video-rtl.min.css @@ -0,0 +1,2 @@ +/*! elementor - v3.20.0 - 26-03-2024 */ +.elementor-widget-video .elementor-widget-container{overflow:hidden;transform:translateZ(0)}.elementor-widget-video .elementor-wrapper{aspect-ratio:var(--video-aspect-ratio)}.elementor-widget-video .elementor-wrapper iframe,.elementor-widget-video .elementor-wrapper video{height:100%;width:100%;display:flex;border:none;background-color:#000}@supports not (aspect-ratio:1/1){.elementor-widget-video .elementor-wrapper{position:relative;overflow:hidden;height:0;padding-bottom:calc(100% / var(--video-aspect-ratio))}.elementor-widget-video .elementor-wrapper iframe,.elementor-widget-video .elementor-wrapper video{position:absolute;top:0;right:0;bottom:0;left:0}}.elementor-widget-video .elementor-open-inline .elementor-custom-embed-image-overlay{position:absolute;top:0;right:0;bottom:0;left:0;background-size:cover;background-position:50%}.elementor-widget-video .elementor-custom-embed-image-overlay{cursor:pointer;text-align:center}.elementor-widget-video .elementor-custom-embed-image-overlay:hover .elementor-custom-embed-play i{opacity:1}.elementor-widget-video .elementor-custom-embed-image-overlay img{display:block;width:100%;aspect-ratio:var(--video-aspect-ratio);-o-object-fit:cover;object-fit:cover;-o-object-position:center center;object-position:center center}@supports not (aspect-ratio:1/1){.elementor-widget-video .elementor-custom-embed-image-overlay{position:relative;overflow:hidden;height:0;padding-bottom:calc(100% / var(--video-aspect-ratio))}.elementor-widget-video .elementor-custom-embed-image-overlay img{position:absolute;top:0;right:0;bottom:0;left:0}}.elementor-widget-video .e-hosted-video .elementor-video{-o-object-fit:cover;object-fit:cover}.e-con-inner>.elementor-widget-video,.e-con>.elementor-widget-video{width:var(--container-widget-width);--flex-grow:var(--container-widget-flex-grow)} \ No newline at end of file diff --git a/wp-content/plugins/elementor/assets/css/widget-video.min.css b/wp-content/plugins/elementor/assets/css/widget-video.min.css new file mode 100644 index 0000000..34a89b6 --- /dev/null +++ b/wp-content/plugins/elementor/assets/css/widget-video.min.css @@ -0,0 +1,2 @@ +/*! elementor - v3.20.0 - 26-03-2024 */ +.elementor-widget-video .elementor-widget-container{overflow:hidden;transform:translateZ(0)}.elementor-widget-video .elementor-wrapper{aspect-ratio:var(--video-aspect-ratio)}.elementor-widget-video .elementor-wrapper iframe,.elementor-widget-video .elementor-wrapper video{height:100%;width:100%;display:flex;border:none;background-color:#000}@supports not (aspect-ratio:1/1){.elementor-widget-video .elementor-wrapper{position:relative;overflow:hidden;height:0;padding-bottom:calc(100% / var(--video-aspect-ratio))}.elementor-widget-video .elementor-wrapper iframe,.elementor-widget-video .elementor-wrapper video{position:absolute;top:0;right:0;bottom:0;left:0}}.elementor-widget-video .elementor-open-inline .elementor-custom-embed-image-overlay{position:absolute;top:0;right:0;bottom:0;left:0;background-size:cover;background-position:50%}.elementor-widget-video .elementor-custom-embed-image-overlay{cursor:pointer;text-align:center}.elementor-widget-video .elementor-custom-embed-image-overlay:hover .elementor-custom-embed-play i{opacity:1}.elementor-widget-video .elementor-custom-embed-image-overlay img{display:block;width:100%;aspect-ratio:var(--video-aspect-ratio);-o-object-fit:cover;object-fit:cover;-o-object-position:center center;object-position:center center}@supports not (aspect-ratio:1/1){.elementor-widget-video .elementor-custom-embed-image-overlay{position:relative;overflow:hidden;height:0;padding-bottom:calc(100% / var(--video-aspect-ratio))}.elementor-widget-video .elementor-custom-embed-image-overlay img{position:absolute;top:0;right:0;bottom:0;left:0}}.elementor-widget-video .e-hosted-video .elementor-video{-o-object-fit:cover;object-fit:cover}.e-con-inner>.elementor-widget-video,.e-con>.elementor-widget-video{width:var(--container-widget-width);--flex-grow:var(--container-widget-flex-grow)} \ No newline at end of file diff --git a/wp-content/plugins/elementor/assets/data/responsive-widgets.json b/wp-content/plugins/elementor/assets/data/responsive-widgets.json new file mode 100644 index 0000000..6ddc324 --- /dev/null +++ b/wp-content/plugins/elementor/assets/data/responsive-widgets.json @@ -0,0 +1 @@ +{"accordion":true,"alert":true,"icon-box":true,"icon-list":true,"image-box":true,"image-gallery":true,"progress":true,"star-rating":true,"tabs":true,"toggle":true} diff --git a/wp-content/plugins/elementor/assets/images/announcement.png b/wp-content/plugins/elementor/assets/images/announcement.png new file mode 100644 index 0000000..374512e Binary files /dev/null and b/wp-content/plugins/elementor/assets/images/announcement.png differ diff --git a/wp-content/plugins/elementor/assets/images/app/onboarding/Blank_Canvas.svg b/wp-content/plugins/elementor/assets/images/app/onboarding/Blank_Canvas.svg new file mode 100644 index 0000000..e484f5b --- /dev/null +++ b/wp-content/plugins/elementor/assets/images/app/onboarding/Blank_Canvas.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/wp-content/plugins/elementor/assets/images/app/onboarding/Blank_Preview.jpg b/wp-content/plugins/elementor/assets/images/app/onboarding/Blank_Preview.jpg new file mode 100644 index 0000000..39549b5 Binary files /dev/null and b/wp-content/plugins/elementor/assets/images/app/onboarding/Blank_Preview.jpg differ diff --git a/wp-content/plugins/elementor/assets/images/app/onboarding/Illustration_Account.svg b/wp-content/plugins/elementor/assets/images/app/onboarding/Illustration_Account.svg new file mode 100644 index 0000000..5529132 --- /dev/null +++ b/wp-content/plugins/elementor/assets/images/app/onboarding/Illustration_Account.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/wp-content/plugins/elementor/assets/images/app/onboarding/Illustration_Hello.svg b/wp-content/plugins/elementor/assets/images/app/onboarding/Illustration_Hello.svg new file mode 100644 index 0000000..c916f0d --- /dev/null +++ b/wp-content/plugins/elementor/assets/images/app/onboarding/Illustration_Hello.svg @@ -0,0 +1,366 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/wp-content/plugins/elementor/assets/images/app/onboarding/Illustration_Setup.svg b/wp-content/plugins/elementor/assets/images/app/onboarding/Illustration_Setup.svg new file mode 100644 index 0000000..ceeb4b0 --- /dev/null +++ b/wp-content/plugins/elementor/assets/images/app/onboarding/Illustration_Setup.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/wp-content/plugins/elementor/assets/images/app/onboarding/Library.svg b/wp-content/plugins/elementor/assets/images/app/onboarding/Library.svg new file mode 100644 index 0000000..a19c101 --- /dev/null +++ b/wp-content/plugins/elementor/assets/images/app/onboarding/Library.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/wp-content/plugins/elementor/assets/images/app/site-editor/archive.svg b/wp-content/plugins/elementor/assets/images/app/site-editor/archive.svg new file mode 100644 index 0000000..67bc424 --- /dev/null +++ b/wp-content/plugins/elementor/assets/images/app/site-editor/archive.svg @@ -0,0 +1,157 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/wp-content/plugins/elementor/assets/images/app/site-editor/error-404.svg b/wp-content/plugins/elementor/assets/images/app/site-editor/error-404.svg new file mode 100644 index 0000000..91f0300 --- /dev/null +++ b/wp-content/plugins/elementor/assets/images/app/site-editor/error-404.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/wp-content/plugins/elementor/assets/images/app/site-editor/footer.svg b/wp-content/plugins/elementor/assets/images/app/site-editor/footer.svg new file mode 100644 index 0000000..9c64ebb --- /dev/null +++ b/wp-content/plugins/elementor/assets/images/app/site-editor/footer.svg @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/wp-content/plugins/elementor/assets/images/app/site-editor/header.svg b/wp-content/plugins/elementor/assets/images/app/site-editor/header.svg new file mode 100644 index 0000000..78999c4 --- /dev/null +++ b/wp-content/plugins/elementor/assets/images/app/site-editor/header.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/wp-content/plugins/elementor/assets/images/app/site-editor/product.svg b/wp-content/plugins/elementor/assets/images/app/site-editor/product.svg new file mode 100644 index 0000000..20d6dde --- /dev/null +++ b/wp-content/plugins/elementor/assets/images/app/site-editor/product.svg @@ -0,0 +1,106 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/wp-content/plugins/elementor/assets/images/app/site-editor/products.svg b/wp-content/plugins/elementor/assets/images/app/site-editor/products.svg new file mode 100644 index 0000000..9d2a40a --- /dev/null +++ b/wp-content/plugins/elementor/assets/images/app/site-editor/products.svg @@ -0,0 +1,200 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/wp-content/plugins/elementor/assets/images/app/site-editor/search-results.svg b/wp-content/plugins/elementor/assets/images/app/site-editor/search-results.svg new file mode 100644 index 0000000..cb01df8 --- /dev/null +++ b/wp-content/plugins/elementor/assets/images/app/site-editor/search-results.svg @@ -0,0 +1,77 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/wp-content/plugins/elementor/assets/images/app/site-editor/single-page.svg b/wp-content/plugins/elementor/assets/images/app/site-editor/single-page.svg new file mode 100644 index 0000000..391efee --- /dev/null +++ b/wp-content/plugins/elementor/assets/images/app/site-editor/single-page.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/wp-content/plugins/elementor/assets/images/app/site-editor/single-post.svg b/wp-content/plugins/elementor/assets/images/app/site-editor/single-post.svg new file mode 100644 index 0000000..d2018d3 --- /dev/null +++ b/wp-content/plugins/elementor/assets/images/app/site-editor/single-post.svg @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/wp-content/plugins/elementor/assets/images/blur.png b/wp-content/plugins/elementor/assets/images/blur.png new file mode 100644 index 0000000..9d9bed6 Binary files /dev/null and b/wp-content/plugins/elementor/assets/images/blur.png differ diff --git a/wp-content/plugins/elementor/assets/images/containers-announcement.png b/wp-content/plugins/elementor/assets/images/containers-announcement.png new file mode 100644 index 0000000..a6e6317 Binary files /dev/null and b/wp-content/plugins/elementor/assets/images/containers-announcement.png differ diff --git a/wp-content/plugins/elementor/assets/images/contrast.png b/wp-content/plugins/elementor/assets/images/contrast.png new file mode 100644 index 0000000..6ed7017 Binary files /dev/null and b/wp-content/plugins/elementor/assets/images/contrast.png differ diff --git a/wp-content/plugins/elementor/assets/images/eyedropper.svg b/wp-content/plugins/elementor/assets/images/eyedropper.svg new file mode 100644 index 0000000..a040e18 --- /dev/null +++ b/wp-content/plugins/elementor/assets/images/eyedropper.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/wp-content/plugins/elementor/assets/images/go-pro-wp-dashboard.svg b/wp-content/plugins/elementor/assets/images/go-pro-wp-dashboard.svg new file mode 100644 index 0000000..3e5022b --- /dev/null +++ b/wp-content/plugins/elementor/assets/images/go-pro-wp-dashboard.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/wp-content/plugins/elementor/assets/images/go-pro.svg b/wp-content/plugins/elementor/assets/images/go-pro.svg new file mode 100644 index 0000000..517766a --- /dev/null +++ b/wp-content/plugins/elementor/assets/images/go-pro.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/wp-content/plugins/elementor/assets/images/information.svg b/wp-content/plugins/elementor/assets/images/information.svg new file mode 100644 index 0000000..82a6fc3 --- /dev/null +++ b/wp-content/plugins/elementor/assets/images/information.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/wp-content/plugins/elementor/assets/images/library-connect/left-1.png b/wp-content/plugins/elementor/assets/images/library-connect/left-1.png new file mode 100644 index 0000000..de10e80 Binary files /dev/null and b/wp-content/plugins/elementor/assets/images/library-connect/left-1.png differ diff --git a/wp-content/plugins/elementor/assets/images/library-connect/left-2.png b/wp-content/plugins/elementor/assets/images/library-connect/left-2.png new file mode 100644 index 0000000..037da88 Binary files /dev/null and b/wp-content/plugins/elementor/assets/images/library-connect/left-2.png differ diff --git a/wp-content/plugins/elementor/assets/images/library-connect/right-1.png b/wp-content/plugins/elementor/assets/images/library-connect/right-1.png new file mode 100644 index 0000000..9fd8014 Binary files /dev/null and b/wp-content/plugins/elementor/assets/images/library-connect/right-1.png differ diff --git a/wp-content/plugins/elementor/assets/images/library-connect/right-2.png b/wp-content/plugins/elementor/assets/images/library-connect/right-2.png new file mode 100644 index 0000000..2dd235c Binary files /dev/null and b/wp-content/plugins/elementor/assets/images/library-connect/right-2.png differ diff --git a/wp-content/plugins/elementor/assets/images/logo-icon.png b/wp-content/plugins/elementor/assets/images/logo-icon.png new file mode 100644 index 0000000..35613c0 Binary files /dev/null and b/wp-content/plugins/elementor/assets/images/logo-icon.png differ diff --git a/wp-content/plugins/elementor/assets/images/logo-panel.svg b/wp-content/plugins/elementor/assets/images/logo-panel.svg new file mode 100644 index 0000000..884a25b --- /dev/null +++ b/wp-content/plugins/elementor/assets/images/logo-panel.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/wp-content/plugins/elementor/assets/images/logo-platform.svg b/wp-content/plugins/elementor/assets/images/logo-platform.svg new file mode 100644 index 0000000..b1cbb63 --- /dev/null +++ b/wp-content/plugins/elementor/assets/images/logo-platform.svg @@ -0,0 +1 @@ + diff --git a/wp-content/plugins/elementor/assets/images/no-search-results.svg b/wp-content/plugins/elementor/assets/images/no-search-results.svg new file mode 100644 index 0000000..100ceb3 --- /dev/null +++ b/wp-content/plugins/elementor/assets/images/no-search-results.svg @@ -0,0 +1,74 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/wp-content/plugins/elementor/assets/images/placeholder.png b/wp-content/plugins/elementor/assets/images/placeholder.png new file mode 100644 index 0000000..bf1d310 Binary files /dev/null and b/wp-content/plugins/elementor/assets/images/placeholder.png differ diff --git a/wp-content/plugins/elementor/assets/images/unlock-sticky.svg b/wp-content/plugins/elementor/assets/images/unlock-sticky.svg new file mode 100644 index 0000000..3b565af --- /dev/null +++ b/wp-content/plugins/elementor/assets/images/unlock-sticky.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/wp-content/plugins/elementor/assets/js/0880f3bc2f53dadb50fa.bundle.min.js b/wp-content/plugins/elementor/assets/js/0880f3bc2f53dadb50fa.bundle.min.js new file mode 100644 index 0000000..b599be0 --- /dev/null +++ b/wp-content/plugins/elementor/assets/js/0880f3bc2f53dadb50fa.bundle.min.js @@ -0,0 +1,3 @@ +/*! elementor - v3.20.0 - 26-03-2024 */ +/*! For license information please see 0880f3bc2f53dadb50fa.bundle.min.js.LICENSE.txt */ +(self.webpackChunkelementor=self.webpackChunkelementor||[]).push([[656],{55839:(r,n,o)=>{"use strict";var a=o(12097),i={childContextTypes:!0,contextType:!0,contextTypes:!0,defaultProps:!0,displayName:!0,getDefaultProps:!0,getDerivedStateFromError:!0,getDerivedStateFromProps:!0,mixins:!0,propTypes:!0,type:!0},c={name:!0,length:!0,prototype:!0,caller:!0,callee:!0,arguments:!0,arity:!0},l={$$typeof:!0,compare:!0,defaultProps:!0,displayName:!0,propTypes:!0,type:!0},u={};function getStatics(r){return a.isMemo(r)?l:u[r.$$typeof]||i}u[a.ForwardRef]={$$typeof:!0,render:!0,defaultProps:!0,displayName:!0,propTypes:!0},u[a.Memo]=l;var p=Object.defineProperty,S=Object.getOwnPropertyNames,x=Object.getOwnPropertySymbols,w=Object.getOwnPropertyDescriptor,k=Object.getPrototypeOf,C=Object.prototype;r.exports=function hoistNonReactStatics(r,n,o){if("string"!=typeof n){if(C){var a=k(n);a&&a!==C&&hoistNonReactStatics(r,a,o)}var i=S(n);x&&(i=i.concat(x(n)));for(var l=getStatics(r),u=getStatics(n),O=0;O{"use strict";var o="function"==typeof Symbol&&Symbol.for,a=o?Symbol.for("react.element"):60103,i=o?Symbol.for("react.portal"):60106,c=o?Symbol.for("react.fragment"):60107,l=o?Symbol.for("react.strict_mode"):60108,u=o?Symbol.for("react.profiler"):60114,p=o?Symbol.for("react.provider"):60109,S=o?Symbol.for("react.context"):60110,x=o?Symbol.for("react.async_mode"):60111,w=o?Symbol.for("react.concurrent_mode"):60111,k=o?Symbol.for("react.forward_ref"):60112,C=o?Symbol.for("react.suspense"):60113,O=o?Symbol.for("react.suspense_list"):60120,I=o?Symbol.for("react.memo"):60115,R=o?Symbol.for("react.lazy"):60116,j=o?Symbol.for("react.block"):60121,$=o?Symbol.for("react.fundamental"):60117,N=o?Symbol.for("react.responder"):60118,W=o?Symbol.for("react.scope"):60119;function z(r){if("object"==typeof r&&null!==r){var n=r.$$typeof;switch(n){case a:switch(r=r.type){case x:case w:case c:case u:case l:case C:return r;default:switch(r=r&&r.$$typeof){case S:case k:case R:case I:case p:return r;default:return n}}case i:return n}}}function A(r){return z(r)===w}n.AsyncMode=x,n.ConcurrentMode=w,n.ContextConsumer=S,n.ContextProvider=p,n.Element=a,n.ForwardRef=k,n.Fragment=c,n.Lazy=R,n.Memo=I,n.Portal=i,n.Profiler=u,n.StrictMode=l,n.Suspense=C,n.isAsyncMode=function(r){return A(r)||z(r)===x},n.isConcurrentMode=A,n.isContextConsumer=function(r){return z(r)===S},n.isContextProvider=function(r){return z(r)===p},n.isElement=function(r){return"object"==typeof r&&null!==r&&r.$$typeof===a},n.isForwardRef=function(r){return z(r)===k},n.isFragment=function(r){return z(r)===c},n.isLazy=function(r){return z(r)===R},n.isMemo=function(r){return z(r)===I},n.isPortal=function(r){return z(r)===i},n.isProfiler=function(r){return z(r)===u},n.isStrictMode=function(r){return z(r)===l},n.isSuspense=function(r){return z(r)===C},n.isValidElementType=function(r){return"string"==typeof r||"function"==typeof r||r===c||r===w||r===u||r===l||r===C||r===O||"object"==typeof r&&null!==r&&(r.$$typeof===R||r.$$typeof===I||r.$$typeof===p||r.$$typeof===S||r.$$typeof===k||r.$$typeof===$||r.$$typeof===N||r.$$typeof===W||r.$$typeof===j)},n.typeOf=z},12097:(r,n,o)=>{"use strict";r.exports=o(14173)},58772:(r,n,o)=>{"use strict";var a=o(90331);function emptyFunction(){}function emptyFunctionWithReset(){}emptyFunctionWithReset.resetWarningCache=emptyFunction,r.exports=function(){function shim(r,n,o,i,c,l){if(l!==a){var u=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw u.name="Invariant Violation",u}}function getShim(){return shim}shim.isRequired=shim;var r={array:shim,bigint:shim,bool:shim,func:shim,number:shim,object:shim,string:shim,symbol:shim,any:shim,arrayOf:getShim,element:shim,elementType:shim,instanceOf:getShim,node:shim,objectOf:getShim,oneOf:getShim,oneOfType:getShim,shape:getShim,exact:getShim,checkPropTypes:emptyFunctionWithReset,resetWarningCache:emptyFunction};return r.PropTypes=r,r}},23615:(r,n,o)=>{r.exports=o(58772)()},90331:r=>{"use strict";r.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},58702:(r,n)=>{"use strict";var o,a=Symbol.for("react.element"),i=Symbol.for("react.portal"),c=Symbol.for("react.fragment"),l=Symbol.for("react.strict_mode"),u=Symbol.for("react.profiler"),p=Symbol.for("react.provider"),S=Symbol.for("react.context"),x=Symbol.for("react.server_context"),w=Symbol.for("react.forward_ref"),k=Symbol.for("react.suspense"),C=Symbol.for("react.suspense_list"),O=Symbol.for("react.memo"),I=Symbol.for("react.lazy"),R=Symbol.for("react.offscreen");function v(r){if("object"==typeof r&&null!==r){var n=r.$$typeof;switch(n){case a:switch(r=r.type){case c:case u:case l:case k:case C:return r;default:switch(r=r&&r.$$typeof){case x:case S:case w:case I:case O:case p:return r;default:return n}}case i:return n}}}o=Symbol.for("react.module.reference"),n.isValidElementType=function(r){return"string"==typeof r||"function"==typeof r||r===c||r===u||r===l||r===k||r===C||r===R||"object"==typeof r&&null!==r&&(r.$$typeof===I||r.$$typeof===O||r.$$typeof===p||r.$$typeof===S||r.$$typeof===w||r.$$typeof===o||void 0!==r.getModuleId)},n.typeOf=v},19185:(r,n,o)=>{"use strict";r.exports=o(58702)},74445:r=>{r.exports=function shallowEqual(r,n,o,a){var i=o?o.call(a,r,n):void 0;if(void 0!==i)return!!i;if(r===n)return!0;if("object"!=typeof r||!r||"object"!=typeof n||!n)return!1;var c=Object.keys(r),l=Object.keys(n);if(c.length!==l.length)return!1;for(var u=Object.prototype.hasOwnProperty.bind(n),p=0;p{"use strict";o.r(n),o.d(n,{ServerStyleSheet:()=>ot,StyleSheetConsumer:()=>Re,StyleSheetContext:()=>Ie,StyleSheetManager:()=>me,ThemeConsumer:()=>tt,ThemeContext:()=>et,ThemeProvider:()=>Le,__PRIVATE__:()=>at,createGlobalStyle:()=>$e,css:()=>Ae,default:()=>it,isStyledComponent:()=>_,keyframes:()=>We,useTheme:()=>Xe,version:()=>j,withTheme:()=>Je});var a=o(19185),i=o(87363),c=o.n(i),l=o(74445),u=o.n(l);const p=function stylis_min(r){function M(r,a,i,c,l){for(var u,w,C,O,I,R=0,j=0,re=0,ie=0,ce=0,le=0,ue=C=u=0,de=0,he=0,ye=0,ge=0,ve=i.length,Se=ve-1,Ce="",Pe="",Ie="",Re="";deu)&&(ge=(Ce=Ce.replace(" ",":")).length),0a&&(a=(n=n.trim()).charCodeAt(0)),a){case 38:return n.replace(u,"$1"+r.trim());case 58:return r.trim()+n.replace(u,"$1"+r.trim());default:if(0<1*o&&0S.charCodeAt(8))break;case 115:u=u.replace(S,"-webkit-"+S)+";"+u;break;case 207:case 102:u=u.replace(S,"-webkit-"+(102o.charCodeAt(0)&&(o=o.trim()),o=[o],01?n-1:0),a=1;a0?" Args: "+o.join(", "):""))}var G=function(){function e(r){this.groupSizes=new Uint32Array(512),this.length=512,this.tag=r}var r=e.prototype;return r.indexOfGroup=function(r){for(var n=0,o=0;o=this.groupSizes.length){for(var o=this.groupSizes,a=o.length,i=a;r>=i;)(i<<=1)<0&&D(16,""+r);this.groupSizes=new Uint32Array(i),this.groupSizes.set(o),this.length=i;for(var c=a;c=this.length||0===this.groupSizes[r])return n;for(var o=this.groupSizes[r],a=this.indexOfGroup(r),i=a+o,c=a;c=oe&&(oe=n+1),J.set(r,n),re.set(n,r)},ie="style["+R+'][data-styled-version="5.3.11"]',se=new RegExp("^"+R+'\\.g(\\d+)\\[id="([\\w\\d-]+)"\\].*?"([^"]*)'),L=function(r,n,o){for(var a,i=o.split(","),c=0,l=i.length;c=0;o--){var a=n[o];if(a&&1===a.nodeType&&a.hasAttribute(R))return a}}(o),c=void 0!==i?i.nextSibling:null;a.setAttribute(R,"active"),a.setAttribute("data-styled-version","5.3.11");var l=Y();return l&&a.setAttribute("nonce",l),o.insertBefore(a,c),a},ce=function(){function e(r){var n=this.element=q(r);n.appendChild(document.createTextNode("")),this.sheet=function(r){if(r.sheet)return r.sheet;for(var n=document.styleSheets,o=0,a=n.length;o=0){var o=document.createTextNode(n),a=this.nodes[r];return this.element.insertBefore(o,a||null),this.length++,!0}return!1},r.deleteRule=function(r){this.element.removeChild(this.nodes[r]),this.length--},r.getRule=function(r){return r0&&(S+=r+",")})),a+=""+u+p+'{content:"'+S+'"}/*!sc*/\n'}}}return a}(this)},e}(),ge=/(a)(d)/gi,K=function(r){return String.fromCharCode(r+(r>25?39:97))};function Q(r){var n,o="";for(n=Math.abs(r);n>52;n=n/52|0)o=K(n%52)+o;return(K(n%52)+o).replace(ge,"$1-$2")}var ee=function(r,n){for(var o=n.length;o;)r=33*r^n.charCodeAt(--o);return r},te=function(r){return ee(5381,r)};function ne(r){for(var n=0;n>>0);if(!n.hasNameForId(a,l)){var u=o(c,"."+l,void 0,a);n.insertRules(a,l,u)}i.push(l),this.staticRulesId=l}else{for(var p=this.rules.length,S=ee(this.baseHash,o.hash),x="",w=0;w>>0);if(!n.hasNameForId(a,I)){var R=o(x,"."+I,void 0,a);n.insertRules(a,I,R)}i.push(I)}}return i.join(" ")},e}(),Ce=/^\s*\/\/.*$/gm,Pe=[":","[",".","#"];function ae(r){var n,o,a,i,c=void 0===r?I:r,l=c.options,u=void 0===l?I:l,S=c.plugins,x=void 0===S?O:S,w=new p(u),k=[],C=function(r){function t(n){if(n)try{r(n+"}")}catch(r){}}return function(n,o,a,i,c,l,u,p,S,x){switch(n){case 1:if(0===S&&64===o.charCodeAt(0))return r(o+";"),"";break;case 2:if(0===p)return o+"/*|*/";break;case 3:switch(p){case 102:case 112:return r(a[0]+o),"";default:return o+(0===x?"/*|*/":"")}case-2:o.split("/*|*/}").forEach(t)}}}((function(r){k.push(r)})),f=function(r,a,c){return 0===a&&-1!==Pe.indexOf(c[o.length])||c.match(i)?r:"."+n};function m(r,c,l,u){void 0===u&&(u="&");var p=r.replace(Ce,""),S=c&&l?l+" "+c+" { "+p+" }":p;return n=u,o=c,a=new RegExp("\\"+o+"\\b","g"),i=new RegExp("(\\"+o+"\\b){2,}"),w(l||!c?"":c,S)}return w.use([].concat(x,[function(r,n,i){2===r&&i.length&&i[0].lastIndexOf(o)>0&&(i[0]=i[0].replace(a,f))},C,function(r){if(-2===r){var n=k;return k=[],n}}])),m.hash=x.length?x.reduce((function(r,n){return n.name||D(15),ee(r,n.name)}),5381).toString():"",m}var Ie=c().createContext(),Re=Ie.Consumer,Me=c().createContext(),De=(Me.Consumer,new ye),Fe=ae();function pe(){return(0,i.useContext)(Ie)||De}function fe(){return(0,i.useContext)(Me)||Fe}function me(r){var n=(0,i.useState)(r.stylisPlugins),o=n[0],a=n[1],l=pe(),p=(0,i.useMemo)((function(){var n=l;return r.sheet?n=r.sheet:r.target&&(n=n.reconstructWithOptions({target:r.target},!1)),r.disableCSSOMInjection&&(n=n.reconstructWithOptions({useCSSOMInjection:!1})),n}),[r.disableCSSOMInjection,r.sheet,r.target]),S=(0,i.useMemo)((function(){return ae({options:{prefix:!r.disableVendorPrefixes},plugins:o})}),[r.disableVendorPrefixes,o]);return(0,i.useEffect)((function(){u()(o,r.stylisPlugins)||a(r.stylisPlugins)}),[r.stylisPlugins]),c().createElement(Ie.Provider,{value:p},c().createElement(Me.Provider,{value:S},r.children))}var He=function(){function e(r,n){var o=this;this.inject=function(r,n){void 0===n&&(n=Fe);var a=o.name+n.hash;r.hasNameForId(o.id,a)||r.insertRules(o.id,a,n(o.rules,a,"@keyframes"))},this.toString=function(){return D(12,String(o.name))},this.name=r,this.id="sc-keyframes-"+r,this.rules=n}return e.prototype.getName=function(r){return void 0===r&&(r=Fe),this.name+r.hash},e}(),Ge=/([A-Z])/,Ue=/([A-Z])/g,Ze=/^ms-/,we=function(r){return"-"+r.toLowerCase()};function Ee(r){return Ge.test(r)?r.replace(Ue,we).replace(Ze,"-ms-"):r}var be=function(r){return null==r||!1===r||""===r};function _e(r,n,o,a){if(Array.isArray(r)){for(var i,c=[],l=0,u=r.length;l1?n-1:0),a=1;a?@[\\\]^`{|}~-]+/g,Ke=/(^-|-$)/g;function je(r){return r.replace(Qe,"-").replace(Ke,"")}var Te=function(r){return Q(te(r)>>>0)};function xe(r){return"string"==typeof r&&!0}var ke=function(r){return"function"==typeof r||"object"==typeof r&&null!==r&&!Array.isArray(r)},Ve=function(r){return"__proto__"!==r&&"constructor"!==r&&"prototype"!==r};function Be(r,n,o){var a=r[o];ke(n)&&ke(a)?ze(a,n):r[o]=n}function ze(r){for(var n=arguments.length,o=new Array(n>1?n-1:0),a=1;a=0||(i[o]=r[o]);return i}(n,["componentId"]),c=a&&a+"-"+(xe(r)?r:je(b(r)));return Ye(r,y({},i,{attrs:$,componentId:c}),o)},Object.defineProperty(W,"defaultProps",{get:function(){return this._foldedDefaultProps},set:function(n){this._foldedDefaultProps=a?ze({},r.defaultProps,n):n}}),Object.defineProperty(W,"toString",{value:function(){return"."+W.styledComponentId}}),l&&C()(W,r,{attrs:!0,componentStyle:!0,displayName:!0,foldedComponentIds:!0,shouldForwardProp:!0,styledComponentId:!0,target:!0,withComponent:!0}),W}var qe=function(r){return function e(r,n,o){if(void 0===o&&(o=I),!(0,a.isValidElementType)(n))return D(1,String(n));var s=function(){return r(n,o,Ae.apply(void 0,arguments))};return s.withConfig=function(a){return e(r,n,y({},o,{},a))},s.attrs=function(a){return e(r,n,y({},o,{attrs:Array.prototype.concat(o.attrs,a).filter(Boolean)}))},s}(Ye,r)};["a","abbr","address","area","article","aside","audio","b","base","bdi","bdo","big","blockquote","body","br","button","canvas","caption","cite","code","col","colgroup","data","datalist","dd","del","details","dfn","dialog","div","dl","dt","em","embed","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","iframe","img","input","ins","kbd","keygen","label","legend","li","link","main","map","mark","marquee","menu","menuitem","meta","meter","nav","noscript","object","ol","optgroup","option","output","p","param","picture","pre","progress","q","rp","rt","ruby","s","samp","script","section","select","small","source","span","strong","style","sub","summary","sup","table","tbody","td","textarea","tfoot","th","thead","time","title","tr","track","u","ul","var","video","wbr","circle","clipPath","defs","ellipse","foreignObject","g","image","line","linearGradient","marker","mask","path","pattern","polygon","polyline","radialGradient","rect","stop","svg","text","textPath","tspan"].forEach((function(r){qe[r]=qe(r)}));var nt=function(){function e(r,n){this.rules=r,this.componentId=n,this.isStatic=ne(r),ye.registerId(this.componentId+1)}var r=e.prototype;return r.createStyles=function(r,n,o,a){var i=a(_e(this.rules,n,o,a).join(""),""),c=this.componentId+r;o.insertRules(c,c,i)},r.removeStyles=function(r,n){n.clearRules(this.componentId+r)},r.renderStyles=function(r,n,o,a){r>2&&ye.registerId(this.componentId+r),this.removeStyles(r,o),this.createStyles(r,n,o,a)},e}();function $e(r){for(var n=arguments.length,o=new Array(n>1?n-1:0),a=1;a1?n-1:0),a=1;a"+n+""},this.getStyleTags=function(){return r.sealed?D(2):r._emitSheetCSS()},this.getStyleElement=function(){var n;if(r.sealed)return D(2);var o=((n={})[R]="",n["data-styled-version"]="5.3.11",n.dangerouslySetInnerHTML={__html:r.instance.toString()},n),a=Y();return a&&(o.nonce=a),[c().createElement("style",y({},o,{key:"sc-0-0"}))]},this.seal=function(){r.sealed=!0},this.instance=new ye({isServer:!0}),this.sealed=!1}var r=e.prototype;return r.collectStyles=function(r){return this.sealed?D(2):c().createElement(me,{sheet:this.instance},r)},r.interleaveWithNodeStream=function(r){return D(3)},e}(),Je=function(r){var n=c().forwardRef((function(n,o){var a=(0,i.useContext)(et),l=r.defaultProps,u=Oe(n,a,l);return c().createElement(r,y({},n,{theme:u,ref:o}))}));return C()(n,r),n.displayName="WithTheme("+b(r)+")",n},Xe=function(){return(0,i.useContext)(et)},at={StyleSheet:ye,masterSheet:De};const it=qe},98106:r=>{r.exports=function _arrayLikeToArray(r,n){(null==n||n>r.length)&&(n=r.length);for(var o=0,a=new Array(n);o{r.exports=function _arrayWithHoles(r){if(Array.isArray(r))return r},r.exports.__esModule=!0,r.exports.default=r.exports},34102:(r,n,o)=>{var a=o(98106);r.exports=function _arrayWithoutHoles(r){if(Array.isArray(r))return a(r)},r.exports.__esModule=!0,r.exports.default=r.exports},93231:(r,n,o)=>{var a=o(74040);r.exports=function _defineProperty(r,n,o){return(n=a(n))in r?Object.defineProperty(r,n,{value:o,enumerable:!0,configurable:!0,writable:!0}):r[n]=o,r},r.exports.__esModule=!0,r.exports.default=r.exports},73119:r=>{function _extends(){return r.exports=_extends=Object.assign?Object.assign.bind():function(r){for(var n=1;n{r.exports=function _iterableToArray(r){if("undefined"!=typeof Symbol&&null!=r[Symbol.iterator]||null!=r["@@iterator"])return Array.from(r)},r.exports.__esModule=!0,r.exports.default=r.exports},40608:r=>{r.exports=function _iterableToArrayLimit(r,n){var o=null==r?null:"undefined"!=typeof Symbol&&r[Symbol.iterator]||r["@@iterator"];if(null!=o){var a,i,c,l,u=[],p=!0,S=!1;try{if(c=(o=o.call(r)).next,0===n){if(Object(o)!==o)return;p=!1}else for(;!(p=(a=c.call(o)).done)&&(u.push(a.value),u.length!==n);p=!0);}catch(r){S=!0,i=r}finally{try{if(!p&&null!=o.return&&(l=o.return(),Object(l)!==l))return}finally{if(S)throw i}}return u}},r.exports.__esModule=!0,r.exports.default=r.exports},56894:r=>{r.exports=function _nonIterableRest(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")},r.exports.__esModule=!0,r.exports.default=r.exports},91282:r=>{r.exports=function _nonIterableSpread(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")},r.exports.__esModule=!0,r.exports.default=r.exports},40131:(r,n,o)=>{var a=o(17358),i=o(40608),c=o(35068),l=o(56894);r.exports=function _slicedToArray(r,n){return a(r)||i(r,n)||c(r,n)||l()},r.exports.__esModule=!0,r.exports.default=r.exports},79769:r=>{r.exports=function _taggedTemplateLiteral(r,n){return n||(n=r.slice(0)),Object.freeze(Object.defineProperties(r,{raw:{value:Object.freeze(n)}}))},r.exports.__esModule=!0,r.exports.default=r.exports},9833:(r,n,o)=>{var a=o(34102),i=o(68),c=o(35068),l=o(91282);r.exports=function _toConsumableArray(r){return a(r)||i(r)||c(r)||l()},r.exports.__esModule=!0,r.exports.default=r.exports},56027:(r,n,o)=>{var a=o(7501).default;r.exports=function toPrimitive(r,n){if("object"!=a(r)||!r)return r;var o=r[Symbol.toPrimitive];if(void 0!==o){var i=o.call(r,n||"default");if("object"!=a(i))return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===n?String:Number)(r)},r.exports.__esModule=!0,r.exports.default=r.exports},74040:(r,n,o)=>{var a=o(7501).default,i=o(56027);r.exports=function toPropertyKey(r){var n=i(r,"string");return"symbol"==a(n)?n:String(n)},r.exports.__esModule=!0,r.exports.default=r.exports},35068:(r,n,o)=>{var a=o(98106);r.exports=function _unsupportedIterableToArray(r,n){if(r){if("string"==typeof r)return a(r,n);var o=Object.prototype.toString.call(r).slice(8,-1);return"Object"===o&&r.constructor&&(o=r.constructor.name),"Map"===o||"Set"===o?Array.from(r):"Arguments"===o||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(o)?a(r,n):void 0}},r.exports.__esModule=!0,r.exports.default=r.exports}}]); \ No newline at end of file diff --git a/wp-content/plugins/elementor/assets/js/0880f3bc2f53dadb50fa.bundle.min.js.LICENSE.txt b/wp-content/plugins/elementor/assets/js/0880f3bc2f53dadb50fa.bundle.min.js.LICENSE.txt new file mode 100644 index 0000000..ad512bb --- /dev/null +++ b/wp-content/plugins/elementor/assets/js/0880f3bc2f53dadb50fa.bundle.min.js.LICENSE.txt @@ -0,0 +1,18 @@ +/** + * @license React + * react-is.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +/** @license React v16.13.1 + * react-is.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ diff --git a/wp-content/plugins/elementor/assets/js/1bef795bdeaafc779b19.bundle.min.js b/wp-content/plugins/elementor/assets/js/1bef795bdeaafc779b19.bundle.min.js new file mode 100644 index 0000000..bf1684c --- /dev/null +++ b/wp-content/plugins/elementor/assets/js/1bef795bdeaafc779b19.bundle.min.js @@ -0,0 +1,2 @@ +/*! elementor - v3.20.0 - 26-03-2024 */ +(self.webpackChunkelementor=self.webpackChunkelementor||[]).push([[13],{29029:t=>{t.exports={ReactQueryDevtools:function(){return null},ReactQueryDevtoolsPanel:function(){return null}}},85123:(t,e,n)=>{"use strict";n.d(e,{j:()=>u});var r=n(88863),i=n(90270),s=n(12860),u=new(function(t){function FocusManager(){var e;return(e=t.call(this)||this).setup=function(t){var e;if(!s.sk&&(null==(e=window)?void 0:e.addEventListener)){var n=function listener(){return t()};return window.addEventListener("visibilitychange",n,!1),window.addEventListener("focus",n,!1),function(){window.removeEventListener("visibilitychange",n),window.removeEventListener("focus",n)}}},e}(0,r.Z)(FocusManager,t);var e=FocusManager.prototype;return e.onSubscribe=function onSubscribe(){this.cleanup||this.setEventListener(this.setup)},e.onUnsubscribe=function onUnsubscribe(){var t;this.hasListeners()||(null==(t=this.cleanup)||t.call(this),this.cleanup=void 0)},e.setEventListener=function setEventListener(t){var e,n=this;this.setup=t,null==(e=this.cleanup)||e.call(this),this.cleanup=t((function(t){"boolean"==typeof t?n.setFocused(t):n.onFocus()}))},e.setFocused=function setFocused(t){this.focused=t,t&&this.onFocus()},e.onFocus=function onFocus(){this.listeners.forEach((function(t){t()}))},e.isFocused=function isFocused(){return"boolean"==typeof this.focused?this.focused:"undefined"==typeof document||[void 0,"visible","prerender"].includes(document.visibilityState)},FocusManager}(i.l))},9975:(t,e,n)=>{"use strict";n.d(e,{D:()=>dehydrate,Z:()=>hydrate});var r=n(25773);function defaultShouldDehydrateMutation(t){return t.state.isPaused}function defaultShouldDehydrateQuery(t){return"success"===t.state.status}function dehydrate(t,e){var n,r,i=[],s=[];if(!1!==(null==(n=e=e||{})?void 0:n.dehydrateMutations)){var u=e.shouldDehydrateMutation||defaultShouldDehydrateMutation;t.getMutationCache().getAll().forEach((function(t){u(t)&&i.push(function dehydrateMutation(t){return{mutationKey:t.options.mutationKey,state:t.state}}(t))}))}if(!1!==(null==(r=e)?void 0:r.dehydrateQueries)){var o=e.shouldDehydrateQuery||defaultShouldDehydrateQuery;t.getQueryCache().getAll().forEach((function(t){o(t)&&s.push(function dehydrateQuery(t){return{state:t.state,queryKey:t.queryKey,queryHash:t.queryHash}}(t))}))}return{mutations:i,queries:s}}function hydrate(t,e,n){if("object"==typeof e&&null!==e){var i=t.getMutationCache(),s=t.getQueryCache(),u=e.mutations||[],o=e.queries||[];u.forEach((function(e){var s;i.build(t,(0,r.Z)({},null==n||null==(s=n.defaultOptions)?void 0:s.mutations,{mutationKey:e.mutationKey}),e.state)})),o.forEach((function(e){var i,u=s.get(e.queryHash);u?u.state.dataUpdatedAt{"use strict";n.r(e),n.d(e,{CancelledError:()=>r.p8,InfiniteQueryObserver:()=>a.c,MutationCache:()=>c.L,MutationObserver:()=>l.X,QueriesObserver:()=>o.y,QueryCache:()=>i.t,QueryClient:()=>s.S,QueryObserver:()=>u.z,dehydrate:()=>p.D,focusManager:()=>d.j,hashQueryKey:()=>y.yF,hydrate:()=>p.Z,isCancelledError:()=>r.DV,isError:()=>y.VZ,notifyManager:()=>f.V,onlineManager:()=>v.N,setLogger:()=>h.E});var r=n(98973),i=n(89157),s=n(37710),u=n(87978),o=n(27282),a=n(15830),c=n(79560),l=n(40424),h=n(16129),f=n(87226),d=n(85123),v=n(19240),y=n(12860),p=n(9975),b=n(46503),m={};for(const t in b)["default","CancelledError","QueryCache","QueryClient","QueryObserver","QueriesObserver","InfiniteQueryObserver","MutationCache","MutationObserver","setLogger","notifyManager","focusManager","onlineManager","hashQueryKey","isError","isCancelledError","dehydrate","hydrate"].indexOf(t)<0&&(m[t]=()=>b[t]);n.d(e,m)},47798:(t,e,n)=>{"use strict";n.d(e,{Gm:()=>infiniteQueryBehavior,Qy:()=>hasNextPage,ZF:()=>hasPreviousPage});var r=n(98973),i=n(12860);function infiniteQueryBehavior(){return{onFetch:function onFetch(t){t.fetchFn=function(){var e,n,s,u,o,a,c,l=null==(e=t.fetchOptions)||null==(n=e.meta)?void 0:n.refetchPage,h=null==(s=t.fetchOptions)||null==(u=s.meta)?void 0:u.fetchMore,f=null==h?void 0:h.pageParam,d="forward"===(null==h?void 0:h.direction),v="backward"===(null==h?void 0:h.direction),y=(null==(o=t.state.data)?void 0:o.pages)||[],p=(null==(a=t.state.data)?void 0:a.pageParams)||[],b=(0,i.G9)(),m=null==b?void 0:b.signal,g=p,O=!1,Q=t.options.queryFn||function(){return Promise.reject("Missing queryFn")},C=function buildNewPages(t,e,n,r){return g=r?[e].concat(g):[].concat(g,[e]),r?[n].concat(t):[].concat(t,[n])},P=function fetchPage(e,n,i,s){if(O)return Promise.reject("Cancelled");if(void 0===i&&!n&&e.length)return Promise.resolve(e);var u={queryKey:t.queryKey,signal:m,pageParam:i,meta:t.meta},o=Q(u),a=Promise.resolve(o).then((function(t){return C(e,i,t,s)}));(0,r.LE)(o)&&(a.cancel=o.cancel);return a};if(y.length)if(d){var R=void 0!==f,M=R?f:getNextPageParam(t.options,y);c=P(y,R,M)}else if(v){var F=void 0!==f,E=F?f:getPreviousPageParam(t.options,y);c=P(y,F,E,!0)}else!function(){g=[];var e=void 0===t.options.getNextPageParam,n=!l||!y[0]||l(y[0],0,y);c=n?P([],e,p[0]):Promise.resolve(C([],p[0],y[0]));for(var r=function _loop(n){c=c.then((function(r){if(!l||!y[n]||l(y[n],n,y)){var i=e?p[n]:getNextPageParam(t.options,r);return P(r,e,i)}return Promise.resolve(C(r,p[n],y[n]))}))},i=1;i{"use strict";n.d(e,{c:()=>o});var r=n(25773),i=n(88863),s=n(87978),u=n(47798),o=function(t){function InfiniteQueryObserver(e,n){return t.call(this,e,n)||this}(0,i.Z)(InfiniteQueryObserver,t);var e=InfiniteQueryObserver.prototype;return e.bindMethods=function bindMethods(){t.prototype.bindMethods.call(this),this.fetchNextPage=this.fetchNextPage.bind(this),this.fetchPreviousPage=this.fetchPreviousPage.bind(this)},e.setOptions=function setOptions(e,n){t.prototype.setOptions.call(this,(0,r.Z)({},e,{behavior:(0,u.Gm)()}),n)},e.getOptimisticResult=function getOptimisticResult(e){return e.behavior=(0,u.Gm)(),t.prototype.getOptimisticResult.call(this,e)},e.fetchNextPage=function fetchNextPage(t){var e;return this.fetch({cancelRefetch:null==(e=null==t?void 0:t.cancelRefetch)||e,throwOnError:null==t?void 0:t.throwOnError,meta:{fetchMore:{direction:"forward",pageParam:null==t?void 0:t.pageParam}}})},e.fetchPreviousPage=function fetchPreviousPage(t){var e;return this.fetch({cancelRefetch:null==(e=null==t?void 0:t.cancelRefetch)||e,throwOnError:null==t?void 0:t.throwOnError,meta:{fetchMore:{direction:"backward",pageParam:null==t?void 0:t.pageParam}}})},e.createResult=function createResult(e,n){var i,s,o,a,c,l,h=e.state,f=t.prototype.createResult.call(this,e,n);return(0,r.Z)({},f,{fetchNextPage:this.fetchNextPage,fetchPreviousPage:this.fetchPreviousPage,hasNextPage:(0,u.Qy)(n,null==(i=h.data)?void 0:i.pages),hasPreviousPage:(0,u.ZF)(n,null==(s=h.data)?void 0:s.pages),isFetchingNextPage:h.isFetching&&"forward"===(null==(o=h.fetchMeta)||null==(a=o.fetchMore)?void 0:a.direction),isFetchingPreviousPage:h.isFetching&&"backward"===(null==(c=h.fetchMeta)||null==(l=c.fetchMore)?void 0:l.direction)})},InfiniteQueryObserver}(s.z)},16129:(t,e,n)=>{"use strict";n.d(e,{E:()=>setLogger,j:()=>getLogger});var r=console;function getLogger(){return r}function setLogger(t){r=t}},12790:(t,e,n)=>{"use strict";n.d(e,{R:()=>getDefaultState,m:()=>a});var r=n(25773),i=n(16129),s=n(87226),u=n(98973),o=n(12860),a=function(){function Mutation(t){this.options=(0,r.Z)({},t.defaultOptions,t.options),this.mutationId=t.mutationId,this.mutationCache=t.mutationCache,this.observers=[],this.state=t.state||getDefaultState(),this.meta=t.meta}var t=Mutation.prototype;return t.setState=function setState(t){this.dispatch({type:"setState",state:t})},t.addObserver=function addObserver(t){-1===this.observers.indexOf(t)&&this.observers.push(t)},t.removeObserver=function removeObserver(t){this.observers=this.observers.filter((function(e){return e!==t}))},t.cancel=function cancel(){return this.retryer?(this.retryer.cancel(),this.retryer.promise.then(o.ZT).catch(o.ZT)):Promise.resolve()},t.continue=function _continue(){return this.retryer?(this.retryer.continue(),this.retryer.promise):this.execute()},t.execute=function execute(){var t,e=this,n="loading"===this.state.status,r=Promise.resolve();return n||(this.dispatch({type:"loading",variables:this.options.variables}),r=r.then((function(){null==e.mutationCache.config.onMutate||e.mutationCache.config.onMutate(e.state.variables,e)})).then((function(){return null==e.options.onMutate?void 0:e.options.onMutate(e.state.variables)})).then((function(t){t!==e.state.context&&e.dispatch({type:"loading",context:t,variables:e.state.variables})}))),r.then((function(){return e.executeMutation()})).then((function(n){t=n,null==e.mutationCache.config.onSuccess||e.mutationCache.config.onSuccess(t,e.state.variables,e.state.context,e)})).then((function(){return null==e.options.onSuccess?void 0:e.options.onSuccess(t,e.state.variables,e.state.context)})).then((function(){return null==e.options.onSettled?void 0:e.options.onSettled(t,null,e.state.variables,e.state.context)})).then((function(){return e.dispatch({type:"success",data:t}),t})).catch((function(t){return null==e.mutationCache.config.onError||e.mutationCache.config.onError(t,e.state.variables,e.state.context,e),(0,i.j)().error(t),Promise.resolve().then((function(){return null==e.options.onError?void 0:e.options.onError(t,e.state.variables,e.state.context)})).then((function(){return null==e.options.onSettled?void 0:e.options.onSettled(void 0,t,e.state.variables,e.state.context)})).then((function(){throw e.dispatch({type:"error",error:t}),t}))}))},t.executeMutation=function executeMutation(){var t,e=this;return this.retryer=new u.m4({fn:function fn(){return e.options.mutationFn?e.options.mutationFn(e.state.variables):Promise.reject("No mutationFn found")},onFail:function onFail(){e.dispatch({type:"failed"})},onPause:function onPause(){e.dispatch({type:"pause"})},onContinue:function onContinue(){e.dispatch({type:"continue"})},retry:null!=(t=this.options.retry)?t:0,retryDelay:this.options.retryDelay}),this.retryer.promise},t.dispatch=function dispatch(t){var e=this;this.state=function reducer(t,e){switch(e.type){case"failed":return(0,r.Z)({},t,{failureCount:t.failureCount+1});case"pause":return(0,r.Z)({},t,{isPaused:!0});case"continue":return(0,r.Z)({},t,{isPaused:!1});case"loading":return(0,r.Z)({},t,{context:e.context,data:void 0,error:null,isPaused:!1,status:"loading",variables:e.variables});case"success":return(0,r.Z)({},t,{data:e.data,error:null,status:"success",isPaused:!1});case"error":return(0,r.Z)({},t,{data:void 0,error:e.error,failureCount:t.failureCount+1,isPaused:!1,status:"error"});case"setState":return(0,r.Z)({},t,e.state);default:return t}}(this.state,t),s.V.batch((function(){e.observers.forEach((function(e){e.onMutationUpdate(t)})),e.mutationCache.notify(e)}))},Mutation}();function getDefaultState(){return{context:void 0,data:void 0,error:null,failureCount:0,isPaused:!1,status:"idle",variables:void 0}}},79560:(t,e,n)=>{"use strict";n.d(e,{L:()=>o});var r=n(88863),i=n(87226),s=n(12790),u=n(12860),o=function(t){function MutationCache(e){var n;return(n=t.call(this)||this).config=e||{},n.mutations=[],n.mutationId=0,n}(0,r.Z)(MutationCache,t);var e=MutationCache.prototype;return e.build=function build(t,e,n){var r=new s.m({mutationCache:this,mutationId:++this.mutationId,options:t.defaultMutationOptions(e),state:n,defaultOptions:e.mutationKey?t.getMutationDefaults(e.mutationKey):void 0,meta:e.meta});return this.add(r),r},e.add=function add(t){this.mutations.push(t),this.notify(t)},e.remove=function remove(t){this.mutations=this.mutations.filter((function(e){return e!==t})),t.cancel(),this.notify(t)},e.clear=function clear(){var t=this;i.V.batch((function(){t.mutations.forEach((function(e){t.remove(e)}))}))},e.getAll=function getAll(){return this.mutations},e.find=function find(t){return void 0===t.exact&&(t.exact=!0),this.mutations.find((function(e){return(0,u.X7)(t,e)}))},e.findAll=function findAll(t){return this.mutations.filter((function(e){return(0,u.X7)(t,e)}))},e.notify=function notify(t){var e=this;i.V.batch((function(){e.listeners.forEach((function(e){e(t)}))}))},e.onFocus=function onFocus(){this.resumePausedMutations()},e.onOnline=function onOnline(){this.resumePausedMutations()},e.resumePausedMutations=function resumePausedMutations(){var t=this.mutations.filter((function(t){return t.state.isPaused}));return i.V.batch((function(){return t.reduce((function(t,e){return t.then((function(){return e.continue().catch(u.ZT)}))}),Promise.resolve())}))},MutationCache}(n(90270).l)},40424:(t,e,n)=>{"use strict";n.d(e,{X:()=>o});var r=n(25773),i=n(88863),s=n(12790),u=n(87226),o=function(t){function MutationObserver(e,n){var r;return(r=t.call(this)||this).client=e,r.setOptions(n),r.bindMethods(),r.updateResult(),r}(0,i.Z)(MutationObserver,t);var e=MutationObserver.prototype;return e.bindMethods=function bindMethods(){this.mutate=this.mutate.bind(this),this.reset=this.reset.bind(this)},e.setOptions=function setOptions(t){this.options=this.client.defaultMutationOptions(t)},e.onUnsubscribe=function onUnsubscribe(){var t;this.listeners.length||(null==(t=this.currentMutation)||t.removeObserver(this))},e.onMutationUpdate=function onMutationUpdate(t){this.updateResult();var e={listeners:!0};"success"===t.type?e.onSuccess=!0:"error"===t.type&&(e.onError=!0),this.notify(e)},e.getCurrentResult=function getCurrentResult(){return this.currentResult},e.reset=function reset(){this.currentMutation=void 0,this.updateResult(),this.notify({listeners:!0})},e.mutate=function mutate(t,e){return this.mutateOptions=e,this.currentMutation&&this.currentMutation.removeObserver(this),this.currentMutation=this.client.getMutationCache().build(this.client,(0,r.Z)({},this.options,{variables:void 0!==t?t:this.options.variables})),this.currentMutation.addObserver(this),this.currentMutation.execute()},e.updateResult=function updateResult(){var t=this.currentMutation?this.currentMutation.state:(0,s.R)(),e=(0,r.Z)({},t,{isLoading:"loading"===t.status,isSuccess:"success"===t.status,isError:"error"===t.status,isIdle:"idle"===t.status,mutate:this.mutate,reset:this.reset});this.currentResult=e},e.notify=function notify(t){var e=this;u.V.batch((function(){e.mutateOptions&&(t.onSuccess?(null==e.mutateOptions.onSuccess||e.mutateOptions.onSuccess(e.currentResult.data,e.currentResult.variables,e.currentResult.context),null==e.mutateOptions.onSettled||e.mutateOptions.onSettled(e.currentResult.data,null,e.currentResult.variables,e.currentResult.context)):t.onError&&(null==e.mutateOptions.onError||e.mutateOptions.onError(e.currentResult.error,e.currentResult.variables,e.currentResult.context),null==e.mutateOptions.onSettled||e.mutateOptions.onSettled(void 0,e.currentResult.error,e.currentResult.variables,e.currentResult.context))),t.listeners&&e.listeners.forEach((function(t){t(e.currentResult)}))}))},MutationObserver}(n(90270).l)},87226:(t,e,n)=>{"use strict";n.d(e,{V:()=>i});var r=n(12860),i=new(function(){function NotifyManager(){this.queue=[],this.transactions=0,this.notifyFn=function(t){t()},this.batchNotifyFn=function(t){t()}}var t=NotifyManager.prototype;return t.batch=function batch(t){var e;this.transactions++;try{e=t()}finally{this.transactions--,this.transactions||this.flush()}return e},t.schedule=function schedule(t){var e=this;this.transactions?this.queue.push(t):(0,r.A4)((function(){e.notifyFn(t)}))},t.batchCalls=function batchCalls(t){var e=this;return function(){for(var n=arguments.length,r=new Array(n),i=0;i{"use strict";n.d(e,{N:()=>u});var r=n(88863),i=n(90270),s=n(12860),u=new(function(t){function OnlineManager(){var e;return(e=t.call(this)||this).setup=function(t){var e;if(!s.sk&&(null==(e=window)?void 0:e.addEventListener)){var n=function listener(){return t()};return window.addEventListener("online",n,!1),window.addEventListener("offline",n,!1),function(){window.removeEventListener("online",n),window.removeEventListener("offline",n)}}},e}(0,r.Z)(OnlineManager,t);var e=OnlineManager.prototype;return e.onSubscribe=function onSubscribe(){this.cleanup||this.setEventListener(this.setup)},e.onUnsubscribe=function onUnsubscribe(){var t;this.hasListeners()||(null==(t=this.cleanup)||t.call(this),this.cleanup=void 0)},e.setEventListener=function setEventListener(t){var e,n=this;this.setup=t,null==(e=this.cleanup)||e.call(this),this.cleanup=t((function(t){"boolean"==typeof t?n.setOnline(t):n.onOnline()}))},e.setOnline=function setOnline(t){this.online=t,t&&this.onOnline()},e.onOnline=function onOnline(){this.listeners.forEach((function(t){t()}))},e.isOnline=function isOnline(){return"boolean"==typeof this.online?this.online:"undefined"==typeof navigator||void 0===navigator.onLine||navigator.onLine},OnlineManager}(i.l))},27282:(t,e,n)=>{"use strict";n.d(e,{y:()=>o});var r=n(88863),i=n(12860),s=n(87226),u=n(87978),o=function(t){function QueriesObserver(e,n){var r;return(r=t.call(this)||this).client=e,r.queries=[],r.result=[],r.observers=[],r.observersMap={},n&&r.setQueries(n),r}(0,r.Z)(QueriesObserver,t);var e=QueriesObserver.prototype;return e.onSubscribe=function onSubscribe(){var t=this;1===this.listeners.length&&this.observers.forEach((function(e){e.subscribe((function(n){t.onUpdate(e,n)}))}))},e.onUnsubscribe=function onUnsubscribe(){this.listeners.length||this.destroy()},e.destroy=function destroy(){this.listeners=[],this.observers.forEach((function(t){t.destroy()}))},e.setQueries=function setQueries(t,e){this.queries=t,this.updateObservers(e)},e.getCurrentResult=function getCurrentResult(){return this.result},e.getOptimisticResult=function getOptimisticResult(t){return this.findMatchingObservers(t).map((function(t){return t.observer.getOptimisticResult(t.defaultedQueryOptions)}))},e.findMatchingObservers=function findMatchingObservers(t){var e=this,n=this.observers,r=t.map((function(t){return e.client.defaultQueryObserverOptions(t)})),i=r.flatMap((function(t){var e=n.find((function(e){return e.options.queryHash===t.queryHash}));return null!=e?[{defaultedQueryOptions:t,observer:e}]:[]})),s=i.map((function(t){return t.defaultedQueryOptions.queryHash})),u=r.filter((function(t){return!s.includes(t.queryHash)})),o=n.filter((function(t){return!i.some((function(e){return e.observer===t}))})),a=u.map((function(t,n){if(t.keepPreviousData){var r=o[n];if(void 0!==r)return{defaultedQueryOptions:t,observer:r}}return{defaultedQueryOptions:t,observer:e.getObserver(t)}}));return i.concat(a).sort((function sortMatchesByOrderOfQueries(t,e){return r.indexOf(t.defaultedQueryOptions)-r.indexOf(e.defaultedQueryOptions)}))},e.getObserver=function getObserver(t){var e=this.client.defaultQueryObserverOptions(t),n=this.observersMap[e.queryHash];return null!=n?n:new u.z(this.client,e)},e.updateObservers=function updateObservers(t){var e=this;s.V.batch((function(){var n=e.observers,r=e.findMatchingObservers(e.queries);r.forEach((function(e){return e.observer.setOptions(e.defaultedQueryOptions,t)}));var s=r.map((function(t){return t.observer})),u=Object.fromEntries(s.map((function(t){return[t.options.queryHash,t]}))),o=s.map((function(t){return t.getCurrentResult()})),a=s.some((function(t,e){return t!==n[e]}));(n.length!==s.length||a)&&(e.observers=s,e.observersMap=u,e.result=o,e.hasListeners()&&((0,i.e5)(n,s).forEach((function(t){t.destroy()})),(0,i.e5)(s,n).forEach((function(t){t.subscribe((function(n){e.onUpdate(t,n)}))})),e.notify()))}))},e.onUpdate=function onUpdate(t,e){var n=this.observers.indexOf(t);-1!==n&&(this.result=(0,i.Rc)(this.result,n,e),this.notify())},e.notify=function notify(){var t=this;s.V.batch((function(){t.listeners.forEach((function(e){e(t.result)}))}))},QueriesObserver}(n(90270).l)},89157:(t,e,n)=>{"use strict";n.d(e,{t:()=>l});var r=n(88863),i=n(12860),s=n(25773),u=n(87226),o=n(16129),a=n(98973),c=function(){function Query(t){this.abortSignalConsumed=!1,this.hadObservers=!1,this.defaultOptions=t.defaultOptions,this.setOptions(t.options),this.observers=[],this.cache=t.cache,this.queryKey=t.queryKey,this.queryHash=t.queryHash,this.initialState=t.state||this.getDefaultState(this.options),this.state=this.initialState,this.meta=t.meta,this.scheduleGc()}var t=Query.prototype;return t.setOptions=function setOptions(t){var e;this.options=(0,s.Z)({},this.defaultOptions,t),this.meta=null==t?void 0:t.meta,this.cacheTime=Math.max(this.cacheTime||0,null!=(e=this.options.cacheTime)?e:3e5)},t.setDefaultOptions=function setDefaultOptions(t){this.defaultOptions=t},t.scheduleGc=function scheduleGc(){var t=this;this.clearGcTimeout(),(0,i.PN)(this.cacheTime)&&(this.gcTimeout=setTimeout((function(){t.optionalRemove()}),this.cacheTime))},t.clearGcTimeout=function clearGcTimeout(){this.gcTimeout&&(clearTimeout(this.gcTimeout),this.gcTimeout=void 0)},t.optionalRemove=function optionalRemove(){this.observers.length||(this.state.isFetching?this.hadObservers&&this.scheduleGc():this.cache.remove(this))},t.setData=function setData(t,e){var n,r,s=this.state.data,u=(0,i.SE)(t,s);return(null==(n=(r=this.options).isDataEqual)?void 0:n.call(r,s,u))?u=s:!1!==this.options.structuralSharing&&(u=(0,i.Q$)(s,u)),this.dispatch({data:u,type:"success",dataUpdatedAt:null==e?void 0:e.updatedAt}),u},t.setState=function setState(t,e){this.dispatch({type:"setState",state:t,setStateOptions:e})},t.cancel=function cancel(t){var e,n=this.promise;return null==(e=this.retryer)||e.cancel(t),n?n.then(i.ZT).catch(i.ZT):Promise.resolve()},t.destroy=function destroy(){this.clearGcTimeout(),this.cancel({silent:!0})},t.reset=function reset(){this.destroy(),this.setState(this.initialState)},t.isActive=function isActive(){return this.observers.some((function(t){return!1!==t.options.enabled}))},t.isFetching=function isFetching(){return this.state.isFetching},t.isStale=function isStale(){return this.state.isInvalidated||!this.state.dataUpdatedAt||this.observers.some((function(t){return t.getCurrentResult().isStale}))},t.isStaleByTime=function isStaleByTime(t){return void 0===t&&(t=0),this.state.isInvalidated||!this.state.dataUpdatedAt||!(0,i.Kp)(this.state.dataUpdatedAt,t)},t.onFocus=function onFocus(){var t,e=this.observers.find((function(t){return t.shouldFetchOnWindowFocus()}));e&&e.refetch(),null==(t=this.retryer)||t.continue()},t.onOnline=function onOnline(){var t,e=this.observers.find((function(t){return t.shouldFetchOnReconnect()}));e&&e.refetch(),null==(t=this.retryer)||t.continue()},t.addObserver=function addObserver(t){-1===this.observers.indexOf(t)&&(this.observers.push(t),this.hadObservers=!0,this.clearGcTimeout(),this.cache.notify({type:"observerAdded",query:this,observer:t}))},t.removeObserver=function removeObserver(t){-1!==this.observers.indexOf(t)&&(this.observers=this.observers.filter((function(e){return e!==t})),this.observers.length||(this.retryer&&(this.retryer.isTransportCancelable||this.abortSignalConsumed?this.retryer.cancel({revert:!0}):this.retryer.cancelRetry()),this.cacheTime?this.scheduleGc():this.cache.remove(this)),this.cache.notify({type:"observerRemoved",query:this,observer:t}))},t.getObserversCount=function getObserversCount(){return this.observers.length},t.invalidate=function invalidate(){this.state.isInvalidated||this.dispatch({type:"invalidate"})},t.fetch=function fetch(t,e){var n,r,s,u=this;if(this.state.isFetching)if(this.state.dataUpdatedAt&&(null==e?void 0:e.cancelRefetch))this.cancel({silent:!0});else if(this.promise){var c;return null==(c=this.retryer)||c.continueRetry(),this.promise}if(t&&this.setOptions(t),!this.options.queryFn){var l=this.observers.find((function(t){return t.options.queryFn}));l&&this.setOptions(l.options)}var h=(0,i.mc)(this.queryKey),f=(0,i.G9)(),d={queryKey:h,pageParam:void 0,meta:this.meta};Object.defineProperty(d,"signal",{enumerable:!0,get:function get(){if(f)return u.abortSignalConsumed=!0,f.signal}});var v,y,p={fetchOptions:e,options:this.options,queryKey:h,state:this.state,fetchFn:function fetchFn(){return u.options.queryFn?(u.abortSignalConsumed=!1,u.options.queryFn(d)):Promise.reject("Missing queryFn")},meta:this.meta};(null==(n=this.options.behavior)?void 0:n.onFetch)&&(null==(v=this.options.behavior)||v.onFetch(p));(this.revertState=this.state,this.state.isFetching&&this.state.fetchMeta===(null==(r=p.fetchOptions)?void 0:r.meta))||this.dispatch({type:"fetch",meta:null==(y=p.fetchOptions)?void 0:y.meta});return this.retryer=new a.m4({fn:p.fetchFn,abort:null==f||null==(s=f.abort)?void 0:s.bind(f),onSuccess:function onSuccess(t){u.setData(t),null==u.cache.config.onSuccess||u.cache.config.onSuccess(t,u),0===u.cacheTime&&u.optionalRemove()},onError:function onError(t){(0,a.DV)(t)&&t.silent||u.dispatch({type:"error",error:t}),(0,a.DV)(t)||(null==u.cache.config.onError||u.cache.config.onError(t,u),(0,o.j)().error(t)),0===u.cacheTime&&u.optionalRemove()},onFail:function onFail(){u.dispatch({type:"failed"})},onPause:function onPause(){u.dispatch({type:"pause"})},onContinue:function onContinue(){u.dispatch({type:"continue"})},retry:p.options.retry,retryDelay:p.options.retryDelay}),this.promise=this.retryer.promise,this.promise},t.dispatch=function dispatch(t){var e=this;this.state=this.reducer(this.state,t),u.V.batch((function(){e.observers.forEach((function(e){e.onQueryUpdate(t)})),e.cache.notify({query:e,type:"queryUpdated",action:t})}))},t.getDefaultState=function getDefaultState(t){var e="function"==typeof t.initialData?t.initialData():t.initialData,n=void 0!==t.initialData?"function"==typeof t.initialDataUpdatedAt?t.initialDataUpdatedAt():t.initialDataUpdatedAt:0,r=void 0!==e;return{data:e,dataUpdateCount:0,dataUpdatedAt:r?null!=n?n:Date.now():0,error:null,errorUpdateCount:0,errorUpdatedAt:0,fetchFailureCount:0,fetchMeta:null,isFetching:!1,isInvalidated:!1,isPaused:!1,status:r?"success":"idle"}},t.reducer=function reducer(t,e){var n,r;switch(e.type){case"failed":return(0,s.Z)({},t,{fetchFailureCount:t.fetchFailureCount+1});case"pause":return(0,s.Z)({},t,{isPaused:!0});case"continue":return(0,s.Z)({},t,{isPaused:!1});case"fetch":return(0,s.Z)({},t,{fetchFailureCount:0,fetchMeta:null!=(n=e.meta)?n:null,isFetching:!0,isPaused:!1},!t.dataUpdatedAt&&{error:null,status:"loading"});case"success":return(0,s.Z)({},t,{data:e.data,dataUpdateCount:t.dataUpdateCount+1,dataUpdatedAt:null!=(r=e.dataUpdatedAt)?r:Date.now(),error:null,fetchFailureCount:0,isFetching:!1,isInvalidated:!1,isPaused:!1,status:"success"});case"error":var i=e.error;return(0,a.DV)(i)&&i.revert&&this.revertState?(0,s.Z)({},this.revertState):(0,s.Z)({},t,{error:i,errorUpdateCount:t.errorUpdateCount+1,errorUpdatedAt:Date.now(),fetchFailureCount:t.fetchFailureCount+1,isFetching:!1,isPaused:!1,status:"error"});case"invalidate":return(0,s.Z)({},t,{isInvalidated:!0});case"setState":return(0,s.Z)({},t,e.state);default:return t}},Query}(),l=function(t){function QueryCache(e){var n;return(n=t.call(this)||this).config=e||{},n.queries=[],n.queriesMap={},n}(0,r.Z)(QueryCache,t);var e=QueryCache.prototype;return e.build=function build(t,e,n){var r,s=e.queryKey,u=null!=(r=e.queryHash)?r:(0,i.Rm)(s,e),o=this.get(u);return o||(o=new c({cache:this,queryKey:s,queryHash:u,options:t.defaultQueryOptions(e),state:n,defaultOptions:t.getQueryDefaults(s),meta:e.meta}),this.add(o)),o},e.add=function add(t){this.queriesMap[t.queryHash]||(this.queriesMap[t.queryHash]=t,this.queries.push(t),this.notify({type:"queryAdded",query:t}))},e.remove=function remove(t){var e=this.queriesMap[t.queryHash];e&&(t.destroy(),this.queries=this.queries.filter((function(e){return e!==t})),e===t&&delete this.queriesMap[t.queryHash],this.notify({type:"queryRemoved",query:t}))},e.clear=function clear(){var t=this;u.V.batch((function(){t.queries.forEach((function(e){t.remove(e)}))}))},e.get=function get(t){return this.queriesMap[t]},e.getAll=function getAll(){return this.queries},e.find=function find(t,e){var n=(0,i.I6)(t,e)[0];return void 0===n.exact&&(n.exact=!0),this.queries.find((function(t){return(0,i._x)(n,t)}))},e.findAll=function findAll(t,e){var n=(0,i.I6)(t,e)[0];return Object.keys(n).length>0?this.queries.filter((function(t){return(0,i._x)(n,t)})):this.queries},e.notify=function notify(t){var e=this;u.V.batch((function(){e.listeners.forEach((function(e){e(t)}))}))},e.onFocus=function onFocus(){var t=this;u.V.batch((function(){t.queries.forEach((function(t){t.onFocus()}))}))},e.onOnline=function onOnline(){var t=this;u.V.batch((function(){t.queries.forEach((function(t){t.onOnline()}))}))},QueryCache}(n(90270).l)},37710:(t,e,n)=>{"use strict";n.d(e,{S:()=>h});var r=n(25773),i=n(12860),s=n(89157),u=n(79560),o=n(85123),a=n(19240),c=n(87226),l=n(47798),h=function(){function QueryClient(t){void 0===t&&(t={}),this.queryCache=t.queryCache||new s.t,this.mutationCache=t.mutationCache||new u.L,this.defaultOptions=t.defaultOptions||{},this.queryDefaults=[],this.mutationDefaults=[]}var t=QueryClient.prototype;return t.mount=function mount(){var t=this;this.unsubscribeFocus=o.j.subscribe((function(){o.j.isFocused()&&a.N.isOnline()&&(t.mutationCache.onFocus(),t.queryCache.onFocus())})),this.unsubscribeOnline=a.N.subscribe((function(){o.j.isFocused()&&a.N.isOnline()&&(t.mutationCache.onOnline(),t.queryCache.onOnline())}))},t.unmount=function unmount(){var t,e;null==(t=this.unsubscribeFocus)||t.call(this),null==(e=this.unsubscribeOnline)||e.call(this)},t.isFetching=function isFetching(t,e){var n=(0,i.I6)(t,e)[0];return n.fetching=!0,this.queryCache.findAll(n).length},t.isMutating=function isMutating(t){return this.mutationCache.findAll((0,r.Z)({},t,{fetching:!0})).length},t.getQueryData=function getQueryData(t,e){var n;return null==(n=this.queryCache.find(t,e))?void 0:n.state.data},t.getQueriesData=function getQueriesData(t){return this.getQueryCache().findAll(t).map((function(t){return[t.queryKey,t.state.data]}))},t.setQueryData=function setQueryData(t,e,n){var r=(0,i._v)(t),s=this.defaultQueryOptions(r);return this.queryCache.build(this,s).setData(e,n)},t.setQueriesData=function setQueriesData(t,e,n){var r=this;return c.V.batch((function(){return r.getQueryCache().findAll(t).map((function(t){var i=t.queryKey;return[i,r.setQueryData(i,e,n)]}))}))},t.getQueryState=function getQueryState(t,e){var n;return null==(n=this.queryCache.find(t,e))?void 0:n.state},t.removeQueries=function removeQueries(t,e){var n=(0,i.I6)(t,e)[0],r=this.queryCache;c.V.batch((function(){r.findAll(n).forEach((function(t){r.remove(t)}))}))},t.resetQueries=function resetQueries(t,e,n){var s=this,u=(0,i.I6)(t,e,n),o=u[0],a=u[1],l=this.queryCache,h=(0,r.Z)({},o,{active:!0});return c.V.batch((function(){return l.findAll(o).forEach((function(t){t.reset()})),s.refetchQueries(h,a)}))},t.cancelQueries=function cancelQueries(t,e,n){var r=this,s=(0,i.I6)(t,e,n),u=s[0],o=s[1],a=void 0===o?{}:o;void 0===a.revert&&(a.revert=!0);var l=c.V.batch((function(){return r.queryCache.findAll(u).map((function(t){return t.cancel(a)}))}));return Promise.all(l).then(i.ZT).catch(i.ZT)},t.invalidateQueries=function invalidateQueries(t,e,n){var s,u,o,a=this,l=(0,i.I6)(t,e,n),h=l[0],f=l[1],d=(0,r.Z)({},h,{active:null==(s=null!=(u=h.refetchActive)?u:h.active)||s,inactive:null!=(o=h.refetchInactive)&&o});return c.V.batch((function(){return a.queryCache.findAll(h).forEach((function(t){t.invalidate()})),a.refetchQueries(d,f)}))},t.refetchQueries=function refetchQueries(t,e,n){var s=this,u=(0,i.I6)(t,e,n),o=u[0],a=u[1],l=c.V.batch((function(){return s.queryCache.findAll(o).map((function(t){return t.fetch(void 0,(0,r.Z)({},a,{meta:{refetchPage:null==o?void 0:o.refetchPage}}))}))})),h=Promise.all(l).then(i.ZT);return(null==a?void 0:a.throwOnError)||(h=h.catch(i.ZT)),h},t.fetchQuery=function fetchQuery(t,e,n){var r=(0,i._v)(t,e,n),s=this.defaultQueryOptions(r);void 0===s.retry&&(s.retry=!1);var u=this.queryCache.build(this,s);return u.isStaleByTime(s.staleTime)?u.fetch(s):Promise.resolve(u.state.data)},t.prefetchQuery=function prefetchQuery(t,e,n){return this.fetchQuery(t,e,n).then(i.ZT).catch(i.ZT)},t.fetchInfiniteQuery=function fetchInfiniteQuery(t,e,n){var r=(0,i._v)(t,e,n);return r.behavior=(0,l.Gm)(),this.fetchQuery(r)},t.prefetchInfiniteQuery=function prefetchInfiniteQuery(t,e,n){return this.fetchInfiniteQuery(t,e,n).then(i.ZT).catch(i.ZT)},t.cancelMutations=function cancelMutations(){var t=this,e=c.V.batch((function(){return t.mutationCache.getAll().map((function(t){return t.cancel()}))}));return Promise.all(e).then(i.ZT).catch(i.ZT)},t.resumePausedMutations=function resumePausedMutations(){return this.getMutationCache().resumePausedMutations()},t.executeMutation=function executeMutation(t){return this.mutationCache.build(this,t).execute()},t.getQueryCache=function getQueryCache(){return this.queryCache},t.getMutationCache=function getMutationCache(){return this.mutationCache},t.getDefaultOptions=function getDefaultOptions(){return this.defaultOptions},t.setDefaultOptions=function setDefaultOptions(t){this.defaultOptions=t},t.setQueryDefaults=function setQueryDefaults(t,e){var n=this.queryDefaults.find((function(e){return(0,i.yF)(t)===(0,i.yF)(e.queryKey)}));n?n.defaultOptions=e:this.queryDefaults.push({queryKey:t,defaultOptions:e})},t.getQueryDefaults=function getQueryDefaults(t){var e;return t?null==(e=this.queryDefaults.find((function(e){return(0,i.to)(t,e.queryKey)})))?void 0:e.defaultOptions:void 0},t.setMutationDefaults=function setMutationDefaults(t,e){var n=this.mutationDefaults.find((function(e){return(0,i.yF)(t)===(0,i.yF)(e.mutationKey)}));n?n.defaultOptions=e:this.mutationDefaults.push({mutationKey:t,defaultOptions:e})},t.getMutationDefaults=function getMutationDefaults(t){var e;return t?null==(e=this.mutationDefaults.find((function(e){return(0,i.to)(t,e.mutationKey)})))?void 0:e.defaultOptions:void 0},t.defaultQueryOptions=function defaultQueryOptions(t){if(null==t?void 0:t._defaulted)return t;var e=(0,r.Z)({},this.defaultOptions.queries,this.getQueryDefaults(null==t?void 0:t.queryKey),t,{_defaulted:!0});return!e.queryHash&&e.queryKey&&(e.queryHash=(0,i.Rm)(e.queryKey,e)),e},t.defaultQueryObserverOptions=function defaultQueryObserverOptions(t){return this.defaultQueryOptions(t)},t.defaultMutationOptions=function defaultMutationOptions(t){return(null==t?void 0:t._defaulted)?t:(0,r.Z)({},this.defaultOptions.mutations,this.getMutationDefaults(null==t?void 0:t.mutationKey),t,{_defaulted:!0})},t.clear=function clear(){this.queryCache.clear(),this.mutationCache.clear()},QueryClient}()},87978:(t,e,n)=>{"use strict";n.d(e,{z:()=>h});var r=n(25773),i=n(88863),s=n(12860),u=n(87226),o=n(85123),a=n(90270),c=n(16129),l=n(98973),h=function(t){function QueryObserver(e,n){var r;return(r=t.call(this)||this).client=e,r.options=n,r.trackedProps=[],r.selectError=null,r.bindMethods(),r.setOptions(n),r}(0,i.Z)(QueryObserver,t);var e=QueryObserver.prototype;return e.bindMethods=function bindMethods(){this.remove=this.remove.bind(this),this.refetch=this.refetch.bind(this)},e.onSubscribe=function onSubscribe(){1===this.listeners.length&&(this.currentQuery.addObserver(this),shouldFetchOnMount(this.currentQuery,this.options)&&this.executeFetch(),this.updateTimers())},e.onUnsubscribe=function onUnsubscribe(){this.listeners.length||this.destroy()},e.shouldFetchOnReconnect=function shouldFetchOnReconnect(){return shouldFetchOn(this.currentQuery,this.options,this.options.refetchOnReconnect)},e.shouldFetchOnWindowFocus=function shouldFetchOnWindowFocus(){return shouldFetchOn(this.currentQuery,this.options,this.options.refetchOnWindowFocus)},e.destroy=function destroy(){this.listeners=[],this.clearTimers(),this.currentQuery.removeObserver(this)},e.setOptions=function setOptions(t,e){var n=this.options,r=this.currentQuery;if(this.options=this.client.defaultQueryObserverOptions(t),void 0!==this.options.enabled&&"boolean"!=typeof this.options.enabled)throw new Error("Expected enabled to be a boolean");this.options.queryKey||(this.options.queryKey=n.queryKey),this.updateQuery();var i=this.hasListeners();i&&shouldFetchOptionally(this.currentQuery,r,this.options,n)&&this.executeFetch(),this.updateResult(e),!i||this.currentQuery===r&&this.options.enabled===n.enabled&&this.options.staleTime===n.staleTime||this.updateStaleTimeout();var s=this.computeRefetchInterval();!i||this.currentQuery===r&&this.options.enabled===n.enabled&&s===this.currentRefetchInterval||this.updateRefetchInterval(s)},e.getOptimisticResult=function getOptimisticResult(t){var e=this.client.defaultQueryObserverOptions(t),n=this.client.getQueryCache().build(this.client,e);return this.createResult(n,e)},e.getCurrentResult=function getCurrentResult(){return this.currentResult},e.trackResult=function trackResult(t,e){var n=this,r={},i=function trackProp(t){n.trackedProps.includes(t)||n.trackedProps.push(t)};return Object.keys(t).forEach((function(e){Object.defineProperty(r,e,{configurable:!1,enumerable:!0,get:function get(){return i(e),t[e]}})})),(e.useErrorBoundary||e.suspense)&&i("error"),r},e.getNextResult=function getNextResult(t){var e=this;return new Promise((function(n,r){var i=e.subscribe((function(e){e.isFetching||(i(),e.isError&&(null==t?void 0:t.throwOnError)?r(e.error):n(e))}))}))},e.getCurrentQuery=function getCurrentQuery(){return this.currentQuery},e.remove=function remove(){this.client.getQueryCache().remove(this.currentQuery)},e.refetch=function refetch(t){return this.fetch((0,r.Z)({},t,{meta:{refetchPage:null==t?void 0:t.refetchPage}}))},e.fetchOptimistic=function fetchOptimistic(t){var e=this,n=this.client.defaultQueryObserverOptions(t),r=this.client.getQueryCache().build(this.client,n);return r.fetch().then((function(){return e.createResult(r,n)}))},e.fetch=function fetch(t){var e=this;return this.executeFetch(t).then((function(){return e.updateResult(),e.currentResult}))},e.executeFetch=function executeFetch(t){this.updateQuery();var e=this.currentQuery.fetch(this.options,t);return(null==t?void 0:t.throwOnError)||(e=e.catch(s.ZT)),e},e.updateStaleTimeout=function updateStaleTimeout(){var t=this;if(this.clearStaleTimeout(),!s.sk&&!this.currentResult.isStale&&(0,s.PN)(this.options.staleTime)){var e=(0,s.Kp)(this.currentResult.dataUpdatedAt,this.options.staleTime)+1;this.staleTimeoutId=setTimeout((function(){t.currentResult.isStale||t.updateResult()}),e)}},e.computeRefetchInterval=function computeRefetchInterval(){var t;return"function"==typeof this.options.refetchInterval?this.options.refetchInterval(this.currentResult.data,this.currentQuery):null!=(t=this.options.refetchInterval)&&t},e.updateRefetchInterval=function updateRefetchInterval(t){var e=this;this.clearRefetchInterval(),this.currentRefetchInterval=t,!s.sk&&!1!==this.options.enabled&&(0,s.PN)(this.currentRefetchInterval)&&0!==this.currentRefetchInterval&&(this.refetchIntervalId=setInterval((function(){(e.options.refetchIntervalInBackground||o.j.isFocused())&&e.executeFetch()}),this.currentRefetchInterval))},e.updateTimers=function updateTimers(){this.updateStaleTimeout(),this.updateRefetchInterval(this.computeRefetchInterval())},e.clearTimers=function clearTimers(){this.clearStaleTimeout(),this.clearRefetchInterval()},e.clearStaleTimeout=function clearStaleTimeout(){this.staleTimeoutId&&(clearTimeout(this.staleTimeoutId),this.staleTimeoutId=void 0)},e.clearRefetchInterval=function clearRefetchInterval(){this.refetchIntervalId&&(clearInterval(this.refetchIntervalId),this.refetchIntervalId=void 0)},e.createResult=function createResult(t,e){var n,r=this.currentQuery,i=this.options,u=this.currentResult,o=this.currentResultState,a=this.currentResultOptions,l=t!==r,h=l?t.state:this.currentQueryInitialState,f=l?this.currentResult:this.previousQueryResult,d=t.state,v=d.dataUpdatedAt,y=d.error,p=d.errorUpdatedAt,b=d.isFetching,m=d.status,g=!1,O=!1;if(e.optimisticResults){var Q=this.hasListeners(),C=!Q&&shouldFetchOnMount(t,e),P=Q&&shouldFetchOptionally(t,r,e,i);(C||P)&&(b=!0,v||(m="loading"))}if(e.keepPreviousData&&!d.dataUpdateCount&&(null==f?void 0:f.isSuccess)&&"error"!==m)n=f.data,v=f.dataUpdatedAt,m=f.status,g=!0;else if(e.select&&void 0!==d.data)if(u&&d.data===(null==o?void 0:o.data)&&e.select===this.selectFn)n=this.selectResult;else try{this.selectFn=e.select,n=e.select(d.data),!1!==e.structuralSharing&&(n=(0,s.Q$)(null==u?void 0:u.data,n)),this.selectResult=n,this.selectError=null}catch(t){(0,c.j)().error(t),this.selectError=t}else n=d.data;if(void 0!==e.placeholderData&&void 0===n&&("loading"===m||"idle"===m)){var R;if((null==u?void 0:u.isPlaceholderData)&&e.placeholderData===(null==a?void 0:a.placeholderData))R=u.data;else if(R="function"==typeof e.placeholderData?e.placeholderData():e.placeholderData,e.select&&void 0!==R)try{R=e.select(R),!1!==e.structuralSharing&&(R=(0,s.Q$)(null==u?void 0:u.data,R)),this.selectError=null}catch(t){(0,c.j)().error(t),this.selectError=t}void 0!==R&&(m="success",n=R,O=!0)}return this.selectError&&(y=this.selectError,n=this.selectResult,p=Date.now(),m="error"),{status:m,isLoading:"loading"===m,isSuccess:"success"===m,isError:"error"===m,isIdle:"idle"===m,data:n,dataUpdatedAt:v,error:y,errorUpdatedAt:p,failureCount:d.fetchFailureCount,errorUpdateCount:d.errorUpdateCount,isFetched:d.dataUpdateCount>0||d.errorUpdateCount>0,isFetchedAfterMount:d.dataUpdateCount>h.dataUpdateCount||d.errorUpdateCount>h.errorUpdateCount,isFetching:b,isRefetching:b&&"loading"!==m,isLoadingError:"error"===m&&0===d.dataUpdatedAt,isPlaceholderData:O,isPreviousData:g,isRefetchError:"error"===m&&0!==d.dataUpdatedAt,isStale:isStale(t,e),refetch:this.refetch,remove:this.remove}},e.shouldNotifyListeners=function shouldNotifyListeners(t,e){if(!e)return!0;var n=this.options,r=n.notifyOnChangeProps,i=n.notifyOnChangePropsExclusions;if(!r&&!i)return!0;if("tracked"===r&&!this.trackedProps.length)return!0;var s="tracked"===r?this.trackedProps:r;return Object.keys(t).some((function(n){var r=n,u=t[r]!==e[r],o=null==s?void 0:s.some((function(t){return t===n})),a=null==i?void 0:i.some((function(t){return t===n}));return u&&!a&&(!s||o)}))},e.updateResult=function updateResult(t){var e=this.currentResult;if(this.currentResult=this.createResult(this.currentQuery,this.options),this.currentResultState=this.currentQuery.state,this.currentResultOptions=this.options,!(0,s.VS)(this.currentResult,e)){var n={cache:!0};!1!==(null==t?void 0:t.listeners)&&this.shouldNotifyListeners(this.currentResult,e)&&(n.listeners=!0),this.notify((0,r.Z)({},n,t))}},e.updateQuery=function updateQuery(){var t=this.client.getQueryCache().build(this.client,this.options);if(t!==this.currentQuery){var e=this.currentQuery;this.currentQuery=t,this.currentQueryInitialState=t.state,this.previousQueryResult=this.currentResult,this.hasListeners()&&(null==e||e.removeObserver(this),t.addObserver(this))}},e.onQueryUpdate=function onQueryUpdate(t){var e={};"success"===t.type?e.onSuccess=!0:"error"!==t.type||(0,l.DV)(t.error)||(e.onError=!0),this.updateResult(e),this.hasListeners()&&this.updateTimers()},e.notify=function notify(t){var e=this;u.V.batch((function(){t.onSuccess?(null==e.options.onSuccess||e.options.onSuccess(e.currentResult.data),null==e.options.onSettled||e.options.onSettled(e.currentResult.data,null)):t.onError&&(null==e.options.onError||e.options.onError(e.currentResult.error),null==e.options.onSettled||e.options.onSettled(void 0,e.currentResult.error)),t.listeners&&e.listeners.forEach((function(t){t(e.currentResult)})),t.cache&&e.client.getQueryCache().notify({query:e.currentQuery,type:"observerResultsUpdated"})}))},QueryObserver}(a.l);function shouldFetchOnMount(t,e){return function shouldLoadOnMount(t,e){return!(!1===e.enabled||t.state.dataUpdatedAt||"error"===t.state.status&&!1===e.retryOnMount)}(t,e)||t.state.dataUpdatedAt>0&&shouldFetchOn(t,e,e.refetchOnMount)}function shouldFetchOn(t,e,n){if(!1!==e.enabled){var r="function"==typeof n?n(t):n;return"always"===r||!1!==r&&isStale(t,e)}return!1}function shouldFetchOptionally(t,e,n,r){return!1!==n.enabled&&(t!==e||!1===r.enabled)&&(!n.suspense||"error"!==t.state.status)&&isStale(t,n)}function isStale(t,e){return t.isStaleByTime(e.staleTime)}},98973:(t,e,n)=>{"use strict";n.d(e,{DV:()=>isCancelledError,LE:()=>isCancelable,m4:()=>o,p8:()=>u});var r=n(85123),i=n(19240),s=n(12860);function defaultRetryDelay(t){return Math.min(1e3*Math.pow(2,t),3e4)}function isCancelable(t){return"function"==typeof(null==t?void 0:t.cancel)}var u=function CancelledError(t){this.revert=null==t?void 0:t.revert,this.silent=null==t?void 0:t.silent};function isCancelledError(t){return t instanceof u}var o=function Retryer(t){var e,n,o,a,c=this,l=!1;this.abort=t.abort,this.cancel=function(t){return null==e?void 0:e(t)},this.cancelRetry=function(){l=!0},this.continueRetry=function(){l=!1},this.continue=function(){return null==n?void 0:n()},this.failureCount=0,this.isPaused=!1,this.isResolved=!1,this.isTransportCancelable=!1,this.promise=new Promise((function(t,e){o=t,a=e}));var h=function resolve(e){c.isResolved||(c.isResolved=!0,null==t.onSuccess||t.onSuccess(e),null==n||n(),o(e))},f=function reject(e){c.isResolved||(c.isResolved=!0,null==t.onError||t.onError(e),null==n||n(),a(e))};!function run(){if(!c.isResolved){var o;try{o=t.fn()}catch(t){o=Promise.reject(t)}e=function cancelFn(t){if(!c.isResolved&&(f(new u(t)),null==c.abort||c.abort(),isCancelable(o)))try{o.cancel()}catch(t){}},c.isTransportCancelable=isCancelable(o),Promise.resolve(o).then(h).catch((function(e){var u,o;if(!c.isResolved){var a=null!=(u=t.retry)?u:3,h=null!=(o=t.retryDelay)?o:defaultRetryDelay,d="function"==typeof h?h(c.failureCount,e):h,v=!0===a||"number"==typeof a&&c.failureCount{"use strict";n.d(e,{l:()=>r});var r=function(){function Subscribable(){this.listeners=[]}var t=Subscribable.prototype;return t.subscribe=function subscribe(t){var e=this,n=t||function(){};return this.listeners.push(n),this.onSubscribe(),function(){e.listeners=e.listeners.filter((function(t){return t!==n})),e.onUnsubscribe()}},t.hasListeners=function hasListeners(){return this.listeners.length>0},t.onSubscribe=function onSubscribe(){},t.onUnsubscribe=function onUnsubscribe(){},Subscribable}()},46503:()=>{},12860:(t,e,n)=>{"use strict";n.d(e,{A4:()=>scheduleMicrotask,G9:()=>getAbortController,Gh:()=>sleep,I6:()=>parseFilterArgs,Kp:()=>timeUntilStale,PN:()=>isValidTimeout,Q$:()=>replaceEqualDeep,Rc:()=>replaceAt,Rm:()=>hashQueryKeyByOptions,SE:()=>functionalUpdate,VS:()=>shallowEqualObjects,VZ:()=>isError,X7:()=>matchMutation,ZT:()=>noop,_v:()=>parseQueryArgs,_x:()=>matchQuery,cb:()=>parseMutationFilterArgs,e5:()=>difference,lV:()=>parseMutationArgs,mc:()=>ensureQueryKeyArray,sk:()=>i,to:()=>partialMatchKey,yF:()=>hashQueryKey});var r=n(25773),i="undefined"==typeof window;function noop(){}function functionalUpdate(t,e){return"function"==typeof t?t(e):t}function isValidTimeout(t){return"number"==typeof t&&t>=0&&t!==1/0}function ensureQueryKeyArray(t){return Array.isArray(t)?t:[t]}function difference(t,e){return t.filter((function(t){return-1===e.indexOf(t)}))}function replaceAt(t,e,n){var r=t.slice(0);return r[e]=n,r}function timeUntilStale(t,e){return Math.max(t+(e||0)-Date.now(),0)}function parseQueryArgs(t,e,n){return isQueryKey(t)?"function"==typeof e?(0,r.Z)({},n,{queryKey:t,queryFn:e}):(0,r.Z)({},e,{queryKey:t}):t}function parseMutationArgs(t,e,n){return isQueryKey(t)?"function"==typeof e?(0,r.Z)({},n,{mutationKey:t,mutationFn:e}):(0,r.Z)({},e,{mutationKey:t}):"function"==typeof t?(0,r.Z)({},e,{mutationFn:t}):(0,r.Z)({},t)}function parseFilterArgs(t,e,n){return isQueryKey(t)?[(0,r.Z)({},e,{queryKey:t}),n]:[t||{},e]}function parseMutationFilterArgs(t,e){return isQueryKey(t)?(0,r.Z)({},e,{mutationKey:t}):t}function matchQuery(t,e){var n=t.active,r=t.exact,i=t.fetching,s=t.inactive,u=t.predicate,o=t.queryKey,a=t.stale;if(isQueryKey(o))if(r){if(e.queryHash!==hashQueryKeyByOptions(o,e.options))return!1}else if(!partialMatchKey(e.queryKey,o))return!1;var c=function mapQueryStatusFilter(t,e){return!0===t&&!0===e||null==t&&null==e?"all":!1===t&&!1===e?"none":(null!=t?t:!e)?"active":"inactive"}(n,s);if("none"===c)return!1;if("all"!==c){var l=e.isActive();if("active"===c&&!l)return!1;if("inactive"===c&&l)return!1}return("boolean"!=typeof a||e.isStale()===a)&&(("boolean"!=typeof i||e.isFetching()===i)&&!(u&&!u(e)))}function matchMutation(t,e){var n=t.exact,r=t.fetching,i=t.predicate,s=t.mutationKey;if(isQueryKey(s)){if(!e.options.mutationKey)return!1;if(n){if(hashQueryKey(e.options.mutationKey)!==hashQueryKey(s))return!1}else if(!partialMatchKey(e.options.mutationKey,s))return!1}return("boolean"!=typeof r||"loading"===e.state.status===r)&&!(i&&!i(e))}function hashQueryKeyByOptions(t,e){return((null==e?void 0:e.queryKeyHashFn)||hashQueryKey)(t)}function hashQueryKey(t){return function stableValueHash(t){return JSON.stringify(t,(function(t,e){return isPlainObject(e)?Object.keys(e).sort().reduce((function(t,n){return t[n]=e[n],t}),{}):e}))}(ensureQueryKeyArray(t))}function partialMatchKey(t,e){return partialDeepEqual(ensureQueryKeyArray(t),ensureQueryKeyArray(e))}function partialDeepEqual(t,e){return t===e||typeof t==typeof e&&(!(!t||!e||"object"!=typeof t||"object"!=typeof e)&&!Object.keys(e).some((function(n){return!partialDeepEqual(t[n],e[n])})))}function replaceEqualDeep(t,e){if(t===e)return t;var n=Array.isArray(t)&&Array.isArray(e);if(n||isPlainObject(t)&&isPlainObject(e)){for(var r=n?t.length:Object.keys(t).length,i=n?e:Object.keys(e),s=i.length,u=n?[]:{},o=0,a=0;a{"use strict";n.r(e);var r=n(30795),i={};for(const t in r)"default"!==t&&(i[t]=()=>r[t]);n.d(e,i);var s=n(43606);i={};for(const t in s)["default","CancelledError","QueryCache","QueryClient","QueryObserver","QueriesObserver","InfiniteQueryObserver","MutationCache","MutationObserver","setLogger","notifyManager","focusManager","onlineManager","hashQueryKey","isError","isCancelledError","dehydrate","hydrate"].indexOf(t)<0&&(i[t]=()=>s[t]);n.d(e,i)},61280:(t,e,n)=>{"use strict";n.d(e,{p:()=>o,s:()=>useHydrate});var r=n(87363),i=n.n(r),s=n(9975),u=n(4667);function useHydrate(t,e){var n=(0,u.N)(),r=i().useRef(e);r.current=e,i().useMemo((function(){t&&(0,s.Z)(n,t,r.current)}),[n,t])}var o=function Hydrate(t){var e=t.children,n=t.options;return useHydrate(t.state,n),e}},4667:(t,e,n)=>{"use strict";n.d(e,{N:()=>o,a:()=>a});var r=n(87363),i=n.n(r),s=i().createContext(void 0),u=i().createContext(!1);function getQueryClientContext(t){return t&&"undefined"!=typeof window?(window.ReactQueryClientContext||(window.ReactQueryClientContext=s),window.ReactQueryClientContext):s}var o=function useQueryClient(){var t=i().useContext(getQueryClientContext(i().useContext(u)));if(!t)throw new Error("No QueryClient set, use QueryClientProvider to set one");return t},a=function QueryClientProvider(t){var e=t.client,n=t.contextSharing,r=void 0!==n&&n,s=t.children;i().useEffect((function(){return e.mount(),function(){e.unmount()}}),[e]);var o=getQueryClientContext(r);return i().createElement(u.Provider,{value:r},i().createElement(o.Provider,{value:e},s))}},39877:(t,e,n)=>{"use strict";n.d(e,{_:()=>u,k:()=>o});var r=n(87363),i=n.n(r);function createValue(){var t=!1;return{clearReset:function clearReset(){t=!1},reset:function reset(){t=!0},isReset:function isReset(){return t}}}var s=i().createContext(createValue()),u=function useQueryErrorResetBoundary(){return i().useContext(s)},o=function QueryErrorResetBoundary(t){var e=t.children,n=i().useMemo((function(){return createValue()}),[]);return i().createElement(s.Provider,{value:n},"function"==typeof e?e(n):e)}},43606:(t,e,n)=>{"use strict";n.r(e),n.d(e,{Hydrate:()=>h.p,QueryClientProvider:()=>r.a,QueryErrorResetBoundary:()=>i.k,useHydrate:()=>h.s,useInfiniteQuery:()=>l.N,useIsFetching:()=>s.y,useIsMutating:()=>u.B,useMutation:()=>o.D,useQueries:()=>c.h,useQuery:()=>a.a,useQueryClient:()=>r.N,useQueryErrorResetBoundary:()=>i._});n(28861),n(24902);var r=n(4667),i=n(39877),s=n(37074),u=n(54321),o=n(68544),a=n(3988),c=n(96467),l=n(65469),h=n(61280),f=n(68412),d={};for(const t in f)["default","QueryClientProvider","useQueryClient","QueryErrorResetBoundary","useQueryErrorResetBoundary","useIsFetching","useIsMutating","useMutation","useQuery","useQueries","useInfiniteQuery","useHydrate","Hydrate"].indexOf(t)<0&&(d[t]=()=>f[t]);n.d(e,d)},28861:(t,e,n)=>{"use strict";var r=n(87226),i=n(61533),s=n.n(i)().unstable_batchedUpdates;r.V.setBatchNotifyFunction(s)},24902:(t,e,n)=>{"use strict";var r=n(16129),i=console;(0,r.E)(i)},68412:()=>{},85055:(t,e,n)=>{"use strict";n.d(e,{r:()=>useBaseQuery});var r=n(87363),i=n.n(r),s=n(87226),u=n(39877),o=n(4667),a=n(75108);function useBaseQuery(t,e){var n=i().useRef(!1),r=i().useState(0)[1],c=(0,o.N)(),l=(0,u._)(),h=c.defaultQueryObserverOptions(t);h.optimisticResults=!0,h.onError&&(h.onError=s.V.batchCalls(h.onError)),h.onSuccess&&(h.onSuccess=s.V.batchCalls(h.onSuccess)),h.onSettled&&(h.onSettled=s.V.batchCalls(h.onSettled)),h.suspense&&("number"!=typeof h.staleTime&&(h.staleTime=1e3),0===h.cacheTime&&(h.cacheTime=1)),(h.suspense||h.useErrorBoundary)&&(l.isReset()||(h.retryOnMount=!1));var f=i().useState((function(){return new e(c,h)}))[0],d=f.getOptimisticResult(h);if(i().useEffect((function(){n.current=!0,l.clearReset();var t=f.subscribe(s.V.batchCalls((function(){n.current&&r((function(t){return t+1}))})));return f.updateResult(),function(){n.current=!1,t()}}),[l,f]),i().useEffect((function(){f.setOptions(h,{listeners:!1})}),[h,f]),h.suspense&&d.isLoading)throw f.fetchOptimistic(h).then((function(t){var e=t.data;null==h.onSuccess||h.onSuccess(e),null==h.onSettled||h.onSettled(e,null)})).catch((function(t){l.clearReset(),null==h.onError||h.onError(t),null==h.onSettled||h.onSettled(void 0,t)}));if(d.isError&&!l.isReset()&&!d.isFetching&&(0,a.L)(h.suspense,h.useErrorBoundary,[d.error,f.getCurrentQuery()]))throw d.error;return"tracked"===h.notifyOnChangeProps&&(d=f.trackResult(d,h)),d}},65469:(t,e,n)=>{"use strict";n.d(e,{N:()=>useInfiniteQuery});var r=n(15830),i=n(12860),s=n(85055);function useInfiniteQuery(t,e,n){var u=(0,i._v)(t,e,n);return(0,s.r)(u,r.c)}},37074:(t,e,n)=>{"use strict";n.d(e,{y:()=>useIsFetching});var r=n(87363),i=n.n(r),s=n(87226),u=n(12860),o=n(4667),a=function checkIsFetching(t,e,n,r){var i=t.isFetching(e);n!==i&&r(i)};function useIsFetching(t,e){var n=i().useRef(!1),r=(0,o.N)(),c=(0,u.I6)(t,e)[0],l=i().useState(r.isFetching(c)),h=l[0],f=l[1],d=i().useRef(c);d.current=c;var v=i().useRef(h);return v.current=h,i().useEffect((function(){n.current=!0,a(r,d.current,v.current,f);var t=r.getQueryCache().subscribe(s.V.batchCalls((function(){n.current&&a(r,d.current,v.current,f)})));return function(){n.current=!1,t()}}),[r]),h}},54321:(t,e,n)=>{"use strict";n.d(e,{B:()=>useIsMutating});var r=n(87363),i=n.n(r),s=n(87226),u=n(12860),o=n(4667);function useIsMutating(t,e){var n=i().useRef(!1),r=(0,u.cb)(t,e),a=(0,o.N)(),c=i().useState(a.isMutating(r)),l=c[0],h=c[1],f=i().useRef(r);f.current=r;var d=i().useRef(l);return d.current=l,i().useEffect((function(){n.current=!0;var t=a.getMutationCache().subscribe(s.V.batchCalls((function(){if(n.current){var t=a.isMutating(f.current);d.current!==t&&h(t)}})));return function(){n.current=!1,t()}}),[a]),l}},68544:(t,e,n)=>{"use strict";n.d(e,{D:()=>useMutation});var r=n(25773),i=n(87363),s=n.n(i),u=n(87226),o=n(12860),a=n(40424),c=n(4667),l=n(75108);function useMutation(t,e,n){var i=s().useRef(!1),h=s().useState(0)[1],f=(0,o.lV)(t,e,n),d=(0,c.N)(),v=s().useRef();v.current?v.current.setOptions(f):v.current=new a.X(d,f);var y=v.current.getCurrentResult();s().useEffect((function(){i.current=!0;var t=v.current.subscribe(u.V.batchCalls((function(){i.current&&h((function(t){return t+1}))})));return function(){i.current=!1,t()}}),[]);var p=s().useCallback((function(t,e){v.current.mutate(t,e).catch(o.ZT)}),[]);if(y.error&&(0,l.L)(void 0,v.current.options.useErrorBoundary,[y.error]))throw y.error;return(0,r.Z)({},y,{mutate:p,mutateAsync:y.mutate})}},96467:(t,e,n)=>{"use strict";n.d(e,{h:()=>useQueries});var r=n(87363),i=n.n(r),s=n(87226),u=n(27282),o=n(4667);function useQueries(t){var e=i().useRef(!1),n=i().useState(0)[1],a=(0,o.N)(),c=(0,r.useMemo)((function(){return t.map((function(t){var e=a.defaultQueryObserverOptions(t);return e.optimisticResults=!0,e}))}),[t,a]),l=i().useState((function(){return new u.y(a,c)}))[0],h=l.getOptimisticResult(c);return i().useEffect((function(){e.current=!0;var t=l.subscribe(s.V.batchCalls((function(){e.current&&n((function(t){return t+1}))})));return function(){e.current=!1,t()}}),[l]),i().useEffect((function(){l.setQueries(c,{listeners:!1})}),[c,l]),h}},3988:(t,e,n)=>{"use strict";n.d(e,{a:()=>useQuery});var r=n(87978),i=n(12860),s=n(85055);function useQuery(t,e,n){var u=(0,i._v)(t,e,n);return(0,s.r)(u,r.z)}},75108:(t,e,n)=>{"use strict";function shouldThrowError(t,e,n){return"function"==typeof e?e.apply(void 0,n):"boolean"==typeof e?e:!!t}n.d(e,{L:()=>shouldThrowError})},25773:(t,e,n)=>{"use strict";function _extends(){return _extends=Object.assign?Object.assign.bind():function(t){for(var e=1;e_extends})},88863:(t,e,n)=>{"use strict";function _setPrototypeOf(t,e){return _setPrototypeOf=Object.setPrototypeOf?Object.setPrototypeOf.bind():function _setPrototypeOf(t,e){return t.__proto__=e,t},_setPrototypeOf(t,e)}function _inheritsLoose(t,e){t.prototype=Object.create(e.prototype),t.prototype.constructor=t,_setPrototypeOf(t,e)}n.d(e,{Z:()=>_inheritsLoose})}}]); \ No newline at end of file diff --git a/wp-content/plugins/elementor/assets/js/4586b3ce03181d93c8bf.bundle.js b/wp-content/plugins/elementor/assets/js/4586b3ce03181d93c8bf.bundle.js new file mode 100644 index 0000000..429e30a --- /dev/null +++ b/wp-content/plugins/elementor/assets/js/4586b3ce03181d93c8bf.bundle.js @@ -0,0 +1,313 @@ +/*! elementor - v3.20.0 - 26-03-2024 */ +(self["webpackChunkelementor"] = self["webpackChunkelementor"] || []).push([["modules_nested-tabs_assets_js_editor_module_js"],{ + +/***/ "../modules/nested-tabs/assets/js/editor/module.js": +/*!*********************************************************!*\ + !*** ../modules/nested-tabs/assets/js/editor/module.js ***! + \*********************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + + +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 _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/createClass */ "../node_modules/@babel/runtime/helpers/createClass.js")); +var _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ "../node_modules/@babel/runtime/helpers/classCallCheck.js")); +var _nestedTabs = _interopRequireDefault(__webpack_require__(/*! ./nested-tabs */ "../modules/nested-tabs/assets/js/editor/nested-tabs.js")); +var Module = /*#__PURE__*/(0, _createClass2.default)(function Module() { + (0, _classCallCheck2.default)(this, Module); + elementor.elementsManager.registerElementType(new _nestedTabs.default()); +}); +exports["default"] = Module; + +/***/ }), + +/***/ "../modules/nested-tabs/assets/js/editor/nested-tabs.js": +/*!**************************************************************!*\ + !*** ../modules/nested-tabs/assets/js/editor/nested-tabs.js ***! + \**************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + + +var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js"); +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = exports.NestedTabs = void 0; +var _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ "../node_modules/@babel/runtime/helpers/classCallCheck.js")); +var _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/createClass */ "../node_modules/@babel/runtime/helpers/createClass.js")); +var _inherits2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/inherits */ "../node_modules/@babel/runtime/helpers/inherits.js")); +var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ "../node_modules/@babel/runtime/helpers/possibleConstructorReturn.js")); +var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ "../node_modules/@babel/runtime/helpers/getPrototypeOf.js")); +var _view = _interopRequireDefault(__webpack_require__(/*! ./views/view */ "../modules/nested-tabs/assets/js/editor/views/view.js")); +function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; } +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } +var NestedTabs = /*#__PURE__*/function (_elementor$modules$el) { + (0, _inherits2.default)(NestedTabs, _elementor$modules$el); + var _super = _createSuper(NestedTabs); + function NestedTabs() { + (0, _classCallCheck2.default)(this, NestedTabs); + return _super.apply(this, arguments); + } + (0, _createClass2.default)(NestedTabs, [{ + key: "getType", + value: function getType() { + return 'nested-tabs'; + } + }, { + key: "getView", + value: function getView() { + return _view.default; + } + }]); + return NestedTabs; +}(elementor.modules.elements.types.NestedElementBase); +exports.NestedTabs = NestedTabs; +var _default = NestedTabs; +exports["default"] = _default; + +/***/ }), + +/***/ "../modules/nested-tabs/assets/js/editor/views/view.js": +/*!*************************************************************!*\ + !*** ../modules/nested-tabs/assets/js/editor/views/view.js ***! + \*************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + + +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 _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ "../node_modules/@babel/runtime/helpers/classCallCheck.js")); +var _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/createClass */ "../node_modules/@babel/runtime/helpers/createClass.js")); +var _inherits2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/inherits */ "../node_modules/@babel/runtime/helpers/inherits.js")); +var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ "../node_modules/@babel/runtime/helpers/possibleConstructorReturn.js")); +var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ "../node_modules/@babel/runtime/helpers/getPrototypeOf.js")); +function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; } +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } +var View = /*#__PURE__*/function (_$e$components$get$ex) { + (0, _inherits2.default)(View, _$e$components$get$ex); + var _super = _createSuper(View); + function View() { + (0, _classCallCheck2.default)(this, View); + return _super.apply(this, arguments); + } + (0, _createClass2.default)(View, [{ + key: "filter", + value: function filter(child, index) { + child.attributes.dataIndex = index + 1; + return true; + } + }, { + key: "onAddChild", + value: function onAddChild(childView) { + var _childView$_parent$$e, _childView$_parent$$e2; + var widgetNumber = (_childView$_parent$$e = childView._parent.$el.find('.e-n-tabs')[0]) === null || _childView$_parent$$e === void 0 ? void 0 : _childView$_parent$$e.dataset.widgetNumber, + index = childView.model.attributes.dataIndex, + tabId = (_childView$_parent$$e2 = childView._parent.$el.find(".e-n-tab-title[data-tab-index=\"".concat(index, "\"]"))) === null || _childView$_parent$$e2 === void 0 ? void 0 : _childView$_parent$$e2.attr('id'); + childView.$el.attr({ + id: 'e-n-tab-content-' + widgetNumber + '' + index, + role: 'tabpanel', + 'aria-labelledby': tabId, + 'data-tab-index': index, + style: '--n-tabs-title-order: ' + index + ';' + }); + if (1 === index) { + childView.$el.addClass('e-active'); + } + } + }]); + return View; +}($e.components.get('nested-elements').exports.NestedView); +exports["default"] = View; + +/***/ }), + +/***/ "../node_modules/@babel/runtime/helpers/assertThisInitialized.js": +/*!***********************************************************************!*\ + !*** ../node_modules/@babel/runtime/helpers/assertThisInitialized.js ***! + \***********************************************************************/ +/***/ ((module) => { + +function _assertThisInitialized(self) { + if (self === void 0) { + throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); + } + return self; +} +module.exports = _assertThisInitialized, module.exports.__esModule = true, module.exports["default"] = module.exports; + +/***/ }), + +/***/ "../node_modules/@babel/runtime/helpers/classCallCheck.js": +/*!****************************************************************!*\ + !*** ../node_modules/@babel/runtime/helpers/classCallCheck.js ***! + \****************************************************************/ +/***/ ((module) => { + +function _classCallCheck(instance, Constructor) { + if (!(instance instanceof Constructor)) { + throw new TypeError("Cannot call a class as a function"); + } +} +module.exports = _classCallCheck, module.exports.__esModule = true, module.exports["default"] = module.exports; + +/***/ }), + +/***/ "../node_modules/@babel/runtime/helpers/createClass.js": +/*!*************************************************************!*\ + !*** ../node_modules/@babel/runtime/helpers/createClass.js ***! + \*************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var toPropertyKey = __webpack_require__(/*! ./toPropertyKey.js */ "../node_modules/@babel/runtime/helpers/toPropertyKey.js"); +function _defineProperties(target, props) { + for (var i = 0; i < props.length; i++) { + var descriptor = props[i]; + descriptor.enumerable = descriptor.enumerable || false; + descriptor.configurable = true; + if ("value" in descriptor) descriptor.writable = true; + Object.defineProperty(target, toPropertyKey(descriptor.key), descriptor); + } +} +function _createClass(Constructor, protoProps, staticProps) { + if (protoProps) _defineProperties(Constructor.prototype, protoProps); + if (staticProps) _defineProperties(Constructor, staticProps); + Object.defineProperty(Constructor, "prototype", { + writable: false + }); + return Constructor; +} +module.exports = _createClass, module.exports.__esModule = true, module.exports["default"] = module.exports; + +/***/ }), + +/***/ "../node_modules/@babel/runtime/helpers/getPrototypeOf.js": +/*!****************************************************************!*\ + !*** ../node_modules/@babel/runtime/helpers/getPrototypeOf.js ***! + \****************************************************************/ +/***/ ((module) => { + +function _getPrototypeOf(o) { + module.exports = _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { + return o.__proto__ || Object.getPrototypeOf(o); + }, module.exports.__esModule = true, module.exports["default"] = module.exports; + return _getPrototypeOf(o); +} +module.exports = _getPrototypeOf, module.exports.__esModule = true, module.exports["default"] = module.exports; + +/***/ }), + +/***/ "../node_modules/@babel/runtime/helpers/inherits.js": +/*!**********************************************************!*\ + !*** ../node_modules/@babel/runtime/helpers/inherits.js ***! + \**********************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var setPrototypeOf = __webpack_require__(/*! ./setPrototypeOf.js */ "../node_modules/@babel/runtime/helpers/setPrototypeOf.js"); +function _inherits(subClass, superClass) { + if (typeof superClass !== "function" && superClass !== null) { + throw new TypeError("Super expression must either be null or a function"); + } + subClass.prototype = Object.create(superClass && superClass.prototype, { + constructor: { + value: subClass, + writable: true, + configurable: true + } + }); + Object.defineProperty(subClass, "prototype", { + writable: false + }); + if (superClass) setPrototypeOf(subClass, superClass); +} +module.exports = _inherits, module.exports.__esModule = true, module.exports["default"] = module.exports; + +/***/ }), + +/***/ "../node_modules/@babel/runtime/helpers/possibleConstructorReturn.js": +/*!***************************************************************************!*\ + !*** ../node_modules/@babel/runtime/helpers/possibleConstructorReturn.js ***! + \***************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var _typeof = (__webpack_require__(/*! ./typeof.js */ "../node_modules/@babel/runtime/helpers/typeof.js")["default"]); +var assertThisInitialized = __webpack_require__(/*! ./assertThisInitialized.js */ "../node_modules/@babel/runtime/helpers/assertThisInitialized.js"); +function _possibleConstructorReturn(self, call) { + if (call && (_typeof(call) === "object" || typeof call === "function")) { + return call; + } else if (call !== void 0) { + throw new TypeError("Derived constructors may only return object or undefined"); + } + return assertThisInitialized(self); +} +module.exports = _possibleConstructorReturn, module.exports.__esModule = true, module.exports["default"] = module.exports; + +/***/ }), + +/***/ "../node_modules/@babel/runtime/helpers/setPrototypeOf.js": +/*!****************************************************************!*\ + !*** ../node_modules/@babel/runtime/helpers/setPrototypeOf.js ***! + \****************************************************************/ +/***/ ((module) => { + +function _setPrototypeOf(o, p) { + module.exports = _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { + o.__proto__ = p; + return o; + }, module.exports.__esModule = true, module.exports["default"] = module.exports; + return _setPrototypeOf(o, p); +} +module.exports = _setPrototypeOf, module.exports.__esModule = true, module.exports["default"] = module.exports; + +/***/ }), + +/***/ "../node_modules/@babel/runtime/helpers/toPrimitive.js": +/*!*************************************************************!*\ + !*** ../node_modules/@babel/runtime/helpers/toPrimitive.js ***! + \*************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var _typeof = (__webpack_require__(/*! ./typeof.js */ "../node_modules/@babel/runtime/helpers/typeof.js")["default"]); +function toPrimitive(t, r) { + if ("object" != _typeof(t) || !t) return t; + var e = t[Symbol.toPrimitive]; + if (void 0 !== e) { + var i = e.call(t, r || "default"); + if ("object" != _typeof(i)) return i; + throw new TypeError("@@toPrimitive must return a primitive value."); + } + return ("string" === r ? String : Number)(t); +} +module.exports = toPrimitive, module.exports.__esModule = true, module.exports["default"] = module.exports; + +/***/ }), + +/***/ "../node_modules/@babel/runtime/helpers/toPropertyKey.js": +/*!***************************************************************!*\ + !*** ../node_modules/@babel/runtime/helpers/toPropertyKey.js ***! + \***************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var _typeof = (__webpack_require__(/*! ./typeof.js */ "../node_modules/@babel/runtime/helpers/typeof.js")["default"]); +var toPrimitive = __webpack_require__(/*! ./toPrimitive.js */ "../node_modules/@babel/runtime/helpers/toPrimitive.js"); +function toPropertyKey(t) { + var i = toPrimitive(t, "string"); + return "symbol" == _typeof(i) ? i : String(i); +} +module.exports = toPropertyKey, module.exports.__esModule = true, module.exports["default"] = module.exports; + +/***/ }) + +}]); +//# sourceMappingURL=4586b3ce03181d93c8bf.bundle.js.map \ No newline at end of file diff --git a/wp-content/plugins/elementor/assets/js/46e544e5863270fc32f2.bundle.js b/wp-content/plugins/elementor/assets/js/46e544e5863270fc32f2.bundle.js new file mode 100644 index 0000000..41e6701 --- /dev/null +++ b/wp-content/plugins/elementor/assets/js/46e544e5863270fc32f2.bundle.js @@ -0,0 +1,238 @@ +/*! elementor - v3.20.0 - 26-03-2024 */ +(self["webpackChunkelementor"] = self["webpackChunkelementor"] || []).push([["modules_nested-elements_assets_js_editor_views_view_js"],{ + +/***/ "../modules/nested-elements/assets/js/editor/views/view.js": +/*!*****************************************************************!*\ + !*** ../modules/nested-elements/assets/js/editor/views/view.js ***! + \*****************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + + +var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js"); +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = exports.View = void 0; +var _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ "../node_modules/@babel/runtime/helpers/classCallCheck.js")); +var _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/createClass */ "../node_modules/@babel/runtime/helpers/createClass.js")); +var _get2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/get */ "../node_modules/@babel/runtime/helpers/get.js")); +var _inherits2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/inherits */ "../node_modules/@babel/runtime/helpers/inherits.js")); +var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ "../node_modules/@babel/runtime/helpers/possibleConstructorReturn.js")); +var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ "../node_modules/@babel/runtime/helpers/getPrototypeOf.js")); +function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; } +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } +var View = /*#__PURE__*/function (_$e$components$get$ex) { + (0, _inherits2.default)(View, _$e$components$get$ex); + var _super = _createSuper(View); + function View() { + (0, _classCallCheck2.default)(this, View); + return _super.apply(this, arguments); + } + (0, _createClass2.default)(View, [{ + key: "events", + value: function events() { + var _this = this; + var events = (0, _get2.default)((0, _getPrototypeOf2.default)(View.prototype), "events", this).call(this); + events.click = function (e) { + // If the clicked Nested Element is not within the currently edited document, don't do anything with it. + if (elementor.documents.currentDocument.id.toString() !== e.target.closest('.elementor').dataset.elementorId) { + return; + } + var closest = e.target.closest('.elementor-element'); + var model = _this.options.model, + view = _this; + + // For clicks on container/widget. + if (['container', 'widget'].includes(closest === null || closest === void 0 ? void 0 : closest.dataset.element_type)) { + // eslint-disable-line camelcase + // In case the container empty, click should be handled by the EmptyView. + var container = elementor.getContainer(closest.dataset.id); + if (container.view.isEmpty()) { + return true; + } + + // If not empty, open it. + model = container.model; + view = container.view; + } + e.stopPropagation(); + $e.run('panel/editor/open', { + model: model, + view: view + }); + }; + return events; + } + + /** + * Function renderHTML(). + * + * The `renderHTML()` method is overridden as it causes redundant renders when removing focus from any nested element. + * This is because the original `renderHTML()` method sets `editModel.renderOnLeave = true;`. + */ + }, { + key: "renderHTML", + value: function renderHTML() { + var templateType = this.getTemplateType(), + editModel = this.getEditModel(); + if ('js' === templateType) { + editModel.setHtmlCache(); + this.render(); + } else { + editModel.renderRemoteServer(); + } + } + }]); + return View; +}($e.components.get('nested-elements/nested-repeater').exports.NestedViewBase); +exports.View = View; +var _default = View; +exports["default"] = _default; + +/***/ }), + +/***/ "../node_modules/@babel/runtime/helpers/assertThisInitialized.js": +/*!***********************************************************************!*\ + !*** ../node_modules/@babel/runtime/helpers/assertThisInitialized.js ***! + \***********************************************************************/ +/***/ ((module) => { + +function _assertThisInitialized(self) { + if (self === void 0) { + throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); + } + return self; +} +module.exports = _assertThisInitialized, module.exports.__esModule = true, module.exports["default"] = module.exports; + +/***/ }), + +/***/ "../node_modules/@babel/runtime/helpers/get.js": +/*!*****************************************************!*\ + !*** ../node_modules/@babel/runtime/helpers/get.js ***! + \*****************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var superPropBase = __webpack_require__(/*! ./superPropBase.js */ "../node_modules/@babel/runtime/helpers/superPropBase.js"); +function _get() { + if (typeof Reflect !== "undefined" && Reflect.get) { + module.exports = _get = Reflect.get.bind(), module.exports.__esModule = true, module.exports["default"] = module.exports; + } else { + module.exports = _get = function _get(target, property, receiver) { + var base = superPropBase(target, property); + if (!base) return; + var desc = Object.getOwnPropertyDescriptor(base, property); + if (desc.get) { + return desc.get.call(arguments.length < 3 ? target : receiver); + } + return desc.value; + }, module.exports.__esModule = true, module.exports["default"] = module.exports; + } + return _get.apply(this, arguments); +} +module.exports = _get, module.exports.__esModule = true, module.exports["default"] = module.exports; + +/***/ }), + +/***/ "../node_modules/@babel/runtime/helpers/getPrototypeOf.js": +/*!****************************************************************!*\ + !*** ../node_modules/@babel/runtime/helpers/getPrototypeOf.js ***! + \****************************************************************/ +/***/ ((module) => { + +function _getPrototypeOf(o) { + module.exports = _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { + return o.__proto__ || Object.getPrototypeOf(o); + }, module.exports.__esModule = true, module.exports["default"] = module.exports; + return _getPrototypeOf(o); +} +module.exports = _getPrototypeOf, module.exports.__esModule = true, module.exports["default"] = module.exports; + +/***/ }), + +/***/ "../node_modules/@babel/runtime/helpers/inherits.js": +/*!**********************************************************!*\ + !*** ../node_modules/@babel/runtime/helpers/inherits.js ***! + \**********************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var setPrototypeOf = __webpack_require__(/*! ./setPrototypeOf.js */ "../node_modules/@babel/runtime/helpers/setPrototypeOf.js"); +function _inherits(subClass, superClass) { + if (typeof superClass !== "function" && superClass !== null) { + throw new TypeError("Super expression must either be null or a function"); + } + subClass.prototype = Object.create(superClass && superClass.prototype, { + constructor: { + value: subClass, + writable: true, + configurable: true + } + }); + Object.defineProperty(subClass, "prototype", { + writable: false + }); + if (superClass) setPrototypeOf(subClass, superClass); +} +module.exports = _inherits, module.exports.__esModule = true, module.exports["default"] = module.exports; + +/***/ }), + +/***/ "../node_modules/@babel/runtime/helpers/possibleConstructorReturn.js": +/*!***************************************************************************!*\ + !*** ../node_modules/@babel/runtime/helpers/possibleConstructorReturn.js ***! + \***************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var _typeof = (__webpack_require__(/*! ./typeof.js */ "../node_modules/@babel/runtime/helpers/typeof.js")["default"]); +var assertThisInitialized = __webpack_require__(/*! ./assertThisInitialized.js */ "../node_modules/@babel/runtime/helpers/assertThisInitialized.js"); +function _possibleConstructorReturn(self, call) { + if (call && (_typeof(call) === "object" || typeof call === "function")) { + return call; + } else if (call !== void 0) { + throw new TypeError("Derived constructors may only return object or undefined"); + } + return assertThisInitialized(self); +} +module.exports = _possibleConstructorReturn, module.exports.__esModule = true, module.exports["default"] = module.exports; + +/***/ }), + +/***/ "../node_modules/@babel/runtime/helpers/setPrototypeOf.js": +/*!****************************************************************!*\ + !*** ../node_modules/@babel/runtime/helpers/setPrototypeOf.js ***! + \****************************************************************/ +/***/ ((module) => { + +function _setPrototypeOf(o, p) { + module.exports = _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { + o.__proto__ = p; + return o; + }, module.exports.__esModule = true, module.exports["default"] = module.exports; + return _setPrototypeOf(o, p); +} +module.exports = _setPrototypeOf, module.exports.__esModule = true, module.exports["default"] = module.exports; + +/***/ }), + +/***/ "../node_modules/@babel/runtime/helpers/superPropBase.js": +/*!***************************************************************!*\ + !*** ../node_modules/@babel/runtime/helpers/superPropBase.js ***! + \***************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var getPrototypeOf = __webpack_require__(/*! ./getPrototypeOf.js */ "../node_modules/@babel/runtime/helpers/getPrototypeOf.js"); +function _superPropBase(object, property) { + while (!Object.prototype.hasOwnProperty.call(object, property)) { + object = getPrototypeOf(object); + if (object === null) break; + } + return object; +} +module.exports = _superPropBase, module.exports.__esModule = true, module.exports["default"] = module.exports; + +/***/ }) + +}]); +//# sourceMappingURL=46e544e5863270fc32f2.bundle.js.map \ No newline at end of file diff --git a/wp-content/plugins/elementor/assets/js/4fdaa70e951ad90db2f2.bundle.min.js b/wp-content/plugins/elementor/assets/js/4fdaa70e951ad90db2f2.bundle.min.js new file mode 100644 index 0000000..461e1b1 --- /dev/null +++ b/wp-content/plugins/elementor/assets/js/4fdaa70e951ad90db2f2.bundle.min.js @@ -0,0 +1,2 @@ +/*! elementor - v3.20.0 - 26-03-2024 */ +(self.webpackChunkelementor=self.webpackChunkelementor||[]).push([[16,145],{93016:(e,t,r)=>{"use strict";var n=r(73203);Object.defineProperty(t,"__esModule",{value:!0}),t.default=t.NestedElementTypesBase=void 0;var o=n(r(78983)),s=n(r(42081)),a=n(r(58724)),i=n(r(71173)),l=n(r(74910)),u=n(r(67145)),c=n(r(56962));function _createSuper(e){var t=function _isNativeReflectConstruct(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function _createSuperInternal(){var r,n=(0,l.default)(e);if(t){var o=(0,l.default)(this).constructor;r=Reflect.construct(n,arguments,o)}else r=n.apply(this,arguments);return(0,i.default)(this,r)}}var p=function(e){(0,a.default)(NestedElementTypesBase,e);var t=_createSuper(NestedElementTypesBase);function NestedElementTypesBase(){return(0,o.default)(this,NestedElementTypesBase),t.apply(this,arguments)}return(0,s.default)(NestedElementTypesBase,[{key:"getType",value:function getType(){elementorModules.ForceMethodImplementation()}},{key:"getView",value:function getView(){return u.default}},{key:"getEmptyView",value:function getEmptyView(){return c.default}},{key:"getModel",value:function getModel(){return $e.components.get("nested-elements/nested-repeater").exports.NestedModelBase}}]),NestedElementTypesBase}(elementor.modules.elements.types.Base);t.NestedElementTypesBase=p;var f=p;t.default=f},14550:(e,t,r)=>{"use strict";var n=r(38003).__,o=r(23615),s=r(7501);Object.defineProperty(t,"__esModule",{value:!0}),t.default=AddSectionArea;var a=function _interopRequireWildcard(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!==s(e)&&"function"!=typeof e)return{default:e};var r=_getRequireWildcardCache(t);if(r&&r.has(e))return r.get(e);var n={},o=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var a in e)if("default"!==a&&Object.prototype.hasOwnProperty.call(e,a)){var i=o?Object.getOwnPropertyDescriptor(e,a):null;i&&(i.get||i.set)?Object.defineProperty(n,a,i):n[a]=e[a]}n.default=e,r&&r.set(e,n);return n}(r(87363));function _getRequireWildcardCache(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,r=new WeakMap;return(_getRequireWildcardCache=function _getRequireWildcardCache(e){return e?r:t})(e)}function AddSectionArea(e){var t=(0,a.useRef)(),r=elementor.helpers.container;return(0,a.useEffect)((function(){var r=jQuery(t.current),n=e.container.view.getDroppableOptions();return n.placeholder=!1,n.items="> .elementor-add-section-inner",n.hasDraggingOnChildClass="elementor-dragging-on-child",r.html5Droppable(n),function(){r.html5Droppable("destroy")}}),[]),a.default.createElement("div",{className:"elementor-add-section",onClick:function onClick(){return r.openEditMode(e.container)},ref:t,role:"button",tabIndex:"0"},a.default.createElement("div",{className:"elementor-add-section-inner"},a.default.createElement("div",{className:"e-view elementor-add-new-section"},a.default.createElement("div",{className:"elementor-add-section-area-button elementor-add-section-button",onClick:function onClick(){return e.setIsRenderPresets(!0)},title:n("Add new container","elementor"),role:"button",tabIndex:"0"},a.default.createElement("i",{className:"eicon-plus"})),a.default.createElement("div",{className:"elementor-add-section-drag-title"},n("Drag widgets here.","elementor")))))}AddSectionArea.propTypes={container:o.object.isRequired,setIsRenderPresets:o.func.isRequired}},56962:(e,t,r)=>{"use strict";var n=r(23615),o=r(73203),s=r(7501);Object.defineProperty(t,"__esModule",{value:!0}),t.default=Empty;var a=function _interopRequireWildcard(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!==s(e)&&"function"!=typeof e)return{default:e};var r=_getRequireWildcardCache(t);if(r&&r.has(e))return r.get(e);var n={},o=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var a in e)if("default"!==a&&Object.prototype.hasOwnProperty.call(e,a)){var i=o?Object.getOwnPropertyDescriptor(e,a):null;i&&(i.get||i.set)?Object.defineProperty(n,a,i):n[a]=e[a]}n.default=e,r&&r.set(e,n);return n}(r(87363)),i=o(r(93231)),l=o(r(40131)),u=o(r(14550)),c=o(r(12113));function _getRequireWildcardCache(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,r=new WeakMap;return(_getRequireWildcardCache=function _getRequireWildcardCache(e){return e?r:t})(e)}function ownKeys(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function _objectSpread(e){for(var t=1;t{"use strict";var n=r(38003).__,o=r(23615),s=r(73203);Object.defineProperty(t,"__esModule",{value:!0}),t.default=SelectPreset;var a=s(r(87363));function SelectPreset(e){var t=elementor.helpers.container;return a.default.createElement(a.default.Fragment,null,a.default.createElement("div",{className:"elementor-add-section-close"},a.default.createElement("i",{onClick:function onClick(){return e.setIsRenderPresets(!1)},className:"eicon-close","aria-hidden":"true"}),a.default.createElement("span",{className:"elementor-screen-only"},n("Close","elementor"))),a.default.createElement("div",{className:"e-view e-con-select-preset"},a.default.createElement("div",{className:"e-con-select-preset__title"},n("Select your Structure","elementor")),a.default.createElement("div",{className:"e-con-select-preset__list"},elementor.presetsFactory.getContainerPresets().map((function(r){return a.default.createElement("div",{onClick:function onClick(){return function onPresetSelected(e,r){t.createContainerFromPreset(e,r,{createWrapper:!1})}(r,e.container)},key:r,className:"e-con-preset","data-preset":r,dangerouslySetInnerHTML:{__html:elementor.presetsFactory.generateContainerPreset(r)},role:"button",tabIndex:"0"})})))))}SelectPreset.propTypes={container:o.object.isRequired,setIsRenderPresets:o.func.isRequired}},67145:(e,t,r)=>{"use strict";var n=r(73203);Object.defineProperty(t,"__esModule",{value:!0}),t.default=t.View=void 0;var o=n(r(78983)),s=n(r(42081)),a=n(r(51121)),i=n(r(58724)),l=n(r(71173)),u=n(r(74910));function _createSuper(e){var t=function _isNativeReflectConstruct(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function _createSuperInternal(){var r,n=(0,u.default)(e);if(t){var o=(0,u.default)(this).constructor;r=Reflect.construct(n,arguments,o)}else r=n.apply(this,arguments);return(0,l.default)(this,r)}}var c=function(e){(0,i.default)(View,e);var t=_createSuper(View);function View(){return(0,o.default)(this,View),t.apply(this,arguments)}return(0,s.default)(View,[{key:"events",value:function events(){var e=this,events=(0,a.default)((0,u.default)(View.prototype),"events",this).call(this);return events.click=function(t){if(elementor.documents.currentDocument.id.toString()===t.target.closest(".elementor").dataset.elementorId){var r=t.target.closest(".elementor-element"),n=e.options.model,o=e;if(["container","widget"].includes(null==r?void 0:r.dataset.element_type)){var s=elementor.getContainer(r.dataset.id);if(s.view.isEmpty())return!0;n=s.model,o=s.view}t.stopPropagation(),$e.run("panel/editor/open",{model:n,view:o})}},events}},{key:"renderHTML",value:function renderHTML(){var e=this.getTemplateType(),t=this.getEditModel();"js"===e?(t.setHtmlCache(),this.render()):t.renderRemoteServer()}}]),View}($e.components.get("nested-elements/nested-repeater").exports.NestedViewBase);t.View=c;var p=c;t.default=p},58772:(e,t,r)=>{"use strict";var n=r(90331);function emptyFunction(){}function emptyFunctionWithReset(){}emptyFunctionWithReset.resetWarningCache=emptyFunction,e.exports=function(){function shim(e,t,r,o,s,a){if(a!==n){var i=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw i.name="Invariant Violation",i}}function getShim(){return shim}shim.isRequired=shim;var e={array:shim,bigint:shim,bool:shim,func:shim,number:shim,object:shim,string:shim,symbol:shim,any:shim,arrayOf:getShim,element:shim,elementType:shim,instanceOf:getShim,node:shim,objectOf:getShim,oneOf:getShim,oneOfType:getShim,shape:getShim,exact:getShim,checkPropTypes:emptyFunctionWithReset,resetWarningCache:emptyFunction};return e.PropTypes=e,e}},23615:(e,t,r)=>{e.exports=r(58772)()},90331:e=>{"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},98106:e=>{e.exports=function _arrayLikeToArray(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r{e.exports=function _arrayWithHoles(e){if(Array.isArray(e))return e},e.exports.__esModule=!0,e.exports.default=e.exports},77266:e=>{e.exports=function _assertThisInitialized(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e},e.exports.__esModule=!0,e.exports.default=e.exports},93231:(e,t,r)=>{var n=r(74040);e.exports=function _defineProperty(e,t,r){return(t=n(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e},e.exports.__esModule=!0,e.exports.default=e.exports},51121:(e,t,r)=>{var n=r(79443);function _get(){return"undefined"!=typeof Reflect&&Reflect.get?(e.exports=_get=Reflect.get.bind(),e.exports.__esModule=!0,e.exports.default=e.exports):(e.exports=_get=function _get(e,t,r){var o=n(e,t);if(o){var s=Object.getOwnPropertyDescriptor(o,t);return s.get?s.get.call(arguments.length<3?e:r):s.value}},e.exports.__esModule=!0,e.exports.default=e.exports),_get.apply(this,arguments)}e.exports=_get,e.exports.__esModule=!0,e.exports.default=e.exports},74910:e=>{function _getPrototypeOf(t){return e.exports=_getPrototypeOf=Object.setPrototypeOf?Object.getPrototypeOf.bind():function _getPrototypeOf(e){return e.__proto__||Object.getPrototypeOf(e)},e.exports.__esModule=!0,e.exports.default=e.exports,_getPrototypeOf(t)}e.exports=_getPrototypeOf,e.exports.__esModule=!0,e.exports.default=e.exports},58724:(e,t,r)=>{var n=r(96196);e.exports=function _inherits(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&n(e,t)},e.exports.__esModule=!0,e.exports.default=e.exports},40608:e=>{e.exports=function _iterableToArrayLimit(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,o,s,a,i=[],l=!0,u=!1;try{if(s=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;l=!1}else for(;!(l=(n=s.call(r)).done)&&(i.push(n.value),i.length!==t);l=!0);}catch(e){u=!0,o=e}finally{try{if(!l&&null!=r.return&&(a=r.return(),Object(a)!==a))return}finally{if(u)throw o}}return i}},e.exports.__esModule=!0,e.exports.default=e.exports},56894:e=>{e.exports=function _nonIterableRest(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")},e.exports.__esModule=!0,e.exports.default=e.exports},71173:(e,t,r)=>{var n=r(7501).default,o=r(77266);e.exports=function _possibleConstructorReturn(e,t){if(t&&("object"===n(t)||"function"==typeof t))return t;if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined");return o(e)},e.exports.__esModule=!0,e.exports.default=e.exports},96196:e=>{function _setPrototypeOf(t,r){return e.exports=_setPrototypeOf=Object.setPrototypeOf?Object.setPrototypeOf.bind():function _setPrototypeOf(e,t){return e.__proto__=t,e},e.exports.__esModule=!0,e.exports.default=e.exports,_setPrototypeOf(t,r)}e.exports=_setPrototypeOf,e.exports.__esModule=!0,e.exports.default=e.exports},40131:(e,t,r)=>{var n=r(17358),o=r(40608),s=r(35068),a=r(56894);e.exports=function _slicedToArray(e,t){return n(e)||o(e,t)||s(e,t)||a()},e.exports.__esModule=!0,e.exports.default=e.exports},79443:(e,t,r)=>{var n=r(74910);e.exports=function _superPropBase(e,t){for(;!Object.prototype.hasOwnProperty.call(e,t)&&null!==(e=n(e)););return e},e.exports.__esModule=!0,e.exports.default=e.exports},35068:(e,t,r)=>{var n=r(98106);e.exports=function _unsupportedIterableToArray(e,t){if(e){if("string"==typeof e)return n(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?n(e,t):void 0}},e.exports.__esModule=!0,e.exports.default=e.exports}}]); \ No newline at end of file diff --git a/wp-content/plugins/elementor/assets/js/711ef4fb95afdad77d95.bundle.min.js b/wp-content/plugins/elementor/assets/js/711ef4fb95afdad77d95.bundle.min.js new file mode 100644 index 0000000..d6c8ed3 --- /dev/null +++ b/wp-content/plugins/elementor/assets/js/711ef4fb95afdad77d95.bundle.min.js @@ -0,0 +1,2 @@ +/*! elementor - v3.20.0 - 26-03-2024 */ +(self.webpackChunkelementor=self.webpackChunkelementor||[]).push([[130],{87130:(e,t,r)=>{"use strict";var o=r(73203);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var n=o(r(42081)),u=o(r(78983)),a=o(r(50931)),s=(0,n.default)((function Module(){(0,u.default)(this,Module),elementor.elementsManager.registerElementType(new a.default)}));t.default=s},50931:(e,t,r)=>{"use strict";var o=r(73203);Object.defineProperty(t,"__esModule",{value:!0}),t.default=t.NestedTabs=void 0;var n=o(r(78983)),u=o(r(42081)),a=o(r(58724)),s=o(r(71173)),i=o(r(74910)),l=o(r(25381));function _createSuper(e){var t=function _isNativeReflectConstruct(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function _createSuperInternal(){var r,o=(0,i.default)(e);if(t){var n=(0,i.default)(this).constructor;r=Reflect.construct(o,arguments,n)}else r=o.apply(this,arguments);return(0,s.default)(this,r)}}var f=function(e){(0,a.default)(NestedTabs,e);var t=_createSuper(NestedTabs);function NestedTabs(){return(0,n.default)(this,NestedTabs),t.apply(this,arguments)}return(0,u.default)(NestedTabs,[{key:"getType",value:function getType(){return"nested-tabs"}},{key:"getView",value:function getView(){return l.default}}]),NestedTabs}(elementor.modules.elements.types.NestedElementBase);t.NestedTabs=f;var p=f;t.default=p},25381:(e,t,r)=>{"use strict";var o=r(73203);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var n=o(r(78983)),u=o(r(42081)),a=o(r(58724)),s=o(r(71173)),i=o(r(74910));function _createSuper(e){var t=function _isNativeReflectConstruct(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function _createSuperInternal(){var r,o=(0,i.default)(e);if(t){var n=(0,i.default)(this).constructor;r=Reflect.construct(o,arguments,n)}else r=o.apply(this,arguments);return(0,s.default)(this,r)}}var l=function(e){(0,a.default)(View,e);var t=_createSuper(View);function View(){return(0,n.default)(this,View),t.apply(this,arguments)}return(0,u.default)(View,[{key:"filter",value:function filter(e,t){return e.attributes.dataIndex=t+1,!0}},{key:"onAddChild",value:function onAddChild(e){var t,r,o=null===(t=e._parent.$el.find(".e-n-tabs")[0])||void 0===t?void 0:t.dataset.widgetNumber,n=e.model.attributes.dataIndex,u=null===(r=e._parent.$el.find('.e-n-tab-title[data-tab-index="'.concat(n,'"]')))||void 0===r?void 0:r.attr("id");e.$el.attr({id:"e-n-tab-content-"+o+n,role:"tabpanel","aria-labelledby":u,"data-tab-index":n,style:"--n-tabs-title-order: "+n+";"}),1===n&&e.$el.addClass("e-active")}}]),View}($e.components.get("nested-elements").exports.NestedView);t.default=l},77266:e=>{e.exports=function _assertThisInitialized(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e},e.exports.__esModule=!0,e.exports.default=e.exports},78983:e=>{e.exports=function _classCallCheck(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")},e.exports.__esModule=!0,e.exports.default=e.exports},42081:(e,t,r)=>{var o=r(74040);function _defineProperties(e,t){for(var r=0;r{function _getPrototypeOf(t){return e.exports=_getPrototypeOf=Object.setPrototypeOf?Object.getPrototypeOf.bind():function _getPrototypeOf(e){return e.__proto__||Object.getPrototypeOf(e)},e.exports.__esModule=!0,e.exports.default=e.exports,_getPrototypeOf(t)}e.exports=_getPrototypeOf,e.exports.__esModule=!0,e.exports.default=e.exports},58724:(e,t,r)=>{var o=r(96196);e.exports=function _inherits(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&o(e,t)},e.exports.__esModule=!0,e.exports.default=e.exports},71173:(e,t,r)=>{var o=r(7501).default,n=r(77266);e.exports=function _possibleConstructorReturn(e,t){if(t&&("object"===o(t)||"function"==typeof t))return t;if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined");return n(e)},e.exports.__esModule=!0,e.exports.default=e.exports},96196:e=>{function _setPrototypeOf(t,r){return e.exports=_setPrototypeOf=Object.setPrototypeOf?Object.setPrototypeOf.bind():function _setPrototypeOf(e,t){return e.__proto__=t,e},e.exports.__esModule=!0,e.exports.default=e.exports,_setPrototypeOf(t,r)}e.exports=_setPrototypeOf,e.exports.__esModule=!0,e.exports.default=e.exports},56027:(e,t,r)=>{var o=r(7501).default;e.exports=function toPrimitive(e,t){if("object"!=o(e)||!e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var n=r.call(e,t||"default");if("object"!=o(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)},e.exports.__esModule=!0,e.exports.default=e.exports},74040:(e,t,r)=>{var o=r(7501).default,n=r(56027);e.exports=function toPropertyKey(e){var t=n(e,"string");return"symbol"==o(t)?t:String(t)},e.exports.__esModule=!0,e.exports.default=e.exports}}]); \ No newline at end of file diff --git a/wp-content/plugins/elementor/assets/js/79d91b3af4aa6bc1c967.bundle.min.js b/wp-content/plugins/elementor/assets/js/79d91b3af4aa6bc1c967.bundle.min.js new file mode 100644 index 0000000..e4e7fe5 --- /dev/null +++ b/wp-content/plugins/elementor/assets/js/79d91b3af4aa6bc1c967.bundle.min.js @@ -0,0 +1,2 @@ +/*! elementor - v3.20.0 - 26-03-2024 */ +(self.webpackChunkelementor=self.webpackChunkelementor||[]).push([[648],{20923:(e,t,r)=>{"use strict";var n=r(73203);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var o=n(r(78983)),a=n(r(42081)),u=n(r(51121)),i=n(r(58724)),c=n(r(71173)),l=n(r(74910)),s=n(r(16197));function _createSuper(e){var t=function _isNativeReflectConstruct(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function _createSuperInternal(){var r,n=(0,l.default)(e);if(t){var o=(0,l.default)(this).constructor;r=Reflect.construct(n,arguments,o)}else r=n.apply(this,arguments);return(0,c.default)(this,r)}}var f=function(e){(0,i.default)(Component,e);var t=_createSuper(Component);function Component(){return(0,o.default)(this,Component),t.apply(this,arguments)}return(0,a.default)(Component,[{key:"getNamespace",value:function getNamespace(){return"nested-elements"}},{key:"registerAPI",value:function registerAPI(){$e.components.register(new s.default),(0,u.default)((0,l.default)(Component.prototype),"registerAPI",this).call(this)}}]),Component}($e.modules.ComponentBase);t.default=f},9648:(e,t,r)=>{"use strict";var n=r(73203);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var o=n(r(42081)),a=n(r(78983)),u=n(r(20923)),i=(0,o.default)((function NestedElementsModule(){(0,a.default)(this,NestedElementsModule),this.component=$e.components.register(new u.default)}));t.default=i},16197:(e,t,r)=>{"use strict";var n=r(73203),o=r(7501);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var a=n(r(78983)),u=n(r(42081)),i=n(r(77266)),c=n(r(51121)),l=n(r(58724)),s=n(r(71173)),f=n(r(74910)),d=n(r(93231)),p=n(r(9963)),v=n(r(56467)),y=n(r(58415)),h=function _interopRequireWildcard(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!==o(e)&&"function"!=typeof e)return{default:e};var r=_getRequireWildcardCache(t);if(r&&r.has(e))return r.get(e);var n={},a=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var u in e)if("default"!==u&&Object.prototype.hasOwnProperty.call(e,u)){var i=a?Object.getOwnPropertyDescriptor(e,u):null;i&&(i.get||i.set)?Object.defineProperty(n,u,i):n[u]=e[u]}n.default=e,r&&r.set(e,n);return n}(r(85212));function _getRequireWildcardCache(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,r=new WeakMap;return(_getRequireWildcardCache=function _getRequireWildcardCache(e){return e?r:t})(e)}function _createSuper(e){var t=function _isNativeReflectConstruct(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function _createSuperInternal(){var r,n=(0,f.default)(e);if(t){var o=(0,f.default)(this).constructor;r=Reflect.construct(n,arguments,o)}else r=n.apply(this,arguments);return(0,s.default)(this,r)}}var m=function(e){(0,l.default)(Component,e);var t=_createSuper(Component);function Component(){var e;(0,a.default)(this,Component);for(var r=arguments.length,n=new Array(r),o=0;o{"use strict";var n=r(73203);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var o=n(r(93231)),a=n(r(78983)),u=n(r(42081)),i=n(r(51121)),c=n(r(58724)),l=n(r(71173)),s=n(r(74910)),f=r(32853);function _createSuper(e){var t=function _isNativeReflectConstruct(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function _createSuperInternal(){var r,n=(0,s.default)(e);if(t){var o=(0,s.default)(this).constructor;r=Reflect.construct(n,arguments,o)}else r=n.apply(this,arguments);return(0,l.default)(this,r)}}var d=function(e){(0,c.default)(Repeater,e);var t=_createSuper(Repeater);function Repeater(){return(0,a.default)(this,Repeater),t.apply(this,arguments)}return(0,u.default)(Repeater,[{key:"className",value:function className(){return(0,i.default)((0,s.default)(Repeater.prototype),"className",this).call(this).replace("nested-elements-repeater","repeater")}},{key:"getDefaults",value:function getDefaults(){var e=this.options.container,t=e.model.config.defaults,r=e.children.length+1;return(0,o.default)({_id:""},t.repeater_title_setting,(0,f.extractNestedItemTitle)(e,r))}},{key:"onChildviewClickDuplicate",value:function onChildviewClickDuplicate(e){$e.run("document/repeater/duplicate",{container:this.options.container,name:this.model.get("name"),index:e._index}),this.toggleMinRowsClass()}},{key:"updateActiveRow",value:function updateActiveRow(){this.currentEditableChild&&$e.run("document/repeater/select",{container:this.container,index:this.currentEditableChild.itemIndex,options:{useHistory:!1}})}}]),Repeater}(elementor.modules.controls.Repeater);t.default=d},21355:(e,t,r)=>{"use strict";var n=r(73203);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var o=n(r(78983)),a=n(r(42081)),u=n(r(58724)),i=n(r(71173)),c=n(r(74910)),l=r(32853);function _createSuper(e){var t=function _isNativeReflectConstruct(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function _createSuperInternal(){var r,n=(0,c.default)(e);if(t){var o=(0,c.default)(this).constructor;r=Reflect.construct(n,arguments,o)}else r=n.apply(this,arguments);return(0,i.default)(this,r)}}var s=function(e){(0,u.default)(Base,e);var t=_createSuper(Base);function Base(){return(0,o.default)(this,Base),t.apply(this,arguments)}return(0,a.default)(Base,[{key:"getContainerType",value:function getContainerType(){return"widget"}},{key:"getConditions",value:function getConditions(e){return(0,l.isWidgetSupportNesting)(e.container.model.get("widgetType"))}}]),Base}($e.modules.hookData.After);t.default=s},13591:(e,t,r)=>{"use strict";var n=r(73203);Object.defineProperty(t,"__esModule",{value:!0}),t.default=t.NestedRepeaterDuplicateContainer=void 0;var o=n(r(78983)),a=n(r(42081)),u=n(r(58724)),i=n(r(71173)),c=n(r(74910)),l=n(r(21355)),s=r(32853);function _createSuper(e){var t=function _isNativeReflectConstruct(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function _createSuperInternal(){var r,n=(0,c.default)(e);if(t){var o=(0,c.default)(this).constructor;r=Reflect.construct(n,arguments,o)}else r=n.apply(this,arguments);return(0,i.default)(this,r)}}var f=function(e){(0,u.default)(NestedRepeaterDuplicateContainer,e);var t=_createSuper(NestedRepeaterDuplicateContainer);function NestedRepeaterDuplicateContainer(){return(0,o.default)(this,NestedRepeaterDuplicateContainer),t.apply(this,arguments)}return(0,a.default)(NestedRepeaterDuplicateContainer,[{key:"getId",value:function getId(){return"document/repeater/duplicate--nested-repeater-duplicate-container"}},{key:"getCommand",value:function getCommand(){return"document/repeater/duplicate"}},{key:"apply",value:function apply(e){var t=e.container,r=e.index;$e.run("document/elements/duplicate",{container:(0,s.findChildContainerOrFail)(t,r),options:{edit:!1}}),t.render()}}]),NestedRepeaterDuplicateContainer}(l.default);t.NestedRepeaterDuplicateContainer=f;var d=f;t.default=d},25048:(e,t,r)=>{"use strict";var n=r(73203);Object.defineProperty(t,"__esModule",{value:!0}),t.default=t.NestedRepeaterCreateContainer=void 0;var o=n(r(78983)),a=n(r(42081)),u=n(r(51121)),i=n(r(58724)),c=n(r(71173)),l=n(r(74910)),s=n(r(21355)),f=r(32853);function _createSuper(e){var t=function _isNativeReflectConstruct(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function _createSuperInternal(){var r,n=(0,l.default)(e);if(t){var o=(0,l.default)(this).constructor;r=Reflect.construct(n,arguments,o)}else r=n.apply(this,arguments);return(0,c.default)(this,r)}}var d=function(e){(0,i.default)(NestedRepeaterCreateContainer,e);var t=_createSuper(NestedRepeaterCreateContainer);function NestedRepeaterCreateContainer(){return(0,o.default)(this,NestedRepeaterCreateContainer),t.apply(this,arguments)}return(0,a.default)(NestedRepeaterCreateContainer,[{key:"getId",value:function getId(){return"document/repeater/insert--nested-repeater-create-container"}},{key:"getCommand",value:function getCommand(){return"document/repeater/insert"}},{key:"getConditions",value:function getConditions(e){var t=$e.commands.isCurrentFirstTrace(this.getCommand());return(0,u.default)((0,l.default)(NestedRepeaterCreateContainer.prototype),"getConditions",this).call(this,e)&&t}},{key:"apply",value:function apply(e){var t=e.container,r=e.name,n=t.repeaters[r].children.length;$e.run("document/elements/create",{container:t,model:{elType:"container",isLocked:!0,_title:(0,f.extractNestedItemTitle)(t,n)},options:{edit:!1}})}}]),NestedRepeaterCreateContainer}(s.default);t.NestedRepeaterCreateContainer=d;var p=d;t.default=p},45096:(e,t,r)=>{"use strict";var n=r(73203);Object.defineProperty(t,"__esModule",{value:!0}),t.default=t.NestedRepeaterMoveContainer=void 0;var o=n(r(78983)),a=n(r(42081)),u=n(r(58724)),i=n(r(71173)),c=n(r(74910)),l=n(r(21355)),s=r(32853);function _createSuper(e){var t=function _isNativeReflectConstruct(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function _createSuperInternal(){var r,n=(0,c.default)(e);if(t){var o=(0,c.default)(this).constructor;r=Reflect.construct(n,arguments,o)}else r=n.apply(this,arguments);return(0,i.default)(this,r)}}var f=function(e){(0,u.default)(NestedRepeaterMoveContainer,e);var t=_createSuper(NestedRepeaterMoveContainer);function NestedRepeaterMoveContainer(){return(0,o.default)(this,NestedRepeaterMoveContainer),t.apply(this,arguments)}return(0,a.default)(NestedRepeaterMoveContainer,[{key:"getId",value:function getId(){return"document/repeater/move--nested-repeater-move-container"}},{key:"getCommand",value:function getCommand(){return"document/repeater/move"}},{key:"apply",value:function apply(e){var t=e.container,r=e.sourceIndex,n=e.targetIndex;$e.run("document/elements/move",{container:(0,s.findChildContainerOrFail)(t,r),target:t,options:{at:n,edit:!1}})}}]),NestedRepeaterMoveContainer}(l.default);t.NestedRepeaterMoveContainer=f;var d=f;t.default=d},74629:(e,t,r)=>{"use strict";var n=r(73203);Object.defineProperty(t,"__esModule",{value:!0}),t.default=t.NestedRepeaterRemoveContainer=void 0;var o=n(r(78983)),a=n(r(42081)),u=n(r(51121)),i=n(r(58724)),c=n(r(71173)),l=n(r(74910)),s=n(r(21355)),f=r(32853);function _createSuper(e){var t=function _isNativeReflectConstruct(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function _createSuperInternal(){var r,n=(0,l.default)(e);if(t){var o=(0,l.default)(this).constructor;r=Reflect.construct(n,arguments,o)}else r=n.apply(this,arguments);return(0,c.default)(this,r)}}var d=function(e){(0,i.default)(NestedRepeaterRemoveContainer,e);var t=_createSuper(NestedRepeaterRemoveContainer);function NestedRepeaterRemoveContainer(){return(0,o.default)(this,NestedRepeaterRemoveContainer),t.apply(this,arguments)}return(0,a.default)(NestedRepeaterRemoveContainer,[{key:"getId",value:function getId(){return"document/repeater/remove--nested-elements-remove-container"}},{key:"getCommand",value:function getCommand(){return"document/repeater/remove"}},{key:"getConditions",value:function getConditions(e){var t=$e.commands.isCurrentFirstTrace(this.getCommand());return(0,u.default)((0,l.default)(NestedRepeaterRemoveContainer.prototype),"getConditions",this).call(this,e)&&t}},{key:"apply",value:function apply(e){var t=e.container,r=e.index;$e.run("document/elements/delete",{container:(0,f.findChildContainerOrFail)(t,r),force:!0})}}]),NestedRepeaterRemoveContainer}(s.default);t.NestedRepeaterRemoveContainer=d;var p=d;t.default=p},85212:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"NestedRepeaterCreateContainer",{enumerable:!0,get:function get(){return n.NestedRepeaterCreateContainer}}),Object.defineProperty(t,"NestedRepeaterDuplicateContainer",{enumerable:!0,get:function get(){return u.NestedRepeaterDuplicateContainer}}),Object.defineProperty(t,"NestedRepeaterFocusCurrentEditedContainer",{enumerable:!0,get:function get(){return i.NestedRepeaterFocusCurrentEditedContainer}}),Object.defineProperty(t,"NestedRepeaterMoveContainer",{enumerable:!0,get:function get(){return a.NestedRepeaterMoveContainer}}),Object.defineProperty(t,"NestedRepeaterRemoveContainer",{enumerable:!0,get:function get(){return o.NestedRepeaterRemoveContainer}});var n=r(25048),o=r(74629),a=r(45096),u=r(13591),i=r(96313)},96313:(e,t,r)=>{"use strict";var n=r(73203);Object.defineProperty(t,"__esModule",{value:!0}),t.default=t.NestedRepeaterFocusCurrentEditedContainer=void 0;var o=n(r(78983)),a=n(r(42081)),u=n(r(58724)),i=n(r(71173)),c=n(r(74910)),l=r(32853);function _createSuper(e){var t=function _isNativeReflectConstruct(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function _createSuperInternal(){var r,n=(0,c.default)(e);if(t){var o=(0,c.default)(this).constructor;r=Reflect.construct(n,arguments,o)}else r=n.apply(this,arguments);return(0,i.default)(this,r)}}var s=function(e){(0,u.default)(NestedRepeaterFocusCurrentEditedContainer,e);var t=_createSuper(NestedRepeaterFocusCurrentEditedContainer);function NestedRepeaterFocusCurrentEditedContainer(){return(0,o.default)(this,NestedRepeaterFocusCurrentEditedContainer),t.apply(this,arguments)}return(0,a.default)(NestedRepeaterFocusCurrentEditedContainer,[{key:"getCommand",value:function getCommand(){return"panel/editor/open"}},{key:"getId",value:function getId(){return"nested-repeater-focus-current-edited-container"}},{key:"getConditions",value:function getConditions(e){var t;if($e.commands.isCurrentFirstTrace("document/elements/create"))return!1;var r=e.view.container.getParentAncestry();return r.some((function(e){return(0,l.isWidgetSupportNesting)(e.model.get("widgetType"))}))&&(this.navigationMap=this.getNavigationMapForContainers(r.filter((function(e){return"container"===e.type&&"widget"===e.parent.type}))).filter((function(e){return e.index!==e.current}))),null===(t=this.navigationMap)||void 0===t?void 0:t.length}},{key:"apply",value:function apply(){var e=1;this.navigationMap.forEach((function(t){var r=t.container,n=t.index;setTimeout((function(){$e.run("document/repeater/select",{container:r,index:n++,options:{useHistory:!1}})}),250*e),++e}))}},{key:"getNavigationMapForContainers",value:function getNavigationMapForContainers(e){return e.map((function(e){return{current:e.parent.model.get("editSettings").get("activeItemIndex"),container:e.parent,index:e.parent.children.indexOf(e)+1}})).reverse()}}]),NestedRepeaterFocusCurrentEditedContainer}($e.modules.hookUI.After);t.NestedRepeaterFocusCurrentEditedContainer=s;var f=s;t.default=f},9963:(e,t,r)=>{"use strict";var n=r(73203);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var o=n(r(78983)),a=n(r(42081)),u=n(r(51121)),i=n(r(58724)),c=n(r(71173)),l=n(r(74910)),s=r(32853);function _createSuper(e){var t=function _isNativeReflectConstruct(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function _createSuperInternal(){var r,n=(0,l.default)(e);if(t){var o=(0,l.default)(this).constructor;r=Reflect.construct(n,arguments,o)}else r=n.apply(this,arguments);return(0,c.default)(this,r)}}var f=function(e){(0,i.default)(NestedModelBase,e);var t=_createSuper(NestedModelBase);function NestedModelBase(){return(0,o.default)(this,NestedModelBase),t.apply(this,arguments)}return(0,a.default)(NestedModelBase,[{key:"initialize",value:function initialize(e){this.config=elementor.widgetsCache[e.widgetType],this.set("supportRepeaterChildren",!0),0===this.get("elements").length&&$e.commands.currentTrace.includes("document/elements/create")&&this.onElementCreate(),(0,u.default)((0,l.default)(NestedModelBase.prototype),"initialize",this).call(this,e)}},{key:"isValidChild",value:function isValidChild(e){var t=this.get("elType");return"container"===e.get("elType")&&"widget"===t&&(0,s.isWidgetSupportNesting)(this.get("widgetType"))&&e.get("isLocked")}},{key:"getDefaultChildren",value:function getDefaultChildren(){var e=this.config.defaults,t=[];return e.elements.forEach((function(e){e.id=elementorCommon.helpers.getUniqueId(),e.settings=e.settings||{},e.elements=e.elements||[],e.isLocked=!0,t.push(e)})),t}},{key:"onElementCreate",value:function onElementCreate(){this.set("elements",this.getDefaultChildren())}}]),NestedModelBase}(elementor.modules.elements.models.Element);t.default=f},56467:(e,t,r)=>{"use strict";var n=r(73203);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var o=n(r(78983)),a=n(r(42081)),u=n(r(51121)),i=n(r(58724)),c=n(r(71173)),l=n(r(74910));function _createSuper(e){var t=function _isNativeReflectConstruct(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function _createSuperInternal(){var r,n=(0,l.default)(e);if(t){var o=(0,l.default)(this).constructor;r=Reflect.construct(n,arguments,o)}else r=n.apply(this,arguments);return(0,c.default)(this,r)}}var s=function(e){(0,i.default)(NestedViewBase,e);var t=_createSuper(NestedViewBase);function NestedViewBase(){return(0,o.default)(this,NestedViewBase),t.apply(this,arguments)}return(0,a.default)(NestedViewBase,[{key:"getChildViewContainer",value:function getChildViewContainer(e,t){return this.model.config.defaults.elements_placeholder_selector?e.$el.find(this.model.config.defaults.elements_placeholder_selector):(0,u.default)((0,l.default)(NestedViewBase.prototype),"getChildViewContainer",this).call(this,e,t)}},{key:"getChildType",value:function getChildType(){return["container"]}},{key:"onRender",value:function onRender(){(0,u.default)((0,l.default)(NestedViewBase.prototype),"onRender",this).call(this),this.normalizeAttributes()}}]),NestedViewBase}(elementor.modules.elements.views.BaseWidget);t.default=s},32853:(e,t,r)=>{"use strict";var n=r(38003).sprintf;Object.defineProperty(t,"__esModule",{value:!0}),t.extractNestedItemTitle=function extractNestedItemTitle(e,t){var r=e.view.model.config.defaults.elements_title;return n(r,t)},t.findChildContainerOrFail=function findChildContainerOrFail(e,t){var r=e.view.children.findByIndex(t);if(!r)throw new Error("Child container was not found for the current repeater item.");return r.getContainer()},t.isWidgetSupportNesting=function isWidgetSupportNesting(e){var t=elementor.widgetsCache[e];if(!t)return!1;return t.support_nesting}},77266:e=>{e.exports=function _assertThisInitialized(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e},e.exports.__esModule=!0,e.exports.default=e.exports},93231:(e,t,r)=>{var n=r(74040);e.exports=function _defineProperty(e,t,r){return(t=n(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e},e.exports.__esModule=!0,e.exports.default=e.exports},51121:(e,t,r)=>{var n=r(79443);function _get(){return"undefined"!=typeof Reflect&&Reflect.get?(e.exports=_get=Reflect.get.bind(),e.exports.__esModule=!0,e.exports.default=e.exports):(e.exports=_get=function _get(e,t,r){var o=n(e,t);if(o){var a=Object.getOwnPropertyDescriptor(o,t);return a.get?a.get.call(arguments.length<3?e:r):a.value}},e.exports.__esModule=!0,e.exports.default=e.exports),_get.apply(this,arguments)}e.exports=_get,e.exports.__esModule=!0,e.exports.default=e.exports},74910:e=>{function _getPrototypeOf(t){return e.exports=_getPrototypeOf=Object.setPrototypeOf?Object.getPrototypeOf.bind():function _getPrototypeOf(e){return e.__proto__||Object.getPrototypeOf(e)},e.exports.__esModule=!0,e.exports.default=e.exports,_getPrototypeOf(t)}e.exports=_getPrototypeOf,e.exports.__esModule=!0,e.exports.default=e.exports},58724:(e,t,r)=>{var n=r(96196);e.exports=function _inherits(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&n(e,t)},e.exports.__esModule=!0,e.exports.default=e.exports},71173:(e,t,r)=>{var n=r(7501).default,o=r(77266);e.exports=function _possibleConstructorReturn(e,t){if(t&&("object"===n(t)||"function"==typeof t))return t;if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined");return o(e)},e.exports.__esModule=!0,e.exports.default=e.exports},96196:e=>{function _setPrototypeOf(t,r){return e.exports=_setPrototypeOf=Object.setPrototypeOf?Object.setPrototypeOf.bind():function _setPrototypeOf(e,t){return e.__proto__=t,e},e.exports.__esModule=!0,e.exports.default=e.exports,_setPrototypeOf(t,r)}e.exports=_setPrototypeOf,e.exports.__esModule=!0,e.exports.default=e.exports},79443:(e,t,r)=>{var n=r(74910);e.exports=function _superPropBase(e,t){for(;!Object.prototype.hasOwnProperty.call(e,t)&&null!==(e=n(e)););return e},e.exports.__esModule=!0,e.exports.default=e.exports}}]); \ No newline at end of file diff --git a/wp-content/plugins/elementor/assets/js/906cf49fecec599e1a67.bundle.min.js b/wp-content/plugins/elementor/assets/js/906cf49fecec599e1a67.bundle.min.js new file mode 100644 index 0000000..13d8f20 --- /dev/null +++ b/wp-content/plugins/elementor/assets/js/906cf49fecec599e1a67.bundle.min.js @@ -0,0 +1,2 @@ +/*! elementor - v3.20.0 - 26-03-2024 */ +"use strict";(self.webpackChunkelementor=self.webpackChunkelementor||[]).push([[684],{97684:(t,r,a)=>{var o=a(73203);Object.defineProperty(r,"__esModule",{value:!0}),r.default=function App(){return u.default.createElement(d.SettingsProvider,null,u.default.createElement(m.default,null,u.default.createElement(p.default,null,u.default.createElement(y.default,null),u.default.createElement(b,null,u.default.createElement(v.default,null),u.default.createElement(g.default,null)))))};var l,i=o(a(79769)),u=o(a(87363)),c=o(a(63993)),d=a(56802),p=o(a(47244)),y=o(a(57447)),v=o(a(4087)),g=o(a(20226)),m=o(a(7250)),b=c.default.div(l||(l=(0,i.default)(["\n\tpadding: 48px 0;\n"])))},7250:(t,r,a)=>{var o=a(23615),l=a(73203);Object.defineProperty(r,"__esModule",{value:!0}),r.default=AppWrapper;var i=l(a(87363)),u=a(56802),c=l(a(24898));function AppWrapper(t){var r=(0,u.useSettings)(),a=r.settings;if(!r.isReady)return i.default.createElement(c.default,null);var o=a.get("config").get("is_debug")?i.default.StrictMode:i.default.Fragment;return i.default.createElement(o,null,t.children)}AppWrapper.propTypes={children:o.oneOfType([o.node,o.arrayOf(o.node)]).isRequired}},74866:(t,r,a)=>{var o=a(73203);Object.defineProperty(r,"__esModule",{value:!0}),r.default=void 0;var l,i=o(a(79769)),u=o(a(63993)).default.h2(l||(l=(0,i.default)(["\n\tcolor: var(--e-a-color-txt);\n\tfont-family: Roboto, sans-serif;\n\tfont-size: 30px;\n\tfont-weight: 400;\n\ttext-transform: capitalize;\n\tfont-style: normal;\n\ttext-decoration: none;\n\tletter-spacing: 0;\n\tword-spacing: 0;\n\ttext-align: center;\n\tpadding: 0;\n\tmargin: 0 0 48px 0;\n"])));r.default=u},10658:(t,r,a)=>{var o=a(23615),l=a(73203);Object.defineProperty(r,"__esModule",{value:!0}),r.default=void 0;var i,u=l(a(79769)),c=l(a(87363)),d=l(a(63993)),p=a(56802),y=l(a(24898)),v=l(a(70282)),g=l(a(74866)),m=l(a(96238)),b=(0,d.default)(v.default)(i||(i=(0,u.default)(["\n\twidth: 100%;\n \tpadding-top: 96px;\n\tmin-height: 100px;\n\n\t@media (max-width: 1024px) {\n \tpadding-top: 50px;\n\t}\n"]))),h=c.default.forwardRef((function(t,r){var a=t.config,o=(0,p.useSettings)(),l=o.settings,i=o.isReady;return c.default.createElement(b,{ref:r},c.default.createElement(g.default,{name:a.type},a.title),i?c.default.createElement(c.default.Fragment,null,a.sections.map((function(t){var r=l.get(a.type).get(t.type);return r.length?c.default.createElement(m.default,{key:t.type,title:t.title,items:r,columns:t.columns,component:a.component,type:t.type}):null}))):c.default.createElement(y.default,null))}));h.propTypes={config:o.shape({type:o.string.isRequired,title:o.string.isRequired,sections:o.arrayOf(o.shape({type:o.string.isRequired,title:o.string.isRequired,columns:o.object})).isRequired,component:o.func.isRequired}).isRequired};var _=h;r.default=_},4087:(t,r,a)=>{var o=a(38003).__,l=a(73203);Object.defineProperty(r,"__esModule",{value:!0}),r.default=function ColorsArea(){var t=(0,u.useActiveContext)().colorsAreaRef,r={title:o("Global Colors","elementor"),type:"colors",component:d.default,sections:[{type:"system_colors",title:o("System Colors","elementor"),columns:{desktop:4,mobile:2}},{type:"custom_colors",title:o("Custom Colors","elementor"),columns:{desktop:6,mobile:2}}]};return i.default.createElement(c.default,{ref:t,config:r})};var i=l(a(87363)),u=a(47244),c=l(a(10658)),d=l(a(59207))},20226:(t,r,a)=>{var o=a(38003).__,l=a(73203);Object.defineProperty(r,"__esModule",{value:!0}),r.default=function FontsArea(){var t=(0,u.useActiveContext)().fontsAreaRef,r={title:o("Global Fonts","elementor"),type:"fonts",component:d.default,sections:[{type:"system_typography",title:o("System Fonts","elementor"),flex:"column",columns:{desktop:1,mobile:1}},{type:"custom_typography",title:o("Custom Fonts","elementor"),flex:"column",columns:{desktop:1,mobile:1}}]};return i.default.createElement(c.default,{ref:t,config:r})};var i=l(a(87363)),u=a(47244),c=l(a(10658)),d=l(a(32259))},70282:(t,r,a)=>{var o=a(73203);Object.defineProperty(r,"__esModule",{value:!0}),r.default=void 0;var l,i=o(a(79769)),u=o(a(63993)).default.div(l||(l=(0,i.default)(["\n\tbox-sizing: border-box;\n\tposition: relative;\n"])));r.default=u},13746:(t,r,a)=>{var o=a(73203);Object.defineProperty(r,"__esModule",{value:!0}),r.default=void 0;var l,i=o(a(79769)),u=o(a(63993)).default.p(l||(l=(0,i.default)(["\n\tcolor: var(--e-a-color-txt);\n\tfont-family: Roboto, sans-serif;\n\tfont-size: 12px;\n\tfont-weight: 500;\n\ttext-transform: capitalize;\n\tfont-style: normal;\n\ttext-decoration: none;\n\tline-height: 1.1em;\n\tletter-spacing: 0;\n\tword-spacing: 0;\n\tpadding: 0;\n\tmargin: 0;\n"])));r.default=u},30879:(t,r,a)=>{var o=a(23615),l=a(73203),i=a(7501);Object.defineProperty(r,"__esModule",{value:!0}),r.default=void 0;var u,c,d,p=l(a(73119)),y=l(a(79769)),v=l(a(87363)),g=function _interopRequireWildcard(t,r){if(!r&&t&&t.__esModule)return t;if(null===t||"object"!==i(t)&&"function"!=typeof t)return{default:t};var a=_getRequireWildcardCache(r);if(a&&a.has(t))return a.get(t);var o={},l=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var u in t)if("default"!==u&&Object.prototype.hasOwnProperty.call(t,u)){var c=l?Object.getOwnPropertyDescriptor(t,u):null;c&&(c.get||c.set)?Object.defineProperty(o,u,c):o[u]=t[u]}o.default=t,a&&a.set(t,o);return o}(a(63993)),m=l(a(70282));function _getRequireWildcardCache(t){if("function"!=typeof WeakMap)return null;var r=new WeakMap,a=new WeakMap;return(_getRequireWildcardCache=function _getRequireWildcardCache(t){return t?a:r})(t)}var b=(0,g.default)(m.default)(u||(u=(0,y.default)(["\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: 12px;\n\talign-items: flex-start;\n\tborder: 1px solid transparent;\n\tborder-radius: 3px;\n\tpadding: 12px;\n\tcursor: pointer;\n\t","\n\n\t&:hover:not(.active) {\n\t\tbackground-color: var(--e-a-bg-hover);\n\t\tborder-color: var(--e-a-border-color-bold);\n\t}\n\n\t&.active {\n\t\tbackground-color: var(--e-a-bg-active);\n\t\tborder-color: var(--e-a-border-color-accent);\n\t}\n\n\t@media (max-width: 767px) {\n\t\t","\n\t}\n"])),(function(t){var r,a=100/(null!==(r=t.columns.desktop)&&void 0!==r?r:1);return(0,g.css)(c||(c=(0,y.default)(["\n\t\t\tflex: 0 0 ","%;\n\t\t"])),a)}),(function(t){var r,a=100/(null!==(r=t.columns.mobile)&&void 0!==r?r:1);return(0,g.css)(d||(d=(0,y.default)(["\n\t\t\t\tflex: 0 0 ","%;\n\t\t\t"])),a)})),h=v.default.forwardRef((function(t,r){var a=t.isActive,o=t.children;return v.default.createElement(b,(0,p.default)({},t,{ref:r,className:a?"active":""}),o)})),_=h;r.default=_,h.propTypes={isActive:o.bool,children:o.oneOfType([o.node,o.arrayOf(o.node)])}},22022:(t,r,a)=>{var o=a(73203);Object.defineProperty(r,"__esModule",{value:!0}),r.default=void 0;var l,i=o(a(79769)),u=o(a(63993)),c=o(a(70282)),d=(0,u.default)(c.default)(l||(l=(0,i.default)(["\n\tdisplay: flex;\n\talign-items: center;\n\twidth: 100%;\n\tmax-width: 1140px;\n\tmargin: auto;\n\tflex-wrap: wrap;\n\tflex-direction: ",";\n\n\t@media (max-width: 1140px) {\n\t\tpadding: 0 15px;\n\t}\n\n\t@media (max-width: 767px) {\n\t\tpadding: 0 13px;\n\t}\n"])),(function(t){var r;return null!==(r=t.flexDirection)&&void 0!==r?r:"row"}));r.default=d},24898:(t,r,a)=>{var o=a(73203);Object.defineProperty(r,"__esModule",{value:!0}),r.default=function Loader(){return l.default.createElement("div",{className:"e-styleguide-loader"},l.default.createElement("i",{className:"eicon-loading eicon-animation-spin"}))};var l=o(a(87363))},57447:(t,r,a)=>{var o=a(38003).__,l=a(23615),i=a(73203);Object.defineProperty(r,"__esModule",{value:!0}),r.default=function Header(){return v.default.createElement(O,null,v.default.createElement(h.default,null,v.default.createElement(P,null,o("Style Guide Preview","elementor")),v.default.createElement(x,null,v.default.createElement(w,{area:"colors"},o("Colors","elementor")),v.default.createElement(w,{area:"fonts"},o("Fonts","elementor")))))};var u,c,d,p,y=i(a(79769)),v=i(a(87363)),g=i(a(63993)),m=a(47244),b=i(a(70282)),h=i(a(22022)),_=g.default.button.attrs((function(t){return{"data-e-active":!!t.isActive||null}}))(u||(u=(0,y.default)(["\n\tfont-size: 16px;\n\theight: 100%;\n\tfont-weight: 500;\n\tfont-style: normal;\n\ttext-decoration: none;\n\tline-height: 1.5em;\n\tletter-spacing: 0;\n\tcolor: var(--e-a-color-txt);\n\tborder: none;\n\tbackground: none;\n\ttext-transform: capitalize;\n\tfont-family: Roboto, sans-serif;\n\tpadding: 0;\n\n\t&:hover, &[data-e-active='true'], &:focus {\n\t\toutline: none;\n\t\tbackground: none;\n\t\tcolor: var(--e-a-color-txt-accent);\n\t}\n"]))),w=function AreaButton(t){var r=(0,m.useActiveContext)(),a=r.activeArea,o=r.activateArea,l=t.area,i=t.children;return v.default.createElement(_,{variant:"transparent",size:"s",onClick:function onClick(){o(l)},isActive:l===a},i)},O=(0,g.default)(b.default)(c||(c=(0,y.default)(["\n\tposition: fixed;\n\ttop: 0;\n\tleft: 0;\n\twidth: 100%;\n\theight: 48px;\n\tdisplay: flex;\n\tbackground: var(--e-a-bg-default);\n\tborder-bottom: 1px solid var(--e-a-border-color-bold);\n\tz-index: 1;\n"]))),x=(0,g.default)(b.default)(d||(d=(0,y.default)(["\n\tdisplay: flex;\n\tjustify-content: flex-end;\n\tflex-grow: 1;\n\tgap: 20px;\n"]))),P=g.default.h2(p||(p=(0,y.default)(["\n\tcolor: var(--e-a-color-txt-accent);\n\tfont-family: Roboto, sans-serif;\n\tfont-size: 16px;\n\tfont-weight: 600;\n\ttext-transform: capitalize;\n\tfont-style: normal;\n\ttext-decoration: none;\n\tline-height: 1.2em;\n\tletter-spacing: 0;\n\tword-spacing: 0;\n\tmargin: 0;\n"])));w.propTypes={area:l.string.isRequired,children:l.node.isRequired}},59207:(t,r,a)=>{var o=a(23615),l=a(73203),i=a(7501);Object.defineProperty(r,"__esModule",{value:!0}),r.default=Color;var u,c,d=l(a(79769)),p=function _interopRequireWildcard(t,r){if(!r&&t&&t.__esModule)return t;if(null===t||"object"!==i(t)&&"function"!=typeof t)return{default:t};var a=_getRequireWildcardCache(r);if(a&&a.has(t))return a.get(t);var o={},l=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var u in t)if("default"!==u&&Object.prototype.hasOwnProperty.call(t,u)){var c=l?Object.getOwnPropertyDescriptor(t,u):null;c&&(c.get||c.set)?Object.defineProperty(o,u,c):o[u]=t[u]}o.default=t,a&&a.set(t,o);return o}(a(87363)),y=l(a(63993)),v=l(a(70282)),g=l(a(13746)),m=l(a(30879)),b=a(47244);function _getRequireWildcardCache(t){if("function"!=typeof WeakMap)return null;var r=new WeakMap,a=new WeakMap;return(_getRequireWildcardCache=function _getRequireWildcardCache(t){return t?a:r})(t)}var h=(0,y.default)(v.default)(u||(u=(0,d.default)(["\n\tdisplay: flex;\n\twidth: 100%;\n\theight: 100px;\n\tbackground-color: ",";\n\tborder: 1px solid var(--e-a-border-color-focus);\n\tborder-radius: 3px;\n\talign-items: end;\n"])),(function(t){return t.hex})),_=y.default.p(c||(c=(0,d.default)(["\n\tcolor: var(--e-a-color-txt-invert);\n\tfont-family: Roboto, sans-serif;\n\theight: 12px;\n\tfont-size: 12px;\n\tfont-weight: 500;\n\ttext-transform: uppercase;\n\tfont-style: normal;\n\ttext-decoration: none;\n\tline-height: 1.1em;\n\tletter-spacing: 0;\n\tword-spacing: 0;\n\tmargin: 12px;\n"])));function Color(t){var r=(0,b.useActiveContext)(),a=r.activeElement,o=r.activateElement,l=r.getElementControl,i=t.item,u=t.type,c="color",d=i._id,y=i.title,v=i.color,w=l(u,c,d),O=(0,p.useRef)(null);(0,p.useEffect)((function(){w===a&&O.current.scrollIntoView({behavior:"smooth",block:"center",inline:"center"})}),[a]);return p.default.createElement(m.default,{columns:t.columns,ref:O,isActive:w===a,onClick:function onClick(){o(u,c,d)}},p.default.createElement(g.default,null,y),p.default.createElement(h,{hex:v},p.default.createElement(_,null,v)))}Color.propTypes={item:o.shape({_id:o.string.isRequired,title:o.string.isRequired,color:o.string}).isRequired,type:o.string.isRequired,columns:o.shape({desktop:o.number,mobile:o.number})}},32259:(t,r,a)=>{var o=a(38003).__,l=a(23615),i=a(73203),u=a(7501);Object.defineProperty(r,"__esModule",{value:!0}),r.default=Font;var c,d,p=i(a(79769)),y=function _interopRequireWildcard(t,r){if(!r&&t&&t.__esModule)return t;if(null===t||"object"!==u(t)&&"function"!=typeof t)return{default:t};var a=_getRequireWildcardCache(r);if(a&&a.has(t))return a.get(t);var o={},l=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var i in t)if("default"!==i&&Object.prototype.hasOwnProperty.call(t,i)){var c=l?Object.getOwnPropertyDescriptor(t,i):null;c&&(c.get||c.set)?Object.defineProperty(o,i,c):o[i]=t[i]}o.default=t,a&&a.set(t,o);return o}(a(87363)),v=i(a(63993)),g=a(47244),m=a(56802),b=i(a(30879)),h=i(a(13746));function _getRequireWildcardCache(t){if("function"!=typeof WeakMap)return null;var r=new WeakMap,a=new WeakMap;return(_getRequireWildcardCache=function _getRequireWildcardCache(t){return t?a:r})(t)}var _=(0,v.default)(h.default)(c||(c=(0,p.default)(["\n\tfont-size: 18px;\n"]))),w=v.default.p.withConfig({shouldForwardProp:function shouldForwardProp(t){return"style"!==t}})(d||(d=(0,p.default)(["\n\t",";\n"])),(function(t){var r=t.style,a=function styleObjectToString(t){return Object.keys(t).reduce((function(r,a){return r+"".concat(a,": ").concat(t[a],";")}),"")};return"\n\t\t\t".concat(a(r.style),"\n\n\t\t\t@media (max-width: 1024px) {\n\t\t\t\t").concat(a(r.tablet),"\n\t\t\t}\n\n\t\t\t@media (max-width: 767px) {\n\t\t\t\t").concat(a(r.mobile),"\n\t\t\t}\n\t\t")})),O=function parseFontToStyle(t,r){var a=function defaultKeyParser(t){return t.replace("typography_","").replace("_","-")},o=r.toLowerCase(),l=function sizeParser(t){return t&&t.size?"".concat(t.size).concat(t.unit):""},i=function defaultParser(t){return t},u={typography_font_family:{valueParser:function familyParser(t){return t?t+", ".concat(o):o},keyParser:a},typography_font_size:{valueParser:l,keyParser:a},typography_letter_spacing:{valueParser:l,keyParser:a},typography_line_height:{valueParser:l,keyParser:a},typography_word_spacing:{valueParser:l,keyParser:a},typography_font_style:{valueParser:i,keyParser:a},typography_font_weight:{valueParser:i,keyParser:a},typography_text_transform:{valueParser:i,keyParser:a},typography_text_decoration:{valueParser:i,keyParser:a}},c=["typography_font_size","typography_letter_spacing","typography_line_height","typography_word_spacing"],d=function reducer(r,a,o){var l=u[a],i=l.keyParser(a),c=a+(o?"_"+o:""),d=l.valueParser(t[c]);return d&&(r[i]=d),r};return{style:Object.keys(u).reduce((function(t,r){return d(t,r,"")}),{}),tablet:c.reduce((function(t,r){return d(t,r,"tablet")}),{}),mobile:c.reduce((function(t,r){return d(t,r,"mobile")}),{})}};function Font(t){var r=(0,g.useActiveContext)(),a=r.activeElement,l=r.activateElement,i=r.getElementControl,u=t.item,c=t.type,d="typography",p=u._id,v=u.title,h=i(c,d,p),x=(0,y.useRef)(null),P=(0,m.useSettings)(),j=P.settings,R=P.isReady,k=(0,y.useMemo)((function(){return R?O(u,j.get("fonts").get("fallback_font")):""}),[u,j]);return(0,y.useEffect)((function(){h===a&&x.current.scrollIntoView({behavior:"smooth",block:"center",inline:"center"})}),[a]),y.default.createElement(b.default,{columns:t.columns,ref:x,isActive:h===a,onClick:function onClick(){l(c,d,p)}},y.default.createElement(_,null,v),y.default.createElement(w,{style:k},o("The five boxing wizards jump quickly.","elementor")))}Font.propTypes={item:l.shape({_id:l.string.isRequired,title:l.string.isRequired,color:l.string}).isRequired,type:l.string.isRequired,columns:l.shape({desktop:l.number,mobile:l.number})}},32431:(t,r,a)=>{var o=a(73203);Object.defineProperty(r,"__esModule",{value:!0}),r.default=void 0;var l,i=o(a(79769)),u=o(a(63993)).default.h3(l||(l=(0,i.default)(["\n\tpadding: 16px 12px;\n\tborder-style: solid;\n\tborder-width: 0 0 1px 0;\n\tborder-color: var(--e-a-border-color-bold);\n\tcolor: var(--e-a-color-txt);\n\tfont-family: Roboto, sans-serif;\n\tfont-size: 16px;\n\tfont-weight: 500;\n\ttext-transform: capitalize;\n\tfont-style: normal;\n\ttext-decoration: none;\n\tline-height: 1.5em;\n\tletter-spacing: 0;\n\tword-spacing: 0;\n\tmargin: 0 auto 25px;\n\twidth: 100%;\n\tmax-width: 1140px;\n"])));r.default=u},96238:(t,r,a)=>{var o=a(23615),l=a(73203),i=a(7501);Object.defineProperty(r,"__esModule",{value:!0}),r.default=Section;var u,c,d,p=l(a(79769)),y=l(a(87363)),v=function _interopRequireWildcard(t,r){if(!r&&t&&t.__esModule)return t;if(null===t||"object"!==i(t)&&"function"!=typeof t)return{default:t};var a=_getRequireWildcardCache(r);if(a&&a.has(t))return a.get(t);var o={},l=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var u in t)if("default"!==u&&Object.prototype.hasOwnProperty.call(t,u)){var c=l?Object.getOwnPropertyDescriptor(t,u):null;c&&(c.get||c.set)?Object.defineProperty(o,u,c):o[u]=t[u]}o.default=t,a&&a.set(t,o);return o}(a(63993)),g=l(a(32431)),m=l(a(70282)),b=l(a(22022));function _getRequireWildcardCache(t){if("function"!=typeof WeakMap)return null;var r=new WeakMap,a=new WeakMap;return(_getRequireWildcardCache=function _getRequireWildcardCache(t){return t?a:r})(t)}var h=(0,v.default)(m.default)(u||(u=(0,p.default)(["\n\tmargin-top: 55px;\n"]))),_=(0,v.default)(m.default)(c||(c=(0,p.default)(["\n\tdisplay: flex;\n\twidth: 100%;\n\n\t",";\n"])),(function(t){var r=t.flex;return r&&(0,v.css)(d||(d=(0,p.default)(["\n\t\tflex-direction: ",";\n\t\tflex-wrap: ",";\n\t"])),"column"===r?"column":"row","column"===r?"nowrap":"wrap")}));function Section(t){var r=t.title,a=t.items,o=t.columns,l=t.component,i=t.type,u=t.flex,c=void 0===u?"row":u;return y.default.createElement(h,null,y.default.createElement(g.default,null,r),y.default.createElement(b.default,null,y.default.createElement(_,{flex:c},a.map((function(t){return y.default.createElement(l,{key:t._id,item:t,type:i||null,columns:o})})))))}Section.propTypes={title:o.string.isRequired,items:o.array.isRequired,columns:o.shape({desktop:o.number,mobile:o.number}),component:o.func.isRequired,type:o.string,flex:o.oneOf(["row","column"])}},47244:(t,r,a)=>{var o=a(73203),l=a(7501);Object.defineProperty(r,"__esModule",{value:!0}),r.default=r.ActiveContext=void 0,r.useActiveContext=function useActiveContext(){return(0,d.useContext)(v)};var i=o(a(73119)),u=o(a(93231)),c=o(a(40131)),d=function _interopRequireWildcard(t,r){if(!r&&t&&t.__esModule)return t;if(null===t||"object"!==l(t)&&"function"!=typeof t)return{default:t};var a=_getRequireWildcardCache(r);if(a&&a.has(t))return a.get(t);var o={},i=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var u in t)if("default"!==u&&Object.prototype.hasOwnProperty.call(t,u)){var c=i?Object.getOwnPropertyDescriptor(t,u):null;c&&(c.get||c.set)?Object.defineProperty(o,u,c):o[u]=t[u]}o.default=t,a&&a.set(t,o);return o}(a(87363)),p=a(56802),y=o(a(42762));function _getRequireWildcardCache(t){if("function"!=typeof WeakMap)return null;var r=new WeakMap,a=new WeakMap;return(_getRequireWildcardCache=function _getRequireWildcardCache(t){return t?a:r})(t)}function ownKeys(t,r){var a=Object.keys(t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(t);r&&(o=o.filter((function(r){return Object.getOwnPropertyDescriptor(t,r).enumerable}))),a.push.apply(a,o)}return a}function _objectSpread(t){for(var r=1;r1&&void 0!==arguments[1]?arguments[1]:{}).scroll;(void 0===r||r)&&_(t),l((function(r){return _objectSpread(_objectSpread({},r),{},{area:t})}))},_=function scrollToArea(t){("colors"===t?u:g).current.scrollIntoView({behavior:"smooth",block:"start",inline:"start"})};(0,d.useEffect)((function(){window.top.$e.routes.is("panel/global/global-colors")&&_("colors"),window.top.$e.routes.is("panel/global/global-typography")&&_("fonts")}),[]),(0,d.useEffect)((function(){m&&(b([u.current,g.current]),window.top.$e.routes.on("run:after",(function(t,r,a){"panel/global/global-typography"===r&&l((function(){return{area:"fonts",element:a.activeControl}})),"panel/global/global-colors"===r&&l((function(){return{area:"colors",element:a.activeControl}}))})))}),[m]);var w={activeElement:o.element,activeArea:o.area,activateElement:function activateElement(t,r,a){"color"===r&&window.top.$e.route("panel/global/global-colors",{activeControl:"".concat(t,"/").concat(a,"/color")},{history:!1}),"typography"===r&&window.top.$e.route("panel/global/global-typography",{activeControl:"".concat(t,"/").concat(a,"/typography_typography")},{history:!1})},activateArea:h,colorsAreaRef:u,fontsAreaRef:g,getElementControl:function getElementControl(t,r,a){return"color"===r?"".concat(t,"/").concat(a,"/color"):"typography"===r?"".concat(t,"/").concat(a,"/typography_typography"):void 0}};return d.default.createElement(v.Provider,(0,i.default)({value:w},t))};r.default=g},56802:(t,r,a)=>{var o=a(73203),l=a(7501);Object.defineProperty(r,"__esModule",{value:!0}),r.useSettings=r.SettingsProvider=void 0;var i=function _interopRequireWildcard(t,r){if(!r&&t&&t.__esModule)return t;if(null===t||"object"!==l(t)&&"function"!=typeof t)return{default:t};var a=_getRequireWildcardCache(r);if(a&&a.has(t))return a.get(t);var o={},i=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var u in t)if("default"!==u&&Object.prototype.hasOwnProperty.call(t,u)){var c=i?Object.getOwnPropertyDescriptor(t,u):null;c&&(c.get||c.set)?Object.defineProperty(o,u,c):o[u]=t[u]}o.default=t,a&&a.set(t,o);return o}(a(87363)),u=o(a(73119)),c=o(a(9833)),d=o(a(93231)),p=o(a(40131)),y=o(a(94539));function _getRequireWildcardCache(t){if("function"!=typeof WeakMap)return null;var r=new WeakMap,a=new WeakMap;return(_getRequireWildcardCache=function _getRequireWildcardCache(t){return t?a:r})(t)}function ownKeys(t,r){var a=Object.keys(t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(t);r&&(o=o.filter((function(r){return Object.getOwnPropertyDescriptor(t,r).enumerable}))),a.push.apply(a,o)}return a}function _objectSpread(t){for(var r=1;r=t.length?{done:!0}:{done:!1,value:t[o++]}},e:function e(t){throw t},f:l}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,u=!0,c=!1;return{s:function s(){a=a.call(t)},n:function n(){var t=a.next();return u=t.done,t},e:function e(t){c=!0,i=t},f:function f(){try{u||null==a.return||a.return()}finally{if(c)throw i}}}}function _arrayLikeToArray(t,r){(null==r||r>t.length)&&(r=t.length);for(var a=0,o=new Array(r);a{Object.defineProperty(r,"__esModule",{value:!0}),r.default=function useDebouncedCallback(t,r){var a=(0,o.useRef)();return(0,o.useCallback)((function(){for(var o=arguments.length,l=new Array(o),i=0;i{Object.defineProperty(r,"__esModule",{value:!0}),r.default=function useIntersectionObserver(t){var r,a=[];(0,o.useEffect)((function(){return r=new IntersectionObserver((function(r){var a=r.find((function(t){return t.isIntersecting}));a&&t(a)}),{}),function(){r.disconnect()}}),[]);return{setObservedElements:function setObservedElements(t){!function unobserve(){0!==a.length&&a.forEach((function(t){t&&r.unobserve(t)}))}(),a=t,function observe(){0!==a.length&&a.forEach((function(t){t&&r.observe(t)}))}()}}};var o=a(87363)}}]); \ No newline at end of file diff --git a/wp-content/plugins/elementor/assets/js/a730ee9caa710006b307.bundle.js b/wp-content/plugins/elementor/assets/js/a730ee9caa710006b307.bundle.js new file mode 100644 index 0000000..a57c4c3 --- /dev/null +++ b/wp-content/plugins/elementor/assets/js/a730ee9caa710006b307.bundle.js @@ -0,0 +1,7014 @@ +/*! elementor - v3.20.0 - 26-03-2024 */ +(self["webpackChunkelementor"] = self["webpackChunkelementor"] || []).push([["vendors-node_modules_react-query_devtools_index_js"],{ + +/***/ "../node_modules/match-sorter/dist/match-sorter.esm.js": +/*!*************************************************************!*\ + !*** ../node_modules/match-sorter/dist/match-sorter.esm.js ***! + \*************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ defaultBaseSortFn: () => (/* binding */ defaultBaseSortFn), +/* harmony export */ matchSorter: () => (/* binding */ matchSorter), +/* harmony export */ rankings: () => (/* binding */ rankings) +/* harmony export */ }); +/* harmony import */ var _babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/extends */ "../node_modules/@babel/runtime/helpers/esm/extends.js"); +/* harmony import */ var remove_accents__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! remove-accents */ "../node_modules/match-sorter/node_modules/remove-accents/index.js"); +/* harmony import */ var remove_accents__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(remove_accents__WEBPACK_IMPORTED_MODULE_1__); + + + +var rankings = { + CASE_SENSITIVE_EQUAL: 7, + EQUAL: 6, + STARTS_WITH: 5, + WORD_STARTS_WITH: 4, + CONTAINS: 3, + ACRONYM: 2, + MATCHES: 1, + NO_MATCH: 0 +}; +matchSorter.rankings = rankings; + +var defaultBaseSortFn = function defaultBaseSortFn(a, b) { + return String(a.rankedValue).localeCompare(String(b.rankedValue)); +}; +/** + * Takes an array of items and a value and returns a new array with the items that match the given value + * @param {Array} items - the items to sort + * @param {String} value - the value to use for ranking + * @param {Object} options - Some options to configure the sorter + * @return {Array} - the new sorted array + */ + + +function matchSorter(items, value, options) { + if (options === void 0) { + options = {}; + } + + var _options = options, + keys = _options.keys, + _options$threshold = _options.threshold, + threshold = _options$threshold === void 0 ? rankings.MATCHES : _options$threshold, + _options$baseSort = _options.baseSort, + baseSort = _options$baseSort === void 0 ? defaultBaseSortFn : _options$baseSort, + _options$sorter = _options.sorter, + sorter = _options$sorter === void 0 ? function (matchedItems) { + return matchedItems.sort(function (a, b) { + return sortRankedValues(a, b, baseSort); + }); + } : _options$sorter; + var matchedItems = items.reduce(reduceItemsToRanked, []); + return sorter(matchedItems).map(function (_ref) { + var item = _ref.item; + return item; + }); + + function reduceItemsToRanked(matches, item, index) { + var rankingInfo = getHighestRanking(item, keys, value, options); + var rank = rankingInfo.rank, + _rankingInfo$keyThres = rankingInfo.keyThreshold, + keyThreshold = _rankingInfo$keyThres === void 0 ? threshold : _rankingInfo$keyThres; + + if (rank >= keyThreshold) { + matches.push((0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({}, rankingInfo, { + item: item, + index: index + })); + } + + return matches; + } +} +/** + * Gets the highest ranking for value for the given item based on its values for the given keys + * @param {*} item - the item to rank + * @param {Array} keys - the keys to get values from the item for the ranking + * @param {String} value - the value to rank against + * @param {Object} options - options to control the ranking + * @return {{rank: Number, keyIndex: Number, keyThreshold: Number}} - the highest ranking + */ + + +function getHighestRanking(item, keys, value, options) { + if (!keys) { + // if keys is not specified, then we assume the item given is ready to be matched + var stringItem = item; + return { + // ends up being duplicate of 'item' in matches but consistent + rankedValue: stringItem, + rank: getMatchRanking(stringItem, value, options), + keyIndex: -1, + keyThreshold: options.threshold + }; + } + + var valuesToRank = getAllValuesToRank(item, keys); + return valuesToRank.reduce(function (_ref2, _ref3, i) { + var rank = _ref2.rank, + rankedValue = _ref2.rankedValue, + keyIndex = _ref2.keyIndex, + keyThreshold = _ref2.keyThreshold; + var itemValue = _ref3.itemValue, + attributes = _ref3.attributes; + var newRank = getMatchRanking(itemValue, value, options); + var newRankedValue = rankedValue; + var minRanking = attributes.minRanking, + maxRanking = attributes.maxRanking, + threshold = attributes.threshold; + + if (newRank < minRanking && newRank >= rankings.MATCHES) { + newRank = minRanking; + } else if (newRank > maxRanking) { + newRank = maxRanking; + } + + if (newRank > rank) { + rank = newRank; + keyIndex = i; + keyThreshold = threshold; + newRankedValue = itemValue; + } + + return { + rankedValue: newRankedValue, + rank: rank, + keyIndex: keyIndex, + keyThreshold: keyThreshold + }; + }, { + rankedValue: item, + rank: rankings.NO_MATCH, + keyIndex: -1, + keyThreshold: options.threshold + }); +} +/** + * Gives a rankings score based on how well the two strings match. + * @param {String} testString - the string to test against + * @param {String} stringToRank - the string to rank + * @param {Object} options - options for the match (like keepDiacritics for comparison) + * @returns {Number} the ranking for how well stringToRank matches testString + */ + + +function getMatchRanking(testString, stringToRank, options) { + testString = prepareValueForComparison(testString, options); + stringToRank = prepareValueForComparison(stringToRank, options); // too long + + if (stringToRank.length > testString.length) { + return rankings.NO_MATCH; + } // case sensitive equals + + + if (testString === stringToRank) { + return rankings.CASE_SENSITIVE_EQUAL; + } // Lower casing before further comparison + + + testString = testString.toLowerCase(); + stringToRank = stringToRank.toLowerCase(); // case insensitive equals + + if (testString === stringToRank) { + return rankings.EQUAL; + } // starts with + + + if (testString.startsWith(stringToRank)) { + return rankings.STARTS_WITH; + } // word starts with + + + if (testString.includes(" " + stringToRank)) { + return rankings.WORD_STARTS_WITH; + } // contains + + + if (testString.includes(stringToRank)) { + return rankings.CONTAINS; + } else if (stringToRank.length === 1) { + // If the only character in the given stringToRank + // isn't even contained in the testString, then + // it's definitely not a match. + return rankings.NO_MATCH; + } // acronym + + + if (getAcronym(testString).includes(stringToRank)) { + return rankings.ACRONYM; + } // will return a number between rankings.MATCHES and + // rankings.MATCHES + 1 depending on how close of a match it is. + + + return getClosenessRanking(testString, stringToRank); +} +/** + * Generates an acronym for a string. + * + * @param {String} string the string for which to produce the acronym + * @returns {String} the acronym + */ + + +function getAcronym(string) { + var acronym = ''; + var wordsInString = string.split(' '); + wordsInString.forEach(function (wordInString) { + var splitByHyphenWords = wordInString.split('-'); + splitByHyphenWords.forEach(function (splitByHyphenWord) { + acronym += splitByHyphenWord.substr(0, 1); + }); + }); + return acronym; +} +/** + * Returns a score based on how spread apart the + * characters from the stringToRank are within the testString. + * A number close to rankings.MATCHES represents a loose match. A number close + * to rankings.MATCHES + 1 represents a tighter match. + * @param {String} testString - the string to test against + * @param {String} stringToRank - the string to rank + * @returns {Number} the number between rankings.MATCHES and + * rankings.MATCHES + 1 for how well stringToRank matches testString + */ + + +function getClosenessRanking(testString, stringToRank) { + var matchingInOrderCharCount = 0; + var charNumber = 0; + + function findMatchingCharacter(matchChar, string, index) { + for (var j = index, J = string.length; j < J; j++) { + var stringChar = string[j]; + + if (stringChar === matchChar) { + matchingInOrderCharCount += 1; + return j + 1; + } + } + + return -1; + } + + function getRanking(spread) { + var spreadPercentage = 1 / spread; + var inOrderPercentage = matchingInOrderCharCount / stringToRank.length; + var ranking = rankings.MATCHES + inOrderPercentage * spreadPercentage; + return ranking; + } + + var firstIndex = findMatchingCharacter(stringToRank[0], testString, 0); + + if (firstIndex < 0) { + return rankings.NO_MATCH; + } + + charNumber = firstIndex; + + for (var i = 1, I = stringToRank.length; i < I; i++) { + var matchChar = stringToRank[i]; + charNumber = findMatchingCharacter(matchChar, testString, charNumber); + var found = charNumber > -1; + + if (!found) { + return rankings.NO_MATCH; + } + } + + var spread = charNumber - firstIndex; + return getRanking(spread); +} +/** + * Sorts items that have a rank, index, and keyIndex + * @param {Object} a - the first item to sort + * @param {Object} b - the second item to sort + * @return {Number} -1 if a should come first, 1 if b should come first, 0 if equal + */ + + +function sortRankedValues(a, b, baseSort) { + var aFirst = -1; + var bFirst = 1; + var aRank = a.rank, + aKeyIndex = a.keyIndex; + var bRank = b.rank, + bKeyIndex = b.keyIndex; + var same = aRank === bRank; + + if (same) { + if (aKeyIndex === bKeyIndex) { + // use the base sort function as a tie-breaker + return baseSort(a, b); + } else { + return aKeyIndex < bKeyIndex ? aFirst : bFirst; + } + } else { + return aRank > bRank ? aFirst : bFirst; + } +} +/** + * Prepares value for comparison by stringifying it, removing diacritics (if specified) + * @param {String} value - the value to clean + * @param {Object} options - {keepDiacritics: whether to remove diacritics} + * @return {String} the prepared value + */ + + +function prepareValueForComparison(value, _ref4) { + var keepDiacritics = _ref4.keepDiacritics; + // value might not actually be a string at this point (we don't get to choose) + // so part of preparing the value for comparison is ensure that it is a string + value = "" + value; // toString + + if (!keepDiacritics) { + value = remove_accents__WEBPACK_IMPORTED_MODULE_1___default()(value); + } + + return value; +} +/** + * Gets value for key in item at arbitrarily nested keypath + * @param {Object} item - the item + * @param {Object|Function} key - the potentially nested keypath or property callback + * @return {Array} - an array containing the value(s) at the nested keypath + */ + + +function getItemValues(item, key) { + if (typeof key === 'object') { + key = key.key; + } + + var value; + + if (typeof key === 'function') { + value = key(item); + } else if (item == null) { + value = null; + } else if (Object.hasOwnProperty.call(item, key)) { + value = item[key]; + } else if (key.includes('.')) { + // eslint-disable-next-line @typescript-eslint/no-unsafe-call + return getNestedValues(key, item); + } else { + value = null; + } // because `value` can also be undefined + + + if (value == null) { + return []; + } + + if (Array.isArray(value)) { + return value; + } + + return [String(value)]; +} +/** + * Given path: "foo.bar.baz" + * And item: {foo: {bar: {baz: 'buzz'}}} + * -> 'buzz' + * @param path a dot-separated set of keys + * @param item the item to get the value from + */ + + +function getNestedValues(path, item) { + var keys = path.split('.'); + var values = [item]; + + for (var i = 0, I = keys.length; i < I; i++) { + var nestedKey = keys[i]; + var nestedValues = []; + + for (var j = 0, J = values.length; j < J; j++) { + var nestedItem = values[j]; + if (nestedItem == null) continue; + + if (Object.hasOwnProperty.call(nestedItem, nestedKey)) { + var nestedValue = nestedItem[nestedKey]; + + if (nestedValue != null) { + nestedValues.push(nestedValue); + } + } else if (nestedKey === '*') { + // ensure that values is an array + nestedValues = nestedValues.concat(nestedItem); + } + } + + values = nestedValues; + } + + if (Array.isArray(values[0])) { + // keep allowing the implicit wildcard for an array of strings at the end of + // the path; don't use `.flat()` because that's not available in node.js v10 + var result = []; + return result.concat.apply(result, values); + } // Based on our logic it should be an array of strings by now... + // assuming the user's path terminated in strings + + + return values; +} +/** + * Gets all the values for the given keys in the given item and returns an array of those values + * @param item - the item from which the values will be retrieved + * @param keys - the keys to use to retrieve the values + * @return objects with {itemValue, attributes} + */ + + +function getAllValuesToRank(item, keys) { + var allValues = []; + + for (var j = 0, J = keys.length; j < J; j++) { + var key = keys[j]; + var attributes = getKeyAttributes(key); + var itemValues = getItemValues(item, key); + + for (var i = 0, I = itemValues.length; i < I; i++) { + allValues.push({ + itemValue: itemValues[i], + attributes: attributes + }); + } + } + + return allValues; +} + +var defaultKeyAttributes = { + maxRanking: Infinity, + minRanking: -Infinity +}; +/** + * Gets all the attributes for the given key + * @param key - the key from which the attributes will be retrieved + * @return object containing the key's attributes + */ + +function getKeyAttributes(key) { + if (typeof key === 'string') { + return defaultKeyAttributes; + } + + return (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({}, defaultKeyAttributes, key); +} +/* +eslint + no-continue: "off", +*/ + + + + +/***/ }), + +/***/ "../node_modules/match-sorter/node_modules/remove-accents/index.js": +/*!*************************************************************************!*\ + !*** ../node_modules/match-sorter/node_modules/remove-accents/index.js ***! + \*************************************************************************/ +/***/ ((module) => { + +var characterMap = { + "À": "A", + "Á": "A", + "Â": "A", + "Ã": "A", + "Ä": "A", + "Å": "A", + "Ấ": "A", + "Ắ": "A", + "Ẳ": "A", + "Ẵ": "A", + "Ặ": "A", + "Æ": "AE", + "Ầ": "A", + "Ằ": "A", + "Ȃ": "A", + "Ç": "C", + "Ḉ": "C", + "È": "E", + "É": "E", + "Ê": "E", + "Ë": "E", + "Ế": "E", + "Ḗ": "E", + "Ề": "E", + "Ḕ": "E", + "Ḝ": "E", + "Ȇ": "E", + "Ì": "I", + "Í": "I", + "Î": "I", + "Ï": "I", + "Ḯ": "I", + "Ȋ": "I", + "Ð": "D", + "Ñ": "N", + "Ò": "O", + "Ó": "O", + "Ô": "O", + "Õ": "O", + "Ö": "O", + "Ø": "O", + "Ố": "O", + "Ṍ": "O", + "Ṓ": "O", + "Ȏ": "O", + "Ù": "U", + "Ú": "U", + "Û": "U", + "Ü": "U", + "Ý": "Y", + "à": "a", + "á": "a", + "â": "a", + "ã": "a", + "ä": "a", + "å": "a", + "ấ": "a", + "ắ": "a", + "ẳ": "a", + "ẵ": "a", + "ặ": "a", + "æ": "ae", + "ầ": "a", + "ằ": "a", + "ȃ": "a", + "ç": "c", + "ḉ": "c", + "è": "e", + "é": "e", + "ê": "e", + "ë": "e", + "ế": "e", + "ḗ": "e", + "ề": "e", + "ḕ": "e", + "ḝ": "e", + "ȇ": "e", + "ì": "i", + "í": "i", + "î": "i", + "ï": "i", + "ḯ": "i", + "ȋ": "i", + "ð": "d", + "ñ": "n", + "ò": "o", + "ó": "o", + "ô": "o", + "õ": "o", + "ö": "o", + "ø": "o", + "ố": "o", + "ṍ": "o", + "ṓ": "o", + "ȏ": "o", + "ù": "u", + "ú": "u", + "û": "u", + "ü": "u", + "ý": "y", + "ÿ": "y", + "Ā": "A", + "ā": "a", + "Ă": "A", + "ă": "a", + "Ą": "A", + "ą": "a", + "Ć": "C", + "ć": "c", + "Ĉ": "C", + "ĉ": "c", + "Ċ": "C", + "ċ": "c", + "Č": "C", + "č": "c", + "C̆": "C", + "c̆": "c", + "Ď": "D", + "ď": "d", + "Đ": "D", + "đ": "d", + "Ē": "E", + "ē": "e", + "Ĕ": "E", + "ĕ": "e", + "Ė": "E", + "ė": "e", + "Ę": "E", + "ę": "e", + "Ě": "E", + "ě": "e", + "Ĝ": "G", + "Ǵ": "G", + "ĝ": "g", + "ǵ": "g", + "Ğ": "G", + "ğ": "g", + "Ġ": "G", + "ġ": "g", + "Ģ": "G", + "ģ": "g", + "Ĥ": "H", + "ĥ": "h", + "Ħ": "H", + "ħ": "h", + "Ḫ": "H", + "ḫ": "h", + "Ĩ": "I", + "ĩ": "i", + "Ī": "I", + "ī": "i", + "Ĭ": "I", + "ĭ": "i", + "Į": "I", + "į": "i", + "İ": "I", + "ı": "i", + "IJ": "IJ", + "ij": "ij", + "Ĵ": "J", + "ĵ": "j", + "Ķ": "K", + "ķ": "k", + "Ḱ": "K", + "ḱ": "k", + "K̆": "K", + "k̆": "k", + "Ĺ": "L", + "ĺ": "l", + "Ļ": "L", + "ļ": "l", + "Ľ": "L", + "ľ": "l", + "Ŀ": "L", + "ŀ": "l", + "Ł": "l", + "ł": "l", + "Ḿ": "M", + "ḿ": "m", + "M̆": "M", + "m̆": "m", + "Ń": "N", + "ń": "n", + "Ņ": "N", + "ņ": "n", + "Ň": "N", + "ň": "n", + "ʼn": "n", + "N̆": "N", + "n̆": "n", + "Ō": "O", + "ō": "o", + "Ŏ": "O", + "ŏ": "o", + "Ő": "O", + "ő": "o", + "Œ": "OE", + "œ": "oe", + "P̆": "P", + "p̆": "p", + "Ŕ": "R", + "ŕ": "r", + "Ŗ": "R", + "ŗ": "r", + "Ř": "R", + "ř": "r", + "R̆": "R", + "r̆": "r", + "Ȓ": "R", + "ȓ": "r", + "Ś": "S", + "ś": "s", + "Ŝ": "S", + "ŝ": "s", + "Ş": "S", + "Ș": "S", + "ș": "s", + "ş": "s", + "Š": "S", + "š": "s", + "Ţ": "T", + "ţ": "t", + "ț": "t", + "Ț": "T", + "Ť": "T", + "ť": "t", + "Ŧ": "T", + "ŧ": "t", + "T̆": "T", + "t̆": "t", + "Ũ": "U", + "ũ": "u", + "Ū": "U", + "ū": "u", + "Ŭ": "U", + "ŭ": "u", + "Ů": "U", + "ů": "u", + "Ű": "U", + "ű": "u", + "Ų": "U", + "ų": "u", + "Ȗ": "U", + "ȗ": "u", + "V̆": "V", + "v̆": "v", + "Ŵ": "W", + "ŵ": "w", + "Ẃ": "W", + "ẃ": "w", + "X̆": "X", + "x̆": "x", + "Ŷ": "Y", + "ŷ": "y", + "Ÿ": "Y", + "Y̆": "Y", + "y̆": "y", + "Ź": "Z", + "ź": "z", + "Ż": "Z", + "ż": "z", + "Ž": "Z", + "ž": "z", + "ſ": "s", + "ƒ": "f", + "Ơ": "O", + "ơ": "o", + "Ư": "U", + "ư": "u", + "Ǎ": "A", + "ǎ": "a", + "Ǐ": "I", + "ǐ": "i", + "Ǒ": "O", + "ǒ": "o", + "Ǔ": "U", + "ǔ": "u", + "Ǖ": "U", + "ǖ": "u", + "Ǘ": "U", + "ǘ": "u", + "Ǚ": "U", + "ǚ": "u", + "Ǜ": "U", + "ǜ": "u", + "Ứ": "U", + "ứ": "u", + "Ṹ": "U", + "ṹ": "u", + "Ǻ": "A", + "ǻ": "a", + "Ǽ": "AE", + "ǽ": "ae", + "Ǿ": "O", + "ǿ": "o", + "Þ": "TH", + "þ": "th", + "Ṕ": "P", + "ṕ": "p", + "Ṥ": "S", + "ṥ": "s", + "X́": "X", + "x́": "x", + "Ѓ": "Г", + "ѓ": "г", + "Ќ": "К", + "ќ": "к", + "A̋": "A", + "a̋": "a", + "E̋": "E", + "e̋": "e", + "I̋": "I", + "i̋": "i", + "Ǹ": "N", + "ǹ": "n", + "Ồ": "O", + "ồ": "o", + "Ṑ": "O", + "ṑ": "o", + "Ừ": "U", + "ừ": "u", + "Ẁ": "W", + "ẁ": "w", + "Ỳ": "Y", + "ỳ": "y", + "Ȁ": "A", + "ȁ": "a", + "Ȅ": "E", + "ȅ": "e", + "Ȉ": "I", + "ȉ": "i", + "Ȍ": "O", + "ȍ": "o", + "Ȑ": "R", + "ȑ": "r", + "Ȕ": "U", + "ȕ": "u", + "B̌": "B", + "b̌": "b", + "Č̣": "C", + "č̣": "c", + "Ê̌": "E", + "ê̌": "e", + "F̌": "F", + "f̌": "f", + "Ǧ": "G", + "ǧ": "g", + "Ȟ": "H", + "ȟ": "h", + "J̌": "J", + "ǰ": "j", + "Ǩ": "K", + "ǩ": "k", + "M̌": "M", + "m̌": "m", + "P̌": "P", + "p̌": "p", + "Q̌": "Q", + "q̌": "q", + "Ř̩": "R", + "ř̩": "r", + "Ṧ": "S", + "ṧ": "s", + "V̌": "V", + "v̌": "v", + "W̌": "W", + "w̌": "w", + "X̌": "X", + "x̌": "x", + "Y̌": "Y", + "y̌": "y", + "A̧": "A", + "a̧": "a", + "B̧": "B", + "b̧": "b", + "Ḑ": "D", + "ḑ": "d", + "Ȩ": "E", + "ȩ": "e", + "Ɛ̧": "E", + "ɛ̧": "e", + "Ḩ": "H", + "ḩ": "h", + "I̧": "I", + "i̧": "i", + "Ɨ̧": "I", + "ɨ̧": "i", + "M̧": "M", + "m̧": "m", + "O̧": "O", + "o̧": "o", + "Q̧": "Q", + "q̧": "q", + "U̧": "U", + "u̧": "u", + "X̧": "X", + "x̧": "x", + "Z̧": "Z", + "z̧": "z", +}; + +var chars = Object.keys(characterMap).join('|'); +var allAccents = new RegExp(chars, 'g'); +var firstAccent = new RegExp(chars, ''); + +var removeAccents = function(string) { + return string.replace(allAccents, function(match) { + return characterMap[match]; + }); +}; + +var hasAccents = function(string) { + return !!string.match(firstAccent); +}; + +module.exports = removeAccents; +module.exports.has = hasAccents; +module.exports.remove = removeAccents; + + +/***/ }), + +/***/ "../node_modules/react-query/devtools/index.js": +/*!*****************************************************!*\ + !*** ../node_modules/react-query/devtools/index.js ***! + \*****************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +if (false) {} else { + module.exports = __webpack_require__(/*! ./development */ "../node_modules/react-query/es/devtools/index.js") +} + + +/***/ }), + +/***/ "../node_modules/react-query/es/core/focusManager.js": +/*!***********************************************************!*\ + !*** ../node_modules/react-query/es/core/focusManager.js ***! + \***********************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ FocusManager: () => (/* binding */ FocusManager), +/* harmony export */ focusManager: () => (/* binding */ focusManager) +/* harmony export */ }); +/* harmony import */ var _babel_runtime_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/inheritsLoose */ "../node_modules/@babel/runtime/helpers/esm/inheritsLoose.js"); +/* harmony import */ var _subscribable__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./subscribable */ "../node_modules/react-query/es/core/subscribable.js"); +/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./utils */ "../node_modules/react-query/es/core/utils.js"); + + + +var FocusManager = /*#__PURE__*/function (_Subscribable) { + (0,_babel_runtime_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_0__["default"])(FocusManager, _Subscribable); + + function FocusManager() { + var _this; + + _this = _Subscribable.call(this) || this; + + _this.setup = function (onFocus) { + var _window; + + if (!_utils__WEBPACK_IMPORTED_MODULE_1__.isServer && ((_window = window) == null ? void 0 : _window.addEventListener)) { + var listener = function listener() { + return onFocus(); + }; // Listen to visibillitychange and focus + + + window.addEventListener('visibilitychange', listener, false); + window.addEventListener('focus', listener, false); + return function () { + // Be sure to unsubscribe if a new handler is set + window.removeEventListener('visibilitychange', listener); + window.removeEventListener('focus', listener); + }; + } + }; + + return _this; + } + + var _proto = FocusManager.prototype; + + _proto.onSubscribe = function onSubscribe() { + if (!this.cleanup) { + this.setEventListener(this.setup); + } + }; + + _proto.onUnsubscribe = function onUnsubscribe() { + if (!this.hasListeners()) { + var _this$cleanup; + + (_this$cleanup = this.cleanup) == null ? void 0 : _this$cleanup.call(this); + this.cleanup = undefined; + } + }; + + _proto.setEventListener = function setEventListener(setup) { + var _this$cleanup2, + _this2 = this; + + this.setup = setup; + (_this$cleanup2 = this.cleanup) == null ? void 0 : _this$cleanup2.call(this); + this.cleanup = setup(function (focused) { + if (typeof focused === 'boolean') { + _this2.setFocused(focused); + } else { + _this2.onFocus(); + } + }); + }; + + _proto.setFocused = function setFocused(focused) { + this.focused = focused; + + if (focused) { + this.onFocus(); + } + }; + + _proto.onFocus = function onFocus() { + this.listeners.forEach(function (listener) { + listener(); + }); + }; + + _proto.isFocused = function isFocused() { + if (typeof this.focused === 'boolean') { + return this.focused; + } // document global can be unavailable in react native + + + if (typeof document === 'undefined') { + return true; + } + + return [undefined, 'visible', 'prerender'].includes(document.visibilityState); + }; + + return FocusManager; +}(_subscribable__WEBPACK_IMPORTED_MODULE_2__.Subscribable); +var focusManager = new FocusManager(); + +/***/ }), + +/***/ "../node_modules/react-query/es/core/hydration.js": +/*!********************************************************!*\ + !*** ../node_modules/react-query/es/core/hydration.js ***! + \********************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ dehydrate: () => (/* binding */ dehydrate), +/* harmony export */ hydrate: () => (/* binding */ hydrate) +/* harmony export */ }); +/* harmony import */ var _babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/extends */ "../node_modules/@babel/runtime/helpers/esm/extends.js"); + + +// TYPES +// FUNCTIONS +function dehydrateMutation(mutation) { + return { + mutationKey: mutation.options.mutationKey, + state: mutation.state + }; +} // Most config is not dehydrated but instead meant to configure again when +// consuming the de/rehydrated data, typically with useQuery on the client. +// Sometimes it might make sense to prefetch data on the server and include +// in the html-payload, but not consume it on the initial render. + + +function dehydrateQuery(query) { + return { + state: query.state, + queryKey: query.queryKey, + queryHash: query.queryHash + }; +} + +function defaultShouldDehydrateMutation(mutation) { + return mutation.state.isPaused; +} + +function defaultShouldDehydrateQuery(query) { + return query.state.status === 'success'; +} + +function dehydrate(client, options) { + var _options, _options2; + + options = options || {}; + var mutations = []; + var queries = []; + + if (((_options = options) == null ? void 0 : _options.dehydrateMutations) !== false) { + var shouldDehydrateMutation = options.shouldDehydrateMutation || defaultShouldDehydrateMutation; + client.getMutationCache().getAll().forEach(function (mutation) { + if (shouldDehydrateMutation(mutation)) { + mutations.push(dehydrateMutation(mutation)); + } + }); + } + + if (((_options2 = options) == null ? void 0 : _options2.dehydrateQueries) !== false) { + var shouldDehydrateQuery = options.shouldDehydrateQuery || defaultShouldDehydrateQuery; + client.getQueryCache().getAll().forEach(function (query) { + if (shouldDehydrateQuery(query)) { + queries.push(dehydrateQuery(query)); + } + }); + } + + return { + mutations: mutations, + queries: queries + }; +} +function hydrate(client, dehydratedState, options) { + if (typeof dehydratedState !== 'object' || dehydratedState === null) { + return; + } + + var mutationCache = client.getMutationCache(); + var queryCache = client.getQueryCache(); + var mutations = dehydratedState.mutations || []; + var queries = dehydratedState.queries || []; + mutations.forEach(function (dehydratedMutation) { + var _options$defaultOptio; + + mutationCache.build(client, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({}, options == null ? void 0 : (_options$defaultOptio = options.defaultOptions) == null ? void 0 : _options$defaultOptio.mutations, { + mutationKey: dehydratedMutation.mutationKey + }), dehydratedMutation.state); + }); + queries.forEach(function (dehydratedQuery) { + var _options$defaultOptio2; + + var query = queryCache.get(dehydratedQuery.queryHash); // Do not hydrate if an existing query exists with newer data + + if (query) { + if (query.state.dataUpdatedAt < dehydratedQuery.state.dataUpdatedAt) { + query.setState(dehydratedQuery.state); + } + + return; + } // Restore query + + + queryCache.build(client, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({}, options == null ? void 0 : (_options$defaultOptio2 = options.defaultOptions) == null ? void 0 : _options$defaultOptio2.queries, { + queryKey: dehydratedQuery.queryKey, + queryHash: dehydratedQuery.queryHash + }), dehydratedQuery.state); + }); +} + +/***/ }), + +/***/ "../node_modules/react-query/es/core/index.js": +/*!****************************************************!*\ + !*** ../node_modules/react-query/es/core/index.js ***! + \****************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ CancelledError: () => (/* reexport safe */ _retryer__WEBPACK_IMPORTED_MODULE_0__.CancelledError), +/* harmony export */ InfiniteQueryObserver: () => (/* reexport safe */ _infiniteQueryObserver__WEBPACK_IMPORTED_MODULE_5__.InfiniteQueryObserver), +/* harmony export */ MutationCache: () => (/* reexport safe */ _mutationCache__WEBPACK_IMPORTED_MODULE_6__.MutationCache), +/* harmony export */ MutationObserver: () => (/* reexport safe */ _mutationObserver__WEBPACK_IMPORTED_MODULE_7__.MutationObserver), +/* harmony export */ QueriesObserver: () => (/* reexport safe */ _queriesObserver__WEBPACK_IMPORTED_MODULE_4__.QueriesObserver), +/* harmony export */ QueryCache: () => (/* reexport safe */ _queryCache__WEBPACK_IMPORTED_MODULE_1__.QueryCache), +/* harmony export */ QueryClient: () => (/* reexport safe */ _queryClient__WEBPACK_IMPORTED_MODULE_2__.QueryClient), +/* harmony export */ QueryObserver: () => (/* reexport safe */ _queryObserver__WEBPACK_IMPORTED_MODULE_3__.QueryObserver), +/* harmony export */ dehydrate: () => (/* reexport safe */ _hydration__WEBPACK_IMPORTED_MODULE_13__.dehydrate), +/* harmony export */ focusManager: () => (/* reexport safe */ _focusManager__WEBPACK_IMPORTED_MODULE_10__.focusManager), +/* harmony export */ hashQueryKey: () => (/* reexport safe */ _utils__WEBPACK_IMPORTED_MODULE_12__.hashQueryKey), +/* harmony export */ hydrate: () => (/* reexport safe */ _hydration__WEBPACK_IMPORTED_MODULE_13__.hydrate), +/* harmony export */ isCancelledError: () => (/* reexport safe */ _retryer__WEBPACK_IMPORTED_MODULE_0__.isCancelledError), +/* harmony export */ isError: () => (/* reexport safe */ _utils__WEBPACK_IMPORTED_MODULE_12__.isError), +/* harmony export */ notifyManager: () => (/* reexport safe */ _notifyManager__WEBPACK_IMPORTED_MODULE_9__.notifyManager), +/* harmony export */ onlineManager: () => (/* reexport safe */ _onlineManager__WEBPACK_IMPORTED_MODULE_11__.onlineManager), +/* harmony export */ setLogger: () => (/* reexport safe */ _logger__WEBPACK_IMPORTED_MODULE_8__.setLogger) +/* harmony export */ }); +/* harmony import */ var _retryer__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./retryer */ "../node_modules/react-query/es/core/retryer.js"); +/* harmony import */ var _queryCache__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./queryCache */ "../node_modules/react-query/es/core/queryCache.js"); +/* harmony import */ var _queryClient__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./queryClient */ "../node_modules/react-query/es/core/queryClient.js"); +/* harmony import */ var _queryObserver__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./queryObserver */ "../node_modules/react-query/es/core/queryObserver.js"); +/* harmony import */ var _queriesObserver__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./queriesObserver */ "../node_modules/react-query/es/core/queriesObserver.js"); +/* harmony import */ var _infiniteQueryObserver__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./infiniteQueryObserver */ "../node_modules/react-query/es/core/infiniteQueryObserver.js"); +/* harmony import */ var _mutationCache__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./mutationCache */ "../node_modules/react-query/es/core/mutationCache.js"); +/* harmony import */ var _mutationObserver__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./mutationObserver */ "../node_modules/react-query/es/core/mutationObserver.js"); +/* harmony import */ var _logger__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./logger */ "../node_modules/react-query/es/core/logger.js"); +/* harmony import */ var _notifyManager__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./notifyManager */ "../node_modules/react-query/es/core/notifyManager.js"); +/* harmony import */ var _focusManager__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./focusManager */ "../node_modules/react-query/es/core/focusManager.js"); +/* harmony import */ var _onlineManager__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./onlineManager */ "../node_modules/react-query/es/core/onlineManager.js"); +/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./utils */ "../node_modules/react-query/es/core/utils.js"); +/* harmony import */ var _hydration__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./hydration */ "../node_modules/react-query/es/core/hydration.js"); +/* harmony import */ var _types__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./types */ "../node_modules/react-query/es/core/types.js"); +/* harmony import */ var _types__WEBPACK_IMPORTED_MODULE_14___default = /*#__PURE__*/__webpack_require__.n(_types__WEBPACK_IMPORTED_MODULE_14__); +/* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {}; +/* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _types__WEBPACK_IMPORTED_MODULE_14__) if(["default","CancelledError","QueryCache","QueryClient","QueryObserver","QueriesObserver","InfiniteQueryObserver","MutationCache","MutationObserver","setLogger","notifyManager","focusManager","onlineManager","hashQueryKey","isError","isCancelledError","dehydrate","hydrate"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _types__WEBPACK_IMPORTED_MODULE_14__[__WEBPACK_IMPORT_KEY__] +/* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__); + + + + + + + + + + + + + + + // Types + + + +/***/ }), + +/***/ "../node_modules/react-query/es/core/infiniteQueryBehavior.js": +/*!********************************************************************!*\ + !*** ../node_modules/react-query/es/core/infiniteQueryBehavior.js ***! + \********************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ getNextPageParam: () => (/* binding */ getNextPageParam), +/* harmony export */ getPreviousPageParam: () => (/* binding */ getPreviousPageParam), +/* harmony export */ hasNextPage: () => (/* binding */ hasNextPage), +/* harmony export */ hasPreviousPage: () => (/* binding */ hasPreviousPage), +/* harmony export */ infiniteQueryBehavior: () => (/* binding */ infiniteQueryBehavior) +/* harmony export */ }); +/* harmony import */ var _retryer__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./retryer */ "../node_modules/react-query/es/core/retryer.js"); +/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./utils */ "../node_modules/react-query/es/core/utils.js"); + + +function infiniteQueryBehavior() { + return { + onFetch: function onFetch(context) { + context.fetchFn = function () { + var _context$fetchOptions, _context$fetchOptions2, _context$fetchOptions3, _context$fetchOptions4, _context$state$data, _context$state$data2; + + var refetchPage = (_context$fetchOptions = context.fetchOptions) == null ? void 0 : (_context$fetchOptions2 = _context$fetchOptions.meta) == null ? void 0 : _context$fetchOptions2.refetchPage; + var fetchMore = (_context$fetchOptions3 = context.fetchOptions) == null ? void 0 : (_context$fetchOptions4 = _context$fetchOptions3.meta) == null ? void 0 : _context$fetchOptions4.fetchMore; + var pageParam = fetchMore == null ? void 0 : fetchMore.pageParam; + var isFetchingNextPage = (fetchMore == null ? void 0 : fetchMore.direction) === 'forward'; + var isFetchingPreviousPage = (fetchMore == null ? void 0 : fetchMore.direction) === 'backward'; + var oldPages = ((_context$state$data = context.state.data) == null ? void 0 : _context$state$data.pages) || []; + var oldPageParams = ((_context$state$data2 = context.state.data) == null ? void 0 : _context$state$data2.pageParams) || []; + var abortController = (0,_utils__WEBPACK_IMPORTED_MODULE_0__.getAbortController)(); + var abortSignal = abortController == null ? void 0 : abortController.signal; + var newPageParams = oldPageParams; + var cancelled = false; // Get query function + + var queryFn = context.options.queryFn || function () { + return Promise.reject('Missing queryFn'); + }; + + var buildNewPages = function buildNewPages(pages, param, page, previous) { + newPageParams = previous ? [param].concat(newPageParams) : [].concat(newPageParams, [param]); + return previous ? [page].concat(pages) : [].concat(pages, [page]); + }; // Create function to fetch a page + + + var fetchPage = function fetchPage(pages, manual, param, previous) { + if (cancelled) { + return Promise.reject('Cancelled'); + } + + if (typeof param === 'undefined' && !manual && pages.length) { + return Promise.resolve(pages); + } + + var queryFnContext = { + queryKey: context.queryKey, + signal: abortSignal, + pageParam: param, + meta: context.meta + }; + var queryFnResult = queryFn(queryFnContext); + var promise = Promise.resolve(queryFnResult).then(function (page) { + return buildNewPages(pages, param, page, previous); + }); + + if ((0,_retryer__WEBPACK_IMPORTED_MODULE_1__.isCancelable)(queryFnResult)) { + var promiseAsAny = promise; + promiseAsAny.cancel = queryFnResult.cancel; + } + + return promise; + }; + + var promise; // Fetch first page? + + if (!oldPages.length) { + promise = fetchPage([]); + } // Fetch next page? + else if (isFetchingNextPage) { + var manual = typeof pageParam !== 'undefined'; + var param = manual ? pageParam : getNextPageParam(context.options, oldPages); + promise = fetchPage(oldPages, manual, param); + } // Fetch previous page? + else if (isFetchingPreviousPage) { + var _manual = typeof pageParam !== 'undefined'; + + var _param = _manual ? pageParam : getPreviousPageParam(context.options, oldPages); + + promise = fetchPage(oldPages, _manual, _param, true); + } // Refetch pages + else { + (function () { + newPageParams = []; + var manual = typeof context.options.getNextPageParam === 'undefined'; + var shouldFetchFirstPage = refetchPage && oldPages[0] ? refetchPage(oldPages[0], 0, oldPages) : true; // Fetch first page + + promise = shouldFetchFirstPage ? fetchPage([], manual, oldPageParams[0]) : Promise.resolve(buildNewPages([], oldPageParams[0], oldPages[0])); // Fetch remaining pages + + var _loop = function _loop(i) { + promise = promise.then(function (pages) { + var shouldFetchNextPage = refetchPage && oldPages[i] ? refetchPage(oldPages[i], i, oldPages) : true; + + if (shouldFetchNextPage) { + var _param2 = manual ? oldPageParams[i] : getNextPageParam(context.options, pages); + + return fetchPage(pages, manual, _param2); + } + + return Promise.resolve(buildNewPages(pages, oldPageParams[i], oldPages[i])); + }); + }; + + for (var i = 1; i < oldPages.length; i++) { + _loop(i); + } + })(); + } + + var finalPromise = promise.then(function (pages) { + return { + pages: pages, + pageParams: newPageParams + }; + }); + var finalPromiseAsAny = finalPromise; + + finalPromiseAsAny.cancel = function () { + cancelled = true; + abortController == null ? void 0 : abortController.abort(); + + if ((0,_retryer__WEBPACK_IMPORTED_MODULE_1__.isCancelable)(promise)) { + promise.cancel(); + } + }; + + return finalPromise; + }; + } + }; +} +function getNextPageParam(options, pages) { + return options.getNextPageParam == null ? void 0 : options.getNextPageParam(pages[pages.length - 1], pages); +} +function getPreviousPageParam(options, pages) { + return options.getPreviousPageParam == null ? void 0 : options.getPreviousPageParam(pages[0], pages); +} +/** + * Checks if there is a next page. + * Returns `undefined` if it cannot be determined. + */ + +function hasNextPage(options, pages) { + if (options.getNextPageParam && Array.isArray(pages)) { + var nextPageParam = getNextPageParam(options, pages); + return typeof nextPageParam !== 'undefined' && nextPageParam !== null && nextPageParam !== false; + } +} +/** + * Checks if there is a previous page. + * Returns `undefined` if it cannot be determined. + */ + +function hasPreviousPage(options, pages) { + if (options.getPreviousPageParam && Array.isArray(pages)) { + var previousPageParam = getPreviousPageParam(options, pages); + return typeof previousPageParam !== 'undefined' && previousPageParam !== null && previousPageParam !== false; + } +} + +/***/ }), + +/***/ "../node_modules/react-query/es/core/infiniteQueryObserver.js": +/*!********************************************************************!*\ + !*** ../node_modules/react-query/es/core/infiniteQueryObserver.js ***! + \********************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ InfiniteQueryObserver: () => (/* binding */ InfiniteQueryObserver) +/* harmony export */ }); +/* harmony import */ var _babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/extends */ "../node_modules/@babel/runtime/helpers/esm/extends.js"); +/* harmony import */ var _babel_runtime_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/esm/inheritsLoose */ "../node_modules/@babel/runtime/helpers/esm/inheritsLoose.js"); +/* harmony import */ var _queryObserver__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./queryObserver */ "../node_modules/react-query/es/core/queryObserver.js"); +/* harmony import */ var _infiniteQueryBehavior__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./infiniteQueryBehavior */ "../node_modules/react-query/es/core/infiniteQueryBehavior.js"); + + + + +var InfiniteQueryObserver = /*#__PURE__*/function (_QueryObserver) { + (0,_babel_runtime_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_1__["default"])(InfiniteQueryObserver, _QueryObserver); + + // Type override + // Type override + // Type override + // eslint-disable-next-line @typescript-eslint/no-useless-constructor + function InfiniteQueryObserver(client, options) { + return _QueryObserver.call(this, client, options) || this; + } + + var _proto = InfiniteQueryObserver.prototype; + + _proto.bindMethods = function bindMethods() { + _QueryObserver.prototype.bindMethods.call(this); + + this.fetchNextPage = this.fetchNextPage.bind(this); + this.fetchPreviousPage = this.fetchPreviousPage.bind(this); + }; + + _proto.setOptions = function setOptions(options, notifyOptions) { + _QueryObserver.prototype.setOptions.call(this, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({}, options, { + behavior: (0,_infiniteQueryBehavior__WEBPACK_IMPORTED_MODULE_2__.infiniteQueryBehavior)() + }), notifyOptions); + }; + + _proto.getOptimisticResult = function getOptimisticResult(options) { + options.behavior = (0,_infiniteQueryBehavior__WEBPACK_IMPORTED_MODULE_2__.infiniteQueryBehavior)(); + return _QueryObserver.prototype.getOptimisticResult.call(this, options); + }; + + _proto.fetchNextPage = function fetchNextPage(options) { + var _options$cancelRefetc; + + return this.fetch({ + // TODO consider removing `?? true` in future breaking change, to be consistent with `refetch` API (see https://github.com/tannerlinsley/react-query/issues/2617) + cancelRefetch: (_options$cancelRefetc = options == null ? void 0 : options.cancelRefetch) != null ? _options$cancelRefetc : true, + throwOnError: options == null ? void 0 : options.throwOnError, + meta: { + fetchMore: { + direction: 'forward', + pageParam: options == null ? void 0 : options.pageParam + } + } + }); + }; + + _proto.fetchPreviousPage = function fetchPreviousPage(options) { + var _options$cancelRefetc2; + + return this.fetch({ + // TODO consider removing `?? true` in future breaking change, to be consistent with `refetch` API (see https://github.com/tannerlinsley/react-query/issues/2617) + cancelRefetch: (_options$cancelRefetc2 = options == null ? void 0 : options.cancelRefetch) != null ? _options$cancelRefetc2 : true, + throwOnError: options == null ? void 0 : options.throwOnError, + meta: { + fetchMore: { + direction: 'backward', + pageParam: options == null ? void 0 : options.pageParam + } + } + }); + }; + + _proto.createResult = function createResult(query, options) { + var _state$data, _state$data2, _state$fetchMeta, _state$fetchMeta$fetc, _state$fetchMeta2, _state$fetchMeta2$fet; + + var state = query.state; + + var result = _QueryObserver.prototype.createResult.call(this, query, options); + + return (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({}, result, { + fetchNextPage: this.fetchNextPage, + fetchPreviousPage: this.fetchPreviousPage, + hasNextPage: (0,_infiniteQueryBehavior__WEBPACK_IMPORTED_MODULE_2__.hasNextPage)(options, (_state$data = state.data) == null ? void 0 : _state$data.pages), + hasPreviousPage: (0,_infiniteQueryBehavior__WEBPACK_IMPORTED_MODULE_2__.hasPreviousPage)(options, (_state$data2 = state.data) == null ? void 0 : _state$data2.pages), + isFetchingNextPage: state.isFetching && ((_state$fetchMeta = state.fetchMeta) == null ? void 0 : (_state$fetchMeta$fetc = _state$fetchMeta.fetchMore) == null ? void 0 : _state$fetchMeta$fetc.direction) === 'forward', + isFetchingPreviousPage: state.isFetching && ((_state$fetchMeta2 = state.fetchMeta) == null ? void 0 : (_state$fetchMeta2$fet = _state$fetchMeta2.fetchMore) == null ? void 0 : _state$fetchMeta2$fet.direction) === 'backward' + }); + }; + + return InfiniteQueryObserver; +}(_queryObserver__WEBPACK_IMPORTED_MODULE_3__.QueryObserver); + +/***/ }), + +/***/ "../node_modules/react-query/es/core/logger.js": +/*!*****************************************************!*\ + !*** ../node_modules/react-query/es/core/logger.js ***! + \*****************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ getLogger: () => (/* binding */ getLogger), +/* harmony export */ setLogger: () => (/* binding */ setLogger) +/* harmony export */ }); +// TYPES +// FUNCTIONS +var logger = console; +function getLogger() { + return logger; +} +function setLogger(newLogger) { + logger = newLogger; +} + +/***/ }), + +/***/ "../node_modules/react-query/es/core/mutation.js": +/*!*******************************************************!*\ + !*** ../node_modules/react-query/es/core/mutation.js ***! + \*******************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ Mutation: () => (/* binding */ Mutation), +/* harmony export */ getDefaultState: () => (/* binding */ getDefaultState) +/* harmony export */ }); +/* harmony import */ var _babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/extends */ "../node_modules/@babel/runtime/helpers/esm/extends.js"); +/* harmony import */ var _logger__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./logger */ "../node_modules/react-query/es/core/logger.js"); +/* harmony import */ var _notifyManager__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./notifyManager */ "../node_modules/react-query/es/core/notifyManager.js"); +/* harmony import */ var _retryer__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./retryer */ "../node_modules/react-query/es/core/retryer.js"); +/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./utils */ "../node_modules/react-query/es/core/utils.js"); + + + + + // TYPES + +// CLASS +var Mutation = /*#__PURE__*/function () { + function Mutation(config) { + this.options = (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({}, config.defaultOptions, config.options); + this.mutationId = config.mutationId; + this.mutationCache = config.mutationCache; + this.observers = []; + this.state = config.state || getDefaultState(); + this.meta = config.meta; + } + + var _proto = Mutation.prototype; + + _proto.setState = function setState(state) { + this.dispatch({ + type: 'setState', + state: state + }); + }; + + _proto.addObserver = function addObserver(observer) { + if (this.observers.indexOf(observer) === -1) { + this.observers.push(observer); + } + }; + + _proto.removeObserver = function removeObserver(observer) { + this.observers = this.observers.filter(function (x) { + return x !== observer; + }); + }; + + _proto.cancel = function cancel() { + if (this.retryer) { + this.retryer.cancel(); + return this.retryer.promise.then(_utils__WEBPACK_IMPORTED_MODULE_1__.noop).catch(_utils__WEBPACK_IMPORTED_MODULE_1__.noop); + } + + return Promise.resolve(); + }; + + _proto.continue = function _continue() { + if (this.retryer) { + this.retryer.continue(); + return this.retryer.promise; + } + + return this.execute(); + }; + + _proto.execute = function execute() { + var _this = this; + + var data; + var restored = this.state.status === 'loading'; + var promise = Promise.resolve(); + + if (!restored) { + this.dispatch({ + type: 'loading', + variables: this.options.variables + }); + promise = promise.then(function () { + // Notify cache callback + _this.mutationCache.config.onMutate == null ? void 0 : _this.mutationCache.config.onMutate(_this.state.variables, _this); + }).then(function () { + return _this.options.onMutate == null ? void 0 : _this.options.onMutate(_this.state.variables); + }).then(function (context) { + if (context !== _this.state.context) { + _this.dispatch({ + type: 'loading', + context: context, + variables: _this.state.variables + }); + } + }); + } + + return promise.then(function () { + return _this.executeMutation(); + }).then(function (result) { + data = result; // Notify cache callback + + _this.mutationCache.config.onSuccess == null ? void 0 : _this.mutationCache.config.onSuccess(data, _this.state.variables, _this.state.context, _this); + }).then(function () { + return _this.options.onSuccess == null ? void 0 : _this.options.onSuccess(data, _this.state.variables, _this.state.context); + }).then(function () { + return _this.options.onSettled == null ? void 0 : _this.options.onSettled(data, null, _this.state.variables, _this.state.context); + }).then(function () { + _this.dispatch({ + type: 'success', + data: data + }); + + return data; + }).catch(function (error) { + // Notify cache callback + _this.mutationCache.config.onError == null ? void 0 : _this.mutationCache.config.onError(error, _this.state.variables, _this.state.context, _this); // Log error + + (0,_logger__WEBPACK_IMPORTED_MODULE_2__.getLogger)().error(error); + return Promise.resolve().then(function () { + return _this.options.onError == null ? void 0 : _this.options.onError(error, _this.state.variables, _this.state.context); + }).then(function () { + return _this.options.onSettled == null ? void 0 : _this.options.onSettled(undefined, error, _this.state.variables, _this.state.context); + }).then(function () { + _this.dispatch({ + type: 'error', + error: error + }); + + throw error; + }); + }); + }; + + _proto.executeMutation = function executeMutation() { + var _this2 = this, + _this$options$retry; + + this.retryer = new _retryer__WEBPACK_IMPORTED_MODULE_3__.Retryer({ + fn: function fn() { + if (!_this2.options.mutationFn) { + return Promise.reject('No mutationFn found'); + } + + return _this2.options.mutationFn(_this2.state.variables); + }, + onFail: function onFail() { + _this2.dispatch({ + type: 'failed' + }); + }, + onPause: function onPause() { + _this2.dispatch({ + type: 'pause' + }); + }, + onContinue: function onContinue() { + _this2.dispatch({ + type: 'continue' + }); + }, + retry: (_this$options$retry = this.options.retry) != null ? _this$options$retry : 0, + retryDelay: this.options.retryDelay + }); + return this.retryer.promise; + }; + + _proto.dispatch = function dispatch(action) { + var _this3 = this; + + this.state = reducer(this.state, action); + _notifyManager__WEBPACK_IMPORTED_MODULE_4__.notifyManager.batch(function () { + _this3.observers.forEach(function (observer) { + observer.onMutationUpdate(action); + }); + + _this3.mutationCache.notify(_this3); + }); + }; + + return Mutation; +}(); +function getDefaultState() { + return { + context: undefined, + data: undefined, + error: null, + failureCount: 0, + isPaused: false, + status: 'idle', + variables: undefined + }; +} + +function reducer(state, action) { + switch (action.type) { + case 'failed': + return (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({}, state, { + failureCount: state.failureCount + 1 + }); + + case 'pause': + return (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({}, state, { + isPaused: true + }); + + case 'continue': + return (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({}, state, { + isPaused: false + }); + + case 'loading': + return (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({}, state, { + context: action.context, + data: undefined, + error: null, + isPaused: false, + status: 'loading', + variables: action.variables + }); + + case 'success': + return (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({}, state, { + data: action.data, + error: null, + status: 'success', + isPaused: false + }); + + case 'error': + return (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({}, state, { + data: undefined, + error: action.error, + failureCount: state.failureCount + 1, + isPaused: false, + status: 'error' + }); + + case 'setState': + return (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({}, state, action.state); + + default: + return state; + } +} + +/***/ }), + +/***/ "../node_modules/react-query/es/core/mutationCache.js": +/*!************************************************************!*\ + !*** ../node_modules/react-query/es/core/mutationCache.js ***! + \************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ MutationCache: () => (/* binding */ MutationCache) +/* harmony export */ }); +/* harmony import */ var _babel_runtime_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/inheritsLoose */ "../node_modules/@babel/runtime/helpers/esm/inheritsLoose.js"); +/* harmony import */ var _notifyManager__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./notifyManager */ "../node_modules/react-query/es/core/notifyManager.js"); +/* harmony import */ var _mutation__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./mutation */ "../node_modules/react-query/es/core/mutation.js"); +/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./utils */ "../node_modules/react-query/es/core/utils.js"); +/* harmony import */ var _subscribable__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./subscribable */ "../node_modules/react-query/es/core/subscribable.js"); + + + + + // TYPES + +// CLASS +var MutationCache = /*#__PURE__*/function (_Subscribable) { + (0,_babel_runtime_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_0__["default"])(MutationCache, _Subscribable); + + function MutationCache(config) { + var _this; + + _this = _Subscribable.call(this) || this; + _this.config = config || {}; + _this.mutations = []; + _this.mutationId = 0; + return _this; + } + + var _proto = MutationCache.prototype; + + _proto.build = function build(client, options, state) { + var mutation = new _mutation__WEBPACK_IMPORTED_MODULE_1__.Mutation({ + mutationCache: this, + mutationId: ++this.mutationId, + options: client.defaultMutationOptions(options), + state: state, + defaultOptions: options.mutationKey ? client.getMutationDefaults(options.mutationKey) : undefined, + meta: options.meta + }); + this.add(mutation); + return mutation; + }; + + _proto.add = function add(mutation) { + this.mutations.push(mutation); + this.notify(mutation); + }; + + _proto.remove = function remove(mutation) { + this.mutations = this.mutations.filter(function (x) { + return x !== mutation; + }); + mutation.cancel(); + this.notify(mutation); + }; + + _proto.clear = function clear() { + var _this2 = this; + + _notifyManager__WEBPACK_IMPORTED_MODULE_2__.notifyManager.batch(function () { + _this2.mutations.forEach(function (mutation) { + _this2.remove(mutation); + }); + }); + }; + + _proto.getAll = function getAll() { + return this.mutations; + }; + + _proto.find = function find(filters) { + if (typeof filters.exact === 'undefined') { + filters.exact = true; + } + + return this.mutations.find(function (mutation) { + return (0,_utils__WEBPACK_IMPORTED_MODULE_3__.matchMutation)(filters, mutation); + }); + }; + + _proto.findAll = function findAll(filters) { + return this.mutations.filter(function (mutation) { + return (0,_utils__WEBPACK_IMPORTED_MODULE_3__.matchMutation)(filters, mutation); + }); + }; + + _proto.notify = function notify(mutation) { + var _this3 = this; + + _notifyManager__WEBPACK_IMPORTED_MODULE_2__.notifyManager.batch(function () { + _this3.listeners.forEach(function (listener) { + listener(mutation); + }); + }); + }; + + _proto.onFocus = function onFocus() { + this.resumePausedMutations(); + }; + + _proto.onOnline = function onOnline() { + this.resumePausedMutations(); + }; + + _proto.resumePausedMutations = function resumePausedMutations() { + var pausedMutations = this.mutations.filter(function (x) { + return x.state.isPaused; + }); + return _notifyManager__WEBPACK_IMPORTED_MODULE_2__.notifyManager.batch(function () { + return pausedMutations.reduce(function (promise, mutation) { + return promise.then(function () { + return mutation.continue().catch(_utils__WEBPACK_IMPORTED_MODULE_3__.noop); + }); + }, Promise.resolve()); + }); + }; + + return MutationCache; +}(_subscribable__WEBPACK_IMPORTED_MODULE_4__.Subscribable); + +/***/ }), + +/***/ "../node_modules/react-query/es/core/mutationObserver.js": +/*!***************************************************************!*\ + !*** ../node_modules/react-query/es/core/mutationObserver.js ***! + \***************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ MutationObserver: () => (/* binding */ MutationObserver) +/* harmony export */ }); +/* harmony import */ var _babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/extends */ "../node_modules/@babel/runtime/helpers/esm/extends.js"); +/* harmony import */ var _babel_runtime_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/esm/inheritsLoose */ "../node_modules/@babel/runtime/helpers/esm/inheritsLoose.js"); +/* harmony import */ var _mutation__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./mutation */ "../node_modules/react-query/es/core/mutation.js"); +/* harmony import */ var _notifyManager__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./notifyManager */ "../node_modules/react-query/es/core/notifyManager.js"); +/* harmony import */ var _subscribable__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./subscribable */ "../node_modules/react-query/es/core/subscribable.js"); + + + + + +// CLASS +var MutationObserver = /*#__PURE__*/function (_Subscribable) { + (0,_babel_runtime_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_1__["default"])(MutationObserver, _Subscribable); + + function MutationObserver(client, options) { + var _this; + + _this = _Subscribable.call(this) || this; + _this.client = client; + + _this.setOptions(options); + + _this.bindMethods(); + + _this.updateResult(); + + return _this; + } + + var _proto = MutationObserver.prototype; + + _proto.bindMethods = function bindMethods() { + this.mutate = this.mutate.bind(this); + this.reset = this.reset.bind(this); + }; + + _proto.setOptions = function setOptions(options) { + this.options = this.client.defaultMutationOptions(options); + }; + + _proto.onUnsubscribe = function onUnsubscribe() { + if (!this.listeners.length) { + var _this$currentMutation; + + (_this$currentMutation = this.currentMutation) == null ? void 0 : _this$currentMutation.removeObserver(this); + } + }; + + _proto.onMutationUpdate = function onMutationUpdate(action) { + this.updateResult(); // Determine which callbacks to trigger + + var notifyOptions = { + listeners: true + }; + + if (action.type === 'success') { + notifyOptions.onSuccess = true; + } else if (action.type === 'error') { + notifyOptions.onError = true; + } + + this.notify(notifyOptions); + }; + + _proto.getCurrentResult = function getCurrentResult() { + return this.currentResult; + }; + + _proto.reset = function reset() { + this.currentMutation = undefined; + this.updateResult(); + this.notify({ + listeners: true + }); + }; + + _proto.mutate = function mutate(variables, options) { + this.mutateOptions = options; + + if (this.currentMutation) { + this.currentMutation.removeObserver(this); + } + + this.currentMutation = this.client.getMutationCache().build(this.client, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({}, this.options, { + variables: typeof variables !== 'undefined' ? variables : this.options.variables + })); + this.currentMutation.addObserver(this); + return this.currentMutation.execute(); + }; + + _proto.updateResult = function updateResult() { + var state = this.currentMutation ? this.currentMutation.state : (0,_mutation__WEBPACK_IMPORTED_MODULE_2__.getDefaultState)(); + + var result = (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({}, state, { + isLoading: state.status === 'loading', + isSuccess: state.status === 'success', + isError: state.status === 'error', + isIdle: state.status === 'idle', + mutate: this.mutate, + reset: this.reset + }); + + this.currentResult = result; + }; + + _proto.notify = function notify(options) { + var _this2 = this; + + _notifyManager__WEBPACK_IMPORTED_MODULE_3__.notifyManager.batch(function () { + // First trigger the mutate callbacks + if (_this2.mutateOptions) { + if (options.onSuccess) { + _this2.mutateOptions.onSuccess == null ? void 0 : _this2.mutateOptions.onSuccess(_this2.currentResult.data, _this2.currentResult.variables, _this2.currentResult.context); + _this2.mutateOptions.onSettled == null ? void 0 : _this2.mutateOptions.onSettled(_this2.currentResult.data, null, _this2.currentResult.variables, _this2.currentResult.context); + } else if (options.onError) { + _this2.mutateOptions.onError == null ? void 0 : _this2.mutateOptions.onError(_this2.currentResult.error, _this2.currentResult.variables, _this2.currentResult.context); + _this2.mutateOptions.onSettled == null ? void 0 : _this2.mutateOptions.onSettled(undefined, _this2.currentResult.error, _this2.currentResult.variables, _this2.currentResult.context); + } + } // Then trigger the listeners + + + if (options.listeners) { + _this2.listeners.forEach(function (listener) { + listener(_this2.currentResult); + }); + } + }); + }; + + return MutationObserver; +}(_subscribable__WEBPACK_IMPORTED_MODULE_4__.Subscribable); + +/***/ }), + +/***/ "../node_modules/react-query/es/core/notifyManager.js": +/*!************************************************************!*\ + !*** ../node_modules/react-query/es/core/notifyManager.js ***! + \************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ NotifyManager: () => (/* binding */ NotifyManager), +/* harmony export */ notifyManager: () => (/* binding */ notifyManager) +/* harmony export */ }); +/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./utils */ "../node_modules/react-query/es/core/utils.js"); + // TYPES + +// CLASS +var NotifyManager = /*#__PURE__*/function () { + function NotifyManager() { + this.queue = []; + this.transactions = 0; + + this.notifyFn = function (callback) { + callback(); + }; + + this.batchNotifyFn = function (callback) { + callback(); + }; + } + + var _proto = NotifyManager.prototype; + + _proto.batch = function batch(callback) { + var result; + this.transactions++; + + try { + result = callback(); + } finally { + this.transactions--; + + if (!this.transactions) { + this.flush(); + } + } + + return result; + }; + + _proto.schedule = function schedule(callback) { + var _this = this; + + if (this.transactions) { + this.queue.push(callback); + } else { + (0,_utils__WEBPACK_IMPORTED_MODULE_0__.scheduleMicrotask)(function () { + _this.notifyFn(callback); + }); + } + } + /** + * All calls to the wrapped function will be batched. + */ + ; + + _proto.batchCalls = function batchCalls(callback) { + var _this2 = this; + + return function () { + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + _this2.schedule(function () { + callback.apply(void 0, args); + }); + }; + }; + + _proto.flush = function flush() { + var _this3 = this; + + var queue = this.queue; + this.queue = []; + + if (queue.length) { + (0,_utils__WEBPACK_IMPORTED_MODULE_0__.scheduleMicrotask)(function () { + _this3.batchNotifyFn(function () { + queue.forEach(function (callback) { + _this3.notifyFn(callback); + }); + }); + }); + } + } + /** + * Use this method to set a custom notify function. + * This can be used to for example wrap notifications with `React.act` while running tests. + */ + ; + + _proto.setNotifyFunction = function setNotifyFunction(fn) { + this.notifyFn = fn; + } + /** + * Use this method to set a custom function to batch notifications together into a single tick. + * By default React Query will use the batch function provided by ReactDOM or React Native. + */ + ; + + _proto.setBatchNotifyFunction = function setBatchNotifyFunction(fn) { + this.batchNotifyFn = fn; + }; + + return NotifyManager; +}(); // SINGLETON + +var notifyManager = new NotifyManager(); + +/***/ }), + +/***/ "../node_modules/react-query/es/core/onlineManager.js": +/*!************************************************************!*\ + !*** ../node_modules/react-query/es/core/onlineManager.js ***! + \************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ OnlineManager: () => (/* binding */ OnlineManager), +/* harmony export */ onlineManager: () => (/* binding */ onlineManager) +/* harmony export */ }); +/* harmony import */ var _babel_runtime_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/inheritsLoose */ "../node_modules/@babel/runtime/helpers/esm/inheritsLoose.js"); +/* harmony import */ var _subscribable__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./subscribable */ "../node_modules/react-query/es/core/subscribable.js"); +/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./utils */ "../node_modules/react-query/es/core/utils.js"); + + + +var OnlineManager = /*#__PURE__*/function (_Subscribable) { + (0,_babel_runtime_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_0__["default"])(OnlineManager, _Subscribable); + + function OnlineManager() { + var _this; + + _this = _Subscribable.call(this) || this; + + _this.setup = function (onOnline) { + var _window; + + if (!_utils__WEBPACK_IMPORTED_MODULE_1__.isServer && ((_window = window) == null ? void 0 : _window.addEventListener)) { + var listener = function listener() { + return onOnline(); + }; // Listen to online + + + window.addEventListener('online', listener, false); + window.addEventListener('offline', listener, false); + return function () { + // Be sure to unsubscribe if a new handler is set + window.removeEventListener('online', listener); + window.removeEventListener('offline', listener); + }; + } + }; + + return _this; + } + + var _proto = OnlineManager.prototype; + + _proto.onSubscribe = function onSubscribe() { + if (!this.cleanup) { + this.setEventListener(this.setup); + } + }; + + _proto.onUnsubscribe = function onUnsubscribe() { + if (!this.hasListeners()) { + var _this$cleanup; + + (_this$cleanup = this.cleanup) == null ? void 0 : _this$cleanup.call(this); + this.cleanup = undefined; + } + }; + + _proto.setEventListener = function setEventListener(setup) { + var _this$cleanup2, + _this2 = this; + + this.setup = setup; + (_this$cleanup2 = this.cleanup) == null ? void 0 : _this$cleanup2.call(this); + this.cleanup = setup(function (online) { + if (typeof online === 'boolean') { + _this2.setOnline(online); + } else { + _this2.onOnline(); + } + }); + }; + + _proto.setOnline = function setOnline(online) { + this.online = online; + + if (online) { + this.onOnline(); + } + }; + + _proto.onOnline = function onOnline() { + this.listeners.forEach(function (listener) { + listener(); + }); + }; + + _proto.isOnline = function isOnline() { + if (typeof this.online === 'boolean') { + return this.online; + } + + if (typeof navigator === 'undefined' || typeof navigator.onLine === 'undefined') { + return true; + } + + return navigator.onLine; + }; + + return OnlineManager; +}(_subscribable__WEBPACK_IMPORTED_MODULE_2__.Subscribable); +var onlineManager = new OnlineManager(); + +/***/ }), + +/***/ "../node_modules/react-query/es/core/queriesObserver.js": +/*!**************************************************************!*\ + !*** ../node_modules/react-query/es/core/queriesObserver.js ***! + \**************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ QueriesObserver: () => (/* binding */ QueriesObserver) +/* harmony export */ }); +/* harmony import */ var _babel_runtime_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/inheritsLoose */ "../node_modules/@babel/runtime/helpers/esm/inheritsLoose.js"); +/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./utils */ "../node_modules/react-query/es/core/utils.js"); +/* harmony import */ var _notifyManager__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./notifyManager */ "../node_modules/react-query/es/core/notifyManager.js"); +/* harmony import */ var _queryObserver__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./queryObserver */ "../node_modules/react-query/es/core/queryObserver.js"); +/* harmony import */ var _subscribable__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./subscribable */ "../node_modules/react-query/es/core/subscribable.js"); + + + + + +var QueriesObserver = /*#__PURE__*/function (_Subscribable) { + (0,_babel_runtime_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_0__["default"])(QueriesObserver, _Subscribable); + + function QueriesObserver(client, queries) { + var _this; + + _this = _Subscribable.call(this) || this; + _this.client = client; + _this.queries = []; + _this.result = []; + _this.observers = []; + _this.observersMap = {}; + + if (queries) { + _this.setQueries(queries); + } + + return _this; + } + + var _proto = QueriesObserver.prototype; + + _proto.onSubscribe = function onSubscribe() { + var _this2 = this; + + if (this.listeners.length === 1) { + this.observers.forEach(function (observer) { + observer.subscribe(function (result) { + _this2.onUpdate(observer, result); + }); + }); + } + }; + + _proto.onUnsubscribe = function onUnsubscribe() { + if (!this.listeners.length) { + this.destroy(); + } + }; + + _proto.destroy = function destroy() { + this.listeners = []; + this.observers.forEach(function (observer) { + observer.destroy(); + }); + }; + + _proto.setQueries = function setQueries(queries, notifyOptions) { + this.queries = queries; + this.updateObservers(notifyOptions); + }; + + _proto.getCurrentResult = function getCurrentResult() { + return this.result; + }; + + _proto.getOptimisticResult = function getOptimisticResult(queries) { + return this.findMatchingObservers(queries).map(function (match) { + return match.observer.getOptimisticResult(match.defaultedQueryOptions); + }); + }; + + _proto.findMatchingObservers = function findMatchingObservers(queries) { + var _this3 = this; + + var prevObservers = this.observers; + var defaultedQueryOptions = queries.map(function (options) { + return _this3.client.defaultQueryObserverOptions(options); + }); + var matchingObservers = defaultedQueryOptions.flatMap(function (defaultedOptions) { + var match = prevObservers.find(function (observer) { + return observer.options.queryHash === defaultedOptions.queryHash; + }); + + if (match != null) { + return [{ + defaultedQueryOptions: defaultedOptions, + observer: match + }]; + } + + return []; + }); + var matchedQueryHashes = matchingObservers.map(function (match) { + return match.defaultedQueryOptions.queryHash; + }); + var unmatchedQueries = defaultedQueryOptions.filter(function (defaultedOptions) { + return !matchedQueryHashes.includes(defaultedOptions.queryHash); + }); + var unmatchedObservers = prevObservers.filter(function (prevObserver) { + return !matchingObservers.some(function (match) { + return match.observer === prevObserver; + }); + }); + var newOrReusedObservers = unmatchedQueries.map(function (options, index) { + if (options.keepPreviousData) { + // return previous data from one of the observers that no longer match + var previouslyUsedObserver = unmatchedObservers[index]; + + if (previouslyUsedObserver !== undefined) { + return { + defaultedQueryOptions: options, + observer: previouslyUsedObserver + }; + } + } + + return { + defaultedQueryOptions: options, + observer: _this3.getObserver(options) + }; + }); + + var sortMatchesByOrderOfQueries = function sortMatchesByOrderOfQueries(a, b) { + return defaultedQueryOptions.indexOf(a.defaultedQueryOptions) - defaultedQueryOptions.indexOf(b.defaultedQueryOptions); + }; + + return matchingObservers.concat(newOrReusedObservers).sort(sortMatchesByOrderOfQueries); + }; + + _proto.getObserver = function getObserver(options) { + var defaultedOptions = this.client.defaultQueryObserverOptions(options); + var currentObserver = this.observersMap[defaultedOptions.queryHash]; + return currentObserver != null ? currentObserver : new _queryObserver__WEBPACK_IMPORTED_MODULE_1__.QueryObserver(this.client, defaultedOptions); + }; + + _proto.updateObservers = function updateObservers(notifyOptions) { + var _this4 = this; + + _notifyManager__WEBPACK_IMPORTED_MODULE_2__.notifyManager.batch(function () { + var prevObservers = _this4.observers; + + var newObserverMatches = _this4.findMatchingObservers(_this4.queries); // set options for the new observers to notify of changes + + + newObserverMatches.forEach(function (match) { + return match.observer.setOptions(match.defaultedQueryOptions, notifyOptions); + }); + var newObservers = newObserverMatches.map(function (match) { + return match.observer; + }); + var newObserversMap = Object.fromEntries(newObservers.map(function (observer) { + return [observer.options.queryHash, observer]; + })); + var newResult = newObservers.map(function (observer) { + return observer.getCurrentResult(); + }); + var hasIndexChange = newObservers.some(function (observer, index) { + return observer !== prevObservers[index]; + }); + + if (prevObservers.length === newObservers.length && !hasIndexChange) { + return; + } + + _this4.observers = newObservers; + _this4.observersMap = newObserversMap; + _this4.result = newResult; + + if (!_this4.hasListeners()) { + return; + } + + (0,_utils__WEBPACK_IMPORTED_MODULE_3__.difference)(prevObservers, newObservers).forEach(function (observer) { + observer.destroy(); + }); + (0,_utils__WEBPACK_IMPORTED_MODULE_3__.difference)(newObservers, prevObservers).forEach(function (observer) { + observer.subscribe(function (result) { + _this4.onUpdate(observer, result); + }); + }); + + _this4.notify(); + }); + }; + + _proto.onUpdate = function onUpdate(observer, result) { + var index = this.observers.indexOf(observer); + + if (index !== -1) { + this.result = (0,_utils__WEBPACK_IMPORTED_MODULE_3__.replaceAt)(this.result, index, result); + this.notify(); + } + }; + + _proto.notify = function notify() { + var _this5 = this; + + _notifyManager__WEBPACK_IMPORTED_MODULE_2__.notifyManager.batch(function () { + _this5.listeners.forEach(function (listener) { + listener(_this5.result); + }); + }); + }; + + return QueriesObserver; +}(_subscribable__WEBPACK_IMPORTED_MODULE_4__.Subscribable); + +/***/ }), + +/***/ "../node_modules/react-query/es/core/query.js": +/*!****************************************************!*\ + !*** ../node_modules/react-query/es/core/query.js ***! + \****************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ Query: () => (/* binding */ Query) +/* harmony export */ }); +/* harmony import */ var _babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/extends */ "../node_modules/@babel/runtime/helpers/esm/extends.js"); +/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./utils */ "../node_modules/react-query/es/core/utils.js"); +/* harmony import */ var _notifyManager__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./notifyManager */ "../node_modules/react-query/es/core/notifyManager.js"); +/* harmony import */ var _logger__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./logger */ "../node_modules/react-query/es/core/logger.js"); +/* harmony import */ var _retryer__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./retryer */ "../node_modules/react-query/es/core/retryer.js"); + + + + + // TYPES + +// CLASS +var Query = /*#__PURE__*/function () { + function Query(config) { + this.abortSignalConsumed = false; + this.hadObservers = false; + this.defaultOptions = config.defaultOptions; + this.setOptions(config.options); + this.observers = []; + this.cache = config.cache; + this.queryKey = config.queryKey; + this.queryHash = config.queryHash; + this.initialState = config.state || this.getDefaultState(this.options); + this.state = this.initialState; + this.meta = config.meta; + this.scheduleGc(); + } + + var _proto = Query.prototype; + + _proto.setOptions = function setOptions(options) { + var _this$options$cacheTi; + + this.options = (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({}, this.defaultOptions, options); + this.meta = options == null ? void 0 : options.meta; // Default to 5 minutes if not cache time is set + + this.cacheTime = Math.max(this.cacheTime || 0, (_this$options$cacheTi = this.options.cacheTime) != null ? _this$options$cacheTi : 5 * 60 * 1000); + }; + + _proto.setDefaultOptions = function setDefaultOptions(options) { + this.defaultOptions = options; + }; + + _proto.scheduleGc = function scheduleGc() { + var _this = this; + + this.clearGcTimeout(); + + if ((0,_utils__WEBPACK_IMPORTED_MODULE_1__.isValidTimeout)(this.cacheTime)) { + this.gcTimeout = setTimeout(function () { + _this.optionalRemove(); + }, this.cacheTime); + } + }; + + _proto.clearGcTimeout = function clearGcTimeout() { + if (this.gcTimeout) { + clearTimeout(this.gcTimeout); + this.gcTimeout = undefined; + } + }; + + _proto.optionalRemove = function optionalRemove() { + if (!this.observers.length) { + if (this.state.isFetching) { + if (this.hadObservers) { + this.scheduleGc(); + } + } else { + this.cache.remove(this); + } + } + }; + + _proto.setData = function setData(updater, options) { + var _this$options$isDataE, _this$options; + + var prevData = this.state.data; // Get the new data + + var data = (0,_utils__WEBPACK_IMPORTED_MODULE_1__.functionalUpdate)(updater, prevData); // Use prev data if an isDataEqual function is defined and returns `true` + + if ((_this$options$isDataE = (_this$options = this.options).isDataEqual) == null ? void 0 : _this$options$isDataE.call(_this$options, prevData, data)) { + data = prevData; + } else if (this.options.structuralSharing !== false) { + // Structurally share data between prev and new data if needed + data = (0,_utils__WEBPACK_IMPORTED_MODULE_1__.replaceEqualDeep)(prevData, data); + } // Set data and mark it as cached + + + this.dispatch({ + data: data, + type: 'success', + dataUpdatedAt: options == null ? void 0 : options.updatedAt + }); + return data; + }; + + _proto.setState = function setState(state, setStateOptions) { + this.dispatch({ + type: 'setState', + state: state, + setStateOptions: setStateOptions + }); + }; + + _proto.cancel = function cancel(options) { + var _this$retryer; + + var promise = this.promise; + (_this$retryer = this.retryer) == null ? void 0 : _this$retryer.cancel(options); + return promise ? promise.then(_utils__WEBPACK_IMPORTED_MODULE_1__.noop).catch(_utils__WEBPACK_IMPORTED_MODULE_1__.noop) : Promise.resolve(); + }; + + _proto.destroy = function destroy() { + this.clearGcTimeout(); + this.cancel({ + silent: true + }); + }; + + _proto.reset = function reset() { + this.destroy(); + this.setState(this.initialState); + }; + + _proto.isActive = function isActive() { + return this.observers.some(function (observer) { + return observer.options.enabled !== false; + }); + }; + + _proto.isFetching = function isFetching() { + return this.state.isFetching; + }; + + _proto.isStale = function isStale() { + return this.state.isInvalidated || !this.state.dataUpdatedAt || this.observers.some(function (observer) { + return observer.getCurrentResult().isStale; + }); + }; + + _proto.isStaleByTime = function isStaleByTime(staleTime) { + if (staleTime === void 0) { + staleTime = 0; + } + + return this.state.isInvalidated || !this.state.dataUpdatedAt || !(0,_utils__WEBPACK_IMPORTED_MODULE_1__.timeUntilStale)(this.state.dataUpdatedAt, staleTime); + }; + + _proto.onFocus = function onFocus() { + var _this$retryer2; + + var observer = this.observers.find(function (x) { + return x.shouldFetchOnWindowFocus(); + }); + + if (observer) { + observer.refetch(); + } // Continue fetch if currently paused + + + (_this$retryer2 = this.retryer) == null ? void 0 : _this$retryer2.continue(); + }; + + _proto.onOnline = function onOnline() { + var _this$retryer3; + + var observer = this.observers.find(function (x) { + return x.shouldFetchOnReconnect(); + }); + + if (observer) { + observer.refetch(); + } // Continue fetch if currently paused + + + (_this$retryer3 = this.retryer) == null ? void 0 : _this$retryer3.continue(); + }; + + _proto.addObserver = function addObserver(observer) { + if (this.observers.indexOf(observer) === -1) { + this.observers.push(observer); + this.hadObservers = true; // Stop the query from being garbage collected + + this.clearGcTimeout(); + this.cache.notify({ + type: 'observerAdded', + query: this, + observer: observer + }); + } + }; + + _proto.removeObserver = function removeObserver(observer) { + if (this.observers.indexOf(observer) !== -1) { + this.observers = this.observers.filter(function (x) { + return x !== observer; + }); + + if (!this.observers.length) { + // If the transport layer does not support cancellation + // we'll let the query continue so the result can be cached + if (this.retryer) { + if (this.retryer.isTransportCancelable || this.abortSignalConsumed) { + this.retryer.cancel({ + revert: true + }); + } else { + this.retryer.cancelRetry(); + } + } + + if (this.cacheTime) { + this.scheduleGc(); + } else { + this.cache.remove(this); + } + } + + this.cache.notify({ + type: 'observerRemoved', + query: this, + observer: observer + }); + } + }; + + _proto.getObserversCount = function getObserversCount() { + return this.observers.length; + }; + + _proto.invalidate = function invalidate() { + if (!this.state.isInvalidated) { + this.dispatch({ + type: 'invalidate' + }); + } + }; + + _proto.fetch = function fetch(options, fetchOptions) { + var _this2 = this, + _this$options$behavio, + _context$fetchOptions, + _abortController$abor; + + if (this.state.isFetching) { + if (this.state.dataUpdatedAt && (fetchOptions == null ? void 0 : fetchOptions.cancelRefetch)) { + // Silently cancel current fetch if the user wants to cancel refetches + this.cancel({ + silent: true + }); + } else if (this.promise) { + var _this$retryer4; + + // make sure that retries that were potentially cancelled due to unmounts can continue + (_this$retryer4 = this.retryer) == null ? void 0 : _this$retryer4.continueRetry(); // Return current promise if we are already fetching + + return this.promise; + } + } // Update config if passed, otherwise the config from the last execution is used + + + if (options) { + this.setOptions(options); + } // Use the options from the first observer with a query function if no function is found. + // This can happen when the query is hydrated or created with setQueryData. + + + if (!this.options.queryFn) { + var observer = this.observers.find(function (x) { + return x.options.queryFn; + }); + + if (observer) { + this.setOptions(observer.options); + } + } + + var queryKey = (0,_utils__WEBPACK_IMPORTED_MODULE_1__.ensureQueryKeyArray)(this.queryKey); + var abortController = (0,_utils__WEBPACK_IMPORTED_MODULE_1__.getAbortController)(); // Create query function context + + var queryFnContext = { + queryKey: queryKey, + pageParam: undefined, + meta: this.meta + }; + Object.defineProperty(queryFnContext, 'signal', { + enumerable: true, + get: function get() { + if (abortController) { + _this2.abortSignalConsumed = true; + return abortController.signal; + } + + return undefined; + } + }); // Create fetch function + + var fetchFn = function fetchFn() { + if (!_this2.options.queryFn) { + return Promise.reject('Missing queryFn'); + } + + _this2.abortSignalConsumed = false; + return _this2.options.queryFn(queryFnContext); + }; // Trigger behavior hook + + + var context = { + fetchOptions: fetchOptions, + options: this.options, + queryKey: queryKey, + state: this.state, + fetchFn: fetchFn, + meta: this.meta + }; + + if ((_this$options$behavio = this.options.behavior) == null ? void 0 : _this$options$behavio.onFetch) { + var _this$options$behavio2; + + (_this$options$behavio2 = this.options.behavior) == null ? void 0 : _this$options$behavio2.onFetch(context); + } // Store state in case the current fetch needs to be reverted + + + this.revertState = this.state; // Set to fetching state if not already in it + + if (!this.state.isFetching || this.state.fetchMeta !== ((_context$fetchOptions = context.fetchOptions) == null ? void 0 : _context$fetchOptions.meta)) { + var _context$fetchOptions2; + + this.dispatch({ + type: 'fetch', + meta: (_context$fetchOptions2 = context.fetchOptions) == null ? void 0 : _context$fetchOptions2.meta + }); + } // Try to fetch the data + + + this.retryer = new _retryer__WEBPACK_IMPORTED_MODULE_2__.Retryer({ + fn: context.fetchFn, + abort: abortController == null ? void 0 : (_abortController$abor = abortController.abort) == null ? void 0 : _abortController$abor.bind(abortController), + onSuccess: function onSuccess(data) { + _this2.setData(data); // Notify cache callback + + + _this2.cache.config.onSuccess == null ? void 0 : _this2.cache.config.onSuccess(data, _this2); // Remove query after fetching if cache time is 0 + + if (_this2.cacheTime === 0) { + _this2.optionalRemove(); + } + }, + onError: function onError(error) { + // Optimistically update state if needed + if (!((0,_retryer__WEBPACK_IMPORTED_MODULE_2__.isCancelledError)(error) && error.silent)) { + _this2.dispatch({ + type: 'error', + error: error + }); + } + + if (!(0,_retryer__WEBPACK_IMPORTED_MODULE_2__.isCancelledError)(error)) { + // Notify cache callback + _this2.cache.config.onError == null ? void 0 : _this2.cache.config.onError(error, _this2); // Log error + + (0,_logger__WEBPACK_IMPORTED_MODULE_3__.getLogger)().error(error); + } // Remove query after fetching if cache time is 0 + + + if (_this2.cacheTime === 0) { + _this2.optionalRemove(); + } + }, + onFail: function onFail() { + _this2.dispatch({ + type: 'failed' + }); + }, + onPause: function onPause() { + _this2.dispatch({ + type: 'pause' + }); + }, + onContinue: function onContinue() { + _this2.dispatch({ + type: 'continue' + }); + }, + retry: context.options.retry, + retryDelay: context.options.retryDelay + }); + this.promise = this.retryer.promise; + return this.promise; + }; + + _proto.dispatch = function dispatch(action) { + var _this3 = this; + + this.state = this.reducer(this.state, action); + _notifyManager__WEBPACK_IMPORTED_MODULE_4__.notifyManager.batch(function () { + _this3.observers.forEach(function (observer) { + observer.onQueryUpdate(action); + }); + + _this3.cache.notify({ + query: _this3, + type: 'queryUpdated', + action: action + }); + }); + }; + + _proto.getDefaultState = function getDefaultState(options) { + var data = typeof options.initialData === 'function' ? options.initialData() : options.initialData; + var hasInitialData = typeof options.initialData !== 'undefined'; + var initialDataUpdatedAt = hasInitialData ? typeof options.initialDataUpdatedAt === 'function' ? options.initialDataUpdatedAt() : options.initialDataUpdatedAt : 0; + var hasData = typeof data !== 'undefined'; + return { + data: data, + dataUpdateCount: 0, + dataUpdatedAt: hasData ? initialDataUpdatedAt != null ? initialDataUpdatedAt : Date.now() : 0, + error: null, + errorUpdateCount: 0, + errorUpdatedAt: 0, + fetchFailureCount: 0, + fetchMeta: null, + isFetching: false, + isInvalidated: false, + isPaused: false, + status: hasData ? 'success' : 'idle' + }; + }; + + _proto.reducer = function reducer(state, action) { + var _action$meta, _action$dataUpdatedAt; + + switch (action.type) { + case 'failed': + return (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({}, state, { + fetchFailureCount: state.fetchFailureCount + 1 + }); + + case 'pause': + return (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({}, state, { + isPaused: true + }); + + case 'continue': + return (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({}, state, { + isPaused: false + }); + + case 'fetch': + return (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({}, state, { + fetchFailureCount: 0, + fetchMeta: (_action$meta = action.meta) != null ? _action$meta : null, + isFetching: true, + isPaused: false + }, !state.dataUpdatedAt && { + error: null, + status: 'loading' + }); + + case 'success': + return (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({}, state, { + data: action.data, + dataUpdateCount: state.dataUpdateCount + 1, + dataUpdatedAt: (_action$dataUpdatedAt = action.dataUpdatedAt) != null ? _action$dataUpdatedAt : Date.now(), + error: null, + fetchFailureCount: 0, + isFetching: false, + isInvalidated: false, + isPaused: false, + status: 'success' + }); + + case 'error': + var error = action.error; + + if ((0,_retryer__WEBPACK_IMPORTED_MODULE_2__.isCancelledError)(error) && error.revert && this.revertState) { + return (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({}, this.revertState); + } + + return (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({}, state, { + error: error, + errorUpdateCount: state.errorUpdateCount + 1, + errorUpdatedAt: Date.now(), + fetchFailureCount: state.fetchFailureCount + 1, + isFetching: false, + isPaused: false, + status: 'error' + }); + + case 'invalidate': + return (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({}, state, { + isInvalidated: true + }); + + case 'setState': + return (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({}, state, action.state); + + default: + return state; + } + }; + + return Query; +}(); + +/***/ }), + +/***/ "../node_modules/react-query/es/core/queryCache.js": +/*!*********************************************************!*\ + !*** ../node_modules/react-query/es/core/queryCache.js ***! + \*********************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ QueryCache: () => (/* binding */ QueryCache) +/* harmony export */ }); +/* harmony import */ var _babel_runtime_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/inheritsLoose */ "../node_modules/@babel/runtime/helpers/esm/inheritsLoose.js"); +/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./utils */ "../node_modules/react-query/es/core/utils.js"); +/* harmony import */ var _query__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./query */ "../node_modules/react-query/es/core/query.js"); +/* harmony import */ var _notifyManager__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./notifyManager */ "../node_modules/react-query/es/core/notifyManager.js"); +/* harmony import */ var _subscribable__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./subscribable */ "../node_modules/react-query/es/core/subscribable.js"); + + + + + +// CLASS +var QueryCache = /*#__PURE__*/function (_Subscribable) { + (0,_babel_runtime_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_0__["default"])(QueryCache, _Subscribable); + + function QueryCache(config) { + var _this; + + _this = _Subscribable.call(this) || this; + _this.config = config || {}; + _this.queries = []; + _this.queriesMap = {}; + return _this; + } + + var _proto = QueryCache.prototype; + + _proto.build = function build(client, options, state) { + var _options$queryHash; + + var queryKey = options.queryKey; + var queryHash = (_options$queryHash = options.queryHash) != null ? _options$queryHash : (0,_utils__WEBPACK_IMPORTED_MODULE_1__.hashQueryKeyByOptions)(queryKey, options); + var query = this.get(queryHash); + + if (!query) { + query = new _query__WEBPACK_IMPORTED_MODULE_2__.Query({ + cache: this, + queryKey: queryKey, + queryHash: queryHash, + options: client.defaultQueryOptions(options), + state: state, + defaultOptions: client.getQueryDefaults(queryKey), + meta: options.meta + }); + this.add(query); + } + + return query; + }; + + _proto.add = function add(query) { + if (!this.queriesMap[query.queryHash]) { + this.queriesMap[query.queryHash] = query; + this.queries.push(query); + this.notify({ + type: 'queryAdded', + query: query + }); + } + }; + + _proto.remove = function remove(query) { + var queryInMap = this.queriesMap[query.queryHash]; + + if (queryInMap) { + query.destroy(); + this.queries = this.queries.filter(function (x) { + return x !== query; + }); + + if (queryInMap === query) { + delete this.queriesMap[query.queryHash]; + } + + this.notify({ + type: 'queryRemoved', + query: query + }); + } + }; + + _proto.clear = function clear() { + var _this2 = this; + + _notifyManager__WEBPACK_IMPORTED_MODULE_3__.notifyManager.batch(function () { + _this2.queries.forEach(function (query) { + _this2.remove(query); + }); + }); + }; + + _proto.get = function get(queryHash) { + return this.queriesMap[queryHash]; + }; + + _proto.getAll = function getAll() { + return this.queries; + }; + + _proto.find = function find(arg1, arg2) { + var _parseFilterArgs = (0,_utils__WEBPACK_IMPORTED_MODULE_1__.parseFilterArgs)(arg1, arg2), + filters = _parseFilterArgs[0]; + + if (typeof filters.exact === 'undefined') { + filters.exact = true; + } + + return this.queries.find(function (query) { + return (0,_utils__WEBPACK_IMPORTED_MODULE_1__.matchQuery)(filters, query); + }); + }; + + _proto.findAll = function findAll(arg1, arg2) { + var _parseFilterArgs2 = (0,_utils__WEBPACK_IMPORTED_MODULE_1__.parseFilterArgs)(arg1, arg2), + filters = _parseFilterArgs2[0]; + + return Object.keys(filters).length > 0 ? this.queries.filter(function (query) { + return (0,_utils__WEBPACK_IMPORTED_MODULE_1__.matchQuery)(filters, query); + }) : this.queries; + }; + + _proto.notify = function notify(event) { + var _this3 = this; + + _notifyManager__WEBPACK_IMPORTED_MODULE_3__.notifyManager.batch(function () { + _this3.listeners.forEach(function (listener) { + listener(event); + }); + }); + }; + + _proto.onFocus = function onFocus() { + var _this4 = this; + + _notifyManager__WEBPACK_IMPORTED_MODULE_3__.notifyManager.batch(function () { + _this4.queries.forEach(function (query) { + query.onFocus(); + }); + }); + }; + + _proto.onOnline = function onOnline() { + var _this5 = this; + + _notifyManager__WEBPACK_IMPORTED_MODULE_3__.notifyManager.batch(function () { + _this5.queries.forEach(function (query) { + query.onOnline(); + }); + }); + }; + + return QueryCache; +}(_subscribable__WEBPACK_IMPORTED_MODULE_4__.Subscribable); + +/***/ }), + +/***/ "../node_modules/react-query/es/core/queryClient.js": +/*!**********************************************************!*\ + !*** ../node_modules/react-query/es/core/queryClient.js ***! + \**********************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ QueryClient: () => (/* binding */ QueryClient) +/* harmony export */ }); +/* harmony import */ var _babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/extends */ "../node_modules/@babel/runtime/helpers/esm/extends.js"); +/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./utils */ "../node_modules/react-query/es/core/utils.js"); +/* harmony import */ var _queryCache__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./queryCache */ "../node_modules/react-query/es/core/queryCache.js"); +/* harmony import */ var _mutationCache__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./mutationCache */ "../node_modules/react-query/es/core/mutationCache.js"); +/* harmony import */ var _focusManager__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./focusManager */ "../node_modules/react-query/es/core/focusManager.js"); +/* harmony import */ var _onlineManager__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./onlineManager */ "../node_modules/react-query/es/core/onlineManager.js"); +/* harmony import */ var _notifyManager__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./notifyManager */ "../node_modules/react-query/es/core/notifyManager.js"); +/* harmony import */ var _infiniteQueryBehavior__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./infiniteQueryBehavior */ "../node_modules/react-query/es/core/infiniteQueryBehavior.js"); + + + + + + + + +// CLASS +var QueryClient = /*#__PURE__*/function () { + function QueryClient(config) { + if (config === void 0) { + config = {}; + } + + this.queryCache = config.queryCache || new _queryCache__WEBPACK_IMPORTED_MODULE_1__.QueryCache(); + this.mutationCache = config.mutationCache || new _mutationCache__WEBPACK_IMPORTED_MODULE_2__.MutationCache(); + this.defaultOptions = config.defaultOptions || {}; + this.queryDefaults = []; + this.mutationDefaults = []; + } + + var _proto = QueryClient.prototype; + + _proto.mount = function mount() { + var _this = this; + + this.unsubscribeFocus = _focusManager__WEBPACK_IMPORTED_MODULE_3__.focusManager.subscribe(function () { + if (_focusManager__WEBPACK_IMPORTED_MODULE_3__.focusManager.isFocused() && _onlineManager__WEBPACK_IMPORTED_MODULE_4__.onlineManager.isOnline()) { + _this.mutationCache.onFocus(); + + _this.queryCache.onFocus(); + } + }); + this.unsubscribeOnline = _onlineManager__WEBPACK_IMPORTED_MODULE_4__.onlineManager.subscribe(function () { + if (_focusManager__WEBPACK_IMPORTED_MODULE_3__.focusManager.isFocused() && _onlineManager__WEBPACK_IMPORTED_MODULE_4__.onlineManager.isOnline()) { + _this.mutationCache.onOnline(); + + _this.queryCache.onOnline(); + } + }); + }; + + _proto.unmount = function unmount() { + var _this$unsubscribeFocu, _this$unsubscribeOnli; + + (_this$unsubscribeFocu = this.unsubscribeFocus) == null ? void 0 : _this$unsubscribeFocu.call(this); + (_this$unsubscribeOnli = this.unsubscribeOnline) == null ? void 0 : _this$unsubscribeOnli.call(this); + }; + + _proto.isFetching = function isFetching(arg1, arg2) { + var _parseFilterArgs = (0,_utils__WEBPACK_IMPORTED_MODULE_5__.parseFilterArgs)(arg1, arg2), + filters = _parseFilterArgs[0]; + + filters.fetching = true; + return this.queryCache.findAll(filters).length; + }; + + _proto.isMutating = function isMutating(filters) { + return this.mutationCache.findAll((0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({}, filters, { + fetching: true + })).length; + }; + + _proto.getQueryData = function getQueryData(queryKey, filters) { + var _this$queryCache$find; + + return (_this$queryCache$find = this.queryCache.find(queryKey, filters)) == null ? void 0 : _this$queryCache$find.state.data; + }; + + _proto.getQueriesData = function getQueriesData(queryKeyOrFilters) { + return this.getQueryCache().findAll(queryKeyOrFilters).map(function (_ref) { + var queryKey = _ref.queryKey, + state = _ref.state; + var data = state.data; + return [queryKey, data]; + }); + }; + + _proto.setQueryData = function setQueryData(queryKey, updater, options) { + var parsedOptions = (0,_utils__WEBPACK_IMPORTED_MODULE_5__.parseQueryArgs)(queryKey); + var defaultedOptions = this.defaultQueryOptions(parsedOptions); + return this.queryCache.build(this, defaultedOptions).setData(updater, options); + }; + + _proto.setQueriesData = function setQueriesData(queryKeyOrFilters, updater, options) { + var _this2 = this; + + return _notifyManager__WEBPACK_IMPORTED_MODULE_6__.notifyManager.batch(function () { + return _this2.getQueryCache().findAll(queryKeyOrFilters).map(function (_ref2) { + var queryKey = _ref2.queryKey; + return [queryKey, _this2.setQueryData(queryKey, updater, options)]; + }); + }); + }; + + _proto.getQueryState = function getQueryState(queryKey, filters) { + var _this$queryCache$find2; + + return (_this$queryCache$find2 = this.queryCache.find(queryKey, filters)) == null ? void 0 : _this$queryCache$find2.state; + }; + + _proto.removeQueries = function removeQueries(arg1, arg2) { + var _parseFilterArgs2 = (0,_utils__WEBPACK_IMPORTED_MODULE_5__.parseFilterArgs)(arg1, arg2), + filters = _parseFilterArgs2[0]; + + var queryCache = this.queryCache; + _notifyManager__WEBPACK_IMPORTED_MODULE_6__.notifyManager.batch(function () { + queryCache.findAll(filters).forEach(function (query) { + queryCache.remove(query); + }); + }); + }; + + _proto.resetQueries = function resetQueries(arg1, arg2, arg3) { + var _this3 = this; + + var _parseFilterArgs3 = (0,_utils__WEBPACK_IMPORTED_MODULE_5__.parseFilterArgs)(arg1, arg2, arg3), + filters = _parseFilterArgs3[0], + options = _parseFilterArgs3[1]; + + var queryCache = this.queryCache; + + var refetchFilters = (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({}, filters, { + active: true + }); + + return _notifyManager__WEBPACK_IMPORTED_MODULE_6__.notifyManager.batch(function () { + queryCache.findAll(filters).forEach(function (query) { + query.reset(); + }); + return _this3.refetchQueries(refetchFilters, options); + }); + }; + + _proto.cancelQueries = function cancelQueries(arg1, arg2, arg3) { + var _this4 = this; + + var _parseFilterArgs4 = (0,_utils__WEBPACK_IMPORTED_MODULE_5__.parseFilterArgs)(arg1, arg2, arg3), + filters = _parseFilterArgs4[0], + _parseFilterArgs4$ = _parseFilterArgs4[1], + cancelOptions = _parseFilterArgs4$ === void 0 ? {} : _parseFilterArgs4$; + + if (typeof cancelOptions.revert === 'undefined') { + cancelOptions.revert = true; + } + + var promises = _notifyManager__WEBPACK_IMPORTED_MODULE_6__.notifyManager.batch(function () { + return _this4.queryCache.findAll(filters).map(function (query) { + return query.cancel(cancelOptions); + }); + }); + return Promise.all(promises).then(_utils__WEBPACK_IMPORTED_MODULE_5__.noop).catch(_utils__WEBPACK_IMPORTED_MODULE_5__.noop); + }; + + _proto.invalidateQueries = function invalidateQueries(arg1, arg2, arg3) { + var _ref3, + _filters$refetchActiv, + _filters$refetchInact, + _this5 = this; + + var _parseFilterArgs5 = (0,_utils__WEBPACK_IMPORTED_MODULE_5__.parseFilterArgs)(arg1, arg2, arg3), + filters = _parseFilterArgs5[0], + options = _parseFilterArgs5[1]; + + var refetchFilters = (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({}, filters, { + // if filters.refetchActive is not provided and filters.active is explicitly false, + // e.g. invalidateQueries({ active: false }), we don't want to refetch active queries + active: (_ref3 = (_filters$refetchActiv = filters.refetchActive) != null ? _filters$refetchActiv : filters.active) != null ? _ref3 : true, + inactive: (_filters$refetchInact = filters.refetchInactive) != null ? _filters$refetchInact : false + }); + + return _notifyManager__WEBPACK_IMPORTED_MODULE_6__.notifyManager.batch(function () { + _this5.queryCache.findAll(filters).forEach(function (query) { + query.invalidate(); + }); + + return _this5.refetchQueries(refetchFilters, options); + }); + }; + + _proto.refetchQueries = function refetchQueries(arg1, arg2, arg3) { + var _this6 = this; + + var _parseFilterArgs6 = (0,_utils__WEBPACK_IMPORTED_MODULE_5__.parseFilterArgs)(arg1, arg2, arg3), + filters = _parseFilterArgs6[0], + options = _parseFilterArgs6[1]; + + var promises = _notifyManager__WEBPACK_IMPORTED_MODULE_6__.notifyManager.batch(function () { + return _this6.queryCache.findAll(filters).map(function (query) { + return query.fetch(undefined, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({}, options, { + meta: { + refetchPage: filters == null ? void 0 : filters.refetchPage + } + })); + }); + }); + var promise = Promise.all(promises).then(_utils__WEBPACK_IMPORTED_MODULE_5__.noop); + + if (!(options == null ? void 0 : options.throwOnError)) { + promise = promise.catch(_utils__WEBPACK_IMPORTED_MODULE_5__.noop); + } + + return promise; + }; + + _proto.fetchQuery = function fetchQuery(arg1, arg2, arg3) { + var parsedOptions = (0,_utils__WEBPACK_IMPORTED_MODULE_5__.parseQueryArgs)(arg1, arg2, arg3); + var defaultedOptions = this.defaultQueryOptions(parsedOptions); // https://github.com/tannerlinsley/react-query/issues/652 + + if (typeof defaultedOptions.retry === 'undefined') { + defaultedOptions.retry = false; + } + + var query = this.queryCache.build(this, defaultedOptions); + return query.isStaleByTime(defaultedOptions.staleTime) ? query.fetch(defaultedOptions) : Promise.resolve(query.state.data); + }; + + _proto.prefetchQuery = function prefetchQuery(arg1, arg2, arg3) { + return this.fetchQuery(arg1, arg2, arg3).then(_utils__WEBPACK_IMPORTED_MODULE_5__.noop).catch(_utils__WEBPACK_IMPORTED_MODULE_5__.noop); + }; + + _proto.fetchInfiniteQuery = function fetchInfiniteQuery(arg1, arg2, arg3) { + var parsedOptions = (0,_utils__WEBPACK_IMPORTED_MODULE_5__.parseQueryArgs)(arg1, arg2, arg3); + parsedOptions.behavior = (0,_infiniteQueryBehavior__WEBPACK_IMPORTED_MODULE_7__.infiniteQueryBehavior)(); + return this.fetchQuery(parsedOptions); + }; + + _proto.prefetchInfiniteQuery = function prefetchInfiniteQuery(arg1, arg2, arg3) { + return this.fetchInfiniteQuery(arg1, arg2, arg3).then(_utils__WEBPACK_IMPORTED_MODULE_5__.noop).catch(_utils__WEBPACK_IMPORTED_MODULE_5__.noop); + }; + + _proto.cancelMutations = function cancelMutations() { + var _this7 = this; + + var promises = _notifyManager__WEBPACK_IMPORTED_MODULE_6__.notifyManager.batch(function () { + return _this7.mutationCache.getAll().map(function (mutation) { + return mutation.cancel(); + }); + }); + return Promise.all(promises).then(_utils__WEBPACK_IMPORTED_MODULE_5__.noop).catch(_utils__WEBPACK_IMPORTED_MODULE_5__.noop); + }; + + _proto.resumePausedMutations = function resumePausedMutations() { + return this.getMutationCache().resumePausedMutations(); + }; + + _proto.executeMutation = function executeMutation(options) { + return this.mutationCache.build(this, options).execute(); + }; + + _proto.getQueryCache = function getQueryCache() { + return this.queryCache; + }; + + _proto.getMutationCache = function getMutationCache() { + return this.mutationCache; + }; + + _proto.getDefaultOptions = function getDefaultOptions() { + return this.defaultOptions; + }; + + _proto.setDefaultOptions = function setDefaultOptions(options) { + this.defaultOptions = options; + }; + + _proto.setQueryDefaults = function setQueryDefaults(queryKey, options) { + var result = this.queryDefaults.find(function (x) { + return (0,_utils__WEBPACK_IMPORTED_MODULE_5__.hashQueryKey)(queryKey) === (0,_utils__WEBPACK_IMPORTED_MODULE_5__.hashQueryKey)(x.queryKey); + }); + + if (result) { + result.defaultOptions = options; + } else { + this.queryDefaults.push({ + queryKey: queryKey, + defaultOptions: options + }); + } + }; + + _proto.getQueryDefaults = function getQueryDefaults(queryKey) { + var _this$queryDefaults$f; + + return queryKey ? (_this$queryDefaults$f = this.queryDefaults.find(function (x) { + return (0,_utils__WEBPACK_IMPORTED_MODULE_5__.partialMatchKey)(queryKey, x.queryKey); + })) == null ? void 0 : _this$queryDefaults$f.defaultOptions : undefined; + }; + + _proto.setMutationDefaults = function setMutationDefaults(mutationKey, options) { + var result = this.mutationDefaults.find(function (x) { + return (0,_utils__WEBPACK_IMPORTED_MODULE_5__.hashQueryKey)(mutationKey) === (0,_utils__WEBPACK_IMPORTED_MODULE_5__.hashQueryKey)(x.mutationKey); + }); + + if (result) { + result.defaultOptions = options; + } else { + this.mutationDefaults.push({ + mutationKey: mutationKey, + defaultOptions: options + }); + } + }; + + _proto.getMutationDefaults = function getMutationDefaults(mutationKey) { + var _this$mutationDefault; + + return mutationKey ? (_this$mutationDefault = this.mutationDefaults.find(function (x) { + return (0,_utils__WEBPACK_IMPORTED_MODULE_5__.partialMatchKey)(mutationKey, x.mutationKey); + })) == null ? void 0 : _this$mutationDefault.defaultOptions : undefined; + }; + + _proto.defaultQueryOptions = function defaultQueryOptions(options) { + if (options == null ? void 0 : options._defaulted) { + return options; + } + + var defaultedOptions = (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({}, this.defaultOptions.queries, this.getQueryDefaults(options == null ? void 0 : options.queryKey), options, { + _defaulted: true + }); + + if (!defaultedOptions.queryHash && defaultedOptions.queryKey) { + defaultedOptions.queryHash = (0,_utils__WEBPACK_IMPORTED_MODULE_5__.hashQueryKeyByOptions)(defaultedOptions.queryKey, defaultedOptions); + } + + return defaultedOptions; + }; + + _proto.defaultQueryObserverOptions = function defaultQueryObserverOptions(options) { + return this.defaultQueryOptions(options); + }; + + _proto.defaultMutationOptions = function defaultMutationOptions(options) { + if (options == null ? void 0 : options._defaulted) { + return options; + } + + return (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({}, this.defaultOptions.mutations, this.getMutationDefaults(options == null ? void 0 : options.mutationKey), options, { + _defaulted: true + }); + }; + + _proto.clear = function clear() { + this.queryCache.clear(); + this.mutationCache.clear(); + }; + + return QueryClient; +}(); + +/***/ }), + +/***/ "../node_modules/react-query/es/core/queryObserver.js": +/*!************************************************************!*\ + !*** ../node_modules/react-query/es/core/queryObserver.js ***! + \************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ QueryObserver: () => (/* binding */ QueryObserver) +/* harmony export */ }); +/* harmony import */ var _babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/extends */ "../node_modules/@babel/runtime/helpers/esm/extends.js"); +/* harmony import */ var _babel_runtime_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/esm/inheritsLoose */ "../node_modules/@babel/runtime/helpers/esm/inheritsLoose.js"); +/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./utils */ "../node_modules/react-query/es/core/utils.js"); +/* harmony import */ var _notifyManager__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./notifyManager */ "../node_modules/react-query/es/core/notifyManager.js"); +/* harmony import */ var _focusManager__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./focusManager */ "../node_modules/react-query/es/core/focusManager.js"); +/* harmony import */ var _subscribable__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./subscribable */ "../node_modules/react-query/es/core/subscribable.js"); +/* harmony import */ var _logger__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./logger */ "../node_modules/react-query/es/core/logger.js"); +/* harmony import */ var _retryer__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./retryer */ "../node_modules/react-query/es/core/retryer.js"); + + + + + + + + +var QueryObserver = /*#__PURE__*/function (_Subscribable) { + (0,_babel_runtime_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_1__["default"])(QueryObserver, _Subscribable); + + function QueryObserver(client, options) { + var _this; + + _this = _Subscribable.call(this) || this; + _this.client = client; + _this.options = options; + _this.trackedProps = []; + _this.selectError = null; + + _this.bindMethods(); + + _this.setOptions(options); + + return _this; + } + + var _proto = QueryObserver.prototype; + + _proto.bindMethods = function bindMethods() { + this.remove = this.remove.bind(this); + this.refetch = this.refetch.bind(this); + }; + + _proto.onSubscribe = function onSubscribe() { + if (this.listeners.length === 1) { + this.currentQuery.addObserver(this); + + if (shouldFetchOnMount(this.currentQuery, this.options)) { + this.executeFetch(); + } + + this.updateTimers(); + } + }; + + _proto.onUnsubscribe = function onUnsubscribe() { + if (!this.listeners.length) { + this.destroy(); + } + }; + + _proto.shouldFetchOnReconnect = function shouldFetchOnReconnect() { + return shouldFetchOn(this.currentQuery, this.options, this.options.refetchOnReconnect); + }; + + _proto.shouldFetchOnWindowFocus = function shouldFetchOnWindowFocus() { + return shouldFetchOn(this.currentQuery, this.options, this.options.refetchOnWindowFocus); + }; + + _proto.destroy = function destroy() { + this.listeners = []; + this.clearTimers(); + this.currentQuery.removeObserver(this); + }; + + _proto.setOptions = function setOptions(options, notifyOptions) { + var prevOptions = this.options; + var prevQuery = this.currentQuery; + this.options = this.client.defaultQueryObserverOptions(options); + + if (typeof this.options.enabled !== 'undefined' && typeof this.options.enabled !== 'boolean') { + throw new Error('Expected enabled to be a boolean'); + } // Keep previous query key if the user does not supply one + + + if (!this.options.queryKey) { + this.options.queryKey = prevOptions.queryKey; + } + + this.updateQuery(); + var mounted = this.hasListeners(); // Fetch if there are subscribers + + if (mounted && shouldFetchOptionally(this.currentQuery, prevQuery, this.options, prevOptions)) { + this.executeFetch(); + } // Update result + + + this.updateResult(notifyOptions); // Update stale interval if needed + + if (mounted && (this.currentQuery !== prevQuery || this.options.enabled !== prevOptions.enabled || this.options.staleTime !== prevOptions.staleTime)) { + this.updateStaleTimeout(); + } + + var nextRefetchInterval = this.computeRefetchInterval(); // Update refetch interval if needed + + if (mounted && (this.currentQuery !== prevQuery || this.options.enabled !== prevOptions.enabled || nextRefetchInterval !== this.currentRefetchInterval)) { + this.updateRefetchInterval(nextRefetchInterval); + } + }; + + _proto.getOptimisticResult = function getOptimisticResult(options) { + var defaultedOptions = this.client.defaultQueryObserverOptions(options); + var query = this.client.getQueryCache().build(this.client, defaultedOptions); + return this.createResult(query, defaultedOptions); + }; + + _proto.getCurrentResult = function getCurrentResult() { + return this.currentResult; + }; + + _proto.trackResult = function trackResult(result, defaultedOptions) { + var _this2 = this; + + var trackedResult = {}; + + var trackProp = function trackProp(key) { + if (!_this2.trackedProps.includes(key)) { + _this2.trackedProps.push(key); + } + }; + + Object.keys(result).forEach(function (key) { + Object.defineProperty(trackedResult, key, { + configurable: false, + enumerable: true, + get: function get() { + trackProp(key); + return result[key]; + } + }); + }); + + if (defaultedOptions.useErrorBoundary || defaultedOptions.suspense) { + trackProp('error'); + } + + return trackedResult; + }; + + _proto.getNextResult = function getNextResult(options) { + var _this3 = this; + + return new Promise(function (resolve, reject) { + var unsubscribe = _this3.subscribe(function (result) { + if (!result.isFetching) { + unsubscribe(); + + if (result.isError && (options == null ? void 0 : options.throwOnError)) { + reject(result.error); + } else { + resolve(result); + } + } + }); + }); + }; + + _proto.getCurrentQuery = function getCurrentQuery() { + return this.currentQuery; + }; + + _proto.remove = function remove() { + this.client.getQueryCache().remove(this.currentQuery); + }; + + _proto.refetch = function refetch(options) { + return this.fetch((0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({}, options, { + meta: { + refetchPage: options == null ? void 0 : options.refetchPage + } + })); + }; + + _proto.fetchOptimistic = function fetchOptimistic(options) { + var _this4 = this; + + var defaultedOptions = this.client.defaultQueryObserverOptions(options); + var query = this.client.getQueryCache().build(this.client, defaultedOptions); + return query.fetch().then(function () { + return _this4.createResult(query, defaultedOptions); + }); + }; + + _proto.fetch = function fetch(fetchOptions) { + var _this5 = this; + + return this.executeFetch(fetchOptions).then(function () { + _this5.updateResult(); + + return _this5.currentResult; + }); + }; + + _proto.executeFetch = function executeFetch(fetchOptions) { + // Make sure we reference the latest query as the current one might have been removed + this.updateQuery(); // Fetch + + var promise = this.currentQuery.fetch(this.options, fetchOptions); + + if (!(fetchOptions == null ? void 0 : fetchOptions.throwOnError)) { + promise = promise.catch(_utils__WEBPACK_IMPORTED_MODULE_2__.noop); + } + + return promise; + }; + + _proto.updateStaleTimeout = function updateStaleTimeout() { + var _this6 = this; + + this.clearStaleTimeout(); + + if (_utils__WEBPACK_IMPORTED_MODULE_2__.isServer || this.currentResult.isStale || !(0,_utils__WEBPACK_IMPORTED_MODULE_2__.isValidTimeout)(this.options.staleTime)) { + return; + } + + var time = (0,_utils__WEBPACK_IMPORTED_MODULE_2__.timeUntilStale)(this.currentResult.dataUpdatedAt, this.options.staleTime); // The timeout is sometimes triggered 1 ms before the stale time expiration. + // To mitigate this issue we always add 1 ms to the timeout. + + var timeout = time + 1; + this.staleTimeoutId = setTimeout(function () { + if (!_this6.currentResult.isStale) { + _this6.updateResult(); + } + }, timeout); + }; + + _proto.computeRefetchInterval = function computeRefetchInterval() { + var _this$options$refetch; + + return typeof this.options.refetchInterval === 'function' ? this.options.refetchInterval(this.currentResult.data, this.currentQuery) : (_this$options$refetch = this.options.refetchInterval) != null ? _this$options$refetch : false; + }; + + _proto.updateRefetchInterval = function updateRefetchInterval(nextInterval) { + var _this7 = this; + + this.clearRefetchInterval(); + this.currentRefetchInterval = nextInterval; + + if (_utils__WEBPACK_IMPORTED_MODULE_2__.isServer || this.options.enabled === false || !(0,_utils__WEBPACK_IMPORTED_MODULE_2__.isValidTimeout)(this.currentRefetchInterval) || this.currentRefetchInterval === 0) { + return; + } + + this.refetchIntervalId = setInterval(function () { + if (_this7.options.refetchIntervalInBackground || _focusManager__WEBPACK_IMPORTED_MODULE_3__.focusManager.isFocused()) { + _this7.executeFetch(); + } + }, this.currentRefetchInterval); + }; + + _proto.updateTimers = function updateTimers() { + this.updateStaleTimeout(); + this.updateRefetchInterval(this.computeRefetchInterval()); + }; + + _proto.clearTimers = function clearTimers() { + this.clearStaleTimeout(); + this.clearRefetchInterval(); + }; + + _proto.clearStaleTimeout = function clearStaleTimeout() { + if (this.staleTimeoutId) { + clearTimeout(this.staleTimeoutId); + this.staleTimeoutId = undefined; + } + }; + + _proto.clearRefetchInterval = function clearRefetchInterval() { + if (this.refetchIntervalId) { + clearInterval(this.refetchIntervalId); + this.refetchIntervalId = undefined; + } + }; + + _proto.createResult = function createResult(query, options) { + var prevQuery = this.currentQuery; + var prevOptions = this.options; + var prevResult = this.currentResult; + var prevResultState = this.currentResultState; + var prevResultOptions = this.currentResultOptions; + var queryChange = query !== prevQuery; + var queryInitialState = queryChange ? query.state : this.currentQueryInitialState; + var prevQueryResult = queryChange ? this.currentResult : this.previousQueryResult; + var state = query.state; + var dataUpdatedAt = state.dataUpdatedAt, + error = state.error, + errorUpdatedAt = state.errorUpdatedAt, + isFetching = state.isFetching, + status = state.status; + var isPreviousData = false; + var isPlaceholderData = false; + var data; // Optimistically set result in fetching state if needed + + if (options.optimisticResults) { + var mounted = this.hasListeners(); + var fetchOnMount = !mounted && shouldFetchOnMount(query, options); + var fetchOptionally = mounted && shouldFetchOptionally(query, prevQuery, options, prevOptions); + + if (fetchOnMount || fetchOptionally) { + isFetching = true; + + if (!dataUpdatedAt) { + status = 'loading'; + } + } + } // Keep previous data if needed + + + if (options.keepPreviousData && !state.dataUpdateCount && (prevQueryResult == null ? void 0 : prevQueryResult.isSuccess) && status !== 'error') { + data = prevQueryResult.data; + dataUpdatedAt = prevQueryResult.dataUpdatedAt; + status = prevQueryResult.status; + isPreviousData = true; + } // Select data if needed + else if (options.select && typeof state.data !== 'undefined') { + // Memoize select result + if (prevResult && state.data === (prevResultState == null ? void 0 : prevResultState.data) && options.select === this.selectFn) { + data = this.selectResult; + } else { + try { + this.selectFn = options.select; + data = options.select(state.data); + + if (options.structuralSharing !== false) { + data = (0,_utils__WEBPACK_IMPORTED_MODULE_2__.replaceEqualDeep)(prevResult == null ? void 0 : prevResult.data, data); + } + + this.selectResult = data; + this.selectError = null; + } catch (selectError) { + (0,_logger__WEBPACK_IMPORTED_MODULE_4__.getLogger)().error(selectError); + this.selectError = selectError; + } + } + } // Use query data + else { + data = state.data; + } // Show placeholder data if needed + + + if (typeof options.placeholderData !== 'undefined' && typeof data === 'undefined' && (status === 'loading' || status === 'idle')) { + var placeholderData; // Memoize placeholder data + + if ((prevResult == null ? void 0 : prevResult.isPlaceholderData) && options.placeholderData === (prevResultOptions == null ? void 0 : prevResultOptions.placeholderData)) { + placeholderData = prevResult.data; + } else { + placeholderData = typeof options.placeholderData === 'function' ? options.placeholderData() : options.placeholderData; + + if (options.select && typeof placeholderData !== 'undefined') { + try { + placeholderData = options.select(placeholderData); + + if (options.structuralSharing !== false) { + placeholderData = (0,_utils__WEBPACK_IMPORTED_MODULE_2__.replaceEqualDeep)(prevResult == null ? void 0 : prevResult.data, placeholderData); + } + + this.selectError = null; + } catch (selectError) { + (0,_logger__WEBPACK_IMPORTED_MODULE_4__.getLogger)().error(selectError); + this.selectError = selectError; + } + } + } + + if (typeof placeholderData !== 'undefined') { + status = 'success'; + data = placeholderData; + isPlaceholderData = true; + } + } + + if (this.selectError) { + error = this.selectError; + data = this.selectResult; + errorUpdatedAt = Date.now(); + status = 'error'; + } + + var result = { + status: status, + isLoading: status === 'loading', + isSuccess: status === 'success', + isError: status === 'error', + isIdle: status === 'idle', + data: data, + dataUpdatedAt: dataUpdatedAt, + error: error, + errorUpdatedAt: errorUpdatedAt, + failureCount: state.fetchFailureCount, + errorUpdateCount: state.errorUpdateCount, + isFetched: state.dataUpdateCount > 0 || state.errorUpdateCount > 0, + isFetchedAfterMount: state.dataUpdateCount > queryInitialState.dataUpdateCount || state.errorUpdateCount > queryInitialState.errorUpdateCount, + isFetching: isFetching, + isRefetching: isFetching && status !== 'loading', + isLoadingError: status === 'error' && state.dataUpdatedAt === 0, + isPlaceholderData: isPlaceholderData, + isPreviousData: isPreviousData, + isRefetchError: status === 'error' && state.dataUpdatedAt !== 0, + isStale: isStale(query, options), + refetch: this.refetch, + remove: this.remove + }; + return result; + }; + + _proto.shouldNotifyListeners = function shouldNotifyListeners(result, prevResult) { + if (!prevResult) { + return true; + } + + var _this$options = this.options, + notifyOnChangeProps = _this$options.notifyOnChangeProps, + notifyOnChangePropsExclusions = _this$options.notifyOnChangePropsExclusions; + + if (!notifyOnChangeProps && !notifyOnChangePropsExclusions) { + return true; + } + + if (notifyOnChangeProps === 'tracked' && !this.trackedProps.length) { + return true; + } + + var includedProps = notifyOnChangeProps === 'tracked' ? this.trackedProps : notifyOnChangeProps; + return Object.keys(result).some(function (key) { + var typedKey = key; + var changed = result[typedKey] !== prevResult[typedKey]; + var isIncluded = includedProps == null ? void 0 : includedProps.some(function (x) { + return x === key; + }); + var isExcluded = notifyOnChangePropsExclusions == null ? void 0 : notifyOnChangePropsExclusions.some(function (x) { + return x === key; + }); + return changed && !isExcluded && (!includedProps || isIncluded); + }); + }; + + _proto.updateResult = function updateResult(notifyOptions) { + var prevResult = this.currentResult; + this.currentResult = this.createResult(this.currentQuery, this.options); + this.currentResultState = this.currentQuery.state; + this.currentResultOptions = this.options; // Only notify if something has changed + + if ((0,_utils__WEBPACK_IMPORTED_MODULE_2__.shallowEqualObjects)(this.currentResult, prevResult)) { + return; + } // Determine which callbacks to trigger + + + var defaultNotifyOptions = { + cache: true + }; + + if ((notifyOptions == null ? void 0 : notifyOptions.listeners) !== false && this.shouldNotifyListeners(this.currentResult, prevResult)) { + defaultNotifyOptions.listeners = true; + } + + this.notify((0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({}, defaultNotifyOptions, notifyOptions)); + }; + + _proto.updateQuery = function updateQuery() { + var query = this.client.getQueryCache().build(this.client, this.options); + + if (query === this.currentQuery) { + return; + } + + var prevQuery = this.currentQuery; + this.currentQuery = query; + this.currentQueryInitialState = query.state; + this.previousQueryResult = this.currentResult; + + if (this.hasListeners()) { + prevQuery == null ? void 0 : prevQuery.removeObserver(this); + query.addObserver(this); + } + }; + + _proto.onQueryUpdate = function onQueryUpdate(action) { + var notifyOptions = {}; + + if (action.type === 'success') { + notifyOptions.onSuccess = true; + } else if (action.type === 'error' && !(0,_retryer__WEBPACK_IMPORTED_MODULE_5__.isCancelledError)(action.error)) { + notifyOptions.onError = true; + } + + this.updateResult(notifyOptions); + + if (this.hasListeners()) { + this.updateTimers(); + } + }; + + _proto.notify = function notify(notifyOptions) { + var _this8 = this; + + _notifyManager__WEBPACK_IMPORTED_MODULE_6__.notifyManager.batch(function () { + // First trigger the configuration callbacks + if (notifyOptions.onSuccess) { + _this8.options.onSuccess == null ? void 0 : _this8.options.onSuccess(_this8.currentResult.data); + _this8.options.onSettled == null ? void 0 : _this8.options.onSettled(_this8.currentResult.data, null); + } else if (notifyOptions.onError) { + _this8.options.onError == null ? void 0 : _this8.options.onError(_this8.currentResult.error); + _this8.options.onSettled == null ? void 0 : _this8.options.onSettled(undefined, _this8.currentResult.error); + } // Then trigger the listeners + + + if (notifyOptions.listeners) { + _this8.listeners.forEach(function (listener) { + listener(_this8.currentResult); + }); + } // Then the cache listeners + + + if (notifyOptions.cache) { + _this8.client.getQueryCache().notify({ + query: _this8.currentQuery, + type: 'observerResultsUpdated' + }); + } + }); + }; + + return QueryObserver; +}(_subscribable__WEBPACK_IMPORTED_MODULE_7__.Subscribable); + +function shouldLoadOnMount(query, options) { + return options.enabled !== false && !query.state.dataUpdatedAt && !(query.state.status === 'error' && options.retryOnMount === false); +} + +function shouldFetchOnMount(query, options) { + return shouldLoadOnMount(query, options) || query.state.dataUpdatedAt > 0 && shouldFetchOn(query, options, options.refetchOnMount); +} + +function shouldFetchOn(query, options, field) { + if (options.enabled !== false) { + var value = typeof field === 'function' ? field(query) : field; + return value === 'always' || value !== false && isStale(query, options); + } + + return false; +} + +function shouldFetchOptionally(query, prevQuery, options, prevOptions) { + return options.enabled !== false && (query !== prevQuery || prevOptions.enabled === false) && (!options.suspense || query.state.status !== 'error') && isStale(query, options); +} + +function isStale(query, options) { + return query.isStaleByTime(options.staleTime); +} + +/***/ }), + +/***/ "../node_modules/react-query/es/core/retryer.js": +/*!******************************************************!*\ + !*** ../node_modules/react-query/es/core/retryer.js ***! + \******************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ CancelledError: () => (/* binding */ CancelledError), +/* harmony export */ Retryer: () => (/* binding */ Retryer), +/* harmony export */ isCancelable: () => (/* binding */ isCancelable), +/* harmony export */ isCancelledError: () => (/* binding */ isCancelledError) +/* harmony export */ }); +/* harmony import */ var _focusManager__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./focusManager */ "../node_modules/react-query/es/core/focusManager.js"); +/* harmony import */ var _onlineManager__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./onlineManager */ "../node_modules/react-query/es/core/onlineManager.js"); +/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./utils */ "../node_modules/react-query/es/core/utils.js"); + + + + +function defaultRetryDelay(failureCount) { + return Math.min(1000 * Math.pow(2, failureCount), 30000); +} + +function isCancelable(value) { + return typeof (value == null ? void 0 : value.cancel) === 'function'; +} +var CancelledError = function CancelledError(options) { + this.revert = options == null ? void 0 : options.revert; + this.silent = options == null ? void 0 : options.silent; +}; +function isCancelledError(value) { + return value instanceof CancelledError; +} // CLASS + +var Retryer = function Retryer(config) { + var _this = this; + + var cancelRetry = false; + var cancelFn; + var continueFn; + var promiseResolve; + var promiseReject; + this.abort = config.abort; + + this.cancel = function (cancelOptions) { + return cancelFn == null ? void 0 : cancelFn(cancelOptions); + }; + + this.cancelRetry = function () { + cancelRetry = true; + }; + + this.continueRetry = function () { + cancelRetry = false; + }; + + this.continue = function () { + return continueFn == null ? void 0 : continueFn(); + }; + + this.failureCount = 0; + this.isPaused = false; + this.isResolved = false; + this.isTransportCancelable = false; + this.promise = new Promise(function (outerResolve, outerReject) { + promiseResolve = outerResolve; + promiseReject = outerReject; + }); + + var resolve = function resolve(value) { + if (!_this.isResolved) { + _this.isResolved = true; + config.onSuccess == null ? void 0 : config.onSuccess(value); + continueFn == null ? void 0 : continueFn(); + promiseResolve(value); + } + }; + + var reject = function reject(value) { + if (!_this.isResolved) { + _this.isResolved = true; + config.onError == null ? void 0 : config.onError(value); + continueFn == null ? void 0 : continueFn(); + promiseReject(value); + } + }; + + var pause = function pause() { + return new Promise(function (continueResolve) { + continueFn = continueResolve; + _this.isPaused = true; + config.onPause == null ? void 0 : config.onPause(); + }).then(function () { + continueFn = undefined; + _this.isPaused = false; + config.onContinue == null ? void 0 : config.onContinue(); + }); + }; // Create loop function + + + var run = function run() { + // Do nothing if already resolved + if (_this.isResolved) { + return; + } + + var promiseOrValue; // Execute query + + try { + promiseOrValue = config.fn(); + } catch (error) { + promiseOrValue = Promise.reject(error); + } // Create callback to cancel this fetch + + + cancelFn = function cancelFn(cancelOptions) { + if (!_this.isResolved) { + reject(new CancelledError(cancelOptions)); + _this.abort == null ? void 0 : _this.abort(); // Cancel transport if supported + + if (isCancelable(promiseOrValue)) { + try { + promiseOrValue.cancel(); + } catch (_unused) {} + } + } + }; // Check if the transport layer support cancellation + + + _this.isTransportCancelable = isCancelable(promiseOrValue); + Promise.resolve(promiseOrValue).then(resolve).catch(function (error) { + var _config$retry, _config$retryDelay; + + // Stop if the fetch is already resolved + if (_this.isResolved) { + return; + } // Do we need to retry the request? + + + var retry = (_config$retry = config.retry) != null ? _config$retry : 3; + var retryDelay = (_config$retryDelay = config.retryDelay) != null ? _config$retryDelay : defaultRetryDelay; + var delay = typeof retryDelay === 'function' ? retryDelay(_this.failureCount, error) : retryDelay; + var shouldRetry = retry === true || typeof retry === 'number' && _this.failureCount < retry || typeof retry === 'function' && retry(_this.failureCount, error); + + if (cancelRetry || !shouldRetry) { + // We are done if the query does not need to be retried + reject(error); + return; + } + + _this.failureCount++; // Notify on fail + + config.onFail == null ? void 0 : config.onFail(_this.failureCount, error); // Delay + + (0,_utils__WEBPACK_IMPORTED_MODULE_0__.sleep)(delay) // Pause if the document is not visible or when the device is offline + .then(function () { + if (!_focusManager__WEBPACK_IMPORTED_MODULE_1__.focusManager.isFocused() || !_onlineManager__WEBPACK_IMPORTED_MODULE_2__.onlineManager.isOnline()) { + return pause(); + } + }).then(function () { + if (cancelRetry) { + reject(error); + } else { + run(); + } + }); + }); + }; // Start loop + + + run(); +}; + +/***/ }), + +/***/ "../node_modules/react-query/es/core/subscribable.js": +/*!***********************************************************!*\ + !*** ../node_modules/react-query/es/core/subscribable.js ***! + \***********************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ Subscribable: () => (/* binding */ Subscribable) +/* harmony export */ }); +var Subscribable = /*#__PURE__*/function () { + function Subscribable() { + this.listeners = []; + } + + var _proto = Subscribable.prototype; + + _proto.subscribe = function subscribe(listener) { + var _this = this; + + var callback = listener || function () { + return undefined; + }; + + this.listeners.push(callback); + this.onSubscribe(); + return function () { + _this.listeners = _this.listeners.filter(function (x) { + return x !== callback; + }); + + _this.onUnsubscribe(); + }; + }; + + _proto.hasListeners = function hasListeners() { + return this.listeners.length > 0; + }; + + _proto.onSubscribe = function onSubscribe() {// Do nothing + }; + + _proto.onUnsubscribe = function onUnsubscribe() {// Do nothing + }; + + return Subscribable; +}(); + +/***/ }), + +/***/ "../node_modules/react-query/es/core/types.js": +/*!****************************************************!*\ + !*** ../node_modules/react-query/es/core/types.js ***! + \****************************************************/ +/***/ (() => { + + + +/***/ }), + +/***/ "../node_modules/react-query/es/core/utils.js": +/*!****************************************************!*\ + !*** ../node_modules/react-query/es/core/utils.js ***! + \****************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ difference: () => (/* binding */ difference), +/* harmony export */ ensureQueryKeyArray: () => (/* binding */ ensureQueryKeyArray), +/* harmony export */ functionalUpdate: () => (/* binding */ functionalUpdate), +/* harmony export */ getAbortController: () => (/* binding */ getAbortController), +/* harmony export */ hashQueryKey: () => (/* binding */ hashQueryKey), +/* harmony export */ hashQueryKeyByOptions: () => (/* binding */ hashQueryKeyByOptions), +/* harmony export */ isError: () => (/* binding */ isError), +/* harmony export */ isPlainObject: () => (/* binding */ isPlainObject), +/* harmony export */ isQueryKey: () => (/* binding */ isQueryKey), +/* harmony export */ isServer: () => (/* binding */ isServer), +/* harmony export */ isValidTimeout: () => (/* binding */ isValidTimeout), +/* harmony export */ mapQueryStatusFilter: () => (/* binding */ mapQueryStatusFilter), +/* harmony export */ matchMutation: () => (/* binding */ matchMutation), +/* harmony export */ matchQuery: () => (/* binding */ matchQuery), +/* harmony export */ noop: () => (/* binding */ noop), +/* harmony export */ parseFilterArgs: () => (/* binding */ parseFilterArgs), +/* harmony export */ parseMutationArgs: () => (/* binding */ parseMutationArgs), +/* harmony export */ parseMutationFilterArgs: () => (/* binding */ parseMutationFilterArgs), +/* harmony export */ parseQueryArgs: () => (/* binding */ parseQueryArgs), +/* harmony export */ partialDeepEqual: () => (/* binding */ partialDeepEqual), +/* harmony export */ partialMatchKey: () => (/* binding */ partialMatchKey), +/* harmony export */ replaceAt: () => (/* binding */ replaceAt), +/* harmony export */ replaceEqualDeep: () => (/* binding */ replaceEqualDeep), +/* harmony export */ scheduleMicrotask: () => (/* binding */ scheduleMicrotask), +/* harmony export */ shallowEqualObjects: () => (/* binding */ shallowEqualObjects), +/* harmony export */ sleep: () => (/* binding */ sleep), +/* harmony export */ stableValueHash: () => (/* binding */ stableValueHash), +/* harmony export */ timeUntilStale: () => (/* binding */ timeUntilStale) +/* harmony export */ }); +/* harmony import */ var _babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/extends */ "../node_modules/@babel/runtime/helpers/esm/extends.js"); + +// TYPES +// UTILS +var isServer = typeof window === 'undefined'; +function noop() { + return undefined; +} +function functionalUpdate(updater, input) { + return typeof updater === 'function' ? updater(input) : updater; +} +function isValidTimeout(value) { + return typeof value === 'number' && value >= 0 && value !== Infinity; +} +function ensureQueryKeyArray(value) { + return Array.isArray(value) ? value : [value]; +} +function difference(array1, array2) { + return array1.filter(function (x) { + return array2.indexOf(x) === -1; + }); +} +function replaceAt(array, index, value) { + var copy = array.slice(0); + copy[index] = value; + return copy; +} +function timeUntilStale(updatedAt, staleTime) { + return Math.max(updatedAt + (staleTime || 0) - Date.now(), 0); +} +function parseQueryArgs(arg1, arg2, arg3) { + if (!isQueryKey(arg1)) { + return arg1; + } + + if (typeof arg2 === 'function') { + return (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({}, arg3, { + queryKey: arg1, + queryFn: arg2 + }); + } + + return (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({}, arg2, { + queryKey: arg1 + }); +} +function parseMutationArgs(arg1, arg2, arg3) { + if (isQueryKey(arg1)) { + if (typeof arg2 === 'function') { + return (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({}, arg3, { + mutationKey: arg1, + mutationFn: arg2 + }); + } + + return (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({}, arg2, { + mutationKey: arg1 + }); + } + + if (typeof arg1 === 'function') { + return (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({}, arg2, { + mutationFn: arg1 + }); + } + + return (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({}, arg1); +} +function parseFilterArgs(arg1, arg2, arg3) { + return isQueryKey(arg1) ? [(0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({}, arg2, { + queryKey: arg1 + }), arg3] : [arg1 || {}, arg2]; +} +function parseMutationFilterArgs(arg1, arg2) { + return isQueryKey(arg1) ? (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({}, arg2, { + mutationKey: arg1 + }) : arg1; +} +function mapQueryStatusFilter(active, inactive) { + if (active === true && inactive === true || active == null && inactive == null) { + return 'all'; + } else if (active === false && inactive === false) { + return 'none'; + } else { + // At this point, active|inactive can only be true|false or false|true + // so, when only one value is provided, the missing one has to be the negated value + var isActive = active != null ? active : !inactive; + return isActive ? 'active' : 'inactive'; + } +} +function matchQuery(filters, query) { + var active = filters.active, + exact = filters.exact, + fetching = filters.fetching, + inactive = filters.inactive, + predicate = filters.predicate, + queryKey = filters.queryKey, + stale = filters.stale; + + if (isQueryKey(queryKey)) { + if (exact) { + if (query.queryHash !== hashQueryKeyByOptions(queryKey, query.options)) { + return false; + } + } else if (!partialMatchKey(query.queryKey, queryKey)) { + return false; + } + } + + var queryStatusFilter = mapQueryStatusFilter(active, inactive); + + if (queryStatusFilter === 'none') { + return false; + } else if (queryStatusFilter !== 'all') { + var isActive = query.isActive(); + + if (queryStatusFilter === 'active' && !isActive) { + return false; + } + + if (queryStatusFilter === 'inactive' && isActive) { + return false; + } + } + + if (typeof stale === 'boolean' && query.isStale() !== stale) { + return false; + } + + if (typeof fetching === 'boolean' && query.isFetching() !== fetching) { + return false; + } + + if (predicate && !predicate(query)) { + return false; + } + + return true; +} +function matchMutation(filters, mutation) { + var exact = filters.exact, + fetching = filters.fetching, + predicate = filters.predicate, + mutationKey = filters.mutationKey; + + if (isQueryKey(mutationKey)) { + if (!mutation.options.mutationKey) { + return false; + } + + if (exact) { + if (hashQueryKey(mutation.options.mutationKey) !== hashQueryKey(mutationKey)) { + return false; + } + } else if (!partialMatchKey(mutation.options.mutationKey, mutationKey)) { + return false; + } + } + + if (typeof fetching === 'boolean' && mutation.state.status === 'loading' !== fetching) { + return false; + } + + if (predicate && !predicate(mutation)) { + return false; + } + + return true; +} +function hashQueryKeyByOptions(queryKey, options) { + var hashFn = (options == null ? void 0 : options.queryKeyHashFn) || hashQueryKey; + return hashFn(queryKey); +} +/** + * Default query keys hash function. + */ + +function hashQueryKey(queryKey) { + var asArray = ensureQueryKeyArray(queryKey); + return stableValueHash(asArray); +} +/** + * Hashes the value into a stable hash. + */ + +function stableValueHash(value) { + return JSON.stringify(value, function (_, val) { + return isPlainObject(val) ? Object.keys(val).sort().reduce(function (result, key) { + result[key] = val[key]; + return result; + }, {}) : val; + }); +} +/** + * Checks if key `b` partially matches with key `a`. + */ + +function partialMatchKey(a, b) { + return partialDeepEqual(ensureQueryKeyArray(a), ensureQueryKeyArray(b)); +} +/** + * Checks if `b` partially matches with `a`. + */ + +function partialDeepEqual(a, b) { + if (a === b) { + return true; + } + + if (typeof a !== typeof b) { + return false; + } + + if (a && b && typeof a === 'object' && typeof b === 'object') { + return !Object.keys(b).some(function (key) { + return !partialDeepEqual(a[key], b[key]); + }); + } + + return false; +} +/** + * This function returns `a` if `b` is deeply equal. + * If not, it will replace any deeply equal children of `b` with those of `a`. + * This can be used for structural sharing between JSON values for example. + */ + +function replaceEqualDeep(a, b) { + if (a === b) { + return a; + } + + var array = Array.isArray(a) && Array.isArray(b); + + if (array || isPlainObject(a) && isPlainObject(b)) { + var aSize = array ? a.length : Object.keys(a).length; + var bItems = array ? b : Object.keys(b); + var bSize = bItems.length; + var copy = array ? [] : {}; + var equalItems = 0; + + for (var i = 0; i < bSize; i++) { + var key = array ? i : bItems[i]; + copy[key] = replaceEqualDeep(a[key], b[key]); + + if (copy[key] === a[key]) { + equalItems++; + } + } + + return aSize === bSize && equalItems === aSize ? a : copy; + } + + return b; +} +/** + * Shallow compare objects. Only works with objects that always have the same properties. + */ + +function shallowEqualObjects(a, b) { + if (a && !b || b && !a) { + return false; + } + + for (var key in a) { + if (a[key] !== b[key]) { + return false; + } + } + + return true; +} // Copied from: https://github.com/jonschlinkert/is-plain-object + +function isPlainObject(o) { + if (!hasObjectPrototype(o)) { + return false; + } // If has modified constructor + + + var ctor = o.constructor; + + if (typeof ctor === 'undefined') { + return true; + } // If has modified prototype + + + var prot = ctor.prototype; + + if (!hasObjectPrototype(prot)) { + return false; + } // If constructor does not have an Object-specific method + + + if (!prot.hasOwnProperty('isPrototypeOf')) { + return false; + } // Most likely a plain Object + + + return true; +} + +function hasObjectPrototype(o) { + return Object.prototype.toString.call(o) === '[object Object]'; +} + +function isQueryKey(value) { + return typeof value === 'string' || Array.isArray(value); +} +function isError(value) { + return value instanceof Error; +} +function sleep(timeout) { + return new Promise(function (resolve) { + setTimeout(resolve, timeout); + }); +} +/** + * Schedules a microtask. + * This can be useful to schedule state updates after rendering. + */ + +function scheduleMicrotask(callback) { + Promise.resolve().then(callback).catch(function (error) { + return setTimeout(function () { + throw error; + }); + }); +} +function getAbortController() { + if (typeof AbortController === 'function') { + return new AbortController(); + } +} + +/***/ }), + +/***/ "../node_modules/react-query/es/devtools/Explorer.js": +/*!***********************************************************!*\ + !*** ../node_modules/react-query/es/devtools/Explorer.js ***! + \***********************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ DefaultRenderer: () => (/* binding */ DefaultRenderer), +/* harmony export */ Entry: () => (/* binding */ Entry), +/* harmony export */ ExpandButton: () => (/* binding */ ExpandButton), +/* harmony export */ Expander: () => (/* binding */ Expander), +/* harmony export */ Info: () => (/* binding */ Info), +/* harmony export */ Label: () => (/* binding */ Label), +/* harmony export */ LabelButton: () => (/* binding */ LabelButton), +/* harmony export */ SubEntries: () => (/* binding */ SubEntries), +/* harmony export */ Value: () => (/* binding */ Value), +/* harmony export */ chunkArray: () => (/* binding */ chunkArray), +/* harmony export */ "default": () => (/* binding */ Explorer) +/* harmony export */ }); +/* harmony import */ var _babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/objectWithoutPropertiesLoose */ "../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js"); +/* harmony import */ var _babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/esm/extends */ "../node_modules/@babel/runtime/helpers/esm/extends.js"); +/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react */ "react"); +/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_2__); +/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./utils */ "../node_modules/react-query/es/devtools/utils.js"); + + + + +var Entry = (0,_utils__WEBPACK_IMPORTED_MODULE_3__.styled)('div', { + fontFamily: 'Menlo, monospace', + fontSize: '1em', + lineHeight: '1.7', + outline: 'none', + wordBreak: 'break-word' +}); +var Label = (0,_utils__WEBPACK_IMPORTED_MODULE_3__.styled)('span', { + color: 'white' +}); +var LabelButton = (0,_utils__WEBPACK_IMPORTED_MODULE_3__.styled)('button', { + cursor: 'pointer', + color: 'white' +}); +var ExpandButton = (0,_utils__WEBPACK_IMPORTED_MODULE_3__.styled)('button', { + cursor: 'pointer', + color: 'inherit', + font: 'inherit', + outline: 'inherit', + background: 'transparent', + border: 'none', + padding: 0 +}); +var Value = (0,_utils__WEBPACK_IMPORTED_MODULE_3__.styled)('span', function (_props, theme) { + return { + color: theme.danger + }; +}); +var SubEntries = (0,_utils__WEBPACK_IMPORTED_MODULE_3__.styled)('div', { + marginLeft: '.1em', + paddingLeft: '1em', + borderLeft: '2px solid rgba(0,0,0,.15)' +}); +var Info = (0,_utils__WEBPACK_IMPORTED_MODULE_3__.styled)('span', { + color: 'grey', + fontSize: '.7em' +}); +var Expander = function Expander(_ref) { + var expanded = _ref.expanded, + _ref$style = _ref.style, + style = _ref$style === void 0 ? {} : _ref$style; + return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().createElement("span", { + style: (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__["default"])({ + display: 'inline-block', + transition: 'all .1s ease', + transform: "rotate(" + (expanded ? 90 : 0) + "deg) " + (style.transform || '') + }, style) + }, "\u25B6"); +}; + +/** + * Chunk elements in the array by size + * + * when the array cannot be chunked evenly by size, the last chunk will be + * filled with the remaining elements + * + * @example + * chunkArray(['a','b', 'c', 'd', 'e'], 2) // returns [['a','b'], ['c', 'd'], ['e']] + */ +function chunkArray(array, size) { + if (size < 1) return []; + var i = 0; + var result = []; + + while (i < array.length) { + result.push(array.slice(i, i + size)); + i = i + size; + } + + return result; +} +var DefaultRenderer = function DefaultRenderer(_ref2) { + var HandleEntry = _ref2.HandleEntry, + label = _ref2.label, + value = _ref2.value, + _ref2$subEntries = _ref2.subEntries, + subEntries = _ref2$subEntries === void 0 ? [] : _ref2$subEntries, + _ref2$subEntryPages = _ref2.subEntryPages, + subEntryPages = _ref2$subEntryPages === void 0 ? [] : _ref2$subEntryPages, + type = _ref2.type, + _ref2$expanded = _ref2.expanded, + expanded = _ref2$expanded === void 0 ? false : _ref2$expanded, + toggleExpanded = _ref2.toggleExpanded, + pageSize = _ref2.pageSize; + + var _React$useState = react__WEBPACK_IMPORTED_MODULE_2___default().useState([]), + expandedPages = _React$useState[0], + setExpandedPages = _React$useState[1]; + + return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().createElement(Entry, { + key: label + }, (subEntryPages == null ? void 0 : subEntryPages.length) ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().createElement((react__WEBPACK_IMPORTED_MODULE_2___default().Fragment), null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().createElement(ExpandButton, { + onClick: function onClick() { + return toggleExpanded(); + } + }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().createElement(Expander, { + expanded: expanded + }), " ", label, ' ', /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().createElement(Info, null, String(type).toLowerCase() === 'iterable' ? '(Iterable) ' : '', subEntries.length, " ", subEntries.length > 1 ? "items" : "item")), expanded ? subEntryPages.length === 1 ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().createElement(SubEntries, null, subEntries.map(function (entry) { + return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().createElement(HandleEntry, { + key: entry.label, + entry: entry + }); + })) : /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().createElement(SubEntries, null, subEntryPages.map(function (entries, index) { + return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().createElement("div", { + key: index + }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().createElement(Entry, null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().createElement(LabelButton, { + onClick: function onClick() { + return setExpandedPages(function (old) { + return old.includes(index) ? old.filter(function (d) { + return d !== index; + }) : [].concat(old, [index]); + }); + } + }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().createElement(Expander, { + expanded: expanded + }), " [", index * pageSize, " ...", ' ', index * pageSize + pageSize - 1, "]"), expandedPages.includes(index) ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().createElement(SubEntries, null, entries.map(function (entry) { + return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().createElement(HandleEntry, { + key: entry.label, + entry: entry + }); + })) : null)); + })) : null) : /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().createElement((react__WEBPACK_IMPORTED_MODULE_2___default().Fragment), null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().createElement(Label, null, label, ":"), " ", /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().createElement(Value, null, (0,_utils__WEBPACK_IMPORTED_MODULE_3__.displayValue)(value)))); +}; + +function isIterable(x) { + return Symbol.iterator in x; +} + +function Explorer(_ref3) { + var value = _ref3.value, + defaultExpanded = _ref3.defaultExpanded, + _ref3$renderer = _ref3.renderer, + renderer = _ref3$renderer === void 0 ? DefaultRenderer : _ref3$renderer, + _ref3$pageSize = _ref3.pageSize, + pageSize = _ref3$pageSize === void 0 ? 100 : _ref3$pageSize, + rest = (0,_babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_0__["default"])(_ref3, ["value", "defaultExpanded", "renderer", "pageSize"]); + + var _React$useState2 = react__WEBPACK_IMPORTED_MODULE_2___default().useState(Boolean(defaultExpanded)), + expanded = _React$useState2[0], + setExpanded = _React$useState2[1]; + + var toggleExpanded = react__WEBPACK_IMPORTED_MODULE_2___default().useCallback(function () { + return setExpanded(function (old) { + return !old; + }); + }, []); + var type = typeof value; + var subEntries = []; + + var makeProperty = function makeProperty(sub) { + var _ref4; + + var subDefaultExpanded = defaultExpanded === true ? (_ref4 = {}, _ref4[sub.label] = true, _ref4) : defaultExpanded == null ? void 0 : defaultExpanded[sub.label]; + return (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__["default"])({}, sub, { + defaultExpanded: subDefaultExpanded + }); + }; + + if (Array.isArray(value)) { + type = 'array'; + subEntries = value.map(function (d, i) { + return makeProperty({ + label: i.toString(), + value: d + }); + }); + } else if (value !== null && typeof value === 'object' && isIterable(value) && typeof value[Symbol.iterator] === 'function') { + type = 'Iterable'; + subEntries = Array.from(value, function (val, i) { + return makeProperty({ + label: i.toString(), + value: val + }); + }); + } else if (typeof value === 'object' && value !== null) { + type = 'object'; + subEntries = Object.entries(value).map(function (_ref5) { + var key = _ref5[0], + val = _ref5[1]; + return makeProperty({ + label: key, + value: val + }); + }); + } + + var subEntryPages = chunkArray(subEntries, pageSize); + return renderer((0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__["default"])({ + HandleEntry: function HandleEntry(_ref6) { + var entry = _ref6.entry; + return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().createElement(Explorer, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__["default"])({ + value: value, + renderer: renderer + }, rest, entry)); + }, + type: type, + subEntries: subEntries, + subEntryPages: subEntryPages, + value: value, + expanded: expanded, + toggleExpanded: toggleExpanded, + pageSize: pageSize + }, rest)); +} + +/***/ }), + +/***/ "../node_modules/react-query/es/devtools/Logo.js": +/*!*******************************************************!*\ + !*** ../node_modules/react-query/es/devtools/Logo.js ***! + \*******************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (/* binding */ Logo) +/* harmony export */ }); +/* harmony import */ var _babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/extends */ "../node_modules/@babel/runtime/helpers/esm/extends.js"); +/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ "react"); +/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__); + + +function Logo(props) { + return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1__.createElement("svg", (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({ + width: "40px", + height: "40px", + viewBox: "0 0 190 190", + version: "1.1" + }, props), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1__.createElement("g", { + stroke: "none", + strokeWidth: "1", + fill: "none", + fillRule: "evenodd" + }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1__.createElement("g", { + transform: "translate(-33.000000, 0.000000)" + }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1__.createElement("path", { + d: "M72.7239712,61.3436237 C69.631224,46.362877 68.9675112,34.8727722 70.9666331,26.5293551 C72.1555965,21.5671678 74.3293088,17.5190846 77.6346064,14.5984631 C81.1241394,11.5150478 85.5360327,10.0020122 90.493257,10.0020122 C98.6712013,10.0020122 107.26826,13.7273214 116.455725,20.8044264 C120.20312,23.6910458 124.092437,27.170411 128.131651,31.2444746 C128.45314,30.8310265 128.816542,30.4410453 129.22143,30.0806152 C140.64098,19.9149716 150.255245,13.5989272 158.478408,11.1636507 C163.367899,9.715636 167.958526,9.57768202 172.138936,10.983031 C176.551631,12.4664684 180.06766,15.5329489 182.548314,19.8281091 C186.642288,26.9166735 187.721918,36.2310983 186.195595,47.7320243 C185.573451,52.4199112 184.50985,57.5263831 183.007094,63.0593153 C183.574045,63.1277086 184.142416,63.2532808 184.705041,63.4395297 C199.193932,68.2358678 209.453582,73.3937462 215.665021,79.2882839 C219.360669,82.7953831 221.773972,86.6998434 222.646365,91.0218204 C223.567176,95.5836746 222.669313,100.159332 220.191548,104.451297 C216.105211,111.529614 208.591643,117.11221 197.887587,121.534031 C193.589552,123.309539 188.726579,124.917559 183.293259,126.363748 C183.541176,126.92292 183.733521,127.516759 183.862138,128.139758 C186.954886,143.120505 187.618598,154.61061 185.619477,162.954027 C184.430513,167.916214 182.256801,171.964297 178.951503,174.884919 C175.46197,177.968334 171.050077,179.48137 166.092853,179.48137 C157.914908,179.48137 149.31785,175.756061 140.130385,168.678956 C136.343104,165.761613 132.410866,162.238839 128.325434,158.108619 C127.905075,158.765474 127.388968,159.376011 126.77857,159.919385 C115.35902,170.085028 105.744755,176.401073 97.5215915,178.836349 C92.6321009,180.284364 88.0414736,180.422318 83.8610636,179.016969 C79.4483686,177.533532 75.9323404,174.467051 73.4516862,170.171891 C69.3577116,163.083327 68.2780823,153.768902 69.8044053,142.267976 C70.449038,137.410634 71.56762,132.103898 73.1575891,126.339009 C72.5361041,126.276104 71.9120754,126.144816 71.2949591,125.940529 C56.8060684,121.144191 46.5464184,115.986312 40.3349789,110.091775 C36.6393312,106.584675 34.2260275,102.680215 33.3536352,98.3582381 C32.4328237,93.7963839 33.3306866,89.2207269 35.8084524,84.9287618 C39.8947886,77.8504443 47.4083565,72.2678481 58.1124133,67.8460273 C62.5385143,66.0176154 67.5637208,64.366822 73.1939394,62.8874674 C72.9933393,62.3969171 72.8349374,61.8811235 72.7239712,61.3436237 Z", + fill: "#002C4B", + fillRule: "nonzero", + transform: "translate(128.000000, 95.000000) scale(-1, 1) translate(-128.000000, -95.000000) " + }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1__.createElement("path", { + d: "M113.396882,64 L142.608177,64 C144.399254,64 146.053521,64.958025 146.944933,66.5115174 L161.577138,92.0115174 C162.461464,93.5526583 162.461464,95.4473417 161.577138,96.9884826 L146.944933,122.488483 C146.053521,124.041975 144.399254,125 142.608177,125 L113.396882,125 C111.605806,125 109.951539,124.041975 109.060126,122.488483 L94.4279211,96.9884826 C93.543596,95.4473417 93.543596,93.5526583 94.4279211,92.0115174 L109.060126,66.5115174 C109.951539,64.958025 111.605806,64 113.396882,64 Z M138.987827,70.2765273 C140.779849,70.2765273 142.434839,71.2355558 143.325899,72.7903404 L154.343038,92.0138131 C155.225607,93.5537825 155.225607,95.4462175 154.343038,96.9861869 L143.325899,116.20966 C142.434839,117.764444 140.779849,118.723473 138.987827,118.723473 L117.017233,118.723473 C115.225211,118.723473 113.570221,117.764444 112.67916,116.20966 L101.662022,96.9861869 C100.779452,95.4462175 100.779452,93.5537825 101.662022,92.0138131 L112.67916,72.7903404 C113.570221,71.2355558 115.225211,70.2765273 117.017233,70.2765273 L138.987827,70.2765273 Z M135.080648,77.1414791 L120.924411,77.1414791 C119.134228,77.1414791 117.480644,78.0985567 116.5889,79.6508285 L116.5889,79.6508285 L109.489217,92.0093494 C108.603232,93.5515958 108.603232,95.4484042 109.489217,96.9906506 L109.489217,96.9906506 L116.5889,109.349172 C117.480644,110.901443 119.134228,111.858521 120.924411,111.858521 L120.924411,111.858521 L135.080648,111.858521 C136.870831,111.858521 138.524416,110.901443 139.41616,109.349172 L139.41616,109.349172 L146.515843,96.9906506 C147.401828,95.4484042 147.401828,93.5515958 146.515843,92.0093494 L146.515843,92.0093494 L139.41616,79.6508285 C138.524416,78.0985567 136.870831,77.1414791 135.080648,77.1414791 L135.080648,77.1414791 Z M131.319186,83.7122186 C133.108028,83.7122186 134.760587,84.6678753 135.652827,86.2183156 L138.983552,92.0060969 C139.87203,93.5500005 139.87203,95.4499995 138.983552,96.9939031 L135.652827,102.781684 C134.760587,104.332125 133.108028,105.287781 131.319186,105.287781 L124.685874,105.287781 C122.897032,105.287781 121.244473,104.332125 120.352233,102.781684 L117.021508,96.9939031 C116.13303,95.4499995 116.13303,93.5500005 117.021508,92.0060969 L120.352233,86.2183156 C121.244473,84.6678753 122.897032,83.7122186 124.685874,83.7122186 L131.319186,83.7122186 Z M128.003794,90.1848875 C126.459294,90.1848875 125.034382,91.0072828 124.263005,92.3424437 C123.491732,93.6774232 123.491732,95.3225768 124.263005,96.6575563 C125.034382,97.9927172 126.459294,98.8151125 128.001266,98.8151125 L128.001266,98.8151125 C129.545766,98.8151125 130.970678,97.9927172 131.742055,96.6575563 C132.513327,95.3225768 132.513327,93.6774232 131.742055,92.3424437 C130.970678,91.0072828 129.545766,90.1848875 128.003794,90.1848875 L128.003794,90.1848875 Z M93,94.5009646 L100.767764,94.5009646", + fill: "#FFD94C" + }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1__.createElement("path", { + d: "M87.8601729,108.357758 C89.1715224,107.608286 90.8360246,108.074601 91.5779424,109.399303 L91.5779424,109.399303 L92.0525843,110.24352 C95.8563392,116.982993 99.8190116,123.380176 103.940602,129.435068 C108.807881,136.585427 114.28184,143.82411 120.362479,151.151115 C121.316878,152.30114 121.184944,154.011176 120.065686,154.997937 L120.065686,154.997937 L119.454208,155.534625 C99.3465389,173.103314 86.2778188,176.612552 80.2480482,166.062341 C74.3500652,155.742717 76.4844915,136.982888 86.6513274,109.782853 C86.876818,109.179582 87.3045861,108.675291 87.8601729,108.357758 Z M173.534177,129.041504 C174.986131,128.785177 176.375496,129.742138 176.65963,131.194242 L176.65963,131.194242 L176.812815,131.986376 C181.782365,157.995459 178.283348,171 166.315764,171 C154.609745,171 139.708724,159.909007 121.612702,137.727022 C121.211349,137.235047 120.994572,136.617371 121,135.981509 C121.013158,134.480686 122.235785,133.274651 123.730918,133.287756 L123.730918,133.287756 L124.684654,133.294531 C132.305698,133.335994 139.714387,133.071591 146.910723,132.501323 C155.409039,131.82788 164.283523,130.674607 173.534177,129.041504 Z M180.408726,73.8119663 C180.932139,72.4026903 182.508386,71.6634537 183.954581,72.149012 L183.954581,72.149012 L184.742552,72.4154854 C210.583763,81.217922 220.402356,90.8916805 214.198332,101.436761 C208.129904,111.751366 190.484347,119.260339 161.26166,123.963678 C160.613529,124.067994 159.948643,123.945969 159.382735,123.618843 C158.047025,122.846729 157.602046,121.158214 158.388848,119.847438 L158.388848,119.847438 L158.889328,119.0105 C162.877183,112.31633 166.481358,105.654262 169.701854,99.0242957 C173.50501,91.1948179 177.073967,82.7907081 180.408726,73.8119663 Z M94.7383398,66.0363218 C95.3864708,65.9320063 96.0513565,66.0540315 96.6172646,66.3811573 C97.9529754,67.153271 98.3979538,68.8417862 97.6111517,70.1525615 L97.6111517,70.1525615 L97.1106718,70.9895001 C93.1228168,77.6836699 89.5186416,84.3457379 86.2981462,90.9757043 C82.49499,98.8051821 78.9260328,107.209292 75.5912744,116.188034 C75.0678608,117.59731 73.4916142,118.336546 72.045419,117.850988 L72.045419,117.850988 L71.2574475,117.584515 C45.4162372,108.782078 35.597644,99.1083195 41.8016679,88.5632391 C47.8700957,78.2486335 65.515653,70.7396611 94.7383398,66.0363218 Z M136.545792,34.4653746 C156.653461,16.8966864 169.722181,13.3874478 175.751952,23.9376587 C181.649935,34.2572826 179.515508,53.0171122 169.348673,80.2171474 C169.123182,80.8204179 168.695414,81.324709 168.139827,81.6422422 C166.828478,82.3917144 165.163975,81.9253986 164.422058,80.6006966 L164.422058,80.6006966 L163.947416,79.7564798 C160.143661,73.0170065 156.180988,66.6198239 152.059398,60.564932 C147.192119,53.4145727 141.71816,46.1758903 135.637521,38.8488847 C134.683122,37.6988602 134.815056,35.9888243 135.934314,35.0020629 L135.934314,35.0020629 Z M90.6842361,18 C102.390255,18 117.291276,29.0909926 135.387298,51.2729777 C135.788651,51.7649527 136.005428,52.3826288 136,53.0184911 C135.986842,54.5193144 134.764215,55.7253489 133.269082,55.7122445 L133.269082,55.7122445 L132.315346,55.7054689 C124.694302,55.6640063 117.285613,55.9284091 110.089277,56.4986773 C101.590961,57.17212 92.7164767,58.325393 83.4658235,59.9584962 C82.0138691,60.2148231 80.6245044,59.2578618 80.3403697,57.805758 L80.3403697,57.805758 L80.1871846,57.0136235 C75.2176347,31.0045412 78.7166519,18 90.6842361,18 Z", + fill: "#FF4154" + })))); +} + +/***/ }), + +/***/ "../node_modules/react-query/es/devtools/devtools.js": +/*!***********************************************************!*\ + !*** ../node_modules/react-query/es/devtools/devtools.js ***! + \***********************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ ReactQueryDevtools: () => (/* binding */ ReactQueryDevtools), +/* harmony export */ ReactQueryDevtoolsPanel: () => (/* binding */ ReactQueryDevtoolsPanel) +/* harmony export */ }); +/* harmony import */ var _babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/extends */ "../node_modules/@babel/runtime/helpers/esm/extends.js"); +/* harmony import */ var _babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/esm/objectWithoutPropertiesLoose */ "../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js"); +/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react */ "react"); +/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_2__); +/* harmony import */ var react_query__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! react-query */ "../node_modules/react-query/es/index.js"); +/* harmony import */ var match_sorter__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! match-sorter */ "../node_modules/match-sorter/dist/match-sorter.esm.js"); +/* harmony import */ var _useLocalStorage__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./useLocalStorage */ "../node_modules/react-query/es/devtools/useLocalStorage.js"); +/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./utils */ "../node_modules/react-query/es/devtools/utils.js"); +/* harmony import */ var _styledComponents__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./styledComponents */ "../node_modules/react-query/es/devtools/styledComponents.js"); +/* harmony import */ var _theme__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./theme */ "../node_modules/react-query/es/devtools/theme.js"); +/* harmony import */ var _Explorer__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./Explorer */ "../node_modules/react-query/es/devtools/Explorer.js"); +/* harmony import */ var _Logo__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./Logo */ "../node_modules/react-query/es/devtools/Logo.js"); +/* harmony import */ var _core_utils__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../core/utils */ "../node_modules/react-query/es/core/utils.js"); + + + + + + + + + + + + + +var isServer = typeof window === 'undefined'; +function ReactQueryDevtools(_ref) { + var initialIsOpen = _ref.initialIsOpen, + _ref$panelProps = _ref.panelProps, + panelProps = _ref$panelProps === void 0 ? {} : _ref$panelProps, + _ref$closeButtonProps = _ref.closeButtonProps, + closeButtonProps = _ref$closeButtonProps === void 0 ? {} : _ref$closeButtonProps, + _ref$toggleButtonProp = _ref.toggleButtonProps, + toggleButtonProps = _ref$toggleButtonProp === void 0 ? {} : _ref$toggleButtonProp, + _ref$position = _ref.position, + position = _ref$position === void 0 ? 'bottom-left' : _ref$position, + _ref$containerElement = _ref.containerElement, + Container = _ref$containerElement === void 0 ? 'aside' : _ref$containerElement, + styleNonce = _ref.styleNonce; + var rootRef = react__WEBPACK_IMPORTED_MODULE_2___default().useRef(null); + var panelRef = react__WEBPACK_IMPORTED_MODULE_2___default().useRef(null); + + var _useLocalStorage = (0,_useLocalStorage__WEBPACK_IMPORTED_MODULE_5__["default"])('reactQueryDevtoolsOpen', initialIsOpen), + isOpen = _useLocalStorage[0], + setIsOpen = _useLocalStorage[1]; + + var _useLocalStorage2 = (0,_useLocalStorage__WEBPACK_IMPORTED_MODULE_5__["default"])('reactQueryDevtoolsHeight', null), + devtoolsHeight = _useLocalStorage2[0], + setDevtoolsHeight = _useLocalStorage2[1]; + + var _useSafeState = (0,_utils__WEBPACK_IMPORTED_MODULE_6__.useSafeState)(false), + isResolvedOpen = _useSafeState[0], + setIsResolvedOpen = _useSafeState[1]; + + var _useSafeState2 = (0,_utils__WEBPACK_IMPORTED_MODULE_6__.useSafeState)(false), + isResizing = _useSafeState2[0], + setIsResizing = _useSafeState2[1]; + + var isMounted = (0,_utils__WEBPACK_IMPORTED_MODULE_6__.useIsMounted)(); + + var _handleDragStart = function handleDragStart(panelElement, startEvent) { + var _panelElement$getBoun; + + if (startEvent.button !== 0) return; // Only allow left click for drag + + setIsResizing(true); + var dragInfo = { + originalHeight: (_panelElement$getBoun = panelElement == null ? void 0 : panelElement.getBoundingClientRect().height) != null ? _panelElement$getBoun : 0, + pageY: startEvent.pageY + }; + + var run = function run(moveEvent) { + var delta = dragInfo.pageY - moveEvent.pageY; + var newHeight = (dragInfo == null ? void 0 : dragInfo.originalHeight) + delta; + setDevtoolsHeight(newHeight); + + if (newHeight < 70) { + setIsOpen(false); + } else { + setIsOpen(true); + } + }; + + var unsub = function unsub() { + setIsResizing(false); + document.removeEventListener('mousemove', run); + document.removeEventListener('mouseUp', unsub); + }; + + document.addEventListener('mousemove', run); + document.addEventListener('mouseup', unsub); + }; + + react__WEBPACK_IMPORTED_MODULE_2___default().useEffect(function () { + setIsResolvedOpen(isOpen != null ? isOpen : false); + }, [isOpen, isResolvedOpen, setIsResolvedOpen]); // Toggle panel visibility before/after transition (depending on direction). + // Prevents focusing in a closed panel. + + react__WEBPACK_IMPORTED_MODULE_2___default().useEffect(function () { + var ref = panelRef.current; + + if (ref) { + var handlePanelTransitionStart = function handlePanelTransitionStart() { + if (ref && isResolvedOpen) { + ref.style.visibility = 'visible'; + } + }; + + var handlePanelTransitionEnd = function handlePanelTransitionEnd() { + if (ref && !isResolvedOpen) { + ref.style.visibility = 'hidden'; + } + }; + + ref.addEventListener('transitionstart', handlePanelTransitionStart); + ref.addEventListener('transitionend', handlePanelTransitionEnd); + return function () { + ref.removeEventListener('transitionstart', handlePanelTransitionStart); + ref.removeEventListener('transitionend', handlePanelTransitionEnd); + }; + } + }, [isResolvedOpen]); + (react__WEBPACK_IMPORTED_MODULE_2___default())[isServer ? 'useEffect' : 'useLayoutEffect'](function () { + if (isResolvedOpen) { + var _rootRef$current, _rootRef$current$pare; + + var previousValue = (_rootRef$current = rootRef.current) == null ? void 0 : (_rootRef$current$pare = _rootRef$current.parentElement) == null ? void 0 : _rootRef$current$pare.style.paddingBottom; + + var run = function run() { + var _panelRef$current, _rootRef$current2; + + var containerHeight = (_panelRef$current = panelRef.current) == null ? void 0 : _panelRef$current.getBoundingClientRect().height; + + if ((_rootRef$current2 = rootRef.current) == null ? void 0 : _rootRef$current2.parentElement) { + rootRef.current.parentElement.style.paddingBottom = containerHeight + "px"; + } + }; + + run(); + + if (typeof window !== 'undefined') { + window.addEventListener('resize', run); + return function () { + var _rootRef$current3; + + window.removeEventListener('resize', run); + + if (((_rootRef$current3 = rootRef.current) == null ? void 0 : _rootRef$current3.parentElement) && typeof previousValue === 'string') { + rootRef.current.parentElement.style.paddingBottom = previousValue; + } + }; + } + } + }, [isResolvedOpen]); + + var _panelProps$style = panelProps.style, + panelStyle = _panelProps$style === void 0 ? {} : _panelProps$style, + otherPanelProps = (0,_babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_1__["default"])(panelProps, ["style"]); + + var _closeButtonProps$sty = closeButtonProps.style, + closeButtonStyle = _closeButtonProps$sty === void 0 ? {} : _closeButtonProps$sty, + onCloseClick = closeButtonProps.onClick, + otherCloseButtonProps = (0,_babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_1__["default"])(closeButtonProps, ["style", "onClick"]); + + var _toggleButtonProps$st = toggleButtonProps.style, + toggleButtonStyle = _toggleButtonProps$st === void 0 ? {} : _toggleButtonProps$st, + onToggleClick = toggleButtonProps.onClick, + otherToggleButtonProps = (0,_babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_1__["default"])(toggleButtonProps, ["style", "onClick"]); // Do not render on the server + + + if (!isMounted()) return null; + return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().createElement(Container, { + ref: rootRef, + className: "ReactQueryDevtools", + "aria-label": "React Query Devtools" + }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().createElement(_theme__WEBPACK_IMPORTED_MODULE_7__.ThemeProvider, { + theme: _theme__WEBPACK_IMPORTED_MODULE_7__.defaultTheme + }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().createElement(ReactQueryDevtoolsPanel, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({ + ref: panelRef, + styleNonce: styleNonce + }, otherPanelProps, { + style: (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({ + position: 'fixed', + bottom: '0', + right: '0', + zIndex: 99999, + width: '100%', + height: devtoolsHeight != null ? devtoolsHeight : 500, + maxHeight: '90%', + boxShadow: '0 0 20px rgba(0,0,0,.3)', + borderTop: "1px solid " + _theme__WEBPACK_IMPORTED_MODULE_7__.defaultTheme.gray, + transformOrigin: 'top', + // visibility will be toggled after transitions, but set initial state here + visibility: isOpen ? 'visible' : 'hidden' + }, panelStyle, isResizing ? { + transition: "none" + } : { + transition: "all .2s ease" + }, isResolvedOpen ? { + opacity: 1, + pointerEvents: 'all', + transform: "translateY(0) scale(1)" + } : { + opacity: 0, + pointerEvents: 'none', + transform: "translateY(15px) scale(1.02)" + }), + isOpen: isResolvedOpen, + setIsOpen: setIsOpen, + handleDragStart: function handleDragStart(e) { + return _handleDragStart(panelRef.current, e); + } + })), isResolvedOpen ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().createElement(_styledComponents__WEBPACK_IMPORTED_MODULE_8__.Button, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({ + type: "button", + "aria-controls": "ReactQueryDevtoolsPanel", + "aria-haspopup": "true", + "aria-expanded": "true" + }, otherCloseButtonProps, { + onClick: function onClick(e) { + setIsOpen(false); + onCloseClick && onCloseClick(e); + }, + style: (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({ + position: 'fixed', + zIndex: 99999, + margin: '.5em', + bottom: 0 + }, position === 'top-right' ? { + right: '0' + } : position === 'top-left' ? { + left: '0' + } : position === 'bottom-right' ? { + right: '0' + } : { + left: '0' + }, closeButtonStyle) + }), "Close") : null), !isResolvedOpen ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().createElement("button", (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({ + type: "button" + }, otherToggleButtonProps, { + "aria-label": "Open React Query Devtools", + "aria-controls": "ReactQueryDevtoolsPanel", + "aria-haspopup": "true", + "aria-expanded": "false", + onClick: function onClick(e) { + setIsOpen(true); + onToggleClick && onToggleClick(e); + }, + style: (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({ + background: 'none', + border: 0, + padding: 0, + position: 'fixed', + zIndex: 99999, + display: 'inline-flex', + fontSize: '1.5em', + margin: '.5em', + cursor: 'pointer', + width: 'fit-content' + }, position === 'top-right' ? { + top: '0', + right: '0' + } : position === 'top-left' ? { + top: '0', + left: '0' + } : position === 'bottom-right' ? { + bottom: '0', + right: '0' + } : { + bottom: '0', + left: '0' + }, toggleButtonStyle) + }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().createElement(_Logo__WEBPACK_IMPORTED_MODULE_9__["default"], { + "aria-hidden": true + })) : null); +} + +var getStatusRank = function getStatusRank(q) { + return q.state.isFetching ? 0 : !q.getObserversCount() ? 3 : q.isStale() ? 2 : 1; +}; + +var sortFns = { + 'Status > Last Updated': function StatusLastUpdated(a, b) { + var _sortFns$LastUpdated; + + return getStatusRank(a) === getStatusRank(b) ? (_sortFns$LastUpdated = sortFns['Last Updated']) == null ? void 0 : _sortFns$LastUpdated.call(sortFns, a, b) : getStatusRank(a) > getStatusRank(b) ? 1 : -1; + }, + 'Query Hash': function QueryHash(a, b) { + return a.queryHash > b.queryHash ? 1 : -1; + }, + 'Last Updated': function LastUpdated(a, b) { + return a.state.dataUpdatedAt < b.state.dataUpdatedAt ? 1 : -1; + } +}; +var ReactQueryDevtoolsPanel = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().forwardRef(function ReactQueryDevtoolsPanel(props, ref) { + var _activeQuery$state; + + var _props$isOpen = props.isOpen, + isOpen = _props$isOpen === void 0 ? true : _props$isOpen, + styleNonce = props.styleNonce, + setIsOpen = props.setIsOpen, + handleDragStart = props.handleDragStart, + panelProps = (0,_babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_1__["default"])(props, ["isOpen", "styleNonce", "setIsOpen", "handleDragStart"]); + + var queryClient = (0,react_query__WEBPACK_IMPORTED_MODULE_3__.useQueryClient)(); + var queryCache = queryClient.getQueryCache(); + + var _useLocalStorage3 = (0,_useLocalStorage__WEBPACK_IMPORTED_MODULE_5__["default"])('reactQueryDevtoolsSortFn', Object.keys(sortFns)[0]), + sort = _useLocalStorage3[0], + setSort = _useLocalStorage3[1]; + + var _useLocalStorage4 = (0,_useLocalStorage__WEBPACK_IMPORTED_MODULE_5__["default"])('reactQueryDevtoolsFilter', ''), + filter = _useLocalStorage4[0], + setFilter = _useLocalStorage4[1]; + + var _useLocalStorage5 = (0,_useLocalStorage__WEBPACK_IMPORTED_MODULE_5__["default"])('reactQueryDevtoolsSortDesc', false), + sortDesc = _useLocalStorage5[0], + setSortDesc = _useLocalStorage5[1]; + + var sortFn = react__WEBPACK_IMPORTED_MODULE_2___default().useMemo(function () { + return sortFns[sort]; + }, [sort]); + (react__WEBPACK_IMPORTED_MODULE_2___default())[isServer ? 'useEffect' : 'useLayoutEffect'](function () { + if (!sortFn) { + setSort(Object.keys(sortFns)[0]); + } + }, [setSort, sortFn]); + + var _useSafeState3 = (0,_utils__WEBPACK_IMPORTED_MODULE_6__.useSafeState)(Object.values(queryCache.findAll())), + unsortedQueries = _useSafeState3[0], + setUnsortedQueries = _useSafeState3[1]; + + var _useLocalStorage6 = (0,_useLocalStorage__WEBPACK_IMPORTED_MODULE_5__["default"])('reactQueryDevtoolsActiveQueryHash', ''), + activeQueryHash = _useLocalStorage6[0], + setActiveQueryHash = _useLocalStorage6[1]; + + var queries = react__WEBPACK_IMPORTED_MODULE_2___default().useMemo(function () { + var sorted = [].concat(unsortedQueries).sort(sortFn); + + if (sortDesc) { + sorted.reverse(); + } + + if (!filter) { + return sorted; + } + + return (0,match_sorter__WEBPACK_IMPORTED_MODULE_4__.matchSorter)(sorted, filter, { + keys: ['queryHash'] + }).filter(function (d) { + return d.queryHash; + }); + }, [sortDesc, sortFn, unsortedQueries, filter]); + var activeQuery = react__WEBPACK_IMPORTED_MODULE_2___default().useMemo(function () { + return queries.find(function (query) { + return query.queryHash === activeQueryHash; + }); + }, [activeQueryHash, queries]); + var hasFresh = queries.filter(function (q) { + return (0,_utils__WEBPACK_IMPORTED_MODULE_6__.getQueryStatusLabel)(q) === 'fresh'; + }).length; + var hasFetching = queries.filter(function (q) { + return (0,_utils__WEBPACK_IMPORTED_MODULE_6__.getQueryStatusLabel)(q) === 'fetching'; + }).length; + var hasStale = queries.filter(function (q) { + return (0,_utils__WEBPACK_IMPORTED_MODULE_6__.getQueryStatusLabel)(q) === 'stale'; + }).length; + var hasInactive = queries.filter(function (q) { + return (0,_utils__WEBPACK_IMPORTED_MODULE_6__.getQueryStatusLabel)(q) === 'inactive'; + }).length; + react__WEBPACK_IMPORTED_MODULE_2___default().useEffect(function () { + if (isOpen) { + var unsubscribe = queryCache.subscribe(function () { + setUnsortedQueries(Object.values(queryCache.getAll())); + }); // re-subscribing after the panel is closed and re-opened won't trigger the callback, + // So we'll manually populate our state + + setUnsortedQueries(Object.values(queryCache.getAll())); + return unsubscribe; + } + + return undefined; + }, [isOpen, sort, sortFn, sortDesc, setUnsortedQueries, queryCache]); + + var handleRefetch = function handleRefetch() { + var promise = activeQuery == null ? void 0 : activeQuery.fetch(); + promise == null ? void 0 : promise.catch(_core_utils__WEBPACK_IMPORTED_MODULE_10__.noop); + }; + + return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().createElement(_theme__WEBPACK_IMPORTED_MODULE_7__.ThemeProvider, { + theme: _theme__WEBPACK_IMPORTED_MODULE_7__.defaultTheme + }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().createElement(_styledComponents__WEBPACK_IMPORTED_MODULE_8__.Panel, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({ + ref: ref, + className: "ReactQueryDevtoolsPanel", + "aria-label": "React Query Devtools Panel", + id: "ReactQueryDevtoolsPanel" + }, panelProps), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().createElement("style", { + nonce: styleNonce, + dangerouslySetInnerHTML: { + __html: "\n .ReactQueryDevtoolsPanel * {\n scrollbar-color: " + _theme__WEBPACK_IMPORTED_MODULE_7__.defaultTheme.backgroundAlt + " " + _theme__WEBPACK_IMPORTED_MODULE_7__.defaultTheme.gray + ";\n }\n\n .ReactQueryDevtoolsPanel *::-webkit-scrollbar, .ReactQueryDevtoolsPanel scrollbar {\n width: 1em;\n height: 1em;\n }\n\n .ReactQueryDevtoolsPanel *::-webkit-scrollbar-track, .ReactQueryDevtoolsPanel scrollbar-track {\n background: " + _theme__WEBPACK_IMPORTED_MODULE_7__.defaultTheme.backgroundAlt + ";\n }\n\n .ReactQueryDevtoolsPanel *::-webkit-scrollbar-thumb, .ReactQueryDevtoolsPanel scrollbar-thumb {\n background: " + _theme__WEBPACK_IMPORTED_MODULE_7__.defaultTheme.gray + ";\n border-radius: .5em;\n border: 3px solid " + _theme__WEBPACK_IMPORTED_MODULE_7__.defaultTheme.backgroundAlt + ";\n }\n " + } + }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().createElement("div", { + style: { + position: 'absolute', + left: 0, + top: 0, + width: '100%', + height: '4px', + marginBottom: '-4px', + cursor: 'row-resize', + zIndex: 100000 + }, + onMouseDown: handleDragStart + }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().createElement("div", { + style: { + flex: '1 1 500px', + minHeight: '40%', + maxHeight: '100%', + overflow: 'auto', + borderRight: "1px solid " + _theme__WEBPACK_IMPORTED_MODULE_7__.defaultTheme.grayAlt, + display: isOpen ? 'flex' : 'none', + flexDirection: 'column' + } + }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().createElement("div", { + style: { + padding: '.5em', + background: _theme__WEBPACK_IMPORTED_MODULE_7__.defaultTheme.backgroundAlt, + display: 'flex', + justifyContent: 'space-between', + alignItems: 'center' + } + }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().createElement("button", { + type: "button", + "aria-label": "Close React Query Devtools", + "aria-controls": "ReactQueryDevtoolsPanel", + "aria-haspopup": "true", + "aria-expanded": "true", + onClick: function onClick() { + return setIsOpen(false); + }, + style: { + display: 'inline-flex', + background: 'none', + border: 0, + padding: 0, + marginRight: '.5em', + cursor: 'pointer' + } + }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().createElement(_Logo__WEBPACK_IMPORTED_MODULE_9__["default"], { + "aria-hidden": true + })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().createElement("div", { + style: { + display: 'flex', + flexDirection: 'column' + } + }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().createElement(_styledComponents__WEBPACK_IMPORTED_MODULE_8__.QueryKeys, { + style: { + marginBottom: '.5em' + } + }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().createElement(_styledComponents__WEBPACK_IMPORTED_MODULE_8__.QueryKey, { + style: { + background: _theme__WEBPACK_IMPORTED_MODULE_7__.defaultTheme.success, + opacity: hasFresh ? 1 : 0.3 + } + }, "fresh ", /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().createElement(_styledComponents__WEBPACK_IMPORTED_MODULE_8__.Code, null, "(", hasFresh, ")")), ' ', /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().createElement(_styledComponents__WEBPACK_IMPORTED_MODULE_8__.QueryKey, { + style: { + background: _theme__WEBPACK_IMPORTED_MODULE_7__.defaultTheme.active, + opacity: hasFetching ? 1 : 0.3 + } + }, "fetching ", /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().createElement(_styledComponents__WEBPACK_IMPORTED_MODULE_8__.Code, null, "(", hasFetching, ")")), ' ', /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().createElement(_styledComponents__WEBPACK_IMPORTED_MODULE_8__.QueryKey, { + style: { + background: _theme__WEBPACK_IMPORTED_MODULE_7__.defaultTheme.warning, + color: 'black', + textShadow: '0', + opacity: hasStale ? 1 : 0.3 + } + }, "stale ", /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().createElement(_styledComponents__WEBPACK_IMPORTED_MODULE_8__.Code, null, "(", hasStale, ")")), ' ', /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().createElement(_styledComponents__WEBPACK_IMPORTED_MODULE_8__.QueryKey, { + style: { + background: _theme__WEBPACK_IMPORTED_MODULE_7__.defaultTheme.gray, + opacity: hasInactive ? 1 : 0.3 + } + }, "inactive ", /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().createElement(_styledComponents__WEBPACK_IMPORTED_MODULE_8__.Code, null, "(", hasInactive, ")"))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().createElement("div", { + style: { + display: 'flex', + alignItems: 'center' + } + }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().createElement(_styledComponents__WEBPACK_IMPORTED_MODULE_8__.Input, { + placeholder: "Filter", + "aria-label": "Filter by queryhash", + value: filter != null ? filter : '', + onChange: function onChange(e) { + return setFilter(e.target.value); + }, + onKeyDown: function onKeyDown(e) { + if (e.key === 'Escape') setFilter(''); + }, + style: { + flex: '1', + marginRight: '.5em', + width: '100%' + } + }), !filter ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().createElement((react__WEBPACK_IMPORTED_MODULE_2___default().Fragment), null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().createElement(_styledComponents__WEBPACK_IMPORTED_MODULE_8__.Select, { + "aria-label": "Sort queries", + value: sort, + onChange: function onChange(e) { + return setSort(e.target.value); + }, + style: { + flex: '1', + minWidth: 75, + marginRight: '.5em' + } + }, Object.keys(sortFns).map(function (key) { + return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().createElement("option", { + key: key, + value: key + }, "Sort by ", key); + })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().createElement(_styledComponents__WEBPACK_IMPORTED_MODULE_8__.Button, { + type: "button", + onClick: function onClick() { + return setSortDesc(function (old) { + return !old; + }); + }, + style: { + padding: '.3em .4em' + } + }, sortDesc ? '⬇ Desc' : '⬆ Asc')) : null))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().createElement("div", { + style: { + overflowY: 'auto', + flex: '1' + } + }, queries.map(function (query, i) { + var isDisabled = query.getObserversCount() > 0 && !query.isActive(); + return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().createElement("div", { + key: query.queryHash || i, + role: "button", + "aria-label": "Open query details for " + query.queryHash, + onClick: function onClick() { + return setActiveQueryHash(activeQueryHash === query.queryHash ? '' : query.queryHash); + }, + style: { + display: 'flex', + borderBottom: "solid 1px " + _theme__WEBPACK_IMPORTED_MODULE_7__.defaultTheme.grayAlt, + cursor: 'pointer', + background: query === activeQuery ? 'rgba(255,255,255,.1)' : undefined + } + }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().createElement("div", { + style: { + flex: '0 0 auto', + width: '2em', + height: '2em', + background: (0,_utils__WEBPACK_IMPORTED_MODULE_6__.getQueryStatusColor)(query, _theme__WEBPACK_IMPORTED_MODULE_7__.defaultTheme), + display: 'flex', + alignItems: 'center', + justifyContent: 'center', + fontWeight: 'bold', + textShadow: (0,_utils__WEBPACK_IMPORTED_MODULE_6__.getQueryStatusLabel)(query) === 'stale' ? '0' : '0 0 10px black', + color: (0,_utils__WEBPACK_IMPORTED_MODULE_6__.getQueryStatusLabel)(query) === 'stale' ? 'black' : 'white' + } + }, query.getObserversCount()), isDisabled ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().createElement("div", { + style: { + flex: '0 0 auto', + height: '2em', + background: _theme__WEBPACK_IMPORTED_MODULE_7__.defaultTheme.gray, + display: 'flex', + alignItems: 'center', + fontWeight: 'bold', + padding: '0 0.5em' + } + }, "disabled") : null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().createElement(_styledComponents__WEBPACK_IMPORTED_MODULE_8__.Code, { + style: { + padding: '.5em' + } + }, "" + query.queryHash)); + }))), activeQuery ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().createElement(_styledComponents__WEBPACK_IMPORTED_MODULE_8__.ActiveQueryPanel, null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().createElement("div", { + style: { + padding: '.5em', + background: _theme__WEBPACK_IMPORTED_MODULE_7__.defaultTheme.backgroundAlt, + position: 'sticky', + top: 0, + zIndex: 1 + } + }, "Query Details"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().createElement("div", { + style: { + padding: '.5em' + } + }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().createElement("div", { + style: { + marginBottom: '.5em', + display: 'flex', + alignItems: 'start', + justifyContent: 'space-between' + } + }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().createElement(_styledComponents__WEBPACK_IMPORTED_MODULE_8__.Code, { + style: { + lineHeight: '1.8em' + } + }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().createElement("pre", { + style: { + margin: 0, + padding: 0, + overflow: 'auto' + } + }, JSON.stringify(activeQuery.queryKey, null, 2))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().createElement("span", { + style: { + padding: '0.3em .6em', + borderRadius: '0.4em', + fontWeight: 'bold', + textShadow: '0 2px 10px black', + background: (0,_utils__WEBPACK_IMPORTED_MODULE_6__.getQueryStatusColor)(activeQuery, _theme__WEBPACK_IMPORTED_MODULE_7__.defaultTheme), + flexShrink: 0 + } + }, (0,_utils__WEBPACK_IMPORTED_MODULE_6__.getQueryStatusLabel)(activeQuery))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().createElement("div", { + style: { + marginBottom: '.5em', + display: 'flex', + alignItems: 'center', + justifyContent: 'space-between' + } + }, "Observers: ", /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().createElement(_styledComponents__WEBPACK_IMPORTED_MODULE_8__.Code, null, activeQuery.getObserversCount())), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().createElement("div", { + style: { + display: 'flex', + alignItems: 'center', + justifyContent: 'space-between' + } + }, "Last Updated:", ' ', /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().createElement(_styledComponents__WEBPACK_IMPORTED_MODULE_8__.Code, null, new Date(activeQuery.state.dataUpdatedAt).toLocaleTimeString()))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().createElement("div", { + style: { + background: _theme__WEBPACK_IMPORTED_MODULE_7__.defaultTheme.backgroundAlt, + padding: '.5em', + position: 'sticky', + top: 0, + zIndex: 1 + } + }, "Actions"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().createElement("div", { + style: { + padding: '0.5em' + } + }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().createElement(_styledComponents__WEBPACK_IMPORTED_MODULE_8__.Button, { + type: "button", + onClick: handleRefetch, + disabled: activeQuery.state.isFetching, + style: { + background: _theme__WEBPACK_IMPORTED_MODULE_7__.defaultTheme.active + } + }, "Refetch"), ' ', /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().createElement(_styledComponents__WEBPACK_IMPORTED_MODULE_8__.Button, { + type: "button", + onClick: function onClick() { + return queryClient.invalidateQueries(activeQuery); + }, + style: { + background: _theme__WEBPACK_IMPORTED_MODULE_7__.defaultTheme.warning, + color: _theme__WEBPACK_IMPORTED_MODULE_7__.defaultTheme.inputTextColor + } + }, "Invalidate"), ' ', /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().createElement(_styledComponents__WEBPACK_IMPORTED_MODULE_8__.Button, { + type: "button", + onClick: function onClick() { + return queryClient.resetQueries(activeQuery); + }, + style: { + background: _theme__WEBPACK_IMPORTED_MODULE_7__.defaultTheme.gray + } + }, "Reset"), ' ', /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().createElement(_styledComponents__WEBPACK_IMPORTED_MODULE_8__.Button, { + type: "button", + onClick: function onClick() { + return queryClient.removeQueries(activeQuery); + }, + style: { + background: _theme__WEBPACK_IMPORTED_MODULE_7__.defaultTheme.danger + } + }, "Remove")), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().createElement("div", { + style: { + background: _theme__WEBPACK_IMPORTED_MODULE_7__.defaultTheme.backgroundAlt, + padding: '.5em', + position: 'sticky', + top: 0, + zIndex: 1 + } + }, "Data Explorer"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().createElement("div", { + style: { + padding: '.5em' + } + }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().createElement(_Explorer__WEBPACK_IMPORTED_MODULE_11__["default"], { + label: "Data", + value: activeQuery == null ? void 0 : (_activeQuery$state = activeQuery.state) == null ? void 0 : _activeQuery$state.data, + defaultExpanded: {} + })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().createElement("div", { + style: { + background: _theme__WEBPACK_IMPORTED_MODULE_7__.defaultTheme.backgroundAlt, + padding: '.5em', + position: 'sticky', + top: 0, + zIndex: 1 + } + }, "Query Explorer"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().createElement("div", { + style: { + padding: '.5em' + } + }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().createElement(_Explorer__WEBPACK_IMPORTED_MODULE_11__["default"], { + label: "Query", + value: activeQuery, + defaultExpanded: { + queryKey: true + } + }))) : null)); +}); + +/***/ }), + +/***/ "../node_modules/react-query/es/devtools/index.js": +/*!********************************************************!*\ + !*** ../node_modules/react-query/es/devtools/index.js ***! + \********************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ ReactQueryDevtools: () => (/* reexport safe */ _devtools__WEBPACK_IMPORTED_MODULE_0__.ReactQueryDevtools), +/* harmony export */ ReactQueryDevtoolsPanel: () => (/* reexport safe */ _devtools__WEBPACK_IMPORTED_MODULE_0__.ReactQueryDevtoolsPanel) +/* harmony export */ }); +/* harmony import */ var _devtools__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./devtools */ "../node_modules/react-query/es/devtools/devtools.js"); + + +/***/ }), + +/***/ "../node_modules/react-query/es/devtools/styledComponents.js": +/*!*******************************************************************!*\ + !*** ../node_modules/react-query/es/devtools/styledComponents.js ***! + \*******************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ ActiveQueryPanel: () => (/* binding */ ActiveQueryPanel), +/* harmony export */ Button: () => (/* binding */ Button), +/* harmony export */ Code: () => (/* binding */ Code), +/* harmony export */ Input: () => (/* binding */ Input), +/* harmony export */ Panel: () => (/* binding */ Panel), +/* harmony export */ QueryKey: () => (/* binding */ QueryKey), +/* harmony export */ QueryKeys: () => (/* binding */ QueryKeys), +/* harmony export */ Select: () => (/* binding */ Select) +/* harmony export */ }); +/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./utils */ "../node_modules/react-query/es/devtools/utils.js"); + +var Panel = (0,_utils__WEBPACK_IMPORTED_MODULE_0__.styled)('div', function (_props, theme) { + return { + fontSize: 'clamp(12px, 1.5vw, 14px)', + fontFamily: "sans-serif", + display: 'flex', + backgroundColor: theme.background, + color: theme.foreground + }; +}, { + '(max-width: 700px)': { + flexDirection: 'column' + }, + '(max-width: 600px)': { + fontSize: '.9em' // flexDirection: 'column', + + } +}); +var ActiveQueryPanel = (0,_utils__WEBPACK_IMPORTED_MODULE_0__.styled)('div', function () { + return { + flex: '1 1 500px', + display: 'flex', + flexDirection: 'column', + overflow: 'auto', + height: '100%' + }; +}, { + '(max-width: 700px)': function maxWidth700px(_props, theme) { + return { + borderTop: "2px solid " + theme.gray + }; + } +}); +var Button = (0,_utils__WEBPACK_IMPORTED_MODULE_0__.styled)('button', function (props, theme) { + return { + appearance: 'none', + fontSize: '.9em', + fontWeight: 'bold', + background: theme.gray, + border: '0', + borderRadius: '.3em', + color: 'white', + padding: '.5em', + opacity: props.disabled ? '.5' : undefined, + cursor: 'pointer' + }; +}); +var QueryKeys = (0,_utils__WEBPACK_IMPORTED_MODULE_0__.styled)('span', { + display: 'inline-block', + fontSize: '0.9em' +}); +var QueryKey = (0,_utils__WEBPACK_IMPORTED_MODULE_0__.styled)('span', { + display: 'inline-flex', + alignItems: 'center', + padding: '.2em .4em', + fontWeight: 'bold', + textShadow: '0 0 10px black', + borderRadius: '.2em' +}); +var Code = (0,_utils__WEBPACK_IMPORTED_MODULE_0__.styled)('code', { + fontSize: '.9em', + color: 'inherit', + background: 'inherit' +}); +var Input = (0,_utils__WEBPACK_IMPORTED_MODULE_0__.styled)('input', function (_props, theme) { + return { + backgroundColor: theme.inputBackgroundColor, + border: 0, + borderRadius: '.2em', + color: theme.inputTextColor, + fontSize: '.9em', + lineHeight: "1.3", + padding: '.3em .4em' + }; +}); +var Select = (0,_utils__WEBPACK_IMPORTED_MODULE_0__.styled)('select', function (_props, theme) { + return { + display: "inline-block", + fontSize: ".9em", + fontFamily: "sans-serif", + fontWeight: 'normal', + lineHeight: "1.3", + padding: ".3em 1.5em .3em .5em", + height: 'auto', + border: 0, + borderRadius: ".2em", + appearance: "none", + WebkitAppearance: 'none', + backgroundColor: theme.inputBackgroundColor, + backgroundImage: "url(\"data:image/svg+xml;utf8,\")", + backgroundRepeat: "no-repeat", + backgroundPosition: "right .55em center", + backgroundSize: ".65em auto, 100%", + color: theme.inputTextColor + }; +}, { + '(max-width: 500px)': { + display: 'none' + } +}); + +/***/ }), + +/***/ "../node_modules/react-query/es/devtools/theme.js": +/*!********************************************************!*\ + !*** ../node_modules/react-query/es/devtools/theme.js ***! + \********************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ ThemeProvider: () => (/* binding */ ThemeProvider), +/* harmony export */ defaultTheme: () => (/* binding */ defaultTheme), +/* harmony export */ useTheme: () => (/* binding */ useTheme) +/* harmony export */ }); +/* harmony import */ var _babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/extends */ "../node_modules/@babel/runtime/helpers/esm/extends.js"); +/* harmony import */ var _babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/esm/objectWithoutPropertiesLoose */ "../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js"); +/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react */ "react"); +/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_2__); + + + +var defaultTheme = { + background: '#0b1521', + backgroundAlt: '#132337', + foreground: 'white', + gray: '#3f4e60', + grayAlt: '#222e3e', + inputBackgroundColor: '#fff', + inputTextColor: '#000', + success: '#00ab52', + danger: '#ff0085', + active: '#006bff', + warning: '#ffb200' +}; +var ThemeContext = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().createContext(defaultTheme); +function ThemeProvider(_ref) { + var theme = _ref.theme, + rest = (0,_babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_1__["default"])(_ref, ["theme"]); + + return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().createElement(ThemeContext.Provider, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({ + value: theme + }, rest)); +} +function useTheme() { + return react__WEBPACK_IMPORTED_MODULE_2___default().useContext(ThemeContext); +} + +/***/ }), + +/***/ "../node_modules/react-query/es/devtools/useLocalStorage.js": +/*!******************************************************************!*\ + !*** ../node_modules/react-query/es/devtools/useLocalStorage.js ***! + \******************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (/* binding */ useLocalStorage) +/* harmony export */ }); +/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react"); +/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__); + + +var getItem = function getItem(key) { + try { + var itemValue = localStorage.getItem(key); + + if (typeof itemValue === 'string') { + return JSON.parse(itemValue); + } + + return undefined; + } catch (_unused) { + return undefined; + } +}; + +function useLocalStorage(key, defaultValue) { + var _React$useState = react__WEBPACK_IMPORTED_MODULE_0___default().useState(), + value = _React$useState[0], + setValue = _React$useState[1]; + + react__WEBPACK_IMPORTED_MODULE_0___default().useEffect(function () { + var initialValue = getItem(key); + + if (typeof initialValue === 'undefined' || initialValue === null) { + setValue(typeof defaultValue === 'function' ? defaultValue() : defaultValue); + } else { + setValue(initialValue); + } + }, [defaultValue, key]); + var setter = react__WEBPACK_IMPORTED_MODULE_0___default().useCallback(function (updater) { + setValue(function (old) { + var newVal = updater; + + if (typeof updater == 'function') { + newVal = updater(old); + } + + try { + localStorage.setItem(key, JSON.stringify(newVal)); + } catch (_unused2) {} + + return newVal; + }); + }, [key]); + return [value, setter]; +} + +/***/ }), + +/***/ "../node_modules/react-query/es/devtools/useMediaQuery.js": +/*!****************************************************************!*\ + !*** ../node_modules/react-query/es/devtools/useMediaQuery.js ***! + \****************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (/* binding */ useMediaQuery) +/* harmony export */ }); +/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react"); +/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__); + +function useMediaQuery(query) { + // Keep track of the preference in state, start with the current match + var _React$useState = react__WEBPACK_IMPORTED_MODULE_0___default().useState(function () { + if (typeof window !== 'undefined') { + return window.matchMedia && window.matchMedia(query).matches; + } + }), + isMatch = _React$useState[0], + setIsMatch = _React$useState[1]; // Watch for changes + + + react__WEBPACK_IMPORTED_MODULE_0___default().useEffect(function () { + if (typeof window !== 'undefined') { + if (!window.matchMedia) { + return; + } // Create a matcher + + + var matcher = window.matchMedia(query); // Create our handler + + var onChange = function onChange(_ref) { + var matches = _ref.matches; + return setIsMatch(matches); + }; // Listen for changes + + + matcher.addListener(onChange); + return function () { + // Stop listening for changes + matcher.removeListener(onChange); + }; + } + }, [isMatch, query, setIsMatch]); + return isMatch; +} + +/***/ }), + +/***/ "../node_modules/react-query/es/devtools/utils.js": +/*!********************************************************!*\ + !*** ../node_modules/react-query/es/devtools/utils.js ***! + \********************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ displayValue: () => (/* binding */ displayValue), +/* harmony export */ getQueryStatusColor: () => (/* binding */ getQueryStatusColor), +/* harmony export */ getQueryStatusLabel: () => (/* binding */ getQueryStatusLabel), +/* harmony export */ isServer: () => (/* binding */ isServer), +/* harmony export */ styled: () => (/* binding */ styled), +/* harmony export */ useIsMounted: () => (/* binding */ useIsMounted), +/* harmony export */ useSafeState: () => (/* binding */ useSafeState) +/* harmony export */ }); +/* harmony import */ var _babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/extends */ "../node_modules/@babel/runtime/helpers/esm/extends.js"); +/* harmony import */ var _babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/esm/objectWithoutPropertiesLoose */ "../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js"); +/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react */ "react"); +/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_2__); +/* harmony import */ var _theme__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./theme */ "../node_modules/react-query/es/devtools/theme.js"); +/* harmony import */ var _useMediaQuery__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./useMediaQuery */ "../node_modules/react-query/es/devtools/useMediaQuery.js"); + + + + + +var isServer = typeof window === 'undefined'; +function getQueryStatusColor(query, theme) { + return query.state.isFetching ? theme.active : !query.getObserversCount() ? theme.gray : query.isStale() ? theme.warning : theme.success; +} +function getQueryStatusLabel(query) { + return query.state.isFetching ? 'fetching' : !query.getObserversCount() ? 'inactive' : query.isStale() ? 'stale' : 'fresh'; +} +function styled(type, newStyles, queries) { + if (queries === void 0) { + queries = {}; + } + + return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().forwardRef(function (_ref, ref) { + var style = _ref.style, + rest = (0,_babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_1__["default"])(_ref, ["style"]); + + var theme = (0,_theme__WEBPACK_IMPORTED_MODULE_3__.useTheme)(); + var mediaStyles = Object.entries(queries).reduce(function (current, _ref2) { + var key = _ref2[0], + value = _ref2[1]; + // eslint-disable-next-line react-hooks/rules-of-hooks + return (0,_useMediaQuery__WEBPACK_IMPORTED_MODULE_4__["default"])(key) ? (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({}, current, typeof value === 'function' ? value(rest, theme) : value) : current; + }, {}); + return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().createElement(type, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({}, rest, { + style: (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({}, typeof newStyles === 'function' ? newStyles(rest, theme) : newStyles, style, mediaStyles), + ref: ref + })); + }); +} +function useIsMounted() { + var mountedRef = react__WEBPACK_IMPORTED_MODULE_2___default().useRef(false); + var isMounted = react__WEBPACK_IMPORTED_MODULE_2___default().useCallback(function () { + return mountedRef.current; + }, []); + (react__WEBPACK_IMPORTED_MODULE_2___default())[isServer ? 'useEffect' : 'useLayoutEffect'](function () { + mountedRef.current = true; + return function () { + mountedRef.current = false; + }; + }, []); + return isMounted; +} +/** + * This hook is a safe useState version which schedules state updates in microtasks + * to prevent updating a component state while React is rendering different components + * or when the component is not mounted anymore. + */ + +function useSafeState(initialState) { + var isMounted = useIsMounted(); + + var _React$useState = react__WEBPACK_IMPORTED_MODULE_2___default().useState(initialState), + state = _React$useState[0], + setState = _React$useState[1]; + + var safeSetState = react__WEBPACK_IMPORTED_MODULE_2___default().useCallback(function (value) { + scheduleMicrotask(function () { + if (isMounted()) { + setState(value); + } + }); + }, [isMounted]); + return [state, safeSetState]; +} +/** + * Displays a string regardless the type of the data + * @param {unknown} value Value to be stringified + */ + +var displayValue = function displayValue(value) { + var name = Object.getOwnPropertyNames(Object(value)); + var newValue = typeof value === 'bigint' ? value.toString() + "n" : value; + return JSON.stringify(newValue, name); +}; +/** + * Schedules a microtask. + * This can be useful to schedule state updates after rendering. + */ + +function scheduleMicrotask(callback) { + Promise.resolve().then(callback).catch(function (error) { + return setTimeout(function () { + throw error; + }); + }); +} + +/***/ }), + +/***/ "../node_modules/react-query/es/index.js": +/*!***********************************************!*\ + !*** ../node_modules/react-query/es/index.js ***! + \***********************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./core */ "../node_modules/react-query/es/core/index.js"); +/* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {}; +/* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _core__WEBPACK_IMPORTED_MODULE_0__) if(__WEBPACK_IMPORT_KEY__ !== "default") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _core__WEBPACK_IMPORTED_MODULE_0__[__WEBPACK_IMPORT_KEY__] +/* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__); +/* harmony import */ var _react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./react */ "../node_modules/react-query/es/react/index.js"); +/* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {}; +/* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _react__WEBPACK_IMPORTED_MODULE_1__) if(["default","CancelledError","QueryCache","QueryClient","QueryObserver","QueriesObserver","InfiniteQueryObserver","MutationCache","MutationObserver","setLogger","notifyManager","focusManager","onlineManager","hashQueryKey","isError","isCancelledError","dehydrate","hydrate"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _react__WEBPACK_IMPORTED_MODULE_1__[__WEBPACK_IMPORT_KEY__] +/* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__); + + + +/***/ }), + +/***/ "../node_modules/react-query/es/react/Hydrate.js": +/*!*******************************************************!*\ + !*** ../node_modules/react-query/es/react/Hydrate.js ***! + \*******************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ Hydrate: () => (/* binding */ Hydrate), +/* harmony export */ useHydrate: () => (/* binding */ useHydrate) +/* harmony export */ }); +/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react"); +/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__); +/* harmony import */ var _core__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../core */ "../node_modules/react-query/es/core/hydration.js"); +/* harmony import */ var _QueryClientProvider__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./QueryClientProvider */ "../node_modules/react-query/es/react/QueryClientProvider.js"); + + + +function useHydrate(state, options) { + var queryClient = (0,_QueryClientProvider__WEBPACK_IMPORTED_MODULE_1__.useQueryClient)(); + var optionsRef = react__WEBPACK_IMPORTED_MODULE_0___default().useRef(options); + optionsRef.current = options; // Running hydrate again with the same queries is safe, + // it wont overwrite or initialize existing queries, + // relying on useMemo here is only a performance optimization. + // hydrate can and should be run *during* render here for SSR to work properly + + react__WEBPACK_IMPORTED_MODULE_0___default().useMemo(function () { + if (state) { + (0,_core__WEBPACK_IMPORTED_MODULE_2__.hydrate)(queryClient, state, optionsRef.current); + } + }, [queryClient, state]); +} +var Hydrate = function Hydrate(_ref) { + var children = _ref.children, + options = _ref.options, + state = _ref.state; + useHydrate(state, options); + return children; +}; + +/***/ }), + +/***/ "../node_modules/react-query/es/react/QueryClientProvider.js": +/*!*******************************************************************!*\ + !*** ../node_modules/react-query/es/react/QueryClientProvider.js ***! + \*******************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ QueryClientProvider: () => (/* binding */ QueryClientProvider), +/* harmony export */ useQueryClient: () => (/* binding */ useQueryClient) +/* harmony export */ }); +/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react"); +/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__); + +var defaultContext = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createContext(undefined); +var QueryClientSharingContext = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createContext(false); // if contextSharing is on, we share the first and at least one +// instance of the context across the window +// to ensure that if React Query is used across +// different bundles or microfrontends they will +// all use the same **instance** of context, regardless +// of module scoping. + +function getQueryClientContext(contextSharing) { + if (contextSharing && typeof window !== 'undefined') { + if (!window.ReactQueryClientContext) { + window.ReactQueryClientContext = defaultContext; + } + + return window.ReactQueryClientContext; + } + + return defaultContext; +} + +var useQueryClient = function useQueryClient() { + var queryClient = react__WEBPACK_IMPORTED_MODULE_0___default().useContext(getQueryClientContext(react__WEBPACK_IMPORTED_MODULE_0___default().useContext(QueryClientSharingContext))); + + if (!queryClient) { + throw new Error('No QueryClient set, use QueryClientProvider to set one'); + } + + return queryClient; +}; +var QueryClientProvider = function QueryClientProvider(_ref) { + var client = _ref.client, + _ref$contextSharing = _ref.contextSharing, + contextSharing = _ref$contextSharing === void 0 ? false : _ref$contextSharing, + children = _ref.children; + react__WEBPACK_IMPORTED_MODULE_0___default().useEffect(function () { + client.mount(); + return function () { + client.unmount(); + }; + }, [client]); + var Context = getQueryClientContext(contextSharing); + return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(QueryClientSharingContext.Provider, { + value: contextSharing + }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Context.Provider, { + value: client + }, children)); +}; + +/***/ }), + +/***/ "../node_modules/react-query/es/react/QueryErrorResetBoundary.js": +/*!***********************************************************************!*\ + !*** ../node_modules/react-query/es/react/QueryErrorResetBoundary.js ***! + \***********************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ QueryErrorResetBoundary: () => (/* binding */ QueryErrorResetBoundary), +/* harmony export */ useQueryErrorResetBoundary: () => (/* binding */ useQueryErrorResetBoundary) +/* harmony export */ }); +/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react"); +/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__); + // CONTEXT + +function createValue() { + var _isReset = false; + return { + clearReset: function clearReset() { + _isReset = false; + }, + reset: function reset() { + _isReset = true; + }, + isReset: function isReset() { + return _isReset; + } + }; +} + +var QueryErrorResetBoundaryContext = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createContext(createValue()); // HOOK + +var useQueryErrorResetBoundary = function useQueryErrorResetBoundary() { + return react__WEBPACK_IMPORTED_MODULE_0___default().useContext(QueryErrorResetBoundaryContext); +}; // COMPONENT + +var QueryErrorResetBoundary = function QueryErrorResetBoundary(_ref) { + var children = _ref.children; + var value = react__WEBPACK_IMPORTED_MODULE_0___default().useMemo(function () { + return createValue(); + }, []); + return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(QueryErrorResetBoundaryContext.Provider, { + value: value + }, typeof children === 'function' ? children(value) : children); +}; + +/***/ }), + +/***/ "../node_modules/react-query/es/react/index.js": +/*!*****************************************************!*\ + !*** ../node_modules/react-query/es/react/index.js ***! + \*****************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ Hydrate: () => (/* reexport safe */ _Hydrate__WEBPACK_IMPORTED_MODULE_10__.Hydrate), +/* harmony export */ QueryClientProvider: () => (/* reexport safe */ _QueryClientProvider__WEBPACK_IMPORTED_MODULE_2__.QueryClientProvider), +/* harmony export */ QueryErrorResetBoundary: () => (/* reexport safe */ _QueryErrorResetBoundary__WEBPACK_IMPORTED_MODULE_3__.QueryErrorResetBoundary), +/* harmony export */ useHydrate: () => (/* reexport safe */ _Hydrate__WEBPACK_IMPORTED_MODULE_10__.useHydrate), +/* harmony export */ useInfiniteQuery: () => (/* reexport safe */ _useInfiniteQuery__WEBPACK_IMPORTED_MODULE_9__.useInfiniteQuery), +/* harmony export */ useIsFetching: () => (/* reexport safe */ _useIsFetching__WEBPACK_IMPORTED_MODULE_4__.useIsFetching), +/* harmony export */ useIsMutating: () => (/* reexport safe */ _useIsMutating__WEBPACK_IMPORTED_MODULE_5__.useIsMutating), +/* harmony export */ useMutation: () => (/* reexport safe */ _useMutation__WEBPACK_IMPORTED_MODULE_6__.useMutation), +/* harmony export */ useQueries: () => (/* reexport safe */ _useQueries__WEBPACK_IMPORTED_MODULE_8__.useQueries), +/* harmony export */ useQuery: () => (/* reexport safe */ _useQuery__WEBPACK_IMPORTED_MODULE_7__.useQuery), +/* harmony export */ useQueryClient: () => (/* reexport safe */ _QueryClientProvider__WEBPACK_IMPORTED_MODULE_2__.useQueryClient), +/* harmony export */ useQueryErrorResetBoundary: () => (/* reexport safe */ _QueryErrorResetBoundary__WEBPACK_IMPORTED_MODULE_3__.useQueryErrorResetBoundary) +/* harmony export */ }); +/* harmony import */ var _setBatchUpdatesFn__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./setBatchUpdatesFn */ "../node_modules/react-query/es/react/setBatchUpdatesFn.js"); +/* harmony import */ var _setLogger__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./setLogger */ "../node_modules/react-query/es/react/setLogger.js"); +/* harmony import */ var _QueryClientProvider__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./QueryClientProvider */ "../node_modules/react-query/es/react/QueryClientProvider.js"); +/* harmony import */ var _QueryErrorResetBoundary__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./QueryErrorResetBoundary */ "../node_modules/react-query/es/react/QueryErrorResetBoundary.js"); +/* harmony import */ var _useIsFetching__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./useIsFetching */ "../node_modules/react-query/es/react/useIsFetching.js"); +/* harmony import */ var _useIsMutating__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./useIsMutating */ "../node_modules/react-query/es/react/useIsMutating.js"); +/* harmony import */ var _useMutation__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./useMutation */ "../node_modules/react-query/es/react/useMutation.js"); +/* harmony import */ var _useQuery__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./useQuery */ "../node_modules/react-query/es/react/useQuery.js"); +/* harmony import */ var _useQueries__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./useQueries */ "../node_modules/react-query/es/react/useQueries.js"); +/* harmony import */ var _useInfiniteQuery__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./useInfiniteQuery */ "../node_modules/react-query/es/react/useInfiniteQuery.js"); +/* harmony import */ var _Hydrate__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./Hydrate */ "../node_modules/react-query/es/react/Hydrate.js"); +/* harmony import */ var _types__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./types */ "../node_modules/react-query/es/react/types.js"); +/* harmony import */ var _types__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(_types__WEBPACK_IMPORTED_MODULE_11__); +/* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {}; +/* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _types__WEBPACK_IMPORTED_MODULE_11__) if(["default","QueryClientProvider","useQueryClient","QueryErrorResetBoundary","useQueryErrorResetBoundary","useIsFetching","useIsMutating","useMutation","useQuery","useQueries","useInfiniteQuery","useHydrate","Hydrate"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _types__WEBPACK_IMPORTED_MODULE_11__[__WEBPACK_IMPORT_KEY__] +/* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__); +// Side effects + + + + + + + + + + + // Types + + + +/***/ }), + +/***/ "../node_modules/react-query/es/react/logger.js": +/*!******************************************************!*\ + !*** ../node_modules/react-query/es/react/logger.js ***! + \******************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ logger: () => (/* binding */ logger) +/* harmony export */ }); +var logger = console; + +/***/ }), + +/***/ "../node_modules/react-query/es/react/reactBatchedUpdates.js": +/*!*******************************************************************!*\ + !*** ../node_modules/react-query/es/react/reactBatchedUpdates.js ***! + \*******************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ unstable_batchedUpdates: () => (/* binding */ unstable_batchedUpdates) +/* harmony export */ }); +/* harmony import */ var react_dom__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react-dom */ "react-dom"); +/* harmony import */ var react_dom__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_dom__WEBPACK_IMPORTED_MODULE_0__); + +var unstable_batchedUpdates = (react_dom__WEBPACK_IMPORTED_MODULE_0___default().unstable_batchedUpdates); + +/***/ }), + +/***/ "../node_modules/react-query/es/react/setBatchUpdatesFn.js": +/*!*****************************************************************!*\ + !*** ../node_modules/react-query/es/react/setBatchUpdatesFn.js ***! + \*****************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../core */ "../node_modules/react-query/es/core/notifyManager.js"); +/* harmony import */ var _reactBatchedUpdates__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./reactBatchedUpdates */ "../node_modules/react-query/es/react/reactBatchedUpdates.js"); + + +_core__WEBPACK_IMPORTED_MODULE_0__.notifyManager.setBatchNotifyFunction(_reactBatchedUpdates__WEBPACK_IMPORTED_MODULE_1__.unstable_batchedUpdates); + +/***/ }), + +/***/ "../node_modules/react-query/es/react/setLogger.js": +/*!*********************************************************!*\ + !*** ../node_modules/react-query/es/react/setLogger.js ***! + \*********************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../core */ "../node_modules/react-query/es/core/logger.js"); +/* harmony import */ var _logger__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./logger */ "../node_modules/react-query/es/react/logger.js"); + + +(0,_core__WEBPACK_IMPORTED_MODULE_0__.setLogger)(_logger__WEBPACK_IMPORTED_MODULE_1__.logger); + +/***/ }), + +/***/ "../node_modules/react-query/es/react/types.js": +/*!*****************************************************!*\ + !*** ../node_modules/react-query/es/react/types.js ***! + \*****************************************************/ +/***/ (() => { + + + +/***/ }), + +/***/ "../node_modules/react-query/es/react/useBaseQuery.js": +/*!************************************************************!*\ + !*** ../node_modules/react-query/es/react/useBaseQuery.js ***! + \************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ useBaseQuery: () => (/* binding */ useBaseQuery) +/* harmony export */ }); +/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react"); +/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__); +/* harmony import */ var _core_notifyManager__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../core/notifyManager */ "../node_modules/react-query/es/core/notifyManager.js"); +/* harmony import */ var _QueryErrorResetBoundary__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./QueryErrorResetBoundary */ "../node_modules/react-query/es/react/QueryErrorResetBoundary.js"); +/* harmony import */ var _QueryClientProvider__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./QueryClientProvider */ "../node_modules/react-query/es/react/QueryClientProvider.js"); +/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./utils */ "../node_modules/react-query/es/react/utils.js"); + + + + + +function useBaseQuery(options, Observer) { + var mountedRef = react__WEBPACK_IMPORTED_MODULE_0___default().useRef(false); + + var _React$useState = react__WEBPACK_IMPORTED_MODULE_0___default().useState(0), + forceUpdate = _React$useState[1]; + + var queryClient = (0,_QueryClientProvider__WEBPACK_IMPORTED_MODULE_1__.useQueryClient)(); + var errorResetBoundary = (0,_QueryErrorResetBoundary__WEBPACK_IMPORTED_MODULE_2__.useQueryErrorResetBoundary)(); + var defaultedOptions = queryClient.defaultQueryObserverOptions(options); // Make sure results are optimistically set in fetching state before subscribing or updating options + + defaultedOptions.optimisticResults = true; // Include callbacks in batch renders + + if (defaultedOptions.onError) { + defaultedOptions.onError = _core_notifyManager__WEBPACK_IMPORTED_MODULE_3__.notifyManager.batchCalls(defaultedOptions.onError); + } + + if (defaultedOptions.onSuccess) { + defaultedOptions.onSuccess = _core_notifyManager__WEBPACK_IMPORTED_MODULE_3__.notifyManager.batchCalls(defaultedOptions.onSuccess); + } + + if (defaultedOptions.onSettled) { + defaultedOptions.onSettled = _core_notifyManager__WEBPACK_IMPORTED_MODULE_3__.notifyManager.batchCalls(defaultedOptions.onSettled); + } + + if (defaultedOptions.suspense) { + // Always set stale time when using suspense to prevent + // fetching again when directly mounting after suspending + if (typeof defaultedOptions.staleTime !== 'number') { + defaultedOptions.staleTime = 1000; + } // Set cache time to 1 if the option has been set to 0 + // when using suspense to prevent infinite loop of fetches + + + if (defaultedOptions.cacheTime === 0) { + defaultedOptions.cacheTime = 1; + } + } + + if (defaultedOptions.suspense || defaultedOptions.useErrorBoundary) { + // Prevent retrying failed query if the error boundary has not been reset yet + if (!errorResetBoundary.isReset()) { + defaultedOptions.retryOnMount = false; + } + } + + var _React$useState2 = react__WEBPACK_IMPORTED_MODULE_0___default().useState(function () { + return new Observer(queryClient, defaultedOptions); + }), + observer = _React$useState2[0]; + + var result = observer.getOptimisticResult(defaultedOptions); + react__WEBPACK_IMPORTED_MODULE_0___default().useEffect(function () { + mountedRef.current = true; + errorResetBoundary.clearReset(); + var unsubscribe = observer.subscribe(_core_notifyManager__WEBPACK_IMPORTED_MODULE_3__.notifyManager.batchCalls(function () { + if (mountedRef.current) { + forceUpdate(function (x) { + return x + 1; + }); + } + })); // Update result to make sure we did not miss any query updates + // between creating the observer and subscribing to it. + + observer.updateResult(); + return function () { + mountedRef.current = false; + unsubscribe(); + }; + }, [errorResetBoundary, observer]); + react__WEBPACK_IMPORTED_MODULE_0___default().useEffect(function () { + // Do not notify on updates because of changes in the options because + // these changes should already be reflected in the optimistic result. + observer.setOptions(defaultedOptions, { + listeners: false + }); + }, [defaultedOptions, observer]); // Handle suspense + + if (defaultedOptions.suspense && result.isLoading) { + throw observer.fetchOptimistic(defaultedOptions).then(function (_ref) { + var data = _ref.data; + defaultedOptions.onSuccess == null ? void 0 : defaultedOptions.onSuccess(data); + defaultedOptions.onSettled == null ? void 0 : defaultedOptions.onSettled(data, null); + }).catch(function (error) { + errorResetBoundary.clearReset(); + defaultedOptions.onError == null ? void 0 : defaultedOptions.onError(error); + defaultedOptions.onSettled == null ? void 0 : defaultedOptions.onSettled(undefined, error); + }); + } // Handle error boundary + + + if (result.isError && !errorResetBoundary.isReset() && !result.isFetching && (0,_utils__WEBPACK_IMPORTED_MODULE_4__.shouldThrowError)(defaultedOptions.suspense, defaultedOptions.useErrorBoundary, [result.error, observer.getCurrentQuery()])) { + throw result.error; + } // Handle result property usage tracking + + + if (defaultedOptions.notifyOnChangeProps === 'tracked') { + result = observer.trackResult(result, defaultedOptions); + } + + return result; +} + +/***/ }), + +/***/ "../node_modules/react-query/es/react/useInfiniteQuery.js": +/*!****************************************************************!*\ + !*** ../node_modules/react-query/es/react/useInfiniteQuery.js ***! + \****************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ useInfiniteQuery: () => (/* binding */ useInfiniteQuery) +/* harmony export */ }); +/* harmony import */ var _core_infiniteQueryObserver__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../core/infiniteQueryObserver */ "../node_modules/react-query/es/core/infiniteQueryObserver.js"); +/* harmony import */ var _core_utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../core/utils */ "../node_modules/react-query/es/core/utils.js"); +/* harmony import */ var _useBaseQuery__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./useBaseQuery */ "../node_modules/react-query/es/react/useBaseQuery.js"); + + + // HOOK + +function useInfiniteQuery(arg1, arg2, arg3) { + var options = (0,_core_utils__WEBPACK_IMPORTED_MODULE_0__.parseQueryArgs)(arg1, arg2, arg3); + return (0,_useBaseQuery__WEBPACK_IMPORTED_MODULE_1__.useBaseQuery)(options, _core_infiniteQueryObserver__WEBPACK_IMPORTED_MODULE_2__.InfiniteQueryObserver); +} + +/***/ }), + +/***/ "../node_modules/react-query/es/react/useIsFetching.js": +/*!*************************************************************!*\ + !*** ../node_modules/react-query/es/react/useIsFetching.js ***! + \*************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ useIsFetching: () => (/* binding */ useIsFetching) +/* harmony export */ }); +/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react"); +/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__); +/* harmony import */ var _core_notifyManager__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../core/notifyManager */ "../node_modules/react-query/es/core/notifyManager.js"); +/* harmony import */ var _core_utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../core/utils */ "../node_modules/react-query/es/core/utils.js"); +/* harmony import */ var _QueryClientProvider__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./QueryClientProvider */ "../node_modules/react-query/es/react/QueryClientProvider.js"); + + + + + +var checkIsFetching = function checkIsFetching(queryClient, filters, isFetching, setIsFetching) { + var newIsFetching = queryClient.isFetching(filters); + + if (isFetching !== newIsFetching) { + setIsFetching(newIsFetching); + } +}; + +function useIsFetching(arg1, arg2) { + var mountedRef = react__WEBPACK_IMPORTED_MODULE_0___default().useRef(false); + var queryClient = (0,_QueryClientProvider__WEBPACK_IMPORTED_MODULE_1__.useQueryClient)(); + + var _parseFilterArgs = (0,_core_utils__WEBPACK_IMPORTED_MODULE_2__.parseFilterArgs)(arg1, arg2), + filters = _parseFilterArgs[0]; + + var _React$useState = react__WEBPACK_IMPORTED_MODULE_0___default().useState(queryClient.isFetching(filters)), + isFetching = _React$useState[0], + setIsFetching = _React$useState[1]; + + var filtersRef = react__WEBPACK_IMPORTED_MODULE_0___default().useRef(filters); + filtersRef.current = filters; + var isFetchingRef = react__WEBPACK_IMPORTED_MODULE_0___default().useRef(isFetching); + isFetchingRef.current = isFetching; + react__WEBPACK_IMPORTED_MODULE_0___default().useEffect(function () { + mountedRef.current = true; + checkIsFetching(queryClient, filtersRef.current, isFetchingRef.current, setIsFetching); + var unsubscribe = queryClient.getQueryCache().subscribe(_core_notifyManager__WEBPACK_IMPORTED_MODULE_3__.notifyManager.batchCalls(function () { + if (mountedRef.current) { + checkIsFetching(queryClient, filtersRef.current, isFetchingRef.current, setIsFetching); + } + })); + return function () { + mountedRef.current = false; + unsubscribe(); + }; + }, [queryClient]); + return isFetching; +} + +/***/ }), + +/***/ "../node_modules/react-query/es/react/useIsMutating.js": +/*!*************************************************************!*\ + !*** ../node_modules/react-query/es/react/useIsMutating.js ***! + \*************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ useIsMutating: () => (/* binding */ useIsMutating) +/* harmony export */ }); +/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react"); +/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__); +/* harmony import */ var _core_notifyManager__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../core/notifyManager */ "../node_modules/react-query/es/core/notifyManager.js"); +/* harmony import */ var _core_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../core/utils */ "../node_modules/react-query/es/core/utils.js"); +/* harmony import */ var _QueryClientProvider__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./QueryClientProvider */ "../node_modules/react-query/es/react/QueryClientProvider.js"); + + + + +function useIsMutating(arg1, arg2) { + var mountedRef = react__WEBPACK_IMPORTED_MODULE_0___default().useRef(false); + var filters = (0,_core_utils__WEBPACK_IMPORTED_MODULE_1__.parseMutationFilterArgs)(arg1, arg2); + var queryClient = (0,_QueryClientProvider__WEBPACK_IMPORTED_MODULE_2__.useQueryClient)(); + + var _React$useState = react__WEBPACK_IMPORTED_MODULE_0___default().useState(queryClient.isMutating(filters)), + isMutating = _React$useState[0], + setIsMutating = _React$useState[1]; + + var filtersRef = react__WEBPACK_IMPORTED_MODULE_0___default().useRef(filters); + filtersRef.current = filters; + var isMutatingRef = react__WEBPACK_IMPORTED_MODULE_0___default().useRef(isMutating); + isMutatingRef.current = isMutating; + react__WEBPACK_IMPORTED_MODULE_0___default().useEffect(function () { + mountedRef.current = true; + var unsubscribe = queryClient.getMutationCache().subscribe(_core_notifyManager__WEBPACK_IMPORTED_MODULE_3__.notifyManager.batchCalls(function () { + if (mountedRef.current) { + var newIsMutating = queryClient.isMutating(filtersRef.current); + + if (isMutatingRef.current !== newIsMutating) { + setIsMutating(newIsMutating); + } + } + })); + return function () { + mountedRef.current = false; + unsubscribe(); + }; + }, [queryClient]); + return isMutating; +} + +/***/ }), + +/***/ "../node_modules/react-query/es/react/useMutation.js": +/*!***********************************************************!*\ + !*** ../node_modules/react-query/es/react/useMutation.js ***! + \***********************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ useMutation: () => (/* binding */ useMutation) +/* harmony export */ }); +/* harmony import */ var _babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/extends */ "../node_modules/@babel/runtime/helpers/esm/extends.js"); +/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ "react"); +/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__); +/* harmony import */ var _core_notifyManager__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../core/notifyManager */ "../node_modules/react-query/es/core/notifyManager.js"); +/* harmony import */ var _core_utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../core/utils */ "../node_modules/react-query/es/core/utils.js"); +/* harmony import */ var _core_mutationObserver__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../core/mutationObserver */ "../node_modules/react-query/es/core/mutationObserver.js"); +/* harmony import */ var _QueryClientProvider__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./QueryClientProvider */ "../node_modules/react-query/es/react/QueryClientProvider.js"); +/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./utils */ "../node_modules/react-query/es/react/utils.js"); + + + + + + + // HOOK + +function useMutation(arg1, arg2, arg3) { + var mountedRef = react__WEBPACK_IMPORTED_MODULE_1___default().useRef(false); + + var _React$useState = react__WEBPACK_IMPORTED_MODULE_1___default().useState(0), + forceUpdate = _React$useState[1]; + + var options = (0,_core_utils__WEBPACK_IMPORTED_MODULE_2__.parseMutationArgs)(arg1, arg2, arg3); + var queryClient = (0,_QueryClientProvider__WEBPACK_IMPORTED_MODULE_3__.useQueryClient)(); + var obsRef = react__WEBPACK_IMPORTED_MODULE_1___default().useRef(); + + if (!obsRef.current) { + obsRef.current = new _core_mutationObserver__WEBPACK_IMPORTED_MODULE_4__.MutationObserver(queryClient, options); + } else { + obsRef.current.setOptions(options); + } + + var currentResult = obsRef.current.getCurrentResult(); + react__WEBPACK_IMPORTED_MODULE_1___default().useEffect(function () { + mountedRef.current = true; + var unsubscribe = obsRef.current.subscribe(_core_notifyManager__WEBPACK_IMPORTED_MODULE_5__.notifyManager.batchCalls(function () { + if (mountedRef.current) { + forceUpdate(function (x) { + return x + 1; + }); + } + })); + return function () { + mountedRef.current = false; + unsubscribe(); + }; + }, []); + var mutate = react__WEBPACK_IMPORTED_MODULE_1___default().useCallback(function (variables, mutateOptions) { + obsRef.current.mutate(variables, mutateOptions).catch(_core_utils__WEBPACK_IMPORTED_MODULE_2__.noop); + }, []); + + if (currentResult.error && (0,_utils__WEBPACK_IMPORTED_MODULE_6__.shouldThrowError)(undefined, obsRef.current.options.useErrorBoundary, [currentResult.error])) { + throw currentResult.error; + } + + return (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({}, currentResult, { + mutate: mutate, + mutateAsync: currentResult.mutate + }); +} + +/***/ }), + +/***/ "../node_modules/react-query/es/react/useQueries.js": +/*!**********************************************************!*\ + !*** ../node_modules/react-query/es/react/useQueries.js ***! + \**********************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ useQueries: () => (/* binding */ useQueries) +/* harmony export */ }); +/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react"); +/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__); +/* harmony import */ var _core_notifyManager__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../core/notifyManager */ "../node_modules/react-query/es/core/notifyManager.js"); +/* harmony import */ var _core_queriesObserver__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../core/queriesObserver */ "../node_modules/react-query/es/core/queriesObserver.js"); +/* harmony import */ var _QueryClientProvider__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./QueryClientProvider */ "../node_modules/react-query/es/react/QueryClientProvider.js"); + + + + +function useQueries(queries) { + var mountedRef = react__WEBPACK_IMPORTED_MODULE_0___default().useRef(false); + + var _React$useState = react__WEBPACK_IMPORTED_MODULE_0___default().useState(0), + forceUpdate = _React$useState[1]; + + var queryClient = (0,_QueryClientProvider__WEBPACK_IMPORTED_MODULE_1__.useQueryClient)(); + var defaultedQueries = (0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(function () { + return queries.map(function (options) { + var defaultedOptions = queryClient.defaultQueryObserverOptions(options); // Make sure the results are already in fetching state before subscribing or updating options + + defaultedOptions.optimisticResults = true; + return defaultedOptions; + }); + }, [queries, queryClient]); + + var _React$useState2 = react__WEBPACK_IMPORTED_MODULE_0___default().useState(function () { + return new _core_queriesObserver__WEBPACK_IMPORTED_MODULE_2__.QueriesObserver(queryClient, defaultedQueries); + }), + observer = _React$useState2[0]; + + var result = observer.getOptimisticResult(defaultedQueries); + react__WEBPACK_IMPORTED_MODULE_0___default().useEffect(function () { + mountedRef.current = true; + var unsubscribe = observer.subscribe(_core_notifyManager__WEBPACK_IMPORTED_MODULE_3__.notifyManager.batchCalls(function () { + if (mountedRef.current) { + forceUpdate(function (x) { + return x + 1; + }); + } + })); + return function () { + mountedRef.current = false; + unsubscribe(); + }; + }, [observer]); + react__WEBPACK_IMPORTED_MODULE_0___default().useEffect(function () { + // Do not notify on updates because of changes in the options because + // these changes should already be reflected in the optimistic result. + observer.setQueries(defaultedQueries, { + listeners: false + }); + }, [defaultedQueries, observer]); + return result; +} + +/***/ }), + +/***/ "../node_modules/react-query/es/react/useQuery.js": +/*!********************************************************!*\ + !*** ../node_modules/react-query/es/react/useQuery.js ***! + \********************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ useQuery: () => (/* binding */ useQuery) +/* harmony export */ }); +/* harmony import */ var _core__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../core */ "../node_modules/react-query/es/core/queryObserver.js"); +/* harmony import */ var _core_utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../core/utils */ "../node_modules/react-query/es/core/utils.js"); +/* harmony import */ var _useBaseQuery__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./useBaseQuery */ "../node_modules/react-query/es/react/useBaseQuery.js"); + + + // HOOK + +function useQuery(arg1, arg2, arg3) { + var parsedOptions = (0,_core_utils__WEBPACK_IMPORTED_MODULE_0__.parseQueryArgs)(arg1, arg2, arg3); + return (0,_useBaseQuery__WEBPACK_IMPORTED_MODULE_1__.useBaseQuery)(parsedOptions, _core__WEBPACK_IMPORTED_MODULE_2__.QueryObserver); +} + +/***/ }), + +/***/ "../node_modules/react-query/es/react/utils.js": +/*!*****************************************************!*\ + !*** ../node_modules/react-query/es/react/utils.js ***! + \*****************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ shouldThrowError: () => (/* binding */ shouldThrowError) +/* harmony export */ }); +function shouldThrowError(suspense, _useErrorBoundary, params) { + // Allow useErrorBoundary function to override throwing behavior on a per-error basis + if (typeof _useErrorBoundary === 'function') { + return _useErrorBoundary.apply(void 0, params); + } // Allow useErrorBoundary to override suspense's throwing behavior + + + if (typeof _useErrorBoundary === 'boolean') return _useErrorBoundary; // If suspense is enabled default to throwing errors + + return !!suspense; +} + +/***/ }), + +/***/ "../node_modules/@babel/runtime/helpers/esm/extends.js": +/*!*************************************************************!*\ + !*** ../node_modules/@babel/runtime/helpers/esm/extends.js ***! + \*************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (/* binding */ _extends) +/* harmony export */ }); +function _extends() { + _extends = Object.assign ? Object.assign.bind() : function (target) { + for (var i = 1; i < arguments.length; i++) { + var source = arguments[i]; + for (var key in source) { + if (Object.prototype.hasOwnProperty.call(source, key)) { + target[key] = source[key]; + } + } + } + return target; + }; + return _extends.apply(this, arguments); +} + +/***/ }), + +/***/ "../node_modules/@babel/runtime/helpers/esm/inheritsLoose.js": +/*!*******************************************************************!*\ + !*** ../node_modules/@babel/runtime/helpers/esm/inheritsLoose.js ***! + \*******************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (/* binding */ _inheritsLoose) +/* harmony export */ }); +/* harmony import */ var _setPrototypeOf_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./setPrototypeOf.js */ "../node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js"); + +function _inheritsLoose(subClass, superClass) { + subClass.prototype = Object.create(superClass.prototype); + subClass.prototype.constructor = subClass; + (0,_setPrototypeOf_js__WEBPACK_IMPORTED_MODULE_0__["default"])(subClass, superClass); +} + +/***/ }), + +/***/ "../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js": +/*!**********************************************************************************!*\ + !*** ../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js ***! + \**********************************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (/* binding */ _objectWithoutPropertiesLoose) +/* harmony export */ }); +function _objectWithoutPropertiesLoose(source, excluded) { + if (source == null) return {}; + var target = {}; + var sourceKeys = Object.keys(source); + var key, i; + for (i = 0; i < sourceKeys.length; i++) { + key = sourceKeys[i]; + if (excluded.indexOf(key) >= 0) continue; + target[key] = source[key]; + } + return target; +} + +/***/ }), + +/***/ "../node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js": +/*!********************************************************************!*\ + !*** ../node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js ***! + \********************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (/* binding */ _setPrototypeOf) +/* harmony export */ }); +function _setPrototypeOf(o, p) { + _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { + o.__proto__ = p; + return o; + }; + return _setPrototypeOf(o, p); +} + +/***/ }) + +}]); +//# sourceMappingURL=a730ee9caa710006b307.bundle.js.map \ No newline at end of file diff --git a/wp-content/plugins/elementor/assets/js/accordion.8799675460c73eb48972.bundle.min.js b/wp-content/plugins/elementor/assets/js/accordion.8799675460c73eb48972.bundle.min.js new file mode 100644 index 0000000..62fd552 --- /dev/null +++ b/wp-content/plugins/elementor/assets/js/accordion.8799675460c73eb48972.bundle.min.js @@ -0,0 +1,2 @@ +/*! elementor - v3.20.0 - 26-03-2024 */ +"use strict";(self.webpackChunkelementor=self.webpackChunkelementor||[]).push([[209],{8470:(e,t,a)=>{var i=a(3203);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var s=i(a(9728));class Accordion extends s.default{getDefaultSettings(){return{...super.getDefaultSettings(),showTabFn:"slideDown",hideTabFn:"slideUp"}}}t.default=Accordion},9728:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;class baseTabs extends elementorModules.frontend.handlers.Base{getDefaultSettings(){return{selectors:{tablist:'[role="tablist"]',tabTitle:".elementor-tab-title",tabContent:".elementor-tab-content"},classes:{active:"elementor-active"},showTabFn:"show",hideTabFn:"hide",toggleSelf:!0,hidePrevious:!0,autoExpand:!0,keyDirection:{ArrowLeft:elementorFrontendConfig.is_rtl?1:-1,ArrowUp:-1,ArrowRight:elementorFrontendConfig.is_rtl?-1:1,ArrowDown:1}}}getDefaultElements(){const e=this.getSettings("selectors");return{$tabTitles:this.findElement(e.tabTitle),$tabContents:this.findElement(e.tabContent)}}activateDefaultTab(){const e=this.getSettings();if(!e.autoExpand||"editor"===e.autoExpand&&!this.isEdit)return;const t=this.getEditSettings("activeItemIndex")||1,a={showTabFn:e.showTabFn,hideTabFn:e.hideTabFn};this.setSettings({showTabFn:"show",hideTabFn:"hide"}),this.changeActiveTab(t),this.setSettings(a)}handleKeyboardNavigation(e){const t=e.currentTarget,a=jQuery(t.closest(this.getSettings("selectors").tablist)),i=a.find(this.getSettings("selectors").tabTitle),s="vertical"===a.attr("aria-orientation");switch(e.key){case"ArrowLeft":case"ArrowRight":if(s)return;break;case"ArrowUp":case"ArrowDown":if(!s)return;e.preventDefault();break;case"Home":return e.preventDefault(),void i.first().trigger("focus");case"End":return e.preventDefault(),void i.last().trigger("focus");default:return}const n=t.getAttribute("data-tab")-1,r=this.getSettings("keyDirection")[e.key],o=i[n+r];o?o.focus():-1===n+r?i.last().trigger("focus"):i.first().trigger("focus")}deactivateActiveTab(e){const t=this.getSettings(),a=t.classes.active,i=e?'[data-tab="'+e+'"]':"."+a,s=this.elements.$tabTitles.filter(i),n=this.elements.$tabContents.filter(i);s.add(n).removeClass(a),s.attr({tabindex:"-1","aria-selected":"false","aria-expanded":"false"}),n[t.hideTabFn](),n.attr("hidden","hidden")}activateTab(e){const t=this.getSettings(),a=t.classes.active,i=this.elements.$tabTitles.filter('[data-tab="'+e+'"]'),s=this.elements.$tabContents.filter('[data-tab="'+e+'"]'),n="show"===t.showTabFn?0:400;i.add(s).addClass(a),i.attr({tabindex:"0","aria-selected":"true","aria-expanded":"true"}),s[t.showTabFn](n,(()=>elementorFrontend.elements.$window.trigger("elementor-pro/motion-fx/recalc"))),s.removeAttr("hidden")}isActiveTab(e){return this.elements.$tabTitles.filter('[data-tab="'+e+'"]').hasClass(this.getSettings("classes.active"))}bindEvents(){this.elements.$tabTitles.on({keydown:e=>{jQuery(e.target).is("a")&&"Enter"===e.key&&e.preventDefault(),["End","Home","ArrowUp","ArrowDown"].includes(e.key)&&this.handleKeyboardNavigation(e)},keyup:e=>{switch(e.code){case"ArrowLeft":case"ArrowRight":this.handleKeyboardNavigation(e);break;case"Enter":case"Space":e.preventDefault(),this.changeActiveTab(e.currentTarget.getAttribute("data-tab"))}},click:e=>{e.preventDefault(),this.changeActiveTab(e.currentTarget.getAttribute("data-tab"))}})}onInit(){super.onInit(...arguments),this.activateDefaultTab()}onEditSettingsChange(e){"activeItemIndex"===e&&this.activateDefaultTab()}changeActiveTab(e){const t=this.isActiveTab(e),a=this.getSettings();!a.toggleSelf&&t||!a.hidePrevious||this.deactivateActiveTab(),!a.hidePrevious&&t&&this.deactivateActiveTab(e),t||this.activateTab(e)}}t.default=baseTabs}}]); \ No newline at end of file diff --git a/wp-content/plugins/elementor/assets/js/accordion.c16b88b2e8a0c50189bc.bundle.js b/wp-content/plugins/elementor/assets/js/accordion.c16b88b2e8a0c50189bc.bundle.js new file mode 100644 index 0000000..5b54277 --- /dev/null +++ b/wp-content/plugins/elementor/assets/js/accordion.c16b88b2e8a0c50189bc.bundle.js @@ -0,0 +1,232 @@ +/*! elementor - v3.20.0 - 26-03-2024 */ +"use strict"; +(self["webpackChunkelementor"] = self["webpackChunkelementor"] || []).push([["accordion"],{ + +/***/ "../assets/dev/js/frontend/handlers/accordion.js": +/*!*******************************************************!*\ + !*** ../assets/dev/js/frontend/handlers/accordion.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 _baseTabs = _interopRequireDefault(__webpack_require__(/*! ./base-tabs */ "../assets/dev/js/frontend/handlers/base-tabs.js")); +class Accordion extends _baseTabs.default { + getDefaultSettings() { + const defaultSettings = super.getDefaultSettings(); + return { + ...defaultSettings, + showTabFn: 'slideDown', + hideTabFn: 'slideUp' + }; + } +} +exports["default"] = Accordion; + +/***/ }), + +/***/ "../assets/dev/js/frontend/handlers/base-tabs.js": +/*!*******************************************************!*\ + !*** ../assets/dev/js/frontend/handlers/base-tabs.js ***! + \*******************************************************/ +/***/ ((__unused_webpack_module, exports) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; +class baseTabs extends elementorModules.frontend.handlers.Base { + getDefaultSettings() { + return { + selectors: { + tablist: '[role="tablist"]', + tabTitle: '.elementor-tab-title', + tabContent: '.elementor-tab-content' + }, + classes: { + active: 'elementor-active' + }, + showTabFn: 'show', + hideTabFn: 'hide', + toggleSelf: true, + hidePrevious: true, + autoExpand: true, + keyDirection: { + ArrowLeft: elementorFrontendConfig.is_rtl ? 1 : -1, + ArrowUp: -1, + ArrowRight: elementorFrontendConfig.is_rtl ? -1 : 1, + ArrowDown: 1 + } + }; + } + getDefaultElements() { + const selectors = this.getSettings('selectors'); + return { + $tabTitles: this.findElement(selectors.tabTitle), + $tabContents: this.findElement(selectors.tabContent) + }; + } + activateDefaultTab() { + const settings = this.getSettings(); + if (!settings.autoExpand || 'editor' === settings.autoExpand && !this.isEdit) { + return; + } + const defaultActiveTab = this.getEditSettings('activeItemIndex') || 1, + originalToggleMethods = { + showTabFn: settings.showTabFn, + hideTabFn: settings.hideTabFn + }; + + // Toggle tabs without animation to avoid jumping + this.setSettings({ + showTabFn: 'show', + hideTabFn: 'hide' + }); + this.changeActiveTab(defaultActiveTab); + + // Return back original toggle effects + this.setSettings(originalToggleMethods); + } + handleKeyboardNavigation(event) { + const tab = event.currentTarget, + $tabList = jQuery(tab.closest(this.getSettings('selectors').tablist)), + // eslint-disable-next-line @wordpress/no-unused-vars-before-return + $tabs = $tabList.find(this.getSettings('selectors').tabTitle), + isVertical = 'vertical' === $tabList.attr('aria-orientation'); + switch (event.key) { + case 'ArrowLeft': + case 'ArrowRight': + if (isVertical) { + return; + } + break; + case 'ArrowUp': + case 'ArrowDown': + if (!isVertical) { + return; + } + event.preventDefault(); + break; + case 'Home': + event.preventDefault(); + $tabs.first().trigger('focus'); + return; + case 'End': + event.preventDefault(); + $tabs.last().trigger('focus'); + return; + default: + return; + } + const tabIndex = tab.getAttribute('data-tab') - 1, + direction = this.getSettings('keyDirection')[event.key], + nextTab = $tabs[tabIndex + direction]; + if (nextTab) { + nextTab.focus(); + } else if (-1 === tabIndex + direction) { + $tabs.last().trigger('focus'); + } else { + $tabs.first().trigger('focus'); + } + } + deactivateActiveTab(tabIndex) { + const settings = this.getSettings(), + activeClass = settings.classes.active, + activeFilter = tabIndex ? '[data-tab="' + tabIndex + '"]' : '.' + activeClass, + $activeTitle = this.elements.$tabTitles.filter(activeFilter), + $activeContent = this.elements.$tabContents.filter(activeFilter); + $activeTitle.add($activeContent).removeClass(activeClass); + $activeTitle.attr({ + tabindex: '-1', + 'aria-selected': 'false', + 'aria-expanded': 'false' + }); + $activeContent[settings.hideTabFn](); + $activeContent.attr('hidden', 'hidden'); + } + activateTab(tabIndex) { + const settings = this.getSettings(), + activeClass = settings.classes.active, + $requestedTitle = this.elements.$tabTitles.filter('[data-tab="' + tabIndex + '"]'), + $requestedContent = this.elements.$tabContents.filter('[data-tab="' + tabIndex + '"]'), + animationDuration = 'show' === settings.showTabFn ? 0 : 400; + $requestedTitle.add($requestedContent).addClass(activeClass); + $requestedTitle.attr({ + tabindex: '0', + 'aria-selected': 'true', + 'aria-expanded': 'true' + }); + $requestedContent[settings.showTabFn](animationDuration, () => elementorFrontend.elements.$window.trigger('elementor-pro/motion-fx/recalc')); + $requestedContent.removeAttr('hidden'); + } + isActiveTab(tabIndex) { + return this.elements.$tabTitles.filter('[data-tab="' + tabIndex + '"]').hasClass(this.getSettings('classes.active')); + } + bindEvents() { + this.elements.$tabTitles.on({ + keydown: event => { + // Support for old markup that includes an `` tag in the tab + if (jQuery(event.target).is('a') && `Enter` === event.key) { + event.preventDefault(); + } + + // We listen to keydowon event for these keys in order to prevent undesired page scrolling + if (['End', 'Home', 'ArrowUp', 'ArrowDown'].includes(event.key)) { + this.handleKeyboardNavigation(event); + } + }, + keyup: event => { + switch (event.code) { + case 'ArrowLeft': + case 'ArrowRight': + this.handleKeyboardNavigation(event); + break; + case 'Enter': + case 'Space': + event.preventDefault(); + this.changeActiveTab(event.currentTarget.getAttribute('data-tab')); + break; + } + }, + click: event => { + event.preventDefault(); + this.changeActiveTab(event.currentTarget.getAttribute('data-tab')); + } + }); + } + onInit() { + super.onInit(...arguments); + this.activateDefaultTab(); + } + onEditSettingsChange(propertyName) { + if ('activeItemIndex' === propertyName) { + this.activateDefaultTab(); + } + } + changeActiveTab(tabIndex) { + const isActiveTab = this.isActiveTab(tabIndex), + settings = this.getSettings(); + if ((settings.toggleSelf || !isActiveTab) && settings.hidePrevious) { + this.deactivateActiveTab(); + } + if (!settings.hidePrevious && isActiveTab) { + this.deactivateActiveTab(tabIndex); + } + if (!isActiveTab) { + this.activateTab(tabIndex); + } + } +} +exports["default"] = baseTabs; + +/***/ }) + +}]); +//# sourceMappingURL=accordion.c16b88b2e8a0c50189bc.bundle.js.map \ No newline at end of file diff --git a/wp-content/plugins/elementor/assets/js/admin-feedback.js b/wp-content/plugins/elementor/assets/js/admin-feedback.js new file mode 100644 index 0000000..d80b300 --- /dev/null +++ b/wp-content/plugins/elementor/assets/js/admin-feedback.js @@ -0,0 +1,137 @@ +/*! elementor - v3.20.0 - 26-03-2024 */ +/******/ (() => { // webpackBootstrap +/******/ "use strict"; +/******/ var __webpack_modules__ = ({ + +/***/ "@wordpress/i18n": +/*!**************************!*\ + !*** external "wp.i18n" ***! + \**************************/ +/***/ ((module) => { + +module.exports = wp.i18n; + +/***/ }) + +/******/ }); +/************************************************************************/ +/******/ // The module cache +/******/ var __webpack_module_cache__ = {}; +/******/ +/******/ // The require function +/******/ function __webpack_require__(moduleId) { +/******/ // Check if module is in cache +/******/ var cachedModule = __webpack_module_cache__[moduleId]; +/******/ if (cachedModule !== undefined) { +/******/ return cachedModule.exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = __webpack_module_cache__[moduleId] = { +/******/ // no module.id needed +/******/ // no module.loaded needed +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__); +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/************************************************************************/ +var __webpack_exports__ = {}; +// This entry need to be wrapped in an IIFE because it need to be isolated against other modules in the chunk. +(() => { +/*!************************************************!*\ + !*** ../assets/dev/js/admin/admin-feedback.js ***! + \************************************************/ +/* provided dependency */ var __ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n")["__"]; + + +(function ($) { + 'use strict'; + + var ElementorAdminDialogApp = { + cacheElements: function cacheElements() { + this.cache = { + $deactivateLink: $('#the-list').find('[data-slug="elementor"] span.deactivate a'), + $dialogHeader: $('#elementor-deactivate-feedback-dialog-header'), + $dialogForm: $('#elementor-deactivate-feedback-dialog-form') + }; + }, + bindEvents: function bindEvents() { + var self = this; + self.cache.$deactivateLink.on('click', function (event) { + event.preventDefault(); + self.getModal().show(); + }); + }, + deactivate: function deactivate() { + location.href = this.cache.$deactivateLink.attr('href'); + }, + initModal: function initModal() { + var self = this, + modal; + self.getModal = function () { + if (!modal) { + modal = elementorCommon.dialogsManager.createWidget('lightbox', { + id: 'elementor-deactivate-feedback-modal', + headerMessage: self.cache.$dialogHeader, + message: self.cache.$dialogForm, + hide: { + onButtonClick: false + }, + position: { + my: 'center', + at: 'center' + }, + onReady: function onReady() { + DialogsManager.getWidgetType('lightbox').prototype.onReady.apply(this, arguments); + this.addButton({ + name: 'submit', + text: __('Submit & Deactivate', 'elementor'), + callback: self.sendFeedback.bind(self) + }); + this.addButton({ + name: 'skip', + text: __('Skip & Deactivate', 'elementor'), + callback: function callback() { + self.deactivate(); + } + }); + }, + onShow: function onShow() { + var $dialogModal = $('#elementor-deactivate-feedback-modal'), + radioSelector = '.elementor-deactivate-feedback-dialog-input'; + $dialogModal.find(radioSelector).on('change', function () { + $dialogModal.attr('data-feedback-selected', $(this).val()); + }); + $dialogModal.find(radioSelector + ':checked').trigger('change'); + } + }); + } + return modal; + }; + }, + sendFeedback: function sendFeedback() { + var self = this, + formData = self.cache.$dialogForm.serialize(); + self.getModal().getElements('submit').text('').addClass('elementor-loading'); + $.post(ajaxurl, formData, this.deactivate.bind(this)); + }, + init: function init() { + this.initModal(); + this.cacheElements(); + this.bindEvents(); + } + }; + $(function () { + ElementorAdminDialogApp.init(); + }); +})(jQuery); +})(); + +/******/ })() +; +//# sourceMappingURL=admin-feedback.js.map \ No newline at end of file diff --git a/wp-content/plugins/elementor/assets/js/admin-feedback.min.js b/wp-content/plugins/elementor/assets/js/admin-feedback.min.js new file mode 100644 index 0000000..2904b05 --- /dev/null +++ b/wp-content/plugins/elementor/assets/js/admin-feedback.min.js @@ -0,0 +1,2 @@ +/*! elementor - v3.20.0 - 26-03-2024 */ +(()=>{"use strict";var e,t,a,i={38003:e=>{e.exports=wp.i18n}},n={};function __webpack_require__(e){var t=n[e];if(void 0!==t)return t.exports;var a=n[e]={exports:{}};return i[e](a,a.exports,__webpack_require__),a.exports}a=__webpack_require__(38003).__,e=jQuery,t={cacheElements:function cacheElements(){this.cache={$deactivateLink:e("#the-list").find('[data-slug="elementor"] span.deactivate a'),$dialogHeader:e("#elementor-deactivate-feedback-dialog-header"),$dialogForm:e("#elementor-deactivate-feedback-dialog-form")}},bindEvents:function bindEvents(){var e=this;e.cache.$deactivateLink.on("click",(function(t){t.preventDefault(),e.getModal().show()}))},deactivate:function deactivate(){location.href=this.cache.$deactivateLink.attr("href")},initModal:function initModal(){var t,i=this;i.getModal=function(){return t||(t=elementorCommon.dialogsManager.createWidget("lightbox",{id:"elementor-deactivate-feedback-modal",headerMessage:i.cache.$dialogHeader,message:i.cache.$dialogForm,hide:{onButtonClick:!1},position:{my:"center",at:"center"},onReady:function onReady(){DialogsManager.getWidgetType("lightbox").prototype.onReady.apply(this,arguments),this.addButton({name:"submit",text:a("Submit & Deactivate","elementor"),callback:i.sendFeedback.bind(i)}),this.addButton({name:"skip",text:a("Skip & Deactivate","elementor"),callback:function callback(){i.deactivate()}})},onShow:function onShow(){var t=e("#elementor-deactivate-feedback-modal"),a=".elementor-deactivate-feedback-dialog-input";t.find(a).on("change",(function(){t.attr("data-feedback-selected",e(this).val())})),t.find(a+":checked").trigger("change")}})),t}},sendFeedback:function sendFeedback(){var t=this.cache.$dialogForm.serialize();this.getModal().getElements("submit").text("").addClass("elementor-loading"),e.post(ajaxurl,t,this.deactivate.bind(this))},init:function init(){this.initModal(),this.cacheElements(),this.bindEvents()}},e((function(){t.init()}))})(); \ No newline at end of file diff --git a/wp-content/plugins/elementor/assets/js/admin-modules.js b/wp-content/plugins/elementor/assets/js/admin-modules.js new file mode 100644 index 0000000..199b010 --- /dev/null +++ b/wp-content/plugins/elementor/assets/js/admin-modules.js @@ -0,0 +1,943 @@ +/*! elementor - v3.20.0 - 26-03-2024 */ +/******/ (() => { // webpackBootstrap +/******/ var __webpack_modules__ = ({ + +/***/ "../assets/dev/js/admin/menu-handler.js": +/*!**********************************************!*\ + !*** ../assets/dev/js/admin/menu-handler.js ***! + \**********************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + + +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 _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ "../node_modules/@babel/runtime/helpers/classCallCheck.js")); +var _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/createClass */ "../node_modules/@babel/runtime/helpers/createClass.js")); +var _get2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/get */ "../node_modules/@babel/runtime/helpers/get.js")); +var _inherits2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/inherits */ "../node_modules/@babel/runtime/helpers/inherits.js")); +var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ "../node_modules/@babel/runtime/helpers/possibleConstructorReturn.js")); +var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ "../node_modules/@babel/runtime/helpers/getPrototypeOf.js")); +function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; } +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } +var MenuHandler = /*#__PURE__*/function (_elementorModules$Vie) { + (0, _inherits2.default)(MenuHandler, _elementorModules$Vie); + var _super = _createSuper(MenuHandler); + function MenuHandler() { + (0, _classCallCheck2.default)(this, MenuHandler); + return _super.apply(this, arguments); + } + (0, _createClass2.default)(MenuHandler, [{ + key: "getDefaultSettings", + value: function getDefaultSettings() { + return { + selectors: { + currentSubmenuItems: '#adminmenu .current' + } + }; + } + }, { + key: "getDefaultElements", + value: function getDefaultElements() { + var settings = this.getSettings(); + return { + $currentSubmenuItems: jQuery(settings.selectors.currentSubmenuItems), + $adminPageMenuLink: jQuery("a[href=\"".concat(settings.path, "\"]")) + }; + } + + // This method highlights the currently visited submenu item for the slug provided as an argument to this handler. + // This method also accepts a jQuery instance of a custom submenu item to highlight. If provided, the provided + // item will be the one highlighted. + }, { + key: "highlightSubMenuItem", + value: function highlightSubMenuItem() { + var $element = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null; + var $submenuItem = $element || this.elements.$adminPageMenuLink; + if (this.elements.$currentSubmenuItems.length) { + this.elements.$currentSubmenuItems.removeClass('current'); + } + $submenuItem.addClass('current'); + + // Need to add the 'current' class to the link element's parent `
  • ` element as well. + $submenuItem.parent().addClass('current'); + } + }, { + key: "highlightTopLevelMenuItem", + value: function highlightTopLevelMenuItem($elementToHighlight) { + var $elementToRemove = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null; + var activeClasses = 'wp-has-current-submenu wp-menu-open current'; + $elementToHighlight.parent().addClass(activeClasses).removeClass('wp-not-current-submenu'); + if ($elementToRemove) { + $elementToRemove.removeClass(activeClasses); + } + } + }, { + key: "onInit", + value: function onInit() { + (0, _get2.default)((0, _getPrototypeOf2.default)(MenuHandler.prototype), "onInit", this).call(this); + var settings = this.getSettings(); + if (window.location.href.includes(settings.path)) { + this.highlightSubMenuItem(); + } + } + }]); + return MenuHandler; +}(elementorModules.ViewModule); +exports["default"] = MenuHandler; + +/***/ }), + +/***/ "../assets/dev/js/utils/introduction.js": +/*!**********************************************!*\ + !*** ../assets/dev/js/utils/introduction.js ***! + \**********************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + + +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 _regenerator = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/regenerator */ "../node_modules/@babel/runtime/regenerator/index.js")); +var _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ "../node_modules/@babel/runtime/helpers/asyncToGenerator.js")); +var _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ "../node_modules/@babel/runtime/helpers/classCallCheck.js")); +var _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/createClass */ "../node_modules/@babel/runtime/helpers/createClass.js")); +var _assertThisInitialized2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/assertThisInitialized */ "../node_modules/@babel/runtime/helpers/assertThisInitialized.js")); +var _inherits2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/inherits */ "../node_modules/@babel/runtime/helpers/inherits.js")); +var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ "../node_modules/@babel/runtime/helpers/possibleConstructorReturn.js")); +var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ "../node_modules/@babel/runtime/helpers/getPrototypeOf.js")); +var _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/defineProperty */ "../node_modules/@babel/runtime/helpers/defineProperty.js")); +function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; } +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } +var _default = /*#__PURE__*/function (_elementorModules$Mod) { + (0, _inherits2.default)(_default, _elementorModules$Mod); + var _super = _createSuper(_default); + function _default() { + var _this; + (0, _classCallCheck2.default)(this, _default); + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + _this = _super.call.apply(_super, [this].concat(args)); + (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "introductionMap", null); + _this.initDialog(); + return _this; + } + (0, _createClass2.default)(_default, [{ + key: "setIntroductionMap", + value: function setIntroductionMap(map) { + this.introductionMap = map; + } + }, { + key: "getIntroductionMap", + value: function getIntroductionMap() { + return this.introductionMap || elementor.config.user.introduction; + } + }, { + key: "getDefaultSettings", + value: function getDefaultSettings() { + return { + dialogType: 'buttons', + dialogOptions: { + effects: { + hide: 'hide', + show: 'show' + }, + hide: { + onBackgroundClick: false + } + } + }; + } + }, { + key: "initDialog", + value: function initDialog() { + var _this2 = this; + var dialog; + this.getDialog = function () { + if (!dialog) { + var settings = _this2.getSettings(); + dialog = elementorCommon.dialogsManager.createWidget(settings.dialogType, settings.dialogOptions); + if (settings.onDialogInitCallback) { + settings.onDialogInitCallback.call(_this2, dialog); + } + } + return dialog; + }; + } + }, { + key: "show", + value: function show(target) { + if (this.introductionViewed) { + return; + } + var dialog = this.getDialog(); + if (target) { + dialog.setSettings('position', { + of: target + }); + } + dialog.show(); + } + }, { + key: "introductionViewed", + get: function get() { + var introductionKey = this.getSettings('introductionKey'); + return this.getIntroductionMap()[introductionKey]; + }, + set: function set(isViewed) { + var introductionKey = this.getSettings('introductionKey'); + this.getIntroductionMap()[introductionKey] = isViewed; + } + }, { + key: "setViewed", + value: function () { + var _setViewed = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() { + var _this3 = this; + return _regenerator.default.wrap(function _callee$(_context) { + while (1) switch (_context.prev = _context.next) { + case 0: + this.introductionViewed = true; + return _context.abrupt("return", new Promise(function (resolve, reject) { + elementorCommon.ajax.addRequest('introduction_viewed', { + data: { + introductionKey: _this3.getSettings('introductionKey') + }, + success: resolve, + error: reject + }); + })); + case 2: + case "end": + return _context.stop(); + } + }, _callee, this); + })); + function setViewed() { + return _setViewed.apply(this, arguments); + } + return setViewed; + }() + }]); + return _default; +}(elementorModules.Module); +exports["default"] = _default; + +/***/ }), + +/***/ "../node_modules/@babel/runtime/helpers/assertThisInitialized.js": +/*!***********************************************************************!*\ + !*** ../node_modules/@babel/runtime/helpers/assertThisInitialized.js ***! + \***********************************************************************/ +/***/ ((module) => { + +function _assertThisInitialized(self) { + if (self === void 0) { + throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); + } + return self; +} +module.exports = _assertThisInitialized, module.exports.__esModule = true, module.exports["default"] = module.exports; + +/***/ }), + +/***/ "../node_modules/@babel/runtime/helpers/asyncToGenerator.js": +/*!******************************************************************!*\ + !*** ../node_modules/@babel/runtime/helpers/asyncToGenerator.js ***! + \******************************************************************/ +/***/ ((module) => { + +function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { + try { + var info = gen[key](arg); + var value = info.value; + } catch (error) { + reject(error); + return; + } + if (info.done) { + resolve(value); + } else { + Promise.resolve(value).then(_next, _throw); + } +} +function _asyncToGenerator(fn) { + return function () { + var self = this, + args = arguments; + return new Promise(function (resolve, reject) { + var gen = fn.apply(self, args); + function _next(value) { + asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); + } + function _throw(err) { + asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); + } + _next(undefined); + }); + }; +} +module.exports = _asyncToGenerator, module.exports.__esModule = true, module.exports["default"] = module.exports; + +/***/ }), + +/***/ "../node_modules/@babel/runtime/helpers/classCallCheck.js": +/*!****************************************************************!*\ + !*** ../node_modules/@babel/runtime/helpers/classCallCheck.js ***! + \****************************************************************/ +/***/ ((module) => { + +function _classCallCheck(instance, Constructor) { + if (!(instance instanceof Constructor)) { + throw new TypeError("Cannot call a class as a function"); + } +} +module.exports = _classCallCheck, module.exports.__esModule = true, module.exports["default"] = module.exports; + +/***/ }), + +/***/ "../node_modules/@babel/runtime/helpers/createClass.js": +/*!*************************************************************!*\ + !*** ../node_modules/@babel/runtime/helpers/createClass.js ***! + \*************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var toPropertyKey = __webpack_require__(/*! ./toPropertyKey.js */ "../node_modules/@babel/runtime/helpers/toPropertyKey.js"); +function _defineProperties(target, props) { + for (var i = 0; i < props.length; i++) { + var descriptor = props[i]; + descriptor.enumerable = descriptor.enumerable || false; + descriptor.configurable = true; + if ("value" in descriptor) descriptor.writable = true; + Object.defineProperty(target, toPropertyKey(descriptor.key), descriptor); + } +} +function _createClass(Constructor, protoProps, staticProps) { + if (protoProps) _defineProperties(Constructor.prototype, protoProps); + if (staticProps) _defineProperties(Constructor, staticProps); + Object.defineProperty(Constructor, "prototype", { + writable: false + }); + return Constructor; +} +module.exports = _createClass, module.exports.__esModule = true, module.exports["default"] = module.exports; + +/***/ }), + +/***/ "../node_modules/@babel/runtime/helpers/defineProperty.js": +/*!****************************************************************!*\ + !*** ../node_modules/@babel/runtime/helpers/defineProperty.js ***! + \****************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var toPropertyKey = __webpack_require__(/*! ./toPropertyKey.js */ "../node_modules/@babel/runtime/helpers/toPropertyKey.js"); +function _defineProperty(obj, key, value) { + key = toPropertyKey(key); + if (key in obj) { + Object.defineProperty(obj, key, { + value: value, + enumerable: true, + configurable: true, + writable: true + }); + } else { + obj[key] = value; + } + return obj; +} +module.exports = _defineProperty, module.exports.__esModule = true, module.exports["default"] = module.exports; + +/***/ }), + +/***/ "../node_modules/@babel/runtime/helpers/get.js": +/*!*****************************************************!*\ + !*** ../node_modules/@babel/runtime/helpers/get.js ***! + \*****************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var superPropBase = __webpack_require__(/*! ./superPropBase.js */ "../node_modules/@babel/runtime/helpers/superPropBase.js"); +function _get() { + if (typeof Reflect !== "undefined" && Reflect.get) { + module.exports = _get = Reflect.get.bind(), module.exports.__esModule = true, module.exports["default"] = module.exports; + } else { + module.exports = _get = function _get(target, property, receiver) { + var base = superPropBase(target, property); + if (!base) return; + var desc = Object.getOwnPropertyDescriptor(base, property); + if (desc.get) { + return desc.get.call(arguments.length < 3 ? target : receiver); + } + return desc.value; + }, module.exports.__esModule = true, module.exports["default"] = module.exports; + } + return _get.apply(this, arguments); +} +module.exports = _get, module.exports.__esModule = true, module.exports["default"] = module.exports; + +/***/ }), + +/***/ "../node_modules/@babel/runtime/helpers/getPrototypeOf.js": +/*!****************************************************************!*\ + !*** ../node_modules/@babel/runtime/helpers/getPrototypeOf.js ***! + \****************************************************************/ +/***/ ((module) => { + +function _getPrototypeOf(o) { + module.exports = _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { + return o.__proto__ || Object.getPrototypeOf(o); + }, module.exports.__esModule = true, module.exports["default"] = module.exports; + return _getPrototypeOf(o); +} +module.exports = _getPrototypeOf, module.exports.__esModule = true, module.exports["default"] = module.exports; + +/***/ }), + +/***/ "../node_modules/@babel/runtime/helpers/inherits.js": +/*!**********************************************************!*\ + !*** ../node_modules/@babel/runtime/helpers/inherits.js ***! + \**********************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var setPrototypeOf = __webpack_require__(/*! ./setPrototypeOf.js */ "../node_modules/@babel/runtime/helpers/setPrototypeOf.js"); +function _inherits(subClass, superClass) { + if (typeof superClass !== "function" && superClass !== null) { + throw new TypeError("Super expression must either be null or a function"); + } + subClass.prototype = Object.create(superClass && superClass.prototype, { + constructor: { + value: subClass, + writable: true, + configurable: true + } + }); + Object.defineProperty(subClass, "prototype", { + writable: false + }); + if (superClass) setPrototypeOf(subClass, superClass); +} +module.exports = _inherits, module.exports.__esModule = true, module.exports["default"] = module.exports; + +/***/ }), + +/***/ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js": +/*!***********************************************************************!*\ + !*** ../node_modules/@babel/runtime/helpers/interopRequireDefault.js ***! + \***********************************************************************/ +/***/ ((module) => { + +function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + "default": obj + }; +} +module.exports = _interopRequireDefault, module.exports.__esModule = true, module.exports["default"] = module.exports; + +/***/ }), + +/***/ "../node_modules/@babel/runtime/helpers/possibleConstructorReturn.js": +/*!***************************************************************************!*\ + !*** ../node_modules/@babel/runtime/helpers/possibleConstructorReturn.js ***! + \***************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var _typeof = (__webpack_require__(/*! ./typeof.js */ "../node_modules/@babel/runtime/helpers/typeof.js")["default"]); +var assertThisInitialized = __webpack_require__(/*! ./assertThisInitialized.js */ "../node_modules/@babel/runtime/helpers/assertThisInitialized.js"); +function _possibleConstructorReturn(self, call) { + if (call && (_typeof(call) === "object" || typeof call === "function")) { + return call; + } else if (call !== void 0) { + throw new TypeError("Derived constructors may only return object or undefined"); + } + return assertThisInitialized(self); +} +module.exports = _possibleConstructorReturn, module.exports.__esModule = true, module.exports["default"] = module.exports; + +/***/ }), + +/***/ "../node_modules/@babel/runtime/helpers/regeneratorRuntime.js": +/*!********************************************************************!*\ + !*** ../node_modules/@babel/runtime/helpers/regeneratorRuntime.js ***! + \********************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var _typeof = (__webpack_require__(/*! ./typeof.js */ "../node_modules/@babel/runtime/helpers/typeof.js")["default"]); +function _regeneratorRuntime() { + "use strict"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ + module.exports = _regeneratorRuntime = function _regeneratorRuntime() { + return e; + }, module.exports.__esModule = true, module.exports["default"] = module.exports; + var t, + e = {}, + r = Object.prototype, + n = r.hasOwnProperty, + o = Object.defineProperty || function (t, e, r) { + t[e] = r.value; + }, + i = "function" == typeof Symbol ? Symbol : {}, + a = i.iterator || "@@iterator", + c = i.asyncIterator || "@@asyncIterator", + u = i.toStringTag || "@@toStringTag"; + function define(t, e, r) { + return Object.defineProperty(t, e, { + value: r, + enumerable: !0, + configurable: !0, + writable: !0 + }), t[e]; + } + try { + define({}, ""); + } catch (t) { + define = function define(t, e, r) { + return t[e] = r; + }; + } + function wrap(t, e, r, n) { + var i = e && e.prototype instanceof Generator ? e : Generator, + a = Object.create(i.prototype), + c = new Context(n || []); + return o(a, "_invoke", { + value: makeInvokeMethod(t, r, c) + }), a; + } + function tryCatch(t, e, r) { + try { + return { + type: "normal", + arg: t.call(e, r) + }; + } catch (t) { + return { + type: "throw", + arg: t + }; + } + } + e.wrap = wrap; + var h = "suspendedStart", + l = "suspendedYield", + f = "executing", + s = "completed", + y = {}; + function Generator() {} + function GeneratorFunction() {} + function GeneratorFunctionPrototype() {} + var p = {}; + define(p, a, function () { + return this; + }); + var d = Object.getPrototypeOf, + v = d && d(d(values([]))); + v && v !== r && n.call(v, a) && (p = v); + var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); + function defineIteratorMethods(t) { + ["next", "throw", "return"].forEach(function (e) { + define(t, e, function (t) { + return this._invoke(e, t); + }); + }); + } + function AsyncIterator(t, e) { + function invoke(r, o, i, a) { + var c = tryCatch(t[r], t, o); + if ("throw" !== c.type) { + var u = c.arg, + h = u.value; + return h && "object" == _typeof(h) && n.call(h, "__await") ? e.resolve(h.__await).then(function (t) { + invoke("next", t, i, a); + }, function (t) { + invoke("throw", t, i, a); + }) : e.resolve(h).then(function (t) { + u.value = t, i(u); + }, function (t) { + return invoke("throw", t, i, a); + }); + } + a(c.arg); + } + var r; + o(this, "_invoke", { + value: function value(t, n) { + function callInvokeWithMethodAndArg() { + return new e(function (e, r) { + invoke(t, n, e, r); + }); + } + return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); + } + }); + } + function makeInvokeMethod(e, r, n) { + var o = h; + return function (i, a) { + if (o === f) throw new Error("Generator is already running"); + if (o === s) { + if ("throw" === i) throw a; + return { + value: t, + done: !0 + }; + } + for (n.method = i, n.arg = a;;) { + var c = n.delegate; + if (c) { + var u = maybeInvokeDelegate(c, n); + if (u) { + if (u === y) continue; + return u; + } + } + if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) { + if (o === h) throw o = s, n.arg; + n.dispatchException(n.arg); + } else "return" === n.method && n.abrupt("return", n.arg); + o = f; + var p = tryCatch(e, r, n); + if ("normal" === p.type) { + if (o = n.done ? s : l, p.arg === y) continue; + return { + value: p.arg, + done: n.done + }; + } + "throw" === p.type && (o = s, n.method = "throw", n.arg = p.arg); + } + }; + } + function maybeInvokeDelegate(e, r) { + var n = r.method, + o = e.iterator[n]; + if (o === t) return r.delegate = null, "throw" === n && e.iterator["return"] && (r.method = "return", r.arg = t, maybeInvokeDelegate(e, r), "throw" === r.method) || "return" !== n && (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + n + "' method")), y; + var i = tryCatch(o, e.iterator, r.arg); + if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, y; + var a = i.arg; + return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, "return" !== r.method && (r.method = "next", r.arg = t), r.delegate = null, y) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, y); + } + function pushTryEntry(t) { + var e = { + tryLoc: t[0] + }; + 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); + } + function resetTryEntry(t) { + var e = t.completion || {}; + e.type = "normal", delete e.arg, t.completion = e; + } + function Context(t) { + this.tryEntries = [{ + tryLoc: "root" + }], t.forEach(pushTryEntry, this), this.reset(!0); + } + function values(e) { + if (e || "" === e) { + var r = e[a]; + if (r) return r.call(e); + if ("function" == typeof e.next) return e; + if (!isNaN(e.length)) { + var o = -1, + i = function next() { + for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; + return next.value = t, next.done = !0, next; + }; + return i.next = i; + } + } + throw new TypeError(_typeof(e) + " is not iterable"); + } + return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", { + value: GeneratorFunctionPrototype, + configurable: !0 + }), o(GeneratorFunctionPrototype, "constructor", { + value: GeneratorFunction, + configurable: !0 + }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) { + var e = "function" == typeof t && t.constructor; + return !!e && (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name)); + }, e.mark = function (t) { + return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, "GeneratorFunction")), t.prototype = Object.create(g), t; + }, e.awrap = function (t) { + return { + __await: t + }; + }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { + return this; + }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { + void 0 === i && (i = Promise); + var a = new AsyncIterator(wrap(t, r, n, o), i); + return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { + return t.done ? t.value : a.next(); + }); + }, defineIteratorMethods(g), define(g, u, "Generator"), define(g, a, function () { + return this; + }), define(g, "toString", function () { + return "[object Generator]"; + }), e.keys = function (t) { + var e = Object(t), + r = []; + for (var n in e) r.push(n); + return r.reverse(), function next() { + for (; r.length;) { + var t = r.pop(); + if (t in e) return next.value = t, next.done = !1, next; + } + return next.done = !0, next; + }; + }, e.values = values, Context.prototype = { + constructor: Context, + reset: function reset(e) { + if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) "t" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); + }, + stop: function stop() { + this.done = !0; + var t = this.tryEntries[0].completion; + if ("throw" === t.type) throw t.arg; + return this.rval; + }, + dispatchException: function dispatchException(e) { + if (this.done) throw e; + var r = this; + function handle(n, o) { + return a.type = "throw", a.arg = e, r.next = n, o && (r.method = "next", r.arg = t), !!o; + } + for (var o = this.tryEntries.length - 1; o >= 0; --o) { + var i = this.tryEntries[o], + a = i.completion; + if ("root" === i.tryLoc) return handle("end"); + if (i.tryLoc <= this.prev) { + var c = n.call(i, "catchLoc"), + u = n.call(i, "finallyLoc"); + if (c && u) { + if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); + if (this.prev < i.finallyLoc) return handle(i.finallyLoc); + } else if (c) { + if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); + } else { + if (!u) throw new Error("try statement without catch or finally"); + if (this.prev < i.finallyLoc) return handle(i.finallyLoc); + } + } + } + }, + abrupt: function abrupt(t, e) { + for (var r = this.tryEntries.length - 1; r >= 0; --r) { + var o = this.tryEntries[r]; + if (o.tryLoc <= this.prev && n.call(o, "finallyLoc") && this.prev < o.finallyLoc) { + var i = o; + break; + } + } + i && ("break" === t || "continue" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); + var a = i ? i.completion : {}; + return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, y) : this.complete(a); + }, + complete: function complete(t, e) { + if ("throw" === t.type) throw t.arg; + return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type && e && (this.next = e), y; + }, + finish: function finish(t) { + for (var e = this.tryEntries.length - 1; e >= 0; --e) { + var r = this.tryEntries[e]; + if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; + } + }, + "catch": function _catch(t) { + for (var e = this.tryEntries.length - 1; e >= 0; --e) { + var r = this.tryEntries[e]; + if (r.tryLoc === t) { + var n = r.completion; + if ("throw" === n.type) { + var o = n.arg; + resetTryEntry(r); + } + return o; + } + } + throw new Error("illegal catch attempt"); + }, + delegateYield: function delegateYield(e, r, n) { + return this.delegate = { + iterator: values(e), + resultName: r, + nextLoc: n + }, "next" === this.method && (this.arg = t), y; + } + }, e; +} +module.exports = _regeneratorRuntime, module.exports.__esModule = true, module.exports["default"] = module.exports; + +/***/ }), + +/***/ "../node_modules/@babel/runtime/helpers/setPrototypeOf.js": +/*!****************************************************************!*\ + !*** ../node_modules/@babel/runtime/helpers/setPrototypeOf.js ***! + \****************************************************************/ +/***/ ((module) => { + +function _setPrototypeOf(o, p) { + module.exports = _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { + o.__proto__ = p; + return o; + }, module.exports.__esModule = true, module.exports["default"] = module.exports; + return _setPrototypeOf(o, p); +} +module.exports = _setPrototypeOf, module.exports.__esModule = true, module.exports["default"] = module.exports; + +/***/ }), + +/***/ "../node_modules/@babel/runtime/helpers/superPropBase.js": +/*!***************************************************************!*\ + !*** ../node_modules/@babel/runtime/helpers/superPropBase.js ***! + \***************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var getPrototypeOf = __webpack_require__(/*! ./getPrototypeOf.js */ "../node_modules/@babel/runtime/helpers/getPrototypeOf.js"); +function _superPropBase(object, property) { + while (!Object.prototype.hasOwnProperty.call(object, property)) { + object = getPrototypeOf(object); + if (object === null) break; + } + return object; +} +module.exports = _superPropBase, module.exports.__esModule = true, module.exports["default"] = module.exports; + +/***/ }), + +/***/ "../node_modules/@babel/runtime/helpers/toPrimitive.js": +/*!*************************************************************!*\ + !*** ../node_modules/@babel/runtime/helpers/toPrimitive.js ***! + \*************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var _typeof = (__webpack_require__(/*! ./typeof.js */ "../node_modules/@babel/runtime/helpers/typeof.js")["default"]); +function toPrimitive(t, r) { + if ("object" != _typeof(t) || !t) return t; + var e = t[Symbol.toPrimitive]; + if (void 0 !== e) { + var i = e.call(t, r || "default"); + if ("object" != _typeof(i)) return i; + throw new TypeError("@@toPrimitive must return a primitive value."); + } + return ("string" === r ? String : Number)(t); +} +module.exports = toPrimitive, module.exports.__esModule = true, module.exports["default"] = module.exports; + +/***/ }), + +/***/ "../node_modules/@babel/runtime/helpers/toPropertyKey.js": +/*!***************************************************************!*\ + !*** ../node_modules/@babel/runtime/helpers/toPropertyKey.js ***! + \***************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var _typeof = (__webpack_require__(/*! ./typeof.js */ "../node_modules/@babel/runtime/helpers/typeof.js")["default"]); +var toPrimitive = __webpack_require__(/*! ./toPrimitive.js */ "../node_modules/@babel/runtime/helpers/toPrimitive.js"); +function toPropertyKey(t) { + var i = toPrimitive(t, "string"); + return "symbol" == _typeof(i) ? i : String(i); +} +module.exports = toPropertyKey, module.exports.__esModule = true, module.exports["default"] = module.exports; + +/***/ }), + +/***/ "../node_modules/@babel/runtime/helpers/typeof.js": +/*!********************************************************!*\ + !*** ../node_modules/@babel/runtime/helpers/typeof.js ***! + \********************************************************/ +/***/ ((module) => { + +function _typeof(o) { + "@babel/helpers - typeof"; + + return (module.exports = _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { + return typeof o; + } : function (o) { + return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; + }, module.exports.__esModule = true, module.exports["default"] = module.exports), _typeof(o); +} +module.exports = _typeof, module.exports.__esModule = true, module.exports["default"] = module.exports; + +/***/ }), + +/***/ "../node_modules/@babel/runtime/regenerator/index.js": +/*!***********************************************************!*\ + !*** ../node_modules/@babel/runtime/regenerator/index.js ***! + \***********************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +// TODO(Babel 8): Remove this file. + +var runtime = __webpack_require__(/*! ../helpers/regeneratorRuntime */ "../node_modules/@babel/runtime/helpers/regeneratorRuntime.js")(); +module.exports = runtime; + +// Copied from https://github.com/facebook/regenerator/blob/main/packages/runtime/runtime.js#L736= +try { + regeneratorRuntime = runtime; +} catch (accidentalStrictMode) { + if (typeof globalThis === "object") { + globalThis.regeneratorRuntime = runtime; + } else { + Function("r", "regeneratorRuntime = r")(runtime); + } +} + + +/***/ }) + +/******/ }); +/************************************************************************/ +/******/ // The module cache +/******/ var __webpack_module_cache__ = {}; +/******/ +/******/ // The require function +/******/ function __webpack_require__(moduleId) { +/******/ // Check if module is in cache +/******/ var cachedModule = __webpack_module_cache__[moduleId]; +/******/ if (cachedModule !== undefined) { +/******/ return cachedModule.exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = __webpack_module_cache__[moduleId] = { +/******/ // no module.id needed +/******/ // no module.loaded needed +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__); +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/************************************************************************/ +var __webpack_exports__ = {}; +// This entry need to be wrapped in an IIFE because it need to be in strict mode. +(() => { +"use strict"; +/*!*****************************************!*\ + !*** ../assets/dev/js/admin/modules.js ***! + \*****************************************/ + + +var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js"); +var _menuHandler = _interopRequireDefault(__webpack_require__(/*! elementor-admin/menu-handler */ "../assets/dev/js/admin/menu-handler.js")); +var _introduction = _interopRequireDefault(__webpack_require__(/*! ../utils/introduction */ "../assets/dev/js/utils/introduction.js")); +elementorModules.admin = { + MenuHandler: _menuHandler.default, + utils: { + Introduction: _introduction.default + } +}; +})(); + +/******/ })() +; +//# sourceMappingURL=admin-modules.js.map \ No newline at end of file diff --git a/wp-content/plugins/elementor/assets/js/admin-modules.min.js b/wp-content/plugins/elementor/assets/js/admin-modules.min.js new file mode 100644 index 0000000..5cfa230 --- /dev/null +++ b/wp-content/plugins/elementor/assets/js/admin-modules.min.js @@ -0,0 +1,3 @@ +/*! elementor - v3.20.0 - 26-03-2024 */ +/*! For license information please see admin-modules.min.js.LICENSE.txt */ +(()=>{var e={75389:(e,t,r)=>{"use strict";var n=r(73203);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var o=n(r(78983)),i=n(r(42081)),a=n(r(51121)),u=n(r(58724)),s=n(r(71173)),c=n(r(74910));function _createSuper(e){var t=function _isNativeReflectConstruct(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function _createSuperInternal(){var r,n=(0,c.default)(e);if(t){var o=(0,c.default)(this).constructor;r=Reflect.construct(n,arguments,o)}else r=n.apply(this,arguments);return(0,s.default)(this,r)}}var l=function(e){(0,u.default)(MenuHandler,e);var t=_createSuper(MenuHandler);function MenuHandler(){return(0,o.default)(this,MenuHandler),t.apply(this,arguments)}return(0,i.default)(MenuHandler,[{key:"getDefaultSettings",value:function getDefaultSettings(){return{selectors:{currentSubmenuItems:"#adminmenu .current"}}}},{key:"getDefaultElements",value:function getDefaultElements(){var e=this.getSettings();return{$currentSubmenuItems:jQuery(e.selectors.currentSubmenuItems),$adminPageMenuLink:jQuery('a[href="'.concat(e.path,'"]'))}}},{key:"highlightSubMenuItem",value:function highlightSubMenuItem(){var e=(arguments.length>0&&void 0!==arguments[0]?arguments[0]:null)||this.elements.$adminPageMenuLink;this.elements.$currentSubmenuItems.length&&this.elements.$currentSubmenuItems.removeClass("current"),e.addClass("current"),e.parent().addClass("current")}},{key:"highlightTopLevelMenuItem",value:function highlightTopLevelMenuItem(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,r="wp-has-current-submenu wp-menu-open current";e.parent().addClass(r).removeClass("wp-not-current-submenu"),t&&t.removeClass(r)}},{key:"onInit",value:function onInit(){(0,a.default)((0,c.default)(MenuHandler.prototype),"onInit",this).call(this);var e=this.getSettings();window.location.href.includes(e.path)&&this.highlightSubMenuItem()}}]),MenuHandler}(elementorModules.ViewModule);t.default=l},60834:(e,t,r)=>{"use strict";var n=r(73203);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var o=n(r(50824)),i=n(r(10029)),a=n(r(78983)),u=n(r(42081)),s=n(r(77266)),c=n(r(58724)),l=n(r(71173)),f=n(r(74910)),p=n(r(93231));function _createSuper(e){var t=function _isNativeReflectConstruct(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function _createSuperInternal(){var r,n=(0,f.default)(e);if(t){var o=(0,f.default)(this).constructor;r=Reflect.construct(n,arguments,o)}else r=n.apply(this,arguments);return(0,l.default)(this,r)}}var d=function(e){(0,c.default)(_default,e);var t,r=_createSuper(_default);function _default(){var e;(0,a.default)(this,_default);for(var t=arguments.length,n=new Array(t),o=0;o{e.exports=function _assertThisInitialized(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e},e.exports.__esModule=!0,e.exports.default=e.exports},10029:e=>{function asyncGeneratorStep(e,t,r,n,o,i,a){try{var u=e[i](a),s=u.value}catch(e){return void r(e)}u.done?t(s):Promise.resolve(s).then(n,o)}e.exports=function _asyncToGenerator(e){return function(){var t=this,r=arguments;return new Promise((function(n,o){var i=e.apply(t,r);function _next(e){asyncGeneratorStep(i,n,o,_next,_throw,"next",e)}function _throw(e){asyncGeneratorStep(i,n,o,_next,_throw,"throw",e)}_next(void 0)}))}},e.exports.__esModule=!0,e.exports.default=e.exports},78983:e=>{e.exports=function _classCallCheck(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")},e.exports.__esModule=!0,e.exports.default=e.exports},42081:(e,t,r)=>{var n=r(74040);function _defineProperties(e,t){for(var r=0;r{var n=r(74040);e.exports=function _defineProperty(e,t,r){return(t=n(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e},e.exports.__esModule=!0,e.exports.default=e.exports},51121:(e,t,r)=>{var n=r(79443);function _get(){return"undefined"!=typeof Reflect&&Reflect.get?(e.exports=_get=Reflect.get.bind(),e.exports.__esModule=!0,e.exports.default=e.exports):(e.exports=_get=function _get(e,t,r){var o=n(e,t);if(o){var i=Object.getOwnPropertyDescriptor(o,t);return i.get?i.get.call(arguments.length<3?e:r):i.value}},e.exports.__esModule=!0,e.exports.default=e.exports),_get.apply(this,arguments)}e.exports=_get,e.exports.__esModule=!0,e.exports.default=e.exports},74910:e=>{function _getPrototypeOf(t){return e.exports=_getPrototypeOf=Object.setPrototypeOf?Object.getPrototypeOf.bind():function _getPrototypeOf(e){return e.__proto__||Object.getPrototypeOf(e)},e.exports.__esModule=!0,e.exports.default=e.exports,_getPrototypeOf(t)}e.exports=_getPrototypeOf,e.exports.__esModule=!0,e.exports.default=e.exports},58724:(e,t,r)=>{var n=r(96196);e.exports=function _inherits(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&n(e,t)},e.exports.__esModule=!0,e.exports.default=e.exports},73203:e=>{e.exports=function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}},e.exports.__esModule=!0,e.exports.default=e.exports},71173:(e,t,r)=>{var n=r(7501).default,o=r(77266);e.exports=function _possibleConstructorReturn(e,t){if(t&&("object"===n(t)||"function"==typeof t))return t;if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined");return o(e)},e.exports.__esModule=!0,e.exports.default=e.exports},21337:(e,t,r)=>{var n=r(7501).default;function _regeneratorRuntime(){"use strict";e.exports=_regeneratorRuntime=function _regeneratorRuntime(){return r},e.exports.__esModule=!0,e.exports.default=e.exports;var t,r={},o=Object.prototype,i=o.hasOwnProperty,a=Object.defineProperty||function(e,t,r){e[t]=r.value},u="function"==typeof Symbol?Symbol:{},s=u.iterator||"@@iterator",c=u.asyncIterator||"@@asyncIterator",l=u.toStringTag||"@@toStringTag";function define(e,t,r){return Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{define({},"")}catch(t){define=function define(e,t,r){return e[t]=r}}function wrap(e,t,r,n){var o=t&&t.prototype instanceof Generator?t:Generator,i=Object.create(o.prototype),u=new Context(n||[]);return a(i,"_invoke",{value:makeInvokeMethod(e,r,u)}),i}function tryCatch(e,t,r){try{return{type:"normal",arg:e.call(t,r)}}catch(e){return{type:"throw",arg:e}}}r.wrap=wrap;var f="suspendedStart",p="suspendedYield",d="executing",h="completed",y={};function Generator(){}function GeneratorFunction(){}function GeneratorFunctionPrototype(){}var v={};define(v,s,(function(){return this}));var g=Object.getPrototypeOf,_=g&&g(g(values([])));_&&_!==o&&i.call(_,s)&&(v=_);var x=GeneratorFunctionPrototype.prototype=Generator.prototype=Object.create(v);function defineIteratorMethods(e){["next","throw","return"].forEach((function(t){define(e,t,(function(e){return this._invoke(t,e)}))}))}function AsyncIterator(e,t){function invoke(r,o,a,u){var s=tryCatch(e[r],e,o);if("throw"!==s.type){var c=s.arg,l=c.value;return l&&"object"==n(l)&&i.call(l,"__await")?t.resolve(l.__await).then((function(e){invoke("next",e,a,u)}),(function(e){invoke("throw",e,a,u)})):t.resolve(l).then((function(e){c.value=e,a(c)}),(function(e){return invoke("throw",e,a,u)}))}u(s.arg)}var r;a(this,"_invoke",{value:function value(e,n){function callInvokeWithMethodAndArg(){return new t((function(t,r){invoke(e,n,t,r)}))}return r=r?r.then(callInvokeWithMethodAndArg,callInvokeWithMethodAndArg):callInvokeWithMethodAndArg()}})}function makeInvokeMethod(e,r,n){var o=f;return function(i,a){if(o===d)throw new Error("Generator is already running");if(o===h){if("throw"===i)throw a;return{value:t,done:!0}}for(n.method=i,n.arg=a;;){var u=n.delegate;if(u){var s=maybeInvokeDelegate(u,n);if(s){if(s===y)continue;return s}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if(o===f)throw o=h,n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);o=d;var c=tryCatch(e,r,n);if("normal"===c.type){if(o=n.done?h:p,c.arg===y)continue;return{value:c.arg,done:n.done}}"throw"===c.type&&(o=h,n.method="throw",n.arg=c.arg)}}}function maybeInvokeDelegate(e,r){var n=r.method,o=e.iterator[n];if(o===t)return r.delegate=null,"throw"===n&&e.iterator.return&&(r.method="return",r.arg=t,maybeInvokeDelegate(e,r),"throw"===r.method)||"return"!==n&&(r.method="throw",r.arg=new TypeError("The iterator does not provide a '"+n+"' method")),y;var i=tryCatch(o,e.iterator,r.arg);if("throw"===i.type)return r.method="throw",r.arg=i.arg,r.delegate=null,y;var a=i.arg;return a?a.done?(r[e.resultName]=a.value,r.next=e.nextLoc,"return"!==r.method&&(r.method="next",r.arg=t),r.delegate=null,y):a:(r.method="throw",r.arg=new TypeError("iterator result is not an object"),r.delegate=null,y)}function pushTryEntry(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function resetTryEntry(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function Context(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(pushTryEntry,this),this.reset(!0)}function values(e){if(e||""===e){var r=e[s];if(r)return r.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var o=-1,a=function next(){for(;++o=0;--n){var o=this.tryEntries[n],a=o.completion;if("root"===o.tryLoc)return handle("end");if(o.tryLoc<=this.prev){var u=i.call(o,"catchLoc"),s=i.call(o,"finallyLoc");if(u&&s){if(this.prev=0;--r){var n=this.tryEntries[r];if(n.tryLoc<=this.prev&&i.call(n,"finallyLoc")&&this.prev=0;--t){var r=this.tryEntries[t];if(r.finallyLoc===e)return this.complete(r.completion,r.afterLoc),resetTryEntry(r),y}},catch:function _catch(e){for(var t=this.tryEntries.length-1;t>=0;--t){var r=this.tryEntries[t];if(r.tryLoc===e){var n=r.completion;if("throw"===n.type){var o=n.arg;resetTryEntry(r)}return o}}throw new Error("illegal catch attempt")},delegateYield:function delegateYield(e,r,n){return this.delegate={iterator:values(e),resultName:r,nextLoc:n},"next"===this.method&&(this.arg=t),y}},r}e.exports=_regeneratorRuntime,e.exports.__esModule=!0,e.exports.default=e.exports},96196:e=>{function _setPrototypeOf(t,r){return e.exports=_setPrototypeOf=Object.setPrototypeOf?Object.setPrototypeOf.bind():function _setPrototypeOf(e,t){return e.__proto__=t,e},e.exports.__esModule=!0,e.exports.default=e.exports,_setPrototypeOf(t,r)}e.exports=_setPrototypeOf,e.exports.__esModule=!0,e.exports.default=e.exports},79443:(e,t,r)=>{var n=r(74910);e.exports=function _superPropBase(e,t){for(;!Object.prototype.hasOwnProperty.call(e,t)&&null!==(e=n(e)););return e},e.exports.__esModule=!0,e.exports.default=e.exports},56027:(e,t,r)=>{var n=r(7501).default;e.exports=function toPrimitive(e,t){if("object"!=n(e)||!e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var o=r.call(e,t||"default");if("object"!=n(o))return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)},e.exports.__esModule=!0,e.exports.default=e.exports},74040:(e,t,r)=>{var n=r(7501).default,o=r(56027);e.exports=function toPropertyKey(e){var t=o(e,"string");return"symbol"==n(t)?t:String(t)},e.exports.__esModule=!0,e.exports.default=e.exports},7501:e=>{function _typeof(t){return e.exports=_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},e.exports.__esModule=!0,e.exports.default=e.exports,_typeof(t)}e.exports=_typeof,e.exports.__esModule=!0,e.exports.default=e.exports},50824:(e,t,r)=>{var n=r(21337)();e.exports=n;try{regeneratorRuntime=n}catch(e){"object"==typeof globalThis?globalThis.regeneratorRuntime=n:Function("r","regeneratorRuntime = r")(n)}}},t={};function __webpack_require__(r){var n=t[r];if(void 0!==n)return n.exports;var o=t[r]={exports:{}};return e[r](o,o.exports,__webpack_require__),o.exports}(()=>{"use strict";var e=__webpack_require__(73203),t=e(__webpack_require__(75389)),r=e(__webpack_require__(60834));elementorModules.admin={MenuHandler:t.default,utils:{Introduction:r.default}}})()})(); \ No newline at end of file diff --git a/wp-content/plugins/elementor/assets/js/admin-modules.min.js.LICENSE.txt b/wp-content/plugins/elementor/assets/js/admin-modules.min.js.LICENSE.txt new file mode 100644 index 0000000..ae386fb --- /dev/null +++ b/wp-content/plugins/elementor/assets/js/admin-modules.min.js.LICENSE.txt @@ -0,0 +1 @@ +/*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ diff --git a/wp-content/plugins/elementor/assets/js/admin-notifications.js b/wp-content/plugins/elementor/assets/js/admin-notifications.js new file mode 100644 index 0000000..f992414 --- /dev/null +++ b/wp-content/plugins/elementor/assets/js/admin-notifications.js @@ -0,0 +1,6777 @@ +/*! elementor - v3.20.0 - 26-03-2024 */ +/******/ (() => { // webpackBootstrap +/******/ var __webpack_modules__ = ({ + +/***/ "../node_modules/@elementor/query/dist/index.js": +/*!******************************************************!*\ + !*** ../node_modules/@elementor/query/dist/index.js ***! + \******************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/index.ts +var src_exports = {}; +__export(src_exports, { + QueryClient: () => import_react_query2.QueryClient, + QueryClientProvider: () => import_react_query2.QueryClientProvider, + createQueryClient: () => createQueryClient, + useInfiniteQuery: () => import_react_query2.useInfiniteQuery, + useMutation: () => import_react_query2.useMutation, + useQuery: () => import_react_query2.useQuery, + useQueryClient: () => import_react_query2.useQueryClient +}); +module.exports = __toCommonJS(src_exports); +var import_react_query = __webpack_require__(/*! @tanstack/react-query */ "../node_modules/@tanstack/react-query/build/modern/index.cjs"); +var import_react_query2 = __webpack_require__(/*! @tanstack/react-query */ "../node_modules/@tanstack/react-query/build/modern/index.cjs"); +function createQueryClient() { + return new import_react_query.QueryClient({ + defaultOptions: { + queries: { + refetchOnWindowFocus: false, + refetchOnReconnect: false + } + } + }); +} +// Annotate the CommonJS export names for ESM import in node: +0 && (0); +//# sourceMappingURL=index.js.map + +/***/ }), + +/***/ "../modules/notifications/assets/js/api/index.js": +/*!*******************************************************!*\ + !*** ../modules/notifications/assets/js/api/index.js ***! + \*******************************************************/ +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.getNotifications = void 0; +var request = function request(endpoint) { + var data = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + return new Promise(function (resolve, reject) { + elementorCommon.ajax.addRequest(endpoint, { + success: resolve, + error: reject, + data: data + }); + }); +}; +var getNotifications = function getNotifications() { + return request('notifications_get'); +}; +exports.getNotifications = getNotifications; + +/***/ }), + +/***/ "../modules/notifications/assets/js/components/bar-button-notification.js": +/*!********************************************************************************!*\ + !*** ../modules/notifications/assets/js/components/bar-button-notification.js ***! + \********************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +/* provided dependency */ var PropTypes = __webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js"); + + +var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js"); +var _typeof = __webpack_require__(/*! @babel/runtime/helpers/typeof */ "../node_modules/@babel/runtime/helpers/typeof.js"); +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.BarButtonNotification = void 0; +var _react = _interopRequireWildcard(__webpack_require__(/*! react */ "react")); +var _slicedToArray2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/slicedToArray */ "../node_modules/@babel/runtime/helpers/slicedToArray.js")); +var _whatsNew = __webpack_require__(/*! ./whats-new */ "../modules/notifications/assets/js/components/whats-new.js"); +var _ui = __webpack_require__(/*! @elementor/ui */ "@elementor/ui"); +var _giftIcon = __webpack_require__(/*! ../icons/gift-icon */ "../modules/notifications/assets/js/icons/gift-icon.js"); +function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); } +function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; } +var BarButtonNotification = function BarButtonNotification(props) { + var defaultIsRead = props.defaultIsRead; + var _useState = (0, _react.useState)(false), + _useState2 = (0, _slicedToArray2.default)(_useState, 2), + isOpen = _useState2[0], + setIsOpen = _useState2[1]; + var _useState3 = (0, _react.useState)(defaultIsRead), + _useState4 = (0, _slicedToArray2.default)(_useState3, 2), + isRead = _useState4[0], + setIsRead = _useState4[1]; + + // TODO: This is a temporary solution until we have a proper admin bar component. + return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("button", { + className: "e-admin-top-bar__bar-button", + style: { + backgroundColor: 'transparent', + border: 'none' + }, + onClick: function onClick(event) { + event.preventDefault(); + setIsOpen(true); + } + }, /*#__PURE__*/_react.default.createElement(_ui.Badge, { + color: "primary", + variant: "dot", + invisible: isRead, + sx: { + mx: 0.5 + } + }, /*#__PURE__*/_react.default.createElement(_giftIcon.GiftIcon, { + fontSize: "inherit" + })), /*#__PURE__*/_react.default.createElement("span", { + className: "e-admin-top-bar__bar-button-title" + }, props.children)), /*#__PURE__*/_react.default.createElement(_whatsNew.WhatsNew, { + isOpen: isOpen, + setIsOpen: setIsOpen, + setIsRead: setIsRead + })); +}; +exports.BarButtonNotification = BarButtonNotification; +BarButtonNotification.propTypes = { + defaultIsRead: PropTypes.bool, + children: PropTypes.any.isRequired +}; + +/***/ }), + +/***/ "../modules/notifications/assets/js/components/whats-new-drawer-content.js": +/*!*********************************************************************************!*\ + !*** ../modules/notifications/assets/js/components/whats-new-drawer-content.js ***! + \*********************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + + +var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js"); +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.WhatsNewDrawerContent = void 0; +var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react")); +var _query = __webpack_require__(/*! @elementor/query */ "../node_modules/@elementor/query/dist/index.js"); +var _api = __webpack_require__(/*! ../api */ "../modules/notifications/assets/js/api/index.js"); +var _ui = __webpack_require__(/*! @elementor/ui */ "@elementor/ui"); +var _whatsNewItem = __webpack_require__(/*! ./whats-new-item */ "../modules/notifications/assets/js/components/whats-new-item.js"); +var WhatsNewDrawerContent = function WhatsNewDrawerContent() { + var _useQuery = (0, _query.useQuery)({ + queryKey: ['e-notifications'], + queryFn: _api.getNotifications + }), + isPending = _useQuery.isPending, + error = _useQuery.error, + items = _useQuery.data; + if (isPending) { + return /*#__PURE__*/_react.default.createElement(_ui.Box, null, /*#__PURE__*/_react.default.createElement(_ui.LinearProgress, { + color: "secondary" + })); + } + if (error) { + return /*#__PURE__*/_react.default.createElement(_ui.Box, null, "An error has occurred: ", error); + } + return items.map(function (item, itemIndex) { + return /*#__PURE__*/_react.default.createElement(_whatsNewItem.WhatsNewItem, { + key: itemIndex, + item: item, + itemIndex: itemIndex, + itemsLength: items.length + }); + }); +}; +exports.WhatsNewDrawerContent = WhatsNewDrawerContent; + +/***/ }), + +/***/ "../modules/notifications/assets/js/components/whats-new-item-chips.js": +/*!*****************************************************************************!*\ + !*** ../modules/notifications/assets/js/components/whats-new-item-chips.js ***! + \*****************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +/* provided dependency */ var PropTypes = __webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js"); + + +var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js"); +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.WhatsNewItemChips = void 0; +var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react")); +var _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ "../node_modules/@babel/runtime/helpers/extends.js")); +var _ui = __webpack_require__(/*! @elementor/ui */ "@elementor/ui"); +var WhatsNewItemChips = function WhatsNewItemChips(_ref) { + var chipPlan = _ref.chipPlan, + chipTags = _ref.chipTags, + itemIndex = _ref.itemIndex; + var chips = []; + if (chipPlan) { + chips.push({ + color: 'promotion', + size: 'small', + label: chipPlan + }); + } + if (chipTags) { + chipTags.forEach(function (chipTag) { + chips.push({ + variant: 'outlined', + size: 'small', + label: chipTag + }); + }); + } + if (!chips.length) { + return null; + } + return /*#__PURE__*/_react.default.createElement(_ui.Stack, { + direction: "row", + flexWrap: "wrap", + gap: 1, + sx: { + pb: 1 + } + }, chips.map(function (chip, chipIndex) { + return /*#__PURE__*/_react.default.createElement(_ui.Chip, (0, _extends2.default)({ + key: "chip-".concat(itemIndex).concat(chipIndex) + }, chip)); + })); +}; +exports.WhatsNewItemChips = WhatsNewItemChips; +WhatsNewItemChips.propTypes = { + chipPlan: PropTypes.string, + chipTags: PropTypes.array, + itemIndex: PropTypes.number.isRequired +}; + +/***/ }), + +/***/ "../modules/notifications/assets/js/components/whats-new-item-thumbnail.js": +/*!*********************************************************************************!*\ + !*** ../modules/notifications/assets/js/components/whats-new-item-thumbnail.js ***! + \*********************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +/* provided dependency */ var PropTypes = __webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js"); + + +var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js"); +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.WhatsNewItemThumbnail = void 0; +var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react")); +var _ui = __webpack_require__(/*! @elementor/ui */ "@elementor/ui"); +var _wrapperWithLink = __webpack_require__(/*! ./wrapper-with-link */ "../modules/notifications/assets/js/components/wrapper-with-link.js"); +var WhatsNewItemThumbnail = function WhatsNewItemThumbnail(_ref) { + var imageSrc = _ref.imageSrc, + title = _ref.title, + link = _ref.link; + return /*#__PURE__*/_react.default.createElement(_ui.Box, { + sx: { + pb: 2 + } + }, /*#__PURE__*/_react.default.createElement(_wrapperWithLink.WrapperWithLink, { + link: link + }, /*#__PURE__*/_react.default.createElement("img", { + src: imageSrc, + alt: title, + style: { + maxWidth: '100%' + } + }))); +}; +exports.WhatsNewItemThumbnail = WhatsNewItemThumbnail; +WhatsNewItemThumbnail.propTypes = { + imageSrc: PropTypes.string.isRequired, + title: PropTypes.string.isRequired, + link: PropTypes.string +}; + +/***/ }), + +/***/ "../modules/notifications/assets/js/components/whats-new-item-topic-line.js": +/*!**********************************************************************************!*\ + !*** ../modules/notifications/assets/js/components/whats-new-item-topic-line.js ***! + \**********************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +/* provided dependency */ var PropTypes = __webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js"); + + +var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js"); +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.WhatsNewItemTopicLine = void 0; +var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react")); +var _ui = __webpack_require__(/*! @elementor/ui */ "@elementor/ui"); +var WhatsNewItemTopicLine = function WhatsNewItemTopicLine(_ref) { + var topic = _ref.topic, + date = _ref.date; + return /*#__PURE__*/_react.default.createElement(_ui.Stack, { + direction: "row", + divider: /*#__PURE__*/_react.default.createElement(_ui.Divider, { + orientation: "vertical", + flexItem: true + }), + spacing: 1, + color: "text.tertiary", + sx: { + pb: 1 + } + }, topic && /*#__PURE__*/_react.default.createElement(_ui.Box, null, topic), date && /*#__PURE__*/_react.default.createElement(_ui.Box, null, date)); +}; +exports.WhatsNewItemTopicLine = WhatsNewItemTopicLine; +WhatsNewItemTopicLine.propTypes = { + topic: PropTypes.string, + date: PropTypes.string +}; + +/***/ }), + +/***/ "../modules/notifications/assets/js/components/whats-new-item.js": +/*!***********************************************************************!*\ + !*** ../modules/notifications/assets/js/components/whats-new-item.js ***! + \***********************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +/* provided dependency */ var PropTypes = __webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js"); + + +var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js"); +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.WhatsNewItem = void 0; +var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react")); +var _ui = __webpack_require__(/*! @elementor/ui */ "@elementor/ui"); +var _whatsNewItemTopicLine = __webpack_require__(/*! ./whats-new-item-topic-line */ "../modules/notifications/assets/js/components/whats-new-item-topic-line.js"); +var _wrapperWithLink = __webpack_require__(/*! ./wrapper-with-link */ "../modules/notifications/assets/js/components/wrapper-with-link.js"); +var _whatsNewItemThumbnail = __webpack_require__(/*! ./whats-new-item-thumbnail */ "../modules/notifications/assets/js/components/whats-new-item-thumbnail.js"); +var _whatsNewItemChips = __webpack_require__(/*! ./whats-new-item-chips */ "../modules/notifications/assets/js/components/whats-new-item-chips.js"); +var WhatsNewItem = function WhatsNewItem(_ref) { + var item = _ref.item, + itemIndex = _ref.itemIndex, + itemsLength = _ref.itemsLength; + return /*#__PURE__*/_react.default.createElement(_ui.Box, { + key: itemIndex, + display: "flex", + flexDirection: "column", + sx: { + pt: 2 + } + }, (item.topic || item.date) && /*#__PURE__*/_react.default.createElement(_whatsNewItemTopicLine.WhatsNewItemTopicLine, { + topic: item.topic, + date: item.date + }), /*#__PURE__*/_react.default.createElement(_wrapperWithLink.WrapperWithLink, { + link: item.link + }, /*#__PURE__*/_react.default.createElement(_ui.Typography, { + variant: "subtitle1", + sx: { + pb: 2 + } + }, item.title)), item.imageSrc && /*#__PURE__*/_react.default.createElement(_whatsNewItemThumbnail.WhatsNewItemThumbnail, { + imageSrc: item.imageSrc, + link: item.link, + title: item.title + }), /*#__PURE__*/_react.default.createElement(_whatsNewItemChips.WhatsNewItemChips, { + chipPlan: item.chipPlan, + chipTags: item.chipTags, + itemIndex: itemIndex + }), item.description && /*#__PURE__*/_react.default.createElement(_ui.Typography, { + variant: "body2", + color: "text.secondary", + sx: { + pb: 2 + } + }, item.description, item.readMoreText && /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, ' ', /*#__PURE__*/_react.default.createElement(_ui.Link, { + href: item.link, + color: "info.main", + target: "_blank" + }, item.readMoreText))), item.cta && item.ctaLink && /*#__PURE__*/_react.default.createElement(_ui.Box, { + sx: { + pb: 2 + } + }, /*#__PURE__*/_react.default.createElement(_ui.Button, { + href: item.ctaLink, + target: "_blank", + variant: "contained", + size: "small", + color: "promotion" + }, item.cta)), itemIndex !== itemsLength - 1 && /*#__PURE__*/_react.default.createElement(_ui.Divider, { + sx: { + my: 1 + } + })); +}; +exports.WhatsNewItem = WhatsNewItem; +WhatsNewItem.propTypes = { + item: PropTypes.object.isRequired, + itemIndex: PropTypes.number.isRequired, + itemsLength: PropTypes.number.isRequired +}; + +/***/ }), + +/***/ "../modules/notifications/assets/js/components/whats-new-top-bar.js": +/*!**************************************************************************!*\ + !*** ../modules/notifications/assets/js/components/whats-new-top-bar.js ***! + \**************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +/* provided dependency */ var PropTypes = __webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js"); + + +var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js"); +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.WhatsNewTopBar = void 0; +var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react")); +var _ui = __webpack_require__(/*! @elementor/ui */ "@elementor/ui"); +var _i18n = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n"); +var _xIcon = __webpack_require__(/*! ../icons/x-icon */ "../modules/notifications/assets/js/icons/x-icon.js"); +var WhatsNewTopBar = function WhatsNewTopBar(props) { + var setIsOpen = props.setIsOpen; + return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_ui.AppBar, { + elevation: 0, + position: "sticky", + sx: { + backgroundColor: 'background.default' + } + }, /*#__PURE__*/_react.default.createElement(_ui.Toolbar, { + variant: "dense" + }, /*#__PURE__*/_react.default.createElement(_ui.Typography, { + variant: "overline", + sx: { + flexGrow: 1 + } + }, (0, _i18n.__)('What\'s New', 'elementor')), /*#__PURE__*/_react.default.createElement(_ui.IconButton, { + "aria-label": 'close', + size: "small", + onClick: function onClick() { + return setIsOpen(false); + } + }, /*#__PURE__*/_react.default.createElement(_xIcon.XIcon, null)))), /*#__PURE__*/_react.default.createElement(_ui.Divider, null)); +}; +exports.WhatsNewTopBar = WhatsNewTopBar; +WhatsNewTopBar.propTypes = { + setIsOpen: PropTypes.func.isRequired +}; + +/***/ }), + +/***/ "../modules/notifications/assets/js/components/whats-new.js": +/*!******************************************************************!*\ + !*** ../modules/notifications/assets/js/components/whats-new.js ***! + \******************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +/* provided dependency */ var PropTypes = __webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js"); + + +var _typeof = __webpack_require__(/*! @babel/runtime/helpers/typeof */ "../node_modules/@babel/runtime/helpers/typeof.js"); +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.WhatsNew = void 0; +var _react = _interopRequireWildcard(__webpack_require__(/*! react */ "react")); +var _ui = __webpack_require__(/*! @elementor/ui */ "@elementor/ui"); +var _query = __webpack_require__(/*! @elementor/query */ "../node_modules/@elementor/query/dist/index.js"); +var _whatsNewTopBar = __webpack_require__(/*! ./whats-new-top-bar */ "../modules/notifications/assets/js/components/whats-new-top-bar.js"); +var _whatsNewDrawerContent = __webpack_require__(/*! ./whats-new-drawer-content */ "../modules/notifications/assets/js/components/whats-new-drawer-content.js"); +function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); } +function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; } +var queryClient = new _query.QueryClient({ + defaultOptions: { + queries: { + refetchOnWindowFocus: false, + retry: false, + staleTime: 1000 * 60 * 30 // 30 minutes + } + } +}); + +var WhatsNew = function WhatsNew(props) { + var _window$elementor, _window$elementor$get; + var isOpen = props.isOpen, + setIsOpen = props.setIsOpen, + setIsRead = props.setIsRead, + _props$anchorPosition = props.anchorPosition, + anchorPosition = _props$anchorPosition === void 0 ? 'right' : _props$anchorPosition; + (0, _react.useEffect)(function () { + if (!isOpen) { + return; + } + setIsRead(true); + }, [isOpen, setIsRead]); + return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_query.QueryClientProvider, { + client: queryClient + }, /*#__PURE__*/_react.default.createElement(_ui.DirectionProvider, { + rtl: elementorCommon.config.isRTL + }, /*#__PURE__*/_react.default.createElement(_ui.ThemeProvider, { + colorScheme: ((_window$elementor = window.elementor) === null || _window$elementor === void 0 ? void 0 : (_window$elementor$get = _window$elementor.getPreferences) === null || _window$elementor$get === void 0 ? void 0 : _window$elementor$get.call(_window$elementor, 'ui_theme')) || 'auto' + }, /*#__PURE__*/_react.default.createElement(_ui.Drawer, { + anchor: anchorPosition, + open: isOpen, + onClose: function onClose() { + return setIsOpen(false); + }, + ModalProps: { + style: { + // Above the WordPress Admin Top Bar. + zIndex: 999999 + } + } + }, /*#__PURE__*/_react.default.createElement(_ui.Box, { + sx: { + width: 320, + backgroundColor: 'background.default' + }, + role: "presentation" + }, /*#__PURE__*/_react.default.createElement(_whatsNewTopBar.WhatsNewTopBar, { + setIsOpen: setIsOpen + }), /*#__PURE__*/_react.default.createElement(_ui.Box, { + sx: { + padding: '16px' + } + }, /*#__PURE__*/_react.default.createElement(_whatsNewDrawerContent.WhatsNewDrawerContent, null)))))))); +}; +exports.WhatsNew = WhatsNew; +WhatsNew.propTypes = { + isOpen: PropTypes.bool.isRequired, + setIsOpen: PropTypes.func.isRequired, + setIsRead: PropTypes.func.isRequired, + anchorPosition: PropTypes.oneOf(['left', 'top', 'right', 'bottom']) +}; + +/***/ }), + +/***/ "../modules/notifications/assets/js/components/wrapper-with-link.js": +/*!**************************************************************************!*\ + !*** ../modules/notifications/assets/js/components/wrapper-with-link.js ***! + \**************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +/* provided dependency */ var PropTypes = __webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js"); + + +var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js"); +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.WrapperWithLink = void 0; +var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react")); +var _ui = __webpack_require__(/*! @elementor/ui */ "@elementor/ui"); +var WrapperWithLink = function WrapperWithLink(props) { + var link = props.link, + children = props.children; + if (!link) { + return children; + } + return /*#__PURE__*/_react.default.createElement(_ui.Link, { + href: link, + target: "_blank", + underline: "none", + color: "inherit", + sx: { + '&:hover': { + color: 'inherit' + } + } + }, children); +}; +exports.WrapperWithLink = WrapperWithLink; +WrapperWithLink.propTypes = { + link: PropTypes.string, + children: PropTypes.any.isRequired +}; + +/***/ }), + +/***/ "../modules/notifications/assets/js/icons/gift-icon.js": +/*!*************************************************************!*\ + !*** ../modules/notifications/assets/js/icons/gift-icon.js ***! + \*************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + + +var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js"); +var _typeof = __webpack_require__(/*! @babel/runtime/helpers/typeof */ "../node_modules/@babel/runtime/helpers/typeof.js"); +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.GiftIcon = void 0; +var _react = _interopRequireWildcard(__webpack_require__(/*! react */ "react")); +var _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ "../node_modules/@babel/runtime/helpers/extends.js")); +var _ui = __webpack_require__(/*! @elementor/ui */ "@elementor/ui"); +function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); } +function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; } +var GiftIcon = (0, _react.forwardRef)(function (props, ref) { + return /*#__PURE__*/_react.default.createElement(_ui.SvgIcon, (0, _extends2.default)({ + viewBox: "0 0 24 24" + }, props, { + ref: ref + }), /*#__PURE__*/_react.default.createElement("path", { + fillRule: "evenodd", + clipRule: "evenodd", + d: "M9.65527 4.84484C8.95951 4.07178 8.20923 3.73771 7.51306 3.74984L7.5 3.75007C7.03587 3.75007 6.59075 3.93433 6.26256 4.26252C5.93437 4.59071 5.75 5.03583 5.75 5.49995C5.75 5.96408 5.93437 6.4092 6.26256 6.73739C6.59075 7.06558 7.03587 7.24995 7.5 7.24995C7.50295 7.24995 7.5059 7.24997 7.50884 7.25001H11.0002C10.6592 6.26394 10.1939 5.44328 9.65527 4.84484ZM11.25 8.75001V11.25H4C3.86193 11.25 3.75 11.1381 3.75 11V9.00001C3.75 8.86193 3.86193 8.75001 4 8.75001H11.25ZM4.25 12.75H4C3.0335 12.75 2.25 11.9665 2.25 11V9.00001C2.25 8.03351 3.0335 7.25001 4 7.25001H4.76141C4.43004 6.73144 4.25 6.12498 4.25 5.49995C4.25 4.638 4.59241 3.81135 5.2019 3.20186C5.80984 2.59392 6.63384 2.2517 7.49342 2.24996C8.72414 2.23069 9.86213 2.83242 10.7702 3.84139C11.2484 4.37275 11.6608 5.01284 12 5.73103C12.3392 5.01284 12.7516 4.37275 13.2298 3.84139C14.1379 2.83242 15.2759 2.23069 16.5066 2.24996C17.3662 2.2517 18.1902 2.59392 18.7981 3.20186C19.4076 3.81135 19.75 4.638 19.75 5.49995C19.75 6.12498 19.57 6.73144 19.2386 7.25001H20C20.9665 7.25001 21.75 8.03351 21.75 9.00001V11C21.75 11.9665 20.9665 12.75 20 12.75H19.75V19C19.75 19.7294 19.4603 20.4288 18.9445 20.9445C18.4288 21.4603 17.7293 21.75 17 21.75H7C6.27065 21.75 5.57118 21.4603 5.05546 20.9445C4.53973 20.4288 4.25 19.7294 4.25 19V12.75ZM11.25 20.25H7C6.66848 20.25 6.35054 20.1183 6.11612 19.8839C5.8817 19.6495 5.75 19.3315 5.75 19V12.75H11.25V20.25ZM12.75 20.25H17C17.3315 20.25 17.6495 20.1183 17.8839 19.8839C18.1183 19.6495 18.25 19.3315 18.25 19V12.75H12.75V20.25ZM12.75 11.25V8.75001H20C20.1381 8.75001 20.25 8.86193 20.25 9.00001V11C20.25 11.1381 20.1381 11.25 20 11.25H12.75ZM16.4912 7.25001C16.4941 7.24997 16.497 7.24995 16.5 7.24995C16.9641 7.24995 17.4092 7.06558 17.7374 6.73739C18.0656 6.4092 18.25 5.96408 18.25 5.49995C18.25 5.03583 18.0656 4.59071 17.7374 4.26252C17.4092 3.93433 16.9641 3.74995 16.5 3.74995H16.4869C15.7908 3.73783 15.0405 4.07178 14.3447 4.84484C13.8061 5.44328 13.3408 6.26394 12.9998 7.25001H16.4912Z" + })); +}); +exports.GiftIcon = GiftIcon; + +/***/ }), + +/***/ "../modules/notifications/assets/js/icons/x-icon.js": +/*!**********************************************************!*\ + !*** ../modules/notifications/assets/js/icons/x-icon.js ***! + \**********************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + + +var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js"); +var _typeof = __webpack_require__(/*! @babel/runtime/helpers/typeof */ "../node_modules/@babel/runtime/helpers/typeof.js"); +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.XIcon = void 0; +var _react = _interopRequireWildcard(__webpack_require__(/*! react */ "react")); +var _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ "../node_modules/@babel/runtime/helpers/extends.js")); +var _ui = __webpack_require__(/*! @elementor/ui */ "@elementor/ui"); +function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); } +function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; } +var XIcon = (0, _react.forwardRef)(function (props, ref) { + return /*#__PURE__*/_react.default.createElement(_ui.SvgIcon, (0, _extends2.default)({ + viewBox: "0 0 24 24" + }, props, { + ref: ref + }), /*#__PURE__*/_react.default.createElement("path", { + fillRule: "evenodd", + clipRule: "evenodd", + d: "M18.5303 5.46967C18.8232 5.76256 18.8232 6.23744 18.5303 6.53033L6.53033 18.5303C6.23744 18.8232 5.76256 18.8232 5.46967 18.5303C5.17678 18.2374 5.17678 17.7626 5.46967 17.4697L17.4697 5.46967C17.7626 5.17678 18.2374 5.17678 18.5303 5.46967Z" + }), /*#__PURE__*/_react.default.createElement("path", { + fillRule: "evenodd", + clipRule: "evenodd", + d: "M5.46967 5.46967C5.76256 5.17678 6.23744 5.17678 6.53033 5.46967L18.5303 17.4697C18.8232 17.7626 18.8232 18.2374 18.5303 18.5303C18.2374 18.8232 17.7626 18.8232 17.4697 18.5303L5.46967 6.53033C5.17678 6.23744 5.17678 5.76256 5.46967 5.46967Z" + })); +}); +exports.XIcon = XIcon; + +/***/ }), + +/***/ "../node_modules/object-assign/index.js": +/*!**********************************************!*\ + !*** ../node_modules/object-assign/index.js ***! + \**********************************************/ +/***/ ((module) => { + +"use strict"; +/* +object-assign +(c) Sindre Sorhus +@license MIT +*/ + + +/* eslint-disable no-unused-vars */ +var getOwnPropertySymbols = Object.getOwnPropertySymbols; +var hasOwnProperty = Object.prototype.hasOwnProperty; +var propIsEnumerable = Object.prototype.propertyIsEnumerable; + +function toObject(val) { + if (val === null || val === undefined) { + throw new TypeError('Object.assign cannot be called with null or undefined'); + } + + return Object(val); +} + +function shouldUseNative() { + try { + if (!Object.assign) { + return false; + } + + // Detect buggy property enumeration order in older V8 versions. + + // https://bugs.chromium.org/p/v8/issues/detail?id=4118 + var test1 = new String('abc'); // eslint-disable-line no-new-wrappers + test1[5] = 'de'; + if (Object.getOwnPropertyNames(test1)[0] === '5') { + return false; + } + + // https://bugs.chromium.org/p/v8/issues/detail?id=3056 + var test2 = {}; + for (var i = 0; i < 10; i++) { + test2['_' + String.fromCharCode(i)] = i; + } + var order2 = Object.getOwnPropertyNames(test2).map(function (n) { + return test2[n]; + }); + if (order2.join('') !== '0123456789') { + return false; + } + + // https://bugs.chromium.org/p/v8/issues/detail?id=3056 + var test3 = {}; + 'abcdefghijklmnopqrst'.split('').forEach(function (letter) { + test3[letter] = letter; + }); + if (Object.keys(Object.assign({}, test3)).join('') !== + 'abcdefghijklmnopqrst') { + return false; + } + + return true; + } catch (err) { + // We don't expect any of the above to throw, but better to be safe. + return false; + } +} + +module.exports = shouldUseNative() ? Object.assign : function (target, source) { + var from; + var to = toObject(target); + var symbols; + + for (var s = 1; s < arguments.length; s++) { + from = Object(arguments[s]); + + for (var key in from) { + if (hasOwnProperty.call(from, key)) { + to[key] = from[key]; + } + } + + if (getOwnPropertySymbols) { + symbols = getOwnPropertySymbols(from); + for (var i = 0; i < symbols.length; i++) { + if (propIsEnumerable.call(from, symbols[i])) { + to[symbols[i]] = from[symbols[i]]; + } + } + } + } + + return to; +}; + + +/***/ }), + +/***/ "../node_modules/prop-types/checkPropTypes.js": +/*!****************************************************!*\ + !*** ../node_modules/prop-types/checkPropTypes.js ***! + \****************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; +/** + * Copyright (c) 2013-present, Facebook, Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + + + +var printWarning = function() {}; + +if (true) { + var ReactPropTypesSecret = __webpack_require__(/*! ./lib/ReactPropTypesSecret */ "../node_modules/prop-types/lib/ReactPropTypesSecret.js"); + var loggedTypeFailures = {}; + var has = __webpack_require__(/*! ./lib/has */ "../node_modules/prop-types/lib/has.js"); + + printWarning = function(text) { + var message = 'Warning: ' + text; + if (typeof console !== 'undefined') { + console.error(message); + } + try { + // --- Welcome to debugging React --- + // This error was thrown as a convenience so that you can use this stack + // to find the callsite that caused this warning to fire. + throw new Error(message); + } catch (x) { /**/ } + }; +} + +/** + * Assert that the values match with the type specs. + * Error messages are memorized and will only be shown once. + * + * @param {object} typeSpecs Map of name to a ReactPropType + * @param {object} values Runtime values that need to be type-checked + * @param {string} location e.g. "prop", "context", "child context" + * @param {string} componentName Name of the component for error messages. + * @param {?Function} getStack Returns the component stack. + * @private + */ +function checkPropTypes(typeSpecs, values, location, componentName, getStack) { + if (true) { + for (var typeSpecName in typeSpecs) { + if (has(typeSpecs, typeSpecName)) { + var error; + // Prop type validation may throw. In case they do, we don't want to + // fail the render phase where it didn't fail before. So we log it. + // After these have been cleaned up, we'll let them throw. + try { + // This is intentionally an invariant that gets caught. It's the same + // behavior as without this statement except with a better message. + if (typeof typeSpecs[typeSpecName] !== 'function') { + var err = Error( + (componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' + + 'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.' + + 'This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.' + ); + err.name = 'Invariant Violation'; + throw err; + } + error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret); + } catch (ex) { + error = ex; + } + if (error && !(error instanceof Error)) { + printWarning( + (componentName || 'React class') + ': type specification of ' + + location + ' `' + typeSpecName + '` is invalid; the type checker ' + + 'function must return `null` or an `Error` but returned a ' + typeof error + '. ' + + 'You may have forgotten to pass an argument to the type checker ' + + 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' + + 'shape all require an argument).' + ); + } + if (error instanceof Error && !(error.message in loggedTypeFailures)) { + // Only monitor this failure once because there tends to be a lot of the + // same error. + loggedTypeFailures[error.message] = true; + + var stack = getStack ? getStack() : ''; + + printWarning( + 'Failed ' + location + ' type: ' + error.message + (stack != null ? stack : '') + ); + } + } + } + } +} + +/** + * Resets warning cache when testing. + * + * @private + */ +checkPropTypes.resetWarningCache = function() { + if (true) { + loggedTypeFailures = {}; + } +} + +module.exports = checkPropTypes; + + +/***/ }), + +/***/ "../node_modules/prop-types/factoryWithTypeCheckers.js": +/*!*************************************************************!*\ + !*** ../node_modules/prop-types/factoryWithTypeCheckers.js ***! + \*************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; +/** + * Copyright (c) 2013-present, Facebook, Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + + + +var ReactIs = __webpack_require__(/*! react-is */ "../node_modules/prop-types/node_modules/react-is/index.js"); +var assign = __webpack_require__(/*! object-assign */ "../node_modules/object-assign/index.js"); + +var ReactPropTypesSecret = __webpack_require__(/*! ./lib/ReactPropTypesSecret */ "../node_modules/prop-types/lib/ReactPropTypesSecret.js"); +var has = __webpack_require__(/*! ./lib/has */ "../node_modules/prop-types/lib/has.js"); +var checkPropTypes = __webpack_require__(/*! ./checkPropTypes */ "../node_modules/prop-types/checkPropTypes.js"); + +var printWarning = function() {}; + +if (true) { + printWarning = function(text) { + var message = 'Warning: ' + text; + if (typeof console !== 'undefined') { + console.error(message); + } + try { + // --- Welcome to debugging React --- + // This error was thrown as a convenience so that you can use this stack + // to find the callsite that caused this warning to fire. + throw new Error(message); + } catch (x) {} + }; +} + +function emptyFunctionThatReturnsNull() { + return null; +} + +module.exports = function(isValidElement, throwOnDirectAccess) { + /* global Symbol */ + var ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator; + var FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec. + + /** + * Returns the iterator method function contained on the iterable object. + * + * Be sure to invoke the function with the iterable as context: + * + * var iteratorFn = getIteratorFn(myIterable); + * if (iteratorFn) { + * var iterator = iteratorFn.call(myIterable); + * ... + * } + * + * @param {?object} maybeIterable + * @return {?function} + */ + function getIteratorFn(maybeIterable) { + var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]); + if (typeof iteratorFn === 'function') { + return iteratorFn; + } + } + + /** + * Collection of methods that allow declaration and validation of props that are + * supplied to React components. Example usage: + * + * var Props = require('ReactPropTypes'); + * var MyArticle = React.createClass({ + * propTypes: { + * // An optional string prop named "description". + * description: Props.string, + * + * // A required enum prop named "category". + * category: Props.oneOf(['News','Photos']).isRequired, + * + * // A prop named "dialog" that requires an instance of Dialog. + * dialog: Props.instanceOf(Dialog).isRequired + * }, + * render: function() { ... } + * }); + * + * A more formal specification of how these methods are used: + * + * type := array|bool|func|object|number|string|oneOf([...])|instanceOf(...) + * decl := ReactPropTypes.{type}(.isRequired)? + * + * Each and every declaration produces a function with the same signature. This + * allows the creation of custom validation functions. For example: + * + * var MyLink = React.createClass({ + * propTypes: { + * // An optional string or URI prop named "href". + * href: function(props, propName, componentName) { + * var propValue = props[propName]; + * if (propValue != null && typeof propValue !== 'string' && + * !(propValue instanceof URI)) { + * return new Error( + * 'Expected a string or an URI for ' + propName + ' in ' + + * componentName + * ); + * } + * } + * }, + * render: function() {...} + * }); + * + * @internal + */ + + var ANONYMOUS = '<>'; + + // Important! + // Keep this list in sync with production version in `./factoryWithThrowingShims.js`. + var ReactPropTypes = { + array: createPrimitiveTypeChecker('array'), + bigint: createPrimitiveTypeChecker('bigint'), + bool: createPrimitiveTypeChecker('boolean'), + func: createPrimitiveTypeChecker('function'), + number: createPrimitiveTypeChecker('number'), + object: createPrimitiveTypeChecker('object'), + string: createPrimitiveTypeChecker('string'), + symbol: createPrimitiveTypeChecker('symbol'), + + any: createAnyTypeChecker(), + arrayOf: createArrayOfTypeChecker, + element: createElementTypeChecker(), + elementType: createElementTypeTypeChecker(), + instanceOf: createInstanceTypeChecker, + node: createNodeChecker(), + objectOf: createObjectOfTypeChecker, + oneOf: createEnumTypeChecker, + oneOfType: createUnionTypeChecker, + shape: createShapeTypeChecker, + exact: createStrictShapeTypeChecker, + }; + + /** + * inlined Object.is polyfill to avoid requiring consumers ship their own + * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is + */ + /*eslint-disable no-self-compare*/ + function is(x, y) { + // SameValue algorithm + if (x === y) { + // Steps 1-5, 7-10 + // Steps 6.b-6.e: +0 != -0 + return x !== 0 || 1 / x === 1 / y; + } else { + // Step 6.a: NaN == NaN + return x !== x && y !== y; + } + } + /*eslint-enable no-self-compare*/ + + /** + * We use an Error-like object for backward compatibility as people may call + * PropTypes directly and inspect their output. However, we don't use real + * Errors anymore. We don't inspect their stack anyway, and creating them + * is prohibitively expensive if they are created too often, such as what + * happens in oneOfType() for any type before the one that matched. + */ + function PropTypeError(message, data) { + this.message = message; + this.data = data && typeof data === 'object' ? data: {}; + this.stack = ''; + } + // Make `instanceof Error` still work for returned errors. + PropTypeError.prototype = Error.prototype; + + function createChainableTypeChecker(validate) { + if (true) { + var manualPropTypeCallCache = {}; + var manualPropTypeWarningCount = 0; + } + function checkType(isRequired, props, propName, componentName, location, propFullName, secret) { + componentName = componentName || ANONYMOUS; + propFullName = propFullName || propName; + + if (secret !== ReactPropTypesSecret) { + if (throwOnDirectAccess) { + // New behavior only for users of `prop-types` package + var err = new Error( + 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' + + 'Use `PropTypes.checkPropTypes()` to call them. ' + + 'Read more at http://fb.me/use-check-prop-types' + ); + err.name = 'Invariant Violation'; + throw err; + } else if ( true && typeof console !== 'undefined') { + // Old behavior for people using React.PropTypes + var cacheKey = componentName + ':' + propName; + if ( + !manualPropTypeCallCache[cacheKey] && + // Avoid spamming the console because they are often not actionable except for lib authors + manualPropTypeWarningCount < 3 + ) { + printWarning( + 'You are manually calling a React.PropTypes validation ' + + 'function for the `' + propFullName + '` prop on `' + componentName + '`. This is deprecated ' + + 'and will throw in the standalone `prop-types` package. ' + + 'You may be seeing this warning due to a third-party PropTypes ' + + 'library. See https://fb.me/react-warning-dont-call-proptypes ' + 'for details.' + ); + manualPropTypeCallCache[cacheKey] = true; + manualPropTypeWarningCount++; + } + } + } + if (props[propName] == null) { + if (isRequired) { + if (props[propName] === null) { + return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required ' + ('in `' + componentName + '`, but its value is `null`.')); + } + return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required in ' + ('`' + componentName + '`, but its value is `undefined`.')); + } + return null; + } else { + return validate(props, propName, componentName, location, propFullName); + } + } + + var chainedCheckType = checkType.bind(null, false); + chainedCheckType.isRequired = checkType.bind(null, true); + + return chainedCheckType; + } + + function createPrimitiveTypeChecker(expectedType) { + function validate(props, propName, componentName, location, propFullName, secret) { + var propValue = props[propName]; + var propType = getPropType(propValue); + if (propType !== expectedType) { + // `propValue` being instance of, say, date/regexp, pass the 'object' + // check, but we can offer a more precise error message here rather than + // 'of type `object`'. + var preciseType = getPreciseType(propValue); + + return new PropTypeError( + 'Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + preciseType + '` supplied to `' + componentName + '`, expected ') + ('`' + expectedType + '`.'), + {expectedType: expectedType} + ); + } + return null; + } + return createChainableTypeChecker(validate); + } + + function createAnyTypeChecker() { + return createChainableTypeChecker(emptyFunctionThatReturnsNull); + } + + function createArrayOfTypeChecker(typeChecker) { + function validate(props, propName, componentName, location, propFullName) { + if (typeof typeChecker !== 'function') { + return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside arrayOf.'); + } + var propValue = props[propName]; + if (!Array.isArray(propValue)) { + var propType = getPropType(propValue); + return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an array.')); + } + for (var i = 0; i < propValue.length; i++) { + var error = typeChecker(propValue, i, componentName, location, propFullName + '[' + i + ']', ReactPropTypesSecret); + if (error instanceof Error) { + return error; + } + } + return null; + } + return createChainableTypeChecker(validate); + } + + function createElementTypeChecker() { + function validate(props, propName, componentName, location, propFullName) { + var propValue = props[propName]; + if (!isValidElement(propValue)) { + var propType = getPropType(propValue); + return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement.')); + } + return null; + } + return createChainableTypeChecker(validate); + } + + function createElementTypeTypeChecker() { + function validate(props, propName, componentName, location, propFullName) { + var propValue = props[propName]; + if (!ReactIs.isValidElementType(propValue)) { + var propType = getPropType(propValue); + return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement type.')); + } + return null; + } + return createChainableTypeChecker(validate); + } + + function createInstanceTypeChecker(expectedClass) { + function validate(props, propName, componentName, location, propFullName) { + if (!(props[propName] instanceof expectedClass)) { + var expectedClassName = expectedClass.name || ANONYMOUS; + var actualClassName = getClassName(props[propName]); + return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + actualClassName + '` supplied to `' + componentName + '`, expected ') + ('instance of `' + expectedClassName + '`.')); + } + return null; + } + return createChainableTypeChecker(validate); + } + + function createEnumTypeChecker(expectedValues) { + if (!Array.isArray(expectedValues)) { + if (true) { + if (arguments.length > 1) { + printWarning( + 'Invalid arguments supplied to oneOf, expected an array, got ' + arguments.length + ' arguments. ' + + 'A common mistake is to write oneOf(x, y, z) instead of oneOf([x, y, z]).' + ); + } else { + printWarning('Invalid argument supplied to oneOf, expected an array.'); + } + } + return emptyFunctionThatReturnsNull; + } + + function validate(props, propName, componentName, location, propFullName) { + var propValue = props[propName]; + for (var i = 0; i < expectedValues.length; i++) { + if (is(propValue, expectedValues[i])) { + return null; + } + } + + var valuesString = JSON.stringify(expectedValues, function replacer(key, value) { + var type = getPreciseType(value); + if (type === 'symbol') { + return String(value); + } + return value; + }); + return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of value `' + String(propValue) + '` ' + ('supplied to `' + componentName + '`, expected one of ' + valuesString + '.')); + } + return createChainableTypeChecker(validate); + } + + function createObjectOfTypeChecker(typeChecker) { + function validate(props, propName, componentName, location, propFullName) { + if (typeof typeChecker !== 'function') { + return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside objectOf.'); + } + var propValue = props[propName]; + var propType = getPropType(propValue); + if (propType !== 'object') { + return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an object.')); + } + for (var key in propValue) { + if (has(propValue, key)) { + var error = typeChecker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret); + if (error instanceof Error) { + return error; + } + } + } + return null; + } + return createChainableTypeChecker(validate); + } + + function createUnionTypeChecker(arrayOfTypeCheckers) { + if (!Array.isArray(arrayOfTypeCheckers)) { + true ? printWarning('Invalid argument supplied to oneOfType, expected an instance of array.') : 0; + return emptyFunctionThatReturnsNull; + } + + for (var i = 0; i < arrayOfTypeCheckers.length; i++) { + var checker = arrayOfTypeCheckers[i]; + if (typeof checker !== 'function') { + printWarning( + 'Invalid argument supplied to oneOfType. Expected an array of check functions, but ' + + 'received ' + getPostfixForTypeWarning(checker) + ' at index ' + i + '.' + ); + return emptyFunctionThatReturnsNull; + } + } + + function validate(props, propName, componentName, location, propFullName) { + var expectedTypes = []; + for (var i = 0; i < arrayOfTypeCheckers.length; i++) { + var checker = arrayOfTypeCheckers[i]; + var checkerResult = checker(props, propName, componentName, location, propFullName, ReactPropTypesSecret); + if (checkerResult == null) { + return null; + } + if (checkerResult.data && has(checkerResult.data, 'expectedType')) { + expectedTypes.push(checkerResult.data.expectedType); + } + } + var expectedTypesMessage = (expectedTypes.length > 0) ? ', expected one of type [' + expectedTypes.join(', ') + ']': ''; + return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`' + expectedTypesMessage + '.')); + } + return createChainableTypeChecker(validate); + } + + function createNodeChecker() { + function validate(props, propName, componentName, location, propFullName) { + if (!isNode(props[propName])) { + return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`, expected a ReactNode.')); + } + return null; + } + return createChainableTypeChecker(validate); + } + + function invalidValidatorError(componentName, location, propFullName, key, type) { + return new PropTypeError( + (componentName || 'React class') + ': ' + location + ' type `' + propFullName + '.' + key + '` is invalid; ' + + 'it must be a function, usually from the `prop-types` package, but received `' + type + '`.' + ); + } + + function createShapeTypeChecker(shapeTypes) { + function validate(props, propName, componentName, location, propFullName) { + var propValue = props[propName]; + var propType = getPropType(propValue); + if (propType !== 'object') { + return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.')); + } + for (var key in shapeTypes) { + var checker = shapeTypes[key]; + if (typeof checker !== 'function') { + return invalidValidatorError(componentName, location, propFullName, key, getPreciseType(checker)); + } + var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret); + if (error) { + return error; + } + } + return null; + } + return createChainableTypeChecker(validate); + } + + function createStrictShapeTypeChecker(shapeTypes) { + function validate(props, propName, componentName, location, propFullName) { + var propValue = props[propName]; + var propType = getPropType(propValue); + if (propType !== 'object') { + return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.')); + } + // We need to check all keys in case some are required but missing from props. + var allKeys = assign({}, props[propName], shapeTypes); + for (var key in allKeys) { + var checker = shapeTypes[key]; + if (has(shapeTypes, key) && typeof checker !== 'function') { + return invalidValidatorError(componentName, location, propFullName, key, getPreciseType(checker)); + } + if (!checker) { + return new PropTypeError( + 'Invalid ' + location + ' `' + propFullName + '` key `' + key + '` supplied to `' + componentName + '`.' + + '\nBad object: ' + JSON.stringify(props[propName], null, ' ') + + '\nValid keys: ' + JSON.stringify(Object.keys(shapeTypes), null, ' ') + ); + } + var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret); + if (error) { + return error; + } + } + return null; + } + + return createChainableTypeChecker(validate); + } + + function isNode(propValue) { + switch (typeof propValue) { + case 'number': + case 'string': + case 'undefined': + return true; + case 'boolean': + return !propValue; + case 'object': + if (Array.isArray(propValue)) { + return propValue.every(isNode); + } + if (propValue === null || isValidElement(propValue)) { + return true; + } + + var iteratorFn = getIteratorFn(propValue); + if (iteratorFn) { + var iterator = iteratorFn.call(propValue); + var step; + if (iteratorFn !== propValue.entries) { + while (!(step = iterator.next()).done) { + if (!isNode(step.value)) { + return false; + } + } + } else { + // Iterator will provide entry [k,v] tuples rather than values. + while (!(step = iterator.next()).done) { + var entry = step.value; + if (entry) { + if (!isNode(entry[1])) { + return false; + } + } + } + } + } else { + return false; + } + + return true; + default: + return false; + } + } + + function isSymbol(propType, propValue) { + // Native Symbol. + if (propType === 'symbol') { + return true; + } + + // falsy value can't be a Symbol + if (!propValue) { + return false; + } + + // 19.4.3.5 Symbol.prototype[@@toStringTag] === 'Symbol' + if (propValue['@@toStringTag'] === 'Symbol') { + return true; + } + + // Fallback for non-spec compliant Symbols which are polyfilled. + if (typeof Symbol === 'function' && propValue instanceof Symbol) { + return true; + } + + return false; + } + + // Equivalent of `typeof` but with special handling for array and regexp. + function getPropType(propValue) { + var propType = typeof propValue; + if (Array.isArray(propValue)) { + return 'array'; + } + if (propValue instanceof RegExp) { + // Old webkits (at least until Android 4.0) return 'function' rather than + // 'object' for typeof a RegExp. We'll normalize this here so that /bla/ + // passes PropTypes.object. + return 'object'; + } + if (isSymbol(propType, propValue)) { + return 'symbol'; + } + return propType; + } + + // This handles more types than `getPropType`. Only used for error messages. + // See `createPrimitiveTypeChecker`. + function getPreciseType(propValue) { + if (typeof propValue === 'undefined' || propValue === null) { + return '' + propValue; + } + var propType = getPropType(propValue); + if (propType === 'object') { + if (propValue instanceof Date) { + return 'date'; + } else if (propValue instanceof RegExp) { + return 'regexp'; + } + } + return propType; + } + + // Returns a string that is postfixed to a warning about an invalid type. + // For example, "undefined" or "of type array" + function getPostfixForTypeWarning(value) { + var type = getPreciseType(value); + switch (type) { + case 'array': + case 'object': + return 'an ' + type; + case 'boolean': + case 'date': + case 'regexp': + return 'a ' + type; + default: + return type; + } + } + + // Returns class name of the object, if any. + function getClassName(propValue) { + if (!propValue.constructor || !propValue.constructor.name) { + return ANONYMOUS; + } + return propValue.constructor.name; + } + + ReactPropTypes.checkPropTypes = checkPropTypes; + ReactPropTypes.resetWarningCache = checkPropTypes.resetWarningCache; + ReactPropTypes.PropTypes = ReactPropTypes; + + return ReactPropTypes; +}; + + +/***/ }), + +/***/ "../node_modules/prop-types/index.js": +/*!*******************************************!*\ + !*** ../node_modules/prop-types/index.js ***! + \*******************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +/** + * Copyright (c) 2013-present, Facebook, Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +if (true) { + var ReactIs = __webpack_require__(/*! react-is */ "../node_modules/prop-types/node_modules/react-is/index.js"); + + // By explicitly using `prop-types` you are opting into new development behavior. + // http://fb.me/prop-types-in-prod + var throwOnDirectAccess = true; + module.exports = __webpack_require__(/*! ./factoryWithTypeCheckers */ "../node_modules/prop-types/factoryWithTypeCheckers.js")(ReactIs.isElement, throwOnDirectAccess); +} else {} + + +/***/ }), + +/***/ "../node_modules/prop-types/lib/ReactPropTypesSecret.js": +/*!**************************************************************!*\ + !*** ../node_modules/prop-types/lib/ReactPropTypesSecret.js ***! + \**************************************************************/ +/***/ ((module) => { + +"use strict"; +/** + * Copyright (c) 2013-present, Facebook, Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + + + +var ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED'; + +module.exports = ReactPropTypesSecret; + + +/***/ }), + +/***/ "../node_modules/prop-types/lib/has.js": +/*!*********************************************!*\ + !*** ../node_modules/prop-types/lib/has.js ***! + \*********************************************/ +/***/ ((module) => { + +module.exports = Function.call.bind(Object.prototype.hasOwnProperty); + + +/***/ }), + +/***/ "../node_modules/prop-types/node_modules/react-is/cjs/react-is.development.js": +/*!************************************************************************************!*\ + !*** ../node_modules/prop-types/node_modules/react-is/cjs/react-is.development.js ***! + \************************************************************************************/ +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; +/** @license React v16.13.1 + * react-is.development.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + + + + + +if (true) { + (function() { +'use strict'; + +// The Symbol used to tag the ReactElement-like types. If there is no native Symbol +// nor polyfill, then a plain number is used for performance. +var hasSymbol = typeof Symbol === 'function' && Symbol.for; +var REACT_ELEMENT_TYPE = hasSymbol ? Symbol.for('react.element') : 0xeac7; +var REACT_PORTAL_TYPE = hasSymbol ? Symbol.for('react.portal') : 0xeaca; +var REACT_FRAGMENT_TYPE = hasSymbol ? Symbol.for('react.fragment') : 0xeacb; +var REACT_STRICT_MODE_TYPE = hasSymbol ? Symbol.for('react.strict_mode') : 0xeacc; +var REACT_PROFILER_TYPE = hasSymbol ? Symbol.for('react.profiler') : 0xead2; +var REACT_PROVIDER_TYPE = hasSymbol ? Symbol.for('react.provider') : 0xeacd; +var REACT_CONTEXT_TYPE = hasSymbol ? Symbol.for('react.context') : 0xeace; // TODO: We don't use AsyncMode or ConcurrentMode anymore. They were temporary +// (unstable) APIs that have been removed. Can we remove the symbols? + +var REACT_ASYNC_MODE_TYPE = hasSymbol ? Symbol.for('react.async_mode') : 0xeacf; +var REACT_CONCURRENT_MODE_TYPE = hasSymbol ? Symbol.for('react.concurrent_mode') : 0xeacf; +var REACT_FORWARD_REF_TYPE = hasSymbol ? Symbol.for('react.forward_ref') : 0xead0; +var REACT_SUSPENSE_TYPE = hasSymbol ? Symbol.for('react.suspense') : 0xead1; +var REACT_SUSPENSE_LIST_TYPE = hasSymbol ? Symbol.for('react.suspense_list') : 0xead8; +var REACT_MEMO_TYPE = hasSymbol ? Symbol.for('react.memo') : 0xead3; +var REACT_LAZY_TYPE = hasSymbol ? Symbol.for('react.lazy') : 0xead4; +var REACT_BLOCK_TYPE = hasSymbol ? Symbol.for('react.block') : 0xead9; +var REACT_FUNDAMENTAL_TYPE = hasSymbol ? Symbol.for('react.fundamental') : 0xead5; +var REACT_RESPONDER_TYPE = hasSymbol ? Symbol.for('react.responder') : 0xead6; +var REACT_SCOPE_TYPE = hasSymbol ? Symbol.for('react.scope') : 0xead7; + +function isValidElementType(type) { + return typeof type === 'string' || typeof type === 'function' || // Note: its typeof might be other than 'symbol' or 'number' if it's a polyfill. + type === REACT_FRAGMENT_TYPE || type === REACT_CONCURRENT_MODE_TYPE || type === REACT_PROFILER_TYPE || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || typeof type === 'object' && type !== null && (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || type.$$typeof === REACT_FUNDAMENTAL_TYPE || type.$$typeof === REACT_RESPONDER_TYPE || type.$$typeof === REACT_SCOPE_TYPE || type.$$typeof === REACT_BLOCK_TYPE); +} + +function typeOf(object) { + if (typeof object === 'object' && object !== null) { + var $$typeof = object.$$typeof; + + switch ($$typeof) { + case REACT_ELEMENT_TYPE: + var type = object.type; + + switch (type) { + case REACT_ASYNC_MODE_TYPE: + case REACT_CONCURRENT_MODE_TYPE: + case REACT_FRAGMENT_TYPE: + case REACT_PROFILER_TYPE: + case REACT_STRICT_MODE_TYPE: + case REACT_SUSPENSE_TYPE: + return type; + + default: + var $$typeofType = type && type.$$typeof; + + switch ($$typeofType) { + case REACT_CONTEXT_TYPE: + case REACT_FORWARD_REF_TYPE: + case REACT_LAZY_TYPE: + case REACT_MEMO_TYPE: + case REACT_PROVIDER_TYPE: + return $$typeofType; + + default: + return $$typeof; + } + + } + + case REACT_PORTAL_TYPE: + return $$typeof; + } + } + + return undefined; +} // AsyncMode is deprecated along with isAsyncMode + +var AsyncMode = REACT_ASYNC_MODE_TYPE; +var ConcurrentMode = REACT_CONCURRENT_MODE_TYPE; +var ContextConsumer = REACT_CONTEXT_TYPE; +var ContextProvider = REACT_PROVIDER_TYPE; +var Element = REACT_ELEMENT_TYPE; +var ForwardRef = REACT_FORWARD_REF_TYPE; +var Fragment = REACT_FRAGMENT_TYPE; +var Lazy = REACT_LAZY_TYPE; +var Memo = REACT_MEMO_TYPE; +var Portal = REACT_PORTAL_TYPE; +var Profiler = REACT_PROFILER_TYPE; +var StrictMode = REACT_STRICT_MODE_TYPE; +var Suspense = REACT_SUSPENSE_TYPE; +var hasWarnedAboutDeprecatedIsAsyncMode = false; // AsyncMode should be deprecated + +function isAsyncMode(object) { + { + if (!hasWarnedAboutDeprecatedIsAsyncMode) { + hasWarnedAboutDeprecatedIsAsyncMode = true; // Using console['warn'] to evade Babel and ESLint + + console['warn']('The ReactIs.isAsyncMode() alias has been deprecated, ' + 'and will be removed in React 17+. Update your code to use ' + 'ReactIs.isConcurrentMode() instead. It has the exact same API.'); + } + } + + return isConcurrentMode(object) || typeOf(object) === REACT_ASYNC_MODE_TYPE; +} +function isConcurrentMode(object) { + return typeOf(object) === REACT_CONCURRENT_MODE_TYPE; +} +function isContextConsumer(object) { + return typeOf(object) === REACT_CONTEXT_TYPE; +} +function isContextProvider(object) { + return typeOf(object) === REACT_PROVIDER_TYPE; +} +function isElement(object) { + return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE; +} +function isForwardRef(object) { + return typeOf(object) === REACT_FORWARD_REF_TYPE; +} +function isFragment(object) { + return typeOf(object) === REACT_FRAGMENT_TYPE; +} +function isLazy(object) { + return typeOf(object) === REACT_LAZY_TYPE; +} +function isMemo(object) { + return typeOf(object) === REACT_MEMO_TYPE; +} +function isPortal(object) { + return typeOf(object) === REACT_PORTAL_TYPE; +} +function isProfiler(object) { + return typeOf(object) === REACT_PROFILER_TYPE; +} +function isStrictMode(object) { + return typeOf(object) === REACT_STRICT_MODE_TYPE; +} +function isSuspense(object) { + return typeOf(object) === REACT_SUSPENSE_TYPE; +} + +exports.AsyncMode = AsyncMode; +exports.ConcurrentMode = ConcurrentMode; +exports.ContextConsumer = ContextConsumer; +exports.ContextProvider = ContextProvider; +exports.Element = Element; +exports.ForwardRef = ForwardRef; +exports.Fragment = Fragment; +exports.Lazy = Lazy; +exports.Memo = Memo; +exports.Portal = Portal; +exports.Profiler = Profiler; +exports.StrictMode = StrictMode; +exports.Suspense = Suspense; +exports.isAsyncMode = isAsyncMode; +exports.isConcurrentMode = isConcurrentMode; +exports.isContextConsumer = isContextConsumer; +exports.isContextProvider = isContextProvider; +exports.isElement = isElement; +exports.isForwardRef = isForwardRef; +exports.isFragment = isFragment; +exports.isLazy = isLazy; +exports.isMemo = isMemo; +exports.isPortal = isPortal; +exports.isProfiler = isProfiler; +exports.isStrictMode = isStrictMode; +exports.isSuspense = isSuspense; +exports.isValidElementType = isValidElementType; +exports.typeOf = typeOf; + })(); +} + + +/***/ }), + +/***/ "../node_modules/prop-types/node_modules/react-is/index.js": +/*!*****************************************************************!*\ + !*** ../node_modules/prop-types/node_modules/react-is/index.js ***! + \*****************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + + +if (false) {} else { + module.exports = __webpack_require__(/*! ./cjs/react-is.development.js */ "../node_modules/prop-types/node_modules/react-is/cjs/react-is.development.js"); +} + + +/***/ }), + +/***/ "react": +/*!************************!*\ + !*** external "React" ***! + \************************/ +/***/ ((module) => { + +"use strict"; +module.exports = React; + +/***/ }), + +/***/ "@elementor/ui": +/*!*********************************!*\ + !*** external "elementorV2.ui" ***! + \*********************************/ +/***/ ((module) => { + +"use strict"; +module.exports = elementorV2.ui; + +/***/ }), + +/***/ "@wordpress/i18n": +/*!**************************!*\ + !*** external "wp.i18n" ***! + \**************************/ +/***/ ((module) => { + +"use strict"; +module.exports = wp.i18n; + +/***/ }), + +/***/ "../node_modules/@babel/runtime/helpers/arrayLikeToArray.js": +/*!******************************************************************!*\ + !*** ../node_modules/@babel/runtime/helpers/arrayLikeToArray.js ***! + \******************************************************************/ +/***/ ((module) => { + +function _arrayLikeToArray(arr, len) { + if (len == null || len > arr.length) len = arr.length; + for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; + return arr2; +} +module.exports = _arrayLikeToArray, module.exports.__esModule = true, module.exports["default"] = module.exports; + +/***/ }), + +/***/ "../node_modules/@babel/runtime/helpers/arrayWithHoles.js": +/*!****************************************************************!*\ + !*** ../node_modules/@babel/runtime/helpers/arrayWithHoles.js ***! + \****************************************************************/ +/***/ ((module) => { + +function _arrayWithHoles(arr) { + if (Array.isArray(arr)) return arr; +} +module.exports = _arrayWithHoles, module.exports.__esModule = true, module.exports["default"] = module.exports; + +/***/ }), + +/***/ "../node_modules/@babel/runtime/helpers/extends.js": +/*!*********************************************************!*\ + !*** ../node_modules/@babel/runtime/helpers/extends.js ***! + \*********************************************************/ +/***/ ((module) => { + +function _extends() { + module.exports = _extends = Object.assign ? Object.assign.bind() : function (target) { + for (var i = 1; i < arguments.length; i++) { + var source = arguments[i]; + for (var key in source) { + if (Object.prototype.hasOwnProperty.call(source, key)) { + target[key] = source[key]; + } + } + } + return target; + }, module.exports.__esModule = true, module.exports["default"] = module.exports; + return _extends.apply(this, arguments); +} +module.exports = _extends, module.exports.__esModule = true, module.exports["default"] = module.exports; + +/***/ }), + +/***/ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js": +/*!***********************************************************************!*\ + !*** ../node_modules/@babel/runtime/helpers/interopRequireDefault.js ***! + \***********************************************************************/ +/***/ ((module) => { + +function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + "default": obj + }; +} +module.exports = _interopRequireDefault, module.exports.__esModule = true, module.exports["default"] = module.exports; + +/***/ }), + +/***/ "../node_modules/@babel/runtime/helpers/iterableToArrayLimit.js": +/*!**********************************************************************!*\ + !*** ../node_modules/@babel/runtime/helpers/iterableToArrayLimit.js ***! + \**********************************************************************/ +/***/ ((module) => { + +function _iterableToArrayLimit(r, l) { + var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; + if (null != t) { + var e, + n, + i, + u, + a = [], + f = !0, + o = !1; + try { + if (i = (t = t.call(r)).next, 0 === l) { + if (Object(t) !== t) return; + f = !1; + } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); + } catch (r) { + o = !0, n = r; + } finally { + try { + if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; + } finally { + if (o) throw n; + } + } + return a; + } +} +module.exports = _iterableToArrayLimit, module.exports.__esModule = true, module.exports["default"] = module.exports; + +/***/ }), + +/***/ "../node_modules/@babel/runtime/helpers/nonIterableRest.js": +/*!*****************************************************************!*\ + !*** ../node_modules/@babel/runtime/helpers/nonIterableRest.js ***! + \*****************************************************************/ +/***/ ((module) => { + +function _nonIterableRest() { + throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); +} +module.exports = _nonIterableRest, module.exports.__esModule = true, module.exports["default"] = module.exports; + +/***/ }), + +/***/ "../node_modules/@babel/runtime/helpers/slicedToArray.js": +/*!***************************************************************!*\ + !*** ../node_modules/@babel/runtime/helpers/slicedToArray.js ***! + \***************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var arrayWithHoles = __webpack_require__(/*! ./arrayWithHoles.js */ "../node_modules/@babel/runtime/helpers/arrayWithHoles.js"); +var iterableToArrayLimit = __webpack_require__(/*! ./iterableToArrayLimit.js */ "../node_modules/@babel/runtime/helpers/iterableToArrayLimit.js"); +var unsupportedIterableToArray = __webpack_require__(/*! ./unsupportedIterableToArray.js */ "../node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js"); +var nonIterableRest = __webpack_require__(/*! ./nonIterableRest.js */ "../node_modules/@babel/runtime/helpers/nonIterableRest.js"); +function _slicedToArray(arr, i) { + return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest(); +} +module.exports = _slicedToArray, module.exports.__esModule = true, module.exports["default"] = module.exports; + +/***/ }), + +/***/ "../node_modules/@babel/runtime/helpers/typeof.js": +/*!********************************************************!*\ + !*** ../node_modules/@babel/runtime/helpers/typeof.js ***! + \********************************************************/ +/***/ ((module) => { + +function _typeof(o) { + "@babel/helpers - typeof"; + + return (module.exports = _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { + return typeof o; + } : function (o) { + return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; + }, module.exports.__esModule = true, module.exports["default"] = module.exports), _typeof(o); +} +module.exports = _typeof, module.exports.__esModule = true, module.exports["default"] = module.exports; + +/***/ }), + +/***/ "../node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js": +/*!****************************************************************************!*\ + !*** ../node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js ***! + \****************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var arrayLikeToArray = __webpack_require__(/*! ./arrayLikeToArray.js */ "../node_modules/@babel/runtime/helpers/arrayLikeToArray.js"); +function _unsupportedIterableToArray(o, minLen) { + if (!o) return; + if (typeof o === "string") return arrayLikeToArray(o, minLen); + var n = Object.prototype.toString.call(o).slice(8, -1); + if (n === "Object" && o.constructor) n = o.constructor.name; + if (n === "Map" || n === "Set") return Array.from(o); + if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen); +} +module.exports = _unsupportedIterableToArray, module.exports.__esModule = true, module.exports["default"] = module.exports; + +/***/ }), + +/***/ "../node_modules/@tanstack/query-core/build/modern/focusManager.cjs": +/*!**************************************************************************!*\ + !*** ../node_modules/@tanstack/query-core/build/modern/focusManager.cjs ***! + \**************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/focusManager.ts +var focusManager_exports = {}; +__export(focusManager_exports, { + FocusManager: () => FocusManager, + focusManager: () => focusManager +}); +module.exports = __toCommonJS(focusManager_exports); +var import_subscribable = __webpack_require__(/*! ./subscribable.cjs */ "../node_modules/@tanstack/query-core/build/modern/subscribable.cjs"); +var import_utils = __webpack_require__(/*! ./utils.cjs */ "../node_modules/@tanstack/query-core/build/modern/utils.cjs"); +var FocusManager = class extends import_subscribable.Subscribable { + #focused; + #cleanup; + #setup; + constructor() { + super(); + this.#setup = (onFocus) => { + if (!import_utils.isServer && window.addEventListener) { + const listener = () => onFocus(); + window.addEventListener("visibilitychange", listener, false); + return () => { + window.removeEventListener("visibilitychange", listener); + }; + } + return; + }; + } + onSubscribe() { + if (!this.#cleanup) { + this.setEventListener(this.#setup); + } + } + onUnsubscribe() { + if (!this.hasListeners()) { + this.#cleanup?.(); + this.#cleanup = void 0; + } + } + setEventListener(setup) { + this.#setup = setup; + this.#cleanup?.(); + this.#cleanup = setup((focused) => { + if (typeof focused === "boolean") { + this.setFocused(focused); + } else { + this.onFocus(); + } + }); + } + setFocused(focused) { + const changed = this.#focused !== focused; + if (changed) { + this.#focused = focused; + this.onFocus(); + } + } + onFocus() { + this.listeners.forEach((listener) => { + listener(); + }); + } + isFocused() { + if (typeof this.#focused === "boolean") { + return this.#focused; + } + return globalThis.document?.visibilityState !== "hidden"; + } +}; +var focusManager = new FocusManager(); +// Annotate the CommonJS export names for ESM import in node: +0 && (0); +//# sourceMappingURL=focusManager.cjs.map + +/***/ }), + +/***/ "../node_modules/@tanstack/query-core/build/modern/hydration.cjs": +/*!***********************************************************************!*\ + !*** ../node_modules/@tanstack/query-core/build/modern/hydration.cjs ***! + \***********************************************************************/ +/***/ ((module) => { + +"use strict"; + +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/hydration.ts +var hydration_exports = {}; +__export(hydration_exports, { + defaultShouldDehydrateMutation: () => defaultShouldDehydrateMutation, + defaultShouldDehydrateQuery: () => defaultShouldDehydrateQuery, + dehydrate: () => dehydrate, + hydrate: () => hydrate +}); +module.exports = __toCommonJS(hydration_exports); +function dehydrateMutation(mutation) { + return { + mutationKey: mutation.options.mutationKey, + state: mutation.state, + ...mutation.meta && { meta: mutation.meta } + }; +} +function dehydrateQuery(query) { + return { + state: query.state, + queryKey: query.queryKey, + queryHash: query.queryHash, + ...query.meta && { meta: query.meta } + }; +} +function defaultShouldDehydrateMutation(mutation) { + return mutation.state.isPaused; +} +function defaultShouldDehydrateQuery(query) { + return query.state.status === "success"; +} +function dehydrate(client, options = {}) { + const filterMutation = options.shouldDehydrateMutation ?? defaultShouldDehydrateMutation; + const mutations = client.getMutationCache().getAll().flatMap( + (mutation) => filterMutation(mutation) ? [dehydrateMutation(mutation)] : [] + ); + const filterQuery = options.shouldDehydrateQuery ?? defaultShouldDehydrateQuery; + const queries = client.getQueryCache().getAll().flatMap((query) => filterQuery(query) ? [dehydrateQuery(query)] : []); + return { mutations, queries }; +} +function hydrate(client, dehydratedState, options) { + if (typeof dehydratedState !== "object" || dehydratedState === null) { + return; + } + const mutationCache = client.getMutationCache(); + const queryCache = client.getQueryCache(); + const mutations = dehydratedState.mutations || []; + const queries = dehydratedState.queries || []; + mutations.forEach((dehydratedMutation) => { + mutationCache.build( + client, + { + ...options?.defaultOptions?.mutations, + mutationKey: dehydratedMutation.mutationKey, + meta: dehydratedMutation.meta + }, + dehydratedMutation.state + ); + }); + queries.forEach(({ queryKey, state, queryHash, meta }) => { + const query = queryCache.get(queryHash); + if (query) { + if (query.state.dataUpdatedAt < state.dataUpdatedAt) { + const { fetchStatus: _ignored, ...dehydratedQueryState } = state; + query.setState(dehydratedQueryState); + } + return; + } + queryCache.build( + client, + { + ...options?.defaultOptions?.queries, + queryKey, + queryHash, + meta + }, + // Reset fetch status to idle to avoid + // query being stuck in fetching state upon hydration + { + ...state, + fetchStatus: "idle" + } + ); + }); +} +// Annotate the CommonJS export names for ESM import in node: +0 && (0); +//# sourceMappingURL=hydration.cjs.map + +/***/ }), + +/***/ "../node_modules/@tanstack/query-core/build/modern/index.cjs": +/*!*******************************************************************!*\ + !*** ../node_modules/@tanstack/query-core/build/modern/index.cjs ***! + \*******************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default")); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/index.ts +var src_exports = {}; +__export(src_exports, { + CancelledError: () => import_retryer.CancelledError, + InfiniteQueryObserver: () => import_infiniteQueryObserver.InfiniteQueryObserver, + MutationCache: () => import_mutationCache.MutationCache, + MutationObserver: () => import_mutationObserver.MutationObserver, + QueriesObserver: () => import_queriesObserver.QueriesObserver, + Query: () => import_query.Query, + QueryCache: () => import_queryCache.QueryCache, + QueryClient: () => import_queryClient.QueryClient, + QueryObserver: () => import_queryObserver.QueryObserver, + defaultShouldDehydrateMutation: () => import_hydration.defaultShouldDehydrateMutation, + defaultShouldDehydrateQuery: () => import_hydration.defaultShouldDehydrateQuery, + dehydrate: () => import_hydration.dehydrate, + focusManager: () => import_focusManager.focusManager, + hashKey: () => import_utils.hashKey, + hydrate: () => import_hydration.hydrate, + isCancelledError: () => import_retryer2.isCancelledError, + isServer: () => import_utils.isServer, + keepPreviousData: () => import_utils.keepPreviousData, + matchQuery: () => import_utils.matchQuery, + notifyManager: () => import_notifyManager.notifyManager, + onlineManager: () => import_onlineManager.onlineManager, + replaceEqualDeep: () => import_utils.replaceEqualDeep +}); +module.exports = __toCommonJS(src_exports); +var import_retryer = __webpack_require__(/*! ./retryer.cjs */ "../node_modules/@tanstack/query-core/build/modern/retryer.cjs"); +var import_queryCache = __webpack_require__(/*! ./queryCache.cjs */ "../node_modules/@tanstack/query-core/build/modern/queryCache.cjs"); +var import_queryClient = __webpack_require__(/*! ./queryClient.cjs */ "../node_modules/@tanstack/query-core/build/modern/queryClient.cjs"); +var import_queryObserver = __webpack_require__(/*! ./queryObserver.cjs */ "../node_modules/@tanstack/query-core/build/modern/queryObserver.cjs"); +var import_queriesObserver = __webpack_require__(/*! ./queriesObserver.cjs */ "../node_modules/@tanstack/query-core/build/modern/queriesObserver.cjs"); +var import_infiniteQueryObserver = __webpack_require__(/*! ./infiniteQueryObserver.cjs */ "../node_modules/@tanstack/query-core/build/modern/infiniteQueryObserver.cjs"); +var import_mutationCache = __webpack_require__(/*! ./mutationCache.cjs */ "../node_modules/@tanstack/query-core/build/modern/mutationCache.cjs"); +var import_mutationObserver = __webpack_require__(/*! ./mutationObserver.cjs */ "../node_modules/@tanstack/query-core/build/modern/mutationObserver.cjs"); +var import_notifyManager = __webpack_require__(/*! ./notifyManager.cjs */ "../node_modules/@tanstack/query-core/build/modern/notifyManager.cjs"); +var import_focusManager = __webpack_require__(/*! ./focusManager.cjs */ "../node_modules/@tanstack/query-core/build/modern/focusManager.cjs"); +var import_onlineManager = __webpack_require__(/*! ./onlineManager.cjs */ "../node_modules/@tanstack/query-core/build/modern/onlineManager.cjs"); +var import_utils = __webpack_require__(/*! ./utils.cjs */ "../node_modules/@tanstack/query-core/build/modern/utils.cjs"); +var import_retryer2 = __webpack_require__(/*! ./retryer.cjs */ "../node_modules/@tanstack/query-core/build/modern/retryer.cjs"); +var import_hydration = __webpack_require__(/*! ./hydration.cjs */ "../node_modules/@tanstack/query-core/build/modern/hydration.cjs"); +__reExport(src_exports, __webpack_require__(/*! ./types.cjs */ "../node_modules/@tanstack/query-core/build/modern/types.cjs"), module.exports); +var import_query = __webpack_require__(/*! ./query.cjs */ "../node_modules/@tanstack/query-core/build/modern/query.cjs"); +// Annotate the CommonJS export names for ESM import in node: +0 && (0); +//# sourceMappingURL=index.cjs.map + +/***/ }), + +/***/ "../node_modules/@tanstack/query-core/build/modern/infiniteQueryBehavior.cjs": +/*!***********************************************************************************!*\ + !*** ../node_modules/@tanstack/query-core/build/modern/infiniteQueryBehavior.cjs ***! + \***********************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/infiniteQueryBehavior.ts +var infiniteQueryBehavior_exports = {}; +__export(infiniteQueryBehavior_exports, { + hasNextPage: () => hasNextPage, + hasPreviousPage: () => hasPreviousPage, + infiniteQueryBehavior: () => infiniteQueryBehavior +}); +module.exports = __toCommonJS(infiniteQueryBehavior_exports); +var import_utils = __webpack_require__(/*! ./utils.cjs */ "../node_modules/@tanstack/query-core/build/modern/utils.cjs"); +function infiniteQueryBehavior(pages) { + return { + onFetch: (context, query) => { + const fetchFn = async () => { + const options = context.options; + const direction = context.fetchOptions?.meta?.fetchMore?.direction; + const oldPages = context.state.data?.pages || []; + const oldPageParams = context.state.data?.pageParams || []; + const empty = { pages: [], pageParams: [] }; + let cancelled = false; + const addSignalProperty = (object) => { + Object.defineProperty(object, "signal", { + enumerable: true, + get: () => { + if (context.signal.aborted) { + cancelled = true; + } else { + context.signal.addEventListener("abort", () => { + cancelled = true; + }); + } + return context.signal; + } + }); + }; + const queryFn = context.options.queryFn || (() => Promise.reject( + new Error(`Missing queryFn: '${context.options.queryHash}'`) + )); + const fetchPage = async (data, param, previous) => { + if (cancelled) { + return Promise.reject(); + } + if (param == null && data.pages.length) { + return Promise.resolve(data); + } + const queryFnContext = { + queryKey: context.queryKey, + pageParam: param, + direction: previous ? "backward" : "forward", + meta: context.options.meta + }; + addSignalProperty(queryFnContext); + const page = await queryFn( + queryFnContext + ); + const { maxPages } = context.options; + const addTo = previous ? import_utils.addToStart : import_utils.addToEnd; + return { + pages: addTo(data.pages, page, maxPages), + pageParams: addTo(data.pageParams, param, maxPages) + }; + }; + let result; + if (direction && oldPages.length) { + const previous = direction === "backward"; + const pageParamFn = previous ? getPreviousPageParam : getNextPageParam; + const oldData = { + pages: oldPages, + pageParams: oldPageParams + }; + const param = pageParamFn(options, oldData); + result = await fetchPage(oldData, param, previous); + } else { + result = await fetchPage( + empty, + oldPageParams[0] ?? options.initialPageParam + ); + const remainingPages = pages ?? oldPages.length; + for (let i = 1; i < remainingPages; i++) { + const param = getNextPageParam(options, result); + result = await fetchPage(result, param); + } + } + return result; + }; + if (context.options.persister) { + context.fetchFn = () => { + return context.options.persister?.( + fetchFn, + { + queryKey: context.queryKey, + meta: context.options.meta, + signal: context.signal + }, + query + ); + }; + } else { + context.fetchFn = fetchFn; + } + } + }; +} +function getNextPageParam(options, { pages, pageParams }) { + const lastIndex = pages.length - 1; + return options.getNextPageParam( + pages[lastIndex], + pages, + pageParams[lastIndex], + pageParams + ); +} +function getPreviousPageParam(options, { pages, pageParams }) { + return options.getPreviousPageParam?.( + pages[0], + pages, + pageParams[0], + pageParams + ); +} +function hasNextPage(options, data) { + if (!data) + return false; + return getNextPageParam(options, data) != null; +} +function hasPreviousPage(options, data) { + if (!data || !options.getPreviousPageParam) + return false; + return getPreviousPageParam(options, data) != null; +} +// Annotate the CommonJS export names for ESM import in node: +0 && (0); +//# sourceMappingURL=infiniteQueryBehavior.cjs.map + +/***/ }), + +/***/ "../node_modules/@tanstack/query-core/build/modern/infiniteQueryObserver.cjs": +/*!***********************************************************************************!*\ + !*** ../node_modules/@tanstack/query-core/build/modern/infiniteQueryObserver.cjs ***! + \***********************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/infiniteQueryObserver.ts +var infiniteQueryObserver_exports = {}; +__export(infiniteQueryObserver_exports, { + InfiniteQueryObserver: () => InfiniteQueryObserver +}); +module.exports = __toCommonJS(infiniteQueryObserver_exports); +var import_queryObserver = __webpack_require__(/*! ./queryObserver.cjs */ "../node_modules/@tanstack/query-core/build/modern/queryObserver.cjs"); +var import_infiniteQueryBehavior = __webpack_require__(/*! ./infiniteQueryBehavior.cjs */ "../node_modules/@tanstack/query-core/build/modern/infiniteQueryBehavior.cjs"); +var InfiniteQueryObserver = class extends import_queryObserver.QueryObserver { + // eslint-disable-next-line @typescript-eslint/no-useless-constructor + constructor(client, options) { + super(client, options); + } + bindMethods() { + super.bindMethods(); + this.fetchNextPage = this.fetchNextPage.bind(this); + this.fetchPreviousPage = this.fetchPreviousPage.bind(this); + } + setOptions(options, notifyOptions) { + super.setOptions( + { + ...options, + behavior: (0, import_infiniteQueryBehavior.infiniteQueryBehavior)() + }, + notifyOptions + ); + } + getOptimisticResult(options) { + options.behavior = (0, import_infiniteQueryBehavior.infiniteQueryBehavior)(); + return super.getOptimisticResult(options); + } + fetchNextPage(options) { + return this.fetch({ + ...options, + meta: { + fetchMore: { direction: "forward" } + } + }); + } + fetchPreviousPage(options) { + return this.fetch({ + ...options, + meta: { + fetchMore: { direction: "backward" } + } + }); + } + createResult(query, options) { + const { state } = query; + const result = super.createResult(query, options); + const { isFetching, isRefetching } = result; + const isFetchingNextPage = isFetching && state.fetchMeta?.fetchMore?.direction === "forward"; + const isFetchingPreviousPage = isFetching && state.fetchMeta?.fetchMore?.direction === "backward"; + return { + ...result, + fetchNextPage: this.fetchNextPage, + fetchPreviousPage: this.fetchPreviousPage, + hasNextPage: (0, import_infiniteQueryBehavior.hasNextPage)(options, state.data), + hasPreviousPage: (0, import_infiniteQueryBehavior.hasPreviousPage)(options, state.data), + isFetchingNextPage, + isFetchingPreviousPage, + isRefetching: isRefetching && !isFetchingNextPage && !isFetchingPreviousPage + }; + } +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (0); +//# sourceMappingURL=infiniteQueryObserver.cjs.map + +/***/ }), + +/***/ "../node_modules/@tanstack/query-core/build/modern/mutation.cjs": +/*!**********************************************************************!*\ + !*** ../node_modules/@tanstack/query-core/build/modern/mutation.cjs ***! + \**********************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/mutation.ts +var mutation_exports = {}; +__export(mutation_exports, { + Mutation: () => Mutation, + getDefaultState: () => getDefaultState +}); +module.exports = __toCommonJS(mutation_exports); +var import_notifyManager = __webpack_require__(/*! ./notifyManager.cjs */ "../node_modules/@tanstack/query-core/build/modern/notifyManager.cjs"); +var import_removable = __webpack_require__(/*! ./removable.cjs */ "../node_modules/@tanstack/query-core/build/modern/removable.cjs"); +var import_retryer = __webpack_require__(/*! ./retryer.cjs */ "../node_modules/@tanstack/query-core/build/modern/retryer.cjs"); +var Mutation = class extends import_removable.Removable { + constructor(config) { + super(); + this.mutationId = config.mutationId; + this.#defaultOptions = config.defaultOptions; + this.#mutationCache = config.mutationCache; + this.#observers = []; + this.state = config.state || getDefaultState(); + this.setOptions(config.options); + this.scheduleGc(); + } + #observers; + #defaultOptions; + #mutationCache; + #retryer; + setOptions(options) { + this.options = { ...this.#defaultOptions, ...options }; + this.updateGcTime(this.options.gcTime); + } + get meta() { + return this.options.meta; + } + addObserver(observer) { + if (!this.#observers.includes(observer)) { + this.#observers.push(observer); + this.clearGcTimeout(); + this.#mutationCache.notify({ + type: "observerAdded", + mutation: this, + observer + }); + } + } + removeObserver(observer) { + this.#observers = this.#observers.filter((x) => x !== observer); + this.scheduleGc(); + this.#mutationCache.notify({ + type: "observerRemoved", + mutation: this, + observer + }); + } + optionalRemove() { + if (!this.#observers.length) { + if (this.state.status === "pending") { + this.scheduleGc(); + } else { + this.#mutationCache.remove(this); + } + } + } + continue() { + return this.#retryer?.continue() ?? // continuing a mutation assumes that variables are set, mutation must have been dehydrated before + this.execute(this.state.variables); + } + async execute(variables) { + const executeMutation = () => { + this.#retryer = (0, import_retryer.createRetryer)({ + fn: () => { + if (!this.options.mutationFn) { + return Promise.reject(new Error("No mutationFn found")); + } + return this.options.mutationFn(variables); + }, + onFail: (failureCount, error) => { + this.#dispatch({ type: "failed", failureCount, error }); + }, + onPause: () => { + this.#dispatch({ type: "pause" }); + }, + onContinue: () => { + this.#dispatch({ type: "continue" }); + }, + retry: this.options.retry ?? 0, + retryDelay: this.options.retryDelay, + networkMode: this.options.networkMode + }); + return this.#retryer.promise; + }; + const restored = this.state.status === "pending"; + try { + if (!restored) { + this.#dispatch({ type: "pending", variables }); + await this.#mutationCache.config.onMutate?.( + variables, + this + ); + const context = await this.options.onMutate?.(variables); + if (context !== this.state.context) { + this.#dispatch({ + type: "pending", + context, + variables + }); + } + } + const data = await executeMutation(); + await this.#mutationCache.config.onSuccess?.( + data, + variables, + this.state.context, + this + ); + await this.options.onSuccess?.(data, variables, this.state.context); + await this.#mutationCache.config.onSettled?.( + data, + null, + this.state.variables, + this.state.context, + this + ); + await this.options.onSettled?.(data, null, variables, this.state.context); + this.#dispatch({ type: "success", data }); + return data; + } catch (error) { + try { + await this.#mutationCache.config.onError?.( + error, + variables, + this.state.context, + this + ); + await this.options.onError?.( + error, + variables, + this.state.context + ); + await this.#mutationCache.config.onSettled?.( + void 0, + error, + this.state.variables, + this.state.context, + this + ); + await this.options.onSettled?.( + void 0, + error, + variables, + this.state.context + ); + throw error; + } finally { + this.#dispatch({ type: "error", error }); + } + } + } + #dispatch(action) { + const reducer = (state) => { + switch (action.type) { + case "failed": + return { + ...state, + failureCount: action.failureCount, + failureReason: action.error + }; + case "pause": + return { + ...state, + isPaused: true + }; + case "continue": + return { + ...state, + isPaused: false + }; + case "pending": + return { + ...state, + context: action.context, + data: void 0, + failureCount: 0, + failureReason: null, + error: null, + isPaused: !(0, import_retryer.canFetch)(this.options.networkMode), + status: "pending", + variables: action.variables, + submittedAt: Date.now() + }; + case "success": + return { + ...state, + data: action.data, + failureCount: 0, + failureReason: null, + error: null, + status: "success", + isPaused: false + }; + case "error": + return { + ...state, + data: void 0, + error: action.error, + failureCount: state.failureCount + 1, + failureReason: action.error, + isPaused: false, + status: "error" + }; + } + }; + this.state = reducer(this.state); + import_notifyManager.notifyManager.batch(() => { + this.#observers.forEach((observer) => { + observer.onMutationUpdate(action); + }); + this.#mutationCache.notify({ + mutation: this, + type: "updated", + action + }); + }); + } +}; +function getDefaultState() { + return { + context: void 0, + data: void 0, + error: null, + failureCount: 0, + failureReason: null, + isPaused: false, + status: "idle", + variables: void 0, + submittedAt: 0 + }; +} +// Annotate the CommonJS export names for ESM import in node: +0 && (0); +//# sourceMappingURL=mutation.cjs.map + +/***/ }), + +/***/ "../node_modules/@tanstack/query-core/build/modern/mutationCache.cjs": +/*!***************************************************************************!*\ + !*** ../node_modules/@tanstack/query-core/build/modern/mutationCache.cjs ***! + \***************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/mutationCache.ts +var mutationCache_exports = {}; +__export(mutationCache_exports, { + MutationCache: () => MutationCache +}); +module.exports = __toCommonJS(mutationCache_exports); +var import_notifyManager = __webpack_require__(/*! ./notifyManager.cjs */ "../node_modules/@tanstack/query-core/build/modern/notifyManager.cjs"); +var import_mutation = __webpack_require__(/*! ./mutation.cjs */ "../node_modules/@tanstack/query-core/build/modern/mutation.cjs"); +var import_utils = __webpack_require__(/*! ./utils.cjs */ "../node_modules/@tanstack/query-core/build/modern/utils.cjs"); +var import_subscribable = __webpack_require__(/*! ./subscribable.cjs */ "../node_modules/@tanstack/query-core/build/modern/subscribable.cjs"); +var MutationCache = class extends import_subscribable.Subscribable { + constructor(config = {}) { + super(); + this.config = config; + this.#mutations = []; + this.#mutationId = 0; + } + #mutations; + #mutationId; + #resuming; + build(client, options, state) { + const mutation = new import_mutation.Mutation({ + mutationCache: this, + mutationId: ++this.#mutationId, + options: client.defaultMutationOptions(options), + state + }); + this.add(mutation); + return mutation; + } + add(mutation) { + this.#mutations.push(mutation); + this.notify({ type: "added", mutation }); + } + remove(mutation) { + this.#mutations = this.#mutations.filter((x) => x !== mutation); + this.notify({ type: "removed", mutation }); + } + clear() { + import_notifyManager.notifyManager.batch(() => { + this.#mutations.forEach((mutation) => { + this.remove(mutation); + }); + }); + } + getAll() { + return this.#mutations; + } + find(filters) { + const defaultedFilters = { exact: true, ...filters }; + return this.#mutations.find( + (mutation) => (0, import_utils.matchMutation)(defaultedFilters, mutation) + ); + } + findAll(filters = {}) { + return this.#mutations.filter( + (mutation) => (0, import_utils.matchMutation)(filters, mutation) + ); + } + notify(event) { + import_notifyManager.notifyManager.batch(() => { + this.listeners.forEach((listener) => { + listener(event); + }); + }); + } + resumePausedMutations() { + this.#resuming = (this.#resuming ?? Promise.resolve()).then(() => { + const pausedMutations = this.#mutations.filter((x) => x.state.isPaused); + return import_notifyManager.notifyManager.batch( + () => pausedMutations.reduce( + (promise, mutation) => promise.then(() => mutation.continue().catch(import_utils.noop)), + Promise.resolve() + ) + ); + }).then(() => { + this.#resuming = void 0; + }); + return this.#resuming; + } +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (0); +//# sourceMappingURL=mutationCache.cjs.map + +/***/ }), + +/***/ "../node_modules/@tanstack/query-core/build/modern/mutationObserver.cjs": +/*!******************************************************************************!*\ + !*** ../node_modules/@tanstack/query-core/build/modern/mutationObserver.cjs ***! + \******************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/mutationObserver.ts +var mutationObserver_exports = {}; +__export(mutationObserver_exports, { + MutationObserver: () => MutationObserver +}); +module.exports = __toCommonJS(mutationObserver_exports); +var import_mutation = __webpack_require__(/*! ./mutation.cjs */ "../node_modules/@tanstack/query-core/build/modern/mutation.cjs"); +var import_notifyManager = __webpack_require__(/*! ./notifyManager.cjs */ "../node_modules/@tanstack/query-core/build/modern/notifyManager.cjs"); +var import_subscribable = __webpack_require__(/*! ./subscribable.cjs */ "../node_modules/@tanstack/query-core/build/modern/subscribable.cjs"); +var import_utils = __webpack_require__(/*! ./utils.cjs */ "../node_modules/@tanstack/query-core/build/modern/utils.cjs"); +var MutationObserver = class extends import_subscribable.Subscribable { + constructor(client, options) { + super(); + this.#currentResult = void 0; + this.#client = client; + this.setOptions(options); + this.bindMethods(); + this.#updateResult(); + } + #client; + #currentResult; + #currentMutation; + #mutateOptions; + bindMethods() { + this.mutate = this.mutate.bind(this); + this.reset = this.reset.bind(this); + } + setOptions(options) { + const prevOptions = this.options; + this.options = this.#client.defaultMutationOptions(options); + if (!(0, import_utils.shallowEqualObjects)(prevOptions, this.options)) { + this.#client.getMutationCache().notify({ + type: "observerOptionsUpdated", + mutation: this.#currentMutation, + observer: this + }); + } + this.#currentMutation?.setOptions(this.options); + } + onUnsubscribe() { + if (!this.hasListeners()) { + this.#currentMutation?.removeObserver(this); + } + } + onMutationUpdate(action) { + this.#updateResult(); + this.#notify(action); + } + getCurrentResult() { + return this.#currentResult; + } + reset() { + this.#currentMutation = void 0; + this.#updateResult(); + this.#notify(); + } + mutate(variables, options) { + this.#mutateOptions = options; + this.#currentMutation?.removeObserver(this); + this.#currentMutation = this.#client.getMutationCache().build(this.#client, this.options); + this.#currentMutation.addObserver(this); + return this.#currentMutation.execute(variables); + } + #updateResult() { + const state = this.#currentMutation?.state ?? (0, import_mutation.getDefaultState)(); + this.#currentResult = { + ...state, + isPending: state.status === "pending", + isSuccess: state.status === "success", + isError: state.status === "error", + isIdle: state.status === "idle", + mutate: this.mutate, + reset: this.reset + }; + } + #notify(action) { + import_notifyManager.notifyManager.batch(() => { + if (this.#mutateOptions && this.hasListeners()) { + if (action?.type === "success") { + this.#mutateOptions.onSuccess?.( + action.data, + this.#currentResult.variables, + this.#currentResult.context + ); + this.#mutateOptions.onSettled?.( + action.data, + null, + this.#currentResult.variables, + this.#currentResult.context + ); + } else if (action?.type === "error") { + this.#mutateOptions.onError?.( + action.error, + this.#currentResult.variables, + this.#currentResult.context + ); + this.#mutateOptions.onSettled?.( + void 0, + action.error, + this.#currentResult.variables, + this.#currentResult.context + ); + } + } + this.listeners.forEach((listener) => { + listener(this.#currentResult); + }); + }); + } +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (0); +//# sourceMappingURL=mutationObserver.cjs.map + +/***/ }), + +/***/ "../node_modules/@tanstack/query-core/build/modern/notifyManager.cjs": +/*!***************************************************************************!*\ + !*** ../node_modules/@tanstack/query-core/build/modern/notifyManager.cjs ***! + \***************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/notifyManager.ts +var notifyManager_exports = {}; +__export(notifyManager_exports, { + createNotifyManager: () => createNotifyManager, + notifyManager: () => notifyManager +}); +module.exports = __toCommonJS(notifyManager_exports); +var import_utils = __webpack_require__(/*! ./utils.cjs */ "../node_modules/@tanstack/query-core/build/modern/utils.cjs"); +function createNotifyManager() { + let queue = []; + let transactions = 0; + let notifyFn = (callback) => { + callback(); + }; + let batchNotifyFn = (callback) => { + callback(); + }; + const batch = (callback) => { + let result; + transactions++; + try { + result = callback(); + } finally { + transactions--; + if (!transactions) { + flush(); + } + } + return result; + }; + const schedule = (callback) => { + if (transactions) { + queue.push(callback); + } else { + (0, import_utils.scheduleMicrotask)(() => { + notifyFn(callback); + }); + } + }; + const batchCalls = (callback) => { + return (...args) => { + schedule(() => { + callback(...args); + }); + }; + }; + const flush = () => { + const originalQueue = queue; + queue = []; + if (originalQueue.length) { + (0, import_utils.scheduleMicrotask)(() => { + batchNotifyFn(() => { + originalQueue.forEach((callback) => { + notifyFn(callback); + }); + }); + }); + } + }; + const setNotifyFunction = (fn) => { + notifyFn = fn; + }; + const setBatchNotifyFunction = (fn) => { + batchNotifyFn = fn; + }; + return { + batch, + batchCalls, + schedule, + setNotifyFunction, + setBatchNotifyFunction + }; +} +var notifyManager = createNotifyManager(); +// Annotate the CommonJS export names for ESM import in node: +0 && (0); +//# sourceMappingURL=notifyManager.cjs.map + +/***/ }), + +/***/ "../node_modules/@tanstack/query-core/build/modern/onlineManager.cjs": +/*!***************************************************************************!*\ + !*** ../node_modules/@tanstack/query-core/build/modern/onlineManager.cjs ***! + \***************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/onlineManager.ts +var onlineManager_exports = {}; +__export(onlineManager_exports, { + OnlineManager: () => OnlineManager, + onlineManager: () => onlineManager +}); +module.exports = __toCommonJS(onlineManager_exports); +var import_subscribable = __webpack_require__(/*! ./subscribable.cjs */ "../node_modules/@tanstack/query-core/build/modern/subscribable.cjs"); +var import_utils = __webpack_require__(/*! ./utils.cjs */ "../node_modules/@tanstack/query-core/build/modern/utils.cjs"); +var OnlineManager = class extends import_subscribable.Subscribable { + #online = true; + #cleanup; + #setup; + constructor() { + super(); + this.#setup = (onOnline) => { + if (!import_utils.isServer && window.addEventListener) { + const onlineListener = () => onOnline(true); + const offlineListener = () => onOnline(false); + window.addEventListener("online", onlineListener, false); + window.addEventListener("offline", offlineListener, false); + return () => { + window.removeEventListener("online", onlineListener); + window.removeEventListener("offline", offlineListener); + }; + } + return; + }; + } + onSubscribe() { + if (!this.#cleanup) { + this.setEventListener(this.#setup); + } + } + onUnsubscribe() { + if (!this.hasListeners()) { + this.#cleanup?.(); + this.#cleanup = void 0; + } + } + setEventListener(setup) { + this.#setup = setup; + this.#cleanup?.(); + this.#cleanup = setup(this.setOnline.bind(this)); + } + setOnline(online) { + const changed = this.#online !== online; + if (changed) { + this.#online = online; + this.listeners.forEach((listener) => { + listener(online); + }); + } + } + isOnline() { + return this.#online; + } +}; +var onlineManager = new OnlineManager(); +// Annotate the CommonJS export names for ESM import in node: +0 && (0); +//# sourceMappingURL=onlineManager.cjs.map + +/***/ }), + +/***/ "../node_modules/@tanstack/query-core/build/modern/queriesObserver.cjs": +/*!*****************************************************************************!*\ + !*** ../node_modules/@tanstack/query-core/build/modern/queriesObserver.cjs ***! + \*****************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/queriesObserver.ts +var queriesObserver_exports = {}; +__export(queriesObserver_exports, { + QueriesObserver: () => QueriesObserver +}); +module.exports = __toCommonJS(queriesObserver_exports); +var import_notifyManager = __webpack_require__(/*! ./notifyManager.cjs */ "../node_modules/@tanstack/query-core/build/modern/notifyManager.cjs"); +var import_queryObserver = __webpack_require__(/*! ./queryObserver.cjs */ "../node_modules/@tanstack/query-core/build/modern/queryObserver.cjs"); +var import_subscribable = __webpack_require__(/*! ./subscribable.cjs */ "../node_modules/@tanstack/query-core/build/modern/subscribable.cjs"); +var import_utils = __webpack_require__(/*! ./utils.cjs */ "../node_modules/@tanstack/query-core/build/modern/utils.cjs"); +function difference(array1, array2) { + return array1.filter((x) => !array2.includes(x)); +} +function replaceAt(array, index, value) { + const copy = array.slice(0); + copy[index] = value; + return copy; +} +var QueriesObserver = class extends import_subscribable.Subscribable { + #client; + #result; + #queries; + #observers; + #options; + #combinedResult; + constructor(client, queries, options) { + super(); + this.#client = client; + this.#queries = []; + this.#observers = []; + this.#setResult([]); + this.setQueries(queries, options); + } + #setResult(value) { + this.#result = value; + this.#combinedResult = this.#combineResult(value); + } + onSubscribe() { + if (this.listeners.size === 1) { + this.#observers.forEach((observer) => { + observer.subscribe((result) => { + this.#onUpdate(observer, result); + }); + }); + } + } + onUnsubscribe() { + if (!this.listeners.size) { + this.destroy(); + } + } + destroy() { + this.listeners = /* @__PURE__ */ new Set(); + this.#observers.forEach((observer) => { + observer.destroy(); + }); + } + setQueries(queries, options, notifyOptions) { + this.#queries = queries; + this.#options = options; + import_notifyManager.notifyManager.batch(() => { + const prevObservers = this.#observers; + const newObserverMatches = this.#findMatchingObservers(this.#queries); + newObserverMatches.forEach( + (match) => match.observer.setOptions(match.defaultedQueryOptions, notifyOptions) + ); + const newObservers = newObserverMatches.map((match) => match.observer); + const newResult = newObservers.map( + (observer) => observer.getCurrentResult() + ); + const hasIndexChange = newObservers.some( + (observer, index) => observer !== prevObservers[index] + ); + if (prevObservers.length === newObservers.length && !hasIndexChange) { + return; + } + this.#observers = newObservers; + this.#setResult(newResult); + if (!this.hasListeners()) { + return; + } + difference(prevObservers, newObservers).forEach((observer) => { + observer.destroy(); + }); + difference(newObservers, prevObservers).forEach((observer) => { + observer.subscribe((result) => { + this.#onUpdate(observer, result); + }); + }); + this.#notify(); + }); + } + getCurrentResult() { + return this.#combinedResult; + } + getQueries() { + return this.#observers.map((observer) => observer.getCurrentQuery()); + } + getObservers() { + return this.#observers; + } + getOptimisticResult(queries) { + const matches = this.#findMatchingObservers(queries); + const result = matches.map( + (match) => match.observer.getOptimisticResult(match.defaultedQueryOptions) + ); + return [ + result, + (r) => { + return this.#combineResult(r ?? result); + }, + () => { + return matches.map((match, index) => { + const observerResult = result[index]; + return !match.defaultedQueryOptions.notifyOnChangeProps ? match.observer.trackResult(observerResult) : observerResult; + }); + } + ]; + } + #combineResult(input) { + const combine = this.#options?.combine; + if (combine) { + return (0, import_utils.replaceEqualDeep)(this.#combinedResult, combine(input)); + } + return input; + } + #findMatchingObservers(queries) { + const prevObservers = this.#observers; + const prevObserversMap = new Map( + prevObservers.map((observer) => [observer.options.queryHash, observer]) + ); + const defaultedQueryOptions = queries.map( + (options) => this.#client.defaultQueryOptions(options) + ); + const matchingObservers = defaultedQueryOptions.flatMap((defaultedOptions) => { + const match = prevObserversMap.get(defaultedOptions.queryHash); + if (match != null) { + return [{ defaultedQueryOptions: defaultedOptions, observer: match }]; + } + return []; + }); + const matchedQueryHashes = new Set( + matchingObservers.map((match) => match.defaultedQueryOptions.queryHash) + ); + const unmatchedQueries = defaultedQueryOptions.filter( + (defaultedOptions) => !matchedQueryHashes.has(defaultedOptions.queryHash) + ); + const getObserver = (options) => { + const defaultedOptions = this.#client.defaultQueryOptions(options); + const currentObserver = this.#observers.find( + (o) => o.options.queryHash === defaultedOptions.queryHash + ); + return currentObserver ?? new import_queryObserver.QueryObserver(this.#client, defaultedOptions); + }; + const newOrReusedObservers = unmatchedQueries.map((options) => { + return { + defaultedQueryOptions: options, + observer: getObserver(options) + }; + }); + const sortMatchesByOrderOfQueries = (a, b) => defaultedQueryOptions.indexOf(a.defaultedQueryOptions) - defaultedQueryOptions.indexOf(b.defaultedQueryOptions); + return matchingObservers.concat(newOrReusedObservers).sort(sortMatchesByOrderOfQueries); + } + #onUpdate(observer, result) { + const index = this.#observers.indexOf(observer); + if (index !== -1) { + this.#setResult(replaceAt(this.#result, index, result)); + this.#notify(); + } + } + #notify() { + import_notifyManager.notifyManager.batch(() => { + this.listeners.forEach((listener) => { + listener(this.#result); + }); + }); + } +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (0); +//# sourceMappingURL=queriesObserver.cjs.map + +/***/ }), + +/***/ "../node_modules/@tanstack/query-core/build/modern/query.cjs": +/*!*******************************************************************!*\ + !*** ../node_modules/@tanstack/query-core/build/modern/query.cjs ***! + \*******************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/query.ts +var query_exports = {}; +__export(query_exports, { + Query: () => Query +}); +module.exports = __toCommonJS(query_exports); +var import_utils = __webpack_require__(/*! ./utils.cjs */ "../node_modules/@tanstack/query-core/build/modern/utils.cjs"); +var import_notifyManager = __webpack_require__(/*! ./notifyManager.cjs */ "../node_modules/@tanstack/query-core/build/modern/notifyManager.cjs"); +var import_retryer = __webpack_require__(/*! ./retryer.cjs */ "../node_modules/@tanstack/query-core/build/modern/retryer.cjs"); +var import_removable = __webpack_require__(/*! ./removable.cjs */ "../node_modules/@tanstack/query-core/build/modern/removable.cjs"); +var Query = class extends import_removable.Removable { + constructor(config) { + super(); + this.#abortSignalConsumed = false; + this.#defaultOptions = config.defaultOptions; + this.#setOptions(config.options); + this.#observers = []; + this.#cache = config.cache; + this.queryKey = config.queryKey; + this.queryHash = config.queryHash; + this.#initialState = config.state || getDefaultState(this.options); + this.state = this.#initialState; + this.scheduleGc(); + } + #initialState; + #revertState; + #cache; + #promise; + #retryer; + #observers; + #defaultOptions; + #abortSignalConsumed; + get meta() { + return this.options.meta; + } + #setOptions(options) { + this.options = { ...this.#defaultOptions, ...options }; + this.updateGcTime(this.options.gcTime); + } + optionalRemove() { + if (!this.#observers.length && this.state.fetchStatus === "idle") { + this.#cache.remove(this); + } + } + setData(newData, options) { + const data = (0, import_utils.replaceData)(this.state.data, newData, this.options); + this.#dispatch({ + data, + type: "success", + dataUpdatedAt: options?.updatedAt, + manual: options?.manual + }); + return data; + } + setState(state, setStateOptions) { + this.#dispatch({ type: "setState", state, setStateOptions }); + } + cancel(options) { + const promise = this.#promise; + this.#retryer?.cancel(options); + return promise ? promise.then(import_utils.noop).catch(import_utils.noop) : Promise.resolve(); + } + destroy() { + super.destroy(); + this.cancel({ silent: true }); + } + reset() { + this.destroy(); + this.setState(this.#initialState); + } + isActive() { + return this.#observers.some( + (observer) => observer.options.enabled !== false + ); + } + isDisabled() { + return this.getObserversCount() > 0 && !this.isActive(); + } + isStale() { + return this.state.isInvalidated || !this.state.dataUpdatedAt || this.#observers.some((observer) => observer.getCurrentResult().isStale); + } + isStaleByTime(staleTime = 0) { + return this.state.isInvalidated || !this.state.dataUpdatedAt || !(0, import_utils.timeUntilStale)(this.state.dataUpdatedAt, staleTime); + } + onFocus() { + const observer = this.#observers.find((x) => x.shouldFetchOnWindowFocus()); + observer?.refetch({ cancelRefetch: false }); + this.#retryer?.continue(); + } + onOnline() { + const observer = this.#observers.find((x) => x.shouldFetchOnReconnect()); + observer?.refetch({ cancelRefetch: false }); + this.#retryer?.continue(); + } + addObserver(observer) { + if (!this.#observers.includes(observer)) { + this.#observers.push(observer); + this.clearGcTimeout(); + this.#cache.notify({ type: "observerAdded", query: this, observer }); + } + } + removeObserver(observer) { + if (this.#observers.includes(observer)) { + this.#observers = this.#observers.filter((x) => x !== observer); + if (!this.#observers.length) { + if (this.#retryer) { + if (this.#abortSignalConsumed) { + this.#retryer.cancel({ revert: true }); + } else { + this.#retryer.cancelRetry(); + } + } + this.scheduleGc(); + } + this.#cache.notify({ type: "observerRemoved", query: this, observer }); + } + } + getObserversCount() { + return this.#observers.length; + } + invalidate() { + if (!this.state.isInvalidated) { + this.#dispatch({ type: "invalidate" }); + } + } + fetch(options, fetchOptions) { + if (this.state.fetchStatus !== "idle") { + if (this.state.dataUpdatedAt && fetchOptions?.cancelRefetch) { + this.cancel({ silent: true }); + } else if (this.#promise) { + this.#retryer?.continueRetry(); + return this.#promise; + } + } + if (options) { + this.#setOptions(options); + } + if (!this.options.queryFn) { + const observer = this.#observers.find((x) => x.options.queryFn); + if (observer) { + this.#setOptions(observer.options); + } + } + if (true) { + if (!Array.isArray(this.options.queryKey)) { + console.error( + `As of v4, queryKey needs to be an Array. If you are using a string like 'repoData', please change it to an Array, e.g. ['repoData']` + ); + } + } + const abortController = new AbortController(); + const queryFnContext = { + queryKey: this.queryKey, + meta: this.meta + }; + const addSignalProperty = (object) => { + Object.defineProperty(object, "signal", { + enumerable: true, + get: () => { + this.#abortSignalConsumed = true; + return abortController.signal; + } + }); + }; + addSignalProperty(queryFnContext); + const fetchFn = () => { + if (!this.options.queryFn) { + return Promise.reject( + new Error(`Missing queryFn: '${this.options.queryHash}'`) + ); + } + this.#abortSignalConsumed = false; + if (this.options.persister) { + return this.options.persister( + this.options.queryFn, + queryFnContext, + this + ); + } + return this.options.queryFn( + queryFnContext + ); + }; + const context = { + fetchOptions, + options: this.options, + queryKey: this.queryKey, + state: this.state, + fetchFn + }; + addSignalProperty(context); + this.options.behavior?.onFetch( + context, + this + ); + this.#revertState = this.state; + if (this.state.fetchStatus === "idle" || this.state.fetchMeta !== context.fetchOptions?.meta) { + this.#dispatch({ type: "fetch", meta: context.fetchOptions?.meta }); + } + const onError = (error) => { + if (!((0, import_retryer.isCancelledError)(error) && error.silent)) { + this.#dispatch({ + type: "error", + error + }); + } + if (!(0, import_retryer.isCancelledError)(error)) { + this.#cache.config.onError?.( + error, + this + ); + this.#cache.config.onSettled?.( + this.state.data, + error, + this + ); + } + if (!this.isFetchingOptimistic) { + this.scheduleGc(); + } + this.isFetchingOptimistic = false; + }; + this.#retryer = (0, import_retryer.createRetryer)({ + fn: context.fetchFn, + abort: abortController.abort.bind(abortController), + onSuccess: (data) => { + if (typeof data === "undefined") { + if (true) { + console.error( + `Query data cannot be undefined. Please make sure to return a value other than undefined from your query function. Affected query key: ${this.queryHash}` + ); + } + onError(new Error(`${this.queryHash} data is undefined`)); + return; + } + this.setData(data); + this.#cache.config.onSuccess?.(data, this); + this.#cache.config.onSettled?.( + data, + this.state.error, + this + ); + if (!this.isFetchingOptimistic) { + this.scheduleGc(); + } + this.isFetchingOptimistic = false; + }, + onError, + onFail: (failureCount, error) => { + this.#dispatch({ type: "failed", failureCount, error }); + }, + onPause: () => { + this.#dispatch({ type: "pause" }); + }, + onContinue: () => { + this.#dispatch({ type: "continue" }); + }, + retry: context.options.retry, + retryDelay: context.options.retryDelay, + networkMode: context.options.networkMode + }); + this.#promise = this.#retryer.promise; + return this.#promise; + } + #dispatch(action) { + const reducer = (state) => { + switch (action.type) { + case "failed": + return { + ...state, + fetchFailureCount: action.failureCount, + fetchFailureReason: action.error + }; + case "pause": + return { + ...state, + fetchStatus: "paused" + }; + case "continue": + return { + ...state, + fetchStatus: "fetching" + }; + case "fetch": + return { + ...state, + fetchFailureCount: 0, + fetchFailureReason: null, + fetchMeta: action.meta ?? null, + fetchStatus: (0, import_retryer.canFetch)(this.options.networkMode) ? "fetching" : "paused", + ...!state.dataUpdatedAt && { + error: null, + status: "pending" + } + }; + case "success": + return { + ...state, + data: action.data, + dataUpdateCount: state.dataUpdateCount + 1, + dataUpdatedAt: action.dataUpdatedAt ?? Date.now(), + error: null, + isInvalidated: false, + status: "success", + ...!action.manual && { + fetchStatus: "idle", + fetchFailureCount: 0, + fetchFailureReason: null + } + }; + case "error": + const error = action.error; + if ((0, import_retryer.isCancelledError)(error) && error.revert && this.#revertState) { + return { ...this.#revertState, fetchStatus: "idle" }; + } + return { + ...state, + error, + errorUpdateCount: state.errorUpdateCount + 1, + errorUpdatedAt: Date.now(), + fetchFailureCount: state.fetchFailureCount + 1, + fetchFailureReason: error, + fetchStatus: "idle", + status: "error" + }; + case "invalidate": + return { + ...state, + isInvalidated: true + }; + case "setState": + return { + ...state, + ...action.state + }; + } + }; + this.state = reducer(this.state); + import_notifyManager.notifyManager.batch(() => { + this.#observers.forEach((observer) => { + observer.onQueryUpdate(); + }); + this.#cache.notify({ query: this, type: "updated", action }); + }); + } +}; +function getDefaultState(options) { + const data = typeof options.initialData === "function" ? options.initialData() : options.initialData; + const hasData = typeof data !== "undefined"; + const initialDataUpdatedAt = hasData ? typeof options.initialDataUpdatedAt === "function" ? options.initialDataUpdatedAt() : options.initialDataUpdatedAt : 0; + return { + data, + dataUpdateCount: 0, + dataUpdatedAt: hasData ? initialDataUpdatedAt ?? Date.now() : 0, + error: null, + errorUpdateCount: 0, + errorUpdatedAt: 0, + fetchFailureCount: 0, + fetchFailureReason: null, + fetchMeta: null, + isInvalidated: false, + status: hasData ? "success" : "pending", + fetchStatus: "idle" + }; +} +// Annotate the CommonJS export names for ESM import in node: +0 && (0); +//# sourceMappingURL=query.cjs.map + +/***/ }), + +/***/ "../node_modules/@tanstack/query-core/build/modern/queryCache.cjs": +/*!************************************************************************!*\ + !*** ../node_modules/@tanstack/query-core/build/modern/queryCache.cjs ***! + \************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/queryCache.ts +var queryCache_exports = {}; +__export(queryCache_exports, { + QueryCache: () => QueryCache +}); +module.exports = __toCommonJS(queryCache_exports); +var import_utils = __webpack_require__(/*! ./utils.cjs */ "../node_modules/@tanstack/query-core/build/modern/utils.cjs"); +var import_query = __webpack_require__(/*! ./query.cjs */ "../node_modules/@tanstack/query-core/build/modern/query.cjs"); +var import_notifyManager = __webpack_require__(/*! ./notifyManager.cjs */ "../node_modules/@tanstack/query-core/build/modern/notifyManager.cjs"); +var import_subscribable = __webpack_require__(/*! ./subscribable.cjs */ "../node_modules/@tanstack/query-core/build/modern/subscribable.cjs"); +var QueryCache = class extends import_subscribable.Subscribable { + constructor(config = {}) { + super(); + this.config = config; + this.#queries = /* @__PURE__ */ new Map(); + } + #queries; + build(client, options, state) { + const queryKey = options.queryKey; + const queryHash = options.queryHash ?? (0, import_utils.hashQueryKeyByOptions)(queryKey, options); + let query = this.get(queryHash); + if (!query) { + query = new import_query.Query({ + cache: this, + queryKey, + queryHash, + options: client.defaultQueryOptions(options), + state, + defaultOptions: client.getQueryDefaults(queryKey) + }); + this.add(query); + } + return query; + } + add(query) { + if (!this.#queries.has(query.queryHash)) { + this.#queries.set(query.queryHash, query); + this.notify({ + type: "added", + query + }); + } + } + remove(query) { + const queryInMap = this.#queries.get(query.queryHash); + if (queryInMap) { + query.destroy(); + if (queryInMap === query) { + this.#queries.delete(query.queryHash); + } + this.notify({ type: "removed", query }); + } + } + clear() { + import_notifyManager.notifyManager.batch(() => { + this.getAll().forEach((query) => { + this.remove(query); + }); + }); + } + get(queryHash) { + return this.#queries.get(queryHash); + } + getAll() { + return [...this.#queries.values()]; + } + find(filters) { + const defaultedFilters = { exact: true, ...filters }; + return this.getAll().find( + (query) => (0, import_utils.matchQuery)(defaultedFilters, query) + ); + } + findAll(filters = {}) { + const queries = this.getAll(); + return Object.keys(filters).length > 0 ? queries.filter((query) => (0, import_utils.matchQuery)(filters, query)) : queries; + } + notify(event) { + import_notifyManager.notifyManager.batch(() => { + this.listeners.forEach((listener) => { + listener(event); + }); + }); + } + onFocus() { + import_notifyManager.notifyManager.batch(() => { + this.getAll().forEach((query) => { + query.onFocus(); + }); + }); + } + onOnline() { + import_notifyManager.notifyManager.batch(() => { + this.getAll().forEach((query) => { + query.onOnline(); + }); + }); + } +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (0); +//# sourceMappingURL=queryCache.cjs.map + +/***/ }), + +/***/ "../node_modules/@tanstack/query-core/build/modern/queryClient.cjs": +/*!*************************************************************************!*\ + !*** ../node_modules/@tanstack/query-core/build/modern/queryClient.cjs ***! + \*************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/queryClient.ts +var queryClient_exports = {}; +__export(queryClient_exports, { + QueryClient: () => QueryClient +}); +module.exports = __toCommonJS(queryClient_exports); +var import_utils = __webpack_require__(/*! ./utils.cjs */ "../node_modules/@tanstack/query-core/build/modern/utils.cjs"); +var import_queryCache = __webpack_require__(/*! ./queryCache.cjs */ "../node_modules/@tanstack/query-core/build/modern/queryCache.cjs"); +var import_mutationCache = __webpack_require__(/*! ./mutationCache.cjs */ "../node_modules/@tanstack/query-core/build/modern/mutationCache.cjs"); +var import_focusManager = __webpack_require__(/*! ./focusManager.cjs */ "../node_modules/@tanstack/query-core/build/modern/focusManager.cjs"); +var import_onlineManager = __webpack_require__(/*! ./onlineManager.cjs */ "../node_modules/@tanstack/query-core/build/modern/onlineManager.cjs"); +var import_notifyManager = __webpack_require__(/*! ./notifyManager.cjs */ "../node_modules/@tanstack/query-core/build/modern/notifyManager.cjs"); +var import_infiniteQueryBehavior = __webpack_require__(/*! ./infiniteQueryBehavior.cjs */ "../node_modules/@tanstack/query-core/build/modern/infiniteQueryBehavior.cjs"); +var QueryClient = class { + #queryCache; + #mutationCache; + #defaultOptions; + #queryDefaults; + #mutationDefaults; + #mountCount; + #unsubscribeFocus; + #unsubscribeOnline; + constructor(config = {}) { + this.#queryCache = config.queryCache || new import_queryCache.QueryCache(); + this.#mutationCache = config.mutationCache || new import_mutationCache.MutationCache(); + this.#defaultOptions = config.defaultOptions || {}; + this.#queryDefaults = /* @__PURE__ */ new Map(); + this.#mutationDefaults = /* @__PURE__ */ new Map(); + this.#mountCount = 0; + } + mount() { + this.#mountCount++; + if (this.#mountCount !== 1) + return; + this.#unsubscribeFocus = import_focusManager.focusManager.subscribe(() => { + if (import_focusManager.focusManager.isFocused()) { + this.resumePausedMutations(); + this.#queryCache.onFocus(); + } + }); + this.#unsubscribeOnline = import_onlineManager.onlineManager.subscribe(() => { + if (import_onlineManager.onlineManager.isOnline()) { + this.resumePausedMutations(); + this.#queryCache.onOnline(); + } + }); + } + unmount() { + this.#mountCount--; + if (this.#mountCount !== 0) + return; + this.#unsubscribeFocus?.(); + this.#unsubscribeFocus = void 0; + this.#unsubscribeOnline?.(); + this.#unsubscribeOnline = void 0; + } + isFetching(filters) { + return this.#queryCache.findAll({ ...filters, fetchStatus: "fetching" }).length; + } + isMutating(filters) { + return this.#mutationCache.findAll({ ...filters, status: "pending" }).length; + } + getQueryData(queryKey) { + return this.#queryCache.find({ queryKey })?.state.data; + } + ensureQueryData(options) { + const cachedData = this.getQueryData(options.queryKey); + return cachedData !== void 0 ? Promise.resolve(cachedData) : this.fetchQuery(options); + } + getQueriesData(filters) { + return this.getQueryCache().findAll(filters).map(({ queryKey, state }) => { + const data = state.data; + return [queryKey, data]; + }); + } + setQueryData(queryKey, updater, options) { + const query = this.#queryCache.find({ queryKey }); + const prevData = query?.state.data; + const data = (0, import_utils.functionalUpdate)(updater, prevData); + if (typeof data === "undefined") { + return void 0; + } + const defaultedOptions = this.defaultQueryOptions({ queryKey }); + return this.#queryCache.build(this, defaultedOptions).setData(data, { ...options, manual: true }); + } + setQueriesData(filters, updater, options) { + return import_notifyManager.notifyManager.batch( + () => this.getQueryCache().findAll(filters).map(({ queryKey }) => [ + queryKey, + this.setQueryData(queryKey, updater, options) + ]) + ); + } + getQueryState(queryKey) { + return this.#queryCache.find({ queryKey })?.state; + } + removeQueries(filters) { + const queryCache = this.#queryCache; + import_notifyManager.notifyManager.batch(() => { + queryCache.findAll(filters).forEach((query) => { + queryCache.remove(query); + }); + }); + } + resetQueries(filters, options) { + const queryCache = this.#queryCache; + const refetchFilters = { + type: "active", + ...filters + }; + return import_notifyManager.notifyManager.batch(() => { + queryCache.findAll(filters).forEach((query) => { + query.reset(); + }); + return this.refetchQueries(refetchFilters, options); + }); + } + cancelQueries(filters = {}, cancelOptions = {}) { + const defaultedCancelOptions = { revert: true, ...cancelOptions }; + const promises = import_notifyManager.notifyManager.batch( + () => this.#queryCache.findAll(filters).map((query) => query.cancel(defaultedCancelOptions)) + ); + return Promise.all(promises).then(import_utils.noop).catch(import_utils.noop); + } + invalidateQueries(filters = {}, options = {}) { + return import_notifyManager.notifyManager.batch(() => { + this.#queryCache.findAll(filters).forEach((query) => { + query.invalidate(); + }); + if (filters.refetchType === "none") { + return Promise.resolve(); + } + const refetchFilters = { + ...filters, + type: filters.refetchType ?? filters.type ?? "active" + }; + return this.refetchQueries(refetchFilters, options); + }); + } + refetchQueries(filters = {}, options) { + const fetchOptions = { + ...options, + cancelRefetch: options?.cancelRefetch ?? true + }; + const promises = import_notifyManager.notifyManager.batch( + () => this.#queryCache.findAll(filters).filter((query) => !query.isDisabled()).map((query) => { + let promise = query.fetch(void 0, fetchOptions); + if (!fetchOptions.throwOnError) { + promise = promise.catch(import_utils.noop); + } + return query.state.fetchStatus === "paused" ? Promise.resolve() : promise; + }) + ); + return Promise.all(promises).then(import_utils.noop); + } + fetchQuery(options) { + const defaultedOptions = this.defaultQueryOptions(options); + if (typeof defaultedOptions.retry === "undefined") { + defaultedOptions.retry = false; + } + const query = this.#queryCache.build(this, defaultedOptions); + return query.isStaleByTime(defaultedOptions.staleTime) ? query.fetch(defaultedOptions) : Promise.resolve(query.state.data); + } + prefetchQuery(options) { + return this.fetchQuery(options).then(import_utils.noop).catch(import_utils.noop); + } + fetchInfiniteQuery(options) { + options.behavior = (0, import_infiniteQueryBehavior.infiniteQueryBehavior)(options.pages); + return this.fetchQuery(options); + } + prefetchInfiniteQuery(options) { + return this.fetchInfiniteQuery(options).then(import_utils.noop).catch(import_utils.noop); + } + resumePausedMutations() { + return this.#mutationCache.resumePausedMutations(); + } + getQueryCache() { + return this.#queryCache; + } + getMutationCache() { + return this.#mutationCache; + } + getDefaultOptions() { + return this.#defaultOptions; + } + setDefaultOptions(options) { + this.#defaultOptions = options; + } + setQueryDefaults(queryKey, options) { + this.#queryDefaults.set((0, import_utils.hashKey)(queryKey), { + queryKey, + defaultOptions: options + }); + } + getQueryDefaults(queryKey) { + const defaults = [...this.#queryDefaults.values()]; + let result = {}; + defaults.forEach((queryDefault) => { + if ((0, import_utils.partialMatchKey)(queryKey, queryDefault.queryKey)) { + result = { ...result, ...queryDefault.defaultOptions }; + } + }); + return result; + } + setMutationDefaults(mutationKey, options) { + this.#mutationDefaults.set((0, import_utils.hashKey)(mutationKey), { + mutationKey, + defaultOptions: options + }); + } + getMutationDefaults(mutationKey) { + const defaults = [...this.#mutationDefaults.values()]; + let result = {}; + defaults.forEach((queryDefault) => { + if ((0, import_utils.partialMatchKey)(mutationKey, queryDefault.mutationKey)) { + result = { ...result, ...queryDefault.defaultOptions }; + } + }); + return result; + } + defaultQueryOptions(options) { + if (options?._defaulted) { + return options; + } + const defaultedOptions = { + ...this.#defaultOptions.queries, + ...options?.queryKey && this.getQueryDefaults(options.queryKey), + ...options, + _defaulted: true + }; + if (!defaultedOptions.queryHash) { + defaultedOptions.queryHash = (0, import_utils.hashQueryKeyByOptions)( + defaultedOptions.queryKey, + defaultedOptions + ); + } + if (typeof defaultedOptions.refetchOnReconnect === "undefined") { + defaultedOptions.refetchOnReconnect = defaultedOptions.networkMode !== "always"; + } + if (typeof defaultedOptions.throwOnError === "undefined") { + defaultedOptions.throwOnError = !!defaultedOptions.suspense; + } + if (typeof defaultedOptions.networkMode === "undefined" && defaultedOptions.persister) { + defaultedOptions.networkMode = "offlineFirst"; + } + return defaultedOptions; + } + defaultMutationOptions(options) { + if (options?._defaulted) { + return options; + } + return { + ...this.#defaultOptions.mutations, + ...options?.mutationKey && this.getMutationDefaults(options.mutationKey), + ...options, + _defaulted: true + }; + } + clear() { + this.#queryCache.clear(); + this.#mutationCache.clear(); + } +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (0); +//# sourceMappingURL=queryClient.cjs.map + +/***/ }), + +/***/ "../node_modules/@tanstack/query-core/build/modern/queryObserver.cjs": +/*!***************************************************************************!*\ + !*** ../node_modules/@tanstack/query-core/build/modern/queryObserver.cjs ***! + \***************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/queryObserver.ts +var queryObserver_exports = {}; +__export(queryObserver_exports, { + QueryObserver: () => QueryObserver +}); +module.exports = __toCommonJS(queryObserver_exports); +var import_utils = __webpack_require__(/*! ./utils.cjs */ "../node_modules/@tanstack/query-core/build/modern/utils.cjs"); +var import_notifyManager = __webpack_require__(/*! ./notifyManager.cjs */ "../node_modules/@tanstack/query-core/build/modern/notifyManager.cjs"); +var import_focusManager = __webpack_require__(/*! ./focusManager.cjs */ "../node_modules/@tanstack/query-core/build/modern/focusManager.cjs"); +var import_subscribable = __webpack_require__(/*! ./subscribable.cjs */ "../node_modules/@tanstack/query-core/build/modern/subscribable.cjs"); +var import_retryer = __webpack_require__(/*! ./retryer.cjs */ "../node_modules/@tanstack/query-core/build/modern/retryer.cjs"); +var QueryObserver = class extends import_subscribable.Subscribable { + constructor(client, options) { + super(); + this.#currentQuery = void 0; + this.#currentQueryInitialState = void 0; + this.#currentResult = void 0; + this.#trackedProps = /* @__PURE__ */ new Set(); + this.#client = client; + this.options = options; + this.#selectError = null; + this.bindMethods(); + this.setOptions(options); + } + #client; + #currentQuery; + #currentQueryInitialState; + #currentResult; + #currentResultState; + #currentResultOptions; + #selectError; + #selectFn; + #selectResult; + // This property keeps track of the last query with defined data. + // It will be used to pass the previous data and query to the placeholder function between renders. + #lastQueryWithDefinedData; + #staleTimeoutId; + #refetchIntervalId; + #currentRefetchInterval; + #trackedProps; + bindMethods() { + this.refetch = this.refetch.bind(this); + } + onSubscribe() { + if (this.listeners.size === 1) { + this.#currentQuery.addObserver(this); + if (shouldFetchOnMount(this.#currentQuery, this.options)) { + this.#executeFetch(); + } + this.#updateTimers(); + } + } + onUnsubscribe() { + if (!this.hasListeners()) { + this.destroy(); + } + } + shouldFetchOnReconnect() { + return shouldFetchOn( + this.#currentQuery, + this.options, + this.options.refetchOnReconnect + ); + } + shouldFetchOnWindowFocus() { + return shouldFetchOn( + this.#currentQuery, + this.options, + this.options.refetchOnWindowFocus + ); + } + destroy() { + this.listeners = /* @__PURE__ */ new Set(); + this.#clearStaleTimeout(); + this.#clearRefetchInterval(); + this.#currentQuery.removeObserver(this); + } + setOptions(options, notifyOptions) { + const prevOptions = this.options; + const prevQuery = this.#currentQuery; + this.options = this.#client.defaultQueryOptions(options); + if (!(0, import_utils.shallowEqualObjects)(prevOptions, this.options)) { + this.#client.getQueryCache().notify({ + type: "observerOptionsUpdated", + query: this.#currentQuery, + observer: this + }); + } + if (typeof this.options.enabled !== "undefined" && typeof this.options.enabled !== "boolean") { + throw new Error("Expected enabled to be a boolean"); + } + if (!this.options.queryKey) { + this.options.queryKey = prevOptions.queryKey; + } + this.#updateQuery(); + const mounted = this.hasListeners(); + if (mounted && shouldFetchOptionally( + this.#currentQuery, + prevQuery, + this.options, + prevOptions + )) { + this.#executeFetch(); + } + this.updateResult(notifyOptions); + if (mounted && (this.#currentQuery !== prevQuery || this.options.enabled !== prevOptions.enabled || this.options.staleTime !== prevOptions.staleTime)) { + this.#updateStaleTimeout(); + } + const nextRefetchInterval = this.#computeRefetchInterval(); + if (mounted && (this.#currentQuery !== prevQuery || this.options.enabled !== prevOptions.enabled || nextRefetchInterval !== this.#currentRefetchInterval)) { + this.#updateRefetchInterval(nextRefetchInterval); + } + } + getOptimisticResult(options) { + const query = this.#client.getQueryCache().build(this.#client, options); + const result = this.createResult(query, options); + if (shouldAssignObserverCurrentProperties(this, result)) { + this.#currentResult = result; + this.#currentResultOptions = this.options; + this.#currentResultState = this.#currentQuery.state; + } + return result; + } + getCurrentResult() { + return this.#currentResult; + } + trackResult(result) { + const trackedResult = {}; + Object.keys(result).forEach((key) => { + Object.defineProperty(trackedResult, key, { + configurable: false, + enumerable: true, + get: () => { + this.#trackedProps.add(key); + return result[key]; + } + }); + }); + return trackedResult; + } + getCurrentQuery() { + return this.#currentQuery; + } + refetch({ ...options } = {}) { + return this.fetch({ + ...options + }); + } + fetchOptimistic(options) { + const defaultedOptions = this.#client.defaultQueryOptions(options); + const query = this.#client.getQueryCache().build(this.#client, defaultedOptions); + query.isFetchingOptimistic = true; + return query.fetch().then(() => this.createResult(query, defaultedOptions)); + } + fetch(fetchOptions) { + return this.#executeFetch({ + ...fetchOptions, + cancelRefetch: fetchOptions.cancelRefetch ?? true + }).then(() => { + this.updateResult(); + return this.#currentResult; + }); + } + #executeFetch(fetchOptions) { + this.#updateQuery(); + let promise = this.#currentQuery.fetch( + this.options, + fetchOptions + ); + if (!fetchOptions?.throwOnError) { + promise = promise.catch(import_utils.noop); + } + return promise; + } + #updateStaleTimeout() { + this.#clearStaleTimeout(); + if (import_utils.isServer || this.#currentResult.isStale || !(0, import_utils.isValidTimeout)(this.options.staleTime)) { + return; + } + const time = (0, import_utils.timeUntilStale)( + this.#currentResult.dataUpdatedAt, + this.options.staleTime + ); + const timeout = time + 1; + this.#staleTimeoutId = setTimeout(() => { + if (!this.#currentResult.isStale) { + this.updateResult(); + } + }, timeout); + } + #computeRefetchInterval() { + return (typeof this.options.refetchInterval === "function" ? this.options.refetchInterval(this.#currentQuery) : this.options.refetchInterval) ?? false; + } + #updateRefetchInterval(nextInterval) { + this.#clearRefetchInterval(); + this.#currentRefetchInterval = nextInterval; + if (import_utils.isServer || this.options.enabled === false || !(0, import_utils.isValidTimeout)(this.#currentRefetchInterval) || this.#currentRefetchInterval === 0) { + return; + } + this.#refetchIntervalId = setInterval(() => { + if (this.options.refetchIntervalInBackground || import_focusManager.focusManager.isFocused()) { + this.#executeFetch(); + } + }, this.#currentRefetchInterval); + } + #updateTimers() { + this.#updateStaleTimeout(); + this.#updateRefetchInterval(this.#computeRefetchInterval()); + } + #clearStaleTimeout() { + if (this.#staleTimeoutId) { + clearTimeout(this.#staleTimeoutId); + this.#staleTimeoutId = void 0; + } + } + #clearRefetchInterval() { + if (this.#refetchIntervalId) { + clearInterval(this.#refetchIntervalId); + this.#refetchIntervalId = void 0; + } + } + createResult(query, options) { + const prevQuery = this.#currentQuery; + const prevOptions = this.options; + const prevResult = this.#currentResult; + const prevResultState = this.#currentResultState; + const prevResultOptions = this.#currentResultOptions; + const queryChange = query !== prevQuery; + const queryInitialState = queryChange ? query.state : this.#currentQueryInitialState; + const { state } = query; + let { error, errorUpdatedAt, fetchStatus, status } = state; + let isPlaceholderData = false; + let data; + if (options._optimisticResults) { + const mounted = this.hasListeners(); + const fetchOnMount = !mounted && shouldFetchOnMount(query, options); + const fetchOptionally = mounted && shouldFetchOptionally(query, prevQuery, options, prevOptions); + if (fetchOnMount || fetchOptionally) { + fetchStatus = (0, import_retryer.canFetch)(query.options.networkMode) ? "fetching" : "paused"; + if (!state.dataUpdatedAt) { + status = "pending"; + } + } + if (options._optimisticResults === "isRestoring") { + fetchStatus = "idle"; + } + } + if (options.select && typeof state.data !== "undefined") { + if (prevResult && state.data === prevResultState?.data && options.select === this.#selectFn) { + data = this.#selectResult; + } else { + try { + this.#selectFn = options.select; + data = options.select(state.data); + data = (0, import_utils.replaceData)(prevResult?.data, data, options); + this.#selectResult = data; + this.#selectError = null; + } catch (selectError) { + this.#selectError = selectError; + } + } + } else { + data = state.data; + } + if (typeof options.placeholderData !== "undefined" && typeof data === "undefined" && status === "pending") { + let placeholderData; + if (prevResult?.isPlaceholderData && options.placeholderData === prevResultOptions?.placeholderData) { + placeholderData = prevResult.data; + } else { + placeholderData = typeof options.placeholderData === "function" ? options.placeholderData( + this.#lastQueryWithDefinedData?.state.data, + this.#lastQueryWithDefinedData + ) : options.placeholderData; + if (options.select && typeof placeholderData !== "undefined") { + try { + placeholderData = options.select(placeholderData); + this.#selectError = null; + } catch (selectError) { + this.#selectError = selectError; + } + } + } + if (typeof placeholderData !== "undefined") { + status = "success"; + data = (0, import_utils.replaceData)( + prevResult?.data, + placeholderData, + options + ); + isPlaceholderData = true; + } + } + if (this.#selectError) { + error = this.#selectError; + data = this.#selectResult; + errorUpdatedAt = Date.now(); + status = "error"; + } + const isFetching = fetchStatus === "fetching"; + const isPending = status === "pending"; + const isError = status === "error"; + const isLoading = isPending && isFetching; + const result = { + status, + fetchStatus, + isPending, + isSuccess: status === "success", + isError, + isInitialLoading: isLoading, + isLoading, + data, + dataUpdatedAt: state.dataUpdatedAt, + error, + errorUpdatedAt, + failureCount: state.fetchFailureCount, + failureReason: state.fetchFailureReason, + errorUpdateCount: state.errorUpdateCount, + isFetched: state.dataUpdateCount > 0 || state.errorUpdateCount > 0, + isFetchedAfterMount: state.dataUpdateCount > queryInitialState.dataUpdateCount || state.errorUpdateCount > queryInitialState.errorUpdateCount, + isFetching, + isRefetching: isFetching && !isPending, + isLoadingError: isError && state.dataUpdatedAt === 0, + isPaused: fetchStatus === "paused", + isPlaceholderData, + isRefetchError: isError && state.dataUpdatedAt !== 0, + isStale: isStale(query, options), + refetch: this.refetch + }; + return result; + } + updateResult(notifyOptions) { + const prevResult = this.#currentResult; + const nextResult = this.createResult(this.#currentQuery, this.options); + this.#currentResultState = this.#currentQuery.state; + this.#currentResultOptions = this.options; + if ((0, import_utils.shallowEqualObjects)(nextResult, prevResult)) { + return; + } + if (this.#currentResultState.data !== void 0) { + this.#lastQueryWithDefinedData = this.#currentQuery; + } + this.#currentResult = nextResult; + const defaultNotifyOptions = {}; + const shouldNotifyListeners = () => { + if (!prevResult) { + return true; + } + const { notifyOnChangeProps } = this.options; + const notifyOnChangePropsValue = typeof notifyOnChangeProps === "function" ? notifyOnChangeProps() : notifyOnChangeProps; + if (notifyOnChangePropsValue === "all" || !notifyOnChangePropsValue && !this.#trackedProps.size) { + return true; + } + const includedProps = new Set( + notifyOnChangePropsValue ?? this.#trackedProps + ); + if (this.options.throwOnError) { + includedProps.add("error"); + } + return Object.keys(this.#currentResult).some((key) => { + const typedKey = key; + const changed = this.#currentResult[typedKey] !== prevResult[typedKey]; + return changed && includedProps.has(typedKey); + }); + }; + if (notifyOptions?.listeners !== false && shouldNotifyListeners()) { + defaultNotifyOptions.listeners = true; + } + this.#notify({ ...defaultNotifyOptions, ...notifyOptions }); + } + #updateQuery() { + const query = this.#client.getQueryCache().build(this.#client, this.options); + if (query === this.#currentQuery) { + return; + } + const prevQuery = this.#currentQuery; + this.#currentQuery = query; + this.#currentQueryInitialState = query.state; + if (this.hasListeners()) { + prevQuery?.removeObserver(this); + query.addObserver(this); + } + } + onQueryUpdate() { + this.updateResult(); + if (this.hasListeners()) { + this.#updateTimers(); + } + } + #notify(notifyOptions) { + import_notifyManager.notifyManager.batch(() => { + if (notifyOptions.listeners) { + this.listeners.forEach((listener) => { + listener(this.#currentResult); + }); + } + this.#client.getQueryCache().notify({ + query: this.#currentQuery, + type: "observerResultsUpdated" + }); + }); + } +}; +function shouldLoadOnMount(query, options) { + return options.enabled !== false && !query.state.dataUpdatedAt && !(query.state.status === "error" && options.retryOnMount === false); +} +function shouldFetchOnMount(query, options) { + return shouldLoadOnMount(query, options) || query.state.dataUpdatedAt > 0 && shouldFetchOn(query, options, options.refetchOnMount); +} +function shouldFetchOn(query, options, field) { + if (options.enabled !== false) { + const value = typeof field === "function" ? field(query) : field; + return value === "always" || value !== false && isStale(query, options); + } + return false; +} +function shouldFetchOptionally(query, prevQuery, options, prevOptions) { + return options.enabled !== false && (query !== prevQuery || prevOptions.enabled === false) && (!options.suspense || query.state.status !== "error") && isStale(query, options); +} +function isStale(query, options) { + return query.isStaleByTime(options.staleTime); +} +function shouldAssignObserverCurrentProperties(observer, optimisticResult) { + if (!(0, import_utils.shallowEqualObjects)(observer.getCurrentResult(), optimisticResult)) { + return true; + } + return false; +} +// Annotate the CommonJS export names for ESM import in node: +0 && (0); +//# sourceMappingURL=queryObserver.cjs.map + +/***/ }), + +/***/ "../node_modules/@tanstack/query-core/build/modern/removable.cjs": +/*!***********************************************************************!*\ + !*** ../node_modules/@tanstack/query-core/build/modern/removable.cjs ***! + \***********************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/removable.ts +var removable_exports = {}; +__export(removable_exports, { + Removable: () => Removable +}); +module.exports = __toCommonJS(removable_exports); +var import_utils = __webpack_require__(/*! ./utils.cjs */ "../node_modules/@tanstack/query-core/build/modern/utils.cjs"); +var Removable = class { + #gcTimeout; + destroy() { + this.clearGcTimeout(); + } + scheduleGc() { + this.clearGcTimeout(); + if ((0, import_utils.isValidTimeout)(this.gcTime)) { + this.#gcTimeout = setTimeout(() => { + this.optionalRemove(); + }, this.gcTime); + } + } + updateGcTime(newGcTime) { + this.gcTime = Math.max( + this.gcTime || 0, + newGcTime ?? (import_utils.isServer ? Infinity : 5 * 60 * 1e3) + ); + } + clearGcTimeout() { + if (this.#gcTimeout) { + clearTimeout(this.#gcTimeout); + this.#gcTimeout = void 0; + } + } +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (0); +//# sourceMappingURL=removable.cjs.map + +/***/ }), + +/***/ "../node_modules/@tanstack/query-core/build/modern/retryer.cjs": +/*!*********************************************************************!*\ + !*** ../node_modules/@tanstack/query-core/build/modern/retryer.cjs ***! + \*********************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/retryer.ts +var retryer_exports = {}; +__export(retryer_exports, { + CancelledError: () => CancelledError, + canFetch: () => canFetch, + createRetryer: () => createRetryer, + isCancelledError: () => isCancelledError +}); +module.exports = __toCommonJS(retryer_exports); +var import_focusManager = __webpack_require__(/*! ./focusManager.cjs */ "../node_modules/@tanstack/query-core/build/modern/focusManager.cjs"); +var import_onlineManager = __webpack_require__(/*! ./onlineManager.cjs */ "../node_modules/@tanstack/query-core/build/modern/onlineManager.cjs"); +var import_utils = __webpack_require__(/*! ./utils.cjs */ "../node_modules/@tanstack/query-core/build/modern/utils.cjs"); +function defaultRetryDelay(failureCount) { + return Math.min(1e3 * 2 ** failureCount, 3e4); +} +function canFetch(networkMode) { + return (networkMode ?? "online") === "online" ? import_onlineManager.onlineManager.isOnline() : true; +} +var CancelledError = class { + constructor(options) { + this.revert = options?.revert; + this.silent = options?.silent; + } +}; +function isCancelledError(value) { + return value instanceof CancelledError; +} +function createRetryer(config) { + let isRetryCancelled = false; + let failureCount = 0; + let isResolved = false; + let continueFn; + let promiseResolve; + let promiseReject; + const promise = new Promise((outerResolve, outerReject) => { + promiseResolve = outerResolve; + promiseReject = outerReject; + }); + const cancel = (cancelOptions) => { + if (!isResolved) { + reject(new CancelledError(cancelOptions)); + config.abort?.(); + } + }; + const cancelRetry = () => { + isRetryCancelled = true; + }; + const continueRetry = () => { + isRetryCancelled = false; + }; + const shouldPause = () => !import_focusManager.focusManager.isFocused() || config.networkMode !== "always" && !import_onlineManager.onlineManager.isOnline(); + const resolve = (value) => { + if (!isResolved) { + isResolved = true; + config.onSuccess?.(value); + continueFn?.(); + promiseResolve(value); + } + }; + const reject = (value) => { + if (!isResolved) { + isResolved = true; + config.onError?.(value); + continueFn?.(); + promiseReject(value); + } + }; + const pause = () => { + return new Promise((continueResolve) => { + continueFn = (value) => { + const canContinue = isResolved || !shouldPause(); + if (canContinue) { + continueResolve(value); + } + return canContinue; + }; + config.onPause?.(); + }).then(() => { + continueFn = void 0; + if (!isResolved) { + config.onContinue?.(); + } + }); + }; + const run = () => { + if (isResolved) { + return; + } + let promiseOrValue; + try { + promiseOrValue = config.fn(); + } catch (error) { + promiseOrValue = Promise.reject(error); + } + Promise.resolve(promiseOrValue).then(resolve).catch((error) => { + if (isResolved) { + return; + } + const retry = config.retry ?? (import_utils.isServer ? 0 : 3); + const retryDelay = config.retryDelay ?? defaultRetryDelay; + const delay = typeof retryDelay === "function" ? retryDelay(failureCount, error) : retryDelay; + const shouldRetry = retry === true || typeof retry === "number" && failureCount < retry || typeof retry === "function" && retry(failureCount, error); + if (isRetryCancelled || !shouldRetry) { + reject(error); + return; + } + failureCount++; + config.onFail?.(failureCount, error); + (0, import_utils.sleep)(delay).then(() => { + if (shouldPause()) { + return pause(); + } + return; + }).then(() => { + if (isRetryCancelled) { + reject(error); + } else { + run(); + } + }); + }); + }; + if (canFetch(config.networkMode)) { + run(); + } else { + pause().then(run); + } + return { + promise, + cancel, + continue: () => { + const didContinue = continueFn?.(); + return didContinue ? promise : Promise.resolve(); + }, + cancelRetry, + continueRetry + }; +} +// Annotate the CommonJS export names for ESM import in node: +0 && (0); +//# sourceMappingURL=retryer.cjs.map + +/***/ }), + +/***/ "../node_modules/@tanstack/query-core/build/modern/subscribable.cjs": +/*!**************************************************************************!*\ + !*** ../node_modules/@tanstack/query-core/build/modern/subscribable.cjs ***! + \**************************************************************************/ +/***/ ((module) => { + +"use strict"; + +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/subscribable.ts +var subscribable_exports = {}; +__export(subscribable_exports, { + Subscribable: () => Subscribable +}); +module.exports = __toCommonJS(subscribable_exports); +var Subscribable = class { + constructor() { + this.listeners = /* @__PURE__ */ new Set(); + this.subscribe = this.subscribe.bind(this); + } + subscribe(listener) { + this.listeners.add(listener); + this.onSubscribe(); + return () => { + this.listeners.delete(listener); + this.onUnsubscribe(); + }; + } + hasListeners() { + return this.listeners.size > 0; + } + onSubscribe() { + } + onUnsubscribe() { + } +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (0); +//# sourceMappingURL=subscribable.cjs.map + +/***/ }), + +/***/ "../node_modules/@tanstack/query-core/build/modern/types.cjs": +/*!*******************************************************************!*\ + !*** ../node_modules/@tanstack/query-core/build/modern/types.cjs ***! + \*******************************************************************/ +/***/ ((module) => { + +"use strict"; + +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/types.ts +var types_exports = {}; +module.exports = __toCommonJS(types_exports); +//# sourceMappingURL=types.cjs.map + +/***/ }), + +/***/ "../node_modules/@tanstack/query-core/build/modern/utils.cjs": +/*!*******************************************************************!*\ + !*** ../node_modules/@tanstack/query-core/build/modern/utils.cjs ***! + \*******************************************************************/ +/***/ ((module) => { + +"use strict"; + +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/utils.ts +var utils_exports = {}; +__export(utils_exports, { + addToEnd: () => addToEnd, + addToStart: () => addToStart, + functionalUpdate: () => functionalUpdate, + hashKey: () => hashKey, + hashQueryKeyByOptions: () => hashQueryKeyByOptions, + isPlainArray: () => isPlainArray, + isPlainObject: () => isPlainObject, + isServer: () => isServer, + isValidTimeout: () => isValidTimeout, + keepPreviousData: () => keepPreviousData, + matchMutation: () => matchMutation, + matchQuery: () => matchQuery, + noop: () => noop, + partialMatchKey: () => partialMatchKey, + replaceData: () => replaceData, + replaceEqualDeep: () => replaceEqualDeep, + scheduleMicrotask: () => scheduleMicrotask, + shallowEqualObjects: () => shallowEqualObjects, + sleep: () => sleep, + timeUntilStale: () => timeUntilStale +}); +module.exports = __toCommonJS(utils_exports); +var isServer = typeof window === "undefined" || "Deno" in window; +function noop() { + return void 0; +} +function functionalUpdate(updater, input) { + return typeof updater === "function" ? updater(input) : updater; +} +function isValidTimeout(value) { + return typeof value === "number" && value >= 0 && value !== Infinity; +} +function timeUntilStale(updatedAt, staleTime) { + return Math.max(updatedAt + (staleTime || 0) - Date.now(), 0); +} +function matchQuery(filters, query) { + const { + type = "all", + exact, + fetchStatus, + predicate, + queryKey, + stale + } = filters; + if (queryKey) { + if (exact) { + if (query.queryHash !== hashQueryKeyByOptions(queryKey, query.options)) { + return false; + } + } else if (!partialMatchKey(query.queryKey, queryKey)) { + return false; + } + } + if (type !== "all") { + const isActive = query.isActive(); + if (type === "active" && !isActive) { + return false; + } + if (type === "inactive" && isActive) { + return false; + } + } + if (typeof stale === "boolean" && query.isStale() !== stale) { + return false; + } + if (typeof fetchStatus !== "undefined" && fetchStatus !== query.state.fetchStatus) { + return false; + } + if (predicate && !predicate(query)) { + return false; + } + return true; +} +function matchMutation(filters, mutation) { + const { exact, status, predicate, mutationKey } = filters; + if (mutationKey) { + if (!mutation.options.mutationKey) { + return false; + } + if (exact) { + if (hashKey(mutation.options.mutationKey) !== hashKey(mutationKey)) { + return false; + } + } else if (!partialMatchKey(mutation.options.mutationKey, mutationKey)) { + return false; + } + } + if (status && mutation.state.status !== status) { + return false; + } + if (predicate && !predicate(mutation)) { + return false; + } + return true; +} +function hashQueryKeyByOptions(queryKey, options) { + const hashFn = options?.queryKeyHashFn || hashKey; + return hashFn(queryKey); +} +function hashKey(queryKey) { + return JSON.stringify( + queryKey, + (_, val) => isPlainObject(val) ? Object.keys(val).sort().reduce((result, key) => { + result[key] = val[key]; + return result; + }, {}) : val + ); +} +function partialMatchKey(a, b) { + if (a === b) { + return true; + } + if (typeof a !== typeof b) { + return false; + } + if (a && b && typeof a === "object" && typeof b === "object") { + return !Object.keys(b).some((key) => !partialMatchKey(a[key], b[key])); + } + return false; +} +function replaceEqualDeep(a, b) { + if (a === b) { + return a; + } + const array = isPlainArray(a) && isPlainArray(b); + if (array || isPlainObject(a) && isPlainObject(b)) { + const aSize = array ? a.length : Object.keys(a).length; + const bItems = array ? b : Object.keys(b); + const bSize = bItems.length; + const copy = array ? [] : {}; + let equalItems = 0; + for (let i = 0; i < bSize; i++) { + const key = array ? i : bItems[i]; + copy[key] = replaceEqualDeep(a[key], b[key]); + if (copy[key] === a[key]) { + equalItems++; + } + } + return aSize === bSize && equalItems === aSize ? a : copy; + } + return b; +} +function shallowEqualObjects(a, b) { + if (a && !b || b && !a) { + return false; + } + for (const key in a) { + if (a[key] !== b[key]) { + return false; + } + } + return true; +} +function isPlainArray(value) { + return Array.isArray(value) && value.length === Object.keys(value).length; +} +function isPlainObject(o) { + if (!hasObjectPrototype(o)) { + return false; + } + const ctor = o.constructor; + if (typeof ctor === "undefined") { + return true; + } + const prot = ctor.prototype; + if (!hasObjectPrototype(prot)) { + return false; + } + if (!prot.hasOwnProperty("isPrototypeOf")) { + return false; + } + return true; +} +function hasObjectPrototype(o) { + return Object.prototype.toString.call(o) === "[object Object]"; +} +function sleep(timeout) { + return new Promise((resolve) => { + setTimeout(resolve, timeout); + }); +} +function scheduleMicrotask(callback) { + sleep(0).then(callback); +} +function replaceData(prevData, data, options) { + if (typeof options.structuralSharing === "function") { + return options.structuralSharing(prevData, data); + } else if (options.structuralSharing !== false) { + return replaceEqualDeep(prevData, data); + } + return data; +} +function keepPreviousData(previousData) { + return previousData; +} +function addToEnd(items, item, max = 0) { + const newItems = [...items, item]; + return max && newItems.length > max ? newItems.slice(1) : newItems; +} +function addToStart(items, item, max = 0) { + const newItems = [item, ...items]; + return max && newItems.length > max ? newItems.slice(0, -1) : newItems; +} +// Annotate the CommonJS export names for ESM import in node: +0 && (0); +//# sourceMappingURL=utils.cjs.map + +/***/ }), + +/***/ "../node_modules/@tanstack/react-query/build/modern/HydrationBoundary.cjs": +/*!********************************************************************************!*\ + !*** ../node_modules/@tanstack/react-query/build/modern/HydrationBoundary.cjs ***! + \********************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +"use client"; +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/HydrationBoundary.tsx +var HydrationBoundary_exports = {}; +__export(HydrationBoundary_exports, { + HydrationBoundary: () => HydrationBoundary +}); +module.exports = __toCommonJS(HydrationBoundary_exports); +var React = __toESM(__webpack_require__(/*! react */ "react"), 1); +var import_query_core = __webpack_require__(/*! @tanstack/query-core */ "../node_modules/@tanstack/query-core/build/modern/index.cjs"); +var import_QueryClientProvider = __webpack_require__(/*! ./QueryClientProvider.cjs */ "../node_modules/@tanstack/react-query/build/modern/QueryClientProvider.cjs"); +var HydrationBoundary = ({ + children, + options = {}, + state, + queryClient +}) => { + const client = (0, import_QueryClientProvider.useQueryClient)(queryClient); + const [hydrationQueue, setHydrationQueue] = React.useState(); + const optionsRef = React.useRef(options); + optionsRef.current = options; + React.useMemo(() => { + if (state) { + if (typeof state !== "object") { + return; + } + const queryCache = client.getQueryCache(); + const queries = state.queries || []; + const newQueries = []; + const existingQueries = []; + for (const dehydratedQuery of queries) { + const existingQuery = queryCache.get(dehydratedQuery.queryHash); + if (!existingQuery) { + newQueries.push(dehydratedQuery); + } else { + const hydrationIsNewer = dehydratedQuery.state.dataUpdatedAt > existingQuery.state.dataUpdatedAt; + const queryAlreadyQueued = hydrationQueue?.find( + (query) => query.queryHash === dehydratedQuery.queryHash + ); + if (hydrationIsNewer && (!queryAlreadyQueued || dehydratedQuery.state.dataUpdatedAt > queryAlreadyQueued.state.dataUpdatedAt)) { + existingQueries.push(dehydratedQuery); + } + } + } + if (newQueries.length > 0) { + (0, import_query_core.hydrate)(client, { queries: newQueries }, optionsRef.current); + } + if (existingQueries.length > 0) { + setHydrationQueue( + (prev) => prev ? [...prev, ...existingQueries] : existingQueries + ); + } + } + }, [client, hydrationQueue, state]); + React.useEffect(() => { + if (hydrationQueue) { + (0, import_query_core.hydrate)(client, { queries: hydrationQueue }, optionsRef.current); + setHydrationQueue(void 0); + } + }, [client, hydrationQueue]); + return children; +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (0); +//# sourceMappingURL=HydrationBoundary.cjs.map + +/***/ }), + +/***/ "../node_modules/@tanstack/react-query/build/modern/QueryClientProvider.cjs": +/*!**********************************************************************************!*\ + !*** ../node_modules/@tanstack/react-query/build/modern/QueryClientProvider.cjs ***! + \**********************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +"use client"; +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/QueryClientProvider.tsx +var QueryClientProvider_exports = {}; +__export(QueryClientProvider_exports, { + QueryClientContext: () => QueryClientContext, + QueryClientProvider: () => QueryClientProvider, + useQueryClient: () => useQueryClient +}); +module.exports = __toCommonJS(QueryClientProvider_exports); +var React = __toESM(__webpack_require__(/*! react */ "react"), 1); +var QueryClientContext = React.createContext( + void 0 +); +var useQueryClient = (queryClient) => { + const client = React.useContext(QueryClientContext); + if (queryClient) { + return queryClient; + } + if (!client) { + throw new Error("No QueryClient set, use QueryClientProvider to set one"); + } + return client; +}; +var QueryClientProvider = ({ + client, + children +}) => { + React.useEffect(() => { + client.mount(); + return () => { + client.unmount(); + }; + }, [client]); + return /* @__PURE__ */ React.createElement(QueryClientContext.Provider, { value: client }, children); +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (0); +//# sourceMappingURL=QueryClientProvider.cjs.map + +/***/ }), + +/***/ "../node_modules/@tanstack/react-query/build/modern/QueryErrorResetBoundary.cjs": +/*!**************************************************************************************!*\ + !*** ../node_modules/@tanstack/react-query/build/modern/QueryErrorResetBoundary.cjs ***! + \**************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +"use client"; +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/QueryErrorResetBoundary.tsx +var QueryErrorResetBoundary_exports = {}; +__export(QueryErrorResetBoundary_exports, { + QueryErrorResetBoundary: () => QueryErrorResetBoundary, + useQueryErrorResetBoundary: () => useQueryErrorResetBoundary +}); +module.exports = __toCommonJS(QueryErrorResetBoundary_exports); +var React = __toESM(__webpack_require__(/*! react */ "react"), 1); +function createValue() { + let isReset = false; + return { + clearReset: () => { + isReset = false; + }, + reset: () => { + isReset = true; + }, + isReset: () => { + return isReset; + } + }; +} +var QueryErrorResetBoundaryContext = React.createContext(createValue()); +var useQueryErrorResetBoundary = () => React.useContext(QueryErrorResetBoundaryContext); +var QueryErrorResetBoundary = ({ + children +}) => { + const [value] = React.useState(() => createValue()); + return /* @__PURE__ */ React.createElement(QueryErrorResetBoundaryContext.Provider, { value }, typeof children === "function" ? children(value) : children); +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (0); +//# sourceMappingURL=QueryErrorResetBoundary.cjs.map + +/***/ }), + +/***/ "../node_modules/@tanstack/react-query/build/modern/errorBoundaryUtils.cjs": +/*!*********************************************************************************!*\ + !*** ../node_modules/@tanstack/react-query/build/modern/errorBoundaryUtils.cjs ***! + \*********************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +"use client"; +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/errorBoundaryUtils.ts +var errorBoundaryUtils_exports = {}; +__export(errorBoundaryUtils_exports, { + ensurePreventErrorBoundaryRetry: () => ensurePreventErrorBoundaryRetry, + getHasError: () => getHasError, + useClearResetErrorBoundary: () => useClearResetErrorBoundary +}); +module.exports = __toCommonJS(errorBoundaryUtils_exports); +var React = __toESM(__webpack_require__(/*! react */ "react"), 1); +var import_utils = __webpack_require__(/*! ./utils.cjs */ "../node_modules/@tanstack/react-query/build/modern/utils.cjs"); +var ensurePreventErrorBoundaryRetry = (options, errorResetBoundary) => { + if (options.suspense || options.throwOnError) { + if (!errorResetBoundary.isReset()) { + options.retryOnMount = false; + } + } +}; +var useClearResetErrorBoundary = (errorResetBoundary) => { + React.useEffect(() => { + errorResetBoundary.clearReset(); + }, [errorResetBoundary]); +}; +var getHasError = ({ + result, + errorResetBoundary, + throwOnError, + query +}) => { + return result.isError && !errorResetBoundary.isReset() && !result.isFetching && (0, import_utils.shouldThrowError)(throwOnError, [result.error, query]); +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (0); +//# sourceMappingURL=errorBoundaryUtils.cjs.map + +/***/ }), + +/***/ "../node_modules/@tanstack/react-query/build/modern/index.cjs": +/*!********************************************************************!*\ + !*** ../node_modules/@tanstack/react-query/build/modern/index.cjs ***! + \********************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default")); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/index.ts +var src_exports = {}; +__export(src_exports, { + HydrationBoundary: () => import_HydrationBoundary.HydrationBoundary, + IsRestoringProvider: () => import_isRestoring.IsRestoringProvider, + QueryClientContext: () => import_QueryClientProvider.QueryClientContext, + QueryClientProvider: () => import_QueryClientProvider.QueryClientProvider, + QueryErrorResetBoundary: () => import_QueryErrorResetBoundary.QueryErrorResetBoundary, + infiniteQueryOptions: () => import_infiniteQueryOptions.infiniteQueryOptions, + queryOptions: () => import_queryOptions.queryOptions, + useInfiniteQuery: () => import_useInfiniteQuery.useInfiniteQuery, + useIsFetching: () => import_useIsFetching.useIsFetching, + useIsMutating: () => import_useMutationState.useIsMutating, + useIsRestoring: () => import_isRestoring.useIsRestoring, + useMutation: () => import_useMutation.useMutation, + useMutationState: () => import_useMutationState.useMutationState, + useQueries: () => import_useQueries.useQueries, + useQuery: () => import_useQuery.useQuery, + useQueryClient: () => import_QueryClientProvider.useQueryClient, + useQueryErrorResetBoundary: () => import_QueryErrorResetBoundary.useQueryErrorResetBoundary, + useSuspenseInfiniteQuery: () => import_useSuspenseInfiniteQuery.useSuspenseInfiniteQuery, + useSuspenseQueries: () => import_useSuspenseQueries.useSuspenseQueries, + useSuspenseQuery: () => import_useSuspenseQuery.useSuspenseQuery +}); +module.exports = __toCommonJS(src_exports); +__reExport(src_exports, __webpack_require__(/*! @tanstack/query-core */ "../node_modules/@tanstack/query-core/build/modern/index.cjs"), module.exports); +__reExport(src_exports, __webpack_require__(/*! ./types.cjs */ "../node_modules/@tanstack/react-query/build/modern/types.cjs"), module.exports); +var import_useQueries = __webpack_require__(/*! ./useQueries.cjs */ "../node_modules/@tanstack/react-query/build/modern/useQueries.cjs"); +var import_useQuery = __webpack_require__(/*! ./useQuery.cjs */ "../node_modules/@tanstack/react-query/build/modern/useQuery.cjs"); +var import_useSuspenseQuery = __webpack_require__(/*! ./useSuspenseQuery.cjs */ "../node_modules/@tanstack/react-query/build/modern/useSuspenseQuery.cjs"); +var import_useSuspenseInfiniteQuery = __webpack_require__(/*! ./useSuspenseInfiniteQuery.cjs */ "../node_modules/@tanstack/react-query/build/modern/useSuspenseInfiniteQuery.cjs"); +var import_useSuspenseQueries = __webpack_require__(/*! ./useSuspenseQueries.cjs */ "../node_modules/@tanstack/react-query/build/modern/useSuspenseQueries.cjs"); +var import_queryOptions = __webpack_require__(/*! ./queryOptions.cjs */ "../node_modules/@tanstack/react-query/build/modern/queryOptions.cjs"); +var import_infiniteQueryOptions = __webpack_require__(/*! ./infiniteQueryOptions.cjs */ "../node_modules/@tanstack/react-query/build/modern/infiniteQueryOptions.cjs"); +var import_QueryClientProvider = __webpack_require__(/*! ./QueryClientProvider.cjs */ "../node_modules/@tanstack/react-query/build/modern/QueryClientProvider.cjs"); +var import_HydrationBoundary = __webpack_require__(/*! ./HydrationBoundary.cjs */ "../node_modules/@tanstack/react-query/build/modern/HydrationBoundary.cjs"); +var import_QueryErrorResetBoundary = __webpack_require__(/*! ./QueryErrorResetBoundary.cjs */ "../node_modules/@tanstack/react-query/build/modern/QueryErrorResetBoundary.cjs"); +var import_useIsFetching = __webpack_require__(/*! ./useIsFetching.cjs */ "../node_modules/@tanstack/react-query/build/modern/useIsFetching.cjs"); +var import_useMutationState = __webpack_require__(/*! ./useMutationState.cjs */ "../node_modules/@tanstack/react-query/build/modern/useMutationState.cjs"); +var import_useMutation = __webpack_require__(/*! ./useMutation.cjs */ "../node_modules/@tanstack/react-query/build/modern/useMutation.cjs"); +var import_useInfiniteQuery = __webpack_require__(/*! ./useInfiniteQuery.cjs */ "../node_modules/@tanstack/react-query/build/modern/useInfiniteQuery.cjs"); +var import_isRestoring = __webpack_require__(/*! ./isRestoring.cjs */ "../node_modules/@tanstack/react-query/build/modern/isRestoring.cjs"); +// Annotate the CommonJS export names for ESM import in node: +0 && (0); +//# sourceMappingURL=index.cjs.map + +/***/ }), + +/***/ "../node_modules/@tanstack/react-query/build/modern/infiniteQueryOptions.cjs": +/*!***********************************************************************************!*\ + !*** ../node_modules/@tanstack/react-query/build/modern/infiniteQueryOptions.cjs ***! + \***********************************************************************************/ +/***/ ((module) => { + +"use strict"; + +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/infiniteQueryOptions.ts +var infiniteQueryOptions_exports = {}; +__export(infiniteQueryOptions_exports, { + infiniteQueryOptions: () => infiniteQueryOptions +}); +module.exports = __toCommonJS(infiniteQueryOptions_exports); +function infiniteQueryOptions(options) { + return options; +} +// Annotate the CommonJS export names for ESM import in node: +0 && (0); +//# sourceMappingURL=infiniteQueryOptions.cjs.map + +/***/ }), + +/***/ "../node_modules/@tanstack/react-query/build/modern/isRestoring.cjs": +/*!**************************************************************************!*\ + !*** ../node_modules/@tanstack/react-query/build/modern/isRestoring.cjs ***! + \**************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +"use client"; +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/isRestoring.ts +var isRestoring_exports = {}; +__export(isRestoring_exports, { + IsRestoringProvider: () => IsRestoringProvider, + useIsRestoring: () => useIsRestoring +}); +module.exports = __toCommonJS(isRestoring_exports); +var React = __toESM(__webpack_require__(/*! react */ "react"), 1); +var IsRestoringContext = React.createContext(false); +var useIsRestoring = () => React.useContext(IsRestoringContext); +var IsRestoringProvider = IsRestoringContext.Provider; +// Annotate the CommonJS export names for ESM import in node: +0 && (0); +//# sourceMappingURL=isRestoring.cjs.map + +/***/ }), + +/***/ "../node_modules/@tanstack/react-query/build/modern/queryOptions.cjs": +/*!***************************************************************************!*\ + !*** ../node_modules/@tanstack/react-query/build/modern/queryOptions.cjs ***! + \***************************************************************************/ +/***/ ((module) => { + +"use strict"; + +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/queryOptions.ts +var queryOptions_exports = {}; +__export(queryOptions_exports, { + queryOptions: () => queryOptions +}); +module.exports = __toCommonJS(queryOptions_exports); +function queryOptions(options) { + return options; +} +// Annotate the CommonJS export names for ESM import in node: +0 && (0); +//# sourceMappingURL=queryOptions.cjs.map + +/***/ }), + +/***/ "../node_modules/@tanstack/react-query/build/modern/suspense.cjs": +/*!***********************************************************************!*\ + !*** ../node_modules/@tanstack/react-query/build/modern/suspense.cjs ***! + \***********************************************************************/ +/***/ ((module) => { + +"use strict"; + +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/suspense.ts +var suspense_exports = {}; +__export(suspense_exports, { + defaultThrowOnError: () => defaultThrowOnError, + ensureStaleTime: () => ensureStaleTime, + fetchOptimistic: () => fetchOptimistic, + shouldSuspend: () => shouldSuspend, + willFetch: () => willFetch +}); +module.exports = __toCommonJS(suspense_exports); +var defaultThrowOnError = (_error, query) => typeof query.state.data === "undefined"; +var ensureStaleTime = (defaultedOptions) => { + if (defaultedOptions.suspense) { + if (typeof defaultedOptions.staleTime !== "number") { + defaultedOptions.staleTime = 1e3; + } + } +}; +var willFetch = (result, isRestoring) => result.isLoading && result.isFetching && !isRestoring; +var shouldSuspend = (defaultedOptions, result, isRestoring) => defaultedOptions?.suspense && willFetch(result, isRestoring); +var fetchOptimistic = (defaultedOptions, observer, errorResetBoundary) => observer.fetchOptimistic(defaultedOptions).catch(() => { + errorResetBoundary.clearReset(); +}); +// Annotate the CommonJS export names for ESM import in node: +0 && (0); +//# sourceMappingURL=suspense.cjs.map + +/***/ }), + +/***/ "../node_modules/@tanstack/react-query/build/modern/types.cjs": +/*!********************************************************************!*\ + !*** ../node_modules/@tanstack/react-query/build/modern/types.cjs ***! + \********************************************************************/ +/***/ ((module) => { + +"use strict"; + +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/types.ts +var types_exports = {}; +module.exports = __toCommonJS(types_exports); +//# sourceMappingURL=types.cjs.map + +/***/ }), + +/***/ "../node_modules/@tanstack/react-query/build/modern/useBaseQuery.cjs": +/*!***************************************************************************!*\ + !*** ../node_modules/@tanstack/react-query/build/modern/useBaseQuery.cjs ***! + \***************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +"use client"; +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/useBaseQuery.ts +var useBaseQuery_exports = {}; +__export(useBaseQuery_exports, { + useBaseQuery: () => useBaseQuery +}); +module.exports = __toCommonJS(useBaseQuery_exports); +var React = __toESM(__webpack_require__(/*! react */ "react"), 1); +var import_query_core = __webpack_require__(/*! @tanstack/query-core */ "../node_modules/@tanstack/query-core/build/modern/index.cjs"); +var import_QueryErrorResetBoundary = __webpack_require__(/*! ./QueryErrorResetBoundary.cjs */ "../node_modules/@tanstack/react-query/build/modern/QueryErrorResetBoundary.cjs"); +var import_QueryClientProvider = __webpack_require__(/*! ./QueryClientProvider.cjs */ "../node_modules/@tanstack/react-query/build/modern/QueryClientProvider.cjs"); +var import_isRestoring = __webpack_require__(/*! ./isRestoring.cjs */ "../node_modules/@tanstack/react-query/build/modern/isRestoring.cjs"); +var import_errorBoundaryUtils = __webpack_require__(/*! ./errorBoundaryUtils.cjs */ "../node_modules/@tanstack/react-query/build/modern/errorBoundaryUtils.cjs"); +var import_suspense = __webpack_require__(/*! ./suspense.cjs */ "../node_modules/@tanstack/react-query/build/modern/suspense.cjs"); +function useBaseQuery(options, Observer, queryClient) { + if (true) { + if (typeof options !== "object" || Array.isArray(options)) { + throw new Error( + 'Bad argument type. Starting with v5, only the "Object" form is allowed when calling query related functions. Please use the error stack to find the culprit call. More info here: https://tanstack.com/query/latest/docs/react/guides/migrating-to-v5#supports-a-single-signature-one-object' + ); + } + } + const client = (0, import_QueryClientProvider.useQueryClient)(queryClient); + const isRestoring = (0, import_isRestoring.useIsRestoring)(); + const errorResetBoundary = (0, import_QueryErrorResetBoundary.useQueryErrorResetBoundary)(); + const defaultedOptions = client.defaultQueryOptions(options); + defaultedOptions._optimisticResults = isRestoring ? "isRestoring" : "optimistic"; + (0, import_suspense.ensureStaleTime)(defaultedOptions); + (0, import_errorBoundaryUtils.ensurePreventErrorBoundaryRetry)(defaultedOptions, errorResetBoundary); + (0, import_errorBoundaryUtils.useClearResetErrorBoundary)(errorResetBoundary); + const [observer] = React.useState( + () => new Observer( + client, + defaultedOptions + ) + ); + const result = observer.getOptimisticResult(defaultedOptions); + React.useSyncExternalStore( + React.useCallback( + (onStoreChange) => { + const unsubscribe = isRestoring ? () => void 0 : observer.subscribe(import_query_core.notifyManager.batchCalls(onStoreChange)); + observer.updateResult(); + return unsubscribe; + }, + [observer, isRestoring] + ), + () => observer.getCurrentResult(), + () => observer.getCurrentResult() + ); + React.useEffect(() => { + observer.setOptions(defaultedOptions, { listeners: false }); + }, [defaultedOptions, observer]); + if ((0, import_suspense.shouldSuspend)(defaultedOptions, result, isRestoring)) { + throw (0, import_suspense.fetchOptimistic)(defaultedOptions, observer, errorResetBoundary); + } + if ((0, import_errorBoundaryUtils.getHasError)({ + result, + errorResetBoundary, + throwOnError: defaultedOptions.throwOnError, + query: observer.getCurrentQuery() + })) { + throw result.error; + } + return !defaultedOptions.notifyOnChangeProps ? observer.trackResult(result) : result; +} +// Annotate the CommonJS export names for ESM import in node: +0 && (0); +//# sourceMappingURL=useBaseQuery.cjs.map + +/***/ }), + +/***/ "../node_modules/@tanstack/react-query/build/modern/useInfiniteQuery.cjs": +/*!*******************************************************************************!*\ + !*** ../node_modules/@tanstack/react-query/build/modern/useInfiniteQuery.cjs ***! + \*******************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +"use client"; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/useInfiniteQuery.ts +var useInfiniteQuery_exports = {}; +__export(useInfiniteQuery_exports, { + useInfiniteQuery: () => useInfiniteQuery +}); +module.exports = __toCommonJS(useInfiniteQuery_exports); +var import_query_core = __webpack_require__(/*! @tanstack/query-core */ "../node_modules/@tanstack/query-core/build/modern/index.cjs"); +var import_useBaseQuery = __webpack_require__(/*! ./useBaseQuery.cjs */ "../node_modules/@tanstack/react-query/build/modern/useBaseQuery.cjs"); +function useInfiniteQuery(options, queryClient) { + return (0, import_useBaseQuery.useBaseQuery)( + options, + // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion + import_query_core.InfiniteQueryObserver, + queryClient + ); +} +// Annotate the CommonJS export names for ESM import in node: +0 && (0); +//# sourceMappingURL=useInfiniteQuery.cjs.map + +/***/ }), + +/***/ "../node_modules/@tanstack/react-query/build/modern/useIsFetching.cjs": +/*!****************************************************************************!*\ + !*** ../node_modules/@tanstack/react-query/build/modern/useIsFetching.cjs ***! + \****************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +"use client"; +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/useIsFetching.ts +var useIsFetching_exports = {}; +__export(useIsFetching_exports, { + useIsFetching: () => useIsFetching +}); +module.exports = __toCommonJS(useIsFetching_exports); +var React = __toESM(__webpack_require__(/*! react */ "react"), 1); +var import_query_core = __webpack_require__(/*! @tanstack/query-core */ "../node_modules/@tanstack/query-core/build/modern/index.cjs"); +var import_QueryClientProvider = __webpack_require__(/*! ./QueryClientProvider.cjs */ "../node_modules/@tanstack/react-query/build/modern/QueryClientProvider.cjs"); +function useIsFetching(filters, queryClient) { + const client = (0, import_QueryClientProvider.useQueryClient)(queryClient); + const queryCache = client.getQueryCache(); + return React.useSyncExternalStore( + React.useCallback( + (onStoreChange) => queryCache.subscribe(import_query_core.notifyManager.batchCalls(onStoreChange)), + [queryCache] + ), + () => client.isFetching(filters), + () => client.isFetching(filters) + ); +} +// Annotate the CommonJS export names for ESM import in node: +0 && (0); +//# sourceMappingURL=useIsFetching.cjs.map + +/***/ }), + +/***/ "../node_modules/@tanstack/react-query/build/modern/useMutation.cjs": +/*!**************************************************************************!*\ + !*** ../node_modules/@tanstack/react-query/build/modern/useMutation.cjs ***! + \**************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +"use client"; +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/useMutation.ts +var useMutation_exports = {}; +__export(useMutation_exports, { + useMutation: () => useMutation +}); +module.exports = __toCommonJS(useMutation_exports); +var React = __toESM(__webpack_require__(/*! react */ "react"), 1); +var import_query_core = __webpack_require__(/*! @tanstack/query-core */ "../node_modules/@tanstack/query-core/build/modern/index.cjs"); +var import_QueryClientProvider = __webpack_require__(/*! ./QueryClientProvider.cjs */ "../node_modules/@tanstack/react-query/build/modern/QueryClientProvider.cjs"); +var import_utils = __webpack_require__(/*! ./utils.cjs */ "../node_modules/@tanstack/react-query/build/modern/utils.cjs"); +function useMutation(options, queryClient) { + const client = (0, import_QueryClientProvider.useQueryClient)(queryClient); + const [observer] = React.useState( + () => new import_query_core.MutationObserver( + client, + options + ) + ); + React.useEffect(() => { + observer.setOptions(options); + }, [observer, options]); + const result = React.useSyncExternalStore( + React.useCallback( + (onStoreChange) => observer.subscribe(import_query_core.notifyManager.batchCalls(onStoreChange)), + [observer] + ), + () => observer.getCurrentResult(), + () => observer.getCurrentResult() + ); + const mutate = React.useCallback( + (variables, mutateOptions) => { + observer.mutate(variables, mutateOptions).catch(noop); + }, + [observer] + ); + if (result.error && (0, import_utils.shouldThrowError)(observer.options.throwOnError, [result.error])) { + throw result.error; + } + return { ...result, mutate, mutateAsync: result.mutate }; +} +function noop() { +} +// Annotate the CommonJS export names for ESM import in node: +0 && (0); +//# sourceMappingURL=useMutation.cjs.map + +/***/ }), + +/***/ "../node_modules/@tanstack/react-query/build/modern/useMutationState.cjs": +/*!*******************************************************************************!*\ + !*** ../node_modules/@tanstack/react-query/build/modern/useMutationState.cjs ***! + \*******************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +"use client"; +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/useMutationState.ts +var useMutationState_exports = {}; +__export(useMutationState_exports, { + useIsMutating: () => useIsMutating, + useMutationState: () => useMutationState +}); +module.exports = __toCommonJS(useMutationState_exports); +var React = __toESM(__webpack_require__(/*! react */ "react"), 1); +var import_query_core = __webpack_require__(/*! @tanstack/query-core */ "../node_modules/@tanstack/query-core/build/modern/index.cjs"); +var import_QueryClientProvider = __webpack_require__(/*! ./QueryClientProvider.cjs */ "../node_modules/@tanstack/react-query/build/modern/QueryClientProvider.cjs"); +function useIsMutating(filters, queryClient) { + const client = (0, import_QueryClientProvider.useQueryClient)(queryClient); + return useMutationState( + { filters: { ...filters, status: "pending" } }, + client + ).length; +} +function getResult(mutationCache, options) { + return mutationCache.findAll(options.filters).map( + (mutation) => options.select ? options.select( + mutation + ) : mutation.state + ); +} +function useMutationState(options = {}, queryClient) { + const mutationCache = (0, import_QueryClientProvider.useQueryClient)(queryClient).getMutationCache(); + const optionsRef = React.useRef(options); + const result = React.useRef(); + if (!result.current) { + result.current = getResult(mutationCache, options); + } + React.useEffect(() => { + optionsRef.current = options; + }); + return React.useSyncExternalStore( + React.useCallback( + (onStoreChange) => mutationCache.subscribe(() => { + const nextResult = (0, import_query_core.replaceEqualDeep)( + result.current, + getResult(mutationCache, optionsRef.current) + ); + if (result.current !== nextResult) { + result.current = nextResult; + import_query_core.notifyManager.schedule(onStoreChange); + } + }), + [mutationCache] + ), + () => result.current, + () => result.current + ); +} +// Annotate the CommonJS export names for ESM import in node: +0 && (0); +//# sourceMappingURL=useMutationState.cjs.map + +/***/ }), + +/***/ "../node_modules/@tanstack/react-query/build/modern/useQueries.cjs": +/*!*************************************************************************!*\ + !*** ../node_modules/@tanstack/react-query/build/modern/useQueries.cjs ***! + \*************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +"use client"; +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/useQueries.ts +var useQueries_exports = {}; +__export(useQueries_exports, { + useQueries: () => useQueries +}); +module.exports = __toCommonJS(useQueries_exports); +var React = __toESM(__webpack_require__(/*! react */ "react"), 1); +var import_query_core = __webpack_require__(/*! @tanstack/query-core */ "../node_modules/@tanstack/query-core/build/modern/index.cjs"); +var import_QueryClientProvider = __webpack_require__(/*! ./QueryClientProvider.cjs */ "../node_modules/@tanstack/react-query/build/modern/QueryClientProvider.cjs"); +var import_isRestoring = __webpack_require__(/*! ./isRestoring.cjs */ "../node_modules/@tanstack/react-query/build/modern/isRestoring.cjs"); +var import_QueryErrorResetBoundary = __webpack_require__(/*! ./QueryErrorResetBoundary.cjs */ "../node_modules/@tanstack/react-query/build/modern/QueryErrorResetBoundary.cjs"); +var import_errorBoundaryUtils = __webpack_require__(/*! ./errorBoundaryUtils.cjs */ "../node_modules/@tanstack/react-query/build/modern/errorBoundaryUtils.cjs"); +var import_suspense = __webpack_require__(/*! ./suspense.cjs */ "../node_modules/@tanstack/react-query/build/modern/suspense.cjs"); +function useQueries({ + queries, + ...options +}, queryClient) { + const client = (0, import_QueryClientProvider.useQueryClient)(queryClient); + const isRestoring = (0, import_isRestoring.useIsRestoring)(); + const errorResetBoundary = (0, import_QueryErrorResetBoundary.useQueryErrorResetBoundary)(); + const defaultedQueries = React.useMemo( + () => queries.map((opts) => { + const defaultedOptions = client.defaultQueryOptions(opts); + defaultedOptions._optimisticResults = isRestoring ? "isRestoring" : "optimistic"; + return defaultedOptions; + }), + [queries, client, isRestoring] + ); + defaultedQueries.forEach((query) => { + (0, import_suspense.ensureStaleTime)(query); + (0, import_errorBoundaryUtils.ensurePreventErrorBoundaryRetry)(query, errorResetBoundary); + }); + (0, import_errorBoundaryUtils.useClearResetErrorBoundary)(errorResetBoundary); + const [observer] = React.useState( + () => new import_query_core.QueriesObserver( + client, + defaultedQueries, + options + ) + ); + const [optimisticResult, getCombinedResult, trackResult] = observer.getOptimisticResult(defaultedQueries); + React.useSyncExternalStore( + React.useCallback( + (onStoreChange) => isRestoring ? () => void 0 : observer.subscribe(import_query_core.notifyManager.batchCalls(onStoreChange)), + [observer, isRestoring] + ), + () => observer.getCurrentResult(), + () => observer.getCurrentResult() + ); + React.useEffect(() => { + observer.setQueries( + defaultedQueries, + options, + { + listeners: false + } + ); + }, [defaultedQueries, options, observer]); + const shouldAtLeastOneSuspend = optimisticResult.some( + (result, index) => (0, import_suspense.shouldSuspend)(defaultedQueries[index], result, isRestoring) + ); + const suspensePromises = shouldAtLeastOneSuspend ? optimisticResult.flatMap((result, index) => { + const opts = defaultedQueries[index]; + if (opts) { + const queryObserver = new import_query_core.QueryObserver(client, opts); + if ((0, import_suspense.shouldSuspend)(opts, result, isRestoring)) { + return (0, import_suspense.fetchOptimistic)(opts, queryObserver, errorResetBoundary); + } else if ((0, import_suspense.willFetch)(result, isRestoring)) { + void (0, import_suspense.fetchOptimistic)(opts, queryObserver, errorResetBoundary); + } + } + return []; + }) : []; + if (suspensePromises.length > 0) { + throw Promise.all(suspensePromises); + } + const observerQueries = observer.getQueries(); + const firstSingleResultWhichShouldThrow = optimisticResult.find( + (result, index) => (0, import_errorBoundaryUtils.getHasError)({ + result, + errorResetBoundary, + throwOnError: defaultedQueries[index]?.throwOnError ?? false, + query: observerQueries[index] + }) + ); + if (firstSingleResultWhichShouldThrow?.error) { + throw firstSingleResultWhichShouldThrow.error; + } + return getCombinedResult(trackResult()); +} +// Annotate the CommonJS export names for ESM import in node: +0 && (0); +//# sourceMappingURL=useQueries.cjs.map + +/***/ }), + +/***/ "../node_modules/@tanstack/react-query/build/modern/useQuery.cjs": +/*!***********************************************************************!*\ + !*** ../node_modules/@tanstack/react-query/build/modern/useQuery.cjs ***! + \***********************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +"use client"; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/useQuery.ts +var useQuery_exports = {}; +__export(useQuery_exports, { + useQuery: () => useQuery +}); +module.exports = __toCommonJS(useQuery_exports); +var import_query_core = __webpack_require__(/*! @tanstack/query-core */ "../node_modules/@tanstack/query-core/build/modern/index.cjs"); +var import_useBaseQuery = __webpack_require__(/*! ./useBaseQuery.cjs */ "../node_modules/@tanstack/react-query/build/modern/useBaseQuery.cjs"); +function useQuery(options, queryClient) { + return (0, import_useBaseQuery.useBaseQuery)(options, import_query_core.QueryObserver, queryClient); +} +// Annotate the CommonJS export names for ESM import in node: +0 && (0); +//# sourceMappingURL=useQuery.cjs.map + +/***/ }), + +/***/ "../node_modules/@tanstack/react-query/build/modern/useSuspenseInfiniteQuery.cjs": +/*!***************************************************************************************!*\ + !*** ../node_modules/@tanstack/react-query/build/modern/useSuspenseInfiniteQuery.cjs ***! + \***************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +"use client"; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/useSuspenseInfiniteQuery.ts +var useSuspenseInfiniteQuery_exports = {}; +__export(useSuspenseInfiniteQuery_exports, { + useSuspenseInfiniteQuery: () => useSuspenseInfiniteQuery +}); +module.exports = __toCommonJS(useSuspenseInfiniteQuery_exports); +var import_query_core = __webpack_require__(/*! @tanstack/query-core */ "../node_modules/@tanstack/query-core/build/modern/index.cjs"); +var import_useBaseQuery = __webpack_require__(/*! ./useBaseQuery.cjs */ "../node_modules/@tanstack/react-query/build/modern/useBaseQuery.cjs"); +var import_suspense = __webpack_require__(/*! ./suspense.cjs */ "../node_modules/@tanstack/react-query/build/modern/suspense.cjs"); +function useSuspenseInfiniteQuery(options, queryClient) { + return (0, import_useBaseQuery.useBaseQuery)( + { + ...options, + enabled: true, + suspense: true, + throwOnError: import_suspense.defaultThrowOnError + }, + // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion + import_query_core.InfiniteQueryObserver, + queryClient + ); +} +// Annotate the CommonJS export names for ESM import in node: +0 && (0); +//# sourceMappingURL=useSuspenseInfiniteQuery.cjs.map + +/***/ }), + +/***/ "../node_modules/@tanstack/react-query/build/modern/useSuspenseQueries.cjs": +/*!*********************************************************************************!*\ + !*** ../node_modules/@tanstack/react-query/build/modern/useSuspenseQueries.cjs ***! + \*********************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +"use client"; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/useSuspenseQueries.ts +var useSuspenseQueries_exports = {}; +__export(useSuspenseQueries_exports, { + useSuspenseQueries: () => useSuspenseQueries +}); +module.exports = __toCommonJS(useSuspenseQueries_exports); +var import_useQueries = __webpack_require__(/*! ./useQueries.cjs */ "../node_modules/@tanstack/react-query/build/modern/useQueries.cjs"); +var import_suspense = __webpack_require__(/*! ./suspense.cjs */ "../node_modules/@tanstack/react-query/build/modern/suspense.cjs"); +function useSuspenseQueries(options, queryClient) { + return (0, import_useQueries.useQueries)( + { + ...options, + queries: options.queries.map((query) => ({ + ...query, + suspense: true, + throwOnError: import_suspense.defaultThrowOnError, + enabled: true + })) + }, + queryClient + ); +} +// Annotate the CommonJS export names for ESM import in node: +0 && (0); +//# sourceMappingURL=useSuspenseQueries.cjs.map + +/***/ }), + +/***/ "../node_modules/@tanstack/react-query/build/modern/useSuspenseQuery.cjs": +/*!*******************************************************************************!*\ + !*** ../node_modules/@tanstack/react-query/build/modern/useSuspenseQuery.cjs ***! + \*******************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +"use client"; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/useSuspenseQuery.ts +var useSuspenseQuery_exports = {}; +__export(useSuspenseQuery_exports, { + useSuspenseQuery: () => useSuspenseQuery +}); +module.exports = __toCommonJS(useSuspenseQuery_exports); +var import_query_core = __webpack_require__(/*! @tanstack/query-core */ "../node_modules/@tanstack/query-core/build/modern/index.cjs"); +var import_useBaseQuery = __webpack_require__(/*! ./useBaseQuery.cjs */ "../node_modules/@tanstack/react-query/build/modern/useBaseQuery.cjs"); +var import_suspense = __webpack_require__(/*! ./suspense.cjs */ "../node_modules/@tanstack/react-query/build/modern/suspense.cjs"); +function useSuspenseQuery(options, queryClient) { + return (0, import_useBaseQuery.useBaseQuery)( + { + ...options, + enabled: true, + suspense: true, + throwOnError: import_suspense.defaultThrowOnError + }, + import_query_core.QueryObserver, + queryClient + ); +} +// Annotate the CommonJS export names for ESM import in node: +0 && (0); +//# sourceMappingURL=useSuspenseQuery.cjs.map + +/***/ }), + +/***/ "../node_modules/@tanstack/react-query/build/modern/utils.cjs": +/*!********************************************************************!*\ + !*** ../node_modules/@tanstack/react-query/build/modern/utils.cjs ***! + \********************************************************************/ +/***/ ((module) => { + +"use strict"; + +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/utils.ts +var utils_exports = {}; +__export(utils_exports, { + shouldThrowError: () => shouldThrowError +}); +module.exports = __toCommonJS(utils_exports); +function shouldThrowError(throwError, params) { + if (typeof throwError === "function") { + return throwError(...params); + } + return !!throwError; +} +// Annotate the CommonJS export names for ESM import in node: +0 && (0); +//# sourceMappingURL=utils.cjs.map + +/***/ }) + +/******/ }); +/************************************************************************/ +/******/ // The module cache +/******/ var __webpack_module_cache__ = {}; +/******/ +/******/ // The require function +/******/ function __webpack_require__(moduleId) { +/******/ // Check if module is in cache +/******/ var cachedModule = __webpack_module_cache__[moduleId]; +/******/ if (cachedModule !== undefined) { +/******/ return cachedModule.exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = __webpack_module_cache__[moduleId] = { +/******/ // no module.id needed +/******/ // no module.loaded needed +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__); +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/************************************************************************/ +var __webpack_exports__ = {}; +// This entry need to be wrapped in an IIFE because it need to be in strict mode. +(() => { +"use strict"; +/*!***************************************************!*\ + !*** ../modules/notifications/assets/js/admin.js ***! + \***************************************************/ + + +var _barButtonNotification = __webpack_require__(/*! ./components/bar-button-notification */ "../modules/notifications/assets/js/components/bar-button-notification.js"); +window.elementorNotificationCenter = { + BarButtonNotification: _barButtonNotification.BarButtonNotification +}; +})(); + +/******/ })() +; +//# sourceMappingURL=admin-notifications.js.map \ No newline at end of file diff --git a/wp-content/plugins/elementor/assets/js/admin-notifications.min.js b/wp-content/plugins/elementor/assets/js/admin-notifications.min.js new file mode 100644 index 0000000..a4692a6 --- /dev/null +++ b/wp-content/plugins/elementor/assets/js/admin-notifications.min.js @@ -0,0 +1,2 @@ +/*! elementor - v3.20.0 - 26-03-2024 */ +(()=>{var e={61650:(e,t,r)=>{"use strict";var s,n=Object.defineProperty,i=Object.getOwnPropertyDescriptor,a=Object.getOwnPropertyNames,o=Object.prototype.hasOwnProperty,u={};((e,t)=>{for(var r in t)n(e,r,{get:t[r],enumerable:!0})})(u,{QueryClient:()=>l.QueryClient,QueryClientProvider:()=>l.QueryClientProvider,createQueryClient:()=>createQueryClient,useInfiniteQuery:()=>l.useInfiniteQuery,useMutation:()=>l.useMutation,useQuery:()=>l.useQuery,useQueryClient:()=>l.useQueryClient}),e.exports=(s=u,((e,t,r,s)=>{if(t&&"object"==typeof t||"function"==typeof t)for(let u of a(t))o.call(e,u)||u===r||n(e,u,{get:()=>t[u],enumerable:!(s=i(t,u))||s.enumerable});return e})(n({},"__esModule",{value:!0}),s));var c=r(39937),l=r(39937);function createQueryClient(){return new c.QueryClient({defaultOptions:{queries:{refetchOnWindowFocus:!1,refetchOnReconnect:!1}}})}},5418:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getNotifications=void 0;t.getNotifications=function getNotifications(){return function request(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return new Promise((function(r,s){elementorCommon.ajax.addRequest(e,{success:r,error:s,data:t})}))}("notifications_get")}},13849:(e,t,r)=>{"use strict";var s=r(23615),n=r(73203),i=r(7501);Object.defineProperty(t,"__esModule",{value:!0}),t.BarButtonNotification=void 0;var a=function _interopRequireWildcard(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!==i(e)&&"function"!=typeof e)return{default:e};var r=_getRequireWildcardCache(t);if(r&&r.has(e))return r.get(e);var s={},n=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var a in e)if("default"!==a&&Object.prototype.hasOwnProperty.call(e,a)){var o=n?Object.getOwnPropertyDescriptor(e,a):null;o&&(o.get||o.set)?Object.defineProperty(s,a,o):s[a]=e[a]}s.default=e,r&&r.set(e,s);return s}(r(87363)),o=n(r(40131)),u=r(49005),c=r(36626),l=r(17564);function _getRequireWildcardCache(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,r=new WeakMap;return(_getRequireWildcardCache=function _getRequireWildcardCache(e){return e?r:t})(e)}var h=function BarButtonNotification(e){var t=e.defaultIsRead,r=(0,a.useState)(!1),s=(0,o.default)(r,2),n=s[0],i=s[1],h=(0,a.useState)(t),p=(0,o.default)(h,2),f=p[0],d=p[1];return a.default.createElement(a.default.Fragment,null,a.default.createElement("button",{className:"e-admin-top-bar__bar-button",style:{backgroundColor:"transparent",border:"none"},onClick:function onClick(e){e.preventDefault(),i(!0)}},a.default.createElement(c.Badge,{color:"primary",variant:"dot",invisible:f,sx:{mx:.5}},a.default.createElement(l.GiftIcon,{fontSize:"inherit"})),a.default.createElement("span",{className:"e-admin-top-bar__bar-button-title"},e.children)),a.default.createElement(u.WhatsNew,{isOpen:n,setIsOpen:i,setIsRead:d}))};t.BarButtonNotification=h,h.propTypes={defaultIsRead:s.bool,children:s.any.isRequired}},65059:(e,t,r)=>{"use strict";var s=r(73203);Object.defineProperty(t,"__esModule",{value:!0}),t.WhatsNewDrawerContent=void 0;var n=s(r(87363)),i=r(61650),a=r(5418),o=r(36626),u=r(38308);t.WhatsNewDrawerContent=function WhatsNewDrawerContent(){var e=(0,i.useQuery)({queryKey:["e-notifications"],queryFn:a.getNotifications}),t=e.isPending,r=e.error,s=e.data;return t?n.default.createElement(o.Box,null,n.default.createElement(o.LinearProgress,{color:"secondary"})):r?n.default.createElement(o.Box,null,"An error has occurred: ",r):s.map((function(e,t){return n.default.createElement(u.WhatsNewItem,{key:t,item:e,itemIndex:t,itemsLength:s.length})}))}},78596:(e,t,r)=>{"use strict";var s=r(23615),n=r(73203);Object.defineProperty(t,"__esModule",{value:!0}),t.WhatsNewItemChips=void 0;var i=n(r(87363)),a=n(r(73119)),o=r(36626),u=function WhatsNewItemChips(e){var t=e.chipPlan,r=e.chipTags,s=e.itemIndex,n=[];return t&&n.push({color:"promotion",size:"small",label:t}),r&&r.forEach((function(e){n.push({variant:"outlined",size:"small",label:e})})),n.length?i.default.createElement(o.Stack,{direction:"row",flexWrap:"wrap",gap:1,sx:{pb:1}},n.map((function(e,t){return i.default.createElement(o.Chip,(0,a.default)({key:"chip-".concat(s).concat(t)},e))}))):null};t.WhatsNewItemChips=u,u.propTypes={chipPlan:s.string,chipTags:s.array,itemIndex:s.number.isRequired}},48235:(e,t,r)=>{"use strict";var s=r(23615),n=r(73203);Object.defineProperty(t,"__esModule",{value:!0}),t.WhatsNewItemThumbnail=void 0;var i=n(r(87363)),a=r(36626),o=r(72331),u=function WhatsNewItemThumbnail(e){var t=e.imageSrc,r=e.title,s=e.link;return i.default.createElement(a.Box,{sx:{pb:2}},i.default.createElement(o.WrapperWithLink,{link:s},i.default.createElement("img",{src:t,alt:r,style:{maxWidth:"100%"}})))};t.WhatsNewItemThumbnail=u,u.propTypes={imageSrc:s.string.isRequired,title:s.string.isRequired,link:s.string}},87691:(e,t,r)=>{"use strict";var s=r(23615),n=r(73203);Object.defineProperty(t,"__esModule",{value:!0}),t.WhatsNewItemTopicLine=void 0;var i=n(r(87363)),a=r(36626),o=function WhatsNewItemTopicLine(e){var t=e.topic,r=e.date;return i.default.createElement(a.Stack,{direction:"row",divider:i.default.createElement(a.Divider,{orientation:"vertical",flexItem:!0}),spacing:1,color:"text.tertiary",sx:{pb:1}},t&&i.default.createElement(a.Box,null,t),r&&i.default.createElement(a.Box,null,r))};t.WhatsNewItemTopicLine=o,o.propTypes={topic:s.string,date:s.string}},38308:(e,t,r)=>{"use strict";var s=r(23615),n=r(73203);Object.defineProperty(t,"__esModule",{value:!0}),t.WhatsNewItem=void 0;var i=n(r(87363)),a=r(36626),o=r(87691),u=r(72331),c=r(48235),l=r(78596),h=function WhatsNewItem(e){var t=e.item,r=e.itemIndex,s=e.itemsLength;return i.default.createElement(a.Box,{key:r,display:"flex",flexDirection:"column",sx:{pt:2}},(t.topic||t.date)&&i.default.createElement(o.WhatsNewItemTopicLine,{topic:t.topic,date:t.date}),i.default.createElement(u.WrapperWithLink,{link:t.link},i.default.createElement(a.Typography,{variant:"subtitle1",sx:{pb:2}},t.title)),t.imageSrc&&i.default.createElement(c.WhatsNewItemThumbnail,{imageSrc:t.imageSrc,link:t.link,title:t.title}),i.default.createElement(l.WhatsNewItemChips,{chipPlan:t.chipPlan,chipTags:t.chipTags,itemIndex:r}),t.description&&i.default.createElement(a.Typography,{variant:"body2",color:"text.secondary",sx:{pb:2}},t.description,t.readMoreText&&i.default.createElement(i.default.Fragment,null," ",i.default.createElement(a.Link,{href:t.link,color:"info.main",target:"_blank"},t.readMoreText))),t.cta&&t.ctaLink&&i.default.createElement(a.Box,{sx:{pb:2}},i.default.createElement(a.Button,{href:t.ctaLink,target:"_blank",variant:"contained",size:"small",color:"promotion"},t.cta)),r!==s-1&&i.default.createElement(a.Divider,{sx:{my:1}}))};t.WhatsNewItem=h,h.propTypes={item:s.object.isRequired,itemIndex:s.number.isRequired,itemsLength:s.number.isRequired}},41500:(e,t,r)=>{"use strict";var s=r(23615),n=r(73203);Object.defineProperty(t,"__esModule",{value:!0}),t.WhatsNewTopBar=void 0;var i=n(r(87363)),a=r(36626),o=r(38003),u=r(64888),c=function WhatsNewTopBar(e){var t=e.setIsOpen;return i.default.createElement(i.default.Fragment,null,i.default.createElement(a.AppBar,{elevation:0,position:"sticky",sx:{backgroundColor:"background.default"}},i.default.createElement(a.Toolbar,{variant:"dense"},i.default.createElement(a.Typography,{variant:"overline",sx:{flexGrow:1}},(0,o.__)("What's New","elementor")),i.default.createElement(a.IconButton,{"aria-label":"close",size:"small",onClick:function onClick(){return t(!1)}},i.default.createElement(u.XIcon,null)))),i.default.createElement(a.Divider,null))};t.WhatsNewTopBar=c,c.propTypes={setIsOpen:s.func.isRequired}},49005:(e,t,r)=>{"use strict";var s=r(23615),n=r(7501);Object.defineProperty(t,"__esModule",{value:!0}),t.WhatsNew=void 0;var i=function _interopRequireWildcard(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!==n(e)&&"function"!=typeof e)return{default:e};var r=_getRequireWildcardCache(t);if(r&&r.has(e))return r.get(e);var s={},i=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var a in e)if("default"!==a&&Object.prototype.hasOwnProperty.call(e,a)){var o=i?Object.getOwnPropertyDescriptor(e,a):null;o&&(o.get||o.set)?Object.defineProperty(s,a,o):s[a]=e[a]}s.default=e,r&&r.set(e,s);return s}(r(87363)),a=r(36626),o=r(61650),u=r(41500),c=r(65059);function _getRequireWildcardCache(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,r=new WeakMap;return(_getRequireWildcardCache=function _getRequireWildcardCache(e){return e?r:t})(e)}var l=new o.QueryClient({defaultOptions:{queries:{refetchOnWindowFocus:!1,retry:!1,staleTime:18e5}}}),h=function WhatsNew(e){var t,r,s=e.isOpen,n=e.setIsOpen,h=e.setIsRead,p=e.anchorPosition,f=void 0===p?"right":p;return(0,i.useEffect)((function(){s&&h(!0)}),[s,h]),i.default.createElement(i.default.Fragment,null,i.default.createElement(o.QueryClientProvider,{client:l},i.default.createElement(a.DirectionProvider,{rtl:elementorCommon.config.isRTL},i.default.createElement(a.ThemeProvider,{colorScheme:(null===(t=window.elementor)||void 0===t||null===(r=t.getPreferences)||void 0===r?void 0:r.call(t,"ui_theme"))||"auto"},i.default.createElement(a.Drawer,{anchor:f,open:s,onClose:function onClose(){return n(!1)},ModalProps:{style:{zIndex:999999}}},i.default.createElement(a.Box,{sx:{width:320,backgroundColor:"background.default"},role:"presentation"},i.default.createElement(u.WhatsNewTopBar,{setIsOpen:n}),i.default.createElement(a.Box,{sx:{padding:"16px"}},i.default.createElement(c.WhatsNewDrawerContent,null))))))))};t.WhatsNew=h,h.propTypes={isOpen:s.bool.isRequired,setIsOpen:s.func.isRequired,setIsRead:s.func.isRequired,anchorPosition:s.oneOf(["left","top","right","bottom"])}},72331:(e,t,r)=>{"use strict";var s=r(23615),n=r(73203);Object.defineProperty(t,"__esModule",{value:!0}),t.WrapperWithLink=void 0;var i=n(r(87363)),a=r(36626),o=function WrapperWithLink(e){var t=e.link,r=e.children;return t?i.default.createElement(a.Link,{href:t,target:"_blank",underline:"none",color:"inherit",sx:{"&:hover":{color:"inherit"}}},r):r};t.WrapperWithLink=o,o.propTypes={link:s.string,children:s.any.isRequired}},17564:(e,t,r)=>{"use strict";var s=r(73203),n=r(7501);Object.defineProperty(t,"__esModule",{value:!0}),t.GiftIcon=void 0;var i=function _interopRequireWildcard(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!==n(e)&&"function"!=typeof e)return{default:e};var r=_getRequireWildcardCache(t);if(r&&r.has(e))return r.get(e);var s={},i=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var a in e)if("default"!==a&&Object.prototype.hasOwnProperty.call(e,a)){var o=i?Object.getOwnPropertyDescriptor(e,a):null;o&&(o.get||o.set)?Object.defineProperty(s,a,o):s[a]=e[a]}s.default=e,r&&r.set(e,s);return s}(r(87363)),a=s(r(73119)),o=r(36626);function _getRequireWildcardCache(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,r=new WeakMap;return(_getRequireWildcardCache=function _getRequireWildcardCache(e){return e?r:t})(e)}var u=(0,i.forwardRef)((function(e,t){return i.default.createElement(o.SvgIcon,(0,a.default)({viewBox:"0 0 24 24"},e,{ref:t}),i.default.createElement("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M9.65527 4.84484C8.95951 4.07178 8.20923 3.73771 7.51306 3.74984L7.5 3.75007C7.03587 3.75007 6.59075 3.93433 6.26256 4.26252C5.93437 4.59071 5.75 5.03583 5.75 5.49995C5.75 5.96408 5.93437 6.4092 6.26256 6.73739C6.59075 7.06558 7.03587 7.24995 7.5 7.24995C7.50295 7.24995 7.5059 7.24997 7.50884 7.25001H11.0002C10.6592 6.26394 10.1939 5.44328 9.65527 4.84484ZM11.25 8.75001V11.25H4C3.86193 11.25 3.75 11.1381 3.75 11V9.00001C3.75 8.86193 3.86193 8.75001 4 8.75001H11.25ZM4.25 12.75H4C3.0335 12.75 2.25 11.9665 2.25 11V9.00001C2.25 8.03351 3.0335 7.25001 4 7.25001H4.76141C4.43004 6.73144 4.25 6.12498 4.25 5.49995C4.25 4.638 4.59241 3.81135 5.2019 3.20186C5.80984 2.59392 6.63384 2.2517 7.49342 2.24996C8.72414 2.23069 9.86213 2.83242 10.7702 3.84139C11.2484 4.37275 11.6608 5.01284 12 5.73103C12.3392 5.01284 12.7516 4.37275 13.2298 3.84139C14.1379 2.83242 15.2759 2.23069 16.5066 2.24996C17.3662 2.2517 18.1902 2.59392 18.7981 3.20186C19.4076 3.81135 19.75 4.638 19.75 5.49995C19.75 6.12498 19.57 6.73144 19.2386 7.25001H20C20.9665 7.25001 21.75 8.03351 21.75 9.00001V11C21.75 11.9665 20.9665 12.75 20 12.75H19.75V19C19.75 19.7294 19.4603 20.4288 18.9445 20.9445C18.4288 21.4603 17.7293 21.75 17 21.75H7C6.27065 21.75 5.57118 21.4603 5.05546 20.9445C4.53973 20.4288 4.25 19.7294 4.25 19V12.75ZM11.25 20.25H7C6.66848 20.25 6.35054 20.1183 6.11612 19.8839C5.8817 19.6495 5.75 19.3315 5.75 19V12.75H11.25V20.25ZM12.75 20.25H17C17.3315 20.25 17.6495 20.1183 17.8839 19.8839C18.1183 19.6495 18.25 19.3315 18.25 19V12.75H12.75V20.25ZM12.75 11.25V8.75001H20C20.1381 8.75001 20.25 8.86193 20.25 9.00001V11C20.25 11.1381 20.1381 11.25 20 11.25H12.75ZM16.4912 7.25001C16.4941 7.24997 16.497 7.24995 16.5 7.24995C16.9641 7.24995 17.4092 7.06558 17.7374 6.73739C18.0656 6.4092 18.25 5.96408 18.25 5.49995C18.25 5.03583 18.0656 4.59071 17.7374 4.26252C17.4092 3.93433 16.9641 3.74995 16.5 3.74995H16.4869C15.7908 3.73783 15.0405 4.07178 14.3447 4.84484C13.8061 5.44328 13.3408 6.26394 12.9998 7.25001H16.4912Z"}))}));t.GiftIcon=u},64888:(e,t,r)=>{"use strict";var s=r(73203),n=r(7501);Object.defineProperty(t,"__esModule",{value:!0}),t.XIcon=void 0;var i=function _interopRequireWildcard(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!==n(e)&&"function"!=typeof e)return{default:e};var r=_getRequireWildcardCache(t);if(r&&r.has(e))return r.get(e);var s={},i=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var a in e)if("default"!==a&&Object.prototype.hasOwnProperty.call(e,a)){var o=i?Object.getOwnPropertyDescriptor(e,a):null;o&&(o.get||o.set)?Object.defineProperty(s,a,o):s[a]=e[a]}s.default=e,r&&r.set(e,s);return s}(r(87363)),a=s(r(73119)),o=r(36626);function _getRequireWildcardCache(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,r=new WeakMap;return(_getRequireWildcardCache=function _getRequireWildcardCache(e){return e?r:t})(e)}var u=(0,i.forwardRef)((function(e,t){return i.default.createElement(o.SvgIcon,(0,a.default)({viewBox:"0 0 24 24"},e,{ref:t}),i.default.createElement("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M18.5303 5.46967C18.8232 5.76256 18.8232 6.23744 18.5303 6.53033L6.53033 18.5303C6.23744 18.8232 5.76256 18.8232 5.46967 18.5303C5.17678 18.2374 5.17678 17.7626 5.46967 17.4697L17.4697 5.46967C17.7626 5.17678 18.2374 5.17678 18.5303 5.46967Z"}),i.default.createElement("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M5.46967 5.46967C5.76256 5.17678 6.23744 5.17678 6.53033 5.46967L18.5303 17.4697C18.8232 17.7626 18.8232 18.2374 18.5303 18.5303C18.2374 18.8232 17.7626 18.8232 17.4697 18.5303L5.46967 6.53033C5.17678 6.23744 5.17678 5.76256 5.46967 5.46967Z"}))}));t.XIcon=u},58772:(e,t,r)=>{"use strict";var s=r(90331);function emptyFunction(){}function emptyFunctionWithReset(){}emptyFunctionWithReset.resetWarningCache=emptyFunction,e.exports=function(){function shim(e,t,r,n,i,a){if(a!==s){var o=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw o.name="Invariant Violation",o}}function getShim(){return shim}shim.isRequired=shim;var e={array:shim,bigint:shim,bool:shim,func:shim,number:shim,object:shim,string:shim,symbol:shim,any:shim,arrayOf:getShim,element:shim,elementType:shim,instanceOf:getShim,node:shim,objectOf:getShim,oneOf:getShim,oneOfType:getShim,shape:getShim,exact:getShim,checkPropTypes:emptyFunctionWithReset,resetWarningCache:emptyFunction};return e.PropTypes=e,e}},23615:(e,t,r)=>{e.exports=r(58772)()},90331:e=>{"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},87363:e=>{"use strict";e.exports=React},36626:e=>{"use strict";e.exports=elementorV2.ui},38003:e=>{"use strict";e.exports=wp.i18n},98106:e=>{e.exports=function _arrayLikeToArray(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,s=new Array(t);r{e.exports=function _arrayWithHoles(e){if(Array.isArray(e))return e},e.exports.__esModule=!0,e.exports.default=e.exports},73119:e=>{function _extends(){return e.exports=_extends=Object.assign?Object.assign.bind():function(e){for(var t=1;t{e.exports=function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}},e.exports.__esModule=!0,e.exports.default=e.exports},40608:e=>{e.exports=function _iterableToArrayLimit(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var s,n,i,a,o=[],u=!0,c=!1;try{if(i=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;u=!1}else for(;!(u=(s=i.call(r)).done)&&(o.push(s.value),o.length!==t);u=!0);}catch(e){c=!0,n=e}finally{try{if(!u&&null!=r.return&&(a=r.return(),Object(a)!==a))return}finally{if(c)throw n}}return o}},e.exports.__esModule=!0,e.exports.default=e.exports},56894:e=>{e.exports=function _nonIterableRest(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")},e.exports.__esModule=!0,e.exports.default=e.exports},40131:(e,t,r)=>{var s=r(17358),n=r(40608),i=r(35068),a=r(56894);e.exports=function _slicedToArray(e,t){return s(e)||n(e,t)||i(e,t)||a()},e.exports.__esModule=!0,e.exports.default=e.exports},7501:e=>{function _typeof(t){return e.exports=_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},e.exports.__esModule=!0,e.exports.default=e.exports,_typeof(t)}e.exports=_typeof,e.exports.__esModule=!0,e.exports.default=e.exports},35068:(e,t,r)=>{var s=r(98106);e.exports=function _unsupportedIterableToArray(e,t){if(e){if("string"==typeof e)return s(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?s(e,t):void 0}},e.exports.__esModule=!0,e.exports.default=e.exports},62238:(e,t,r)=>{"use strict";var s,n=Object.defineProperty,i=Object.getOwnPropertyDescriptor,a=Object.getOwnPropertyNames,o=Object.prototype.hasOwnProperty,u={};((e,t)=>{for(var r in t)n(e,r,{get:t[r],enumerable:!0})})(u,{FocusManager:()=>h,focusManager:()=>p}),e.exports=(s=u,((e,t,r,s)=>{if(t&&"object"==typeof t||"function"==typeof t)for(let u of a(t))o.call(e,u)||u===r||n(e,u,{get:()=>t[u],enumerable:!(s=i(t,u))||s.enumerable});return e})(n({},"__esModule",{value:!0}),s));var c=r(33949),l=r(14525),h=class extends c.Subscribable{#e;#t;#r;constructor(){super(),this.#r=e=>{if(!l.isServer&&window.addEventListener){const listener=()=>e();return window.addEventListener("visibilitychange",listener,!1),()=>{window.removeEventListener("visibilitychange",listener)}}}}onSubscribe(){this.#t||this.setEventListener(this.#r)}onUnsubscribe(){this.hasListeners()||(this.#t?.(),this.#t=void 0)}setEventListener(e){this.#r=e,this.#t?.(),this.#t=e((e=>{"boolean"==typeof e?this.setFocused(e):this.onFocus()}))}setFocused(e){this.#e!==e&&(this.#e=e,this.onFocus())}onFocus(){this.listeners.forEach((e=>{e()}))}isFocused(){return"boolean"==typeof this.#e?this.#e:"hidden"!==globalThis.document?.visibilityState}},p=new h},13654:e=>{"use strict";var t,r=Object.defineProperty,s=Object.getOwnPropertyDescriptor,n=Object.getOwnPropertyNames,i=Object.prototype.hasOwnProperty,a={};function dehydrateMutation(e){return{mutationKey:e.options.mutationKey,state:e.state,...e.meta&&{meta:e.meta}}}function dehydrateQuery(e){return{state:e.state,queryKey:e.queryKey,queryHash:e.queryHash,...e.meta&&{meta:e.meta}}}function defaultShouldDehydrateMutation(e){return e.state.isPaused}function defaultShouldDehydrateQuery(e){return"success"===e.state.status}function dehydrate(e,t={}){const r=t.shouldDehydrateMutation??defaultShouldDehydrateMutation,s=e.getMutationCache().getAll().flatMap((e=>r(e)?[dehydrateMutation(e)]:[])),n=t.shouldDehydrateQuery??defaultShouldDehydrateQuery;return{mutations:s,queries:e.getQueryCache().getAll().flatMap((e=>n(e)?[dehydrateQuery(e)]:[]))}}function hydrate(e,t,r){if("object"!=typeof t||null===t)return;const s=e.getMutationCache(),n=e.getQueryCache(),i=t.mutations||[],a=t.queries||[];i.forEach((t=>{s.build(e,{...r?.defaultOptions?.mutations,mutationKey:t.mutationKey,meta:t.meta},t.state)})),a.forEach((({queryKey:t,state:s,queryHash:i,meta:a})=>{const o=n.get(i);if(o){if(o.state.dataUpdatedAt{for(var s in t)r(e,s,{get:t[s],enumerable:!0})})(a,{defaultShouldDehydrateMutation:()=>defaultShouldDehydrateMutation,defaultShouldDehydrateQuery:()=>defaultShouldDehydrateQuery,dehydrate:()=>dehydrate,hydrate:()=>hydrate}),e.exports=(t=a,((e,t,a,o)=>{if(t&&"object"==typeof t||"function"==typeof t)for(let u of n(t))i.call(e,u)||u===a||r(e,u,{get:()=>t[u],enumerable:!(o=s(t,u))||o.enumerable});return e})(r({},"__esModule",{value:!0}),t))},61528:(e,t,r)=>{"use strict";var s,n=Object.defineProperty,i=Object.getOwnPropertyDescriptor,a=Object.getOwnPropertyNames,o=Object.prototype.hasOwnProperty,__copyProps=(e,t,r,s)=>{if(t&&"object"==typeof t||"function"==typeof t)for(let u of a(t))o.call(e,u)||u===r||n(e,u,{get:()=>t[u],enumerable:!(s=i(t,u))||s.enumerable});return e},u={};((e,t)=>{for(var r in t)n(e,r,{get:t[r],enumerable:!0})})(u,{CancelledError:()=>c.CancelledError,InfiniteQueryObserver:()=>d.InfiniteQueryObserver,MutationCache:()=>y.MutationCache,MutationObserver:()=>b.MutationObserver,QueriesObserver:()=>f.QueriesObserver,Query:()=>j.Query,QueryCache:()=>l.QueryCache,QueryClient:()=>h.QueryClient,QueryObserver:()=>p.QueryObserver,defaultShouldDehydrateMutation:()=>w.defaultShouldDehydrateMutation,defaultShouldDehydrateQuery:()=>w.defaultShouldDehydrateQuery,dehydrate:()=>w.dehydrate,focusManager:()=>O.focusManager,hashKey:()=>g.hashKey,hydrate:()=>w.hydrate,isCancelledError:()=>P.isCancelledError,isServer:()=>g.isServer,keepPreviousData:()=>g.keepPreviousData,matchQuery:()=>g.matchQuery,notifyManager:()=>m.notifyManager,onlineManager:()=>v.onlineManager,replaceEqualDeep:()=>g.replaceEqualDeep}),e.exports=(s=u,__copyProps(n({},"__esModule",{value:!0}),s));var c=r(71739),l=r(17029),h=r(33489),p=r(59716),f=r(65631),d=r(77698),y=r(1516),b=r(17724),m=r(27842),O=r(62238),v=r(11044),g=r(14525),P=r(71739),w=r(13654);((e,t,r)=>{__copyProps(e,t,"default"),r&&__copyProps(r,t,"default")})(u,r(53749),e.exports);var j=r(6881)},13144:(e,t,r)=>{"use strict";var s,n=Object.defineProperty,i=Object.getOwnPropertyDescriptor,a=Object.getOwnPropertyNames,o=Object.prototype.hasOwnProperty,u={};((e,t)=>{for(var r in t)n(e,r,{get:t[r],enumerable:!0})})(u,{hasNextPage:()=>hasNextPage,hasPreviousPage:()=>hasPreviousPage,infiniteQueryBehavior:()=>infiniteQueryBehavior}),e.exports=(s=u,((e,t,r,s)=>{if(t&&"object"==typeof t||"function"==typeof t)for(let u of a(t))o.call(e,u)||u===r||n(e,u,{get:()=>t[u],enumerable:!(s=i(t,u))||s.enumerable});return e})(n({},"__esModule",{value:!0}),s));var c=r(14525);function infiniteQueryBehavior(e){return{onFetch:(t,r)=>{const fetchFn=async()=>{const r=t.options,s=t.fetchOptions?.meta?.fetchMore?.direction,n=t.state.data?.pages||[],i=t.state.data?.pageParams||[],a={pages:[],pageParams:[]};let o=!1;const u=t.options.queryFn||(()=>Promise.reject(new Error(`Missing queryFn: '${t.options.queryHash}'`))),fetchPage=async(e,r,s)=>{if(o)return Promise.reject();if(null==r&&e.pages.length)return Promise.resolve(e);const n={queryKey:t.queryKey,pageParam:r,direction:s?"backward":"forward",meta:t.options.meta};var i;i=n,Object.defineProperty(i,"signal",{enumerable:!0,get:()=>(t.signal.aborted?o=!0:t.signal.addEventListener("abort",(()=>{o=!0})),t.signal)});const a=await u(n),{maxPages:l}=t.options,h=s?c.addToStart:c.addToEnd;return{pages:h(e.pages,a,l),pageParams:h(e.pageParams,r,l)}};let l;if(s&&n.length){const e="backward"===s,t={pages:n,pageParams:i},a=(e?getPreviousPageParam:getNextPageParam)(r,t);l=await fetchPage(t,a,e)}else{l=await fetchPage(a,i[0]??r.initialPageParam);const t=e??n.length;for(let e=1;et.options.persister?.(fetchFn,{queryKey:t.queryKey,meta:t.options.meta,signal:t.signal},r):t.fetchFn=fetchFn}}}function getNextPageParam(e,{pages:t,pageParams:r}){const s=t.length-1;return e.getNextPageParam(t[s],t,r[s],r)}function getPreviousPageParam(e,{pages:t,pageParams:r}){return e.getPreviousPageParam?.(t[0],t,r[0],r)}function hasNextPage(e,t){return!!t&&null!=getNextPageParam(e,t)}function hasPreviousPage(e,t){return!(!t||!e.getPreviousPageParam)&&null!=getPreviousPageParam(e,t)}},77698:(e,t,r)=>{"use strict";var s,n=Object.defineProperty,i=Object.getOwnPropertyDescriptor,a=Object.getOwnPropertyNames,o=Object.prototype.hasOwnProperty,u={};((e,t)=>{for(var r in t)n(e,r,{get:t[r],enumerable:!0})})(u,{InfiniteQueryObserver:()=>h}),e.exports=(s=u,((e,t,r,s)=>{if(t&&"object"==typeof t||"function"==typeof t)for(let u of a(t))o.call(e,u)||u===r||n(e,u,{get:()=>t[u],enumerable:!(s=i(t,u))||s.enumerable});return e})(n({},"__esModule",{value:!0}),s));var c=r(59716),l=r(13144),h=class extends c.QueryObserver{constructor(e,t){super(e,t)}bindMethods(){super.bindMethods(),this.fetchNextPage=this.fetchNextPage.bind(this),this.fetchPreviousPage=this.fetchPreviousPage.bind(this)}setOptions(e,t){super.setOptions({...e,behavior:(0,l.infiniteQueryBehavior)()},t)}getOptimisticResult(e){return e.behavior=(0,l.infiniteQueryBehavior)(),super.getOptimisticResult(e)}fetchNextPage(e){return this.fetch({...e,meta:{fetchMore:{direction:"forward"}}})}fetchPreviousPage(e){return this.fetch({...e,meta:{fetchMore:{direction:"backward"}}})}createResult(e,t){const{state:r}=e,s=super.createResult(e,t),{isFetching:n,isRefetching:i}=s,a=n&&"forward"===r.fetchMeta?.fetchMore?.direction,o=n&&"backward"===r.fetchMeta?.fetchMore?.direction;return{...s,fetchNextPage:this.fetchNextPage,fetchPreviousPage:this.fetchPreviousPage,hasNextPage:(0,l.hasNextPage)(t,r.data),hasPreviousPage:(0,l.hasPreviousPage)(t,r.data),isFetchingNextPage:a,isFetchingPreviousPage:o,isRefetching:i&&!a&&!o}}}},4251:(e,t,r)=>{"use strict";var s,n=Object.defineProperty,i=Object.getOwnPropertyDescriptor,a=Object.getOwnPropertyNames,o=Object.prototype.hasOwnProperty,u={};((e,t)=>{for(var r in t)n(e,r,{get:t[r],enumerable:!0})})(u,{Mutation:()=>p,getDefaultState:()=>getDefaultState}),e.exports=(s=u,((e,t,r,s)=>{if(t&&"object"==typeof t||"function"==typeof t)for(let u of a(t))o.call(e,u)||u===r||n(e,u,{get:()=>t[u],enumerable:!(s=i(t,u))||s.enumerable});return e})(n({},"__esModule",{value:!0}),s));var c=r(27842),l=r(85603),h=r(71739),p=class extends l.Removable{constructor(e){super(),this.mutationId=e.mutationId,this.#s=e.defaultOptions,this.#n=e.mutationCache,this.#i=[],this.state=e.state||{context:void 0,data:void 0,error:null,failureCount:0,failureReason:null,isPaused:!1,status:"idle",variables:void 0,submittedAt:0},this.setOptions(e.options),this.scheduleGc()}#i;#s;#n;#a;setOptions(e){this.options={...this.#s,...e},this.updateGcTime(this.options.gcTime)}get meta(){return this.options.meta}addObserver(e){this.#i.includes(e)||(this.#i.push(e),this.clearGcTimeout(),this.#n.notify({type:"observerAdded",mutation:this,observer:e}))}removeObserver(e){this.#i=this.#i.filter((t=>t!==e)),this.scheduleGc(),this.#n.notify({type:"observerRemoved",mutation:this,observer:e})}optionalRemove(){this.#i.length||("pending"===this.state.status?this.scheduleGc():this.#n.remove(this))}continue(){return this.#a?.continue()??this.execute(this.state.variables)}async execute(e){const executeMutation=()=>(this.#a=(0,h.createRetryer)({fn:()=>this.options.mutationFn?this.options.mutationFn(e):Promise.reject(new Error("No mutationFn found")),onFail:(e,t)=>{this.#o({type:"failed",failureCount:e,error:t})},onPause:()=>{this.#o({type:"pause"})},onContinue:()=>{this.#o({type:"continue"})},retry:this.options.retry??0,retryDelay:this.options.retryDelay,networkMode:this.options.networkMode}),this.#a.promise),t="pending"===this.state.status;try{if(!t){this.#o({type:"pending",variables:e}),await(this.#n.config.onMutate?.(e,this));const t=await(this.options.onMutate?.(e));t!==this.state.context&&this.#o({type:"pending",context:t,variables:e})}const r=await executeMutation();return await(this.#n.config.onSuccess?.(r,e,this.state.context,this)),await(this.options.onSuccess?.(r,e,this.state.context)),await(this.#n.config.onSettled?.(r,null,this.state.variables,this.state.context,this)),await(this.options.onSettled?.(r,null,e,this.state.context)),this.#o({type:"success",data:r}),r}catch(t){try{throw await(this.#n.config.onError?.(t,e,this.state.context,this)),await(this.options.onError?.(t,e,this.state.context)),await(this.#n.config.onSettled?.(void 0,t,this.state.variables,this.state.context,this)),await(this.options.onSettled?.(void 0,t,e,this.state.context)),t}finally{this.#o({type:"error",error:t})}}}#o(e){this.state=(t=>{switch(e.type){case"failed":return{...t,failureCount:e.failureCount,failureReason:e.error};case"pause":return{...t,isPaused:!0};case"continue":return{...t,isPaused:!1};case"pending":return{...t,context:e.context,data:void 0,failureCount:0,failureReason:null,error:null,isPaused:!(0,h.canFetch)(this.options.networkMode),status:"pending",variables:e.variables,submittedAt:Date.now()};case"success":return{...t,data:e.data,failureCount:0,failureReason:null,error:null,status:"success",isPaused:!1};case"error":return{...t,data:void 0,error:e.error,failureCount:t.failureCount+1,failureReason:e.error,isPaused:!1,status:"error"}}})(this.state),c.notifyManager.batch((()=>{this.#i.forEach((t=>{t.onMutationUpdate(e)})),this.#n.notify({mutation:this,type:"updated",action:e})}))}};function getDefaultState(){return{context:void 0,data:void 0,error:null,failureCount:0,failureReason:null,isPaused:!1,status:"idle",variables:void 0,submittedAt:0}}},1516:(e,t,r)=>{"use strict";var s,n=Object.defineProperty,i=Object.getOwnPropertyDescriptor,a=Object.getOwnPropertyNames,o=Object.prototype.hasOwnProperty,u={};((e,t)=>{for(var r in t)n(e,r,{get:t[r],enumerable:!0})})(u,{MutationCache:()=>f}),e.exports=(s=u,((e,t,r,s)=>{if(t&&"object"==typeof t||"function"==typeof t)for(let u of a(t))o.call(e,u)||u===r||n(e,u,{get:()=>t[u],enumerable:!(s=i(t,u))||s.enumerable});return e})(n({},"__esModule",{value:!0}),s));var c=r(27842),l=r(4251),h=r(14525),p=r(33949),f=class extends p.Subscribable{constructor(e={}){super(),this.config=e,this.#u=[],this.#c=0}#u;#c;#l;build(e,t,r){const s=new l.Mutation({mutationCache:this,mutationId:++this.#c,options:e.defaultMutationOptions(t),state:r});return this.add(s),s}add(e){this.#u.push(e),this.notify({type:"added",mutation:e})}remove(e){this.#u=this.#u.filter((t=>t!==e)),this.notify({type:"removed",mutation:e})}clear(){c.notifyManager.batch((()=>{this.#u.forEach((e=>{this.remove(e)}))}))}getAll(){return this.#u}find(e){const t={exact:!0,...e};return this.#u.find((e=>(0,h.matchMutation)(t,e)))}findAll(e={}){return this.#u.filter((t=>(0,h.matchMutation)(e,t)))}notify(e){c.notifyManager.batch((()=>{this.listeners.forEach((t=>{t(e)}))}))}resumePausedMutations(){return this.#l=(this.#l??Promise.resolve()).then((()=>{const e=this.#u.filter((e=>e.state.isPaused));return c.notifyManager.batch((()=>e.reduce(((e,t)=>e.then((()=>t.continue().catch(h.noop)))),Promise.resolve())))})).then((()=>{this.#l=void 0})),this.#l}}},17724:(e,t,r)=>{"use strict";var s,n=Object.defineProperty,i=Object.getOwnPropertyDescriptor,a=Object.getOwnPropertyNames,o=Object.prototype.hasOwnProperty,u={};((e,t)=>{for(var r in t)n(e,r,{get:t[r],enumerable:!0})})(u,{MutationObserver:()=>f}),e.exports=(s=u,((e,t,r,s)=>{if(t&&"object"==typeof t||"function"==typeof t)for(let u of a(t))o.call(e,u)||u===r||n(e,u,{get:()=>t[u],enumerable:!(s=i(t,u))||s.enumerable});return e})(n({},"__esModule",{value:!0}),s));var c=r(4251),l=r(27842),h=r(33949),p=r(14525),f=class extends h.Subscribable{constructor(e,t){super(),this.#h=void 0,this.#p=e,this.setOptions(t),this.bindMethods(),this.#f()}#p;#h;#d;#y;bindMethods(){this.mutate=this.mutate.bind(this),this.reset=this.reset.bind(this)}setOptions(e){const t=this.options;this.options=this.#p.defaultMutationOptions(e),(0,p.shallowEqualObjects)(t,this.options)||this.#p.getMutationCache().notify({type:"observerOptionsUpdated",mutation:this.#d,observer:this}),this.#d?.setOptions(this.options)}onUnsubscribe(){this.hasListeners()||this.#d?.removeObserver(this)}onMutationUpdate(e){this.#f(),this.#b(e)}getCurrentResult(){return this.#h}reset(){this.#d=void 0,this.#f(),this.#b()}mutate(e,t){return this.#y=t,this.#d?.removeObserver(this),this.#d=this.#p.getMutationCache().build(this.#p,this.options),this.#d.addObserver(this),this.#d.execute(e)}#f(){const e=this.#d?.state??(0,c.getDefaultState)();this.#h={...e,isPending:"pending"===e.status,isSuccess:"success"===e.status,isError:"error"===e.status,isIdle:"idle"===e.status,mutate:this.mutate,reset:this.reset}}#b(e){l.notifyManager.batch((()=>{this.#y&&this.hasListeners()&&("success"===e?.type?(this.#y.onSuccess?.(e.data,this.#h.variables,this.#h.context),this.#y.onSettled?.(e.data,null,this.#h.variables,this.#h.context)):"error"===e?.type&&(this.#y.onError?.(e.error,this.#h.variables,this.#h.context),this.#y.onSettled?.(void 0,e.error,this.#h.variables,this.#h.context))),this.listeners.forEach((e=>{e(this.#h)}))}))}}},27842:(e,t,r)=>{"use strict";var s,n=Object.defineProperty,i=Object.getOwnPropertyDescriptor,a=Object.getOwnPropertyNames,o=Object.prototype.hasOwnProperty,u={};((e,t)=>{for(var r in t)n(e,r,{get:t[r],enumerable:!0})})(u,{createNotifyManager:()=>createNotifyManager,notifyManager:()=>l}),e.exports=(s=u,((e,t,r,s)=>{if(t&&"object"==typeof t||"function"==typeof t)for(let u of a(t))o.call(e,u)||u===r||n(e,u,{get:()=>t[u],enumerable:!(s=i(t,u))||s.enumerable});return e})(n({},"__esModule",{value:!0}),s));var c=r(14525);function createNotifyManager(){let e=[],t=0,notifyFn=e=>{e()},batchNotifyFn=e=>{e()};const schedule=r=>{t?e.push(r):(0,c.scheduleMicrotask)((()=>{notifyFn(r)}))},flush=()=>{const t=e;e=[],t.length&&(0,c.scheduleMicrotask)((()=>{batchNotifyFn((()=>{t.forEach((e=>{notifyFn(e)}))}))}))};return{batch:e=>{let r;t++;try{r=e()}finally{t--,t||flush()}return r},batchCalls:e=>(...t)=>{schedule((()=>{e(...t)}))},schedule,setNotifyFunction:e=>{notifyFn=e},setBatchNotifyFunction:e=>{batchNotifyFn=e}}}var l=createNotifyManager()},11044:(e,t,r)=>{"use strict";var s,n=Object.defineProperty,i=Object.getOwnPropertyDescriptor,a=Object.getOwnPropertyNames,o=Object.prototype.hasOwnProperty,u={};((e,t)=>{for(var r in t)n(e,r,{get:t[r],enumerable:!0})})(u,{OnlineManager:()=>h,onlineManager:()=>p}),e.exports=(s=u,((e,t,r,s)=>{if(t&&"object"==typeof t||"function"==typeof t)for(let u of a(t))o.call(e,u)||u===r||n(e,u,{get:()=>t[u],enumerable:!(s=i(t,u))||s.enumerable});return e})(n({},"__esModule",{value:!0}),s));var c=r(33949),l=r(14525),h=class extends c.Subscribable{#m=!0;#t;#r;constructor(){super(),this.#r=e=>{if(!l.isServer&&window.addEventListener){const onlineListener=()=>e(!0),offlineListener=()=>e(!1);return window.addEventListener("online",onlineListener,!1),window.addEventListener("offline",offlineListener,!1),()=>{window.removeEventListener("online",onlineListener),window.removeEventListener("offline",offlineListener)}}}}onSubscribe(){this.#t||this.setEventListener(this.#r)}onUnsubscribe(){this.hasListeners()||(this.#t?.(),this.#t=void 0)}setEventListener(e){this.#r=e,this.#t?.(),this.#t=e(this.setOnline.bind(this))}setOnline(e){this.#m!==e&&(this.#m=e,this.listeners.forEach((t=>{t(e)})))}isOnline(){return this.#m}},p=new h},65631:(e,t,r)=>{"use strict";var s,n=Object.defineProperty,i=Object.getOwnPropertyDescriptor,a=Object.getOwnPropertyNames,o=Object.prototype.hasOwnProperty,u={};((e,t)=>{for(var r in t)n(e,r,{get:t[r],enumerable:!0})})(u,{QueriesObserver:()=>f}),e.exports=(s=u,((e,t,r,s)=>{if(t&&"object"==typeof t||"function"==typeof t)for(let u of a(t))o.call(e,u)||u===r||n(e,u,{get:()=>t[u],enumerable:!(s=i(t,u))||s.enumerable});return e})(n({},"__esModule",{value:!0}),s));var c=r(27842),l=r(59716),h=r(33949),p=r(14525);function difference(e,t){return e.filter((e=>!t.includes(e)))}var f=class extends h.Subscribable{#p;#O;#v;#i;#g;#P;constructor(e,t,r){super(),this.#p=e,this.#v=[],this.#i=[],this.#w([]),this.setQueries(t,r)}#w(e){this.#O=e,this.#P=this.#j(e)}onSubscribe(){1===this.listeners.size&&this.#i.forEach((e=>{e.subscribe((t=>{this.#M(e,t)}))}))}onUnsubscribe(){this.listeners.size||this.destroy()}destroy(){this.listeners=new Set,this.#i.forEach((e=>{e.destroy()}))}setQueries(e,t,r){this.#v=e,this.#g=t,c.notifyManager.batch((()=>{const e=this.#i,t=this.#C(this.#v);t.forEach((e=>e.observer.setOptions(e.defaultedQueryOptions,r)));const s=t.map((e=>e.observer)),n=s.map((e=>e.getCurrentResult())),i=s.some(((t,r)=>t!==e[r]));(e.length!==s.length||i)&&(this.#i=s,this.#w(n),this.hasListeners()&&(difference(e,s).forEach((e=>{e.destroy()})),difference(s,e).forEach((e=>{e.subscribe((t=>{this.#M(e,t)}))})),this.#b()))}))}getCurrentResult(){return this.#P}getQueries(){return this.#i.map((e=>e.getCurrentQuery()))}getObservers(){return this.#i}getOptimisticResult(e){const t=this.#C(e),r=t.map((e=>e.observer.getOptimisticResult(e.defaultedQueryOptions)));return[r,e=>this.#j(e??r),()=>t.map(((e,t)=>{const s=r[t];return e.defaultedQueryOptions.notifyOnChangeProps?s:e.observer.trackResult(s)}))]}#j(e){const t=this.#g?.combine;return t?(0,p.replaceEqualDeep)(this.#P,t(e)):e}#C(e){const t=this.#i,r=new Map(t.map((e=>[e.options.queryHash,e]))),s=e.map((e=>this.#p.defaultQueryOptions(e))),n=s.flatMap((e=>{const t=r.get(e.queryHash);return null!=t?[{defaultedQueryOptions:e,observer:t}]:[]})),i=new Set(n.map((e=>e.defaultedQueryOptions.queryHash))),a=s.filter((e=>!i.has(e.queryHash))),getObserver=e=>{const t=this.#p.defaultQueryOptions(e);return this.#i.find((e=>e.options.queryHash===t.queryHash))??new l.QueryObserver(this.#p,t)},o=a.map((e=>({defaultedQueryOptions:e,observer:getObserver(e)})));return n.concat(o).sort(((e,t)=>s.indexOf(e.defaultedQueryOptions)-s.indexOf(t.defaultedQueryOptions)))}#M(e,t){const r=this.#i.indexOf(e);-1!==r&&(this.#w(function replaceAt(e,t,r){const s=e.slice(0);return s[t]=r,s}(this.#O,r,t)),this.#b())}#b(){c.notifyManager.batch((()=>{this.listeners.forEach((e=>{e(this.#O)}))}))}}},6881:(e,t,r)=>{"use strict";var s,n=Object.defineProperty,i=Object.getOwnPropertyDescriptor,a=Object.getOwnPropertyNames,o=Object.prototype.hasOwnProperty,u={};((e,t)=>{for(var r in t)n(e,r,{get:t[r],enumerable:!0})})(u,{Query:()=>f}),e.exports=(s=u,((e,t,r,s)=>{if(t&&"object"==typeof t||"function"==typeof t)for(let u of a(t))o.call(e,u)||u===r||n(e,u,{get:()=>t[u],enumerable:!(s=i(t,u))||s.enumerable});return e})(n({},"__esModule",{value:!0}),s));var c=r(14525),l=r(27842),h=r(71739),p=r(85603),f=class extends p.Removable{constructor(e){super(),this.#R=!1,this.#s=e.defaultOptions,this.#Q(e.options),this.#i=[],this.#_=e.cache,this.queryKey=e.queryKey,this.queryHash=e.queryHash,this.#x=e.state||function getDefaultState(e){const t="function"==typeof e.initialData?e.initialData():e.initialData,r=void 0!==t,s=r?"function"==typeof e.initialDataUpdatedAt?e.initialDataUpdatedAt():e.initialDataUpdatedAt:0;return{data:t,dataUpdateCount:0,dataUpdatedAt:r?s??Date.now():0,error:null,errorUpdateCount:0,errorUpdatedAt:0,fetchFailureCount:0,fetchFailureReason:null,fetchMeta:null,isInvalidated:!1,status:r?"success":"pending",fetchStatus:"idle"}}(this.options),this.state=this.#x,this.scheduleGc()}#x;#S;#_;#E;#a;#i;#s;#R;get meta(){return this.options.meta}#Q(e){this.options={...this.#s,...e},this.updateGcTime(this.options.gcTime)}optionalRemove(){this.#i.length||"idle"!==this.state.fetchStatus||this.#_.remove(this)}setData(e,t){const r=(0,c.replaceData)(this.state.data,e,this.options);return this.#o({data:r,type:"success",dataUpdatedAt:t?.updatedAt,manual:t?.manual}),r}setState(e,t){this.#o({type:"setState",state:e,setStateOptions:t})}cancel(e){const t=this.#E;return this.#a?.cancel(e),t?t.then(c.noop).catch(c.noop):Promise.resolve()}destroy(){super.destroy(),this.cancel({silent:!0})}reset(){this.destroy(),this.setState(this.#x)}isActive(){return this.#i.some((e=>!1!==e.options.enabled))}isDisabled(){return this.getObserversCount()>0&&!this.isActive()}isStale(){return this.state.isInvalidated||!this.state.dataUpdatedAt||this.#i.some((e=>e.getCurrentResult().isStale))}isStaleByTime(e=0){return this.state.isInvalidated||!this.state.dataUpdatedAt||!(0,c.timeUntilStale)(this.state.dataUpdatedAt,e)}onFocus(){const e=this.#i.find((e=>e.shouldFetchOnWindowFocus()));e?.refetch({cancelRefetch:!1}),this.#a?.continue()}onOnline(){const e=this.#i.find((e=>e.shouldFetchOnReconnect()));e?.refetch({cancelRefetch:!1}),this.#a?.continue()}addObserver(e){this.#i.includes(e)||(this.#i.push(e),this.clearGcTimeout(),this.#_.notify({type:"observerAdded",query:this,observer:e}))}removeObserver(e){this.#i.includes(e)&&(this.#i=this.#i.filter((t=>t!==e)),this.#i.length||(this.#a&&(this.#R?this.#a.cancel({revert:!0}):this.#a.cancelRetry()),this.scheduleGc()),this.#_.notify({type:"observerRemoved",query:this,observer:e}))}getObserversCount(){return this.#i.length}invalidate(){this.state.isInvalidated||this.#o({type:"invalidate"})}fetch(e,t){if("idle"!==this.state.fetchStatus)if(this.state.dataUpdatedAt&&t?.cancelRefetch)this.cancel({silent:!0});else if(this.#E)return this.#a?.continueRetry(),this.#E;if(e&&this.#Q(e),!this.options.queryFn){const e=this.#i.find((e=>e.options.queryFn));e&&this.#Q(e.options)}const r=new AbortController,s={queryKey:this.queryKey,meta:this.meta},addSignalProperty=e=>{Object.defineProperty(e,"signal",{enumerable:!0,get:()=>(this.#R=!0,r.signal)})};addSignalProperty(s);const n={fetchOptions:t,options:this.options,queryKey:this.queryKey,state:this.state,fetchFn:()=>this.options.queryFn?(this.#R=!1,this.options.persister?this.options.persister(this.options.queryFn,s,this):this.options.queryFn(s)):Promise.reject(new Error(`Missing queryFn: '${this.options.queryHash}'`))};addSignalProperty(n),this.options.behavior?.onFetch(n,this),this.#S=this.state,"idle"!==this.state.fetchStatus&&this.state.fetchMeta===n.fetchOptions?.meta||this.#o({type:"fetch",meta:n.fetchOptions?.meta});const onError=e=>{(0,h.isCancelledError)(e)&&e.silent||this.#o({type:"error",error:e}),(0,h.isCancelledError)(e)||(this.#_.config.onError?.(e,this),this.#_.config.onSettled?.(this.state.data,e,this)),this.isFetchingOptimistic||this.scheduleGc(),this.isFetchingOptimistic=!1};return this.#a=(0,h.createRetryer)({fn:n.fetchFn,abort:r.abort.bind(r),onSuccess:e=>{void 0!==e?(this.setData(e),this.#_.config.onSuccess?.(e,this),this.#_.config.onSettled?.(e,this.state.error,this),this.isFetchingOptimistic||this.scheduleGc(),this.isFetchingOptimistic=!1):onError(new Error(`${this.queryHash} data is undefined`))},onError,onFail:(e,t)=>{this.#o({type:"failed",failureCount:e,error:t})},onPause:()=>{this.#o({type:"pause"})},onContinue:()=>{this.#o({type:"continue"})},retry:n.options.retry,retryDelay:n.options.retryDelay,networkMode:n.options.networkMode}),this.#E=this.#a.promise,this.#E}#o(e){this.state=(t=>{switch(e.type){case"failed":return{...t,fetchFailureCount:e.failureCount,fetchFailureReason:e.error};case"pause":return{...t,fetchStatus:"paused"};case"continue":return{...t,fetchStatus:"fetching"};case"fetch":return{...t,fetchFailureCount:0,fetchFailureReason:null,fetchMeta:e.meta??null,fetchStatus:(0,h.canFetch)(this.options.networkMode)?"fetching":"paused",...!t.dataUpdatedAt&&{error:null,status:"pending"}};case"success":return{...t,data:e.data,dataUpdateCount:t.dataUpdateCount+1,dataUpdatedAt:e.dataUpdatedAt??Date.now(),error:null,isInvalidated:!1,status:"success",...!e.manual&&{fetchStatus:"idle",fetchFailureCount:0,fetchFailureReason:null}};case"error":const r=e.error;return(0,h.isCancelledError)(r)&&r.revert&&this.#S?{...this.#S,fetchStatus:"idle"}:{...t,error:r,errorUpdateCount:t.errorUpdateCount+1,errorUpdatedAt:Date.now(),fetchFailureCount:t.fetchFailureCount+1,fetchFailureReason:r,fetchStatus:"idle",status:"error"};case"invalidate":return{...t,isInvalidated:!0};case"setState":return{...t,...e.state}}})(this.state),l.notifyManager.batch((()=>{this.#i.forEach((e=>{e.onQueryUpdate()})),this.#_.notify({query:this,type:"updated",action:e})}))}}},17029:(e,t,r)=>{"use strict";var s,n=Object.defineProperty,i=Object.getOwnPropertyDescriptor,a=Object.getOwnPropertyNames,o=Object.prototype.hasOwnProperty,u={};((e,t)=>{for(var r in t)n(e,r,{get:t[r],enumerable:!0})})(u,{QueryCache:()=>f}),e.exports=(s=u,((e,t,r,s)=>{if(t&&"object"==typeof t||"function"==typeof t)for(let u of a(t))o.call(e,u)||u===r||n(e,u,{get:()=>t[u],enumerable:!(s=i(t,u))||s.enumerable});return e})(n({},"__esModule",{value:!0}),s));var c=r(14525),l=r(6881),h=r(27842),p=r(33949),f=class extends p.Subscribable{constructor(e={}){super(),this.config=e,this.#v=new Map}#v;build(e,t,r){const s=t.queryKey,n=t.queryHash??(0,c.hashQueryKeyByOptions)(s,t);let i=this.get(n);return i||(i=new l.Query({cache:this,queryKey:s,queryHash:n,options:e.defaultQueryOptions(t),state:r,defaultOptions:e.getQueryDefaults(s)}),this.add(i)),i}add(e){this.#v.has(e.queryHash)||(this.#v.set(e.queryHash,e),this.notify({type:"added",query:e}))}remove(e){const t=this.#v.get(e.queryHash);t&&(e.destroy(),t===e&&this.#v.delete(e.queryHash),this.notify({type:"removed",query:e}))}clear(){h.notifyManager.batch((()=>{this.getAll().forEach((e=>{this.remove(e)}))}))}get(e){return this.#v.get(e)}getAll(){return[...this.#v.values()]}find(e){const t={exact:!0,...e};return this.getAll().find((e=>(0,c.matchQuery)(t,e)))}findAll(e={}){const t=this.getAll();return Object.keys(e).length>0?t.filter((t=>(0,c.matchQuery)(e,t))):t}notify(e){h.notifyManager.batch((()=>{this.listeners.forEach((t=>{t(e)}))}))}onFocus(){h.notifyManager.batch((()=>{this.getAll().forEach((e=>{e.onFocus()}))}))}onOnline(){h.notifyManager.batch((()=>{this.getAll().forEach((e=>{e.onOnline()}))}))}}},33489:(e,t,r)=>{"use strict";var s,n=Object.defineProperty,i=Object.getOwnPropertyDescriptor,a=Object.getOwnPropertyNames,o=Object.prototype.hasOwnProperty,u={};((e,t)=>{for(var r in t)n(e,r,{get:t[r],enumerable:!0})})(u,{QueryClient:()=>b}),e.exports=(s=u,((e,t,r,s)=>{if(t&&"object"==typeof t||"function"==typeof t)for(let u of a(t))o.call(e,u)||u===r||n(e,u,{get:()=>t[u],enumerable:!(s=i(t,u))||s.enumerable});return e})(n({},"__esModule",{value:!0}),s));var c=r(14525),l=r(17029),h=r(1516),p=r(62238),f=r(11044),d=r(27842),y=r(13144),b=class{#q;#n;#s;#D;#I;#T;#F;#N;constructor(e={}){this.#q=e.queryCache||new l.QueryCache,this.#n=e.mutationCache||new h.MutationCache,this.#s=e.defaultOptions||{},this.#D=new Map,this.#I=new Map,this.#T=0}mount(){this.#T++,1===this.#T&&(this.#F=p.focusManager.subscribe((()=>{p.focusManager.isFocused()&&(this.resumePausedMutations(),this.#q.onFocus())})),this.#N=f.onlineManager.subscribe((()=>{f.onlineManager.isOnline()&&(this.resumePausedMutations(),this.#q.onOnline())})))}unmount(){this.#T--,0===this.#T&&(this.#F?.(),this.#F=void 0,this.#N?.(),this.#N=void 0)}isFetching(e){return this.#q.findAll({...e,fetchStatus:"fetching"}).length}isMutating(e){return this.#n.findAll({...e,status:"pending"}).length}getQueryData(e){return this.#q.find({queryKey:e})?.state.data}ensureQueryData(e){const t=this.getQueryData(e.queryKey);return void 0!==t?Promise.resolve(t):this.fetchQuery(e)}getQueriesData(e){return this.getQueryCache().findAll(e).map((({queryKey:e,state:t})=>[e,t.data]))}setQueryData(e,t,r){const s=this.#q.find({queryKey:e}),n=s?.state.data,i=(0,c.functionalUpdate)(t,n);if(void 0===i)return;const a=this.defaultQueryOptions({queryKey:e});return this.#q.build(this,a).setData(i,{...r,manual:!0})}setQueriesData(e,t,r){return d.notifyManager.batch((()=>this.getQueryCache().findAll(e).map((({queryKey:e})=>[e,this.setQueryData(e,t,r)]))))}getQueryState(e){return this.#q.find({queryKey:e})?.state}removeQueries(e){const t=this.#q;d.notifyManager.batch((()=>{t.findAll(e).forEach((e=>{t.remove(e)}))}))}resetQueries(e,t){const r=this.#q,s={type:"active",...e};return d.notifyManager.batch((()=>(r.findAll(e).forEach((e=>{e.reset()})),this.refetchQueries(s,t))))}cancelQueries(e={},t={}){const r={revert:!0,...t},s=d.notifyManager.batch((()=>this.#q.findAll(e).map((e=>e.cancel(r)))));return Promise.all(s).then(c.noop).catch(c.noop)}invalidateQueries(e={},t={}){return d.notifyManager.batch((()=>{if(this.#q.findAll(e).forEach((e=>{e.invalidate()})),"none"===e.refetchType)return Promise.resolve();const r={...e,type:e.refetchType??e.type??"active"};return this.refetchQueries(r,t)}))}refetchQueries(e={},t){const r={...t,cancelRefetch:t?.cancelRefetch??!0},s=d.notifyManager.batch((()=>this.#q.findAll(e).filter((e=>!e.isDisabled())).map((e=>{let t=e.fetch(void 0,r);return r.throwOnError||(t=t.catch(c.noop)),"paused"===e.state.fetchStatus?Promise.resolve():t}))));return Promise.all(s).then(c.noop)}fetchQuery(e){const t=this.defaultQueryOptions(e);void 0===t.retry&&(t.retry=!1);const r=this.#q.build(this,t);return r.isStaleByTime(t.staleTime)?r.fetch(t):Promise.resolve(r.state.data)}prefetchQuery(e){return this.fetchQuery(e).then(c.noop).catch(c.noop)}fetchInfiniteQuery(e){return e.behavior=(0,y.infiniteQueryBehavior)(e.pages),this.fetchQuery(e)}prefetchInfiniteQuery(e){return this.fetchInfiniteQuery(e).then(c.noop).catch(c.noop)}resumePausedMutations(){return this.#n.resumePausedMutations()}getQueryCache(){return this.#q}getMutationCache(){return this.#n}getDefaultOptions(){return this.#s}setDefaultOptions(e){this.#s=e}setQueryDefaults(e,t){this.#D.set((0,c.hashKey)(e),{queryKey:e,defaultOptions:t})}getQueryDefaults(e){const t=[...this.#D.values()];let r={};return t.forEach((t=>{(0,c.partialMatchKey)(e,t.queryKey)&&(r={...r,...t.defaultOptions})})),r}setMutationDefaults(e,t){this.#I.set((0,c.hashKey)(e),{mutationKey:e,defaultOptions:t})}getMutationDefaults(e){const t=[...this.#I.values()];let r={};return t.forEach((t=>{(0,c.partialMatchKey)(e,t.mutationKey)&&(r={...r,...t.defaultOptions})})),r}defaultQueryOptions(e){if(e?._defaulted)return e;const t={...this.#s.queries,...e?.queryKey&&this.getQueryDefaults(e.queryKey),...e,_defaulted:!0};return t.queryHash||(t.queryHash=(0,c.hashQueryKeyByOptions)(t.queryKey,t)),void 0===t.refetchOnReconnect&&(t.refetchOnReconnect="always"!==t.networkMode),void 0===t.throwOnError&&(t.throwOnError=!!t.suspense),void 0===t.networkMode&&t.persister&&(t.networkMode="offlineFirst"),t}defaultMutationOptions(e){return e?._defaulted?e:{...this.#s.mutations,...e?.mutationKey&&this.getMutationDefaults(e.mutationKey),...e,_defaulted:!0}}clear(){this.#q.clear(),this.#n.clear()}}},59716:(e,t,r)=>{"use strict";var s,n=Object.defineProperty,i=Object.getOwnPropertyDescriptor,a=Object.getOwnPropertyNames,o=Object.prototype.hasOwnProperty,u={};((e,t)=>{for(var r in t)n(e,r,{get:t[r],enumerable:!0})})(u,{QueryObserver:()=>d}),e.exports=(s=u,((e,t,r,s)=>{if(t&&"object"==typeof t||"function"==typeof t)for(let u of a(t))o.call(e,u)||u===r||n(e,u,{get:()=>t[u],enumerable:!(s=i(t,u))||s.enumerable});return e})(n({},"__esModule",{value:!0}),s));var c=r(14525),l=r(27842),h=r(62238),p=r(33949),f=r(71739),d=class extends p.Subscribable{constructor(e,t){super(),this.#k=void 0,this.#W=void 0,this.#h=void 0,this.#A=new Set,this.#p=e,this.options=t,this.#B=null,this.bindMethods(),this.setOptions(t)}#p;#k;#W;#h;#U;#K;#B;#L;#H;#V;#G;#z;#Z;#A;bindMethods(){this.refetch=this.refetch.bind(this)}onSubscribe(){1===this.listeners.size&&(this.#k.addObserver(this),shouldFetchOnMount(this.#k,this.options)&&this.#$(),this.#X())}onUnsubscribe(){this.hasListeners()||this.destroy()}shouldFetchOnReconnect(){return shouldFetchOn(this.#k,this.options,this.options.refetchOnReconnect)}shouldFetchOnWindowFocus(){return shouldFetchOn(this.#k,this.options,this.options.refetchOnWindowFocus)}destroy(){this.listeners=new Set,this.#J(),this.#Y(),this.#k.removeObserver(this)}setOptions(e,t){const r=this.options,s=this.#k;if(this.options=this.#p.defaultQueryOptions(e),(0,c.shallowEqualObjects)(r,this.options)||this.#p.getQueryCache().notify({type:"observerOptionsUpdated",query:this.#k,observer:this}),void 0!==this.options.enabled&&"boolean"!=typeof this.options.enabled)throw new Error("Expected enabled to be a boolean");this.options.queryKey||(this.options.queryKey=r.queryKey),this.#ee();const n=this.hasListeners();n&&shouldFetchOptionally(this.#k,s,this.options,r)&&this.#$(),this.updateResult(t),!n||this.#k===s&&this.options.enabled===r.enabled&&this.options.staleTime===r.staleTime||this.#te();const i=this.#re();!n||this.#k===s&&this.options.enabled===r.enabled&&i===this.#Z||this.#se(i)}getOptimisticResult(e){const t=this.#p.getQueryCache().build(this.#p,e),r=this.createResult(t,e);return function shouldAssignObserverCurrentProperties(e,t){if(!(0,c.shallowEqualObjects)(e.getCurrentResult(),t))return!0;return!1}(this,r)&&(this.#h=r,this.#K=this.options,this.#U=this.#k.state),r}getCurrentResult(){return this.#h}trackResult(e){const t={};return Object.keys(e).forEach((r=>{Object.defineProperty(t,r,{configurable:!1,enumerable:!0,get:()=>(this.#A.add(r),e[r])})})),t}getCurrentQuery(){return this.#k}refetch({...e}={}){return this.fetch({...e})}fetchOptimistic(e){const t=this.#p.defaultQueryOptions(e),r=this.#p.getQueryCache().build(this.#p,t);return r.isFetchingOptimistic=!0,r.fetch().then((()=>this.createResult(r,t)))}fetch(e){return this.#$({...e,cancelRefetch:e.cancelRefetch??!0}).then((()=>(this.updateResult(),this.#h)))}#$(e){this.#ee();let t=this.#k.fetch(this.options,e);return e?.throwOnError||(t=t.catch(c.noop)),t}#te(){if(this.#J(),c.isServer||this.#h.isStale||!(0,c.isValidTimeout)(this.options.staleTime))return;const e=(0,c.timeUntilStale)(this.#h.dataUpdatedAt,this.options.staleTime)+1;this.#G=setTimeout((()=>{this.#h.isStale||this.updateResult()}),e)}#re(){return("function"==typeof this.options.refetchInterval?this.options.refetchInterval(this.#k):this.options.refetchInterval)??!1}#se(e){this.#Y(),this.#Z=e,!c.isServer&&!1!==this.options.enabled&&(0,c.isValidTimeout)(this.#Z)&&0!==this.#Z&&(this.#z=setInterval((()=>{(this.options.refetchIntervalInBackground||h.focusManager.isFocused())&&this.#$()}),this.#Z))}#X(){this.#te(),this.#se(this.#re())}#J(){this.#G&&(clearTimeout(this.#G),this.#G=void 0)}#Y(){this.#z&&(clearInterval(this.#z),this.#z=void 0)}createResult(e,t){const r=this.#k,s=this.options,n=this.#h,i=this.#U,a=this.#K,o=e!==r?e.state:this.#W,{state:u}=e;let l,{error:h,errorUpdatedAt:p,fetchStatus:d,status:y}=u,b=!1;if(t._optimisticResults){const n=this.hasListeners(),i=!n&&shouldFetchOnMount(e,t),a=n&&shouldFetchOptionally(e,r,t,s);(i||a)&&(d=(0,f.canFetch)(e.options.networkMode)?"fetching":"paused",u.dataUpdatedAt||(y="pending")),"isRestoring"===t._optimisticResults&&(d="idle")}if(t.select&&void 0!==u.data)if(n&&u.data===i?.data&&t.select===this.#L)l=this.#H;else try{this.#L=t.select,l=t.select(u.data),l=(0,c.replaceData)(n?.data,l,t),this.#H=l,this.#B=null}catch(e){this.#B=e}else l=u.data;if(void 0!==t.placeholderData&&void 0===l&&"pending"===y){let e;if(n?.isPlaceholderData&&t.placeholderData===a?.placeholderData)e=n.data;else if(e="function"==typeof t.placeholderData?t.placeholderData(this.#V?.state.data,this.#V):t.placeholderData,t.select&&void 0!==e)try{e=t.select(e),this.#B=null}catch(e){this.#B=e}void 0!==e&&(y="success",l=(0,c.replaceData)(n?.data,e,t),b=!0)}this.#B&&(h=this.#B,l=this.#H,p=Date.now(),y="error");const m="fetching"===d,O="pending"===y,v="error"===y,g=O&&m;return{status:y,fetchStatus:d,isPending:O,isSuccess:"success"===y,isError:v,isInitialLoading:g,isLoading:g,data:l,dataUpdatedAt:u.dataUpdatedAt,error:h,errorUpdatedAt:p,failureCount:u.fetchFailureCount,failureReason:u.fetchFailureReason,errorUpdateCount:u.errorUpdateCount,isFetched:u.dataUpdateCount>0||u.errorUpdateCount>0,isFetchedAfterMount:u.dataUpdateCount>o.dataUpdateCount||u.errorUpdateCount>o.errorUpdateCount,isFetching:m,isRefetching:m&&!O,isLoadingError:v&&0===u.dataUpdatedAt,isPaused:"paused"===d,isPlaceholderData:b,isRefetchError:v&&0!==u.dataUpdatedAt,isStale:isStale(e,t),refetch:this.refetch}}updateResult(e){const t=this.#h,r=this.createResult(this.#k,this.options);if(this.#U=this.#k.state,this.#K=this.options,(0,c.shallowEqualObjects)(r,t))return;void 0!==this.#U.data&&(this.#V=this.#k),this.#h=r;const s={};!1!==e?.listeners&&(()=>{if(!t)return!0;const{notifyOnChangeProps:e}=this.options,r="function"==typeof e?e():e;if("all"===r||!r&&!this.#A.size)return!0;const s=new Set(r??this.#A);return this.options.throwOnError&&s.add("error"),Object.keys(this.#h).some((e=>{const r=e;return this.#h[r]!==t[r]&&s.has(r)}))})()&&(s.listeners=!0),this.#b({...s,...e})}#ee(){const e=this.#p.getQueryCache().build(this.#p,this.options);if(e===this.#k)return;const t=this.#k;this.#k=e,this.#W=e.state,this.hasListeners()&&(t?.removeObserver(this),e.addObserver(this))}onQueryUpdate(){this.updateResult(),this.hasListeners()&&this.#X()}#b(e){l.notifyManager.batch((()=>{e.listeners&&this.listeners.forEach((e=>{e(this.#h)})),this.#p.getQueryCache().notify({query:this.#k,type:"observerResultsUpdated"})}))}};function shouldFetchOnMount(e,t){return function shouldLoadOnMount(e,t){return!(!1===t.enabled||e.state.dataUpdatedAt||"error"===e.state.status&&!1===t.retryOnMount)}(e,t)||e.state.dataUpdatedAt>0&&shouldFetchOn(e,t,t.refetchOnMount)}function shouldFetchOn(e,t,r){if(!1!==t.enabled){const s="function"==typeof r?r(e):r;return"always"===s||!1!==s&&isStale(e,t)}return!1}function shouldFetchOptionally(e,t,r,s){return!1!==r.enabled&&(e!==t||!1===s.enabled)&&(!r.suspense||"error"!==e.state.status)&&isStale(e,r)}function isStale(e,t){return e.isStaleByTime(t.staleTime)}},85603:(e,t,r)=>{"use strict";var s,n=Object.defineProperty,i=Object.getOwnPropertyDescriptor,a=Object.getOwnPropertyNames,o=Object.prototype.hasOwnProperty,u={};((e,t)=>{for(var r in t)n(e,r,{get:t[r],enumerable:!0})})(u,{Removable:()=>l}),e.exports=(s=u,((e,t,r,s)=>{if(t&&"object"==typeof t||"function"==typeof t)for(let u of a(t))o.call(e,u)||u===r||n(e,u,{get:()=>t[u],enumerable:!(s=i(t,u))||s.enumerable});return e})(n({},"__esModule",{value:!0}),s));var c=r(14525),l=class{#ne;destroy(){this.clearGcTimeout()}scheduleGc(){this.clearGcTimeout(),(0,c.isValidTimeout)(this.gcTime)&&(this.#ne=setTimeout((()=>{this.optionalRemove()}),this.gcTime))}updateGcTime(e){this.gcTime=Math.max(this.gcTime||0,e??(c.isServer?1/0:3e5))}clearGcTimeout(){this.#ne&&(clearTimeout(this.#ne),this.#ne=void 0)}}},71739:(e,t,r)=>{"use strict";var s,n=Object.defineProperty,i=Object.getOwnPropertyDescriptor,a=Object.getOwnPropertyNames,o=Object.prototype.hasOwnProperty,u={};((e,t)=>{for(var r in t)n(e,r,{get:t[r],enumerable:!0})})(u,{CancelledError:()=>p,canFetch:()=>canFetch,createRetryer:()=>createRetryer,isCancelledError:()=>isCancelledError}),e.exports=(s=u,((e,t,r,s)=>{if(t&&"object"==typeof t||"function"==typeof t)for(let u of a(t))o.call(e,u)||u===r||n(e,u,{get:()=>t[u],enumerable:!(s=i(t,u))||s.enumerable});return e})(n({},"__esModule",{value:!0}),s));var c=r(62238),l=r(11044),h=r(14525);function defaultRetryDelay(e){return Math.min(1e3*2**e,3e4)}function canFetch(e){return"online"!==(e??"online")||l.onlineManager.isOnline()}var p=class{constructor(e){this.revert=e?.revert,this.silent=e?.silent}};function isCancelledError(e){return e instanceof p}function createRetryer(e){let t,r,s,n=!1,i=0,a=!1;const o=new Promise(((e,t)=>{r=e,s=t})),shouldPause=()=>!c.focusManager.isFocused()||"always"!==e.networkMode&&!l.onlineManager.isOnline(),resolve=s=>{a||(a=!0,e.onSuccess?.(s),t?.(),r(s))},reject=r=>{a||(a=!0,e.onError?.(r),t?.(),s(r))},pause=()=>new Promise((r=>{t=e=>{const t=a||!shouldPause();return t&&r(e),t},e.onPause?.()})).then((()=>{t=void 0,a||e.onContinue?.()})),run=()=>{if(a)return;let t;try{t=e.fn()}catch(e){t=Promise.reject(e)}Promise.resolve(t).then(resolve).catch((t=>{if(a)return;const r=e.retry??(h.isServer?0:3),s=e.retryDelay??defaultRetryDelay,o="function"==typeof s?s(i,t):s,u=!0===r||"number"==typeof r&&i{if(shouldPause())return pause()})).then((()=>{n?reject(t):run()}))):reject(t)}))};return canFetch(e.networkMode)?run():pause().then(run),{promise:o,cancel:t=>{a||(reject(new p(t)),e.abort?.())},continue:()=>{const e=t?.();return e?o:Promise.resolve()},cancelRetry:()=>{n=!0},continueRetry:()=>{n=!1}}}},33949:e=>{"use strict";var t,r=Object.defineProperty,s=Object.getOwnPropertyDescriptor,n=Object.getOwnPropertyNames,i=Object.prototype.hasOwnProperty,a={};((e,t)=>{for(var s in t)r(e,s,{get:t[s],enumerable:!0})})(a,{Subscribable:()=>o}),e.exports=(t=a,((e,t,a,o)=>{if(t&&"object"==typeof t||"function"==typeof t)for(let u of n(t))i.call(e,u)||u===a||r(e,u,{get:()=>t[u],enumerable:!(o=s(t,u))||o.enumerable});return e})(r({},"__esModule",{value:!0}),t));var o=class{constructor(){this.listeners=new Set,this.subscribe=this.subscribe.bind(this)}subscribe(e){return this.listeners.add(e),this.onSubscribe(),()=>{this.listeners.delete(e),this.onUnsubscribe()}}hasListeners(){return this.listeners.size>0}onSubscribe(){}onUnsubscribe(){}}},53749:e=>{"use strict";var t,r=Object.defineProperty,s=Object.getOwnPropertyDescriptor,n=Object.getOwnPropertyNames,i=Object.prototype.hasOwnProperty;e.exports=(t={},((e,t,a,o)=>{if(t&&"object"==typeof t||"function"==typeof t)for(let u of n(t))i.call(e,u)||u===a||r(e,u,{get:()=>t[u],enumerable:!(o=s(t,u))||o.enumerable});return e})(r({},"__esModule",{value:!0}),t))},14525:e=>{"use strict";var t,r=Object.defineProperty,s=Object.getOwnPropertyDescriptor,n=Object.getOwnPropertyNames,i=Object.prototype.hasOwnProperty,a={};((e,t)=>{for(var s in t)r(e,s,{get:t[s],enumerable:!0})})(a,{addToEnd:()=>addToEnd,addToStart:()=>addToStart,functionalUpdate:()=>functionalUpdate,hashKey:()=>hashKey,hashQueryKeyByOptions:()=>hashQueryKeyByOptions,isPlainArray:()=>isPlainArray,isPlainObject:()=>isPlainObject,isServer:()=>o,isValidTimeout:()=>isValidTimeout,keepPreviousData:()=>keepPreviousData,matchMutation:()=>matchMutation,matchQuery:()=>matchQuery,noop:()=>noop,partialMatchKey:()=>partialMatchKey,replaceData:()=>replaceData,replaceEqualDeep:()=>replaceEqualDeep,scheduleMicrotask:()=>scheduleMicrotask,shallowEqualObjects:()=>shallowEqualObjects,sleep:()=>sleep,timeUntilStale:()=>timeUntilStale}),e.exports=(t=a,((e,t,a,o)=>{if(t&&"object"==typeof t||"function"==typeof t)for(let u of n(t))i.call(e,u)||u===a||r(e,u,{get:()=>t[u],enumerable:!(o=s(t,u))||o.enumerable});return e})(r({},"__esModule",{value:!0}),t));var o="undefined"==typeof window||"Deno"in window;function noop(){}function functionalUpdate(e,t){return"function"==typeof e?e(t):e}function isValidTimeout(e){return"number"==typeof e&&e>=0&&e!==1/0}function timeUntilStale(e,t){return Math.max(e+(t||0)-Date.now(),0)}function matchQuery(e,t){const{type:r="all",exact:s,fetchStatus:n,predicate:i,queryKey:a,stale:o}=e;if(a)if(s){if(t.queryHash!==hashQueryKeyByOptions(a,t.options))return!1}else if(!partialMatchKey(t.queryKey,a))return!1;if("all"!==r){const e=t.isActive();if("active"===r&&!e)return!1;if("inactive"===r&&e)return!1}return("boolean"!=typeof o||t.isStale()===o)&&((void 0===n||n===t.state.fetchStatus)&&!(i&&!i(t)))}function matchMutation(e,t){const{exact:r,status:s,predicate:n,mutationKey:i}=e;if(i){if(!t.options.mutationKey)return!1;if(r){if(hashKey(t.options.mutationKey)!==hashKey(i))return!1}else if(!partialMatchKey(t.options.mutationKey,i))return!1}return(!s||t.state.status===s)&&!(n&&!n(t))}function hashQueryKeyByOptions(e,t){return(t?.queryKeyHashFn||hashKey)(e)}function hashKey(e){return JSON.stringify(e,((e,t)=>isPlainObject(t)?Object.keys(t).sort().reduce(((e,r)=>(e[r]=t[r],e)),{}):t))}function partialMatchKey(e,t){return e===t||typeof e==typeof t&&(!(!e||!t||"object"!=typeof e||"object"!=typeof t)&&!Object.keys(t).some((r=>!partialMatchKey(e[r],t[r]))))}function replaceEqualDeep(e,t){if(e===t)return e;const r=isPlainArray(e)&&isPlainArray(t);if(r||isPlainObject(e)&&isPlainObject(t)){const s=r?e.length:Object.keys(e).length,n=r?t:Object.keys(t),i=n.length,a=r?[]:{};let o=0;for(let s=0;s{setTimeout(t,e)}))}function scheduleMicrotask(e){sleep(0).then(e)}function replaceData(e,t,r){return"function"==typeof r.structuralSharing?r.structuralSharing(e,t):!1!==r.structuralSharing?replaceEqualDeep(e,t):t}function keepPreviousData(e){return e}function addToEnd(e,t,r=0){const s=[...e,t];return r&&s.length>r?s.slice(1):s}function addToStart(e,t,r=0){const s=[t,...e];return r&&s.length>r?s.slice(0,-1):s}},32969:(e,t,r)=>{"use strict";var s,n=Object.create,i=Object.defineProperty,a=Object.getOwnPropertyDescriptor,o=Object.getOwnPropertyNames,u=Object.getPrototypeOf,c=Object.prototype.hasOwnProperty,__copyProps=(e,t,r,s)=>{if(t&&"object"==typeof t||"function"==typeof t)for(let n of o(t))c.call(e,n)||n===r||i(e,n,{get:()=>t[n],enumerable:!(s=a(t,n))||s.enumerable});return e},l={};((e,t)=>{for(var r in t)i(e,r,{get:t[r],enumerable:!0})})(l,{HydrationBoundary:()=>HydrationBoundary}),e.exports=(s=l,__copyProps(i({},"__esModule",{value:!0}),s));var h=((e,t,r)=>(r=null!=e?n(u(e)):{},__copyProps(!t&&e&&e.__esModule?r:i(r,"default",{value:e,enumerable:!0}),e)))(r(87363),1),p=r(61528),f=r(43653),HydrationBoundary=({children:e,options:t={},state:r,queryClient:s})=>{const n=(0,f.useQueryClient)(s),[i,a]=h.useState(),o=h.useRef(t);return o.current=t,h.useMemo((()=>{if(r){if("object"!=typeof r)return;const e=n.getQueryCache(),t=r.queries||[],s=[],u=[];for(const r of t){const t=e.get(r.queryHash);if(t){const e=r.state.dataUpdatedAt>t.state.dataUpdatedAt,s=i?.find((e=>e.queryHash===r.queryHash));e&&(!s||r.state.dataUpdatedAt>s.state.dataUpdatedAt)&&u.push(r)}else s.push(r)}s.length>0&&(0,p.hydrate)(n,{queries:s},o.current),u.length>0&&a((e=>e?[...e,...u]:u))}}),[n,i,r]),h.useEffect((()=>{i&&((0,p.hydrate)(n,{queries:i},o.current),a(void 0))}),[n,i]),e}},43653:(e,t,r)=>{"use strict";var s,n=Object.create,i=Object.defineProperty,a=Object.getOwnPropertyDescriptor,o=Object.getOwnPropertyNames,u=Object.getPrototypeOf,c=Object.prototype.hasOwnProperty,__copyProps=(e,t,r,s)=>{if(t&&"object"==typeof t||"function"==typeof t)for(let n of o(t))c.call(e,n)||n===r||i(e,n,{get:()=>t[n],enumerable:!(s=a(t,n))||s.enumerable});return e},l={};((e,t)=>{for(var r in t)i(e,r,{get:t[r],enumerable:!0})})(l,{QueryClientContext:()=>p,QueryClientProvider:()=>QueryClientProvider,useQueryClient:()=>useQueryClient}),e.exports=(s=l,__copyProps(i({},"__esModule",{value:!0}),s));var h=((e,t,r)=>(r=null!=e?n(u(e)):{},__copyProps(!t&&e&&e.__esModule?r:i(r,"default",{value:e,enumerable:!0}),e)))(r(87363),1),p=h.createContext(void 0),useQueryClient=e=>{const t=h.useContext(p);if(e)return e;if(!t)throw new Error("No QueryClient set, use QueryClientProvider to set one");return t},QueryClientProvider=({client:e,children:t})=>(h.useEffect((()=>(e.mount(),()=>{e.unmount()})),[e]),h.createElement(p.Provider,{value:e},t))},15178:(e,t,r)=>{"use strict";var s,n=Object.create,i=Object.defineProperty,a=Object.getOwnPropertyDescriptor,o=Object.getOwnPropertyNames,u=Object.getPrototypeOf,c=Object.prototype.hasOwnProperty,__copyProps=(e,t,r,s)=>{if(t&&"object"==typeof t||"function"==typeof t)for(let n of o(t))c.call(e,n)||n===r||i(e,n,{get:()=>t[n],enumerable:!(s=a(t,n))||s.enumerable});return e},l={};((e,t)=>{for(var r in t)i(e,r,{get:t[r],enumerable:!0})})(l,{QueryErrorResetBoundary:()=>QueryErrorResetBoundary,useQueryErrorResetBoundary:()=>useQueryErrorResetBoundary}),e.exports=(s=l,__copyProps(i({},"__esModule",{value:!0}),s));var h=((e,t,r)=>(r=null!=e?n(u(e)):{},__copyProps(!t&&e&&e.__esModule?r:i(r,"default",{value:e,enumerable:!0}),e)))(r(87363),1);function createValue(){let e=!1;return{clearReset:()=>{e=!1},reset:()=>{e=!0},isReset:()=>e}}var p=h.createContext(createValue()),useQueryErrorResetBoundary=()=>h.useContext(p),QueryErrorResetBoundary=({children:e})=>{const[t]=h.useState((()=>createValue()));return h.createElement(p.Provider,{value:t},"function"==typeof e?e(t):e)}},94025:(e,t,r)=>{"use strict";var s,n=Object.create,i=Object.defineProperty,a=Object.getOwnPropertyDescriptor,o=Object.getOwnPropertyNames,u=Object.getPrototypeOf,c=Object.prototype.hasOwnProperty,__copyProps=(e,t,r,s)=>{if(t&&"object"==typeof t||"function"==typeof t)for(let n of o(t))c.call(e,n)||n===r||i(e,n,{get:()=>t[n],enumerable:!(s=a(t,n))||s.enumerable});return e},l={};((e,t)=>{for(var r in t)i(e,r,{get:t[r],enumerable:!0})})(l,{ensurePreventErrorBoundaryRetry:()=>ensurePreventErrorBoundaryRetry,getHasError:()=>getHasError,useClearResetErrorBoundary:()=>useClearResetErrorBoundary}),e.exports=(s=l,__copyProps(i({},"__esModule",{value:!0}),s));var h=((e,t,r)=>(r=null!=e?n(u(e)):{},__copyProps(!t&&e&&e.__esModule?r:i(r,"default",{value:e,enumerable:!0}),e)))(r(87363),1),p=r(6609),ensurePreventErrorBoundaryRetry=(e,t)=>{(e.suspense||e.throwOnError)&&(t.isReset()||(e.retryOnMount=!1))},useClearResetErrorBoundary=e=>{h.useEffect((()=>{e.clearReset()}),[e])},getHasError=({result:e,errorResetBoundary:t,throwOnError:r,query:s})=>e.isError&&!t.isReset()&&!e.isFetching&&(0,p.shouldThrowError)(r,[e.error,s])},39937:(e,t,r)=>{"use strict";var s,n=Object.defineProperty,i=Object.getOwnPropertyDescriptor,a=Object.getOwnPropertyNames,o=Object.prototype.hasOwnProperty,__copyProps=(e,t,r,s)=>{if(t&&"object"==typeof t||"function"==typeof t)for(let u of a(t))o.call(e,u)||u===r||n(e,u,{get:()=>t[u],enumerable:!(s=i(t,u))||s.enumerable});return e},__reExport=(e,t,r)=>(__copyProps(e,t,"default"),r&&__copyProps(r,t,"default")),u={};((e,t)=>{for(var r in t)n(e,r,{get:t[r],enumerable:!0})})(u,{HydrationBoundary:()=>m.HydrationBoundary,IsRestoringProvider:()=>j.IsRestoringProvider,QueryClientContext:()=>b.QueryClientContext,QueryClientProvider:()=>b.QueryClientProvider,QueryErrorResetBoundary:()=>O.QueryErrorResetBoundary,infiniteQueryOptions:()=>y.infiniteQueryOptions,queryOptions:()=>d.queryOptions,useInfiniteQuery:()=>w.useInfiniteQuery,useIsFetching:()=>v.useIsFetching,useIsMutating:()=>g.useIsMutating,useIsRestoring:()=>j.useIsRestoring,useMutation:()=>P.useMutation,useMutationState:()=>g.useMutationState,useQueries:()=>c.useQueries,useQuery:()=>l.useQuery,useQueryClient:()=>b.useQueryClient,useQueryErrorResetBoundary:()=>O.useQueryErrorResetBoundary,useSuspenseInfiniteQuery:()=>p.useSuspenseInfiniteQuery,useSuspenseQueries:()=>f.useSuspenseQueries,useSuspenseQuery:()=>h.useSuspenseQuery}),e.exports=(s=u,__copyProps(n({},"__esModule",{value:!0}),s)),__reExport(u,r(61528),e.exports),__reExport(u,r(429),e.exports);var c=r(25405),l=r(47313),h=r(29134),p=r(22715),f=r(15605),d=r(56701),y=r(19777),b=r(43653),m=r(32969),O=r(15178),v=r(43351),g=r(72836),P=r(89339),w=r(93217),j=r(46732)},19777:e=>{"use strict";var t,r=Object.defineProperty,s=Object.getOwnPropertyDescriptor,n=Object.getOwnPropertyNames,i=Object.prototype.hasOwnProperty,a={};function infiniteQueryOptions(e){return e}((e,t)=>{for(var s in t)r(e,s,{get:t[s],enumerable:!0})})(a,{infiniteQueryOptions:()=>infiniteQueryOptions}),e.exports=(t=a,((e,t,a,o)=>{if(t&&"object"==typeof t||"function"==typeof t)for(let u of n(t))i.call(e,u)||u===a||r(e,u,{get:()=>t[u],enumerable:!(o=s(t,u))||o.enumerable});return e})(r({},"__esModule",{value:!0}),t))},46732:(e,t,r)=>{"use strict";var s,n=Object.create,i=Object.defineProperty,a=Object.getOwnPropertyDescriptor,o=Object.getOwnPropertyNames,u=Object.getPrototypeOf,c=Object.prototype.hasOwnProperty,__copyProps=(e,t,r,s)=>{if(t&&"object"==typeof t||"function"==typeof t)for(let n of o(t))c.call(e,n)||n===r||i(e,n,{get:()=>t[n],enumerable:!(s=a(t,n))||s.enumerable});return e},l={};((e,t)=>{for(var r in t)i(e,r,{get:t[r],enumerable:!0})})(l,{IsRestoringProvider:()=>f,useIsRestoring:()=>useIsRestoring}),e.exports=(s=l,__copyProps(i({},"__esModule",{value:!0}),s));var h=((e,t,r)=>(r=null!=e?n(u(e)):{},__copyProps(!t&&e&&e.__esModule?r:i(r,"default",{value:e,enumerable:!0}),e)))(r(87363),1),p=h.createContext(!1),useIsRestoring=()=>h.useContext(p),f=p.Provider},56701:e=>{"use strict";var t,r=Object.defineProperty,s=Object.getOwnPropertyDescriptor,n=Object.getOwnPropertyNames,i=Object.prototype.hasOwnProperty,a={};function queryOptions(e){return e}((e,t)=>{for(var s in t)r(e,s,{get:t[s],enumerable:!0})})(a,{queryOptions:()=>queryOptions}),e.exports=(t=a,((e,t,a,o)=>{if(t&&"object"==typeof t||"function"==typeof t)for(let u of n(t))i.call(e,u)||u===a||r(e,u,{get:()=>t[u],enumerable:!(o=s(t,u))||o.enumerable});return e})(r({},"__esModule",{value:!0}),t))},28495:e=>{"use strict";var t,r=Object.defineProperty,s=Object.getOwnPropertyDescriptor,n=Object.getOwnPropertyNames,i=Object.prototype.hasOwnProperty,a={};((e,t)=>{for(var s in t)r(e,s,{get:t[s],enumerable:!0})})(a,{defaultThrowOnError:()=>defaultThrowOnError,ensureStaleTime:()=>ensureStaleTime,fetchOptimistic:()=>fetchOptimistic,shouldSuspend:()=>shouldSuspend,willFetch:()=>willFetch}),e.exports=(t=a,((e,t,a,o)=>{if(t&&"object"==typeof t||"function"==typeof t)for(let u of n(t))i.call(e,u)||u===a||r(e,u,{get:()=>t[u],enumerable:!(o=s(t,u))||o.enumerable});return e})(r({},"__esModule",{value:!0}),t));var defaultThrowOnError=(e,t)=>void 0===t.state.data,ensureStaleTime=e=>{e.suspense&&"number"!=typeof e.staleTime&&(e.staleTime=1e3)},willFetch=(e,t)=>e.isLoading&&e.isFetching&&!t,shouldSuspend=(e,t,r)=>e?.suspense&&willFetch(t,r),fetchOptimistic=(e,t,r)=>t.fetchOptimistic(e).catch((()=>{r.clearReset()}))},429:e=>{"use strict";var t,r=Object.defineProperty,s=Object.getOwnPropertyDescriptor,n=Object.getOwnPropertyNames,i=Object.prototype.hasOwnProperty;e.exports=(t={},((e,t,a,o)=>{if(t&&"object"==typeof t||"function"==typeof t)for(let u of n(t))i.call(e,u)||u===a||r(e,u,{get:()=>t[u],enumerable:!(o=s(t,u))||o.enumerable});return e})(r({},"__esModule",{value:!0}),t))},84238:(e,t,r)=>{"use strict";var s,n=Object.create,i=Object.defineProperty,a=Object.getOwnPropertyDescriptor,o=Object.getOwnPropertyNames,u=Object.getPrototypeOf,c=Object.prototype.hasOwnProperty,__copyProps=(e,t,r,s)=>{if(t&&"object"==typeof t||"function"==typeof t)for(let n of o(t))c.call(e,n)||n===r||i(e,n,{get:()=>t[n],enumerable:!(s=a(t,n))||s.enumerable});return e},l={};((e,t)=>{for(var r in t)i(e,r,{get:t[r],enumerable:!0})})(l,{useBaseQuery:()=>useBaseQuery}),e.exports=(s=l,__copyProps(i({},"__esModule",{value:!0}),s));var h=((e,t,r)=>(r=null!=e?n(u(e)):{},__copyProps(!t&&e&&e.__esModule?r:i(r,"default",{value:e,enumerable:!0}),e)))(r(87363),1),p=r(61528),f=r(15178),d=r(43653),y=r(46732),b=r(94025),m=r(28495);function useBaseQuery(e,t,r){const s=(0,d.useQueryClient)(r),n=(0,y.useIsRestoring)(),i=(0,f.useQueryErrorResetBoundary)(),a=s.defaultQueryOptions(e);a._optimisticResults=n?"isRestoring":"optimistic",(0,m.ensureStaleTime)(a),(0,b.ensurePreventErrorBoundaryRetry)(a,i),(0,b.useClearResetErrorBoundary)(i);const[o]=h.useState((()=>new t(s,a))),u=o.getOptimisticResult(a);if(h.useSyncExternalStore(h.useCallback((e=>{const t=n?()=>{}:o.subscribe(p.notifyManager.batchCalls(e));return o.updateResult(),t}),[o,n]),(()=>o.getCurrentResult()),(()=>o.getCurrentResult())),h.useEffect((()=>{o.setOptions(a,{listeners:!1})}),[a,o]),(0,m.shouldSuspend)(a,u,n))throw(0,m.fetchOptimistic)(a,o,i);if((0,b.getHasError)({result:u,errorResetBoundary:i,throwOnError:a.throwOnError,query:o.getCurrentQuery()}))throw u.error;return a.notifyOnChangeProps?u:o.trackResult(u)}},93217:(e,t,r)=>{"use strict";var s,n=Object.defineProperty,i=Object.getOwnPropertyDescriptor,a=Object.getOwnPropertyNames,o=Object.prototype.hasOwnProperty,u={};((e,t)=>{for(var r in t)n(e,r,{get:t[r],enumerable:!0})})(u,{useInfiniteQuery:()=>useInfiniteQuery}),e.exports=(s=u,((e,t,r,s)=>{if(t&&"object"==typeof t||"function"==typeof t)for(let u of a(t))o.call(e,u)||u===r||n(e,u,{get:()=>t[u],enumerable:!(s=i(t,u))||s.enumerable});return e})(n({},"__esModule",{value:!0}),s));var c=r(61528),l=r(84238);function useInfiniteQuery(e,t){return(0,l.useBaseQuery)(e,c.InfiniteQueryObserver,t)}},43351:(e,t,r)=>{"use strict";var s,n=Object.create,i=Object.defineProperty,a=Object.getOwnPropertyDescriptor,o=Object.getOwnPropertyNames,u=Object.getPrototypeOf,c=Object.prototype.hasOwnProperty,__copyProps=(e,t,r,s)=>{if(t&&"object"==typeof t||"function"==typeof t)for(let n of o(t))c.call(e,n)||n===r||i(e,n,{get:()=>t[n],enumerable:!(s=a(t,n))||s.enumerable});return e},l={};((e,t)=>{for(var r in t)i(e,r,{get:t[r],enumerable:!0})})(l,{useIsFetching:()=>useIsFetching}),e.exports=(s=l,__copyProps(i({},"__esModule",{value:!0}),s));var h=((e,t,r)=>(r=null!=e?n(u(e)):{},__copyProps(!t&&e&&e.__esModule?r:i(r,"default",{value:e,enumerable:!0}),e)))(r(87363),1),p=r(61528),f=r(43653);function useIsFetching(e,t){const r=(0,f.useQueryClient)(t),s=r.getQueryCache();return h.useSyncExternalStore(h.useCallback((e=>s.subscribe(p.notifyManager.batchCalls(e))),[s]),(()=>r.isFetching(e)),(()=>r.isFetching(e)))}},89339:(e,t,r)=>{"use strict";var s,n=Object.create,i=Object.defineProperty,a=Object.getOwnPropertyDescriptor,o=Object.getOwnPropertyNames,u=Object.getPrototypeOf,c=Object.prototype.hasOwnProperty,__copyProps=(e,t,r,s)=>{if(t&&"object"==typeof t||"function"==typeof t)for(let n of o(t))c.call(e,n)||n===r||i(e,n,{get:()=>t[n],enumerable:!(s=a(t,n))||s.enumerable});return e},l={};((e,t)=>{for(var r in t)i(e,r,{get:t[r],enumerable:!0})})(l,{useMutation:()=>useMutation}),e.exports=(s=l,__copyProps(i({},"__esModule",{value:!0}),s));var h=((e,t,r)=>(r=null!=e?n(u(e)):{},__copyProps(!t&&e&&e.__esModule?r:i(r,"default",{value:e,enumerable:!0}),e)))(r(87363),1),p=r(61528),f=r(43653),d=r(6609);function useMutation(e,t){const r=(0,f.useQueryClient)(t),[s]=h.useState((()=>new p.MutationObserver(r,e)));h.useEffect((()=>{s.setOptions(e)}),[s,e]);const n=h.useSyncExternalStore(h.useCallback((e=>s.subscribe(p.notifyManager.batchCalls(e))),[s]),(()=>s.getCurrentResult()),(()=>s.getCurrentResult())),i=h.useCallback(((e,t)=>{s.mutate(e,t).catch(noop)}),[s]);if(n.error&&(0,d.shouldThrowError)(s.options.throwOnError,[n.error]))throw n.error;return{...n,mutate:i,mutateAsync:n.mutate}}function noop(){}},72836:(e,t,r)=>{"use strict";var s,n=Object.create,i=Object.defineProperty,a=Object.getOwnPropertyDescriptor,o=Object.getOwnPropertyNames,u=Object.getPrototypeOf,c=Object.prototype.hasOwnProperty,__copyProps=(e,t,r,s)=>{if(t&&"object"==typeof t||"function"==typeof t)for(let n of o(t))c.call(e,n)||n===r||i(e,n,{get:()=>t[n],enumerable:!(s=a(t,n))||s.enumerable});return e},l={};((e,t)=>{for(var r in t)i(e,r,{get:t[r],enumerable:!0})})(l,{useIsMutating:()=>useIsMutating,useMutationState:()=>useMutationState}),e.exports=(s=l,__copyProps(i({},"__esModule",{value:!0}),s));var h=((e,t,r)=>(r=null!=e?n(u(e)):{},__copyProps(!t&&e&&e.__esModule?r:i(r,"default",{value:e,enumerable:!0}),e)))(r(87363),1),p=r(61528),f=r(43653);function useIsMutating(e,t){return useMutationState({filters:{...e,status:"pending"}},(0,f.useQueryClient)(t)).length}function getResult(e,t){return e.findAll(t.filters).map((e=>t.select?t.select(e):e.state))}function useMutationState(e={},t){const r=(0,f.useQueryClient)(t).getMutationCache(),s=h.useRef(e),n=h.useRef();return n.current||(n.current=getResult(r,e)),h.useEffect((()=>{s.current=e})),h.useSyncExternalStore(h.useCallback((e=>r.subscribe((()=>{const t=(0,p.replaceEqualDeep)(n.current,getResult(r,s.current));n.current!==t&&(n.current=t,p.notifyManager.schedule(e))}))),[r]),(()=>n.current),(()=>n.current))}},25405:(e,t,r)=>{"use strict";var s,n=Object.create,i=Object.defineProperty,a=Object.getOwnPropertyDescriptor,o=Object.getOwnPropertyNames,u=Object.getPrototypeOf,c=Object.prototype.hasOwnProperty,__copyProps=(e,t,r,s)=>{if(t&&"object"==typeof t||"function"==typeof t)for(let n of o(t))c.call(e,n)||n===r||i(e,n,{get:()=>t[n],enumerable:!(s=a(t,n))||s.enumerable});return e},l={};((e,t)=>{for(var r in t)i(e,r,{get:t[r],enumerable:!0})})(l,{useQueries:()=>useQueries}),e.exports=(s=l,__copyProps(i({},"__esModule",{value:!0}),s));var h=((e,t,r)=>(r=null!=e?n(u(e)):{},__copyProps(!t&&e&&e.__esModule?r:i(r,"default",{value:e,enumerable:!0}),e)))(r(87363),1),p=r(61528),f=r(43653),d=r(46732),y=r(15178),b=r(94025),m=r(28495);function useQueries({queries:e,...t},r){const s=(0,f.useQueryClient)(r),n=(0,d.useIsRestoring)(),i=(0,y.useQueryErrorResetBoundary)(),a=h.useMemo((()=>e.map((e=>{const t=s.defaultQueryOptions(e);return t._optimisticResults=n?"isRestoring":"optimistic",t}))),[e,s,n]);a.forEach((e=>{(0,m.ensureStaleTime)(e),(0,b.ensurePreventErrorBoundaryRetry)(e,i)})),(0,b.useClearResetErrorBoundary)(i);const[o]=h.useState((()=>new p.QueriesObserver(s,a,t))),[u,c,l]=o.getOptimisticResult(a);h.useSyncExternalStore(h.useCallback((e=>n?()=>{}:o.subscribe(p.notifyManager.batchCalls(e))),[o,n]),(()=>o.getCurrentResult()),(()=>o.getCurrentResult())),h.useEffect((()=>{o.setQueries(a,t,{listeners:!1})}),[a,t,o]);const O=u.some(((e,t)=>(0,m.shouldSuspend)(a[t],e,n)))?u.flatMap(((e,t)=>{const r=a[t];if(r){const t=new p.QueryObserver(s,r);if((0,m.shouldSuspend)(r,e,n))return(0,m.fetchOptimistic)(r,t,i);(0,m.willFetch)(e,n)&&(0,m.fetchOptimistic)(r,t,i)}return[]})):[];if(O.length>0)throw Promise.all(O);const v=o.getQueries(),g=u.find(((e,t)=>(0,b.getHasError)({result:e,errorResetBoundary:i,throwOnError:a[t]?.throwOnError??!1,query:v[t]})));if(g?.error)throw g.error;return c(l())}},47313:(e,t,r)=>{"use strict";var s,n=Object.defineProperty,i=Object.getOwnPropertyDescriptor,a=Object.getOwnPropertyNames,o=Object.prototype.hasOwnProperty,u={};((e,t)=>{for(var r in t)n(e,r,{get:t[r],enumerable:!0})})(u,{useQuery:()=>useQuery}),e.exports=(s=u,((e,t,r,s)=>{if(t&&"object"==typeof t||"function"==typeof t)for(let u of a(t))o.call(e,u)||u===r||n(e,u,{get:()=>t[u],enumerable:!(s=i(t,u))||s.enumerable});return e})(n({},"__esModule",{value:!0}),s));var c=r(61528),l=r(84238);function useQuery(e,t){return(0,l.useBaseQuery)(e,c.QueryObserver,t)}},22715:(e,t,r)=>{"use strict";var s,n=Object.defineProperty,i=Object.getOwnPropertyDescriptor,a=Object.getOwnPropertyNames,o=Object.prototype.hasOwnProperty,u={};((e,t)=>{for(var r in t)n(e,r,{get:t[r],enumerable:!0})})(u,{useSuspenseInfiniteQuery:()=>useSuspenseInfiniteQuery}),e.exports=(s=u,((e,t,r,s)=>{if(t&&"object"==typeof t||"function"==typeof t)for(let u of a(t))o.call(e,u)||u===r||n(e,u,{get:()=>t[u],enumerable:!(s=i(t,u))||s.enumerable});return e})(n({},"__esModule",{value:!0}),s));var c=r(61528),l=r(84238),h=r(28495);function useSuspenseInfiniteQuery(e,t){return(0,l.useBaseQuery)({...e,enabled:!0,suspense:!0,throwOnError:h.defaultThrowOnError},c.InfiniteQueryObserver,t)}},15605:(e,t,r)=>{"use strict";var s,n=Object.defineProperty,i=Object.getOwnPropertyDescriptor,a=Object.getOwnPropertyNames,o=Object.prototype.hasOwnProperty,u={};((e,t)=>{for(var r in t)n(e,r,{get:t[r],enumerable:!0})})(u,{useSuspenseQueries:()=>useSuspenseQueries}),e.exports=(s=u,((e,t,r,s)=>{if(t&&"object"==typeof t||"function"==typeof t)for(let u of a(t))o.call(e,u)||u===r||n(e,u,{get:()=>t[u],enumerable:!(s=i(t,u))||s.enumerable});return e})(n({},"__esModule",{value:!0}),s));var c=r(25405),l=r(28495);function useSuspenseQueries(e,t){return(0,c.useQueries)({...e,queries:e.queries.map((e=>({...e,suspense:!0,throwOnError:l.defaultThrowOnError,enabled:!0})))},t)}},29134:(e,t,r)=>{"use strict";var s,n=Object.defineProperty,i=Object.getOwnPropertyDescriptor,a=Object.getOwnPropertyNames,o=Object.prototype.hasOwnProperty,u={};((e,t)=>{for(var r in t)n(e,r,{get:t[r],enumerable:!0})})(u,{useSuspenseQuery:()=>useSuspenseQuery}),e.exports=(s=u,((e,t,r,s)=>{if(t&&"object"==typeof t||"function"==typeof t)for(let u of a(t))o.call(e,u)||u===r||n(e,u,{get:()=>t[u],enumerable:!(s=i(t,u))||s.enumerable});return e})(n({},"__esModule",{value:!0}),s));var c=r(61528),l=r(84238),h=r(28495);function useSuspenseQuery(e,t){return(0,l.useBaseQuery)({...e,enabled:!0,suspense:!0,throwOnError:h.defaultThrowOnError},c.QueryObserver,t)}},6609:e=>{"use strict";var t,r=Object.defineProperty,s=Object.getOwnPropertyDescriptor,n=Object.getOwnPropertyNames,i=Object.prototype.hasOwnProperty,a={};function shouldThrowError(e,t){return"function"==typeof e?e(...t):!!e}((e,t)=>{for(var s in t)r(e,s,{get:t[s],enumerable:!0})})(a,{shouldThrowError:()=>shouldThrowError}),e.exports=(t=a,((e,t,a,o)=>{if(t&&"object"==typeof t||"function"==typeof t)for(let u of n(t))i.call(e,u)||u===a||r(e,u,{get:()=>t[u],enumerable:!(o=s(t,u))||o.enumerable});return e})(r({},"__esModule",{value:!0}),t))}},t={};function __webpack_require__(r){var s=t[r];if(void 0!==s)return s.exports;var n=t[r]={exports:{}};return e[r](n,n.exports,__webpack_require__),n.exports}(()=>{"use strict";var e=__webpack_require__(13849);window.elementorNotificationCenter={BarButtonNotification:e.BarButtonNotification}})()})(); \ No newline at end of file diff --git a/wp-content/plugins/elementor/assets/js/admin-top-bar.js b/wp-content/plugins/elementor/assets/js/admin-top-bar.js new file mode 100644 index 0000000..e122095 --- /dev/null +++ b/wp-content/plugins/elementor/assets/js/admin-top-bar.js @@ -0,0 +1,1652 @@ +/*! elementor - v3.20.0 - 26-03-2024 */ +/******/ (() => { // webpackBootstrap +/******/ var __webpack_modules__ = ({ + +/***/ "../core/common/assets/js/utils/environment.js": +/*!*****************************************************!*\ + !*** ../core/common/assets/js/utils/environment.js ***! + \*****************************************************/ +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; +var matchUserAgent = function matchUserAgent(UserAgentStr) { + return userAgent.indexOf(UserAgentStr) >= 0; + }, + userAgent = navigator.userAgent, + // Solution influenced by https://stackoverflow.com/questions/9847580/how-to-detect-safari-chrome-ie-firefox-and-opera-browser + + // Opera 8.0+ + isOpera = !!window.opr && !!opr.addons || !!window.opera || matchUserAgent(' OPR/'), + // Firefox 1.0+ + isFirefox = matchUserAgent('Firefox'), + // Safari 3.0+ "[object HTMLElementConstructor]" + isSafari = /^((?!chrome|android).)*safari/i.test(userAgent) || /constructor/i.test(window.HTMLElement) || function (p) { + return '[object SafariRemoteNotification]' === p.toString(); + }(!window.safari || typeof safari !== 'undefined' && safari.pushNotification), + // Internet Explorer 6-11 + isIE = /Trident|MSIE/.test(userAgent) && ( /* @cc_on!@*/ false || !!document.documentMode), + // Edge 20+ + isEdge = !isIE && !!window.StyleMedia || matchUserAgent('Edg'), + // Google Chrome (Not accurate) + isChrome = !!window.chrome && matchUserAgent('Chrome') && !(isEdge || isOpera), + // Blink engine + isBlink = matchUserAgent('Chrome') && !!window.CSS, + // Apple Webkit engine + isAppleWebkit = matchUserAgent('AppleWebKit') && !isBlink, + isTouchDevice = 'ontouchstart' in window || navigator.maxTouchPoints > 0 || navigator.msMaxTouchPoints > 0, + environment = { + isTouchDevice: isTouchDevice, + appleWebkit: isAppleWebkit, + blink: isBlink, + chrome: isChrome, + edge: isEdge, + firefox: isFirefox, + ie: isIE, + mac: matchUserAgent('Macintosh'), + opera: isOpera, + safari: isSafari, + webkit: matchUserAgent('AppleWebKit') + }; +var _default = environment; +exports["default"] = _default; + +/***/ }), + +/***/ "../modules/admin-top-bar/assets/js/admin-top-bar.js": +/*!***********************************************************!*\ + !*** ../modules/admin-top-bar/assets/js/admin-top-bar.js ***! + \***********************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +/* provided dependency */ var __ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n")["__"]; + + +var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js"); +var _typeof = __webpack_require__(/*! @babel/runtime/helpers/typeof */ "../node_modules/@babel/runtime/helpers/typeof.js"); +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = AdminTopBar; +var _react = _interopRequireWildcard(__webpack_require__(/*! react */ "react")); +var _barButton = _interopRequireDefault(__webpack_require__(/*! ./components/bar-button/bar-button */ "../modules/admin-top-bar/assets/js/components/bar-button/bar-button.js")); +var _barHeading = _interopRequireDefault(__webpack_require__(/*! ./components/bar-heading/bar-heading */ "../modules/admin-top-bar/assets/js/components/bar-heading/bar-heading.js")); +var _connectionButton = _interopRequireDefault(__webpack_require__(/*! ./components/connection-button/connection-button */ "../modules/admin-top-bar/assets/js/components/connection-button/connection-button.js")); +var _usePageTitle = __webpack_require__(/*! ./hooks/use-page-title/use-page-title */ "../modules/admin-top-bar/assets/js/hooks/use-page-title/use-page-title.js"); +var _environment = _interopRequireDefault(__webpack_require__(/*! elementor-common/utils/environment */ "../core/common/assets/js/utils/environment.js")); +function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); } +function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; } +function AdminTopBar() { + var _window, _window$elementorNoti, _elementorNotificatio; + var actionButtonsRef = (0, _react.useRef)(), + promotion = window.elementorAdminTopBarConfig.promotion; + + // Handle Top Bar visibility on initiation: Indicate that the admin top bar is visible and the page content needs to push down below the admin top bar for visibility. + (0, _react.useEffect)(function () { + var adminTopBarElement = document.querySelector('#e-admin-top-bar-root'); + adminTopBarElement.classList.add('e-admin-top-bar--active'); + }, []); + + // Handle the page title visibility in admin top bar. + var pageTitleText = (0, _usePageTitle.usePageTitle)(); + + // Handle the action buttons visibility in admin top bar on initiation. + (0, _react.useEffect)(function () { + var actionButtonElements = document.querySelectorAll('.page-title-action'); + actionButtonElements.forEach(function (actionButtonElement) { + actionButtonsRef.current.appendChild(actionButtonElement); + }); + }, []); + var finderAction = function finderAction() { + $e.route('finder'); + }; + var controlSign = _environment.default.mac ? "\u2318" : '^'; + var finderTooltipText = __('Search or do anything in Elementor', 'elementor') + " ".concat(controlSign, "+E"); + var BarButtonNotification = (_window = window) === null || _window === void 0 ? void 0 : (_window$elementorNoti = _window.elementorNotificationCenter) === null || _window$elementorNoti === void 0 ? void 0 : _window$elementorNoti.BarButtonNotification; + return /*#__PURE__*/_react.default.createElement("div", { + className: "e-admin-top-bar" + }, /*#__PURE__*/_react.default.createElement("div", { + className: "e-admin-top-bar__main-area" + }, /*#__PURE__*/_react.default.createElement(_barHeading.default, null, pageTitleText), /*#__PURE__*/_react.default.createElement("div", { + className: "e-admin-top-bar__main-area-buttons", + ref: actionButtonsRef + })), /*#__PURE__*/_react.default.createElement("div", { + className: "e-admin-top-bar__secondary-area" + }, /*#__PURE__*/_react.default.createElement("div", { + className: "e-admin-top-bar__secondary-area-buttons" + }, !elementorAppConfig.hasPro && /*#__PURE__*/_react.default.createElement(_barButton.default, { + additionalClasses: "accent", + href: promotion.url, + target: "__blank", + icon: "eicon-upgrade-crown", + iconAdditionalClasses: "crown-icon" + }, promotion.text), /*#__PURE__*/_react.default.createElement(_barButton.default, { + href: window.elementorAdminTopBarConfig.apps_url, + icon: "eicon-integration" + }, __('Add-ons', 'elementor')), window.elementorAdminTopBarConfig.is_administrator ? /*#__PURE__*/_react.default.createElement(_barButton.default, { + onClick: finderAction, + dataInfo: finderTooltipText, + icon: "eicon-search-bold" + }, __('Finder', 'elementor')) : '', window.elementorCloudAdmin ? window.elementorCloudAdmin() : '', BarButtonNotification ? /*#__PURE__*/_react.default.createElement(BarButtonNotification, { + defaultIsRead: !((_elementorNotificatio = elementorNotifications) !== null && _elementorNotificatio !== void 0 && _elementorNotificatio.is_unread) + }, __('What\'s New', 'elementor')) : ''), /*#__PURE__*/_react.default.createElement(_connectionButton.default, null))); +} + +/***/ }), + +/***/ "../modules/admin-top-bar/assets/js/components/bar-button/bar-button.js": +/*!******************************************************************************!*\ + !*** ../modules/admin-top-bar/assets/js/components/bar-button/bar-button.js ***! + \******************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +/* provided dependency */ var PropTypes = __webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js"); + + +var _typeof = __webpack_require__(/*! @babel/runtime/helpers/typeof */ "../node_modules/@babel/runtime/helpers/typeof.js"); +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = BarButton; +var _react = _interopRequireWildcard(__webpack_require__(/*! react */ "react")); +function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); } +function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; } +function BarButton(props) { + (0, _react.useEffect)(function () { + if (props.dataInfo) { + jQuery('.e-admin-top-bar__bar-button[data-info]').tipsy({ + title: function title() { + return this.getAttribute('data-info'); + }, + gravity: function gravity() { + return 'n'; + }, + delayIn: 400, + offset: 1 + }); + } + }, []); + return /*#__PURE__*/_react.default.createElement("a", { + className: "e-admin-top-bar__bar-button ".concat(props.additionalClasses), + ref: props.buttonRef, + onClick: props.onClick, + "data-info": props.dataInfo, + href: props.href, + target: props.target + }, /*#__PURE__*/_react.default.createElement("i", { + className: "e-admin-top-bar__bar-button-icon ".concat(props.icon, " ").concat(props.iconAdditionalClasses) + }), /*#__PURE__*/_react.default.createElement("span", { + className: "e-admin-top-bar__bar-button-title" + }, props.children)); +} +BarButton.propTypes = { + children: PropTypes.any, + dataInfo: PropTypes.string, + icon: PropTypes.any, + onClick: PropTypes.func, + buttonRef: PropTypes.object, + href: PropTypes.string, + target: PropTypes.string, + additionalClasses: PropTypes.string, + iconAdditionalClasses: PropTypes.string +}; + +/***/ }), + +/***/ "../modules/admin-top-bar/assets/js/components/bar-heading/bar-heading.js": +/*!********************************************************************************!*\ + !*** ../modules/admin-top-bar/assets/js/components/bar-heading/bar-heading.js ***! + \********************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +/* provided dependency */ var PropTypes = __webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js"); + + +var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js"); +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = BarHeading; +var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react")); +function BarHeading(props) { + return /*#__PURE__*/_react.default.createElement("div", { + className: "e-admin-top-bar__heading" + }, /*#__PURE__*/_react.default.createElement("div", { + className: "e-logo-wrapper" + }, /*#__PURE__*/_react.default.createElement("i", { + className: "eicon-elementor", + "aria-hidden": "true" + })), /*#__PURE__*/_react.default.createElement("span", { + className: "e-admin-top-bar__heading-title" + }, props.children)); +} +BarHeading.propTypes = { + children: PropTypes.any +}; + +/***/ }), + +/***/ "../modules/admin-top-bar/assets/js/components/connection-button/connection-button.js": +/*!********************************************************************************************!*\ + !*** ../modules/admin-top-bar/assets/js/components/connection-button/connection-button.js ***! + \********************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +/* provided dependency */ var __ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n")["__"]; + + +var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js"); +var _typeof = __webpack_require__(/*! @babel/runtime/helpers/typeof */ "../node_modules/@babel/runtime/helpers/typeof.js"); +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = ConnectionButton; +var _react = _interopRequireWildcard(__webpack_require__(/*! react */ "react")); +var _barButton = _interopRequireDefault(__webpack_require__(/*! ../bar-button/bar-button */ "../modules/admin-top-bar/assets/js/components/bar-button/bar-button.js")); +function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); } +function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; } +function ConnectionButton() { + var buttonRef = (0, _react.useRef)(); + var isUserConnected = elementorAdminTopBarConfig.is_user_connected; + (0, _react.useEffect)(function () { + if (!buttonRef.current || isUserConnected) { + return; + } + jQuery(buttonRef.current).elementorConnect(); + }, []); + var tooltipText = __('Connect your account to get access to Elementor\'s Template Library & more.', 'elementor'), + connectUrl = elementorAdminTopBarConfig.connect_url, + buttonText = __('Connect Account', 'elementor'), + targetUrl = '_self'; + if (isUserConnected) { + tooltipText = ''; + connectUrl = 'https://go.elementor.com/wp-dash-admin-bar-account/'; + buttonText = __('My Elementor', 'elementor'); + targetUrl = '_blank'; + } + return /*#__PURE__*/_react.default.createElement(_barButton.default, { + icon: "eicon-user-circle-o", + buttonRef: buttonRef, + dataInfo: tooltipText, + href: connectUrl, + target: targetUrl + }, buttonText); +} + +/***/ }), + +/***/ "../modules/admin-top-bar/assets/js/hooks/use-page-title/use-page-title.js": +/*!*********************************************************************************!*\ + !*** ../modules/admin-top-bar/assets/js/hooks/use-page-title/use-page-title.js ***! + \*********************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + + +var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js"); +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.usePageTitle = void 0; +var _slicedToArray2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/slicedToArray */ "../node_modules/@babel/runtime/helpers/slicedToArray.js")); +var _react = __webpack_require__(/*! react */ "react"); +var usePageTitle = function usePageTitle() { + var _useState = (0, _react.useState)('Elementor'), + _useState2 = (0, _slicedToArray2.default)(_useState, 2), + pageTitle = _useState2[0], + setPageTitle = _useState2[1]; + (0, _react.useEffect)(function () { + var pageTitleElement = document.querySelector('.wp-heading-inline'); + if (!pageTitleElement) { + return; + } + setPageTitle(pageTitleElement.innerText); + }, []); + return pageTitle; +}; +exports.usePageTitle = usePageTitle; + +/***/ }), + +/***/ "../node_modules/object-assign/index.js": +/*!**********************************************!*\ + !*** ../node_modules/object-assign/index.js ***! + \**********************************************/ +/***/ ((module) => { + +"use strict"; +/* +object-assign +(c) Sindre Sorhus +@license MIT +*/ + + +/* eslint-disable no-unused-vars */ +var getOwnPropertySymbols = Object.getOwnPropertySymbols; +var hasOwnProperty = Object.prototype.hasOwnProperty; +var propIsEnumerable = Object.prototype.propertyIsEnumerable; + +function toObject(val) { + if (val === null || val === undefined) { + throw new TypeError('Object.assign cannot be called with null or undefined'); + } + + return Object(val); +} + +function shouldUseNative() { + try { + if (!Object.assign) { + return false; + } + + // Detect buggy property enumeration order in older V8 versions. + + // https://bugs.chromium.org/p/v8/issues/detail?id=4118 + var test1 = new String('abc'); // eslint-disable-line no-new-wrappers + test1[5] = 'de'; + if (Object.getOwnPropertyNames(test1)[0] === '5') { + return false; + } + + // https://bugs.chromium.org/p/v8/issues/detail?id=3056 + var test2 = {}; + for (var i = 0; i < 10; i++) { + test2['_' + String.fromCharCode(i)] = i; + } + var order2 = Object.getOwnPropertyNames(test2).map(function (n) { + return test2[n]; + }); + if (order2.join('') !== '0123456789') { + return false; + } + + // https://bugs.chromium.org/p/v8/issues/detail?id=3056 + var test3 = {}; + 'abcdefghijklmnopqrst'.split('').forEach(function (letter) { + test3[letter] = letter; + }); + if (Object.keys(Object.assign({}, test3)).join('') !== + 'abcdefghijklmnopqrst') { + return false; + } + + return true; + } catch (err) { + // We don't expect any of the above to throw, but better to be safe. + return false; + } +} + +module.exports = shouldUseNative() ? Object.assign : function (target, source) { + var from; + var to = toObject(target); + var symbols; + + for (var s = 1; s < arguments.length; s++) { + from = Object(arguments[s]); + + for (var key in from) { + if (hasOwnProperty.call(from, key)) { + to[key] = from[key]; + } + } + + if (getOwnPropertySymbols) { + symbols = getOwnPropertySymbols(from); + for (var i = 0; i < symbols.length; i++) { + if (propIsEnumerable.call(from, symbols[i])) { + to[symbols[i]] = from[symbols[i]]; + } + } + } + } + + return to; +}; + + +/***/ }), + +/***/ "../node_modules/prop-types/checkPropTypes.js": +/*!****************************************************!*\ + !*** ../node_modules/prop-types/checkPropTypes.js ***! + \****************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; +/** + * Copyright (c) 2013-present, Facebook, Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + + + +var printWarning = function() {}; + +if (true) { + var ReactPropTypesSecret = __webpack_require__(/*! ./lib/ReactPropTypesSecret */ "../node_modules/prop-types/lib/ReactPropTypesSecret.js"); + var loggedTypeFailures = {}; + var has = __webpack_require__(/*! ./lib/has */ "../node_modules/prop-types/lib/has.js"); + + printWarning = function(text) { + var message = 'Warning: ' + text; + if (typeof console !== 'undefined') { + console.error(message); + } + try { + // --- Welcome to debugging React --- + // This error was thrown as a convenience so that you can use this stack + // to find the callsite that caused this warning to fire. + throw new Error(message); + } catch (x) { /**/ } + }; +} + +/** + * Assert that the values match with the type specs. + * Error messages are memorized and will only be shown once. + * + * @param {object} typeSpecs Map of name to a ReactPropType + * @param {object} values Runtime values that need to be type-checked + * @param {string} location e.g. "prop", "context", "child context" + * @param {string} componentName Name of the component for error messages. + * @param {?Function} getStack Returns the component stack. + * @private + */ +function checkPropTypes(typeSpecs, values, location, componentName, getStack) { + if (true) { + for (var typeSpecName in typeSpecs) { + if (has(typeSpecs, typeSpecName)) { + var error; + // Prop type validation may throw. In case they do, we don't want to + // fail the render phase where it didn't fail before. So we log it. + // After these have been cleaned up, we'll let them throw. + try { + // This is intentionally an invariant that gets caught. It's the same + // behavior as without this statement except with a better message. + if (typeof typeSpecs[typeSpecName] !== 'function') { + var err = Error( + (componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' + + 'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.' + + 'This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.' + ); + err.name = 'Invariant Violation'; + throw err; + } + error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret); + } catch (ex) { + error = ex; + } + if (error && !(error instanceof Error)) { + printWarning( + (componentName || 'React class') + ': type specification of ' + + location + ' `' + typeSpecName + '` is invalid; the type checker ' + + 'function must return `null` or an `Error` but returned a ' + typeof error + '. ' + + 'You may have forgotten to pass an argument to the type checker ' + + 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' + + 'shape all require an argument).' + ); + } + if (error instanceof Error && !(error.message in loggedTypeFailures)) { + // Only monitor this failure once because there tends to be a lot of the + // same error. + loggedTypeFailures[error.message] = true; + + var stack = getStack ? getStack() : ''; + + printWarning( + 'Failed ' + location + ' type: ' + error.message + (stack != null ? stack : '') + ); + } + } + } + } +} + +/** + * Resets warning cache when testing. + * + * @private + */ +checkPropTypes.resetWarningCache = function() { + if (true) { + loggedTypeFailures = {}; + } +} + +module.exports = checkPropTypes; + + +/***/ }), + +/***/ "../node_modules/prop-types/factoryWithTypeCheckers.js": +/*!*************************************************************!*\ + !*** ../node_modules/prop-types/factoryWithTypeCheckers.js ***! + \*************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; +/** + * Copyright (c) 2013-present, Facebook, Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + + + +var ReactIs = __webpack_require__(/*! react-is */ "../node_modules/prop-types/node_modules/react-is/index.js"); +var assign = __webpack_require__(/*! object-assign */ "../node_modules/object-assign/index.js"); + +var ReactPropTypesSecret = __webpack_require__(/*! ./lib/ReactPropTypesSecret */ "../node_modules/prop-types/lib/ReactPropTypesSecret.js"); +var has = __webpack_require__(/*! ./lib/has */ "../node_modules/prop-types/lib/has.js"); +var checkPropTypes = __webpack_require__(/*! ./checkPropTypes */ "../node_modules/prop-types/checkPropTypes.js"); + +var printWarning = function() {}; + +if (true) { + printWarning = function(text) { + var message = 'Warning: ' + text; + if (typeof console !== 'undefined') { + console.error(message); + } + try { + // --- Welcome to debugging React --- + // This error was thrown as a convenience so that you can use this stack + // to find the callsite that caused this warning to fire. + throw new Error(message); + } catch (x) {} + }; +} + +function emptyFunctionThatReturnsNull() { + return null; +} + +module.exports = function(isValidElement, throwOnDirectAccess) { + /* global Symbol */ + var ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator; + var FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec. + + /** + * Returns the iterator method function contained on the iterable object. + * + * Be sure to invoke the function with the iterable as context: + * + * var iteratorFn = getIteratorFn(myIterable); + * if (iteratorFn) { + * var iterator = iteratorFn.call(myIterable); + * ... + * } + * + * @param {?object} maybeIterable + * @return {?function} + */ + function getIteratorFn(maybeIterable) { + var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]); + if (typeof iteratorFn === 'function') { + return iteratorFn; + } + } + + /** + * Collection of methods that allow declaration and validation of props that are + * supplied to React components. Example usage: + * + * var Props = require('ReactPropTypes'); + * var MyArticle = React.createClass({ + * propTypes: { + * // An optional string prop named "description". + * description: Props.string, + * + * // A required enum prop named "category". + * category: Props.oneOf(['News','Photos']).isRequired, + * + * // A prop named "dialog" that requires an instance of Dialog. + * dialog: Props.instanceOf(Dialog).isRequired + * }, + * render: function() { ... } + * }); + * + * A more formal specification of how these methods are used: + * + * type := array|bool|func|object|number|string|oneOf([...])|instanceOf(...) + * decl := ReactPropTypes.{type}(.isRequired)? + * + * Each and every declaration produces a function with the same signature. This + * allows the creation of custom validation functions. For example: + * + * var MyLink = React.createClass({ + * propTypes: { + * // An optional string or URI prop named "href". + * href: function(props, propName, componentName) { + * var propValue = props[propName]; + * if (propValue != null && typeof propValue !== 'string' && + * !(propValue instanceof URI)) { + * return new Error( + * 'Expected a string or an URI for ' + propName + ' in ' + + * componentName + * ); + * } + * } + * }, + * render: function() {...} + * }); + * + * @internal + */ + + var ANONYMOUS = '<>'; + + // Important! + // Keep this list in sync with production version in `./factoryWithThrowingShims.js`. + var ReactPropTypes = { + array: createPrimitiveTypeChecker('array'), + bigint: createPrimitiveTypeChecker('bigint'), + bool: createPrimitiveTypeChecker('boolean'), + func: createPrimitiveTypeChecker('function'), + number: createPrimitiveTypeChecker('number'), + object: createPrimitiveTypeChecker('object'), + string: createPrimitiveTypeChecker('string'), + symbol: createPrimitiveTypeChecker('symbol'), + + any: createAnyTypeChecker(), + arrayOf: createArrayOfTypeChecker, + element: createElementTypeChecker(), + elementType: createElementTypeTypeChecker(), + instanceOf: createInstanceTypeChecker, + node: createNodeChecker(), + objectOf: createObjectOfTypeChecker, + oneOf: createEnumTypeChecker, + oneOfType: createUnionTypeChecker, + shape: createShapeTypeChecker, + exact: createStrictShapeTypeChecker, + }; + + /** + * inlined Object.is polyfill to avoid requiring consumers ship their own + * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is + */ + /*eslint-disable no-self-compare*/ + function is(x, y) { + // SameValue algorithm + if (x === y) { + // Steps 1-5, 7-10 + // Steps 6.b-6.e: +0 != -0 + return x !== 0 || 1 / x === 1 / y; + } else { + // Step 6.a: NaN == NaN + return x !== x && y !== y; + } + } + /*eslint-enable no-self-compare*/ + + /** + * We use an Error-like object for backward compatibility as people may call + * PropTypes directly and inspect their output. However, we don't use real + * Errors anymore. We don't inspect their stack anyway, and creating them + * is prohibitively expensive if they are created too often, such as what + * happens in oneOfType() for any type before the one that matched. + */ + function PropTypeError(message, data) { + this.message = message; + this.data = data && typeof data === 'object' ? data: {}; + this.stack = ''; + } + // Make `instanceof Error` still work for returned errors. + PropTypeError.prototype = Error.prototype; + + function createChainableTypeChecker(validate) { + if (true) { + var manualPropTypeCallCache = {}; + var manualPropTypeWarningCount = 0; + } + function checkType(isRequired, props, propName, componentName, location, propFullName, secret) { + componentName = componentName || ANONYMOUS; + propFullName = propFullName || propName; + + if (secret !== ReactPropTypesSecret) { + if (throwOnDirectAccess) { + // New behavior only for users of `prop-types` package + var err = new Error( + 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' + + 'Use `PropTypes.checkPropTypes()` to call them. ' + + 'Read more at http://fb.me/use-check-prop-types' + ); + err.name = 'Invariant Violation'; + throw err; + } else if ( true && typeof console !== 'undefined') { + // Old behavior for people using React.PropTypes + var cacheKey = componentName + ':' + propName; + if ( + !manualPropTypeCallCache[cacheKey] && + // Avoid spamming the console because they are often not actionable except for lib authors + manualPropTypeWarningCount < 3 + ) { + printWarning( + 'You are manually calling a React.PropTypes validation ' + + 'function for the `' + propFullName + '` prop on `' + componentName + '`. This is deprecated ' + + 'and will throw in the standalone `prop-types` package. ' + + 'You may be seeing this warning due to a third-party PropTypes ' + + 'library. See https://fb.me/react-warning-dont-call-proptypes ' + 'for details.' + ); + manualPropTypeCallCache[cacheKey] = true; + manualPropTypeWarningCount++; + } + } + } + if (props[propName] == null) { + if (isRequired) { + if (props[propName] === null) { + return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required ' + ('in `' + componentName + '`, but its value is `null`.')); + } + return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required in ' + ('`' + componentName + '`, but its value is `undefined`.')); + } + return null; + } else { + return validate(props, propName, componentName, location, propFullName); + } + } + + var chainedCheckType = checkType.bind(null, false); + chainedCheckType.isRequired = checkType.bind(null, true); + + return chainedCheckType; + } + + function createPrimitiveTypeChecker(expectedType) { + function validate(props, propName, componentName, location, propFullName, secret) { + var propValue = props[propName]; + var propType = getPropType(propValue); + if (propType !== expectedType) { + // `propValue` being instance of, say, date/regexp, pass the 'object' + // check, but we can offer a more precise error message here rather than + // 'of type `object`'. + var preciseType = getPreciseType(propValue); + + return new PropTypeError( + 'Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + preciseType + '` supplied to `' + componentName + '`, expected ') + ('`' + expectedType + '`.'), + {expectedType: expectedType} + ); + } + return null; + } + return createChainableTypeChecker(validate); + } + + function createAnyTypeChecker() { + return createChainableTypeChecker(emptyFunctionThatReturnsNull); + } + + function createArrayOfTypeChecker(typeChecker) { + function validate(props, propName, componentName, location, propFullName) { + if (typeof typeChecker !== 'function') { + return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside arrayOf.'); + } + var propValue = props[propName]; + if (!Array.isArray(propValue)) { + var propType = getPropType(propValue); + return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an array.')); + } + for (var i = 0; i < propValue.length; i++) { + var error = typeChecker(propValue, i, componentName, location, propFullName + '[' + i + ']', ReactPropTypesSecret); + if (error instanceof Error) { + return error; + } + } + return null; + } + return createChainableTypeChecker(validate); + } + + function createElementTypeChecker() { + function validate(props, propName, componentName, location, propFullName) { + var propValue = props[propName]; + if (!isValidElement(propValue)) { + var propType = getPropType(propValue); + return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement.')); + } + return null; + } + return createChainableTypeChecker(validate); + } + + function createElementTypeTypeChecker() { + function validate(props, propName, componentName, location, propFullName) { + var propValue = props[propName]; + if (!ReactIs.isValidElementType(propValue)) { + var propType = getPropType(propValue); + return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement type.')); + } + return null; + } + return createChainableTypeChecker(validate); + } + + function createInstanceTypeChecker(expectedClass) { + function validate(props, propName, componentName, location, propFullName) { + if (!(props[propName] instanceof expectedClass)) { + var expectedClassName = expectedClass.name || ANONYMOUS; + var actualClassName = getClassName(props[propName]); + return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + actualClassName + '` supplied to `' + componentName + '`, expected ') + ('instance of `' + expectedClassName + '`.')); + } + return null; + } + return createChainableTypeChecker(validate); + } + + function createEnumTypeChecker(expectedValues) { + if (!Array.isArray(expectedValues)) { + if (true) { + if (arguments.length > 1) { + printWarning( + 'Invalid arguments supplied to oneOf, expected an array, got ' + arguments.length + ' arguments. ' + + 'A common mistake is to write oneOf(x, y, z) instead of oneOf([x, y, z]).' + ); + } else { + printWarning('Invalid argument supplied to oneOf, expected an array.'); + } + } + return emptyFunctionThatReturnsNull; + } + + function validate(props, propName, componentName, location, propFullName) { + var propValue = props[propName]; + for (var i = 0; i < expectedValues.length; i++) { + if (is(propValue, expectedValues[i])) { + return null; + } + } + + var valuesString = JSON.stringify(expectedValues, function replacer(key, value) { + var type = getPreciseType(value); + if (type === 'symbol') { + return String(value); + } + return value; + }); + return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of value `' + String(propValue) + '` ' + ('supplied to `' + componentName + '`, expected one of ' + valuesString + '.')); + } + return createChainableTypeChecker(validate); + } + + function createObjectOfTypeChecker(typeChecker) { + function validate(props, propName, componentName, location, propFullName) { + if (typeof typeChecker !== 'function') { + return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside objectOf.'); + } + var propValue = props[propName]; + var propType = getPropType(propValue); + if (propType !== 'object') { + return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an object.')); + } + for (var key in propValue) { + if (has(propValue, key)) { + var error = typeChecker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret); + if (error instanceof Error) { + return error; + } + } + } + return null; + } + return createChainableTypeChecker(validate); + } + + function createUnionTypeChecker(arrayOfTypeCheckers) { + if (!Array.isArray(arrayOfTypeCheckers)) { + true ? printWarning('Invalid argument supplied to oneOfType, expected an instance of array.') : 0; + return emptyFunctionThatReturnsNull; + } + + for (var i = 0; i < arrayOfTypeCheckers.length; i++) { + var checker = arrayOfTypeCheckers[i]; + if (typeof checker !== 'function') { + printWarning( + 'Invalid argument supplied to oneOfType. Expected an array of check functions, but ' + + 'received ' + getPostfixForTypeWarning(checker) + ' at index ' + i + '.' + ); + return emptyFunctionThatReturnsNull; + } + } + + function validate(props, propName, componentName, location, propFullName) { + var expectedTypes = []; + for (var i = 0; i < arrayOfTypeCheckers.length; i++) { + var checker = arrayOfTypeCheckers[i]; + var checkerResult = checker(props, propName, componentName, location, propFullName, ReactPropTypesSecret); + if (checkerResult == null) { + return null; + } + if (checkerResult.data && has(checkerResult.data, 'expectedType')) { + expectedTypes.push(checkerResult.data.expectedType); + } + } + var expectedTypesMessage = (expectedTypes.length > 0) ? ', expected one of type [' + expectedTypes.join(', ') + ']': ''; + return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`' + expectedTypesMessage + '.')); + } + return createChainableTypeChecker(validate); + } + + function createNodeChecker() { + function validate(props, propName, componentName, location, propFullName) { + if (!isNode(props[propName])) { + return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`, expected a ReactNode.')); + } + return null; + } + return createChainableTypeChecker(validate); + } + + function invalidValidatorError(componentName, location, propFullName, key, type) { + return new PropTypeError( + (componentName || 'React class') + ': ' + location + ' type `' + propFullName + '.' + key + '` is invalid; ' + + 'it must be a function, usually from the `prop-types` package, but received `' + type + '`.' + ); + } + + function createShapeTypeChecker(shapeTypes) { + function validate(props, propName, componentName, location, propFullName) { + var propValue = props[propName]; + var propType = getPropType(propValue); + if (propType !== 'object') { + return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.')); + } + for (var key in shapeTypes) { + var checker = shapeTypes[key]; + if (typeof checker !== 'function') { + return invalidValidatorError(componentName, location, propFullName, key, getPreciseType(checker)); + } + var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret); + if (error) { + return error; + } + } + return null; + } + return createChainableTypeChecker(validate); + } + + function createStrictShapeTypeChecker(shapeTypes) { + function validate(props, propName, componentName, location, propFullName) { + var propValue = props[propName]; + var propType = getPropType(propValue); + if (propType !== 'object') { + return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.')); + } + // We need to check all keys in case some are required but missing from props. + var allKeys = assign({}, props[propName], shapeTypes); + for (var key in allKeys) { + var checker = shapeTypes[key]; + if (has(shapeTypes, key) && typeof checker !== 'function') { + return invalidValidatorError(componentName, location, propFullName, key, getPreciseType(checker)); + } + if (!checker) { + return new PropTypeError( + 'Invalid ' + location + ' `' + propFullName + '` key `' + key + '` supplied to `' + componentName + '`.' + + '\nBad object: ' + JSON.stringify(props[propName], null, ' ') + + '\nValid keys: ' + JSON.stringify(Object.keys(shapeTypes), null, ' ') + ); + } + var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret); + if (error) { + return error; + } + } + return null; + } + + return createChainableTypeChecker(validate); + } + + function isNode(propValue) { + switch (typeof propValue) { + case 'number': + case 'string': + case 'undefined': + return true; + case 'boolean': + return !propValue; + case 'object': + if (Array.isArray(propValue)) { + return propValue.every(isNode); + } + if (propValue === null || isValidElement(propValue)) { + return true; + } + + var iteratorFn = getIteratorFn(propValue); + if (iteratorFn) { + var iterator = iteratorFn.call(propValue); + var step; + if (iteratorFn !== propValue.entries) { + while (!(step = iterator.next()).done) { + if (!isNode(step.value)) { + return false; + } + } + } else { + // Iterator will provide entry [k,v] tuples rather than values. + while (!(step = iterator.next()).done) { + var entry = step.value; + if (entry) { + if (!isNode(entry[1])) { + return false; + } + } + } + } + } else { + return false; + } + + return true; + default: + return false; + } + } + + function isSymbol(propType, propValue) { + // Native Symbol. + if (propType === 'symbol') { + return true; + } + + // falsy value can't be a Symbol + if (!propValue) { + return false; + } + + // 19.4.3.5 Symbol.prototype[@@toStringTag] === 'Symbol' + if (propValue['@@toStringTag'] === 'Symbol') { + return true; + } + + // Fallback for non-spec compliant Symbols which are polyfilled. + if (typeof Symbol === 'function' && propValue instanceof Symbol) { + return true; + } + + return false; + } + + // Equivalent of `typeof` but with special handling for array and regexp. + function getPropType(propValue) { + var propType = typeof propValue; + if (Array.isArray(propValue)) { + return 'array'; + } + if (propValue instanceof RegExp) { + // Old webkits (at least until Android 4.0) return 'function' rather than + // 'object' for typeof a RegExp. We'll normalize this here so that /bla/ + // passes PropTypes.object. + return 'object'; + } + if (isSymbol(propType, propValue)) { + return 'symbol'; + } + return propType; + } + + // This handles more types than `getPropType`. Only used for error messages. + // See `createPrimitiveTypeChecker`. + function getPreciseType(propValue) { + if (typeof propValue === 'undefined' || propValue === null) { + return '' + propValue; + } + var propType = getPropType(propValue); + if (propType === 'object') { + if (propValue instanceof Date) { + return 'date'; + } else if (propValue instanceof RegExp) { + return 'regexp'; + } + } + return propType; + } + + // Returns a string that is postfixed to a warning about an invalid type. + // For example, "undefined" or "of type array" + function getPostfixForTypeWarning(value) { + var type = getPreciseType(value); + switch (type) { + case 'array': + case 'object': + return 'an ' + type; + case 'boolean': + case 'date': + case 'regexp': + return 'a ' + type; + default: + return type; + } + } + + // Returns class name of the object, if any. + function getClassName(propValue) { + if (!propValue.constructor || !propValue.constructor.name) { + return ANONYMOUS; + } + return propValue.constructor.name; + } + + ReactPropTypes.checkPropTypes = checkPropTypes; + ReactPropTypes.resetWarningCache = checkPropTypes.resetWarningCache; + ReactPropTypes.PropTypes = ReactPropTypes; + + return ReactPropTypes; +}; + + +/***/ }), + +/***/ "../node_modules/prop-types/index.js": +/*!*******************************************!*\ + !*** ../node_modules/prop-types/index.js ***! + \*******************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +/** + * Copyright (c) 2013-present, Facebook, Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +if (true) { + var ReactIs = __webpack_require__(/*! react-is */ "../node_modules/prop-types/node_modules/react-is/index.js"); + + // By explicitly using `prop-types` you are opting into new development behavior. + // http://fb.me/prop-types-in-prod + var throwOnDirectAccess = true; + module.exports = __webpack_require__(/*! ./factoryWithTypeCheckers */ "../node_modules/prop-types/factoryWithTypeCheckers.js")(ReactIs.isElement, throwOnDirectAccess); +} else {} + + +/***/ }), + +/***/ "../node_modules/prop-types/lib/ReactPropTypesSecret.js": +/*!**************************************************************!*\ + !*** ../node_modules/prop-types/lib/ReactPropTypesSecret.js ***! + \**************************************************************/ +/***/ ((module) => { + +"use strict"; +/** + * Copyright (c) 2013-present, Facebook, Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + + + +var ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED'; + +module.exports = ReactPropTypesSecret; + + +/***/ }), + +/***/ "../node_modules/prop-types/lib/has.js": +/*!*********************************************!*\ + !*** ../node_modules/prop-types/lib/has.js ***! + \*********************************************/ +/***/ ((module) => { + +module.exports = Function.call.bind(Object.prototype.hasOwnProperty); + + +/***/ }), + +/***/ "../node_modules/prop-types/node_modules/react-is/cjs/react-is.development.js": +/*!************************************************************************************!*\ + !*** ../node_modules/prop-types/node_modules/react-is/cjs/react-is.development.js ***! + \************************************************************************************/ +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; +/** @license React v16.13.1 + * react-is.development.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + + + + + +if (true) { + (function() { +'use strict'; + +// The Symbol used to tag the ReactElement-like types. If there is no native Symbol +// nor polyfill, then a plain number is used for performance. +var hasSymbol = typeof Symbol === 'function' && Symbol.for; +var REACT_ELEMENT_TYPE = hasSymbol ? Symbol.for('react.element') : 0xeac7; +var REACT_PORTAL_TYPE = hasSymbol ? Symbol.for('react.portal') : 0xeaca; +var REACT_FRAGMENT_TYPE = hasSymbol ? Symbol.for('react.fragment') : 0xeacb; +var REACT_STRICT_MODE_TYPE = hasSymbol ? Symbol.for('react.strict_mode') : 0xeacc; +var REACT_PROFILER_TYPE = hasSymbol ? Symbol.for('react.profiler') : 0xead2; +var REACT_PROVIDER_TYPE = hasSymbol ? Symbol.for('react.provider') : 0xeacd; +var REACT_CONTEXT_TYPE = hasSymbol ? Symbol.for('react.context') : 0xeace; // TODO: We don't use AsyncMode or ConcurrentMode anymore. They were temporary +// (unstable) APIs that have been removed. Can we remove the symbols? + +var REACT_ASYNC_MODE_TYPE = hasSymbol ? Symbol.for('react.async_mode') : 0xeacf; +var REACT_CONCURRENT_MODE_TYPE = hasSymbol ? Symbol.for('react.concurrent_mode') : 0xeacf; +var REACT_FORWARD_REF_TYPE = hasSymbol ? Symbol.for('react.forward_ref') : 0xead0; +var REACT_SUSPENSE_TYPE = hasSymbol ? Symbol.for('react.suspense') : 0xead1; +var REACT_SUSPENSE_LIST_TYPE = hasSymbol ? Symbol.for('react.suspense_list') : 0xead8; +var REACT_MEMO_TYPE = hasSymbol ? Symbol.for('react.memo') : 0xead3; +var REACT_LAZY_TYPE = hasSymbol ? Symbol.for('react.lazy') : 0xead4; +var REACT_BLOCK_TYPE = hasSymbol ? Symbol.for('react.block') : 0xead9; +var REACT_FUNDAMENTAL_TYPE = hasSymbol ? Symbol.for('react.fundamental') : 0xead5; +var REACT_RESPONDER_TYPE = hasSymbol ? Symbol.for('react.responder') : 0xead6; +var REACT_SCOPE_TYPE = hasSymbol ? Symbol.for('react.scope') : 0xead7; + +function isValidElementType(type) { + return typeof type === 'string' || typeof type === 'function' || // Note: its typeof might be other than 'symbol' or 'number' if it's a polyfill. + type === REACT_FRAGMENT_TYPE || type === REACT_CONCURRENT_MODE_TYPE || type === REACT_PROFILER_TYPE || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || typeof type === 'object' && type !== null && (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || type.$$typeof === REACT_FUNDAMENTAL_TYPE || type.$$typeof === REACT_RESPONDER_TYPE || type.$$typeof === REACT_SCOPE_TYPE || type.$$typeof === REACT_BLOCK_TYPE); +} + +function typeOf(object) { + if (typeof object === 'object' && object !== null) { + var $$typeof = object.$$typeof; + + switch ($$typeof) { + case REACT_ELEMENT_TYPE: + var type = object.type; + + switch (type) { + case REACT_ASYNC_MODE_TYPE: + case REACT_CONCURRENT_MODE_TYPE: + case REACT_FRAGMENT_TYPE: + case REACT_PROFILER_TYPE: + case REACT_STRICT_MODE_TYPE: + case REACT_SUSPENSE_TYPE: + return type; + + default: + var $$typeofType = type && type.$$typeof; + + switch ($$typeofType) { + case REACT_CONTEXT_TYPE: + case REACT_FORWARD_REF_TYPE: + case REACT_LAZY_TYPE: + case REACT_MEMO_TYPE: + case REACT_PROVIDER_TYPE: + return $$typeofType; + + default: + return $$typeof; + } + + } + + case REACT_PORTAL_TYPE: + return $$typeof; + } + } + + return undefined; +} // AsyncMode is deprecated along with isAsyncMode + +var AsyncMode = REACT_ASYNC_MODE_TYPE; +var ConcurrentMode = REACT_CONCURRENT_MODE_TYPE; +var ContextConsumer = REACT_CONTEXT_TYPE; +var ContextProvider = REACT_PROVIDER_TYPE; +var Element = REACT_ELEMENT_TYPE; +var ForwardRef = REACT_FORWARD_REF_TYPE; +var Fragment = REACT_FRAGMENT_TYPE; +var Lazy = REACT_LAZY_TYPE; +var Memo = REACT_MEMO_TYPE; +var Portal = REACT_PORTAL_TYPE; +var Profiler = REACT_PROFILER_TYPE; +var StrictMode = REACT_STRICT_MODE_TYPE; +var Suspense = REACT_SUSPENSE_TYPE; +var hasWarnedAboutDeprecatedIsAsyncMode = false; // AsyncMode should be deprecated + +function isAsyncMode(object) { + { + if (!hasWarnedAboutDeprecatedIsAsyncMode) { + hasWarnedAboutDeprecatedIsAsyncMode = true; // Using console['warn'] to evade Babel and ESLint + + console['warn']('The ReactIs.isAsyncMode() alias has been deprecated, ' + 'and will be removed in React 17+. Update your code to use ' + 'ReactIs.isConcurrentMode() instead. It has the exact same API.'); + } + } + + return isConcurrentMode(object) || typeOf(object) === REACT_ASYNC_MODE_TYPE; +} +function isConcurrentMode(object) { + return typeOf(object) === REACT_CONCURRENT_MODE_TYPE; +} +function isContextConsumer(object) { + return typeOf(object) === REACT_CONTEXT_TYPE; +} +function isContextProvider(object) { + return typeOf(object) === REACT_PROVIDER_TYPE; +} +function isElement(object) { + return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE; +} +function isForwardRef(object) { + return typeOf(object) === REACT_FORWARD_REF_TYPE; +} +function isFragment(object) { + return typeOf(object) === REACT_FRAGMENT_TYPE; +} +function isLazy(object) { + return typeOf(object) === REACT_LAZY_TYPE; +} +function isMemo(object) { + return typeOf(object) === REACT_MEMO_TYPE; +} +function isPortal(object) { + return typeOf(object) === REACT_PORTAL_TYPE; +} +function isProfiler(object) { + return typeOf(object) === REACT_PROFILER_TYPE; +} +function isStrictMode(object) { + return typeOf(object) === REACT_STRICT_MODE_TYPE; +} +function isSuspense(object) { + return typeOf(object) === REACT_SUSPENSE_TYPE; +} + +exports.AsyncMode = AsyncMode; +exports.ConcurrentMode = ConcurrentMode; +exports.ContextConsumer = ContextConsumer; +exports.ContextProvider = ContextProvider; +exports.Element = Element; +exports.ForwardRef = ForwardRef; +exports.Fragment = Fragment; +exports.Lazy = Lazy; +exports.Memo = Memo; +exports.Portal = Portal; +exports.Profiler = Profiler; +exports.StrictMode = StrictMode; +exports.Suspense = Suspense; +exports.isAsyncMode = isAsyncMode; +exports.isConcurrentMode = isConcurrentMode; +exports.isContextConsumer = isContextConsumer; +exports.isContextProvider = isContextProvider; +exports.isElement = isElement; +exports.isForwardRef = isForwardRef; +exports.isFragment = isFragment; +exports.isLazy = isLazy; +exports.isMemo = isMemo; +exports.isPortal = isPortal; +exports.isProfiler = isProfiler; +exports.isStrictMode = isStrictMode; +exports.isSuspense = isSuspense; +exports.isValidElementType = isValidElementType; +exports.typeOf = typeOf; + })(); +} + + +/***/ }), + +/***/ "../node_modules/prop-types/node_modules/react-is/index.js": +/*!*****************************************************************!*\ + !*** ../node_modules/prop-types/node_modules/react-is/index.js ***! + \*****************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + + +if (false) {} else { + module.exports = __webpack_require__(/*! ./cjs/react-is.development.js */ "../node_modules/prop-types/node_modules/react-is/cjs/react-is.development.js"); +} + + +/***/ }), + +/***/ "react": +/*!************************!*\ + !*** external "React" ***! + \************************/ +/***/ ((module) => { + +"use strict"; +module.exports = React; + +/***/ }), + +/***/ "react-dom": +/*!***************************!*\ + !*** external "ReactDOM" ***! + \***************************/ +/***/ ((module) => { + +"use strict"; +module.exports = ReactDOM; + +/***/ }), + +/***/ "@wordpress/i18n": +/*!**************************!*\ + !*** external "wp.i18n" ***! + \**************************/ +/***/ ((module) => { + +"use strict"; +module.exports = wp.i18n; + +/***/ }), + +/***/ "../node_modules/@babel/runtime/helpers/arrayLikeToArray.js": +/*!******************************************************************!*\ + !*** ../node_modules/@babel/runtime/helpers/arrayLikeToArray.js ***! + \******************************************************************/ +/***/ ((module) => { + +function _arrayLikeToArray(arr, len) { + if (len == null || len > arr.length) len = arr.length; + for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; + return arr2; +} +module.exports = _arrayLikeToArray, module.exports.__esModule = true, module.exports["default"] = module.exports; + +/***/ }), + +/***/ "../node_modules/@babel/runtime/helpers/arrayWithHoles.js": +/*!****************************************************************!*\ + !*** ../node_modules/@babel/runtime/helpers/arrayWithHoles.js ***! + \****************************************************************/ +/***/ ((module) => { + +function _arrayWithHoles(arr) { + if (Array.isArray(arr)) return arr; +} +module.exports = _arrayWithHoles, module.exports.__esModule = true, module.exports["default"] = module.exports; + +/***/ }), + +/***/ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js": +/*!***********************************************************************!*\ + !*** ../node_modules/@babel/runtime/helpers/interopRequireDefault.js ***! + \***********************************************************************/ +/***/ ((module) => { + +function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + "default": obj + }; +} +module.exports = _interopRequireDefault, module.exports.__esModule = true, module.exports["default"] = module.exports; + +/***/ }), + +/***/ "../node_modules/@babel/runtime/helpers/iterableToArrayLimit.js": +/*!**********************************************************************!*\ + !*** ../node_modules/@babel/runtime/helpers/iterableToArrayLimit.js ***! + \**********************************************************************/ +/***/ ((module) => { + +function _iterableToArrayLimit(r, l) { + var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; + if (null != t) { + var e, + n, + i, + u, + a = [], + f = !0, + o = !1; + try { + if (i = (t = t.call(r)).next, 0 === l) { + if (Object(t) !== t) return; + f = !1; + } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); + } catch (r) { + o = !0, n = r; + } finally { + try { + if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; + } finally { + if (o) throw n; + } + } + return a; + } +} +module.exports = _iterableToArrayLimit, module.exports.__esModule = true, module.exports["default"] = module.exports; + +/***/ }), + +/***/ "../node_modules/@babel/runtime/helpers/nonIterableRest.js": +/*!*****************************************************************!*\ + !*** ../node_modules/@babel/runtime/helpers/nonIterableRest.js ***! + \*****************************************************************/ +/***/ ((module) => { + +function _nonIterableRest() { + throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); +} +module.exports = _nonIterableRest, module.exports.__esModule = true, module.exports["default"] = module.exports; + +/***/ }), + +/***/ "../node_modules/@babel/runtime/helpers/slicedToArray.js": +/*!***************************************************************!*\ + !*** ../node_modules/@babel/runtime/helpers/slicedToArray.js ***! + \***************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var arrayWithHoles = __webpack_require__(/*! ./arrayWithHoles.js */ "../node_modules/@babel/runtime/helpers/arrayWithHoles.js"); +var iterableToArrayLimit = __webpack_require__(/*! ./iterableToArrayLimit.js */ "../node_modules/@babel/runtime/helpers/iterableToArrayLimit.js"); +var unsupportedIterableToArray = __webpack_require__(/*! ./unsupportedIterableToArray.js */ "../node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js"); +var nonIterableRest = __webpack_require__(/*! ./nonIterableRest.js */ "../node_modules/@babel/runtime/helpers/nonIterableRest.js"); +function _slicedToArray(arr, i) { + return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest(); +} +module.exports = _slicedToArray, module.exports.__esModule = true, module.exports["default"] = module.exports; + +/***/ }), + +/***/ "../node_modules/@babel/runtime/helpers/typeof.js": +/*!********************************************************!*\ + !*** ../node_modules/@babel/runtime/helpers/typeof.js ***! + \********************************************************/ +/***/ ((module) => { + +function _typeof(o) { + "@babel/helpers - typeof"; + + return (module.exports = _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { + return typeof o; + } : function (o) { + return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; + }, module.exports.__esModule = true, module.exports["default"] = module.exports), _typeof(o); +} +module.exports = _typeof, module.exports.__esModule = true, module.exports["default"] = module.exports; + +/***/ }), + +/***/ "../node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js": +/*!****************************************************************************!*\ + !*** ../node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js ***! + \****************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var arrayLikeToArray = __webpack_require__(/*! ./arrayLikeToArray.js */ "../node_modules/@babel/runtime/helpers/arrayLikeToArray.js"); +function _unsupportedIterableToArray(o, minLen) { + if (!o) return; + if (typeof o === "string") return arrayLikeToArray(o, minLen); + var n = Object.prototype.toString.call(o).slice(8, -1); + if (n === "Object" && o.constructor) n = o.constructor.name; + if (n === "Map" || n === "Set") return Array.from(o); + if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen); +} +module.exports = _unsupportedIterableToArray, module.exports.__esModule = true, module.exports["default"] = module.exports; + +/***/ }) + +/******/ }); +/************************************************************************/ +/******/ // The module cache +/******/ var __webpack_module_cache__ = {}; +/******/ +/******/ // The require function +/******/ function __webpack_require__(moduleId) { +/******/ // Check if module is in cache +/******/ var cachedModule = __webpack_module_cache__[moduleId]; +/******/ if (cachedModule !== undefined) { +/******/ return cachedModule.exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = __webpack_module_cache__[moduleId] = { +/******/ // no module.id needed +/******/ // no module.loaded needed +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__); +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/************************************************************************/ +var __webpack_exports__ = {}; +// This entry need to be wrapped in an IIFE because it need to be in strict mode. +(() => { +"use strict"; +/*!***************************************************!*\ + !*** ../modules/admin-top-bar/assets/js/admin.js ***! + \***************************************************/ +/* provided dependency */ var ReactDOM = __webpack_require__(/*! react-dom */ "react-dom"); + + +var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js"); +var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react")); +var _adminTopBar = _interopRequireDefault(__webpack_require__(/*! ./admin-top-bar */ "../modules/admin-top-bar/assets/js/admin-top-bar.js")); +var AppWrapper = elementorCommon.config.isDebug ? _react.default.StrictMode : _react.default.Fragment; +var adminTopBarElement = document.getElementById('e-admin-top-bar-root'); +ReactDOM.render( /*#__PURE__*/_react.default.createElement(AppWrapper, null, /*#__PURE__*/_react.default.createElement(_adminTopBar.default, null)), adminTopBarElement); +})(); + +/******/ })() +; +//# sourceMappingURL=admin-top-bar.js.map \ No newline at end of file diff --git a/wp-content/plugins/elementor/assets/js/admin-top-bar.min.js b/wp-content/plugins/elementor/assets/js/admin-top-bar.min.js new file mode 100644 index 0000000..07d4831 --- /dev/null +++ b/wp-content/plugins/elementor/assets/js/admin-top-bar.min.js @@ -0,0 +1,2 @@ +/*! elementor - v3.20.0 - 26-03-2024 */ +(()=>{var e={73308:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r=function matchUserAgent(e){return n.indexOf(e)>=0},n=navigator.userAgent,o=!!window.opr&&!!opr.addons||!!window.opera||r(" OPR/"),a=r("Firefox"),i=/^((?!chrome|android).)*safari/i.test(n)||/constructor/i.test(window.HTMLElement)||"[object SafariRemoteNotification]"===(!window.safari||"undefined"!=typeof safari&&safari.pushNotification).toString(),u=/Trident|MSIE/.test(n)&&!!document.documentMode,c=!u&&!!window.StyleMedia||r("Edg"),l=!!window.chrome&&r("Chrome")&&!(c||o),s=r("Chrome")&&!!window.CSS,d=r("AppleWebKit")&&!s,f={isTouchDevice:"ontouchstart"in window||navigator.maxTouchPoints>0||navigator.msMaxTouchPoints>0,appleWebkit:d,blink:s,chrome:l,edge:c,firefox:a,ie:u,mac:r("Macintosh"),opera:o,safari:i,webkit:r("AppleWebKit")};t.default=f},23680:(e,t,r)=>{"use strict";var n=r(38003).__,o=r(73203),a=r(7501);Object.defineProperty(t,"__esModule",{value:!0}),t.default=function AdminTopBar(){var e,t,r,o=(0,i.useRef)(),a=window.elementorAdminTopBarConfig.promotion;(0,i.useEffect)((function(){document.querySelector("#e-admin-top-bar-root").classList.add("e-admin-top-bar--active")}),[]);var f=(0,s.usePageTitle)();(0,i.useEffect)((function(){document.querySelectorAll(".page-title-action").forEach((function(e){o.current.appendChild(e)}))}),[]);var p=d.default.mac?"⌘":"^",m=n("Search or do anything in Elementor","elementor")+" ".concat(p,"+E"),_=null===(e=window)||void 0===e||null===(t=e.elementorNotificationCenter)||void 0===t?void 0:t.BarButtonNotification;return i.default.createElement("div",{className:"e-admin-top-bar"},i.default.createElement("div",{className:"e-admin-top-bar__main-area"},i.default.createElement(c.default,null,f),i.default.createElement("div",{className:"e-admin-top-bar__main-area-buttons",ref:o})),i.default.createElement("div",{className:"e-admin-top-bar__secondary-area"},i.default.createElement("div",{className:"e-admin-top-bar__secondary-area-buttons"},!elementorAppConfig.hasPro&&i.default.createElement(u.default,{additionalClasses:"accent",href:a.url,target:"__blank",icon:"eicon-upgrade-crown",iconAdditionalClasses:"crown-icon"},a.text),i.default.createElement(u.default,{href:window.elementorAdminTopBarConfig.apps_url,icon:"eicon-integration"},n("Add-ons","elementor")),window.elementorAdminTopBarConfig.is_administrator?i.default.createElement(u.default,{onClick:function finderAction(){$e.route("finder")},dataInfo:m,icon:"eicon-search-bold"},n("Finder","elementor")):"",window.elementorCloudAdmin?window.elementorCloudAdmin():"",_?i.default.createElement(_,{defaultIsRead:!(null!==(r=elementorNotifications)&&void 0!==r&&r.is_unread)},n("What's New","elementor")):""),i.default.createElement(l.default,null)))};var i=function _interopRequireWildcard(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!==a(e)&&"function"!=typeof e)return{default:e};var r=_getRequireWildcardCache(t);if(r&&r.has(e))return r.get(e);var n={},o=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var i in e)if("default"!==i&&Object.prototype.hasOwnProperty.call(e,i)){var u=o?Object.getOwnPropertyDescriptor(e,i):null;u&&(u.get||u.set)?Object.defineProperty(n,i,u):n[i]=e[i]}n.default=e,r&&r.set(e,n);return n}(r(87363)),u=o(r(50818)),c=o(r(76668)),l=o(r(79943)),s=r(30174),d=o(r(73308));function _getRequireWildcardCache(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,r=new WeakMap;return(_getRequireWildcardCache=function _getRequireWildcardCache(e){return e?r:t})(e)}},50818:(e,t,r)=>{"use strict";var n=r(23615),o=r(7501);Object.defineProperty(t,"__esModule",{value:!0}),t.default=BarButton;var a=function _interopRequireWildcard(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!==o(e)&&"function"!=typeof e)return{default:e};var r=_getRequireWildcardCache(t);if(r&&r.has(e))return r.get(e);var n={},a=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var i in e)if("default"!==i&&Object.prototype.hasOwnProperty.call(e,i)){var u=a?Object.getOwnPropertyDescriptor(e,i):null;u&&(u.get||u.set)?Object.defineProperty(n,i,u):n[i]=e[i]}n.default=e,r&&r.set(e,n);return n}(r(87363));function _getRequireWildcardCache(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,r=new WeakMap;return(_getRequireWildcardCache=function _getRequireWildcardCache(e){return e?r:t})(e)}function BarButton(e){return(0,a.useEffect)((function(){e.dataInfo&&jQuery(".e-admin-top-bar__bar-button[data-info]").tipsy({title:function title(){return this.getAttribute("data-info")},gravity:function gravity(){return"n"},delayIn:400,offset:1})}),[]),a.default.createElement("a",{className:"e-admin-top-bar__bar-button ".concat(e.additionalClasses),ref:e.buttonRef,onClick:e.onClick,"data-info":e.dataInfo,href:e.href,target:e.target},a.default.createElement("i",{className:"e-admin-top-bar__bar-button-icon ".concat(e.icon," ").concat(e.iconAdditionalClasses)}),a.default.createElement("span",{className:"e-admin-top-bar__bar-button-title"},e.children))}BarButton.propTypes={children:n.any,dataInfo:n.string,icon:n.any,onClick:n.func,buttonRef:n.object,href:n.string,target:n.string,additionalClasses:n.string,iconAdditionalClasses:n.string}},76668:(e,t,r)=>{"use strict";var n=r(23615),o=r(73203);Object.defineProperty(t,"__esModule",{value:!0}),t.default=BarHeading;var a=o(r(87363));function BarHeading(e){return a.default.createElement("div",{className:"e-admin-top-bar__heading"},a.default.createElement("div",{className:"e-logo-wrapper"},a.default.createElement("i",{className:"eicon-elementor","aria-hidden":"true"})),a.default.createElement("span",{className:"e-admin-top-bar__heading-title"},e.children))}BarHeading.propTypes={children:n.any}},79943:(e,t,r)=>{"use strict";var n=r(38003).__,o=r(73203),a=r(7501);Object.defineProperty(t,"__esModule",{value:!0}),t.default=function ConnectionButton(){var e=(0,i.useRef)(),t=elementorAdminTopBarConfig.is_user_connected;(0,i.useEffect)((function(){e.current&&!t&&jQuery(e.current).elementorConnect()}),[]);var r=n("Connect your account to get access to Elementor's Template Library & more.","elementor"),o=elementorAdminTopBarConfig.connect_url,a=n("Connect Account","elementor"),c="_self";t&&(r="",o="https://go.elementor.com/wp-dash-admin-bar-account/",a=n("My Elementor","elementor"),c="_blank");return i.default.createElement(u.default,{icon:"eicon-user-circle-o",buttonRef:e,dataInfo:r,href:o,target:c},a)};var i=function _interopRequireWildcard(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!==a(e)&&"function"!=typeof e)return{default:e};var r=_getRequireWildcardCache(t);if(r&&r.has(e))return r.get(e);var n={},o=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var i in e)if("default"!==i&&Object.prototype.hasOwnProperty.call(e,i)){var u=o?Object.getOwnPropertyDescriptor(e,i):null;u&&(u.get||u.set)?Object.defineProperty(n,i,u):n[i]=e[i]}n.default=e,r&&r.set(e,n);return n}(r(87363)),u=o(r(50818));function _getRequireWildcardCache(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,r=new WeakMap;return(_getRequireWildcardCache=function _getRequireWildcardCache(e){return e?r:t})(e)}},30174:(e,t,r)=>{"use strict";var n=r(73203);Object.defineProperty(t,"__esModule",{value:!0}),t.usePageTitle=void 0;var o=n(r(40131)),a=r(87363);t.usePageTitle=function usePageTitle(){var e=(0,a.useState)("Elementor"),t=(0,o.default)(e,2),r=t[0],n=t[1];return(0,a.useEffect)((function(){var e=document.querySelector(".wp-heading-inline");e&&n(e.innerText)}),[]),r}},58772:(e,t,r)=>{"use strict";var n=r(90331);function emptyFunction(){}function emptyFunctionWithReset(){}emptyFunctionWithReset.resetWarningCache=emptyFunction,e.exports=function(){function shim(e,t,r,o,a,i){if(i!==n){var u=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw u.name="Invariant Violation",u}}function getShim(){return shim}shim.isRequired=shim;var e={array:shim,bigint:shim,bool:shim,func:shim,number:shim,object:shim,string:shim,symbol:shim,any:shim,arrayOf:getShim,element:shim,elementType:shim,instanceOf:getShim,node:shim,objectOf:getShim,oneOf:getShim,oneOfType:getShim,shape:getShim,exact:getShim,checkPropTypes:emptyFunctionWithReset,resetWarningCache:emptyFunction};return e.PropTypes=e,e}},23615:(e,t,r)=>{e.exports=r(58772)()},90331:e=>{"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},87363:e=>{"use strict";e.exports=React},61533:e=>{"use strict";e.exports=ReactDOM},38003:e=>{"use strict";e.exports=wp.i18n},98106:e=>{e.exports=function _arrayLikeToArray(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r{e.exports=function _arrayWithHoles(e){if(Array.isArray(e))return e},e.exports.__esModule=!0,e.exports.default=e.exports},73203:e=>{e.exports=function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}},e.exports.__esModule=!0,e.exports.default=e.exports},40608:e=>{e.exports=function _iterableToArrayLimit(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,o,a,i,u=[],c=!0,l=!1;try{if(a=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;c=!1}else for(;!(c=(n=a.call(r)).done)&&(u.push(n.value),u.length!==t);c=!0);}catch(e){l=!0,o=e}finally{try{if(!c&&null!=r.return&&(i=r.return(),Object(i)!==i))return}finally{if(l)throw o}}return u}},e.exports.__esModule=!0,e.exports.default=e.exports},56894:e=>{e.exports=function _nonIterableRest(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")},e.exports.__esModule=!0,e.exports.default=e.exports},40131:(e,t,r)=>{var n=r(17358),o=r(40608),a=r(35068),i=r(56894);e.exports=function _slicedToArray(e,t){return n(e)||o(e,t)||a(e,t)||i()},e.exports.__esModule=!0,e.exports.default=e.exports},7501:e=>{function _typeof(t){return e.exports=_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},e.exports.__esModule=!0,e.exports.default=e.exports,_typeof(t)}e.exports=_typeof,e.exports.__esModule=!0,e.exports.default=e.exports},35068:(e,t,r)=>{var n=r(98106);e.exports=function _unsupportedIterableToArray(e,t){if(e){if("string"==typeof e)return n(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?n(e,t):void 0}},e.exports.__esModule=!0,e.exports.default=e.exports}},t={};function __webpack_require__(r){var n=t[r];if(void 0!==n)return n.exports;var o=t[r]={exports:{}};return e[r](o,o.exports,__webpack_require__),o.exports}(()=>{"use strict";var e=__webpack_require__(61533),t=__webpack_require__(73203),r=t(__webpack_require__(87363)),n=t(__webpack_require__(23680)),o=elementorCommon.config.isDebug?r.default.StrictMode:r.default.Fragment,a=document.getElementById("e-admin-top-bar-root");e.render(r.default.createElement(o,null,r.default.createElement(n.default,null)),a)})()})(); \ No newline at end of file diff --git a/wp-content/plugins/elementor/assets/js/admin.js b/wp-content/plugins/elementor/assets/js/admin.js new file mode 100644 index 0000000..58b9cb5 --- /dev/null +++ b/wp-content/plugins/elementor/assets/js/admin.js @@ -0,0 +1,2431 @@ +/*! elementor - v3.20.0 - 26-03-2024 */ +/******/ (() => { // webpackBootstrap +/******/ var __webpack_modules__ = ({ + +/***/ "../assets/dev/js/admin/maintenance-mode.js": +/*!**************************************************!*\ + !*** ../assets/dev/js/admin/maintenance-mode.js ***! + \**************************************************/ +/***/ ((module) => { + +"use strict"; + + +module.exports = elementorModules.ViewModule.extend({ + getDefaultSettings: function getDefaultSettings() { + return { + selectors: { + modeSelect: '.elementor_maintenance_mode_mode select', + maintenanceModeTable: '#tab-maintenance_mode table', + maintenanceModeDescriptions: '.elementor-maintenance-mode-description', + excludeModeSelect: '.elementor_maintenance_mode_exclude_mode select', + excludeRolesArea: '.elementor_maintenance_mode_exclude_roles', + templateSelect: '.elementor_maintenance_mode_template_id select', + editTemplateButton: '.elementor-edit-template', + maintenanceModeError: '.elementor-maintenance-mode-error' + }, + classes: { + isEnabled: 'elementor-maintenance-mode-is-enabled' + } + }; + }, + getDefaultElements: function getDefaultElements() { + var elements = {}, + selectors = this.getSettings('selectors'); + elements.$modeSelect = jQuery(selectors.modeSelect); + elements.$maintenanceModeTable = elements.$modeSelect.parents(selectors.maintenanceModeTable); + elements.$excludeModeSelect = elements.$maintenanceModeTable.find(selectors.excludeModeSelect); + elements.$excludeRolesArea = elements.$maintenanceModeTable.find(selectors.excludeRolesArea); + elements.$templateSelect = elements.$maintenanceModeTable.find(selectors.templateSelect); + elements.$editTemplateButton = elements.$maintenanceModeTable.find(selectors.editTemplateButton); + elements.$maintenanceModeDescriptions = elements.$maintenanceModeTable.find(selectors.maintenanceModeDescriptions); + elements.$maintenanceModeError = elements.$maintenanceModeTable.find(selectors.maintenanceModeError); + return elements; + }, + handleModeSelectChange: function handleModeSelectChange() { + var settings = this.getSettings(), + elements = this.elements; + elements.$maintenanceModeTable.toggleClass(settings.classes.isEnabled, !!elements.$modeSelect.val()); + elements.$maintenanceModeDescriptions.hide(); + elements.$maintenanceModeDescriptions.filter('[data-value="' + elements.$modeSelect.val() + '"]').show(); + }, + handleExcludeModeSelectChange: function handleExcludeModeSelectChange() { + var elements = this.elements; + elements.$excludeRolesArea.toggle('custom' === elements.$excludeModeSelect.val()); + }, + handleTemplateSelectChange: function handleTemplateSelectChange() { + var elements = this.elements; + var templateID = elements.$templateSelect.val(); + if (!templateID) { + elements.$editTemplateButton.hide(); + elements.$maintenanceModeError.show(); + return; + } + var editUrl = elementorAdmin.config.home_url + '?p=' + templateID + '&elementor'; + elements.$editTemplateButton.prop('href', editUrl).show(); + elements.$maintenanceModeError.hide(); + }, + bindEvents: function bindEvents() { + var elements = this.elements; + elements.$modeSelect.on('change', this.handleModeSelectChange.bind(this)); + elements.$excludeModeSelect.on('change', this.handleExcludeModeSelectChange.bind(this)); + elements.$templateSelect.on('change', this.handleTemplateSelectChange.bind(this)); + }, + onAdminInit: function onAdminInit() { + this.handleModeSelectChange(); + this.handleExcludeModeSelectChange(); + this.handleTemplateSelectChange(); + }, + onInit: function onInit() { + elementorModules.ViewModule.prototype.onInit.apply(this, arguments); + elementorCommon.elements.$window.on('elementor/admin/init', this.onAdminInit); + } +}); + +/***/ }), + +/***/ "../assets/dev/js/admin/menu-handler.js": +/*!**********************************************!*\ + !*** ../assets/dev/js/admin/menu-handler.js ***! + \**********************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + + +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 _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ "../node_modules/@babel/runtime/helpers/classCallCheck.js")); +var _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/createClass */ "../node_modules/@babel/runtime/helpers/createClass.js")); +var _get2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/get */ "../node_modules/@babel/runtime/helpers/get.js")); +var _inherits2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/inherits */ "../node_modules/@babel/runtime/helpers/inherits.js")); +var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ "../node_modules/@babel/runtime/helpers/possibleConstructorReturn.js")); +var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ "../node_modules/@babel/runtime/helpers/getPrototypeOf.js")); +function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; } +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } +var MenuHandler = /*#__PURE__*/function (_elementorModules$Vie) { + (0, _inherits2.default)(MenuHandler, _elementorModules$Vie); + var _super = _createSuper(MenuHandler); + function MenuHandler() { + (0, _classCallCheck2.default)(this, MenuHandler); + return _super.apply(this, arguments); + } + (0, _createClass2.default)(MenuHandler, [{ + key: "getDefaultSettings", + value: function getDefaultSettings() { + return { + selectors: { + currentSubmenuItems: '#adminmenu .current' + } + }; + } + }, { + key: "getDefaultElements", + value: function getDefaultElements() { + var settings = this.getSettings(); + return { + $currentSubmenuItems: jQuery(settings.selectors.currentSubmenuItems), + $adminPageMenuLink: jQuery("a[href=\"".concat(settings.path, "\"]")) + }; + } + + // This method highlights the currently visited submenu item for the slug provided as an argument to this handler. + // This method also accepts a jQuery instance of a custom submenu item to highlight. If provided, the provided + // item will be the one highlighted. + }, { + key: "highlightSubMenuItem", + value: function highlightSubMenuItem() { + var $element = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null; + var $submenuItem = $element || this.elements.$adminPageMenuLink; + if (this.elements.$currentSubmenuItems.length) { + this.elements.$currentSubmenuItems.removeClass('current'); + } + $submenuItem.addClass('current'); + + // Need to add the 'current' class to the link element's parent `
  • ` element as well. + $submenuItem.parent().addClass('current'); + } + }, { + key: "highlightTopLevelMenuItem", + value: function highlightTopLevelMenuItem($elementToHighlight) { + var $elementToRemove = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null; + var activeClasses = 'wp-has-current-submenu wp-menu-open current'; + $elementToHighlight.parent().addClass(activeClasses).removeClass('wp-not-current-submenu'); + if ($elementToRemove) { + $elementToRemove.removeClass(activeClasses); + } + } + }, { + key: "onInit", + value: function onInit() { + (0, _get2.default)((0, _getPrototypeOf2.default)(MenuHandler.prototype), "onInit", this).call(this); + var settings = this.getSettings(); + if (window.location.href.includes(settings.path)) { + this.highlightSubMenuItem(); + } + } + }]); + return MenuHandler; +}(elementorModules.ViewModule); +exports["default"] = MenuHandler; + +/***/ }), + +/***/ "../assets/dev/js/admin/new-template/template-controls.js": +/*!****************************************************************!*\ + !*** ../assets/dev/js/admin/new-template/template-controls.js ***! + \****************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + + +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 _slicedToArray2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/slicedToArray */ "../node_modules/@babel/runtime/helpers/slicedToArray.js")); +var _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ "../node_modules/@babel/runtime/helpers/classCallCheck.js")); +var _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/createClass */ "../node_modules/@babel/runtime/helpers/createClass.js")); +var TemplateControls = /*#__PURE__*/function () { + function TemplateControls() { + (0, _classCallCheck2.default)(this, TemplateControls); + } + (0, _createClass2.default)(TemplateControls, [{ + key: "setDynamicControlsVisibility", + value: function setDynamicControlsVisibility(lookupControlIdPrefix, controls) { + if (undefined === controls) { + return; + } + var controlsArray = Object.entries(controls); + for (var _i = 0, _controlsArray = controlsArray; _i < _controlsArray.length; _i++) { + var _controlsArray$_i = (0, _slicedToArray2.default)(_controlsArray[_i], 2), + controlId = _controlsArray$_i[0], + controlSettings = _controlsArray$_i[1]; + this.setVisibilityForControl(lookupControlIdPrefix, controlSettings, controlId); + } + } + }, { + key: "setVisibilityForControl", + value: function setVisibilityForControl(lookupControlIdPrefix, controlSettings, controlId) { + var _controlSettings$cond, + _this = this; + var conditions = Object.entries((_controlSettings$cond = controlSettings.conditions) !== null && _controlSettings$cond !== void 0 ? _controlSettings$cond : {}); + conditions.forEach(function (condition) { + _this.changeVisibilityBasedOnCondition(lookupControlIdPrefix, condition, controlId); + }); + } + }, { + key: "changeVisibilityBasedOnCondition", + value: function changeVisibilityBasedOnCondition(lookupControlIdPrefix, condition, controlId) { + var _condition = (0, _slicedToArray2.default)(condition, 2), + conditionKey = _condition[0], + conditionValue = _condition[1]; + var targetControlWrapper = document.getElementById(lookupControlIdPrefix + controlId + '__wrapper'); + var lookupControl = document.getElementById(lookupControlIdPrefix + conditionKey); + targetControlWrapper.classList.toggle('elementor-hidden', !lookupControl || conditionValue !== lookupControl.value); + } + }]); + return TemplateControls; +}(); +exports["default"] = TemplateControls; + +/***/ }), + +/***/ "../assets/dev/js/editor/utils/files-upload-handler.js": +/*!*************************************************************!*\ + !*** ../assets/dev/js/editor/utils/files-upload-handler.js ***! + \*************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +/* provided dependency */ var __ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n")["__"]; + + +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 _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ "../node_modules/@babel/runtime/helpers/classCallCheck.js")); +var _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/createClass */ "../node_modules/@babel/runtime/helpers/createClass.js")); +var FilesUploadHandler = /*#__PURE__*/function () { + function FilesUploadHandler() { + (0, _classCallCheck2.default)(this, FilesUploadHandler); + } + (0, _createClass2.default)(FilesUploadHandler, null, [{ + key: "isUploadEnabled", + value: function isUploadEnabled(mediaType) { + var unfilteredFilesTypes = ['svg', 'application/json']; + if (!unfilteredFilesTypes.includes(mediaType)) { + return true; + } + return elementorCommon.config.filesUpload.unfilteredFiles; + } + }, { + key: "setUploadTypeCaller", + value: function setUploadTypeCaller(frame) { + frame.uploader.uploader.param('uploadTypeCaller', 'elementor-wp-media-upload'); + } + }, { + key: "getUnfilteredFilesNonAdminDialog", + value: function getUnfilteredFilesNonAdminDialog() { + return elementorCommon.dialogsManager.createWidget('alert', { + id: 'e-unfiltered-files-disabled-dialog', + headerMessage: __('Sorry, you can\'t upload that file yet', 'elementor'), + message: __('This is because JSON files may pose a security risk.', 'elementor') + '

    ' + __('To upload them anyway, ask the site administrator to enable unfiltered file uploads.', 'elementor'), + strings: { + confirm: __('Got it', 'elementor') + } + }); + } + }, { + key: "getUnfilteredFilesNotEnabledDialog", + value: function getUnfilteredFilesNotEnabledDialog(callback) { + var elementorInstance = window.elementorAdmin || window.elementor; + if (!elementorInstance.config.user.is_administrator) { + return this.getUnfilteredFilesNonAdminDialog(); + } + var onConfirm = function onConfirm() { + elementorCommon.ajax.addRequest('enable_unfiltered_files_upload', {}, true); + elementorCommon.config.filesUpload.unfilteredFiles = true; + callback(); + }; + return elementorInstance.helpers.getSimpleDialog('e-enable-unfiltered-files-dialog', __('Enable Unfiltered File Uploads', 'elementor'), __('Before you enable unfiltered files upload, note that such files include a security risk. Elementor does run a process to remove possible malicious code, but there is still risk involved when using such files.', 'elementor'), __('Enable', 'elementor'), onConfirm); + } + }, { + key: "getUnfilteredFilesNotEnabledImportTemplateDialog", + value: function getUnfilteredFilesNotEnabledImportTemplateDialog(callback) { + if (!(window.elementorAdmin || window.elementor).config.user.is_administrator) { + return this.getUnfilteredFilesNonAdminDialog(); + } + return elementorCommon.dialogsManager.createWidget('confirm', { + id: 'e-enable-unfiltered-files-dialog-import-template', + headerMessage: __('Enable Unfiltered File Uploads', 'elementor'), + message: __('Before you enable unfiltered files upload, note that such files include a security risk. Elementor does run a process to remove possible malicious code, but there is still risk involved when using such files.', 'elementor') + '

    ' + __('If you do not enable uploading unfiltered files, any SVG or JSON (including lottie) files used in the uploaded template will not be imported.', 'elementor'), + position: { + my: 'center center', + at: 'center center' + }, + strings: { + confirm: __('Enable and Import', 'elementor'), + cancel: __('Import Without Enabling', 'elementor') + }, + onConfirm: function onConfirm() { + elementorCommon.ajax.addRequest('enable_unfiltered_files_upload', { + success: function success() { + // This utility is used in both the admin and the Editor. + elementorCommon.config.filesUpload.unfilteredFiles = true; + callback(); + } + }, true); + }, + onCancel: function onCancel() { + return callback(); + } + }); + } + }]); + return FilesUploadHandler; +}(); +exports["default"] = FilesUploadHandler; + +/***/ }), + +/***/ "../assets/dev/js/utils/events.js": +/*!****************************************!*\ + !*** ../assets/dev/js/utils/events.js ***! + \****************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + + +var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js"); +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = exports.Events = void 0; +var _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ "../node_modules/@babel/runtime/helpers/classCallCheck.js")); +var _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/createClass */ "../node_modules/@babel/runtime/helpers/createClass.js")); +var Events = /*#__PURE__*/function () { + function Events() { + (0, _classCallCheck2.default)(this, Events); + } + (0, _createClass2.default)(Events, null, [{ + key: "dispatch", + value: + /** + * Dispatch an Elementor event. + * + * Will dispatch both native event & jQuery event (as BC). + * By default, `bcEvent` is `null`. + * + * @param {Object} context - The context that will dispatch the event. + * @param {string} event - Event to dispatch. + * @param {*} data - Data to pass to the event, default to `null`. + * @param {string|null} bcEvent - BC event to dispatch, default to `null`. + * + * @return {void} + */ + function dispatch(context, event) { + var data = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null; + var bcEvent = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null; + // Make sure to use the native context if it's a jQuery instance. + context = context instanceof jQuery ? context[0] : context; + + // Dispatch the BC event only if exists. + if (bcEvent) { + context.dispatchEvent(new CustomEvent(bcEvent, { + detail: data + })); + } + + // jQuery's `.on()` listens also to native custom events, so there is no need + // to dispatch also a jQuery event. + context.dispatchEvent(new CustomEvent(event, { + detail: data + })); + } + }]); + return Events; +}(); +exports.Events = Events; +var _default = Events; +exports["default"] = _default; + +/***/ }), + +/***/ "../assets/dev/js/utils/json-upload-warning-message.js": +/*!*************************************************************!*\ + !*** ../assets/dev/js/utils/json-upload-warning-message.js ***! + \*************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +/* provided dependency */ var __ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n")["__"]; + + +var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js"); +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.showJsonUploadWarningMessageIfNeeded = showJsonUploadWarningMessageIfNeeded; +var _regenerator = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/regenerator */ "../node_modules/@babel/runtime/regenerator/index.js")); +var _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ "../node_modules/@babel/runtime/helpers/asyncToGenerator.js")); +var genericMessageIntroductionKey = 'upload_json_warning_generic_message'; +/** + * @type {import('../utils/introduction').default | null} + */ +var genericWarningModal = null; +function showJsonUploadWarningMessageIfNeeded(_ref) { + var introductionMap = _ref.introductionMap, + IntroductionClass = _ref.IntroductionClass, + _ref$waitForSetViewed = _ref.waitForSetViewed, + waitForSetViewed = _ref$waitForSetViewed === void 0 ? false : _ref$waitForSetViewed; + if (!genericWarningModal) { + genericWarningModal = createGenericWarningModal(IntroductionClass); + } + genericWarningModal.setIntroductionMap(introductionMap); + if (genericWarningModal.introductionViewed) { + return Promise.resolve(); + } + var dialog = genericWarningModal.getDialog(); + return new Promise(function (resolve, reject) { + dialog.onHide = function () { + // When closing the dialog (esc, click on background, etc.) we need to reject the promise. + reject(); + }; + dialog.onConfirm = /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() { + return _regenerator.default.wrap(function _callee$(_context) { + while (1) switch (_context.prev = _context.next) { + case 0: + if (!dialog.getElements('checkbox-dont-show-again').prop('checked')) { + _context.next = 7; + break; + } + if (!waitForSetViewed) { + _context.next = 6; + break; + } + _context.next = 4; + return genericWarningModal.setViewed(); + case 4: + _context.next = 7; + break; + case 6: + genericWarningModal.setViewed(); + case 7: + // Hack: we need to resolve the promise and then hide it manually, to avoid rejecting the promise. + // this because when closing the dialog (esc, click on background, etc.) it does not trigger `onCancel` method. + resolve(); + dialog.hide(); + case 9: + case "end": + return _context.stop(); + } + }, _callee); + })); + dialog.onCancel = function () { + dialog.hide(); + }; + genericWarningModal.show(); + }); +} + +/** + * @param {import('../utils/introduction').default.prototype.constructor} IntroductionClass + * + * @return {import('../utils/introduction').default} + */ +function createGenericWarningModal(IntroductionClass) { + var _introduction$getDial, _introduction$getDial2; + var dialogId = 'e-generic-warning-modal-for-json-upload'; + var introduction = new IntroductionClass({ + introductionKey: genericMessageIntroductionKey, + dialogType: 'confirm', + dialogOptions: { + id: dialogId, + headerMessage: __('Warning: JSON files may be unsafe', 'elementor'), + message: __('Uploading JSON files from unknown sources can be harmful and put your site at risk. For maximum safety, only install JSON files from trusted sources.', 'elementor'), + effects: { + show: 'fadeIn', + hide: 'fadeOut' + }, + hide: { + onBackgroundClick: true, + onButtonClick: false + }, + strings: { + confirm: __('Continue', 'elementor'), + cancel: __('Cancel', 'elementor') + } + } + }); + var _createCheckboxAndLab = createCheckboxAndLabel(dialogId), + checkbox = _createCheckboxAndLab.checkbox, + label = _createCheckboxAndLab.label; + introduction.getDialog().addElement('checkbox-dont-show-again', checkbox); + (_introduction$getDial = introduction.getDialog().getElements('message')) === null || _introduction$getDial === void 0 ? void 0 : (_introduction$getDial2 = _introduction$getDial.append) === null || _introduction$getDial2 === void 0 ? void 0 : _introduction$getDial2.call(_introduction$getDial, label); // `getElements` return JQuery object. + + return introduction; +} +function createCheckboxAndLabel(dialogId) { + var checkboxId = "".concat(dialogId, "-dont-show-again"); + var checkbox = document.createElement('input'); + checkbox.type = 'checkbox'; + checkbox.name = checkboxId; + checkbox.id = checkboxId; + var label = document.createElement('label'); + label.htmlFor = checkboxId; + label.textContent = __('Do not show this message again', 'elementor'); + label.style.display = 'block'; + label.style.marginTop = '20px'; + label.style.marginBottom = '20px'; + label.prepend(checkbox); + return { + checkbox: checkbox, + label: label + }; +} + +/***/ }), + +/***/ "../core/common/assets/js/utils/environment.js": +/*!*****************************************************!*\ + !*** ../core/common/assets/js/utils/environment.js ***! + \*****************************************************/ +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; +var matchUserAgent = function matchUserAgent(UserAgentStr) { + return userAgent.indexOf(UserAgentStr) >= 0; + }, + userAgent = navigator.userAgent, + // Solution influenced by https://stackoverflow.com/questions/9847580/how-to-detect-safari-chrome-ie-firefox-and-opera-browser + + // Opera 8.0+ + isOpera = !!window.opr && !!opr.addons || !!window.opera || matchUserAgent(' OPR/'), + // Firefox 1.0+ + isFirefox = matchUserAgent('Firefox'), + // Safari 3.0+ "[object HTMLElementConstructor]" + isSafari = /^((?!chrome|android).)*safari/i.test(userAgent) || /constructor/i.test(window.HTMLElement) || function (p) { + return '[object SafariRemoteNotification]' === p.toString(); + }(!window.safari || typeof safari !== 'undefined' && safari.pushNotification), + // Internet Explorer 6-11 + isIE = /Trident|MSIE/.test(userAgent) && ( /* @cc_on!@*/ false || !!document.documentMode), + // Edge 20+ + isEdge = !isIE && !!window.StyleMedia || matchUserAgent('Edg'), + // Google Chrome (Not accurate) + isChrome = !!window.chrome && matchUserAgent('Chrome') && !(isEdge || isOpera), + // Blink engine + isBlink = matchUserAgent('Chrome') && !!window.CSS, + // Apple Webkit engine + isAppleWebkit = matchUserAgent('AppleWebKit') && !isBlink, + isTouchDevice = 'ontouchstart' in window || navigator.maxTouchPoints > 0 || navigator.msMaxTouchPoints > 0, + environment = { + isTouchDevice: isTouchDevice, + appleWebkit: isAppleWebkit, + blink: isBlink, + chrome: isChrome, + edge: isEdge, + firefox: isFirefox, + ie: isIE, + mac: matchUserAgent('Macintosh'), + opera: isOpera, + safari: isSafari, + webkit: matchUserAgent('AppleWebKit') + }; +var _default = environment; +exports["default"] = _default; + +/***/ }), + +/***/ "../core/experiments/assets/js/admin/behaviors/experiments-messages.js": +/*!*****************************************************************************!*\ + !*** ../core/experiments/assets/js/admin/behaviors/experiments-messages.js ***! + \*****************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +/* provided dependency */ var __ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n")["__"]; + + +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 _slicedToArray2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/slicedToArray */ "../node_modules/@babel/runtime/helpers/slicedToArray.js")); +var _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ "../node_modules/@babel/runtime/helpers/classCallCheck.js")); +var _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/createClass */ "../node_modules/@babel/runtime/helpers/createClass.js")); +var _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/defineProperty */ "../node_modules/@babel/runtime/helpers/defineProperty.js")); +var STATE_ACTIVE = 'active'; +var STATE_INACTIVE = 'inactive'; +var STATE_DEFAULT = 'default'; +var ExperimentsMessages = /*#__PURE__*/function () { + function ExperimentsMessages(_ref) { + var selects = _ref.selects, + submit = _ref.submit; + (0, _classCallCheck2.default)(this, ExperimentsMessages); + (0, _defineProperty2.default)(this, "elements", {}); + this.elements = { + /** + * @type {HTMLSelectElement[]} + */ + selects: selects, + /** + * @type {HTMLInputElement} + */ + submit: submit + }; + } + (0, _createClass2.default)(ExperimentsMessages, [{ + key: "bindEvents", + value: function bindEvents() { + var _this = this; + this.elements.selects.forEach(function (select) { + select.addEventListener('change', function (e) { + return _this.onExperimentStateChange(e); + }); + }); + } + }, { + key: "onExperimentStateChange", + value: function onExperimentStateChange(e) { + var experimentId = e.currentTarget.dataset.experimentId, + experimentNewState = this.getExperimentActualState(experimentId); + switch (experimentNewState) { + case STATE_ACTIVE: + if (this.shouldShowDependenciesDialog(experimentId)) { + this.showDependenciesDialog(experimentId); + } + break; + case STATE_INACTIVE: + if (this.shouldShowDeactivationDialog(experimentId)) { + this.showDeactivationDialog(experimentId); + } else { + this.deactivateDependantExperiments(experimentId); + } + break; + default: + break; + } + } + }, { + key: "getExperimentData", + value: function getExperimentData(experimentId) { + return elementorAdminConfig.experiments[experimentId]; + } + }, { + key: "getExperimentDependencies", + value: function getExperimentDependencies(experimentId) { + var _this2 = this; + return this.getExperimentData(experimentId).dependencies.map(function (dependencyId) { + return _this2.getExperimentData(dependencyId); + }); + } + }, { + key: "getExperimentSelect", + value: function getExperimentSelect(experimentId) { + return this.elements.selects.find(function (select) { + return select.matches("[data-experiment-id=\"".concat(experimentId, "\"]")); + }); + } + }, { + key: "setExperimentState", + value: function setExperimentState(experimentId, state) { + this.getExperimentSelect(experimentId).value = state; + } + }, { + key: "getExperimentActualState", + value: function getExperimentActualState(experimentId) { + var _this$getExperimentSe; + var state = (_this$getExperimentSe = this.getExperimentSelect(experimentId)) === null || _this$getExperimentSe === void 0 ? void 0 : _this$getExperimentSe.value; + if (!state) { + return this.getExperimentData(experimentId).state; + } + if (state !== STATE_DEFAULT) { + return state; + } + + // Normalize the "default" state to the actual state value. + return this.isExperimentActiveByDefault(experimentId) ? STATE_ACTIVE : STATE_INACTIVE; + } + }, { + key: "isExperimentActive", + value: function isExperimentActive(experimentId) { + return this.getExperimentActualState(experimentId) === STATE_ACTIVE; + } + }, { + key: "isExperimentActiveByDefault", + value: function isExperimentActiveByDefault(experimentId) { + return this.getExperimentData(experimentId).default === STATE_ACTIVE; + } + }, { + key: "areAllDependenciesActive", + value: function areAllDependenciesActive(dependencies) { + var _this3 = this; + return dependencies.every(function (dependency) { + return _this3.isExperimentActive(dependency.name); + }); + } + }, { + key: "deactivateDependantExperiments", + value: function deactivateDependantExperiments(experimentId) { + var _this4 = this; + Object.entries(elementorAdminConfig.experiments).forEach(function (_ref2) { + var _ref3 = (0, _slicedToArray2.default)(_ref2, 2), + id = _ref3[0], + experimentData = _ref3[1]; + var isDependant = experimentData.dependencies.includes(experimentId), + isActive = _this4.getExperimentActualState(id) === STATE_ACTIVE; + if (isDependant && isActive) { + _this4.setExperimentState(id, STATE_INACTIVE); + } + }); + } + }, { + key: "shouldShowDependenciesDialog", + value: function shouldShowDependenciesDialog(experimentId) { + var dependencies = this.getExperimentDependencies(experimentId); + return !this.areAllDependenciesActive(dependencies); + } + }, { + key: "shouldShowDeactivationDialog", + value: function shouldShowDeactivationDialog(experimentId) { + var getExperimentData = this.getExperimentData(experimentId), + isInitialStateActive = getExperimentData.state === STATE_ACTIVE || getExperimentData.state === STATE_DEFAULT && getExperimentData.default === STATE_ACTIVE, + hasMessage = !!this.getMessage(experimentId, 'on_deactivate'); + return hasMessage && isInitialStateActive; + } + }, { + key: "showDialog", + value: function showDialog(dialog) { + return elementorCommon.dialogsManager.createWidget('confirm', { + id: 'e-experiments-messages-dialog', + headerMessage: dialog.headerMessage, + message: dialog.message, + position: { + my: 'center center', + at: 'center center' + }, + strings: { + confirm: dialog.strings.confirm, + cancel: dialog.strings.cancel + }, + hide: { + onOutsideClick: false, + onBackgroundClick: false, + onEscKeyPress: false + }, + onConfirm: dialog.onConfirm, + onCancel: dialog.onCancel + }).show(); + } + }, { + key: "getSiteLanguageCode", + value: function getSiteLanguageCode() { + var languageCode = document.querySelector('html').getAttribute('lang'); + return languageCode !== null && languageCode !== void 0 ? languageCode : 'en'; // Fallback to English if no language code found. + } + }, { + key: "formatDependenciesList", + value: function formatDependenciesList(dependencies) { + var dependenciesTitles = dependencies.map(function (d) { + return d.title; + }); + var languageCode = this.getSiteLanguageCode(); + return new Intl.ListFormat(languageCode).format(dependenciesTitles); + } + }, { + key: "showDependenciesDialog", + value: function showDependenciesDialog(experimentId) { + var _this5 = this; + var experiment = this.getExperimentData(experimentId), + experimentName = experiment.title, + dependenciesList = this.formatDependenciesList(this.getExperimentDependencies(experimentId)); + + // Translators: %1$s: Experiment title, %2$s: Comma-separated dependencies list + var message = __('In order to use %1$s, first you need to activate %2$s.', 'elementor').replace('%1$s', "".concat(experimentName, "")).replace('%2$s', dependenciesList); + this.showDialog({ + message: message, + headerMessage: __('First, activate another experiment.', 'elementor'), + strings: { + confirm: __('Activate', 'elementor'), + cancel: __('Cancel', 'elementor') + }, + onConfirm: function onConfirm() { + _this5.getExperimentDependencies(experimentId).forEach(function (dependency) { + _this5.setExperimentState(dependency.name, STATE_ACTIVE); + }); + _this5.elements.submit.click(); + }, + onCancel: function onCancel() { + _this5.setExperimentState(experimentId, STATE_INACTIVE); + } + }); + } + }, { + key: "showDeactivationDialog", + value: function showDeactivationDialog(experimentId) { + var _this6 = this; + this.showDialog({ + message: this.getMessage(experimentId, 'on_deactivate'), + headerMessage: __('Are you sure?', 'elementor'), + strings: { + confirm: __('Deactivate', 'elementor'), + cancel: __('Cancel', 'elementor') + }, + onConfirm: function onConfirm() { + _this6.setExperimentState(experimentId, STATE_INACTIVE); + _this6.deactivateDependantExperiments(experimentId); + _this6.elements.submit.click(); + }, + onCancel: function onCancel() { + _this6.setExperimentState(experimentId, STATE_ACTIVE); + } + }); + } + }, { + key: "getMessage", + value: function getMessage(experimentId, messageId) { + var _this$getExperimentDa; + return (_this$getExperimentDa = this.getExperimentData(experimentId)) === null || _this$getExperimentDa === void 0 ? void 0 : _this$getExperimentDa.messages[messageId]; + } + }]); + return ExperimentsMessages; +}(); +exports["default"] = ExperimentsMessages; + +/***/ }), + +/***/ "../core/experiments/assets/js/admin/module.js": +/*!*****************************************************!*\ + !*** ../core/experiments/assets/js/admin/module.js ***! + \*****************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + + +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 _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ "../node_modules/@babel/runtime/helpers/classCallCheck.js")); +var _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/createClass */ "../node_modules/@babel/runtime/helpers/createClass.js")); +var _get2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/get */ "../node_modules/@babel/runtime/helpers/get.js")); +var _inherits2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/inherits */ "../node_modules/@babel/runtime/helpers/inherits.js")); +var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ "../node_modules/@babel/runtime/helpers/possibleConstructorReturn.js")); +var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ "../node_modules/@babel/runtime/helpers/getPrototypeOf.js")); +var _experimentsMessages = _interopRequireDefault(__webpack_require__(/*! ./behaviors/experiments-messages */ "../core/experiments/assets/js/admin/behaviors/experiments-messages.js")); +function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; } +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } +var ExperimentsModule = /*#__PURE__*/function (_elementorModules$Vie) { + (0, _inherits2.default)(ExperimentsModule, _elementorModules$Vie); + var _super = _createSuper(ExperimentsModule); + function ExperimentsModule() { + (0, _classCallCheck2.default)(this, ExperimentsModule); + return _super.apply(this, arguments); + } + (0, _createClass2.default)(ExperimentsModule, [{ + key: "getDefaultSettings", + value: function getDefaultSettings() { + return { + selectors: { + experimentIndicators: '.e-experiment__title__indicator', + experimentForm: '#elementor-settings-form', + experimentSelects: '.e-experiment__select', + experimentsButtons: '.e-experiment__button' + } + }; + } + }, { + key: "getDefaultElements", + value: function getDefaultElements() { + var _this$getSettings = this.getSettings(), + selectors = _this$getSettings.selectors; + return { + $experimentIndicators: jQuery(selectors.experimentIndicators), + $experimentForm: jQuery(selectors.experimentForm), + $experimentSelects: jQuery(selectors.experimentSelects), + $experimentsButtons: jQuery(selectors.experimentsButtons) + }; + } + }, { + key: "bindEvents", + value: function bindEvents() { + var _this = this; + this.elements.$experimentsButtons.on('click', function (event) { + return _this.onExperimentsButtonsClick(event); + }); + } + }, { + key: "onExperimentsButtonsClick", + value: function onExperimentsButtonsClick(event) { + var submitButton = jQuery(event.currentTarget); + this.elements.$experimentSelects.val(submitButton.val()); + this.elements.$experimentForm.find('#submit').trigger('click'); + } + }, { + key: "addTipsy", + value: function addTipsy($element) { + $element.tipsy({ + gravity: 's', + offset: 8, + title: function title() { + return this.getAttribute('data-tooltip'); + } + }); + } + }, { + key: "addIndicatorsTooltips", + value: function addIndicatorsTooltips() { + var _this2 = this; + this.elements.$experimentIndicators.each(function (index, experimentIndicator) { + return _this2.addTipsy(jQuery(experimentIndicator)); + }); + } + }, { + key: "onInit", + value: function onInit() { + var _this3 = this; + (0, _get2.default)((0, _getPrototypeOf2.default)(ExperimentsModule.prototype), "onInit", this).call(this); + this.experimentsDependency = new _experimentsMessages.default({ + selects: this.elements.$experimentSelects.toArray(), + submit: this.elements.$experimentForm.find('#submit').get(0) + }); + this.experimentsDependency.bindEvents(); + if (this.elements.$experimentIndicators.length) { + import( /* webpackIgnore: true */"".concat(elementorCommon.config.urls.assets, "lib/tipsy/tipsy.min.js?ver=1.0.0")).then(function () { + return _this3.addIndicatorsTooltips(); + }); + } + } + }]); + return ExperimentsModule; +}(elementorModules.ViewModule); +exports["default"] = ExperimentsModule; + +/***/ }), + +/***/ "../modules/landing-pages/assets/js/admin/landing-pages.js": +/*!*****************************************************************!*\ + !*** ../modules/landing-pages/assets/js/admin/landing-pages.js ***! + \*****************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + + +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 _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ "../node_modules/@babel/runtime/helpers/classCallCheck.js")); +var _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/createClass */ "../node_modules/@babel/runtime/helpers/createClass.js")); +var _get2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/get */ "../node_modules/@babel/runtime/helpers/get.js")); +var _inherits2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/inherits */ "../node_modules/@babel/runtime/helpers/inherits.js")); +var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ "../node_modules/@babel/runtime/helpers/possibleConstructorReturn.js")); +var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ "../node_modules/@babel/runtime/helpers/getPrototypeOf.js")); +var _menuHandler = _interopRequireDefault(__webpack_require__(/*! elementor-admin/menu-handler */ "../assets/dev/js/admin/menu-handler.js")); +function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; } +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } +var LandingPagesHandler = /*#__PURE__*/function (_AdminMenuHandler) { + (0, _inherits2.default)(LandingPagesHandler, _AdminMenuHandler); + var _super = _createSuper(LandingPagesHandler); + function LandingPagesHandler() { + (0, _classCallCheck2.default)(this, LandingPagesHandler); + return _super.apply(this, arguments); + } + (0, _createClass2.default)(LandingPagesHandler, [{ + key: "getDefaultSettings", + value: function getDefaultSettings() { + var pageName = 'e-landing-page', + adminMenuSelectors = { + // The escaping is done because jQuery requires it for selectors. + landingPagesTablePage: 'a[href="edit.php?post_type=' + pageName + '"]', + landingPagesAddNewPage: 'a[href="edit.php?post_type=elementor_library&page=' + pageName + '"]' + }; + return { + selectors: { + addButton: '.page-title-action:first', + pagesMenuItemAndLink: '#menu-pages, #menu-pages > a', + landingPagesMenuItem: "".concat(adminMenuSelectors.landingPagesTablePage, ", ").concat(adminMenuSelectors.landingPagesAddNewPage), + templatesMenuItem: '.menu-icon-elementor_library' + } + }; + } + }, { + key: "getDefaultElements", + value: function getDefaultElements() { + var selectors = this.getSettings('selectors'), + elements = (0, _get2.default)((0, _getPrototypeOf2.default)(LandingPagesHandler.prototype), "getDefaultElements", this).call(this); + elements.$landingPagesMenuItem = jQuery(selectors.landingPagesMenuItem); + elements.$templatesMenuItem = jQuery(selectors.templatesMenuItem); + elements.$pagesMenuItemAndLink = jQuery(selectors.pagesMenuItemAndLink); + return elements; + } + }, { + key: "onInit", + value: function onInit() { + (0, _get2.default)((0, _getPrototypeOf2.default)(LandingPagesHandler.prototype), "onInit", this).call(this); + var settings = this.getSettings(), + isLandingPagesTablePage = !!window.location.href.includes(settings.paths.landingPagesTablePage), + isLandingPagesTrashPage = !!window.location.href.includes(settings.paths.landingPagesTrashPage), + isLandingPagesCreateYourFirstPage = !!window.location.href.includes(settings.paths.landingPagesAddNewPage); + + // If the current page is a Landing Pages Page (the Posts Table page, "Create Your First.." page, or a native + // WordPress dashboard page edit screen when using WordPress' Classic Editor). + if (isLandingPagesTablePage || isLandingPagesTrashPage || isLandingPagesCreateYourFirstPage || settings.isLandingPageAdminEdit) { + // Make sure the active admin top level menu item is 'Templates', and not 'Pages'. + this.highlightTopLevelMenuItem(this.elements.$templatesMenuItem, this.elements.$pagesMenuItemAndLink); + this.highlightSubMenuItem(this.elements.$landingPagesMenuItem); + + // Overwrite the 'Add New' button at the top of the page to open in Elementor with the library module open. + jQuery(settings.selectors.addButton).attr('href', elementorAdminConfig.urls.addNewLandingPageUrl); + } + } + }]); + return LandingPagesHandler; +}(_menuHandler.default); +exports["default"] = LandingPagesHandler; + +/***/ }), + +/***/ "../modules/landing-pages/assets/js/admin/module.js": +/*!**********************************************************!*\ + !*** ../modules/landing-pages/assets/js/admin/module.js ***! + \**********************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + + +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 _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ "../node_modules/@babel/runtime/helpers/classCallCheck.js")); +var _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/createClass */ "../node_modules/@babel/runtime/helpers/createClass.js")); +var _inherits2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/inherits */ "../node_modules/@babel/runtime/helpers/inherits.js")); +var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ "../node_modules/@babel/runtime/helpers/possibleConstructorReturn.js")); +var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ "../node_modules/@babel/runtime/helpers/getPrototypeOf.js")); +var _landingPages = _interopRequireDefault(__webpack_require__(/*! ./landing-pages */ "../modules/landing-pages/assets/js/admin/landing-pages.js")); +function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; } +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } +var _default = /*#__PURE__*/function (_elementorModules$Mod) { + (0, _inherits2.default)(_default, _elementorModules$Mod); + var _super = _createSuper(_default); + function _default() { + var _this; + (0, _classCallCheck2.default)(this, _default); + _this = _super.call(this); + elementorCommon.elements.$window.on('elementor/admin/init', function () { + _this.runHandler(); + }); + return _this; + } + (0, _createClass2.default)(_default, [{ + key: "runHandler", + value: function runHandler() { + var _elementorAdmin$confi, _elementorAdmin$confi2; + var pageName = 'e-landing-page', + paths = { + landingPagesTablePage: 'edit.php?post_type=' + pageName, + landingPagesAddNewPage: 'edit.php?post_type=elementor_library&page=' + pageName, + landingPagesTrashPage: 'edit.php?post_status=trash&post_type=' + pageName + }, + args = { + path: (_elementorAdmin$confi = elementorAdmin.config.landingPages) !== null && _elementorAdmin$confi !== void 0 && _elementorAdmin$confi.landingPagesHasPages ? paths.landingPagesTablePage : paths.landingPagesAddNewPage, + isLandingPageAdminEdit: (_elementorAdmin$confi2 = elementorAdmin.config.landingPages) === null || _elementorAdmin$confi2 === void 0 ? void 0 : _elementorAdmin$confi2.isLandingPageAdminEdit, + paths: paths + }; + + // This class modifies elements in the WordPress admin that are rendered "wrong" by the WordPress core + // and could not be modified in the backend. + new _landingPages.default(args); + } + }]); + return _default; +}(elementorModules.Module); +exports["default"] = _default; + +/***/ }), + +/***/ "@wordpress/i18n": +/*!**************************!*\ + !*** external "wp.i18n" ***! + \**************************/ +/***/ ((module) => { + +"use strict"; +module.exports = wp.i18n; + +/***/ }), + +/***/ "../node_modules/@babel/runtime/helpers/arrayLikeToArray.js": +/*!******************************************************************!*\ + !*** ../node_modules/@babel/runtime/helpers/arrayLikeToArray.js ***! + \******************************************************************/ +/***/ ((module) => { + +function _arrayLikeToArray(arr, len) { + if (len == null || len > arr.length) len = arr.length; + for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; + return arr2; +} +module.exports = _arrayLikeToArray, module.exports.__esModule = true, module.exports["default"] = module.exports; + +/***/ }), + +/***/ "../node_modules/@babel/runtime/helpers/arrayWithHoles.js": +/*!****************************************************************!*\ + !*** ../node_modules/@babel/runtime/helpers/arrayWithHoles.js ***! + \****************************************************************/ +/***/ ((module) => { + +function _arrayWithHoles(arr) { + if (Array.isArray(arr)) return arr; +} +module.exports = _arrayWithHoles, module.exports.__esModule = true, module.exports["default"] = module.exports; + +/***/ }), + +/***/ "../node_modules/@babel/runtime/helpers/assertThisInitialized.js": +/*!***********************************************************************!*\ + !*** ../node_modules/@babel/runtime/helpers/assertThisInitialized.js ***! + \***********************************************************************/ +/***/ ((module) => { + +function _assertThisInitialized(self) { + if (self === void 0) { + throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); + } + return self; +} +module.exports = _assertThisInitialized, module.exports.__esModule = true, module.exports["default"] = module.exports; + +/***/ }), + +/***/ "../node_modules/@babel/runtime/helpers/asyncToGenerator.js": +/*!******************************************************************!*\ + !*** ../node_modules/@babel/runtime/helpers/asyncToGenerator.js ***! + \******************************************************************/ +/***/ ((module) => { + +function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { + try { + var info = gen[key](arg); + var value = info.value; + } catch (error) { + reject(error); + return; + } + if (info.done) { + resolve(value); + } else { + Promise.resolve(value).then(_next, _throw); + } +} +function _asyncToGenerator(fn) { + return function () { + var self = this, + args = arguments; + return new Promise(function (resolve, reject) { + var gen = fn.apply(self, args); + function _next(value) { + asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); + } + function _throw(err) { + asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); + } + _next(undefined); + }); + }; +} +module.exports = _asyncToGenerator, module.exports.__esModule = true, module.exports["default"] = module.exports; + +/***/ }), + +/***/ "../node_modules/@babel/runtime/helpers/classCallCheck.js": +/*!****************************************************************!*\ + !*** ../node_modules/@babel/runtime/helpers/classCallCheck.js ***! + \****************************************************************/ +/***/ ((module) => { + +function _classCallCheck(instance, Constructor) { + if (!(instance instanceof Constructor)) { + throw new TypeError("Cannot call a class as a function"); + } +} +module.exports = _classCallCheck, module.exports.__esModule = true, module.exports["default"] = module.exports; + +/***/ }), + +/***/ "../node_modules/@babel/runtime/helpers/createClass.js": +/*!*************************************************************!*\ + !*** ../node_modules/@babel/runtime/helpers/createClass.js ***! + \*************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var toPropertyKey = __webpack_require__(/*! ./toPropertyKey.js */ "../node_modules/@babel/runtime/helpers/toPropertyKey.js"); +function _defineProperties(target, props) { + for (var i = 0; i < props.length; i++) { + var descriptor = props[i]; + descriptor.enumerable = descriptor.enumerable || false; + descriptor.configurable = true; + if ("value" in descriptor) descriptor.writable = true; + Object.defineProperty(target, toPropertyKey(descriptor.key), descriptor); + } +} +function _createClass(Constructor, protoProps, staticProps) { + if (protoProps) _defineProperties(Constructor.prototype, protoProps); + if (staticProps) _defineProperties(Constructor, staticProps); + Object.defineProperty(Constructor, "prototype", { + writable: false + }); + return Constructor; +} +module.exports = _createClass, module.exports.__esModule = true, module.exports["default"] = module.exports; + +/***/ }), + +/***/ "../node_modules/@babel/runtime/helpers/defineProperty.js": +/*!****************************************************************!*\ + !*** ../node_modules/@babel/runtime/helpers/defineProperty.js ***! + \****************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var toPropertyKey = __webpack_require__(/*! ./toPropertyKey.js */ "../node_modules/@babel/runtime/helpers/toPropertyKey.js"); +function _defineProperty(obj, key, value) { + key = toPropertyKey(key); + if (key in obj) { + Object.defineProperty(obj, key, { + value: value, + enumerable: true, + configurable: true, + writable: true + }); + } else { + obj[key] = value; + } + return obj; +} +module.exports = _defineProperty, module.exports.__esModule = true, module.exports["default"] = module.exports; + +/***/ }), + +/***/ "../node_modules/@babel/runtime/helpers/get.js": +/*!*****************************************************!*\ + !*** ../node_modules/@babel/runtime/helpers/get.js ***! + \*****************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var superPropBase = __webpack_require__(/*! ./superPropBase.js */ "../node_modules/@babel/runtime/helpers/superPropBase.js"); +function _get() { + if (typeof Reflect !== "undefined" && Reflect.get) { + module.exports = _get = Reflect.get.bind(), module.exports.__esModule = true, module.exports["default"] = module.exports; + } else { + module.exports = _get = function _get(target, property, receiver) { + var base = superPropBase(target, property); + if (!base) return; + var desc = Object.getOwnPropertyDescriptor(base, property); + if (desc.get) { + return desc.get.call(arguments.length < 3 ? target : receiver); + } + return desc.value; + }, module.exports.__esModule = true, module.exports["default"] = module.exports; + } + return _get.apply(this, arguments); +} +module.exports = _get, module.exports.__esModule = true, module.exports["default"] = module.exports; + +/***/ }), + +/***/ "../node_modules/@babel/runtime/helpers/getPrototypeOf.js": +/*!****************************************************************!*\ + !*** ../node_modules/@babel/runtime/helpers/getPrototypeOf.js ***! + \****************************************************************/ +/***/ ((module) => { + +function _getPrototypeOf(o) { + module.exports = _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { + return o.__proto__ || Object.getPrototypeOf(o); + }, module.exports.__esModule = true, module.exports["default"] = module.exports; + return _getPrototypeOf(o); +} +module.exports = _getPrototypeOf, module.exports.__esModule = true, module.exports["default"] = module.exports; + +/***/ }), + +/***/ "../node_modules/@babel/runtime/helpers/inherits.js": +/*!**********************************************************!*\ + !*** ../node_modules/@babel/runtime/helpers/inherits.js ***! + \**********************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var setPrototypeOf = __webpack_require__(/*! ./setPrototypeOf.js */ "../node_modules/@babel/runtime/helpers/setPrototypeOf.js"); +function _inherits(subClass, superClass) { + if (typeof superClass !== "function" && superClass !== null) { + throw new TypeError("Super expression must either be null or a function"); + } + subClass.prototype = Object.create(superClass && superClass.prototype, { + constructor: { + value: subClass, + writable: true, + configurable: true + } + }); + Object.defineProperty(subClass, "prototype", { + writable: false + }); + if (superClass) setPrototypeOf(subClass, superClass); +} +module.exports = _inherits, module.exports.__esModule = true, module.exports["default"] = module.exports; + +/***/ }), + +/***/ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js": +/*!***********************************************************************!*\ + !*** ../node_modules/@babel/runtime/helpers/interopRequireDefault.js ***! + \***********************************************************************/ +/***/ ((module) => { + +function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + "default": obj + }; +} +module.exports = _interopRequireDefault, module.exports.__esModule = true, module.exports["default"] = module.exports; + +/***/ }), + +/***/ "../node_modules/@babel/runtime/helpers/iterableToArrayLimit.js": +/*!**********************************************************************!*\ + !*** ../node_modules/@babel/runtime/helpers/iterableToArrayLimit.js ***! + \**********************************************************************/ +/***/ ((module) => { + +function _iterableToArrayLimit(r, l) { + var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; + if (null != t) { + var e, + n, + i, + u, + a = [], + f = !0, + o = !1; + try { + if (i = (t = t.call(r)).next, 0 === l) { + if (Object(t) !== t) return; + f = !1; + } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); + } catch (r) { + o = !0, n = r; + } finally { + try { + if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; + } finally { + if (o) throw n; + } + } + return a; + } +} +module.exports = _iterableToArrayLimit, module.exports.__esModule = true, module.exports["default"] = module.exports; + +/***/ }), + +/***/ "../node_modules/@babel/runtime/helpers/nonIterableRest.js": +/*!*****************************************************************!*\ + !*** ../node_modules/@babel/runtime/helpers/nonIterableRest.js ***! + \*****************************************************************/ +/***/ ((module) => { + +function _nonIterableRest() { + throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); +} +module.exports = _nonIterableRest, module.exports.__esModule = true, module.exports["default"] = module.exports; + +/***/ }), + +/***/ "../node_modules/@babel/runtime/helpers/possibleConstructorReturn.js": +/*!***************************************************************************!*\ + !*** ../node_modules/@babel/runtime/helpers/possibleConstructorReturn.js ***! + \***************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var _typeof = (__webpack_require__(/*! ./typeof.js */ "../node_modules/@babel/runtime/helpers/typeof.js")["default"]); +var assertThisInitialized = __webpack_require__(/*! ./assertThisInitialized.js */ "../node_modules/@babel/runtime/helpers/assertThisInitialized.js"); +function _possibleConstructorReturn(self, call) { + if (call && (_typeof(call) === "object" || typeof call === "function")) { + return call; + } else if (call !== void 0) { + throw new TypeError("Derived constructors may only return object or undefined"); + } + return assertThisInitialized(self); +} +module.exports = _possibleConstructorReturn, module.exports.__esModule = true, module.exports["default"] = module.exports; + +/***/ }), + +/***/ "../node_modules/@babel/runtime/helpers/regeneratorRuntime.js": +/*!********************************************************************!*\ + !*** ../node_modules/@babel/runtime/helpers/regeneratorRuntime.js ***! + \********************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var _typeof = (__webpack_require__(/*! ./typeof.js */ "../node_modules/@babel/runtime/helpers/typeof.js")["default"]); +function _regeneratorRuntime() { + "use strict"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ + module.exports = _regeneratorRuntime = function _regeneratorRuntime() { + return e; + }, module.exports.__esModule = true, module.exports["default"] = module.exports; + var t, + e = {}, + r = Object.prototype, + n = r.hasOwnProperty, + o = Object.defineProperty || function (t, e, r) { + t[e] = r.value; + }, + i = "function" == typeof Symbol ? Symbol : {}, + a = i.iterator || "@@iterator", + c = i.asyncIterator || "@@asyncIterator", + u = i.toStringTag || "@@toStringTag"; + function define(t, e, r) { + return Object.defineProperty(t, e, { + value: r, + enumerable: !0, + configurable: !0, + writable: !0 + }), t[e]; + } + try { + define({}, ""); + } catch (t) { + define = function define(t, e, r) { + return t[e] = r; + }; + } + function wrap(t, e, r, n) { + var i = e && e.prototype instanceof Generator ? e : Generator, + a = Object.create(i.prototype), + c = new Context(n || []); + return o(a, "_invoke", { + value: makeInvokeMethod(t, r, c) + }), a; + } + function tryCatch(t, e, r) { + try { + return { + type: "normal", + arg: t.call(e, r) + }; + } catch (t) { + return { + type: "throw", + arg: t + }; + } + } + e.wrap = wrap; + var h = "suspendedStart", + l = "suspendedYield", + f = "executing", + s = "completed", + y = {}; + function Generator() {} + function GeneratorFunction() {} + function GeneratorFunctionPrototype() {} + var p = {}; + define(p, a, function () { + return this; + }); + var d = Object.getPrototypeOf, + v = d && d(d(values([]))); + v && v !== r && n.call(v, a) && (p = v); + var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); + function defineIteratorMethods(t) { + ["next", "throw", "return"].forEach(function (e) { + define(t, e, function (t) { + return this._invoke(e, t); + }); + }); + } + function AsyncIterator(t, e) { + function invoke(r, o, i, a) { + var c = tryCatch(t[r], t, o); + if ("throw" !== c.type) { + var u = c.arg, + h = u.value; + return h && "object" == _typeof(h) && n.call(h, "__await") ? e.resolve(h.__await).then(function (t) { + invoke("next", t, i, a); + }, function (t) { + invoke("throw", t, i, a); + }) : e.resolve(h).then(function (t) { + u.value = t, i(u); + }, function (t) { + return invoke("throw", t, i, a); + }); + } + a(c.arg); + } + var r; + o(this, "_invoke", { + value: function value(t, n) { + function callInvokeWithMethodAndArg() { + return new e(function (e, r) { + invoke(t, n, e, r); + }); + } + return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); + } + }); + } + function makeInvokeMethod(e, r, n) { + var o = h; + return function (i, a) { + if (o === f) throw new Error("Generator is already running"); + if (o === s) { + if ("throw" === i) throw a; + return { + value: t, + done: !0 + }; + } + for (n.method = i, n.arg = a;;) { + var c = n.delegate; + if (c) { + var u = maybeInvokeDelegate(c, n); + if (u) { + if (u === y) continue; + return u; + } + } + if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) { + if (o === h) throw o = s, n.arg; + n.dispatchException(n.arg); + } else "return" === n.method && n.abrupt("return", n.arg); + o = f; + var p = tryCatch(e, r, n); + if ("normal" === p.type) { + if (o = n.done ? s : l, p.arg === y) continue; + return { + value: p.arg, + done: n.done + }; + } + "throw" === p.type && (o = s, n.method = "throw", n.arg = p.arg); + } + }; + } + function maybeInvokeDelegate(e, r) { + var n = r.method, + o = e.iterator[n]; + if (o === t) return r.delegate = null, "throw" === n && e.iterator["return"] && (r.method = "return", r.arg = t, maybeInvokeDelegate(e, r), "throw" === r.method) || "return" !== n && (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + n + "' method")), y; + var i = tryCatch(o, e.iterator, r.arg); + if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, y; + var a = i.arg; + return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, "return" !== r.method && (r.method = "next", r.arg = t), r.delegate = null, y) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, y); + } + function pushTryEntry(t) { + var e = { + tryLoc: t[0] + }; + 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); + } + function resetTryEntry(t) { + var e = t.completion || {}; + e.type = "normal", delete e.arg, t.completion = e; + } + function Context(t) { + this.tryEntries = [{ + tryLoc: "root" + }], t.forEach(pushTryEntry, this), this.reset(!0); + } + function values(e) { + if (e || "" === e) { + var r = e[a]; + if (r) return r.call(e); + if ("function" == typeof e.next) return e; + if (!isNaN(e.length)) { + var o = -1, + i = function next() { + for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; + return next.value = t, next.done = !0, next; + }; + return i.next = i; + } + } + throw new TypeError(_typeof(e) + " is not iterable"); + } + return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", { + value: GeneratorFunctionPrototype, + configurable: !0 + }), o(GeneratorFunctionPrototype, "constructor", { + value: GeneratorFunction, + configurable: !0 + }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) { + var e = "function" == typeof t && t.constructor; + return !!e && (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name)); + }, e.mark = function (t) { + return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, "GeneratorFunction")), t.prototype = Object.create(g), t; + }, e.awrap = function (t) { + return { + __await: t + }; + }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { + return this; + }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { + void 0 === i && (i = Promise); + var a = new AsyncIterator(wrap(t, r, n, o), i); + return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { + return t.done ? t.value : a.next(); + }); + }, defineIteratorMethods(g), define(g, u, "Generator"), define(g, a, function () { + return this; + }), define(g, "toString", function () { + return "[object Generator]"; + }), e.keys = function (t) { + var e = Object(t), + r = []; + for (var n in e) r.push(n); + return r.reverse(), function next() { + for (; r.length;) { + var t = r.pop(); + if (t in e) return next.value = t, next.done = !1, next; + } + return next.done = !0, next; + }; + }, e.values = values, Context.prototype = { + constructor: Context, + reset: function reset(e) { + if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) "t" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); + }, + stop: function stop() { + this.done = !0; + var t = this.tryEntries[0].completion; + if ("throw" === t.type) throw t.arg; + return this.rval; + }, + dispatchException: function dispatchException(e) { + if (this.done) throw e; + var r = this; + function handle(n, o) { + return a.type = "throw", a.arg = e, r.next = n, o && (r.method = "next", r.arg = t), !!o; + } + for (var o = this.tryEntries.length - 1; o >= 0; --o) { + var i = this.tryEntries[o], + a = i.completion; + if ("root" === i.tryLoc) return handle("end"); + if (i.tryLoc <= this.prev) { + var c = n.call(i, "catchLoc"), + u = n.call(i, "finallyLoc"); + if (c && u) { + if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); + if (this.prev < i.finallyLoc) return handle(i.finallyLoc); + } else if (c) { + if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); + } else { + if (!u) throw new Error("try statement without catch or finally"); + if (this.prev < i.finallyLoc) return handle(i.finallyLoc); + } + } + } + }, + abrupt: function abrupt(t, e) { + for (var r = this.tryEntries.length - 1; r >= 0; --r) { + var o = this.tryEntries[r]; + if (o.tryLoc <= this.prev && n.call(o, "finallyLoc") && this.prev < o.finallyLoc) { + var i = o; + break; + } + } + i && ("break" === t || "continue" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); + var a = i ? i.completion : {}; + return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, y) : this.complete(a); + }, + complete: function complete(t, e) { + if ("throw" === t.type) throw t.arg; + return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type && e && (this.next = e), y; + }, + finish: function finish(t) { + for (var e = this.tryEntries.length - 1; e >= 0; --e) { + var r = this.tryEntries[e]; + if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; + } + }, + "catch": function _catch(t) { + for (var e = this.tryEntries.length - 1; e >= 0; --e) { + var r = this.tryEntries[e]; + if (r.tryLoc === t) { + var n = r.completion; + if ("throw" === n.type) { + var o = n.arg; + resetTryEntry(r); + } + return o; + } + } + throw new Error("illegal catch attempt"); + }, + delegateYield: function delegateYield(e, r, n) { + return this.delegate = { + iterator: values(e), + resultName: r, + nextLoc: n + }, "next" === this.method && (this.arg = t), y; + } + }, e; +} +module.exports = _regeneratorRuntime, module.exports.__esModule = true, module.exports["default"] = module.exports; + +/***/ }), + +/***/ "../node_modules/@babel/runtime/helpers/setPrototypeOf.js": +/*!****************************************************************!*\ + !*** ../node_modules/@babel/runtime/helpers/setPrototypeOf.js ***! + \****************************************************************/ +/***/ ((module) => { + +function _setPrototypeOf(o, p) { + module.exports = _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { + o.__proto__ = p; + return o; + }, module.exports.__esModule = true, module.exports["default"] = module.exports; + return _setPrototypeOf(o, p); +} +module.exports = _setPrototypeOf, module.exports.__esModule = true, module.exports["default"] = module.exports; + +/***/ }), + +/***/ "../node_modules/@babel/runtime/helpers/slicedToArray.js": +/*!***************************************************************!*\ + !*** ../node_modules/@babel/runtime/helpers/slicedToArray.js ***! + \***************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var arrayWithHoles = __webpack_require__(/*! ./arrayWithHoles.js */ "../node_modules/@babel/runtime/helpers/arrayWithHoles.js"); +var iterableToArrayLimit = __webpack_require__(/*! ./iterableToArrayLimit.js */ "../node_modules/@babel/runtime/helpers/iterableToArrayLimit.js"); +var unsupportedIterableToArray = __webpack_require__(/*! ./unsupportedIterableToArray.js */ "../node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js"); +var nonIterableRest = __webpack_require__(/*! ./nonIterableRest.js */ "../node_modules/@babel/runtime/helpers/nonIterableRest.js"); +function _slicedToArray(arr, i) { + return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest(); +} +module.exports = _slicedToArray, module.exports.__esModule = true, module.exports["default"] = module.exports; + +/***/ }), + +/***/ "../node_modules/@babel/runtime/helpers/superPropBase.js": +/*!***************************************************************!*\ + !*** ../node_modules/@babel/runtime/helpers/superPropBase.js ***! + \***************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var getPrototypeOf = __webpack_require__(/*! ./getPrototypeOf.js */ "../node_modules/@babel/runtime/helpers/getPrototypeOf.js"); +function _superPropBase(object, property) { + while (!Object.prototype.hasOwnProperty.call(object, property)) { + object = getPrototypeOf(object); + if (object === null) break; + } + return object; +} +module.exports = _superPropBase, module.exports.__esModule = true, module.exports["default"] = module.exports; + +/***/ }), + +/***/ "../node_modules/@babel/runtime/helpers/toPrimitive.js": +/*!*************************************************************!*\ + !*** ../node_modules/@babel/runtime/helpers/toPrimitive.js ***! + \*************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var _typeof = (__webpack_require__(/*! ./typeof.js */ "../node_modules/@babel/runtime/helpers/typeof.js")["default"]); +function toPrimitive(t, r) { + if ("object" != _typeof(t) || !t) return t; + var e = t[Symbol.toPrimitive]; + if (void 0 !== e) { + var i = e.call(t, r || "default"); + if ("object" != _typeof(i)) return i; + throw new TypeError("@@toPrimitive must return a primitive value."); + } + return ("string" === r ? String : Number)(t); +} +module.exports = toPrimitive, module.exports.__esModule = true, module.exports["default"] = module.exports; + +/***/ }), + +/***/ "../node_modules/@babel/runtime/helpers/toPropertyKey.js": +/*!***************************************************************!*\ + !*** ../node_modules/@babel/runtime/helpers/toPropertyKey.js ***! + \***************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var _typeof = (__webpack_require__(/*! ./typeof.js */ "../node_modules/@babel/runtime/helpers/typeof.js")["default"]); +var toPrimitive = __webpack_require__(/*! ./toPrimitive.js */ "../node_modules/@babel/runtime/helpers/toPrimitive.js"); +function toPropertyKey(t) { + var i = toPrimitive(t, "string"); + return "symbol" == _typeof(i) ? i : String(i); +} +module.exports = toPropertyKey, module.exports.__esModule = true, module.exports["default"] = module.exports; + +/***/ }), + +/***/ "../node_modules/@babel/runtime/helpers/typeof.js": +/*!********************************************************!*\ + !*** ../node_modules/@babel/runtime/helpers/typeof.js ***! + \********************************************************/ +/***/ ((module) => { + +function _typeof(o) { + "@babel/helpers - typeof"; + + return (module.exports = _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { + return typeof o; + } : function (o) { + return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; + }, module.exports.__esModule = true, module.exports["default"] = module.exports), _typeof(o); +} +module.exports = _typeof, module.exports.__esModule = true, module.exports["default"] = module.exports; + +/***/ }), + +/***/ "../node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js": +/*!****************************************************************************!*\ + !*** ../node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js ***! + \****************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var arrayLikeToArray = __webpack_require__(/*! ./arrayLikeToArray.js */ "../node_modules/@babel/runtime/helpers/arrayLikeToArray.js"); +function _unsupportedIterableToArray(o, minLen) { + if (!o) return; + if (typeof o === "string") return arrayLikeToArray(o, minLen); + var n = Object.prototype.toString.call(o).slice(8, -1); + if (n === "Object" && o.constructor) n = o.constructor.name; + if (n === "Map" || n === "Set") return Array.from(o); + if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen); +} +module.exports = _unsupportedIterableToArray, module.exports.__esModule = true, module.exports["default"] = module.exports; + +/***/ }), + +/***/ "../node_modules/@babel/runtime/regenerator/index.js": +/*!***********************************************************!*\ + !*** ../node_modules/@babel/runtime/regenerator/index.js ***! + \***********************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +// TODO(Babel 8): Remove this file. + +var runtime = __webpack_require__(/*! ../helpers/regeneratorRuntime */ "../node_modules/@babel/runtime/helpers/regeneratorRuntime.js")(); +module.exports = runtime; + +// Copied from https://github.com/facebook/regenerator/blob/main/packages/runtime/runtime.js#L736= +try { + regeneratorRuntime = runtime; +} catch (accidentalStrictMode) { + if (typeof globalThis === "object") { + globalThis.regeneratorRuntime = runtime; + } else { + Function("r", "regeneratorRuntime = r")(runtime); + } +} + + +/***/ }) + +/******/ }); +/************************************************************************/ +/******/ // The module cache +/******/ var __webpack_module_cache__ = {}; +/******/ +/******/ // The require function +/******/ function __webpack_require__(moduleId) { +/******/ // Check if module is in cache +/******/ var cachedModule = __webpack_module_cache__[moduleId]; +/******/ if (cachedModule !== undefined) { +/******/ return cachedModule.exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = __webpack_module_cache__[moduleId] = { +/******/ // no module.id needed +/******/ // no module.loaded needed +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__); +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/************************************************************************/ +var __webpack_exports__ = {}; +// This entry need to be wrapped in an IIFE because it need to be in strict mode. +(() => { +"use strict"; +/*!***************************************!*\ + !*** ../assets/dev/js/admin/admin.js ***! + \***************************************/ +/* provided dependency */ var __ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n")["__"]; + + +var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js"); +var _regenerator = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/regenerator */ "../node_modules/@babel/runtime/regenerator/index.js")); +var _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ "../node_modules/@babel/runtime/helpers/asyncToGenerator.js")); +var _slicedToArray2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/slicedToArray */ "../node_modules/@babel/runtime/helpers/slicedToArray.js")); +var _module = _interopRequireDefault(__webpack_require__(/*! elementor/modules/landing-pages/assets/js/admin/module */ "../modules/landing-pages/assets/js/admin/module.js")); +var _module2 = _interopRequireDefault(__webpack_require__(/*! elementor/core/experiments/assets/js/admin/module */ "../core/experiments/assets/js/admin/module.js")); +var _environment = _interopRequireDefault(__webpack_require__(/*! ../../../../core/common/assets/js/utils/environment */ "../core/common/assets/js/utils/environment.js")); +var _events = _interopRequireDefault(__webpack_require__(/*! elementor-utils/events */ "../assets/dev/js/utils/events.js")); +var _filesUploadHandler = _interopRequireDefault(__webpack_require__(/*! ../editor/utils/files-upload-handler */ "../assets/dev/js/editor/utils/files-upload-handler.js")); +var _templateControls = _interopRequireDefault(__webpack_require__(/*! ./new-template/template-controls.js */ "../assets/dev/js/admin/new-template/template-controls.js")); +var _jsonUploadWarningMessage = __webpack_require__(/*! elementor-utils/json-upload-warning-message */ "../assets/dev/js/utils/json-upload-warning-message.js"); +(function ($) { + var ElementorAdmin = elementorModules.ViewModule.extend({ + maintenanceMode: null, + config: elementorAdminConfig, + getDefaultElements: function getDefaultElements() { + var elements = { + $switchMode: $('#elementor-switch-mode'), + $goToEditLink: $('#elementor-go-to-edit-page-link'), + $switchModeInput: $('#elementor-switch-mode-input'), + $switchModeButton: $('#elementor-switch-mode-button'), + $elementorLoader: $('.elementor-loader'), + $builderEditor: $('#elementor-editor'), + $importButton: $('#elementor-import-template-trigger'), + $importNowButton: $('#e-import-template-action'), + $importArea: $('#elementor-import-template-area'), + $importForm: $('#elementor-import-template-form'), + $importFormFileInput: $('#elementor-import-template-form input[type="file"]'), + $settingsForm: $('#elementor-settings-form'), + $settingsTabsWrapper: $('#elementor-settings-tabs-wrapper'), + $menuGetHelpLink: $('a[href="admin.php?page=go_knowledge_base_site"]'), + $menuGoProLink: $('a[href="admin.php?page=go_elementor_pro"]'), + $reMigrateGlobalsButton: $('.elementor-re-migrate-globals-button') + }; + elements.$settingsFormPages = elements.$settingsForm.find('.elementor-settings-form-page'); + elements.$activeSettingsPage = elements.$settingsFormPages.filter('.elementor-active'); + elements.$settingsTabs = elements.$settingsTabsWrapper.children(); + elements.$activeSettingsTab = elements.$settingsTabs.filter('.nav-tab-active'); + return elements; + }, + toggleStatus: function toggleStatus() { + var isElementorMode = this.isElementorMode(); + elementorCommon.elements.$body.toggleClass('elementor-editor-active', isElementorMode).toggleClass('elementor-editor-inactive', !isElementorMode); + }, + bindEvents: function bindEvents() { + var self = this; + self.elements.$switchModeButton.on('click', function (event) { + event.preventDefault(); + if (self.isElementorMode()) { + elementorCommon.dialogsManager.createWidget('confirm', { + message: __('Please note that you are switching to WordPress default editor. Your current layout, design and content might break.', 'elementor'), + headerMessage: __('Back to WordPress Editor', 'elementor'), + strings: { + confirm: __('Continue', 'elementor'), + cancel: __('Cancel', 'elementor') + }, + defaultOption: 'confirm', + onConfirm: function onConfirm() { + self.elements.$switchModeInput.val(''); + self.toggleStatus(); + } + }).show(); + } else { + self.elements.$switchModeInput.val(true); + var $wpTitle = $('#title'); + if (!$wpTitle.val()) { + $wpTitle.val('Elementor #' + $('#post_ID').val()); + } + if (wp.autosave) { + wp.autosave.server.triggerSave(); + } + self.animateLoader(); + $(document).on('heartbeat-tick.autosave', function () { + elementorCommon.elements.$window.off('beforeunload.edit-post'); + location.href = self.elements.$goToEditLink.attr('href'); + }); + self.toggleStatus(); + } + }); + self.elements.$goToEditLink.on('click', function () { + self.animateLoader(); + }); + $('.e-notice--dismissible').on('click', '.e-notice__dismiss, .e-notice-dismiss', function (event) { + event.preventDefault(); + var $wrapperElm = $(this).closest('.e-notice--dismissible'); + $.post(ajaxurl, { + action: 'elementor_set_admin_notice_viewed', + notice_id: $wrapperElm.data('notice_id') + }); + $wrapperElm.fadeTo(100, 0, function () { + $wrapperElm.slideUp(100, function () { + $wrapperElm.remove(); + }); + }); + }); + $('#elementor-clear-cache-button').on('click', function (event) { + event.preventDefault(); + var $thisButton = $(this); + $thisButton.removeClass('success').addClass('loading'); + $.post(ajaxurl, { + action: 'elementor_clear_cache', + _nonce: $thisButton.data('nonce') + }).done(function () { + $thisButton.removeClass('loading').addClass('success'); + }); + }); + $('#elementor-library-sync-button').on('click', function (event) { + event.preventDefault(); + var $thisButton = $(this); + $thisButton.removeClass('success').addClass('loading'); + $.post(ajaxurl, { + action: 'elementor_reset_library', + _nonce: $thisButton.data('nonce') + }).done(function () { + $thisButton.removeClass('loading').addClass('success'); + }); + }); + $('#elementor-recreate-kit-button').on('click', function (event) { + event.preventDefault(); + var $thisButton = $(this); + $thisButton.removeClass('success error').addClass('loading').next('.e-recreate-kit-error-message').remove(); + $.post(ajaxurl, { + action: 'elementor_recreate_kit', + _nonce: $thisButton.data('nonce') + }).done(function () { + $thisButton.removeClass('loading').addClass('success'); + }).fail(function (_ref) { + var _responseJSON$data; + var responseJSON = _ref.responseJSON; + $thisButton.removeClass('loading').addClass('error'); + if ((_responseJSON$data = responseJSON.data) !== null && _responseJSON$data !== void 0 && _responseJSON$data.message) { + $thisButton.after("
    ".concat(responseJSON.data.message, "
    ")); + } + }); + }); + $('#elementor-replace-url-button').on('click', function (event) { + event.preventDefault(); + var $this = $(this), + $tr = $this.parents('tr'), + $from = $tr.find('[name="from"]'), + $to = $tr.find('[name="to"]'); + $this.removeClass('success').addClass('loading'); + $.post(ajaxurl, { + action: 'elementor_replace_url', + from: $from.val(), + to: $to.val(), + _nonce: $this.data('nonce') + }).done(function (response) { + $this.removeClass('loading'); + if (response.success) { + $this.addClass('success'); + } + elementorCommon.dialogsManager.createWidget('alert', { + message: response.data + }).show(); + }); + }); + $('#elementor_upgrade_fa_button').on('click', function (event) { + event.preventDefault(); + var $updateButton = $(this); + $updateButton.addClass('loading'); + elementorCommon.dialogsManager.createWidget('confirm', { + id: 'confirm_fa_migration_admin_modal', + message: __('I understand that by upgrading to Font Awesome 5,', 'elementor') + '
    ' + __('I acknowledge that some changes may affect my website and that this action cannot be undone.', 'elementor'), + headerMessage: __('Font Awesome 5 Migration', 'elementor'), + strings: { + confirm: __('Continue', 'elementor'), + cancel: __('Cancel', 'elementor') + }, + defaultOption: 'confirm', + onConfirm: function onConfirm() { + $updateButton.removeClass('error').addClass('loading'); + var _$updateButton$data = $updateButton.data(), + _nonce = _$updateButton$data._nonce, + action = _$updateButton$data.action, + redirectUrl = _$updateButton$data.redirectUrl; + $.post(ajaxurl, { + action: action, + _nonce: _nonce + }).done(function (response) { + $updateButton.removeClass('loading').addClass('success'); + var messageElement = document.createElement('p'); + messageElement.appendChild(document.createTextNode(response.data.message)); + $('#elementor_upgrade_fa_button').parent().append(messageElement); + if (redirectUrl) { + location.href = decodeURIComponent(redirectUrl); + return; + } + history.go(-1); + }).fail(function () { + $updateButton.removeClass('loading').addClass('error'); + }); + }, + onCancel: function onCancel() { + $updateButton.removeClass('loading').addClass('error'); + } + }).show(); + }); + self.elements.$settingsTabs.on({ + click: function click(event) { + event.preventDefault(); + event.currentTarget.focus(); // Safari does not focus the tab automatically + }, + focus: function focus() { + // Using focus event to enable navigation by tab key + var hrefWithoutHash = location.href.replace(/#.*/, ''); + history.pushState({}, '', hrefWithoutHash + this.hash); + self.goToSettingsTabFromHash(); + } + }); + $('select.elementor-rollback-select').on('change', function () { + var $this = $(this), + $rollbackButton = $this.next('.elementor-rollback-button'), + placeholderText = $rollbackButton.data('placeholder-text'), + placeholderUrl = $rollbackButton.data('placeholder-url'); + $rollbackButton.html(placeholderText.replace('{VERSION}', $this.val())); + $rollbackButton.attr('href', placeholderUrl.replace('VERSION', $this.val())); + }).trigger('change'); + $('.elementor-rollback-button').on('click', function (event) { + event.preventDefault(); + var $this = $(this); + elementorCommon.dialogsManager.createWidget('confirm', { + headerMessage: __('Rollback to Previous Version', 'elementor'), + message: __('Are you sure you want to reinstall previous version?', 'elementor'), + strings: { + confirm: __('Continue', 'elementor'), + cancel: __('Cancel', 'elementor') + }, + onConfirm: function onConfirm() { + $this.addClass('loading'); + location.href = $this.attr('href'); + } + }).show(); + }); + self.elements.$reMigrateGlobalsButton.on('click', function (event) { + event.preventDefault(); + var $this = $(event.currentTarget); + elementorCommon.dialogsManager.createWidget('confirm', { + headerMessage: __('Migrate to v3.0', 'elementor'), + message: __('Please note that this process will revert all changes made to Global Colors and Fonts since upgrading to v3.x.', 'elementor'), + strings: { + confirm: __('Continue', 'elementor'), + cancel: __('Cancel', 'elementor') + }, + onConfirm: function onConfirm() { + $this.removeClass('success').addClass('loading'); + elementorCommon.ajax.addRequest('re_migrate_globals', { + success: function success() { + return $this.removeClass('loading').addClass('success'); + } + }); + } + }).show(); + }); + $('.elementor_css_print_method select').on('change', function () { + var $descriptions = $('.elementor-css-print-method-description'); + $descriptions.hide(); + $descriptions.filter('[data-value="' + $(this).val() + '"]').show(); + }).trigger('change'); + $('.elementor_google_font select').on('change', function () { + $('.elementor_font_display').toggle('1' === $(this).val()); + }).trigger('change'); + }, + onInit: function onInit() { + elementorModules.ViewModule.prototype.onInit.apply(this, arguments); + this.initTemplatesImport(); + this.initMaintenanceMode(); + this.goToSettingsTabFromHash(); + this.openLinksInNewTab(); + this.addUserAgentClasses(); + this.roleManager.init(); + if (elementorCommon.config.experimentalFeatures['landing-pages']) { + new _module.default(); + } + this.templateControls = new _templateControls.default(); + new _module2.default(); + }, + addUserAgentClasses: function addUserAgentClasses() { + var body = document.querySelector('body'); + Object.entries(_environment.default).forEach(function (_ref2) { + var _ref3 = (0, _slicedToArray2.default)(_ref2, 2), + key = _ref3[0], + value = _ref3[1]; + if (!value) { + return; + } + body.classList.add('e--ua-' + key); + }); + }, + /** + * Open Links in New Tab + * + * Adds a `target="_blank"` attribute to the Admin Dashboard menu items specified in the `elements` array, + * if the elements are found in the DOM. The items in the `elements` array should be jQuery instances. + * + * @since 3.6.0 + */ + openLinksInNewTab: function openLinksInNewTab() { + var elements = [this.elements.$menuGetHelpLink, this.elements.$menuGoProLink]; + elements.forEach(function ($element) { + // Only add the attribute if the element is found. + if ($element.length) { + $element.attr('target', '_blank'); + } + }); + }, + initTemplatesImport: function initTemplatesImport() { + var _elementorAdminConfig, _elementorAdminConfig2; + var canImport = elementorAdminConfig.user.is_administrator || ((_elementorAdminConfig = (_elementorAdminConfig2 = elementorAdminConfig.user.restrictions) === null || _elementorAdminConfig2 === void 0 ? void 0 : _elementorAdminConfig2.includes('json-upload')) !== null && _elementorAdminConfig !== void 0 ? _elementorAdminConfig : false); + if (!canImport || !elementorCommon.elements.$body.hasClass('post-type-elementor_library')) { + return; + } + var self = this, + $importForm = self.elements.$importForm, + $importButton = self.elements.$importButton, + $importArea = self.elements.$importArea, + $importNowButton = self.elements.$importNowButton, + $importFormFileInput = self.elements.$importFormFileInput; + self.elements.$formAnchor = $('.wp-header-end'); + $('#wpbody-content').find('.page-title-action').last().after($importButton); + self.elements.$formAnchor.after($importArea); + $importButton.on('click', function () { + $('#elementor-import-template-area').toggle(); + }); + var messages = { + jsonUploadWarning: { + shown: false + }, + enableUnfilteredFiles: { + shown: false + } + }; + var originalButtonValue = $importNowButton[0].value; + $importForm.on('submit', /*#__PURE__*/function () { + var _ref4 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(event) { + var hasImportedFiles, areUnfilteredFilesEnabled, enableUnfilteredFilesModal; + return _regenerator.default.wrap(function _callee$(_context) { + while (1) switch (_context.prev = _context.next) { + case 0: + $importNowButton[0].disabled = true; + $importNowButton[0].value = __('Importing...', 'elementor'); + if (messages.jsonUploadWarning.shown) { + _context.next = 16; + break; + } + event.preventDefault(); + _context.prev = 4; + _context.next = 7; + return (0, _jsonUploadWarningMessage.showJsonUploadWarningMessageIfNeeded)({ + IntroductionClass: window.elementorModules.admin.utils.Introduction, + introductionMap: window.elementorAdmin.config.user.introduction, + waitForSetViewed: true + }); + case 7: + messages.jsonUploadWarning.shown = true; + $importForm.trigger('submit'); + _context.next = 15; + break; + case 11: + _context.prev = 11; + _context.t0 = _context["catch"](4); + $importNowButton[0].disabled = false; + $importNowButton[0].value = originalButtonValue; + case 15: + return _context.abrupt("return"); + case 16: + hasImportedFiles = $importFormFileInput[0].files.length; + areUnfilteredFilesEnabled = elementorCommon.config.filesUpload.unfilteredFiles; + if (!(hasImportedFiles && !areUnfilteredFilesEnabled && !messages.enableUnfilteredFiles.shown)) { + _context.next = 23; + break; + } + event.preventDefault(); + enableUnfilteredFilesModal = _filesUploadHandler.default.getUnfilteredFilesNotEnabledImportTemplateDialog(function () { + messages.enableUnfilteredFiles.shown = true; + $importForm.trigger('submit'); + }); + enableUnfilteredFilesModal.show(); + return _context.abrupt("return"); + case 23: + messages.jsonUploadWarning.shown = false; + messages.enableUnfilteredFiles.shown = false; + case 25: + case "end": + return _context.stop(); + } + }, _callee, null, [[4, 11]]); + })); + return function (_x) { + return _ref4.apply(this, arguments); + }; + }()); + }, + initMaintenanceMode: function initMaintenanceMode() { + var MaintenanceMode = __webpack_require__(/*! elementor-admin/maintenance-mode */ "../assets/dev/js/admin/maintenance-mode.js"); + this.maintenanceMode = new MaintenanceMode(); + }, + isElementorMode: function isElementorMode() { + return !!this.elements.$switchModeInput.val(); + }, + animateLoader: function animateLoader() { + this.elements.$goToEditLink.addClass('elementor-animate'); + }, + goToSettingsTabFromHash: function goToSettingsTabFromHash() { + var hash = location.hash.slice(1); + if (hash) { + this.goToSettingsTab(hash); + } + }, + goToSettingsTab: function goToSettingsTab(tabName) { + var $pages = this.elements.$settingsFormPages; + if (!$pages.length) { + return; + } + var $activePage = $pages.filter('#' + tabName); + this.elements.$activeSettingsPage.removeClass('elementor-active'); + this.elements.$activeSettingsTab.removeClass('nav-tab-active'); + var $activeTab = this.elements.$settingsTabs.filter('#elementor-settings-' + tabName); + $activePage.addClass('elementor-active'); + $activeTab.addClass('nav-tab-active'); + this.elements.$settingsForm.attr('action', 'options.php#' + tabName); + this.elements.$activeSettingsPage = $activePage; + this.elements.$activeSettingsTab = $activeTab; + }, + translate: function translate(stringKey, templateArgs) { + return elementorCommon.translate(stringKey, null, templateArgs, this.config.i18n); + }, + roleManager: { + selectors: { + body: 'elementor-role-manager', + row: '.elementor-role-row', + label: '.elementor-role-label', + excludedIndicator: '.elementor-role-excluded-indicator', + excludedField: 'input[name="elementor_exclude_user_roles[]"]', + controlsContainer: '.elementor-role-controls', + toggleHandle: '.elementor-role-toggle', + arrowUp: 'dashicons-arrow-up', + arrowDown: 'dashicons-arrow-down' + }, + toggle: function toggle($trigger) { + var self = this, + $row = $trigger.closest(self.selectors.row), + $toggleHandleIcon = $row.find(self.selectors.toggleHandle).find('.dashicons'), + $controls = $row.find(self.selectors.controlsContainer); + $controls.toggleClass('hidden'); + if ($controls.hasClass('hidden')) { + $toggleHandleIcon.removeClass(self.selectors.arrowUp).addClass(self.selectors.arrowDown); + } else { + $toggleHandleIcon.removeClass(self.selectors.arrowDown).addClass(self.selectors.arrowUp); + } + self.updateLabel($row); + }, + updateLabel: function updateLabel($row) { + var self = this, + $indicator = $row.find(self.selectors.excludedIndicator), + excluded = $row.find(self.selectors.excludedField).is(':checked'); + if (excluded) { + $indicator.html($indicator.data('excluded-label')); + } else { + $indicator.html(''); + } + self.setAdvancedState($row, excluded); + }, + setAdvancedState: function setAdvancedState($row, state) { + var self = this, + $controls = $row.find('input[type="checkbox"]').not(self.selectors.excludedField); + $controls.each(function (index, input) { + $(input).prop('disabled', state); + }); + }, + bind: function bind() { + var self = this; + $(document).on('click', self.selectors.label + ',' + self.selectors.toggleHandle, function (event) { + event.stopPropagation(); + event.preventDefault(); + self.toggle($(this)); + }).on('change', self.selectors.excludedField, function () { + self.updateLabel($(this).closest(self.selectors.row)); + }); + }, + init: function init() { + var self = this; + if (!$('body[class*="' + self.selectors.body + '"]').length) { + return; + } + self.bind(); + $(self.selectors.row).each(function (index, row) { + self.updateLabel($(row)); + }); + } + } + }); + $(function () { + window.elementorAdmin = new ElementorAdmin(); + _events.default.dispatch(elementorCommon.elements.$window, 'elementor/admin/init'); + }); +})(jQuery); +})(); + +/******/ })() +; +//# sourceMappingURL=admin.js.map \ No newline at end of file diff --git a/wp-content/plugins/elementor/assets/js/admin.min.js b/wp-content/plugins/elementor/assets/js/admin.min.js new file mode 100644 index 0000000..cf6e47f --- /dev/null +++ b/wp-content/plugins/elementor/assets/js/admin.min.js @@ -0,0 +1,3 @@ +/*! elementor - v3.20.0 - 26-03-2024 */ +/*! For license information please see admin.min.js.LICENSE.txt */ +(()=>{var e={15511:e=>{"use strict";e.exports=elementorModules.ViewModule.extend({getDefaultSettings:function getDefaultSettings(){return{selectors:{modeSelect:".elementor_maintenance_mode_mode select",maintenanceModeTable:"#tab-maintenance_mode table",maintenanceModeDescriptions:".elementor-maintenance-mode-description",excludeModeSelect:".elementor_maintenance_mode_exclude_mode select",excludeRolesArea:".elementor_maintenance_mode_exclude_roles",templateSelect:".elementor_maintenance_mode_template_id select",editTemplateButton:".elementor-edit-template",maintenanceModeError:".elementor-maintenance-mode-error"},classes:{isEnabled:"elementor-maintenance-mode-is-enabled"}}},getDefaultElements:function getDefaultElements(){var e={},t=this.getSettings("selectors");return e.$modeSelect=jQuery(t.modeSelect),e.$maintenanceModeTable=e.$modeSelect.parents(t.maintenanceModeTable),e.$excludeModeSelect=e.$maintenanceModeTable.find(t.excludeModeSelect),e.$excludeRolesArea=e.$maintenanceModeTable.find(t.excludeRolesArea),e.$templateSelect=e.$maintenanceModeTable.find(t.templateSelect),e.$editTemplateButton=e.$maintenanceModeTable.find(t.editTemplateButton),e.$maintenanceModeDescriptions=e.$maintenanceModeTable.find(t.maintenanceModeDescriptions),e.$maintenanceModeError=e.$maintenanceModeTable.find(t.maintenanceModeError),e},handleModeSelectChange:function handleModeSelectChange(){var e=this.getSettings(),t=this.elements;t.$maintenanceModeTable.toggleClass(e.classes.isEnabled,!!t.$modeSelect.val()),t.$maintenanceModeDescriptions.hide(),t.$maintenanceModeDescriptions.filter('[data-value="'+t.$modeSelect.val()+'"]').show()},handleExcludeModeSelectChange:function handleExcludeModeSelectChange(){var e=this.elements;e.$excludeRolesArea.toggle("custom"===e.$excludeModeSelect.val())},handleTemplateSelectChange:function handleTemplateSelectChange(){var e=this.elements,t=e.$templateSelect.val();if(!t)return e.$editTemplateButton.hide(),void e.$maintenanceModeError.show();var n=elementorAdmin.config.home_url+"?p="+t+"&elementor";e.$editTemplateButton.prop("href",n).show(),e.$maintenanceModeError.hide()},bindEvents:function bindEvents(){var e=this.elements;e.$modeSelect.on("change",this.handleModeSelectChange.bind(this)),e.$excludeModeSelect.on("change",this.handleExcludeModeSelectChange.bind(this)),e.$templateSelect.on("change",this.handleTemplateSelectChange.bind(this))},onAdminInit:function onAdminInit(){this.handleModeSelectChange(),this.handleExcludeModeSelectChange(),this.handleTemplateSelectChange()},onInit:function onInit(){elementorModules.ViewModule.prototype.onInit.apply(this,arguments),elementorCommon.elements.$window.on("elementor/admin/init",this.onAdminInit)}})},75389:(e,t,n)=>{"use strict";var r=n(73203);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var o=r(n(78983)),a=r(n(42081)),i=r(n(51121)),s=r(n(58724)),l=r(n(71173)),u=r(n(74910));function _createSuper(e){var t=function _isNativeReflectConstruct(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function _createSuperInternal(){var n,r=(0,u.default)(e);if(t){var o=(0,u.default)(this).constructor;n=Reflect.construct(r,arguments,o)}else n=r.apply(this,arguments);return(0,l.default)(this,n)}}var c=function(e){(0,s.default)(MenuHandler,e);var t=_createSuper(MenuHandler);function MenuHandler(){return(0,o.default)(this,MenuHandler),t.apply(this,arguments)}return(0,a.default)(MenuHandler,[{key:"getDefaultSettings",value:function getDefaultSettings(){return{selectors:{currentSubmenuItems:"#adminmenu .current"}}}},{key:"getDefaultElements",value:function getDefaultElements(){var e=this.getSettings();return{$currentSubmenuItems:jQuery(e.selectors.currentSubmenuItems),$adminPageMenuLink:jQuery('a[href="'.concat(e.path,'"]'))}}},{key:"highlightSubMenuItem",value:function highlightSubMenuItem(){var e=(arguments.length>0&&void 0!==arguments[0]?arguments[0]:null)||this.elements.$adminPageMenuLink;this.elements.$currentSubmenuItems.length&&this.elements.$currentSubmenuItems.removeClass("current"),e.addClass("current"),e.parent().addClass("current")}},{key:"highlightTopLevelMenuItem",value:function highlightTopLevelMenuItem(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,n="wp-has-current-submenu wp-menu-open current";e.parent().addClass(n).removeClass("wp-not-current-submenu"),t&&t.removeClass(n)}},{key:"onInit",value:function onInit(){(0,i.default)((0,u.default)(MenuHandler.prototype),"onInit",this).call(this);var e=this.getSettings();window.location.href.includes(e.path)&&this.highlightSubMenuItem()}}]),MenuHandler}(elementorModules.ViewModule);t.default=c},48729:(e,t,n)=>{"use strict";var r=n(73203);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var o=r(n(40131)),a=r(n(78983)),i=r(n(42081)),s=function(){function TemplateControls(){(0,a.default)(this,TemplateControls)}return(0,i.default)(TemplateControls,[{key:"setDynamicControlsVisibility",value:function setDynamicControlsVisibility(e,t){if(void 0!==t)for(var n=0,r=Object.entries(t);n{"use strict";var r=n(38003).__,o=n(73203);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var a=o(n(78983)),i=o(n(42081)),s=function(){function FilesUploadHandler(){(0,a.default)(this,FilesUploadHandler)}return(0,i.default)(FilesUploadHandler,null,[{key:"isUploadEnabled",value:function isUploadEnabled(e){return!["svg","application/json"].includes(e)||elementorCommon.config.filesUpload.unfilteredFiles}},{key:"setUploadTypeCaller",value:function setUploadTypeCaller(e){e.uploader.uploader.param("uploadTypeCaller","elementor-wp-media-upload")}},{key:"getUnfilteredFilesNonAdminDialog",value:function getUnfilteredFilesNonAdminDialog(){return elementorCommon.dialogsManager.createWidget("alert",{id:"e-unfiltered-files-disabled-dialog",headerMessage:r("Sorry, you can't upload that file yet","elementor"),message:r("This is because JSON files may pose a security risk.","elementor")+"

    "+r("To upload them anyway, ask the site administrator to enable unfiltered file uploads.","elementor"),strings:{confirm:r("Got it","elementor")}})}},{key:"getUnfilteredFilesNotEnabledDialog",value:function getUnfilteredFilesNotEnabledDialog(e){var t=window.elementorAdmin||window.elementor;if(!t.config.user.is_administrator)return this.getUnfilteredFilesNonAdminDialog();return t.helpers.getSimpleDialog("e-enable-unfiltered-files-dialog",r("Enable Unfiltered File Uploads","elementor"),r("Before you enable unfiltered files upload, note that such files include a security risk. Elementor does run a process to remove possible malicious code, but there is still risk involved when using such files.","elementor"),r("Enable","elementor"),(function onConfirm(){elementorCommon.ajax.addRequest("enable_unfiltered_files_upload",{},!0),elementorCommon.config.filesUpload.unfilteredFiles=!0,e()}))}},{key:"getUnfilteredFilesNotEnabledImportTemplateDialog",value:function getUnfilteredFilesNotEnabledImportTemplateDialog(e){return(window.elementorAdmin||window.elementor).config.user.is_administrator?elementorCommon.dialogsManager.createWidget("confirm",{id:"e-enable-unfiltered-files-dialog-import-template",headerMessage:r("Enable Unfiltered File Uploads","elementor"),message:r("Before you enable unfiltered files upload, note that such files include a security risk. Elementor does run a process to remove possible malicious code, but there is still risk involved when using such files.","elementor")+"

    "+r("If you do not enable uploading unfiltered files, any SVG or JSON (including lottie) files used in the uploaded template will not be imported.","elementor"),position:{my:"center center",at:"center center"},strings:{confirm:r("Enable and Import","elementor"),cancel:r("Import Without Enabling","elementor")},onConfirm:function onConfirm(){elementorCommon.ajax.addRequest("enable_unfiltered_files_upload",{success:function success(){elementorCommon.config.filesUpload.unfilteredFiles=!0,e()}},!0)},onCancel:function onCancel(){return e()}}):this.getUnfilteredFilesNonAdminDialog()}}]),FilesUploadHandler}();t.default=s},36404:(e,t,n)=>{"use strict";var r=n(73203);Object.defineProperty(t,"__esModule",{value:!0}),t.default=t.Events=void 0;var o=r(n(78983)),a=r(n(42081)),i=function(){function Events(){(0,o.default)(this,Events)}return(0,a.default)(Events,null,[{key:"dispatch",value:function dispatch(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null;e=e instanceof jQuery?e[0]:e,r&&e.dispatchEvent(new CustomEvent(r,{detail:n})),e.dispatchEvent(new CustomEvent(t,{detail:n}))}}]),Events}();t.Events=i;var s=i;t.default=s},67010:(e,t,n)=>{"use strict";var r=n(38003).__,o=n(73203);Object.defineProperty(t,"__esModule",{value:!0}),t.showJsonUploadWarningMessageIfNeeded=function showJsonUploadWarningMessageIfNeeded(e){var t=e.introductionMap,n=e.IntroductionClass,o=e.waitForSetViewed,u=void 0!==o&&o;l||(l=function createGenericWarningModal(e){var t,n,o="e-generic-warning-modal-for-json-upload",a=new e({introductionKey:s,dialogType:"confirm",dialogOptions:{id:o,headerMessage:r("Warning: JSON files may be unsafe","elementor"),message:r("Uploading JSON files from unknown sources can be harmful and put your site at risk. For maximum safety, only install JSON files from trusted sources.","elementor"),effects:{show:"fadeIn",hide:"fadeOut"},hide:{onBackgroundClick:!0,onButtonClick:!1},strings:{confirm:r("Continue","elementor"),cancel:r("Cancel","elementor")}}}),i=function createCheckboxAndLabel(e){var t="".concat(e,"-dont-show-again"),n=document.createElement("input");n.type="checkbox",n.name=t,n.id=t;var o=document.createElement("label");return o.htmlFor=t,o.textContent=r("Do not show this message again","elementor"),o.style.display="block",o.style.marginTop="20px",o.style.marginBottom="20px",o.prepend(n),{checkbox:n,label:o}}(o),l=i.checkbox,u=i.label;return a.getDialog().addElement("checkbox-dont-show-again",l),null===(t=a.getDialog().getElements("message"))||void 0===t||null===(n=t.append)||void 0===n||n.call(t,u),a}(n));if(l.setIntroductionMap(t),l.introductionViewed)return Promise.resolve();var c=l.getDialog();return new Promise((function(e,t){c.onHide=function(){t()},c.onConfirm=(0,i.default)(a.default.mark((function _callee(){return a.default.wrap((function _callee$(t){for(;;)switch(t.prev=t.next){case 0:if(!c.getElements("checkbox-dont-show-again").prop("checked")){t.next=7;break}if(!u){t.next=6;break}return t.next=4,l.setViewed();case 4:t.next=7;break;case 6:l.setViewed();case 7:e(),c.hide();case 9:case"end":return t.stop()}}),_callee)}))),c.onCancel=function(){c.hide()},l.show()}))};var a=o(n(50824)),i=o(n(10029)),s="upload_json_warning_generic_message",l=null},73308:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var n=function matchUserAgent(e){return r.indexOf(e)>=0},r=navigator.userAgent,o=!!window.opr&&!!opr.addons||!!window.opera||n(" OPR/"),a=n("Firefox"),i=/^((?!chrome|android).)*safari/i.test(r)||/constructor/i.test(window.HTMLElement)||"[object SafariRemoteNotification]"===(!window.safari||"undefined"!=typeof safari&&safari.pushNotification).toString(),s=/Trident|MSIE/.test(r)&&!!document.documentMode,l=!s&&!!window.StyleMedia||n("Edg"),u=!!window.chrome&&n("Chrome")&&!(l||o),c=n("Chrome")&&!!window.CSS,d=n("AppleWebKit")&&!c,f={isTouchDevice:"ontouchstart"in window||navigator.maxTouchPoints>0||navigator.msMaxTouchPoints>0,appleWebkit:d,blink:c,chrome:u,edge:l,firefox:a,ie:s,mac:n("Macintosh"),opera:o,safari:i,webkit:n("AppleWebKit")};t.default=f},13863:(e,t,n)=>{"use strict";var r=n(38003).__,o=n(73203);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var a=o(n(40131)),i=o(n(78983)),s=o(n(42081)),l=o(n(93231)),u="active",c="inactive",d="default",f=function(){function ExperimentsMessages(e){var t=e.selects,n=e.submit;(0,i.default)(this,ExperimentsMessages),(0,l.default)(this,"elements",{}),this.elements={selects:t,submit:n}}return(0,s.default)(ExperimentsMessages,[{key:"bindEvents",value:function bindEvents(){var e=this;this.elements.selects.forEach((function(t){t.addEventListener("change",(function(t){return e.onExperimentStateChange(t)}))}))}},{key:"onExperimentStateChange",value:function onExperimentStateChange(e){var t=e.currentTarget.dataset.experimentId;switch(this.getExperimentActualState(t)){case u:this.shouldShowDependenciesDialog(t)&&this.showDependenciesDialog(t);break;case c:this.shouldShowDeactivationDialog(t)?this.showDeactivationDialog(t):this.deactivateDependantExperiments(t)}}},{key:"getExperimentData",value:function getExperimentData(e){return elementorAdminConfig.experiments[e]}},{key:"getExperimentDependencies",value:function getExperimentDependencies(e){var t=this;return this.getExperimentData(e).dependencies.map((function(e){return t.getExperimentData(e)}))}},{key:"getExperimentSelect",value:function getExperimentSelect(e){return this.elements.selects.find((function(t){return t.matches('[data-experiment-id="'.concat(e,'"]'))}))}},{key:"setExperimentState",value:function setExperimentState(e,t){this.getExperimentSelect(e).value=t}},{key:"getExperimentActualState",value:function getExperimentActualState(e){var t,n=null===(t=this.getExperimentSelect(e))||void 0===t?void 0:t.value;return n?n!==d?n:this.isExperimentActiveByDefault(e)?u:c:this.getExperimentData(e).state}},{key:"isExperimentActive",value:function isExperimentActive(e){return this.getExperimentActualState(e)===u}},{key:"isExperimentActiveByDefault",value:function isExperimentActiveByDefault(e){return this.getExperimentData(e).default===u}},{key:"areAllDependenciesActive",value:function areAllDependenciesActive(e){var t=this;return e.every((function(e){return t.isExperimentActive(e.name)}))}},{key:"deactivateDependantExperiments",value:function deactivateDependantExperiments(e){var t=this;Object.entries(elementorAdminConfig.experiments).forEach((function(n){var r=(0,a.default)(n,2),o=r[0],i=r[1].dependencies.includes(e),s=t.getExperimentActualState(o)===u;i&&s&&t.setExperimentState(o,c)}))}},{key:"shouldShowDependenciesDialog",value:function shouldShowDependenciesDialog(e){var t=this.getExperimentDependencies(e);return!this.areAllDependenciesActive(t)}},{key:"shouldShowDeactivationDialog",value:function shouldShowDeactivationDialog(e){var t=this.getExperimentData(e),n=t.state===u||t.state===d&&t.default===u;return!!this.getMessage(e,"on_deactivate")&&n}},{key:"showDialog",value:function showDialog(e){return elementorCommon.dialogsManager.createWidget("confirm",{id:"e-experiments-messages-dialog",headerMessage:e.headerMessage,message:e.message,position:{my:"center center",at:"center center"},strings:{confirm:e.strings.confirm,cancel:e.strings.cancel},hide:{onOutsideClick:!1,onBackgroundClick:!1,onEscKeyPress:!1},onConfirm:e.onConfirm,onCancel:e.onCancel}).show()}},{key:"getSiteLanguageCode",value:function getSiteLanguageCode(){var e=document.querySelector("html").getAttribute("lang");return null!=e?e:"en"}},{key:"formatDependenciesList",value:function formatDependenciesList(e){var t=e.map((function(e){return e.title})),n=this.getSiteLanguageCode();return new Intl.ListFormat(n).format(t)}},{key:"showDependenciesDialog",value:function showDependenciesDialog(e){var t=this,n=this.getExperimentData(e).title,o=this.formatDependenciesList(this.getExperimentDependencies(e)),a=r("In order to use %1$s, first you need to activate %2$s.","elementor").replace("%1$s","".concat(n,"")).replace("%2$s",o);this.showDialog({message:a,headerMessage:r("First, activate another experiment.","elementor"),strings:{confirm:r("Activate","elementor"),cancel:r("Cancel","elementor")},onConfirm:function onConfirm(){t.getExperimentDependencies(e).forEach((function(e){t.setExperimentState(e.name,u)})),t.elements.submit.click()},onCancel:function onCancel(){t.setExperimentState(e,c)}})}},{key:"showDeactivationDialog",value:function showDeactivationDialog(e){var t=this;this.showDialog({message:this.getMessage(e,"on_deactivate"),headerMessage:r("Are you sure?","elementor"),strings:{confirm:r("Deactivate","elementor"),cancel:r("Cancel","elementor")},onConfirm:function onConfirm(){t.setExperimentState(e,c),t.deactivateDependantExperiments(e),t.elements.submit.click()},onCancel:function onCancel(){t.setExperimentState(e,u)}})}},{key:"getMessage",value:function getMessage(e,t){var n;return null===(n=this.getExperimentData(e))||void 0===n?void 0:n.messages[t]}}]),ExperimentsMessages}();t.default=f},72104:(e,t,n)=>{"use strict";var r=n(73203);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var o=r(n(78983)),a=r(n(42081)),i=r(n(51121)),s=r(n(58724)),l=r(n(71173)),u=r(n(74910)),c=r(n(13863));function _createSuper(e){var t=function _isNativeReflectConstruct(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function _createSuperInternal(){var n,r=(0,u.default)(e);if(t){var o=(0,u.default)(this).constructor;n=Reflect.construct(r,arguments,o)}else n=r.apply(this,arguments);return(0,l.default)(this,n)}}var d=function(e){(0,s.default)(ExperimentsModule,e);var t=_createSuper(ExperimentsModule);function ExperimentsModule(){return(0,o.default)(this,ExperimentsModule),t.apply(this,arguments)}return(0,a.default)(ExperimentsModule,[{key:"getDefaultSettings",value:function getDefaultSettings(){return{selectors:{experimentIndicators:".e-experiment__title__indicator",experimentForm:"#elementor-settings-form",experimentSelects:".e-experiment__select",experimentsButtons:".e-experiment__button"}}}},{key:"getDefaultElements",value:function getDefaultElements(){var e=this.getSettings().selectors;return{$experimentIndicators:jQuery(e.experimentIndicators),$experimentForm:jQuery(e.experimentForm),$experimentSelects:jQuery(e.experimentSelects),$experimentsButtons:jQuery(e.experimentsButtons)}}},{key:"bindEvents",value:function bindEvents(){var e=this;this.elements.$experimentsButtons.on("click",(function(t){return e.onExperimentsButtonsClick(t)}))}},{key:"onExperimentsButtonsClick",value:function onExperimentsButtonsClick(e){var t=jQuery(e.currentTarget);this.elements.$experimentSelects.val(t.val()),this.elements.$experimentForm.find("#submit").trigger("click")}},{key:"addTipsy",value:function addTipsy(e){e.tipsy({gravity:"s",offset:8,title:function title(){return this.getAttribute("data-tooltip")}})}},{key:"addIndicatorsTooltips",value:function addIndicatorsTooltips(){var e=this;this.elements.$experimentIndicators.each((function(t,n){return e.addTipsy(jQuery(n))}))}},{key:"onInit",value:function onInit(){var e=this;(0,i.default)((0,u.default)(ExperimentsModule.prototype),"onInit",this).call(this),this.experimentsDependency=new c.default({selects:this.elements.$experimentSelects.toArray(),submit:this.elements.$experimentForm.find("#submit").get(0)}),this.experimentsDependency.bindEvents(),this.elements.$experimentIndicators.length&&import("".concat(elementorCommon.config.urls.assets,"lib/tipsy/tipsy.min.js?ver=1.0.0")).then((function(){return e.addIndicatorsTooltips()}))}}]),ExperimentsModule}(elementorModules.ViewModule);t.default=d},70602:(e,t,n)=>{"use strict";var r=n(73203);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var o=r(n(78983)),a=r(n(42081)),i=r(n(51121)),s=r(n(58724)),l=r(n(71173)),u=r(n(74910));function _createSuper(e){var t=function _isNativeReflectConstruct(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function _createSuperInternal(){var n,r=(0,u.default)(e);if(t){var o=(0,u.default)(this).constructor;n=Reflect.construct(r,arguments,o)}else n=r.apply(this,arguments);return(0,l.default)(this,n)}}var c=function(e){(0,s.default)(LandingPagesHandler,e);var t=_createSuper(LandingPagesHandler);function LandingPagesHandler(){return(0,o.default)(this,LandingPagesHandler),t.apply(this,arguments)}return(0,a.default)(LandingPagesHandler,[{key:"getDefaultSettings",value:function getDefaultSettings(){var e="e-landing-page",t={landingPagesTablePage:'a[href="edit.php?post_type='+e+'"]',landingPagesAddNewPage:'a[href="edit.php?post_type=elementor_library&page='+e+'"]'};return{selectors:{addButton:".page-title-action:first",pagesMenuItemAndLink:"#menu-pages, #menu-pages > a",landingPagesMenuItem:"".concat(t.landingPagesTablePage,", ").concat(t.landingPagesAddNewPage),templatesMenuItem:".menu-icon-elementor_library"}}}},{key:"getDefaultElements",value:function getDefaultElements(){var e=this.getSettings("selectors"),t=(0,i.default)((0,u.default)(LandingPagesHandler.prototype),"getDefaultElements",this).call(this);return t.$landingPagesMenuItem=jQuery(e.landingPagesMenuItem),t.$templatesMenuItem=jQuery(e.templatesMenuItem),t.$pagesMenuItemAndLink=jQuery(e.pagesMenuItemAndLink),t}},{key:"onInit",value:function onInit(){(0,i.default)((0,u.default)(LandingPagesHandler.prototype),"onInit",this).call(this);var e=this.getSettings(),t=!!window.location.href.includes(e.paths.landingPagesTablePage),n=!!window.location.href.includes(e.paths.landingPagesTrashPage),r=!!window.location.href.includes(e.paths.landingPagesAddNewPage);(t||n||r||e.isLandingPageAdminEdit)&&(this.highlightTopLevelMenuItem(this.elements.$templatesMenuItem,this.elements.$pagesMenuItemAndLink),this.highlightSubMenuItem(this.elements.$landingPagesMenuItem),jQuery(e.selectors.addButton).attr("href",elementorAdminConfig.urls.addNewLandingPageUrl))}}]),LandingPagesHandler}(r(n(75389)).default);t.default=c},71466:(e,t,n)=>{"use strict";var r=n(73203);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var o=r(n(78983)),a=r(n(42081)),i=r(n(58724)),s=r(n(71173)),l=r(n(74910)),u=r(n(70602));function _createSuper(e){var t=function _isNativeReflectConstruct(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function _createSuperInternal(){var n,r=(0,l.default)(e);if(t){var o=(0,l.default)(this).constructor;n=Reflect.construct(r,arguments,o)}else n=r.apply(this,arguments);return(0,s.default)(this,n)}}var c=function(e){(0,i.default)(_default,e);var t=_createSuper(_default);function _default(){var e;return(0,o.default)(this,_default),e=t.call(this),elementorCommon.elements.$window.on("elementor/admin/init",(function(){e.runHandler()})),e}return(0,a.default)(_default,[{key:"runHandler",value:function runHandler(){var e,t,n="e-landing-page",r={landingPagesTablePage:"edit.php?post_type="+n,landingPagesAddNewPage:"edit.php?post_type=elementor_library&page="+n,landingPagesTrashPage:"edit.php?post_status=trash&post_type="+n},o={path:null!==(e=elementorAdmin.config.landingPages)&&void 0!==e&&e.landingPagesHasPages?r.landingPagesTablePage:r.landingPagesAddNewPage,isLandingPageAdminEdit:null===(t=elementorAdmin.config.landingPages)||void 0===t?void 0:t.isLandingPageAdminEdit,paths:r};new u.default(o)}}]),_default}(elementorModules.Module);t.default=c},38003:e=>{"use strict";e.exports=wp.i18n},98106:e=>{e.exports=function _arrayLikeToArray(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n{e.exports=function _arrayWithHoles(e){if(Array.isArray(e))return e},e.exports.__esModule=!0,e.exports.default=e.exports},77266:e=>{e.exports=function _assertThisInitialized(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e},e.exports.__esModule=!0,e.exports.default=e.exports},10029:e=>{function asyncGeneratorStep(e,t,n,r,o,a,i){try{var s=e[a](i),l=s.value}catch(e){return void n(e)}s.done?t(l):Promise.resolve(l).then(r,o)}e.exports=function _asyncToGenerator(e){return function(){var t=this,n=arguments;return new Promise((function(r,o){var a=e.apply(t,n);function _next(e){asyncGeneratorStep(a,r,o,_next,_throw,"next",e)}function _throw(e){asyncGeneratorStep(a,r,o,_next,_throw,"throw",e)}_next(void 0)}))}},e.exports.__esModule=!0,e.exports.default=e.exports},78983:e=>{e.exports=function _classCallCheck(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")},e.exports.__esModule=!0,e.exports.default=e.exports},42081:(e,t,n)=>{var r=n(74040);function _defineProperties(e,t){for(var n=0;n{var r=n(74040);e.exports=function _defineProperty(e,t,n){return(t=r(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e},e.exports.__esModule=!0,e.exports.default=e.exports},51121:(e,t,n)=>{var r=n(79443);function _get(){return"undefined"!=typeof Reflect&&Reflect.get?(e.exports=_get=Reflect.get.bind(),e.exports.__esModule=!0,e.exports.default=e.exports):(e.exports=_get=function _get(e,t,n){var o=r(e,t);if(o){var a=Object.getOwnPropertyDescriptor(o,t);return a.get?a.get.call(arguments.length<3?e:n):a.value}},e.exports.__esModule=!0,e.exports.default=e.exports),_get.apply(this,arguments)}e.exports=_get,e.exports.__esModule=!0,e.exports.default=e.exports},74910:e=>{function _getPrototypeOf(t){return e.exports=_getPrototypeOf=Object.setPrototypeOf?Object.getPrototypeOf.bind():function _getPrototypeOf(e){return e.__proto__||Object.getPrototypeOf(e)},e.exports.__esModule=!0,e.exports.default=e.exports,_getPrototypeOf(t)}e.exports=_getPrototypeOf,e.exports.__esModule=!0,e.exports.default=e.exports},58724:(e,t,n)=>{var r=n(96196);e.exports=function _inherits(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&r(e,t)},e.exports.__esModule=!0,e.exports.default=e.exports},73203:e=>{e.exports=function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}},e.exports.__esModule=!0,e.exports.default=e.exports},40608:e=>{e.exports=function _iterableToArrayLimit(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,o,a,i,s=[],l=!0,u=!1;try{if(a=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;l=!1}else for(;!(l=(r=a.call(n)).done)&&(s.push(r.value),s.length!==t);l=!0);}catch(e){u=!0,o=e}finally{try{if(!l&&null!=n.return&&(i=n.return(),Object(i)!==i))return}finally{if(u)throw o}}return s}},e.exports.__esModule=!0,e.exports.default=e.exports},56894:e=>{e.exports=function _nonIterableRest(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")},e.exports.__esModule=!0,e.exports.default=e.exports},71173:(e,t,n)=>{var r=n(7501).default,o=n(77266);e.exports=function _possibleConstructorReturn(e,t){if(t&&("object"===r(t)||"function"==typeof t))return t;if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined");return o(e)},e.exports.__esModule=!0,e.exports.default=e.exports},21337:(e,t,n)=>{var r=n(7501).default;function _regeneratorRuntime(){"use strict";e.exports=_regeneratorRuntime=function _regeneratorRuntime(){return n},e.exports.__esModule=!0,e.exports.default=e.exports;var t,n={},o=Object.prototype,a=o.hasOwnProperty,i=Object.defineProperty||function(e,t,n){e[t]=n.value},s="function"==typeof Symbol?Symbol:{},l=s.iterator||"@@iterator",u=s.asyncIterator||"@@asyncIterator",c=s.toStringTag||"@@toStringTag";function define(e,t,n){return Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{define({},"")}catch(t){define=function define(e,t,n){return e[t]=n}}function wrap(e,t,n,r){var o=t&&t.prototype instanceof Generator?t:Generator,a=Object.create(o.prototype),s=new Context(r||[]);return i(a,"_invoke",{value:makeInvokeMethod(e,n,s)}),a}function tryCatch(e,t,n){try{return{type:"normal",arg:e.call(t,n)}}catch(e){return{type:"throw",arg:e}}}n.wrap=wrap;var d="suspendedStart",f="suspendedYield",m="executing",p="completed",g={};function Generator(){}function GeneratorFunction(){}function GeneratorFunctionPrototype(){}var h={};define(h,l,(function(){return this}));var v=Object.getPrototypeOf,y=v&&v(v(values([])));y&&y!==o&&a.call(y,l)&&(h=y);var _=GeneratorFunctionPrototype.prototype=Generator.prototype=Object.create(h);function defineIteratorMethods(e){["next","throw","return"].forEach((function(t){define(e,t,(function(e){return this._invoke(t,e)}))}))}function AsyncIterator(e,t){function invoke(n,o,i,s){var l=tryCatch(e[n],e,o);if("throw"!==l.type){var u=l.arg,c=u.value;return c&&"object"==r(c)&&a.call(c,"__await")?t.resolve(c.__await).then((function(e){invoke("next",e,i,s)}),(function(e){invoke("throw",e,i,s)})):t.resolve(c).then((function(e){u.value=e,i(u)}),(function(e){return invoke("throw",e,i,s)}))}s(l.arg)}var n;i(this,"_invoke",{value:function value(e,r){function callInvokeWithMethodAndArg(){return new t((function(t,n){invoke(e,r,t,n)}))}return n=n?n.then(callInvokeWithMethodAndArg,callInvokeWithMethodAndArg):callInvokeWithMethodAndArg()}})}function makeInvokeMethod(e,n,r){var o=d;return function(a,i){if(o===m)throw new Error("Generator is already running");if(o===p){if("throw"===a)throw i;return{value:t,done:!0}}for(r.method=a,r.arg=i;;){var s=r.delegate;if(s){var l=maybeInvokeDelegate(s,r);if(l){if(l===g)continue;return l}}if("next"===r.method)r.sent=r._sent=r.arg;else if("throw"===r.method){if(o===d)throw o=p,r.arg;r.dispatchException(r.arg)}else"return"===r.method&&r.abrupt("return",r.arg);o=m;var u=tryCatch(e,n,r);if("normal"===u.type){if(o=r.done?p:f,u.arg===g)continue;return{value:u.arg,done:r.done}}"throw"===u.type&&(o=p,r.method="throw",r.arg=u.arg)}}}function maybeInvokeDelegate(e,n){var r=n.method,o=e.iterator[r];if(o===t)return n.delegate=null,"throw"===r&&e.iterator.return&&(n.method="return",n.arg=t,maybeInvokeDelegate(e,n),"throw"===n.method)||"return"!==r&&(n.method="throw",n.arg=new TypeError("The iterator does not provide a '"+r+"' method")),g;var a=tryCatch(o,e.iterator,n.arg);if("throw"===a.type)return n.method="throw",n.arg=a.arg,n.delegate=null,g;var i=a.arg;return i?i.done?(n[e.resultName]=i.value,n.next=e.nextLoc,"return"!==n.method&&(n.method="next",n.arg=t),n.delegate=null,g):i:(n.method="throw",n.arg=new TypeError("iterator result is not an object"),n.delegate=null,g)}function pushTryEntry(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function resetTryEntry(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function Context(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(pushTryEntry,this),this.reset(!0)}function values(e){if(e||""===e){var n=e[l];if(n)return n.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var o=-1,i=function next(){for(;++o=0;--r){var o=this.tryEntries[r],i=o.completion;if("root"===o.tryLoc)return handle("end");if(o.tryLoc<=this.prev){var s=a.call(o,"catchLoc"),l=a.call(o,"finallyLoc");if(s&&l){if(this.prev=0;--n){var r=this.tryEntries[n];if(r.tryLoc<=this.prev&&a.call(r,"finallyLoc")&&this.prev=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),resetTryEntry(n),g}},catch:function _catch(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var r=n.completion;if("throw"===r.type){var o=r.arg;resetTryEntry(n)}return o}}throw new Error("illegal catch attempt")},delegateYield:function delegateYield(e,n,r){return this.delegate={iterator:values(e),resultName:n,nextLoc:r},"next"===this.method&&(this.arg=t),g}},n}e.exports=_regeneratorRuntime,e.exports.__esModule=!0,e.exports.default=e.exports},96196:e=>{function _setPrototypeOf(t,n){return e.exports=_setPrototypeOf=Object.setPrototypeOf?Object.setPrototypeOf.bind():function _setPrototypeOf(e,t){return e.__proto__=t,e},e.exports.__esModule=!0,e.exports.default=e.exports,_setPrototypeOf(t,n)}e.exports=_setPrototypeOf,e.exports.__esModule=!0,e.exports.default=e.exports},40131:(e,t,n)=>{var r=n(17358),o=n(40608),a=n(35068),i=n(56894);e.exports=function _slicedToArray(e,t){return r(e)||o(e,t)||a(e,t)||i()},e.exports.__esModule=!0,e.exports.default=e.exports},79443:(e,t,n)=>{var r=n(74910);e.exports=function _superPropBase(e,t){for(;!Object.prototype.hasOwnProperty.call(e,t)&&null!==(e=r(e)););return e},e.exports.__esModule=!0,e.exports.default=e.exports},56027:(e,t,n)=>{var r=n(7501).default;e.exports=function toPrimitive(e,t){if("object"!=r(e)||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var o=n.call(e,t||"default");if("object"!=r(o))return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)},e.exports.__esModule=!0,e.exports.default=e.exports},74040:(e,t,n)=>{var r=n(7501).default,o=n(56027);e.exports=function toPropertyKey(e){var t=o(e,"string");return"symbol"==r(t)?t:String(t)},e.exports.__esModule=!0,e.exports.default=e.exports},7501:e=>{function _typeof(t){return e.exports=_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},e.exports.__esModule=!0,e.exports.default=e.exports,_typeof(t)}e.exports=_typeof,e.exports.__esModule=!0,e.exports.default=e.exports},35068:(e,t,n)=>{var r=n(98106);e.exports=function _unsupportedIterableToArray(e,t){if(e){if("string"==typeof e)return r(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?r(e,t):void 0}},e.exports.__esModule=!0,e.exports.default=e.exports},50824:(e,t,n)=>{var r=n(21337)();e.exports=r;try{regeneratorRuntime=r}catch(e){"object"==typeof globalThis?globalThis.regeneratorRuntime=r:Function("r","regeneratorRuntime = r")(r)}}},t={};function __webpack_require__(n){var r=t[n];if(void 0!==r)return r.exports;var o=t[n]={exports:{}};return e[n](o,o.exports,__webpack_require__),o.exports}(()=>{"use strict";var e,t,n=__webpack_require__(38003).__,r=__webpack_require__(73203),o=r(__webpack_require__(50824)),a=r(__webpack_require__(10029)),i=r(__webpack_require__(40131)),s=r(__webpack_require__(71466)),l=r(__webpack_require__(72104)),u=r(__webpack_require__(73308)),c=r(__webpack_require__(36404)),d=r(__webpack_require__(40548)),f=r(__webpack_require__(48729)),m=__webpack_require__(67010);e=jQuery,t=elementorModules.ViewModule.extend({maintenanceMode:null,config:elementorAdminConfig,getDefaultElements:function getDefaultElements(){var t={$switchMode:e("#elementor-switch-mode"),$goToEditLink:e("#elementor-go-to-edit-page-link"),$switchModeInput:e("#elementor-switch-mode-input"),$switchModeButton:e("#elementor-switch-mode-button"),$elementorLoader:e(".elementor-loader"),$builderEditor:e("#elementor-editor"),$importButton:e("#elementor-import-template-trigger"),$importNowButton:e("#e-import-template-action"),$importArea:e("#elementor-import-template-area"),$importForm:e("#elementor-import-template-form"),$importFormFileInput:e('#elementor-import-template-form input[type="file"]'),$settingsForm:e("#elementor-settings-form"),$settingsTabsWrapper:e("#elementor-settings-tabs-wrapper"),$menuGetHelpLink:e('a[href="admin.php?page=go_knowledge_base_site"]'),$menuGoProLink:e('a[href="admin.php?page=go_elementor_pro"]'),$reMigrateGlobalsButton:e(".elementor-re-migrate-globals-button")};return t.$settingsFormPages=t.$settingsForm.find(".elementor-settings-form-page"),t.$activeSettingsPage=t.$settingsFormPages.filter(".elementor-active"),t.$settingsTabs=t.$settingsTabsWrapper.children(),t.$activeSettingsTab=t.$settingsTabs.filter(".nav-tab-active"),t},toggleStatus:function toggleStatus(){var e=this.isElementorMode();elementorCommon.elements.$body.toggleClass("elementor-editor-active",e).toggleClass("elementor-editor-inactive",!e)},bindEvents:function bindEvents(){var t=this;t.elements.$switchModeButton.on("click",(function(r){if(r.preventDefault(),t.isElementorMode())elementorCommon.dialogsManager.createWidget("confirm",{message:n("Please note that you are switching to WordPress default editor. Your current layout, design and content might break.","elementor"),headerMessage:n("Back to WordPress Editor","elementor"),strings:{confirm:n("Continue","elementor"),cancel:n("Cancel","elementor")},defaultOption:"confirm",onConfirm:function onConfirm(){t.elements.$switchModeInput.val(""),t.toggleStatus()}}).show();else{t.elements.$switchModeInput.val(!0);var o=e("#title");o.val()||o.val("Elementor #"+e("#post_ID").val()),wp.autosave&&wp.autosave.server.triggerSave(),t.animateLoader(),e(document).on("heartbeat-tick.autosave",(function(){elementorCommon.elements.$window.off("beforeunload.edit-post"),location.href=t.elements.$goToEditLink.attr("href")})),t.toggleStatus()}})),t.elements.$goToEditLink.on("click",(function(){t.animateLoader()})),e(".e-notice--dismissible").on("click",".e-notice__dismiss, .e-notice-dismiss",(function(t){t.preventDefault();var n=e(this).closest(".e-notice--dismissible");e.post(ajaxurl,{action:"elementor_set_admin_notice_viewed",notice_id:n.data("notice_id")}),n.fadeTo(100,0,(function(){n.slideUp(100,(function(){n.remove()}))}))})),e("#elementor-clear-cache-button").on("click",(function(t){t.preventDefault();var n=e(this);n.removeClass("success").addClass("loading"),e.post(ajaxurl,{action:"elementor_clear_cache",_nonce:n.data("nonce")}).done((function(){n.removeClass("loading").addClass("success")}))})),e("#elementor-library-sync-button").on("click",(function(t){t.preventDefault();var n=e(this);n.removeClass("success").addClass("loading"),e.post(ajaxurl,{action:"elementor_reset_library",_nonce:n.data("nonce")}).done((function(){n.removeClass("loading").addClass("success")}))})),e("#elementor-recreate-kit-button").on("click",(function(t){t.preventDefault();var n=e(this);n.removeClass("success error").addClass("loading").next(".e-recreate-kit-error-message").remove(),e.post(ajaxurl,{action:"elementor_recreate_kit",_nonce:n.data("nonce")}).done((function(){n.removeClass("loading").addClass("success")})).fail((function(e){var t,r=e.responseJSON;n.removeClass("loading").addClass("error"),null!==(t=r.data)&&void 0!==t&&t.message&&n.after('
    '.concat(r.data.message,"
    "))}))})),e("#elementor-replace-url-button").on("click",(function(t){t.preventDefault();var n=e(this),r=n.parents("tr"),o=r.find('[name="from"]'),a=r.find('[name="to"]');n.removeClass("success").addClass("loading"),e.post(ajaxurl,{action:"elementor_replace_url",from:o.val(),to:a.val(),_nonce:n.data("nonce")}).done((function(e){n.removeClass("loading"),e.success&&n.addClass("success"),elementorCommon.dialogsManager.createWidget("alert",{message:e.data}).show()}))})),e("#elementor_upgrade_fa_button").on("click",(function(t){t.preventDefault();var r=e(this);r.addClass("loading"),elementorCommon.dialogsManager.createWidget("confirm",{id:"confirm_fa_migration_admin_modal",message:n("I understand that by upgrading to Font Awesome 5,","elementor")+"
    "+n("I acknowledge that some changes may affect my website and that this action cannot be undone.","elementor"),headerMessage:n("Font Awesome 5 Migration","elementor"),strings:{confirm:n("Continue","elementor"),cancel:n("Cancel","elementor")},defaultOption:"confirm",onConfirm:function onConfirm(){r.removeClass("error").addClass("loading");var t=r.data(),n=t._nonce,o=t.action,a=t.redirectUrl;e.post(ajaxurl,{action:o,_nonce:n}).done((function(t){r.removeClass("loading").addClass("success");var n=document.createElement("p");n.appendChild(document.createTextNode(t.data.message)),e("#elementor_upgrade_fa_button").parent().append(n),a?location.href=decodeURIComponent(a):history.go(-1)})).fail((function(){r.removeClass("loading").addClass("error")}))},onCancel:function onCancel(){r.removeClass("loading").addClass("error")}}).show()})),t.elements.$settingsTabs.on({click:function click(e){e.preventDefault(),e.currentTarget.focus()},focus:function focus(){var e=location.href.replace(/#.*/,"");history.pushState({},"",e+this.hash),t.goToSettingsTabFromHash()}}),e("select.elementor-rollback-select").on("change",(function(){var t=e(this),n=t.next(".elementor-rollback-button"),r=n.data("placeholder-text"),o=n.data("placeholder-url");n.html(r.replace("{VERSION}",t.val())),n.attr("href",o.replace("VERSION",t.val()))})).trigger("change"),e(".elementor-rollback-button").on("click",(function(t){t.preventDefault();var r=e(this);elementorCommon.dialogsManager.createWidget("confirm",{headerMessage:n("Rollback to Previous Version","elementor"),message:n("Are you sure you want to reinstall previous version?","elementor"),strings:{confirm:n("Continue","elementor"),cancel:n("Cancel","elementor")},onConfirm:function onConfirm(){r.addClass("loading"),location.href=r.attr("href")}}).show()})),t.elements.$reMigrateGlobalsButton.on("click",(function(t){t.preventDefault();var r=e(t.currentTarget);elementorCommon.dialogsManager.createWidget("confirm",{headerMessage:n("Migrate to v3.0","elementor"),message:n("Please note that this process will revert all changes made to Global Colors and Fonts since upgrading to v3.x.","elementor"),strings:{confirm:n("Continue","elementor"),cancel:n("Cancel","elementor")},onConfirm:function onConfirm(){r.removeClass("success").addClass("loading"),elementorCommon.ajax.addRequest("re_migrate_globals",{success:function success(){return r.removeClass("loading").addClass("success")}})}}).show()})),e(".elementor_css_print_method select").on("change",(function(){var t=e(".elementor-css-print-method-description");t.hide(),t.filter('[data-value="'+e(this).val()+'"]').show()})).trigger("change"),e(".elementor_google_font select").on("change",(function(){e(".elementor_font_display").toggle("1"===e(this).val())})).trigger("change")},onInit:function onInit(){elementorModules.ViewModule.prototype.onInit.apply(this,arguments),this.initTemplatesImport(),this.initMaintenanceMode(),this.goToSettingsTabFromHash(),this.openLinksInNewTab(),this.addUserAgentClasses(),this.roleManager.init(),elementorCommon.config.experimentalFeatures["landing-pages"]&&new s.default,this.templateControls=new f.default,new l.default},addUserAgentClasses:function addUserAgentClasses(){var e=document.querySelector("body");Object.entries(u.default).forEach((function(t){var n=(0,i.default)(t,2),r=n[0];n[1]&&e.classList.add("e--ua-"+r)}))},openLinksInNewTab:function openLinksInNewTab(){[this.elements.$menuGetHelpLink,this.elements.$menuGoProLink].forEach((function(e){e.length&&e.attr("target","_blank")}))},initTemplatesImport:function initTemplatesImport(){var t,r;if((elementorAdminConfig.user.is_administrator||null!==(t=null===(r=elementorAdminConfig.user.restrictions)||void 0===r?void 0:r.includes("json-upload"))&&void 0!==t&&t)&&elementorCommon.elements.$body.hasClass("post-type-elementor_library")){var i=this,s=i.elements.$importForm,l=i.elements.$importButton,u=i.elements.$importArea,c=i.elements.$importNowButton,f=i.elements.$importFormFileInput;i.elements.$formAnchor=e(".wp-header-end"),e("#wpbody-content").find(".page-title-action").last().after(l),i.elements.$formAnchor.after(u),l.on("click",(function(){e("#elementor-import-template-area").toggle()}));var p={jsonUploadWarning:{shown:!1},enableUnfilteredFiles:{shown:!1}},g=c[0].value;s.on("submit",function(){var e=(0,a.default)(o.default.mark((function _callee(e){var t,r;return o.default.wrap((function _callee$(o){for(;;)switch(o.prev=o.next){case 0:if(c[0].disabled=!0,c[0].value=n("Importing...","elementor"),p.jsonUploadWarning.shown){o.next=16;break}return e.preventDefault(),o.prev=4,o.next=7,(0,m.showJsonUploadWarningMessageIfNeeded)({IntroductionClass:window.elementorModules.admin.utils.Introduction,introductionMap:window.elementorAdmin.config.user.introduction,waitForSetViewed:!0});case 7:p.jsonUploadWarning.shown=!0,s.trigger("submit"),o.next=15;break;case 11:o.prev=11,o.t0=o.catch(4),c[0].disabled=!1,c[0].value=g;case 15:return o.abrupt("return");case 16:if(t=f[0].files.length,r=elementorCommon.config.filesUpload.unfilteredFiles,!t||r||p.enableUnfilteredFiles.shown){o.next=23;break}return e.preventDefault(),d.default.getUnfilteredFilesNotEnabledImportTemplateDialog((function(){p.enableUnfilteredFiles.shown=!0,s.trigger("submit")})).show(),o.abrupt("return");case 23:p.jsonUploadWarning.shown=!1,p.enableUnfilteredFiles.shown=!1;case 25:case"end":return o.stop()}}),_callee,null,[[4,11]])})));return function(t){return e.apply(this,arguments)}}())}},initMaintenanceMode:function initMaintenanceMode(){var e=__webpack_require__(15511);this.maintenanceMode=new e},isElementorMode:function isElementorMode(){return!!this.elements.$switchModeInput.val()},animateLoader:function animateLoader(){this.elements.$goToEditLink.addClass("elementor-animate")},goToSettingsTabFromHash:function goToSettingsTabFromHash(){var e=location.hash.slice(1);e&&this.goToSettingsTab(e)},goToSettingsTab:function goToSettingsTab(e){var t=this.elements.$settingsFormPages;if(t.length){var n=t.filter("#"+e);this.elements.$activeSettingsPage.removeClass("elementor-active"),this.elements.$activeSettingsTab.removeClass("nav-tab-active");var r=this.elements.$settingsTabs.filter("#elementor-settings-"+e);n.addClass("elementor-active"),r.addClass("nav-tab-active"),this.elements.$settingsForm.attr("action","options.php#"+e),this.elements.$activeSettingsPage=n,this.elements.$activeSettingsTab=r}},translate:function translate(e,t){return elementorCommon.translate(e,null,t,this.config.i18n)},roleManager:{selectors:{body:"elementor-role-manager",row:".elementor-role-row",label:".elementor-role-label",excludedIndicator:".elementor-role-excluded-indicator",excludedField:'input[name="elementor_exclude_user_roles[]"]',controlsContainer:".elementor-role-controls",toggleHandle:".elementor-role-toggle",arrowUp:"dashicons-arrow-up",arrowDown:"dashicons-arrow-down"},toggle:function toggle(e){var t=this,n=e.closest(t.selectors.row),r=n.find(t.selectors.toggleHandle).find(".dashicons"),o=n.find(t.selectors.controlsContainer);o.toggleClass("hidden"),o.hasClass("hidden")?r.removeClass(t.selectors.arrowUp).addClass(t.selectors.arrowDown):r.removeClass(t.selectors.arrowDown).addClass(t.selectors.arrowUp),t.updateLabel(n)},updateLabel:function updateLabel(e){var t=this,n=e.find(t.selectors.excludedIndicator),r=e.find(t.selectors.excludedField).is(":checked");r?n.html(n.data("excluded-label")):n.html(""),t.setAdvancedState(e,r)},setAdvancedState:function setAdvancedState(t,n){t.find('input[type="checkbox"]').not(this.selectors.excludedField).each((function(t,r){e(r).prop("disabled",n)}))},bind:function bind(){var t=this;e(document).on("click",t.selectors.label+","+t.selectors.toggleHandle,(function(n){n.stopPropagation(),n.preventDefault(),t.toggle(e(this))})).on("change",t.selectors.excludedField,(function(){t.updateLabel(e(this).closest(t.selectors.row))}))},init:function init(){var t=this;e('body[class*="'+t.selectors.body+'"]').length&&(t.bind(),e(t.selectors.row).each((function(n,r){t.updateLabel(e(r))})))}}}),e((function(){window.elementorAdmin=new t,c.default.dispatch(elementorCommon.elements.$window,"elementor/admin/init")}))})()})(); \ No newline at end of file diff --git a/wp-content/plugins/elementor/assets/js/admin.min.js.LICENSE.txt b/wp-content/plugins/elementor/assets/js/admin.min.js.LICENSE.txt new file mode 100644 index 0000000..ae386fb --- /dev/null +++ b/wp-content/plugins/elementor/assets/js/admin.min.js.LICENSE.txt @@ -0,0 +1 @@ +/*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ diff --git a/wp-content/plugins/elementor/assets/js/ai-admin.js b/wp-content/plugins/elementor/assets/js/ai-admin.js new file mode 100644 index 0000000..5612dd2 --- /dev/null +++ b/wp-content/plugins/elementor/assets/js/ai-admin.js @@ -0,0 +1,41698 @@ +/*! elementor - v3.20.0 - 26-03-2024 */ +/******/ (() => { // webpackBootstrap +/******/ var __webpack_modules__ = ({ + +/***/ "../modules/ai/assets/js/editor/actions-data.js": +/*!******************************************************!*\ + !*** ../modules/ai/assets/js/editor/actions-data.js ***! + \******************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.vocalTones = exports.translateLanguages = exports.textareaAutocomplete = exports.textAutocomplete = exports.codeHtmlAutocomplete = exports.codeCssAutocomplete = void 0; +var _i18n = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n"); +var textAutocomplete = [(0, _i18n.__)('Craft a catchy slogan for', 'elementor'), (0, _i18n.__)('Write a strong section header for', 'elementor'), (0, _i18n.__)('Create a blog title for', 'elementor'), (0, _i18n.__)('Suggest a 4 word headline for', 'elementor'), (0, _i18n.__)('Write an attention grabbing title for', 'elementor')]; +exports.textAutocomplete = textAutocomplete; +var textareaAutocomplete = [(0, _i18n.__)('Write a product description for', 'elementor'), (0, _i18n.__)('Create a blog post for', 'elementor'), (0, _i18n.__)('Craft an about us section for', 'elementor'), (0, _i18n.__)('Offer a few sentences to invite visitors to', 'elementor'), (0, _i18n.__)('Write microcopy for a submission form that includes', 'elementor')]; +exports.textareaAutocomplete = textareaAutocomplete; +var codeHtmlAutocomplete = [(0, _i18n.__)('GA event fired on every button element click (assume GA was loaded)', 'elementor'), (0, _i18n.__)('Iframe code to embed a Spotify widget on my web page. My ID is 1234567890', 'elementor'), (0, _i18n.__)('Write an embed code of Google Analytics', 'elementor'), (0, _i18n.__)('Write an embed code of Facebook Pixel', 'elementor'), (0, _i18n.__)('HTML code that embeds the following PDF into a webpage: link to PDF', 'elementor')]; +exports.codeHtmlAutocomplete = codeHtmlAutocomplete; +var codeCssAutocomplete = [(0, _i18n.__)('On hover, animate 20% bigger, rotate 10 deg CCW', 'elementor'), (0, _i18n.__)('Add a circle-shaped clip mask, semi transparent on hover', 'elementor'), (0, _i18n.__)('Rainbow colored animated text gradient', 'elementor'), (0, _i18n.__)('Add a 3D shadow to the text', 'elementor')]; +exports.codeCssAutocomplete = codeCssAutocomplete; +var vocalTones = [{ + label: (0, _i18n.__)('Casual', 'elementor') +}, { + label: (0, _i18n.__)('Confidence', 'elementor') +}, { + label: (0, _i18n.__)('Formal', 'elementor') +}, { + label: (0, _i18n.__)('Friendly', 'elementor') +}, { + label: (0, _i18n.__)('Inspirational', 'elementor') +}, { + label: (0, _i18n.__)('Motivational', 'elementor') +}, { + label: (0, _i18n.__)('Nostalgic', 'elementor') +}, { + label: (0, _i18n.__)('Playful', 'elementor') +}, { + label: (0, _i18n.__)('Professional', 'elementor') +}, { + label: (0, _i18n.__)('Scientific', 'elementor') +}, { + label: (0, _i18n.__)('Straightforward', 'elementor') +}, { + label: (0, _i18n.__)('Witty', 'elementor') +}]; +exports.vocalTones = vocalTones; +var translateLanguages = [{ + label: (0, _i18n.__)('Arabic', 'elementor'), + value: 'ar-SA' +}, { + label: (0, _i18n.__)('Chinese', 'elementor'), + value: 'zh-CN' +}, { + label: (0, _i18n.__)('Czech', 'elementor'), + value: 'cs-CZ' +}, { + label: (0, _i18n.__)('Danish', 'elementor'), + value: 'da-DK' +}, { + label: (0, _i18n.__)('Dutch', 'elementor'), + value: 'nl-NL' +}, { + label: (0, _i18n.__)('English', 'elementor'), + value: 'en-US' +}, { + label: (0, _i18n.__)('Finnish', 'elementor'), + value: 'fi-FI' +}, { + label: (0, _i18n.__)('French', 'elementor'), + value: 'fr-FR' +}, { + label: (0, _i18n.__)('German', 'elementor'), + value: 'de-DE' +}, { + label: (0, _i18n.__)('Greek', 'elementor'), + value: 'el-GR' +}, { + label: (0, _i18n.__)('Hebrew', 'elementor'), + value: 'he-IL' +}, { + label: (0, _i18n.__)('Hungarian', 'elementor'), + value: 'hu-HU' +}, { + label: (0, _i18n.__)('Indonesian', 'elementor'), + value: 'id-ID' +}, { + label: (0, _i18n.__)('Italian', 'elementor'), + value: 'it-IT' +}, { + label: (0, _i18n.__)('Japanese', 'elementor'), + value: 'ja-JP' +}, { + label: (0, _i18n.__)('Korean', 'elementor'), + value: 'ko-KR' +}, { + label: (0, _i18n.__)('Persian', 'elementor'), + value: 'fa-IR' +}, { + label: (0, _i18n.__)('Polish', 'elementor'), + value: 'pl-PL' +}, { + label: (0, _i18n.__)('Portuguese', 'elementor'), + value: 'pt-PT' +}, { + label: (0, _i18n.__)('Russian', 'elementor'), + value: 'ru-RU' +}, { + label: (0, _i18n.__)('Spanish', 'elementor'), + value: 'es-ES' +}, { + label: (0, _i18n.__)('Swedish', 'elementor'), + value: 'sv-SE' +}, { + label: (0, _i18n.__)('Thai', 'elementor'), + value: 'th-TH' +}, { + label: (0, _i18n.__)('Turkish', 'elementor'), + value: 'tr-TR' +}, { + label: (0, _i18n.__)('Vietnamese', 'elementor'), + value: 'vi-VN' +}]; +exports.translateLanguages = translateLanguages; + +/***/ }), + +/***/ "../modules/ai/assets/js/editor/api/index.js": +/*!***************************************************!*\ + !*** ../modules/ai/assets/js/editor/api/index.js ***! + \***************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + + +var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js"); +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.uploadImage = exports.toggleFavoriteHistoryItem = exports.setStatusFeedback = exports.setGetStarted = exports.getUserInformation = exports.getTextToImageGeneration = exports.getRemoteConfig = exports.getLayoutPromptEnhanced = exports.getImageToImageUpscale = exports.getImageToImageReplaceBackground = exports.getImageToImageRemoveText = exports.getImageToImageRemoveBackground = exports.getImageToImageOutPainting = exports.getImageToImageMaskGeneration = exports.getImageToImageGeneration = exports.getImagePromptEnhanced = exports.getHistory = exports.getEditText = exports.getCustomCode = exports.getCustomCSS = exports.getCompletionText = exports.generateLayout = exports.deleteHistoryItem = void 0; +var _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/defineProperty */ "../node_modules/@babel/runtime/helpers/defineProperty.js")); +function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; } +function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; } +var request = function request(endpoint) { + var data = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + var immediately = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; + var signal = arguments.length > 3 ? arguments[3] : undefined; + if (Object.keys(data).length) { + data.context = window.elementorAiCurrentContext; + } + return new Promise(function (resolve, reject) { + var ajaxData = elementorCommon.ajax.addRequest(endpoint, { + success: resolve, + error: reject, + data: data + }, immediately); + if (signal && ajaxData.jqXhr) { + signal.addEventListener('abort', ajaxData.jqXhr.abort); + } + }); +}; +var getUserInformation = function getUserInformation() { + return request('ai_get_user_information'); +}; +exports.getUserInformation = getUserInformation; +var getRemoteConfig = function getRemoteConfig() { + return request('ai_get_remote_config'); +}; +exports.getRemoteConfig = getRemoteConfig; +var getCompletionText = function getCompletionText(payload) { + return request('ai_get_completion_text', { + payload: payload + }); +}; +exports.getCompletionText = getCompletionText; +var getEditText = function getEditText(payload) { + return request('ai_get_edit_text', { + payload: payload + }); +}; +exports.getEditText = getEditText; +var getCustomCode = function getCustomCode(payload) { + return request('ai_get_custom_code', { + payload: payload + }); +}; +exports.getCustomCode = getCustomCode; +var getCustomCSS = function getCustomCSS(payload) { + return request('ai_get_custom_css', { + payload: payload + }); +}; +exports.getCustomCSS = getCustomCSS; +var setGetStarted = function setGetStarted() { + return request('ai_set_get_started'); +}; +exports.setGetStarted = setGetStarted; +var setStatusFeedback = function setStatusFeedback(responseId) { + return request('ai_set_status_feedback', { + response_id: responseId + }); +}; +exports.setStatusFeedback = setStatusFeedback; +var getTextToImageGeneration = function getTextToImageGeneration(payload) { + return request('ai_get_text_to_image', { + payload: payload + }); +}; +exports.getTextToImageGeneration = getTextToImageGeneration; +var getImageToImageGeneration = function getImageToImageGeneration(payload) { + return request('ai_get_image_to_image', { + payload: payload + }); +}; +exports.getImageToImageGeneration = getImageToImageGeneration; +var getImageToImageMaskGeneration = function getImageToImageMaskGeneration(payload) { + return request('ai_get_image_to_image_mask', { + payload: payload + }); +}; +exports.getImageToImageMaskGeneration = getImageToImageMaskGeneration; +var getImageToImageOutPainting = function getImageToImageOutPainting(payload) { + return request('ai_get_image_to_image_outpainting', { + payload: payload + }); +}; +exports.getImageToImageOutPainting = getImageToImageOutPainting; +var getImageToImageUpscale = function getImageToImageUpscale(payload) { + return request('ai_get_image_to_image_upscale', { + payload: payload + }); +}; +exports.getImageToImageUpscale = getImageToImageUpscale; +var getImageToImageRemoveBackground = function getImageToImageRemoveBackground(payload) { + return request('ai_get_image_to_image_remove_background', { + payload: payload + }); +}; +exports.getImageToImageRemoveBackground = getImageToImageRemoveBackground; +var getImageToImageReplaceBackground = function getImageToImageReplaceBackground(payload) { + return request('ai_get_image_to_image_replace_background', { + payload: payload + }); +}; +exports.getImageToImageReplaceBackground = getImageToImageReplaceBackground; +var getImageToImageRemoveText = function getImageToImageRemoveText(image) { + return request('ai_get_image_to_image_remove_text', { + image: image + }); +}; +exports.getImageToImageRemoveText = getImageToImageRemoveText; +var getImagePromptEnhanced = function getImagePromptEnhanced(prompt) { + return request('ai_get_image_prompt_enhancer', { + prompt: prompt + }); +}; +exports.getImagePromptEnhanced = getImagePromptEnhanced; +var uploadImage = function uploadImage(image) { + return request('ai_upload_image', _objectSpread({}, image)); +}; + +/** + * @typedef {Object} AttachmentPropType - See ./types/attachment.js + * @typedef {Object} requestBody + * @property {string} prompt - Prompt to generate the layout from. + * @property {0|1|2} [variationType] - Type of the layout to generate (actually it's a position). + * @property {string[]} [prevGeneratedIds] - Previously generated ids for exclusion on regeneration. + * @property {AttachmentPropType[]} [attachments] - Attachments to use for the generation. currently only `json` type is supported - a container JSON to generate variations from. + */ + +/** + * @param {requestBody} requestBody + * @param {AbortSignal} [signal] + */ +exports.uploadImage = uploadImage; +var generateLayout = function generateLayout(requestBody, signal) { + return request('ai_generate_layout', requestBody, true, signal); +}; +exports.generateLayout = generateLayout; +var getLayoutPromptEnhanced = function getLayoutPromptEnhanced(prompt, enhanceType) { + return request('ai_get_layout_prompt_enhancer', { + prompt: prompt, + enhance_type: enhanceType + }); +}; +exports.getLayoutPromptEnhanced = getLayoutPromptEnhanced; +var getHistory = function getHistory(type, page, limit) { + return request('ai_get_history', { + type: type, + page: page, + limit: limit + }); +}; +exports.getHistory = getHistory; +var deleteHistoryItem = function deleteHistoryItem(id) { + return request('ai_delete_history_item', { + id: id + }); +}; +exports.deleteHistoryItem = deleteHistoryItem; +var toggleFavoriteHistoryItem = function toggleFavoriteHistoryItem(id) { + return request('ai_toggle_favorite_history_item', { + id: id + }); +}; +exports.toggleFavoriteHistoryItem = toggleFavoriteHistoryItem; + +/***/ }), + +/***/ "../modules/ai/assets/js/editor/app.js": +/*!*********************************************!*\ + !*** ../modules/ai/assets/js/editor/app.js ***! + \*********************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + + +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 _react = _interopRequireDefault(__webpack_require__(/*! react */ "react")); +var _ui = __webpack_require__(/*! @elementor/ui */ "@elementor/ui"); +var _propTypes = _interopRequireDefault(__webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js")); +var _pageContent = _interopRequireDefault(__webpack_require__(/*! ./page-content */ "../modules/ai/assets/js/editor/page-content.js")); +var _helpers = __webpack_require__(/*! ./helpers */ "../modules/ai/assets/js/editor/helpers/index.js"); +var _requestsIds = __webpack_require__(/*! ./context/requests-ids */ "../modules/ai/assets/js/editor/context/requests-ids.js"); +var App = function App(props) { + return /*#__PURE__*/_react.default.createElement(_ui.DirectionProvider, { + rtl: props.isRTL + }, /*#__PURE__*/_react.default.createElement(_ui.ThemeProvider, { + colorScheme: props.colorScheme + }, /*#__PURE__*/_react.default.createElement(_requestsIds.RequestIdsProvider, null, /*#__PURE__*/_react.default.createElement(_pageContent.default, { + type: props.type, + controlType: props.controlType, + onClose: props.onClose, + onConnect: _helpers.onConnect, + getControlValue: props.getControlValue, + setControlValue: props.setControlValue, + controlView: props.controlView, + additionalOptions: props.additionalOptions + })))); +}; +App.propTypes = { + colorScheme: _propTypes.default.oneOf(['auto', 'light', 'dark']), + type: _propTypes.default.string, + controlType: _propTypes.default.string, + onClose: _propTypes.default.func, + getControlValue: _propTypes.default.func, + setControlValue: _propTypes.default.func, + additionalOptions: _propTypes.default.object, + controlView: _propTypes.default.object, + isRTL: _propTypes.default.bool +}; +var _default = App; +exports["default"] = _default; + +/***/ }), + +/***/ "../modules/ai/assets/js/editor/components/dialog-header.js": +/*!******************************************************************!*\ + !*** ../modules/ai/assets/js/editor/components/dialog-header.js ***! + \******************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + + +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 _react = _interopRequireDefault(__webpack_require__(/*! react */ "react")); +var _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ "../node_modules/@babel/runtime/helpers/extends.js")); +var _ui = __webpack_require__(/*! @elementor/ui */ "@elementor/ui"); +var _i18n = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n"); +var _propTypes = _interopRequireDefault(__webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js")); +var _icons = __webpack_require__(/*! @elementor/icons */ "@elementor/icons"); +var ElementorLogo = function ElementorLogo(props) { + return /*#__PURE__*/_react.default.createElement(_ui.SvgIcon, (0, _extends2.default)({ + viewBox: "0 0 32 32" + }, props), /*#__PURE__*/_react.default.createElement("path", { + fillRule: "evenodd", + clipRule: "evenodd", + d: "M2.69648 24.8891C0.938383 22.2579 0 19.1645 0 16C0 11.7566 1.68571 7.68687 4.68629 4.68629C7.68687 1.68571 11.7566 0 16 0C19.1645 0 22.2579 0.938383 24.8891 2.69648C27.5203 4.45459 29.5711 6.95344 30.7821 9.87706C31.9931 12.8007 32.3099 16.0177 31.6926 19.1214C31.0752 22.2251 29.5514 25.0761 27.3137 27.3137C25.0761 29.5514 22.2251 31.0752 19.1214 31.6926C16.0177 32.3099 12.8007 31.9931 9.87706 30.7821C6.95344 29.5711 4.45459 27.5203 2.69648 24.8891ZM12.0006 9.33281H9.33437V22.6665H12.0006V9.33281ZM22.6657 9.33281H14.6669V11.9991H22.6657V9.33281ZM22.6657 14.6654H14.6669V17.3316H22.6657V14.6654ZM22.6657 20.0003H14.6669V22.6665H22.6657V20.0003Z" + })); +}; +var StyledElementorLogo = (0, _ui.styled)(ElementorLogo)(function (_ref) { + var theme = _ref.theme; + return { + width: theme.spacing(3), + height: theme.spacing(3), + '& path': { + fill: theme.palette.text.primary + } + }; +}); +var DialogHeader = function DialogHeader(props) { + return /*#__PURE__*/_react.default.createElement(_ui.AppBar, { + sx: { + fontWeight: 'normal' + }, + color: "transparent", + position: "relative" + }, /*#__PURE__*/_react.default.createElement(_ui.Toolbar, { + variant: "dense" + }, /*#__PURE__*/_react.default.createElement(StyledElementorLogo, { + sx: { + mr: 1 + } + }), /*#__PURE__*/_react.default.createElement(_ui.Typography, { + component: "span", + variant: "subtitle2", + sx: { + fontWeight: 'bold', + textTransform: 'uppercase' + } + }, (0, _i18n.__)('AI', 'elementor')), /*#__PURE__*/_react.default.createElement(_ui.Chip, { + label: (0, _i18n.__)('Beta', 'elementor'), + color: "default", + size: "small", + sx: { + ml: 1 + } + }), /*#__PURE__*/_react.default.createElement(_ui.Stack, { + direction: "row", + spacing: 1, + alignItems: "center", + sx: { + ml: 'auto' + } + }, props.children, /*#__PURE__*/_react.default.createElement(_ui.IconButton, { + size: "small", + "aria-label": "close", + onClick: props.onClose, + sx: { + '&.MuiButtonBase-root': { + mr: -1 + } + } + }, /*#__PURE__*/_react.default.createElement(_icons.XIcon, null))))); +}; +DialogHeader.propTypes = { + onClose: _propTypes.default.func.isRequired, + children: _propTypes.default.oneOfType([_propTypes.default.arrayOf(_propTypes.default.node), _propTypes.default.node]) +}; +var _default = DialogHeader; +exports["default"] = _default; + +/***/ }), + +/***/ "../modules/ai/assets/js/editor/components/generate-button.js": +/*!********************************************************************!*\ + !*** ../modules/ai/assets/js/editor/components/generate-button.js ***! + \********************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + + +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 _react = _interopRequireDefault(__webpack_require__(/*! react */ "react")); +var _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ "../node_modules/@babel/runtime/helpers/extends.js")); +var _ui = __webpack_require__(/*! @elementor/ui */ "@elementor/ui"); +var _i18n = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n"); +var _icons = __webpack_require__(/*! @elementor/icons */ "@elementor/icons"); +var GenerateButton = function GenerateButton(props) { + return /*#__PURE__*/_react.default.createElement(_ui.Button, (0, _extends2.default)({ + variant: "contained", + endIcon: /*#__PURE__*/_react.default.createElement(_icons.AIIcon, { + fontSize: "small" + }), + disabled: !prompt, + "aria-label": (0, _i18n.__)('search', 'elementor'), + type: "submit", + size: "small" + }, props)); +}; +var _default = GenerateButton; +exports["default"] = _default; + +/***/ }), + +/***/ "../modules/ai/assets/js/editor/components/loader.js": +/*!***********************************************************!*\ + !*** ../modules/ai/assets/js/editor/components/loader.js ***! + \***********************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + + +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 _react = _interopRequireDefault(__webpack_require__(/*! react */ "react")); +var _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ "../node_modules/@babel/runtime/helpers/extends.js")); +var _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/defineProperty */ "../node_modules/@babel/runtime/helpers/defineProperty.js")); +var _objectWithoutProperties2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/objectWithoutProperties */ "../node_modules/@babel/runtime/helpers/objectWithoutProperties.js")); +var _ui = __webpack_require__(/*! @elementor/ui */ "@elementor/ui"); +var _propTypes = _interopRequireDefault(__webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js")); +var _excluded = ["sx", "BoxProps"]; +function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; } +function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; } +var Loader = function Loader(_ref) { + var _ref$sx = _ref.sx, + sx = _ref$sx === void 0 ? {} : _ref$sx, + _ref$BoxProps = _ref.BoxProps, + BoxProps = _ref$BoxProps === void 0 ? {} : _ref$BoxProps, + props = (0, _objectWithoutProperties2.default)(_ref, _excluded); + return /*#__PURE__*/_react.default.createElement(_ui.Box, (0, _extends2.default)({ + width: "100%", + display: "flex", + alignItems: "center" + }, BoxProps, { + sx: _objectSpread({ + px: 1.5, + minHeight: function minHeight(theme) { + return theme.spacing(5); + } + }, BoxProps.sx || {}) + }), /*#__PURE__*/_react.default.createElement(_ui.LinearProgress, (0, _extends2.default)({ + color: "secondary" + }, props, { + sx: _objectSpread({ + width: '100%' + }, sx) + }))); +}; +Loader.propTypes = { + sx: _propTypes.default.object, + BoxProps: _propTypes.default.object +}; +var _default = Loader; +exports["default"] = _default; + +/***/ }), + +/***/ "../modules/ai/assets/js/editor/components/prompt-action-selection.js": +/*!****************************************************************************!*\ + !*** ../modules/ai/assets/js/editor/components/prompt-action-selection.js ***! + \****************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + + +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 _react = _interopRequireDefault(__webpack_require__(/*! react */ "react")); +var _ui = __webpack_require__(/*! @elementor/ui */ "@elementor/ui"); +var _propTypes = _interopRequireDefault(__webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js")); +var labelToDashCash = function labelToDashCash(str) { + return str.toLowerCase().replace(/ /g, '-'); +}; +var PromptActionSelection = function PromptActionSelection(props) { + var actionId = labelToDashCash(props.label); + var _props$wrapperStyle = props.wrapperStyle, + wrapperStyle = _props$wrapperStyle === void 0 ? { + maxWidth: 138 + } : _props$wrapperStyle; + return /*#__PURE__*/_react.default.createElement(_ui.FormControl, { + size: "small", + color: "secondary", + fullWidth: true, + sx: wrapperStyle + }, /*#__PURE__*/_react.default.createElement(_ui.InputLabel, { + id: actionId + }, props.label), /*#__PURE__*/_react.default.createElement(_ui.Select, { + id: actionId, + labelId: actionId, + label: props.label, + value: props.value || '', + onChange: props.onChange, + disabled: props.disabled, + sx: { + // Fixing global CSS of the editor that targets input[disabled] globally. + '&.Mui-disabled .MuiSelect-nativeInput': { + backgroundColor: 'initial', + opacity: 0 + } + } + }, props.options.map(function (option) { + var _option$value; + return /*#__PURE__*/_react.default.createElement(_ui.MenuItem, { + dense: true, + key: option.label, + value: (_option$value = option.value) !== null && _option$value !== void 0 ? _option$value : option.label + }, option.label); + }))); +}; +PromptActionSelection.propTypes = { + label: _propTypes.default.string.isRequired, + options: _propTypes.default.arrayOf(_propTypes.default.shape({ + label: _propTypes.default.string.isRequired, + value: _propTypes.default.string + })).isRequired, + onChange: _propTypes.default.func.isRequired, + value: _propTypes.default.string, + wrapperStyle: _propTypes.default.object, + disabled: _propTypes.default.bool +}; +var _default = PromptActionSelection; +exports["default"] = _default; + +/***/ }), + +/***/ "../modules/ai/assets/js/editor/components/prompt-action.js": +/*!******************************************************************!*\ + !*** ../modules/ai/assets/js/editor/components/prompt-action.js ***! + \******************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + + +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 _react = _interopRequireDefault(__webpack_require__(/*! react */ "react")); +var _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ "../node_modules/@babel/runtime/helpers/extends.js")); +var _ui = __webpack_require__(/*! @elementor/ui */ "@elementor/ui"); +var PromptAction = function PromptAction(props) { + return /*#__PURE__*/_react.default.createElement(_ui.Chip, (0, _extends2.default)({ + size: "large", + color: "secondary", + variant: "outlined" + }, props)); +}; +var _default = PromptAction; +exports["default"] = _default; + +/***/ }), + +/***/ "../modules/ai/assets/js/editor/components/prompt-dialog.js": +/*!******************************************************************!*\ + !*** ../modules/ai/assets/js/editor/components/prompt-dialog.js ***! + \******************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + + +var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js"); +var _typeof = __webpack_require__(/*! @babel/runtime/helpers/typeof */ "../node_modules/@babel/runtime/helpers/typeof.js"); +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; +var _react = _interopRequireWildcard(__webpack_require__(/*! react */ "react")); +var _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ "../node_modules/@babel/runtime/helpers/extends.js")); +var _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/defineProperty */ "../node_modules/@babel/runtime/helpers/defineProperty.js")); +var _slicedToArray2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/slicedToArray */ "../node_modules/@babel/runtime/helpers/slicedToArray.js")); +var _ui = __webpack_require__(/*! @elementor/ui */ "@elementor/ui"); +var _propTypes = _interopRequireDefault(__webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js")); +var _reactDraggable = _interopRequireDefault(__webpack_require__(/*! react-draggable */ "../node_modules/react-draggable/build/cjs/cjs.js")); +var _dialogHeader = _interopRequireDefault(__webpack_require__(/*! ./dialog-header */ "../modules/ai/assets/js/editor/components/dialog-header.js")); +function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); } +function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; } +function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; } +function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; } +var DraggablePaper = function DraggablePaper(props) { + var _useState = (0, _react.useState)({ + x: 0, + y: 0 + }), + _useState2 = (0, _slicedToArray2.default)(_useState, 2), + position = _useState2[0], + setPosition = _useState2[1]; + var paperRef = (0, _react.useRef)(null); + var timeout = (0, _react.useRef)(null); + var onDrag = function onDrag(_e, _ref) { + var x = _ref.x, + y = _ref.y; + return setPosition({ + x: x, + y: y + }); + }; + var handlePositionBoundaries = function handlePositionBoundaries() { + clearTimeout(timeout.current); + + // Ensuring the dialog header, which is used as the dialog dragging handle, does not exceed the screen. + timeout.current = setTimeout(function () { + var _paperRef$current; + var dialogTop = (_paperRef$current = paperRef.current) === null || _paperRef$current === void 0 ? void 0 : _paperRef$current.getBoundingClientRect().top; + if (dialogTop < 0) { + setPosition(function (prev) { + return _objectSpread(_objectSpread({}, prev), {}, { + y: prev.y - dialogTop + }); + }); + } + }, 50); + }; + (0, _react.useEffect)(function () { + var resizeObserver = new ResizeObserver(handlePositionBoundaries); + resizeObserver.observe(paperRef.current); + return function () { + resizeObserver.disconnect(); + }; + }, []); + return /*#__PURE__*/_react.default.createElement(_reactDraggable.default, { + position: position, + onDrag: onDrag, + handle: ".MuiAppBar-root", + cancel: '[class*="MuiDialogContent-root"]', + bounds: "parent" + }, /*#__PURE__*/_react.default.createElement(_ui.Paper, (0, _extends2.default)({}, props, { + ref: paperRef + }))); +}; +var PromptDialog = function PromptDialog(props) { + return /*#__PURE__*/_react.default.createElement(_ui.Dialog, (0, _extends2.default)({ + scroll: "paper", + open: true, + fullWidth: true, + hideBackdrop: true, + PaperComponent: DraggablePaper, + disableScrollLock: true, + sx: { + '& .MuiDialog-container': { + alignItems: 'flex-start', + mt: '18vh' + } + }, + PaperProps: { + sx: { + m: 0, + maxHeight: '76vh' + } + } + }, props), props.children); +}; +PromptDialog.propTypes = { + onClose: _propTypes.default.func.isRequired, + children: _propTypes.default.node, + maxWidth: _propTypes.default.oneOf(['xs', 'sm', 'md', 'lg', 'xl', false]) +}; +PromptDialog.Header = _dialogHeader.default; +PromptDialog.Content = _ui.DialogContent; +var _default = PromptDialog; +exports["default"] = _default; + +/***/ }), + +/***/ "../modules/ai/assets/js/editor/components/prompt-error-message.js": +/*!*************************************************************************!*\ + !*** ../modules/ai/assets/js/editor/components/prompt-error-message.js ***! + \*************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +/* provided dependency */ var sprintf = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n")["sprintf"]; + + +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 _react = _interopRequireDefault(__webpack_require__(/*! react */ "react")); +var _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ "../node_modules/@babel/runtime/helpers/extends.js")); +var _objectWithoutProperties2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/objectWithoutProperties */ "../node_modules/@babel/runtime/helpers/objectWithoutProperties.js")); +var _ui = __webpack_require__(/*! @elementor/ui */ "@elementor/ui"); +var _i18n = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n"); +var _propTypes = _interopRequireDefault(__webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js")); +var _excluded = ["error", "onRetry", "actionPosition"]; +var PromptErrorMessage = function PromptErrorMessage(_ref) { + var error = _ref.error, + _ref$onRetry = _ref.onRetry, + onRetry = _ref$onRetry === void 0 ? function () {} : _ref$onRetry, + _ref$actionPosition = _ref.actionPosition, + actionPosition = _ref$actionPosition === void 0 ? 'default' : _ref$actionPosition, + props = (0, _objectWithoutProperties2.default)(_ref, _excluded); + function getQuotaReachedTrailMessage(featureName) { + if (!featureName) { + return { + text: /*#__PURE__*/_react.default.createElement(_ui.AlertTitle, null, (0, _i18n.__)('It\'s time to upgrade.', 'elementor')), + description: (0, _i18n.__)('Enjoy the free trial? Upgrade now for unlimited access to built-in image, text and custom code generators.', 'elementor'), + buttonText: (0, _i18n.__)('Upgrade', 'elementor'), + buttonAction: function buttonAction() { + return window.open('https://go.elementor.com/ai-popup-purchase-limit-reached/', '_blank'); + } + }; + } + return { + // Translators: %s is the feature name. + text: /*#__PURE__*/_react.default.createElement(_ui.AlertTitle, null, sprintf((0, _i18n.__)('You\'ve used all AI credits for %s.', 'elementor'), featureName.toLowerCase())), + description: (0, _i18n.__)('Upgrade now to keep using this feature. You still have credits for other AI features (Text, Code, Images, Containers, etc.)', 'elementor'), + buttonText: (0, _i18n.__)('Upgrade now', 'elementor'), + buttonAction: function buttonAction() { + return window.open('https://go.elementor.com/ai-popup-purchase-limit-reached/', '_blank'); + } + }; + } + function getErrorMessage() { + var _error$extra_data; + var errMsg = error.message || error; + var featureName = (_error$extra_data = error.extra_data) === null || _error$extra_data === void 0 ? void 0 : _error$extra_data.featureName; + var messages = { + default: { + text: /*#__PURE__*/_react.default.createElement(_ui.AlertTitle, null, (0, _i18n.__)('Unknown error. Please try again later.', 'elementor')), + description: (0, _i18n.__)('Error code:', 'elementor') + ' ' + error, + buttonText: (0, _i18n.__)('Try Again', 'elementor'), + buttonAction: onRetry + }, + service_outage_internal: { + text: /*#__PURE__*/_react.default.createElement(_ui.AlertTitle, null, (0, _i18n.__)('Elementor AI is temporarily unavailable', 'elementor')), + description: (0, _i18n.__)('Seems like we are experiencing technical difficulty. We should be up and running shortly.', 'elementor'), + buttonText: (0, _i18n.__)('Try Again', 'elementor'), + buttonAction: onRetry + }, + invalid_connect_data: { + text: /*#__PURE__*/_react.default.createElement(_ui.AlertTitle, null, (0, _i18n.__)('Reconnect your account', 'elementor')), + description: /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, (0, _i18n.__)('We couldn\'t connect to your account due to technical difficulties on our end. Reconnect your account to continue.', 'elementor'), ' ', /*#__PURE__*/_react.default.createElement("a", { + href: "https://elementor.com/help/disconnecting-reconnecting-your-elementor-account/", + target: "_blank", + rel: "noreferrer" + }, (0, _i18n.__)('Show me how', 'elementor'))), + buttonText: (0, _i18n.__)('Reconnect', 'elementor'), + buttonAction: function buttonAction() { + return window.open(window.ElementorAiConfig.connect_url); + } + }, + not_connected: { + text: /*#__PURE__*/_react.default.createElement(_ui.AlertTitle, null, (0, _i18n.__)('You aren\'t connected to Elementor AI.', 'elementor')), + description: (0, _i18n.__)('Elementor AI is just a few clicks away. Connect your account to instantly create texts and custom code.', 'elementor'), + buttonText: (0, _i18n.__)('Connect', 'elementor'), + buttonAction: function buttonAction() { + return window.open(window.ElementorAiConfig.connect_url); + } + }, + quota_reached_trail: getQuotaReachedTrailMessage(featureName), + quota_reached_subscription: { + text: /*#__PURE__*/_react.default.createElement(_ui.AlertTitle, null, (0, _i18n.__)('It\'s time to upgrade.', 'elementor')), + description: (0, _i18n.__)('Love Elementor AI? Upgrade to continue creating with built-in image, text and custom code generators.', 'elementor'), + buttonText: (0, _i18n.__)('Upgrade', 'elementor'), + buttonAction: function buttonAction() { + return window.open('https://go.elementor.com/ai-popup-purchase-limit-reached/', '_blank'); + } + }, + rate_limit_network: { + text: /*#__PURE__*/_react.default.createElement(_ui.AlertTitle, null, (0, _i18n.__)('Whoa! Slow down there.', 'elementor')), + description: (0, _i18n.__)('We can’t process that many requests so fast. Try again in 15 minutes.', 'elementor') + }, + invalid_prompts: { + text: /*#__PURE__*/_react.default.createElement(_ui.AlertTitle, null, (0, _i18n.__)('We were unable to generate that prompt.', 'elementor')), + description: (0, _i18n.__)('Seems like the prompt contains words that could generate harmful content. Write a different prompt to continue.', 'elementor') + } + }; + return messages[errMsg] || messages.default; + } + var message = getErrorMessage(); + var action = (message === null || message === void 0 ? void 0 : message.buttonText) && /*#__PURE__*/_react.default.createElement(_ui.Button, { + color: "inherit", + size: "small", + variant: "outlined", + onClick: message.buttonAction + }, message.buttonText); + return /*#__PURE__*/_react.default.createElement(_ui.Alert, (0, _extends2.default)({ + severity: message.severity || 'error', + action: 'default' === actionPosition && action + }, props), message.text, message.description, 'bottom' === actionPosition && /*#__PURE__*/_react.default.createElement(_ui.Box, { + sx: { + mt: 1 + } + }, action)); +}; +PromptErrorMessage.propTypes = { + error: _propTypes.default.string, + onRetry: _propTypes.default.func, + actionPosition: _propTypes.default.oneOf(['default', 'bottom']) +}; +var _default = PromptErrorMessage; +exports["default"] = _default; + +/***/ }), + +/***/ "../modules/ai/assets/js/editor/components/prompt-history/context/prompt-history-action-context.js": +/*!*********************************************************************************************************!*\ + !*** ../modules/ai/assets/js/editor/components/prompt-history/context/prompt-history-action-context.js ***! + \*********************************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + + +var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js"); +var _typeof = __webpack_require__(/*! @babel/runtime/helpers/typeof */ "../node_modules/@babel/runtime/helpers/typeof.js"); +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.useSubscribeOnPromptHistoryAction = exports.usePromptHistoryAction = exports.PromptHistoryActionProvider = exports.PromptHistoryActionContext = exports.ACTION_TYPES = void 0; +var _react = _interopRequireWildcard(__webpack_require__(/*! react */ "react")); +var _slicedToArray2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/slicedToArray */ "../node_modules/@babel/runtime/helpers/slicedToArray.js")); +var _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/defineProperty */ "../node_modules/@babel/runtime/helpers/defineProperty.js")); +var _propTypes = _interopRequireDefault(__webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js")); +var _historyTypes = __webpack_require__(/*! ../history-types */ "../modules/ai/assets/js/editor/components/prompt-history/history-types.js"); +var _promptHistoryContext = __webpack_require__(/*! ./prompt-history-context */ "../modules/ai/assets/js/editor/components/prompt-history/context/prompt-history-context.js"); +var _HISTORY_TYPES$TEXT, _HISTORY_TYPES$CODE, _HISTORY_TYPES$IMAGE, _ENABLED_ACTIONS_BY_T; +function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); } +function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; } +function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; } +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; } +var PromptHistoryActionContext = (0, _react.createContext)({}); +exports.PromptHistoryActionContext = PromptHistoryActionContext; +var initialActionValue = { + type: '', + id: '', + data: null +}; +var ACTION_TYPES = Object.freeze({ + REUSE: 'reuse', + EDIT: 'edit', + RESTORE: 'restore', + REMOVE: 'remove' +}); +exports.ACTION_TYPES = ACTION_TYPES; +var ENABLED_ACTIONS_BY_TYPE = (_ENABLED_ACTIONS_BY_T = {}, (0, _defineProperty2.default)(_ENABLED_ACTIONS_BY_T, _historyTypes.HISTORY_TYPES.TEXT, (_HISTORY_TYPES$TEXT = {}, (0, _defineProperty2.default)(_HISTORY_TYPES$TEXT, ACTION_TYPES.REUSE, true), (0, _defineProperty2.default)(_HISTORY_TYPES$TEXT, ACTION_TYPES.EDIT, true), (0, _defineProperty2.default)(_HISTORY_TYPES$TEXT, ACTION_TYPES.REMOVE, true), _HISTORY_TYPES$TEXT)), (0, _defineProperty2.default)(_ENABLED_ACTIONS_BY_T, _historyTypes.HISTORY_TYPES.CODE, (_HISTORY_TYPES$CODE = {}, (0, _defineProperty2.default)(_HISTORY_TYPES$CODE, ACTION_TYPES.REUSE, true), (0, _defineProperty2.default)(_HISTORY_TYPES$CODE, ACTION_TYPES.REMOVE, true), _HISTORY_TYPES$CODE)), (0, _defineProperty2.default)(_ENABLED_ACTIONS_BY_T, _historyTypes.HISTORY_TYPES.IMAGE, (_HISTORY_TYPES$IMAGE = {}, (0, _defineProperty2.default)(_HISTORY_TYPES$IMAGE, ACTION_TYPES.RESTORE, true), (0, _defineProperty2.default)(_HISTORY_TYPES$IMAGE, ACTION_TYPES.REMOVE, true), _HISTORY_TYPES$IMAGE)), _ENABLED_ACTIONS_BY_T); +var PromptHistoryActionProvider = function PromptHistoryActionProvider(_ref) { + var children = _ref.children; + var _useState = (0, _react.useState)(initialActionValue), + _useState2 = (0, _slicedToArray2.default)(_useState, 2), + state = _useState2[0], + dispatch = _useState2[1]; + return /*#__PURE__*/_react.default.createElement(PromptHistoryActionContext.Provider, { + value: { + state: state, + dispatch: dispatch + } + }, children); +}; +exports.PromptHistoryActionProvider = PromptHistoryActionProvider; +PromptHistoryActionProvider.propTypes = { + children: _propTypes.default.node +}; +var usePromptHistoryAction = function usePromptHistoryAction() { + var _useContext = (0, _react.useContext)(PromptHistoryActionContext), + state = _useContext.state, + dispatch = _useContext.dispatch; + var _usePromptHistoryCont = (0, _promptHistoryContext.usePromptHistoryContext)(), + historyType = _usePromptHistoryCont.historyType, + onClose = _usePromptHistoryCont.onClose; + var closeModalAfterAction = function closeModalAfterAction(action) { + return function () { + action.apply(void 0, arguments); + onClose(); + }; + }; + var getAllowedActions = function getAllowedActions() { + return ENABLED_ACTIONS_BY_TYPE[historyType] || {}; + }; + var onPromptReuse = function onPromptReuse(id, data) { + return dispatch({ + type: ACTION_TYPES.REUSE, + id: id, + data: data + }); + }; + var onResultEdit = function onResultEdit(id, data) { + return dispatch({ + type: ACTION_TYPES.EDIT, + id: id, + data: data + }); + }; + var onImagesRestore = function onImagesRestore(id, data) { + return dispatch({ + type: ACTION_TYPES.RESTORE, + id: id, + data: data + }); + }; + return { + promptHistoryAction: state, + onPromptReuse: closeModalAfterAction(onPromptReuse), + onResultEdit: closeModalAfterAction(onResultEdit), + onImagesRestore: closeModalAfterAction(onImagesRestore), + getAllowedActions: getAllowedActions + }; +}; + +/** + * + * @param {{type: string, handler: Function}[]} actions + */ +exports.usePromptHistoryAction = usePromptHistoryAction; +var useSubscribeOnPromptHistoryAction = function useSubscribeOnPromptHistoryAction(actions) { + var _useContext2 = (0, _react.useContext)(PromptHistoryActionContext), + state = _useContext2.state; + (0, _react.useEffect)(function () { + if (!state.type) { + return; + } + var _iterator = _createForOfIteratorHelper(actions), + _step; + try { + for (_iterator.s(); !(_step = _iterator.n()).done;) { + var action = _step.value; + if (state.type === (action === null || action === void 0 ? void 0 : action.type)) { + action === null || action === void 0 ? void 0 : action.handler(state); + } + } + } catch (err) { + _iterator.e(err); + } finally { + _iterator.f(); + } + }, [state]); +}; +exports.useSubscribeOnPromptHistoryAction = useSubscribeOnPromptHistoryAction; + +/***/ }), + +/***/ "../modules/ai/assets/js/editor/components/prompt-history/context/prompt-history-context.js": +/*!**************************************************************************************************!*\ + !*** ../modules/ai/assets/js/editor/components/prompt-history/context/prompt-history-context.js ***! + \**************************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + + +var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js"); +var _typeof = __webpack_require__(/*! @babel/runtime/helpers/typeof */ "../node_modules/@babel/runtime/helpers/typeof.js"); +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.usePromptHistoryContext = exports.PromptHistoryProvider = exports.PromptHistoryContext = void 0; +var _react = _interopRequireWildcard(__webpack_require__(/*! react */ "react")); +var _slicedToArray2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/slicedToArray */ "../node_modules/@babel/runtime/helpers/slicedToArray.js")); +var _propTypes = _interopRequireDefault(__webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js")); +var _historyTypes = __webpack_require__(/*! ../history-types */ "../modules/ai/assets/js/editor/components/prompt-history/history-types.js"); +var _helpers = __webpack_require__(/*! ../../../helpers */ "../modules/ai/assets/js/editor/helpers/index.js"); +function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); } +function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; } +var PromptHistoryContext = (0, _react.createContext)({}); +exports.PromptHistoryContext = PromptHistoryContext; +var DIALOG_CONTAINER_SELECTOR = '.e-ai-dialog-content'; +var getContainer = function getContainer() { + return document.querySelector(DIALOG_CONTAINER_SELECTOR); +}; +var getContainerHeight = function getContainerHeight() { + var contentContainer = document.querySelector(DIALOG_CONTAINER_SELECTOR); + return contentContainer === null || contentContainer === void 0 ? void 0 : contentContainer.clientHeight; +}; +var getContentHeight = function getContentHeight() { + var contentContainer = document.querySelector(DIALOG_CONTAINER_SELECTOR); + return contentContainer.children[0].clientHeight + 50; +}; +var setContentHeight = function setContentHeight(height) { + var contentContainer = document.querySelector(DIALOG_CONTAINER_SELECTOR); + if ('auto' === height) { + contentContainer.style.height = 'auto'; + return; + } + contentContainer.style.height = "".concat(height, "px"); +}; +var PromptHistoryProvider = function PromptHistoryProvider(_ref) { + var historyType = _ref.historyType, + children = _ref.children; + var showHistoryState = (0, _react.useState)(false); + return /*#__PURE__*/_react.default.createElement(PromptHistoryContext.Provider, { + value: { + historyType: historyType, + showHistoryState: showHistoryState + } + }, children); +}; +exports.PromptHistoryProvider = PromptHistoryProvider; +PromptHistoryProvider.propTypes = { + historyType: _propTypes.default.oneOf(Object.values(_historyTypes.HISTORY_TYPES)).isRequired, + children: _propTypes.default.node +}; +var usePromptHistoryContext = function usePromptHistoryContext() { + var _useContext = (0, _react.useContext)(PromptHistoryContext), + historyType = _useContext.historyType, + showHistoryState = _useContext.showHistoryState; + var _showHistoryState = (0, _slicedToArray2.default)(showHistoryState, 2), + showHistory = _showHistoryState[0], + setShowHistory = _showHistoryState[1]; + var _useState = (0, _react.useState)(false), + _useState2 = (0, _slicedToArray2.default)(_useState, 2), + showModalWrapper = _useState2[0], + setShowModalWrapper = _useState2[1]; + var _useState3 = (0, _react.useState)(false), + _useState4 = (0, _slicedToArray2.default)(_useState3, 2), + showPromptHistory = _useState4[0], + setShowPromptHistory = _useState4[1]; + var handleFullScreenHistoryState = function handleFullScreenHistoryState() { + if (showHistory) { + setShowModalWrapper(true); + setTimeout(function () { + return setShowPromptHistory(true); + }, 200); + return; + } + setShowPromptHistory(false); + setTimeout(function () { + return setShowModalWrapper(false); + }, 500); + }; + var handleDefaultHistoryState = function handleDefaultHistoryState() { + if (showHistory) { + var currentHeight = getContentHeight(); + + // Set initial state + setContentHeight(currentHeight); + setTimeout(function () { + if (currentHeight < (0, _helpers.vh)(61)) { + setContentHeight((0, _helpers.vh)(61)); + setTimeout(function () { + return setShowModalWrapper(true); + }, 200); + setTimeout(function () { + return setShowPromptHistory(true); + }, 300); + return; + } + setShowModalWrapper(true); + setShowPromptHistory(true); + }, 20); + return; + } + setShowPromptHistory(false); + setTimeout(function () { + setShowModalWrapper(false); + setContentHeight(getContentHeight()); + setTimeout(function () { + return setContentHeight('auto'); + }, 300); + }, 500); + }; + (0, _react.useEffect)(function () { + if (showHistory === showModalWrapper && showHistory === showPromptHistory) { + return; + } + if (historyType === _historyTypes.HISTORY_TYPES.IMAGE) { + return handleFullScreenHistoryState(); + } + handleDefaultHistoryState(); + }, [showHistory]); + var onOpen = function onOpen() { + setShowHistory(true); + }; + var onClose = function onClose() { + setShowHistory(false); + }; + return { + historyType: historyType, + isOpen: showPromptHistory, + isModalOpen: showModalWrapper, + showHistory: showHistory, + onOpen: onOpen, + onClose: onClose, + getContainer: getContainer, + getContainerHeight: getContainerHeight + }; +}; +exports.usePromptHistoryContext = usePromptHistoryContext; + +/***/ }), + +/***/ "../modules/ai/assets/js/editor/components/prompt-history/helpers/history-period-helpers.js": +/*!**************************************************************************************************!*\ + !*** ../modules/ai/assets/js/editor/components/prompt-history/helpers/history-period-helpers.js ***! + \**************************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + + +var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js"); +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.renderPeriods = exports.groupPromptHistoryData = exports.LAST_7_DAYS_KEY = exports.LAST_30_DAYS_KEY = void 0; +var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react")); +var _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/defineProperty */ "../node_modules/@babel/runtime/helpers/defineProperty.js")); +var _toConsumableArray2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/toConsumableArray */ "../node_modules/@babel/runtime/helpers/toConsumableArray.js")); +var _i18n = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n"); +var _dateHelpers = __webpack_require__(/*! ../../../helpers/date-helpers */ "../modules/ai/assets/js/editor/helpers/date-helpers.js"); +var _modalPeriod = _interopRequireDefault(__webpack_require__(/*! ../parts/modal-period */ "../modules/ai/assets/js/editor/components/prompt-history/parts/modal-period.js")); +function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; } +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; } +var DATE_KEY = 'date'; +var LAST_7_DAYS_KEY = '7-days'; +exports.LAST_7_DAYS_KEY = LAST_7_DAYS_KEY; +var LAST_30_DAYS_KEY = '30-days'; +exports.LAST_30_DAYS_KEY = LAST_30_DAYS_KEY; +var MONTH_FORMAT = (0, _i18n.__)('F', 'elementor'); + +/** + * Sorts items in ascending order by date. + * + * @param {Array} historyData + * @return {Array} + */ +var sortPromptHistoryData = function sortPromptHistoryData(historyData) { + var clone = (0, _toConsumableArray2.default)(historyData); + return clone.sort(function (a, b) { + return new Date(b[DATE_KEY]) - new Date(a[DATE_KEY]); + }); +}; + +/** + * Groups prompt history data by time periods. + * + * @param {Array} historyData + * @return {Object.} + */ +var groupPromptHistoryData = function groupPromptHistoryData(historyData) { + var _result; + var data = sortPromptHistoryData(historyData); + var currentDate = new Date(); + var result = (_result = {}, (0, _defineProperty2.default)(_result, LAST_7_DAYS_KEY, { + label: (0, _i18n.__)('Last 7 days', 'elementor'), + items: [] + }), (0, _defineProperty2.default)(_result, LAST_30_DAYS_KEY, { + label: (0, _i18n.__)('Last 30 days', 'elementor'), + items: [] + }), _result); + var _iterator = _createForOfIteratorHelper(data), + _step; + try { + for (_iterator.s(); !(_step = _iterator.n()).done;) { + var item = _step.value; + var date = new Date(item[DATE_KEY]); + var diff = (0, _dateHelpers.daysDiff)(date, currentDate); + if (diff <= 7) { + result[LAST_7_DAYS_KEY].items.push(item); + continue; + } + if (diff <= 30) { + result[LAST_30_DAYS_KEY].items.push(item); + continue; + } + var month = date.getMonth(); + if (!result[month]) { + result[month] = { + label: (0, _dateHelpers.translateDate)(MONTH_FORMAT, date), + items: [] + }; + } + result[month].items.push(item); + } + } catch (err) { + _iterator.e(err); + } finally { + _iterator.f(); + } + return result; +}; +exports.groupPromptHistoryData = groupPromptHistoryData; +var renderPeriods = function renderPeriods(_ref) { + var _groupData$LAST_7_DAY, _groupData$LAST_7_DAY2, _groupData$LAST_30_DA, _groupData$LAST_30_DA2; + var items = _ref.items, + onDelete = _ref.onDelete; + var groupData = groupPromptHistoryData(items); + var periods = []; + if ((_groupData$LAST_7_DAY = groupData[LAST_7_DAYS_KEY]) !== null && _groupData$LAST_7_DAY !== void 0 && (_groupData$LAST_7_DAY2 = _groupData$LAST_7_DAY.items) !== null && _groupData$LAST_7_DAY2 !== void 0 && _groupData$LAST_7_DAY2.length) { + periods.push( /*#__PURE__*/_react.default.createElement(_modalPeriod.default, { + periodTitle: groupData[LAST_7_DAYS_KEY].label, + onHistoryItemDelete: onDelete, + historyItems: groupData[LAST_7_DAYS_KEY].items + })); + } + if ((_groupData$LAST_30_DA = groupData[LAST_30_DAYS_KEY]) !== null && _groupData$LAST_30_DA !== void 0 && (_groupData$LAST_30_DA2 = _groupData$LAST_30_DA.items) !== null && _groupData$LAST_30_DA2 !== void 0 && _groupData$LAST_30_DA2.length) { + periods.push( /*#__PURE__*/_react.default.createElement(_modalPeriod.default, { + periodTitle: groupData[LAST_30_DAYS_KEY].label, + onHistoryItemDelete: onDelete, + historyItems: groupData[LAST_30_DAYS_KEY].items + })); + } + for (var i = _dateHelpers.MONTH_DECEMBER_INDEX; i >= _dateHelpers.MONTH_JANUARY_INDEX; i--) { + if (groupData[i]) { + periods.push( /*#__PURE__*/_react.default.createElement(_modalPeriod.default, { + periodTitle: groupData[i].label, + onHistoryItemDelete: onDelete, + historyItems: groupData[i].items + })); + } + } + return periods; +}; +exports.renderPeriods = renderPeriods; + +/***/ }), + +/***/ "../modules/ai/assets/js/editor/components/prompt-history/history-button.js": +/*!**********************************************************************************!*\ + !*** ../modules/ai/assets/js/editor/components/prompt-history/history-button.js ***! + \**********************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + + +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 _react = _interopRequireDefault(__webpack_require__(/*! react */ "react")); +var _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ "../node_modules/@babel/runtime/helpers/extends.js")); +var _objectWithoutProperties2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/objectWithoutProperties */ "../node_modules/@babel/runtime/helpers/objectWithoutProperties.js")); +var _taggedTemplateLiteral2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/taggedTemplateLiteral */ "../node_modules/@babel/runtime/helpers/taggedTemplateLiteral.js")); +var _ui = __webpack_require__(/*! @elementor/ui */ "@elementor/ui"); +var _i18n = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n"); +var _propTypes = _interopRequireDefault(__webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js")); +var _icons = __webpack_require__(/*! @elementor/icons */ "@elementor/icons"); +var _excluded = ["isActive"]; +var _templateObject; +var StyledHistoryButton = (0, _ui.styled)(_ui.IconButton)(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["\n margin-right: ", ";\n\n ", "\n"])), function (_ref) { + var theme = _ref.theme; + return theme.spacing(2); +}, function (_ref2) { + var isActive = _ref2.isActive, + theme = _ref2.theme; + return isActive && "\n background-color: ".concat(theme.palette.action.hover, ";\n color: ").concat(theme.palette.text.tertiary, ";\n "); +}); +var PromptHistoryButton = function PromptHistoryButton(_ref3) { + var isActive = _ref3.isActive, + props = (0, _objectWithoutProperties2.default)(_ref3, _excluded); + return /*#__PURE__*/_react.default.createElement(StyledHistoryButton, (0, _extends2.default)({ + "aria-label": (0, _i18n.__)('Show prompt history', 'elementor'), + type: "button", + size: "small", + isActive: isActive + }, props), /*#__PURE__*/_react.default.createElement(_icons.HistoryIcon, null)); +}; +PromptHistoryButton.propTypes = { + isActive: _propTypes.default.bool.isRequired +}; +var _default = PromptHistoryButton; +exports["default"] = _default; + +/***/ }), + +/***/ "../modules/ai/assets/js/editor/components/prompt-history/history-modal.js": +/*!*********************************************************************************!*\ + !*** ../modules/ai/assets/js/editor/components/prompt-history/history-modal.js ***! + \*********************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + + +var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js"); +var _typeof = __webpack_require__(/*! @babel/runtime/helpers/typeof */ "../node_modules/@babel/runtime/helpers/typeof.js"); +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; +var _react = _interopRequireWildcard(__webpack_require__(/*! react */ "react")); +var _regenerator = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/regenerator */ "../node_modules/@babel/runtime/regenerator/index.js")); +var _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ "../node_modules/@babel/runtime/helpers/asyncToGenerator.js")); +var _ui = __webpack_require__(/*! @elementor/ui */ "@elementor/ui"); +var _i18n = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n"); +var _usePromptHistory2 = _interopRequireDefault(__webpack_require__(/*! ../../hooks/use-prompt-history */ "../modules/ai/assets/js/editor/hooks/use-prompt-history.js")); +var _modalHeader = _interopRequireDefault(__webpack_require__(/*! ./parts/modal-header */ "../modules/ai/assets/js/editor/components/prompt-history/parts/modal-header.js")); +var _useDeletePromptHistoryItem = _interopRequireDefault(__webpack_require__(/*! ../../hooks/use-delete-prompt-history-item */ "../modules/ai/assets/js/editor/hooks/use-delete-prompt-history-item.js")); +var _promptErrorMessage = _interopRequireDefault(__webpack_require__(/*! ../prompt-error-message */ "../modules/ai/assets/js/editor/components/prompt-error-message.js")); +var _historyPeriodHelpers = __webpack_require__(/*! ./helpers/history-period-helpers */ "../modules/ai/assets/js/editor/components/prompt-history/helpers/history-period-helpers.js"); +var _modalEmpty = _interopRequireDefault(__webpack_require__(/*! ./parts/modal-empty */ "../modules/ai/assets/js/editor/components/prompt-history/parts/modal-empty.js")); +var _reactInfiniteScroller = _interopRequireDefault(__webpack_require__(/*! react-infinite-scroller */ "../node_modules/react-infinite-scroller/index.js")); +var _modalUpgrade = _interopRequireDefault(__webpack_require__(/*! ./parts/modal-upgrade */ "../modules/ai/assets/js/editor/components/prompt-history/parts/modal-upgrade.js")); +var _promptHistoryContext = __webpack_require__(/*! ./context/prompt-history-context */ "../modules/ai/assets/js/editor/components/prompt-history/context/prompt-history-context.js"); +var _modalContainer = _interopRequireDefault(__webpack_require__(/*! ./parts/modal-container */ "../modules/ai/assets/js/editor/components/prompt-history/parts/modal-container.js")); +function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); } +function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; } +var ITEMS_LIMIT = 10; +var FREE_PLAN_ERRORS = ['invalid_connect_data', 'no_subscription']; +var PromptHistoryModal = function PromptHistoryModal(props) { + var lastRun = (0, _react.useRef)(function () {}); + var scrollContainer = (0, _react.useRef)(null); + var _usePromptHistoryCont = (0, _promptHistoryContext.usePromptHistoryContext)(), + historyType = _usePromptHistoryCont.historyType, + onClose = _usePromptHistoryCont.onClose; + var _usePromptHistory = (0, _usePromptHistory2.default)(historyType), + items = _usePromptHistory.items, + meta = _usePromptHistory.meta, + isHistoryFetchingInProgress = _usePromptHistory.isLoading, + historyFetchingError = _usePromptHistory.error, + fetchData = _usePromptHistory.fetchData, + deleteItemFromState = _usePromptHistory.deleteItemById; + var _useDeletePromptHisto = (0, _useDeletePromptHistoryItem.default)(), + isDeletingInProgress = _useDeletePromptHisto.isLoading, + historyDeletingError = _useDeletePromptHisto.error, + deleteItem = _useDeletePromptHisto.deleteItem; + var error = historyFetchingError || historyDeletingError; + var isLoading = isHistoryFetchingInProgress || isDeletingInProgress; + var isLastPage = meta && (meta === null || meta === void 0 ? void 0 : meta.currentPage) === (meta === null || meta === void 0 ? void 0 : meta.totalPages); + var showUpgrade = (items === null || items === void 0 ? void 0 : items.length) > 0 && (meta === null || meta === void 0 ? void 0 : meta.allowedDays) < 90 && isLastPage; + (0, _react.useEffect)(function () { + lastRun.current = /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() { + return _regenerator.default.wrap(function _callee$(_context) { + while (1) switch (_context.prev = _context.next) { + case 0: + return _context.abrupt("return", fetchData({ + page: 1, + limit: ITEMS_LIMIT + })); + case 1: + case "end": + return _context.stop(); + } + }, _callee); + })); + lastRun.current(); + }, []); + var loadNext = function loadNext() { + if (isLoading || isLastPage) { + return; + } + lastRun.current = /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2() { + return _regenerator.default.wrap(function _callee2$(_context2) { + while (1) switch (_context2.prev = _context2.next) { + case 0: + return _context2.abrupt("return", fetchData({ + page: meta.currentPage + 1, + limit: ITEMS_LIMIT + })); + case 1: + case "end": + return _context2.stop(); + } + }, _callee2); + })); + lastRun.current(); + }; + var onHistoryItemDelete = /*#__PURE__*/function () { + var _ref3 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee4(id) { + return _regenerator.default.wrap(function _callee4$(_context4) { + while (1) switch (_context4.prev = _context4.next) { + case 0: + lastRun.current = /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3() { + return _regenerator.default.wrap(function _callee3$(_context3) { + while (1) switch (_context3.prev = _context3.next) { + case 0: + _context3.next = 2; + return deleteItem(id); + case 2: + return _context3.abrupt("return", _context3.sent); + case 3: + case "end": + return _context3.stop(); + } + }, _callee3); + })); + _context4.next = 3; + return lastRun.current(); + case 3: + if (!historyDeletingError) { + deleteItemFromState(id); + } + case 4: + case "end": + return _context4.stop(); + } + }, _callee4); + })); + return function onHistoryItemDelete(_x) { + return _ref3.apply(this, arguments); + }; + }(); + return /*#__PURE__*/_react.default.createElement(_modalContainer.default, props, /*#__PURE__*/_react.default.createElement(_modalHeader.default, { + onClose: onClose + }), error && !FREE_PLAN_ERRORS.includes(error) && /*#__PURE__*/_react.default.createElement(_promptErrorMessage.default, { + error: error, + onRetry: lastRun.current, + sx: { + position: 'absolute', + zIndex: 1, + marginTop: isLoading ? 0.5 : 'revert' + } + }), isLoading && /*#__PURE__*/_react.default.createElement(_ui.LinearProgress, { + role: "progressbar", + "aria-label": (0, _i18n.__)('Loading', 'elementor'), + color: "secondary" + }), /*#__PURE__*/_react.default.createElement(_ui.Box, { + sx: { + overflowY: 'scroll', + height: '85%' + }, + ref: scrollContainer + }, error && FREE_PLAN_ERRORS.includes(error) && /*#__PURE__*/_react.default.createElement(_modalUpgrade.default, { + variant: "full", + historyType: historyType + }), !error && 0 === (items === null || items === void 0 ? void 0 : items.length) && /*#__PURE__*/_react.default.createElement(_modalEmpty.default, { + historyType: historyType + }), (items === null || items === void 0 ? void 0 : items.length) > 0 && /*#__PURE__*/_react.default.createElement(_reactInfiniteScroller.default, { + loadMore: loadNext, + getScrollParent: function getScrollParent() { + return scrollContainer.current; + }, + useWindow: false, + isReverse: false, + threshold: 30, + initialLoad: false, + hasMore: !isLastPage + }, (0, _historyPeriodHelpers.renderPeriods)({ + items: items, + onDelete: onHistoryItemDelete + })), showUpgrade && /*#__PURE__*/_react.default.createElement(_modalUpgrade.default, { + variant: "small", + historyType: historyType + }))); +}; +var _default = PromptHistoryModal; +exports["default"] = _default; + +/***/ }), + +/***/ "../modules/ai/assets/js/editor/components/prompt-history/history-types.js": +/*!*********************************************************************************!*\ + !*** ../modules/ai/assets/js/editor/components/prompt-history/history-types.js ***! + \*********************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + + +var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js"); +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.getTranslatedPromptHistoryType = exports.TRANSLATED_HISTORY_TYPES_FALLBACK = exports.TRANSLATED_HISTORY_TYPES = exports.HISTORY_TYPES = void 0; +var _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/defineProperty */ "../node_modules/@babel/runtime/helpers/defineProperty.js")); +var _i18n = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n"); +var _Object$freeze; +var HISTORY_TYPES = Object.freeze({ + ALL: 'all', + TEXT: 'text', + CODE: 'code', + IMAGE: 'images', + BLOCK: 'blocks' +}); +exports.HISTORY_TYPES = HISTORY_TYPES; +var TRANSLATED_HISTORY_TYPES_FALLBACK = (0, _i18n.__)('things', 'elementor'); +exports.TRANSLATED_HISTORY_TYPES_FALLBACK = TRANSLATED_HISTORY_TYPES_FALLBACK; +var TRANSLATED_HISTORY_TYPES = Object.freeze((_Object$freeze = {}, (0, _defineProperty2.default)(_Object$freeze, HISTORY_TYPES.TEXT, (0, _i18n.__)('texts', 'elementor')), (0, _defineProperty2.default)(_Object$freeze, HISTORY_TYPES.CODE, (0, _i18n.__)('code', 'elementor')), (0, _defineProperty2.default)(_Object$freeze, HISTORY_TYPES.IMAGE, (0, _i18n.__)('images', 'elementor')), (0, _defineProperty2.default)(_Object$freeze, HISTORY_TYPES.BLOCK, (0, _i18n.__)('blocks', 'elementor')), _Object$freeze)); +exports.TRANSLATED_HISTORY_TYPES = TRANSLATED_HISTORY_TYPES; +var getTranslatedPromptHistoryType = function getTranslatedPromptHistoryType(historyType) { + if (TRANSLATED_HISTORY_TYPES[historyType]) { + return TRANSLATED_HISTORY_TYPES[historyType]; + } + return TRANSLATED_HISTORY_TYPES_FALLBACK; +}; +exports.getTranslatedPromptHistoryType = getTranslatedPromptHistoryType; + +/***/ }), + +/***/ "../modules/ai/assets/js/editor/components/prompt-history/index.js": +/*!*************************************************************************!*\ + !*** ../modules/ai/assets/js/editor/components/prompt-history/index.js ***! + \*************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + + +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 _react = _interopRequireDefault(__webpack_require__(/*! react */ "react")); +var _historyButton = _interopRequireDefault(__webpack_require__(/*! ./history-button */ "../modules/ai/assets/js/editor/components/prompt-history/history-button.js")); +var _historyModal = _interopRequireDefault(__webpack_require__(/*! ./history-modal */ "../modules/ai/assets/js/editor/components/prompt-history/history-modal.js")); +var _promptHistoryContext = __webpack_require__(/*! ./context/prompt-history-context */ "../modules/ai/assets/js/editor/components/prompt-history/context/prompt-history-context.js"); +var PROMPT_HISTORY_MODAL_ID = 'prompt-history-modal'; +var PromptHistory = function PromptHistory() { + var _usePromptHistoryCont = (0, _promptHistoryContext.usePromptHistoryContext)(), + isOpen = _usePromptHistoryCont.isOpen, + isModalOpen = _usePromptHistoryCont.isModalOpen, + onOpen = _usePromptHistoryCont.onOpen, + onClose = _usePromptHistoryCont.onClose; + return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_historyButton.default, { + isActive: isOpen, + onClick: function onClick() { + return isOpen ? onClose() : onOpen(); + }, + "aria-haspopup": "dialog", + "aria-controls": PROMPT_HISTORY_MODAL_ID + }), isModalOpen && /*#__PURE__*/_react.default.createElement(_historyModal.default, { + id: PROMPT_HISTORY_MODAL_ID + })); +}; +var _default = PromptHistory; +exports["default"] = _default; + +/***/ }), + +/***/ "../modules/ai/assets/js/editor/components/prompt-history/parts/action-icon.js": +/*!*************************************************************************************!*\ + !*** ../modules/ai/assets/js/editor/components/prompt-history/parts/action-icon.js ***! + \*************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + + +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 _react = _interopRequireDefault(__webpack_require__(/*! react */ "react")); +var _propTypes = _interopRequireDefault(__webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js")); +var _textIcon = _interopRequireDefault(__webpack_require__(/*! ../../../icons/text-icon */ "../modules/ai/assets/js/editor/icons/text-icon.js")); +var _icons = __webpack_require__(/*! @elementor/icons */ "@elementor/icons"); +var _codeIcon = _interopRequireDefault(__webpack_require__(/*! ../../../icons/code-icon */ "../modules/ai/assets/js/editor/icons/code-icon.js")); +var FALLBACK_ICON = /*#__PURE__*/_react.default.createElement(_icons.AIIcon, { + "data-testid": "e-ph-fi" +}); +var ICONS_BY_ACTIONS = Object.freeze({ + 'enhance-image-prompt': /*#__PURE__*/_react.default.createElement(_textIcon.default, null), + 'get-text': /*#__PURE__*/_react.default.createElement(_textIcon.default, null), + 'edit-text': /*#__PURE__*/_react.default.createElement(_textIcon.default, null), + 'custom-css': /*#__PURE__*/_react.default.createElement(_codeIcon.default, null), + 'custom-code': /*#__PURE__*/_react.default.createElement(_codeIcon.default, null) +}); +var PromptHistoryActionIcon = function PromptHistoryActionIcon(_ref) { + var action = _ref.action; + if (ICONS_BY_ACTIONS[action]) { + return ICONS_BY_ACTIONS[action]; + } + return FALLBACK_ICON; +}; +PromptHistoryActionIcon.propTypes = { + action: _propTypes.default.string.isRequired +}; +var _default = PromptHistoryActionIcon; +exports["default"] = _default; + +/***/ }), + +/***/ "../modules/ai/assets/js/editor/components/prompt-history/parts/modal-container.js": +/*!*****************************************************************************************!*\ + !*** ../modules/ai/assets/js/editor/components/prompt-history/parts/modal-container.js ***! + \*****************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + + +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 _react = _interopRequireDefault(__webpack_require__(/*! react */ "react")); +var _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ "../node_modules/@babel/runtime/helpers/extends.js")); +var _objectWithoutProperties2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/objectWithoutProperties */ "../node_modules/@babel/runtime/helpers/objectWithoutProperties.js")); +var _taggedTemplateLiteral2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/taggedTemplateLiteral */ "../node_modules/@babel/runtime/helpers/taggedTemplateLiteral.js")); +var _ui = __webpack_require__(/*! @elementor/ui */ "@elementor/ui"); +var _i18n = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n"); +var _propTypes = _interopRequireDefault(__webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js")); +var _promptHistoryContext = __webpack_require__(/*! ../context/prompt-history-context */ "../modules/ai/assets/js/editor/components/prompt-history/context/prompt-history-context.js"); +var _excluded = ["children"]; +var _templateObject; +var StyledContent = (0, _ui.styled)(_ui.Box)(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["\n width: 360px;\n position: relative;\n margin-top: ", ";\n margin-right: ", ";\n background-color: ", ";\n border-radius: ", ";\n height: ", ";\n\n @media screen and (max-width: 456px) {\n width: 320px;\n }\n\n @media screen and (max-width: 420px) {\n width: 230px;\n }\n"])), function (_ref) { + var theme = _ref.theme; + return theme.spacing(2); +}, function (_ref2) { + var theme = _ref2.theme; + return theme.spacing(2); +}, function (_ref3) { + var theme = _ref3.theme; + return theme.palette.background.paper; +}, function (_ref4) { + var theme = _ref4.theme; + return "".concat(theme.shape.borderRadius, "px"); +}, function (_ref5) { + var height = _ref5.height; + return "calc( ".concat(height, "px - 32px )"); +}); +var ModalContainer = function ModalContainer(_ref6) { + var children = _ref6.children, + props = (0, _objectWithoutProperties2.default)(_ref6, _excluded); + var _usePromptHistoryCont = (0, _promptHistoryContext.usePromptHistoryContext)(), + isOpen = _usePromptHistoryCont.isOpen, + isModalOpen = _usePromptHistoryCont.isModalOpen, + onClose = _usePromptHistoryCont.onClose, + getContainerHeight = _usePromptHistoryCont.getContainerHeight, + getContainer = _usePromptHistoryCont.getContainer; + return /*#__PURE__*/_react.default.createElement(_ui.Modal, (0, _extends2.default)({ + container: getContainer(), + open: isModalOpen, + hideBackdrop: true, + onClose: onClose, + sx: { + position: 'absolute' + } + }, props), /*#__PURE__*/_react.default.createElement(_ui.Backdrop, { + open: true, + sx: { + position: 'absolute', + justifyContent: 'flex-end', + alignItems: 'flex-start' + }, + "aria-hidden": false + }, /*#__PURE__*/_react.default.createElement(_ui.Slide, { + direction: "left", + in: isOpen, + timeout: 500, + easing: "ease-in-out" + }, /*#__PURE__*/_react.default.createElement(StyledContent, { + "aria-label": (0, _i18n.__)('Prompt history modal', 'elementor'), + height: getContainerHeight() + }, children)))); +}; +ModalContainer.propTypes = { + isOpen: _propTypes.default.bool.isRequired, + isModalOpen: _propTypes.default.bool.isRequired, + onClose: _propTypes.default.func.isRequired, + children: _propTypes.default.oneOfType([_propTypes.default.arrayOf(_propTypes.default.node), _propTypes.default.node]) +}; +var _default = ModalContainer; +exports["default"] = _default; + +/***/ }), + +/***/ "../modules/ai/assets/js/editor/components/prompt-history/parts/modal-empty.js": +/*!*************************************************************************************!*\ + !*** ../modules/ai/assets/js/editor/components/prompt-history/parts/modal-empty.js ***! + \*************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +/* provided dependency */ var sprintf = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n")["sprintf"]; + + +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 _react = _interopRequireDefault(__webpack_require__(/*! react */ "react")); +var _ui = __webpack_require__(/*! @elementor/ui */ "@elementor/ui"); +var _i18n = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n"); +var _propTypes = _interopRequireDefault(__webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js")); +var _historyTypes = __webpack_require__(/*! ../history-types */ "../modules/ai/assets/js/editor/components/prompt-history/history-types.js"); +var PromptHistoryEmpty = function PromptHistoryEmpty(_ref) { + var historyType = _ref.historyType; + return /*#__PURE__*/_react.default.createElement(_ui.Stack, { + justifyContent: "center", + sx: { + height: '100%', + textAlign: 'center' + }, + "data-testid": "e-ph-empty" + }, /*#__PURE__*/_react.default.createElement(_ui.Typography, { + variant: "h6" + }, (0, _i18n.__)('Prepare to be amazed', 'elementor')), /*#__PURE__*/_react.default.createElement(_ui.Typography, { + variant: "body1" + }, sprintf( + // Translators: %s: History type. + (0, _i18n.__)('This is where you\'ll find all the %s you\'ve generated using Elementor AI.', 'elementor'), (0, _historyTypes.getTranslatedPromptHistoryType)(historyType)))); +}; +PromptHistoryEmpty.propTypes = { + historyType: _propTypes.default.oneOf(Object.values(_historyTypes.HISTORY_TYPES)).isRequired +}; +var _default = PromptHistoryEmpty; +exports["default"] = _default; + +/***/ }), + +/***/ "../modules/ai/assets/js/editor/components/prompt-history/parts/modal-header.js": +/*!**************************************************************************************!*\ + !*** ../modules/ai/assets/js/editor/components/prompt-history/parts/modal-header.js ***! + \**************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + + +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 _react = _interopRequireDefault(__webpack_require__(/*! react */ "react")); +var _ui = __webpack_require__(/*! @elementor/ui */ "@elementor/ui"); +var _i18n = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n"); +var _propTypes = _interopRequireDefault(__webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js")); +var _icons = __webpack_require__(/*! @elementor/icons */ "@elementor/icons"); +var StyledContent = (0, _ui.styled)(_ui.Box)(function (_ref) { + var theme = _ref.theme; + return { + marginTop: 0, + padding: theme.spacing(1.5), + borderBottom: "1px solid ".concat(theme.palette.action.focus), + display: 'flex', + alignItems: 'center', + justifyContent: 'space-between' + }; +}); +var PromptHistoryModalHeader = function PromptHistoryModalHeader(_ref2) { + var onClose = _ref2.onClose; + return /*#__PURE__*/_react.default.createElement(StyledContent, null, /*#__PURE__*/_react.default.createElement(_ui.Typography, { + fontWeight: "bolder", + variant: "h6", + sx: { + userSelect: 'none' + } + }, (0, _i18n.__)('History', 'elementor')), /*#__PURE__*/_react.default.createElement(_ui.IconButton, { + size: "small", + "aria-label": (0, _i18n.__)('Hide prompt history', 'elementor'), + onClick: onClose + }, /*#__PURE__*/_react.default.createElement(_icons.XIcon, { + fontSize: "small" + }))); +}; +PromptHistoryModalHeader.propTypes = { + onClose: _propTypes.default.func.isRequired +}; +var _default = PromptHistoryModalHeader; +exports["default"] = _default; + +/***/ }), + +/***/ "../modules/ai/assets/js/editor/components/prompt-history/parts/modal-item-action-button.js": +/*!**************************************************************************************************!*\ + !*** ../modules/ai/assets/js/editor/components/prompt-history/parts/modal-item-action-button.js ***! + \**************************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + + +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 _react = _interopRequireDefault(__webpack_require__(/*! react */ "react")); +var _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ "../node_modules/@babel/runtime/helpers/extends.js")); +var _objectWithoutProperties2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/objectWithoutProperties */ "../node_modules/@babel/runtime/helpers/objectWithoutProperties.js")); +var _ui = __webpack_require__(/*! @elementor/ui */ "@elementor/ui"); +var _propTypes = _interopRequireDefault(__webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js")); +var _tooltip = _interopRequireDefault(__webpack_require__(/*! ../../tooltip */ "../modules/ai/assets/js/editor/components/tooltip.js")); +var _excluded = ["tooltipTitle"]; +var ActionButton = function ActionButton(_ref) { + var tooltipTitle = _ref.tooltipTitle, + props = (0, _objectWithoutProperties2.default)(_ref, _excluded); + return /*#__PURE__*/_react.default.createElement(_tooltip.default, { + title: tooltipTitle, + placement: "top" + }, /*#__PURE__*/_react.default.createElement(_ui.IconButton, (0, _extends2.default)({ + type: "button", + size: "small", + disableRipple: true, + disableFocusRipple: true, + disableTouchRipple: true + }, props))); +}; +ActionButton.propTypes = { + tooltipTitle: _propTypes.default.string.isRequired +}; +var _default = ActionButton; +exports["default"] = _default; + +/***/ }), + +/***/ "../modules/ai/assets/js/editor/components/prompt-history/parts/modal-item-secondary-content.js": +/*!******************************************************************************************************!*\ + !*** ../modules/ai/assets/js/editor/components/prompt-history/parts/modal-item-secondary-content.js ***! + \******************************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + + +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 _react = _interopRequireDefault(__webpack_require__(/*! react */ "react")); +var _taggedTemplateLiteral2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/taggedTemplateLiteral */ "../node_modules/@babel/runtime/helpers/taggedTemplateLiteral.js")); +var _ui = __webpack_require__(/*! @elementor/ui */ "@elementor/ui"); +var _propTypes = _interopRequireDefault(__webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js")); +var _templateObject, _templateObject2; +var StyledDateSubtitle = (0, _ui.styled)(_ui.Typography)(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["\n color: ", ";\n"])), function (_ref) { + var theme = _ref.theme; + return theme.palette.secondary.light; +}); +var StyledImage = (0, _ui.styled)('img')(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2.default)(["\n height: 72px;\n width: 72px;\n object-fit: cover;\n margin-right: ", ";\n"])), function (_ref2) { + var theme = _ref2.theme; + return theme.spacing(0.5); +}); +var PromptHistoryItemSecondaryContent = function PromptHistoryItemSecondaryContent(_ref3) { + var date = _ref3.date, + thumbnails = _ref3.thumbnails; + return /*#__PURE__*/_react.default.createElement(_ui.Stack, { + direction: "column", + width: "90%" + }, /*#__PURE__*/_react.default.createElement(StyledDateSubtitle, { + variant: "caption" + }, date), (thumbnails === null || thumbnails === void 0 ? void 0 : thumbnails.length) > 0 && /*#__PURE__*/_react.default.createElement(_ui.Stack, { + flexDirection: "row", + mt: 1 + }, thumbnails.map( + /** + * @param {Object} thumb + * @return {React.ReactNode} + */ + function (thumb) { + return /*#__PURE__*/_react.default.createElement(StyledImage, { + key: "thumbnail-".concat(thumb.seed), + alt: "", + src: thumb.image_url + }); + }))); +}; +PromptHistoryItemSecondaryContent.propTypes = { + date: _propTypes.default.string.isRequired, + thumbnails: _propTypes.default.array +}; +var _default = PromptHistoryItemSecondaryContent; +exports["default"] = _default; + +/***/ }), + +/***/ "../modules/ai/assets/js/editor/components/prompt-history/parts/modal-item-title.js": +/*!******************************************************************************************!*\ + !*** ../modules/ai/assets/js/editor/components/prompt-history/parts/modal-item-title.js ***! + \******************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + + +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 _react = _interopRequireDefault(__webpack_require__(/*! react */ "react")); +var _taggedTemplateLiteral2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/taggedTemplateLiteral */ "../node_modules/@babel/runtime/helpers/taggedTemplateLiteral.js")); +var _ui = __webpack_require__(/*! @elementor/ui */ "@elementor/ui"); +var _propTypes = _interopRequireDefault(__webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js")); +var _tooltip = _interopRequireDefault(__webpack_require__(/*! ../../tooltip */ "../modules/ai/assets/js/editor/components/tooltip.js")); +var _templateObject; +var StyledTitle = (0, _ui.styled)(_ui.Typography)(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["\n margin-bottom: ", ";\n"])), function (_ref) { + var theme = _ref.theme; + return theme.spacing(0.5); +}); +var PromptHistoryItemTitle = function PromptHistoryItemTitle(_ref2) { + var prompt = _ref2.prompt; + return /*#__PURE__*/_react.default.createElement(_tooltip.default, { + title: prompt, + arrow: false, + placement: "bottom-start" + }, /*#__PURE__*/_react.default.createElement(StyledTitle, { + variant: "body2", + noWrap: true, + paragraph: true + }, prompt)); +}; +PromptHistoryItemTitle.propTypes = { + prompt: _propTypes.default.string.isRequired +}; +var _default = PromptHistoryItemTitle; +exports["default"] = _default; + +/***/ }), + +/***/ "../modules/ai/assets/js/editor/components/prompt-history/parts/modal-item.js": +/*!************************************************************************************!*\ + !*** ../modules/ai/assets/js/editor/components/prompt-history/parts/modal-item.js ***! + \************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + + +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 _react = _interopRequireDefault(__webpack_require__(/*! react */ "react")); +var _objectWithoutProperties2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/objectWithoutProperties */ "../node_modules/@babel/runtime/helpers/objectWithoutProperties.js")); +var _taggedTemplateLiteral2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/taggedTemplateLiteral */ "../node_modules/@babel/runtime/helpers/taggedTemplateLiteral.js")); +var _ui = __webpack_require__(/*! @elementor/ui */ "@elementor/ui"); +var _i18n = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n"); +var _propTypes = _interopRequireDefault(__webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js")); +var _editIcon = _interopRequireDefault(__webpack_require__(/*! ../../../icons/edit-icon */ "../modules/ai/assets/js/editor/icons/edit-icon.js")); +var _icons = __webpack_require__(/*! @elementor/icons */ "@elementor/icons"); +var _restoreIcon = _interopRequireDefault(__webpack_require__(/*! ../../../icons/restore-icon */ "../modules/ai/assets/js/editor/icons/restore-icon.js")); +var _modalItemActionButton = _interopRequireDefault(__webpack_require__(/*! ./modal-item-action-button */ "../modules/ai/assets/js/editor/components/prompt-history/parts/modal-item-action-button.js")); +var _promptHistoryActionContext = __webpack_require__(/*! ../context/prompt-history-action-context */ "../modules/ai/assets/js/editor/components/prompt-history/context/prompt-history-action-context.js"); +var _actionIcon = _interopRequireDefault(__webpack_require__(/*! ./action-icon */ "../modules/ai/assets/js/editor/components/prompt-history/parts/action-icon.js")); +var _refreshIcon = _interopRequireDefault(__webpack_require__(/*! ../../../icons/refresh-icon */ "../modules/ai/assets/js/editor/icons/refresh-icon.js")); +var _modalItemTitle = _interopRequireDefault(__webpack_require__(/*! ./modal-item-title */ "../modules/ai/assets/js/editor/components/prompt-history/parts/modal-item-title.js")); +var _modalItemSecondaryContent = _interopRequireDefault(__webpack_require__(/*! ./modal-item-secondary-content */ "../modules/ai/assets/js/editor/components/prompt-history/parts/modal-item-secondary-content.js")); +var _excluded = ["id", "date", "onHistoryItemDelete"]; +var _templateObject, _templateObject2, _templateObject3, _templateObject4; +var StyledListItem = (0, _ui.styled)(_ui.ListItem)(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["\n & .e-prompt-history-item-actions {\n position: absolute;\n top: -9999px;\n }\n\n &:hover,\n &:focus-visible,\n &:focus-within {\n .MuiTypography-body2 {\n font-weight: 700;\n max-width: ", ";\n }\n\n .e-prompt-history-item-actions {\n position: relative;\n top: -3px;\n }\n }\n"])), function (_ref) { + var actionsCount = _ref.actionsCount; + return "calc(100% - ".concat(actionsCount, " * 26px)"); +}); +var StyledListItemButton = (0, _ui.styled)(_ui.ListItemButton)(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2.default)(["\n padding: ", ";\n align-items: flex-start;\n cursor: inherit;\n"])), function (_ref2) { + var theme = _ref2.theme; + return theme.spacing(0.5, 2); +}); +var StyledListItemIcon = (0, _ui.styled)(_ui.ListItemIcon)(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2.default)(["\n min-width: auto;\n\n & > .MuiSvgIcon-root {\n margin-right: ", ";\n font-size: 1rem;\n position: relative;\n top: ", ";\n }\n"])), function (_ref3) { + var theme = _ref3.theme; + return theme.spacing(1.5); +}, function (_ref4) { + var theme = _ref4.theme; + return theme.spacing(0.5); +}); +var StyledButtonsWrapper = (0, _ui.styled)(_ui.Box)(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2.default)(["\n & .MuiSvgIcon-root {\n font-size: 1rem;\n }\n"]))); +var PromptHistoryItem = function PromptHistoryItem(_ref5) { + var id = _ref5.id, + date = _ref5.date, + onHistoryItemDelete = _ref5.onHistoryItemDelete, + props = (0, _objectWithoutProperties2.default)(_ref5, _excluded); + var _usePromptHistoryActi = (0, _promptHistoryActionContext.usePromptHistoryAction)(), + getAllowedActions = _usePromptHistoryActi.getAllowedActions, + onPromptReuse = _usePromptHistoryActi.onPromptReuse, + onResultEdit = _usePromptHistoryActi.onResultEdit, + onImagesRestore = _usePromptHistoryActi.onImagesRestore; + var action = props.action, + prompt = props.prompt, + text = props.text, + images = props.images, + thumbnails = props.thumbnails, + imageType = props.imageType, + ratio = props.ratio; + var allowedActions = getAllowedActions(); + return /*#__PURE__*/_react.default.createElement(StyledListItem, { + tabIndex: "0", + "data-testid": "e-ph-i", + disableGutters: true, + disablePadding: true, + actionsCount: Object.keys(allowedActions).length + }, /*#__PURE__*/_react.default.createElement(StyledListItemButton, { + component: "div", + role: undefined + }, /*#__PURE__*/_react.default.createElement(StyledListItemIcon, null, /*#__PURE__*/_react.default.createElement(_actionIcon.default, { + action: action + })), /*#__PURE__*/_react.default.createElement(_ui.ListItemText, { + disableTypography: true, + primary: /*#__PURE__*/_react.default.createElement(_ui.Stack, { + direction: "row", + justifyContent: "space-between", + alignItems: "center", + height: "16px" + }, /*#__PURE__*/_react.default.createElement(_modalItemTitle.default, { + prompt: prompt + }), /*#__PURE__*/_react.default.createElement(StyledButtonsWrapper, { + className: "e-prompt-history-item-actions" + }, allowedActions[_promptHistoryActionContext.ACTION_TYPES.REMOVE] && /*#__PURE__*/_react.default.createElement(_modalItemActionButton.default, { + onClick: function onClick() { + return onHistoryItemDelete(id); + }, + "aria-label": (0, _i18n.__)('Remove item', 'elementor'), + tooltipTitle: (0, _i18n.__)('Remove', 'elementor') + }, /*#__PURE__*/_react.default.createElement(_icons.TrashIcon, null)), allowedActions[_promptHistoryActionContext.ACTION_TYPES.REUSE] && /*#__PURE__*/_react.default.createElement(_modalItemActionButton.default, { + onClick: function onClick() { + return onPromptReuse(id, prompt); + }, + "aria-label": (0, _i18n.__)('Reuse prompt', 'elementor'), + tooltipTitle: (0, _i18n.__)('Reuse prompt', 'elementor') + }, /*#__PURE__*/_react.default.createElement(_refreshIcon.default, null)), allowedActions[_promptHistoryActionContext.ACTION_TYPES.RESTORE] && /*#__PURE__*/_react.default.createElement(_modalItemActionButton.default, { + onClick: function onClick() { + return onImagesRestore(id, { + prompt: prompt, + images: images, + imageType: imageType, + ratio: ratio + }); + }, + "aria-label": (0, _i18n.__)('Restore', 'elementor'), + tooltipTitle: (0, _i18n.__)('Restore', 'elementor') + }, /*#__PURE__*/_react.default.createElement(_restoreIcon.default, null)), allowedActions[_promptHistoryActionContext.ACTION_TYPES.EDIT] && /*#__PURE__*/_react.default.createElement(_modalItemActionButton.default, { + onClick: function onClick() { + return onResultEdit(id, text); + }, + "aria-label": (0, _i18n.__)('Edit result', 'elementor'), + tooltipTitle: (0, _i18n.__)('Edit', 'elementor') + }, /*#__PURE__*/_react.default.createElement(_editIcon.default, null)))), + secondary: /*#__PURE__*/_react.default.createElement(_modalItemSecondaryContent.default, { + date: date, + thumbnails: thumbnails + }) + }))); +}; +PromptHistoryItem.propTypes = { + id: _propTypes.default.string.isRequired, + action: _propTypes.default.string.isRequired, + prompt: _propTypes.default.string.isRequired, + date: _propTypes.default.string.isRequired, + onHistoryItemDelete: _propTypes.default.func.isRequired, + text: _propTypes.default.string, + images: _propTypes.default.array, + thumbnails: _propTypes.default.array, + imageType: _propTypes.default.string, + ratio: _propTypes.default.string +}; +var _default = PromptHistoryItem; +exports["default"] = _default; + +/***/ }), + +/***/ "../modules/ai/assets/js/editor/components/prompt-history/parts/modal-period.js": +/*!**************************************************************************************!*\ + !*** ../modules/ai/assets/js/editor/components/prompt-history/parts/modal-period.js ***! + \**************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + + +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 _react = _interopRequireDefault(__webpack_require__(/*! react */ "react")); +var _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ "../node_modules/@babel/runtime/helpers/extends.js")); +var _objectWithoutProperties2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/objectWithoutProperties */ "../node_modules/@babel/runtime/helpers/objectWithoutProperties.js")); +var _ui = __webpack_require__(/*! @elementor/ui */ "@elementor/ui"); +var _i18n = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n"); +var _propTypes = _interopRequireDefault(__webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js")); +var _modalItem = _interopRequireDefault(__webpack_require__(/*! ./modal-item */ "../modules/ai/assets/js/editor/components/prompt-history/parts/modal-item.js")); +var _dateHelpers = __webpack_require__(/*! ../../../helpers/date-helpers */ "../modules/ai/assets/js/editor/helpers/date-helpers.js"); +var _excluded = ["id", "date"]; +var StyledPeriodList = (0, _ui.styled)(_ui.List)(function (_ref) { + var theme = _ref.theme; + return { + borderBottom: "1px solid ".concat(theme.palette.action.focus) + }; +}); +var StyledPeriodTitle = (0, _ui.styled)(_ui.Typography)(function (_ref2) { + var theme = _ref2.theme; + return { + padding: theme.spacing(1.5, 2), + color: theme.palette.secondary.light + }; +}); +var DATE_FORMAT = (0, _i18n.__)('F j, g:i A', 'elementor'); +var PromptHistoryPeriod = function PromptHistoryPeriod(_ref3) { + var periodTitle = _ref3.periodTitle, + historyItems = _ref3.historyItems, + _onHistoryItemDelete = _ref3.onHistoryItemDelete; + return /*#__PURE__*/_react.default.createElement(StyledPeriodList, { + "data-testid": "e-ph-p", + subheader: /*#__PURE__*/_react.default.createElement(_ui.ListSubheader, { + disableSticky: true, + disableGutters: true + }, /*#__PURE__*/_react.default.createElement(StyledPeriodTitle, { + variant: "body2", + role: "heading", + "aria-level": "6" + }, periodTitle)) + }, historyItems.map(function (_ref4) { + var id = _ref4.id, + date = _ref4.date, + props = (0, _objectWithoutProperties2.default)(_ref4, _excluded); + return /*#__PURE__*/_react.default.createElement(_modalItem.default, (0, _extends2.default)({ + key: id, + date: (0, _dateHelpers.translateDate)(DATE_FORMAT, date), + onHistoryItemDelete: function onHistoryItemDelete() { + return _onHistoryItemDelete(id); + }, + id: id + }, props)); + })); +}; +PromptHistoryPeriod.propTypes = { + periodTitle: _propTypes.default.string.isRequired, + historyItems: _propTypes.default.array.isRequired, + onHistoryItemDelete: _propTypes.default.func.isRequired +}; +var _default = PromptHistoryPeriod; +exports["default"] = _default; + +/***/ }), + +/***/ "../modules/ai/assets/js/editor/components/prompt-history/parts/modal-upgrade.js": +/*!***************************************************************************************!*\ + !*** ../modules/ai/assets/js/editor/components/prompt-history/parts/modal-upgrade.js ***! + \***************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +/* provided dependency */ var sprintf = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n")["sprintf"]; + + +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 _react = _interopRequireDefault(__webpack_require__(/*! react */ "react")); +var _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/defineProperty */ "../node_modules/@babel/runtime/helpers/defineProperty.js")); +var _ui = __webpack_require__(/*! @elementor/ui */ "@elementor/ui"); +var _i18n = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n"); +var _propTypes = _interopRequireDefault(__webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js")); +var _icons = __webpack_require__(/*! @elementor/icons */ "@elementor/icons"); +var _historyTypes = __webpack_require__(/*! ../history-types */ "../modules/ai/assets/js/editor/components/prompt-history/history-types.js"); +var _messages; +var VARIANT_FULL = 'full'; +var VARIANT_SMALL = 'small'; +var messages = (_messages = {}, (0, _defineProperty2.default)(_messages, VARIANT_FULL, (0, _i18n.__)('Want to see your %s generation history for as far as the past 90 days?', 'elementor')), (0, _defineProperty2.default)(_messages, VARIANT_SMALL, (0, _i18n.__)('Want to see your %s generation history for the past 90 days?', 'elementor')), _messages); +var actionUrl = 'https://go.elementor.com/ai-popup-purchase-dropdown/'; +var getMessage = function getMessage(variant, historyType) { + var placeholder = messages[variant] || messages[VARIANT_FULL]; + var translatedHistoryType = (0, _historyTypes.getTranslatedPromptHistoryType)(historyType); + return sprintf(placeholder, translatedHistoryType); +}; +var PromptHistoryUpgrade = function PromptHistoryUpgrade(_ref) { + var variant = _ref.variant, + historyType = _ref.historyType; + return /*#__PURE__*/_react.default.createElement(_ui.Stack, { + justifyContent: "center", + sx: { + height: VARIANT_SMALL === variant ? 'auto' : '100%', + textAlign: 'center', + p: 2 + }, + "data-testid": "e-ph-upgrade-".concat(variant) + }, /*#__PURE__*/_react.default.createElement(_ui.Typography, { + variant: "body1", + sx: { + marginBottom: 2 + } + }, getMessage(variant, historyType)), /*#__PURE__*/_react.default.createElement(_ui.Button, { + variant: "contained", + color: "promotion", + size: "small", + href: actionUrl, + target: "_blank", + rel: "noopener noreferrer", + startIcon: /*#__PURE__*/_react.default.createElement(_icons.UpgradeIcon, null), + sx: { + width: '50%', + alignSelf: 'center', + '&:hover': { + color: 'promotion.contrastText' + } + } + }, (0, _i18n.__)('Upgrade now', 'elementor'))); +}; +PromptHistoryUpgrade.propTypes = { + variant: _propTypes.default.oneOf([VARIANT_FULL, VARIANT_SMALL]).isRequired, + historyType: _propTypes.default.oneOf(Object.values(_historyTypes.HISTORY_TYPES)).isRequired +}; +var _default = PromptHistoryUpgrade; +exports["default"] = _default; + +/***/ }), + +/***/ "../modules/ai/assets/js/editor/components/prompt-library-link.js": +/*!************************************************************************!*\ + !*** ../modules/ai/assets/js/editor/components/prompt-library-link.js ***! + \************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + + +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 _react = _interopRequireDefault(__webpack_require__(/*! react */ "react")); +var _ui = __webpack_require__(/*! @elementor/ui */ "@elementor/ui"); +var _i18n = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n"); +var _propTypes = _interopRequireDefault(__webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js")); +var PromptLibraryLink = function PromptLibraryLink(props) { + return /*#__PURE__*/_react.default.createElement(_ui.Typography, { + variant: "body2", + color: "text.secondary" + }, (0, _i18n.__)('For more suggestions, explore our'), ' ', /*#__PURE__*/_react.default.createElement(_ui.Link, { + href: props.libraryLink, + className: "elementor-clickable", + target: "_blank" + }, (0, _i18n.__)('prompt library'))); +}; +PromptLibraryLink.propTypes = { + libraryLink: _propTypes.default.string +}; +var _default = PromptLibraryLink; +exports["default"] = _default; + +/***/ }), + +/***/ "../modules/ai/assets/js/editor/components/prompt-search.js": +/*!******************************************************************!*\ + !*** ../modules/ai/assets/js/editor/components/prompt-search.js ***! + \******************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + + +var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js"); +var _typeof = __webpack_require__(/*! @babel/runtime/helpers/typeof */ "../node_modules/@babel/runtime/helpers/typeof.js"); +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; +var _react = _interopRequireWildcard(__webpack_require__(/*! react */ "react")); +var _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ "../node_modules/@babel/runtime/helpers/extends.js")); +var _i18n = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n"); +var _searchField = _interopRequireDefault(__webpack_require__(/*! ./ui/search-field */ "../modules/ai/assets/js/editor/components/ui/search-field.js")); +function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); } +function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; } +var PromptSearch = (0, _react.forwardRef)(function (props, ref) { + return /*#__PURE__*/_react.default.createElement(_searchField.default, (0, _extends2.default)({ + name: "prompt", + placeholder: (0, _i18n.__)('Describe the text and tone you want to use', 'elementor') + '...' + }, props, { + ref: ref + })); +}); +var _default = PromptSearch; +exports["default"] = _default; + +/***/ }), + +/***/ "../modules/ai/assets/js/editor/components/prompt-suggestions.js": +/*!***********************************************************************!*\ + !*** ../modules/ai/assets/js/editor/components/prompt-suggestions.js ***! + \***********************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + + +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 _react = _interopRequireDefault(__webpack_require__(/*! react */ "react")); +var _ui = __webpack_require__(/*! @elementor/ui */ "@elementor/ui"); +var _i18n = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n"); +var _propTypes = _interopRequireDefault(__webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js")); +var PromptSuggestions = function PromptSuggestions(props) { + var _props$suggestions; + return /*#__PURE__*/_react.default.createElement(_ui.Box, null, /*#__PURE__*/_react.default.createElement(_ui.Typography, { + variant: "subtitle1", + color: "text.secondary" + }, (0, _i18n.__)('Suggested prompts', 'elementor') + ':'), /*#__PURE__*/_react.default.createElement(_ui.Stack, { + direction: "column", + alignItems: "flex-start", + gap: 1, + sx: { + my: 1 + } + }, (_props$suggestions = props.suggestions) === null || _props$suggestions === void 0 ? void 0 : _props$suggestions.map(function (option, index) { + var _props$suggestionFilt; + return /*#__PURE__*/_react.default.createElement(_ui.Chip, { + key: index, + variant: "outlined", + size: "large", + color: "secondary", + label: ((_props$suggestionFilt = props.suggestionFilter) === null || _props$suggestionFilt === void 0 ? void 0 : _props$suggestionFilt.call(props, option)) || option, + onClick: function onClick() { + return props.onSelect(option); + } + }); + })), props.children); +}; +PromptSuggestions.propTypes = { + suggestions: _propTypes.default.arrayOf(_propTypes.default.string), + onSelect: _propTypes.default.func.isRequired, + suggestionFilter: _propTypes.default.func, + children: _propTypes.default.node +}; +var _default = PromptSuggestions; +exports["default"] = _default; + +/***/ }), + +/***/ "../modules/ai/assets/js/editor/components/textarea.js": +/*!*************************************************************!*\ + !*** ../modules/ai/assets/js/editor/components/textarea.js ***! + \*************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + + +var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js"); +var _typeof = __webpack_require__(/*! @babel/runtime/helpers/typeof */ "../node_modules/@babel/runtime/helpers/typeof.js"); +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; +var _react = _interopRequireWildcard(__webpack_require__(/*! react */ "react")); +var _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ "../node_modules/@babel/runtime/helpers/extends.js")); +var _ui = __webpack_require__(/*! @elementor/ui */ "@elementor/ui"); +var _propTypes = _interopRequireDefault(__webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js")); +function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); } +function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; } +var Textarea = (0, _react.forwardRef)(function (props, ref) { + return /*#__PURE__*/_react.default.createElement(_ui.TextField, (0, _extends2.default)({ + inputRef: ref, + multiline: true, + minRows: 4, + maxRows: 20, + color: "secondary" + }, props)); +}); +Textarea.propTypes = { + value: _propTypes.default.string, + onChange: _propTypes.default.func, + helperText: _propTypes.default.string +}; +var _default = Textarea; +exports["default"] = _default; + +/***/ }), + +/***/ "../modules/ai/assets/js/editor/components/tooltip.js": +/*!************************************************************!*\ + !*** ../modules/ai/assets/js/editor/components/tooltip.js ***! + \************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + + +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 _react = _interopRequireDefault(__webpack_require__(/*! react */ "react")); +var _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ "../node_modules/@babel/runtime/helpers/extends.js")); +var _objectWithoutProperties2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/objectWithoutProperties */ "../node_modules/@babel/runtime/helpers/objectWithoutProperties.js")); +var _ui = __webpack_require__(/*! @elementor/ui */ "@elementor/ui"); +var _propTypes = _interopRequireDefault(__webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js")); +var _excluded = ["children"]; +var Tooltip = function Tooltip(_ref) { + var children = _ref.children, + props = (0, _objectWithoutProperties2.default)(_ref, _excluded); + return /*#__PURE__*/_react.default.createElement(_ui.Tooltip, (0, _extends2.default)({ + componentsProps: { + tooltip: { + sx: { + '&.MuiTooltip-tooltip[class*="MuiTooltip-tooltipPlacement"]': { + m: 0, + fontSize: '10px', + fontWeight: 500, + lineHeight: '1.4em' + }, + py: 0.5, + px: 1 + } + } + } + }, props), children); +}; +Tooltip.propTypes = { + children: _propTypes.default.oneOfType([_propTypes.default.arrayOf(_propTypes.default.node), _propTypes.default.node]) +}; +var _default = Tooltip; +exports["default"] = _default; + +/***/ }), + +/***/ "../modules/ai/assets/js/editor/components/ui/overlay-bar-text.js": +/*!************************************************************************!*\ + !*** ../modules/ai/assets/js/editor/components/ui/overlay-bar-text.js ***! + \************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + + +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 _react = _interopRequireDefault(__webpack_require__(/*! react */ "react")); +var _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ "../node_modules/@babel/runtime/helpers/extends.js")); +var _objectWithoutProperties2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/objectWithoutProperties */ "../node_modules/@babel/runtime/helpers/objectWithoutProperties.js")); +var _ui = __webpack_require__(/*! @elementor/ui */ "@elementor/ui"); +var _propTypes = _interopRequireDefault(__webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js")); +var _excluded = ["children"]; +var OverlayBarText = function OverlayBarText(_ref) { + var children = _ref.children, + props = (0, _objectWithoutProperties2.default)(_ref, _excluded); + return /*#__PURE__*/_react.default.createElement(_ui.Typography, (0, _extends2.default)({ + variant: "caption", + color: "common.white" + }, props), children); +}; +OverlayBarText.propTypes = { + children: _propTypes.default.node +}; +var _default = OverlayBarText; +exports["default"] = _default; + +/***/ }), + +/***/ "../modules/ai/assets/js/editor/components/ui/overlay-bar.js": +/*!*******************************************************************!*\ + !*** ../modules/ai/assets/js/editor/components/ui/overlay-bar.js ***! + \*******************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; +var _ui = __webpack_require__(/*! @elementor/ui */ "@elementor/ui"); +var OverlayBar = (0, _ui.styled)(_ui.Stack)(function (_ref) { + var theme = _ref.theme, + position = _ref.position; + var style = { + width: '100%', + position: 'absolute', + left: 0, + padding: theme.spacing(2.5) + }; + if ('top' === position) { + style.top = 0; + } else if ('bottom' === position) { + style.bottom = 0; + } + return style; +}); +var _default = OverlayBar; +exports["default"] = _default; + +/***/ }), + +/***/ "../modules/ai/assets/js/editor/components/ui/overlay.js": +/*!***************************************************************!*\ + !*** ../modules/ai/assets/js/editor/components/ui/overlay.js ***! + \***************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; +var _ui = __webpack_require__(/*! @elementor/ui */ "@elementor/ui"); +var Overlay = (0, _ui.styled)(_ui.Box)(function (_ref) { + var theme = _ref.theme; + return { + width: '100%', + height: '100%', + position: 'absolute', + backgroundColor: 'rgba(0,0,0,0.5)', + transition: "opacity ".concat(theme.transitions.duration.short, "ms ").concat(theme.transitions.easing.easeInOut), + opacity: 0, + '&:hover': { + opacity: 1 + } + }; +}); +var _default = Overlay; +exports["default"] = _default; + +/***/ }), + +/***/ "../modules/ai/assets/js/editor/components/ui/panel.js": +/*!*************************************************************!*\ + !*** ../modules/ai/assets/js/editor/components/ui/panel.js ***! + \*************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + + +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 _react = _interopRequireDefault(__webpack_require__(/*! react */ "react")); +var _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ "../node_modules/@babel/runtime/helpers/extends.js")); +var _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/defineProperty */ "../node_modules/@babel/runtime/helpers/defineProperty.js")); +var _objectWithoutProperties2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/objectWithoutProperties */ "../node_modules/@babel/runtime/helpers/objectWithoutProperties.js")); +var _ui = __webpack_require__(/*! @elementor/ui */ "@elementor/ui"); +var _propTypes = _interopRequireDefault(__webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js")); +var _excluded = ["sx"]; +function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; } +function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; } +var Panel = function Panel(_ref) { + var _ref$sx = _ref.sx, + sx = _ref$sx === void 0 ? {} : _ref$sx, + props = (0, _objectWithoutProperties2.default)(_ref, _excluded); + return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_ui.Box, (0, _extends2.default)({ + sx: _objectSpread({ + p: 4, + width: 360, + flexShrink: 0, + height: '100%', + overflowY: 'auto' + }, sx) + }, props), props.children), /*#__PURE__*/_react.default.createElement(_ui.Divider, { + orientation: "vertical" + })); +}; +Panel.propTypes = { + children: _propTypes.default.node, + sx: _propTypes.default.object +}; +var _default = Panel; +exports["default"] = _default; + +/***/ }), + +/***/ "../modules/ai/assets/js/editor/components/ui/search-field.js": +/*!********************************************************************!*\ + !*** ../modules/ai/assets/js/editor/components/ui/search-field.js ***! + \********************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + + +var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js"); +var _typeof = __webpack_require__(/*! @babel/runtime/helpers/typeof */ "../node_modules/@babel/runtime/helpers/typeof.js"); +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; +var _react = _interopRequireWildcard(__webpack_require__(/*! react */ "react")); +var _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ "../node_modules/@babel/runtime/helpers/extends.js")); +var _ui = __webpack_require__(/*! @elementor/ui */ "@elementor/ui"); +var _propTypes = _interopRequireDefault(__webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js")); +var _icons = __webpack_require__(/*! @elementor/icons */ "@elementor/icons"); +function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); } +function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; } +// Customization for the WP admin global CSS. +var StyledTextField = (0, _ui.styled)(_ui.TextField)(function () { + return { + '.wp-admin & .MuiInputBase-input, & .MuiInputBase-input:focus': { + backgroundColor: 'initial', + boxShadow: 'none', + border: 0, + color: 'inherit', + outline: 0, + /** + * TODO: + * Find a better solution to get the component padding value dynamically or fix the global CSS override. + * These values are taken from Material UI's source code (the left padding reset was added to match the component style). + */ + padding: '16.5px 14px 16.5px 0', + '&.MuiInputBase-inputSizeSmall': { + padding: '8.5px 14px 8.5px 0' + } + } + }; +}); +var SearchField = (0, _react.forwardRef)(function (props, ref) { + return /*#__PURE__*/_react.default.createElement(StyledTextField + // eslint-disable-next-line jsx-a11y/no-autofocus + , (0, _extends2.default)({ + autoFocus: true, + fullWidth: true, + required: true, + size: "small", + color: "secondary", + InputProps: { + autoComplete: 'off', + startAdornment: /*#__PURE__*/_react.default.createElement(_ui.InputAdornment, { + position: "start" + }, /*#__PURE__*/_react.default.createElement(_icons.SearchIcon, null)) + }, + placeholder: props.placeholder, + name: props.name, + value: props.value, + onChange: props.onChange + }, props, { + inputRef: ref + })); +}); +SearchField.propTypes = { + placeholder: _propTypes.default.string, + name: _propTypes.default.string, + value: _propTypes.default.string, + onChange: _propTypes.default.func +}; +var _default = SearchField; +exports["default"] = _default; + +/***/ }), + +/***/ "../modules/ai/assets/js/editor/components/upgrade-banner.js": +/*!*******************************************************************!*\ + !*** ../modules/ai/assets/js/editor/components/upgrade-banner.js ***! + \*******************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +/* provided dependency */ var __ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n")["__"]; +/* provided dependency */ var PropTypes = __webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js"); + + +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 _react = _interopRequireDefault(__webpack_require__(/*! react */ "react")); +var _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ "../node_modules/@babel/runtime/helpers/extends.js")); +var _objectWithoutProperties2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/objectWithoutProperties */ "../node_modules/@babel/runtime/helpers/objectWithoutProperties.js")); +var _ui = __webpack_require__(/*! @elementor/ui */ "@elementor/ui"); +var _excluded = ["onClose"]; +var UpgradeBanner = function UpgradeBanner(_ref) { + var onClose = _ref.onClose, + props = (0, _objectWithoutProperties2.default)(_ref, _excluded); + return /*#__PURE__*/_react.default.createElement(_ui.Alert, (0, _extends2.default)({ + icon: false, + action: /*#__PURE__*/_react.default.createElement(_ui.AlertAction, { + onClick: function onClick() { + return window.open('https://go.elementor.com/ai-banner-free-upgrade/', '_blank'); + } + }, __('Upgrade', 'elementor')), + variant: "filled", + color: "promotion", + onClose: onClose + }, props), __('You’re using a limited license. Get maximum access to Elementor AI.', 'elementor')); +}; +UpgradeBanner.propTypes = { + onClose: PropTypes.func, + sx: PropTypes.object +}; +var _default = UpgradeBanner; +exports["default"] = _default; + +/***/ }), + +/***/ "../modules/ai/assets/js/editor/components/upgrade-chip.js": +/*!*****************************************************************!*\ + !*** ../modules/ai/assets/js/editor/components/upgrade-chip.js ***! + \*****************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + + +var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js"); +var _typeof = __webpack_require__(/*! @babel/runtime/helpers/typeof */ "../node_modules/@babel/runtime/helpers/typeof.js"); +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; +var _react = _interopRequireWildcard(__webpack_require__(/*! react */ "react")); +var _slicedToArray2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/slicedToArray */ "../node_modules/@babel/runtime/helpers/slicedToArray.js")); +var _ui = __webpack_require__(/*! @elementor/ui */ "@elementor/ui"); +var _i18n = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n"); +var _propTypes = _interopRequireDefault(__webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js")); +var _icons = __webpack_require__(/*! @elementor/icons */ "@elementor/icons"); +function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); } +function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; } +var popoverId = 'e-ai-upgrade-popover'; +var StyledContent = (0, _ui.styled)(_ui.Paper)(function (_ref) { + var theme = _ref.theme; + return { + position: 'relative', + '[data-popper-placement="top"] &': { + marginBottom: theme.spacing(2.5) + }, + '[data-popper-placement="bottom"] &': { + marginTop: theme.spacing(2.5) + }, + padding: theme.spacing(3), + boxShadow: theme.shadows[4], + zIndex: '9999' + }; +}); +var StyledArrow = (0, _ui.styled)(_ui.Box)(function (_ref2) { + var theme = _ref2.theme; + return { + width: theme.spacing(5), + height: theme.spacing(2.5), + position: 'absolute', + overflow: 'hidden', + // Override Popper inline styles. + left: '50% !important', + transform: 'translateX(-50%) rotate(var(--rotate, 0deg)) !important', + '[data-popper-placement="top"] &': { + top: '100%' + }, + '[data-popper-placement="bottom"] &': { + '--rotate': '180deg', + top: "calc(".concat(theme.spacing(2.5), " * -1)") + }, + '&::after': { + backgroundColor: theme.palette.background.paper, + content: '""', + display: 'block', + position: 'absolute', + width: theme.spacing(2.5), + height: theme.spacing(2.5), + top: 0, + left: '50%', + transform: 'translateX(-50%) translateY(-50%) rotate(45deg)', + boxShadow: '1px 1px 5px 0px rgba(0, 0, 0, 0.2)', + backgroundImage: 'linear-gradient(rgba(255, 255, 255, 0.05), rgba(255, 255, 255, 0.05))' + } + }; +}); +var upgradeBullets = [(0, _i18n.__)('Let AI build your container layouts and content with ease and radically transform the way you create websites.', 'elementor'), (0, _i18n.__)('Generate your website\'s text or create custom code without having to write a single line yourself.', 'elementor'), (0, _i18n.__)('Effortlessly create or enhance stunning images and bring your ideas to life.', 'elementor'), (0, _i18n.__)('Access 30-days of AI History with the AI Starter plan and 90-days with the Power plan.', 'elementor')]; +var Chip = (0, _ui.styled)(_ui.Chip)(function () { + return { + '& .MuiChip-label': { + lineHeight: 1.5 + }, + '& .MuiSvgIcon-root.MuiChip-icon': { + fontSize: '1.25rem' + } + }; +}); +var UpgradeChip = function UpgradeChip(_ref3) { + var _ref3$hasSubscription = _ref3.hasSubscription, + hasSubscription = _ref3$hasSubscription === void 0 ? false : _ref3$hasSubscription, + _ref3$usagePercentage = _ref3.usagePercentage, + usagePercentage = _ref3$usagePercentage === void 0 ? 0 : _ref3$usagePercentage; + var _useState = (0, _react.useState)(false), + _useState2 = (0, _slicedToArray2.default)(_useState, 2), + isPopoverOpen = _useState2[0], + setIsPopoverOpen = _useState2[1]; + var anchorEl = (0, _react.useRef)(null); + var arrowEl = (0, _react.useRef)(null); + var showPopover = function showPopover() { + return setIsPopoverOpen(true); + }; + var hidePopover = function hidePopover() { + return setIsPopoverOpen(false); + }; + var actionUrl = 'https://go.elementor.com/ai-popup-purchase-dropdown/'; + if (hasSubscription) { + actionUrl = usagePercentage >= 100 ? 'https://go.elementor.com/ai-popup-upgrade-limit-reached/' : 'https://go.elementor.com/ai-popup-upgrade-limit-reached-80-percent/'; + } + var actionLabel = hasSubscription ? (0, _i18n.__)('Upgrade Elementor AI', 'elementor') : (0, _i18n.__)('Get Elementor AI', 'elementor'); + return /*#__PURE__*/_react.default.createElement(_ui.Box, { + component: "span", + "aria-owns": isPopoverOpen ? popoverId : undefined, + "aria-haspopup": "true", + onMouseEnter: showPopover, + onMouseLeave: hidePopover, + ref: anchorEl, + display: "flex", + alignItems: "center" + }, /*#__PURE__*/_react.default.createElement(Chip, { + color: "promotion", + label: (0, _i18n.__)('Upgrade', 'elementor'), + icon: /*#__PURE__*/_react.default.createElement(_icons.AIIcon, null), + size: "small" + }), /*#__PURE__*/_react.default.createElement(_ui.Popper, { + open: isPopoverOpen, + anchorEl: anchorEl.current, + sx: { + zIndex: '9999', + maxWidth: 300 + }, + modifiers: [{ + name: 'arrow', + enabled: true, + options: { + element: arrowEl.current + } + }] + }, /*#__PURE__*/_react.default.createElement(StyledContent, null, /*#__PURE__*/_react.default.createElement(StyledArrow, { + ref: arrowEl + }), /*#__PURE__*/_react.default.createElement(_ui.Typography, { + variant: "h5", + color: "text.primary" + }, (0, _i18n.__)('Maximize Your Access to Elementor AI', 'elementor')), /*#__PURE__*/_react.default.createElement(_ui.List, { + sx: { + mb: 1 + } + }, upgradeBullets.map(function (bullet, index) { + return /*#__PURE__*/_react.default.createElement(_ui.ListItem, { + key: index, + disableGutters: true, + sx: { + alignItems: 'flex-start' + } + }, /*#__PURE__*/_react.default.createElement(_ui.ListItemIcon, null, /*#__PURE__*/_react.default.createElement(_icons.CheckedCircleIcon, null)), /*#__PURE__*/_react.default.createElement(_ui.ListItemText, { + sx: { + m: 0 + } + }, /*#__PURE__*/_react.default.createElement(_ui.Typography, { + variant: "body2" + }, bullet))); + })), /*#__PURE__*/_react.default.createElement(_ui.Button, { + variant: "contained", + color: "promotion", + size: "small", + href: actionUrl, + target: "_blank", + startIcon: /*#__PURE__*/_react.default.createElement(_icons.AIIcon, null), + sx: { + '&:hover': { + color: 'promotion.contrastText' + } + } + }, actionLabel)))); +}; +var _default = UpgradeChip; +exports["default"] = _default; +UpgradeChip.propTypes = { + hasSubscription: _propTypes.default.bool, + usagePercentage: _propTypes.default.number +}; + +/***/ }), + +/***/ "../modules/ai/assets/js/editor/components/usage-limit-alert.js": +/*!**********************************************************************!*\ + !*** ../modules/ai/assets/js/editor/components/usage-limit-alert.js ***! + \**********************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +/* provided dependency */ var __ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n")["__"]; +/* provided dependency */ var PropTypes = __webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js"); + + +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 _react = _interopRequireDefault(__webpack_require__(/*! react */ "react")); +var _objectWithoutProperties2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/objectWithoutProperties */ "../node_modules/@babel/runtime/helpers/objectWithoutProperties.js")); +var _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ "../node_modules/@babel/runtime/helpers/extends.js")); +var _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/defineProperty */ "../node_modules/@babel/runtime/helpers/defineProperty.js")); +var _ui = __webpack_require__(/*! @elementor/ui */ "@elementor/ui"); +var _excluded = ["onClose", "usagePercentage", "hasSubscription"]; +var _title, _description, _url, _title2, _description2, _url2, _title3, _description3, _url3; +var KEY_SUBSCRIPTION = 'subscription'; +var KEY_NO_SUBSCRIPTION = 'noSubscription'; +var alertConfigs = [{ + threshold: 95, + title: (_title = {}, (0, _defineProperty2.default)(_title, KEY_SUBSCRIPTION, __('You’ve used over 95% of your Elementor AI plan.', 'elementor')), (0, _defineProperty2.default)(_title, KEY_NO_SUBSCRIPTION, __('You’ve used 95% of credits for this AI feature.', 'elementor')), _title), + description: (_description = {}, (0, _defineProperty2.default)(_description, KEY_SUBSCRIPTION, __('Get maximum access.', 'elementor')), (0, _defineProperty2.default)(_description, KEY_NO_SUBSCRIPTION, __('Upgrade now to keep using this feature. You still have credits for other AI features (Text, Code, Images, Containers, etc.)', 'elementor')), _description), + url: (_url = {}, (0, _defineProperty2.default)(_url, KEY_SUBSCRIPTION, 'https://go.elementor.com/ai-banner-paid-95-limit-reach/'), (0, _defineProperty2.default)(_url, KEY_NO_SUBSCRIPTION, 'https://go.elementor.com/ai-banner-free-95-limit-reach/'), _url), + color: 'error' +}, { + threshold: 80, + title: (_title2 = {}, (0, _defineProperty2.default)(_title2, KEY_SUBSCRIPTION, __('You’ve used over 80% of your Elementor AI plan.', 'elementor')), (0, _defineProperty2.default)(_title2, KEY_NO_SUBSCRIPTION, __('You’ve used 80% of credits for this AI feature.', 'elementor')), _title2), + description: (_description2 = {}, (0, _defineProperty2.default)(_description2, KEY_SUBSCRIPTION, __('Get maximum access.', 'elementor')), (0, _defineProperty2.default)(_description2, KEY_NO_SUBSCRIPTION, __('Upgrade now to keep using this feature. You still have credits for other AI features (Text, Code, Images, Containers, etc.)', 'elementor')), _description2), + url: (_url2 = {}, (0, _defineProperty2.default)(_url2, KEY_SUBSCRIPTION, 'https://go.elementor.com/ai-banner-paid-80-limit-reach/'), (0, _defineProperty2.default)(_url2, KEY_NO_SUBSCRIPTION, 'https://go.elementor.com/ai-banner-free-80-limit-reach/'), _url2), + color: 'warning' +}, { + threshold: 75, + title: (_title3 = {}, (0, _defineProperty2.default)(_title3, KEY_SUBSCRIPTION, __('You’ve used over 75% of your Elementor AI plan.', 'elementor')), (0, _defineProperty2.default)(_title3, KEY_NO_SUBSCRIPTION, __(' You’ve used 75% of credits for this AI feature.', 'elementor')), _title3), + description: (_description3 = {}, (0, _defineProperty2.default)(_description3, KEY_SUBSCRIPTION, __('Get maximum access.', 'elementor')), (0, _defineProperty2.default)(_description3, KEY_NO_SUBSCRIPTION, __('Upgrade now to keep using this feature. You still have credits for other AI features (Text, Code, Images, Containers, etc.)', 'elementor')), _description3), + url: (_url3 = {}, (0, _defineProperty2.default)(_url3, KEY_SUBSCRIPTION, 'https://go.elementor.com/ai-banner-paid-80-limit-reach/'), (0, _defineProperty2.default)(_url3, KEY_NO_SUBSCRIPTION, 'https://go.elementor.com/ai-banner-free-80-limit-reach/'), _url3), + color: 'warning' +}]; +var UpgradeButton = function UpgradeButton(props) { + return /*#__PURE__*/_react.default.createElement(_ui.Button, (0, _extends2.default)({ + color: "inherit", + variant: "outlined", + sx: { + border: '2px solid' + } + }, props), __('Upgrade now', 'elementor')); +}; +var UsageLimitAlert = function UsageLimitAlert(_ref) { + var onClose = _ref.onClose, + usagePercentage = _ref.usagePercentage, + hasSubscription = _ref.hasSubscription, + props = (0, _objectWithoutProperties2.default)(_ref, _excluded); + var config = alertConfigs.find(function (_ref2) { + var threshold = _ref2.threshold; + return usagePercentage >= threshold; + }); + if (!config) { + return null; + } + var subscriptionType = hasSubscription ? KEY_SUBSCRIPTION : KEY_NO_SUBSCRIPTION; + var title = config.title, + description = config.description, + url = config.url, + color = config.color; + var handleUpgradeClick = function handleUpgradeClick() { + return window.open(url[subscriptionType], '_blank'); + }; + return /*#__PURE__*/_react.default.createElement(_ui.Alert, (0, _extends2.default)({ + severity: "warning", + action: /*#__PURE__*/_react.default.createElement(UpgradeButton, { + onClick: handleUpgradeClick + }), + color: color + }, props), /*#__PURE__*/_react.default.createElement(_ui.AlertTitle, null, title[subscriptionType]), description[subscriptionType]); +}; +UsageLimitAlert.propTypes = { + onClose: PropTypes.func, + usagePercentage: PropTypes.number, + hasSubscription: PropTypes.bool +}; +var _default = UsageLimitAlert; +exports["default"] = _default; + +/***/ }), + +/***/ "../modules/ai/assets/js/editor/components/usage-messages.js": +/*!*******************************************************************!*\ + !*** ../modules/ai/assets/js/editor/components/usage-messages.js ***! + \*******************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +/* provided dependency */ var PropTypes = __webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js"); + + +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 _react = _interopRequireDefault(__webpack_require__(/*! react */ "react")); +var _upgradeBanner = _interopRequireDefault(__webpack_require__(/*! ./upgrade-banner */ "../modules/ai/assets/js/editor/components/upgrade-banner.js")); +var _usageLimitAlert = _interopRequireDefault(__webpack_require__(/*! ./usage-limit-alert */ "../modules/ai/assets/js/editor/components/usage-limit-alert.js")); +var _useUpgradeMessage2 = _interopRequireDefault(__webpack_require__(/*! ../hooks/use-upgrade-message */ "../modules/ai/assets/js/editor/hooks/use-upgrade-message.js")); +var UsageMessages = function UsageMessages(_ref) { + var hasSubscription = _ref.hasSubscription, + usagePercentage = _ref.usagePercentage, + sx = _ref.sx; + var _useUpgradeMessage = (0, _useUpgradeMessage2.default)({ + usagePercentage: usagePercentage, + hasSubscription: hasSubscription + }), + showBanner = _useUpgradeMessage.showBanner, + markBannerAsViewed = _useUpgradeMessage.markBannerAsViewed; + return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, showBanner && /*#__PURE__*/_react.default.createElement(_upgradeBanner.default, { + onClose: markBannerAsViewed, + sx: sx + }), /*#__PURE__*/_react.default.createElement(_usageLimitAlert.default, { + hasSubscription: hasSubscription, + usagePercentage: usagePercentage, + sx: sx + })); +}; +UsageMessages.propTypes = { + hasSubscription: PropTypes.bool, + usagePercentage: PropTypes.number, + sx: PropTypes.object +}; +var _default = UsageMessages; +exports["default"] = _default; + +/***/ }), + +/***/ "../modules/ai/assets/js/editor/components/voice-promotion-alert.js": +/*!**************************************************************************!*\ + !*** ../modules/ai/assets/js/editor/components/voice-promotion-alert.js ***! + \**************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +/* provided dependency */ var __ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n")["__"]; +/* provided dependency */ var PropTypes = __webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js"); + + +var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js"); +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = exports.VoicePromotionAlert = void 0; +var _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/defineProperty */ "../node_modules/@babel/runtime/helpers/defineProperty.js")); +var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react")); +var _ui = __webpack_require__(/*! @elementor/ui */ "@elementor/ui"); +var _bulbIcon = _interopRequireDefault(__webpack_require__(/*! ../icons/bulb-icon */ "../modules/ai/assets/js/editor/icons/bulb-icon.js")); +var _useIntroduction2 = _interopRequireDefault(__webpack_require__(/*! ../hooks/use-introduction */ "../modules/ai/assets/js/editor/hooks/use-introduction.js")); +function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; } +function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; } +var VoicePromotionAlert = function VoicePromotionAlert(props) { + var _useIntroduction = (0, _useIntroduction2.default)(props.introductionKey), + isViewed = _useIntroduction.isViewed, + markAsViewed = _useIntroduction.markAsViewed; + if (!isViewed) { + return null; + } + return /*#__PURE__*/_react.default.createElement(_ui.Box, { + sx: _objectSpread({ + mt: 2 + }, props.sx), + alignItems: "top" + }, /*#__PURE__*/_react.default.createElement(_ui.Alert, { + severity: "info", + variant: "standard", + icon: /*#__PURE__*/_react.default.createElement(_bulbIcon.default, { + sx: { + alignSelf: 'flex-start' + } + }), + onClose: markAsViewed + }, __('Get improved results from AI by adding some personal context. Go to Site Settings > AI Context to get started.'))); +}; +exports.VoicePromotionAlert = VoicePromotionAlert; +VoicePromotionAlert.propTypes = { + sx: PropTypes.object, + introductionKey: PropTypes.string +}; +var _default = VoicePromotionAlert; +exports["default"] = _default; + +/***/ }), + +/***/ "../modules/ai/assets/js/editor/components/wizard-dialog.js": +/*!******************************************************************!*\ + !*** ../modules/ai/assets/js/editor/components/wizard-dialog.js ***! + \******************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + + +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 _react = _interopRequireDefault(__webpack_require__(/*! react */ "react")); +var _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ "../node_modules/@babel/runtime/helpers/extends.js")); +var _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/defineProperty */ "../node_modules/@babel/runtime/helpers/defineProperty.js")); +var _objectWithoutProperties2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/objectWithoutProperties */ "../node_modules/@babel/runtime/helpers/objectWithoutProperties.js")); +var _ui = __webpack_require__(/*! @elementor/ui */ "@elementor/ui"); +var _propTypes = _interopRequireDefault(__webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js")); +var _dialogHeader = _interopRequireDefault(__webpack_require__(/*! ./dialog-header */ "../modules/ai/assets/js/editor/components/dialog-header.js")); +var _excluded = ["sx"]; +function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; } +function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; } +var WizardDialog = function WizardDialog(props) { + return /*#__PURE__*/_react.default.createElement(_ui.Dialog, { + open: true, + onClose: props.onClose, + fullWidth: true, + hideBackdrop: true, + maxWidth: "lg", + PaperProps: { + sx: { + height: '88vh' + } + }, + sx: { + zIndex: 9999 + } + }, props.children); +}; +WizardDialog.propTypes = { + onClose: _propTypes.default.func.isRequired, + children: _propTypes.default.node.isRequired +}; +var WizardDialogContent = function WizardDialogContent(_ref) { + var _ref$sx = _ref.sx, + sx = _ref$sx === void 0 ? {} : _ref$sx, + props = (0, _objectWithoutProperties2.default)(_ref, _excluded); + return /*#__PURE__*/_react.default.createElement(_ui.DialogContent, (0, _extends2.default)({}, props, { + sx: _objectSpread({ + display: 'flex', + flexDirection: 'column', + justifyContent: 'center' + }, sx) + })); +}; +WizardDialogContent.propTypes = { + sx: _propTypes.default.object +}; +WizardDialog.Header = _dialogHeader.default; +WizardDialog.Content = WizardDialogContent; +var _default = WizardDialog; +exports["default"] = _default; + +/***/ }), + +/***/ "../modules/ai/assets/js/editor/context/requests-ids.js": +/*!**************************************************************!*\ + !*** ../modules/ai/assets/js/editor/context/requests-ids.js ***! + \**************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + + +var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js"); +var _typeof = __webpack_require__(/*! @babel/runtime/helpers/typeof */ "../node_modules/@babel/runtime/helpers/typeof.js"); +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = exports.RequestIdsProvider = void 0; +exports.generateIds = generateIds; +exports.useRequestIds = exports.getUniqueId = void 0; +var _react = _interopRequireWildcard(__webpack_require__(/*! react */ "react")); +var _propTypes = _interopRequireDefault(__webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js")); +function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); } +function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; } +var Context = (0, _react.createContext)({}); +var useRequestIds = function useRequestIds() { + var context = (0, _react.useContext)(Context); + if (!context) { + throw new Error('useRequestIds must be used within a RequestIdsProvider'); + } + return context; +}; +exports.useRequestIds = useRequestIds; +var getUniqueId = function getUniqueId(prefix) { + return prefix + '-' + Math.random().toString(16).substr(2, 7); +}; +exports.getUniqueId = getUniqueId; +window.EDITOR_SESSION_ID = window.EDITOR_SESSION_ID || getUniqueId('editor-session'); +function generateIds(template) { + var _template$elements; + template.id = getUniqueId().toString(); + if ((_template$elements = template.elements) !== null && _template$elements !== void 0 && _template$elements.length) { + template.elements.map(function (child) { + return generateIds(child); + }); + } + return template; +} +var RequestIdsProvider = function RequestIdsProvider(props) { + var editorSessionId = (0, _react.useRef)(window.EDITOR_SESSION_ID); + var sessionId = (0, _react.useRef)(''); + var generateId = (0, _react.useRef)(''); + var batchId = (0, _react.useRef)(''); + var requestId = (0, _react.useRef)(''); + sessionId.current = getUniqueId('session'); + var setGenerate = function setGenerate() { + generateId.current = getUniqueId('generate'); + return generateId; + }; + var setBatch = function setBatch() { + batchId.current = getUniqueId('batch'); + return batchId; + }; + var setRequest = function setRequest() { + requestId.current = getUniqueId('request'); + return requestId; + }; + return /*#__PURE__*/_react.default.createElement(Context.Provider, { + value: { + editorSessionId: editorSessionId, + sessionId: sessionId, + generateId: generateId, + batchId: batchId, + requestId: requestId, + setGenerate: setGenerate, + setBatch: setBatch, + setRequest: setRequest + } + }, props.children); +}; +exports.RequestIdsProvider = RequestIdsProvider; +RequestIdsProvider.propTypes = { + children: _propTypes.default.node.isRequired +}; +var _default = Context; +exports["default"] = _default; + +/***/ }), + +/***/ "../modules/ai/assets/js/editor/helpers/date-helpers.js": +/*!**************************************************************!*\ + !*** ../modules/ai/assets/js/editor/helpers/date-helpers.js ***! + \**************************************************************/ +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.translateDate = exports.daysDiff = exports.MONTH_JANUARY_INDEX = exports.MONTH_DECEMBER_INDEX = void 0; +var MONTH_DECEMBER_INDEX = 12; +exports.MONTH_DECEMBER_INDEX = MONTH_DECEMBER_INDEX; +var MONTH_JANUARY_INDEX = 0; +/** + * Formats a date (like wp_date() in PHP), translating it into site's locale. + * + * @param {string} format PHP-style formatting string. + * @param {Date | string | undefined} date Date object + * @param {string | number | undefined=} timezone Timezone to output result in or a UTC offset. Defaults to timezone from site. + * @return {string} + */ +exports.MONTH_JANUARY_INDEX = MONTH_JANUARY_INDEX; +var translateDate = function translateDate(format, date, timezone) { + var _window$wp; + var _window$wp$date = (_window$wp = window.wp) === null || _window$wp === void 0 ? void 0 : _window$wp.date, + dateI18n = _window$wp$date.dateI18n; + return dateI18n(format, date, timezone); +}; + +/** + * Returns difference in days between two dates + * + * @param {Date} firstDate + * @param {Date} secondDate + * @return {number} Positive or negative number in days + */ +exports.translateDate = translateDate; +var daysDiff = function daysDiff(firstDate, secondDate) { + var MS_PER_DAY = 1000 * 60 * 60 * 24; + var firstUTC = Date.UTC(firstDate.getFullYear(), firstDate.getMonth(), firstDate.getDate()); + var secondUTC = Date.UTC(secondDate.getFullYear(), secondDate.getMonth(), secondDate.getDate()); + return Math.floor((secondUTC - firstUTC) / MS_PER_DAY); +}; +exports.daysDiff = daysDiff; + +/***/ }), + +/***/ "../modules/ai/assets/js/editor/helpers/index.js": +/*!*******************************************************!*\ + !*** ../modules/ai/assets/js/editor/helpers/index.js ***! + \*******************************************************/ +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.vh = void 0; +var vh = function vh(value) { + var h = Math.max(document.documentElement.clientHeight, window.innerHeight || 0); + return value * h / 100; +}; +exports.vh = vh; + +/***/ }), + +/***/ "../modules/ai/assets/js/editor/hooks/use-code-prompt.js": +/*!***************************************************************!*\ + !*** ../modules/ai/assets/js/editor/hooks/use-code-prompt.js ***! + \***************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + + +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 _regenerator = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/regenerator */ "../node_modules/@babel/runtime/regenerator/index.js")); +var _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/defineProperty */ "../node_modules/@babel/runtime/helpers/defineProperty.js")); +var _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ "../node_modules/@babel/runtime/helpers/asyncToGenerator.js")); +var _api = __webpack_require__(/*! ../api */ "../modules/ai/assets/js/editor/api/index.js"); +var _usePrompt = _interopRequireDefault(__webpack_require__(/*! ./use-prompt */ "../modules/ai/assets/js/editor/hooks/use-prompt.js")); +function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; } +function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; } +var getCodeResult = /*#__PURE__*/function () { + var _ref2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(payload, _ref) { + var codeLanguage, htmlMarkup, elementId; + return _regenerator.default.wrap(function _callee$(_context) { + while (1) switch (_context.prev = _context.next) { + case 0: + codeLanguage = _ref.codeLanguage, htmlMarkup = _ref.htmlMarkup, elementId = _ref.elementId; + if (!('css' === codeLanguage)) { + _context.next = 3; + break; + } + return _context.abrupt("return", (0, _api.getCustomCSS)(_objectSpread(_objectSpread({}, payload), {}, { + html_markup: htmlMarkup, + element_id: elementId + }))); + case 3: + return _context.abrupt("return", (0, _api.getCustomCode)(_objectSpread(_objectSpread({}, payload), {}, { + language: codeLanguage + }))); + case 4: + case "end": + return _context.stop(); + } + }, _callee); + })); + return function getCodeResult(_x, _x2) { + return _ref2.apply(this, arguments); + }; +}(); +var useCodePrompt = function useCodePrompt(_ref3) { + var codeLanguage = _ref3.codeLanguage, + htmlMarkup = _ref3.htmlMarkup, + elementId = _ref3.elementId, + credits = _ref3.initialCredits; + var promptData = (0, _usePrompt.default)(function (payload) { + return getCodeResult(payload, { + codeLanguage: codeLanguage, + htmlMarkup: htmlMarkup, + elementId: elementId + }); + }, { + credits: credits + }); + return promptData; +}; +var _default = useCodePrompt; +exports["default"] = _default; + +/***/ }), + +/***/ "../modules/ai/assets/js/editor/hooks/use-delete-prompt-history-item.js": +/*!******************************************************************************!*\ + !*** ../modules/ai/assets/js/editor/hooks/use-delete-prompt-history-item.js ***! + \******************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + + +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 _regenerator = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/regenerator */ "../node_modules/@babel/runtime/regenerator/index.js")); +var _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ "../node_modules/@babel/runtime/helpers/asyncToGenerator.js")); +var _slicedToArray2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/slicedToArray */ "../node_modules/@babel/runtime/helpers/slicedToArray.js")); +var _react = __webpack_require__(/*! react */ "react"); +var _api = __webpack_require__(/*! ../api */ "../modules/ai/assets/js/editor/api/index.js"); +var useDeletePromptHistoryItem = function useDeletePromptHistoryItem() { + var _useState = (0, _react.useState)(false), + _useState2 = (0, _slicedToArray2.default)(_useState, 2), + isLoading = _useState2[0], + setIsLoading = _useState2[1]; + var _useState3 = (0, _react.useState)(''), + _useState4 = (0, _slicedToArray2.default)(_useState3, 2), + error = _useState4[0], + setError = _useState4[1]; + var deleteItem = /*#__PURE__*/function () { + var _ref = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(id) { + return _regenerator.default.wrap(function _callee$(_context) { + while (1) switch (_context.prev = _context.next) { + case 0: + return _context.abrupt("return", new Promise(function (resolve, reject) { + setError(''); + setIsLoading(true); + (0, _api.deleteHistoryItem)(id).then(function () { + resolve(true); + }).catch(function (err) { + var finalError = (err === null || err === void 0 ? void 0 : err.responseText) || err; + setError(finalError); + reject(finalError); + }).finally(function () { + return setIsLoading(false); + }); + })); + case 1: + case "end": + return _context.stop(); + } + }, _callee); + })); + return function deleteItem(_x) { + return _ref.apply(this, arguments); + }; + }(); + return { + isLoading: isLoading, + error: error, + deleteItem: deleteItem + }; +}; +var _default = useDeletePromptHistoryItem; +exports["default"] = _default; + +/***/ }), + +/***/ "../modules/ai/assets/js/editor/hooks/use-image-navigation.js": +/*!********************************************************************!*\ + !*** ../modules/ai/assets/js/editor/hooks/use-image-navigation.js ***! + \********************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + + +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 _slicedToArray2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/slicedToArray */ "../node_modules/@babel/runtime/helpers/slicedToArray.js")); +var _react = __webpack_require__(/*! react */ "react"); +var initialIndex = -1; +var useImageNavigation = function useImageNavigation(images) { + var _useState = (0, _react.useState)(initialIndex), + _useState2 = (0, _slicedToArray2.default)(_useState, 2), + zoomIndex = _useState2[0], + setZoomIndex = _useState2[1]; + var actions = { + reset: function reset() { + return setZoomIndex(initialIndex); + }, + prev: function prev() { + var prevImage = zoomIndex + 1; + if (prevImage >= images.length) { + prevImage = 0; + } + setZoomIndex(prevImage); + }, + next: function next() { + var nextImage = zoomIndex - 1; + if (nextImage < 0) { + nextImage = images.length - 1; + } + setZoomIndex(nextImage); + } + }; + return { + zoomIndex: zoomIndex, + setZoomIndex: setZoomIndex, + actions: actions + }; +}; +var _default = useImageNavigation; +exports["default"] = _default; + +/***/ }), + +/***/ "../modules/ai/assets/js/editor/hooks/use-images-preload.js": +/*!******************************************************************!*\ + !*** ../modules/ai/assets/js/editor/hooks/use-images-preload.js ***! + \******************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + + +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 _slicedToArray2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/slicedToArray */ "../node_modules/@babel/runtime/helpers/slicedToArray.js")); +var _react = __webpack_require__(/*! react */ "react"); +var loadImage = function loadImage(url) { + return new Promise(function (resolve, reject) { + var loadImg = new Image(); + loadImg.src = url; + loadImg.onload = function () { + return resolve(url); + }; + loadImg.onerror = function (err) { + return reject(err); + }; + }); +}; +var useImagesPreload = function useImagesPreload() { + var _useState = (0, _react.useState)(false), + _useState2 = (0, _slicedToArray2.default)(_useState, 2), + ready = _useState2[0], + setReady = _useState2[1]; + var preloadImages = function preloadImages(images) { + setReady(false); + Promise.all(images.map(function (url) { + return loadImage(url); + })).then(function () { + return setReady(true); + }) + // eslint-disable-next-line no-console + .catch(function (err) { + return console.log('Failed to load images', err); + }); // Todo error better handling + }; + + return { + ready: ready, + preloadImages: preloadImages + }; +}; +var _default = useImagesPreload; +exports["default"] = _default; + +/***/ }), + +/***/ "../modules/ai/assets/js/editor/hooks/use-introduction.js": +/*!****************************************************************!*\ + !*** ../modules/ai/assets/js/editor/hooks/use-introduction.js ***! + \****************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + + +var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js"); +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = useIntroduction; +var _slicedToArray2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/slicedToArray */ "../node_modules/@babel/runtime/helpers/slicedToArray.js")); +var _react = __webpack_require__(/*! react */ "react"); +function useIntroduction(key) { + var _window$elementor$con, _window$elementorAdmi, _window$elementorAdmi2, _globalConfig$introdu; + var globalConfig = window.elementor ? (_window$elementor$con = window.elementor.config) === null || _window$elementor$con === void 0 ? void 0 : _window$elementor$con.user : (_window$elementorAdmi = window.elementorAdmin) === null || _window$elementorAdmi === void 0 ? void 0 : (_window$elementorAdmi2 = _window$elementorAdmi.config) === null || _window$elementorAdmi2 === void 0 ? void 0 : _window$elementorAdmi2.user; + var _useState = (0, _react.useState)(!!(globalConfig !== null && globalConfig !== void 0 && (_globalConfig$introdu = globalConfig.introduction) !== null && _globalConfig$introdu !== void 0 && _globalConfig$introdu[key])), + _useState2 = (0, _slicedToArray2.default)(_useState, 2), + isViewed = _useState2[0], + setIsViewed = _useState2[1]; + function markAsViewed() { + if (!key) { + return Promise.reject(); + } + return new Promise(function (resolve, reject) { + if (isViewed) { + reject(); + } + setIsViewed(true); + elementorCommon.ajax.addRequest('introduction_viewed', { + data: { + introductionKey: key + }, + error: function error() { + setIsViewed(false); + reject(); + }, + success: function success() { + setIsViewed(true); + if (globalConfig !== null && globalConfig !== void 0 && globalConfig.introduction) { + globalConfig.introduction[key] = true; + } + resolve(); + } + }); + }); + } + return { + isViewed: isViewed, + markAsViewed: markAsViewed + }; +} + +/***/ }), + +/***/ "../modules/ai/assets/js/editor/hooks/use-prompt-enhancer.js": +/*!*******************************************************************!*\ + !*** ../modules/ai/assets/js/editor/hooks/use-prompt-enhancer.js ***! + \*******************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + + +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 _api = __webpack_require__(/*! ../api */ "../modules/ai/assets/js/editor/api/index.js"); +var _usePrompt2 = _interopRequireDefault(__webpack_require__(/*! ./use-prompt */ "../modules/ai/assets/js/editor/hooks/use-prompt.js")); +var _config = __webpack_require__(/*! ../pages/form-layout/context/config */ "../modules/ai/assets/js/editor/pages/form-layout/context/config.js"); +var enhancePromptMap = new Map([['media', _api.getImagePromptEnhanced], ['layout', _api.getLayoutPromptEnhanced]]); +var getResult = function getResult(prompt, type, enhanceType) { + if (!enhancePromptMap.has(type)) { + throw new Error("Invalid prompt type: ".concat(type)); + } + return enhancePromptMap.get(type)(prompt, enhanceType); +}; + +/** + * Hook to enhance a prompt. + * + * @param {string} prompt + * @param {'media' | 'layout'} type + * @return {{enhancedPrompt: string | undefined, isEnhancing: boolean, enhance: (function(...[*]): Promise)}} + */ +var usePromptEnhancer = function usePromptEnhancer(prompt, type) { + var _useConfig = (0, _config.useConfig)(), + mode = _useConfig.mode; + var _usePrompt = (0, _usePrompt2.default)(function () { + return getResult(prompt, type, mode); + }, prompt), + enhancedData = _usePrompt.data, + isEnhancing = _usePrompt.isLoading, + enhance = _usePrompt.send; + return { + enhance: enhance, + isEnhancing: isEnhancing, + enhancedPrompt: enhancedData === null || enhancedData === void 0 ? void 0 : enhancedData.result + }; +}; +var _default = usePromptEnhancer; +exports["default"] = _default; + +/***/ }), + +/***/ "../modules/ai/assets/js/editor/hooks/use-prompt-history.js": +/*!******************************************************************!*\ + !*** ../modules/ai/assets/js/editor/hooks/use-prompt-history.js ***! + \******************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + + +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 _regenerator = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/regenerator */ "../node_modules/@babel/runtime/regenerator/index.js")); +var _toConsumableArray2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/toConsumableArray */ "../node_modules/@babel/runtime/helpers/toConsumableArray.js")); +var _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ "../node_modules/@babel/runtime/helpers/asyncToGenerator.js")); +var _slicedToArray2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/slicedToArray */ "../node_modules/@babel/runtime/helpers/slicedToArray.js")); +var _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/defineProperty */ "../node_modules/@babel/runtime/helpers/defineProperty.js")); +var _react = __webpack_require__(/*! react */ "react"); +var _api = __webpack_require__(/*! ../api */ "../modules/ai/assets/js/editor/api/index.js"); +function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; } +function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; } +var getImageThumbnailURL = function getImageThumbnailURL(base, imageURL) { + if (!base) { + return imageURL; + } + return "".concat(base, "/?o=").concat(btoa(imageURL, false)); +}; +var normalizeItems = function normalizeItems(response) { + var meta = response.meta, + items = response.items; + return items === null || items === void 0 ? void 0 : items.map(function (item) { + var _item$request, _item$request2, _item$request3, _item$response, _item$response$result, _item$response2, _item$response2$resul, _item$response3, _item$response3$resul, _item$response3$resul2; + return { + id: item === null || item === void 0 ? void 0 : item.elementorApiId, + date: item === null || item === void 0 ? void 0 : item.createdAt, + action: item === null || item === void 0 ? void 0 : item.action, + prompt: item === null || item === void 0 ? void 0 : (_item$request = item.request) === null || _item$request === void 0 ? void 0 : _item$request.prompt, + imageType: item === null || item === void 0 ? void 0 : (_item$request2 = item.request) === null || _item$request2 === void 0 ? void 0 : _item$request2.image_type, + ratio: item === null || item === void 0 ? void 0 : (_item$request3 = item.request) === null || _item$request3 === void 0 ? void 0 : _item$request3.ratio, + text: item === null || item === void 0 ? void 0 : (_item$response = item.response) === null || _item$response === void 0 ? void 0 : (_item$response$result = _item$response.results) === null || _item$response$result === void 0 ? void 0 : _item$response$result.text, + images: item === null || item === void 0 ? void 0 : (_item$response2 = item.response) === null || _item$response2 === void 0 ? void 0 : (_item$response2$resul = _item$response2.results) === null || _item$response2$resul === void 0 ? void 0 : _item$response2$resul.images, + thumbnails: item === null || item === void 0 ? void 0 : (_item$response3 = item.response) === null || _item$response3 === void 0 ? void 0 : (_item$response3$resul = _item$response3.results) === null || _item$response3$resul === void 0 ? void 0 : (_item$response3$resul2 = _item$response3$resul.images) === null || _item$response3$resul2 === void 0 ? void 0 : _item$response3$resul2.map(function (image) { + return _objectSpread(_objectSpread({}, image), {}, { + image_url: getImageThumbnailURL(meta.thumbnailUrl, image.image_url) + }); + }) + }; + }); +}; +var usePromptHistory = function usePromptHistory(historyType) { + var _useState = (0, _react.useState)(false), + _useState2 = (0, _slicedToArray2.default)(_useState, 2), + isLoading = _useState2[0], + setIsLoading = _useState2[1]; + var _useState3 = (0, _react.useState)({}), + _useState4 = (0, _slicedToArray2.default)(_useState3, 2), + data = _useState4[0], + setData = _useState4[1]; + var _useState5 = (0, _react.useState)(''), + _useState6 = (0, _slicedToArray2.default)(_useState5, 2), + error = _useState6[0], + setError = _useState6[1]; + var fetchData = /*#__PURE__*/function () { + var _ref2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(_ref) { + var page, limit; + return _regenerator.default.wrap(function _callee$(_context) { + while (1) switch (_context.prev = _context.next) { + case 0: + page = _ref.page, limit = _ref.limit; + return _context.abrupt("return", new Promise(function (resolve, reject) { + setIsLoading(true); + (0, _api.getHistory)(historyType, page, limit).then(function (response) { + var clone = JSON.parse(JSON.stringify(data)); + clone.meta = response.meta; + clone.items = [].concat((0, _toConsumableArray2.default)((clone === null || clone === void 0 ? void 0 : clone.items) || []), (0, _toConsumableArray2.default)(normalizeItems(response))); + setData(clone); + resolve(true); + }).catch(function (err) { + var finalError = (err === null || err === void 0 ? void 0 : err.responseText) || err; + setError(finalError); + reject(finalError); + }).finally(function () { + return setIsLoading(false); + }); + })); + case 2: + case "end": + return _context.stop(); + } + }, _callee); + })); + return function fetchData(_x) { + return _ref2.apply(this, arguments); + }; + }(); + var deleteItemById = function deleteItemById(id) { + var itemIndex = data.items.findIndex(function (item) { + return item.id === id; + }); + if (-1 === itemIndex) { + return false; + } + var clone = JSON.parse(JSON.stringify(data)); + clone.items.splice(itemIndex, 1); + setData(clone); + return true; + }; + return { + isLoading: isLoading, + error: error, + items: data.items, + meta: data.meta, + fetchData: fetchData, + deleteItemById: deleteItemById + }; +}; +var _default = usePromptHistory; +exports["default"] = _default; + +/***/ }), + +/***/ "../modules/ai/assets/js/editor/hooks/use-prompt.js": +/*!**********************************************************!*\ + !*** ../modules/ai/assets/js/editor/hooks/use-prompt.js ***! + \**********************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + + +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 _regenerator = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/regenerator */ "../node_modules/@babel/runtime/regenerator/index.js")); +var _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/defineProperty */ "../node_modules/@babel/runtime/helpers/defineProperty.js")); +var _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ "../node_modules/@babel/runtime/helpers/asyncToGenerator.js")); +var _slicedToArray2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/slicedToArray */ "../node_modules/@babel/runtime/helpers/slicedToArray.js")); +var _objectWithoutProperties2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/objectWithoutProperties */ "../node_modules/@babel/runtime/helpers/objectWithoutProperties.js")); +var _react = __webpack_require__(/*! react */ "react"); +var _api = __webpack_require__(/*! ../api */ "../modules/ai/assets/js/editor/api/index.js"); +var _requestsIds = __webpack_require__(/*! ../context/requests-ids */ "../modules/ai/assets/js/editor/context/requests-ids.js"); +var _excluded = ["text", "response_id", "usage", "images"]; +function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; } +function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; } +var normalizeResponse = function normalizeResponse(_ref) { + var text = _ref.text, + responseId = _ref.response_id, + usage = _ref.usage, + images = _ref.images, + optional = (0, _objectWithoutProperties2.default)(_ref, _excluded); + var creditsData = usage ? usage.quota - usage.usedQuota : 0; + var credits = Math.max(creditsData, 0); + var result = text || images; + var normalized = { + result: result, + responseId: responseId, + credits: credits + }; + if (optional.base_template_id) { + normalized.baseTemplateId = optional.base_template_id; + } + normalized.type = optional.template_type; + return normalized; +}; +var usePrompt = function usePrompt(fetchData, initialState) { + var _useState = (0, _react.useState)(false), + _useState2 = (0, _slicedToArray2.default)(_useState, 2), + isLoading = _useState2[0], + setIsLoading = _useState2[1]; + var _useState3 = (0, _react.useState)(''), + _useState4 = (0, _slicedToArray2.default)(_useState3, 2), + error = _useState4[0], + setError = _useState4[1]; + var _useState5 = (0, _react.useState)(initialState), + _useState6 = (0, _slicedToArray2.default)(_useState5, 2), + data = _useState6[0], + setData = _useState6[1]; + var _useRequestIds = (0, _requestsIds.useRequestIds)(), + setRequest = _useRequestIds.setRequest, + editorSessionId = _useRequestIds.editorSessionId, + sessionId = _useRequestIds.sessionId, + generateId = _useRequestIds.generateId, + batchId = _useRequestIds.batchId; + var send = /*#__PURE__*/function () { + var _ref2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(payload) { + return _regenerator.default.wrap(function _callee$(_context) { + while (1) switch (_context.prev = _context.next) { + case 0: + return _context.abrupt("return", new Promise(function (resolve, reject) { + setError(''); + setIsLoading(true); + var requestId = setRequest(); + var requestIds = { + editorSessionId: editorSessionId.current, + sessionId: sessionId.current, + generateId: generateId.current, + batchId: batchId.current, + requestId: requestId.current + }; + payload = _objectSpread(_objectSpread({}, payload), {}, { + requestIds: requestIds + }); + fetchData(payload).then(function (result) { + var normalizedData = normalizeResponse(result); + setData(normalizedData); + resolve(normalizedData); + }).catch(function (err) { + var finalError = (err === null || err === void 0 ? void 0 : err.responseText) || err; + setError(finalError); + reject(finalError); + }).finally(function () { + return setIsLoading(false); + }); + })); + case 1: + case "end": + return _context.stop(); + } + }, _callee); + })); + return function send(_x) { + return _ref2.apply(this, arguments); + }; + }(); + var sendUsageData = function sendUsageData() { + var usageData = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : data; + return usageData.responseId && (0, _api.setStatusFeedback)(usageData.responseId); + }; + var reset = function reset() { + setData(function (_ref3) { + var credits = _ref3.credits; + return { + credits: credits, + result: '', + responseId: '' + }; + }); + setError(''); + setIsLoading(false); + }; + var setResult = function setResult(result) { + var responseId = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null; + var updatedResult = _objectSpread({}, data); + updatedResult.result = result; + if (responseId) { + updatedResult.responseId = responseId; + } + setData(updatedResult); + }; + return { + isLoading: isLoading, + error: error, + data: data, + setResult: setResult, + reset: reset, + send: send, + sendUsageData: sendUsageData + }; +}; +var _default = usePrompt; +exports["default"] = _default; + +/***/ }), + +/***/ "../modules/ai/assets/js/editor/hooks/use-text-prompt.js": +/*!***************************************************************!*\ + !*** ../modules/ai/assets/js/editor/hooks/use-text-prompt.js ***! + \***************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + + +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 _regenerator = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/regenerator */ "../node_modules/@babel/runtime/regenerator/index.js")); +var _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ "../node_modules/@babel/runtime/helpers/asyncToGenerator.js")); +var _api = __webpack_require__(/*! ../api */ "../modules/ai/assets/js/editor/api/index.js"); +var _usePrompt = _interopRequireDefault(__webpack_require__(/*! ./use-prompt */ "../modules/ai/assets/js/editor/hooks/use-prompt.js")); +var getTextResult = /*#__PURE__*/function () { + var _ref = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(payload) { + return _regenerator.default.wrap(function _callee$(_context) { + while (1) switch (_context.prev = _context.next) { + case 0: + if (!(payload !== null && payload !== void 0 && payload.instruction)) { + _context.next = 2; + break; + } + return _context.abrupt("return", (0, _api.getEditText)(payload)); + case 2: + return _context.abrupt("return", (0, _api.getCompletionText)(payload)); + case 3: + case "end": + return _context.stop(); + } + }, _callee); + })); + return function getTextResult(_x) { + return _ref.apply(this, arguments); + }; +}(); +var useTextPrompt = function useTextPrompt(initialValue) { + var promptData = (0, _usePrompt.default)(getTextResult, initialValue); + return promptData; +}; +var _default = useTextPrompt; +exports["default"] = _default; + +/***/ }), + +/***/ "../modules/ai/assets/js/editor/hooks/use-upgrade-message.js": +/*!*******************************************************************!*\ + !*** ../modules/ai/assets/js/editor/hooks/use-upgrade-message.js ***! + \*******************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + + +var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js"); +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = exports.USAGE_PERCENTAGE_THRESHOLD = void 0; +var _useIntroduction2 = _interopRequireDefault(__webpack_require__(/*! ./use-introduction */ "../modules/ai/assets/js/editor/hooks/use-introduction.js")); +var USAGE_PERCENTAGE_THRESHOLD = 80; +exports.USAGE_PERCENTAGE_THRESHOLD = USAGE_PERCENTAGE_THRESHOLD; +var useUpgradeMessage = function useUpgradeMessage(_ref) { + var usagePercentage = _ref.usagePercentage, + hasSubscription = _ref.hasSubscription; + var _useIntroduction = (0, _useIntroduction2.default)('e-ai-upgrade-message'), + isBannerViewed = _useIntroduction.isViewed, + markBannerAsViewed = _useIntroduction.markAsViewed; + var isFreeUser = !hasSubscription; + var isBelowThreshold = usagePercentage < USAGE_PERCENTAGE_THRESHOLD; + var isAboveThreshold = usagePercentage >= USAGE_PERCENTAGE_THRESHOLD; + var showBadge = isAboveThreshold || isFreeUser && isBannerViewed; + var showBanner = !isBannerViewed && isFreeUser && isBelowThreshold; + return { + showBadge: showBadge, + showBanner: showBanner, + markBannerAsViewed: markBannerAsViewed + }; +}; +var _default = useUpgradeMessage; +exports["default"] = _default; + +/***/ }), + +/***/ "../modules/ai/assets/js/editor/hooks/use-user-info.js": +/*!*************************************************************!*\ + !*** ../modules/ai/assets/js/editor/hooks/use-user-info.js ***! + \*************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + + +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 _regenerator = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/regenerator */ "../node_modules/@babel/runtime/regenerator/index.js")); +var _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/defineProperty */ "../node_modules/@babel/runtime/helpers/defineProperty.js")); +var _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ "../node_modules/@babel/runtime/helpers/asyncToGenerator.js")); +var _slicedToArray2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/slicedToArray */ "../node_modules/@babel/runtime/helpers/slicedToArray.js")); +var _react = __webpack_require__(/*! react */ "react"); +var _api = __webpack_require__(/*! ../api */ "../modules/ai/assets/js/editor/api/index.js"); +function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; } +function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; } +var useUserInfo = function useUserInfo() { + var _useState = (0, _react.useState)(false), + _useState2 = (0, _slicedToArray2.default)(_useState, 2), + isLoaded = _useState2[0], + setIsLoaded = _useState2[1]; + var _useState3 = (0, _react.useState)(false), + _useState4 = (0, _slicedToArray2.default)(_useState3, 2), + isLoading = _useState4[0], + setIsLoading = _useState4[1]; + var _useState5 = (0, _react.useState)({ + is_connected: false, + is_get_started: false, + connect_url: '', + usage: { + hasAiSubscription: false, + quota: 0, + usedQuota: 0 + } + }), + _useState6 = (0, _slicedToArray2.default)(_useState5, 2), + userInfo = _useState6[0], + setUserInfo = _useState6[1]; + var credits = userInfo.usage.quota - userInfo.usage.usedQuota; + var usagePercentage = userInfo.usage.usedQuota / userInfo.usage.quota * 100; + var fetchData = /*#__PURE__*/function () { + var _ref = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() { + var userInfoResult; + return _regenerator.default.wrap(function _callee$(_context) { + while (1) switch (_context.prev = _context.next) { + case 0: + setIsLoading(true); + _context.next = 3; + return (0, _api.getUserInformation)(); + case 3: + userInfoResult = _context.sent; + setUserInfo(function (prevState) { + return _objectSpread(_objectSpread({}, prevState), userInfoResult); + }); + setIsLoaded(true); + setIsLoading(false); + case 7: + case "end": + return _context.stop(); + } + }, _callee); + })); + return function fetchData() { + return _ref.apply(this, arguments); + }; + }(); + if (!isLoaded && !isLoading) { + fetchData(); + } + return { + isLoading: isLoading, + isLoaded: isLoaded, + isConnected: userInfo.is_connected, + isGetStarted: userInfo.is_get_started, + connectUrl: userInfo.connect_url, + builderUrl: userInfo.usage.builderUrl, + hasSubscription: userInfo.usage.hasAiSubscription, + credits: credits < 0 ? 0 : credits, + usagePercentage: Math.round(usagePercentage), + fetchData: fetchData + }; +}; +var _default = useUserInfo; +exports["default"] = _default; + +/***/ }), + +/***/ "../modules/ai/assets/js/editor/icons/brush-icon.js": +/*!**********************************************************!*\ + !*** ../modules/ai/assets/js/editor/icons/brush-icon.js ***! + \**********************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + + +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 _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ "../node_modules/@babel/runtime/helpers/extends.js")); +var _ui = __webpack_require__(/*! @elementor/ui */ "@elementor/ui"); +var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react")); +var BrushIcon = _react.default.forwardRef(function (props, ref) { + return /*#__PURE__*/_react.default.createElement(_ui.SvgIcon, (0, _extends2.default)({ + viewBox: "0 0 24 24" + }, props, { + ref: ref + }), /*#__PURE__*/_react.default.createElement("path", { + fillRule: "evenodd", + clipRule: "evenodd", + d: "M20.8815 2.25919C20.9203 2.25301 20.9599 2.24983 21 2.24988C21.0827 2.24978 21.1629 2.26335 21.2384 2.2887C21.367 2.33162 21.4784 2.40776 21.5642 2.5058C21.6895 2.64891 21.76 2.83868 21.749 3.03992C21.7477 3.06492 21.7452 3.08966 21.7414 3.11407C21.3311 6.09743 20.124 8.91507 18.2472 11.2703C16.5079 13.4529 14.2532 15.1635 11.6906 16.2509C11.8289 17.1168 11.7249 18.0054 11.3884 18.8177C11.0289 19.6857 10.4201 20.4275 9.63896 20.9495C8.85782 21.4714 7.93946 21.75 7 21.75H3C2.58579 21.75 2.25 21.4142 2.25 21V17C2.25 16.0605 2.52858 15.1421 3.05052 14.361C3.57246 13.5799 4.3143 12.9711 5.18225 12.6115C5.99455 12.2751 6.88314 12.1711 7.74905 12.3094C8.83643 9.74682 10.547 7.49212 12.7296 5.75287C15.0837 3.87693 17.8998 2.67012 20.8815 2.25919ZM10.0984 16.0649C10.077 16.0082 10.0629 15.9506 10.0557 15.893C9.89413 15.4471 9.63624 15.04 9.2981 14.7019C8.96001 14.3638 8.55301 14.1059 8.10721 13.9444C8.04953 13.9372 7.99178 13.9231 7.93499 13.9016C7.90509 13.8903 7.87632 13.8773 7.84877 13.8628C7.77794 13.8436 7.70633 13.8268 7.63404 13.8124C7.0036 13.687 6.35014 13.7514 5.75628 13.9974C5.16242 14.2433 4.65484 14.6599 4.29772 15.1944C3.94061 15.7288 3.75 16.3572 3.75 17V20.25H7C7.64279 20.25 8.27114 20.0594 8.8056 19.7022C9.34006 19.3451 9.75662 18.8376 10.0026 18.2437C10.2486 17.6498 10.313 16.9964 10.1876 16.3659C10.1732 16.2935 10.1563 16.2218 10.1371 16.1509C10.1226 16.1234 10.1097 16.0947 10.0984 16.0649ZM10.3588 13.6412C10.7069 13.9894 10.9969 14.3876 11.2204 14.8204C12.2258 14.3839 13.1782 13.8417 14.0621 13.2048C13.3066 11.827 12.173 10.6933 10.7952 9.93782C10.1583 10.8218 9.61603 11.7741 9.17957 12.7795C9.61238 13.0031 10.0106 13.293 10.3588 13.6412ZM11.7434 8.75107C13.1943 9.59789 14.4021 10.8057 15.2489 12.2565C15.9093 11.6727 16.5204 11.0304 17.0741 10.3355C18.5698 8.45849 19.5983 6.25889 20.0821 3.9179C17.7411 4.40165 15.5415 5.43018 13.6644 6.92595C12.9696 7.47964 12.3273 8.0907 11.7434 8.75107Z" + })); +}); +var _default = BrushIcon; +exports["default"] = _default; + +/***/ }), + +/***/ "../modules/ai/assets/js/editor/icons/bulb-icon.js": +/*!*********************************************************!*\ + !*** ../modules/ai/assets/js/editor/icons/bulb-icon.js ***! + \*********************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + + +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 _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ "../node_modules/@babel/runtime/helpers/extends.js")); +var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react")); +var _ui = __webpack_require__(/*! @elementor/ui */ "@elementor/ui"); +var BulbIcon = _react.default.forwardRef(function (props, ref) { + return /*#__PURE__*/_react.default.createElement(_ui.SvgIcon, (0, _extends2.default)({}, props, { + ref: ref + }), /*#__PURE__*/_react.default.createElement("svg", { + width: "22", + height: "22", + viewBox: "0 0 22 22", + fill: "none", + xmlns: "http://www.w3.org/2000/svg" + }, /*#__PURE__*/_react.default.createElement("g", { + clipPath: "url(#clip0_10743_8902)" + }, /*#__PURE__*/_react.default.createElement("path", { + d: "M2.75 10.0833H3.66667M11 2.75V3.66667M18.3333 10.0833H19.25M5.13333 5.13333L5.775 5.775M16.8667 5.13333L16.225 5.775", + stroke: "#2563EB", + strokeWidth: "1.5", + strokeLinecap: "round", + strokeLinejoin: "round" + }), /*#__PURE__*/_react.default.createElement("path", { + d: "M9.16675 16.041C8.70841 15.1243 6.91205 13.2842 6.62523 12.366C6.3384 11.4477 6.34775 10.4626 6.65195 9.54997C6.95615 8.63738 7.53978 7.84362 8.32016 7.28116C9.10054 6.71869 10.0381 6.41602 11.0001 6.41602C11.962 6.41602 12.8996 6.71869 13.68 7.28116C14.4604 7.84362 15.044 8.63738 15.3482 9.54997C15.6524 10.4626 15.6618 11.4477 15.3749 12.366C15.0881 13.2842 13.2917 15.1243 12.8334 16.041C12.8334 16.041 12.7597 17.3762 12.8334 17.8743C12.8334 18.3606 12.6403 18.8269 12.2964 19.1707C11.9526 19.5145 11.4863 19.7077 11.0001 19.7077C10.5139 19.7077 10.0475 19.5145 9.70372 19.1707C9.3599 18.8269 9.16675 18.3606 9.16675 17.8743C9.2405 17.3762 9.16675 16.041 9.16675 16.041Z", + stroke: "#2563EB", + strokeWidth: "1.5", + strokeLinecap: "round", + strokeLinejoin: "round" + }), /*#__PURE__*/_react.default.createElement("path", { + d: "M10.0833 16.5H11.9166", + stroke: "#2563EB", + strokeWidth: "1.5", + strokeLinecap: "round", + strokeLinejoin: "round" + })), /*#__PURE__*/_react.default.createElement("defs", null, /*#__PURE__*/_react.default.createElement("clipPath", { + id: "clip0_10743_8902" + }, /*#__PURE__*/_react.default.createElement("rect", { + width: "22", + height: "22", + fill: "white" + }))))); +}); +var _default = BulbIcon; +exports["default"] = _default; + +/***/ }), + +/***/ "../modules/ai/assets/js/editor/icons/chevron-left-icon.js": +/*!*****************************************************************!*\ + !*** ../modules/ai/assets/js/editor/icons/chevron-left-icon.js ***! + \*****************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + + +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 _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ "../node_modules/@babel/runtime/helpers/extends.js")); +var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react")); +var _ui = __webpack_require__(/*! @elementor/ui */ "@elementor/ui"); +var ChevronLeftIcon = _react.default.forwardRef(function (props, ref) { + return /*#__PURE__*/_react.default.createElement(_ui.SvgIcon, (0, _extends2.default)({ + viewBox: "0 0 24 24" + }, props, { + ref: ref + }), /*#__PURE__*/_react.default.createElement("path", { + fillRule: "evenodd", + clipRule: "evenodd", + d: "M15.5303 18.2803C15.8232 17.9874 15.8232 17.5126 15.5303 17.2197L10.0607 11.75L15.5303 6.28033C15.8232 5.98744 15.8232 5.51256 15.5303 5.21967C15.2374 4.92678 14.7626 4.92678 14.4697 5.21967L8.46967 11.2197C8.17678 11.5126 8.17678 11.9874 8.46967 12.2803L14.4697 18.2803C14.7626 18.5732 15.2374 18.5732 15.5303 18.2803Z" + })); +}); +var _default = ChevronLeftIcon; +exports["default"] = _default; + +/***/ }), + +/***/ "../modules/ai/assets/js/editor/icons/chevron-right-icon.js": +/*!******************************************************************!*\ + !*** ../modules/ai/assets/js/editor/icons/chevron-right-icon.js ***! + \******************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + + +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 _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ "../node_modules/@babel/runtime/helpers/extends.js")); +var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react")); +var _ui = __webpack_require__(/*! @elementor/ui */ "@elementor/ui"); +var ChevronRightIcon = _react.default.forwardRef(function (props, ref) { + return /*#__PURE__*/_react.default.createElement(_ui.SvgIcon, (0, _extends2.default)({ + viewBox: "0 0 24 24" + }, props, { + ref: ref + }), /*#__PURE__*/_react.default.createElement("path", { + fillRule: "evenodd", + clipRule: "evenodd", + d: "M8.46967 18.2803C8.17678 17.9874 8.17678 17.5126 8.46967 17.2197L13.9393 11.75L8.46967 6.28033C8.17678 5.98744 8.17678 5.51256 8.46967 5.21967C8.76256 4.92678 9.23744 4.92678 9.53033 5.21967L15.5303 11.2197C15.8232 11.5126 15.8232 11.9874 15.5303 12.2803L9.53033 18.2803C9.23744 18.5732 8.76256 18.5732 8.46967 18.2803Z" + })); +}); +var _default = ChevronRightIcon; +exports["default"] = _default; + +/***/ }), + +/***/ "../modules/ai/assets/js/editor/icons/code-icon.js": +/*!*********************************************************!*\ + !*** ../modules/ai/assets/js/editor/icons/code-icon.js ***! + \*********************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + + +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 _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ "../node_modules/@babel/runtime/helpers/extends.js")); +var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react")); +var _ui = __webpack_require__(/*! @elementor/ui */ "@elementor/ui"); +var CodeIcon = _react.default.forwardRef(function (props, ref) { + return /*#__PURE__*/_react.default.createElement(_ui.SvgIcon, (0, _extends2.default)({ + viewBox: "0 0 24 24" + }, props, { + ref: ref + }), /*#__PURE__*/_react.default.createElement("path", { + fillRule: "evenodd", + d: "M7.53 7.47a.75.75 0 0 1 0 1.06L4.06 12l3.47 3.47a.75.75 0 1 1-1.06 1.06l-4-4a.75.75 0 0 1 0-1.06l4-4a.75.75 0 0 1 1.06 0ZM16.47 7.47a.75.75 0 0 1 1.06 0l4 4a.75.75 0 0 1 0 1.06l-4 4a.75.75 0 1 1-1.06-1.06L19.94 12l-3.47-3.47a.75.75 0 0 1 0-1.06ZM14.182 3.272a.75.75 0 0 1 .546.91l-4 16a.75.75 0 0 1-1.456-.364l4-16a.75.75 0 0 1 .91-.546Z", + clipRule: "evenodd" + })); +}); +var _default = CodeIcon; +exports["default"] = _default; + +/***/ }), + +/***/ "../modules/ai/assets/js/editor/icons/copy-icon.js": +/*!*********************************************************!*\ + !*** ../modules/ai/assets/js/editor/icons/copy-icon.js ***! + \*********************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + + +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 _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ "../node_modules/@babel/runtime/helpers/extends.js")); +var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react")); +var _ui = __webpack_require__(/*! @elementor/ui */ "@elementor/ui"); +var CopyIcon = _react.default.forwardRef(function (props, ref) { + return /*#__PURE__*/_react.default.createElement(_ui.SvgIcon, (0, _extends2.default)({ + viewBox: "0 0 24 24" + }, props, { + ref: ref + }), /*#__PURE__*/_react.default.createElement("path", { + fillRule: "evenodd", + clipRule: "evenodd", + d: "M9 3.75C8.30964 3.75 7.75 4.30964 7.75 5V15C7.75 15.6904 8.30964 16.25 9 16.25H19C19.6904 16.25 20.25 15.6904 20.25 15V5C20.25 4.30964 19.6904 3.75 19 3.75H9ZM6.25 5C6.25 3.48122 7.48122 2.25 9 2.25H19C20.5188 2.25 21.75 3.48122 21.75 5V15C21.75 16.5188 20.5188 17.75 19 17.75H9C7.48122 17.75 6.25 16.5188 6.25 15V5Z" + }), /*#__PURE__*/_react.default.createElement("path", { + fillRule: "evenodd", + clipRule: "evenodd", + d: "M5 7.75C4.66848 7.75 4.35054 7.8817 4.11612 8.11612C3.8817 8.35054 3.75 8.66848 3.75 9V19C3.75 19.3315 3.8817 19.6495 4.11612 19.8839C4.35054 20.1183 4.66848 20.25 5 20.25H15C15.3315 20.25 15.6495 20.1183 15.8839 19.8839C16.1183 19.6495 16.25 19.3315 16.25 19V17C16.25 16.5858 16.5858 16.25 17 16.25C17.4142 16.25 17.75 16.5858 17.75 17V19C17.75 19.7293 17.4603 20.4288 16.9445 20.9445C16.4288 21.4603 15.7293 21.75 15 21.75H5C4.27065 21.75 3.57118 21.4603 3.05546 20.9445C2.53973 20.4288 2.25 19.7293 2.25 19V9C2.25 8.27065 2.53973 7.57118 3.05546 7.05546C3.57118 6.53973 4.27065 6.25 5 6.25H7C7.41421 6.25 7.75 6.58579 7.75 7C7.75 7.41421 7.41421 7.75 7 7.75H5Z" + })); +}); +var _default = CopyIcon; +exports["default"] = _default; + +/***/ }), + +/***/ "../modules/ai/assets/js/editor/icons/download-icon.js": +/*!*************************************************************!*\ + !*** ../modules/ai/assets/js/editor/icons/download-icon.js ***! + \*************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + + +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 _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ "../node_modules/@babel/runtime/helpers/extends.js")); +var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react")); +var _ui = __webpack_require__(/*! @elementor/ui */ "@elementor/ui"); +var DownloadIcon = _react.default.forwardRef(function (props, ref) { + return /*#__PURE__*/_react.default.createElement(_ui.SvgIcon, (0, _extends2.default)({ + viewBox: "0 0 24 24" + }, props, { + ref: ref + }), /*#__PURE__*/_react.default.createElement("path", { + fillRule: "evenodd", + clipRule: "evenodd", + d: "M4 16.25C4.41421 16.25 4.75 16.5858 4.75 17V19C4.75 19.3315 4.8817 19.6495 5.11612 19.8839C5.35054 20.1183 5.66848 20.25 6 20.25H18C18.3315 20.25 18.6495 20.1183 18.8839 19.8839C19.1183 19.6495 19.25 19.3315 19.25 19V17C19.25 16.5858 19.5858 16.25 20 16.25C20.4142 16.25 20.75 16.5858 20.75 17V19C20.75 19.7293 20.4603 20.4288 19.9445 20.9445C19.4288 21.4603 18.7293 21.75 18 21.75H6C5.27065 21.75 4.57118 21.4603 4.05546 20.9445C3.53973 20.4288 3.25 19.7293 3.25 19V17C3.25 16.5858 3.58579 16.25 4 16.25Z" + }), /*#__PURE__*/_react.default.createElement("path", { + fillRule: "evenodd", + clipRule: "evenodd", + d: "M6.46967 10.4697C6.76256 10.1768 7.23744 10.1768 7.53033 10.4697L12 14.9393L16.4697 10.4697C16.7626 10.1768 17.2374 10.1768 17.5303 10.4697C17.8232 10.7626 17.8232 11.2374 17.5303 11.5303L12.5303 16.5303C12.2374 16.8232 11.7626 16.8232 11.4697 16.5303L6.46967 11.5303C6.17678 11.2374 6.17678 10.7626 6.46967 10.4697Z" + }), /*#__PURE__*/_react.default.createElement("path", { + fillRule: "evenodd", + clipRule: "evenodd", + d: "M12 3.25C12.4142 3.25 12.75 3.58579 12.75 4V16C12.75 16.4142 12.4142 16.75 12 16.75C11.5858 16.75 11.25 16.4142 11.25 16V4C11.25 3.58579 11.5858 3.25 12 3.25Z" + })); +}); +var _default = DownloadIcon; +exports["default"] = _default; + +/***/ }), + +/***/ "../modules/ai/assets/js/editor/icons/edit-icon.js": +/*!*********************************************************!*\ + !*** ../modules/ai/assets/js/editor/icons/edit-icon.js ***! + \*********************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + + +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 _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ "../node_modules/@babel/runtime/helpers/extends.js")); +var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react")); +var _ui = __webpack_require__(/*! @elementor/ui */ "@elementor/ui"); +var EditIcon = _react.default.forwardRef(function (props, ref) { + return /*#__PURE__*/_react.default.createElement(_ui.SvgIcon, (0, _extends2.default)({ + viewBox: "0 0 24 24" + }, props, { + ref: ref + }), /*#__PURE__*/_react.default.createElement("path", { + fillRule: "evenodd", + clipRule: "evenodd", + d: "M13.9697 4.96967C14.6408 4.29858 15.5509 3.92157 16.5 3.92157C17.4491 3.92157 18.3592 4.29858 19.0303 4.96967C19.7014 5.64075 20.0784 6.55094 20.0784 7.5C20.0784 8.44905 19.7014 9.35924 19.0303 10.0303L8.53033 20.5303C8.38968 20.671 8.19891 20.75 8 20.75H4C3.58579 20.75 3.25 20.4142 3.25 20V16C3.25 15.8011 3.32902 15.6103 3.46967 15.4697L13.9697 4.96967ZM16.5 5.42157C15.9488 5.42157 15.4201 5.64055 15.0303 6.03033L4.75 16.3107V19.25H7.68934L17.9697 8.96967C18.3595 8.57989 18.5784 8.05123 18.5784 7.5C18.5784 6.94876 18.3595 6.42011 17.9697 6.03033C17.5799 5.64055 17.0512 5.42157 16.5 5.42157Z" + }), /*#__PURE__*/_react.default.createElement("path", { + fillRule: "evenodd", + clipRule: "evenodd", + d: "M12.9697 5.96967C13.2626 5.67677 13.7374 5.67677 14.0303 5.96967L18.0303 9.96967C18.3232 10.2626 18.3232 10.7374 18.0303 11.0303C17.7374 11.3232 17.2626 11.3232 16.9697 11.0303L12.9697 7.03033C12.6768 6.73743 12.6768 6.26256 12.9697 5.96967Z" + })); +}); +var _default = EditIcon; +exports["default"] = _default; + +/***/ }), + +/***/ "../modules/ai/assets/js/editor/icons/enlarger-icon.js": +/*!*************************************************************!*\ + !*** ../modules/ai/assets/js/editor/icons/enlarger-icon.js ***! + \*************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + + +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 _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ "../node_modules/@babel/runtime/helpers/extends.js")); +var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react")); +var _ui = __webpack_require__(/*! @elementor/ui */ "@elementor/ui"); +var ExpandIcon = _react.default.forwardRef(function (props, ref) { + return /*#__PURE__*/_react.default.createElement(_ui.SvgIcon, (0, _extends2.default)({ + viewBox: "0 0 24 24" + }, props, { + ref: ref + }), /*#__PURE__*/_react.default.createElement("path", { + fillRule: "evenodd", + clipRule: "evenodd", + d: "M5.11612 5.11612C5.35054 4.8817 5.66848 4.75 6 4.75H18C18.3315 4.75 18.6495 4.8817 18.8839 5.11612C19.1183 5.35054 19.25 5.66848 19.25 6V18C19.25 18.3315 19.1183 18.6495 18.8839 18.8839C18.6495 19.1183 18.3315 19.25 18 19.25H11.7335C11.7444 19.1709 11.75 19.0908 11.75 19.01V14.01C11.75 13.8051 11.7141 13.604 11.6457 13.4149L16.25 8.81066V11C16.25 11.4142 16.5858 11.75 17 11.75C17.4142 11.75 17.75 11.4142 17.75 11V7C17.75 6.89831 17.7298 6.80134 17.6931 6.71291C17.6565 6.62445 17.6022 6.54158 17.5303 6.46967C17.4584 6.39776 17.3755 6.34351 17.2871 6.30691C17.1993 6.27051 17.1031 6.2503 17.0022 6.25C17.0015 6.25 17.0007 6.25 17 6.25H16.9997H13C12.5858 6.25 12.25 6.58579 12.25 7C12.25 7.41421 12.5858 7.75 13 7.75H15.1893L10.5803 12.359C10.3956 12.2941 10.1995 12.26 10 12.26H5C4.91585 12.26 4.83232 12.2661 4.75 12.278V6C4.75 5.66848 4.8817 5.35054 5.11612 5.11612ZM4.75 14.01V18C4.75 18.3315 4.8817 18.6495 5.11612 18.8839C5.35054 19.1183 5.66848 19.25 6 19.25H10.07C10.11 19.2383 10.1468 19.2168 10.1768 19.1868C10.2237 19.1399 10.25 19.0763 10.25 19.01V14.01C10.25 13.9437 10.2237 13.8801 10.1768 13.8332C10.1299 13.7863 10.0663 13.76 10 13.76H5C4.9337 13.76 4.87011 13.7863 4.82322 13.8332C4.77634 13.8801 4.75 13.9437 4.75 14.01ZM3.25 14.01V6C3.25 5.27065 3.53973 4.57118 4.05546 4.05546C4.57118 3.53973 5.27065 3.25 6 3.25H18C18.7293 3.25 19.4288 3.53973 19.9445 4.05546C20.4603 4.57118 20.75 5.27065 20.75 6V18C20.75 18.7293 20.4603 19.4288 19.9445 19.9445C19.4288 20.4603 18.7293 20.75 18 20.75H10.187C10.1251 20.7566 10.0627 20.76 10 20.76H5C4.53587 20.76 4.09075 20.5756 3.76256 20.2474C3.43438 19.9193 3.25 19.4741 3.25 19.01V18V14.01Z" + })); +}); +var _default = ExpandIcon; +exports["default"] = _default; + +/***/ }), + +/***/ "../modules/ai/assets/js/editor/icons/evolve-icon.js": +/*!***********************************************************!*\ + !*** ../modules/ai/assets/js/editor/icons/evolve-icon.js ***! + \***********************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + + +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 _react = _interopRequireDefault(__webpack_require__(/*! react */ "react")); +var _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ "../node_modules/@babel/runtime/helpers/extends.js")); +var _ui = __webpack_require__(/*! @elementor/ui */ "@elementor/ui"); +var EvolveIcon = _react.default.forwardRef(function (props, ref) { + return /*#__PURE__*/_react.default.createElement(_ui.SvgIcon, (0, _extends2.default)({ + viewBox: "0 0 24 24" + }, props, { + ref: ref + }), /*#__PURE__*/_react.default.createElement("path", { + fillRule: "evenodd", + clipRule: "evenodd", + d: "M2.30691 2.71291C2.27024 2.80134 2.25 2.89831 2.25 3V8C2.25 8.41421 2.58579 8.75 3 8.75C3.41421 8.75 3.75 8.41421 3.75 8V4.81066L10.0056 11.0663L10.0057 11.0663C10.8022 11.8631 11.2497 12.9434 11.25 14.07V14.0702V15V21C11.25 21.4142 11.5858 21.75 12 21.75C12.4142 21.75 12.75 21.4142 12.75 21V15V14.0702V14.07C12.7503 12.9434 13.1979 11.863 13.9944 11.0663L20.25 4.81066V8C20.25 8.41421 20.5858 8.75 21 8.75C21.4142 8.75 21.75 8.41421 21.75 8V3C21.75 2.98706 21.7497 2.97419 21.749 2.96141C21.7446 2.87376 21.7251 2.79009 21.6931 2.71291C21.6565 2.62445 21.6022 2.54158 21.5303 2.46967C21.4584 2.39776 21.3755 2.34351 21.2871 2.30691C21.1987 2.27024 21.1017 2.25 21 2.25H16C15.5858 2.25 15.25 2.58579 15.25 3C15.25 3.41421 15.5858 3.75 16 3.75H19.1893L12.9337 10.0057L12.9336 10.0057C12.5656 10.3739 12.2526 10.7867 12 11.2316C11.7474 10.7867 11.4344 10.3739 11.0664 10.0057L11.0663 10.0057L4.81066 3.75H8C8.41421 3.75 8.75 3.41421 8.75 3C8.75 2.58579 8.41421 2.25 8 2.25H3C2.7937 2.25 2.60686 2.33329 2.47126 2.46808C2.47073 2.46861 2.4702 2.46914 2.46967 2.46967C2.46914 2.4702 2.46861 2.47073 2.46808 2.47126C2.39696 2.5428 2.34324 2.62511 2.30691 2.71291Z" + })); +}); +var _default = EvolveIcon; +exports["default"] = _default; + +/***/ }), + +/***/ "../modules/ai/assets/js/editor/icons/expand-icon.js": +/*!***********************************************************!*\ + !*** ../modules/ai/assets/js/editor/icons/expand-icon.js ***! + \***********************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + + +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 _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ "../node_modules/@babel/runtime/helpers/extends.js")); +var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react")); +var _ui = __webpack_require__(/*! @elementor/ui */ "@elementor/ui"); +var ExpandIcon = _react.default.forwardRef(function (props, ref) { + return /*#__PURE__*/_react.default.createElement(_ui.SvgIcon, (0, _extends2.default)({ + viewBox: "0 0 24 24" + }, props, { + ref: ref + }), /*#__PURE__*/_react.default.createElement("path", { + fillRule: "evenodd", + clipRule: "evenodd", + d: "M16 3.25C15.5858 3.25 15.25 3.58579 15.25 4C15.25 4.41421 15.5858 4.75 16 4.75H18.1893L13.4697 9.46967C13.1768 9.76256 13.1768 10.2374 13.4697 10.5303C13.7626 10.8232 14.2374 10.8232 14.5303 10.5303L19.25 5.81066V8C19.25 8.41421 19.5858 8.75 20 8.75C20.4142 8.75 20.75 8.41421 20.75 8V4C20.75 3.80806 20.6768 3.61612 20.5303 3.46967C20.4584 3.39776 20.3755 3.34351 20.2871 3.30691C20.1987 3.27024 20.1017 3.25 20 3.25H16ZM4 15.25C4.41421 15.25 4.75 15.5858 4.75 16V18.1893L9.46967 13.4697C9.76256 13.1768 10.2374 13.1768 10.5303 13.4697C10.8232 13.7626 10.8232 14.2374 10.5303 14.5303L5.81066 19.25H8C8.41421 19.25 8.75 19.5858 8.75 20C8.75 20.4142 8.41421 20.75 8 20.75H4C3.80806 20.75 3.61612 20.6768 3.46967 20.5303C3.39776 20.4584 3.34351 20.3755 3.30691 20.2871C3.27024 20.1987 3.25 20.1017 3.25 20V16C3.25 15.5858 3.58579 15.25 4 15.25ZM20.75 16V20C20.75 20.1017 20.7298 20.1987 20.6931 20.2871C20.6565 20.3755 20.6022 20.4584 20.5303 20.5303C20.4584 20.6022 20.3755 20.6565 20.2871 20.6931C20.2099 20.7251 20.1262 20.7446 20.0386 20.749C20.0258 20.7497 20.0129 20.75 20 20.75H16C15.5858 20.75 15.25 20.4142 15.25 20C15.25 19.5858 15.5858 19.25 16 19.25H18.1893L13.4697 14.5303C13.1768 14.2374 13.1768 13.7626 13.4697 13.4697C13.7626 13.1768 14.2374 13.1768 14.5303 13.4697L19.25 18.1893V16C19.25 15.5858 19.5858 15.25 20 15.25C20.4142 15.25 20.75 15.5858 20.75 16ZM3.71291 3.30691C3.80134 3.27024 3.89831 3.25 4 3.25H8C8.41421 3.25 8.75 3.58579 8.75 4C8.75 4.41421 8.41421 4.75 8 4.75H5.81066L10.5303 9.46967C10.8232 9.76256 10.8232 10.2374 10.5303 10.5303C10.2374 10.8232 9.76256 10.8232 9.46967 10.5303L4.75 5.81066V8C4.75 8.41421 4.41421 8.75 4 8.75C3.58579 8.75 3.25 8.41421 3.25 8V4C3.25 3.7937 3.33329 3.60686 3.46808 3.47126C3.46861 3.47073 3.46914 3.4702 3.46967 3.46967C3.4702 3.46914 3.47073 3.46861 3.47126 3.46808C3.5428 3.39696 3.62511 3.34324 3.71291 3.30691Z" + })); +}); +var _default = ExpandIcon; +exports["default"] = _default; + +/***/ }), + +/***/ "../modules/ai/assets/js/editor/icons/redo-icon.js": +/*!*********************************************************!*\ + !*** ../modules/ai/assets/js/editor/icons/redo-icon.js ***! + \*********************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + + +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 _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ "../node_modules/@babel/runtime/helpers/extends.js")); +var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react")); +var _ui = __webpack_require__(/*! @elementor/ui */ "@elementor/ui"); +var RedoIcon = _react.default.forwardRef(function (props, ref) { + return /*#__PURE__*/_react.default.createElement(_ui.SvgIcon, (0, _extends2.default)({ + viewBox: "0 0 24 24" + }, props, { + ref: ref + }), /*#__PURE__*/_react.default.createElement("path", { + d: "M15.5303 5.46967C15.2374 5.17678 14.7626 5.17678 14.4697 5.46967C14.1768 5.76256 14.1768 6.23744 14.4697 6.53033L17.1893 9.25H8C6.74022 9.25 5.53204 9.75044 4.64124 10.6412C3.75044 11.532 3.25 12.7402 3.25 14C3.25 15.2598 3.75044 16.468 4.64124 17.3588C5.53204 18.2496 6.74022 18.75 8 18.75H9C9.41421 18.75 9.75 18.4142 9.75 18C9.75 17.5858 9.41421 17.25 9 17.25H8C7.13805 17.25 6.3114 16.9076 5.7019 16.2981C5.09241 15.6886 4.75 14.862 4.75 14C4.75 13.138 5.09241 12.3114 5.7019 11.7019C6.3114 11.0924 7.13805 10.75 8 10.75H17.1893L14.4697 13.4697C14.1768 13.7626 14.1768 14.2374 14.4697 14.5303C14.7626 14.8232 15.2374 14.8232 15.5303 14.5303L19.5303 10.5303C19.6768 10.3839 19.75 10.1919 19.75 10C19.75 9.89831 19.7298 9.80134 19.6931 9.71291C19.6565 9.62445 19.6022 9.54158 19.5303 9.46967L15.5303 5.46967Z" + })); +}); +var _default = RedoIcon; +exports["default"] = _default; + +/***/ }), + +/***/ "../modules/ai/assets/js/editor/icons/refresh-icon.js": +/*!************************************************************!*\ + !*** ../modules/ai/assets/js/editor/icons/refresh-icon.js ***! + \************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + + +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 _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ "../node_modules/@babel/runtime/helpers/extends.js")); +var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react")); +var _ui = __webpack_require__(/*! @elementor/ui */ "@elementor/ui"); +var RefreshIcon = _react.default.forwardRef(function (props, ref) { + return /*#__PURE__*/_react.default.createElement(_ui.SvgIcon, (0, _extends2.default)({ + viewBox: "0 0 24 24" + }, props, { + ref: ref + }), /*#__PURE__*/_react.default.createElement("path", { + fillRule: "evenodd", + clipRule: "evenodd", + d: "M7.55012 4.45178C9.23098 3.48072 11.1845 3.08925 13.1097 3.33767C15.035 3.58609 16.8251 4.46061 18.2045 5.82653C19.5838 7.19245 20.4757 8.97399 20.743 10.8967C20.8 11.307 20.5136 11.6858 20.1033 11.7428C19.6931 11.7998 19.3142 11.5135 19.2572 11.1032C19.0353 9.50635 18.2945 8.02677 17.149 6.89236C16.0035 5.75795 14.5167 5.03165 12.9178 4.82534C11.3189 4.61902 9.69644 4.94414 8.30047 5.75061C7.24361 6.36117 6.36093 7.22198 5.72541 8.24995H8.00009C8.41431 8.24995 8.75009 8.58574 8.75009 8.99995C8.75009 9.41417 8.41431 9.74995 8.00009 9.74995H4.51686C4.5055 9.75021 4.49412 9.75021 4.48272 9.74995H4.00009C3.58588 9.74995 3.25009 9.41417 3.25009 8.99995V4.99995C3.25009 4.58574 3.58588 4.24995 4.00009 4.24995C4.41431 4.24995 4.75009 4.58574 4.75009 4.99995V7.00691C5.48358 5.96916 6.43655 5.0951 7.55012 4.45178Z" + }), /*#__PURE__*/_react.default.createElement("path", { + fillRule: "evenodd", + clipRule: "evenodd", + d: "M3.89686 12.2571C4.30713 12.2001 4.68594 12.4864 4.74295 12.8967C4.96487 14.4936 5.70565 15.9731 6.85119 17.1075C7.99673 18.242 9.48347 18.9683 11.0824 19.1746C12.6813 19.3809 14.3037 19.0558 15.6997 18.2493C16.7566 17.6387 17.6393 16.7779 18.2748 15.75H16.0001C15.5859 15.75 15.2501 15.4142 15.2501 15C15.2501 14.5857 15.5859 14.25 16.0001 14.25H19.4833C19.4947 14.2497 19.5061 14.2497 19.5175 14.25H20.0001C20.4143 14.25 20.7501 14.5857 20.7501 15V19C20.7501 19.4142 20.4143 19.75 20.0001 19.75C19.5859 19.75 19.2501 19.4142 19.2501 19V16.993C18.5166 18.0307 17.5636 18.9048 16.4501 19.5481C14.7692 20.5192 12.8157 20.9107 10.8904 20.6622C8.9652 20.4138 7.17504 19.5393 5.79572 18.1734C4.4164 16.8074 3.52443 15.0259 3.25723 13.1032C3.20022 12.6929 3.48658 12.3141 3.89686 12.2571Z" + })); +}); +var _default = RefreshIcon; +exports["default"] = _default; + +/***/ }), + +/***/ "../modules/ai/assets/js/editor/icons/remove-bg.js": +/*!*********************************************************!*\ + !*** ../modules/ai/assets/js/editor/icons/remove-bg.js ***! + \*********************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + + +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 _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ "../node_modules/@babel/runtime/helpers/extends.js")); +var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react")); +var _ui = __webpack_require__(/*! @elementor/ui */ "@elementor/ui"); +var RemoveBackgroundIcon = _react.default.forwardRef(function (props, ref) { + return /*#__PURE__*/_react.default.createElement(_ui.SvgIcon, (0, _extends2.default)({ + viewBox: "0 0 16 16" + }, props, { + ref: ref + }), /*#__PURE__*/_react.default.createElement("path", { + d: "M5.74996 2.50038C5.74996 2.2242 5.52607 2.00031 5.24989 2.00031C4.9737 2.00031 4.74981 2.2242 4.74981 2.50038V2.50705C4.74981 2.78323 4.9737 3.00712 5.24989 3.00712C5.52607 3.00712 5.74996 2.78323 5.74996 2.50705V2.50038Z" + }), /*#__PURE__*/_react.default.createElement("path", { + d: "M7.9997 2.00031C8.27588 2.00031 8.49978 2.2242 8.49978 2.50038V2.50705C8.49978 2.78323 8.27588 3.00712 7.9997 3.00712C7.72352 3.00712 7.49963 2.78323 7.49963 2.50705V2.50038C7.49963 2.2242 7.72352 2.00031 7.9997 2.00031Z" + }), /*#__PURE__*/_react.default.createElement("path", { + d: "M11.2496 2.50038C11.2496 2.2242 11.0257 2.00031 10.7495 2.00031C10.4733 2.00031 10.2494 2.2242 10.2494 2.50038V2.50705C10.2494 2.78323 10.4733 3.00712 10.7495 3.00712C11.0257 3.00712 11.2496 2.78323 11.2496 2.50705V2.50038Z" + }), /*#__PURE__*/_react.default.createElement("path", { + d: "M13.4993 2.00031C13.7755 2.00031 13.9994 2.2242 13.9994 2.50038V2.50705C13.9994 2.78323 13.7755 3.00712 13.4993 3.00712C13.2231 3.00712 12.9993 2.78323 12.9993 2.50705V2.50038C12.9993 2.2242 13.2231 2.00031 13.4993 2.00031Z" + }), /*#__PURE__*/_react.default.createElement("path", { + d: "M13.9994 5.25019C13.9994 4.97401 13.7755 4.75012 13.4993 4.75012C13.2231 4.75012 12.9993 4.97401 12.9993 5.25019V5.25686C12.9993 5.53304 13.2231 5.75694 13.4993 5.75694C13.7755 5.75694 13.9994 5.53304 13.9994 5.25686V5.25019Z" + }), /*#__PURE__*/_react.default.createElement("path", { + d: "M13.9994 8.00001C13.9994 7.72382 13.7755 7.49993 13.4993 7.49993C13.2231 7.49993 12.9993 7.72382 12.9993 8.00001V8.00667C12.9993 8.28286 13.2231 8.50675 13.4993 8.50675C13.7755 8.50675 13.9994 8.28286 13.9994 8.00667V8.00001Z" + }), /*#__PURE__*/_react.default.createElement("path", { + d: "M2.50007 7.49993C2.77626 7.49993 3.00015 7.72382 3.00015 8.00001V8.00667C3.00015 8.28286 2.77626 8.50675 2.50007 8.50675C2.22389 8.50675 2 8.28286 2 8.00667V8.00001C2 7.72382 2.22389 7.49993 2.50007 7.49993Z" + }), /*#__PURE__*/_react.default.createElement("path", { + d: "M3.00015 5.25019C3.00015 4.97401 2.77626 4.75012 2.50007 4.75012C2.22389 4.75012 2 4.97401 2 5.25019V5.25686C2 5.53304 2.22389 5.75694 2.50007 5.75694C2.77626 5.75694 3.00015 5.53304 3.00015 5.25686V5.25019Z" + }), /*#__PURE__*/_react.default.createElement("path", { + d: "M2.50007 2.00031C2.77626 2.00031 3.00015 2.2242 3.00015 2.50038V2.50705C3.00015 2.78323 2.77626 3.00712 2.50007 3.00712C2.22389 3.00712 2 2.78323 2 2.50705V2.50038C2 2.2242 2.22389 2.00031 2.50007 2.00031Z" + }), /*#__PURE__*/_react.default.createElement("path", { + d: "M9.37461 7.31255C9.94411 7.31255 10.4058 6.85088 10.4058 6.28137C10.4058 5.71187 9.94411 5.25019 9.37461 5.25019C8.8051 5.25019 8.34343 5.71187 8.34343 6.28137C8.34343 6.85088 8.8051 7.31255 9.37461 7.31255Z" + }), /*#__PURE__*/_react.default.createElement("path", { + d: "M9.37461 9.21061L7.6724 7.44357L7.66567 7.43672C7.27331 7.04478 6.79598 6.81248 6.28107 6.81248C5.76615 6.81248 5.28883 7.04478 4.89647 7.43672L4.88973 7.44358L2.13992 10.2982C2.05015 10.3913 2 10.5157 2 10.6451V13.4996C2 13.7758 2.22389 13.9997 2.50007 13.9997H13.4993C13.7755 13.9997 13.9994 13.7758 13.9994 13.4996V10.6451C13.9994 10.6365 13.9992 10.6279 13.9988 10.6194C13.9958 10.562 13.9833 10.5072 13.9627 10.4566C13.9409 10.403 13.9093 10.3523 13.8681 10.3073C13.8651 10.304 13.8621 10.3008 13.859 10.2976L12.4846 8.87085L12.4778 8.86399C12.0855 8.47205 11.6082 8.23975 11.0932 8.23975C10.5783 8.23975 10.101 8.47205 9.70864 8.86399L9.70191 8.87084L9.37461 9.21061ZM5.60649 8.14113L3.00015 10.8468V12.9996H12.9993V10.8468L11.7678 9.5684C11.5234 9.32549 11.2897 9.2399 11.0932 9.2399C10.8968 9.2399 10.6631 9.32549 10.4187 9.5684L10.069 9.93142L11.1097 11.0118C11.3013 11.2107 11.2954 11.5272 11.0965 11.7188C10.8975 11.9104 10.581 11.9045 10.3894 11.7056L9.01604 10.28C9.01482 10.2787 9.01361 10.2775 9.01241 10.2762L6.95564 8.14113C6.7112 7.89822 6.4775 7.81263 6.28107 7.81263C6.08463 7.81263 5.85094 7.89822 5.60649 8.14113Z" + })); +}); +var _default = RemoveBackgroundIcon; +exports["default"] = _default; + +/***/ }), + +/***/ "../modules/ai/assets/js/editor/icons/replace-bg.js": +/*!**********************************************************!*\ + !*** ../modules/ai/assets/js/editor/icons/replace-bg.js ***! + \**********************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + + +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 _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ "../node_modules/@babel/runtime/helpers/extends.js")); +var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react")); +var _ui = __webpack_require__(/*! @elementor/ui */ "@elementor/ui"); +var ReplaceBackgroundIcon = _react.default.forwardRef(function (props, ref) { + return /*#__PURE__*/_react.default.createElement(_ui.SvgIcon, (0, _extends2.default)({ + viewBox: "0 0 16 16" + }, props, { + ref: ref + }), /*#__PURE__*/_react.default.createElement("path", { + d: "M4.35355 1.64645C4.54882 1.84171 4.54882 2.15829 4.35355 2.35355L2.35355 4.35355C2.15829 4.54882 1.84171 4.54882 1.64645 4.35355C1.45118 4.15829 1.45118 3.84171 1.64645 3.64645L3.64645 1.64645C3.84171 1.45118 4.15829 1.45118 4.35355 1.64645Z" + }), /*#__PURE__*/_react.default.createElement("path", { + d: "M7.68689 1.64645C7.88215 1.84171 7.88215 2.15829 7.68689 2.35355L2.35355 7.68689C2.15829 7.88215 1.84171 7.88215 1.64645 7.68689C1.45118 7.49162 1.45118 7.17504 1.64645 6.97978L6.97978 1.64645C7.17504 1.45118 7.49162 1.45118 7.68689 1.64645Z" + }), /*#__PURE__*/_react.default.createElement("path", { + d: "M11.0202 1.64645C11.2155 1.84171 11.2155 2.15829 11.0202 2.35355L6.68689 6.68689C6.49162 6.88215 6.17504 6.88215 5.97978 6.68689C5.78452 6.49162 5.78452 6.17504 5.97978 5.97978L10.3131 1.64645C10.5084 1.45118 10.825 1.45118 11.0202 1.64645Z" + }), /*#__PURE__*/_react.default.createElement("path", { + d: "M14.3536 1.64645C14.5488 1.84171 14.5488 2.15829 14.3536 2.35355L11.0202 5.68689C10.825 5.88215 10.5084 5.88215 10.3131 5.68689C10.1179 5.49162 10.1179 5.17504 10.3131 4.97978L13.6464 1.64645C13.8417 1.45118 14.1583 1.45118 14.3536 1.64645Z" + }), /*#__PURE__*/_react.default.createElement("path", { + d: "M14.3536 4.97978C14.5488 5.17504 14.5488 5.49162 14.3536 5.68689L12.0202 8.02022C11.825 8.21548 11.5084 8.21548 11.3131 8.02022C11.1179 7.82496 11.1179 7.50838 11.3131 7.31311L13.6464 4.97978C13.8417 4.78452 14.1583 4.78452 14.3536 4.97978Z" + }), /*#__PURE__*/_react.default.createElement("path", { + d: "M14.3536 8.31311C14.5488 8.50838 14.5488 8.82496 14.3536 9.02022L14.0202 9.35355C13.825 9.54882 13.5084 9.54882 13.3131 9.35355C13.1179 9.15829 13.1179 8.84171 13.3131 8.64645L13.6464 8.31311C13.8417 8.11785 14.1583 8.11785 14.3536 8.31311Z" + }), /*#__PURE__*/_react.default.createElement("path", { + d: "M10.3333 7C10.3333 7.55228 9.88562 8 9.33333 8C8.78105 8 8.33333 7.55228 8.33333 7C8.33333 6.44772 8.78105 6 9.33333 6C9.88562 6 10.3333 6.44772 10.3333 7Z" + }), /*#__PURE__*/_react.default.createElement("path", { + d: "M6.33333 8.5C6.14679 8.5 5.92267 8.58153 5.6867 8.81725C5.67587 8.82806 5.66455 8.83838 5.65278 8.84816L2.5 11.4665V13.5H13.5V11.2318C13.5 10.9556 13.7239 10.7318 14 10.7318C14.2761 10.7318 14.5 10.9556 14.5 11.2318V14C14.5 14.2761 14.2761 14.5 14 14.5H2C1.72386 14.5 1.5 14.2761 1.5 14V11.2318C1.5 11.0831 1.56617 10.9421 1.68056 10.8471L4.99717 8.09274C5.37661 7.72073 5.83674 7.5 6.33333 7.5C6.83746 7.5 7.304 7.72747 7.6867 8.10976L7.69343 8.11662L11.0268 11.5769C11.2183 11.7758 11.2124 12.0923 11.0136 12.2839C10.8147 12.4755 10.4981 12.4696 10.3066 12.2707L6.97679 8.81408C6.74199 8.5808 6.51904 8.5 6.33333 8.5Z" + }), /*#__PURE__*/_react.default.createElement("path", { + d: "M10.3564 10.1984L9.69343 10.8866C9.50185 11.0854 9.18532 11.0914 8.98645 10.8998C8.78757 10.7082 8.78166 10.3917 8.97324 10.1928L9.6399 9.50073L9.64663 9.49387C10.4992 8.64223 11.843 8.83788 12.6387 9.45172C12.6435 9.45538 12.6482 9.45913 12.6528 9.46297L14.3194 10.8471C14.5319 11.0235 14.5611 11.3388 14.3846 11.5512C14.2082 11.7636 13.893 11.7928 13.6806 11.6164L12.0213 10.2384C11.4855 9.82976 10.7405 9.81862 10.3564 10.1984Z" + })); +}); +var _default = ReplaceBackgroundIcon; +exports["default"] = _default; + +/***/ }), + +/***/ "../modules/ai/assets/js/editor/icons/restore-icon.js": +/*!************************************************************!*\ + !*** ../modules/ai/assets/js/editor/icons/restore-icon.js ***! + \************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + + +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 _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ "../node_modules/@babel/runtime/helpers/extends.js")); +var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react")); +var _ui = __webpack_require__(/*! @elementor/ui */ "@elementor/ui"); +var RestoreIcon = _react.default.forwardRef(function (props, ref) { + return /*#__PURE__*/_react.default.createElement(_ui.SvgIcon, (0, _extends2.default)({ + viewBox: "0 0 24 24" + }, props, { + ref: ref + }), /*#__PURE__*/_react.default.createElement("path", { + fillRule: "evenodd", + d: "M11.913 3.22a8.781 8.781 0 0 1 3.367.634.75.75 0 1 1-.56 1.392A7.281 7.281 0 0 0 8.25 18.24V15a.75.75 0 0 1 1.5 0v4.433a.73.73 0 0 1 0 .034V20a.75.75 0 0 1-.75.75H4a.75.75 0 0 1 0-1.5h3.045a8.782 8.782 0 0 1 4.868-16.03ZM18.37 6.41a.75.75 0 0 1 .75.75v.01a.75.75 0 0 1-1.5 0v-.01a.75.75 0 0 1 .75-.75ZM13 19.19a.75.75 0 0 1 .75.75v.01a.75.75 0 0 1-1.5 0v-.01a.75.75 0 0 1 .75-.75ZM16.84 17.62a.75.75 0 0 1 .75.75v.01a.75.75 0 0 1-1.5 0v-.01a.75.75 0 0 1 .75-.75ZM19.37 14.35a.75.75 0 0 1 .75.75v.01a.75.75 0 0 1-1.5 0v-.01a.75.75 0 0 1 .75-.75ZM19.94 10.25a.75.75 0 0 1 .75.75v.01a.75.75 0 0 1-1.5 0V11a.75.75 0 0 1 .75-.75Z", + clipRule: "evenodd" + })); +}); +var _default = RestoreIcon; +exports["default"] = _default; + +/***/ }), + +/***/ "../modules/ai/assets/js/editor/icons/text-icon.js": +/*!*********************************************************!*\ + !*** ../modules/ai/assets/js/editor/icons/text-icon.js ***! + \*********************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + + +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 _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ "../node_modules/@babel/runtime/helpers/extends.js")); +var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react")); +var _ui = __webpack_require__(/*! @elementor/ui */ "@elementor/ui"); +var TextIcon = _react.default.forwardRef(function (props, ref) { + return /*#__PURE__*/_react.default.createElement(_ui.SvgIcon, (0, _extends2.default)({ + viewBox: "0 0 24 24" + }, props, { + ref: ref + }), /*#__PURE__*/_react.default.createElement("path", { + fillRule: "evenodd", + d: "M4.25 5A.75.75 0 0 1 5 4.25h14a.75.75 0 0 1 .75.75v2a.75.75 0 0 1-1.5 0V5.75H5.75V7a.75.75 0 0 1-1.5 0V5Z", + clipRule: "evenodd" + }), /*#__PURE__*/_react.default.createElement("path", { + fillRule: "evenodd", + d: "M12 4.25a.75.75 0 0 1 .75.75v14a.75.75 0 0 1-1.5 0V5a.75.75 0 0 1 .75-.75Z", + clipRule: "evenodd" + }), /*#__PURE__*/_react.default.createElement("path", { + fillRule: "evenodd", + d: "M9.25 19a.75.75 0 0 1 .75-.75h4a.75.75 0 0 1 0 1.5h-4a.75.75 0 0 1-.75-.75Z", + clipRule: "evenodd" + })); +}); +var _default = TextIcon; +exports["default"] = _default; + +/***/ }), + +/***/ "../modules/ai/assets/js/editor/icons/undo-icon.js": +/*!*********************************************************!*\ + !*** ../modules/ai/assets/js/editor/icons/undo-icon.js ***! + \*********************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + + +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 _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ "../node_modules/@babel/runtime/helpers/extends.js")); +var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react")); +var _ui = __webpack_require__(/*! @elementor/ui */ "@elementor/ui"); +var UndoIcon = _react.default.forwardRef(function (props, ref) { + return /*#__PURE__*/_react.default.createElement(_ui.SvgIcon, (0, _extends2.default)({ + viewBox: "0 0 24 24" + }, props, { + ref: ref + }), /*#__PURE__*/_react.default.createElement("path", { + d: "M9.53033 6.53033C9.82322 6.23744 9.82322 5.76256 9.53033 5.46967C9.23744 5.17678 8.76256 5.17678 8.46967 5.46967L4.46967 9.46967C4.39776 9.54158 4.34351 9.62445 4.30691 9.71291C4.27024 9.80134 4.25 9.89831 4.25 10C4.25 10.1017 4.27024 10.1987 4.30691 10.2871C4.34351 10.3755 4.39776 10.4584 4.46967 10.5303L8.46967 14.5303C8.76256 14.8232 9.23744 14.8232 9.53033 14.5303C9.82322 14.2374 9.82322 13.7626 9.53033 13.4697L6.81066 10.75H16C16.862 10.75 17.6886 11.0924 18.2981 11.7019C18.9076 12.3114 19.25 13.138 19.25 14C19.25 14.862 18.9076 15.6886 18.2981 16.2981C17.6886 16.9076 16.862 17.25 16 17.25H15C14.5858 17.25 14.25 17.5858 14.25 18C14.25 18.4142 14.5858 18.75 15 18.75H16C17.2598 18.75 18.468 18.2496 19.3588 17.3588C20.2496 16.468 20.75 15.2598 20.75 14C20.75 12.7402 20.2496 11.532 19.3588 10.6412C18.468 9.75044 17.2598 9.25 16 9.25H6.81066L9.53033 6.53033Z" + })); +}); +var _default = UndoIcon; +exports["default"] = _default; + +/***/ }), + +/***/ "../modules/ai/assets/js/editor/icons/wand-icon.js": +/*!*********************************************************!*\ + !*** ../modules/ai/assets/js/editor/icons/wand-icon.js ***! + \*********************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + + +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 _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ "../node_modules/@babel/runtime/helpers/extends.js")); +var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react")); +var _ui = __webpack_require__(/*! @elementor/ui */ "@elementor/ui"); +var WandIcon = _react.default.forwardRef(function (props, ref) { + return /*#__PURE__*/_react.default.createElement(_ui.SvgIcon, (0, _extends2.default)({ + viewBox: "0 0 24 24" + }, props, { + ref: ref + }), /*#__PURE__*/_react.default.createElement("path", { + fillRule: "evenodd", + clipRule: "evenodd", + d: "M9 2.25C9.41421 2.25 9.75 2.58579 9.75 3C9.75 3.33152 9.8817 3.64946 10.1161 3.88388C10.3505 4.1183 10.6685 4.25 11 4.25C11.4142 4.25 11.75 4.58579 11.75 5C11.75 5.41421 11.4142 5.75 11 5.75C10.6685 5.75 10.3505 5.8817 10.1161 6.11612C9.8817 6.35054 9.75 6.66848 9.75 7C9.75 7.41421 9.41421 7.75 9 7.75C8.58579 7.75 8.25 7.41421 8.25 7C8.25 6.66848 8.1183 6.35054 7.88388 6.11612C7.64946 5.8817 7.33152 5.75 7 5.75C6.58579 5.75 6.25 5.41421 6.25 5C6.25 4.58579 6.58579 4.25 7 4.25C7.33152 4.25 7.64946 4.1183 7.88388 3.88388C8.1183 3.64946 8.25 3.33152 8.25 3C8.25 2.58579 8.58579 2.25 9 2.25ZM9 4.88746C8.98182 4.90673 8.96333 4.92576 8.94454 4.94454C8.92576 4.96333 8.90673 4.98182 8.88746 5C8.90673 5.01818 8.92576 5.03667 8.94454 5.05546C8.96333 5.07424 8.98182 5.09327 9 5.11254C9.01818 5.09327 9.03667 5.07424 9.05546 5.05546C9.07424 5.03667 9.09327 5.01818 9.11254 5C9.09327 4.98182 9.07424 4.96333 9.05546 4.94454C9.03667 4.92576 9.01818 4.90673 9 4.88746Z" + }), /*#__PURE__*/_react.default.createElement("path", { + fillRule: "evenodd", + clipRule: "evenodd", + d: "M18.5303 2.46967C18.2374 2.17678 17.7626 2.17678 17.4697 2.46967L2.46967 17.4697C2.17678 17.7626 2.17678 18.2374 2.46967 18.5303L5.46967 21.5303C5.76256 21.8232 6.23744 21.8232 6.53033 21.5303L21.5303 6.53033C21.8232 6.23744 21.8232 5.76256 21.5303 5.46967L18.5303 2.46967ZM18 7.93934L19.9393 6L18 4.06066L16.0607 6L18 7.93934ZM15 7.06066L16.9393 9L6 19.9393L4.06066 18L15 7.06066Z" + }), /*#__PURE__*/_react.default.createElement("path", { + fillRule: "evenodd", + clipRule: "evenodd", + d: "M19.75 13C19.75 12.5858 19.4142 12.25 19 12.25C18.5858 12.25 18.25 12.5858 18.25 13C18.25 13.3315 18.1183 13.6495 17.8839 13.8839C17.6495 14.1183 17.3315 14.25 17 14.25C16.5858 14.25 16.25 14.5858 16.25 15C16.25 15.4142 16.5858 15.75 17 15.75C17.3315 15.75 17.6495 15.8817 17.8839 16.1161C18.1183 16.3505 18.25 16.6685 18.25 17C18.25 17.4142 18.5858 17.75 19 17.75C19.4142 17.75 19.75 17.4142 19.75 17C19.75 16.6685 19.8817 16.3505 20.1161 16.1161C20.3505 15.8817 20.6685 15.75 21 15.75C21.4142 15.75 21.75 15.4142 21.75 15C21.75 14.5858 21.4142 14.25 21 14.25C20.6685 14.25 20.3505 14.1183 20.1161 13.8839C19.8817 13.6495 19.75 13.3315 19.75 13ZM18.9445 14.9445C18.9633 14.9258 18.9818 14.9067 19 14.8875C19.0182 14.9067 19.0367 14.9258 19.0555 14.9445C19.0742 14.9633 19.0933 14.9818 19.1125 15C19.0933 15.0182 19.0742 15.0367 19.0555 15.0555C19.0367 15.0742 19.0182 15.0933 19 15.1125C18.9818 15.0933 18.9633 15.0742 18.9445 15.0555C18.9258 15.0367 18.9067 15.0182 18.8875 15C18.9067 14.9818 18.9258 14.9633 18.9445 14.9445Z" + })); +}); +var _default = WandIcon; +exports["default"] = _default; + +/***/ }), + +/***/ "../modules/ai/assets/js/editor/icons/zoom-in-icon.js": +/*!************************************************************!*\ + !*** ../modules/ai/assets/js/editor/icons/zoom-in-icon.js ***! + \************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + + +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 _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ "../node_modules/@babel/runtime/helpers/extends.js")); +var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react")); +var _ui = __webpack_require__(/*! @elementor/ui */ "@elementor/ui"); +var ZoomInIcon = _react.default.forwardRef(function (props, ref) { + return /*#__PURE__*/_react.default.createElement(_ui.SvgIcon, (0, _extends2.default)({ + viewBox: "0 0 24 24" + }, props, { + ref: ref + }), /*#__PURE__*/_react.default.createElement("path", { + fillRule: "evenodd", + clipRule: "evenodd", + d: "M10 3.75C6.54822 3.75 3.75 6.54822 3.75 10C3.75 13.4518 6.54822 16.25 10 16.25C13.4518 16.25 16.25 13.4518 16.25 10C16.25 6.54822 13.4518 3.75 10 3.75ZM2.25 10C2.25 5.71979 5.71979 2.25 10 2.25C14.2802 2.25 17.75 5.71979 17.75 10C17.75 14.2802 14.2802 17.75 10 17.75C5.71979 17.75 2.25 14.2802 2.25 10Z" + }), /*#__PURE__*/_react.default.createElement("path", { + fillRule: "evenodd", + clipRule: "evenodd", + d: "M6.25 10C6.25 9.58579 6.58579 9.25 7 9.25H13C13.4142 9.25 13.75 9.58579 13.75 10C13.75 10.4142 13.4142 10.75 13 10.75H7C6.58579 10.75 6.25 10.4142 6.25 10Z" + }), /*#__PURE__*/_react.default.createElement("path", { + fillRule: "evenodd", + clipRule: "evenodd", + d: "M10 6.25C10.4142 6.25 10.75 6.58579 10.75 7V13C10.75 13.4142 10.4142 13.75 10 13.75C9.58579 13.75 9.25 13.4142 9.25 13V7C9.25 6.58579 9.58579 6.25 10 6.25Z" + }), /*#__PURE__*/_react.default.createElement("path", { + fillRule: "evenodd", + clipRule: "evenodd", + d: "M14.4697 14.4697C14.7626 14.1768 15.2374 14.1768 15.5303 14.4697L21.5303 20.4697C21.8232 20.7626 21.8232 21.2374 21.5303 21.5303C21.2374 21.8232 20.7626 21.8232 20.4697 21.5303L14.4697 15.5303C14.1768 15.2374 14.1768 14.7626 14.4697 14.4697Z" + })); +}); +var _default = ZoomInIcon; +exports["default"] = _default; + +/***/ }), + +/***/ "../modules/ai/assets/js/editor/page-content.js": +/*!******************************************************!*\ + !*** ../modules/ai/assets/js/editor/page-content.js ***! + \******************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + + +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 _react = _interopRequireDefault(__webpack_require__(/*! react */ "react")); +var _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ "../node_modules/@babel/runtime/helpers/extends.js")); +var _propTypes = _interopRequireDefault(__webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js")); +var _formText = _interopRequireDefault(__webpack_require__(/*! ./pages/form-text */ "../modules/ai/assets/js/editor/pages/form-text/index.js")); +var _connect = _interopRequireDefault(__webpack_require__(/*! ./pages/connect */ "../modules/ai/assets/js/editor/pages/connect/index.js")); +var _formCode = _interopRequireDefault(__webpack_require__(/*! ./pages/form-code */ "../modules/ai/assets/js/editor/pages/form-code/index.js")); +var _getStarted = _interopRequireDefault(__webpack_require__(/*! ./pages/get-started */ "../modules/ai/assets/js/editor/pages/get-started/index.js")); +var _loader = _interopRequireDefault(__webpack_require__(/*! ./components/loader */ "../modules/ai/assets/js/editor/components/loader.js")); +var _useUserInfo2 = _interopRequireDefault(__webpack_require__(/*! ./hooks/use-user-info */ "../modules/ai/assets/js/editor/hooks/use-user-info.js")); +var _wizardDialog = _interopRequireDefault(__webpack_require__(/*! ./components/wizard-dialog */ "../modules/ai/assets/js/editor/components/wizard-dialog.js")); +var _promptDialog = _interopRequireDefault(__webpack_require__(/*! ./components/prompt-dialog */ "../modules/ai/assets/js/editor/components/prompt-dialog.js")); +var _upgradeChip = _interopRequireDefault(__webpack_require__(/*! ./components/upgrade-chip */ "../modules/ai/assets/js/editor/components/upgrade-chip.js")); +var _formMedia = _interopRequireDefault(__webpack_require__(/*! ./pages/form-media */ "../modules/ai/assets/js/editor/pages/form-media/index.js")); +var _promptHistory = _interopRequireDefault(__webpack_require__(/*! ./components/prompt-history */ "../modules/ai/assets/js/editor/components/prompt-history/index.js")); +var _historyTypes = __webpack_require__(/*! ./components/prompt-history/history-types */ "../modules/ai/assets/js/editor/components/prompt-history/history-types.js"); +var _promptHistoryActionContext = __webpack_require__(/*! ./components/prompt-history/context/prompt-history-action-context */ "../modules/ai/assets/js/editor/components/prompt-history/context/prompt-history-action-context.js"); +var _promptHistoryContext = __webpack_require__(/*! ./components/prompt-history/context/prompt-history-context */ "../modules/ai/assets/js/editor/components/prompt-history/context/prompt-history-context.js"); +var _useUpgradeMessage2 = _interopRequireDefault(__webpack_require__(/*! ./hooks/use-upgrade-message */ "../modules/ai/assets/js/editor/hooks/use-upgrade-message.js")); +var _usageMessages = _interopRequireDefault(__webpack_require__(/*! ./components/usage-messages */ "../modules/ai/assets/js/editor/components/usage-messages.js")); +var PageContent = function PageContent(_ref) { + var type = _ref.type, + controlType = _ref.controlType, + onClose = _ref.onClose, + onConnect = _ref.onConnect, + getControlValue = _ref.getControlValue, + setControlValue = _ref.setControlValue, + controlView = _ref.controlView, + additionalOptions = _ref.additionalOptions; + var _useUserInfo = (0, _useUserInfo2.default)(), + isLoading = _useUserInfo.isLoading, + isConnected = _useUserInfo.isConnected, + isGetStarted = _useUserInfo.isGetStarted, + connectUrl = _useUserInfo.connectUrl, + fetchData = _useUserInfo.fetchData, + hasSubscription = _useUserInfo.hasSubscription, + credits = _useUserInfo.credits, + usagePercentage = _useUserInfo.usagePercentage; + var _useUpgradeMessage = (0, _useUpgradeMessage2.default)({ + usagePercentage: usagePercentage, + hasSubscription: hasSubscription + }), + showBadge = _useUpgradeMessage.showBadge; + var promptDialogStyleProps = { + sx: { + '& .MuiDialog-container': { + alignItems: 'flex-start', + mt: 'media' === type ? '2.5vh' : '18vh' + }, + '& .MuiDialogContent-root': { + willChange: 'height', + transition: 'height 300ms ease-in-out', + position: 'relative' + } + }, + PaperProps: { + sx: { + m: 0, + maxHeight: 'media' === type ? '95vh' : '76vh', + height: !isLoading && 'media' === type ? '95vh' : 'auto' + } + } + }; + var maybeRenderUpgradeChip = function maybeRenderUpgradeChip() { + if (!showBadge) { + return; + } + return /*#__PURE__*/_react.default.createElement(_upgradeChip.default, { + hasSubscription: hasSubscription, + usagePercentage: usagePercentage + }); + }; + if (isLoading) { + return /*#__PURE__*/_react.default.createElement(_promptDialog.default, (0, _extends2.default)({ + onClose: onClose + }, promptDialogStyleProps, { + maxWidth: 'media' === type ? 'lg' : 'sm' + }), /*#__PURE__*/_react.default.createElement(_promptDialog.default.Header, { + onClose: onClose + }), /*#__PURE__*/_react.default.createElement(_promptDialog.default.Content, { + dividers: true + }, /*#__PURE__*/_react.default.createElement(_loader.default, null))); + } + if (!isConnected) { + return /*#__PURE__*/_react.default.createElement(_wizardDialog.default, { + onClose: onClose + }, /*#__PURE__*/_react.default.createElement(_wizardDialog.default.Header, { + onClose: onClose + }), /*#__PURE__*/_react.default.createElement(_wizardDialog.default.Content, { + dividers: true + }, /*#__PURE__*/_react.default.createElement(_connect.default, { + connectUrl: connectUrl, + onSuccess: function onSuccess(data) { + onConnect(data); + fetchData(); + } + }))); + } + if (!isGetStarted) { + return /*#__PURE__*/_react.default.createElement(_wizardDialog.default, { + onClose: onClose + }, /*#__PURE__*/_react.default.createElement(_wizardDialog.default.Header, { + onClose: onClose + }), /*#__PURE__*/_react.default.createElement(_wizardDialog.default.Content, { + dividers: true + }, /*#__PURE__*/_react.default.createElement(_getStarted.default, { + onSuccess: fetchData + }))); + } + if ('media' === type) { + return /*#__PURE__*/_react.default.createElement(_promptHistoryContext.PromptHistoryProvider, { + historyType: _historyTypes.HISTORY_TYPES.IMAGE + }, /*#__PURE__*/_react.default.createElement(_promptHistoryActionContext.PromptHistoryActionProvider, null, /*#__PURE__*/_react.default.createElement(_formMedia.default, { + onClose: onClose, + getControlValue: getControlValue, + controlView: controlView, + additionalOptions: additionalOptions, + credits: credits, + maybeRenderUpgradeChip: maybeRenderUpgradeChip, + DialogProps: promptDialogStyleProps, + hasSubscription: hasSubscription, + usagePercentage: usagePercentage + }))); + } + if ('code' === type) { + return /*#__PURE__*/_react.default.createElement(_promptDialog.default, (0, _extends2.default)({ + onClose: onClose + }, promptDialogStyleProps), /*#__PURE__*/_react.default.createElement(_promptHistoryContext.PromptHistoryProvider, { + historyType: _historyTypes.HISTORY_TYPES.CODE + }, /*#__PURE__*/_react.default.createElement(_promptHistoryActionContext.PromptHistoryActionProvider, null, /*#__PURE__*/_react.default.createElement(_promptDialog.default.Header, { + onClose: onClose + }, /*#__PURE__*/_react.default.createElement(_promptHistory.default, null), maybeRenderUpgradeChip()), /*#__PURE__*/_react.default.createElement(_promptDialog.default.Content, { + className: "e-ai-dialog-content", + dividers: true + }, /*#__PURE__*/_react.default.createElement(_formCode.default, { + onClose: onClose, + getControlValue: getControlValue, + setControlValue: setControlValue, + additionalOptions: additionalOptions, + credits: credits, + usagePercentage: usagePercentage + }, /*#__PURE__*/_react.default.createElement(_usageMessages.default, { + hasSubscription: hasSubscription, + usagePercentage: usagePercentage, + sx: { + mb: 2 + } + })))))); + } + return /*#__PURE__*/_react.default.createElement(_promptDialog.default, (0, _extends2.default)({ + onClose: onClose + }, promptDialogStyleProps), /*#__PURE__*/_react.default.createElement(_promptHistoryContext.PromptHistoryProvider, { + historyType: _historyTypes.HISTORY_TYPES.TEXT + }, /*#__PURE__*/_react.default.createElement(_promptHistoryActionContext.PromptHistoryActionProvider, null, /*#__PURE__*/_react.default.createElement(_promptDialog.default.Header, { + onClose: onClose + }, /*#__PURE__*/_react.default.createElement(_promptHistory.default, null), maybeRenderUpgradeChip()), /*#__PURE__*/_react.default.createElement(_promptDialog.default.Content, { + className: "e-ai-dialog-content", + dividers: true + }, /*#__PURE__*/_react.default.createElement(_formText.default, { + type: type, + controlType: controlType, + onClose: onClose, + getControlValue: getControlValue, + setControlValue: setControlValue, + additionalOptions: additionalOptions, + credits: credits, + usagePercentage: usagePercentage + }, /*#__PURE__*/_react.default.createElement(_usageMessages.default, { + hasSubscription: hasSubscription, + usagePercentage: usagePercentage, + sx: { + mb: 2 + } + })))))); +}; +PageContent.propTypes = { + type: _propTypes.default.string, + controlType: _propTypes.default.string, + onClose: _propTypes.default.func.isRequired, + onConnect: _propTypes.default.func.isRequired, + getControlValue: _propTypes.default.func.isRequired, + setControlValue: _propTypes.default.func.isRequired, + additionalOptions: _propTypes.default.object, + controlView: _propTypes.default.object +}; +var _default = PageContent; +exports["default"] = _default; + +/***/ }), + +/***/ "../modules/ai/assets/js/editor/pages/connect/index.js": +/*!*************************************************************!*\ + !*** ../modules/ai/assets/js/editor/pages/connect/index.js ***! + \*************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + + +var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js"); +var _typeof = __webpack_require__(/*! @babel/runtime/helpers/typeof */ "../node_modules/@babel/runtime/helpers/typeof.js"); +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; +var _react = _interopRequireWildcard(__webpack_require__(/*! react */ "react")); +var _ui = __webpack_require__(/*! @elementor/ui */ "@elementor/ui"); +var _i18n = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n"); +var _propTypes = _interopRequireDefault(__webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js")); +var _icons = __webpack_require__(/*! @elementor/icons */ "@elementor/icons"); +function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); } +function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; } +var Connect = function Connect(_ref) { + var connectUrl = _ref.connectUrl, + onSuccess = _ref.onSuccess; + var approveButtonRef = (0, _react.useRef)(); + (0, _react.useEffect)(function () { + // On local dev (as a standalone app), the connect lib is not loaded. + if (!jQuery.fn.elementorConnect) { + return; + } + jQuery(approveButtonRef.current).elementorConnect({ + success: function success(_, data) { + return onSuccess(data); + }, + error: function error() { + throw new Error('Elementor AI: Failed to connect.'); + } + }); + }, []); + return /*#__PURE__*/_react.default.createElement(_ui.Stack, { + alignItems: "center", + gap: 2 + }, /*#__PURE__*/_react.default.createElement(_icons.AIIcon, { + sx: { + color: 'text.primary', + fontSize: '60px', + mb: 1 + } + }), /*#__PURE__*/_react.default.createElement(_ui.Typography, { + variant: "h4", + sx: { + color: 'text.primary' + } + }, (0, _i18n.__)('Step into the future with Elementor AI', 'elementor')), /*#__PURE__*/_react.default.createElement(_ui.Typography, { + variant: "body2" + }, (0, _i18n.__)('Create smarter with AI text and code generators built right into the editor.', 'elementor')), /*#__PURE__*/_react.default.createElement(_ui.Typography, { + variant: "caption", + sx: { + maxWidth: 520, + textAlign: 'center' + } + }, (0, _i18n.__)('By clicking "Connect", I approve the ', 'elementor'), /*#__PURE__*/_react.default.createElement(_ui.Link, { + href: "https://go.elementor.com/ai-terms/", + target: "_blank", + color: "info.main" + }, (0, _i18n.__)('Terms of Service', 'elementor')), ' & ', /*#__PURE__*/_react.default.createElement(_ui.Link, { + href: "https://go.elementor.com/ai-privacy-policy/", + target: "_blank", + color: "info.main" + }, (0, _i18n.__)('Privacy Policy', 'elementor')), (0, _i18n.__)(' of the Elementor AI service.', 'elementor')), /*#__PURE__*/_react.default.createElement(_ui.Button, { + ref: approveButtonRef, + href: connectUrl, + variant: "contained", + sx: { + mt: 1, + '&:hover': { + color: 'primary.contrastText' + } + } + }, (0, _i18n.__)('Connect', 'elementor'))); +}; +Connect.propTypes = { + connectUrl: _propTypes.default.string.isRequired, + onSuccess: _propTypes.default.func.isRequired +}; +var _default = Connect; +exports["default"] = _default; + +/***/ }), + +/***/ "../modules/ai/assets/js/editor/pages/form-code/code-block.js": +/*!********************************************************************!*\ + !*** ../modules/ai/assets/js/editor/pages/form-code/code-block.js ***! + \********************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + + +var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js"); +var _typeof = __webpack_require__(/*! @babel/runtime/helpers/typeof */ "../node_modules/@babel/runtime/helpers/typeof.js"); +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; +var _react = _interopRequireWildcard(__webpack_require__(/*! react */ "react")); +var _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ "../node_modules/@babel/runtime/helpers/extends.js")); +var _objectWithoutProperties2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/objectWithoutProperties */ "../node_modules/@babel/runtime/helpers/objectWithoutProperties.js")); +var _ui = __webpack_require__(/*! @elementor/ui */ "@elementor/ui"); +var _i18n = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n"); +var _propTypes = _interopRequireDefault(__webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js")); +var _textarea = _interopRequireDefault(__webpack_require__(/*! ../../components/textarea */ "../modules/ai/assets/js/editor/components/textarea.js")); +var _excluded = ["node", "inline", "children", "defaultValue", "onInsert"]; +function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); } +function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; } +var CodeBlock = function CodeBlock(_ref) { + var node = _ref.node, + inline = _ref.inline, + children = _ref.children, + defaultValue = _ref.defaultValue, + onInsert = _ref.onInsert, + props = (0, _objectWithoutProperties2.default)(_ref, _excluded); + var codeBlockInput = (0, _react.useRef)(null); + if (inline) { + return /*#__PURE__*/_react.default.createElement("code", props); + } + return /*#__PURE__*/_react.default.createElement(_ui.Box, { + sx: { + position: 'relative' + }, + dir: "ltr" + }, /*#__PURE__*/_react.default.createElement(_textarea.default, (0, _extends2.default)({ + fullWidth: true, + ref: codeBlockInput, + defaultValue: children[0], + sx: { + mb: 1 + }, + helperText: (0, _i18n.__)('Code generated by AI may be inaccurate.', 'elementor') + }, props)), /*#__PURE__*/_react.default.createElement(_ui.Button, { + size: "small", + variant: "contained", + onClick: function onClick() { + return onInsert(defaultValue + '\n' + codeBlockInput.current.value); + }, + sx: { + position: 'absolute', + right: '11px /* @noflip */', + bottom: '44px' + } + }, (0, _i18n.__)('Insert', 'elementor'))); +}; +CodeBlock.propTypes = { + node: _propTypes.default.object, + inline: _propTypes.default.bool, + children: _propTypes.default.arrayOf(_propTypes.default.node).isRequired, + defaultValue: _propTypes.default.string, + onInsert: _propTypes.default.func.isRequired +}; +var _default = CodeBlock; +exports["default"] = _default; + +/***/ }), + +/***/ "../modules/ai/assets/js/editor/pages/form-code/index.js": +/*!***************************************************************!*\ + !*** ../modules/ai/assets/js/editor/pages/form-code/index.js ***! + \***************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + + +var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js"); +var _typeof = __webpack_require__(/*! @babel/runtime/helpers/typeof */ "../node_modules/@babel/runtime/helpers/typeof.js"); +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; +var _react = _interopRequireWildcard(__webpack_require__(/*! react */ "react")); +var _regenerator = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/regenerator */ "../node_modules/@babel/runtime/regenerator/index.js")); +var _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ "../node_modules/@babel/runtime/helpers/extends.js")); +var _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ "../node_modules/@babel/runtime/helpers/asyncToGenerator.js")); +var _slicedToArray2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/slicedToArray */ "../node_modules/@babel/runtime/helpers/slicedToArray.js")); +var _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/defineProperty */ "../node_modules/@babel/runtime/helpers/defineProperty.js")); +var _ui = __webpack_require__(/*! @elementor/ui */ "@elementor/ui"); +var _i18n = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n"); +var _propTypes = _interopRequireDefault(__webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js")); +var _reactMarkdown = _interopRequireDefault(__webpack_require__(/*! react-markdown */ "../node_modules/react-markdown/index.js")); +var _actionsData = __webpack_require__(/*! ../../actions-data */ "../modules/ai/assets/js/editor/actions-data.js"); +var _loader = _interopRequireDefault(__webpack_require__(/*! ../../components/loader */ "../modules/ai/assets/js/editor/components/loader.js")); +var _promptSearch = _interopRequireDefault(__webpack_require__(/*! ../../components/prompt-search */ "../modules/ai/assets/js/editor/components/prompt-search.js")); +var _promptSuggestions = _interopRequireDefault(__webpack_require__(/*! ../../components/prompt-suggestions */ "../modules/ai/assets/js/editor/components/prompt-suggestions.js")); +var _generateButton = _interopRequireDefault(__webpack_require__(/*! ../../components/generate-button */ "../modules/ai/assets/js/editor/components/generate-button.js")); +var _promptErrorMessage = _interopRequireDefault(__webpack_require__(/*! ../../components/prompt-error-message */ "../modules/ai/assets/js/editor/components/prompt-error-message.js")); +var _codeBlock = _interopRequireDefault(__webpack_require__(/*! ./code-block */ "../modules/ai/assets/js/editor/pages/form-code/code-block.js")); +var _useCodePrompt2 = _interopRequireDefault(__webpack_require__(/*! ../../hooks/use-code-prompt */ "../modules/ai/assets/js/editor/hooks/use-code-prompt.js")); +var _promptHistoryActionContext = __webpack_require__(/*! ../../components/prompt-history/context/prompt-history-action-context */ "../modules/ai/assets/js/editor/components/prompt-history/context/prompt-history-action-context.js"); +var _promptLibraryLink = _interopRequireDefault(__webpack_require__(/*! ../../components/prompt-library-link */ "../modules/ai/assets/js/editor/components/prompt-library-link.js")); +var _requestsIds = __webpack_require__(/*! ../../context/requests-ids */ "../modules/ai/assets/js/editor/context/requests-ids.js"); +var _voicePromotionAlert = __webpack_require__(/*! ../../components/voice-promotion-alert */ "../modules/ai/assets/js/editor/components/voice-promotion-alert.js"); +function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); } +function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; } +function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; } +function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; } +var CodeDisplayWrapper = (0, _ui.styled)(_ui.Box)(function () { + return { + '& p': { + mb: '10px', + fontSize: '13px', + lineHeight: '1.5' + }, + '& pre': { + position: 'relative' + }, + '& textarea': { + fontSize: '13px', + lineHeight: '1.7' + } + }; +}); +var FormCode = function FormCode(_ref) { + var onClose = _ref.onClose, + getControlValue = _ref.getControlValue, + setControlValue = _ref.setControlValue, + additionalOptions = _ref.additionalOptions, + credits = _ref.credits, + children = _ref.children; + var _useCodePrompt = (0, _useCodePrompt2.default)(_objectSpread(_objectSpread({}, additionalOptions), {}, { + credits: credits + })), + data = _useCodePrompt.data, + isLoading = _useCodePrompt.isLoading, + error = _useCodePrompt.error, + reset = _useCodePrompt.reset, + send = _useCodePrompt.send, + sendUsageData = _useCodePrompt.sendUsageData; + var _useState = (0, _react.useState)(''), + _useState2 = (0, _slicedToArray2.default)(_useState, 2), + prompt = _useState2[0], + setPrompt = _useState2[1]; + var _useRequestIds = (0, _requestsIds.useRequestIds)(), + setGenerate = _useRequestIds.setGenerate; + (0, _promptHistoryActionContext.useSubscribeOnPromptHistoryAction)([{ + type: _promptHistoryActionContext.ACTION_TYPES.REUSE, + handler: function handler(action) { + reset(); + setPrompt(action.data); + } + }]); + var lastRun = (0, _react.useRef)(function () {}); + var autocompleteItems = _actionsData.codeHtmlAutocomplete; + var promptLibraryLink = ''; + if ('css' === (additionalOptions === null || additionalOptions === void 0 ? void 0 : additionalOptions.codeLanguage)) { + autocompleteItems = _actionsData.codeCssAutocomplete; + promptLibraryLink = 'https://go.elementor.com/ai-prompt-library-css/'; + } else if (additionalOptions !== null && additionalOptions !== void 0 && additionalOptions.htmlMarkup) { + promptLibraryLink = 'https://go.elementor.com/ai-prompt-library-html/'; + } else { + promptLibraryLink = 'https://go.elementor.com/ai-prompt-library-custom-code/'; + } + var showSuggestions = !prompt; + var handleSubmit = /*#__PURE__*/function () { + var _ref2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(event) { + return _regenerator.default.wrap(function _callee$(_context) { + while (1) switch (_context.prev = _context.next) { + case 0: + event.preventDefault(); + setGenerate(); + lastRun.current = function () { + return send({ + prompt: prompt + }); + }; + lastRun.current(); + case 4: + case "end": + return _context.stop(); + } + }, _callee); + })); + return function handleSubmit(_x) { + return _ref2.apply(this, arguments); + }; + }(); + var applyPrompt = function applyPrompt(inputText) { + sendUsageData(); + setControlValue(inputText); + onClose(); + }; + if (isLoading) { + return /*#__PURE__*/_react.default.createElement(_loader.default, null); + } + return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, error && /*#__PURE__*/_react.default.createElement(_promptErrorMessage.default, { + error: error, + onRetry: lastRun.current, + sx: { + mb: 2.5 + } + }), children, !data.result && /*#__PURE__*/_react.default.createElement(_ui.Box, { + component: "form", + onSubmit: handleSubmit + }, /*#__PURE__*/_react.default.createElement(_ui.Box, { + sx: { + pb: 1.5 + } + }, /*#__PURE__*/_react.default.createElement(_promptSearch.default, { + placeholder: (0, _i18n.__)('Describe the code you want to use...', 'elementor'), + name: "prompt", + value: prompt, + color: "secondary", + onChange: function onChange(event) { + return setPrompt(event.target.value); + } + })), showSuggestions && /*#__PURE__*/_react.default.createElement(_promptSuggestions.default, { + suggestions: autocompleteItems, + onSelect: setPrompt + }, /*#__PURE__*/_react.default.createElement(_promptLibraryLink.default, { + libraryLink: promptLibraryLink + })), /*#__PURE__*/_react.default.createElement(_ui.Stack, { + direction: "row", + alignItems: "center", + sx: { + py: 1.5, + mt: 4 + } + }, /*#__PURE__*/_react.default.createElement(_ui.Stack, { + direction: "row", + justifyContent: "flex-end", + flexGrow: 1 + }, /*#__PURE__*/_react.default.createElement(_generateButton.default, null, (0, _i18n.__)('Generate code', 'elementor'))))), data.result && /*#__PURE__*/_react.default.createElement(CodeDisplayWrapper, null, /*#__PURE__*/_react.default.createElement(_reactMarkdown.default, { + components: { + code: function code(props) { + return /*#__PURE__*/_react.default.createElement(_codeBlock.default, (0, _extends2.default)({}, props, { + defaultValue: getControlValue(), + onInsert: applyPrompt + })); + } + } + }, data.result), /*#__PURE__*/_react.default.createElement(_voicePromotionAlert.VoicePromotionAlert, { + introductionKey: "ai-context-code-promotion" + }), /*#__PURE__*/_react.default.createElement(_ui.Stack, { + direction: "row", + alignItems: "center", + sx: { + mt: 4 + } + }, /*#__PURE__*/_react.default.createElement(_ui.Stack, { + direction: "row", + gap: 1, + justifyContent: "flex-end", + flexGrow: 1 + }, /*#__PURE__*/_react.default.createElement(_ui.Button, { + size: "small", + color: "secondary", + variant: "text", + onClick: reset + }, (0, _i18n.__)('New prompt', 'elementor')))))); +}; +FormCode.propTypes = { + onClose: _propTypes.default.func.isRequired, + getControlValue: _propTypes.default.func.isRequired, + setControlValue: _propTypes.default.func.isRequired, + additionalOptions: _propTypes.default.shape({ + codeLanguage: _propTypes.default.string, + htmlMarkup: _propTypes.default.string, + elementId: _propTypes.default.string, + initialCredits: _propTypes.default.number + }), + credits: _propTypes.default.number, + children: _propTypes.default.node +}; +var _default = FormCode; +exports["default"] = _default; + +/***/ }), + +/***/ "../modules/ai/assets/js/editor/pages/form-layout/context/config.js": +/*!**************************************************************************!*\ + !*** ../modules/ai/assets/js/editor/pages/form-layout/context/config.js ***! + \**************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + + +var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js"); +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.useConfig = exports["default"] = exports.MODE_VARIATION = exports.MODE_LAYOUT = exports.LAYOUT_APP_MODES = exports.ConfigProvider = void 0; +var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react")); +var _propTypes = _interopRequireDefault(__webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js")); +var MODE_LAYOUT = 'layout'; +exports.MODE_LAYOUT = MODE_LAYOUT; +var MODE_VARIATION = 'variation'; +exports.MODE_VARIATION = MODE_VARIATION; +var LAYOUT_APP_MODES = [MODE_LAYOUT, MODE_VARIATION]; +exports.LAYOUT_APP_MODES = LAYOUT_APP_MODES; +var ConfigContext = _react.default.createContext({}); +var useConfig = function useConfig() { + return _react.default.useContext(ConfigContext); +}; +exports.useConfig = useConfig; +var ConfigProvider = function ConfigProvider(props) { + return /*#__PURE__*/_react.default.createElement(ConfigContext.Provider, { + value: { + mode: props.mode, + attachmentsTypes: props.attachmentsTypes, + onClose: props.onClose, + onConnect: props.onConnect, + onData: props.onData, + onInsert: props.onInsert, + onSelect: props.onSelect, + onGenerate: props.onGenerate, + currentContext: props.currentContext, + hasPro: props.hasPro + } + }, props.children); +}; +exports.ConfigProvider = ConfigProvider; +ConfigProvider.propTypes = { + mode: _propTypes.default.oneOf(LAYOUT_APP_MODES).isRequired, + children: _propTypes.default.node.isRequired, + attachmentsTypes: _propTypes.default.object.isRequired, + onClose: _propTypes.default.func.isRequired, + onConnect: _propTypes.default.func.isRequired, + onData: _propTypes.default.func.isRequired, + onInsert: _propTypes.default.func.isRequired, + onSelect: _propTypes.default.func.isRequired, + onGenerate: _propTypes.default.func.isRequired, + currentContext: _propTypes.default.object, + hasPro: _propTypes.default.bool +}; +var _default = ConfigContext; +exports["default"] = _default; + +/***/ }), + +/***/ "../modules/ai/assets/js/editor/pages/form-media/components/back-button.js": +/*!*********************************************************************************!*\ + !*** ../modules/ai/assets/js/editor/pages/form-media/components/back-button.js ***! + \*********************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + + +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 _react = _interopRequireDefault(__webpack_require__(/*! react */ "react")); +var _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ "../node_modules/@babel/runtime/helpers/extends.js")); +var _objectWithoutProperties2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/objectWithoutProperties */ "../node_modules/@babel/runtime/helpers/objectWithoutProperties.js")); +var _ui = __webpack_require__(/*! @elementor/ui */ "@elementor/ui"); +var _i18n = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n"); +var _propTypes = _interopRequireDefault(__webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js")); +var _chevronLeftIcon = _interopRequireDefault(__webpack_require__(/*! ../../../icons/chevron-left-icon */ "../modules/ai/assets/js/editor/icons/chevron-left-icon.js")); +var _excluded = ["children"]; +var StyledChevronLeftIcon = (0, _ui.withDirection)(_chevronLeftIcon.default); +var BackButton = function BackButton(_ref) { + var children = _ref.children, + props = (0, _objectWithoutProperties2.default)(_ref, _excluded); + return /*#__PURE__*/_react.default.createElement(_ui.Button, (0, _extends2.default)({ + size: "small", + variant: "text", + color: "secondary", + startIcon: /*#__PURE__*/_react.default.createElement(StyledChevronLeftIcon, null) + }, props), children || (0, _i18n.__)('Back', 'elementor')); +}; +BackButton.propTypes = { + children: _propTypes.default.node +}; +var _default = BackButton; +exports["default"] = _default; + +/***/ }), + +/***/ "../modules/ai/assets/js/editor/pages/form-media/components/enhance-button.js": +/*!************************************************************************************!*\ + !*** ../modules/ai/assets/js/editor/pages/form-media/components/enhance-button.js ***! + \************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + + +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 _react = _interopRequireDefault(__webpack_require__(/*! react */ "react")); +var _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ "../node_modules/@babel/runtime/helpers/extends.js")); +var _objectWithoutProperties2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/objectWithoutProperties */ "../node_modules/@babel/runtime/helpers/objectWithoutProperties.js")); +var _ui = __webpack_require__(/*! @elementor/ui */ "@elementor/ui"); +var _i18n = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n"); +var _propTypes = _interopRequireDefault(__webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js")); +var _wandIcon = _interopRequireDefault(__webpack_require__(/*! ../../../icons/wand-icon */ "../modules/ai/assets/js/editor/icons/wand-icon.js")); +var _excluded = ["isLoading"]; +var StyledWandIcon = (0, _ui.withDirection)(_wandIcon.default); +var EnhanceButton = function EnhanceButton(_ref) { + var isLoading = _ref.isLoading, + props = (0, _objectWithoutProperties2.default)(_ref, _excluded); + return /*#__PURE__*/_react.default.createElement(_ui.Tooltip, { + title: (0, _i18n.__)('Enhance prompt', 'elementor') + }, /*#__PURE__*/_react.default.createElement(_ui.Box, { + component: "span", + sx: { + cursor: props.disabled ? 'default' : 'pointer' + } + }, /*#__PURE__*/_react.default.createElement(_ui.IconButton, (0, _extends2.default)({ + size: "small", + color: "secondary" + }, props), isLoading ? /*#__PURE__*/_react.default.createElement(_ui.CircularProgress, { + color: "secondary", + size: 20 + }) : /*#__PURE__*/_react.default.createElement(StyledWandIcon, { + fontSize: "small" + })))); +}; +EnhanceButton.propTypes = { + disabled: _propTypes.default.bool, + isLoading: _propTypes.default.bool +}; +var _default = EnhanceButton; +exports["default"] = _default; + +/***/ }), + +/***/ "../modules/ai/assets/js/editor/pages/form-media/components/gallery.js": +/*!*****************************************************************************!*\ + !*** ../modules/ai/assets/js/editor/pages/form-media/components/gallery.js ***! + \*****************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + + +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 _react = _interopRequireDefault(__webpack_require__(/*! react */ "react")); +var _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ "../node_modules/@babel/runtime/helpers/extends.js")); +var _objectWithoutProperties2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/objectWithoutProperties */ "../node_modules/@babel/runtime/helpers/objectWithoutProperties.js")); +var _ui = __webpack_require__(/*! @elementor/ui */ "@elementor/ui"); +var _propTypes = _interopRequireDefault(__webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js")); +var _overlay = _interopRequireDefault(__webpack_require__(/*! ../../../components/ui/overlay */ "../modules/ai/assets/js/editor/components/ui/overlay.js")); +var _overlayBar = _interopRequireDefault(__webpack_require__(/*! ../../../components/ui/overlay-bar */ "../modules/ai/assets/js/editor/components/ui/overlay-bar.js")); +var _overlayBarText = _interopRequireDefault(__webpack_require__(/*! ../../../components/ui/overlay-bar-text */ "../modules/ai/assets/js/editor/components/ui/overlay-bar-text.js")); +var _constants = __webpack_require__(/*! ../constants */ "../modules/ai/assets/js/editor/pages/form-media/constants/index.js"); +var _excluded = ["children"], + _excluded2 = ["alt", "src", "text", "children", "aspectRatio", "variant", "OverlayBarProps"]; +var aspectRatios = Object.keys(_constants.IMAGE_ASPECT_RATIO); +var Gallery = function Gallery(_ref) { + var children = _ref.children, + props = (0, _objectWithoutProperties2.default)(_ref, _excluded); + return /*#__PURE__*/_react.default.createElement(_ui.ImageList, (0, _extends2.default)({ + width: "100%", + cols: 2, + gap: 24 + }, props), children); +}; +Gallery.propTypes = { + children: _propTypes.default.node +}; +var GalleryImage = function GalleryImage(_ref2) { + var alt = _ref2.alt, + src = _ref2.src, + text = _ref2.text, + children = _ref2.children, + _ref2$aspectRatio = _ref2.aspectRatio, + aspectRatio = _ref2$aspectRatio === void 0 ? '1:1' : _ref2$aspectRatio, + _ref2$variant = _ref2.variant, + variant = _ref2$variant === void 0 ? 'contained' : _ref2$variant, + _ref2$OverlayBarProps = _ref2.OverlayBarProps, + OverlayBarProps = _ref2$OverlayBarProps === void 0 ? {} : _ref2$OverlayBarProps, + props = (0, _objectWithoutProperties2.default)(_ref2, _excluded2); + var style = {}; + if ('thumbnail' === variant) { + style.width = '100%'; + style.maxHeight = '238px'; + style.minWidth = '230px'; + } else { + style.width = 'auto'; + style.height = 'auto'; + style.maxWidth = '100%'; + style.maxHeight = '1:1' === aspectRatio ? 'initial' : '100%'; + style.objectFit = 'contain'; + style.aspectRatio = aspectRatio.replace(':', ' / '); + } + return /*#__PURE__*/_react.default.createElement(_ui.ImageListItem, props, /*#__PURE__*/_react.default.createElement(_ui.Box, { + display: "flex", + justifyContent: "center", + alignItems: "center", + sx: { + bgcolor: 'action.selected', + height: 'contained' === variant ? 336 : 'auto', + position: 'relative', + overflow: 'hidden' + } + }, /*#__PURE__*/_react.default.createElement("img", { + alt: alt, + src: src, + style: style + })), children && /*#__PURE__*/_react.default.createElement(_overlay.default, null, /*#__PURE__*/_react.default.createElement(_overlayBar.default, (0, _extends2.default)({ + gap: 1, + position: "bottom" + }, OverlayBarProps), text && /*#__PURE__*/_react.default.createElement(_overlayBarText.default, null, text), children))); +}; +GalleryImage.propTypes = { + alt: _propTypes.default.string, + src: _propTypes.default.string, + text: _propTypes.default.string, + children: _propTypes.default.node, + BoxProps: _propTypes.default.object, + OverlayBarProps: _propTypes.default.object, + aspectRatio: _propTypes.default.oneOf(aspectRatios), + variant: _propTypes.default.oneOf(['contained', 'thumbnail']) +}; +Gallery.Image = GalleryImage; +var _default = Gallery; +exports["default"] = _default; + +/***/ }), + +/***/ "../modules/ai/assets/js/editor/pages/form-media/components/generate-again-submit.js": +/*!*******************************************************************************************!*\ + !*** ../modules/ai/assets/js/editor/pages/form-media/components/generate-again-submit.js ***! + \*******************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + + +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 _react = _interopRequireDefault(__webpack_require__(/*! react */ "react")); +var _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ "../node_modules/@babel/runtime/helpers/extends.js")); +var _ui = __webpack_require__(/*! @elementor/ui */ "@elementor/ui"); +var _i18n = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n"); +var _refreshIcon = _interopRequireDefault(__webpack_require__(/*! ../../../icons/refresh-icon */ "../modules/ai/assets/js/editor/icons/refresh-icon.js")); +var GenerateAgainSubmit = function GenerateAgainSubmit(props) { + return /*#__PURE__*/_react.default.createElement(_ui.Button, (0, _extends2.default)({ + fullWidth: true, + type: "submit", + variant: "contained", + color: "secondary", + startIcon: /*#__PURE__*/_react.default.createElement(_refreshIcon.default, null), + sx: { + // TODO: Remove on @elementor/ui 1.4.51. + color: 'background.paper' + } + }, props), (0, _i18n.__)('Generate again', 'elementor')); +}; +var _default = GenerateAgainSubmit; +exports["default"] = _default; + +/***/ }), + +/***/ "../modules/ai/assets/js/editor/pages/form-media/components/generate-images-submit.js": +/*!********************************************************************************************!*\ + !*** ../modules/ai/assets/js/editor/pages/form-media/components/generate-images-submit.js ***! + \********************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + + +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 _react = _interopRequireDefault(__webpack_require__(/*! react */ "react")); +var _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ "../node_modules/@babel/runtime/helpers/extends.js")); +var _generateButton = _interopRequireDefault(__webpack_require__(/*! ../../../components/generate-button */ "../modules/ai/assets/js/editor/components/generate-button.js")); +var _i18n = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n"); +var _voicePromotionAlert = _interopRequireDefault(__webpack_require__(/*! ../../../components/voice-promotion-alert */ "../modules/ai/assets/js/editor/components/voice-promotion-alert.js")); +var GenerateImagesSubmit = function GenerateImagesSubmit(props) { + return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_generateButton.default, (0, _extends2.default)({ + size: "medium", + fullWidth: true + }, props), (0, _i18n.__)('Generate images', 'elementor')), /*#__PURE__*/_react.default.createElement(_voicePromotionAlert.default, { + introductionKey: "ai-context-media-promotion" + })); +}; +var _default = GenerateImagesSubmit; +exports["default"] = _default; + +/***/ }), + +/***/ "../modules/ai/assets/js/editor/pages/form-media/components/generate-loader.js": +/*!*************************************************************************************!*\ + !*** ../modules/ai/assets/js/editor/pages/form-media/components/generate-loader.js ***! + \*************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + + +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 _react = _interopRequireDefault(__webpack_require__(/*! react */ "react")); +var _ui = __webpack_require__(/*! @elementor/ui */ "@elementor/ui"); +var _i18n = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n"); +var _icons = __webpack_require__(/*! @elementor/icons */ "@elementor/icons"); +var GenerateLoader = function GenerateLoader() { + return /*#__PURE__*/_react.default.createElement(_ui.Stack, { + alignItems: "center", + justifyContent: "center", + gap: 2, + width: "100%" + }, /*#__PURE__*/_react.default.createElement(_icons.AIIcon, { + sx: { + color: 'text.primary', + fontSize: '60px', + mb: 1 + } + }), /*#__PURE__*/_react.default.createElement(_ui.Typography, { + variant: "h5", + sx: { + color: 'text.primary' + } + }, (0, _i18n.__)('Bringing your vision to life...', 'elementor')), /*#__PURE__*/_react.default.createElement(_ui.Typography, { + variant: "body1" + }, (0, _i18n.__)('Hold tight, painting dreams might take a moment.', 'elementor')), /*#__PURE__*/_react.default.createElement(_ui.Box, { + sx: { + px: 1.5, + py: 2.5, + width: '100%', + maxWidth: 600 + } + }, /*#__PURE__*/_react.default.createElement(_ui.LinearProgress, { + color: "inherit" + }))); +}; +var _default = GenerateLoader; +exports["default"] = _default; + +/***/ }), + +/***/ "../modules/ai/assets/js/editor/pages/form-media/components/generate-submit.js": +/*!*************************************************************************************!*\ + !*** ../modules/ai/assets/js/editor/pages/form-media/components/generate-submit.js ***! + \*************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + + +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 _react = _interopRequireDefault(__webpack_require__(/*! react */ "react")); +var _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ "../node_modules/@babel/runtime/helpers/extends.js")); +var _ui = __webpack_require__(/*! @elementor/ui */ "@elementor/ui"); +var _i18n = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n"); +var _propTypes = _interopRequireDefault(__webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js")); +var GenerateSubmit = function GenerateSubmit(props) { + return /*#__PURE__*/_react.default.createElement(_ui.Button, (0, _extends2.default)({ + fullWidth: true, + size: "medium", + type: "submit", + variant: "contained" + }, props), props.children || (0, _i18n.__)('Generate', 'elementor')); +}; +GenerateSubmit.propTypes = { + children: _propTypes.default.node +}; +var _default = GenerateSubmit; +exports["default"] = _default; + +/***/ }), + +/***/ "../modules/ai/assets/js/editor/pages/form-media/components/image-actions.js": +/*!***********************************************************************************!*\ + !*** ../modules/ai/assets/js/editor/pages/form-media/components/image-actions.js ***! + \***********************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + + +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 _react = _interopRequireDefault(__webpack_require__(/*! react */ "react")); +var _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/defineProperty */ "../node_modules/@babel/runtime/helpers/defineProperty.js")); +var _objectWithoutProperties2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/objectWithoutProperties */ "../node_modules/@babel/runtime/helpers/objectWithoutProperties.js")); +var _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ "../node_modules/@babel/runtime/helpers/extends.js")); +var _ui = __webpack_require__(/*! @elementor/ui */ "@elementor/ui"); +var _i18n = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n"); +var _propTypes = _interopRequireDefault(__webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js")); +var _copyIcon = _interopRequireDefault(__webpack_require__(/*! ../../../icons/copy-icon */ "../modules/ai/assets/js/editor/icons/copy-icon.js")); +var _editIcon = _interopRequireDefault(__webpack_require__(/*! ../../../icons/edit-icon */ "../modules/ai/assets/js/editor/icons/edit-icon.js")); +var _downloadIcon = _interopRequireDefault(__webpack_require__(/*! ../../../icons/download-icon */ "../modules/ai/assets/js/editor/icons/download-icon.js")); +var _zoomInIcon = _interopRequireDefault(__webpack_require__(/*! ../../../icons/zoom-in-icon */ "../modules/ai/assets/js/editor/icons/zoom-in-icon.js")); +var _excluded = ["children"], + _excluded2 = ["sx"], + _excluded3 = ["sx"], + _excluded4 = ["sx"], + _excluded5 = ["sx"]; +function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; } +function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; } +var StyledEditSvgIcon = (0, _ui.withDirection)(_editIcon.default); +var StyledCopySvgIcon = (0, _ui.withDirection)(_copyIcon.default); +var StyledZoomInIcon = (0, _ui.withDirection)(_zoomInIcon.default); +var Tooltip = function Tooltip(props) { + return /*#__PURE__*/_react.default.createElement(_ui.Tooltip, (0, _extends2.default)({ + PopperProps: { + sx: { + '&.MuiTooltip-popper .MuiTooltip-tooltip.MuiTooltip-tooltipPlacementBottom': { + mt: 1 + } + } + } + }, props)); +}; +var ImageActions = function ImageActions(_ref) { + var children = _ref.children, + props = (0, _objectWithoutProperties2.default)(_ref, _excluded); + return /*#__PURE__*/_react.default.createElement(_ui.Box, (0, _extends2.default)({ + display: "flex", + justifyContent: "space-between", + alignItems: "center", + width: "100%", + gap: 1 + }, props), children); +}; +ImageActions.propTypes = { + children: _propTypes.default.node +}; +var UseImage = function UseImage(_ref2) { + var sx = _ref2.sx, + props = (0, _objectWithoutProperties2.default)(_ref2, _excluded2); + return /*#__PURE__*/_react.default.createElement(_ui.Button, (0, _extends2.default)({ + size: "small", + variant: "contained", + startIcon: /*#__PURE__*/_react.default.createElement(_downloadIcon.default, null) + }, props), (0, _i18n.__)('Use Image', 'elementor')); +}; +UseImage.propTypes = { + sx: _propTypes.default.object +}; +var EditImage = function EditImage(props) { + return /*#__PURE__*/_react.default.createElement(_ui.Button, (0, _extends2.default)({ + size: "small", + color: "secondary", + startIcon: /*#__PURE__*/_react.default.createElement(StyledEditSvgIcon, null) + }, props), (0, _i18n.__)('Edit', 'elementor')); +}; +var EditIcon = function EditIcon(_ref3) { + var _ref3$sx = _ref3.sx, + sx = _ref3$sx === void 0 ? {} : _ref3$sx, + props = (0, _objectWithoutProperties2.default)(_ref3, _excluded3); + return /*#__PURE__*/_react.default.createElement(Tooltip, { + title: (0, _i18n.__)('Edit', 'elementor') + }, /*#__PURE__*/_react.default.createElement(_ui.IconButton, (0, _extends2.default)({ + sx: _objectSpread({ + mr: -1.5, + ml: 0.5, + color: 'common.white', + '&:hover': { + color: 'common.white' + } + }, sx) + }, props), /*#__PURE__*/_react.default.createElement(StyledEditSvgIcon, null))); +}; +EditIcon.propTypes = { + sx: _propTypes.default.object +}; +var ZoomIcon = function ZoomIcon(_ref4) { + var _ref4$sx = _ref4.sx, + sx = _ref4$sx === void 0 ? {} : _ref4$sx, + props = (0, _objectWithoutProperties2.default)(_ref4, _excluded4); + return /*#__PURE__*/_react.default.createElement(Tooltip, { + title: (0, _i18n.__)('Zoom', 'elementor') + }, /*#__PURE__*/_react.default.createElement(_ui.IconButton, (0, _extends2.default)({ + color: "secondary", + "aria-label": (0, _i18n.__)('Zoom', 'elementor'), + sx: _objectSpread({ + color: 'common.white', + '&:hover': { + color: 'common.white' + } + }, sx) + }, props), /*#__PURE__*/_react.default.createElement(StyledZoomInIcon, null))); +}; +ZoomIcon.propTypes = { + sx: _propTypes.default.object +}; +var CopyIcon = function CopyIcon(_ref5) { + var _ref5$sx = _ref5.sx, + sx = _ref5$sx === void 0 ? {} : _ref5$sx, + props = (0, _objectWithoutProperties2.default)(_ref5, _excluded5); + return /*#__PURE__*/_react.default.createElement(Tooltip, { + title: (0, _i18n.__)('Copy prompt', 'elementor') + }, /*#__PURE__*/_react.default.createElement(_ui.IconButton, (0, _extends2.default)({ + sx: _objectSpread({ + mr: -1.5, + ml: 0.5, + color: 'common.white', + '&:hover': { + color: 'common.white' + } + }, sx) + }, props), /*#__PURE__*/_react.default.createElement(StyledCopySvgIcon, null))); +}; +CopyIcon.propTypes = { + sx: _propTypes.default.object +}; +ImageActions.UseImage = UseImage; +ImageActions.EditImage = EditImage; +ImageActions.EditIcon = EditIcon; +ImageActions.ZoomIcon = ZoomIcon; +ImageActions.CopyIcon = CopyIcon; +var _default = ImageActions; +exports["default"] = _default; + +/***/ }), + +/***/ "../modules/ai/assets/js/editor/pages/form-media/components/image-form.js": +/*!********************************************************************************!*\ + !*** ../modules/ai/assets/js/editor/pages/form-media/components/image-form.js ***! + \********************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + + +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 _react = _interopRequireDefault(__webpack_require__(/*! react */ "react")); +var _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ "../node_modules/@babel/runtime/helpers/extends.js")); +var _objectWithoutProperties2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/objectWithoutProperties */ "../node_modules/@babel/runtime/helpers/objectWithoutProperties.js")); +var _ui = __webpack_require__(/*! @elementor/ui */ "@elementor/ui"); +var _propTypes = _interopRequireDefault(__webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js")); +var _excluded = ["children"]; +var ImageForm = function ImageForm(_ref) { + var children = _ref.children, + props = (0, _objectWithoutProperties2.default)(_ref, _excluded); + return /*#__PURE__*/_react.default.createElement(_ui.Box, (0, _extends2.default)({ + component: "form" + }, props), /*#__PURE__*/_react.default.createElement(_ui.Stack, { + spacing: 2.5 + }, children)); +}; +ImageForm.propTypes = { + children: _propTypes.default.node +}; +var _default = ImageForm; +exports["default"] = _default; + +/***/ }), + +/***/ "../modules/ai/assets/js/editor/pages/form-media/components/image-ratio-select.js": +/*!****************************************************************************************!*\ + !*** ../modules/ai/assets/js/editor/pages/form-media/components/image-ratio-select.js ***! + \****************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + + +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 _react = _interopRequireDefault(__webpack_require__(/*! react */ "react")); +var _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ "../node_modules/@babel/runtime/helpers/extends.js")); +var _slicedToArray2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/slicedToArray */ "../node_modules/@babel/runtime/helpers/slicedToArray.js")); +var _promptActionSelection = _interopRequireDefault(__webpack_require__(/*! ../../../components/prompt-action-selection */ "../modules/ai/assets/js/editor/components/prompt-action-selection.js")); +var _i18n = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n"); +var _constants = __webpack_require__(/*! ../constants */ "../modules/ai/assets/js/editor/pages/form-media/constants/index.js"); +var imageRatios = Object.entries(_constants.IMAGE_ASPECT_RATIO).map(function (_ref) { + var _ref2 = (0, _slicedToArray2.default)(_ref, 2), + value = _ref2[0], + label = _ref2[1].label; + return { + label: label, + value: value + }; +}); +var ImageRatioSelect = function ImageRatioSelect(props) { + return /*#__PURE__*/_react.default.createElement(_promptActionSelection.default, (0, _extends2.default)({ + options: imageRatios, + wrapperStyle: { + width: '100%' + }, + label: (0, _i18n.__)('Aspect ratio', 'elementor') + }, props)); +}; +var _default = ImageRatioSelect; +exports["default"] = _default; + +/***/ }), + +/***/ "../modules/ai/assets/js/editor/pages/form-media/components/image-slider.js": +/*!**********************************************************************************!*\ + !*** ../modules/ai/assets/js/editor/pages/form-media/components/image-slider.js ***! + \**********************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + + +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 _react = _interopRequireDefault(__webpack_require__(/*! react */ "react")); +var _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/defineProperty */ "../node_modules/@babel/runtime/helpers/defineProperty.js")); +var _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ "../node_modules/@babel/runtime/helpers/extends.js")); +var _objectWithoutProperties2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/objectWithoutProperties */ "../node_modules/@babel/runtime/helpers/objectWithoutProperties.js")); +var _ui = __webpack_require__(/*! @elementor/ui */ "@elementor/ui"); +var _propTypes = _interopRequireDefault(__webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js")); +var _chevronLeftIcon = _interopRequireDefault(__webpack_require__(/*! ../../../icons/chevron-left-icon */ "../modules/ai/assets/js/editor/icons/chevron-left-icon.js")); +var _chevronRightIcon = _interopRequireDefault(__webpack_require__(/*! ../../../icons/chevron-right-icon */ "../modules/ai/assets/js/editor/icons/chevron-right-icon.js")); +var _excluded = ["onPrev", "onNext", "children"], + _excluded2 = ["children", "startAction", "sx"], + _excluded3 = ["src", "alt"]; +function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; } +function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; } +var StyledChevronLeftIcon = (0, _ui.withDirection)(_chevronLeftIcon.default); +var StyledChevronRightIcon = (0, _ui.withDirection)(_chevronRightIcon.default); +var ImageSlider = function ImageSlider(_ref) { + var onPrev = _ref.onPrev, + onNext = _ref.onNext, + children = _ref.children, + props = (0, _objectWithoutProperties2.default)(_ref, _excluded); + return /*#__PURE__*/_react.default.createElement(_ui.Stack, (0, _extends2.default)({ + alignItems: "flex-start", + spacing: 0.5 + }, props), /*#__PURE__*/_react.default.createElement(_ui.Stack, { + direction: "row", + spacing: 2.5, + alignSelf: "center", + alignItems: "center" + }, /*#__PURE__*/_react.default.createElement(_ui.IconButton, { + onClick: onPrev, + size: "large", + color: "secondary" + }, /*#__PURE__*/_react.default.createElement(StyledChevronLeftIcon, null)), /*#__PURE__*/_react.default.createElement(_ui.Stack, { + spacing: 0.5, + justifyContent: "space-around", + alignItems: "center" + }, children), /*#__PURE__*/_react.default.createElement(_ui.IconButton, { + onClick: onNext, + size: "large", + color: "secondary" + }, /*#__PURE__*/_react.default.createElement(StyledChevronRightIcon, null)))); +}; +ImageSlider.propTypes = { + onPrev: _propTypes.default.func.isRequired, + onNext: _propTypes.default.func.isRequired, + children: _propTypes.default.node.isRequired +}; +var Actions = function Actions(_ref2) { + var children = _ref2.children, + startAction = _ref2.startAction, + _ref2$sx = _ref2.sx, + sx = _ref2$sx === void 0 ? {} : _ref2$sx, + props = (0, _objectWithoutProperties2.default)(_ref2, _excluded2); + return /*#__PURE__*/_react.default.createElement(_ui.Box, (0, _extends2.default)({ + display: "flex", + justifyContent: "flex-end", + alignItems: "center", + width: "100%" + }, props, { + sx: _objectSpread({ + mb: 1.5 + }, sx) + }), startAction, /*#__PURE__*/_react.default.createElement(_ui.Stack, { + direction: "row", + spacing: 2, + justifyContent: "flex-end", + flexGrow: 1, + width: "100%" + }, children)); +}; +Actions.propTypes = { + sx: _propTypes.default.object, + startAction: _propTypes.default.node, + children: _propTypes.default.node.isRequired +}; +var Image = function Image(_ref3) { + var src = _ref3.src, + _ref3$alt = _ref3.alt, + alt = _ref3$alt === void 0 ? '' : _ref3$alt, + props = (0, _objectWithoutProperties2.default)(_ref3, _excluded3); + return /*#__PURE__*/_react.default.createElement(_ui.Box, { + display: "flex", + justifyContent: "center", + alignItems: "center" + }, /*#__PURE__*/_react.default.createElement("img", (0, _extends2.default)({ + src: src, + alt: alt + }, props))); +}; +Image.propTypes = { + alt: _propTypes.default.string, + src: _propTypes.default.string.isRequired +}; +ImageSlider.Actions = Actions; +ImageSlider.Image = Image; +var _default = ImageSlider; +exports["default"] = _default; + +/***/ }), + +/***/ "../modules/ai/assets/js/editor/pages/form-media/components/image-strength-slider.js": +/*!*******************************************************************************************!*\ + !*** ../modules/ai/assets/js/editor/pages/form-media/components/image-strength-slider.js ***! + \*******************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + + +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 _react = _interopRequireDefault(__webpack_require__(/*! react */ "react")); +var _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ "../node_modules/@babel/runtime/helpers/extends.js")); +var _ui = __webpack_require__(/*! @elementor/ui */ "@elementor/ui"); +var _i18n = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n"); +var ImageStrengthSlider = function ImageStrengthSlider(props) { + return /*#__PURE__*/_react.default.createElement(_ui.FormControl, { + sx: { + width: '100%' + } + }, /*#__PURE__*/_react.default.createElement(_ui.Slider, (0, _extends2.default)({ + marks: true, + min: 0, + step: 10, + max: 100, + color: "secondary", + id: "image_strength", + name: "image_strength", + valueLabelDisplay: "auto", + getAriaValueText: function getAriaValueText(value) { + return "".concat(value, "%"); + }, + "aria-label": (0, _i18n.__)('Reference strength', 'elementor') + }, props)), /*#__PURE__*/_react.default.createElement(_ui.Box, { + display: "flex", + justifyContent: "space-between", + alignItems: "center" + }, /*#__PURE__*/_react.default.createElement(_ui.Typography, { + variant: "caption" + }, (0, _i18n.__)('Prompt', 'elementor')), /*#__PURE__*/_react.default.createElement(_ui.Typography, { + variant: "caption" + }, (0, _i18n.__)('Reference image', 'elementor')))); +}; +var _default = ImageStrengthSlider; +exports["default"] = _default; + +/***/ }), + +/***/ "../modules/ai/assets/js/editor/pages/form-media/components/image-style-select.js": +/*!****************************************************************************************!*\ + !*** ../modules/ai/assets/js/editor/pages/form-media/components/image-style-select.js ***! + \****************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + + +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 _react = _interopRequireDefault(__webpack_require__(/*! react */ "react")); +var _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ "../node_modules/@babel/runtime/helpers/extends.js")); +var _slicedToArray2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/slicedToArray */ "../node_modules/@babel/runtime/helpers/slicedToArray.js")); +var _objectWithoutProperties2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/objectWithoutProperties */ "../node_modules/@babel/runtime/helpers/objectWithoutProperties.js")); +var _propTypes = _interopRequireDefault(__webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js")); +var _i18n = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n"); +var _promptActionSelection = _interopRequireDefault(__webpack_require__(/*! ../../../components/prompt-action-selection */ "../modules/ai/assets/js/editor/components/prompt-action-selection.js")); +var _constants = __webpack_require__(/*! ../constants */ "../modules/ai/assets/js/editor/pages/form-media/constants/index.js"); +var _excluded = ["type"]; +var ImageStyleSelect = function ImageStyleSelect(_ref) { + var _IMAGE_PROMPT_CATEGOR; + var _ref$type = _ref.type, + type = _ref$type === void 0 ? '' : _ref$type, + props = (0, _objectWithoutProperties2.default)(_ref, _excluded); + // The image styles are determined by the selected type. + var imageStyles = Object.entries(((_IMAGE_PROMPT_CATEGOR = _constants.IMAGE_PROMPT_CATEGORIES[type]) === null || _IMAGE_PROMPT_CATEGOR === void 0 ? void 0 : _IMAGE_PROMPT_CATEGOR.subCategories) || {}).map(function (_ref2) { + var _ref3 = (0, _slicedToArray2.default)(_ref2, 2), + value = _ref3[0], + label = _ref3[1]; + return { + label: label, + value: value + }; + }); + return /*#__PURE__*/_react.default.createElement(_promptActionSelection.default, (0, _extends2.default)({ + options: imageStyles, + wrapperStyle: { + width: '100%' + }, + label: (0, _i18n.__)('Style', 'elementor') + }, props)); +}; +ImageStyleSelect.propTypes = { + type: _propTypes.default.string.isRequired +}; +var _default = ImageStyleSelect; +exports["default"] = _default; + +/***/ }), + +/***/ "../modules/ai/assets/js/editor/pages/form-media/components/image-type-select.js": +/*!***************************************************************************************!*\ + !*** ../modules/ai/assets/js/editor/pages/form-media/components/image-type-select.js ***! + \***************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + + +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 _react = _interopRequireDefault(__webpack_require__(/*! react */ "react")); +var _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ "../node_modules/@babel/runtime/helpers/extends.js")); +var _slicedToArray2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/slicedToArray */ "../node_modules/@babel/runtime/helpers/slicedToArray.js")); +var _promptActionSelection = _interopRequireDefault(__webpack_require__(/*! ../../../components/prompt-action-selection */ "../modules/ai/assets/js/editor/components/prompt-action-selection.js")); +var _i18n = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n"); +var _constants = __webpack_require__(/*! ../constants */ "../modules/ai/assets/js/editor/pages/form-media/constants/index.js"); +var imageTypes = Object.entries(_constants.IMAGE_PROMPT_CATEGORIES).map(function (_ref) { + var _ref2 = (0, _slicedToArray2.default)(_ref, 2), + key = _ref2[0], + label = _ref2[1].label; + return { + label: label, + value: key + }; +}); +var ImageTypeSelect = function ImageTypeSelect(props) { + return /*#__PURE__*/_react.default.createElement(_promptActionSelection.default, (0, _extends2.default)({ + options: imageTypes, + wrapperStyle: { + width: '100%' + }, + label: (0, _i18n.__)('Image type', 'elementor') + }, props)); +}; +var _default = ImageTypeSelect; +exports["default"] = _default; + +/***/ }), + +/***/ "../modules/ai/assets/js/editor/pages/form-media/components/images-display.js": +/*!************************************************************************************!*\ + !*** ../modules/ai/assets/js/editor/pages/form-media/components/images-display.js ***! + \************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + + +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 _react = _interopRequireDefault(__webpack_require__(/*! react */ "react")); +var _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ "../node_modules/@babel/runtime/helpers/extends.js")); +var _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/defineProperty */ "../node_modules/@babel/runtime/helpers/defineProperty.js")); +var _objectWithoutProperties2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/objectWithoutProperties */ "../node_modules/@babel/runtime/helpers/objectWithoutProperties.js")); +var _ui = __webpack_require__(/*! @elementor/ui */ "@elementor/ui"); +var _propTypes = _interopRequireDefault(__webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js")); +var _useImageSize2 = _interopRequireDefault(__webpack_require__(/*! ../hooks/use-image-size */ "../modules/ai/assets/js/editor/pages/form-media/hooks/use-image-size.js")); +var _useImageNavigation2 = _interopRequireDefault(__webpack_require__(/*! ../../../hooks/use-image-navigation */ "../modules/ai/assets/js/editor/hooks/use-image-navigation.js")); +var _imageSlider = _interopRequireDefault(__webpack_require__(/*! ./image-slider */ "../modules/ai/assets/js/editor/pages/form-media/components/image-slider.js")); +var _imageActions = _interopRequireDefault(__webpack_require__(/*! ./image-actions */ "../modules/ai/assets/js/editor/pages/form-media/components/image-actions.js")); +var _gallery = _interopRequireDefault(__webpack_require__(/*! ./gallery */ "../modules/ai/assets/js/editor/pages/form-media/components/gallery.js")); +var _backButton = _interopRequireDefault(__webpack_require__(/*! ./back-button */ "../modules/ai/assets/js/editor/pages/form-media/components/back-button.js")); +var _singleImagePreview = _interopRequireDefault(__webpack_require__(/*! ./single-image-preview */ "../modules/ai/assets/js/editor/pages/form-media/components/single-image-preview.js")); +var _excluded = ["children", "sx"]; +function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; } +function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; } +var Container = function Container(_ref) { + var children = _ref.children, + _ref$sx = _ref.sx, + sx = _ref$sx === void 0 ? {} : _ref$sx, + props = (0, _objectWithoutProperties2.default)(_ref, _excluded); + return /*#__PURE__*/_react.default.createElement(_ui.Box, (0, _extends2.default)({ + flexGrow: 1 + }, props, { + sx: _objectSpread({ + overflowY: 'scroll' + }, sx) + }), children); +}; +Container.propTypes = { + sx: _propTypes.default.object, + children: _propTypes.default.node +}; +var ImagesDisplay = function ImagesDisplay(_ref2) { + var images = _ref2.images, + aspectRatio = _ref2.aspectRatio, + onUseImage = _ref2.onUseImage, + onEditImage = _ref2.onEditImage, + _ref2$transparentCont = _ref2.transparentContainer, + transparentContainer = _ref2$transparentCont === void 0 ? false : _ref2$transparentCont; + var _useImageNavigation = (0, _useImageNavigation2.default)(images), + zoomIndex = _useImageNavigation.zoomIndex, + setZoomIndex = _useImageNavigation.setZoomIndex, + actions = _useImageNavigation.actions; + var _useImageSize = (0, _useImageSize2.default)(aspectRatio), + width = _useImageSize.width, + height = _useImageSize.height; + if (zoomIndex > -1) { + var currentImage = images[zoomIndex]; + return /*#__PURE__*/_react.default.createElement(Container, null, /*#__PURE__*/_react.default.createElement(_imageSlider.default, { + onPrev: actions.prev, + onNext: actions.next + }, /*#__PURE__*/_react.default.createElement(_imageSlider.default.Actions, { + startAction: /*#__PURE__*/_react.default.createElement(_backButton.default, { + onClick: actions.reset + }) + }, /*#__PURE__*/_react.default.createElement(_imageActions.default.EditImage, { + onClick: function onClick() { + return onEditImage(currentImage); + } + }), /*#__PURE__*/_react.default.createElement(_imageActions.default.UseImage, { + onClick: function onClick() { + return onUseImage(currentImage); + } + })), /*#__PURE__*/_react.default.createElement(_imageSlider.default.Image, { + src: currentImage.image_url, + style: { + maxWidth: '630px', + width: '100%', + height: 'auto' + } + }))); + } + if (1 === images.length) { + var image = images[0]; + var singleImageStyle = { + width: width, + height: height + }; + if (transparentContainer) { + singleImageStyle.backgroundImage = 'linear-gradient(45deg, #bbb 25%, transparent 25%), linear-gradient(-45deg, #bbb 25%, transparent 25%), linear-gradient(45deg, transparent 75%, #bbb 75%), linear-gradient(-45deg, transparent 75%, #bbb 75%)'; + singleImageStyle.backgroundSize = '20px 20px'; + singleImageStyle.backgroundPosition = '0 0, 0 10px, 10px -10px, -10px 0px'; + } + return /*#__PURE__*/_react.default.createElement(Container, { + flexDirection: "column" + }, /*#__PURE__*/_react.default.createElement(_singleImagePreview.default, null, /*#__PURE__*/_react.default.createElement(_singleImagePreview.default.Image, { + src: image.image_url || image.url, + style: singleImageStyle, + alt: "generated-image" + }, /*#__PURE__*/_react.default.createElement(_singleImagePreview.default.Actions, null, /*#__PURE__*/_react.default.createElement(_imageActions.default.EditImage, { + onClick: function onClick() { + return onEditImage(image); + } + }), /*#__PURE__*/_react.default.createElement(_imageActions.default.UseImage, { + onClick: function onClick() { + return onUseImage(image); + } + }))))); + } + return /*#__PURE__*/_react.default.createElement(Container, null, /*#__PURE__*/_react.default.createElement(_gallery.default, null, images.map(function (image, index) { + return /*#__PURE__*/_react.default.createElement(_gallery.default.Image, { + key: "result-".concat(image.seed), + alt: "generated-".concat(index), + src: image.image_url, + aspectRatio: aspectRatio, + "data-testid": "e-gallery-image" + }, /*#__PURE__*/_react.default.createElement(_imageActions.default, null, /*#__PURE__*/_react.default.createElement(_imageActions.default.UseImage, { + onClick: function onClick() { + return onUseImage(image); + }, + size: "medium", + fullWidth: true + }), /*#__PURE__*/_react.default.createElement(_ui.Stack, { + direction: "row", + spacing: 0.25, + alignItems: "center" + }, /*#__PURE__*/_react.default.createElement(_imageActions.default.ZoomIcon, { + onClick: function onClick() { + return setZoomIndex(index); + }, + size: "medium" + }), /*#__PURE__*/_react.default.createElement(_imageActions.default.EditIcon, { + onClick: function onClick() { + return onEditImage(image); + }, + size: "medium" + })))); + }))); +}; +ImagesDisplay.propTypes = { + images: _propTypes.default.array, + aspectRatio: _propTypes.default.string, + onUseImage: _propTypes.default.func, + onEditImage: _propTypes.default.func, + transparentContainer: _propTypes.default.bool +}; +ImagesDisplay.Container = Container; +var _default = ImagesDisplay; +exports["default"] = _default; + +/***/ }), + +/***/ "../modules/ai/assets/js/editor/pages/form-media/components/new-prompt-button.js": +/*!***************************************************************************************!*\ + !*** ../modules/ai/assets/js/editor/pages/form-media/components/new-prompt-button.js ***! + \***************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + + +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 _react = _interopRequireDefault(__webpack_require__(/*! react */ "react")); +var _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ "../node_modules/@babel/runtime/helpers/extends.js")); +var _ui = __webpack_require__(/*! @elementor/ui */ "@elementor/ui"); +var _i18n = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n"); +var NewPromptButton = function NewPromptButton(props) { + return /*#__PURE__*/_react.default.createElement(_ui.Button, (0, _extends2.default)({ + fullWidth: true, + variant: "text", + color: "secondary" + }, props), (0, _i18n.__)('New prompt', 'elementor')); +}; +var _default = NewPromptButton; +exports["default"] = _default; + +/***/ }), + +/***/ "../modules/ai/assets/js/editor/pages/form-media/components/prompt-field.js": +/*!**********************************************************************************!*\ + !*** ../modules/ai/assets/js/editor/pages/form-media/components/prompt-field.js ***! + \**********************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + + +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 _react = _interopRequireDefault(__webpack_require__(/*! react */ "react")); +var _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ "../node_modules/@babel/runtime/helpers/extends.js")); +var _objectWithoutProperties2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/objectWithoutProperties */ "../node_modules/@babel/runtime/helpers/objectWithoutProperties.js")); +var _ui = __webpack_require__(/*! @elementor/ui */ "@elementor/ui"); +var _propTypes = _interopRequireDefault(__webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js")); +var _textarea = _interopRequireDefault(__webpack_require__(/*! ../../../components/textarea */ "../modules/ai/assets/js/editor/components/textarea.js")); +var _enhanceButton = _interopRequireDefault(__webpack_require__(/*! ./enhance-button */ "../modules/ai/assets/js/editor/pages/form-media/components/enhance-button.js")); +var _usePromptEnhancer2 = _interopRequireDefault(__webpack_require__(/*! ../../../hooks/use-prompt-enhancer */ "../modules/ai/assets/js/editor/hooks/use-prompt-enhancer.js")); +var _excluded = ["disabled", "onChange"]; +var PromptField = function PromptField(_ref) { + var disabled = _ref.disabled, + _onChange = _ref.onChange, + props = (0, _objectWithoutProperties2.default)(_ref, _excluded); + var _usePromptEnhancer = (0, _usePromptEnhancer2.default)(props.value, 'media'), + enhance = _usePromptEnhancer.enhance, + isEnhancing = _usePromptEnhancer.isEnhancing; + return /*#__PURE__*/_react.default.createElement(_textarea.default, (0, _extends2.default)({ + minRows: 3, + maxRows: 6, + InputProps: { + endAdornment: /*#__PURE__*/_react.default.createElement(_ui.InputAdornment, { + position: "end", + sx: { + position: 'absolute', + bottom: '24px', + right: '8px' + } + }, /*#__PURE__*/_react.default.createElement(_enhanceButton.default, { + isLoading: isEnhancing, + disabled: disabled || isEnhancing || !props.value, + onClick: function onClick() { + enhance(prompt).then(function (_ref2) { + var result = _ref2.result; + return _onChange(result); + }); + } + })) + }, + sx: { + '& .MuiInputBase-input.MuiOutlinedInput-input.MuiInputBase-inputMultiline': { + pb: 5, + width: '89%' + } + }, + onKeyDown: function onKeyDown(event) { + if ('Tab' === event.key) { + event.preventDefault(); + _onChange(props.placeholder); + } + } + }, props, { + onChange: function onChange(event) { + return _onChange(event.target.value); + }, + disabled: disabled || isEnhancing + })); +}; +PromptField.propTypes = { + value: _propTypes.default.string, + disabled: _propTypes.default.bool, + placeholder: _propTypes.default.string, + onChange: _propTypes.default.func.isRequired +}; +var _default = PromptField; +exports["default"] = _default; + +/***/ }), + +/***/ "../modules/ai/assets/js/editor/pages/form-media/components/single-image-preview.js": +/*!******************************************************************************************!*\ + !*** ../modules/ai/assets/js/editor/pages/form-media/components/single-image-preview.js ***! + \******************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + + +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 _react = _interopRequireDefault(__webpack_require__(/*! react */ "react")); +var _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/defineProperty */ "../node_modules/@babel/runtime/helpers/defineProperty.js")); +var _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ "../node_modules/@babel/runtime/helpers/extends.js")); +var _objectWithoutProperties2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/objectWithoutProperties */ "../node_modules/@babel/runtime/helpers/objectWithoutProperties.js")); +var _ui = __webpack_require__(/*! @elementor/ui */ "@elementor/ui"); +var _propTypes = _interopRequireDefault(__webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js")); +var _excluded = ["children"], + _excluded2 = ["children", "sx"]; +function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; } +function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; } +var SingleImagePreview = function SingleImagePreview(_ref) { + var children = _ref.children, + props = (0, _objectWithoutProperties2.default)(_ref, _excluded); + return /*#__PURE__*/_react.default.createElement(_ui.Box, (0, _extends2.default)({ + display: "flex" + }, props), children); +}; +SingleImagePreview.propTypes = { + children: _propTypes.default.node.isRequired +}; +var Actions = function Actions(_ref2) { + var children = _ref2.children, + _ref2$sx = _ref2.sx, + sx = _ref2$sx === void 0 ? {} : _ref2$sx, + props = (0, _objectWithoutProperties2.default)(_ref2, _excluded2); + return /*#__PURE__*/_react.default.createElement(_ui.Box, (0, _extends2.default)({ + display: "flex", + width: "100%", + justifyContent: "flex-end", + alignItems: "center" + }, props, { + sx: _objectSpread({ + mb: 1.5 + }, sx) + }), /*#__PURE__*/_react.default.createElement(_ui.Stack, { + direction: "row", + spacing: 2, + justifyContent: "flex-end", + width: "100%" + }, children)); +}; +Actions.propTypes = { + sx: _propTypes.default.object, + children: _propTypes.default.node.isRequired +}; +var Image = function Image(_ref3) { + var src = _ref3.src, + alt = _ref3.alt, + _ref3$style = _ref3.style, + style = _ref3$style === void 0 ? {} : _ref3$style, + children = _ref3.children; + return /*#__PURE__*/_react.default.createElement(_ui.Box, { + margin: "0 auto" + }, children, /*#__PURE__*/_react.default.createElement("img", { + src: src, + alt: alt, + style: _objectSpread({ + maxWidth: '100%', + width: 'auto', + maxHeight: '100%' + }, style) + })); +}; +Image.propTypes = { + style: _propTypes.default.object, + children: _propTypes.default.node, + src: _propTypes.default.string.isRequired, + alt: _propTypes.default.string.isRequired +}; +SingleImagePreview.Actions = Actions; +SingleImagePreview.Image = Image; +var _default = SingleImagePreview; +exports["default"] = _default; + +/***/ }), + +/***/ "../modules/ai/assets/js/editor/pages/form-media/components/unsaved-changes-alert.js": +/*!*******************************************************************************************!*\ + !*** ../modules/ai/assets/js/editor/pages/form-media/components/unsaved-changes-alert.js ***! + \*******************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + + +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 _react = _interopRequireDefault(__webpack_require__(/*! react */ "react")); +var _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ "../node_modules/@babel/runtime/helpers/extends.js")); +var _objectWithoutProperties2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/objectWithoutProperties */ "../node_modules/@babel/runtime/helpers/objectWithoutProperties.js")); +var _ui = __webpack_require__(/*! @elementor/ui */ "@elementor/ui"); +var _i18n = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n"); +var _propTypes = _interopRequireDefault(__webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js")); +var _excluded = ["onClose", "onCancel"]; +var UnsavedChangesAlert = function UnsavedChangesAlert(_ref) { + var onClose = _ref.onClose, + onCancel = _ref.onCancel, + props = (0, _objectWithoutProperties2.default)(_ref, _excluded); + return /*#__PURE__*/_react.default.createElement(_ui.Dialog, (0, _extends2.default)({ + "aria-labelledby": "unsaved-changes-alert-title", + "aria-describedby": "unsaved-changes-alert-description" + }, props), /*#__PURE__*/_react.default.createElement(_ui.DialogTitle, { + id: "unsaved-changes-alert-title" + }, (0, _i18n.__)('Leave Elementor AI?', 'elementor')), /*#__PURE__*/_react.default.createElement(_ui.DialogContent, null, /*#__PURE__*/_react.default.createElement(_ui.DialogContentText, { + id: "unsaved-changes-alert-description" + }, (0, _i18n.__)('Images will be gone forever and we won’t be able to recover them.', 'elementor'))), /*#__PURE__*/_react.default.createElement(_ui.DialogActions, null, /*#__PURE__*/_react.default.createElement(_ui.Button, { + onClick: onCancel, + color: "secondary" + }, (0, _i18n.__)('Cancel', 'elementor')), /*#__PURE__*/_react.default.createElement(_ui.Button, { + onClick: onClose, + color: "error", + variant: "contained" + }, (0, _i18n.__)('Yes, leave', 'elementor')))); +}; +UnsavedChangesAlert.propTypes = { + onClose: _propTypes.default.func, + onCancel: _propTypes.default.func +}; +var _default = UnsavedChangesAlert; +exports["default"] = _default; + +/***/ }), + +/***/ "../modules/ai/assets/js/editor/pages/form-media/components/view.js": +/*!**************************************************************************!*\ + !*** ../modules/ai/assets/js/editor/pages/form-media/components/view.js ***! + \**************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + + +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 _react = _interopRequireDefault(__webpack_require__(/*! react */ "react")); +var _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ "../node_modules/@babel/runtime/helpers/extends.js")); +var _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/defineProperty */ "../node_modules/@babel/runtime/helpers/defineProperty.js")); +var _objectWithoutProperties2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/objectWithoutProperties */ "../node_modules/@babel/runtime/helpers/objectWithoutProperties.js")); +var _panel = _interopRequireDefault(__webpack_require__(/*! ../../../components/ui/panel */ "../modules/ai/assets/js/editor/components/ui/panel.js")); +var _ui = __webpack_require__(/*! @elementor/ui */ "@elementor/ui"); +var _propTypes = _interopRequireDefault(__webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js")); +var _loader = _interopRequireDefault(__webpack_require__(/*! ../../../components/loader */ "../modules/ai/assets/js/editor/components/loader.js")); +var _generateLoader = _interopRequireDefault(__webpack_require__(/*! ./generate-loader */ "../modules/ai/assets/js/editor/pages/form-media/components/generate-loader.js")); +var _promptErrorMessage = _interopRequireDefault(__webpack_require__(/*! ../../../components/prompt-error-message */ "../modules/ai/assets/js/editor/components/prompt-error-message.js")); +var _backButton = _interopRequireDefault(__webpack_require__(/*! ./back-button */ "../modules/ai/assets/js/editor/pages/form-media/components/back-button.js")); +var _locationContext = __webpack_require__(/*! ../context/location-context */ "../modules/ai/assets/js/editor/pages/form-media/context/location-context.js"); +var _globalSettingsContext = __webpack_require__(/*! ../context/global-settings-context */ "../modules/ai/assets/js/editor/pages/form-media/context/global-settings-context.js"); +var _usageMessages = _interopRequireDefault(__webpack_require__(/*! ../../../components/usage-messages */ "../modules/ai/assets/js/editor/components/usage-messages.js")); +var _excluded = ["sx"], + _excluded2 = ["primary", "secondary"], + _excluded3 = ["primary", "secondary"], + _excluded4 = ["children"], + _excluded5 = ["isLoading", "isGenerating", "children"], + _excluded6 = ["sx"]; +function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; } +function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; } +var ViewBackButton = function ViewBackButton(_ref) { + var _ref$sx = _ref.sx, + sx = _ref$sx === void 0 ? {} : _ref$sx, + props = (0, _objectWithoutProperties2.default)(_ref, _excluded); + var _useLocation = (0, _locationContext.useLocation)(), + back = _useLocation.back; + return /*#__PURE__*/_react.default.createElement(_backButton.default, (0, _extends2.default)({ + onClick: function onClick(e) { + e.preventDefault(); + back(); + } + }, props, { + sx: _objectSpread({ + mb: 1, + alignSelf: 'flex-start' + }, sx) + })); +}; +ViewBackButton.propTypes = { + sx: _propTypes.default.object +}; +var PanelHeading = function PanelHeading(_ref2) { + var primary = _ref2.primary, + secondary = _ref2.secondary, + props = (0, _objectWithoutProperties2.default)(_ref2, _excluded2); + return /*#__PURE__*/_react.default.createElement(_ui.Stack, (0, _extends2.default)({ + spacing: 1, + sx: { + mb: 3 + } + }, props), /*#__PURE__*/_react.default.createElement(_ui.Typography, { + variant: "h4" + }, primary), secondary && /*#__PURE__*/_react.default.createElement(_ui.Typography, { + variant: "body1", + color: "secondary" + }, secondary)); +}; +PanelHeading.propTypes = { + primary: _propTypes.default.string.isRequired, + secondary: _propTypes.default.string +}; +var ContentHeading = function ContentHeading(_ref3) { + var primary = _ref3.primary, + secondary = _ref3.secondary, + props = (0, _objectWithoutProperties2.default)(_ref3, _excluded3); + return /*#__PURE__*/_react.default.createElement(_ui.Stack, (0, _extends2.default)({ + gap: 1.5, + sx: { + mb: 3 + } + }, props), /*#__PURE__*/_react.default.createElement(_ui.Typography, { + variant: "h6" + }, primary), secondary && /*#__PURE__*/_react.default.createElement(_ui.Typography, { + variant: "subtitle1", + color: "secondary" + }, secondary)); +}; +ContentHeading.propTypes = { + primary: _propTypes.default.string.isRequired, + secondary: _propTypes.default.string +}; +var View = function View(_ref4) { + var children = _ref4.children, + props = (0, _objectWithoutProperties2.default)(_ref4, _excluded4); + return /*#__PURE__*/_react.default.createElement(_ui.Box, (0, _extends2.default)({ + className: "e-ai-dialog-content", + display: "flex", + sx: { + overflowY: 'auto', + position: 'relative' + }, + height: "100%" + }, props), children); +}; +var Content = function Content(_ref5) { + var _ref5$isLoading = _ref5.isLoading, + isLoading = _ref5$isLoading === void 0 ? false : _ref5$isLoading, + _ref5$isGenerating = _ref5.isGenerating, + isGenerating = _ref5$isGenerating === void 0 ? false : _ref5$isGenerating, + children = _ref5.children, + props = (0, _objectWithoutProperties2.default)(_ref5, _excluded5); + if (isGenerating) { + return /*#__PURE__*/_react.default.createElement(_generateLoader.default, null); + } + if (isLoading) { + return /*#__PURE__*/_react.default.createElement(_ui.Box, { + sx: { + width: '100%', + maxWidth: 600, + margin: '0 auto', + alignSelf: 'center' + } + }, /*#__PURE__*/_react.default.createElement(_loader.default, { + color: "inherit" + })); + } + return /*#__PURE__*/_react.default.createElement(_ui.Box, (0, _extends2.default)({ + sx: { + overflowY: 'scroll', + p: 4 + }, + flexGrow: 1 + }, props), children); +}; +Content.propTypes = { + children: _propTypes.default.node, + isLoading: _propTypes.default.bool, + isGenerating: _propTypes.default.bool +}; +var ErrorMessage = function ErrorMessage(_ref6) { + var _ref6$sx = _ref6.sx, + sx = _ref6$sx === void 0 ? {} : _ref6$sx, + props = (0, _objectWithoutProperties2.default)(_ref6, _excluded6); + return /*#__PURE__*/_react.default.createElement(_promptErrorMessage.default, (0, _extends2.default)({ + actionPosition: "bottom" + }, props, { + sx: _objectSpread({ + mb: 2.5 + }, sx) + })); +}; +ErrorMessage.propTypes = { + sx: _propTypes.default.object +}; +var ViewPanel = function ViewPanel(props) { + var _useGlobalSettings = (0, _globalSettingsContext.useGlobalSettings)(), + hasSubscription = _useGlobalSettings.hasSubscription, + usagePercentage = _useGlobalSettings.usagePercentage; + return /*#__PURE__*/_react.default.createElement(_panel.default, null, /*#__PURE__*/_react.default.createElement(_usageMessages.default, { + hasSubscription: hasSubscription, + usagePercentage: usagePercentage, + sx: { + mb: 4 + } + }), props.children); +}; +ViewPanel.propTypes = { + children: _propTypes.default.node +}; +View.Panel = ViewPanel; +View.Content = Content; +View.BackButton = ViewBackButton; +View.ErrorMessage = ErrorMessage; +View.PanelHeading = PanelHeading; +View.ContentHeading = ContentHeading; +View.propTypes = { + children: _propTypes.default.node +}; +var _default = View; +exports["default"] = _default; + +/***/ }), + +/***/ "../modules/ai/assets/js/editor/pages/form-media/constants/index.js": +/*!**************************************************************************!*\ + !*** ../modules/ai/assets/js/editor/pages/form-media/constants/index.js ***! + \**************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.LOCATIONS = exports.IMAGE_PROMPT_SETTINGS = exports.IMAGE_PROMPT_CATEGORIES = exports.IMAGE_ASPECT_RATIO = void 0; +var _i18n = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n"); +var LOCATIONS = { + RESIZE: 'resize', + GENERATE: 'generate', + VARIATIONS: 'variations', + IMAGE_TOOLS: 'image-tools', + IN_PAINTING: 'in-painting', + OUT_PAINTING: 'out-painting', + REMOVE_BACKGROUND: 'remove-background', + REPLACE_BACKGROUND: 'replace-background', + REMOVE_TEXT: 'remove-text' +}; +exports.LOCATIONS = LOCATIONS; +var IMAGE_PROMPT_SETTINGS = { + IMAGE_TYPE: 'image_type', + IMAGE_STYLE: 'style_preset', + IMAGE_STRENGTH: 'image_strength', + IMAGE_RATIO: 'ratio', + IMAGE_ZOOM: 'zoom', + IMAGE_UPSCALE: 'upscale_to' +}; +exports.IMAGE_PROMPT_SETTINGS = IMAGE_PROMPT_SETTINGS; +var IMAGE_PROMPT_CATEGORIES = { + '': { + label: (0, _i18n.__)('None', 'elementor'), + subCategories: {} + }, + photographic: { + label: (0, _i18n.__)('Photographic', 'elementor'), + subCategories: { + '': (0, _i18n.__)('None', 'elementor'), + landscape: (0, _i18n.__)('Landscape', 'elementor'), + macro: (0, _i18n.__)('Macro', 'elementor'), + portrait: (0, _i18n.__)('Portrait', 'elementor'), + 'long-exposure': (0, _i18n.__)('Long Exposure', 'elementor') + } + }, + background: { + label: (0, _i18n.__)('Background', 'elementor'), + subCategories: { + '': (0, _i18n.__)('None', 'elementor'), + floral: (0, _i18n.__)('Floral', 'elementor'), + gradient: (0, _i18n.__)('Gradient', 'elementor'), + mosaic: (0, _i18n.__)('Mosaic', 'elementor'), + neon: (0, _i18n.__)('Neon', 'elementor'), + bokeh: (0, _i18n.__)('Bokeh', 'elementor') + } + }, + handmade: { + label: (0, _i18n.__)('Handmade', 'elementor'), + subCategories: { + '': (0, _i18n.__)('None', 'elementor'), + doodle: (0, _i18n.__)('Doodle', 'elementor'), + 'line-art': (0, _i18n.__)('Line Art', 'elementor'), + 'oil-painting': (0, _i18n.__)('Oil Painting', 'elementor'), + 'pencil-drawing': (0, _i18n.__)('Pencil Drawing', 'elementor'), + watercolor: (0, _i18n.__)('Watercolor', 'elementor') + } + }, + 'digital-art': { + label: (0, _i18n.__)('Digital Art', 'elementor'), + subCategories: { + '': (0, _i18n.__)('None', 'elementor'), + amine: (0, _i18n.__)('Anime', 'elementor'), + cartoon: (0, _i18n.__)('Cartoon', 'elementor'), + cinematic: (0, _i18n.__)('Cinematic', 'elementor'), + 'comic-book': (0, _i18n.__)('Comic Book', 'elementor'), + 'fantasy-art': (0, _i18n.__)('Fantasy Art', 'elementor'), + isometric: (0, _i18n.__)('Isometric', 'elementor'), + vector: (0, _i18n.__)('Vector', 'elementor'), + 'pixel-art': (0, _i18n.__)('Pixel Art', 'elementor'), + 'low-poly': (0, _i18n.__)('Low Poly', 'elementor'), + 'neon-punk': (0, _i18n.__)('Neon Punk', 'elementor') + } + }, + '3d': { + label: (0, _i18n.__)('3D', 'elementor'), + subCategories: { + '': (0, _i18n.__)('None', 'elementor'), + clay: (0, _i18n.__)('Clay', 'elementor'), + digital: (0, _i18n.__)('Digital', 'elementor'), + origami: (0, _i18n.__)('Origami', 'elementor'), + stone: (0, _i18n.__)('Stone', 'elementor'), + wood: (0, _i18n.__)('Wood', 'elementor') + } + } +}; +exports.IMAGE_PROMPT_CATEGORIES = IMAGE_PROMPT_CATEGORIES; +var IMAGE_ASPECT_RATIO = { + '1:1': { + width: 512, + height: 512, + label: (0, _i18n.__)('Square', 'elementor') + ' (1:1)' + }, + '3:2': { + width: 640, + height: 448, + label: (0, _i18n.__)('Landscape', 'elementor') + ' (3:2)' + }, + '4:3': { + width: 640, + height: 448, + label: (0, _i18n.__)('Landscape', 'elementor') + ' (4:3)' + }, + '16:9': { + width: 704, + height: 384, + label: (0, _i18n.__)('Landscape', 'elementor') + ' (16:9)' + }, + '2:3': { + width: 448, + height: 640, + label: (0, _i18n.__)('Portrait', 'elementor') + ' (2:3)' + }, + '3:4': { + width: 448, + height: 640, + label: (0, _i18n.__)('Portrait', 'elementor') + ' (3:4)' + }, + '9:16': { + width: 384, + height: 704, + label: (0, _i18n.__)('Portrait', 'elementor') + ' (9:16)' + } +}; +exports.IMAGE_ASPECT_RATIO = IMAGE_ASPECT_RATIO; + +/***/ }), + +/***/ "../modules/ai/assets/js/editor/pages/form-media/context/edit-image-context.js": +/*!*************************************************************************************!*\ + !*** ../modules/ai/assets/js/editor/pages/form-media/context/edit-image-context.js ***! + \*************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + + +var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js"); +var _typeof = __webpack_require__(/*! @babel/runtime/helpers/typeof */ "../node_modules/@babel/runtime/helpers/typeof.js"); +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.useEditImage = exports.SET_LOADING = exports.SET_ASPECT_RATIO = exports.RESET = exports.EditImageProvider = exports.EditImageContext = void 0; +var _react = _interopRequireWildcard(__webpack_require__(/*! react */ "react")); +var _slicedToArray2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/slicedToArray */ "../node_modules/@babel/runtime/helpers/slicedToArray.js")); +var _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/defineProperty */ "../node_modules/@babel/runtime/helpers/defineProperty.js")); +var _propTypes = _interopRequireDefault(__webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js")); +var _useImageSize2 = _interopRequireDefault(__webpack_require__(/*! ../hooks/use-image-size */ "../modules/ai/assets/js/editor/pages/form-media/hooks/use-image-size.js")); +var _utils = __webpack_require__(/*! ../utils */ "../modules/ai/assets/js/editor/pages/form-media/utils/index.js"); +function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); } +function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; } +function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; } +function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; } +var EditImageContext = (0, _react.createContext)({}); +exports.EditImageContext = EditImageContext; +var SET_STATE = 'SET_STATE'; +var SET_ASPECT_RATIO = 'SET_ASPECT_RATIO'; +exports.SET_ASPECT_RATIO = SET_ASPECT_RATIO; +var SET_LOADING = 'SET_LOADING'; +exports.SET_LOADING = SET_LOADING; +var RESET = 'RESET'; +exports.RESET = RESET; +var initialValue = { + id: '', + url: '', + isLoading: false, + aspectRatio: '1:1' +}; +var reducer = function reducer(state, _ref) { + var type = _ref.type, + payload = _ref.payload; + switch (type) { + case SET_STATE: + return _objectSpread(_objectSpread({}, state), payload); + case SET_ASPECT_RATIO: + return _objectSpread(_objectSpread({}, state), {}, { + aspectRatio: payload + }); + case SET_LOADING: + return _objectSpread(_objectSpread({}, state), {}, { + isLoading: payload + }); + case RESET: + return initialValue; + default: + throw Error('Unknown action.'); + } +}; +var EditImageProvider = function EditImageProvider(_ref2) { + var children = _ref2.children, + imageData = _ref2.imageData; + var initialData = _objectSpread(_objectSpread({}, initialValue), imageData); + var _useReducer = (0, _react.useReducer)(reducer, initialData), + _useReducer2 = (0, _slicedToArray2.default)(_useReducer, 2), + state = _useReducer2[0], + dispatch = _useReducer2[1]; + return /*#__PURE__*/_react.default.createElement(EditImageContext.Provider, { + value: { + state: state, + dispatch: dispatch + } + }, children); +}; +exports.EditImageProvider = EditImageProvider; +EditImageProvider.propTypes = { + children: _propTypes.default.node, + imageData: _propTypes.default.object +}; +var useEditImage = function useEditImage() { + var _useContext = (0, _react.useContext)(EditImageContext), + state = _useContext.state, + dispatch = _useContext.dispatch; + var id = state.id, + url = state.url, + aspectRatio = state.aspectRatio, + isLoading = state.isLoading; + var _useImageSize = (0, _useImageSize2.default)(aspectRatio), + width = _useImageSize.width, + height = _useImageSize.height; + var setEditImage = function setEditImage(payload) { + return dispatch({ + type: SET_STATE, + payload: payload + }); + }; + var setAspectRatio = function setAspectRatio(payload) { + return dispatch({ + type: SET_ASPECT_RATIO, + payload: payload + }); + }; + var reset = function reset() { + return dispatch({ + type: RESET + }); + }; + + // Getting the aspect ratio of the image. + (0, _react.useEffect)(function () { + if (!id) { + return; + } + dispatch({ + type: SET_LOADING, + payload: true + }); + var img = new Image(); + img.src = url; + img.onload = function () { + var _getAspectRatioSizes = (0, _utils.getAspectRatioSizes)(img.width, img.height), + ratio = _getAspectRatioSizes.ratio; + dispatch({ + type: SET_STATE, + payload: { + aspectRatio: ratio, + isLoading: false + } + }); + }; + }, [id]); + return { + editImage: state, + isLoading: isLoading, + aspectRatio: aspectRatio, + width: width, + height: height, + setEditImage: setEditImage, + setAspectRatio: setAspectRatio, + reset: reset + }; +}; +exports.useEditImage = useEditImage; + +/***/ }), + +/***/ "../modules/ai/assets/js/editor/pages/form-media/context/global-actions-context.js": +/*!*****************************************************************************************!*\ + !*** ../modules/ai/assets/js/editor/pages/form-media/context/global-actions-context.js ***! + \*****************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + + +var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js"); +var _typeof = __webpack_require__(/*! @babel/runtime/helpers/typeof */ "../node_modules/@babel/runtime/helpers/typeof.js"); +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.useGlobalActions = exports.GlobalActionsProvider = exports.GlobalActionsContext = void 0; +var _react = _interopRequireWildcard(__webpack_require__(/*! react */ "react")); +var _propTypes = _interopRequireDefault(__webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js")); +function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); } +function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; } +var GlobalActionsContext = (0, _react.createContext)({}); +exports.GlobalActionsContext = GlobalActionsContext; +var GlobalActionsProvider = function GlobalActionsProvider(_ref) { + var actions = _ref.actions, + children = _ref.children; + return /*#__PURE__*/_react.default.createElement(GlobalActionsContext.Provider, { + value: actions + }, children); +}; +exports.GlobalActionsProvider = GlobalActionsProvider; +GlobalActionsProvider.propTypes = { + actions: _propTypes.default.object, + children: _propTypes.default.node +}; +var useGlobalActions = function useGlobalActions() { + return (0, _react.useContext)(GlobalActionsContext); +}; +exports.useGlobalActions = useGlobalActions; + +/***/ }), + +/***/ "../modules/ai/assets/js/editor/pages/form-media/context/global-settings-context.js": +/*!******************************************************************************************!*\ + !*** ../modules/ai/assets/js/editor/pages/form-media/context/global-settings-context.js ***! + \******************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + + +var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js"); +var _typeof = __webpack_require__(/*! @babel/runtime/helpers/typeof */ "../node_modules/@babel/runtime/helpers/typeof.js"); +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.useGlobalSettings = exports.GlobalSettingsProvider = exports.GlobalSettingsContext = void 0; +var _react = _interopRequireWildcard(__webpack_require__(/*! react */ "react")); +var _propTypes = _interopRequireDefault(__webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js")); +function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); } +function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; } +var GlobalSettingsContext = (0, _react.createContext)({}); +exports.GlobalSettingsContext = GlobalSettingsContext; +var GlobalSettingsProvider = function GlobalSettingsProvider(_ref) { + var settings = _ref.settings, + children = _ref.children; + return /*#__PURE__*/_react.default.createElement(GlobalSettingsContext.Provider, { + value: settings + }, children); +}; +exports.GlobalSettingsProvider = GlobalSettingsProvider; +GlobalSettingsProvider.propTypes = { + settings: _propTypes.default.object, + children: _propTypes.default.node +}; +var useGlobalSettings = function useGlobalSettings() { + return (0, _react.useContext)(GlobalSettingsContext); +}; +exports.useGlobalSettings = useGlobalSettings; + +/***/ }), + +/***/ "../modules/ai/assets/js/editor/pages/form-media/context/location-context.js": +/*!***********************************************************************************!*\ + !*** ../modules/ai/assets/js/editor/pages/form-media/context/location-context.js ***! + \***********************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + + +var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js"); +var _typeof = __webpack_require__(/*! @babel/runtime/helpers/typeof */ "../node_modules/@babel/runtime/helpers/typeof.js"); +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.useLocation = exports.RoutesContext = exports.NAVIGATE = exports.LocationProvider = exports.BACK = void 0; +var _react = _interopRequireWildcard(__webpack_require__(/*! react */ "react")); +var _slicedToArray2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/slicedToArray */ "../node_modules/@babel/runtime/helpers/slicedToArray.js")); +var _toConsumableArray2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/toConsumableArray */ "../node_modules/@babel/runtime/helpers/toConsumableArray.js")); +var _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/defineProperty */ "../node_modules/@babel/runtime/helpers/defineProperty.js")); +var _propTypes = _interopRequireDefault(__webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js")); +function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); } +function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; } +function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; } +function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; } +var RoutesContext = (0, _react.createContext)(null); +exports.RoutesContext = RoutesContext; +var NAVIGATE = 'NAVIGATE'; +exports.NAVIGATE = NAVIGATE; +var BACK = 'BACK'; +exports.BACK = BACK; +var initialValue = { + current: '', + history: [] +}; +var reducer = function reducer(state, _ref) { + var type = _ref.type, + payload = _ref.payload; + switch (type) { + case NAVIGATE: + return _objectSpread(_objectSpread({}, state), {}, { + current: payload, + history: [].concat((0, _toConsumableArray2.default)(state.history), [payload]) + }); + case BACK: + return _objectSpread(_objectSpread({}, state), {}, { + current: state.history[state.history.length - 2], + history: state.history.slice(0, state.history.length - 1) + }); + default: + return state; + } +}; +var LocationProvider = function LocationProvider(_ref2) { + var children = _ref2.children; + var _useReducer = (0, _react.useReducer)(reducer, initialValue), + _useReducer2 = (0, _slicedToArray2.default)(_useReducer, 2), + state = _useReducer2[0], + dispatch = _useReducer2[1]; + return /*#__PURE__*/_react.default.createElement(RoutesContext.Provider, { + value: { + state: state, + dispatch: dispatch + } + }, children); +}; +exports.LocationProvider = LocationProvider; +LocationProvider.propTypes = { + children: _propTypes.default.node +}; +var useLocation = function useLocation() { + var _ref3 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}, + current = _ref3.current; + var _useContext = (0, _react.useContext)(RoutesContext), + state = _useContext.state, + dispatch = _useContext.dispatch; + var navigate = function navigate(location) { + dispatch({ + type: NAVIGATE, + payload: location + }); + }; + var back = function back() { + dispatch({ + type: BACK + }); + }; + (0, _react.useEffect)(function () { + if (current) { + navigate(current); + } + }, []); + return { + current: state.current, + history: state.history, + navigate: navigate, + back: back + }; +}; +exports.useLocation = useLocation; + +/***/ }), + +/***/ "../modules/ai/assets/js/editor/pages/form-media/hooks/use-image-actions.js": +/*!**********************************************************************************!*\ + !*** ../modules/ai/assets/js/editor/pages/form-media/hooks/use-image-actions.js ***! + \**********************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + + +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 _regenerator = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/regenerator */ "../node_modules/@babel/runtime/regenerator/index.js")); +var _objectWithoutProperties2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/objectWithoutProperties */ "../node_modules/@babel/runtime/helpers/objectWithoutProperties.js")); +var _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ "../node_modules/@babel/runtime/helpers/asyncToGenerator.js")); +var _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/defineProperty */ "../node_modules/@babel/runtime/helpers/defineProperty.js")); +var _editImageContext = __webpack_require__(/*! ../context/edit-image-context */ "../modules/ai/assets/js/editor/pages/form-media/context/edit-image-context.js"); +var _useImageUpload2 = _interopRequireDefault(__webpack_require__(/*! ./use-image-upload */ "../modules/ai/assets/js/editor/pages/form-media/hooks/use-image-upload.js")); +var _globalActionsContext = __webpack_require__(/*! ../context/global-actions-context */ "../modules/ai/assets/js/editor/pages/form-media/context/global-actions-context.js"); +var _excluded = ["image"]; +function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; } +function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; } +var normalizeImageData = function normalizeImageData(imageToUpload) { + if (!(imageToUpload !== null && imageToUpload !== void 0 && imageToUpload.imageUrl)) { + return imageToUpload; + } + return _objectSpread(_objectSpread({}, imageToUpload), {}, { + image_url: imageToUpload.imageUrl, + use_gallery_image: true + }); +}; +var useImageActions = function useImageActions() { + var _useEditImage = (0, _editImageContext.useEditImage)(), + editImage = _useEditImage.editImage, + setEditImage = _useEditImage.setEditImage; + var _useGlobalActions = (0, _globalActionsContext.useGlobalActions)(), + setControlImage = _useGlobalActions.setControlImage, + saveAndClose = _useGlobalActions.saveAndClose; + var _useImageUpload = (0, _useImageUpload2.default)(), + attachmentData = _useImageUpload.attachmentData, + isUploading = _useImageUpload.isUploading, + uploadError = _useImageUpload.uploadError, + uploadImage = _useImageUpload.upload, + resetUpload = _useImageUpload.resetUpload; + var upload = function upload(imageToUpload, prompt) { + return uploadImage({ + image: normalizeImageData(imageToUpload), + prompt: prompt || imageToUpload.prompt + }); + }; + var getFinalImage = /*#__PURE__*/function () { + var _ref = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(imageToUpload, prompt) { + var isImageAlreadyUploaded, image, _result, result; + return _regenerator.default.wrap(function _callee$(_context) { + while (1) switch (_context.prev = _context.next) { + case 0: + isImageAlreadyUploaded = editImage.url === imageToUpload.url; + if (!isImageAlreadyUploaded) { + _context.next = 4; + break; + } + // Removing inner image property to avoid duplicated uploads. + image = editImage.image, _result = (0, _objectWithoutProperties2.default)(editImage, _excluded); + return _context.abrupt("return", _result); + case 4: + _context.next = 6; + return upload(imageToUpload, prompt); + case 6: + result = _context.sent; + return _context.abrupt("return", result.image); + case 8: + case "end": + return _context.stop(); + } + }, _callee); + })); + return function getFinalImage(_x, _x2) { + return _ref.apply(this, arguments); + }; + }(); + var edit = /*#__PURE__*/function () { + var _ref2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(imageToUpload, prompt) { + var result; + return _regenerator.default.wrap(function _callee2$(_context2) { + while (1) switch (_context2.prev = _context2.next) { + case 0: + _context2.next = 2; + return upload(imageToUpload, prompt); + case 2: + result = _context2.sent; + setEditImage(result.image); + case 4: + case "end": + return _context2.stop(); + } + }, _callee2); + })); + return function edit(_x3, _x4) { + return _ref2.apply(this, arguments); + }; + }(); + var use = /*#__PURE__*/function () { + var _ref3 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3(imageToUpload, prompt) { + var result; + return _regenerator.default.wrap(function _callee3$(_context3) { + while (1) switch (_context3.prev = _context3.next) { + case 0: + _context3.next = 2; + return getFinalImage(imageToUpload, prompt); + case 2: + result = _context3.sent; + setControlImage(result); + saveAndClose(); + case 5: + case "end": + return _context3.stop(); + } + }, _callee3); + })); + return function use(_x5, _x6) { + return _ref3.apply(this, arguments); + }; + }(); + return { + use: use, + edit: edit, + reset: resetUpload, + error: uploadError, + data: attachmentData, + isLoading: isUploading + }; +}; +var _default = useImageActions; +exports["default"] = _default; + +/***/ }), + +/***/ "../modules/ai/assets/js/editor/pages/form-media/hooks/use-image-prompt.js": +/*!*********************************************************************************!*\ + !*** ../modules/ai/assets/js/editor/pages/form-media/hooks/use-image-prompt.js ***! + \*********************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + + +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 _react = __webpack_require__(/*! react */ "react"); +var _usePrompt = _interopRequireDefault(__webpack_require__(/*! ../../../hooks/use-prompt */ "../modules/ai/assets/js/editor/hooks/use-prompt.js")); +var _globalActionsContext = __webpack_require__(/*! ../context/global-actions-context */ "../modules/ai/assets/js/editor/pages/form-media/context/global-actions-context.js"); +var useImagePrompt = function useImagePrompt() { + var promptData = _usePrompt.default.apply(void 0, arguments); + var _useGlobalActions = (0, _globalActionsContext.useGlobalActions)(), + setHasUnsavedChanges = _useGlobalActions.setHasUnsavedChanges, + state = _useGlobalActions.state; + (0, _react.useEffect)(function () { + var _promptData$data; + if ((_promptData$data = promptData.data) !== null && _promptData$data !== void 0 && _promptData$data.result) { + // Updating the hasUnsavedChanges global state that will trigger the unsaved changes dialog. + setHasUnsavedChanges(true); + } + }, [promptData.data]); + (0, _react.useEffect)(function () { + if (state.isAllSaved) { + promptData.sendUsageData(); + } + }, [state.isAllSaved]); + return promptData; +}; +var _default = useImagePrompt; +exports["default"] = _default; + +/***/ }), + +/***/ "../modules/ai/assets/js/editor/pages/form-media/hooks/use-image-size.js": +/*!*******************************************************************************!*\ + !*** ../modules/ai/assets/js/editor/pages/form-media/hooks/use-image-size.js ***! + \*******************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; +var _constants = __webpack_require__(/*! ../constants */ "../modules/ai/assets/js/editor/pages/form-media/constants/index.js"); +var useImageSize = function useImageSize(aspectRatio) { + var _IMAGE_ASPECT_RATIO$a = _constants.IMAGE_ASPECT_RATIO[aspectRatio], + width = _IMAGE_ASPECT_RATIO$a.width, + height = _IMAGE_ASPECT_RATIO$a.height; + return { + width: width, + height: height + }; +}; +var _default = useImageSize; +exports["default"] = _default; + +/***/ }), + +/***/ "../modules/ai/assets/js/editor/pages/form-media/hooks/use-image-upload.js": +/*!*********************************************************************************!*\ + !*** ../modules/ai/assets/js/editor/pages/form-media/hooks/use-image-upload.js ***! + \*********************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + + +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 _slicedToArray2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/slicedToArray */ "../node_modules/@babel/runtime/helpers/slicedToArray.js")); +var _react = __webpack_require__(/*! react */ "react"); +var _api = __webpack_require__(/*! ../../../api */ "../modules/ai/assets/js/editor/api/index.js"); +var useImageUpload = function useImageUpload() { + var _useState = (0, _react.useState)(false), + _useState2 = (0, _slicedToArray2.default)(_useState, 2), + isUploading = _useState2[0], + setIsUploading = _useState2[1]; + var _useState3 = (0, _react.useState)(''), + _useState4 = (0, _slicedToArray2.default)(_useState3, 2), + uploadError = _useState4[0], + setUploadError = _useState4[1]; + var _useState5 = (0, _react.useState)({}), + _useState6 = (0, _slicedToArray2.default)(_useState5, 2), + attachmentData = _useState6[0], + setAttachmentData = _useState6[1]; + var upload = function upload(_ref) { + var image = _ref.image, + prompt = _ref.prompt; + return new Promise(function (resolve, reject) { + setUploadError(''); + setAttachmentData({}); + setIsUploading(true); + (0, _api.uploadImage)({ + image: image, + prompt: prompt + }).then(function (result) { + setAttachmentData(result); + resolve(result); + }).catch(function (err) { + var error = (err === null || err === void 0 ? void 0 : err.responseText) || err; + setUploadError(error); + reject(error); + }).finally(function () { + return setIsUploading(false); + }); + }); + }; + var resetUpload = function resetUpload() { + setUploadError(''); + setAttachmentData({}); + setIsUploading(false); + }; + return { + upload: upload, + resetUpload: resetUpload, + isUploading: isUploading, + uploadError: uploadError, + attachmentData: attachmentData + }; +}; +var _default = useImageUpload; +exports["default"] = _default; + +/***/ }), + +/***/ "../modules/ai/assets/js/editor/pages/form-media/hooks/use-prompt-settings.js": +/*!************************************************************************************!*\ + !*** ../modules/ai/assets/js/editor/pages/form-media/hooks/use-prompt-settings.js ***! + \************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + + +var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js"); +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = exports.IMAGE_ZOOM = exports.IMAGE_UPSCALE = exports.IMAGE_TYPE = exports.IMAGE_STYLE = exports.IMAGE_STRENGTH = exports.IMAGE_RATIO = void 0; +var _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/defineProperty */ "../node_modules/@babel/runtime/helpers/defineProperty.js")); +var _slicedToArray2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/slicedToArray */ "../node_modules/@babel/runtime/helpers/slicedToArray.js")); +var _react = __webpack_require__(/*! react */ "react"); +var _constants = __webpack_require__(/*! ../constants */ "../modules/ai/assets/js/editor/pages/form-media/constants/index.js"); +function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; } +function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; } +var IMAGE_TYPE = _constants.IMAGE_PROMPT_SETTINGS.IMAGE_TYPE, + IMAGE_STYLE = _constants.IMAGE_PROMPT_SETTINGS.IMAGE_STYLE, + IMAGE_STRENGTH = _constants.IMAGE_PROMPT_SETTINGS.IMAGE_STRENGTH, + IMAGE_RATIO = _constants.IMAGE_PROMPT_SETTINGS.IMAGE_RATIO, + IMAGE_ZOOM = _constants.IMAGE_PROMPT_SETTINGS.IMAGE_ZOOM, + IMAGE_UPSCALE = _constants.IMAGE_PROMPT_SETTINGS.IMAGE_UPSCALE; +exports.IMAGE_UPSCALE = IMAGE_UPSCALE; +exports.IMAGE_ZOOM = IMAGE_ZOOM; +exports.IMAGE_RATIO = IMAGE_RATIO; +exports.IMAGE_STRENGTH = IMAGE_STRENGTH; +exports.IMAGE_STYLE = IMAGE_STYLE; +exports.IMAGE_TYPE = IMAGE_TYPE; +var DEFAULT_TYPE = ''; +var DEFAULT_STYLE = ''; +var DEFAULT_STRENGTH = 0; +var DEFAULT_RATIO = '1:1'; +var DEFAULT_ZOOM = '1'; +var DEFAULT_UPSCALE = '512'; +var usePromptSettings = function usePromptSettings() { + var _useState3; + var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}, + _ref$type = _ref.type, + type = _ref$type === void 0 ? DEFAULT_TYPE : _ref$type, + _ref$style = _ref.style, + style = _ref$style === void 0 ? DEFAULT_STYLE : _ref$style, + _ref$imageWeight = _ref.imageWeight, + imageWeight = _ref$imageWeight === void 0 ? DEFAULT_STRENGTH : _ref$imageWeight, + _ref$aspectRatio = _ref.aspectRatio, + aspectRatio = _ref$aspectRatio === void 0 ? DEFAULT_RATIO : _ref$aspectRatio, + _ref$zoom = _ref.zoom, + zoom = _ref$zoom === void 0 ? DEFAULT_ZOOM : _ref$zoom, + _ref$upScaleTo = _ref.upScaleTo, + upScaleTo = _ref$upScaleTo === void 0 ? DEFAULT_UPSCALE : _ref$upScaleTo; + var _useState = (0, _react.useState)((_useState3 = {}, (0, _defineProperty2.default)(_useState3, IMAGE_TYPE, type), (0, _defineProperty2.default)(_useState3, IMAGE_STYLE, style), (0, _defineProperty2.default)(_useState3, IMAGE_STRENGTH, imageWeight), (0, _defineProperty2.default)(_useState3, IMAGE_RATIO, aspectRatio), (0, _defineProperty2.default)(_useState3, IMAGE_ZOOM, zoom), (0, _defineProperty2.default)(_useState3, IMAGE_UPSCALE, upScaleTo), _useState3)), + _useState2 = (0, _slicedToArray2.default)(_useState, 2), + settings = _useState2[0], + setSettings = _useState2[1]; + var updateSettings = function updateSettings(updated) { + return setSettings(function (prev) { + return _objectSpread(_objectSpread({}, prev), updated); + }); + }; + var resetSettings = function resetSettings() { + var _setSettings; + setSettings((_setSettings = {}, (0, _defineProperty2.default)(_setSettings, IMAGE_TYPE, type), (0, _defineProperty2.default)(_setSettings, IMAGE_STYLE, DEFAULT_STYLE), (0, _defineProperty2.default)(_setSettings, IMAGE_STRENGTH, DEFAULT_STRENGTH), (0, _defineProperty2.default)(_setSettings, IMAGE_RATIO, aspectRatio), (0, _defineProperty2.default)(_setSettings, IMAGE_ZOOM, DEFAULT_ZOOM), (0, _defineProperty2.default)(_setSettings, IMAGE_UPSCALE, DEFAULT_UPSCALE), _setSettings)); + }; + return { + settings: settings, + updateSettings: updateSettings, + resetSettings: resetSettings + }; +}; +var _default = usePromptSettings; +exports["default"] = _default; + +/***/ }), + +/***/ "../modules/ai/assets/js/editor/pages/form-media/index.js": +/*!****************************************************************!*\ + !*** ../modules/ai/assets/js/editor/pages/form-media/index.js ***! + \****************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + + +var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js"); +var _typeof = __webpack_require__(/*! @babel/runtime/helpers/typeof */ "../node_modules/@babel/runtime/helpers/typeof.js"); +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; +var _react = _interopRequireWildcard(__webpack_require__(/*! react */ "react")); +var _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ "../node_modules/@babel/runtime/helpers/extends.js")); +var _slicedToArray2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/slicedToArray */ "../node_modules/@babel/runtime/helpers/slicedToArray.js")); +var _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/defineProperty */ "../node_modules/@babel/runtime/helpers/defineProperty.js")); +var _locationContext = __webpack_require__(/*! ./context/location-context */ "../modules/ai/assets/js/editor/pages/form-media/context/location-context.js"); +var _ui = __webpack_require__(/*! @elementor/ui */ "@elementor/ui"); +var _propTypes = _interopRequireDefault(__webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js")); +var _promptDialog = _interopRequireDefault(__webpack_require__(/*! ../../components/prompt-dialog */ "../modules/ai/assets/js/editor/components/prompt-dialog.js")); +var _mediaOutlet = _interopRequireDefault(__webpack_require__(/*! ./media-outlet */ "../modules/ai/assets/js/editor/pages/form-media/media-outlet.js")); +var _unsavedChangesAlert = _interopRequireDefault(__webpack_require__(/*! ./components/unsaved-changes-alert */ "../modules/ai/assets/js/editor/pages/form-media/components/unsaved-changes-alert.js")); +var _editImageContext = __webpack_require__(/*! ./context/edit-image-context */ "../modules/ai/assets/js/editor/pages/form-media/context/edit-image-context.js"); +var _globalActionsContext = __webpack_require__(/*! ./context/global-actions-context */ "../modules/ai/assets/js/editor/pages/form-media/context/global-actions-context.js"); +var _globalSettingsContext = __webpack_require__(/*! ./context/global-settings-context */ "../modules/ai/assets/js/editor/pages/form-media/context/global-settings-context.js"); +var _promptHistory = _interopRequireDefault(__webpack_require__(/*! ../../components/prompt-history */ "../modules/ai/assets/js/editor/components/prompt-history/index.js")); +function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); } +function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; } +function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; } +function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; } +var initialData = { + isAllSaved: false, + hasUnsavedChanges: false +}; +var SET_UNSAVED_CHANGES = 'SET_UNSAVED_CHANGES'; +var SAVE_AND_CLOSE = 'SAVE_AND_CLOSE'; +var reducer = function reducer(state, _ref) { + var type = _ref.type, + payload = _ref.payload; + switch (type) { + case SET_UNSAVED_CHANGES: + return _objectSpread(_objectSpread({}, state), {}, { + hasUnsavedChanges: payload, + isAllSaved: payload ? false : state.isAllSaved + }); + case SAVE_AND_CLOSE: + return _objectSpread(_objectSpread({}, state), {}, { + isAllSaved: true, + hasUnsavedChanges: false + }); + default: + throw Error('Unknown action.'); + } +}; +var FormMedia = function FormMedia(_ref2) { + var onClose = _ref2.onClose, + DialogProps = _ref2.DialogProps, + getControlValue = _ref2.getControlValue, + controlView = _ref2.controlView, + additionalOptions = _ref2.additionalOptions, + maybeRenderUpgradeChip = _ref2.maybeRenderUpgradeChip, + hasSubscription = _ref2.hasSubscription, + usagePercentage = _ref2.usagePercentage; + var _useReducer = (0, _react.useReducer)(reducer, initialData), + _useReducer2 = (0, _slicedToArray2.default)(_useReducer, 2), + state = _useReducer2[0], + dispatch = _useReducer2[1]; + var _useState = (0, _react.useState)(false), + _useState2 = (0, _slicedToArray2.default)(_useState, 2), + showUnsavedChangeAlert = _useState2[0], + setShowUnsavedChangeAlert = _useState2[1]; + var setHasUnsavedChanges = function setHasUnsavedChanges(payload) { + return dispatch({ + type: SET_UNSAVED_CHANGES, + payload: payload + }); + }; + var saveAndClose = function saveAndClose() { + return dispatch({ + type: SAVE_AND_CLOSE + }); + }; + var onCloseIntent = function onCloseIntent() { + if (state.hasUnsavedChanges) { + setShowUnsavedChangeAlert(true); + return; + } + onClose(); + }; + var editImageInitialData = getControlValue() === (additionalOptions === null || additionalOptions === void 0 ? void 0 : additionalOptions.defaultValue) ? {} : getControlValue(); + var globalSettings = { + initialImageType: (additionalOptions === null || additionalOptions === void 0 ? void 0 : additionalOptions.defaultImageType) || '', + hasSubscription: hasSubscription, + usagePercentage: usagePercentage + }; + var globalActions = { + state: state, + getControlValue: getControlValue, + saveAndClose: saveAndClose, + close: onCloseIntent, + setHasUnsavedChanges: setHasUnsavedChanges, + setControlImage: function setControlImage(image) { + controlView.setSettingsModel(image); + controlView.applySavedValue(); + } + }; + (0, _react.useEffect)(function () { + if (state.isAllSaved) { + // Closing the app only once the state was updated, to allow registered effects to take place before closing. + onClose(); + } + }, [state.isAllSaved]); + return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_promptDialog.default, (0, _extends2.default)({ + id: "e-form-media", + onClose: function onClose() { + return onCloseIntent(); + }, + maxWidth: "lg" + }, DialogProps), /*#__PURE__*/_react.default.createElement(_promptDialog.default.Header, { + onClose: function onClose() { + return onCloseIntent(); + } + }, /*#__PURE__*/_react.default.createElement(_promptHistory.default, null), maybeRenderUpgradeChip()), /*#__PURE__*/_react.default.createElement(_ui.Divider, null), /*#__PURE__*/_react.default.createElement(_globalSettingsContext.GlobalSettingsProvider, { + settings: globalSettings + }, /*#__PURE__*/_react.default.createElement(_globalActionsContext.GlobalActionsProvider, { + actions: globalActions + }, /*#__PURE__*/_react.default.createElement(_locationContext.LocationProvider, null, /*#__PURE__*/_react.default.createElement(_editImageContext.EditImageProvider, { + imageData: editImageInitialData + }, /*#__PURE__*/_react.default.createElement(_mediaOutlet.default, null)))))), showUnsavedChangeAlert && /*#__PURE__*/_react.default.createElement(_unsavedChangesAlert.default, { + onClose: onClose, + onCancel: function onCancel() { + return setShowUnsavedChangeAlert(false); + }, + open: true + })); +}; +FormMedia.propTypes = { + onClose: _propTypes.default.func.isRequired, + DialogProps: _propTypes.default.object, + getControlValue: _propTypes.default.func.isRequired, + controlView: _propTypes.default.object, + additionalOptions: _propTypes.default.object, + credits: _propTypes.default.number, + maybeRenderUpgradeChip: _propTypes.default.func, + hasSubscription: _propTypes.default.bool, + usagePercentage: _propTypes.default.number +}; +var _default = FormMedia; +exports["default"] = _default; + +/***/ }), + +/***/ "../modules/ai/assets/js/editor/pages/form-media/media-outlet.js": +/*!***********************************************************************!*\ + !*** ../modules/ai/assets/js/editor/pages/form-media/media-outlet.js ***! + \***********************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + + +var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js"); +var _typeof = __webpack_require__(/*! @babel/runtime/helpers/typeof */ "../node_modules/@babel/runtime/helpers/typeof.js"); +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; +var _react = _interopRequireWildcard(__webpack_require__(/*! react */ "react")); +var _view = _interopRequireDefault(__webpack_require__(/*! ./components/view */ "../modules/ai/assets/js/editor/pages/form-media/components/view.js")); +var _loader = _interopRequireDefault(__webpack_require__(/*! ../../components/loader */ "../modules/ai/assets/js/editor/components/loader.js")); +var _constants = __webpack_require__(/*! ./constants */ "../modules/ai/assets/js/editor/pages/form-media/constants/index.js"); +var _generate = _interopRequireDefault(__webpack_require__(/*! ./views/generate */ "../modules/ai/assets/js/editor/pages/form-media/views/generate/index.js")); +var _imageTools = _interopRequireDefault(__webpack_require__(/*! ./views/image-tools */ "../modules/ai/assets/js/editor/pages/form-media/views/image-tools/index.js")); +var _resize = _interopRequireDefault(__webpack_require__(/*! ./views/resize */ "../modules/ai/assets/js/editor/pages/form-media/views/resize/index.js")); +var _inPainting = _interopRequireDefault(__webpack_require__(/*! ./views/in-painting */ "../modules/ai/assets/js/editor/pages/form-media/views/in-painting/index.js")); +var _outPainting = _interopRequireDefault(__webpack_require__(/*! ./views/out-painting */ "../modules/ai/assets/js/editor/pages/form-media/views/out-painting/index.js")); +var _variations = _interopRequireDefault(__webpack_require__(/*! ./views/variations */ "../modules/ai/assets/js/editor/pages/form-media/views/variations/index.js")); +var _replaceBackground = _interopRequireDefault(__webpack_require__(/*! ./views/replace-background */ "../modules/ai/assets/js/editor/pages/form-media/views/replace-background/index.js")); +var _removeBackground = _interopRequireDefault(__webpack_require__(/*! ./views/remove-background */ "../modules/ai/assets/js/editor/pages/form-media/views/remove-background/index.js")); +var _locationContext = __webpack_require__(/*! ./context/location-context */ "../modules/ai/assets/js/editor/pages/form-media/context/location-context.js"); +var _editImageContext = __webpack_require__(/*! ./context/edit-image-context */ "../modules/ai/assets/js/editor/pages/form-media/context/edit-image-context.js"); +var _promptHistoryActionContext = __webpack_require__(/*! ../../components/prompt-history/context/prompt-history-action-context */ "../modules/ai/assets/js/editor/components/prompt-history/context/prompt-history-action-context.js"); +function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); } +function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; } +var MediaOutlet = function MediaOutlet() { + var _useEditImage = (0, _editImageContext.useEditImage)(), + editImage = _useEditImage.editImage; + var _useLocation = (0, _locationContext.useLocation)({ + current: _constants.LOCATIONS.GENERATE + }), + current = _useLocation.current, + navigate = _useLocation.navigate; + (0, _react.useEffect)(function () { + var isNotPlaceholderImage = editImage.id; + if (isNotPlaceholderImage) { + navigate(_constants.LOCATIONS.IMAGE_TOOLS); + } + }, [editImage.id]); + (0, _promptHistoryActionContext.useSubscribeOnPromptHistoryAction)([{ + type: _promptHistoryActionContext.ACTION_TYPES.RESTORE, + handler: function handler() { + if (current !== _constants.LOCATIONS.GENERATE) { + navigate(_constants.LOCATIONS.GENERATE); + } + } + }]); + if (!current) { + return /*#__PURE__*/_react.default.createElement(_view.default, { + alignItems: "center" + }, /*#__PURE__*/_react.default.createElement(_loader.default, null)); + } + return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, current === _constants.LOCATIONS.GENERATE && /*#__PURE__*/_react.default.createElement(_generate.default, null), current === _constants.LOCATIONS.IMAGE_TOOLS && /*#__PURE__*/_react.default.createElement(_imageTools.default, null), current === _constants.LOCATIONS.VARIATIONS && /*#__PURE__*/_react.default.createElement(_variations.default, null), current === _constants.LOCATIONS.IN_PAINTING && /*#__PURE__*/_react.default.createElement(_inPainting.default, null), current === _constants.LOCATIONS.OUT_PAINTING && /*#__PURE__*/_react.default.createElement(_outPainting.default, null), current === _constants.LOCATIONS.RESIZE && /*#__PURE__*/_react.default.createElement(_resize.default, null), current === _constants.LOCATIONS.REPLACE_BACKGROUND && /*#__PURE__*/_react.default.createElement(_replaceBackground.default, null), current === _constants.LOCATIONS.REMOVE_BACKGROUND && /*#__PURE__*/_react.default.createElement(_removeBackground.default, null)); +}; +var _default = MediaOutlet; +exports["default"] = _default; + +/***/ }), + +/***/ "../modules/ai/assets/js/editor/pages/form-media/utils/index.js": +/*!**********************************************************************!*\ + !*** ../modules/ai/assets/js/editor/pages/form-media/utils/index.js ***! + \**********************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + + +var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js"); +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.getAspectRatioSizes = void 0; +var _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/defineProperty */ "../node_modules/@babel/runtime/helpers/defineProperty.js")); +var _slicedToArray2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/slicedToArray */ "../node_modules/@babel/runtime/helpers/slicedToArray.js")); +var _constants = __webpack_require__(/*! ../constants */ "../modules/ai/assets/js/editor/pages/form-media/constants/index.js"); +function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; } +function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; } +var getAspectRatioSizes = function getAspectRatioSizes(width, height) { + var aspectRatios = Object.keys(_constants.IMAGE_ASPECT_RATIO); + var targetRatio = width / height; + var closestRatio = aspectRatios[0]; + var minDiff = Infinity; + aspectRatios.forEach(function (ratio) { + var _ratio$split$map = ratio.split(':').map(Number), + _ratio$split$map2 = (0, _slicedToArray2.default)(_ratio$split$map, 2), + w = _ratio$split$map2[0], + h = _ratio$split$map2[1]; + var diff = Math.abs(targetRatio - w / h); + if (diff < minDiff) { + minDiff = diff; + closestRatio = ratio; + } + }); + return _objectSpread({ + ratio: closestRatio + }, _constants.IMAGE_ASPECT_RATIO[closestRatio]); +}; +exports.getAspectRatioSizes = getAspectRatioSizes; + +/***/ }), + +/***/ "../modules/ai/assets/js/editor/pages/form-media/views/generate/hooks/use-suggested-images.js": +/*!****************************************************************************************************!*\ + !*** ../modules/ai/assets/js/editor/pages/form-media/views/generate/hooks/use-suggested-images.js ***! + \****************************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + + +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 _slicedToArray2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/slicedToArray */ "../node_modules/@babel/runtime/helpers/slicedToArray.js")); +var _react = __webpack_require__(/*! react */ "react"); +var _useImagesPreload2 = _interopRequireDefault(__webpack_require__(/*! ../../../../../hooks/use-images-preload */ "../modules/ai/assets/js/editor/hooks/use-images-preload.js")); +var shuffleImages = function shuffleImages(images) { + return images.map(function (image) { + return [Math.random(), image]; + }).sort(function (_ref, _ref2) { + var _ref3 = (0, _slicedToArray2.default)(_ref, 1), + a = _ref3[0]; + var _ref4 = (0, _slicedToArray2.default)(_ref2, 1), + b = _ref4[0]; + return a - b; + }).map(function (_ref5) { + var _ref6 = (0, _slicedToArray2.default)(_ref5, 2), + image = _ref6[1]; + return image; + }); +}; +var useSuggestedImages = function useSuggestedImages(_ref7) { + var selectedType = _ref7.selectedType; + var _useState = (0, _react.useState)(false), + _useState2 = (0, _slicedToArray2.default)(_useState, 2), + isLoading = _useState2[0], + setIsLoading = _useState2[1]; + var _useState3 = (0, _react.useState)({ + images: [] + }), + _useState4 = (0, _slicedToArray2.default)(_useState3, 2), + data = _useState4[0], + setImagesState = _useState4[1]; + var _useImagesPreload = (0, _useImagesPreload2.default)(), + ready = _useImagesPreload.ready, + preloadImages = _useImagesPreload.preloadImages; + var imagesData = (0, _react.useMemo)(function () { + var shuffledImages = shuffleImages(data.images); + if (!selectedType) { + return shuffledImages; + } + var categoryImages = shuffledImages.filter(function (_ref8) { + var imageType = _ref8.imageType; + return imageType.includes(selectedType); + }); + + // Some categories don't have images, so we TEMPORARLY fallback to the shuffled images. + return categoryImages.length ? categoryImages : shuffledImages; + }, [selectedType, data]); + var fetchImages = function fetchImages() { + setIsLoading(true); + fetch('https://my.elementor.com/ai/images-prompt-gallery/ai-gallery.json').then(function (response) { + return response.json(); + }).then(function (json) { + return setImagesState(json); + }) + // eslint-disable-next-line no-console + .catch(function (e) { + return console.log(e.message); + }).finally(function () { + return setIsLoading(false); + }); + }; + (0, _react.useEffect)(function () { + if (0 === (data === null || data === void 0 ? void 0 : data.images.length)) { + fetchImages(); + return; + } + preloadImages(data.images.map(function (_ref9) { + var thumbnailUrl = _ref9.thumbnailUrl; + return thumbnailUrl; + })); + }, [data]); + return { + imagesData: imagesData, + isLoading: !ready || isLoading + }; +}; +var _default = useSuggestedImages; +exports["default"] = _default; + +/***/ }), + +/***/ "../modules/ai/assets/js/editor/pages/form-media/views/generate/hooks/use-text-to-image.js": +/*!*************************************************************************************************!*\ + !*** ../modules/ai/assets/js/editor/pages/form-media/views/generate/hooks/use-text-to-image.js ***! + \*************************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + + +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 _api = __webpack_require__(/*! ../../../../../api */ "../modules/ai/assets/js/editor/api/index.js"); +var _useImagePrompt = _interopRequireDefault(__webpack_require__(/*! ../../../hooks/use-image-prompt */ "../modules/ai/assets/js/editor/pages/form-media/hooks/use-image-prompt.js")); +var useTextToImage = function useTextToImage(initialValue) { + return (0, _useImagePrompt.default)(_api.getTextToImageGeneration, initialValue); +}; +var _default = useTextToImage; +exports["default"] = _default; + +/***/ }), + +/***/ "../modules/ai/assets/js/editor/pages/form-media/views/generate/index.js": +/*!*******************************************************************************!*\ + !*** ../modules/ai/assets/js/editor/pages/form-media/views/generate/index.js ***! + \*******************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + + +var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js"); +var _typeof = __webpack_require__(/*! @babel/runtime/helpers/typeof */ "../node_modules/@babel/runtime/helpers/typeof.js"); +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; +var _react = _interopRequireWildcard(__webpack_require__(/*! react */ "react")); +var _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/defineProperty */ "../node_modules/@babel/runtime/helpers/defineProperty.js")); +var _slicedToArray2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/slicedToArray */ "../node_modules/@babel/runtime/helpers/slicedToArray.js")); +var _ui = __webpack_require__(/*! @elementor/ui */ "@elementor/ui"); +var _i18n = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n"); +var _view = _interopRequireDefault(__webpack_require__(/*! ../../components/view */ "../modules/ai/assets/js/editor/pages/form-media/components/view.js")); +var _gallery = _interopRequireDefault(__webpack_require__(/*! ../../components/gallery */ "../modules/ai/assets/js/editor/pages/form-media/components/gallery.js")); +var _imageForm = _interopRequireDefault(__webpack_require__(/*! ../../components/image-form */ "../modules/ai/assets/js/editor/pages/form-media/components/image-form.js")); +var _promptField = _interopRequireDefault(__webpack_require__(/*! ../../components/prompt-field */ "../modules/ai/assets/js/editor/pages/form-media/components/prompt-field.js")); +var _imageTypeSelect = _interopRequireDefault(__webpack_require__(/*! ../../components/image-type-select */ "../modules/ai/assets/js/editor/pages/form-media/components/image-type-select.js")); +var _imageStyleSelect = _interopRequireDefault(__webpack_require__(/*! ../../components/image-style-select */ "../modules/ai/assets/js/editor/pages/form-media/components/image-style-select.js")); +var _imageRatioSelect = _interopRequireDefault(__webpack_require__(/*! ../../components/image-ratio-select */ "../modules/ai/assets/js/editor/pages/form-media/components/image-ratio-select.js")); +var _generateAgainSubmit = _interopRequireDefault(__webpack_require__(/*! ../../components/generate-again-submit */ "../modules/ai/assets/js/editor/pages/form-media/components/generate-again-submit.js")); +var _newPromptButton = _interopRequireDefault(__webpack_require__(/*! ../../components/new-prompt-button */ "../modules/ai/assets/js/editor/pages/form-media/components/new-prompt-button.js")); +var _generateImagesSubmit = _interopRequireDefault(__webpack_require__(/*! ../../components/generate-images-submit */ "../modules/ai/assets/js/editor/pages/form-media/components/generate-images-submit.js")); +var _imagesDisplay = _interopRequireDefault(__webpack_require__(/*! ../../components/images-display */ "../modules/ai/assets/js/editor/pages/form-media/components/images-display.js")); +var _imageActions = _interopRequireDefault(__webpack_require__(/*! ../../components/image-actions */ "../modules/ai/assets/js/editor/pages/form-media/components/image-actions.js")); +var _usePromptSettings2 = _interopRequireWildcard(__webpack_require__(/*! ../../hooks/use-prompt-settings */ "../modules/ai/assets/js/editor/pages/form-media/hooks/use-prompt-settings.js")); +var _useSuggestedImages2 = _interopRequireDefault(__webpack_require__(/*! ./hooks/use-suggested-images */ "../modules/ai/assets/js/editor/pages/form-media/views/generate/hooks/use-suggested-images.js")); +var _useTextToImage2 = _interopRequireDefault(__webpack_require__(/*! ./hooks/use-text-to-image */ "../modules/ai/assets/js/editor/pages/form-media/views/generate/hooks/use-text-to-image.js")); +var _useImageActions2 = _interopRequireDefault(__webpack_require__(/*! ../../hooks/use-image-actions */ "../modules/ai/assets/js/editor/pages/form-media/hooks/use-image-actions.js")); +var _globalSettingsContext = __webpack_require__(/*! ../../context/global-settings-context */ "../modules/ai/assets/js/editor/pages/form-media/context/global-settings-context.js"); +var _promptHistoryActionContext = __webpack_require__(/*! ../../../../components/prompt-history/context/prompt-history-action-context */ "../modules/ai/assets/js/editor/components/prompt-history/context/prompt-history-action-context.js"); +var _promptLibraryLink = _interopRequireDefault(__webpack_require__(/*! ../../../../components/prompt-library-link */ "../modules/ai/assets/js/editor/components/prompt-library-link.js")); +var _requestsIds = __webpack_require__(/*! ../../../../context/requests-ids */ "../modules/ai/assets/js/editor/context/requests-ids.js"); +function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); } +function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; } +var getPromptPlaceholder = function getPromptPlaceholder(images) { + if (!(images !== null && images !== void 0 && images.length)) { + return (0, _i18n.__)('describe your image', 'elementor'); + } + var randomImage = images[Math.floor(Math.random() * images.length)]; + return randomImage.prompt; +}; +var Generate = function Generate() { + var _useState = (0, _react.useState)(''), + _useState2 = (0, _slicedToArray2.default)(_useState, 2), + prompt = _useState2[0], + setPrompt = _useState2[1]; + var _useRequestIds = (0, _requestsIds.useRequestIds)(), + setGenerate = _useRequestIds.setGenerate; + var _useGlobalSettings = (0, _globalSettingsContext.useGlobalSettings)(), + initialImageType = _useGlobalSettings.initialImageType; + var _usePromptSettings = (0, _usePromptSettings2.default)({ + type: initialImageType + }), + settings = _usePromptSettings.settings, + updateSettings = _usePromptSettings.updateSettings, + resetSettings = _usePromptSettings.resetSettings; + var _useSuggestedImages = (0, _useSuggestedImages2.default)({ + selectedType: settings[_usePromptSettings2.IMAGE_TYPE] + }), + suggestedImages = _useSuggestedImages.imagesData, + isPreloading = _useSuggestedImages.isLoading; + var promptPlaceholder = getPromptPlaceholder(suggestedImages); + var _useTextToImage = (0, _useTextToImage2.default)({}), + generatedImages = _useTextToImage.data, + setResult = _useTextToImage.setResult, + send = _useTextToImage.send, + isGenerating = _useTextToImage.isLoading, + error = _useTextToImage.error, + reset = _useTextToImage.reset; + var _useImageActions = (0, _useImageActions2.default)(), + use = _useImageActions.use, + edit = _useImageActions.edit, + isUploading = _useImageActions.isLoading; + var isLoading = isPreloading || isGenerating || isUploading; + + // The aspect ratio in the content view should only be updated when the generated images are updated. + var generateAspectRatio = (0, _react.useMemo)(function () { + return settings[_usePromptSettings2.IMAGE_RATIO]; + }, [generatedImages === null || generatedImages === void 0 ? void 0 : generatedImages.result]); + var handleSubmit = function handleSubmit(event) { + event.preventDefault(); + setGenerate(); + send({ + prompt: prompt, + settings: settings + }); + }; + var handleCopyPrompt = function handleCopyPrompt(_ref) { + var _updateSettings; + var selectedPrompt = _ref.prompt, + imageType = _ref.imageType; + setPrompt(selectedPrompt); + var _imageType$split = imageType.split('/'), + _imageType$split2 = (0, _slicedToArray2.default)(_imageType$split, 2), + type = _imageType$split2[0], + style = _imageType$split2[1]; + updateSettings((_updateSettings = {}, (0, _defineProperty2.default)(_updateSettings, _usePromptSettings2.IMAGE_TYPE, type), (0, _defineProperty2.default)(_updateSettings, _usePromptSettings2.IMAGE_STYLE, style), _updateSettings)); + }; + (0, _promptHistoryActionContext.useSubscribeOnPromptHistoryAction)([{ + type: _promptHistoryActionContext.ACTION_TYPES.RESTORE, + handler: function handler(action) { + var _action$data, _action$data2, _action$data3, _action$data4; + handleCopyPrompt({ + prompt: (_action$data = action.data) === null || _action$data === void 0 ? void 0 : _action$data.prompt, + imageType: ((_action$data2 = action.data) === null || _action$data2 === void 0 ? void 0 : _action$data2.imageType) || '' + }); + updateSettings((0, _defineProperty2.default)({}, _usePromptSettings2.IMAGE_RATIO, (_action$data3 = action.data) === null || _action$data3 === void 0 ? void 0 : _action$data3.ratio)); + setResult((_action$data4 = action.data) === null || _action$data4 === void 0 ? void 0 : _action$data4.images, action.id); + } + }]); + return /*#__PURE__*/_react.default.createElement(_view.default, null, /*#__PURE__*/_react.default.createElement(_view.default.Panel, null, /*#__PURE__*/_react.default.createElement(_view.default.PanelHeading, { + primary: (0, _i18n.__)('Imagine anything create everything', 'elementor'), + secondary: (0, _i18n.__)('Generate images by selecting the desired type and style, and entering a prompt.', 'elementor') + }), error && /*#__PURE__*/_react.default.createElement(_view.default.ErrorMessage, { + error: error, + onRetry: handleSubmit + }), /*#__PURE__*/_react.default.createElement(_imageForm.default, { + onSubmit: handleSubmit + }, /*#__PURE__*/_react.default.createElement(_promptField.default, { + "data-testid": "e-image-prompt", + value: prompt, + disabled: isLoading, + placeholder: promptPlaceholder, + onChange: setPrompt + }), /*#__PURE__*/_react.default.createElement(_imageTypeSelect.default, { + disabled: isLoading, + value: settings[_usePromptSettings2.IMAGE_TYPE], + onChange: function onChange(event) { + return updateSettings((0, _defineProperty2.default)({}, _usePromptSettings2.IMAGE_TYPE, event.target.value)); + } + }), /*#__PURE__*/_react.default.createElement(_imageStyleSelect.default, { + type: settings[_usePromptSettings2.IMAGE_TYPE], + value: settings[_usePromptSettings2.IMAGE_STYLE], + disabled: isLoading || !settings[_usePromptSettings2.IMAGE_TYPE] || false, + onChange: function onChange(event) { + return updateSettings((0, _defineProperty2.default)({}, _usePromptSettings2.IMAGE_STYLE, event.target.value)); + } + }), /*#__PURE__*/_react.default.createElement(_imageRatioSelect.default, { + disabled: isLoading, + value: settings[_usePromptSettings2.IMAGE_RATIO], + onChange: function onChange(event) { + return updateSettings((0, _defineProperty2.default)({}, _usePromptSettings2.IMAGE_RATIO, event.target.value)); + } + }), generatedImages !== null && generatedImages !== void 0 && generatedImages.result ? /*#__PURE__*/_react.default.createElement(_ui.Stack, { + gap: 2, + sx: { + my: 2.5 + } + }, /*#__PURE__*/_react.default.createElement(_generateAgainSubmit.default, { + disabled: isLoading || '' === prompt + }), /*#__PURE__*/_react.default.createElement(_newPromptButton.default, { + disabled: isLoading, + onClick: function onClick() { + resetSettings(); + setPrompt(''); + reset(); + } + })) : /*#__PURE__*/_react.default.createElement(_generateImagesSubmit.default, { + disabled: isLoading || '' === prompt + }))), /*#__PURE__*/_react.default.createElement(_view.default.Content, { + isLoading: isPreloading || isUploading, + isGenerating: isGenerating + }, generatedImages !== null && generatedImages !== void 0 && generatedImages.result ? /*#__PURE__*/_react.default.createElement(_imagesDisplay.default, { + images: generatedImages === null || generatedImages === void 0 ? void 0 : generatedImages.result, + aspectRatio: generateAspectRatio, + onUseImage: use, + onEditImage: edit + }) : /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_view.default.ContentHeading, { + primary: (0, _i18n.__)('Spark your imagination with images generated by our community', 'elementor') + }), /*#__PURE__*/_react.default.createElement(_ui.Stack, { + sx: { + mb: 3 + } + }, /*#__PURE__*/_react.default.createElement(_promptLibraryLink.default, { + libraryLink: "https://go.elementor.com/ai-prompt-library-image/" + })), /*#__PURE__*/_react.default.createElement(_gallery.default, { + cols: 3 + }, suggestedImages === null || suggestedImages === void 0 ? void 0 : suggestedImages.map(function (suggestedPrompt) { + return /*#__PURE__*/_react.default.createElement(_gallery.default.Image, { + variant: "thumbnail", + key: suggestedPrompt.prompt, + alt: suggestedPrompt.prompt, + text: suggestedPrompt.prompt, + src: suggestedPrompt.thumbnailUrl + }, /*#__PURE__*/_react.default.createElement(_imageActions.default, null, /*#__PURE__*/_react.default.createElement(_imageActions.default.UseImage, { + onClick: function onClick() { + return use(suggestedPrompt); + }, + fullWidth: true + }), /*#__PURE__*/_react.default.createElement(_imageActions.default.CopyIcon, { + onClick: function onClick() { + return handleCopyPrompt(suggestedPrompt); + } + }), /*#__PURE__*/_react.default.createElement(_imageActions.default.EditIcon, { + onClick: function onClick() { + return edit(suggestedPrompt); + } + }))); + }))))); +}; +var _default = Generate; +exports["default"] = _default; + +/***/ }), + +/***/ "../modules/ai/assets/js/editor/pages/form-media/views/image-tools/image-tools-content.js": +/*!************************************************************************************************!*\ + !*** ../modules/ai/assets/js/editor/pages/form-media/views/image-tools/image-tools-content.js ***! + \************************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + + +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 _react = _interopRequireDefault(__webpack_require__(/*! react */ "react")); +var _singleImagePreview = _interopRequireDefault(__webpack_require__(/*! ../../components/single-image-preview */ "../modules/ai/assets/js/editor/pages/form-media/components/single-image-preview.js")); +var _i18n = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n"); +var _imageActions = _interopRequireDefault(__webpack_require__(/*! ../../components/image-actions */ "../modules/ai/assets/js/editor/pages/form-media/components/image-actions.js")); +var _editImageContext = __webpack_require__(/*! ../../context/edit-image-context */ "../modules/ai/assets/js/editor/pages/form-media/context/edit-image-context.js"); +var _useImageActions2 = _interopRequireDefault(__webpack_require__(/*! ../../hooks/use-image-actions */ "../modules/ai/assets/js/editor/pages/form-media/hooks/use-image-actions.js")); +var ImageToolsContent = function ImageToolsContent() { + var _useEditImage = (0, _editImageContext.useEditImage)(), + editImage = _useEditImage.editImage, + width = _useEditImage.width, + height = _useEditImage.height; + var _useImageActions = (0, _useImageActions2.default)(), + use = _useImageActions.use; + return /*#__PURE__*/_react.default.createElement(_singleImagePreview.default, null, /*#__PURE__*/_react.default.createElement(_singleImagePreview.default.Image, { + src: editImage.url, + style: { + width: width, + height: height + }, + alt: editImage.alt || (0, _i18n.__)('Image preview', 'elementor') + }, /*#__PURE__*/_react.default.createElement(_singleImagePreview.default.Actions, null, /*#__PURE__*/_react.default.createElement(_imageActions.default.UseImage, { + onClick: function onClick() { + return use(editImage); + } + })))); +}; +var _default = ImageToolsContent; +exports["default"] = _default; + +/***/ }), + +/***/ "../modules/ai/assets/js/editor/pages/form-media/views/image-tools/image-tools-panel.js": +/*!**********************************************************************************************!*\ + !*** ../modules/ai/assets/js/editor/pages/form-media/views/image-tools/image-tools-panel.js ***! + \**********************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + + +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 _react = _interopRequireDefault(__webpack_require__(/*! react */ "react")); +var _ui = __webpack_require__(/*! @elementor/ui */ "@elementor/ui"); +var _i18n = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n"); +var _propTypes = _interopRequireDefault(__webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js")); +var _expandIcon = _interopRequireDefault(__webpack_require__(/*! ../../../../icons/expand-icon */ "../modules/ai/assets/js/editor/icons/expand-icon.js")); +var _brushIcon = _interopRequireDefault(__webpack_require__(/*! ../../../../icons/brush-icon */ "../modules/ai/assets/js/editor/icons/brush-icon.js")); +var _evolveIcon = _interopRequireDefault(__webpack_require__(/*! ../../../../icons/evolve-icon */ "../modules/ai/assets/js/editor/icons/evolve-icon.js")); +var _enlargerIcon = _interopRequireDefault(__webpack_require__(/*! ../../../../icons/enlarger-icon */ "../modules/ai/assets/js/editor/icons/enlarger-icon.js")); +var _removeBg = _interopRequireDefault(__webpack_require__(/*! ../../../../icons/remove-bg */ "../modules/ai/assets/js/editor/icons/remove-bg.js")); +var _replaceBg = _interopRequireDefault(__webpack_require__(/*! ../../../../icons/replace-bg */ "../modules/ai/assets/js/editor/icons/replace-bg.js")); +var _constants = __webpack_require__(/*! ../../constants */ "../modules/ai/assets/js/editor/pages/form-media/constants/index.js"); +var _locationContext = __webpack_require__(/*! ../../context/location-context */ "../modules/ai/assets/js/editor/pages/form-media/context/location-context.js"); +var TeaserDrawing = function TeaserDrawing() { + return /*#__PURE__*/_react.default.createElement(_ui.SvgIcon, { + viewBox: "0 0 184 80", + sx: { + width: 184, + height: 80 + } + }, /*#__PURE__*/_react.default.createElement("g", { + clipPath: "url(#clip0_3127_96542)" + }, /*#__PURE__*/_react.default.createElement("path", { + fillRule: "evenodd", + clipRule: "evenodd", + d: "M49.6014 1.36364C49.6014 0.610521 48.9907 0 48.2373 0C47.4839 0 46.8731 0.610521 46.8731 1.36364C46.8731 1.9664 46.6336 2.54448 46.2072 2.9707C45.7808 3.39692 45.2025 3.63636 44.5995 3.63636C43.8461 3.63636 43.2354 4.24689 43.2354 5C43.2354 5.75311 43.8461 6.36364 44.5995 6.36364C45.2025 6.36364 45.7808 6.60308 46.2072 7.0293C46.6336 7.45552 46.8731 8.0336 46.8731 8.63636C46.8731 9.38948 47.4839 10 48.2373 10C48.9907 10 49.6014 9.38948 49.6014 8.63636C49.6014 8.0336 49.8409 7.45552 50.2673 7.0293C50.6937 6.60308 51.272 6.36364 51.875 6.36364C52.6284 6.36364 53.2392 5.75311 53.2392 5C53.2392 4.24689 52.6284 3.63636 51.875 3.63636C51.272 3.63636 50.6937 3.39692 50.2673 2.9707C49.8409 2.54448 49.6014 1.9664 49.6014 1.36364ZM48.1364 4.89917C48.1706 4.86501 48.2042 4.83041 48.2373 4.79538C48.2703 4.83041 48.304 4.86501 48.3381 4.89917C48.3723 4.93333 48.4069 4.96694 48.4419 5C48.4069 5.03306 48.3723 5.06667 48.3381 5.10083C48.304 5.13499 48.2703 5.16959 48.2373 5.20462C48.2042 5.16959 48.1706 5.13499 48.1364 5.10083C48.1022 5.06667 48.0676 5.03306 48.0326 5C48.0676 4.96694 48.1022 4.93333 48.1364 4.89917Z", + fill: "#69727D" + }), /*#__PURE__*/_react.default.createElement("path", { + fillRule: "evenodd", + clipRule: "evenodd", + d: "M66.6927 22.3677C66.6927 21.6177 66.082 21.0098 65.3286 21.0098C64.5752 21.0098 63.9644 21.6177 63.9644 22.3677C63.9644 22.9679 63.7249 23.5436 63.2985 23.968C62.8721 24.3924 62.2938 24.6309 61.6908 24.6309C60.9374 24.6309 60.3267 25.2388 60.3267 25.9888C60.3267 26.7387 60.9374 27.3467 61.6908 27.3467C62.2938 27.3467 62.8721 27.5851 63.2985 28.0096C63.7249 28.434 63.9644 29.0096 63.9644 29.6099C63.9644 30.3598 64.5752 30.9678 65.3286 30.9678C66.082 30.9678 66.6927 30.3598 66.6927 29.6099C66.6927 29.0096 66.9323 28.434 67.3586 28.0096C67.785 27.5851 68.3633 27.3467 68.9663 27.3467C69.7197 27.3467 70.3305 26.7387 70.3305 25.9888C70.3305 25.2388 69.7197 24.6309 68.9663 24.6309C68.3633 24.6309 67.785 24.3924 67.3586 23.968C66.9323 23.5436 66.6927 22.9679 66.6927 22.3677ZM65.2277 25.8884C65.2619 25.8544 65.2955 25.8199 65.3286 25.785C65.3616 25.8199 65.3953 25.8544 65.4294 25.8884C65.4636 25.9224 65.4982 25.9559 65.5333 25.9888C65.4982 26.0217 65.4636 26.0552 65.4294 26.0892C65.3953 26.1232 65.3616 26.1577 65.3286 26.1925C65.2955 26.1577 65.2619 26.1232 65.2277 26.0892C65.1935 26.0552 65.1589 26.0217 65.1239 25.9888C65.1589 25.9559 65.1935 25.9224 65.2277 25.8884Z", + fill: "#69727D" + }), /*#__PURE__*/_react.default.createElement("path", { + d: "M53.9717 12L57.2198 17.0456L3.24796 51.4731L-0.000164873 46.4275L53.9717 12Z", + fill: "#69727D" + }), /*#__PURE__*/_react.default.createElement("path", { + d: "M64.9761 5L68.2242 10.0456L57.2612 17.0387L54.013 11.9931L64.9761 5Z", + fill: "#E6E8EA" + }), /*#__PURE__*/_react.default.createElement("path", { + fillRule: "evenodd", + clipRule: "evenodd", + d: "M65.7284 9.49923L64.432 7.48537L56.5088 12.5394L57.8052 14.5533L65.7284 9.49923ZM64.9761 5L54.013 11.9931L57.2612 17.0387L68.2242 10.0456L64.9761 5Z", + fill: "#69727D" + }), /*#__PURE__*/_react.default.createElement("path", { + fillRule: "evenodd", + clipRule: "evenodd", + d: "M128 41C128 43.7687 121.671 46.2089 112.052 47.6451L114.482 74.7976C114.494 74.8647 114.5 74.9322 114.5 75C114.5 75.0001 114.5 75.0002 114.5 75.0003C114.513 75.1456 114.487 75.2779 114.43 75.3982C113.514 77.9735 103.8 80 91.95 80C79.496 80 69.4 77.7614 69.4 75C69.4 74.8146 69.4456 74.6315 69.5343 74.4513L71.2141 47.5326C62.0087 46.0835 56 43.6977 56 41C56 36.5817 72.1177 33 92 33C111.882 33 128 36.5817 128 41Z", + fill: "#69727D" + }), /*#__PURE__*/_react.default.createElement("path", { + d: "M106.685 3.08259C112.562 16.564 109.338 34.1761 106.713 41.4407C106.713 41.4407 105.151 41.9127 100.894 41.9715C96.6371 42.0303 95.0251 41.9866 95.0251 41.4558C95.0252 40.9249 94.6272 34.6461 96.4177 22.3308C98.0343 11.2116 102.692 5.02553 105.448 2.75675C105.865 2.4137 106.47 2.58777 106.685 3.08259Z", + fill: "#E6E8EA" + }), /*#__PURE__*/_react.default.createElement("path", { + fillRule: "evenodd", + clipRule: "evenodd", + d: "M104.883 4.66783C105.347 4.17219 106.14 4.35208 106.38 4.9873C108.716 11.1748 109.254 18.1507 108.889 24.5355C108.513 31.1152 107.184 36.9856 105.954 40.5842C105.778 40.6166 105.55 40.6541 105.265 40.6927C104.388 40.8119 102.974 40.9423 100.88 40.9712C98.7385 41.0008 97.3196 41.0031 96.4377 40.9371C96.2614 40.9239 96.1203 40.9088 96.0088 40.8935C95.9567 39.0573 95.8782 32.9919 97.4073 22.4743C98.766 13.1288 102.302 7.42438 104.883 4.66783ZM106.713 41.4403L107.002 42.3975C107.305 42.3062 107.546 42.0773 107.653 41.7802C109 38.0524 110.481 31.7376 110.886 24.6496C111.29 17.5654 110.626 9.61894 107.602 2.68255C107.147 1.63949 105.792 1.17814 104.812 1.98425C101.838 4.43294 97.0752 10.8574 95.4281 22.1866C93.7715 33.5811 93.975 39.865 94.0187 41.2138C94.0225 41.3324 94.0251 41.4128 94.0251 41.4552C94.025 42.261 94.695 42.5983 95.0067 42.7098C95.3591 42.8358 95.8079 42.8956 96.2886 42.9316C97.2769 43.0055 98.7924 43.0002 100.908 42.971C103.071 42.9411 104.566 42.806 105.534 42.6745C106.018 42.6088 106.371 42.5438 106.61 42.4932C106.729 42.4679 106.82 42.4461 106.885 42.4296C106.917 42.4214 106.943 42.4144 106.962 42.409L106.987 42.4021L106.996 42.3995L106.999 42.3984L107.001 42.398C107.001 42.398 107.002 42.3975 106.713 41.4403ZM106.426 40.4822L106.428 40.4817L106.43 40.4812C106.43 40.4812 106.429 40.4814 106.426 40.4822Z", + fill: "#69727D" + }), /*#__PURE__*/_react.default.createElement("path", { + fillRule: "evenodd", + clipRule: "evenodd", + d: "M104.22 13.8372C104.787 15.7536 104.996 18.3439 104.953 21.2589C104.907 24.4148 104.569 27.8559 104.134 31.0529C103.7 34.2469 103.172 37.1799 102.753 39.3152C102.544 40.3824 102.361 41.2491 102.232 41.8481C102.22 41.9009 102.209 41.9516 102.199 42.0001H100.503C100.526 38.5025 100.676 33.4168 101.183 28.2866C101.724 22.8227 102.66 17.4299 104.22 13.8372ZM103 43.0001C103.974 43.2266 103.974 43.2264 103.974 43.2262L103.978 43.2093L103.989 43.1613C103.999 43.1192 104.013 43.0571 104.031 42.976C104.067 42.814 104.12 42.5763 104.186 42.2713C104.318 41.6613 104.503 40.7819 104.716 39.7006C105.14 37.5391 105.675 34.5658 106.116 31.3223C106.556 28.0818 106.905 24.5541 106.953 21.2881C107 18.0456 106.753 14.9635 105.943 12.6671C105.815 12.3045 105.676 11.9539 105.512 11.6797C105.394 11.4809 105.045 10.9388 104.371 10.9076C103.702 10.8766 103.301 11.3772 103.156 11.5722C102.959 11.8385 102.774 12.1912 102.594 12.5778C100.767 16.4945 99.7565 22.3931 99.1929 28.0897C98.6258 33.8211 98.5 39.4812 98.5 43.0001V44.0001H103.794L103.974 43.2262L103 43.0001Z", + fill: "#69727D" + }), /*#__PURE__*/_react.default.createElement("path", { + d: "M79.2952 3.08259C73.4181 16.564 76.6423 34.1761 79.2676 41.4407C79.2676 41.4407 80.8299 41.9127 85.0867 41.9715C89.3434 42.0303 90.9554 41.9866 90.9554 41.4558C90.9553 40.9249 91.3533 34.6461 89.5628 22.3308C87.9462 11.2116 83.2888 5.02553 80.5325 2.75675C80.1157 2.4137 79.511 2.58777 79.2952 3.08259Z", + fill: "#E6E8EA" + }), /*#__PURE__*/_react.default.createElement("path", { + fillRule: "evenodd", + clipRule: "evenodd", + d: "M81.0978 4.66783C80.6337 4.17219 79.8403 4.35208 79.6005 4.9873C77.2644 11.1748 76.7267 18.1507 77.0914 24.5355C77.4671 31.1152 78.7963 36.9856 80.0267 40.5842C80.2028 40.6166 80.4308 40.6541 80.7155 40.6927C81.5929 40.8119 83.0069 40.9423 85.1005 40.9712C87.242 41.0008 88.6609 41.0031 89.5427 40.9371C89.7191 40.9239 89.8602 40.9088 89.9716 40.8935C90.0238 39.0573 90.1023 32.9919 88.5732 22.4743C87.2145 13.1288 83.6789 7.42438 81.0978 4.66783ZM79.2676 41.4403L78.9784 42.3975C78.676 42.3062 78.4345 42.0773 78.3271 41.7802C76.98 38.0524 75.4994 31.7376 75.0946 24.6496C74.69 17.5654 75.3547 9.61894 78.3786 2.68255C78.8333 1.63949 80.1887 1.17814 81.168 1.98425C84.1429 4.43294 88.9053 10.8574 90.5524 22.1866C92.209 33.5811 92.0055 39.865 91.9618 41.2138C91.958 41.3324 91.9554 41.4128 91.9554 41.4552C91.9554 42.261 91.2855 42.5983 90.9737 42.7098C90.6214 42.8358 90.1726 42.8956 89.6919 42.9316C88.7036 43.0055 87.1881 43.0002 85.0728 42.971C82.9096 42.9411 81.4141 42.806 80.4462 42.6745C79.9621 42.6088 79.6094 42.5438 79.3707 42.4932C79.2514 42.4679 79.1605 42.4461 79.0958 42.4296C79.0635 42.4214 79.0377 42.4144 79.0182 42.409L78.9937 42.4021L78.9849 42.3995L78.9814 42.3984L78.9798 42.398C78.9798 42.398 78.9784 42.3975 79.2676 41.4403ZM79.5541 40.4822L79.5526 40.4817L79.5507 40.4812C79.5507 40.4812 79.5514 40.4814 79.5541 40.4822Z", + fill: "#69727D" + }), /*#__PURE__*/_react.default.createElement("path", { + fillRule: "evenodd", + clipRule: "evenodd", + d: "M81.7604 13.8372C81.1939 15.7536 80.9847 18.3439 81.0272 21.2589C81.0733 24.4148 81.4118 27.8559 81.8464 31.0529C82.2805 34.2469 82.8081 37.1799 83.2274 39.3152C83.4369 40.3824 83.6192 41.2491 83.7488 41.8481C83.7603 41.9009 83.7713 41.9516 83.7819 42.0001H85.4771C85.4542 38.5025 85.3049 33.4168 84.7973 28.2866C84.2567 22.8227 83.32 17.4299 81.7604 13.8372ZM82.9805 43.0001C82.0065 43.2266 82.0064 43.2264 82.0064 43.2262L82.0025 43.2093L81.9914 43.1613C81.9818 43.1192 81.9677 43.0571 81.9494 42.976C81.913 42.814 81.8602 42.5763 81.7941 42.2713C81.6621 41.6613 81.4772 40.7819 81.2648 39.7006C80.8404 37.5391 80.3054 34.5658 79.8646 31.3223C79.4241 28.0818 79.0751 24.5541 79.0275 21.2881C78.9801 18.0456 79.227 14.9635 80.0375 12.6671C80.1655 12.3045 80.305 11.9539 80.4683 11.6797C80.5868 11.4809 80.9351 10.9388 81.6092 10.9076C82.2782 10.8766 82.6793 11.3772 82.8241 11.5722C83.0217 11.8385 83.2064 12.1912 83.3867 12.5778C85.2136 16.4945 86.224 22.3931 86.7876 28.0897C87.3546 33.8211 87.4805 39.4812 87.4805 43.0001V44.0001H82.1863L82.0064 43.2262L82.9805 43.0001Z", + fill: "#69727D" + })), /*#__PURE__*/_react.default.createElement("defs", null, /*#__PURE__*/_react.default.createElement("clipPath", { + id: "clip0_3127_96542" + }, /*#__PURE__*/_react.default.createElement("rect", { + width: "184", + height: "80", + fill: "white" + })))); +}; +var ImageToolsContainer = (0, _ui.styled)(_ui.Box)(function (_ref) { + var theme = _ref.theme; + return { + height: "calc(100% - ".concat(theme.spacing(13), ")") + }; +}); +var ToolsTeaserContainer = (0, _ui.styled)(_ui.Box)(function (_ref2) { + var theme = _ref2.theme; + return { + position: 'sticky', + top: '100%', + padding: theme.spacing(4, 0, 1) + }; +}); +var ImageToolsPanel = function ImageToolsPanel() { + var _useLocation = (0, _locationContext.useLocation)(), + navigate = _useLocation.navigate; + var tools = [{ + label: (0, _i18n.__)('Expand Image', 'elementor'), + Icon: _expandIcon.default, + onClick: function onClick() { + return navigate(_constants.LOCATIONS.OUT_PAINTING); + } + }, { + label: (0, _i18n.__)('Generative Fill', 'elementor'), + Icon: _brushIcon.default, + onClick: function onClick() { + return navigate(_constants.LOCATIONS.IN_PAINTING); + } + }, { + label: (0, _i18n.__)('Resize', 'elementor'), + Icon: _enlargerIcon.default, + onClick: function onClick() { + return navigate(_constants.LOCATIONS.RESIZE); + } + }, { + label: (0, _i18n.__)('Variations', 'elementor'), + Icon: _evolveIcon.default, + onClick: function onClick() { + return navigate(_constants.LOCATIONS.VARIATIONS); + } + }, { + label: (0, _i18n.__)('Remove Background', 'elementor'), + Icon: _removeBg.default, + onClick: function onClick() { + return navigate(_constants.LOCATIONS.REMOVE_BACKGROUND); + } + }, { + label: (0, _i18n.__)('Replace Background', 'elementor'), + Icon: _replaceBg.default, + onClick: function onClick() { + return navigate(_constants.LOCATIONS.REPLACE_BACKGROUND); + } + }]; + return /*#__PURE__*/_react.default.createElement(ImageToolsContainer, null, /*#__PURE__*/_react.default.createElement(_ui.Box, { + display: "grid", + gridTemplateColumns: "repeat(2, 1fr)", + gap: 1, + justifyContent: "center" + }, tools.map(function (_ref3) { + var label = _ref3.label, + Icon = _ref3.Icon, + onClick = _ref3.onClick; + return /*#__PURE__*/_react.default.createElement(_ui.Button, { + onClick: onClick, + key: label, + variant: "outlined", + color: "secondary", + disabled: false, + sx: { + py: 3, + fontSize: '12px', + height: 'auto', + borderRadius: '4px' + } + }, /*#__PURE__*/_react.default.createElement(_ui.Box, { + display: "flex", + justifyContent: "center", + alignItems: "center", + flexDirection: "column" + }, /*#__PURE__*/_react.default.createElement(Icon, { + sx: { + mb: 0.5 + } + }), label)); + })), /*#__PURE__*/_react.default.createElement(ToolsTeaserContainer, { + display: "flex", + flexDirection: "column", + alignItems: "center" + }, /*#__PURE__*/_react.default.createElement(TeaserDrawing, null), /*#__PURE__*/_react.default.createElement(_ui.Typography, { + variant: "body2", + align: "center", + color: "secondary", + sx: { + mt: 2 + } + }, (0, _i18n.__)('Stay tuned! More incredible AI tools are coming your way soon.', 'elementor')))); +}; +ImageToolsPanel.propTypes = { + generateNewPrompt: _propTypes.default.func, + panelActive: _propTypes.default.bool +}; +var _default = ImageToolsPanel; +exports["default"] = _default; + +/***/ }), + +/***/ "../modules/ai/assets/js/editor/pages/form-media/views/image-tools/index.js": +/*!**********************************************************************************!*\ + !*** ../modules/ai/assets/js/editor/pages/form-media/views/image-tools/index.js ***! + \**********************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + + +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 _react = _interopRequireDefault(__webpack_require__(/*! react */ "react")); +var _view = _interopRequireDefault(__webpack_require__(/*! ../../components/view */ "../modules/ai/assets/js/editor/pages/form-media/components/view.js")); +var _i18n = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n"); +var _imageToolsPanel = _interopRequireDefault(__webpack_require__(/*! ./image-tools-panel */ "../modules/ai/assets/js/editor/pages/form-media/views/image-tools/image-tools-panel.js")); +var _imageToolsContent = _interopRequireDefault(__webpack_require__(/*! ./image-tools-content */ "../modules/ai/assets/js/editor/pages/form-media/views/image-tools/image-tools-content.js")); +var _locationContext = __webpack_require__(/*! ../../context/location-context */ "../modules/ai/assets/js/editor/pages/form-media/context/location-context.js"); +var _constants = __webpack_require__(/*! ../../constants */ "../modules/ai/assets/js/editor/pages/form-media/constants/index.js"); +var ImageTools = function ImageTools() { + var _useLocation = (0, _locationContext.useLocation)(), + navigate = _useLocation.navigate; + return /*#__PURE__*/_react.default.createElement(_view.default, null, /*#__PURE__*/_react.default.createElement(_view.default.Panel, null, /*#__PURE__*/_react.default.createElement(_view.default.BackButton, { + onClick: function onClick() { + return navigate(_constants.LOCATIONS.GENERATE); + } + }, (0, _i18n.__)('Generate with a prompt', 'elementor')), /*#__PURE__*/_react.default.createElement(_view.default.PanelHeading, { + primary: (0, _i18n.__)('Edit with AI', 'elementor') + }), /*#__PURE__*/_react.default.createElement(_imageToolsPanel.default, null)), /*#__PURE__*/_react.default.createElement(_view.default.Content, null, /*#__PURE__*/_react.default.createElement(_imageToolsContent.default, null))); +}; +var _default = ImageTools; +exports["default"] = _default; + +/***/ }), + +/***/ "../modules/ai/assets/js/editor/pages/form-media/views/in-painting/hooks/use-in-painting.js": +/*!**************************************************************************************************!*\ + !*** ../modules/ai/assets/js/editor/pages/form-media/views/in-painting/hooks/use-in-painting.js ***! + \**************************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + + +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 _api = __webpack_require__(/*! ../../../../../api */ "../modules/ai/assets/js/editor/api/index.js"); +var _useImagePrompt = _interopRequireDefault(__webpack_require__(/*! ../../../hooks/use-image-prompt */ "../modules/ai/assets/js/editor/pages/form-media/hooks/use-image-prompt.js")); +var useInPainting = function useInPainting(initialValue) { + var fetchAction = function fetchAction(payload) { + return (0, _api.getImageToImageMaskGeneration)(payload); + }; + return (0, _useImagePrompt.default)(fetchAction, initialValue); +}; +var _default = useInPainting; +exports["default"] = _default; + +/***/ }), + +/***/ "../modules/ai/assets/js/editor/pages/form-media/views/in-painting/in-painting-content.js": +/*!************************************************************************************************!*\ + !*** ../modules/ai/assets/js/editor/pages/form-media/views/in-painting/in-painting-content.js ***! + \************************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + + +var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js"); +var _typeof = __webpack_require__(/*! @babel/runtime/helpers/typeof */ "../node_modules/@babel/runtime/helpers/typeof.js"); +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; +var _react = _interopRequireWildcard(__webpack_require__(/*! react */ "react")); +var _regenerator = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/regenerator */ "../node_modules/@babel/runtime/regenerator/index.js")); +var _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ "../node_modules/@babel/runtime/helpers/asyncToGenerator.js")); +var _slicedToArray2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/slicedToArray */ "../node_modules/@babel/runtime/helpers/slicedToArray.js")); +var _ui = __webpack_require__(/*! @elementor/ui */ "@elementor/ui"); +var _i18n = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n"); +var _propTypes = _interopRequireDefault(__webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js")); +var _reactSketchCanvas = __webpack_require__(/*! react-sketch-canvas */ "../node_modules/react-sketch-canvas/dist/react-sketch-canvas.esm.js"); +var _undoIcon = _interopRequireDefault(__webpack_require__(/*! ../../../../icons/undo-icon */ "../modules/ai/assets/js/editor/icons/undo-icon.js")); +var _redoIcon = _interopRequireDefault(__webpack_require__(/*! ../../../../icons/redo-icon */ "../modules/ai/assets/js/editor/icons/redo-icon.js")); +function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); } +function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; } +var STROKE_SELECT_WIDTH = 120; +var BRUSH_COLOR = 'rgba(0, 0, 0, 0.75)'; +var StyledUndoIcon = (0, _ui.withDirection)(_undoIcon.default); +var StyledRedoIcon = (0, _ui.withDirection)(_redoIcon.default); +var BrushCursor = (0, _ui.styled)(_ui.Box, { + shouldForwardProp: function shouldForwardProp(prop) { + return 'size' === prop; + } +})(function (_ref) { + var theme = _ref.theme, + size = _ref.size; + return { + position: 'absolute', + width: size, + height: size, + borderRadius: '50%', + backgroundColor: BRUSH_COLOR, + pointerEvents: 'none', + transform: "translate(".concat('rtl' === theme.direction ? '50%' : '-50%', ", -50%)"), + border: "1px solid #fff" + }; +}); +var BrishSizeIcon = (0, _ui.styled)(_ui.Box, { + shouldForwardProp: function shouldForwardProp(prop) { + return 'size' === prop; + } +})(function (_ref2) { + var theme = _ref2.theme, + size = _ref2.size; + return { + width: size / 2, + height: size / 2, + borderRadius: '50%', + backgroundColor: theme.palette.secondary.main + }; +}); +var InPaintingContent = function InPaintingContent(_ref3) { + var editImage = _ref3.editImage, + setMask = _ref3.setMask, + canvasWidth = _ref3.width, + canvasHeight = _ref3.height; + var sketchRef = (0, _react.useRef)(); + var _useState = (0, _react.useState)(30), + _useState2 = (0, _slicedToArray2.default)(_useState, 2), + stroke = _useState2[0], + setStroke = _useState2[1]; + var brushCursorRef = (0, _react.useRef)(); + (0, _react.useEffect)(function () { + var canvas = document.querySelector('.eui-in-painting-canvas'); + + // The BrushCursor should follow the mouse position but should stay only inside the canvas. + var positionElement = function positionElement(e) { + var _canvas$getBoundingCl = canvas.getBoundingClientRect(), + left = _canvas$getBoundingCl.left, + top = _canvas$getBoundingCl.top, + width = _canvas$getBoundingCl.width, + height = _canvas$getBoundingCl.height; + var x = e.clientX - left; + var y = e.clientY - top; + if (x > 0 && x < width && y > 0 && y < height) { + brushCursorRef.current.style.left = "".concat(x, "px"); + brushCursorRef.current.style.top = "".concat(y, "px"); + } + }; + window.addEventListener('mousemove', positionElement); + return function () { + window.removeEventListener('mousemove', positionElement); + }; + }, [stroke]); + return /*#__PURE__*/_react.default.createElement(_ui.Stack, { + alignItems: "flex-start", + spacing: 0.5, + flexGrow: 1 + }, /*#__PURE__*/_react.default.createElement(_ui.Stack, { + width: "100%", + direction: "row", + spacing: 3, + alignSelf: "center", + justifyContent: "center", + sx: { + mb: 2.5 + } + }, /*#__PURE__*/_react.default.createElement(_ui.Stack, { + direction: "row", + gap: 1 + }, /*#__PURE__*/_react.default.createElement(_ui.Tooltip, { + title: (0, _i18n.__)('Undo', 'elementor') + }, /*#__PURE__*/_react.default.createElement(_ui.Button, { + variant: "outlined", + color: "secondary", + onClick: function onClick() { + return sketchRef.current.undo(); + }, + sx: { + px: 0 + } + }, /*#__PURE__*/_react.default.createElement(StyledUndoIcon, null))), /*#__PURE__*/_react.default.createElement(_ui.Tooltip, { + title: (0, _i18n.__)('Redo', 'elementor') + }, /*#__PURE__*/_react.default.createElement(_ui.Button, { + variant: "outlined", + color: "secondary", + onClick: function onClick() { + return sketchRef.current.redo(); + }, + sx: { + px: 0 + } + }, /*#__PURE__*/_react.default.createElement(StyledRedoIcon, null)))), /*#__PURE__*/_react.default.createElement(_ui.FormControl, { + size: "small", + color: "secondary", + sx: { + minWidth: STROKE_SELECT_WIDTH + } + }, /*#__PURE__*/_react.default.createElement(_ui.InputLabel, { + id: "stroke" + }, "Stroke"), /*#__PURE__*/_react.default.createElement(_ui.Select, { + autoWidth: true, + label: "Stroke", + value: stroke, + id: "demo-simple-select", + labelId: "demo-simple-select-label", + onChange: function onChange(e) { + return setStroke(e.target.value); + }, + MenuProps: { + PaperProps: { + sx: { + maxWidth: STROKE_SELECT_WIDTH + } + }, + MenuListProps: { + sx: { + minWidth: STROKE_SELECT_WIDTH + } + } + }, + sx: { + '& .MuiSelect-select .MuiListItemIcon-root': { + mr: 0.25, + width: 'initial', + minWidth: 'initial', + justifyContent: 'flex-start' + } + } + }, [10, 20, 30, 40, 50].map(function (value) { + return /*#__PURE__*/_react.default.createElement(_ui.MenuItem, { + key: 'stroke-width-option-' + value, + value: value + }, /*#__PURE__*/_react.default.createElement(_ui.Stack, { + direction: "row", + alignItems: "center", + gap: 1 + }, /*#__PURE__*/_react.default.createElement(_ui.ListItemIcon, { + sx: { + width: 30, + display: 'flex', + justifyContent: 'center' + } + }, /*#__PURE__*/_react.default.createElement(BrishSizeIcon, { + size: value + })), /*#__PURE__*/_react.default.createElement(_ui.ListItemText, null, value))); + })))), /*#__PURE__*/_react.default.createElement("div", { + style: { + margin: '0 auto', + position: 'relative', + cursor: 'none', + overflow: 'hidden' + } + }, /*#__PURE__*/_react.default.createElement(BrushCursor, { + ref: brushCursorRef, + size: stroke + }), /*#__PURE__*/_react.default.createElement(_reactSketchCanvas.ReactSketchCanvas, { + className: "eui-in-painting-canvas", + withViewBox: true, + ref: sketchRef, + height: canvasHeight + 'px', + width: canvasWidth + 'px', + strokeWidth: stroke, + strokeColor: BRUSH_COLOR, + backgroundImage: editImage.url, + onChange: /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() { + var svg; + return _regenerator.default.wrap(function _callee$(_context) { + while (1) switch (_context.prev = _context.next) { + case 0: + _context.next = 2; + return sketchRef.current.exportSvg(); + case 2: + svg = _context.sent; + setMask(svg); + case 4: + case "end": + return _context.stop(); + } + }, _callee); + })) + }))); +}; +InPaintingContent.propTypes = { + setMask: _propTypes.default.func.isRequired, + width: _propTypes.default.number.isRequired, + height: _propTypes.default.number.isRequired, + editImage: _propTypes.default.object.isRequired +}; +var _default = InPaintingContent; +exports["default"] = _default; + +/***/ }), + +/***/ "../modules/ai/assets/js/editor/pages/form-media/views/in-painting/index.js": +/*!**********************************************************************************!*\ + !*** ../modules/ai/assets/js/editor/pages/form-media/views/in-painting/index.js ***! + \**********************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + + +var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js"); +var _typeof = __webpack_require__(/*! @babel/runtime/helpers/typeof */ "../node_modules/@babel/runtime/helpers/typeof.js"); +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; +var _react = _interopRequireWildcard(__webpack_require__(/*! react */ "react")); +var _slicedToArray2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/slicedToArray */ "../node_modules/@babel/runtime/helpers/slicedToArray.js")); +var _ui = __webpack_require__(/*! @elementor/ui */ "@elementor/ui"); +var _i18n = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n"); +var _view = _interopRequireDefault(__webpack_require__(/*! ../../components/view */ "../modules/ai/assets/js/editor/pages/form-media/components/view.js")); +var _imageForm = _interopRequireDefault(__webpack_require__(/*! ../../components/image-form */ "../modules/ai/assets/js/editor/pages/form-media/components/image-form.js")); +var _promptField = _interopRequireDefault(__webpack_require__(/*! ../../components/prompt-field */ "../modules/ai/assets/js/editor/pages/form-media/components/prompt-field.js")); +var _inPaintingContent = _interopRequireDefault(__webpack_require__(/*! ./in-painting-content */ "../modules/ai/assets/js/editor/pages/form-media/views/in-painting/in-painting-content.js")); +var _generateSubmit = _interopRequireDefault(__webpack_require__(/*! ../../components/generate-submit */ "../modules/ai/assets/js/editor/pages/form-media/components/generate-submit.js")); +var _generateAgainSubmit = _interopRequireDefault(__webpack_require__(/*! ../../components/generate-again-submit */ "../modules/ai/assets/js/editor/pages/form-media/components/generate-again-submit.js")); +var _newPromptButton = _interopRequireDefault(__webpack_require__(/*! ../../components/new-prompt-button */ "../modules/ai/assets/js/editor/pages/form-media/components/new-prompt-button.js")); +var _imagesDisplay = _interopRequireDefault(__webpack_require__(/*! ../../components/images-display */ "../modules/ai/assets/js/editor/pages/form-media/components/images-display.js")); +var _usePromptSettings2 = _interopRequireDefault(__webpack_require__(/*! ../../hooks/use-prompt-settings */ "../modules/ai/assets/js/editor/pages/form-media/hooks/use-prompt-settings.js")); +var _useInPainting2 = _interopRequireDefault(__webpack_require__(/*! ./hooks/use-in-painting */ "../modules/ai/assets/js/editor/pages/form-media/views/in-painting/hooks/use-in-painting.js")); +var _editImageContext = __webpack_require__(/*! ../../context/edit-image-context */ "../modules/ai/assets/js/editor/pages/form-media/context/edit-image-context.js"); +var _useImageActions2 = _interopRequireDefault(__webpack_require__(/*! ../../hooks/use-image-actions */ "../modules/ai/assets/js/editor/pages/form-media/hooks/use-image-actions.js")); +var _requestsIds = __webpack_require__(/*! ../../../../context/requests-ids */ "../modules/ai/assets/js/editor/context/requests-ids.js"); +function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); } +function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; } +var InPainting = function InPainting() { + var _useState = (0, _react.useState)(''), + _useState2 = (0, _slicedToArray2.default)(_useState, 2), + prompt = _useState2[0], + setPrompt = _useState2[1]; + var _useRequestIds = (0, _requestsIds.useRequestIds)(), + setGenerate = _useRequestIds.setGenerate; + var _useState3 = (0, _react.useState)(''), + _useState4 = (0, _slicedToArray2.default)(_useState3, 2), + mask = _useState4[0], + setMask = _useState4[1]; + var _usePromptSettings = (0, _usePromptSettings2.default)(), + settings = _usePromptSettings.settings, + resetSettings = _usePromptSettings.resetSettings; + var _useEditImage = (0, _editImageContext.useEditImage)(), + editImage = _useEditImage.editImage, + width = _useEditImage.width, + height = _useEditImage.height; + var _useImageActions = (0, _useImageActions2.default)(), + use = _useImageActions.use, + edit = _useImageActions.edit, + isUploading = _useImageActions.isLoading; + var _useInPainting = (0, _useInPainting2.default)(), + data = _useInPainting.data, + send = _useInPainting.send, + isGenerating = _useInPainting.isLoading, + error = _useInPainting.error, + reset = _useInPainting.reset; + var isLoading = isGenerating || isUploading; + var handleSubmit = function handleSubmit(event) { + event.preventDefault(); + + // The fallback instruction should be hidden for the user. + var finalPrompt = prompt || 'Remove object and fill based on the surroundings'; + setGenerate(); + send({ + prompt: finalPrompt, + settings: settings, + image: editImage, + mask: mask + }); + }; + return /*#__PURE__*/_react.default.createElement(_view.default, null, /*#__PURE__*/_react.default.createElement(_view.default.Panel, null, /*#__PURE__*/_react.default.createElement(_view.default.BackButton, null), /*#__PURE__*/_react.default.createElement(_view.default.PanelHeading, { + primary: (0, _i18n.__)('Generative Fill', 'elementor'), + secondary: (0, _i18n.__)('Mark an area and edit it with a prompt.', 'elementor') + }), error && /*#__PURE__*/_react.default.createElement(_view.default.ErrorMessage, { + error: error, + onRetry: handleSubmit + }), /*#__PURE__*/_react.default.createElement(_imageForm.default, { + onSubmit: handleSubmit + }, /*#__PURE__*/_react.default.createElement(_promptField.default, { + value: prompt, + disabled: isLoading, + onChange: setPrompt, + placeholder: (0, _i18n.__)('Describe what you want to generate in the marked area (English only)', 'elementor') + }), data !== null && data !== void 0 && data.result ? /*#__PURE__*/_react.default.createElement(_ui.Stack, { + gap: 2, + sx: { + my: 2.5 + } + }, /*#__PURE__*/_react.default.createElement(_generateAgainSubmit.default, { + disabled: isLoading + }), /*#__PURE__*/_react.default.createElement(_newPromptButton.default, { + disabled: isLoading, + onClick: function onClick() { + resetSettings(); + setPrompt(''); + reset(); + } + })) : /*#__PURE__*/_react.default.createElement(_generateSubmit.default, { + disabled: isLoading + }))), /*#__PURE__*/_react.default.createElement(_view.default.Content, { + isGenerating: isLoading + }, data !== null && data !== void 0 && data.result ? /*#__PURE__*/_react.default.createElement(_imagesDisplay.default, { + images: data.result, + aspectRatio: editImage.aspectRatio, + onUseImage: use, + onEditImage: edit + }) : /*#__PURE__*/_react.default.createElement(_inPaintingContent.default, { + editImage: editImage, + width: width, + height: height, + setMask: setMask + }))); +}; +var _default = InPainting; +exports["default"] = _default; + +/***/ }), + +/***/ "../modules/ai/assets/js/editor/pages/form-media/views/out-painting/hooks/use-out-painting.js": +/*!****************************************************************************************************!*\ + !*** ../modules/ai/assets/js/editor/pages/form-media/views/out-painting/hooks/use-out-painting.js ***! + \****************************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + + +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 _api = __webpack_require__(/*! ../../../../../api */ "../modules/ai/assets/js/editor/api/index.js"); +var _useImagePrompt = _interopRequireDefault(__webpack_require__(/*! ../../../hooks/use-image-prompt */ "../modules/ai/assets/js/editor/pages/form-media/hooks/use-image-prompt.js")); +var useOutPainting = function useOutPainting(initialValue) { + var fetchAction = function fetchAction(payload) { + return (0, _api.getImageToImageOutPainting)(payload); + }; + return (0, _useImagePrompt.default)(fetchAction, initialValue); +}; +var _default = useOutPainting; +exports["default"] = _default; + +/***/ }), + +/***/ "../modules/ai/assets/js/editor/pages/form-media/views/out-painting/index.js": +/*!***********************************************************************************!*\ + !*** ../modules/ai/assets/js/editor/pages/form-media/views/out-painting/index.js ***! + \***********************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + + +var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js"); +var _typeof = __webpack_require__(/*! @babel/runtime/helpers/typeof */ "../node_modules/@babel/runtime/helpers/typeof.js"); +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; +var _react = _interopRequireWildcard(__webpack_require__(/*! react */ "react")); +var _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/defineProperty */ "../node_modules/@babel/runtime/helpers/defineProperty.js")); +var _slicedToArray2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/slicedToArray */ "../node_modules/@babel/runtime/helpers/slicedToArray.js")); +var _ui = __webpack_require__(/*! @elementor/ui */ "@elementor/ui"); +var _i18n = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n"); +var _view = _interopRequireDefault(__webpack_require__(/*! ../../components/view */ "../modules/ai/assets/js/editor/pages/form-media/components/view.js")); +var _imageForm = _interopRequireDefault(__webpack_require__(/*! ../../components/image-form */ "../modules/ai/assets/js/editor/pages/form-media/components/image-form.js")); +var _imageRatioSelect = _interopRequireDefault(__webpack_require__(/*! ../../components/image-ratio-select */ "../modules/ai/assets/js/editor/pages/form-media/components/image-ratio-select.js")); +var _generateSubmit = _interopRequireDefault(__webpack_require__(/*! ../../components/generate-submit */ "../modules/ai/assets/js/editor/pages/form-media/components/generate-submit.js")); +var _generateAgainSubmit = _interopRequireDefault(__webpack_require__(/*! ../../components/generate-again-submit */ "../modules/ai/assets/js/editor/pages/form-media/components/generate-again-submit.js")); +var _newPromptButton = _interopRequireDefault(__webpack_require__(/*! ../../components/new-prompt-button */ "../modules/ai/assets/js/editor/pages/form-media/components/new-prompt-button.js")); +var _promptField = _interopRequireDefault(__webpack_require__(/*! ../../components/prompt-field */ "../modules/ai/assets/js/editor/pages/form-media/components/prompt-field.js")); +var _outPaintingContent = _interopRequireDefault(__webpack_require__(/*! ./out-painting-content */ "../modules/ai/assets/js/editor/pages/form-media/views/out-painting/out-painting-content.js")); +var _imagesDisplay = _interopRequireDefault(__webpack_require__(/*! ../../components/images-display */ "../modules/ai/assets/js/editor/pages/form-media/components/images-display.js")); +var _editImageContext = __webpack_require__(/*! ../../context/edit-image-context */ "../modules/ai/assets/js/editor/pages/form-media/context/edit-image-context.js"); +var _useImageActions2 = _interopRequireDefault(__webpack_require__(/*! ../../hooks/use-image-actions */ "../modules/ai/assets/js/editor/pages/form-media/hooks/use-image-actions.js")); +var _usePromptSettings2 = _interopRequireWildcard(__webpack_require__(/*! ../../hooks/use-prompt-settings */ "../modules/ai/assets/js/editor/pages/form-media/hooks/use-prompt-settings.js")); +var _useOutPainting2 = _interopRequireDefault(__webpack_require__(/*! ./hooks/use-out-painting */ "../modules/ai/assets/js/editor/pages/form-media/views/out-painting/hooks/use-out-painting.js")); +var _requestsIds = __webpack_require__(/*! ../../../../context/requests-ids */ "../modules/ai/assets/js/editor/context/requests-ids.js"); +function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); } +function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; } +var OutPainting = function OutPainting() { + var _useState = (0, _react.useState)(''), + _useState2 = (0, _slicedToArray2.default)(_useState, 2), + prompt = _useState2[0], + setPrompt = _useState2[1]; + var _useRequestIds = (0, _requestsIds.useRequestIds)(), + setGenerate = _useRequestIds.setGenerate; + var _useEditImage = (0, _editImageContext.useEditImage)(), + editImage = _useEditImage.editImage, + initialAspectRatio = _useEditImage.aspectRatio; + var _useState3 = (0, _react.useState)(''), + _useState4 = (0, _slicedToArray2.default)(_useState3, 2), + mask = _useState4[0], + setMask = _useState4[1]; + var _usePromptSettings = (0, _usePromptSettings2.default)({ + aspectRatio: initialAspectRatio + }), + settings = _usePromptSettings.settings, + updateSettings = _usePromptSettings.updateSettings, + resetSettings = _usePromptSettings.resetSettings; + var _useImageActions = (0, _useImageActions2.default)(), + use = _useImageActions.use, + edit = _useImageActions.edit, + isUploading = _useImageActions.isLoading; + var _useOutPainting = (0, _useOutPainting2.default)(), + data = _useOutPainting.data, + send = _useOutPainting.send, + isGenerating = _useOutPainting.isLoading, + error = _useOutPainting.error, + reset = _useOutPainting.reset; + var isLoading = isGenerating || isUploading; + var generatedAspectRatio = (0, _react.useMemo)(function () { + return settings[_usePromptSettings2.IMAGE_RATIO]; + }, [data === null || data === void 0 ? void 0 : data.result]); + var hasGeneratedResult = !!(data !== null && data !== void 0 && data.result); + var handleSubmit = function handleSubmit(event) { + event.preventDefault(); + + // The fallback instruction should be hidden for the user. + var finalPrompt = prompt || 'Fill based on the surroundings'; + setGenerate(); + send({ + prompt: finalPrompt, + settings: settings, + image: editImage, + mask: mask + }); + }; + return /*#__PURE__*/_react.default.createElement(_view.default, null, /*#__PURE__*/_react.default.createElement(_view.default.Panel, null, /*#__PURE__*/_react.default.createElement(_view.default.BackButton, null), /*#__PURE__*/_react.default.createElement(_view.default.PanelHeading, { + primary: (0, _i18n.__)('Expand Image', 'elementor'), + secondary: (0, _i18n.__)('Position image in it’s new size to generate content around the edges.', 'elementor') + }), error && /*#__PURE__*/_react.default.createElement(_view.default.ErrorMessage, { + error: error, + onRetry: handleSubmit + }), /*#__PURE__*/_react.default.createElement(_imageForm.default, { + onSubmit: handleSubmit + }, /*#__PURE__*/_react.default.createElement(_imageRatioSelect.default, { + disabled: isLoading || hasGeneratedResult, + value: settings[_usePromptSettings2.IMAGE_RATIO], + onChange: function onChange(event) { + return updateSettings((0, _defineProperty2.default)({}, _usePromptSettings2.IMAGE_RATIO, event.target.value)); + } + }), /*#__PURE__*/_react.default.createElement(_ui.FormControl, { + sx: { + width: '100%', + mb: 2.5 + } + }, /*#__PURE__*/_react.default.createElement(_ui.Slider, { + marks: true, + id: "zoom", + name: "zoom", + max: 2, + min: 0.1, + step: 0.1, + color: "secondary", + defaultValue: 1, + disabled: isLoading || hasGeneratedResult, + valueLabelDisplay: "auto", + "aria-labelledby": "image-size-slider", + "aria-label": (0, _i18n.__)('Reference strength', 'elementor'), + onChange: function onChange(_, value) { + return updateSettings((0, _defineProperty2.default)({}, _usePromptSettings2.IMAGE_ZOOM, value)); + } + }), /*#__PURE__*/_react.default.createElement(_ui.Typography, { + id: "image-size-slider", + variant: "caption", + gutterBottom: true + }, (0, _i18n.__)('Original image size', 'elementor'))), /*#__PURE__*/_react.default.createElement(_promptField.default, { + value: prompt, + disabled: isLoading, + onChange: setPrompt, + placeholder: (0, _i18n.__)('Describe what you want to generate in the expended area (English only)', 'elementor') + }), data !== null && data !== void 0 && data.result ? /*#__PURE__*/_react.default.createElement(_ui.Stack, { + gap: 2, + sx: { + my: 2.5 + } + }, /*#__PURE__*/_react.default.createElement(_generateAgainSubmit.default, { + disabled: isLoading + }), /*#__PURE__*/_react.default.createElement(_newPromptButton.default, { + disabled: isLoading, + onClick: function onClick() { + resetSettings(); + setPrompt(''); + reset(); + } + })) : /*#__PURE__*/_react.default.createElement(_generateSubmit.default, { + disabled: isLoading + }))), /*#__PURE__*/_react.default.createElement(_view.default.Content, { + isGenerating: isLoading + }, hasGeneratedResult ? /*#__PURE__*/_react.default.createElement(_imagesDisplay.default, { + onUseImage: use, + onEditImage: edit, + images: data.result, + aspectRatio: generatedAspectRatio + }) : /*#__PURE__*/_react.default.createElement(_outPaintingContent.default, { + setMask: setMask, + editImage: editImage, + scale: settings[_usePromptSettings2.IMAGE_ZOOM], + aspectRatio: settings[_usePromptSettings2.IMAGE_RATIO] + }))); +}; +var _default = OutPainting; +exports["default"] = _default; + +/***/ }), + +/***/ "../modules/ai/assets/js/editor/pages/form-media/views/out-painting/out-painting-content.js": +/*!**************************************************************************************************!*\ + !*** ../modules/ai/assets/js/editor/pages/form-media/views/out-painting/out-painting-content.js ***! + \**************************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + + +var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js"); +var _typeof = __webpack_require__(/*! @babel/runtime/helpers/typeof */ "../node_modules/@babel/runtime/helpers/typeof.js"); +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; +var _react = _interopRequireWildcard(__webpack_require__(/*! react */ "react")); +var _regenerator = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/regenerator */ "../node_modules/@babel/runtime/regenerator/index.js")); +var _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ "../node_modules/@babel/runtime/helpers/asyncToGenerator.js")); +var _ui = __webpack_require__(/*! @elementor/ui */ "@elementor/ui"); +var _propTypes = _interopRequireDefault(__webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js")); +var _reactAvatarEditor = _interopRequireDefault(__webpack_require__(/*! react-avatar-editor */ "../node_modules/react-avatar-editor/dist/index.js")); +var _useImageSize2 = _interopRequireDefault(__webpack_require__(/*! ../../hooks/use-image-size */ "../modules/ai/assets/js/editor/pages/form-media/hooks/use-image-size.js")); +function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); } +function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; } +var OutPaintingContent = function OutPaintingContent(_ref) { + var scale = _ref.scale, + setMask = _ref.setMask, + editImage = _ref.editImage, + aspectRatio = _ref.aspectRatio; + var cropperRef = (0, _react.useRef)(); + var _useImageSize = (0, _useImageSize2.default)(aspectRatio), + width = _useImageSize.width, + height = _useImageSize.height; + var updateMask = /*#__PURE__*/function () { + var _ref2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() { + var imageDataURL; + return _regenerator.default.wrap(function _callee$(_context) { + while (1) switch (_context.prev = _context.next) { + case 0: + _context.next = 2; + return cropperRef.current.getImageScaledToCanvas().toDataURL(); + case 2: + imageDataURL = _context.sent; + setMask(imageDataURL); + case 4: + case "end": + return _context.stop(); + } + }, _callee); + })); + return function updateMask() { + return _ref2.apply(this, arguments); + }; + }(); + return /*#__PURE__*/_react.default.createElement(_ui.Stack, { + alignItems: 'center', + spacing: 0.5, + flexGrow: 1 + }, /*#__PURE__*/_react.default.createElement(_reactAvatarEditor.default, { + ref: cropperRef, + image: editImage.url, + style: { + backgroundImage: 'linear-gradient(45deg, #bbb 25%, transparent 25%), linear-gradient(-45deg, #bbb 25%, transparent 25%), linear-gradient(45deg, transparent 75%, #bbb 75%), linear-gradient(-45deg, transparent 75%, #bbb 75%)', + backgroundSize: '20px 20px', + backgroundPosition: '0 0, 0 10px, 10px -10px, -10px 0px', + outline: '2px dashed #000', + marginTop: '12px' + }, + color: [0, 0, 0, 0.9], + rotate: 0, + border: 0, + allowZoomOut: true, + backgroundColor: 'transparent', + showGrid: true, + onImageChange: function onImageChange() { + return updateMask(); + }, + onPositionChange: function onPositionChange() { + return updateMask(); + }, + width: width, + height: height, + scale: scale + })); +}; +OutPaintingContent.propTypes = { + scale: _propTypes.default.number.isRequired, + setMask: _propTypes.default.func.isRequired, + editImage: _propTypes.default.object.isRequired, + aspectRatio: _propTypes.default.string.isRequired +}; +var _default = OutPaintingContent; +exports["default"] = _default; + +/***/ }), + +/***/ "../modules/ai/assets/js/editor/pages/form-media/views/remove-background/hooks/use-remove-background.js": +/*!**************************************************************************************************************!*\ + !*** ../modules/ai/assets/js/editor/pages/form-media/views/remove-background/hooks/use-remove-background.js ***! + \**************************************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + + +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 _api = __webpack_require__(/*! ../../../../../api */ "../modules/ai/assets/js/editor/api/index.js"); +var _useImagePrompt = _interopRequireDefault(__webpack_require__(/*! ../../../hooks/use-image-prompt */ "../modules/ai/assets/js/editor/pages/form-media/hooks/use-image-prompt.js")); +var useRemoveBackground = function useRemoveBackground(initialValue) { + var fetchAction = function fetchAction(payload) { + return (0, _api.getImageToImageRemoveBackground)(payload); + }; + return (0, _useImagePrompt.default)(fetchAction, initialValue); +}; +var _default = useRemoveBackground; +exports["default"] = _default; + +/***/ }), + +/***/ "../modules/ai/assets/js/editor/pages/form-media/views/remove-background/index.js": +/*!****************************************************************************************!*\ + !*** ../modules/ai/assets/js/editor/pages/form-media/views/remove-background/index.js ***! + \****************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + + +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 _react = _interopRequireDefault(__webpack_require__(/*! react */ "react")); +var _ui = __webpack_require__(/*! @elementor/ui */ "@elementor/ui"); +var _i18n = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n"); +var _view = _interopRequireDefault(__webpack_require__(/*! ../../components/view */ "../modules/ai/assets/js/editor/pages/form-media/components/view.js")); +var _generateSubmit = _interopRequireDefault(__webpack_require__(/*! ../../components/generate-submit */ "../modules/ai/assets/js/editor/pages/form-media/components/generate-submit.js")); +var _imageForm = _interopRequireDefault(__webpack_require__(/*! ../../components/image-form */ "../modules/ai/assets/js/editor/pages/form-media/components/image-form.js")); +var _imagesDisplay = _interopRequireDefault(__webpack_require__(/*! ../../components/images-display */ "../modules/ai/assets/js/editor/pages/form-media/components/images-display.js")); +var _singleImagePreview = _interopRequireDefault(__webpack_require__(/*! ../../components/single-image-preview */ "../modules/ai/assets/js/editor/pages/form-media/components/single-image-preview.js")); +var _editImageContext = __webpack_require__(/*! ../../context/edit-image-context */ "../modules/ai/assets/js/editor/pages/form-media/context/edit-image-context.js"); +var _useImageActions2 = _interopRequireDefault(__webpack_require__(/*! ../../hooks/use-image-actions */ "../modules/ai/assets/js/editor/pages/form-media/hooks/use-image-actions.js")); +var _useRemoveBackground2 = _interopRequireDefault(__webpack_require__(/*! ./hooks/use-remove-background */ "../modules/ai/assets/js/editor/pages/form-media/views/remove-background/hooks/use-remove-background.js")); +var _newPromptButton = _interopRequireDefault(__webpack_require__(/*! ../../components/new-prompt-button */ "../modules/ai/assets/js/editor/pages/form-media/components/new-prompt-button.js")); +var _constants = __webpack_require__(/*! ../../constants */ "../modules/ai/assets/js/editor/pages/form-media/constants/index.js"); +var _locationContext = __webpack_require__(/*! ../../context/location-context */ "../modules/ai/assets/js/editor/pages/form-media/context/location-context.js"); +var _useImageSize2 = _interopRequireDefault(__webpack_require__(/*! ../../hooks/use-image-size */ "../modules/ai/assets/js/editor/pages/form-media/hooks/use-image-size.js")); +var _requestsIds = __webpack_require__(/*! ../../../../context/requests-ids */ "../modules/ai/assets/js/editor/context/requests-ids.js"); +var RemoveBackground = function RemoveBackground() { + var _useEditImage = (0, _editImageContext.useEditImage)(), + editImage = _useEditImage.editImage; + var _useRequestIds = (0, _requestsIds.useRequestIds)(), + setGenerate = _useRequestIds.setGenerate; + var _useImageActions = (0, _useImageActions2.default)(), + use = _useImageActions.use, + edit = _useImageActions.edit, + isUploading = _useImageActions.isLoading; + var _useRemoveBackground = (0, _useRemoveBackground2.default)(), + data = _useRemoveBackground.data, + send = _useRemoveBackground.send, + isGenerating = _useRemoveBackground.isLoading, + error = _useRemoveBackground.error; + var _useLocation = (0, _locationContext.useLocation)(), + navigate = _useLocation.navigate; + var isLoading = isGenerating || isUploading; + var _useImageSize = (0, _useImageSize2.default)(editImage.aspectRatio), + width = _useImageSize.width, + height = _useImageSize.height; + var handleSubmit = function handleSubmit(event) { + event.preventDefault(); + setGenerate(); + send({ + image: editImage + }); + }; + return /*#__PURE__*/_react.default.createElement(_view.default, null, /*#__PURE__*/_react.default.createElement(_view.default.Panel, null, /*#__PURE__*/_react.default.createElement(_view.default.BackButton, null), /*#__PURE__*/_react.default.createElement(_view.default.PanelHeading, { + primary: (0, _i18n.__)('Remove Background', 'elementor'), + secondary: (0, _i18n.__)('Create an image of the subject with a transparent background', 'elementor') + }), error && /*#__PURE__*/_react.default.createElement(_view.default.ErrorMessage, { + error: error, + onRetry: handleSubmit + }), /*#__PURE__*/_react.default.createElement(_imageForm.default, { + onSubmit: handleSubmit + }, data !== null && data !== void 0 && data.result ? /*#__PURE__*/_react.default.createElement(_newPromptButton.default, { + variant: "contained", + disabled: isLoading, + onClick: function onClick() { + return navigate(_constants.LOCATIONS.GENERATE); + } + }) : /*#__PURE__*/_react.default.createElement(_generateSubmit.default, { + disabled: isLoading + }, (0, _i18n.__)('Remove Background', 'elementor')))), /*#__PURE__*/_react.default.createElement(_view.default.Content, { + isGenerating: isLoading + }, data !== null && data !== void 0 && data.result ? /*#__PURE__*/_react.default.createElement(_ui.Box, null, /*#__PURE__*/_react.default.createElement(_imagesDisplay.default, { + transparentContainer: true, + onUseImage: use, + onEditImage: edit, + images: data.result, + aspectRatio: editImage.aspectRatio + })) : /*#__PURE__*/_react.default.createElement(_ui.Box, null, /*#__PURE__*/_react.default.createElement(_singleImagePreview.default, null, /*#__PURE__*/_react.default.createElement(_singleImagePreview.default.Image, { + src: editImage.url, + alt: editImage.alt, + style: { + width: width, + height: height + } + }))))); +}; +var _default = RemoveBackground; +exports["default"] = _default; + +/***/ }), + +/***/ "../modules/ai/assets/js/editor/pages/form-media/views/replace-background/hooks/use-replace-background.js": +/*!****************************************************************************************************************!*\ + !*** ../modules/ai/assets/js/editor/pages/form-media/views/replace-background/hooks/use-replace-background.js ***! + \****************************************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + + +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 _api = __webpack_require__(/*! ../../../../../api */ "../modules/ai/assets/js/editor/api/index.js"); +var _useImagePrompt = _interopRequireDefault(__webpack_require__(/*! ../../../hooks/use-image-prompt */ "../modules/ai/assets/js/editor/pages/form-media/hooks/use-image-prompt.js")); +var useReplaceBackground = function useReplaceBackground(initialValue) { + var fetchAction = function fetchAction(payload) { + return (0, _api.getImageToImageReplaceBackground)(payload); + }; + return (0, _useImagePrompt.default)(fetchAction, initialValue); +}; +var _default = useReplaceBackground; +exports["default"] = _default; + +/***/ }), + +/***/ "../modules/ai/assets/js/editor/pages/form-media/views/replace-background/index.js": +/*!*****************************************************************************************!*\ + !*** ../modules/ai/assets/js/editor/pages/form-media/views/replace-background/index.js ***! + \*****************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + + +var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js"); +var _typeof = __webpack_require__(/*! @babel/runtime/helpers/typeof */ "../node_modules/@babel/runtime/helpers/typeof.js"); +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; +var _react = _interopRequireWildcard(__webpack_require__(/*! react */ "react")); +var _slicedToArray2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/slicedToArray */ "../node_modules/@babel/runtime/helpers/slicedToArray.js")); +var _view = _interopRequireDefault(__webpack_require__(/*! ../../components/view */ "../modules/ai/assets/js/editor/pages/form-media/components/view.js")); +var _i18n = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n"); +var _generateSubmit = _interopRequireDefault(__webpack_require__(/*! ../../components/generate-submit */ "../modules/ai/assets/js/editor/pages/form-media/components/generate-submit.js")); +var _imageForm = _interopRequireDefault(__webpack_require__(/*! ../../components/image-form */ "../modules/ai/assets/js/editor/pages/form-media/components/image-form.js")); +var _imagesDisplay = _interopRequireDefault(__webpack_require__(/*! ../../components/images-display */ "../modules/ai/assets/js/editor/pages/form-media/components/images-display.js")); +var _singleImagePreview = _interopRequireDefault(__webpack_require__(/*! ../../components/single-image-preview */ "../modules/ai/assets/js/editor/pages/form-media/components/single-image-preview.js")); +var _editImageContext = __webpack_require__(/*! ../../context/edit-image-context */ "../modules/ai/assets/js/editor/pages/form-media/context/edit-image-context.js"); +var _useImageActions2 = _interopRequireDefault(__webpack_require__(/*! ../../hooks/use-image-actions */ "../modules/ai/assets/js/editor/pages/form-media/hooks/use-image-actions.js")); +var _useReplaceBackground2 = _interopRequireDefault(__webpack_require__(/*! ./hooks/use-replace-background */ "../modules/ai/assets/js/editor/pages/form-media/views/replace-background/hooks/use-replace-background.js")); +var _promptField = _interopRequireDefault(__webpack_require__(/*! ../../components/prompt-field */ "../modules/ai/assets/js/editor/pages/form-media/components/prompt-field.js")); +var _constants = __webpack_require__(/*! ../../constants */ "../modules/ai/assets/js/editor/pages/form-media/constants/index.js"); +var _newPromptButton = _interopRequireDefault(__webpack_require__(/*! ../../components/new-prompt-button */ "../modules/ai/assets/js/editor/pages/form-media/components/new-prompt-button.js")); +var _locationContext = __webpack_require__(/*! ../../context/location-context */ "../modules/ai/assets/js/editor/pages/form-media/context/location-context.js"); +var _requestsIds = __webpack_require__(/*! ../../../../context/requests-ids */ "../modules/ai/assets/js/editor/context/requests-ids.js"); +function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); } +function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; } +var ReplaceBackground = function ReplaceBackground() { + var _useState = (0, _react.useState)(''), + _useState2 = (0, _slicedToArray2.default)(_useState, 2), + prompt = _useState2[0], + setPrompt = _useState2[1]; + var _useRequestIds = (0, _requestsIds.useRequestIds)(), + setGenerate = _useRequestIds.setGenerate; + var _useEditImage = (0, _editImageContext.useEditImage)(), + editImage = _useEditImage.editImage; + var _useImageActions = (0, _useImageActions2.default)(), + use = _useImageActions.use, + edit = _useImageActions.edit, + isUploading = _useImageActions.isLoading; + var _useReplaceBackground = (0, _useReplaceBackground2.default)(), + data = _useReplaceBackground.data, + send = _useReplaceBackground.send, + isGenerating = _useReplaceBackground.isLoading, + error = _useReplaceBackground.error; + var _useLocation = (0, _locationContext.useLocation)(), + navigate = _useLocation.navigate; + var isLoading = isGenerating || isUploading; + var handleSubmit = function handleSubmit(event) { + event.preventDefault(); + setGenerate(); + send({ + prompt: prompt, + image: editImage + }); + }; + return /*#__PURE__*/_react.default.createElement(_view.default, null, /*#__PURE__*/_react.default.createElement(_view.default.Panel, null, /*#__PURE__*/_react.default.createElement(_view.default.BackButton, null), /*#__PURE__*/_react.default.createElement(_view.default.PanelHeading, { + primary: (0, _i18n.__)('Replace Background', 'elementor'), + secondary: (0, _i18n.__)('Generate a new background with a prompt.', 'elementor') + }), error && /*#__PURE__*/_react.default.createElement(_view.default.ErrorMessage, { + error: error, + onRetry: handleSubmit + }), /*#__PURE__*/_react.default.createElement(_imageForm.default, { + onSubmit: handleSubmit + }, /*#__PURE__*/_react.default.createElement(_promptField.default, { + value: prompt, + disabled: isLoading, + onChange: setPrompt, + placeholder: (0, _i18n.__)('Describe what you want to generate in the background (English only)', 'elementor') + }), /*#__PURE__*/_react.default.createElement(_generateSubmit.default, { + disabled: isLoading || '' === prompt, + color: data !== null && data !== void 0 && data.result ? 'secondary' : 'primary' + }, data !== null && data !== void 0 && data.result ? (0, _i18n.__)('Generate Again', 'elementor') : (0, _i18n.__)('Replace Background', 'elementor')), (data === null || data === void 0 ? void 0 : data.result) && /*#__PURE__*/_react.default.createElement(_newPromptButton.default, { + disabled: isLoading, + onClick: function onClick() { + return navigate(_constants.LOCATIONS.GENERATE); + } + }))), /*#__PURE__*/_react.default.createElement(_view.default.Content, { + isGenerating: isLoading + }, data !== null && data !== void 0 && data.result ? /*#__PURE__*/_react.default.createElement(_imagesDisplay.default, { + onUseImage: use, + onEditImage: edit, + images: data.result, + aspectRatio: editImage.aspectRatio + }) : /*#__PURE__*/_react.default.createElement(_singleImagePreview.default, null, /*#__PURE__*/_react.default.createElement(_singleImagePreview.default.Image, { + src: editImage.url, + alt: editImage.alt, + style: { + width: editImage.width, + height: editImage.height + } + })))); +}; +var _default = ReplaceBackground; +exports["default"] = _default; + +/***/ }), + +/***/ "../modules/ai/assets/js/editor/pages/form-media/views/resize/hooks/use-resize.js": +/*!****************************************************************************************!*\ + !*** ../modules/ai/assets/js/editor/pages/form-media/views/resize/hooks/use-resize.js ***! + \****************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + + +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 _api = __webpack_require__(/*! ../../../../../api */ "../modules/ai/assets/js/editor/api/index.js"); +var _useImagePrompt = _interopRequireDefault(__webpack_require__(/*! ../../../hooks/use-image-prompt */ "../modules/ai/assets/js/editor/pages/form-media/hooks/use-image-prompt.js")); +var useResize = function useResize(initialValue) { + var fetchAction = function fetchAction(payload) { + return (0, _api.getImageToImageUpscale)(payload); + }; + return (0, _useImagePrompt.default)(fetchAction, initialValue); +}; +var _default = useResize; +exports["default"] = _default; + +/***/ }), + +/***/ "../modules/ai/assets/js/editor/pages/form-media/views/resize/index.js": +/*!*****************************************************************************!*\ + !*** ../modules/ai/assets/js/editor/pages/form-media/views/resize/index.js ***! + \*****************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + + +var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js"); +var _typeof = __webpack_require__(/*! @babel/runtime/helpers/typeof */ "../node_modules/@babel/runtime/helpers/typeof.js"); +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; +var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react")); +var _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/defineProperty */ "../node_modules/@babel/runtime/helpers/defineProperty.js")); +var _ui = __webpack_require__(/*! @elementor/ui */ "@elementor/ui"); +var _i18n = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n"); +var _view = _interopRequireDefault(__webpack_require__(/*! ../../components/view */ "../modules/ai/assets/js/editor/pages/form-media/components/view.js")); +var _generateSubmit = _interopRequireDefault(__webpack_require__(/*! ../../components/generate-submit */ "../modules/ai/assets/js/editor/pages/form-media/components/generate-submit.js")); +var _imageForm = _interopRequireDefault(__webpack_require__(/*! ../../components/image-form */ "../modules/ai/assets/js/editor/pages/form-media/components/image-form.js")); +var _imagesDisplay = _interopRequireDefault(__webpack_require__(/*! ../../components/images-display */ "../modules/ai/assets/js/editor/pages/form-media/components/images-display.js")); +var _singleImagePreview = _interopRequireDefault(__webpack_require__(/*! ../../components/single-image-preview */ "../modules/ai/assets/js/editor/pages/form-media/components/single-image-preview.js")); +var _editImageContext = __webpack_require__(/*! ../../context/edit-image-context */ "../modules/ai/assets/js/editor/pages/form-media/context/edit-image-context.js"); +var _useResize2 = _interopRequireDefault(__webpack_require__(/*! ./hooks/use-resize */ "../modules/ai/assets/js/editor/pages/form-media/views/resize/hooks/use-resize.js")); +var _useImageActions2 = _interopRequireDefault(__webpack_require__(/*! ../../hooks/use-image-actions */ "../modules/ai/assets/js/editor/pages/form-media/hooks/use-image-actions.js")); +var _usePromptSettings2 = _interopRequireWildcard(__webpack_require__(/*! ../../hooks/use-prompt-settings */ "../modules/ai/assets/js/editor/pages/form-media/hooks/use-prompt-settings.js")); +var _requestsIds = __webpack_require__(/*! ../../../../context/requests-ids */ "../modules/ai/assets/js/editor/context/requests-ids.js"); +function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); } +function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; } +var Resize = function Resize() { + var _useEditImage = (0, _editImageContext.useEditImage)(), + editImage = _useEditImage.editImage, + initialEditImageWidth = _useEditImage.width; + var _useRequestIds = (0, _requestsIds.useRequestIds)(), + setGenerate = _useRequestIds.setGenerate; + var _useImageActions = (0, _useImageActions2.default)(), + use = _useImageActions.use, + edit = _useImageActions.edit, + isUploading = _useImageActions.isLoading; + var _usePromptSettings = (0, _usePromptSettings2.default)(), + settings = _usePromptSettings.settings, + updateSettings = _usePromptSettings.updateSettings; + var _useResize = (0, _useResize2.default)(), + data = _useResize.data, + send = _useResize.send, + isGenerating = _useResize.isLoading, + error = _useResize.error; + var isLoading = isGenerating || isUploading; + var handleSubmit = function handleSubmit(event) { + event.preventDefault(); + setGenerate(); + send({ + promptSettings: settings, + image: editImage + }); + }; + return /*#__PURE__*/_react.default.createElement(_view.default, null, /*#__PURE__*/_react.default.createElement(_view.default.Panel, null, /*#__PURE__*/_react.default.createElement(_view.default.BackButton, null), /*#__PURE__*/_react.default.createElement(_view.default.PanelHeading, { + primary: (0, _i18n.__)('Resize', 'elementor'), + secondary: (0, _i18n.__)('Make an image larger and improve it’s resolution.', 'elementor') + }), error && /*#__PURE__*/_react.default.createElement(_view.default.ErrorMessage, { + error: error, + onRetry: handleSubmit + }), /*#__PURE__*/_react.default.createElement(_imageForm.default, { + onSubmit: handleSubmit + }, /*#__PURE__*/_react.default.createElement(_ui.Stack, { + spacing: 0.2 + }, /*#__PURE__*/_react.default.createElement(_ui.Box, { + display: "flex", + justifyContent: "space-between", + alignItems: "center" + }, /*#__PURE__*/_react.default.createElement(_ui.Typography, { + variant: "caption" + }, "512px"), /*#__PURE__*/_react.default.createElement(_ui.Typography, { + variant: "caption" + }, "2048px")), /*#__PURE__*/_react.default.createElement(_ui.Slider, { + marks: true, + step: 64, + min: 512, + max: 2048, + id: "upscale_to", + color: "secondary", + name: "upscale_to", + disabled: isLoading, + defaultValue: initialEditImageWidth, + valueLabelDisplay: "auto", + "aria-label": (0, _i18n.__)('Upscale to', 'elementor'), + onChange: function onChange(_, value) { + return updateSettings((0, _defineProperty2.default)({}, _usePromptSettings2.IMAGE_UPSCALE, value)); + } + }), /*#__PURE__*/_react.default.createElement(_ui.Box, { + display: "flex", + justifyContent: "space-between", + alignItems: "center" + }, /*#__PURE__*/_react.default.createElement(_ui.Typography, { + variant: "caption" + }, (0, _i18n.__)('Current', 'elementor')), /*#__PURE__*/_react.default.createElement(_ui.Typography, { + variant: "caption" + }, (0, _i18n.__)('Output', 'elementor')))), /*#__PURE__*/_react.default.createElement(_generateSubmit.default, { + disabled: isLoading + }))), /*#__PURE__*/_react.default.createElement(_view.default.Content, { + isGenerating: isLoading + }, data !== null && data !== void 0 && data.result ? /*#__PURE__*/_react.default.createElement(_imagesDisplay.default, { + onUseImage: use, + onEditImage: edit, + images: data.result, + aspectRatio: editImage.aspectRatio + }) : /*#__PURE__*/_react.default.createElement(_singleImagePreview.default, null, /*#__PURE__*/_react.default.createElement(_singleImagePreview.default.Image, { + src: editImage.url, + alt: editImage.alt, + style: { + width: editImage.width, + height: editImage.height + } + })))); +}; +var _default = Resize; +exports["default"] = _default; + +/***/ }), + +/***/ "../modules/ai/assets/js/editor/pages/form-media/views/variations/components/variations-placeholder.js": +/*!*************************************************************************************************************!*\ + !*** ../modules/ai/assets/js/editor/pages/form-media/views/variations/components/variations-placeholder.js ***! + \*************************************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + + +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 _react = _interopRequireDefault(__webpack_require__(/*! react */ "react")); +var _ui = __webpack_require__(/*! @elementor/ui */ "@elementor/ui"); +var _icons = __webpack_require__(/*! @elementor/icons */ "@elementor/icons"); +var VariationsPlaceholder = function VariationsPlaceholder() { + return /*#__PURE__*/_react.default.createElement(_ui.Box, { + sx: { + overflowY: 'scroll' + }, + flexGrow: 1 + }, /*#__PURE__*/_react.default.createElement(_ui.Box, { + display: "grid", + gridTemplateColumns: "repeat(2, 1fr)", + gap: 3 + }, Array(4).fill(true).map(function (_, index) { + return /*#__PURE__*/_react.default.createElement(_ui.Box, { + key: "placeholder-".concat(index), + display: "flex", + justifyContent: "center", + alignItems: "center", + sx: { + bgcolor: 'action.selected', + height: 336 + } + }, /*#__PURE__*/_react.default.createElement(_icons.AIIcon, { + color: "secondary", + sx: { + fontSize: 36 + } + })); + }))); +}; +VariationsPlaceholder.propTypes = {}; +var _default = VariationsPlaceholder; +exports["default"] = _default; + +/***/ }), + +/***/ "../modules/ai/assets/js/editor/pages/form-media/views/variations/hooks/use-image-to-image.js": +/*!****************************************************************************************************!*\ + !*** ../modules/ai/assets/js/editor/pages/form-media/views/variations/hooks/use-image-to-image.js ***! + \****************************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + + +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 _api = __webpack_require__(/*! ../../../../../api */ "../modules/ai/assets/js/editor/api/index.js"); +var _useImagePrompt = _interopRequireDefault(__webpack_require__(/*! ../../../hooks/use-image-prompt */ "../modules/ai/assets/js/editor/pages/form-media/hooks/use-image-prompt.js")); +var useImageToImage = function useImageToImage(initialValue) { + var fetchAction = function fetchAction(payload) { + return (0, _api.getImageToImageGeneration)(payload); + }; + return (0, _useImagePrompt.default)(fetchAction, initialValue); +}; +var _default = useImageToImage; +exports["default"] = _default; + +/***/ }), + +/***/ "../modules/ai/assets/js/editor/pages/form-media/views/variations/index.js": +/*!*********************************************************************************!*\ + !*** ../modules/ai/assets/js/editor/pages/form-media/views/variations/index.js ***! + \*********************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + + +var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js"); +var _typeof = __webpack_require__(/*! @babel/runtime/helpers/typeof */ "../node_modules/@babel/runtime/helpers/typeof.js"); +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; +var _react = _interopRequireWildcard(__webpack_require__(/*! react */ "react")); +var _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/defineProperty */ "../node_modules/@babel/runtime/helpers/defineProperty.js")); +var _slicedToArray2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/slicedToArray */ "../node_modules/@babel/runtime/helpers/slicedToArray.js")); +var _ui = __webpack_require__(/*! @elementor/ui */ "@elementor/ui"); +var _i18n = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n"); +var _view = _interopRequireDefault(__webpack_require__(/*! ../../components/view */ "../modules/ai/assets/js/editor/pages/form-media/components/view.js")); +var _imageForm = _interopRequireDefault(__webpack_require__(/*! ../../components/image-form */ "../modules/ai/assets/js/editor/pages/form-media/components/image-form.js")); +var _imageStrengthSlider = _interopRequireDefault(__webpack_require__(/*! ../../components/image-strength-slider */ "../modules/ai/assets/js/editor/pages/form-media/components/image-strength-slider.js")); +var _promptField = _interopRequireDefault(__webpack_require__(/*! ../../components/prompt-field */ "../modules/ai/assets/js/editor/pages/form-media/components/prompt-field.js")); +var _imageTypeSelect = _interopRequireDefault(__webpack_require__(/*! ../../components/image-type-select */ "../modules/ai/assets/js/editor/pages/form-media/components/image-type-select.js")); +var _imageStyleSelect = _interopRequireDefault(__webpack_require__(/*! ../../components/image-style-select */ "../modules/ai/assets/js/editor/pages/form-media/components/image-style-select.js")); +var _imageRatioSelect = _interopRequireDefault(__webpack_require__(/*! ../../components/image-ratio-select */ "../modules/ai/assets/js/editor/pages/form-media/components/image-ratio-select.js")); +var _generateAgainSubmit = _interopRequireDefault(__webpack_require__(/*! ../../components/generate-again-submit */ "../modules/ai/assets/js/editor/pages/form-media/components/generate-again-submit.js")); +var _generateImagesSubmit = _interopRequireDefault(__webpack_require__(/*! ../../components/generate-images-submit */ "../modules/ai/assets/js/editor/pages/form-media/components/generate-images-submit.js")); +var _imagesDisplay = _interopRequireDefault(__webpack_require__(/*! ../../components/images-display */ "../modules/ai/assets/js/editor/pages/form-media/components/images-display.js")); +var _variationsPlaceholder = _interopRequireDefault(__webpack_require__(/*! ./components/variations-placeholder */ "../modules/ai/assets/js/editor/pages/form-media/views/variations/components/variations-placeholder.js")); +var _useImageToImage2 = _interopRequireDefault(__webpack_require__(/*! ./hooks/use-image-to-image */ "../modules/ai/assets/js/editor/pages/form-media/views/variations/hooks/use-image-to-image.js")); +var _useImageActions2 = _interopRequireDefault(__webpack_require__(/*! ../../hooks/use-image-actions */ "../modules/ai/assets/js/editor/pages/form-media/hooks/use-image-actions.js")); +var _editImageContext = __webpack_require__(/*! ../../context/edit-image-context */ "../modules/ai/assets/js/editor/pages/form-media/context/edit-image-context.js"); +var _usePromptSettings2 = _interopRequireWildcard(__webpack_require__(/*! ../../hooks/use-prompt-settings */ "../modules/ai/assets/js/editor/pages/form-media/hooks/use-prompt-settings.js")); +var _requestsIds = __webpack_require__(/*! ../../../../context/requests-ids */ "../modules/ai/assets/js/editor/context/requests-ids.js"); +function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); } +function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; } +var IMAGE_WEIGHT_DEFAULT = 45; +var Variations = function Variations() { + var _data$result; + var _useState = (0, _react.useState)(''), + _useState2 = (0, _slicedToArray2.default)(_useState, 2), + prompt = _useState2[0], + setPrompt = _useState2[1]; + var _useRequestIds = (0, _requestsIds.useRequestIds)(), + setGenerate = _useRequestIds.setGenerate; + var _useEditImage = (0, _editImageContext.useEditImage)(), + editImage = _useEditImage.editImage, + initialAspectRatio = _useEditImage.aspectRatio; + var _usePromptSettings = (0, _usePromptSettings2.default)({ + aspectRatio: initialAspectRatio, + imageWeight: IMAGE_WEIGHT_DEFAULT + }), + settings = _usePromptSettings.settings, + updateSettings = _usePromptSettings.updateSettings; + var _useImageToImage = (0, _useImageToImage2.default)(), + data = _useImageToImage.data, + send = _useImageToImage.send, + isGenerating = _useImageToImage.isLoading, + error = _useImageToImage.error; + var _useImageActions = (0, _useImageActions2.default)(), + use = _useImageActions.use, + edit = _useImageActions.edit, + isUploading = _useImageActions.isLoading; + var isLoading = isGenerating || isUploading; + var generatedAspectRatio = (0, _react.useMemo)(function () { + return settings[_usePromptSettings2.IMAGE_RATIO]; + }, [data === null || data === void 0 ? void 0 : data.result]); + var handleSubmit = function handleSubmit(event) { + event.preventDefault(); + setGenerate(); + send({ + prompt: prompt, + settings: settings, + image: editImage + }); + }; + return /*#__PURE__*/_react.default.createElement(_view.default, null, /*#__PURE__*/_react.default.createElement(_view.default.Panel, null, /*#__PURE__*/_react.default.createElement(_view.default.BackButton, null), /*#__PURE__*/_react.default.createElement(_view.default.PanelHeading, { + primary: (0, _i18n.__)('Variations', 'elementor'), + secondary: (0, _i18n.__)('Create new versions of the original image.', 'elementor') + }), error && /*#__PURE__*/_react.default.createElement(_view.default.ErrorMessage, { + error: error, + onRetry: handleSubmit + }), /*#__PURE__*/_react.default.createElement(_imageForm.default, { + onSubmit: handleSubmit + }, /*#__PURE__*/_react.default.createElement(_ui.Box, { + sx: { + display: 'flex', + alignItems: 'center', + justifyContent: 'center', + bgcolor: 'action.selected' + } + }, /*#__PURE__*/_react.default.createElement("img", { + src: (editImage === null || editImage === void 0 ? void 0 : editImage.image_url) || (editImage === null || editImage === void 0 ? void 0 : editImage.url), + alt: prompt, + style: { + width: 'auto', + height: 'auto', + maxWidth: '100%', + maxHeight: 166, + objectFit: 'contained' + } + })), /*#__PURE__*/_react.default.createElement(_imageStrengthSlider.default, { + disabled: isLoading, + defaultValue: IMAGE_WEIGHT_DEFAULT, + onChange: function onChange(event) { + return updateSettings((0, _defineProperty2.default)({}, _usePromptSettings2.IMAGE_STRENGTH, event.target.value)); + } + }), /*#__PURE__*/_react.default.createElement(_promptField.default, { + value: prompt, + disabled: isLoading, + placeholder: (0, _i18n.__)('describe your image', 'elementor'), + onChange: setPrompt + }), /*#__PURE__*/_react.default.createElement(_imageTypeSelect.default, { + disabled: isLoading, + value: settings[_usePromptSettings2.IMAGE_TYPE], + onChange: function onChange(event) { + return updateSettings((0, _defineProperty2.default)({}, _usePromptSettings2.IMAGE_TYPE, event.target.value)); + } + }), /*#__PURE__*/_react.default.createElement(_imageStyleSelect.default, { + type: settings[_usePromptSettings2.IMAGE_TYPE], + value: settings[_usePromptSettings2.IMAGE_STYLE], + disabled: isLoading || !settings[_usePromptSettings2.IMAGE_TYPE] || false, + onChange: function onChange(event) { + return updateSettings((0, _defineProperty2.default)({}, _usePromptSettings2.IMAGE_STYLE, event.target.value)); + } + }), /*#__PURE__*/_react.default.createElement(_imageRatioSelect.default, { + disabled: isLoading, + value: settings[_usePromptSettings2.IMAGE_RATIO], + onChange: function onChange(event) { + return updateSettings((0, _defineProperty2.default)({}, _usePromptSettings2.IMAGE_RATIO, event.target.value)); + } + }), /*#__PURE__*/_react.default.createElement(_ui.Stack, { + gap: 2, + sx: { + my: 2.5 + } + }, (data === null || data === void 0 ? void 0 : (_data$result = data.result) === null || _data$result === void 0 ? void 0 : _data$result.length) > 0 ? /*#__PURE__*/_react.default.createElement(_generateAgainSubmit.default, { + disabled: isLoading || '' === prompt + }) : /*#__PURE__*/_react.default.createElement(_generateImagesSubmit.default, { + disabled: isLoading || '' === prompt + })))), /*#__PURE__*/_react.default.createElement(_view.default.Content, { + isGenerating: isLoading + }, data !== null && data !== void 0 && data.result ? /*#__PURE__*/_react.default.createElement(_imagesDisplay.default, { + images: data.result, + aspectRatio: generatedAspectRatio, + onUseImage: use, + onEditImage: edit + }) : /*#__PURE__*/_react.default.createElement(_variationsPlaceholder.default, null))); +}; +Variations.propTypes = {}; +var _default = Variations; +exports["default"] = _default; + +/***/ }), + +/***/ "../modules/ai/assets/js/editor/pages/form-text/index.js": +/*!***************************************************************!*\ + !*** ../modules/ai/assets/js/editor/pages/form-text/index.js ***! + \***************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + + +var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js"); +var _typeof = __webpack_require__(/*! @babel/runtime/helpers/typeof */ "../node_modules/@babel/runtime/helpers/typeof.js"); +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; +var _react = _interopRequireWildcard(__webpack_require__(/*! react */ "react")); +var _regenerator = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/regenerator */ "../node_modules/@babel/runtime/regenerator/index.js")); +var _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ "../node_modules/@babel/runtime/helpers/asyncToGenerator.js")); +var _slicedToArray2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/slicedToArray */ "../node_modules/@babel/runtime/helpers/slicedToArray.js")); +var _ui = __webpack_require__(/*! @elementor/ui */ "@elementor/ui"); +var _i18n = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n"); +var _propTypes = _interopRequireDefault(__webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js")); +var _icons = __webpack_require__(/*! @elementor/icons */ "@elementor/icons"); +var _loader = _interopRequireDefault(__webpack_require__(/*! ../../components/loader */ "../modules/ai/assets/js/editor/components/loader.js")); +var _promptSearch = _interopRequireDefault(__webpack_require__(/*! ../../components/prompt-search */ "../modules/ai/assets/js/editor/components/prompt-search.js")); +var _textarea = _interopRequireDefault(__webpack_require__(/*! ../../components/textarea */ "../modules/ai/assets/js/editor/components/textarea.js")); +var _promptSuggestions = _interopRequireDefault(__webpack_require__(/*! ../../components/prompt-suggestions */ "../modules/ai/assets/js/editor/components/prompt-suggestions.js")); +var _promptLibraryLink = _interopRequireDefault(__webpack_require__(/*! ../../components/prompt-library-link */ "../modules/ai/assets/js/editor/components/prompt-library-link.js")); +var _promptActionSelection = _interopRequireDefault(__webpack_require__(/*! ../../components/prompt-action-selection */ "../modules/ai/assets/js/editor/components/prompt-action-selection.js")); +var _generateButton = _interopRequireDefault(__webpack_require__(/*! ../../components/generate-button */ "../modules/ai/assets/js/editor/components/generate-button.js")); +var _promptAction = _interopRequireDefault(__webpack_require__(/*! ../../components/prompt-action */ "../modules/ai/assets/js/editor/components/prompt-action.js")); +var _promptErrorMessage = _interopRequireDefault(__webpack_require__(/*! ../../components/prompt-error-message */ "../modules/ai/assets/js/editor/components/prompt-error-message.js")); +var _useTextPrompt2 = _interopRequireDefault(__webpack_require__(/*! ../../hooks/use-text-prompt */ "../modules/ai/assets/js/editor/hooks/use-text-prompt.js")); +var _actionsData = __webpack_require__(/*! ../../actions-data */ "../modules/ai/assets/js/editor/actions-data.js"); +var _promptHistoryActionContext = __webpack_require__(/*! ../../components/prompt-history/context/prompt-history-action-context */ "../modules/ai/assets/js/editor/components/prompt-history/context/prompt-history-action-context.js"); +var _requestsIds = __webpack_require__(/*! ../../context/requests-ids */ "../modules/ai/assets/js/editor/context/requests-ids.js"); +var _voicePromotionAlert = __webpack_require__(/*! ../../components/voice-promotion-alert */ "../modules/ai/assets/js/editor/components/voice-promotion-alert.js"); +function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); } +function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; } +var promptActions = [{ + label: (0, _i18n.__)('Simplify language', 'elementor'), + icon: /*#__PURE__*/_react.default.createElement(_icons.MessageIcon, { + fontSize: "small" + }), + value: 'Simplify the language of the following message' +}, { + label: (0, _i18n.__)('Make it longer', 'elementor'), + icon: /*#__PURE__*/_react.default.createElement(_icons.ExpandIcon, { + fontSize: "small" + }), + value: 'Make the following message longer' +}, { + label: (0, _i18n.__)('Make it shorter', 'elementor'), + icon: /*#__PURE__*/_react.default.createElement(_icons.ShrinkIcon, { + fontSize: "small" + }), + value: 'Make the following message shorter' +}, { + label: (0, _i18n.__)('Fix spelling & grammar', 'elementor'), + icon: /*#__PURE__*/_react.default.createElement(_icons.AIIcon, { + fontSize: "small" + }), + value: 'Fix the spelling and grammar of the following message' +}]; +var promptInstructions = [{ + label: (0, _i18n.__)('Change tone', 'elementor'), + options: _actionsData.vocalTones, + getInstruction: function getInstruction(value) { + return "Change the tone of the following message to ".concat(value); + } +}, { + label: (0, _i18n.__)('Translate to', 'elementor'), + options: _actionsData.translateLanguages, + getInstruction: function getInstruction(value) { + return "Translate the following message to ".concat(value); + } +}]; +var FormText = function FormText(_ref) { + var type = _ref.type, + onClose = _ref.onClose, + getControlValue = _ref.getControlValue, + setControlValue = _ref.setControlValue, + additionalOptions = _ref.additionalOptions, + credits = _ref.credits, + children = _ref.children; + var initialValue = getControlValue() === (additionalOptions === null || additionalOptions === void 0 ? void 0 : additionalOptions.defaultValue) ? '' : getControlValue(); + var _useTextPrompt = (0, _useTextPrompt2.default)({ + result: initialValue, + credits: credits + }), + data = _useTextPrompt.data, + isLoading = _useTextPrompt.isLoading, + error = _useTextPrompt.error, + setResult = _useTextPrompt.setResult, + reset = _useTextPrompt.reset, + send = _useTextPrompt.send, + sendUsageData = _useTextPrompt.sendUsageData; + var _useState = (0, _react.useState)(''), + _useState2 = (0, _slicedToArray2.default)(_useState, 2), + prompt = _useState2[0], + setPrompt = _useState2[1]; + var _useRequestIds = (0, _requestsIds.useRequestIds)(), + setGenerate = _useRequestIds.setGenerate; + (0, _promptHistoryActionContext.useSubscribeOnPromptHistoryAction)([{ + type: _promptHistoryActionContext.ACTION_TYPES.REUSE, + handler: function handler(action) { + reset(); + setPrompt(action.data); + } + }, { + type: _promptHistoryActionContext.ACTION_TYPES.EDIT, + handler: function handler(action) { + setResult(action.data); + } + }]); + var searchField = (0, _react.useRef)(null); + var resultField = (0, _react.useRef)(null); + var lastRun = (0, _react.useRef)(function () {}); + var autocompleteItems = 'textarea' === type ? _actionsData.textareaAutocomplete : _actionsData.textAutocomplete; + var showSuggestions = !prompt; + var handleSubmit = function handleSubmit(event) { + event.preventDefault(); + setGenerate(); + lastRun.current = function () { + return send({ + prompt: prompt + }); + }; + lastRun.current(); + }; + var handleCustomInstruction = /*#__PURE__*/function () { + var _ref2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(instruction) { + return _regenerator.default.wrap(function _callee$(_context) { + while (1) switch (_context.prev = _context.next) { + case 0: + setGenerate(); + lastRun.current = function () { + return send({ + input: resultField.current.value, + instruction: instruction + }); + }; + lastRun.current(); + case 3: + case "end": + return _context.stop(); + } + }, _callee); + })); + return function handleCustomInstruction(_x) { + return _ref2.apply(this, arguments); + }; + }(); + var handleSuggestion = function handleSuggestion(suggestion) { + setPrompt(suggestion + ' '); + searchField.current.focus(); + }; + var applyPrompt = function applyPrompt() { + sendUsageData(); + setControlValue(resultField.current.value); + onClose(); + }; + if (isLoading) { + return /*#__PURE__*/_react.default.createElement(_loader.default, null); + } + return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, error && /*#__PURE__*/_react.default.createElement(_promptErrorMessage.default, { + error: error, + onRetry: lastRun.current, + sx: { + mb: 2.5 + } + }), children, !data.result && /*#__PURE__*/_react.default.createElement(_ui.Box, { + component: "form", + onSubmit: handleSubmit + }, /*#__PURE__*/_react.default.createElement(_ui.Box, { + sx: { + mb: 2.5 + } + }, /*#__PURE__*/_react.default.createElement(_promptSearch.default, { + ref: searchField, + placeholder: (0, _i18n.__)('Describe the text and tone you want to use...', 'elementor'), + name: "prompt", + value: prompt, + onChange: function onChange(event) { + return setPrompt(event.target.value); + } + })), showSuggestions && /*#__PURE__*/_react.default.createElement(_promptSuggestions.default, { + suggestions: autocompleteItems, + onSelect: handleSuggestion, + suggestionFilter: function suggestionFilter(suggestion) { + return suggestion + '...'; + } + }, /*#__PURE__*/_react.default.createElement(_promptLibraryLink.default, { + libraryLink: "https://go.elementor.com/ai-prompt-library-text/" + })), /*#__PURE__*/_react.default.createElement(_ui.Stack, { + direction: "row", + alignItems: "center", + sx: { + py: 1.5, + mt: 4 + } + }, /*#__PURE__*/_react.default.createElement(_ui.Stack, { + direction: "row", + justifyContent: "flex-end", + flexGrow: 1 + }, /*#__PURE__*/_react.default.createElement(_generateButton.default, null, (0, _i18n.__)('Generate text', 'elementor'))))), data.result && /*#__PURE__*/_react.default.createElement(_ui.Box, { + sx: { + mt: 1 + } + }, /*#__PURE__*/_react.default.createElement(_textarea.default, { + fullWidth: true, + ref: resultField, + value: data.result, + helperText: (0, _i18n.__)('Text generated by AI may be inaccurate or offensive.', 'elementor'), + onChange: function onChange(event) { + return setResult(event.target.value); + } + }), /*#__PURE__*/_react.default.createElement(_ui.Grid, { + container: true, + spacing: 1, + sx: { + mt: 2.5 + } + }, promptActions.map(function (_ref3) { + var label = _ref3.label, + icon = _ref3.icon, + value = _ref3.value; + return /*#__PURE__*/_react.default.createElement(_ui.Grid, { + item: true, + key: label + }, /*#__PURE__*/_react.default.createElement(_promptAction.default, { + label: label, + icon: icon, + onClick: function onClick() { + return handleCustomInstruction(value); + } + })); + })), /*#__PURE__*/_react.default.createElement(_ui.Stack, { + direction: "row", + alignItems: "center", + spacing: 1, + sx: { + mt: 2.5 + } + }, promptInstructions.map(function (_ref4) { + var label = _ref4.label, + options = _ref4.options, + getInstruction = _ref4.getInstruction; + return /*#__PURE__*/_react.default.createElement(_promptActionSelection.default, { + key: label, + label: label, + options: options, + onChange: function onChange(event) { + return handleCustomInstruction(getInstruction(event.target.value)); + } + }); + })), /*#__PURE__*/_react.default.createElement(_voicePromotionAlert.VoicePromotionAlert, { + introductionKey: "ai-context-text-promotion", + sx: { + mb: 2 + } + }), /*#__PURE__*/_react.default.createElement(_ui.Stack, { + direction: "row", + alignItems: "center", + sx: { + my: 1 + } + }, /*#__PURE__*/_react.default.createElement(_ui.Stack, { + direction: "row", + gap: 1, + justifyContent: "flex-end", + flexGrow: 1 + }, /*#__PURE__*/_react.default.createElement(_ui.Button, { + size: "small", + color: "secondary", + variant: "text", + onClick: reset + }, (0, _i18n.__)('New prompt', 'elementor')), /*#__PURE__*/_react.default.createElement(_ui.Button, { + size: "small", + variant: "contained", + color: "primary", + onClick: applyPrompt + }, (0, _i18n.__)('Use text', 'elementor')))))); +}; +FormText.propTypes = { + type: _propTypes.default.string.isRequired, + controlType: _propTypes.default.string, + onClose: _propTypes.default.func.isRequired, + getControlValue: _propTypes.default.func.isRequired, + setControlValue: _propTypes.default.func.isRequired, + additionalOptions: _propTypes.default.object, + credits: _propTypes.default.number, + usagePercentage: _propTypes.default.number, + children: _propTypes.default.node +}; +var _default = FormText; +exports["default"] = _default; + +/***/ }), + +/***/ "../modules/ai/assets/js/editor/pages/get-started/index.js": +/*!*****************************************************************!*\ + !*** ../modules/ai/assets/js/editor/pages/get-started/index.js ***! + \*****************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + + +var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js"); +var _typeof = __webpack_require__(/*! @babel/runtime/helpers/typeof */ "../node_modules/@babel/runtime/helpers/typeof.js"); +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; +var _react = _interopRequireWildcard(__webpack_require__(/*! react */ "react")); +var _regenerator = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/regenerator */ "../node_modules/@babel/runtime/regenerator/index.js")); +var _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ "../node_modules/@babel/runtime/helpers/asyncToGenerator.js")); +var _slicedToArray2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/slicedToArray */ "../node_modules/@babel/runtime/helpers/slicedToArray.js")); +var _ui = __webpack_require__(/*! @elementor/ui */ "@elementor/ui"); +var _i18n = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n"); +var _propTypes = _interopRequireDefault(__webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js")); +var _api = __webpack_require__(/*! ../../api */ "../modules/ai/assets/js/editor/api/index.js"); +var _icons = __webpack_require__(/*! @elementor/icons */ "@elementor/icons"); +function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); } +function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; } +var GetStarted = function GetStarted(_ref) { + var onSuccess = _ref.onSuccess; + var _useState = (0, _react.useState)(false), + _useState2 = (0, _slicedToArray2.default)(_useState, 2), + isTermsChecked = _useState2[0], + setIsTermsChecked = _useState2[1]; + var onGetStartedClick = /*#__PURE__*/function () { + var _ref2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() { + return _regenerator.default.wrap(function _callee$(_context) { + while (1) switch (_context.prev = _context.next) { + case 0: + _context.next = 2; + return (0, _api.setGetStarted)(); + case 2: + onSuccess(); + case 3: + case "end": + return _context.stop(); + } + }, _callee); + })); + return function onGetStartedClick() { + return _ref2.apply(this, arguments); + }; + }(); + return /*#__PURE__*/_react.default.createElement(_ui.Stack, { + alignItems: "center", + gap: 1.5 + }, /*#__PURE__*/_react.default.createElement(_icons.AIIcon, { + sx: { + color: 'text.primary', + fontSize: '60px', + mb: 1 + } + }), /*#__PURE__*/_react.default.createElement(_ui.Typography, { + variant: "h4", + sx: { + color: 'text.primary' + } + }, (0, _i18n.__)('Step into the future with Elementor AI', 'elementor')), /*#__PURE__*/_react.default.createElement(_ui.Typography, { + variant: "body2" + }, (0, _i18n.__)('Create smarter with AI text and code generators built right into the editor.', 'elementor')), /*#__PURE__*/_react.default.createElement(_ui.Stack, { + direction: "row", + gap: 1.5, + alignItems: "flex-start" + }, /*#__PURE__*/_react.default.createElement(_ui.Checkbox, { + id: "e-ai-terms-approval", + color: "secondary", + sx: { + p: 0 + }, + onChange: function onChange() { + return setIsTermsChecked(function (prevState) { + return !prevState; + }); + } + }), /*#__PURE__*/_react.default.createElement(_ui.Stack, null, /*#__PURE__*/_react.default.createElement(_ui.Typography, { + variant: "caption", + sx: { + maxWidth: 520 + }, + component: "label", + htmlFor: "e-ai-terms-approval" + }, (0, _i18n.__)('I approve the ', 'elementor'), /*#__PURE__*/_react.default.createElement(_ui.Link, { + href: "https://go.elementor.com/ai-terms/", + target: "_blank", + color: "info.main" + }, (0, _i18n.__)('Terms of Service', 'elementor')), ' & ', /*#__PURE__*/_react.default.createElement(_ui.Link, { + href: "https://go.elementor.com/ai-privacy-policy/", + target: "_blank", + color: "info.main" + }, (0, _i18n.__)('Privacy Policy', 'elementor')), (0, _i18n.__)(' of the Elementor AI service.', 'elementor'), /*#__PURE__*/_react.default.createElement("br", null), (0, _i18n.__)('This includes consenting to the collection and use of data to improve user experience.', 'elementor')))), /*#__PURE__*/_react.default.createElement(_ui.Button, { + disabled: !isTermsChecked, + variant: "contained", + onClick: onGetStartedClick, + sx: { + mt: 1, + '&:hover': { + color: 'primary.contrastText' + } + } + }, (0, _i18n.__)('Get Started', 'elementor'))); +}; +GetStarted.propTypes = { + onSuccess: _propTypes.default.func.isRequired +}; +var _default = GetStarted; +exports["default"] = _default; + +/***/ }), + +/***/ "../node_modules/clsx/dist/clsx.m.js": +/*!*******************************************!*\ + !*** ../node_modules/clsx/dist/clsx.m.js ***! + \*******************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ clsx: () => (/* binding */ clsx), +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +function r(e){var t,f,n="";if("string"==typeof e||"number"==typeof e)n+=e;else if("object"==typeof e)if(Array.isArray(e))for(t=0;t { + +/* eslint-env browser */ + +/** + * This is the web browser implementation of `debug()`. + */ + +exports.formatArgs = formatArgs; +exports.save = save; +exports.load = load; +exports.useColors = useColors; +exports.storage = localstorage(); +exports.destroy = (() => { + let warned = false; + + return () => { + if (!warned) { + warned = true; + console.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.'); + } + }; +})(); + +/** + * Colors. + */ + +exports.colors = [ + '#0000CC', + '#0000FF', + '#0033CC', + '#0033FF', + '#0066CC', + '#0066FF', + '#0099CC', + '#0099FF', + '#00CC00', + '#00CC33', + '#00CC66', + '#00CC99', + '#00CCCC', + '#00CCFF', + '#3300CC', + '#3300FF', + '#3333CC', + '#3333FF', + '#3366CC', + '#3366FF', + '#3399CC', + '#3399FF', + '#33CC00', + '#33CC33', + '#33CC66', + '#33CC99', + '#33CCCC', + '#33CCFF', + '#6600CC', + '#6600FF', + '#6633CC', + '#6633FF', + '#66CC00', + '#66CC33', + '#9900CC', + '#9900FF', + '#9933CC', + '#9933FF', + '#99CC00', + '#99CC33', + '#CC0000', + '#CC0033', + '#CC0066', + '#CC0099', + '#CC00CC', + '#CC00FF', + '#CC3300', + '#CC3333', + '#CC3366', + '#CC3399', + '#CC33CC', + '#CC33FF', + '#CC6600', + '#CC6633', + '#CC9900', + '#CC9933', + '#CCCC00', + '#CCCC33', + '#FF0000', + '#FF0033', + '#FF0066', + '#FF0099', + '#FF00CC', + '#FF00FF', + '#FF3300', + '#FF3333', + '#FF3366', + '#FF3399', + '#FF33CC', + '#FF33FF', + '#FF6600', + '#FF6633', + '#FF9900', + '#FF9933', + '#FFCC00', + '#FFCC33' +]; + +/** + * Currently only WebKit-based Web Inspectors, Firefox >= v31, + * and the Firebug extension (any Firefox version) are known + * to support "%c" CSS customizations. + * + * TODO: add a `localStorage` variable to explicitly enable/disable colors + */ + +// eslint-disable-next-line complexity +function useColors() { + // NB: In an Electron preload script, document will be defined but not fully + // initialized. Since we know we're in Chrome, we'll just detect this case + // explicitly + if (typeof window !== 'undefined' && window.process && (window.process.type === 'renderer' || window.process.__nwjs)) { + return true; + } + + // Internet Explorer and Edge do not support colors. + if (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/)) { + return false; + } + + // Is webkit? http://stackoverflow.com/a/16459606/376773 + // document is undefined in react-native: https://github.com/facebook/react-native/pull/1632 + return (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) || + // Is firebug? http://stackoverflow.com/a/398120/376773 + (typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) || + // Is firefox >= v31? + // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages + (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/) && parseInt(RegExp.$1, 10) >= 31) || + // Double check webkit in userAgent just in case we are in a worker + (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)); +} + +/** + * Colorize log arguments if enabled. + * + * @api public + */ + +function formatArgs(args) { + args[0] = (this.useColors ? '%c' : '') + + this.namespace + + (this.useColors ? ' %c' : ' ') + + args[0] + + (this.useColors ? '%c ' : ' ') + + '+' + module.exports.humanize(this.diff); + + if (!this.useColors) { + return; + } + + const c = 'color: ' + this.color; + args.splice(1, 0, c, 'color: inherit'); + + // The final "%c" is somewhat tricky, because there could be other + // arguments passed either before or after the %c, so we need to + // figure out the correct index to insert the CSS into + let index = 0; + let lastC = 0; + args[0].replace(/%[a-zA-Z%]/g, match => { + if (match === '%%') { + return; + } + index++; + if (match === '%c') { + // We only are interested in the *last* %c + // (the user may have provided their own) + lastC = index; + } + }); + + args.splice(lastC, 0, c); +} + +/** + * Invokes `console.debug()` when available. + * No-op when `console.debug` is not a "function". + * If `console.debug` is not available, falls back + * to `console.log`. + * + * @api public + */ +exports.log = console.debug || console.log || (() => {}); + +/** + * Save `namespaces`. + * + * @param {String} namespaces + * @api private + */ +function save(namespaces) { + try { + if (namespaces) { + exports.storage.setItem('debug', namespaces); + } else { + exports.storage.removeItem('debug'); + } + } catch (error) { + // Swallow + // XXX (@Qix-) should we be logging these? + } +} + +/** + * Load `namespaces`. + * + * @return {String} returns the previously persisted debug modes + * @api private + */ +function load() { + let r; + try { + r = exports.storage.getItem('debug'); + } catch (error) { + // Swallow + // XXX (@Qix-) should we be logging these? + } + + // If debug isn't set in LS, and we're in Electron, try to load $DEBUG + if (!r && typeof process !== 'undefined' && 'env' in process) { + r = process.env.DEBUG; + } + + return r; +} + +/** + * Localstorage attempts to return the localstorage. + * + * This is necessary because safari throws + * when a user disables cookies/localstorage + * and you attempt to access it. + * + * @return {LocalStorage} + * @api private + */ + +function localstorage() { + try { + // TVMLKit (Apple TV JS Runtime) does not have a window object, just localStorage in the global context + // The Browser also has localStorage in the global context. + return localStorage; + } catch (error) { + // Swallow + // XXX (@Qix-) should we be logging these? + } +} + +module.exports = __webpack_require__(/*! ./common */ "../node_modules/debug/src/common.js")(exports); + +const {formatters} = module.exports; + +/** + * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default. + */ + +formatters.j = function (v) { + try { + return JSON.stringify(v); + } catch (error) { + return '[UnexpectedJSONParseError]: ' + error.message; + } +}; + + +/***/ }), + +/***/ "../node_modules/debug/src/common.js": +/*!*******************************************!*\ + !*** ../node_modules/debug/src/common.js ***! + \*******************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + + +/** + * This is the common logic for both the Node.js and web browser + * implementations of `debug()`. + */ + +function setup(env) { + createDebug.debug = createDebug; + createDebug.default = createDebug; + createDebug.coerce = coerce; + createDebug.disable = disable; + createDebug.enable = enable; + createDebug.enabled = enabled; + createDebug.humanize = __webpack_require__(/*! ms */ "../node_modules/ms/index.js"); + createDebug.destroy = destroy; + + Object.keys(env).forEach(key => { + createDebug[key] = env[key]; + }); + + /** + * The currently active debug mode names, and names to skip. + */ + + createDebug.names = []; + createDebug.skips = []; + + /** + * Map of special "%n" handling functions, for the debug "format" argument. + * + * Valid key names are a single, lower or upper-case letter, i.e. "n" and "N". + */ + createDebug.formatters = {}; + + /** + * Selects a color for a debug namespace + * @param {String} namespace The namespace string for the debug instance to be colored + * @return {Number|String} An ANSI color code for the given namespace + * @api private + */ + function selectColor(namespace) { + let hash = 0; + + for (let i = 0; i < namespace.length; i++) { + hash = ((hash << 5) - hash) + namespace.charCodeAt(i); + hash |= 0; // Convert to 32bit integer + } + + return createDebug.colors[Math.abs(hash) % createDebug.colors.length]; + } + createDebug.selectColor = selectColor; + + /** + * Create a debugger with the given `namespace`. + * + * @param {String} namespace + * @return {Function} + * @api public + */ + function createDebug(namespace) { + let prevTime; + let enableOverride = null; + let namespacesCache; + let enabledCache; + + function debug(...args) { + // Disabled? + if (!debug.enabled) { + return; + } + + const self = debug; + + // Set `diff` timestamp + const curr = Number(new Date()); + const ms = curr - (prevTime || curr); + self.diff = ms; + self.prev = prevTime; + self.curr = curr; + prevTime = curr; + + args[0] = createDebug.coerce(args[0]); + + if (typeof args[0] !== 'string') { + // Anything else let's inspect with %O + args.unshift('%O'); + } + + // Apply any `formatters` transformations + let index = 0; + args[0] = args[0].replace(/%([a-zA-Z%])/g, (match, format) => { + // If we encounter an escaped % then don't increase the array index + if (match === '%%') { + return '%'; + } + index++; + const formatter = createDebug.formatters[format]; + if (typeof formatter === 'function') { + const val = args[index]; + match = formatter.call(self, val); + + // Now we need to remove `args[index]` since it's inlined in the `format` + args.splice(index, 1); + index--; + } + return match; + }); + + // Apply env-specific formatting (colors, etc.) + createDebug.formatArgs.call(self, args); + + const logFn = self.log || createDebug.log; + logFn.apply(self, args); + } + + debug.namespace = namespace; + debug.useColors = createDebug.useColors(); + debug.color = createDebug.selectColor(namespace); + debug.extend = extend; + debug.destroy = createDebug.destroy; // XXX Temporary. Will be removed in the next major release. + + Object.defineProperty(debug, 'enabled', { + enumerable: true, + configurable: false, + get: () => { + if (enableOverride !== null) { + return enableOverride; + } + if (namespacesCache !== createDebug.namespaces) { + namespacesCache = createDebug.namespaces; + enabledCache = createDebug.enabled(namespace); + } + + return enabledCache; + }, + set: v => { + enableOverride = v; + } + }); + + // Env-specific initialization logic for debug instances + if (typeof createDebug.init === 'function') { + createDebug.init(debug); + } + + return debug; + } + + function extend(namespace, delimiter) { + const newDebug = createDebug(this.namespace + (typeof delimiter === 'undefined' ? ':' : delimiter) + namespace); + newDebug.log = this.log; + return newDebug; + } + + /** + * Enables a debug mode by namespaces. This can include modes + * separated by a colon and wildcards. + * + * @param {String} namespaces + * @api public + */ + function enable(namespaces) { + createDebug.save(namespaces); + createDebug.namespaces = namespaces; + + createDebug.names = []; + createDebug.skips = []; + + let i; + const split = (typeof namespaces === 'string' ? namespaces : '').split(/[\s,]+/); + const len = split.length; + + for (i = 0; i < len; i++) { + if (!split[i]) { + // ignore empty strings + continue; + } + + namespaces = split[i].replace(/\*/g, '.*?'); + + if (namespaces[0] === '-') { + createDebug.skips.push(new RegExp('^' + namespaces.slice(1) + '$')); + } else { + createDebug.names.push(new RegExp('^' + namespaces + '$')); + } + } + } + + /** + * Disable debug output. + * + * @return {String} namespaces + * @api public + */ + function disable() { + const namespaces = [ + ...createDebug.names.map(toNamespace), + ...createDebug.skips.map(toNamespace).map(namespace => '-' + namespace) + ].join(','); + createDebug.enable(''); + return namespaces; + } + + /** + * Returns true if the given mode name is enabled, false otherwise. + * + * @param {String} name + * @return {Boolean} + * @api public + */ + function enabled(name) { + if (name[name.length - 1] === '*') { + return true; + } + + let i; + let len; + + for (i = 0, len = createDebug.skips.length; i < len; i++) { + if (createDebug.skips[i].test(name)) { + return false; + } + } + + for (i = 0, len = createDebug.names.length; i < len; i++) { + if (createDebug.names[i].test(name)) { + return true; + } + } + + return false; + } + + /** + * Convert regexp to namespace + * + * @param {RegExp} regxep + * @return {String} namespace + * @api private + */ + function toNamespace(regexp) { + return regexp.toString() + .substring(2, regexp.toString().length - 2) + .replace(/\.\*\?$/, '*'); + } + + /** + * Coerce `val`. + * + * @param {Mixed} val + * @return {Mixed} + * @api private + */ + function coerce(val) { + if (val instanceof Error) { + return val.stack || val.message; + } + return val; + } + + /** + * XXX DO NOT USE. This is a temporary stub function. + * XXX It WILL be removed in the next major release. + */ + function destroy() { + console.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.'); + } + + createDebug.enable(createDebug.load()); + + return createDebug; +} + +module.exports = setup; + + +/***/ }), + +/***/ "../node_modules/extend/index.js": +/*!***************************************!*\ + !*** ../node_modules/extend/index.js ***! + \***************************************/ +/***/ ((module) => { + +"use strict"; + + +var hasOwn = Object.prototype.hasOwnProperty; +var toStr = Object.prototype.toString; +var defineProperty = Object.defineProperty; +var gOPD = Object.getOwnPropertyDescriptor; + +var isArray = function isArray(arr) { + if (typeof Array.isArray === 'function') { + return Array.isArray(arr); + } + + return toStr.call(arr) === '[object Array]'; +}; + +var isPlainObject = function isPlainObject(obj) { + if (!obj || toStr.call(obj) !== '[object Object]') { + return false; + } + + var hasOwnConstructor = hasOwn.call(obj, 'constructor'); + var hasIsPrototypeOf = obj.constructor && obj.constructor.prototype && hasOwn.call(obj.constructor.prototype, 'isPrototypeOf'); + // Not own constructor property must be Object + if (obj.constructor && !hasOwnConstructor && !hasIsPrototypeOf) { + return false; + } + + // Own properties are enumerated firstly, so to speed up, + // if last one is own, then all properties are own. + var key; + for (key in obj) { /**/ } + + return typeof key === 'undefined' || hasOwn.call(obj, key); +}; + +// If name is '__proto__', and Object.defineProperty is available, define __proto__ as an own property on target +var setProperty = function setProperty(target, options) { + if (defineProperty && options.name === '__proto__') { + defineProperty(target, options.name, { + enumerable: true, + configurable: true, + value: options.newValue, + writable: true + }); + } else { + target[options.name] = options.newValue; + } +}; + +// Return undefined instead of __proto__ if '__proto__' is not an own property +var getProperty = function getProperty(obj, name) { + if (name === '__proto__') { + if (!hasOwn.call(obj, name)) { + return void 0; + } else if (gOPD) { + // In early versions of node, obj['__proto__'] is buggy when obj has + // __proto__ as an own property. Object.getOwnPropertyDescriptor() works. + return gOPD(obj, name).value; + } + } + + return obj[name]; +}; + +module.exports = function extend() { + var options, name, src, copy, copyIsArray, clone; + var target = arguments[0]; + var i = 1; + var length = arguments.length; + var deep = false; + + // Handle a deep copy situation + if (typeof target === 'boolean') { + deep = target; + target = arguments[1] || {}; + // skip the boolean and the target + i = 2; + } + if (target == null || (typeof target !== 'object' && typeof target !== 'function')) { + target = {}; + } + + for (; i < length; ++i) { + options = arguments[i]; + // Only deal with non-null/undefined values + if (options != null) { + // Extend the base object + for (name in options) { + src = getProperty(target, name); + copy = getProperty(options, name); + + // Prevent never-ending loop + if (target !== copy) { + // Recurse if we're merging plain objects or arrays + if (deep && copy && (isPlainObject(copy) || (copyIsArray = isArray(copy)))) { + if (copyIsArray) { + copyIsArray = false; + clone = src && isArray(src) ? src : []; + } else { + clone = src && isPlainObject(src) ? src : {}; + } + + // Never move original objects, clone them + setProperty(target, { name: name, newValue: extend(deep, clone, copy) }); + + // Don't bring in undefined values + } else if (typeof copy !== 'undefined') { + setProperty(target, { name: name, newValue: copy }); + } + } + } + } + } + + // Return the modified object + return target; +}; + + +/***/ }), + +/***/ "../node_modules/inline-style-parser/index.js": +/*!****************************************************!*\ + !*** ../node_modules/inline-style-parser/index.js ***! + \****************************************************/ +/***/ ((module) => { + +// http://www.w3.org/TR/CSS21/grammar.html +// https://github.com/visionmedia/css-parse/pull/49#issuecomment-30088027 +var COMMENT_REGEX = /\/\*[^*]*\*+([^/*][^*]*\*+)*\//g; + +var NEWLINE_REGEX = /\n/g; +var WHITESPACE_REGEX = /^\s*/; + +// declaration +var PROPERTY_REGEX = /^(\*?[-#/*\\\w]+(\[[0-9a-z_-]+\])?)\s*/; +var COLON_REGEX = /^:\s*/; +var VALUE_REGEX = /^((?:'(?:\\'|.)*?'|"(?:\\"|.)*?"|\([^)]*?\)|[^};])+)/; +var SEMICOLON_REGEX = /^[;\s]*/; + +// https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String/Trim#Polyfill +var TRIM_REGEX = /^\s+|\s+$/g; + +// strings +var NEWLINE = '\n'; +var FORWARD_SLASH = '/'; +var ASTERISK = '*'; +var EMPTY_STRING = ''; + +// types +var TYPE_COMMENT = 'comment'; +var TYPE_DECLARATION = 'declaration'; + +/** + * @param {String} style + * @param {Object} [options] + * @return {Object[]} + * @throws {TypeError} + * @throws {Error} + */ +module.exports = function(style, options) { + if (typeof style !== 'string') { + throw new TypeError('First argument must be a string'); + } + + if (!style) return []; + + options = options || {}; + + /** + * Positional. + */ + var lineno = 1; + var column = 1; + + /** + * Update lineno and column based on `str`. + * + * @param {String} str + */ + function updatePosition(str) { + var lines = str.match(NEWLINE_REGEX); + if (lines) lineno += lines.length; + var i = str.lastIndexOf(NEWLINE); + column = ~i ? str.length - i : column + str.length; + } + + /** + * Mark position and patch `node.position`. + * + * @return {Function} + */ + function position() { + var start = { line: lineno, column: column }; + return function(node) { + node.position = new Position(start); + whitespace(); + return node; + }; + } + + /** + * Store position information for a node. + * + * @constructor + * @property {Object} start + * @property {Object} end + * @property {undefined|String} source + */ + function Position(start) { + this.start = start; + this.end = { line: lineno, column: column }; + this.source = options.source; + } + + /** + * Non-enumerable source string. + */ + Position.prototype.content = style; + + var errorsList = []; + + /** + * Error `msg`. + * + * @param {String} msg + * @throws {Error} + */ + function error(msg) { + var err = new Error( + options.source + ':' + lineno + ':' + column + ': ' + msg + ); + err.reason = msg; + err.filename = options.source; + err.line = lineno; + err.column = column; + err.source = style; + + if (options.silent) { + errorsList.push(err); + } else { + throw err; + } + } + + /** + * Match `re` and return captures. + * + * @param {RegExp} re + * @return {undefined|Array} + */ + function match(re) { + var m = re.exec(style); + if (!m) return; + var str = m[0]; + updatePosition(str); + style = style.slice(str.length); + return m; + } + + /** + * Parse whitespace. + */ + function whitespace() { + match(WHITESPACE_REGEX); + } + + /** + * Parse comments. + * + * @param {Object[]} [rules] + * @return {Object[]} + */ + function comments(rules) { + var c; + rules = rules || []; + while ((c = comment())) { + if (c !== false) { + rules.push(c); + } + } + return rules; + } + + /** + * Parse comment. + * + * @return {Object} + * @throws {Error} + */ + function comment() { + var pos = position(); + if (FORWARD_SLASH != style.charAt(0) || ASTERISK != style.charAt(1)) return; + + var i = 2; + while ( + EMPTY_STRING != style.charAt(i) && + (ASTERISK != style.charAt(i) || FORWARD_SLASH != style.charAt(i + 1)) + ) { + ++i; + } + i += 2; + + if (EMPTY_STRING === style.charAt(i - 1)) { + return error('End of comment missing'); + } + + var str = style.slice(2, i - 2); + column += 2; + updatePosition(str); + style = style.slice(i); + column += 2; + + return pos({ + type: TYPE_COMMENT, + comment: str + }); + } + + /** + * Parse declaration. + * + * @return {Object} + * @throws {Error} + */ + function declaration() { + var pos = position(); + + // prop + var prop = match(PROPERTY_REGEX); + if (!prop) return; + comment(); + + // : + if (!match(COLON_REGEX)) return error("property missing ':'"); + + // val + var val = match(VALUE_REGEX); + + var ret = pos({ + type: TYPE_DECLARATION, + property: trim(prop[0].replace(COMMENT_REGEX, EMPTY_STRING)), + value: val + ? trim(val[0].replace(COMMENT_REGEX, EMPTY_STRING)) + : EMPTY_STRING + }); + + // ; + match(SEMICOLON_REGEX); + + return ret; + } + + /** + * Parse declarations. + * + * @return {Object[]} + */ + function declarations() { + var decls = []; + + comments(decls); + + // declarations + var decl; + while ((decl = declaration())) { + if (decl !== false) { + decls.push(decl); + comments(decls); + } + } + + return decls; + } + + whitespace(); + return declarations(); +}; + +/** + * Trim `str`. + * + * @param {String} str + * @return {String} + */ +function trim(str) { + return str ? str.replace(TRIM_REGEX, EMPTY_STRING) : EMPTY_STRING; +} + + +/***/ }), + +/***/ "../node_modules/is-buffer/index.js": +/*!******************************************!*\ + !*** ../node_modules/is-buffer/index.js ***! + \******************************************/ +/***/ ((module) => { + +/*! + * Determine if an object is a Buffer + * + * @author Feross Aboukhadijeh + * @license MIT + */ + +module.exports = function isBuffer (obj) { + return obj != null && obj.constructor != null && + typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj) +} + + +/***/ }), + +/***/ "../node_modules/ms/index.js": +/*!***********************************!*\ + !*** ../node_modules/ms/index.js ***! + \***********************************/ +/***/ ((module) => { + +/** + * Helpers. + */ + +var s = 1000; +var m = s * 60; +var h = m * 60; +var d = h * 24; +var w = d * 7; +var y = d * 365.25; + +/** + * Parse or format the given `val`. + * + * Options: + * + * - `long` verbose formatting [false] + * + * @param {String|Number} val + * @param {Object} [options] + * @throws {Error} throw an error if val is not a non-empty string or a number + * @return {String|Number} + * @api public + */ + +module.exports = function(val, options) { + options = options || {}; + var type = typeof val; + if (type === 'string' && val.length > 0) { + return parse(val); + } else if (type === 'number' && isFinite(val)) { + return options.long ? fmtLong(val) : fmtShort(val); + } + throw new Error( + 'val is not a non-empty string or a valid number. val=' + + JSON.stringify(val) + ); +}; + +/** + * Parse the given `str` and return milliseconds. + * + * @param {String} str + * @return {Number} + * @api private + */ + +function parse(str) { + str = String(str); + if (str.length > 100) { + return; + } + var match = /^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec( + str + ); + if (!match) { + return; + } + var n = parseFloat(match[1]); + var type = (match[2] || 'ms').toLowerCase(); + switch (type) { + case 'years': + case 'year': + case 'yrs': + case 'yr': + case 'y': + return n * y; + case 'weeks': + case 'week': + case 'w': + return n * w; + case 'days': + case 'day': + case 'd': + return n * d; + case 'hours': + case 'hour': + case 'hrs': + case 'hr': + case 'h': + return n * h; + case 'minutes': + case 'minute': + case 'mins': + case 'min': + case 'm': + return n * m; + case 'seconds': + case 'second': + case 'secs': + case 'sec': + case 's': + return n * s; + case 'milliseconds': + case 'millisecond': + case 'msecs': + case 'msec': + case 'ms': + return n; + default: + return undefined; + } +} + +/** + * Short format for `ms`. + * + * @param {Number} ms + * @return {String} + * @api private + */ + +function fmtShort(ms) { + var msAbs = Math.abs(ms); + if (msAbs >= d) { + return Math.round(ms / d) + 'd'; + } + if (msAbs >= h) { + return Math.round(ms / h) + 'h'; + } + if (msAbs >= m) { + return Math.round(ms / m) + 'm'; + } + if (msAbs >= s) { + return Math.round(ms / s) + 's'; + } + return ms + 'ms'; +} + +/** + * Long format for `ms`. + * + * @param {Number} ms + * @return {String} + * @api private + */ + +function fmtLong(ms) { + var msAbs = Math.abs(ms); + if (msAbs >= d) { + return plural(ms, msAbs, d, 'day'); + } + if (msAbs >= h) { + return plural(ms, msAbs, h, 'hour'); + } + if (msAbs >= m) { + return plural(ms, msAbs, m, 'minute'); + } + if (msAbs >= s) { + return plural(ms, msAbs, s, 'second'); + } + return ms + ' ms'; +} + +/** + * Pluralization helper. + */ + +function plural(ms, msAbs, n, name) { + var isPlural = msAbs >= n * 1.5; + return Math.round(ms / n) + ' ' + name + (isPlural ? 's' : ''); +} + + +/***/ }), + +/***/ "../node_modules/object-assign/index.js": +/*!**********************************************!*\ + !*** ../node_modules/object-assign/index.js ***! + \**********************************************/ +/***/ ((module) => { + +"use strict"; +/* +object-assign +(c) Sindre Sorhus +@license MIT +*/ + + +/* eslint-disable no-unused-vars */ +var getOwnPropertySymbols = Object.getOwnPropertySymbols; +var hasOwnProperty = Object.prototype.hasOwnProperty; +var propIsEnumerable = Object.prototype.propertyIsEnumerable; + +function toObject(val) { + if (val === null || val === undefined) { + throw new TypeError('Object.assign cannot be called with null or undefined'); + } + + return Object(val); +} + +function shouldUseNative() { + try { + if (!Object.assign) { + return false; + } + + // Detect buggy property enumeration order in older V8 versions. + + // https://bugs.chromium.org/p/v8/issues/detail?id=4118 + var test1 = new String('abc'); // eslint-disable-line no-new-wrappers + test1[5] = 'de'; + if (Object.getOwnPropertyNames(test1)[0] === '5') { + return false; + } + + // https://bugs.chromium.org/p/v8/issues/detail?id=3056 + var test2 = {}; + for (var i = 0; i < 10; i++) { + test2['_' + String.fromCharCode(i)] = i; + } + var order2 = Object.getOwnPropertyNames(test2).map(function (n) { + return test2[n]; + }); + if (order2.join('') !== '0123456789') { + return false; + } + + // https://bugs.chromium.org/p/v8/issues/detail?id=3056 + var test3 = {}; + 'abcdefghijklmnopqrst'.split('').forEach(function (letter) { + test3[letter] = letter; + }); + if (Object.keys(Object.assign({}, test3)).join('') !== + 'abcdefghijklmnopqrst') { + return false; + } + + return true; + } catch (err) { + // We don't expect any of the above to throw, but better to be safe. + return false; + } +} + +module.exports = shouldUseNative() ? Object.assign : function (target, source) { + var from; + var to = toObject(target); + var symbols; + + for (var s = 1; s < arguments.length; s++) { + from = Object(arguments[s]); + + for (var key in from) { + if (hasOwnProperty.call(from, key)) { + to[key] = from[key]; + } + } + + if (getOwnPropertySymbols) { + symbols = getOwnPropertySymbols(from); + for (var i = 0; i < symbols.length; i++) { + if (propIsEnumerable.call(from, symbols[i])) { + to[symbols[i]] = from[symbols[i]]; + } + } + } + } + + return to; +}; + + +/***/ }), + +/***/ "../node_modules/prop-types/checkPropTypes.js": +/*!****************************************************!*\ + !*** ../node_modules/prop-types/checkPropTypes.js ***! + \****************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; +/** + * Copyright (c) 2013-present, Facebook, Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + + + +var printWarning = function() {}; + +if (true) { + var ReactPropTypesSecret = __webpack_require__(/*! ./lib/ReactPropTypesSecret */ "../node_modules/prop-types/lib/ReactPropTypesSecret.js"); + var loggedTypeFailures = {}; + var has = __webpack_require__(/*! ./lib/has */ "../node_modules/prop-types/lib/has.js"); + + printWarning = function(text) { + var message = 'Warning: ' + text; + if (typeof console !== 'undefined') { + console.error(message); + } + try { + // --- Welcome to debugging React --- + // This error was thrown as a convenience so that you can use this stack + // to find the callsite that caused this warning to fire. + throw new Error(message); + } catch (x) { /**/ } + }; +} + +/** + * Assert that the values match with the type specs. + * Error messages are memorized and will only be shown once. + * + * @param {object} typeSpecs Map of name to a ReactPropType + * @param {object} values Runtime values that need to be type-checked + * @param {string} location e.g. "prop", "context", "child context" + * @param {string} componentName Name of the component for error messages. + * @param {?Function} getStack Returns the component stack. + * @private + */ +function checkPropTypes(typeSpecs, values, location, componentName, getStack) { + if (true) { + for (var typeSpecName in typeSpecs) { + if (has(typeSpecs, typeSpecName)) { + var error; + // Prop type validation may throw. In case they do, we don't want to + // fail the render phase where it didn't fail before. So we log it. + // After these have been cleaned up, we'll let them throw. + try { + // This is intentionally an invariant that gets caught. It's the same + // behavior as without this statement except with a better message. + if (typeof typeSpecs[typeSpecName] !== 'function') { + var err = Error( + (componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' + + 'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.' + + 'This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.' + ); + err.name = 'Invariant Violation'; + throw err; + } + error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret); + } catch (ex) { + error = ex; + } + if (error && !(error instanceof Error)) { + printWarning( + (componentName || 'React class') + ': type specification of ' + + location + ' `' + typeSpecName + '` is invalid; the type checker ' + + 'function must return `null` or an `Error` but returned a ' + typeof error + '. ' + + 'You may have forgotten to pass an argument to the type checker ' + + 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' + + 'shape all require an argument).' + ); + } + if (error instanceof Error && !(error.message in loggedTypeFailures)) { + // Only monitor this failure once because there tends to be a lot of the + // same error. + loggedTypeFailures[error.message] = true; + + var stack = getStack ? getStack() : ''; + + printWarning( + 'Failed ' + location + ' type: ' + error.message + (stack != null ? stack : '') + ); + } + } + } + } +} + +/** + * Resets warning cache when testing. + * + * @private + */ +checkPropTypes.resetWarningCache = function() { + if (true) { + loggedTypeFailures = {}; + } +} + +module.exports = checkPropTypes; + + +/***/ }), + +/***/ "../node_modules/prop-types/factoryWithTypeCheckers.js": +/*!*************************************************************!*\ + !*** ../node_modules/prop-types/factoryWithTypeCheckers.js ***! + \*************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; +/** + * Copyright (c) 2013-present, Facebook, Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + + + +var ReactIs = __webpack_require__(/*! react-is */ "../node_modules/prop-types/node_modules/react-is/index.js"); +var assign = __webpack_require__(/*! object-assign */ "../node_modules/object-assign/index.js"); + +var ReactPropTypesSecret = __webpack_require__(/*! ./lib/ReactPropTypesSecret */ "../node_modules/prop-types/lib/ReactPropTypesSecret.js"); +var has = __webpack_require__(/*! ./lib/has */ "../node_modules/prop-types/lib/has.js"); +var checkPropTypes = __webpack_require__(/*! ./checkPropTypes */ "../node_modules/prop-types/checkPropTypes.js"); + +var printWarning = function() {}; + +if (true) { + printWarning = function(text) { + var message = 'Warning: ' + text; + if (typeof console !== 'undefined') { + console.error(message); + } + try { + // --- Welcome to debugging React --- + // This error was thrown as a convenience so that you can use this stack + // to find the callsite that caused this warning to fire. + throw new Error(message); + } catch (x) {} + }; +} + +function emptyFunctionThatReturnsNull() { + return null; +} + +module.exports = function(isValidElement, throwOnDirectAccess) { + /* global Symbol */ + var ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator; + var FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec. + + /** + * Returns the iterator method function contained on the iterable object. + * + * Be sure to invoke the function with the iterable as context: + * + * var iteratorFn = getIteratorFn(myIterable); + * if (iteratorFn) { + * var iterator = iteratorFn.call(myIterable); + * ... + * } + * + * @param {?object} maybeIterable + * @return {?function} + */ + function getIteratorFn(maybeIterable) { + var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]); + if (typeof iteratorFn === 'function') { + return iteratorFn; + } + } + + /** + * Collection of methods that allow declaration and validation of props that are + * supplied to React components. Example usage: + * + * var Props = require('ReactPropTypes'); + * var MyArticle = React.createClass({ + * propTypes: { + * // An optional string prop named "description". + * description: Props.string, + * + * // A required enum prop named "category". + * category: Props.oneOf(['News','Photos']).isRequired, + * + * // A prop named "dialog" that requires an instance of Dialog. + * dialog: Props.instanceOf(Dialog).isRequired + * }, + * render: function() { ... } + * }); + * + * A more formal specification of how these methods are used: + * + * type := array|bool|func|object|number|string|oneOf([...])|instanceOf(...) + * decl := ReactPropTypes.{type}(.isRequired)? + * + * Each and every declaration produces a function with the same signature. This + * allows the creation of custom validation functions. For example: + * + * var MyLink = React.createClass({ + * propTypes: { + * // An optional string or URI prop named "href". + * href: function(props, propName, componentName) { + * var propValue = props[propName]; + * if (propValue != null && typeof propValue !== 'string' && + * !(propValue instanceof URI)) { + * return new Error( + * 'Expected a string or an URI for ' + propName + ' in ' + + * componentName + * ); + * } + * } + * }, + * render: function() {...} + * }); + * + * @internal + */ + + var ANONYMOUS = '<>'; + + // Important! + // Keep this list in sync with production version in `./factoryWithThrowingShims.js`. + var ReactPropTypes = { + array: createPrimitiveTypeChecker('array'), + bigint: createPrimitiveTypeChecker('bigint'), + bool: createPrimitiveTypeChecker('boolean'), + func: createPrimitiveTypeChecker('function'), + number: createPrimitiveTypeChecker('number'), + object: createPrimitiveTypeChecker('object'), + string: createPrimitiveTypeChecker('string'), + symbol: createPrimitiveTypeChecker('symbol'), + + any: createAnyTypeChecker(), + arrayOf: createArrayOfTypeChecker, + element: createElementTypeChecker(), + elementType: createElementTypeTypeChecker(), + instanceOf: createInstanceTypeChecker, + node: createNodeChecker(), + objectOf: createObjectOfTypeChecker, + oneOf: createEnumTypeChecker, + oneOfType: createUnionTypeChecker, + shape: createShapeTypeChecker, + exact: createStrictShapeTypeChecker, + }; + + /** + * inlined Object.is polyfill to avoid requiring consumers ship their own + * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is + */ + /*eslint-disable no-self-compare*/ + function is(x, y) { + // SameValue algorithm + if (x === y) { + // Steps 1-5, 7-10 + // Steps 6.b-6.e: +0 != -0 + return x !== 0 || 1 / x === 1 / y; + } else { + // Step 6.a: NaN == NaN + return x !== x && y !== y; + } + } + /*eslint-enable no-self-compare*/ + + /** + * We use an Error-like object for backward compatibility as people may call + * PropTypes directly and inspect their output. However, we don't use real + * Errors anymore. We don't inspect their stack anyway, and creating them + * is prohibitively expensive if they are created too often, such as what + * happens in oneOfType() for any type before the one that matched. + */ + function PropTypeError(message, data) { + this.message = message; + this.data = data && typeof data === 'object' ? data: {}; + this.stack = ''; + } + // Make `instanceof Error` still work for returned errors. + PropTypeError.prototype = Error.prototype; + + function createChainableTypeChecker(validate) { + if (true) { + var manualPropTypeCallCache = {}; + var manualPropTypeWarningCount = 0; + } + function checkType(isRequired, props, propName, componentName, location, propFullName, secret) { + componentName = componentName || ANONYMOUS; + propFullName = propFullName || propName; + + if (secret !== ReactPropTypesSecret) { + if (throwOnDirectAccess) { + // New behavior only for users of `prop-types` package + var err = new Error( + 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' + + 'Use `PropTypes.checkPropTypes()` to call them. ' + + 'Read more at http://fb.me/use-check-prop-types' + ); + err.name = 'Invariant Violation'; + throw err; + } else if ( true && typeof console !== 'undefined') { + // Old behavior for people using React.PropTypes + var cacheKey = componentName + ':' + propName; + if ( + !manualPropTypeCallCache[cacheKey] && + // Avoid spamming the console because they are often not actionable except for lib authors + manualPropTypeWarningCount < 3 + ) { + printWarning( + 'You are manually calling a React.PropTypes validation ' + + 'function for the `' + propFullName + '` prop on `' + componentName + '`. This is deprecated ' + + 'and will throw in the standalone `prop-types` package. ' + + 'You may be seeing this warning due to a third-party PropTypes ' + + 'library. See https://fb.me/react-warning-dont-call-proptypes ' + 'for details.' + ); + manualPropTypeCallCache[cacheKey] = true; + manualPropTypeWarningCount++; + } + } + } + if (props[propName] == null) { + if (isRequired) { + if (props[propName] === null) { + return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required ' + ('in `' + componentName + '`, but its value is `null`.')); + } + return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required in ' + ('`' + componentName + '`, but its value is `undefined`.')); + } + return null; + } else { + return validate(props, propName, componentName, location, propFullName); + } + } + + var chainedCheckType = checkType.bind(null, false); + chainedCheckType.isRequired = checkType.bind(null, true); + + return chainedCheckType; + } + + function createPrimitiveTypeChecker(expectedType) { + function validate(props, propName, componentName, location, propFullName, secret) { + var propValue = props[propName]; + var propType = getPropType(propValue); + if (propType !== expectedType) { + // `propValue` being instance of, say, date/regexp, pass the 'object' + // check, but we can offer a more precise error message here rather than + // 'of type `object`'. + var preciseType = getPreciseType(propValue); + + return new PropTypeError( + 'Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + preciseType + '` supplied to `' + componentName + '`, expected ') + ('`' + expectedType + '`.'), + {expectedType: expectedType} + ); + } + return null; + } + return createChainableTypeChecker(validate); + } + + function createAnyTypeChecker() { + return createChainableTypeChecker(emptyFunctionThatReturnsNull); + } + + function createArrayOfTypeChecker(typeChecker) { + function validate(props, propName, componentName, location, propFullName) { + if (typeof typeChecker !== 'function') { + return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside arrayOf.'); + } + var propValue = props[propName]; + if (!Array.isArray(propValue)) { + var propType = getPropType(propValue); + return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an array.')); + } + for (var i = 0; i < propValue.length; i++) { + var error = typeChecker(propValue, i, componentName, location, propFullName + '[' + i + ']', ReactPropTypesSecret); + if (error instanceof Error) { + return error; + } + } + return null; + } + return createChainableTypeChecker(validate); + } + + function createElementTypeChecker() { + function validate(props, propName, componentName, location, propFullName) { + var propValue = props[propName]; + if (!isValidElement(propValue)) { + var propType = getPropType(propValue); + return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement.')); + } + return null; + } + return createChainableTypeChecker(validate); + } + + function createElementTypeTypeChecker() { + function validate(props, propName, componentName, location, propFullName) { + var propValue = props[propName]; + if (!ReactIs.isValidElementType(propValue)) { + var propType = getPropType(propValue); + return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement type.')); + } + return null; + } + return createChainableTypeChecker(validate); + } + + function createInstanceTypeChecker(expectedClass) { + function validate(props, propName, componentName, location, propFullName) { + if (!(props[propName] instanceof expectedClass)) { + var expectedClassName = expectedClass.name || ANONYMOUS; + var actualClassName = getClassName(props[propName]); + return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + actualClassName + '` supplied to `' + componentName + '`, expected ') + ('instance of `' + expectedClassName + '`.')); + } + return null; + } + return createChainableTypeChecker(validate); + } + + function createEnumTypeChecker(expectedValues) { + if (!Array.isArray(expectedValues)) { + if (true) { + if (arguments.length > 1) { + printWarning( + 'Invalid arguments supplied to oneOf, expected an array, got ' + arguments.length + ' arguments. ' + + 'A common mistake is to write oneOf(x, y, z) instead of oneOf([x, y, z]).' + ); + } else { + printWarning('Invalid argument supplied to oneOf, expected an array.'); + } + } + return emptyFunctionThatReturnsNull; + } + + function validate(props, propName, componentName, location, propFullName) { + var propValue = props[propName]; + for (var i = 0; i < expectedValues.length; i++) { + if (is(propValue, expectedValues[i])) { + return null; + } + } + + var valuesString = JSON.stringify(expectedValues, function replacer(key, value) { + var type = getPreciseType(value); + if (type === 'symbol') { + return String(value); + } + return value; + }); + return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of value `' + String(propValue) + '` ' + ('supplied to `' + componentName + '`, expected one of ' + valuesString + '.')); + } + return createChainableTypeChecker(validate); + } + + function createObjectOfTypeChecker(typeChecker) { + function validate(props, propName, componentName, location, propFullName) { + if (typeof typeChecker !== 'function') { + return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside objectOf.'); + } + var propValue = props[propName]; + var propType = getPropType(propValue); + if (propType !== 'object') { + return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an object.')); + } + for (var key in propValue) { + if (has(propValue, key)) { + var error = typeChecker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret); + if (error instanceof Error) { + return error; + } + } + } + return null; + } + return createChainableTypeChecker(validate); + } + + function createUnionTypeChecker(arrayOfTypeCheckers) { + if (!Array.isArray(arrayOfTypeCheckers)) { + true ? printWarning('Invalid argument supplied to oneOfType, expected an instance of array.') : 0; + return emptyFunctionThatReturnsNull; + } + + for (var i = 0; i < arrayOfTypeCheckers.length; i++) { + var checker = arrayOfTypeCheckers[i]; + if (typeof checker !== 'function') { + printWarning( + 'Invalid argument supplied to oneOfType. Expected an array of check functions, but ' + + 'received ' + getPostfixForTypeWarning(checker) + ' at index ' + i + '.' + ); + return emptyFunctionThatReturnsNull; + } + } + + function validate(props, propName, componentName, location, propFullName) { + var expectedTypes = []; + for (var i = 0; i < arrayOfTypeCheckers.length; i++) { + var checker = arrayOfTypeCheckers[i]; + var checkerResult = checker(props, propName, componentName, location, propFullName, ReactPropTypesSecret); + if (checkerResult == null) { + return null; + } + if (checkerResult.data && has(checkerResult.data, 'expectedType')) { + expectedTypes.push(checkerResult.data.expectedType); + } + } + var expectedTypesMessage = (expectedTypes.length > 0) ? ', expected one of type [' + expectedTypes.join(', ') + ']': ''; + return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`' + expectedTypesMessage + '.')); + } + return createChainableTypeChecker(validate); + } + + function createNodeChecker() { + function validate(props, propName, componentName, location, propFullName) { + if (!isNode(props[propName])) { + return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`, expected a ReactNode.')); + } + return null; + } + return createChainableTypeChecker(validate); + } + + function invalidValidatorError(componentName, location, propFullName, key, type) { + return new PropTypeError( + (componentName || 'React class') + ': ' + location + ' type `' + propFullName + '.' + key + '` is invalid; ' + + 'it must be a function, usually from the `prop-types` package, but received `' + type + '`.' + ); + } + + function createShapeTypeChecker(shapeTypes) { + function validate(props, propName, componentName, location, propFullName) { + var propValue = props[propName]; + var propType = getPropType(propValue); + if (propType !== 'object') { + return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.')); + } + for (var key in shapeTypes) { + var checker = shapeTypes[key]; + if (typeof checker !== 'function') { + return invalidValidatorError(componentName, location, propFullName, key, getPreciseType(checker)); + } + var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret); + if (error) { + return error; + } + } + return null; + } + return createChainableTypeChecker(validate); + } + + function createStrictShapeTypeChecker(shapeTypes) { + function validate(props, propName, componentName, location, propFullName) { + var propValue = props[propName]; + var propType = getPropType(propValue); + if (propType !== 'object') { + return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.')); + } + // We need to check all keys in case some are required but missing from props. + var allKeys = assign({}, props[propName], shapeTypes); + for (var key in allKeys) { + var checker = shapeTypes[key]; + if (has(shapeTypes, key) && typeof checker !== 'function') { + return invalidValidatorError(componentName, location, propFullName, key, getPreciseType(checker)); + } + if (!checker) { + return new PropTypeError( + 'Invalid ' + location + ' `' + propFullName + '` key `' + key + '` supplied to `' + componentName + '`.' + + '\nBad object: ' + JSON.stringify(props[propName], null, ' ') + + '\nValid keys: ' + JSON.stringify(Object.keys(shapeTypes), null, ' ') + ); + } + var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret); + if (error) { + return error; + } + } + return null; + } + + return createChainableTypeChecker(validate); + } + + function isNode(propValue) { + switch (typeof propValue) { + case 'number': + case 'string': + case 'undefined': + return true; + case 'boolean': + return !propValue; + case 'object': + if (Array.isArray(propValue)) { + return propValue.every(isNode); + } + if (propValue === null || isValidElement(propValue)) { + return true; + } + + var iteratorFn = getIteratorFn(propValue); + if (iteratorFn) { + var iterator = iteratorFn.call(propValue); + var step; + if (iteratorFn !== propValue.entries) { + while (!(step = iterator.next()).done) { + if (!isNode(step.value)) { + return false; + } + } + } else { + // Iterator will provide entry [k,v] tuples rather than values. + while (!(step = iterator.next()).done) { + var entry = step.value; + if (entry) { + if (!isNode(entry[1])) { + return false; + } + } + } + } + } else { + return false; + } + + return true; + default: + return false; + } + } + + function isSymbol(propType, propValue) { + // Native Symbol. + if (propType === 'symbol') { + return true; + } + + // falsy value can't be a Symbol + if (!propValue) { + return false; + } + + // 19.4.3.5 Symbol.prototype[@@toStringTag] === 'Symbol' + if (propValue['@@toStringTag'] === 'Symbol') { + return true; + } + + // Fallback for non-spec compliant Symbols which are polyfilled. + if (typeof Symbol === 'function' && propValue instanceof Symbol) { + return true; + } + + return false; + } + + // Equivalent of `typeof` but with special handling for array and regexp. + function getPropType(propValue) { + var propType = typeof propValue; + if (Array.isArray(propValue)) { + return 'array'; + } + if (propValue instanceof RegExp) { + // Old webkits (at least until Android 4.0) return 'function' rather than + // 'object' for typeof a RegExp. We'll normalize this here so that /bla/ + // passes PropTypes.object. + return 'object'; + } + if (isSymbol(propType, propValue)) { + return 'symbol'; + } + return propType; + } + + // This handles more types than `getPropType`. Only used for error messages. + // See `createPrimitiveTypeChecker`. + function getPreciseType(propValue) { + if (typeof propValue === 'undefined' || propValue === null) { + return '' + propValue; + } + var propType = getPropType(propValue); + if (propType === 'object') { + if (propValue instanceof Date) { + return 'date'; + } else if (propValue instanceof RegExp) { + return 'regexp'; + } + } + return propType; + } + + // Returns a string that is postfixed to a warning about an invalid type. + // For example, "undefined" or "of type array" + function getPostfixForTypeWarning(value) { + var type = getPreciseType(value); + switch (type) { + case 'array': + case 'object': + return 'an ' + type; + case 'boolean': + case 'date': + case 'regexp': + return 'a ' + type; + default: + return type; + } + } + + // Returns class name of the object, if any. + function getClassName(propValue) { + if (!propValue.constructor || !propValue.constructor.name) { + return ANONYMOUS; + } + return propValue.constructor.name; + } + + ReactPropTypes.checkPropTypes = checkPropTypes; + ReactPropTypes.resetWarningCache = checkPropTypes.resetWarningCache; + ReactPropTypes.PropTypes = ReactPropTypes; + + return ReactPropTypes; +}; + + +/***/ }), + +/***/ "../node_modules/prop-types/index.js": +/*!*******************************************!*\ + !*** ../node_modules/prop-types/index.js ***! + \*******************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +/** + * Copyright (c) 2013-present, Facebook, Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +if (true) { + var ReactIs = __webpack_require__(/*! react-is */ "../node_modules/prop-types/node_modules/react-is/index.js"); + + // By explicitly using `prop-types` you are opting into new development behavior. + // http://fb.me/prop-types-in-prod + var throwOnDirectAccess = true; + module.exports = __webpack_require__(/*! ./factoryWithTypeCheckers */ "../node_modules/prop-types/factoryWithTypeCheckers.js")(ReactIs.isElement, throwOnDirectAccess); +} else {} + + +/***/ }), + +/***/ "../node_modules/prop-types/lib/ReactPropTypesSecret.js": +/*!**************************************************************!*\ + !*** ../node_modules/prop-types/lib/ReactPropTypesSecret.js ***! + \**************************************************************/ +/***/ ((module) => { + +"use strict"; +/** + * Copyright (c) 2013-present, Facebook, Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + + + +var ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED'; + +module.exports = ReactPropTypesSecret; + + +/***/ }), + +/***/ "../node_modules/prop-types/lib/has.js": +/*!*********************************************!*\ + !*** ../node_modules/prop-types/lib/has.js ***! + \*********************************************/ +/***/ ((module) => { + +module.exports = Function.call.bind(Object.prototype.hasOwnProperty); + + +/***/ }), + +/***/ "../node_modules/prop-types/node_modules/react-is/cjs/react-is.development.js": +/*!************************************************************************************!*\ + !*** ../node_modules/prop-types/node_modules/react-is/cjs/react-is.development.js ***! + \************************************************************************************/ +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; +/** @license React v16.13.1 + * react-is.development.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + + + + + +if (true) { + (function() { +'use strict'; + +// The Symbol used to tag the ReactElement-like types. If there is no native Symbol +// nor polyfill, then a plain number is used for performance. +var hasSymbol = typeof Symbol === 'function' && Symbol.for; +var REACT_ELEMENT_TYPE = hasSymbol ? Symbol.for('react.element') : 0xeac7; +var REACT_PORTAL_TYPE = hasSymbol ? Symbol.for('react.portal') : 0xeaca; +var REACT_FRAGMENT_TYPE = hasSymbol ? Symbol.for('react.fragment') : 0xeacb; +var REACT_STRICT_MODE_TYPE = hasSymbol ? Symbol.for('react.strict_mode') : 0xeacc; +var REACT_PROFILER_TYPE = hasSymbol ? Symbol.for('react.profiler') : 0xead2; +var REACT_PROVIDER_TYPE = hasSymbol ? Symbol.for('react.provider') : 0xeacd; +var REACT_CONTEXT_TYPE = hasSymbol ? Symbol.for('react.context') : 0xeace; // TODO: We don't use AsyncMode or ConcurrentMode anymore. They were temporary +// (unstable) APIs that have been removed. Can we remove the symbols? + +var REACT_ASYNC_MODE_TYPE = hasSymbol ? Symbol.for('react.async_mode') : 0xeacf; +var REACT_CONCURRENT_MODE_TYPE = hasSymbol ? Symbol.for('react.concurrent_mode') : 0xeacf; +var REACT_FORWARD_REF_TYPE = hasSymbol ? Symbol.for('react.forward_ref') : 0xead0; +var REACT_SUSPENSE_TYPE = hasSymbol ? Symbol.for('react.suspense') : 0xead1; +var REACT_SUSPENSE_LIST_TYPE = hasSymbol ? Symbol.for('react.suspense_list') : 0xead8; +var REACT_MEMO_TYPE = hasSymbol ? Symbol.for('react.memo') : 0xead3; +var REACT_LAZY_TYPE = hasSymbol ? Symbol.for('react.lazy') : 0xead4; +var REACT_BLOCK_TYPE = hasSymbol ? Symbol.for('react.block') : 0xead9; +var REACT_FUNDAMENTAL_TYPE = hasSymbol ? Symbol.for('react.fundamental') : 0xead5; +var REACT_RESPONDER_TYPE = hasSymbol ? Symbol.for('react.responder') : 0xead6; +var REACT_SCOPE_TYPE = hasSymbol ? Symbol.for('react.scope') : 0xead7; + +function isValidElementType(type) { + return typeof type === 'string' || typeof type === 'function' || // Note: its typeof might be other than 'symbol' or 'number' if it's a polyfill. + type === REACT_FRAGMENT_TYPE || type === REACT_CONCURRENT_MODE_TYPE || type === REACT_PROFILER_TYPE || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || typeof type === 'object' && type !== null && (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || type.$$typeof === REACT_FUNDAMENTAL_TYPE || type.$$typeof === REACT_RESPONDER_TYPE || type.$$typeof === REACT_SCOPE_TYPE || type.$$typeof === REACT_BLOCK_TYPE); +} + +function typeOf(object) { + if (typeof object === 'object' && object !== null) { + var $$typeof = object.$$typeof; + + switch ($$typeof) { + case REACT_ELEMENT_TYPE: + var type = object.type; + + switch (type) { + case REACT_ASYNC_MODE_TYPE: + case REACT_CONCURRENT_MODE_TYPE: + case REACT_FRAGMENT_TYPE: + case REACT_PROFILER_TYPE: + case REACT_STRICT_MODE_TYPE: + case REACT_SUSPENSE_TYPE: + return type; + + default: + var $$typeofType = type && type.$$typeof; + + switch ($$typeofType) { + case REACT_CONTEXT_TYPE: + case REACT_FORWARD_REF_TYPE: + case REACT_LAZY_TYPE: + case REACT_MEMO_TYPE: + case REACT_PROVIDER_TYPE: + return $$typeofType; + + default: + return $$typeof; + } + + } + + case REACT_PORTAL_TYPE: + return $$typeof; + } + } + + return undefined; +} // AsyncMode is deprecated along with isAsyncMode + +var AsyncMode = REACT_ASYNC_MODE_TYPE; +var ConcurrentMode = REACT_CONCURRENT_MODE_TYPE; +var ContextConsumer = REACT_CONTEXT_TYPE; +var ContextProvider = REACT_PROVIDER_TYPE; +var Element = REACT_ELEMENT_TYPE; +var ForwardRef = REACT_FORWARD_REF_TYPE; +var Fragment = REACT_FRAGMENT_TYPE; +var Lazy = REACT_LAZY_TYPE; +var Memo = REACT_MEMO_TYPE; +var Portal = REACT_PORTAL_TYPE; +var Profiler = REACT_PROFILER_TYPE; +var StrictMode = REACT_STRICT_MODE_TYPE; +var Suspense = REACT_SUSPENSE_TYPE; +var hasWarnedAboutDeprecatedIsAsyncMode = false; // AsyncMode should be deprecated + +function isAsyncMode(object) { + { + if (!hasWarnedAboutDeprecatedIsAsyncMode) { + hasWarnedAboutDeprecatedIsAsyncMode = true; // Using console['warn'] to evade Babel and ESLint + + console['warn']('The ReactIs.isAsyncMode() alias has been deprecated, ' + 'and will be removed in React 17+. Update your code to use ' + 'ReactIs.isConcurrentMode() instead. It has the exact same API.'); + } + } + + return isConcurrentMode(object) || typeOf(object) === REACT_ASYNC_MODE_TYPE; +} +function isConcurrentMode(object) { + return typeOf(object) === REACT_CONCURRENT_MODE_TYPE; +} +function isContextConsumer(object) { + return typeOf(object) === REACT_CONTEXT_TYPE; +} +function isContextProvider(object) { + return typeOf(object) === REACT_PROVIDER_TYPE; +} +function isElement(object) { + return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE; +} +function isForwardRef(object) { + return typeOf(object) === REACT_FORWARD_REF_TYPE; +} +function isFragment(object) { + return typeOf(object) === REACT_FRAGMENT_TYPE; +} +function isLazy(object) { + return typeOf(object) === REACT_LAZY_TYPE; +} +function isMemo(object) { + return typeOf(object) === REACT_MEMO_TYPE; +} +function isPortal(object) { + return typeOf(object) === REACT_PORTAL_TYPE; +} +function isProfiler(object) { + return typeOf(object) === REACT_PROFILER_TYPE; +} +function isStrictMode(object) { + return typeOf(object) === REACT_STRICT_MODE_TYPE; +} +function isSuspense(object) { + return typeOf(object) === REACT_SUSPENSE_TYPE; +} + +exports.AsyncMode = AsyncMode; +exports.ConcurrentMode = ConcurrentMode; +exports.ContextConsumer = ContextConsumer; +exports.ContextProvider = ContextProvider; +exports.Element = Element; +exports.ForwardRef = ForwardRef; +exports.Fragment = Fragment; +exports.Lazy = Lazy; +exports.Memo = Memo; +exports.Portal = Portal; +exports.Profiler = Profiler; +exports.StrictMode = StrictMode; +exports.Suspense = Suspense; +exports.isAsyncMode = isAsyncMode; +exports.isConcurrentMode = isConcurrentMode; +exports.isContextConsumer = isContextConsumer; +exports.isContextProvider = isContextProvider; +exports.isElement = isElement; +exports.isForwardRef = isForwardRef; +exports.isFragment = isFragment; +exports.isLazy = isLazy; +exports.isMemo = isMemo; +exports.isPortal = isPortal; +exports.isProfiler = isProfiler; +exports.isStrictMode = isStrictMode; +exports.isSuspense = isSuspense; +exports.isValidElementType = isValidElementType; +exports.typeOf = typeOf; + })(); +} + + +/***/ }), + +/***/ "../node_modules/prop-types/node_modules/react-is/index.js": +/*!*****************************************************************!*\ + !*** ../node_modules/prop-types/node_modules/react-is/index.js ***! + \*****************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + + +if (false) {} else { + module.exports = __webpack_require__(/*! ./cjs/react-is.development.js */ "../node_modules/prop-types/node_modules/react-is/cjs/react-is.development.js"); +} + + +/***/ }), + +/***/ "../node_modules/react-avatar-editor/dist/index.js": +/*!*********************************************************!*\ + !*** ../node_modules/react-avatar-editor/dist/index.js ***! + \*********************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +!function(e,t){ true?module.exports=t(__webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js"),__webpack_require__(/*! react */ "react")):0}(this,function(e,t){"use strict";function o(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var n=o(e),i=o(t);function r(e,t){for(var o=0;oe.length)&&(t=e.length);for(var o=0,n=new Array(t);o { + +"use strict"; + + +function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +Object.defineProperty(exports, "DraggableCore", ({ + enumerable: true, + get: function get() { + return _DraggableCore.default; + } +})); +exports["default"] = void 0; + +var React = _interopRequireWildcard(__webpack_require__(/*! react */ "react")); + +var _propTypes = _interopRequireDefault(__webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js")); + +var _reactDom = _interopRequireDefault(__webpack_require__(/*! react-dom */ "react-dom")); + +var _clsx2 = _interopRequireDefault(__webpack_require__(/*! clsx */ "../node_modules/clsx/dist/clsx.m.js")); + +var _domFns = __webpack_require__(/*! ./utils/domFns */ "../node_modules/react-draggable/build/cjs/utils/domFns.js"); + +var _positionFns = __webpack_require__(/*! ./utils/positionFns */ "../node_modules/react-draggable/build/cjs/utils/positionFns.js"); + +var _shims = __webpack_require__(/*! ./utils/shims */ "../node_modules/react-draggable/build/cjs/utils/shims.js"); + +var _DraggableCore = _interopRequireDefault(__webpack_require__(/*! ./DraggableCore */ "../node_modules/react-draggable/build/cjs/DraggableCore.js")); + +var _log = _interopRequireDefault(__webpack_require__(/*! ./utils/log */ "../node_modules/react-draggable/build/cjs/utils/log.js")); + +var _excluded = ["axis", "bounds", "children", "defaultPosition", "defaultClassName", "defaultClassNameDragging", "defaultClassNameDragged", "position", "positionOffset", "scale"]; + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); } + +function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; } + +function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } + +function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; } + +function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; } + +function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; } + +function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; } + +function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); } + +function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } + +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } + +function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } + +function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, "prototype", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } else if (call !== void 0) { throw new TypeError("Derived constructors may only return object or undefined"); } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + +// +// Define +// +var Draggable = /*#__PURE__*/function (_React$Component) { + _inherits(Draggable, _React$Component); + + var _super = _createSuper(Draggable); + + function Draggable(props + /*: DraggableProps*/ + ) { + var _this; + + _classCallCheck(this, Draggable); + + _this = _super.call(this, props); + + _defineProperty(_assertThisInitialized(_this), "onDragStart", function (e, coreData) { + (0, _log.default)('Draggable: onDragStart: %j', coreData); // Short-circuit if user's callback killed it. + + var shouldStart = _this.props.onStart(e, (0, _positionFns.createDraggableData)(_assertThisInitialized(_this), coreData)); // Kills start event on core as well, so move handlers are never bound. + + + if (shouldStart === false) return false; + + _this.setState({ + dragging: true, + dragged: true + }); + }); + + _defineProperty(_assertThisInitialized(_this), "onDrag", function (e, coreData) { + if (!_this.state.dragging) return false; + (0, _log.default)('Draggable: onDrag: %j', coreData); + var uiData = (0, _positionFns.createDraggableData)(_assertThisInitialized(_this), coreData); + var newState + /*: $Shape*/ + = { + x: uiData.x, + y: uiData.y + }; // Keep within bounds. + + if (_this.props.bounds) { + // Save original x and y. + var x = newState.x, + y = newState.y; // Add slack to the values used to calculate bound position. This will ensure that if + // we start removing slack, the element won't react to it right away until it's been + // completely removed. + + newState.x += _this.state.slackX; + newState.y += _this.state.slackY; // Get bound position. This will ceil/floor the x and y within the boundaries. + + var _getBoundPosition = (0, _positionFns.getBoundPosition)(_assertThisInitialized(_this), newState.x, newState.y), + _getBoundPosition2 = _slicedToArray(_getBoundPosition, 2), + newStateX = _getBoundPosition2[0], + newStateY = _getBoundPosition2[1]; + + newState.x = newStateX; + newState.y = newStateY; // Recalculate slack by noting how much was shaved by the boundPosition handler. + + newState.slackX = _this.state.slackX + (x - newState.x); + newState.slackY = _this.state.slackY + (y - newState.y); // Update the event we fire to reflect what really happened after bounds took effect. + + uiData.x = newState.x; + uiData.y = newState.y; + uiData.deltaX = newState.x - _this.state.x; + uiData.deltaY = newState.y - _this.state.y; + } // Short-circuit if user's callback killed it. + + + var shouldUpdate = _this.props.onDrag(e, uiData); + + if (shouldUpdate === false) return false; + + _this.setState(newState); + }); + + _defineProperty(_assertThisInitialized(_this), "onDragStop", function (e, coreData) { + if (!_this.state.dragging) return false; // Short-circuit if user's callback killed it. + + var shouldContinue = _this.props.onStop(e, (0, _positionFns.createDraggableData)(_assertThisInitialized(_this), coreData)); + + if (shouldContinue === false) return false; + (0, _log.default)('Draggable: onDragStop: %j', coreData); + var newState + /*: $Shape*/ + = { + dragging: false, + slackX: 0, + slackY: 0 + }; // If this is a controlled component, the result of this operation will be to + // revert back to the old position. We expect a handler on `onDragStop`, at the least. + + var controlled = Boolean(_this.props.position); + + if (controlled) { + var _this$props$position = _this.props.position, + x = _this$props$position.x, + y = _this$props$position.y; + newState.x = x; + newState.y = y; + } + + _this.setState(newState); + }); + + _this.state = { + // Whether or not we are currently dragging. + dragging: false, + // Whether or not we have been dragged before. + dragged: false, + // Current transform x and y. + x: props.position ? props.position.x : props.defaultPosition.x, + y: props.position ? props.position.y : props.defaultPosition.y, + prevPropsPosition: _objectSpread({}, props.position), + // Used for compensating for out-of-bounds drags + slackX: 0, + slackY: 0, + // Can only determine if SVG after mounting + isElementSVG: false + }; + + if (props.position && !(props.onDrag || props.onStop)) { + // eslint-disable-next-line no-console + console.warn('A `position` was applied to this , without drag handlers. This will make this ' + 'component effectively undraggable. Please attach `onDrag` or `onStop` handlers so you can adjust the ' + '`position` of this element.'); + } + + return _this; + } + + _createClass(Draggable, [{ + key: "componentDidMount", + value: function componentDidMount() { + // Check to see if the element passed is an instanceof SVGElement + if (typeof window.SVGElement !== 'undefined' && this.findDOMNode() instanceof window.SVGElement) { + this.setState({ + isElementSVG: true + }); + } + } + }, { + key: "componentWillUnmount", + value: function componentWillUnmount() { + this.setState({ + dragging: false + }); // prevents invariant if unmounted while dragging + } // React Strict Mode compatibility: if `nodeRef` is passed, we will use it instead of trying to find + // the underlying DOM node ourselves. See the README for more information. + + }, { + key: "findDOMNode", + value: function findDOMNode() + /*: ?HTMLElement*/ + { + var _this$props$nodeRef$c, _this$props, _this$props$nodeRef; + + return (_this$props$nodeRef$c = (_this$props = this.props) === null || _this$props === void 0 ? void 0 : (_this$props$nodeRef = _this$props.nodeRef) === null || _this$props$nodeRef === void 0 ? void 0 : _this$props$nodeRef.current) !== null && _this$props$nodeRef$c !== void 0 ? _this$props$nodeRef$c : _reactDom.default.findDOMNode(this); + } + }, { + key: "render", + value: function render() + /*: ReactElement*/ + { + var _clsx; + + var _this$props2 = this.props, + axis = _this$props2.axis, + bounds = _this$props2.bounds, + children = _this$props2.children, + defaultPosition = _this$props2.defaultPosition, + defaultClassName = _this$props2.defaultClassName, + defaultClassNameDragging = _this$props2.defaultClassNameDragging, + defaultClassNameDragged = _this$props2.defaultClassNameDragged, + position = _this$props2.position, + positionOffset = _this$props2.positionOffset, + scale = _this$props2.scale, + draggableCoreProps = _objectWithoutProperties(_this$props2, _excluded); + + var style = {}; + var svgTransform = null; // If this is controlled, we don't want to move it - unless it's dragging. + + var controlled = Boolean(position); + var draggable = !controlled || this.state.dragging; + var validPosition = position || defaultPosition; + var transformOpts = { + // Set left if horizontal drag is enabled + x: (0, _positionFns.canDragX)(this) && draggable ? this.state.x : validPosition.x, + // Set top if vertical drag is enabled + y: (0, _positionFns.canDragY)(this) && draggable ? this.state.y : validPosition.y + }; // If this element was SVG, we use the `transform` attribute. + + if (this.state.isElementSVG) { + svgTransform = (0, _domFns.createSVGTransform)(transformOpts, positionOffset); + } else { + // Add a CSS transform to move the element around. This allows us to move the element around + // without worrying about whether or not it is relatively or absolutely positioned. + // If the item you are dragging already has a transform set, wrap it in a so + // has a clean slate. + style = (0, _domFns.createCSSTransform)(transformOpts, positionOffset); + } // Mark with class while dragging + + + var className = (0, _clsx2.default)(children.props.className || '', defaultClassName, (_clsx = {}, _defineProperty(_clsx, defaultClassNameDragging, this.state.dragging), _defineProperty(_clsx, defaultClassNameDragged, this.state.dragged), _clsx)); // Reuse the child provided + // This makes it flexible to use whatever element is wanted (div, ul, etc) + + return /*#__PURE__*/React.createElement(_DraggableCore.default, _extends({}, draggableCoreProps, { + onStart: this.onDragStart, + onDrag: this.onDrag, + onStop: this.onDragStop + }), /*#__PURE__*/React.cloneElement(React.Children.only(children), { + className: className, + style: _objectSpread(_objectSpread({}, children.props.style), style), + transform: svgTransform + })); + } + }], [{ + key: "getDerivedStateFromProps", + value: // React 16.3+ + // Arity (props, state) + function getDerivedStateFromProps(_ref, _ref2) + /*: ?$Shape*/ + { + var position = _ref.position; + var prevPropsPosition = _ref2.prevPropsPosition; + + // Set x/y if a new position is provided in props that is different than the previous. + if (position && (!prevPropsPosition || position.x !== prevPropsPosition.x || position.y !== prevPropsPosition.y)) { + (0, _log.default)('Draggable: getDerivedStateFromProps %j', { + position: position, + prevPropsPosition: prevPropsPosition + }); + return { + x: position.x, + y: position.y, + prevPropsPosition: _objectSpread({}, position) + }; + } + + return null; + } + }]); + + return Draggable; +}(React.Component); + +exports["default"] = Draggable; + +_defineProperty(Draggable, "displayName", 'Draggable'); + +_defineProperty(Draggable, "propTypes", _objectSpread(_objectSpread({}, _DraggableCore.default.propTypes), {}, { + /** + * `axis` determines which axis the draggable can move. + * + * Note that all callbacks will still return data as normal. This only + * controls flushing to the DOM. + * + * 'both' allows movement horizontally and vertically. + * 'x' limits movement to horizontal axis. + * 'y' limits movement to vertical axis. + * 'none' limits all movement. + * + * Defaults to 'both'. + */ + axis: _propTypes.default.oneOf(['both', 'x', 'y', 'none']), + + /** + * `bounds` determines the range of movement available to the element. + * Available values are: + * + * 'parent' restricts movement within the Draggable's parent node. + * + * Alternatively, pass an object with the following properties, all of which are optional: + * + * {left: LEFT_BOUND, right: RIGHT_BOUND, bottom: BOTTOM_BOUND, top: TOP_BOUND} + * + * All values are in px. + * + * Example: + * + * ```jsx + * let App = React.createClass({ + * render: function () { + * return ( + * + *
    Content
    + *
    + * ); + * } + * }); + * ``` + */ + bounds: _propTypes.default.oneOfType([_propTypes.default.shape({ + left: _propTypes.default.number, + right: _propTypes.default.number, + top: _propTypes.default.number, + bottom: _propTypes.default.number + }), _propTypes.default.string, _propTypes.default.oneOf([false])]), + defaultClassName: _propTypes.default.string, + defaultClassNameDragging: _propTypes.default.string, + defaultClassNameDragged: _propTypes.default.string, + + /** + * `defaultPosition` specifies the x and y that the dragged item should start at + * + * Example: + * + * ```jsx + * let App = React.createClass({ + * render: function () { + * return ( + * + *
    I start with transformX: 25px and transformY: 25px;
    + *
    + * ); + * } + * }); + * ``` + */ + defaultPosition: _propTypes.default.shape({ + x: _propTypes.default.number, + y: _propTypes.default.number + }), + positionOffset: _propTypes.default.shape({ + x: _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.string]), + y: _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.string]) + }), + + /** + * `position`, if present, defines the current position of the element. + * + * This is similar to how form elements in React work - if no `position` is supplied, the component + * is uncontrolled. + * + * Example: + * + * ```jsx + * let App = React.createClass({ + * render: function () { + * return ( + * + *
    I start with transformX: 25px and transformY: 25px;
    + *
    + * ); + * } + * }); + * ``` + */ + position: _propTypes.default.shape({ + x: _propTypes.default.number, + y: _propTypes.default.number + }), + + /** + * These properties should be defined on the child, not here. + */ + className: _shims.dontSetMe, + style: _shims.dontSetMe, + transform: _shims.dontSetMe +})); + +_defineProperty(Draggable, "defaultProps", _objectSpread(_objectSpread({}, _DraggableCore.default.defaultProps), {}, { + axis: 'both', + bounds: false, + defaultClassName: 'react-draggable', + defaultClassNameDragging: 'react-draggable-dragging', + defaultClassNameDragged: 'react-draggable-dragged', + defaultPosition: { + x: 0, + y: 0 + }, + scale: 1 +})); + +/***/ }), + +/***/ "../node_modules/react-draggable/build/cjs/DraggableCore.js": +/*!******************************************************************!*\ + !*** ../node_modules/react-draggable/build/cjs/DraggableCore.js ***! + \******************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + + +function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; + +var React = _interopRequireWildcard(__webpack_require__(/*! react */ "react")); + +var _propTypes = _interopRequireDefault(__webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js")); + +var _reactDom = _interopRequireDefault(__webpack_require__(/*! react-dom */ "react-dom")); + +var _domFns = __webpack_require__(/*! ./utils/domFns */ "../node_modules/react-draggable/build/cjs/utils/domFns.js"); + +var _positionFns = __webpack_require__(/*! ./utils/positionFns */ "../node_modules/react-draggable/build/cjs/utils/positionFns.js"); + +var _shims = __webpack_require__(/*! ./utils/shims */ "../node_modules/react-draggable/build/cjs/utils/shims.js"); + +var _log = _interopRequireDefault(__webpack_require__(/*! ./utils/log */ "../node_modules/react-draggable/build/cjs/utils/log.js")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); } + +function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; } + +function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); } + +function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } + +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } + +function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } + +function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, "prototype", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } else if (call !== void 0) { throw new TypeError("Derived constructors may only return object or undefined"); } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + +// Simple abstraction for dragging events names. +var eventsFor = { + touch: { + start: 'touchstart', + move: 'touchmove', + stop: 'touchend' + }, + mouse: { + start: 'mousedown', + move: 'mousemove', + stop: 'mouseup' + } +}; // Default to mouse events. + +var dragEventFor = eventsFor.mouse; +/*:: type DraggableCoreState = { + dragging: boolean, + lastX: number, + lastY: number, + touchIdentifier: ?number +};*/ + +/*:: export type DraggableData = { + node: HTMLElement, + x: number, y: number, + deltaX: number, deltaY: number, + lastX: number, lastY: number, +};*/ + +/*:: export type DraggableEventHandler = (e: MouseEvent, data: DraggableData) => void | false;*/ + +/*:: export type ControlPosition = {x: number, y: number};*/ + +/*:: export type PositionOffsetControlPosition = {x: number|string, y: number|string};*/ + +/*:: export type DraggableCoreDefaultProps = { + allowAnyClick: boolean, + disabled: boolean, + enableUserSelectHack: boolean, + onStart: DraggableEventHandler, + onDrag: DraggableEventHandler, + onStop: DraggableEventHandler, + onMouseDown: (e: MouseEvent) => void, + scale: number, +};*/ + +/*:: export type DraggableCoreProps = { + ...DraggableCoreDefaultProps, + cancel: string, + children: ReactElement, + offsetParent: HTMLElement, + grid: [number, number], + handle: string, + nodeRef?: ?React.ElementRef, +};*/ + +// +// Define . +// +// is for advanced usage of . It maintains minimal internal state so it can +// work well with libraries that require more control over the element. +// +var DraggableCore = /*#__PURE__*/function (_React$Component) { + _inherits(DraggableCore, _React$Component); + + var _super = _createSuper(DraggableCore); + + function DraggableCore() { + var _this; + + _classCallCheck(this, DraggableCore); + + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + _this = _super.call.apply(_super, [this].concat(args)); + + _defineProperty(_assertThisInitialized(_this), "state", { + dragging: false, + // Used while dragging to determine deltas. + lastX: NaN, + lastY: NaN, + touchIdentifier: null + }); + + _defineProperty(_assertThisInitialized(_this), "mounted", false); + + _defineProperty(_assertThisInitialized(_this), "handleDragStart", function (e) { + // Make it possible to attach event handlers on top of this one. + _this.props.onMouseDown(e); // Only accept left-clicks. + + + if (!_this.props.allowAnyClick && typeof e.button === 'number' && e.button !== 0) return false; // Get nodes. Be sure to grab relative document (could be iframed) + + var thisNode = _this.findDOMNode(); + + if (!thisNode || !thisNode.ownerDocument || !thisNode.ownerDocument.body) { + throw new Error(' not mounted on DragStart!'); + } + + var ownerDocument = thisNode.ownerDocument; // Short circuit if handle or cancel prop was provided and selector doesn't match. + + if (_this.props.disabled || !(e.target instanceof ownerDocument.defaultView.Node) || _this.props.handle && !(0, _domFns.matchesSelectorAndParentsTo)(e.target, _this.props.handle, thisNode) || _this.props.cancel && (0, _domFns.matchesSelectorAndParentsTo)(e.target, _this.props.cancel, thisNode)) { + return; + } // Prevent scrolling on mobile devices, like ipad/iphone. + // Important that this is after handle/cancel. + + + if (e.type === 'touchstart') e.preventDefault(); // Set touch identifier in component state if this is a touch event. This allows us to + // distinguish between individual touches on multitouch screens by identifying which + // touchpoint was set to this element. + + var touchIdentifier = (0, _domFns.getTouchIdentifier)(e); + + _this.setState({ + touchIdentifier: touchIdentifier + }); // Get the current drag point from the event. This is used as the offset. + + + var position = (0, _positionFns.getControlPosition)(e, touchIdentifier, _assertThisInitialized(_this)); + if (position == null) return; // not possible but satisfies flow + + var x = position.x, + y = position.y; // Create an event object with all the data parents need to make a decision here. + + var coreEvent = (0, _positionFns.createCoreData)(_assertThisInitialized(_this), x, y); + (0, _log.default)('DraggableCore: handleDragStart: %j', coreEvent); // Call event handler. If it returns explicit false, cancel. + + (0, _log.default)('calling', _this.props.onStart); + + var shouldUpdate = _this.props.onStart(e, coreEvent); + + if (shouldUpdate === false || _this.mounted === false) return; // Add a style to the body to disable user-select. This prevents text from + // being selected all over the page. + + if (_this.props.enableUserSelectHack) (0, _domFns.addUserSelectStyles)(ownerDocument); // Initiate dragging. Set the current x and y as offsets + // so we know how much we've moved during the drag. This allows us + // to drag elements around even if they have been moved, without issue. + + _this.setState({ + dragging: true, + lastX: x, + lastY: y + }); // Add events to the document directly so we catch when the user's mouse/touch moves outside of + // this element. We use different events depending on whether or not we have detected that this + // is a touch-capable device. + + + (0, _domFns.addEvent)(ownerDocument, dragEventFor.move, _this.handleDrag); + (0, _domFns.addEvent)(ownerDocument, dragEventFor.stop, _this.handleDragStop); + }); + + _defineProperty(_assertThisInitialized(_this), "handleDrag", function (e) { + // Get the current drag point from the event. This is used as the offset. + var position = (0, _positionFns.getControlPosition)(e, _this.state.touchIdentifier, _assertThisInitialized(_this)); + if (position == null) return; + var x = position.x, + y = position.y; // Snap to grid if prop has been provided + + if (Array.isArray(_this.props.grid)) { + var deltaX = x - _this.state.lastX, + deltaY = y - _this.state.lastY; + + var _snapToGrid = (0, _positionFns.snapToGrid)(_this.props.grid, deltaX, deltaY); + + var _snapToGrid2 = _slicedToArray(_snapToGrid, 2); + + deltaX = _snapToGrid2[0]; + deltaY = _snapToGrid2[1]; + if (!deltaX && !deltaY) return; // skip useless drag + + x = _this.state.lastX + deltaX, y = _this.state.lastY + deltaY; + } + + var coreEvent = (0, _positionFns.createCoreData)(_assertThisInitialized(_this), x, y); + (0, _log.default)('DraggableCore: handleDrag: %j', coreEvent); // Call event handler. If it returns explicit false, trigger end. + + var shouldUpdate = _this.props.onDrag(e, coreEvent); + + if (shouldUpdate === false || _this.mounted === false) { + try { + // $FlowIgnore + _this.handleDragStop(new MouseEvent('mouseup')); + } catch (err) { + // Old browsers + var event = ((document.createEvent('MouseEvents') + /*: any*/ + ) + /*: MouseTouchEvent*/ + ); // I see why this insanity was deprecated + // $FlowIgnore + + event.initMouseEvent('mouseup', true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null); + + _this.handleDragStop(event); + } + + return; + } + + _this.setState({ + lastX: x, + lastY: y + }); + }); + + _defineProperty(_assertThisInitialized(_this), "handleDragStop", function (e) { + if (!_this.state.dragging) return; + var position = (0, _positionFns.getControlPosition)(e, _this.state.touchIdentifier, _assertThisInitialized(_this)); + if (position == null) return; + var x = position.x, + y = position.y; // Snap to grid if prop has been provided + + if (Array.isArray(_this.props.grid)) { + var deltaX = x - _this.state.lastX || 0; + var deltaY = y - _this.state.lastY || 0; + + var _snapToGrid3 = (0, _positionFns.snapToGrid)(_this.props.grid, deltaX, deltaY); + + var _snapToGrid4 = _slicedToArray(_snapToGrid3, 2); + + deltaX = _snapToGrid4[0]; + deltaY = _snapToGrid4[1]; + x = _this.state.lastX + deltaX, y = _this.state.lastY + deltaY; + } + + var coreEvent = (0, _positionFns.createCoreData)(_assertThisInitialized(_this), x, y); // Call event handler + + var shouldContinue = _this.props.onStop(e, coreEvent); + + if (shouldContinue === false || _this.mounted === false) return false; + + var thisNode = _this.findDOMNode(); + + if (thisNode) { + // Remove user-select hack + if (_this.props.enableUserSelectHack) (0, _domFns.removeUserSelectStyles)(thisNode.ownerDocument); + } + + (0, _log.default)('DraggableCore: handleDragStop: %j', coreEvent); // Reset the el. + + _this.setState({ + dragging: false, + lastX: NaN, + lastY: NaN + }); + + if (thisNode) { + // Remove event handlers + (0, _log.default)('DraggableCore: Removing handlers'); + (0, _domFns.removeEvent)(thisNode.ownerDocument, dragEventFor.move, _this.handleDrag); + (0, _domFns.removeEvent)(thisNode.ownerDocument, dragEventFor.stop, _this.handleDragStop); + } + }); + + _defineProperty(_assertThisInitialized(_this), "onMouseDown", function (e) { + dragEventFor = eventsFor.mouse; // on touchscreen laptops we could switch back to mouse + + return _this.handleDragStart(e); + }); + + _defineProperty(_assertThisInitialized(_this), "onMouseUp", function (e) { + dragEventFor = eventsFor.mouse; + return _this.handleDragStop(e); + }); + + _defineProperty(_assertThisInitialized(_this), "onTouchStart", function (e) { + // We're on a touch device now, so change the event handlers + dragEventFor = eventsFor.touch; + return _this.handleDragStart(e); + }); + + _defineProperty(_assertThisInitialized(_this), "onTouchEnd", function (e) { + // We're on a touch device now, so change the event handlers + dragEventFor = eventsFor.touch; + return _this.handleDragStop(e); + }); + + return _this; + } + + _createClass(DraggableCore, [{ + key: "componentDidMount", + value: function componentDidMount() { + this.mounted = true; // Touch handlers must be added with {passive: false} to be cancelable. + // https://developers.google.com/web/updates/2017/01/scrolling-intervention + + var thisNode = this.findDOMNode(); + + if (thisNode) { + (0, _domFns.addEvent)(thisNode, eventsFor.touch.start, this.onTouchStart, { + passive: false + }); + } + } + }, { + key: "componentWillUnmount", + value: function componentWillUnmount() { + this.mounted = false; // Remove any leftover event handlers. Remove both touch and mouse handlers in case + // some browser quirk caused a touch event to fire during a mouse move, or vice versa. + + var thisNode = this.findDOMNode(); + + if (thisNode) { + var ownerDocument = thisNode.ownerDocument; + (0, _domFns.removeEvent)(ownerDocument, eventsFor.mouse.move, this.handleDrag); + (0, _domFns.removeEvent)(ownerDocument, eventsFor.touch.move, this.handleDrag); + (0, _domFns.removeEvent)(ownerDocument, eventsFor.mouse.stop, this.handleDragStop); + (0, _domFns.removeEvent)(ownerDocument, eventsFor.touch.stop, this.handleDragStop); + (0, _domFns.removeEvent)(thisNode, eventsFor.touch.start, this.onTouchStart, { + passive: false + }); + if (this.props.enableUserSelectHack) (0, _domFns.removeUserSelectStyles)(ownerDocument); + } + } // React Strict Mode compatibility: if `nodeRef` is passed, we will use it instead of trying to find + // the underlying DOM node ourselves. See the README for more information. + + }, { + key: "findDOMNode", + value: function findDOMNode() + /*: ?HTMLElement*/ + { + var _this$props, _this$props2, _this$props2$nodeRef; + + return (_this$props = this.props) !== null && _this$props !== void 0 && _this$props.nodeRef ? (_this$props2 = this.props) === null || _this$props2 === void 0 ? void 0 : (_this$props2$nodeRef = _this$props2.nodeRef) === null || _this$props2$nodeRef === void 0 ? void 0 : _this$props2$nodeRef.current : _reactDom.default.findDOMNode(this); + } + }, { + key: "render", + value: function render() + /*: React.Element*/ + { + // Reuse the child provided + // This makes it flexible to use whatever element is wanted (div, ul, etc) + return /*#__PURE__*/React.cloneElement(React.Children.only(this.props.children), { + // Note: mouseMove handler is attached to document so it will still function + // when the user drags quickly and leaves the bounds of the element. + onMouseDown: this.onMouseDown, + onMouseUp: this.onMouseUp, + // onTouchStart is added on `componentDidMount` so they can be added with + // {passive: false}, which allows it to cancel. See + // https://developers.google.com/web/updates/2017/01/scrolling-intervention + onTouchEnd: this.onTouchEnd + }); + } + }]); + + return DraggableCore; +}(React.Component); + +exports["default"] = DraggableCore; + +_defineProperty(DraggableCore, "displayName", 'DraggableCore'); + +_defineProperty(DraggableCore, "propTypes", { + /** + * `allowAnyClick` allows dragging using any mouse button. + * By default, we only accept the left button. + * + * Defaults to `false`. + */ + allowAnyClick: _propTypes.default.bool, + + /** + * `disabled`, if true, stops the from dragging. All handlers, + * with the exception of `onMouseDown`, will not fire. + */ + disabled: _propTypes.default.bool, + + /** + * By default, we add 'user-select:none' attributes to the document body + * to prevent ugly text selection during drag. If this is causing problems + * for your app, set this to `false`. + */ + enableUserSelectHack: _propTypes.default.bool, + + /** + * `offsetParent`, if set, uses the passed DOM node to compute drag offsets + * instead of using the parent node. + */ + offsetParent: function offsetParent(props + /*: DraggableCoreProps*/ + , propName + /*: $Keys*/ + ) { + if (props[propName] && props[propName].nodeType !== 1) { + throw new Error('Draggable\'s offsetParent must be a DOM Node.'); + } + }, + + /** + * `grid` specifies the x and y that dragging should snap to. + */ + grid: _propTypes.default.arrayOf(_propTypes.default.number), + + /** + * `handle` specifies a selector to be used as the handle that initiates drag. + * + * Example: + * + * ```jsx + * let App = React.createClass({ + * render: function () { + * return ( + * + *
    + *
    Click me to drag
    + *
    This is some other content
    + *
    + *
    + * ); + * } + * }); + * ``` + */ + handle: _propTypes.default.string, + + /** + * `cancel` specifies a selector to be used to prevent drag initialization. + * + * Example: + * + * ```jsx + * let App = React.createClass({ + * render: function () { + * return( + * + *
    + *
    You can't drag from here
    + *
    Dragging here works fine
    + *
    + *
    + * ); + * } + * }); + * ``` + */ + cancel: _propTypes.default.string, + + /* If running in React Strict mode, ReactDOM.findDOMNode() is deprecated. + * Unfortunately, in order for to work properly, we need raw access + * to the underlying DOM node. If you want to avoid the warning, pass a `nodeRef` + * as in this example: + * + * function MyComponent() { + * const nodeRef = React.useRef(null); + * return ( + * + *
    Example Target
    + *
    + * ); + * } + * + * This can be used for arbitrarily nested components, so long as the ref ends up + * pointing to the actual child DOM node and not a custom component. + */ + nodeRef: _propTypes.default.object, + + /** + * Called when dragging starts. + * If this function returns the boolean false, dragging will be canceled. + */ + onStart: _propTypes.default.func, + + /** + * Called while dragging. + * If this function returns the boolean false, dragging will be canceled. + */ + onDrag: _propTypes.default.func, + + /** + * Called when dragging stops. + * If this function returns the boolean false, the drag will remain active. + */ + onStop: _propTypes.default.func, + + /** + * A workaround option which can be passed if onMouseDown needs to be accessed, + * since it'll always be blocked (as there is internal use of onMouseDown) + */ + onMouseDown: _propTypes.default.func, + + /** + * `scale`, if set, applies scaling while dragging an element + */ + scale: _propTypes.default.number, + + /** + * These properties should be defined on the child, not here. + */ + className: _shims.dontSetMe, + style: _shims.dontSetMe, + transform: _shims.dontSetMe +}); + +_defineProperty(DraggableCore, "defaultProps", { + allowAnyClick: false, + // by default only accept left click + disabled: false, + enableUserSelectHack: true, + onStart: function onStart() {}, + onDrag: function onDrag() {}, + onStop: function onStop() {}, + onMouseDown: function onMouseDown() {}, + scale: 1 +}); + +/***/ }), + +/***/ "../node_modules/react-draggable/build/cjs/cjs.js": +/*!********************************************************!*\ + !*** ../node_modules/react-draggable/build/cjs/cjs.js ***! + \********************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + + +var _require = __webpack_require__(/*! ./Draggable */ "../node_modules/react-draggable/build/cjs/Draggable.js"), + Draggable = _require.default, + DraggableCore = _require.DraggableCore; // Previous versions of this lib exported as the root export. As to no-// them, or TypeScript, we export *both* as the root and as 'default'. +// See https://github.com/mzabriskie/react-draggable/pull/254 +// and https://github.com/mzabriskie/react-draggable/issues/266 + + +module.exports = Draggable; +module.exports["default"] = Draggable; +module.exports.DraggableCore = DraggableCore; + +/***/ }), + +/***/ "../node_modules/react-draggable/build/cjs/utils/domFns.js": +/*!*****************************************************************!*\ + !*** ../node_modules/react-draggable/build/cjs/utils/domFns.js ***! + \*****************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + + +function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.addClassName = addClassName; +exports.addEvent = addEvent; +exports.addUserSelectStyles = addUserSelectStyles; +exports.createCSSTransform = createCSSTransform; +exports.createSVGTransform = createSVGTransform; +exports.getTouch = getTouch; +exports.getTouchIdentifier = getTouchIdentifier; +exports.getTranslation = getTranslation; +exports.innerHeight = innerHeight; +exports.innerWidth = innerWidth; +exports.matchesSelector = matchesSelector; +exports.matchesSelectorAndParentsTo = matchesSelectorAndParentsTo; +exports.offsetXYFromParent = offsetXYFromParent; +exports.outerHeight = outerHeight; +exports.outerWidth = outerWidth; +exports.removeClassName = removeClassName; +exports.removeEvent = removeEvent; +exports.removeUserSelectStyles = removeUserSelectStyles; + +var _shims = __webpack_require__(/*! ./shims */ "../node_modules/react-draggable/build/cjs/utils/shims.js"); + +var _getPrefix = _interopRequireWildcard(__webpack_require__(/*! ./getPrefix */ "../node_modules/react-draggable/build/cjs/utils/getPrefix.js")); + +function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); } + +function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; } + +function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; } + +function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; } + +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + +var matchesSelectorFunc = ''; + +function matchesSelector(el +/*: Node*/ +, selector +/*: string*/ +) +/*: boolean*/ +{ + if (!matchesSelectorFunc) { + matchesSelectorFunc = (0, _shims.findInArray)(['matches', 'webkitMatchesSelector', 'mozMatchesSelector', 'msMatchesSelector', 'oMatchesSelector'], function (method) { + // $FlowIgnore: Doesn't think elements are indexable + return (0, _shims.isFunction)(el[method]); + }); + } // Might not be found entirely (not an Element?) - in that case, bail + // $FlowIgnore: Doesn't think elements are indexable + + + if (!(0, _shims.isFunction)(el[matchesSelectorFunc])) return false; // $FlowIgnore: Doesn't think elements are indexable + + return el[matchesSelectorFunc](selector); +} // Works up the tree to the draggable itself attempting to match selector. + + +function matchesSelectorAndParentsTo(el +/*: Node*/ +, selector +/*: string*/ +, baseNode +/*: Node*/ +) +/*: boolean*/ +{ + var node = el; + + do { + if (matchesSelector(node, selector)) return true; + if (node === baseNode) return false; + node = node.parentNode; + } while (node); + + return false; +} + +function addEvent(el +/*: ?Node*/ +, event +/*: string*/ +, handler +/*: Function*/ +, inputOptions +/*: Object*/ +) +/*: void*/ +{ + if (!el) return; + + var options = _objectSpread({ + capture: true + }, inputOptions); // $FlowIgnore[method-unbinding] + + + if (el.addEventListener) { + el.addEventListener(event, handler, options); + } else if (el.attachEvent) { + el.attachEvent('on' + event, handler); + } else { + // $FlowIgnore: Doesn't think elements are indexable + el['on' + event] = handler; + } +} + +function removeEvent(el +/*: ?Node*/ +, event +/*: string*/ +, handler +/*: Function*/ +, inputOptions +/*: Object*/ +) +/*: void*/ +{ + if (!el) return; + + var options = _objectSpread({ + capture: true + }, inputOptions); // $FlowIgnore[method-unbinding] + + + if (el.removeEventListener) { + el.removeEventListener(event, handler, options); + } else if (el.detachEvent) { + el.detachEvent('on' + event, handler); + } else { + // $FlowIgnore: Doesn't think elements are indexable + el['on' + event] = null; + } +} + +function outerHeight(node +/*: HTMLElement*/ +) +/*: number*/ +{ + // This is deliberately excluding margin for our calculations, since we are using + // offsetTop which is including margin. See getBoundPosition + var height = node.clientHeight; + var computedStyle = node.ownerDocument.defaultView.getComputedStyle(node); + height += (0, _shims.int)(computedStyle.borderTopWidth); + height += (0, _shims.int)(computedStyle.borderBottomWidth); + return height; +} + +function outerWidth(node +/*: HTMLElement*/ +) +/*: number*/ +{ + // This is deliberately excluding margin for our calculations, since we are using + // offsetLeft which is including margin. See getBoundPosition + var width = node.clientWidth; + var computedStyle = node.ownerDocument.defaultView.getComputedStyle(node); + width += (0, _shims.int)(computedStyle.borderLeftWidth); + width += (0, _shims.int)(computedStyle.borderRightWidth); + return width; +} + +function innerHeight(node +/*: HTMLElement*/ +) +/*: number*/ +{ + var height = node.clientHeight; + var computedStyle = node.ownerDocument.defaultView.getComputedStyle(node); + height -= (0, _shims.int)(computedStyle.paddingTop); + height -= (0, _shims.int)(computedStyle.paddingBottom); + return height; +} + +function innerWidth(node +/*: HTMLElement*/ +) +/*: number*/ +{ + var width = node.clientWidth; + var computedStyle = node.ownerDocument.defaultView.getComputedStyle(node); + width -= (0, _shims.int)(computedStyle.paddingLeft); + width -= (0, _shims.int)(computedStyle.paddingRight); + return width; +} +/*:: interface EventWithOffset { + clientX: number, clientY: number +}*/ + + +// Get from offsetParent +function offsetXYFromParent(evt +/*: EventWithOffset*/ +, offsetParent +/*: HTMLElement*/ +, scale +/*: number*/ +) +/*: ControlPosition*/ +{ + var isBody = offsetParent === offsetParent.ownerDocument.body; + var offsetParentRect = isBody ? { + left: 0, + top: 0 + } : offsetParent.getBoundingClientRect(); + var x = (evt.clientX + offsetParent.scrollLeft - offsetParentRect.left) / scale; + var y = (evt.clientY + offsetParent.scrollTop - offsetParentRect.top) / scale; + return { + x: x, + y: y + }; +} + +function createCSSTransform(controlPos +/*: ControlPosition*/ +, positionOffset +/*: PositionOffsetControlPosition*/ +) +/*: Object*/ +{ + var translation = getTranslation(controlPos, positionOffset, 'px'); + return _defineProperty({}, (0, _getPrefix.browserPrefixToKey)('transform', _getPrefix.default), translation); +} + +function createSVGTransform(controlPos +/*: ControlPosition*/ +, positionOffset +/*: PositionOffsetControlPosition*/ +) +/*: string*/ +{ + var translation = getTranslation(controlPos, positionOffset, ''); + return translation; +} + +function getTranslation(_ref2, positionOffset +/*: PositionOffsetControlPosition*/ +, unitSuffix +/*: string*/ +) +/*: string*/ +{ + var x = _ref2.x, + y = _ref2.y; + var translation = "translate(".concat(x).concat(unitSuffix, ",").concat(y).concat(unitSuffix, ")"); + + if (positionOffset) { + var defaultX = "".concat(typeof positionOffset.x === 'string' ? positionOffset.x : positionOffset.x + unitSuffix); + var defaultY = "".concat(typeof positionOffset.y === 'string' ? positionOffset.y : positionOffset.y + unitSuffix); + translation = "translate(".concat(defaultX, ", ").concat(defaultY, ")") + translation; + } + + return translation; +} + +function getTouch(e +/*: MouseTouchEvent*/ +, identifier +/*: number*/ +) +/*: ?{clientX: number, clientY: number}*/ +{ + return e.targetTouches && (0, _shims.findInArray)(e.targetTouches, function (t) { + return identifier === t.identifier; + }) || e.changedTouches && (0, _shims.findInArray)(e.changedTouches, function (t) { + return identifier === t.identifier; + }); +} + +function getTouchIdentifier(e +/*: MouseTouchEvent*/ +) +/*: ?number*/ +{ + if (e.targetTouches && e.targetTouches[0]) return e.targetTouches[0].identifier; + if (e.changedTouches && e.changedTouches[0]) return e.changedTouches[0].identifier; +} // User-select Hacks: +// +// Useful for preventing blue highlights all over everything when dragging. +// Note we're passing `document` b/c we could be iframed + + +function addUserSelectStyles(doc +/*: ?Document*/ +) { + if (!doc) return; + var styleEl = doc.getElementById('react-draggable-style-el'); + + if (!styleEl) { + styleEl = doc.createElement('style'); + styleEl.type = 'text/css'; + styleEl.id = 'react-draggable-style-el'; + styleEl.innerHTML = '.react-draggable-transparent-selection *::-moz-selection {all: inherit;}\n'; + styleEl.innerHTML += '.react-draggable-transparent-selection *::selection {all: inherit;}\n'; + doc.getElementsByTagName('head')[0].appendChild(styleEl); + } + + if (doc.body) addClassName(doc.body, 'react-draggable-transparent-selection'); +} + +function removeUserSelectStyles(doc +/*: ?Document*/ +) { + if (!doc) return; + + try { + if (doc.body) removeClassName(doc.body, 'react-draggable-transparent-selection'); // $FlowIgnore: IE + + if (doc.selection) { + // $FlowIgnore: IE + doc.selection.empty(); + } else { + // Remove selection caused by scroll, unless it's a focused input + // (we use doc.defaultView in case we're in an iframe) + var selection = (doc.defaultView || window).getSelection(); + + if (selection && selection.type !== 'Caret') { + selection.removeAllRanges(); + } + } + } catch (e) {// probably IE + } +} + +function addClassName(el +/*: HTMLElement*/ +, className +/*: string*/ +) { + if (el.classList) { + el.classList.add(className); + } else { + if (!el.className.match(new RegExp("(?:^|\\s)".concat(className, "(?!\\S)")))) { + el.className += " ".concat(className); + } + } +} + +function removeClassName(el +/*: HTMLElement*/ +, className +/*: string*/ +) { + if (el.classList) { + el.classList.remove(className); + } else { + el.className = el.className.replace(new RegExp("(?:^|\\s)".concat(className, "(?!\\S)"), 'g'), ''); + } +} + +/***/ }), + +/***/ "../node_modules/react-draggable/build/cjs/utils/getPrefix.js": +/*!********************************************************************!*\ + !*** ../node_modules/react-draggable/build/cjs/utils/getPrefix.js ***! + \********************************************************************/ +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.browserPrefixToKey = browserPrefixToKey; +exports.browserPrefixToStyle = browserPrefixToStyle; +exports["default"] = void 0; +exports.getPrefix = getPrefix; +var prefixes = ['Moz', 'Webkit', 'O', 'ms']; + +function getPrefix() +/*: string*/ +{ + var _window$document, _window$document$docu; + + var prop + /*: string*/ + = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'transform'; + // Ensure we're running in an environment where there is actually a global + // `window` obj + if (typeof window === 'undefined') return ''; // If we're in a pseudo-browser server-side environment, this access + // path may not exist, so bail out if it doesn't. + + var style = (_window$document = window.document) === null || _window$document === void 0 ? void 0 : (_window$document$docu = _window$document.documentElement) === null || _window$document$docu === void 0 ? void 0 : _window$document$docu.style; + if (!style) return ''; + if (prop in style) return ''; + + for (var i = 0; i < prefixes.length; i++) { + if (browserPrefixToKey(prop, prefixes[i]) in style) return prefixes[i]; + } + + return ''; +} + +function browserPrefixToKey(prop +/*: string*/ +, prefix +/*: string*/ +) +/*: string*/ +{ + return prefix ? "".concat(prefix).concat(kebabToTitleCase(prop)) : prop; +} + +function browserPrefixToStyle(prop +/*: string*/ +, prefix +/*: string*/ +) +/*: string*/ +{ + return prefix ? "-".concat(prefix.toLowerCase(), "-").concat(prop) : prop; +} + +function kebabToTitleCase(str +/*: string*/ +) +/*: string*/ +{ + var out = ''; + var shouldCapitalize = true; + + for (var i = 0; i < str.length; i++) { + if (shouldCapitalize) { + out += str[i].toUpperCase(); + shouldCapitalize = false; + } else if (str[i] === '-') { + shouldCapitalize = true; + } else { + out += str[i]; + } + } + + return out; +} // Default export is the prefix itself, like 'Moz', 'Webkit', etc +// Note that you may have to re-test for certain things; for instance, Chrome 50 +// can handle unprefixed `transform`, but not unprefixed `user-select` + + +var _default = (getPrefix() +/*: string*/ +); + +exports["default"] = _default; + +/***/ }), + +/***/ "../node_modules/react-draggable/build/cjs/utils/log.js": +/*!**************************************************************!*\ + !*** ../node_modules/react-draggable/build/cjs/utils/log.js ***! + \**************************************************************/ +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = log; + +/*eslint no-console:0*/ +function log() { + var _console; + + if (false) {} +} + +/***/ }), + +/***/ "../node_modules/react-draggable/build/cjs/utils/positionFns.js": +/*!**********************************************************************!*\ + !*** ../node_modules/react-draggable/build/cjs/utils/positionFns.js ***! + \**********************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.canDragX = canDragX; +exports.canDragY = canDragY; +exports.createCoreData = createCoreData; +exports.createDraggableData = createDraggableData; +exports.getBoundPosition = getBoundPosition; +exports.getControlPosition = getControlPosition; +exports.snapToGrid = snapToGrid; + +var _shims = __webpack_require__(/*! ./shims */ "../node_modules/react-draggable/build/cjs/utils/shims.js"); + +var _domFns = __webpack_require__(/*! ./domFns */ "../node_modules/react-draggable/build/cjs/utils/domFns.js"); + +function getBoundPosition(draggable +/*: Draggable*/ +, x +/*: number*/ +, y +/*: number*/ +) +/*: [number, number]*/ +{ + // If no bounds, short-circuit and move on + if (!draggable.props.bounds) return [x, y]; // Clone new bounds + + var bounds = draggable.props.bounds; + bounds = typeof bounds === 'string' ? bounds : cloneBounds(bounds); + var node = findDOMNode(draggable); + + if (typeof bounds === 'string') { + var ownerDocument = node.ownerDocument; + var ownerWindow = ownerDocument.defaultView; + var boundNode; + + if (bounds === 'parent') { + boundNode = node.parentNode; + } else { + boundNode = ownerDocument.querySelector(bounds); + } + + if (!(boundNode instanceof ownerWindow.HTMLElement)) { + throw new Error('Bounds selector "' + bounds + '" could not find an element.'); + } + + var boundNodeEl + /*: HTMLElement*/ + = boundNode; // for Flow, can't seem to refine correctly + + var nodeStyle = ownerWindow.getComputedStyle(node); + var boundNodeStyle = ownerWindow.getComputedStyle(boundNodeEl); // Compute bounds. This is a pain with padding and offsets but this gets it exactly right. + + bounds = { + left: -node.offsetLeft + (0, _shims.int)(boundNodeStyle.paddingLeft) + (0, _shims.int)(nodeStyle.marginLeft), + top: -node.offsetTop + (0, _shims.int)(boundNodeStyle.paddingTop) + (0, _shims.int)(nodeStyle.marginTop), + right: (0, _domFns.innerWidth)(boundNodeEl) - (0, _domFns.outerWidth)(node) - node.offsetLeft + (0, _shims.int)(boundNodeStyle.paddingRight) - (0, _shims.int)(nodeStyle.marginRight), + bottom: (0, _domFns.innerHeight)(boundNodeEl) - (0, _domFns.outerHeight)(node) - node.offsetTop + (0, _shims.int)(boundNodeStyle.paddingBottom) - (0, _shims.int)(nodeStyle.marginBottom) + }; + } // Keep x and y below right and bottom limits... + + + if ((0, _shims.isNum)(bounds.right)) x = Math.min(x, bounds.right); + if ((0, _shims.isNum)(bounds.bottom)) y = Math.min(y, bounds.bottom); // But above left and top limits. + + if ((0, _shims.isNum)(bounds.left)) x = Math.max(x, bounds.left); + if ((0, _shims.isNum)(bounds.top)) y = Math.max(y, bounds.top); + return [x, y]; +} + +function snapToGrid(grid +/*: [number, number]*/ +, pendingX +/*: number*/ +, pendingY +/*: number*/ +) +/*: [number, number]*/ +{ + var x = Math.round(pendingX / grid[0]) * grid[0]; + var y = Math.round(pendingY / grid[1]) * grid[1]; + return [x, y]; +} + +function canDragX(draggable +/*: Draggable*/ +) +/*: boolean*/ +{ + return draggable.props.axis === 'both' || draggable.props.axis === 'x'; +} + +function canDragY(draggable +/*: Draggable*/ +) +/*: boolean*/ +{ + return draggable.props.axis === 'both' || draggable.props.axis === 'y'; +} // Get {x, y} positions from event. + + +function getControlPosition(e +/*: MouseTouchEvent*/ +, touchIdentifier +/*: ?number*/ +, draggableCore +/*: DraggableCore*/ +) +/*: ?ControlPosition*/ +{ + var touchObj = typeof touchIdentifier === 'number' ? (0, _domFns.getTouch)(e, touchIdentifier) : null; + if (typeof touchIdentifier === 'number' && !touchObj) return null; // not the right touch + + var node = findDOMNode(draggableCore); // User can provide an offsetParent if desired. + + var offsetParent = draggableCore.props.offsetParent || node.offsetParent || node.ownerDocument.body; + return (0, _domFns.offsetXYFromParent)(touchObj || e, offsetParent, draggableCore.props.scale); +} // Create an data object exposed by 's events + + +function createCoreData(draggable +/*: DraggableCore*/ +, x +/*: number*/ +, y +/*: number*/ +) +/*: DraggableData*/ +{ + var state = draggable.state; + var isStart = !(0, _shims.isNum)(state.lastX); + var node = findDOMNode(draggable); + + if (isStart) { + // If this is our first move, use the x and y as last coords. + return { + node: node, + deltaX: 0, + deltaY: 0, + lastX: x, + lastY: y, + x: x, + y: y + }; + } else { + // Otherwise calculate proper values. + return { + node: node, + deltaX: x - state.lastX, + deltaY: y - state.lastY, + lastX: state.lastX, + lastY: state.lastY, + x: x, + y: y + }; + } +} // Create an data exposed by 's events + + +function createDraggableData(draggable +/*: Draggable*/ +, coreData +/*: DraggableData*/ +) +/*: DraggableData*/ +{ + var scale = draggable.props.scale; + return { + node: coreData.node, + x: draggable.state.x + coreData.deltaX / scale, + y: draggable.state.y + coreData.deltaY / scale, + deltaX: coreData.deltaX / scale, + deltaY: coreData.deltaY / scale, + lastX: draggable.state.x, + lastY: draggable.state.y + }; +} // A lot faster than stringify/parse + + +function cloneBounds(bounds +/*: Bounds*/ +) +/*: Bounds*/ +{ + return { + left: bounds.left, + top: bounds.top, + right: bounds.right, + bottom: bounds.bottom + }; +} + +function findDOMNode(draggable +/*: Draggable | DraggableCore*/ +) +/*: HTMLElement*/ +{ + var node = draggable.findDOMNode(); + + if (!node) { + throw new Error(': Unmounted during event!'); + } // $FlowIgnore we can't assert on HTMLElement due to tests... FIXME + + + return node; +} + +/***/ }), + +/***/ "../node_modules/react-draggable/build/cjs/utils/shims.js": +/*!****************************************************************!*\ + !*** ../node_modules/react-draggable/build/cjs/utils/shims.js ***! + \****************************************************************/ +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.dontSetMe = dontSetMe; +exports.findInArray = findInArray; +exports.int = int; +exports.isFunction = isFunction; +exports.isNum = isNum; + +// @credits https://gist.github.com/rogozhnikoff/a43cfed27c41e4e68cdc +function findInArray(array +/*: Array | TouchList*/ +, callback +/*: Function*/ +) +/*: any*/ +{ + for (var i = 0, length = array.length; i < length; i++) { + if (callback.apply(callback, [array[i], i, array])) return array[i]; + } +} + +function isFunction(func +/*: any*/ +) +/*: boolean %checks*/ +{ + // $FlowIgnore[method-unbinding] + return typeof func === 'function' || Object.prototype.toString.call(func) === '[object Function]'; +} + +function isNum(num +/*: any*/ +) +/*: boolean %checks*/ +{ + return typeof num === 'number' && !isNaN(num); +} + +function int(a +/*: string*/ +) +/*: number*/ +{ + return parseInt(a, 10); +} + +function dontSetMe(props +/*: Object*/ +, propName +/*: string*/ +, componentName +/*: string*/ +) +/*: ?Error*/ +{ + if (props[propName]) { + return new Error("Invalid prop ".concat(propName, " passed to ").concat(componentName, " - do not set this, set it on the child.")); + } +} + +/***/ }), + +/***/ "../node_modules/react-infinite-scroller/dist/InfiniteScroll.js": +/*!**********************************************************************!*\ + !*** ../node_modules/react-infinite-scroller/dist/InfiniteScroll.js ***! + \**********************************************************************/ +/***/ ((module, exports, __webpack_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +var _react = __webpack_require__(/*! react */ "react"); + +var _react2 = _interopRequireDefault(_react); + +var _propTypes = __webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js"); + +var _propTypes2 = _interopRequireDefault(_propTypes); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +var InfiniteScroll = function (_Component) { + _inherits(InfiniteScroll, _Component); + + function InfiniteScroll(props) { + _classCallCheck(this, InfiniteScroll); + + var _this = _possibleConstructorReturn(this, (InfiniteScroll.__proto__ || Object.getPrototypeOf(InfiniteScroll)).call(this, props)); + + _this.scrollListener = _this.scrollListener.bind(_this); + _this.eventListenerOptions = _this.eventListenerOptions.bind(_this); + _this.mousewheelListener = _this.mousewheelListener.bind(_this); + return _this; + } + + _createClass(InfiniteScroll, [{ + key: 'componentDidMount', + value: function componentDidMount() { + this.pageLoaded = this.props.pageStart; + this.options = this.eventListenerOptions(); + this.attachScrollListener(); + } + }, { + key: 'componentDidUpdate', + value: function componentDidUpdate() { + if (this.props.isReverse && this.loadMore) { + var parentElement = this.getParentElement(this.scrollComponent); + parentElement.scrollTop = parentElement.scrollHeight - this.beforeScrollHeight + this.beforeScrollTop; + this.loadMore = false; + } + this.attachScrollListener(); + } + }, { + key: 'componentWillUnmount', + value: function componentWillUnmount() { + this.detachScrollListener(); + this.detachMousewheelListener(); + } + }, { + key: 'isPassiveSupported', + value: function isPassiveSupported() { + var passive = false; + + var testOptions = { + get passive() { + passive = true; + } + }; + + try { + document.addEventListener('test', null, testOptions); + document.removeEventListener('test', null, testOptions); + } catch (e) { + // ignore + } + return passive; + } + }, { + key: 'eventListenerOptions', + value: function eventListenerOptions() { + var options = this.props.useCapture; + + if (this.isPassiveSupported()) { + options = { + useCapture: this.props.useCapture, + passive: true + }; + } else { + options = { + passive: false + }; + } + return options; + } + + // Set a defaut loader for all your `InfiniteScroll` components + + }, { + key: 'setDefaultLoader', + value: function setDefaultLoader(loader) { + this.defaultLoader = loader; + } + }, { + key: 'detachMousewheelListener', + value: function detachMousewheelListener() { + var scrollEl = window; + if (this.props.useWindow === false) { + scrollEl = this.scrollComponent.parentNode; + } + + scrollEl.removeEventListener('mousewheel', this.mousewheelListener, this.options ? this.options : this.props.useCapture); + } + }, { + key: 'detachScrollListener', + value: function detachScrollListener() { + var scrollEl = window; + if (this.props.useWindow === false) { + scrollEl = this.getParentElement(this.scrollComponent); + } + + scrollEl.removeEventListener('scroll', this.scrollListener, this.options ? this.options : this.props.useCapture); + scrollEl.removeEventListener('resize', this.scrollListener, this.options ? this.options : this.props.useCapture); + } + }, { + key: 'getParentElement', + value: function getParentElement(el) { + var scrollParent = this.props.getScrollParent && this.props.getScrollParent(); + if (scrollParent != null) { + return scrollParent; + } + return el && el.parentNode; + } + }, { + key: 'filterProps', + value: function filterProps(props) { + return props; + } + }, { + key: 'attachScrollListener', + value: function attachScrollListener() { + var parentElement = this.getParentElement(this.scrollComponent); + + if (!this.props.hasMore || !parentElement) { + return; + } + + var scrollEl = window; + if (this.props.useWindow === false) { + scrollEl = parentElement; + } + + scrollEl.addEventListener('mousewheel', this.mousewheelListener, this.options ? this.options : this.props.useCapture); + scrollEl.addEventListener('scroll', this.scrollListener, this.options ? this.options : this.props.useCapture); + scrollEl.addEventListener('resize', this.scrollListener, this.options ? this.options : this.props.useCapture); + + if (this.props.initialLoad) { + this.scrollListener(); + } + } + }, { + key: 'mousewheelListener', + value: function mousewheelListener(e) { + // Prevents Chrome hangups + // See: https://stackoverflow.com/questions/47524205/random-high-content-download-time-in-chrome/47684257#47684257 + if (e.deltaY === 1 && !this.isPassiveSupported()) { + e.preventDefault(); + } + } + }, { + key: 'scrollListener', + value: function scrollListener() { + var el = this.scrollComponent; + var scrollEl = window; + var parentNode = this.getParentElement(el); + + var offset = void 0; + if (this.props.useWindow) { + var doc = document.documentElement || document.body.parentNode || document.body; + var scrollTop = scrollEl.pageYOffset !== undefined ? scrollEl.pageYOffset : doc.scrollTop; + if (this.props.isReverse) { + offset = scrollTop; + } else { + offset = this.calculateOffset(el, scrollTop); + } + } else if (this.props.isReverse) { + offset = parentNode.scrollTop; + } else { + offset = el.scrollHeight - parentNode.scrollTop - parentNode.clientHeight; + } + + // Here we make sure the element is visible as well as checking the offset + if (offset < Number(this.props.threshold) && el && el.offsetParent !== null) { + this.detachScrollListener(); + this.beforeScrollHeight = parentNode.scrollHeight; + this.beforeScrollTop = parentNode.scrollTop; + // Call loadMore after detachScrollListener to allow for non-async loadMore functions + if (typeof this.props.loadMore === 'function') { + this.props.loadMore(this.pageLoaded += 1); + this.loadMore = true; + } + } + } + }, { + key: 'calculateOffset', + value: function calculateOffset(el, scrollTop) { + if (!el) { + return 0; + } + + return this.calculateTopPosition(el) + (el.offsetHeight - scrollTop - window.innerHeight); + } + }, { + key: 'calculateTopPosition', + value: function calculateTopPosition(el) { + if (!el) { + return 0; + } + return el.offsetTop + this.calculateTopPosition(el.offsetParent); + } + }, { + key: 'render', + value: function render() { + var _this2 = this; + + var renderProps = this.filterProps(this.props); + + var children = renderProps.children, + element = renderProps.element, + hasMore = renderProps.hasMore, + initialLoad = renderProps.initialLoad, + isReverse = renderProps.isReverse, + loader = renderProps.loader, + loadMore = renderProps.loadMore, + pageStart = renderProps.pageStart, + ref = renderProps.ref, + threshold = renderProps.threshold, + useCapture = renderProps.useCapture, + useWindow = renderProps.useWindow, + getScrollParent = renderProps.getScrollParent, + props = _objectWithoutProperties(renderProps, ['children', 'element', 'hasMore', 'initialLoad', 'isReverse', 'loader', 'loadMore', 'pageStart', 'ref', 'threshold', 'useCapture', 'useWindow', 'getScrollParent']); + + props.ref = function (node) { + _this2.scrollComponent = node; + if (ref) { + ref(node); + } + }; + + var childrenArray = [children]; + if (hasMore) { + if (loader) { + isReverse ? childrenArray.unshift(loader) : childrenArray.push(loader); + } else if (this.defaultLoader) { + isReverse ? childrenArray.unshift(this.defaultLoader) : childrenArray.push(this.defaultLoader); + } + } + return _react2.default.createElement(element, props, childrenArray); + } + }]); + + return InfiniteScroll; +}(_react.Component); + +InfiniteScroll.propTypes = { + children: _propTypes2.default.node.isRequired, + element: _propTypes2.default.node, + hasMore: _propTypes2.default.bool, + initialLoad: _propTypes2.default.bool, + isReverse: _propTypes2.default.bool, + loader: _propTypes2.default.node, + loadMore: _propTypes2.default.func.isRequired, + pageStart: _propTypes2.default.number, + ref: _propTypes2.default.func, + getScrollParent: _propTypes2.default.func, + threshold: _propTypes2.default.number, + useCapture: _propTypes2.default.bool, + useWindow: _propTypes2.default.bool +}; +InfiniteScroll.defaultProps = { + element: 'div', + hasMore: false, + initialLoad: true, + pageStart: 0, + ref: null, + threshold: 250, + useWindow: true, + isReverse: false, + useCapture: false, + loader: null, + getScrollParent: null +}; +exports["default"] = InfiniteScroll; +module.exports = exports['default']; + + +/***/ }), + +/***/ "../node_modules/react-infinite-scroller/index.js": +/*!********************************************************!*\ + !*** ../node_modules/react-infinite-scroller/index.js ***! + \********************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +module.exports = __webpack_require__(/*! ./dist/InfiniteScroll */ "../node_modules/react-infinite-scroller/dist/InfiniteScroll.js") + + +/***/ }), + +/***/ "../node_modules/react-is/cjs/react-is.development.js": +/*!************************************************************!*\ + !*** ../node_modules/react-is/cjs/react-is.development.js ***! + \************************************************************/ +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; +/** + * @license React + * react-is.development.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + + + +if (true) { + (function() { +'use strict'; + +// ATTENTION +// When adding new symbols to this file, +// Please consider also adding to 'react-devtools-shared/src/backend/ReactSymbols' +// The Symbol used to tag the ReactElement-like types. +var REACT_ELEMENT_TYPE = Symbol.for('react.element'); +var REACT_PORTAL_TYPE = Symbol.for('react.portal'); +var REACT_FRAGMENT_TYPE = Symbol.for('react.fragment'); +var REACT_STRICT_MODE_TYPE = Symbol.for('react.strict_mode'); +var REACT_PROFILER_TYPE = Symbol.for('react.profiler'); +var REACT_PROVIDER_TYPE = Symbol.for('react.provider'); +var REACT_CONTEXT_TYPE = Symbol.for('react.context'); +var REACT_SERVER_CONTEXT_TYPE = Symbol.for('react.server_context'); +var REACT_FORWARD_REF_TYPE = Symbol.for('react.forward_ref'); +var REACT_SUSPENSE_TYPE = Symbol.for('react.suspense'); +var REACT_SUSPENSE_LIST_TYPE = Symbol.for('react.suspense_list'); +var REACT_MEMO_TYPE = Symbol.for('react.memo'); +var REACT_LAZY_TYPE = Symbol.for('react.lazy'); +var REACT_OFFSCREEN_TYPE = Symbol.for('react.offscreen'); + +// ----------------------------------------------------------------------------- + +var enableScopeAPI = false; // Experimental Create Event Handle API. +var enableCacheElement = false; +var enableTransitionTracing = false; // No known bugs, but needs performance testing + +var enableLegacyHidden = false; // Enables unstable_avoidThisFallback feature in Fiber +// stuff. Intended to enable React core members to more easily debug scheduling +// issues in DEV builds. + +var enableDebugTracing = false; // Track which Fiber(s) schedule render work. + +var REACT_MODULE_REFERENCE; + +{ + REACT_MODULE_REFERENCE = Symbol.for('react.module.reference'); +} + +function isValidElementType(type) { + if (typeof type === 'string' || typeof type === 'function') { + return true; + } // Note: typeof might be other than 'symbol' or 'number' (e.g. if it's a polyfill). + + + if (type === REACT_FRAGMENT_TYPE || type === REACT_PROFILER_TYPE || enableDebugTracing || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || enableLegacyHidden || type === REACT_OFFSCREEN_TYPE || enableScopeAPI || enableCacheElement || enableTransitionTracing ) { + return true; + } + + if (typeof type === 'object' && type !== null) { + if (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || // This needs to include all possible module reference object + // types supported by any Flight configuration anywhere since + // we don't know which Flight build this will end up being used + // with. + type.$$typeof === REACT_MODULE_REFERENCE || type.getModuleId !== undefined) { + return true; + } + } + + return false; +} + +function typeOf(object) { + if (typeof object === 'object' && object !== null) { + var $$typeof = object.$$typeof; + + switch ($$typeof) { + case REACT_ELEMENT_TYPE: + var type = object.type; + + switch (type) { + case REACT_FRAGMENT_TYPE: + case REACT_PROFILER_TYPE: + case REACT_STRICT_MODE_TYPE: + case REACT_SUSPENSE_TYPE: + case REACT_SUSPENSE_LIST_TYPE: + return type; + + default: + var $$typeofType = type && type.$$typeof; + + switch ($$typeofType) { + case REACT_SERVER_CONTEXT_TYPE: + case REACT_CONTEXT_TYPE: + case REACT_FORWARD_REF_TYPE: + case REACT_LAZY_TYPE: + case REACT_MEMO_TYPE: + case REACT_PROVIDER_TYPE: + return $$typeofType; + + default: + return $$typeof; + } + + } + + case REACT_PORTAL_TYPE: + return $$typeof; + } + } + + return undefined; +} +var ContextConsumer = REACT_CONTEXT_TYPE; +var ContextProvider = REACT_PROVIDER_TYPE; +var Element = REACT_ELEMENT_TYPE; +var ForwardRef = REACT_FORWARD_REF_TYPE; +var Fragment = REACT_FRAGMENT_TYPE; +var Lazy = REACT_LAZY_TYPE; +var Memo = REACT_MEMO_TYPE; +var Portal = REACT_PORTAL_TYPE; +var Profiler = REACT_PROFILER_TYPE; +var StrictMode = REACT_STRICT_MODE_TYPE; +var Suspense = REACT_SUSPENSE_TYPE; +var SuspenseList = REACT_SUSPENSE_LIST_TYPE; +var hasWarnedAboutDeprecatedIsAsyncMode = false; +var hasWarnedAboutDeprecatedIsConcurrentMode = false; // AsyncMode should be deprecated + +function isAsyncMode(object) { + { + if (!hasWarnedAboutDeprecatedIsAsyncMode) { + hasWarnedAboutDeprecatedIsAsyncMode = true; // Using console['warn'] to evade Babel and ESLint + + console['warn']('The ReactIs.isAsyncMode() alias has been deprecated, ' + 'and will be removed in React 18+.'); + } + } + + return false; +} +function isConcurrentMode(object) { + { + if (!hasWarnedAboutDeprecatedIsConcurrentMode) { + hasWarnedAboutDeprecatedIsConcurrentMode = true; // Using console['warn'] to evade Babel and ESLint + + console['warn']('The ReactIs.isConcurrentMode() alias has been deprecated, ' + 'and will be removed in React 18+.'); + } + } + + return false; +} +function isContextConsumer(object) { + return typeOf(object) === REACT_CONTEXT_TYPE; +} +function isContextProvider(object) { + return typeOf(object) === REACT_PROVIDER_TYPE; +} +function isElement(object) { + return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE; +} +function isForwardRef(object) { + return typeOf(object) === REACT_FORWARD_REF_TYPE; +} +function isFragment(object) { + return typeOf(object) === REACT_FRAGMENT_TYPE; +} +function isLazy(object) { + return typeOf(object) === REACT_LAZY_TYPE; +} +function isMemo(object) { + return typeOf(object) === REACT_MEMO_TYPE; +} +function isPortal(object) { + return typeOf(object) === REACT_PORTAL_TYPE; +} +function isProfiler(object) { + return typeOf(object) === REACT_PROFILER_TYPE; +} +function isStrictMode(object) { + return typeOf(object) === REACT_STRICT_MODE_TYPE; +} +function isSuspense(object) { + return typeOf(object) === REACT_SUSPENSE_TYPE; +} +function isSuspenseList(object) { + return typeOf(object) === REACT_SUSPENSE_LIST_TYPE; +} + +exports.ContextConsumer = ContextConsumer; +exports.ContextProvider = ContextProvider; +exports.Element = Element; +exports.ForwardRef = ForwardRef; +exports.Fragment = Fragment; +exports.Lazy = Lazy; +exports.Memo = Memo; +exports.Portal = Portal; +exports.Profiler = Profiler; +exports.StrictMode = StrictMode; +exports.Suspense = Suspense; +exports.SuspenseList = SuspenseList; +exports.isAsyncMode = isAsyncMode; +exports.isConcurrentMode = isConcurrentMode; +exports.isContextConsumer = isContextConsumer; +exports.isContextProvider = isContextProvider; +exports.isElement = isElement; +exports.isForwardRef = isForwardRef; +exports.isFragment = isFragment; +exports.isLazy = isLazy; +exports.isMemo = isMemo; +exports.isPortal = isPortal; +exports.isProfiler = isProfiler; +exports.isStrictMode = isStrictMode; +exports.isSuspense = isSuspense; +exports.isSuspenseList = isSuspenseList; +exports.isValidElementType = isValidElementType; +exports.typeOf = typeOf; + })(); +} + + +/***/ }), + +/***/ "../node_modules/react-is/index.js": +/*!*****************************************!*\ + !*** ../node_modules/react-is/index.js ***! + \*****************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + + +if (false) {} else { + module.exports = __webpack_require__(/*! ./cjs/react-is.development.js */ "../node_modules/react-is/cjs/react-is.development.js"); +} + + +/***/ }), + +/***/ "../node_modules/react-sketch-canvas/dist/react-sketch-canvas.esm.js": +/*!***************************************************************************!*\ + !*** ../node_modules/react-sketch-canvas/dist/react-sketch-canvas.esm.js ***! + \***************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ Canvas: () => (/* binding */ Canvas), +/* harmony export */ ReactSketchCanvas: () => (/* binding */ ReactSketchCanvas) +/* harmony export */ }); +/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react"); +/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__); + + +function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { + try { + var info = gen[key](arg); + var value = info.value; + } catch (error) { + reject(error); + return; + } + + if (info.done) { + resolve(value); + } else { + Promise.resolve(value).then(_next, _throw); + } +} + +function _asyncToGenerator(fn) { + return function () { + var self = this, + args = arguments; + return new Promise(function (resolve, reject) { + var gen = fn.apply(self, args); + + function _next(value) { + asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); + } + + function _throw(err) { + asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); + } + + _next(undefined); + }); + }; +} + +function _extends() { + _extends = Object.assign || function (target) { + for (var i = 1; i < arguments.length; i++) { + var source = arguments[i]; + + for (var key in source) { + if (Object.prototype.hasOwnProperty.call(source, key)) { + target[key] = source[key]; + } + } + } + + return target; + }; + + return _extends.apply(this, arguments); +} + +var runtime = {exports: {}}; + +/** + * Copyright (c) 2014-present, Facebook, Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +(function (module) { +var runtime = (function (exports) { + + var Op = Object.prototype; + var hasOwn = Op.hasOwnProperty; + var undefined$1; // More compressible than void 0. + var $Symbol = typeof Symbol === "function" ? Symbol : {}; + var iteratorSymbol = $Symbol.iterator || "@@iterator"; + var asyncIteratorSymbol = $Symbol.asyncIterator || "@@asyncIterator"; + var toStringTagSymbol = $Symbol.toStringTag || "@@toStringTag"; + + function define(obj, key, value) { + Object.defineProperty(obj, key, { + value: value, + enumerable: true, + configurable: true, + writable: true + }); + return obj[key]; + } + try { + // IE 8 has a broken Object.defineProperty that only works on DOM objects. + define({}, ""); + } catch (err) { + define = function(obj, key, value) { + return obj[key] = value; + }; + } + + function wrap(innerFn, outerFn, self, tryLocsList) { + // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator. + var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator; + var generator = Object.create(protoGenerator.prototype); + var context = new Context(tryLocsList || []); + + // The ._invoke method unifies the implementations of the .next, + // .throw, and .return methods. + generator._invoke = makeInvokeMethod(innerFn, self, context); + + return generator; + } + exports.wrap = wrap; + + // Try/catch helper to minimize deoptimizations. Returns a completion + // record like context.tryEntries[i].completion. This interface could + // have been (and was previously) designed to take a closure to be + // invoked without arguments, but in all the cases we care about we + // already have an existing method we want to call, so there's no need + // to create a new function object. We can even get away with assuming + // the method takes exactly one argument, since that happens to be true + // in every case, so we don't have to touch the arguments object. The + // only additional allocation required is the completion record, which + // has a stable shape and so hopefully should be cheap to allocate. + function tryCatch(fn, obj, arg) { + try { + return { type: "normal", arg: fn.call(obj, arg) }; + } catch (err) { + return { type: "throw", arg: err }; + } + } + + var GenStateSuspendedStart = "suspendedStart"; + var GenStateSuspendedYield = "suspendedYield"; + var GenStateExecuting = "executing"; + var GenStateCompleted = "completed"; + + // Returning this object from the innerFn has the same effect as + // breaking out of the dispatch switch statement. + var ContinueSentinel = {}; + + // Dummy constructor functions that we use as the .constructor and + // .constructor.prototype properties for functions that return Generator + // objects. For full spec compliance, you may wish to configure your + // minifier not to mangle the names of these two functions. + function Generator() {} + function GeneratorFunction() {} + function GeneratorFunctionPrototype() {} + + // This is a polyfill for %IteratorPrototype% for environments that + // don't natively support it. + var IteratorPrototype = {}; + define(IteratorPrototype, iteratorSymbol, function () { + return this; + }); + + var getProto = Object.getPrototypeOf; + var NativeIteratorPrototype = getProto && getProto(getProto(values([]))); + if (NativeIteratorPrototype && + NativeIteratorPrototype !== Op && + hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) { + // This environment has a native %IteratorPrototype%; use it instead + // of the polyfill. + IteratorPrototype = NativeIteratorPrototype; + } + + var Gp = GeneratorFunctionPrototype.prototype = + Generator.prototype = Object.create(IteratorPrototype); + GeneratorFunction.prototype = GeneratorFunctionPrototype; + define(Gp, "constructor", GeneratorFunctionPrototype); + define(GeneratorFunctionPrototype, "constructor", GeneratorFunction); + GeneratorFunction.displayName = define( + GeneratorFunctionPrototype, + toStringTagSymbol, + "GeneratorFunction" + ); + + // Helper for defining the .next, .throw, and .return methods of the + // Iterator interface in terms of a single ._invoke method. + function defineIteratorMethods(prototype) { + ["next", "throw", "return"].forEach(function(method) { + define(prototype, method, function(arg) { + return this._invoke(method, arg); + }); + }); + } + + exports.isGeneratorFunction = function(genFun) { + var ctor = typeof genFun === "function" && genFun.constructor; + return ctor + ? ctor === GeneratorFunction || + // For the native GeneratorFunction constructor, the best we can + // do is to check its .name property. + (ctor.displayName || ctor.name) === "GeneratorFunction" + : false; + }; + + exports.mark = function(genFun) { + if (Object.setPrototypeOf) { + Object.setPrototypeOf(genFun, GeneratorFunctionPrototype); + } else { + genFun.__proto__ = GeneratorFunctionPrototype; + define(genFun, toStringTagSymbol, "GeneratorFunction"); + } + genFun.prototype = Object.create(Gp); + return genFun; + }; + + // Within the body of any async function, `await x` is transformed to + // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test + // `hasOwn.call(value, "__await")` to determine if the yielded value is + // meant to be awaited. + exports.awrap = function(arg) { + return { __await: arg }; + }; + + function AsyncIterator(generator, PromiseImpl) { + function invoke(method, arg, resolve, reject) { + var record = tryCatch(generator[method], generator, arg); + if (record.type === "throw") { + reject(record.arg); + } else { + var result = record.arg; + var value = result.value; + if (value && + typeof value === "object" && + hasOwn.call(value, "__await")) { + return PromiseImpl.resolve(value.__await).then(function(value) { + invoke("next", value, resolve, reject); + }, function(err) { + invoke("throw", err, resolve, reject); + }); + } + + return PromiseImpl.resolve(value).then(function(unwrapped) { + // When a yielded Promise is resolved, its final value becomes + // the .value of the Promise<{value,done}> result for the + // current iteration. + result.value = unwrapped; + resolve(result); + }, function(error) { + // If a rejected Promise was yielded, throw the rejection back + // into the async generator function so it can be handled there. + return invoke("throw", error, resolve, reject); + }); + } + } + + var previousPromise; + + function enqueue(method, arg) { + function callInvokeWithMethodAndArg() { + return new PromiseImpl(function(resolve, reject) { + invoke(method, arg, resolve, reject); + }); + } + + return previousPromise = + // If enqueue has been called before, then we want to wait until + // all previous Promises have been resolved before calling invoke, + // so that results are always delivered in the correct order. If + // enqueue has not been called before, then it is important to + // call invoke immediately, without waiting on a callback to fire, + // so that the async generator function has the opportunity to do + // any necessary setup in a predictable way. This predictability + // is why the Promise constructor synchronously invokes its + // executor callback, and why async functions synchronously + // execute code before the first await. Since we implement simple + // async functions in terms of async generators, it is especially + // important to get this right, even though it requires care. + previousPromise ? previousPromise.then( + callInvokeWithMethodAndArg, + // Avoid propagating failures to Promises returned by later + // invocations of the iterator. + callInvokeWithMethodAndArg + ) : callInvokeWithMethodAndArg(); + } + + // Define the unified helper method that is used to implement .next, + // .throw, and .return (see defineIteratorMethods). + this._invoke = enqueue; + } + + defineIteratorMethods(AsyncIterator.prototype); + define(AsyncIterator.prototype, asyncIteratorSymbol, function () { + return this; + }); + exports.AsyncIterator = AsyncIterator; + + // Note that simple async functions are implemented on top of + // AsyncIterator objects; they just return a Promise for the value of + // the final result produced by the iterator. + exports.async = function(innerFn, outerFn, self, tryLocsList, PromiseImpl) { + if (PromiseImpl === void 0) PromiseImpl = Promise; + + var iter = new AsyncIterator( + wrap(innerFn, outerFn, self, tryLocsList), + PromiseImpl + ); + + return exports.isGeneratorFunction(outerFn) + ? iter // If outerFn is a generator, return the full iterator. + : iter.next().then(function(result) { + return result.done ? result.value : iter.next(); + }); + }; + + function makeInvokeMethod(innerFn, self, context) { + var state = GenStateSuspendedStart; + + return function invoke(method, arg) { + if (state === GenStateExecuting) { + throw new Error("Generator is already running"); + } + + if (state === GenStateCompleted) { + if (method === "throw") { + throw arg; + } + + // Be forgiving, per 25.3.3.3.3 of the spec: + // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume + return doneResult(); + } + + context.method = method; + context.arg = arg; + + while (true) { + var delegate = context.delegate; + if (delegate) { + var delegateResult = maybeInvokeDelegate(delegate, context); + if (delegateResult) { + if (delegateResult === ContinueSentinel) continue; + return delegateResult; + } + } + + if (context.method === "next") { + // Setting context._sent for legacy support of Babel's + // function.sent implementation. + context.sent = context._sent = context.arg; + + } else if (context.method === "throw") { + if (state === GenStateSuspendedStart) { + state = GenStateCompleted; + throw context.arg; + } + + context.dispatchException(context.arg); + + } else if (context.method === "return") { + context.abrupt("return", context.arg); + } + + state = GenStateExecuting; + + var record = tryCatch(innerFn, self, context); + if (record.type === "normal") { + // If an exception is thrown from innerFn, we leave state === + // GenStateExecuting and loop back for another invocation. + state = context.done + ? GenStateCompleted + : GenStateSuspendedYield; + + if (record.arg === ContinueSentinel) { + continue; + } + + return { + value: record.arg, + done: context.done + }; + + } else if (record.type === "throw") { + state = GenStateCompleted; + // Dispatch the exception by looping back around to the + // context.dispatchException(context.arg) call above. + context.method = "throw"; + context.arg = record.arg; + } + } + }; + } + + // Call delegate.iterator[context.method](context.arg) and handle the + // result, either by returning a { value, done } result from the + // delegate iterator, or by modifying context.method and context.arg, + // setting context.delegate to null, and returning the ContinueSentinel. + function maybeInvokeDelegate(delegate, context) { + var method = delegate.iterator[context.method]; + if (method === undefined$1) { + // A .throw or .return when the delegate iterator has no .throw + // method always terminates the yield* loop. + context.delegate = null; + + if (context.method === "throw") { + // Note: ["return"] must be used for ES3 parsing compatibility. + if (delegate.iterator["return"]) { + // If the delegate iterator has a return method, give it a + // chance to clean up. + context.method = "return"; + context.arg = undefined$1; + maybeInvokeDelegate(delegate, context); + + if (context.method === "throw") { + // If maybeInvokeDelegate(context) changed context.method from + // "return" to "throw", let that override the TypeError below. + return ContinueSentinel; + } + } + + context.method = "throw"; + context.arg = new TypeError( + "The iterator does not provide a 'throw' method"); + } + + return ContinueSentinel; + } + + var record = tryCatch(method, delegate.iterator, context.arg); + + if (record.type === "throw") { + context.method = "throw"; + context.arg = record.arg; + context.delegate = null; + return ContinueSentinel; + } + + var info = record.arg; + + if (! info) { + context.method = "throw"; + context.arg = new TypeError("iterator result is not an object"); + context.delegate = null; + return ContinueSentinel; + } + + if (info.done) { + // Assign the result of the finished delegate to the temporary + // variable specified by delegate.resultName (see delegateYield). + context[delegate.resultName] = info.value; + + // Resume execution at the desired location (see delegateYield). + context.next = delegate.nextLoc; + + // If context.method was "throw" but the delegate handled the + // exception, let the outer generator proceed normally. If + // context.method was "next", forget context.arg since it has been + // "consumed" by the delegate iterator. If context.method was + // "return", allow the original .return call to continue in the + // outer generator. + if (context.method !== "return") { + context.method = "next"; + context.arg = undefined$1; + } + + } else { + // Re-yield the result returned by the delegate method. + return info; + } + + // The delegate iterator is finished, so forget it and continue with + // the outer generator. + context.delegate = null; + return ContinueSentinel; + } + + // Define Generator.prototype.{next,throw,return} in terms of the + // unified ._invoke helper method. + defineIteratorMethods(Gp); + + define(Gp, toStringTagSymbol, "Generator"); + + // A Generator should always return itself as the iterator object when the + // @@iterator function is called on it. Some browsers' implementations of the + // iterator prototype chain incorrectly implement this, causing the Generator + // object to not be returned from this call. This ensures that doesn't happen. + // See https://github.com/facebook/regenerator/issues/274 for more details. + define(Gp, iteratorSymbol, function() { + return this; + }); + + define(Gp, "toString", function() { + return "[object Generator]"; + }); + + function pushTryEntry(locs) { + var entry = { tryLoc: locs[0] }; + + if (1 in locs) { + entry.catchLoc = locs[1]; + } + + if (2 in locs) { + entry.finallyLoc = locs[2]; + entry.afterLoc = locs[3]; + } + + this.tryEntries.push(entry); + } + + function resetTryEntry(entry) { + var record = entry.completion || {}; + record.type = "normal"; + delete record.arg; + entry.completion = record; + } + + function Context(tryLocsList) { + // The root entry object (effectively a try statement without a catch + // or a finally block) gives us a place to store values thrown from + // locations where there is no enclosing try statement. + this.tryEntries = [{ tryLoc: "root" }]; + tryLocsList.forEach(pushTryEntry, this); + this.reset(true); + } + + exports.keys = function(object) { + var keys = []; + for (var key in object) { + keys.push(key); + } + keys.reverse(); + + // Rather than returning an object with a next method, we keep + // things simple and return the next function itself. + return function next() { + while (keys.length) { + var key = keys.pop(); + if (key in object) { + next.value = key; + next.done = false; + return next; + } + } + + // To avoid creating an additional object, we just hang the .value + // and .done properties off the next function object itself. This + // also ensures that the minifier will not anonymize the function. + next.done = true; + return next; + }; + }; + + function values(iterable) { + if (iterable) { + var iteratorMethod = iterable[iteratorSymbol]; + if (iteratorMethod) { + return iteratorMethod.call(iterable); + } + + if (typeof iterable.next === "function") { + return iterable; + } + + if (!isNaN(iterable.length)) { + var i = -1, next = function next() { + while (++i < iterable.length) { + if (hasOwn.call(iterable, i)) { + next.value = iterable[i]; + next.done = false; + return next; + } + } + + next.value = undefined$1; + next.done = true; + + return next; + }; + + return next.next = next; + } + } + + // Return an iterator with no values. + return { next: doneResult }; + } + exports.values = values; + + function doneResult() { + return { value: undefined$1, done: true }; + } + + Context.prototype = { + constructor: Context, + + reset: function(skipTempReset) { + this.prev = 0; + this.next = 0; + // Resetting context._sent for legacy support of Babel's + // function.sent implementation. + this.sent = this._sent = undefined$1; + this.done = false; + this.delegate = null; + + this.method = "next"; + this.arg = undefined$1; + + this.tryEntries.forEach(resetTryEntry); + + if (!skipTempReset) { + for (var name in this) { + // Not sure about the optimal order of these conditions: + if (name.charAt(0) === "t" && + hasOwn.call(this, name) && + !isNaN(+name.slice(1))) { + this[name] = undefined$1; + } + } + } + }, + + stop: function() { + this.done = true; + + var rootEntry = this.tryEntries[0]; + var rootRecord = rootEntry.completion; + if (rootRecord.type === "throw") { + throw rootRecord.arg; + } + + return this.rval; + }, + + dispatchException: function(exception) { + if (this.done) { + throw exception; + } + + var context = this; + function handle(loc, caught) { + record.type = "throw"; + record.arg = exception; + context.next = loc; + + if (caught) { + // If the dispatched exception was caught by a catch block, + // then let that catch block handle the exception normally. + context.method = "next"; + context.arg = undefined$1; + } + + return !! caught; + } + + for (var i = this.tryEntries.length - 1; i >= 0; --i) { + var entry = this.tryEntries[i]; + var record = entry.completion; + + if (entry.tryLoc === "root") { + // Exception thrown outside of any try block that could handle + // it, so set the completion value of the entire function to + // throw the exception. + return handle("end"); + } + + if (entry.tryLoc <= this.prev) { + var hasCatch = hasOwn.call(entry, "catchLoc"); + var hasFinally = hasOwn.call(entry, "finallyLoc"); + + if (hasCatch && hasFinally) { + if (this.prev < entry.catchLoc) { + return handle(entry.catchLoc, true); + } else if (this.prev < entry.finallyLoc) { + return handle(entry.finallyLoc); + } + + } else if (hasCatch) { + if (this.prev < entry.catchLoc) { + return handle(entry.catchLoc, true); + } + + } else if (hasFinally) { + if (this.prev < entry.finallyLoc) { + return handle(entry.finallyLoc); + } + + } else { + throw new Error("try statement without catch or finally"); + } + } + } + }, + + abrupt: function(type, arg) { + for (var i = this.tryEntries.length - 1; i >= 0; --i) { + var entry = this.tryEntries[i]; + if (entry.tryLoc <= this.prev && + hasOwn.call(entry, "finallyLoc") && + this.prev < entry.finallyLoc) { + var finallyEntry = entry; + break; + } + } + + if (finallyEntry && + (type === "break" || + type === "continue") && + finallyEntry.tryLoc <= arg && + arg <= finallyEntry.finallyLoc) { + // Ignore the finally entry if control is not jumping to a + // location outside the try/catch block. + finallyEntry = null; + } + + var record = finallyEntry ? finallyEntry.completion : {}; + record.type = type; + record.arg = arg; + + if (finallyEntry) { + this.method = "next"; + this.next = finallyEntry.finallyLoc; + return ContinueSentinel; + } + + return this.complete(record); + }, + + complete: function(record, afterLoc) { + if (record.type === "throw") { + throw record.arg; + } + + if (record.type === "break" || + record.type === "continue") { + this.next = record.arg; + } else if (record.type === "return") { + this.rval = this.arg = record.arg; + this.method = "return"; + this.next = "end"; + } else if (record.type === "normal" && afterLoc) { + this.next = afterLoc; + } + + return ContinueSentinel; + }, + + finish: function(finallyLoc) { + for (var i = this.tryEntries.length - 1; i >= 0; --i) { + var entry = this.tryEntries[i]; + if (entry.finallyLoc === finallyLoc) { + this.complete(entry.completion, entry.afterLoc); + resetTryEntry(entry); + return ContinueSentinel; + } + } + }, + + "catch": function(tryLoc) { + for (var i = this.tryEntries.length - 1; i >= 0; --i) { + var entry = this.tryEntries[i]; + if (entry.tryLoc === tryLoc) { + var record = entry.completion; + if (record.type === "throw") { + var thrown = record.arg; + resetTryEntry(entry); + } + return thrown; + } + } + + // The context.catch method must only be called with a location + // argument that corresponds to a known catch block. + throw new Error("illegal catch attempt"); + }, + + delegateYield: function(iterable, resultName, nextLoc) { + this.delegate = { + iterator: values(iterable), + resultName: resultName, + nextLoc: nextLoc + }; + + if (this.method === "next") { + // Deliberately forget the last sent value so that we don't + // accidentally pass it on to the delegate. + this.arg = undefined$1; + } + + return ContinueSentinel; + } + }; + + // Regardless of whether this script is executing as a CommonJS module + // or not, return the runtime object so that we can declare the variable + // regeneratorRuntime in the outer scope, which allows this module to be + // injected easily by `bin/regenerator --include-runtime script.js`. + return exports; + +}( + // If this script is executing as a CommonJS module, use module.exports + // as the regeneratorRuntime namespace. Otherwise create a new empty + // object. Either way, the resulting object will be used to initialize + // the regeneratorRuntime variable at the top of this file. + module.exports +)); + +try { + regeneratorRuntime = runtime; +} catch (accidentalStrictMode) { + // This module should not be running in strict mode, so the above + // assignment should always work unless something is misconfigured. Just + // in case runtime.js accidentally runs in strict mode, in modern engines + // we can explicitly access globalThis. In older engines we can escape + // strict mode using a global Function call. This could conceivably fail + // if a Content Security Policy forbids using Function, but in that case + // the proper solution is to fix the accidental strict mode problem. If + // you've misconfigured your bundler to force strict mode and applied a + // CSP to forbid Function, and you're not willing to fix either of those + // problems, please detail your unique predicament in a GitHub issue. + if (typeof globalThis === "object") { + globalThis.regeneratorRuntime = runtime; + } else { + Function("r", "regeneratorRuntime = r")(runtime); + } +} +}(runtime)); + +var _regeneratorRuntime = runtime.exports; + +/** + * Generate SVG Path tag from the given points + */ + +var SvgPath = function SvgPath(_ref) { + var paths = _ref.paths, + id = _ref.id, + strokeWidth = _ref.strokeWidth, + strokeColor = _ref.strokeColor, + _ref$command = _ref.command, + command = _ref$command === void 0 ? bezierCommand : _ref$command; + + if (paths.length === 1) { + var _paths$ = paths[0], + x = _paths$.x, + y = _paths$.y; + var radius = strokeWidth / 2; + return react__WEBPACK_IMPORTED_MODULE_0__.createElement("circle", { + key: id, + id: id, + cx: x, + cy: y, + r: radius, + stroke: strokeColor, + fill: strokeColor + }); + } + + var d = paths.reduce(function (acc, point, i, a) { + return i === 0 ? "M " + point.x + "," + point.y : acc + " " + command(point, i, a); + }, ''); + return react__WEBPACK_IMPORTED_MODULE_0__.createElement("path", { + key: id, + id: id, + d: d, + fill: "none", + strokeLinecap: "round", + stroke: strokeColor, + strokeWidth: strokeWidth + }); +}; +var line = function line(pointA, pointB) { + var lengthX = pointB.x - pointA.x; + var lengthY = pointB.y - pointA.y; + return { + length: Math.sqrt(Math.pow(lengthX, 2) + Math.pow(lengthY, 2)), + angle: Math.atan2(lengthY, lengthX) + }; +}; + +var controlPoint = function controlPoint(controlPoints) { + var current = controlPoints.current, + next = controlPoints.next, + previous = controlPoints.previous, + reverse = controlPoints.reverse; + var p = previous || current; + var n = next || current; + var smoothing = 0.2; + var o = line(p, n); + var angle = o.angle + (reverse ? Math.PI : 0); + var length = o.length * smoothing; + var x = current.x + Math.cos(angle) * length; + var y = current.y + Math.sin(angle) * length; + return [x, y]; +}; + +var bezierCommand = function bezierCommand(point, i, a) { + var cpsX = null; + var cpsY = null; + + switch (i) { + case 0: + var _controlPoint = controlPoint({ + current: point + }); + + cpsX = _controlPoint[0]; + cpsY = _controlPoint[1]; + break; + + case 1: + var _controlPoint2 = controlPoint({ + current: a[i - 1], + next: point + }); + + cpsX = _controlPoint2[0]; + cpsY = _controlPoint2[1]; + break; + + default: + var _controlPoint3 = controlPoint({ + current: a[i - 1], + previous: a[i - 2], + next: point + }); + + cpsX = _controlPoint3[0]; + cpsY = _controlPoint3[1]; + break; + } + + var _controlPoint4 = controlPoint({ + current: point, + previous: a[i - 1], + next: a[i + 1], + reverse: true + }), + cpeX = _controlPoint4[0], + cpeY = _controlPoint4[1]; + + return "C " + cpsX + "," + cpsY + " " + cpeX + "," + cpeY + " " + point.x + ", " + point.y; +}; + +var Paths = function Paths(_ref2) { + var id = _ref2.id, + paths = _ref2.paths; + return react__WEBPACK_IMPORTED_MODULE_0__.createElement(react__WEBPACK_IMPORTED_MODULE_0__.Fragment, null, paths.map(function (path, index) { + return react__WEBPACK_IMPORTED_MODULE_0__.createElement(SvgPath, { + key: id + "__" + index, + paths: path.paths, + id: id + "__" + index, + strokeWidth: path.strokeWidth, + strokeColor: path.strokeColor, + command: bezierCommand + }); + })); +}; + +var loadImage = function loadImage(url) { + return new Promise(function (resolve, reject) { + var img = new Image(); + img.addEventListener('load', function () { + if (img.width > 0) { + resolve(img); + } + + reject('Image not found'); + }); + img.addEventListener('error', function (err) { + return reject(err); + }); + img.src = url; + img.setAttribute('crossorigin', 'anonymous'); + }); +}; + +function getCanvasWithViewBox(canvas) { + var _canvas$firstChild; + + var svgCanvas = (_canvas$firstChild = canvas.firstChild) == null ? void 0 : _canvas$firstChild.cloneNode(true); + var width = canvas.offsetWidth; + var height = canvas.offsetHeight; + svgCanvas.setAttribute('viewBox', "0 0 " + width + " " + height); + svgCanvas.setAttribute('width', width.toString()); + svgCanvas.setAttribute('height', height.toString()); + return { + svgCanvas: svgCanvas, + width: width, + height: height + }; +} + +var Canvas = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.forwardRef(function (props, ref) { + var paths = props.paths, + isDrawing = props.isDrawing, + onPointerDown = props.onPointerDown, + onPointerMove = props.onPointerMove, + onPointerUp = props.onPointerUp, + _props$id = props.id, + id = _props$id === void 0 ? 'react-sketch-canvas' : _props$id, + _props$width = props.width, + width = _props$width === void 0 ? '100%' : _props$width, + _props$height = props.height, + height = _props$height === void 0 ? '100%' : _props$height, + _props$className = props.className, + className = _props$className === void 0 ? 'react-sketch-canvas' : _props$className, + _props$canvasColor = props.canvasColor, + canvasColor = _props$canvasColor === void 0 ? 'red' : _props$canvasColor, + _props$backgroundImag = props.backgroundImage, + backgroundImage = _props$backgroundImag === void 0 ? '' : _props$backgroundImag, + _props$exportWithBack = props.exportWithBackgroundImage, + exportWithBackgroundImage = _props$exportWithBack === void 0 ? false : _props$exportWithBack, + _props$preserveBackgr = props.preserveBackgroundImageAspectRatio, + preserveBackgroundImageAspectRatio = _props$preserveBackgr === void 0 ? 'none' : _props$preserveBackgr, + _props$allowOnlyPoint = props.allowOnlyPointerType, + allowOnlyPointerType = _props$allowOnlyPoint === void 0 ? 'all' : _props$allowOnlyPoint, + _props$style = props.style, + style = _props$style === void 0 ? { + border: '0.0625rem solid #9c9c9c', + borderRadius: '0.25rem' + } : _props$style, + _props$svgStyle = props.svgStyle, + svgStyle = _props$svgStyle === void 0 ? {} : _props$svgStyle; + var canvasRef = react__WEBPACK_IMPORTED_MODULE_0__.useRef(null); // Converts mouse coordinates to relative coordinate based on the absolute position of svg + + var getCoordinates = function getCoordinates(pointerEvent) { + var _canvasRef$current, _window$scrollX, _window$scrollY; + + var boundingArea = (_canvasRef$current = canvasRef.current) == null ? void 0 : _canvasRef$current.getBoundingClientRect(); + var scrollLeft = (_window$scrollX = window.scrollX) != null ? _window$scrollX : 0; + var scrollTop = (_window$scrollY = window.scrollY) != null ? _window$scrollY : 0; + + if (!boundingArea) { + return { + x: 0, + y: 0 + }; + } + + var point = { + x: pointerEvent.pageX - boundingArea.left - scrollLeft, + y: pointerEvent.pageY - boundingArea.top - scrollTop + }; + return point; + }; + /* Mouse Handlers - Mouse down, move and up */ + + + var handlePointerDown = function handlePointerDown(event) { + // Allow only chosen pointer type + if (allowOnlyPointerType !== 'all' && event.pointerType !== allowOnlyPointerType) { + return; + } + + if (event.pointerType === 'mouse' && event.button !== 0) return; + var point = getCoordinates(event); + onPointerDown(point); + }; + + var handlePointerMove = function handlePointerMove(event) { + if (!isDrawing) return; // Allow only chosen pointer type + + if (allowOnlyPointerType !== 'all' && event.pointerType !== allowOnlyPointerType) { + return; + } + + var point = getCoordinates(event); + onPointerMove(point); + }; + + var handlePointerUp = function handlePointerUp(event) { + if (event.pointerType === 'mouse' && event.button !== 0) return; // Allow only chosen pointer type + + if (allowOnlyPointerType !== 'all' && event.pointerType !== allowOnlyPointerType) { + return; + } + + onPointerUp(); + }; + /* Mouse Handlers ends */ + + + react__WEBPACK_IMPORTED_MODULE_0__.useImperativeHandle(ref, function () { + return { + exportImage: function exportImage(imageType) { + return new Promise( /*#__PURE__*/function () { + var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(resolve, reject) { + var canvas, _getCanvasWithViewBox, svgCanvas, _width, _height, canvasSketch, loadImagePromises, img; + + return _regeneratorRuntime.wrap(function _callee$(_context) { + while (1) { + switch (_context.prev = _context.next) { + case 0: + _context.prev = 0; + canvas = canvasRef.current; + + if (canvas) { + _context.next = 4; + break; + } + + throw Error('Canvas not rendered yet'); + + case 4: + _getCanvasWithViewBox = getCanvasWithViewBox(canvas), svgCanvas = _getCanvasWithViewBox.svgCanvas, _width = _getCanvasWithViewBox.width, _height = _getCanvasWithViewBox.height; + canvasSketch = "data:image/svg+xml;base64," + btoa(svgCanvas.outerHTML); + _context.next = 8; + return loadImage(canvasSketch); + + case 8: + _context.t0 = _context.sent; + loadImagePromises = [_context.t0]; + + if (!exportWithBackgroundImage) { + _context.next = 21; + break; + } + + _context.prev = 11; + _context.next = 14; + return loadImage(backgroundImage); + + case 14: + img = _context.sent; + loadImagePromises.push(img); + _context.next = 21; + break; + + case 18: + _context.prev = 18; + _context.t1 = _context["catch"](11); + console.warn('exportWithBackgroundImage props is set without a valid background image URL. This option is ignored'); + + case 21: + Promise.all(loadImagePromises).then(function (images) { + var renderCanvas = document.createElement('canvas'); + renderCanvas.setAttribute('width', _width.toString()); + renderCanvas.setAttribute('height', _height.toString()); + var context = renderCanvas.getContext('2d'); + + if (!context) { + throw Error('Canvas not rendered yet'); + } + + images.reverse().forEach(function (image) { + context.drawImage(image, 0, 0); + }); + resolve(renderCanvas.toDataURL("image/" + imageType)); + })["catch"](function (e) { + throw e; + }); + _context.next = 27; + break; + + case 24: + _context.prev = 24; + _context.t2 = _context["catch"](0); + reject(_context.t2); + + case 27: + case "end": + return _context.stop(); + } + } + }, _callee, null, [[0, 24], [11, 18]]); + })); + + return function (_x, _x2) { + return _ref.apply(this, arguments); + }; + }()); + }, + exportSvg: function exportSvg() { + return new Promise(function (resolve, reject) { + try { + var _canvasRef$current2; + + var canvas = (_canvasRef$current2 = canvasRef.current) != null ? _canvasRef$current2 : null; + + if (canvas !== null) { + var _svgCanvas$querySelec, _svgCanvas$querySelec2; + + var _getCanvasWithViewBox2 = getCanvasWithViewBox(canvas), + svgCanvas = _getCanvasWithViewBox2.svgCanvas; + + if (exportWithBackgroundImage) { + resolve(svgCanvas.outerHTML); + return; + } + + (_svgCanvas$querySelec = svgCanvas.querySelector("#" + id + "__background")) == null ? void 0 : _svgCanvas$querySelec.remove(); + (_svgCanvas$querySelec2 = svgCanvas.querySelector("#" + id + "__canvas-background")) == null ? void 0 : _svgCanvas$querySelec2.setAttribute('fill', canvasColor); + resolve(svgCanvas.outerHTML); + } + + reject(new Error('Canvas not loaded')); + } catch (e) { + reject(e); + } + }); + } + }; + }); + /* Add event listener to Mouse up and Touch up to + release drawing even when point goes out of canvas */ + + react__WEBPACK_IMPORTED_MODULE_0__.useEffect(function () { + document.addEventListener('pointerup', handlePointerUp); + return function () { + document.removeEventListener('pointerup', handlePointerUp); + }; + }, [handlePointerUp]); + var eraserPaths = paths.filter(function (path) { + return !path.drawMode; + }); + var currentGroup = 0; + var pathGroups = paths.reduce(function (arrayGroup, path) { + if (!path.drawMode) { + currentGroup += 1; + return arrayGroup; + } + + if (arrayGroup[currentGroup] === undefined) { + arrayGroup[currentGroup] = []; + } + + arrayGroup[currentGroup].push(path); + return arrayGroup; + }, [[]]); + return react__WEBPACK_IMPORTED_MODULE_0__.createElement("div", { + role: "presentation", + ref: canvasRef, + className: className, + style: _extends({ + touchAction: 'none', + width: width, + height: height + }, style), + "touch-action": "none", + onPointerDown: handlePointerDown, + onPointerMove: handlePointerMove, + onPointerUp: handlePointerUp + }, react__WEBPACK_IMPORTED_MODULE_0__.createElement("svg", { + version: "1.1", + baseProfile: "full", + xmlns: "http://www.w3.org/2000/svg", + xmlnsXlink: "http://www.w3.org/1999/xlink", + style: _extends({ + width: '100%', + height: '100%' + }, svgStyle), + id: id + }, react__WEBPACK_IMPORTED_MODULE_0__.createElement("g", { + id: id + "__eraser-stroke-group", + display: "none" + }, react__WEBPACK_IMPORTED_MODULE_0__.createElement("rect", { + id: id + "__mask-background", + x: "0", + y: "0", + width: "100%", + height: "100%", + fill: "white" + }), eraserPaths.map(function (eraserPath, i) { + return react__WEBPACK_IMPORTED_MODULE_0__.createElement(SvgPath, { + key: id + "__eraser-" + i, + id: id + "__eraser-" + i, + paths: eraserPath.paths, + strokeColor: "#000000", + strokeWidth: eraserPath.strokeWidth + }); + })), react__WEBPACK_IMPORTED_MODULE_0__.createElement("defs", null, backgroundImage && react__WEBPACK_IMPORTED_MODULE_0__.createElement("pattern", { + id: id + "__background", + x: "0", + y: "0", + width: "100%", + height: "100%", + patternUnits: "userSpaceOnUse" + }, react__WEBPACK_IMPORTED_MODULE_0__.createElement("image", { + x: "0", + y: "0", + width: "100%", + height: "100%", + xlinkHref: backgroundImage, + preserveAspectRatio: preserveBackgroundImageAspectRatio + })), eraserPaths.map(function (_, i) { + return react__WEBPACK_IMPORTED_MODULE_0__.createElement("mask", { + id: id + "__eraser-mask-" + i, + key: id + "__eraser-mask-" + i, + maskUnits: "userSpaceOnUse" + }, react__WEBPACK_IMPORTED_MODULE_0__.createElement("use", { + href: "#" + id + "__mask-background" + }), Array.from({ + length: eraserPaths.length - i + }, function (_, j) { + return j + i; + }).map(function (k) { + return react__WEBPACK_IMPORTED_MODULE_0__.createElement("use", { + key: k.toString(), + href: "#" + id + "__eraser-" + k.toString() + }); + })); + })), react__WEBPACK_IMPORTED_MODULE_0__.createElement("g", { + id: id + "__canvas-background-group" + }, react__WEBPACK_IMPORTED_MODULE_0__.createElement("rect", { + id: id + "__canvas-background", + x: "0", + y: "0", + width: "100%", + height: "100%", + fill: backgroundImage ? "url(#" + id + "__background)" : canvasColor + })), pathGroups.map(function (pathGroup, i) { + return react__WEBPACK_IMPORTED_MODULE_0__.createElement("g", { + id: id + "__stroke-group-" + i, + key: id + "__stroke-group-" + i, + mask: "url(#" + id + "__eraser-mask-" + i + ")" + }, react__WEBPACK_IMPORTED_MODULE_0__.createElement(Paths, { + id: id, + paths: pathGroup + })); + }))); +}); + +var ReactSketchCanvas = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.forwardRef(function (props, ref) { + var _props$id = props.id, + id = _props$id === void 0 ? 'react-sketch-canvas' : _props$id, + _props$width = props.width, + width = _props$width === void 0 ? '100%' : _props$width, + _props$height = props.height, + height = _props$height === void 0 ? '100%' : _props$height, + _props$className = props.className, + className = _props$className === void 0 ? '' : _props$className, + _props$canvasColor = props.canvasColor, + canvasColor = _props$canvasColor === void 0 ? 'white' : _props$canvasColor, + _props$strokeColor = props.strokeColor, + strokeColor = _props$strokeColor === void 0 ? 'red' : _props$strokeColor, + _props$backgroundImag = props.backgroundImage, + backgroundImage = _props$backgroundImag === void 0 ? '' : _props$backgroundImag, + _props$exportWithBack = props.exportWithBackgroundImage, + exportWithBackgroundImage = _props$exportWithBack === void 0 ? false : _props$exportWithBack, + _props$preserveBackgr = props.preserveBackgroundImageAspectRatio, + preserveBackgroundImageAspectRatio = _props$preserveBackgr === void 0 ? 'none' : _props$preserveBackgr, + _props$strokeWidth = props.strokeWidth, + strokeWidth = _props$strokeWidth === void 0 ? 4 : _props$strokeWidth, + _props$eraserWidth = props.eraserWidth, + eraserWidth = _props$eraserWidth === void 0 ? 8 : _props$eraserWidth, + _props$allowOnlyPoint = props.allowOnlyPointerType, + allowOnlyPointerType = _props$allowOnlyPoint === void 0 ? 'all' : _props$allowOnlyPoint, + _props$style = props.style, + style = _props$style === void 0 ? { + border: '0.0625rem solid #9c9c9c', + borderRadius: '0.25rem' + } : _props$style, + _props$svgStyle = props.svgStyle, + svgStyle = _props$svgStyle === void 0 ? {} : _props$svgStyle, + _props$onChange = props.onChange, + onChange = _props$onChange === void 0 ? function (_paths) {} : _props$onChange, + _props$onStroke = props.onStroke, + onStroke = _props$onStroke === void 0 ? function (_path, _isEraser) {} : _props$onStroke, + _props$withTimestamp = props.withTimestamp, + withTimestamp = _props$withTimestamp === void 0 ? false : _props$withTimestamp; + var svgCanvas = react__WEBPACK_IMPORTED_MODULE_0__.createRef(); + + var _React$useState = react__WEBPACK_IMPORTED_MODULE_0__.useState(true), + drawMode = _React$useState[0], + setDrawMode = _React$useState[1]; + + var _React$useState2 = react__WEBPACK_IMPORTED_MODULE_0__.useState(false), + isDrawing = _React$useState2[0], + setIsDrawing = _React$useState2[1]; + + var _React$useState3 = react__WEBPACK_IMPORTED_MODULE_0__.useState([]), + resetStack = _React$useState3[0], + setResetStack = _React$useState3[1]; + + var _React$useState4 = react__WEBPACK_IMPORTED_MODULE_0__.useState([]), + undoStack = _React$useState4[0], + setUndoStack = _React$useState4[1]; + + var _React$useState5 = react__WEBPACK_IMPORTED_MODULE_0__.useState([]), + currentPaths = _React$useState5[0], + setCurrentPaths = _React$useState5[1]; + + var liftStrokeUp = react__WEBPACK_IMPORTED_MODULE_0__.useCallback(function () { + var _currentPaths$slice$, _currentPaths$slice; + + var lastStroke = (_currentPaths$slice$ = (_currentPaths$slice = currentPaths.slice(-1)) == null ? void 0 : _currentPaths$slice[0]) != null ? _currentPaths$slice$ : null; + + if (lastStroke === null) { + console.warn('No stroke found!'); + return; + } + + onStroke(lastStroke, !lastStroke.drawMode); + }, [isDrawing]); + react__WEBPACK_IMPORTED_MODULE_0__.useEffect(function () { + liftStrokeUp(); + }, [isDrawing]); + react__WEBPACK_IMPORTED_MODULE_0__.useEffect(function () { + onChange(currentPaths); + }, [currentPaths]); + react__WEBPACK_IMPORTED_MODULE_0__.useImperativeHandle(ref, function () { + return { + eraseMode: function eraseMode(erase) { + setDrawMode(!erase); + }, + clearCanvas: function clearCanvas() { + setResetStack([].concat(currentPaths)); + setCurrentPaths([]); + }, + undo: function undo() { + // If there was a last reset then + if (resetStack.length !== 0) { + setCurrentPaths([].concat(resetStack)); + setResetStack([]); + return; + } + + setUndoStack(function (undoStack) { + return [].concat(undoStack, currentPaths.slice(-1)); + }); + setCurrentPaths(function (currentPaths) { + return currentPaths.slice(0, -1); + }); + }, + redo: function redo() { + // Nothing to Redo + if (undoStack.length === 0) return; + setCurrentPaths(function (currentPaths) { + return [].concat(currentPaths, undoStack.slice(-1)); + }); + setUndoStack(function (undoStack) { + return undoStack.slice(0, -1); + }); + }, + exportImage: function exportImage(imageType) { + var _svgCanvas$current; + + var exportImage = (_svgCanvas$current = svgCanvas.current) == null ? void 0 : _svgCanvas$current.exportImage; + + if (!exportImage) { + throw Error('Export function called before canvas loaded'); + } else { + return exportImage(imageType); + } + }, + exportSvg: function exportSvg() { + return new Promise(function (resolve, reject) { + var _svgCanvas$current2; + + var exportSvg = (_svgCanvas$current2 = svgCanvas.current) == null ? void 0 : _svgCanvas$current2.exportSvg; + + if (!exportSvg) { + reject(Error('Export function called before canvas loaded')); + } else { + exportSvg().then(function (data) { + resolve(data); + })["catch"](function (e) { + reject(e); + }); + } + }); + }, + exportPaths: function exportPaths() { + return new Promise(function (resolve, reject) { + try { + resolve(currentPaths); + } catch (e) { + reject(e); + } + }); + }, + loadPaths: function loadPaths(paths) { + setCurrentPaths(function (currentPaths) { + return [].concat(currentPaths, paths); + }); + }, + getSketchingTime: function getSketchingTime() { + return new Promise(function (resolve, reject) { + if (!withTimestamp) { + reject(new Error("Set 'withTimestamp' prop to get sketching time")); + } + + try { + var sketchingTime = currentPaths.reduce(function (totalSketchingTime, path) { + var _path$startTimestamp, _path$endTimestamp; + + var startTimestamp = (_path$startTimestamp = path.startTimestamp) != null ? _path$startTimestamp : 0; + var endTimestamp = (_path$endTimestamp = path.endTimestamp) != null ? _path$endTimestamp : 0; + return totalSketchingTime + (endTimestamp - startTimestamp); + }, 0); + resolve(sketchingTime); + } catch (e) { + reject(e); + } + }); + }, + resetCanvas: function resetCanvas() { + setResetStack([]); + setUndoStack([]); + setCurrentPaths([]); + } + }; + }); + + var handlePointerDown = function handlePointerDown(point) { + setIsDrawing(true); + setUndoStack([]); + var stroke = { + drawMode: drawMode, + strokeColor: drawMode ? strokeColor : '#000000', + strokeWidth: drawMode ? strokeWidth : eraserWidth, + paths: [point] + }; + + if (withTimestamp) { + stroke = _extends({}, stroke, { + startTimestamp: Date.now(), + endTimestamp: 0 + }); + } + + setCurrentPaths(function (currentPaths) { + return [].concat(currentPaths, [stroke]); + }); + }; + + var handlePointerMove = function handlePointerMove(point) { + if (!isDrawing) return; + var currentStroke = currentPaths.slice(-1)[0]; + + var updatedStroke = _extends({}, currentStroke, { + paths: [].concat(currentStroke.paths, [point]) + }); + + setCurrentPaths(function (currentPaths) { + return [].concat(currentPaths.slice(0, -1), [updatedStroke]); + }); + }; + + var handlePointerUp = function handlePointerUp() { + var _currentPaths$slice$2, _currentPaths$slice2; + + if (!isDrawing) { + return; + } + + setIsDrawing(false); + + if (!withTimestamp) { + return; + } + + var currentStroke = (_currentPaths$slice$2 = (_currentPaths$slice2 = currentPaths.slice(-1)) == null ? void 0 : _currentPaths$slice2[0]) != null ? _currentPaths$slice$2 : null; + + if (currentStroke === null) { + return; + } + + var updatedStroke = _extends({}, currentStroke, { + endTimestamp: Date.now() + }); + + setCurrentPaths(function (currentPaths) { + return [].concat(currentPaths.slice(0, -1), [updatedStroke]); + }); + }; + + return react__WEBPACK_IMPORTED_MODULE_0__.createElement(Canvas, { + ref: svgCanvas, + id: id, + width: width, + height: height, + className: className, + canvasColor: canvasColor, + backgroundImage: backgroundImage, + exportWithBackgroundImage: exportWithBackgroundImage, + preserveBackgroundImageAspectRatio: preserveBackgroundImageAspectRatio, + allowOnlyPointerType: allowOnlyPointerType, + style: style, + svgStyle: svgStyle, + paths: currentPaths, + isDrawing: isDrawing, + onPointerDown: handlePointerDown, + onPointerMove: handlePointerMove, + onPointerUp: handlePointerUp + }); +}); + + +//# sourceMappingURL=react-sketch-canvas.esm.js.map + + +/***/ }), + +/***/ "../node_modules/style-to-object/index.js": +/*!************************************************!*\ + !*** ../node_modules/style-to-object/index.js ***! + \************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var parse = __webpack_require__(/*! inline-style-parser */ "../node_modules/inline-style-parser/index.js"); + +/** + * Parses inline style to object. + * + * @example + * // returns { 'line-height': '42' } + * StyleToObject('line-height: 42;'); + * + * @param {String} style - The inline style. + * @param {Function} [iterator] - The iterator function. + * @return {null|Object} + */ +function StyleToObject(style, iterator) { + var output = null; + if (!style || typeof style !== 'string') { + return output; + } + + var declaration; + var declarations = parse(style); + var hasIterator = typeof iterator === 'function'; + var property; + var value; + + for (var i = 0, len = declarations.length; i < len; i++) { + declaration = declarations[i]; + property = declaration.property; + value = declaration.value; + + if (hasIterator) { + iterator(property, value, declaration); + } else if (value) { + output || (output = {}); + output[property] = value; + } + } + + return output; +} + +module.exports = StyleToObject; +module.exports["default"] = StyleToObject; // ESM support + + +/***/ }), + +/***/ "react": +/*!************************!*\ + !*** external "React" ***! + \************************/ +/***/ ((module) => { + +"use strict"; +module.exports = React; + +/***/ }), + +/***/ "react-dom": +/*!***************************!*\ + !*** external "ReactDOM" ***! + \***************************/ +/***/ ((module) => { + +"use strict"; +module.exports = ReactDOM; + +/***/ }), + +/***/ "@elementor/icons": +/*!************************************!*\ + !*** external "elementorV2.icons" ***! + \************************************/ +/***/ ((module) => { + +"use strict"; +module.exports = elementorV2.icons; + +/***/ }), + +/***/ "@elementor/ui": +/*!*********************************!*\ + !*** external "elementorV2.ui" ***! + \*********************************/ +/***/ ((module) => { + +"use strict"; +module.exports = elementorV2.ui; + +/***/ }), + +/***/ "@wordpress/i18n": +/*!**************************!*\ + !*** external "wp.i18n" ***! + \**************************/ +/***/ ((module) => { + +"use strict"; +module.exports = wp.i18n; + +/***/ }), + +/***/ "../node_modules/@babel/runtime/helpers/arrayLikeToArray.js": +/*!******************************************************************!*\ + !*** ../node_modules/@babel/runtime/helpers/arrayLikeToArray.js ***! + \******************************************************************/ +/***/ ((module) => { + +function _arrayLikeToArray(arr, len) { + if (len == null || len > arr.length) len = arr.length; + for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; + return arr2; +} +module.exports = _arrayLikeToArray, module.exports.__esModule = true, module.exports["default"] = module.exports; + +/***/ }), + +/***/ "../node_modules/@babel/runtime/helpers/arrayWithHoles.js": +/*!****************************************************************!*\ + !*** ../node_modules/@babel/runtime/helpers/arrayWithHoles.js ***! + \****************************************************************/ +/***/ ((module) => { + +function _arrayWithHoles(arr) { + if (Array.isArray(arr)) return arr; +} +module.exports = _arrayWithHoles, module.exports.__esModule = true, module.exports["default"] = module.exports; + +/***/ }), + +/***/ "../node_modules/@babel/runtime/helpers/arrayWithoutHoles.js": +/*!*******************************************************************!*\ + !*** ../node_modules/@babel/runtime/helpers/arrayWithoutHoles.js ***! + \*******************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var arrayLikeToArray = __webpack_require__(/*! ./arrayLikeToArray.js */ "../node_modules/@babel/runtime/helpers/arrayLikeToArray.js"); +function _arrayWithoutHoles(arr) { + if (Array.isArray(arr)) return arrayLikeToArray(arr); +} +module.exports = _arrayWithoutHoles, module.exports.__esModule = true, module.exports["default"] = module.exports; + +/***/ }), + +/***/ "../node_modules/@babel/runtime/helpers/asyncToGenerator.js": +/*!******************************************************************!*\ + !*** ../node_modules/@babel/runtime/helpers/asyncToGenerator.js ***! + \******************************************************************/ +/***/ ((module) => { + +function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { + try { + var info = gen[key](arg); + var value = info.value; + } catch (error) { + reject(error); + return; + } + if (info.done) { + resolve(value); + } else { + Promise.resolve(value).then(_next, _throw); + } +} +function _asyncToGenerator(fn) { + return function () { + var self = this, + args = arguments; + return new Promise(function (resolve, reject) { + var gen = fn.apply(self, args); + function _next(value) { + asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); + } + function _throw(err) { + asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); + } + _next(undefined); + }); + }; +} +module.exports = _asyncToGenerator, module.exports.__esModule = true, module.exports["default"] = module.exports; + +/***/ }), + +/***/ "../node_modules/@babel/runtime/helpers/defineProperty.js": +/*!****************************************************************!*\ + !*** ../node_modules/@babel/runtime/helpers/defineProperty.js ***! + \****************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var toPropertyKey = __webpack_require__(/*! ./toPropertyKey.js */ "../node_modules/@babel/runtime/helpers/toPropertyKey.js"); +function _defineProperty(obj, key, value) { + key = toPropertyKey(key); + if (key in obj) { + Object.defineProperty(obj, key, { + value: value, + enumerable: true, + configurable: true, + writable: true + }); + } else { + obj[key] = value; + } + return obj; +} +module.exports = _defineProperty, module.exports.__esModule = true, module.exports["default"] = module.exports; + +/***/ }), + +/***/ "../node_modules/@babel/runtime/helpers/extends.js": +/*!*********************************************************!*\ + !*** ../node_modules/@babel/runtime/helpers/extends.js ***! + \*********************************************************/ +/***/ ((module) => { + +function _extends() { + module.exports = _extends = Object.assign ? Object.assign.bind() : function (target) { + for (var i = 1; i < arguments.length; i++) { + var source = arguments[i]; + for (var key in source) { + if (Object.prototype.hasOwnProperty.call(source, key)) { + target[key] = source[key]; + } + } + } + return target; + }, module.exports.__esModule = true, module.exports["default"] = module.exports; + return _extends.apply(this, arguments); +} +module.exports = _extends, module.exports.__esModule = true, module.exports["default"] = module.exports; + +/***/ }), + +/***/ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js": +/*!***********************************************************************!*\ + !*** ../node_modules/@babel/runtime/helpers/interopRequireDefault.js ***! + \***********************************************************************/ +/***/ ((module) => { + +function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + "default": obj + }; +} +module.exports = _interopRequireDefault, module.exports.__esModule = true, module.exports["default"] = module.exports; + +/***/ }), + +/***/ "../node_modules/@babel/runtime/helpers/iterableToArray.js": +/*!*****************************************************************!*\ + !*** ../node_modules/@babel/runtime/helpers/iterableToArray.js ***! + \*****************************************************************/ +/***/ ((module) => { + +function _iterableToArray(iter) { + if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); +} +module.exports = _iterableToArray, module.exports.__esModule = true, module.exports["default"] = module.exports; + +/***/ }), + +/***/ "../node_modules/@babel/runtime/helpers/iterableToArrayLimit.js": +/*!**********************************************************************!*\ + !*** ../node_modules/@babel/runtime/helpers/iterableToArrayLimit.js ***! + \**********************************************************************/ +/***/ ((module) => { + +function _iterableToArrayLimit(r, l) { + var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; + if (null != t) { + var e, + n, + i, + u, + a = [], + f = !0, + o = !1; + try { + if (i = (t = t.call(r)).next, 0 === l) { + if (Object(t) !== t) return; + f = !1; + } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); + } catch (r) { + o = !0, n = r; + } finally { + try { + if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; + } finally { + if (o) throw n; + } + } + return a; + } +} +module.exports = _iterableToArrayLimit, module.exports.__esModule = true, module.exports["default"] = module.exports; + +/***/ }), + +/***/ "../node_modules/@babel/runtime/helpers/nonIterableRest.js": +/*!*****************************************************************!*\ + !*** ../node_modules/@babel/runtime/helpers/nonIterableRest.js ***! + \*****************************************************************/ +/***/ ((module) => { + +function _nonIterableRest() { + throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); +} +module.exports = _nonIterableRest, module.exports.__esModule = true, module.exports["default"] = module.exports; + +/***/ }), + +/***/ "../node_modules/@babel/runtime/helpers/nonIterableSpread.js": +/*!*******************************************************************!*\ + !*** ../node_modules/@babel/runtime/helpers/nonIterableSpread.js ***! + \*******************************************************************/ +/***/ ((module) => { + +function _nonIterableSpread() { + throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); +} +module.exports = _nonIterableSpread, module.exports.__esModule = true, module.exports["default"] = module.exports; + +/***/ }), + +/***/ "../node_modules/@babel/runtime/helpers/objectWithoutProperties.js": +/*!*************************************************************************!*\ + !*** ../node_modules/@babel/runtime/helpers/objectWithoutProperties.js ***! + \*************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var objectWithoutPropertiesLoose = __webpack_require__(/*! ./objectWithoutPropertiesLoose.js */ "../node_modules/@babel/runtime/helpers/objectWithoutPropertiesLoose.js"); +function _objectWithoutProperties(source, excluded) { + if (source == null) return {}; + var target = objectWithoutPropertiesLoose(source, excluded); + var key, i; + if (Object.getOwnPropertySymbols) { + var sourceSymbolKeys = Object.getOwnPropertySymbols(source); + for (i = 0; i < sourceSymbolKeys.length; i++) { + key = sourceSymbolKeys[i]; + if (excluded.indexOf(key) >= 0) continue; + if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; + target[key] = source[key]; + } + } + return target; +} +module.exports = _objectWithoutProperties, module.exports.__esModule = true, module.exports["default"] = module.exports; + +/***/ }), + +/***/ "../node_modules/@babel/runtime/helpers/objectWithoutPropertiesLoose.js": +/*!******************************************************************************!*\ + !*** ../node_modules/@babel/runtime/helpers/objectWithoutPropertiesLoose.js ***! + \******************************************************************************/ +/***/ ((module) => { + +function _objectWithoutPropertiesLoose(source, excluded) { + if (source == null) return {}; + var target = {}; + var sourceKeys = Object.keys(source); + var key, i; + for (i = 0; i < sourceKeys.length; i++) { + key = sourceKeys[i]; + if (excluded.indexOf(key) >= 0) continue; + target[key] = source[key]; + } + return target; +} +module.exports = _objectWithoutPropertiesLoose, module.exports.__esModule = true, module.exports["default"] = module.exports; + +/***/ }), + +/***/ "../node_modules/@babel/runtime/helpers/regeneratorRuntime.js": +/*!********************************************************************!*\ + !*** ../node_modules/@babel/runtime/helpers/regeneratorRuntime.js ***! + \********************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var _typeof = (__webpack_require__(/*! ./typeof.js */ "../node_modules/@babel/runtime/helpers/typeof.js")["default"]); +function _regeneratorRuntime() { + "use strict"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ + module.exports = _regeneratorRuntime = function _regeneratorRuntime() { + return e; + }, module.exports.__esModule = true, module.exports["default"] = module.exports; + var t, + e = {}, + r = Object.prototype, + n = r.hasOwnProperty, + o = Object.defineProperty || function (t, e, r) { + t[e] = r.value; + }, + i = "function" == typeof Symbol ? Symbol : {}, + a = i.iterator || "@@iterator", + c = i.asyncIterator || "@@asyncIterator", + u = i.toStringTag || "@@toStringTag"; + function define(t, e, r) { + return Object.defineProperty(t, e, { + value: r, + enumerable: !0, + configurable: !0, + writable: !0 + }), t[e]; + } + try { + define({}, ""); + } catch (t) { + define = function define(t, e, r) { + return t[e] = r; + }; + } + function wrap(t, e, r, n) { + var i = e && e.prototype instanceof Generator ? e : Generator, + a = Object.create(i.prototype), + c = new Context(n || []); + return o(a, "_invoke", { + value: makeInvokeMethod(t, r, c) + }), a; + } + function tryCatch(t, e, r) { + try { + return { + type: "normal", + arg: t.call(e, r) + }; + } catch (t) { + return { + type: "throw", + arg: t + }; + } + } + e.wrap = wrap; + var h = "suspendedStart", + l = "suspendedYield", + f = "executing", + s = "completed", + y = {}; + function Generator() {} + function GeneratorFunction() {} + function GeneratorFunctionPrototype() {} + var p = {}; + define(p, a, function () { + return this; + }); + var d = Object.getPrototypeOf, + v = d && d(d(values([]))); + v && v !== r && n.call(v, a) && (p = v); + var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); + function defineIteratorMethods(t) { + ["next", "throw", "return"].forEach(function (e) { + define(t, e, function (t) { + return this._invoke(e, t); + }); + }); + } + function AsyncIterator(t, e) { + function invoke(r, o, i, a) { + var c = tryCatch(t[r], t, o); + if ("throw" !== c.type) { + var u = c.arg, + h = u.value; + return h && "object" == _typeof(h) && n.call(h, "__await") ? e.resolve(h.__await).then(function (t) { + invoke("next", t, i, a); + }, function (t) { + invoke("throw", t, i, a); + }) : e.resolve(h).then(function (t) { + u.value = t, i(u); + }, function (t) { + return invoke("throw", t, i, a); + }); + } + a(c.arg); + } + var r; + o(this, "_invoke", { + value: function value(t, n) { + function callInvokeWithMethodAndArg() { + return new e(function (e, r) { + invoke(t, n, e, r); + }); + } + return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); + } + }); + } + function makeInvokeMethod(e, r, n) { + var o = h; + return function (i, a) { + if (o === f) throw new Error("Generator is already running"); + if (o === s) { + if ("throw" === i) throw a; + return { + value: t, + done: !0 + }; + } + for (n.method = i, n.arg = a;;) { + var c = n.delegate; + if (c) { + var u = maybeInvokeDelegate(c, n); + if (u) { + if (u === y) continue; + return u; + } + } + if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) { + if (o === h) throw o = s, n.arg; + n.dispatchException(n.arg); + } else "return" === n.method && n.abrupt("return", n.arg); + o = f; + var p = tryCatch(e, r, n); + if ("normal" === p.type) { + if (o = n.done ? s : l, p.arg === y) continue; + return { + value: p.arg, + done: n.done + }; + } + "throw" === p.type && (o = s, n.method = "throw", n.arg = p.arg); + } + }; + } + function maybeInvokeDelegate(e, r) { + var n = r.method, + o = e.iterator[n]; + if (o === t) return r.delegate = null, "throw" === n && e.iterator["return"] && (r.method = "return", r.arg = t, maybeInvokeDelegate(e, r), "throw" === r.method) || "return" !== n && (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + n + "' method")), y; + var i = tryCatch(o, e.iterator, r.arg); + if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, y; + var a = i.arg; + return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, "return" !== r.method && (r.method = "next", r.arg = t), r.delegate = null, y) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, y); + } + function pushTryEntry(t) { + var e = { + tryLoc: t[0] + }; + 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); + } + function resetTryEntry(t) { + var e = t.completion || {}; + e.type = "normal", delete e.arg, t.completion = e; + } + function Context(t) { + this.tryEntries = [{ + tryLoc: "root" + }], t.forEach(pushTryEntry, this), this.reset(!0); + } + function values(e) { + if (e || "" === e) { + var r = e[a]; + if (r) return r.call(e); + if ("function" == typeof e.next) return e; + if (!isNaN(e.length)) { + var o = -1, + i = function next() { + for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; + return next.value = t, next.done = !0, next; + }; + return i.next = i; + } + } + throw new TypeError(_typeof(e) + " is not iterable"); + } + return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", { + value: GeneratorFunctionPrototype, + configurable: !0 + }), o(GeneratorFunctionPrototype, "constructor", { + value: GeneratorFunction, + configurable: !0 + }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) { + var e = "function" == typeof t && t.constructor; + return !!e && (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name)); + }, e.mark = function (t) { + return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, "GeneratorFunction")), t.prototype = Object.create(g), t; + }, e.awrap = function (t) { + return { + __await: t + }; + }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { + return this; + }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { + void 0 === i && (i = Promise); + var a = new AsyncIterator(wrap(t, r, n, o), i); + return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { + return t.done ? t.value : a.next(); + }); + }, defineIteratorMethods(g), define(g, u, "Generator"), define(g, a, function () { + return this; + }), define(g, "toString", function () { + return "[object Generator]"; + }), e.keys = function (t) { + var e = Object(t), + r = []; + for (var n in e) r.push(n); + return r.reverse(), function next() { + for (; r.length;) { + var t = r.pop(); + if (t in e) return next.value = t, next.done = !1, next; + } + return next.done = !0, next; + }; + }, e.values = values, Context.prototype = { + constructor: Context, + reset: function reset(e) { + if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) "t" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); + }, + stop: function stop() { + this.done = !0; + var t = this.tryEntries[0].completion; + if ("throw" === t.type) throw t.arg; + return this.rval; + }, + dispatchException: function dispatchException(e) { + if (this.done) throw e; + var r = this; + function handle(n, o) { + return a.type = "throw", a.arg = e, r.next = n, o && (r.method = "next", r.arg = t), !!o; + } + for (var o = this.tryEntries.length - 1; o >= 0; --o) { + var i = this.tryEntries[o], + a = i.completion; + if ("root" === i.tryLoc) return handle("end"); + if (i.tryLoc <= this.prev) { + var c = n.call(i, "catchLoc"), + u = n.call(i, "finallyLoc"); + if (c && u) { + if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); + if (this.prev < i.finallyLoc) return handle(i.finallyLoc); + } else if (c) { + if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); + } else { + if (!u) throw new Error("try statement without catch or finally"); + if (this.prev < i.finallyLoc) return handle(i.finallyLoc); + } + } + } + }, + abrupt: function abrupt(t, e) { + for (var r = this.tryEntries.length - 1; r >= 0; --r) { + var o = this.tryEntries[r]; + if (o.tryLoc <= this.prev && n.call(o, "finallyLoc") && this.prev < o.finallyLoc) { + var i = o; + break; + } + } + i && ("break" === t || "continue" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); + var a = i ? i.completion : {}; + return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, y) : this.complete(a); + }, + complete: function complete(t, e) { + if ("throw" === t.type) throw t.arg; + return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type && e && (this.next = e), y; + }, + finish: function finish(t) { + for (var e = this.tryEntries.length - 1; e >= 0; --e) { + var r = this.tryEntries[e]; + if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; + } + }, + "catch": function _catch(t) { + for (var e = this.tryEntries.length - 1; e >= 0; --e) { + var r = this.tryEntries[e]; + if (r.tryLoc === t) { + var n = r.completion; + if ("throw" === n.type) { + var o = n.arg; + resetTryEntry(r); + } + return o; + } + } + throw new Error("illegal catch attempt"); + }, + delegateYield: function delegateYield(e, r, n) { + return this.delegate = { + iterator: values(e), + resultName: r, + nextLoc: n + }, "next" === this.method && (this.arg = t), y; + } + }, e; +} +module.exports = _regeneratorRuntime, module.exports.__esModule = true, module.exports["default"] = module.exports; + +/***/ }), + +/***/ "../node_modules/@babel/runtime/helpers/slicedToArray.js": +/*!***************************************************************!*\ + !*** ../node_modules/@babel/runtime/helpers/slicedToArray.js ***! + \***************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var arrayWithHoles = __webpack_require__(/*! ./arrayWithHoles.js */ "../node_modules/@babel/runtime/helpers/arrayWithHoles.js"); +var iterableToArrayLimit = __webpack_require__(/*! ./iterableToArrayLimit.js */ "../node_modules/@babel/runtime/helpers/iterableToArrayLimit.js"); +var unsupportedIterableToArray = __webpack_require__(/*! ./unsupportedIterableToArray.js */ "../node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js"); +var nonIterableRest = __webpack_require__(/*! ./nonIterableRest.js */ "../node_modules/@babel/runtime/helpers/nonIterableRest.js"); +function _slicedToArray(arr, i) { + return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest(); +} +module.exports = _slicedToArray, module.exports.__esModule = true, module.exports["default"] = module.exports; + +/***/ }), + +/***/ "../node_modules/@babel/runtime/helpers/taggedTemplateLiteral.js": +/*!***********************************************************************!*\ + !*** ../node_modules/@babel/runtime/helpers/taggedTemplateLiteral.js ***! + \***********************************************************************/ +/***/ ((module) => { + +function _taggedTemplateLiteral(strings, raw) { + if (!raw) { + raw = strings.slice(0); + } + return Object.freeze(Object.defineProperties(strings, { + raw: { + value: Object.freeze(raw) + } + })); +} +module.exports = _taggedTemplateLiteral, module.exports.__esModule = true, module.exports["default"] = module.exports; + +/***/ }), + +/***/ "../node_modules/@babel/runtime/helpers/toConsumableArray.js": +/*!*******************************************************************!*\ + !*** ../node_modules/@babel/runtime/helpers/toConsumableArray.js ***! + \*******************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var arrayWithoutHoles = __webpack_require__(/*! ./arrayWithoutHoles.js */ "../node_modules/@babel/runtime/helpers/arrayWithoutHoles.js"); +var iterableToArray = __webpack_require__(/*! ./iterableToArray.js */ "../node_modules/@babel/runtime/helpers/iterableToArray.js"); +var unsupportedIterableToArray = __webpack_require__(/*! ./unsupportedIterableToArray.js */ "../node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js"); +var nonIterableSpread = __webpack_require__(/*! ./nonIterableSpread.js */ "../node_modules/@babel/runtime/helpers/nonIterableSpread.js"); +function _toConsumableArray(arr) { + return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread(); +} +module.exports = _toConsumableArray, module.exports.__esModule = true, module.exports["default"] = module.exports; + +/***/ }), + +/***/ "../node_modules/@babel/runtime/helpers/toPrimitive.js": +/*!*************************************************************!*\ + !*** ../node_modules/@babel/runtime/helpers/toPrimitive.js ***! + \*************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var _typeof = (__webpack_require__(/*! ./typeof.js */ "../node_modules/@babel/runtime/helpers/typeof.js")["default"]); +function toPrimitive(t, r) { + if ("object" != _typeof(t) || !t) return t; + var e = t[Symbol.toPrimitive]; + if (void 0 !== e) { + var i = e.call(t, r || "default"); + if ("object" != _typeof(i)) return i; + throw new TypeError("@@toPrimitive must return a primitive value."); + } + return ("string" === r ? String : Number)(t); +} +module.exports = toPrimitive, module.exports.__esModule = true, module.exports["default"] = module.exports; + +/***/ }), + +/***/ "../node_modules/@babel/runtime/helpers/toPropertyKey.js": +/*!***************************************************************!*\ + !*** ../node_modules/@babel/runtime/helpers/toPropertyKey.js ***! + \***************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var _typeof = (__webpack_require__(/*! ./typeof.js */ "../node_modules/@babel/runtime/helpers/typeof.js")["default"]); +var toPrimitive = __webpack_require__(/*! ./toPrimitive.js */ "../node_modules/@babel/runtime/helpers/toPrimitive.js"); +function toPropertyKey(t) { + var i = toPrimitive(t, "string"); + return "symbol" == _typeof(i) ? i : String(i); +} +module.exports = toPropertyKey, module.exports.__esModule = true, module.exports["default"] = module.exports; + +/***/ }), + +/***/ "../node_modules/@babel/runtime/helpers/typeof.js": +/*!********************************************************!*\ + !*** ../node_modules/@babel/runtime/helpers/typeof.js ***! + \********************************************************/ +/***/ ((module) => { + +function _typeof(o) { + "@babel/helpers - typeof"; + + return (module.exports = _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { + return typeof o; + } : function (o) { + return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; + }, module.exports.__esModule = true, module.exports["default"] = module.exports), _typeof(o); +} +module.exports = _typeof, module.exports.__esModule = true, module.exports["default"] = module.exports; + +/***/ }), + +/***/ "../node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js": +/*!****************************************************************************!*\ + !*** ../node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js ***! + \****************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var arrayLikeToArray = __webpack_require__(/*! ./arrayLikeToArray.js */ "../node_modules/@babel/runtime/helpers/arrayLikeToArray.js"); +function _unsupportedIterableToArray(o, minLen) { + if (!o) return; + if (typeof o === "string") return arrayLikeToArray(o, minLen); + var n = Object.prototype.toString.call(o).slice(8, -1); + if (n === "Object" && o.constructor) n = o.constructor.name; + if (n === "Map" || n === "Set") return Array.from(o); + if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen); +} +module.exports = _unsupportedIterableToArray, module.exports.__esModule = true, module.exports["default"] = module.exports; + +/***/ }), + +/***/ "../node_modules/@babel/runtime/regenerator/index.js": +/*!***********************************************************!*\ + !*** ../node_modules/@babel/runtime/regenerator/index.js ***! + \***********************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +// TODO(Babel 8): Remove this file. + +var runtime = __webpack_require__(/*! ../helpers/regeneratorRuntime */ "../node_modules/@babel/runtime/helpers/regeneratorRuntime.js")(); +module.exports = runtime; + +// Copied from https://github.com/facebook/regenerator/blob/main/packages/runtime/runtime.js#L736= +try { + regeneratorRuntime = runtime; +} catch (accidentalStrictMode) { + if (typeof globalThis === "object") { + globalThis.regeneratorRuntime = runtime; + } else { + Function("r", "regeneratorRuntime = r")(runtime); + } +} + + +/***/ }), + +/***/ "../node_modules/bail/index.js": +/*!*************************************!*\ + !*** ../node_modules/bail/index.js ***! + \*************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ bail: () => (/* binding */ bail) +/* harmony export */ }); +/** + * Throw a given error. + * + * @param {Error|null|undefined} [error] + * Maybe error. + * @returns {asserts error is null|undefined} + */ +function bail(error) { + if (error) { + throw error + } +} + + +/***/ }), + +/***/ "../node_modules/comma-separated-tokens/index.js": +/*!*******************************************************!*\ + !*** ../node_modules/comma-separated-tokens/index.js ***! + \*******************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ parse: () => (/* binding */ parse), +/* harmony export */ stringify: () => (/* binding */ stringify) +/* harmony export */ }); +/** + * @typedef Options + * Configuration for `stringify`. + * @property {boolean} [padLeft=true] + * Whether to pad a space before a token. + * @property {boolean} [padRight=false] + * Whether to pad a space after a token. + */ + +/** + * @typedef {Options} StringifyOptions + * Please use `StringifyOptions` instead. + */ + +/** + * Parse comma-separated tokens to an array. + * + * @param {string} value + * Comma-separated tokens. + * @returns {Array} + * List of tokens. + */ +function parse(value) { + /** @type {Array} */ + const tokens = [] + const input = String(value || '') + let index = input.indexOf(',') + let start = 0 + /** @type {boolean} */ + let end = false + + while (!end) { + if (index === -1) { + index = input.length + end = true + } + + const token = input.slice(start, index).trim() + + if (token || !end) { + tokens.push(token) + } + + start = index + 1 + index = input.indexOf(',', start) + } + + return tokens +} + +/** + * Serialize an array of strings or numbers to comma-separated tokens. + * + * @param {Array} values + * List of tokens. + * @param {Options} [options] + * Configuration for `stringify` (optional). + * @returns {string} + * Comma-separated tokens. + */ +function stringify(values, options) { + const settings = options || {} + + // Ensure the last empty entry is seen. + const input = values[values.length - 1] === '' ? [...values, ''] : values + + return input + .join( + (settings.padRight ? ' ' : '') + + ',' + + (settings.padLeft === false ? '' : ' ') + ) + .trim() +} + + +/***/ }), + +/***/ "../node_modules/decode-named-character-reference/index.dom.js": +/*!*********************************************************************!*\ + !*** ../node_modules/decode-named-character-reference/index.dom.js ***! + \*********************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ decodeNamedCharacterReference: () => (/* binding */ decodeNamedCharacterReference) +/* harmony export */ }); +/// + +/* eslint-env browser */ + +const element = document.createElement('i') + +/** + * @param {string} value + * @returns {string|false} + */ +function decodeNamedCharacterReference(value) { + const characterReference = '&' + value + ';' + element.innerHTML = characterReference + const char = element.textContent + + // Some named character references do not require the closing semicolon + // (`¬`, for instance), which leads to situations where parsing the assumed + // named reference of `¬it;` will result in the string `¬it;`. + // When we encounter a trailing semicolon after parsing, and the character + // reference to decode was not a semicolon (`;`), we can assume that the + // matching was not complete. + // @ts-expect-error: TypeScript is wrong that `textContent` on elements can + // yield `null`. + if (char.charCodeAt(char.length - 1) === 59 /* `;` */ && value !== 'semi') { + return false + } + + // If the decoded string is equal to the input, the character reference was + // not valid. + // @ts-expect-error: TypeScript is wrong that `textContent` on elements can + // yield `null`. + return char === characterReference ? false : char +} + + +/***/ }), + +/***/ "../node_modules/dequal/dist/index.mjs": +/*!*********************************************!*\ + !*** ../node_modules/dequal/dist/index.mjs ***! + \*********************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ dequal: () => (/* binding */ dequal) +/* harmony export */ }); +var has = Object.prototype.hasOwnProperty; + +function find(iter, tar, key) { + for (key of iter.keys()) { + if (dequal(key, tar)) return key; + } +} + +function dequal(foo, bar) { + var ctor, len, tmp; + if (foo === bar) return true; + + if (foo && bar && (ctor=foo.constructor) === bar.constructor) { + if (ctor === Date) return foo.getTime() === bar.getTime(); + if (ctor === RegExp) return foo.toString() === bar.toString(); + + if (ctor === Array) { + if ((len=foo.length) === bar.length) { + while (len-- && dequal(foo[len], bar[len])); + } + return len === -1; + } + + if (ctor === Set) { + if (foo.size !== bar.size) { + return false; + } + for (len of foo) { + tmp = len; + if (tmp && typeof tmp === 'object') { + tmp = find(bar, tmp); + if (!tmp) return false; + } + if (!bar.has(tmp)) return false; + } + return true; + } + + if (ctor === Map) { + if (foo.size !== bar.size) { + return false; + } + for (len of foo) { + tmp = len[0]; + if (tmp && typeof tmp === 'object') { + tmp = find(bar, tmp); + if (!tmp) return false; + } + if (!dequal(len[1], bar.get(tmp))) { + return false; + } + } + return true; + } + + if (ctor === ArrayBuffer) { + foo = new Uint8Array(foo); + bar = new Uint8Array(bar); + } else if (ctor === DataView) { + if ((len=foo.byteLength) === bar.byteLength) { + while (len-- && foo.getInt8(len) === bar.getInt8(len)); + } + return len === -1; + } + + if (ArrayBuffer.isView(foo)) { + if ((len=foo.byteLength) === bar.byteLength) { + while (len-- && foo[len] === bar[len]); + } + return len === -1; + } + + if (!ctor || typeof foo === 'object') { + len = 0; + for (ctor in foo) { + if (has.call(foo, ctor) && ++len && !has.call(bar, ctor)) return false; + if (!(ctor in bar) || !dequal(foo[ctor], bar[ctor])) return false; + } + return Object.keys(bar).length === len; + } + } + + return foo !== foo && bar !== bar; +} + + +/***/ }), + +/***/ "../node_modules/diff/lib/index.mjs": +/*!******************************************!*\ + !*** ../node_modules/diff/lib/index.mjs ***! + \******************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ Diff: () => (/* binding */ Diff), +/* harmony export */ applyPatch: () => (/* binding */ applyPatch), +/* harmony export */ applyPatches: () => (/* binding */ applyPatches), +/* harmony export */ canonicalize: () => (/* binding */ canonicalize), +/* harmony export */ convertChangesToDMP: () => (/* binding */ convertChangesToDMP), +/* harmony export */ convertChangesToXML: () => (/* binding */ convertChangesToXML), +/* harmony export */ createPatch: () => (/* binding */ createPatch), +/* harmony export */ createTwoFilesPatch: () => (/* binding */ createTwoFilesPatch), +/* harmony export */ diffArrays: () => (/* binding */ diffArrays), +/* harmony export */ diffChars: () => (/* binding */ diffChars), +/* harmony export */ diffCss: () => (/* binding */ diffCss), +/* harmony export */ diffJson: () => (/* binding */ diffJson), +/* harmony export */ diffLines: () => (/* binding */ diffLines), +/* harmony export */ diffSentences: () => (/* binding */ diffSentences), +/* harmony export */ diffTrimmedLines: () => (/* binding */ diffTrimmedLines), +/* harmony export */ diffWords: () => (/* binding */ diffWords), +/* harmony export */ diffWordsWithSpace: () => (/* binding */ diffWordsWithSpace), +/* harmony export */ merge: () => (/* binding */ merge), +/* harmony export */ parsePatch: () => (/* binding */ parsePatch), +/* harmony export */ structuredPatch: () => (/* binding */ structuredPatch) +/* harmony export */ }); +function Diff() {} +Diff.prototype = { + diff: function diff(oldString, newString) { + var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; + var callback = options.callback; + + if (typeof options === 'function') { + callback = options; + options = {}; + } + + this.options = options; + var self = this; + + function done(value) { + if (callback) { + setTimeout(function () { + callback(undefined, value); + }, 0); + return true; + } else { + return value; + } + } // Allow subclasses to massage the input prior to running + + + oldString = this.castInput(oldString); + newString = this.castInput(newString); + oldString = this.removeEmpty(this.tokenize(oldString)); + newString = this.removeEmpty(this.tokenize(newString)); + var newLen = newString.length, + oldLen = oldString.length; + var editLength = 1; + var maxEditLength = newLen + oldLen; + + if (options.maxEditLength) { + maxEditLength = Math.min(maxEditLength, options.maxEditLength); + } + + var bestPath = [{ + newPos: -1, + components: [] + }]; // Seed editLength = 0, i.e. the content starts with the same values + + var oldPos = this.extractCommon(bestPath[0], newString, oldString, 0); + + if (bestPath[0].newPos + 1 >= newLen && oldPos + 1 >= oldLen) { + // Identity per the equality and tokenizer + return done([{ + value: this.join(newString), + count: newString.length + }]); + } // Main worker method. checks all permutations of a given edit length for acceptance. + + + function execEditLength() { + for (var diagonalPath = -1 * editLength; diagonalPath <= editLength; diagonalPath += 2) { + var basePath = void 0; + + var addPath = bestPath[diagonalPath - 1], + removePath = bestPath[diagonalPath + 1], + _oldPos = (removePath ? removePath.newPos : 0) - diagonalPath; + + if (addPath) { + // No one else is going to attempt to use this value, clear it + bestPath[diagonalPath - 1] = undefined; + } + + var canAdd = addPath && addPath.newPos + 1 < newLen, + canRemove = removePath && 0 <= _oldPos && _oldPos < oldLen; + + if (!canAdd && !canRemove) { + // If this path is a terminal then prune + bestPath[diagonalPath] = undefined; + continue; + } // Select the diagonal that we want to branch from. We select the prior + // path whose position in the new string is the farthest from the origin + // and does not pass the bounds of the diff graph + + + if (!canAdd || canRemove && addPath.newPos < removePath.newPos) { + basePath = clonePath(removePath); + self.pushComponent(basePath.components, undefined, true); + } else { + basePath = addPath; // No need to clone, we've pulled it from the list + + basePath.newPos++; + self.pushComponent(basePath.components, true, undefined); + } + + _oldPos = self.extractCommon(basePath, newString, oldString, diagonalPath); // If we have hit the end of both strings, then we are done + + if (basePath.newPos + 1 >= newLen && _oldPos + 1 >= oldLen) { + return done(buildValues(self, basePath.components, newString, oldString, self.useLongestToken)); + } else { + // Otherwise track this path as a potential candidate and continue. + bestPath[diagonalPath] = basePath; + } + } + + editLength++; + } // Performs the length of edit iteration. Is a bit fugly as this has to support the + // sync and async mode which is never fun. Loops over execEditLength until a value + // is produced, or until the edit length exceeds options.maxEditLength (if given), + // in which case it will return undefined. + + + if (callback) { + (function exec() { + setTimeout(function () { + if (editLength > maxEditLength) { + return callback(); + } + + if (!execEditLength()) { + exec(); + } + }, 0); + })(); + } else { + while (editLength <= maxEditLength) { + var ret = execEditLength(); + + if (ret) { + return ret; + } + } + } + }, + pushComponent: function pushComponent(components, added, removed) { + var last = components[components.length - 1]; + + if (last && last.added === added && last.removed === removed) { + // We need to clone here as the component clone operation is just + // as shallow array clone + components[components.length - 1] = { + count: last.count + 1, + added: added, + removed: removed + }; + } else { + components.push({ + count: 1, + added: added, + removed: removed + }); + } + }, + extractCommon: function extractCommon(basePath, newString, oldString, diagonalPath) { + var newLen = newString.length, + oldLen = oldString.length, + newPos = basePath.newPos, + oldPos = newPos - diagonalPath, + commonCount = 0; + + while (newPos + 1 < newLen && oldPos + 1 < oldLen && this.equals(newString[newPos + 1], oldString[oldPos + 1])) { + newPos++; + oldPos++; + commonCount++; + } + + if (commonCount) { + basePath.components.push({ + count: commonCount + }); + } + + basePath.newPos = newPos; + return oldPos; + }, + equals: function equals(left, right) { + if (this.options.comparator) { + return this.options.comparator(left, right); + } else { + return left === right || this.options.ignoreCase && left.toLowerCase() === right.toLowerCase(); + } + }, + removeEmpty: function removeEmpty(array) { + var ret = []; + + for (var i = 0; i < array.length; i++) { + if (array[i]) { + ret.push(array[i]); + } + } + + return ret; + }, + castInput: function castInput(value) { + return value; + }, + tokenize: function tokenize(value) { + return value.split(''); + }, + join: function join(chars) { + return chars.join(''); + } +}; + +function buildValues(diff, components, newString, oldString, useLongestToken) { + var componentPos = 0, + componentLen = components.length, + newPos = 0, + oldPos = 0; + + for (; componentPos < componentLen; componentPos++) { + var component = components[componentPos]; + + if (!component.removed) { + if (!component.added && useLongestToken) { + var value = newString.slice(newPos, newPos + component.count); + value = value.map(function (value, i) { + var oldValue = oldString[oldPos + i]; + return oldValue.length > value.length ? oldValue : value; + }); + component.value = diff.join(value); + } else { + component.value = diff.join(newString.slice(newPos, newPos + component.count)); + } + + newPos += component.count; // Common case + + if (!component.added) { + oldPos += component.count; + } + } else { + component.value = diff.join(oldString.slice(oldPos, oldPos + component.count)); + oldPos += component.count; // Reverse add and remove so removes are output first to match common convention + // The diffing algorithm is tied to add then remove output and this is the simplest + // route to get the desired output with minimal overhead. + + if (componentPos && components[componentPos - 1].added) { + var tmp = components[componentPos - 1]; + components[componentPos - 1] = components[componentPos]; + components[componentPos] = tmp; + } + } + } // Special case handle for when one terminal is ignored (i.e. whitespace). + // For this case we merge the terminal into the prior string and drop the change. + // This is only available for string mode. + + + var lastComponent = components[componentLen - 1]; + + if (componentLen > 1 && typeof lastComponent.value === 'string' && (lastComponent.added || lastComponent.removed) && diff.equals('', lastComponent.value)) { + components[componentLen - 2].value += lastComponent.value; + components.pop(); + } + + return components; +} + +function clonePath(path) { + return { + newPos: path.newPos, + components: path.components.slice(0) + }; +} + +var characterDiff = new Diff(); +function diffChars(oldStr, newStr, options) { + return characterDiff.diff(oldStr, newStr, options); +} + +function generateOptions(options, defaults) { + if (typeof options === 'function') { + defaults.callback = options; + } else if (options) { + for (var name in options) { + /* istanbul ignore else */ + if (options.hasOwnProperty(name)) { + defaults[name] = options[name]; + } + } + } + + return defaults; +} + +// +// Ranges and exceptions: +// Latin-1 Supplement, 0080–00FF +// - U+00D7 × Multiplication sign +// - U+00F7 ÷ Division sign +// Latin Extended-A, 0100–017F +// Latin Extended-B, 0180–024F +// IPA Extensions, 0250–02AF +// Spacing Modifier Letters, 02B0–02FF +// - U+02C7 ˇ ˇ Caron +// - U+02D8 ˘ ˘ Breve +// - U+02D9 ˙ ˙ Dot Above +// - U+02DA ˚ ˚ Ring Above +// - U+02DB ˛ ˛ Ogonek +// - U+02DC ˜ ˜ Small Tilde +// - U+02DD ˝ ˝ Double Acute Accent +// Latin Extended Additional, 1E00–1EFF + +var extendedWordChars = /^[A-Za-z\xC0-\u02C6\u02C8-\u02D7\u02DE-\u02FF\u1E00-\u1EFF]+$/; +var reWhitespace = /\S/; +var wordDiff = new Diff(); + +wordDiff.equals = function (left, right) { + if (this.options.ignoreCase) { + left = left.toLowerCase(); + right = right.toLowerCase(); + } + + return left === right || this.options.ignoreWhitespace && !reWhitespace.test(left) && !reWhitespace.test(right); +}; + +wordDiff.tokenize = function (value) { + // All whitespace symbols except newline group into one token, each newline - in separate token + var tokens = value.split(/([^\S\r\n]+|[()[\]{}'"\r\n]|\b)/); // Join the boundary splits that we do not consider to be boundaries. This is primarily the extended Latin character set. + + for (var i = 0; i < tokens.length - 1; i++) { + // If we have an empty string in the next field and we have only word chars before and after, merge + if (!tokens[i + 1] && tokens[i + 2] && extendedWordChars.test(tokens[i]) && extendedWordChars.test(tokens[i + 2])) { + tokens[i] += tokens[i + 2]; + tokens.splice(i + 1, 2); + i--; + } + } + + return tokens; +}; + +function diffWords(oldStr, newStr, options) { + options = generateOptions(options, { + ignoreWhitespace: true + }); + return wordDiff.diff(oldStr, newStr, options); +} +function diffWordsWithSpace(oldStr, newStr, options) { + return wordDiff.diff(oldStr, newStr, options); +} + +var lineDiff = new Diff(); + +lineDiff.tokenize = function (value) { + var retLines = [], + linesAndNewlines = value.split(/(\n|\r\n)/); // Ignore the final empty token that occurs if the string ends with a new line + + if (!linesAndNewlines[linesAndNewlines.length - 1]) { + linesAndNewlines.pop(); + } // Merge the content and line separators into single tokens + + + for (var i = 0; i < linesAndNewlines.length; i++) { + var line = linesAndNewlines[i]; + + if (i % 2 && !this.options.newlineIsToken) { + retLines[retLines.length - 1] += line; + } else { + if (this.options.ignoreWhitespace) { + line = line.trim(); + } + + retLines.push(line); + } + } + + return retLines; +}; + +function diffLines(oldStr, newStr, callback) { + return lineDiff.diff(oldStr, newStr, callback); +} +function diffTrimmedLines(oldStr, newStr, callback) { + var options = generateOptions(callback, { + ignoreWhitespace: true + }); + return lineDiff.diff(oldStr, newStr, options); +} + +var sentenceDiff = new Diff(); + +sentenceDiff.tokenize = function (value) { + return value.split(/(\S.+?[.!?])(?=\s+|$)/); +}; + +function diffSentences(oldStr, newStr, callback) { + return sentenceDiff.diff(oldStr, newStr, callback); +} + +var cssDiff = new Diff(); + +cssDiff.tokenize = function (value) { + return value.split(/([{}:;,]|\s+)/); +}; + +function diffCss(oldStr, newStr, callback) { + return cssDiff.diff(oldStr, newStr, callback); +} + +function _typeof(obj) { + "@babel/helpers - typeof"; + + if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { + _typeof = function (obj) { + return typeof obj; + }; + } else { + _typeof = function (obj) { + return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; + }; + } + + return _typeof(obj); +} + +function _toConsumableArray(arr) { + return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); +} + +function _arrayWithoutHoles(arr) { + if (Array.isArray(arr)) return _arrayLikeToArray(arr); +} + +function _iterableToArray(iter) { + if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter)) return Array.from(iter); +} + +function _unsupportedIterableToArray(o, minLen) { + if (!o) return; + if (typeof o === "string") return _arrayLikeToArray(o, minLen); + var n = Object.prototype.toString.call(o).slice(8, -1); + if (n === "Object" && o.constructor) n = o.constructor.name; + if (n === "Map" || n === "Set") return Array.from(o); + if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); +} + +function _arrayLikeToArray(arr, len) { + if (len == null || len > arr.length) len = arr.length; + + for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; + + return arr2; +} + +function _nonIterableSpread() { + throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); +} + +var objectPrototypeToString = Object.prototype.toString; +var jsonDiff = new Diff(); // Discriminate between two lines of pretty-printed, serialized JSON where one of them has a +// dangling comma and the other doesn't. Turns out including the dangling comma yields the nicest output: + +jsonDiff.useLongestToken = true; +jsonDiff.tokenize = lineDiff.tokenize; + +jsonDiff.castInput = function (value) { + var _this$options = this.options, + undefinedReplacement = _this$options.undefinedReplacement, + _this$options$stringi = _this$options.stringifyReplacer, + stringifyReplacer = _this$options$stringi === void 0 ? function (k, v) { + return typeof v === 'undefined' ? undefinedReplacement : v; + } : _this$options$stringi; + return typeof value === 'string' ? value : JSON.stringify(canonicalize(value, null, null, stringifyReplacer), stringifyReplacer, ' '); +}; + +jsonDiff.equals = function (left, right) { + return Diff.prototype.equals.call(jsonDiff, left.replace(/,([\r\n])/g, '$1'), right.replace(/,([\r\n])/g, '$1')); +}; + +function diffJson(oldObj, newObj, options) { + return jsonDiff.diff(oldObj, newObj, options); +} // This function handles the presence of circular references by bailing out when encountering an +// object that is already on the "stack" of items being processed. Accepts an optional replacer + +function canonicalize(obj, stack, replacementStack, replacer, key) { + stack = stack || []; + replacementStack = replacementStack || []; + + if (replacer) { + obj = replacer(key, obj); + } + + var i; + + for (i = 0; i < stack.length; i += 1) { + if (stack[i] === obj) { + return replacementStack[i]; + } + } + + var canonicalizedObj; + + if ('[object Array]' === objectPrototypeToString.call(obj)) { + stack.push(obj); + canonicalizedObj = new Array(obj.length); + replacementStack.push(canonicalizedObj); + + for (i = 0; i < obj.length; i += 1) { + canonicalizedObj[i] = canonicalize(obj[i], stack, replacementStack, replacer, key); + } + + stack.pop(); + replacementStack.pop(); + return canonicalizedObj; + } + + if (obj && obj.toJSON) { + obj = obj.toJSON(); + } + + if (_typeof(obj) === 'object' && obj !== null) { + stack.push(obj); + canonicalizedObj = {}; + replacementStack.push(canonicalizedObj); + + var sortedKeys = [], + _key; + + for (_key in obj) { + /* istanbul ignore else */ + if (obj.hasOwnProperty(_key)) { + sortedKeys.push(_key); + } + } + + sortedKeys.sort(); + + for (i = 0; i < sortedKeys.length; i += 1) { + _key = sortedKeys[i]; + canonicalizedObj[_key] = canonicalize(obj[_key], stack, replacementStack, replacer, _key); + } + + stack.pop(); + replacementStack.pop(); + } else { + canonicalizedObj = obj; + } + + return canonicalizedObj; +} + +var arrayDiff = new Diff(); + +arrayDiff.tokenize = function (value) { + return value.slice(); +}; + +arrayDiff.join = arrayDiff.removeEmpty = function (value) { + return value; +}; + +function diffArrays(oldArr, newArr, callback) { + return arrayDiff.diff(oldArr, newArr, callback); +} + +function parsePatch(uniDiff) { + var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + var diffstr = uniDiff.split(/\r\n|[\n\v\f\r\x85]/), + delimiters = uniDiff.match(/\r\n|[\n\v\f\r\x85]/g) || [], + list = [], + i = 0; + + function parseIndex() { + var index = {}; + list.push(index); // Parse diff metadata + + while (i < diffstr.length) { + var line = diffstr[i]; // File header found, end parsing diff metadata + + if (/^(\-\-\-|\+\+\+|@@)\s/.test(line)) { + break; + } // Diff index + + + var header = /^(?:Index:|diff(?: -r \w+)+)\s+(.+?)\s*$/.exec(line); + + if (header) { + index.index = header[1]; + } + + i++; + } // Parse file headers if they are defined. Unified diff requires them, but + // there's no technical issues to have an isolated hunk without file header + + + parseFileHeader(index); + parseFileHeader(index); // Parse hunks + + index.hunks = []; + + while (i < diffstr.length) { + var _line = diffstr[i]; + + if (/^(Index:|diff|\-\-\-|\+\+\+)\s/.test(_line)) { + break; + } else if (/^@@/.test(_line)) { + index.hunks.push(parseHunk()); + } else if (_line && options.strict) { + // Ignore unexpected content unless in strict mode + throw new Error('Unknown line ' + (i + 1) + ' ' + JSON.stringify(_line)); + } else { + i++; + } + } + } // Parses the --- and +++ headers, if none are found, no lines + // are consumed. + + + function parseFileHeader(index) { + var fileHeader = /^(---|\+\+\+)\s+(.*)$/.exec(diffstr[i]); + + if (fileHeader) { + var keyPrefix = fileHeader[1] === '---' ? 'old' : 'new'; + var data = fileHeader[2].split('\t', 2); + var fileName = data[0].replace(/\\\\/g, '\\'); + + if (/^".*"$/.test(fileName)) { + fileName = fileName.substr(1, fileName.length - 2); + } + + index[keyPrefix + 'FileName'] = fileName; + index[keyPrefix + 'Header'] = (data[1] || '').trim(); + i++; + } + } // Parses a hunk + // This assumes that we are at the start of a hunk. + + + function parseHunk() { + var chunkHeaderIndex = i, + chunkHeaderLine = diffstr[i++], + chunkHeader = chunkHeaderLine.split(/@@ -(\d+)(?:,(\d+))? \+(\d+)(?:,(\d+))? @@/); + var hunk = { + oldStart: +chunkHeader[1], + oldLines: typeof chunkHeader[2] === 'undefined' ? 1 : +chunkHeader[2], + newStart: +chunkHeader[3], + newLines: typeof chunkHeader[4] === 'undefined' ? 1 : +chunkHeader[4], + lines: [], + linedelimiters: [] + }; // Unified Diff Format quirk: If the chunk size is 0, + // the first number is one lower than one would expect. + // https://www.artima.com/weblogs/viewpost.jsp?thread=164293 + + if (hunk.oldLines === 0) { + hunk.oldStart += 1; + } + + if (hunk.newLines === 0) { + hunk.newStart += 1; + } + + var addCount = 0, + removeCount = 0; + + for (; i < diffstr.length; i++) { + // Lines starting with '---' could be mistaken for the "remove line" operation + // But they could be the header for the next file. Therefore prune such cases out. + if (diffstr[i].indexOf('--- ') === 0 && i + 2 < diffstr.length && diffstr[i + 1].indexOf('+++ ') === 0 && diffstr[i + 2].indexOf('@@') === 0) { + break; + } + + var operation = diffstr[i].length == 0 && i != diffstr.length - 1 ? ' ' : diffstr[i][0]; + + if (operation === '+' || operation === '-' || operation === ' ' || operation === '\\') { + hunk.lines.push(diffstr[i]); + hunk.linedelimiters.push(delimiters[i] || '\n'); + + if (operation === '+') { + addCount++; + } else if (operation === '-') { + removeCount++; + } else if (operation === ' ') { + addCount++; + removeCount++; + } + } else { + break; + } + } // Handle the empty block count case + + + if (!addCount && hunk.newLines === 1) { + hunk.newLines = 0; + } + + if (!removeCount && hunk.oldLines === 1) { + hunk.oldLines = 0; + } // Perform optional sanity checking + + + if (options.strict) { + if (addCount !== hunk.newLines) { + throw new Error('Added line count did not match for hunk at line ' + (chunkHeaderIndex + 1)); + } + + if (removeCount !== hunk.oldLines) { + throw new Error('Removed line count did not match for hunk at line ' + (chunkHeaderIndex + 1)); + } + } + + return hunk; + } + + while (i < diffstr.length) { + parseIndex(); + } + + return list; +} + +// Iterator that traverses in the range of [min, max], stepping +// by distance from a given start position. I.e. for [0, 4], with +// start of 2, this will iterate 2, 3, 1, 4, 0. +function distanceIterator (start, minLine, maxLine) { + var wantForward = true, + backwardExhausted = false, + forwardExhausted = false, + localOffset = 1; + return function iterator() { + if (wantForward && !forwardExhausted) { + if (backwardExhausted) { + localOffset++; + } else { + wantForward = false; + } // Check if trying to fit beyond text length, and if not, check it fits + // after offset location (or desired location on first iteration) + + + if (start + localOffset <= maxLine) { + return localOffset; + } + + forwardExhausted = true; + } + + if (!backwardExhausted) { + if (!forwardExhausted) { + wantForward = true; + } // Check if trying to fit before text beginning, and if not, check it fits + // before offset location + + + if (minLine <= start - localOffset) { + return -localOffset++; + } + + backwardExhausted = true; + return iterator(); + } // We tried to fit hunk before text beginning and beyond text length, then + // hunk can't fit on the text. Return undefined + + }; +} + +function applyPatch(source, uniDiff) { + var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; + + if (typeof uniDiff === 'string') { + uniDiff = parsePatch(uniDiff); + } + + if (Array.isArray(uniDiff)) { + if (uniDiff.length > 1) { + throw new Error('applyPatch only works with a single input.'); + } + + uniDiff = uniDiff[0]; + } // Apply the diff to the input + + + var lines = source.split(/\r\n|[\n\v\f\r\x85]/), + delimiters = source.match(/\r\n|[\n\v\f\r\x85]/g) || [], + hunks = uniDiff.hunks, + compareLine = options.compareLine || function (lineNumber, line, operation, patchContent) { + return line === patchContent; + }, + errorCount = 0, + fuzzFactor = options.fuzzFactor || 0, + minLine = 0, + offset = 0, + removeEOFNL, + addEOFNL; + /** + * Checks if the hunk exactly fits on the provided location + */ + + + function hunkFits(hunk, toPos) { + for (var j = 0; j < hunk.lines.length; j++) { + var line = hunk.lines[j], + operation = line.length > 0 ? line[0] : ' ', + content = line.length > 0 ? line.substr(1) : line; + + if (operation === ' ' || operation === '-') { + // Context sanity check + if (!compareLine(toPos + 1, lines[toPos], operation, content)) { + errorCount++; + + if (errorCount > fuzzFactor) { + return false; + } + } + + toPos++; + } + } + + return true; + } // Search best fit offsets for each hunk based on the previous ones + + + for (var i = 0; i < hunks.length; i++) { + var hunk = hunks[i], + maxLine = lines.length - hunk.oldLines, + localOffset = 0, + toPos = offset + hunk.oldStart - 1; + var iterator = distanceIterator(toPos, minLine, maxLine); + + for (; localOffset !== undefined; localOffset = iterator()) { + if (hunkFits(hunk, toPos + localOffset)) { + hunk.offset = offset += localOffset; + break; + } + } + + if (localOffset === undefined) { + return false; + } // Set lower text limit to end of the current hunk, so next ones don't try + // to fit over already patched text + + + minLine = hunk.offset + hunk.oldStart + hunk.oldLines; + } // Apply patch hunks + + + var diffOffset = 0; + + for (var _i = 0; _i < hunks.length; _i++) { + var _hunk = hunks[_i], + _toPos = _hunk.oldStart + _hunk.offset + diffOffset - 1; + + diffOffset += _hunk.newLines - _hunk.oldLines; + + for (var j = 0; j < _hunk.lines.length; j++) { + var line = _hunk.lines[j], + operation = line.length > 0 ? line[0] : ' ', + content = line.length > 0 ? line.substr(1) : line, + delimiter = _hunk.linedelimiters[j]; + + if (operation === ' ') { + _toPos++; + } else if (operation === '-') { + lines.splice(_toPos, 1); + delimiters.splice(_toPos, 1); + /* istanbul ignore else */ + } else if (operation === '+') { + lines.splice(_toPos, 0, content); + delimiters.splice(_toPos, 0, delimiter); + _toPos++; + } else if (operation === '\\') { + var previousOperation = _hunk.lines[j - 1] ? _hunk.lines[j - 1][0] : null; + + if (previousOperation === '+') { + removeEOFNL = true; + } else if (previousOperation === '-') { + addEOFNL = true; + } + } + } + } // Handle EOFNL insertion/removal + + + if (removeEOFNL) { + while (!lines[lines.length - 1]) { + lines.pop(); + delimiters.pop(); + } + } else if (addEOFNL) { + lines.push(''); + delimiters.push('\n'); + } + + for (var _k = 0; _k < lines.length - 1; _k++) { + lines[_k] = lines[_k] + delimiters[_k]; + } + + return lines.join(''); +} // Wrapper that supports multiple file patches via callbacks. + +function applyPatches(uniDiff, options) { + if (typeof uniDiff === 'string') { + uniDiff = parsePatch(uniDiff); + } + + var currentIndex = 0; + + function processIndex() { + var index = uniDiff[currentIndex++]; + + if (!index) { + return options.complete(); + } + + options.loadFile(index, function (err, data) { + if (err) { + return options.complete(err); + } + + var updatedContent = applyPatch(data, index, options); + options.patched(index, updatedContent, function (err) { + if (err) { + return options.complete(err); + } + + processIndex(); + }); + }); + } + + processIndex(); +} + +function structuredPatch(oldFileName, newFileName, oldStr, newStr, oldHeader, newHeader, options) { + if (!options) { + options = {}; + } + + if (typeof options.context === 'undefined') { + options.context = 4; + } + + var diff = diffLines(oldStr, newStr, options); + + if (!diff) { + return; + } + + diff.push({ + value: '', + lines: [] + }); // Append an empty value to make cleanup easier + + function contextLines(lines) { + return lines.map(function (entry) { + return ' ' + entry; + }); + } + + var hunks = []; + var oldRangeStart = 0, + newRangeStart = 0, + curRange = [], + oldLine = 1, + newLine = 1; + + var _loop = function _loop(i) { + var current = diff[i], + lines = current.lines || current.value.replace(/\n$/, '').split('\n'); + current.lines = lines; + + if (current.added || current.removed) { + var _curRange; + + // If we have previous context, start with that + if (!oldRangeStart) { + var prev = diff[i - 1]; + oldRangeStart = oldLine; + newRangeStart = newLine; + + if (prev) { + curRange = options.context > 0 ? contextLines(prev.lines.slice(-options.context)) : []; + oldRangeStart -= curRange.length; + newRangeStart -= curRange.length; + } + } // Output our changes + + + (_curRange = curRange).push.apply(_curRange, _toConsumableArray(lines.map(function (entry) { + return (current.added ? '+' : '-') + entry; + }))); // Track the updated file position + + + if (current.added) { + newLine += lines.length; + } else { + oldLine += lines.length; + } + } else { + // Identical context lines. Track line changes + if (oldRangeStart) { + // Close out any changes that have been output (or join overlapping) + if (lines.length <= options.context * 2 && i < diff.length - 2) { + var _curRange2; + + // Overlapping + (_curRange2 = curRange).push.apply(_curRange2, _toConsumableArray(contextLines(lines))); + } else { + var _curRange3; + + // end the range and output + var contextSize = Math.min(lines.length, options.context); + + (_curRange3 = curRange).push.apply(_curRange3, _toConsumableArray(contextLines(lines.slice(0, contextSize)))); + + var hunk = { + oldStart: oldRangeStart, + oldLines: oldLine - oldRangeStart + contextSize, + newStart: newRangeStart, + newLines: newLine - newRangeStart + contextSize, + lines: curRange + }; + + if (i >= diff.length - 2 && lines.length <= options.context) { + // EOF is inside this hunk + var oldEOFNewline = /\n$/.test(oldStr); + var newEOFNewline = /\n$/.test(newStr); + var noNlBeforeAdds = lines.length == 0 && curRange.length > hunk.oldLines; + + if (!oldEOFNewline && noNlBeforeAdds && oldStr.length > 0) { + // special case: old has no eol and no trailing context; no-nl can end up before adds + // however, if the old file is empty, do not output the no-nl line + curRange.splice(hunk.oldLines, 0, '\\ No newline at end of file'); + } + + if (!oldEOFNewline && !noNlBeforeAdds || !newEOFNewline) { + curRange.push('\\ No newline at end of file'); + } + } + + hunks.push(hunk); + oldRangeStart = 0; + newRangeStart = 0; + curRange = []; + } + } + + oldLine += lines.length; + newLine += lines.length; + } + }; + + for (var i = 0; i < diff.length; i++) { + _loop(i); + } + + return { + oldFileName: oldFileName, + newFileName: newFileName, + oldHeader: oldHeader, + newHeader: newHeader, + hunks: hunks + }; +} +function formatPatch(diff) { + var ret = []; + + if (diff.oldFileName == diff.newFileName) { + ret.push('Index: ' + diff.oldFileName); + } + + ret.push('==================================================================='); + ret.push('--- ' + diff.oldFileName + (typeof diff.oldHeader === 'undefined' ? '' : '\t' + diff.oldHeader)); + ret.push('+++ ' + diff.newFileName + (typeof diff.newHeader === 'undefined' ? '' : '\t' + diff.newHeader)); + + for (var i = 0; i < diff.hunks.length; i++) { + var hunk = diff.hunks[i]; // Unified Diff Format quirk: If the chunk size is 0, + // the first number is one lower than one would expect. + // https://www.artima.com/weblogs/viewpost.jsp?thread=164293 + + if (hunk.oldLines === 0) { + hunk.oldStart -= 1; + } + + if (hunk.newLines === 0) { + hunk.newStart -= 1; + } + + ret.push('@@ -' + hunk.oldStart + ',' + hunk.oldLines + ' +' + hunk.newStart + ',' + hunk.newLines + ' @@'); + ret.push.apply(ret, hunk.lines); + } + + return ret.join('\n') + '\n'; +} +function createTwoFilesPatch(oldFileName, newFileName, oldStr, newStr, oldHeader, newHeader, options) { + return formatPatch(structuredPatch(oldFileName, newFileName, oldStr, newStr, oldHeader, newHeader, options)); +} +function createPatch(fileName, oldStr, newStr, oldHeader, newHeader, options) { + return createTwoFilesPatch(fileName, fileName, oldStr, newStr, oldHeader, newHeader, options); +} + +function arrayEqual(a, b) { + if (a.length !== b.length) { + return false; + } + + return arrayStartsWith(a, b); +} +function arrayStartsWith(array, start) { + if (start.length > array.length) { + return false; + } + + for (var i = 0; i < start.length; i++) { + if (start[i] !== array[i]) { + return false; + } + } + + return true; +} + +function calcLineCount(hunk) { + var _calcOldNewLineCount = calcOldNewLineCount(hunk.lines), + oldLines = _calcOldNewLineCount.oldLines, + newLines = _calcOldNewLineCount.newLines; + + if (oldLines !== undefined) { + hunk.oldLines = oldLines; + } else { + delete hunk.oldLines; + } + + if (newLines !== undefined) { + hunk.newLines = newLines; + } else { + delete hunk.newLines; + } +} +function merge(mine, theirs, base) { + mine = loadPatch(mine, base); + theirs = loadPatch(theirs, base); + var ret = {}; // For index we just let it pass through as it doesn't have any necessary meaning. + // Leaving sanity checks on this to the API consumer that may know more about the + // meaning in their own context. + + if (mine.index || theirs.index) { + ret.index = mine.index || theirs.index; + } + + if (mine.newFileName || theirs.newFileName) { + if (!fileNameChanged(mine)) { + // No header or no change in ours, use theirs (and ours if theirs does not exist) + ret.oldFileName = theirs.oldFileName || mine.oldFileName; + ret.newFileName = theirs.newFileName || mine.newFileName; + ret.oldHeader = theirs.oldHeader || mine.oldHeader; + ret.newHeader = theirs.newHeader || mine.newHeader; + } else if (!fileNameChanged(theirs)) { + // No header or no change in theirs, use ours + ret.oldFileName = mine.oldFileName; + ret.newFileName = mine.newFileName; + ret.oldHeader = mine.oldHeader; + ret.newHeader = mine.newHeader; + } else { + // Both changed... figure it out + ret.oldFileName = selectField(ret, mine.oldFileName, theirs.oldFileName); + ret.newFileName = selectField(ret, mine.newFileName, theirs.newFileName); + ret.oldHeader = selectField(ret, mine.oldHeader, theirs.oldHeader); + ret.newHeader = selectField(ret, mine.newHeader, theirs.newHeader); + } + } + + ret.hunks = []; + var mineIndex = 0, + theirsIndex = 0, + mineOffset = 0, + theirsOffset = 0; + + while (mineIndex < mine.hunks.length || theirsIndex < theirs.hunks.length) { + var mineCurrent = mine.hunks[mineIndex] || { + oldStart: Infinity + }, + theirsCurrent = theirs.hunks[theirsIndex] || { + oldStart: Infinity + }; + + if (hunkBefore(mineCurrent, theirsCurrent)) { + // This patch does not overlap with any of the others, yay. + ret.hunks.push(cloneHunk(mineCurrent, mineOffset)); + mineIndex++; + theirsOffset += mineCurrent.newLines - mineCurrent.oldLines; + } else if (hunkBefore(theirsCurrent, mineCurrent)) { + // This patch does not overlap with any of the others, yay. + ret.hunks.push(cloneHunk(theirsCurrent, theirsOffset)); + theirsIndex++; + mineOffset += theirsCurrent.newLines - theirsCurrent.oldLines; + } else { + // Overlap, merge as best we can + var mergedHunk = { + oldStart: Math.min(mineCurrent.oldStart, theirsCurrent.oldStart), + oldLines: 0, + newStart: Math.min(mineCurrent.newStart + mineOffset, theirsCurrent.oldStart + theirsOffset), + newLines: 0, + lines: [] + }; + mergeLines(mergedHunk, mineCurrent.oldStart, mineCurrent.lines, theirsCurrent.oldStart, theirsCurrent.lines); + theirsIndex++; + mineIndex++; + ret.hunks.push(mergedHunk); + } + } + + return ret; +} + +function loadPatch(param, base) { + if (typeof param === 'string') { + if (/^@@/m.test(param) || /^Index:/m.test(param)) { + return parsePatch(param)[0]; + } + + if (!base) { + throw new Error('Must provide a base reference or pass in a patch'); + } + + return structuredPatch(undefined, undefined, base, param); + } + + return param; +} + +function fileNameChanged(patch) { + return patch.newFileName && patch.newFileName !== patch.oldFileName; +} + +function selectField(index, mine, theirs) { + if (mine === theirs) { + return mine; + } else { + index.conflict = true; + return { + mine: mine, + theirs: theirs + }; + } +} + +function hunkBefore(test, check) { + return test.oldStart < check.oldStart && test.oldStart + test.oldLines < check.oldStart; +} + +function cloneHunk(hunk, offset) { + return { + oldStart: hunk.oldStart, + oldLines: hunk.oldLines, + newStart: hunk.newStart + offset, + newLines: hunk.newLines, + lines: hunk.lines + }; +} + +function mergeLines(hunk, mineOffset, mineLines, theirOffset, theirLines) { + // This will generally result in a conflicted hunk, but there are cases where the context + // is the only overlap where we can successfully merge the content here. + var mine = { + offset: mineOffset, + lines: mineLines, + index: 0 + }, + their = { + offset: theirOffset, + lines: theirLines, + index: 0 + }; // Handle any leading content + + insertLeading(hunk, mine, their); + insertLeading(hunk, their, mine); // Now in the overlap content. Scan through and select the best changes from each. + + while (mine.index < mine.lines.length && their.index < their.lines.length) { + var mineCurrent = mine.lines[mine.index], + theirCurrent = their.lines[their.index]; + + if ((mineCurrent[0] === '-' || mineCurrent[0] === '+') && (theirCurrent[0] === '-' || theirCurrent[0] === '+')) { + // Both modified ... + mutualChange(hunk, mine, their); + } else if (mineCurrent[0] === '+' && theirCurrent[0] === ' ') { + var _hunk$lines; + + // Mine inserted + (_hunk$lines = hunk.lines).push.apply(_hunk$lines, _toConsumableArray(collectChange(mine))); + } else if (theirCurrent[0] === '+' && mineCurrent[0] === ' ') { + var _hunk$lines2; + + // Theirs inserted + (_hunk$lines2 = hunk.lines).push.apply(_hunk$lines2, _toConsumableArray(collectChange(their))); + } else if (mineCurrent[0] === '-' && theirCurrent[0] === ' ') { + // Mine removed or edited + removal(hunk, mine, their); + } else if (theirCurrent[0] === '-' && mineCurrent[0] === ' ') { + // Their removed or edited + removal(hunk, their, mine, true); + } else if (mineCurrent === theirCurrent) { + // Context identity + hunk.lines.push(mineCurrent); + mine.index++; + their.index++; + } else { + // Context mismatch + conflict(hunk, collectChange(mine), collectChange(their)); + } + } // Now push anything that may be remaining + + + insertTrailing(hunk, mine); + insertTrailing(hunk, their); + calcLineCount(hunk); +} + +function mutualChange(hunk, mine, their) { + var myChanges = collectChange(mine), + theirChanges = collectChange(their); + + if (allRemoves(myChanges) && allRemoves(theirChanges)) { + // Special case for remove changes that are supersets of one another + if (arrayStartsWith(myChanges, theirChanges) && skipRemoveSuperset(their, myChanges, myChanges.length - theirChanges.length)) { + var _hunk$lines3; + + (_hunk$lines3 = hunk.lines).push.apply(_hunk$lines3, _toConsumableArray(myChanges)); + + return; + } else if (arrayStartsWith(theirChanges, myChanges) && skipRemoveSuperset(mine, theirChanges, theirChanges.length - myChanges.length)) { + var _hunk$lines4; + + (_hunk$lines4 = hunk.lines).push.apply(_hunk$lines4, _toConsumableArray(theirChanges)); + + return; + } + } else if (arrayEqual(myChanges, theirChanges)) { + var _hunk$lines5; + + (_hunk$lines5 = hunk.lines).push.apply(_hunk$lines5, _toConsumableArray(myChanges)); + + return; + } + + conflict(hunk, myChanges, theirChanges); +} + +function removal(hunk, mine, their, swap) { + var myChanges = collectChange(mine), + theirChanges = collectContext(their, myChanges); + + if (theirChanges.merged) { + var _hunk$lines6; + + (_hunk$lines6 = hunk.lines).push.apply(_hunk$lines6, _toConsumableArray(theirChanges.merged)); + } else { + conflict(hunk, swap ? theirChanges : myChanges, swap ? myChanges : theirChanges); + } +} + +function conflict(hunk, mine, their) { + hunk.conflict = true; + hunk.lines.push({ + conflict: true, + mine: mine, + theirs: their + }); +} + +function insertLeading(hunk, insert, their) { + while (insert.offset < their.offset && insert.index < insert.lines.length) { + var line = insert.lines[insert.index++]; + hunk.lines.push(line); + insert.offset++; + } +} + +function insertTrailing(hunk, insert) { + while (insert.index < insert.lines.length) { + var line = insert.lines[insert.index++]; + hunk.lines.push(line); + } +} + +function collectChange(state) { + var ret = [], + operation = state.lines[state.index][0]; + + while (state.index < state.lines.length) { + var line = state.lines[state.index]; // Group additions that are immediately after subtractions and treat them as one "atomic" modify change. + + if (operation === '-' && line[0] === '+') { + operation = '+'; + } + + if (operation === line[0]) { + ret.push(line); + state.index++; + } else { + break; + } + } + + return ret; +} + +function collectContext(state, matchChanges) { + var changes = [], + merged = [], + matchIndex = 0, + contextChanges = false, + conflicted = false; + + while (matchIndex < matchChanges.length && state.index < state.lines.length) { + var change = state.lines[state.index], + match = matchChanges[matchIndex]; // Once we've hit our add, then we are done + + if (match[0] === '+') { + break; + } + + contextChanges = contextChanges || change[0] !== ' '; + merged.push(match); + matchIndex++; // Consume any additions in the other block as a conflict to attempt + // to pull in the remaining context after this + + if (change[0] === '+') { + conflicted = true; + + while (change[0] === '+') { + changes.push(change); + change = state.lines[++state.index]; + } + } + + if (match.substr(1) === change.substr(1)) { + changes.push(change); + state.index++; + } else { + conflicted = true; + } + } + + if ((matchChanges[matchIndex] || '')[0] === '+' && contextChanges) { + conflicted = true; + } + + if (conflicted) { + return changes; + } + + while (matchIndex < matchChanges.length) { + merged.push(matchChanges[matchIndex++]); + } + + return { + merged: merged, + changes: changes + }; +} + +function allRemoves(changes) { + return changes.reduce(function (prev, change) { + return prev && change[0] === '-'; + }, true); +} + +function skipRemoveSuperset(state, removeChanges, delta) { + for (var i = 0; i < delta; i++) { + var changeContent = removeChanges[removeChanges.length - delta + i].substr(1); + + if (state.lines[state.index + i] !== ' ' + changeContent) { + return false; + } + } + + state.index += delta; + return true; +} + +function calcOldNewLineCount(lines) { + var oldLines = 0; + var newLines = 0; + lines.forEach(function (line) { + if (typeof line !== 'string') { + var myCount = calcOldNewLineCount(line.mine); + var theirCount = calcOldNewLineCount(line.theirs); + + if (oldLines !== undefined) { + if (myCount.oldLines === theirCount.oldLines) { + oldLines += myCount.oldLines; + } else { + oldLines = undefined; + } + } + + if (newLines !== undefined) { + if (myCount.newLines === theirCount.newLines) { + newLines += myCount.newLines; + } else { + newLines = undefined; + } + } + } else { + if (newLines !== undefined && (line[0] === '+' || line[0] === ' ')) { + newLines++; + } + + if (oldLines !== undefined && (line[0] === '-' || line[0] === ' ')) { + oldLines++; + } + } + }); + return { + oldLines: oldLines, + newLines: newLines + }; +} + +// See: http://code.google.com/p/google-diff-match-patch/wiki/API +function convertChangesToDMP(changes) { + var ret = [], + change, + operation; + + for (var i = 0; i < changes.length; i++) { + change = changes[i]; + + if (change.added) { + operation = 1; + } else if (change.removed) { + operation = -1; + } else { + operation = 0; + } + + ret.push([operation, change.value]); + } + + return ret; +} + +function convertChangesToXML(changes) { + var ret = []; + + for (var i = 0; i < changes.length; i++) { + var change = changes[i]; + + if (change.added) { + ret.push(''); + } else if (change.removed) { + ret.push(''); + } + + ret.push(escapeHTML(change.value)); + + if (change.added) { + ret.push(''); + } else if (change.removed) { + ret.push(''); + } + } + + return ret.join(''); +} + +function escapeHTML(s) { + var n = s; + n = n.replace(/&/g, '&'); + n = n.replace(//g, '>'); + n = n.replace(/"/g, '"'); + return n; +} + + + + +/***/ }), + +/***/ "../node_modules/hast-util-whitespace/index.js": +/*!*****************************************************!*\ + !*** ../node_modules/hast-util-whitespace/index.js ***! + \*****************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ whitespace: () => (/* binding */ whitespace) +/* harmony export */ }); +/** + * Check if the given value is *inter-element whitespace*. + * + * @param {unknown} thing + * Thing to check (typically `Node` or `string`). + * @returns {boolean} + * Whether the `value` is inter-element whitespace (`boolean`): consisting of + * zero or more of space, tab (`\t`), line feed (`\n`), carriage return + * (`\r`), or form feed (`\f`). + * If a node is passed it must be a `Text` node, whose `value` field is + * checked. + */ +function whitespace(thing) { + /** @type {string} */ + const value = + // @ts-expect-error looks like a node. + thing && typeof thing === 'object' && thing.type === 'text' + ? // @ts-expect-error looks like a text. + thing.value || '' + : thing + + // HTML whitespace expression. + // See . + return typeof value === 'string' && value.replace(/[ \t\n\f\r]/g, '') === '' +} + + +/***/ }), + +/***/ "../node_modules/is-plain-obj/index.js": +/*!*********************************************!*\ + !*** ../node_modules/is-plain-obj/index.js ***! + \*********************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (/* binding */ isPlainObject) +/* harmony export */ }); +function isPlainObject(value) { + if (typeof value !== 'object' || value === null) { + return false; + } + + const prototype = Object.getPrototypeOf(value); + return (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(Symbol.toStringTag in value) && !(Symbol.iterator in value); +} + + +/***/ }), + +/***/ "../node_modules/mdast-util-definitions/lib/index.js": +/*!***********************************************************!*\ + !*** ../node_modules/mdast-util-definitions/lib/index.js ***! + \***********************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ definitions: () => (/* binding */ definitions) +/* harmony export */ }); +/* harmony import */ var unist_util_visit__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! unist-util-visit */ "../node_modules/unist-util-visit/lib/index.js"); +/** + * @typedef {import('mdast').Root} Root + * @typedef {import('mdast').Content} Content + * @typedef {import('mdast').Definition} Definition + */ + +/** + * @typedef {Root | Content} Node + * + * @callback GetDefinition + * Get a definition by identifier. + * @param {string | null | undefined} [identifier] + * Identifier of definition. + * @returns {Definition | null} + * Definition corresponding to `identifier` or `null`. + */ + + + +const own = {}.hasOwnProperty + +/** + * Find definitions in `tree`. + * + * Uses CommonMark precedence, which means that earlier definitions are + * preferred over duplicate later definitions. + * + * @param {Node} tree + * Tree to check. + * @returns {GetDefinition} + * Getter. + */ +function definitions(tree) { + /** @type {Record} */ + const cache = Object.create(null) + + if (!tree || !tree.type) { + throw new Error('mdast-util-definitions expected node') + } + + (0,unist_util_visit__WEBPACK_IMPORTED_MODULE_0__.visit)(tree, 'definition', (definition) => { + const id = clean(definition.identifier) + if (id && !own.call(cache, id)) { + cache[id] = definition + } + }) + + return definition + + /** @type {GetDefinition} */ + function definition(identifier) { + const id = clean(identifier) + // To do: next major: return `undefined` when not found. + return id && own.call(cache, id) ? cache[id] : null + } +} + +/** + * @param {string | null | undefined} [value] + * @returns {string} + */ +function clean(value) { + return String(value || '').toUpperCase() +} + + +/***/ }), + +/***/ "../node_modules/mdast-util-from-markdown/dev/lib/index.js": +/*!*****************************************************************!*\ + !*** ../node_modules/mdast-util-from-markdown/dev/lib/index.js ***! + \*****************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ fromMarkdown: () => (/* binding */ fromMarkdown) +/* harmony export */ }); +/* harmony import */ var uvu_assert__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! uvu/assert */ "../node_modules/uvu/assert/index.mjs"); +/* harmony import */ var mdast_util_to_string__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! mdast-util-to-string */ "../node_modules/mdast-util-to-string/lib/index.js"); +/* harmony import */ var micromark_lib_parse_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! micromark/lib/parse.js */ "../node_modules/micromark/dev/lib/parse.js"); +/* harmony import */ var micromark_lib_preprocess_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! micromark/lib/preprocess.js */ "../node_modules/micromark/dev/lib/preprocess.js"); +/* harmony import */ var micromark_lib_postprocess_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! micromark/lib/postprocess.js */ "../node_modules/micromark/dev/lib/postprocess.js"); +/* harmony import */ var micromark_util_decode_numeric_character_reference__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! micromark-util-decode-numeric-character-reference */ "../node_modules/micromark-util-decode-numeric-character-reference/dev/index.js"); +/* harmony import */ var micromark_util_decode_string__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! micromark-util-decode-string */ "../node_modules/micromark-util-decode-string/dev/index.js"); +/* harmony import */ var micromark_util_normalize_identifier__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! micromark-util-normalize-identifier */ "../node_modules/micromark-util-normalize-identifier/dev/index.js"); +/* harmony import */ var micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! micromark-util-symbol/codes.js */ "../node_modules/micromark-util-symbol/codes.js"); +/* harmony import */ var micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! micromark-util-symbol/constants.js */ "../node_modules/micromark-util-symbol/constants.js"); +/* harmony import */ var micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! micromark-util-symbol/types.js */ "../node_modules/micromark-util-symbol/types.js"); +/* harmony import */ var decode_named_character_reference__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! decode-named-character-reference */ "../node_modules/decode-named-character-reference/index.dom.js"); +/* harmony import */ var unist_util_stringify_position__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! unist-util-stringify-position */ "../node_modules/unist-util-stringify-position/lib/index.js"); +/** + * @typedef {import('micromark-util-types').Encoding} Encoding + * @typedef {import('micromark-util-types').Event} Event + * @typedef {import('micromark-util-types').ParseOptions} ParseOptions + * @typedef {import('micromark-util-types').Token} Token + * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext + * @typedef {import('micromark-util-types').Value} Value + * + * @typedef {import('unist').Parent} UnistParent + * @typedef {import('unist').Point} Point + * + * @typedef {import('mdast').PhrasingContent} PhrasingContent + * @typedef {import('mdast').StaticPhrasingContent} StaticPhrasingContent + * @typedef {import('mdast').Content} Content + * @typedef {import('mdast').Break} Break + * @typedef {import('mdast').Blockquote} Blockquote + * @typedef {import('mdast').Code} Code + * @typedef {import('mdast').Definition} Definition + * @typedef {import('mdast').Emphasis} Emphasis + * @typedef {import('mdast').Heading} Heading + * @typedef {import('mdast').HTML} HTML + * @typedef {import('mdast').Image} Image + * @typedef {import('mdast').ImageReference} ImageReference + * @typedef {import('mdast').InlineCode} InlineCode + * @typedef {import('mdast').Link} Link + * @typedef {import('mdast').LinkReference} LinkReference + * @typedef {import('mdast').List} List + * @typedef {import('mdast').ListItem} ListItem + * @typedef {import('mdast').Paragraph} Paragraph + * @typedef {import('mdast').Root} Root + * @typedef {import('mdast').Strong} Strong + * @typedef {import('mdast').Text} Text + * @typedef {import('mdast').ThematicBreak} ThematicBreak + * @typedef {import('mdast').ReferenceType} ReferenceType + * @typedef {import('../index.js').CompileData} CompileData + */ + +/** + * @typedef {Root | Content} Node + * @typedef {Extract} Parent + * + * @typedef {Omit & {type: 'fragment', children: Array}} Fragment + */ + +/** + * @callback Transform + * Extra transform, to change the AST afterwards. + * @param {Root} tree + * Tree to transform. + * @returns {Root | undefined | null | void} + * New tree or nothing (in which case the current tree is used). + * + * @callback Handle + * Handle a token. + * @param {CompileContext} this + * Context. + * @param {Token} token + * Current token. + * @returns {void} + * Nothing. + * + * @typedef {Record} Handles + * Token types mapping to handles + * + * @callback OnEnterError + * Handle the case where the `right` token is open, but it is closed (by the + * `left` token) or because we reached the end of the document. + * @param {Omit} this + * Context. + * @param {Token | undefined} left + * Left token. + * @param {Token} right + * Right token. + * @returns {void} + * Nothing. + * + * @callback OnExitError + * Handle the case where the `right` token is open but it is closed by + * exiting the `left` token. + * @param {Omit} this + * Context. + * @param {Token} left + * Left token. + * @param {Token} right + * Right token. + * @returns {void} + * Nothing. + * + * @typedef {[Token, OnEnterError | undefined]} TokenTuple + * Open token on the stack, with an optional error handler for when + * that token isn’t closed properly. + */ + +/** + * @typedef Config + * Configuration. + * + * We have our defaults, but extensions will add more. + * @property {Array} canContainEols + * Token types where line endings are used. + * @property {Handles} enter + * Opening handles. + * @property {Handles} exit + * Closing handles. + * @property {Array} transforms + * Tree transforms. + * + * @typedef {Partial} Extension + * Change how markdown tokens from micromark are turned into mdast. + * + * @typedef CompileContext + * mdast compiler context. + * @property {Array} stack + * Stack of nodes. + * @property {Array} tokenStack + * Stack of tokens. + * @property {(key: Key) => CompileData[Key]} getData + * Get data from the key/value store. + * @property {(key: Key, value?: CompileData[Key]) => void} setData + * Set data into the key/value store. + * @property {(this: CompileContext) => void} buffer + * Capture some of the output data. + * @property {(this: CompileContext) => string} resume + * Stop capturing and access the output data. + * @property {(this: CompileContext, node: Kind, token: Token, onError?: OnEnterError) => Kind} enter + * Enter a token. + * @property {(this: CompileContext, token: Token, onError?: OnExitError) => Node} exit + * Exit a token. + * @property {TokenizeContext['sliceSerialize']} sliceSerialize + * Get the string value of a token. + * @property {Config} config + * Configuration. + * + * @typedef FromMarkdownOptions + * Configuration for how to build mdast. + * @property {Array> | null | undefined} [mdastExtensions] + * Extensions for this utility to change how tokens are turned into a tree. + * + * @typedef {ParseOptions & FromMarkdownOptions} Options + * Configuration. + */ + +// To do: micromark: create a registry of tokens? +// To do: next major: don’t return given `Node` from `enter`. +// To do: next major: remove setter/getter. + + + + + + + + + + + + + + + +const own = {}.hasOwnProperty + +/** + * @param value + * Markdown to parse. + * @param encoding + * Character encoding for when `value` is `Buffer`. + * @param options + * Configuration. + * @returns + * mdast tree. + */ +const fromMarkdown = + /** + * @type {( + * ((value: Value, encoding: Encoding, options?: Options | null | undefined) => Root) & + * ((value: Value, options?: Options | null | undefined) => Root) + * )} + */ + ( + /** + * @param {Value} value + * @param {Encoding | Options | null | undefined} [encoding] + * @param {Options | null | undefined} [options] + * @returns {Root} + */ + function (value, encoding, options) { + if (typeof encoding !== 'string') { + options = encoding + encoding = undefined + } + + return compiler(options)( + (0,micromark_lib_postprocess_js__WEBPACK_IMPORTED_MODULE_1__.postprocess)( + (0,micromark_lib_parse_js__WEBPACK_IMPORTED_MODULE_2__.parse)(options).document().write((0,micromark_lib_preprocess_js__WEBPACK_IMPORTED_MODULE_3__.preprocess)()(value, encoding, true)) + ) + ) + } + ) + +/** + * Note this compiler only understand complete buffering, not streaming. + * + * @param {Options | null | undefined} [options] + */ +function compiler(options) { + /** @type {Config} */ + const config = { + transforms: [], + canContainEols: ['emphasis', 'fragment', 'heading', 'paragraph', 'strong'], + enter: { + autolink: opener(link), + autolinkProtocol: onenterdata, + autolinkEmail: onenterdata, + atxHeading: opener(heading), + blockQuote: opener(blockQuote), + characterEscape: onenterdata, + characterReference: onenterdata, + codeFenced: opener(codeFlow), + codeFencedFenceInfo: buffer, + codeFencedFenceMeta: buffer, + codeIndented: opener(codeFlow, buffer), + codeText: opener(codeText, buffer), + codeTextData: onenterdata, + data: onenterdata, + codeFlowValue: onenterdata, + definition: opener(definition), + definitionDestinationString: buffer, + definitionLabelString: buffer, + definitionTitleString: buffer, + emphasis: opener(emphasis), + hardBreakEscape: opener(hardBreak), + hardBreakTrailing: opener(hardBreak), + htmlFlow: opener(html, buffer), + htmlFlowData: onenterdata, + htmlText: opener(html, buffer), + htmlTextData: onenterdata, + image: opener(image), + label: buffer, + link: opener(link), + listItem: opener(listItem), + listItemValue: onenterlistitemvalue, + listOrdered: opener(list, onenterlistordered), + listUnordered: opener(list), + paragraph: opener(paragraph), + reference: onenterreference, + referenceString: buffer, + resourceDestinationString: buffer, + resourceTitleString: buffer, + setextHeading: opener(heading), + strong: opener(strong), + thematicBreak: opener(thematicBreak) + }, + exit: { + atxHeading: closer(), + atxHeadingSequence: onexitatxheadingsequence, + autolink: closer(), + autolinkEmail: onexitautolinkemail, + autolinkProtocol: onexitautolinkprotocol, + blockQuote: closer(), + characterEscapeValue: onexitdata, + characterReferenceMarkerHexadecimal: onexitcharacterreferencemarker, + characterReferenceMarkerNumeric: onexitcharacterreferencemarker, + characterReferenceValue: onexitcharacterreferencevalue, + codeFenced: closer(onexitcodefenced), + codeFencedFence: onexitcodefencedfence, + codeFencedFenceInfo: onexitcodefencedfenceinfo, + codeFencedFenceMeta: onexitcodefencedfencemeta, + codeFlowValue: onexitdata, + codeIndented: closer(onexitcodeindented), + codeText: closer(onexitcodetext), + codeTextData: onexitdata, + data: onexitdata, + definition: closer(), + definitionDestinationString: onexitdefinitiondestinationstring, + definitionLabelString: onexitdefinitionlabelstring, + definitionTitleString: onexitdefinitiontitlestring, + emphasis: closer(), + hardBreakEscape: closer(onexithardbreak), + hardBreakTrailing: closer(onexithardbreak), + htmlFlow: closer(onexithtmlflow), + htmlFlowData: onexitdata, + htmlText: closer(onexithtmltext), + htmlTextData: onexitdata, + image: closer(onexitimage), + label: onexitlabel, + labelText: onexitlabeltext, + lineEnding: onexitlineending, + link: closer(onexitlink), + listItem: closer(), + listOrdered: closer(), + listUnordered: closer(), + paragraph: closer(), + referenceString: onexitreferencestring, + resourceDestinationString: onexitresourcedestinationstring, + resourceTitleString: onexitresourcetitlestring, + resource: onexitresource, + setextHeading: closer(onexitsetextheading), + setextHeadingLineSequence: onexitsetextheadinglinesequence, + setextHeadingText: onexitsetextheadingtext, + strong: closer(), + thematicBreak: closer() + } + } + + configure(config, (options || {}).mdastExtensions || []) + + /** @type {CompileData} */ + const data = {} + + return compile + + /** + * Turn micromark events into an mdast tree. + * + * @param {Array} events + * Events. + * @returns {Root} + * mdast tree. + */ + function compile(events) { + /** @type {Root} */ + let tree = {type: 'root', children: []} + /** @type {Omit} */ + const context = { + stack: [tree], + tokenStack: [], + config, + enter, + exit, + buffer, + resume, + setData, + getData + } + /** @type {Array} */ + const listStack = [] + let index = -1 + + while (++index < events.length) { + // We preprocess lists to add `listItem` tokens, and to infer whether + // items the list itself are spread out. + if ( + events[index][1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_4__.types.listOrdered || + events[index][1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_4__.types.listUnordered + ) { + if (events[index][0] === 'enter') { + listStack.push(index) + } else { + const tail = listStack.pop() + ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(typeof tail === 'number', 'expected list ot be open') + index = prepareList(events, tail, index) + } + } + } + + index = -1 + + while (++index < events.length) { + const handler = config[events[index][0]] + + if (own.call(handler, events[index][1].type)) { + handler[events[index][1].type].call( + Object.assign( + {sliceSerialize: events[index][2].sliceSerialize}, + context + ), + events[index][1] + ) + } + } + + // Handle tokens still being open. + if (context.tokenStack.length > 0) { + const tail = context.tokenStack[context.tokenStack.length - 1] + const handler = tail[1] || defaultOnError + handler.call(context, undefined, tail[0]) + } + + // Figure out `root` position. + tree.position = { + start: point( + events.length > 0 ? events[0][1].start : {line: 1, column: 1, offset: 0} + ), + end: point( + events.length > 0 + ? events[events.length - 2][1].end + : {line: 1, column: 1, offset: 0} + ) + } + + // Call transforms. + index = -1 + while (++index < config.transforms.length) { + tree = config.transforms[index](tree) || tree + } + + return tree + } + + /** + * @param {Array} events + * @param {number} start + * @param {number} length + * @returns {number} + */ + function prepareList(events, start, length) { + let index = start - 1 + let containerBalance = -1 + let listSpread = false + /** @type {Token | undefined} */ + let listItem + /** @type {number | undefined} */ + let lineIndex + /** @type {number | undefined} */ + let firstBlankLineIndex + /** @type {boolean | undefined} */ + let atMarker + + while (++index <= length) { + const event = events[index] + + if ( + event[1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_4__.types.listUnordered || + event[1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_4__.types.listOrdered || + event[1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_4__.types.blockQuote + ) { + if (event[0] === 'enter') { + containerBalance++ + } else { + containerBalance-- + } + + atMarker = undefined + } else if (event[1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_4__.types.lineEndingBlank) { + if (event[0] === 'enter') { + if ( + listItem && + !atMarker && + !containerBalance && + !firstBlankLineIndex + ) { + firstBlankLineIndex = index + } + + atMarker = undefined + } + } else if ( + event[1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_4__.types.linePrefix || + event[1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_4__.types.listItemValue || + event[1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_4__.types.listItemMarker || + event[1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_4__.types.listItemPrefix || + event[1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_4__.types.listItemPrefixWhitespace + ) { + // Empty. + } else { + atMarker = undefined + } + + if ( + (!containerBalance && + event[0] === 'enter' && + event[1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_4__.types.listItemPrefix) || + (containerBalance === -1 && + event[0] === 'exit' && + (event[1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_4__.types.listUnordered || + event[1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_4__.types.listOrdered)) + ) { + if (listItem) { + let tailIndex = index + lineIndex = undefined + + while (tailIndex--) { + const tailEvent = events[tailIndex] + + if ( + tailEvent[1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_4__.types.lineEnding || + tailEvent[1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_4__.types.lineEndingBlank + ) { + if (tailEvent[0] === 'exit') continue + + if (lineIndex) { + events[lineIndex][1].type = micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_4__.types.lineEndingBlank + listSpread = true + } + + tailEvent[1].type = micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_4__.types.lineEnding + lineIndex = tailIndex + } else if ( + tailEvent[1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_4__.types.linePrefix || + tailEvent[1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_4__.types.blockQuotePrefix || + tailEvent[1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_4__.types.blockQuotePrefixWhitespace || + tailEvent[1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_4__.types.blockQuoteMarker || + tailEvent[1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_4__.types.listItemIndent + ) { + // Empty + } else { + break + } + } + + if ( + firstBlankLineIndex && + (!lineIndex || firstBlankLineIndex < lineIndex) + ) { + listItem._spread = true + } + + // Fix position. + listItem.end = Object.assign( + {}, + lineIndex ? events[lineIndex][1].start : event[1].end + ) + + events.splice(lineIndex || index, 0, ['exit', listItem, event[2]]) + index++ + length++ + } + + // Create a new list item. + if (event[1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_4__.types.listItemPrefix) { + listItem = { + type: 'listItem', + _spread: false, + start: Object.assign({}, event[1].start), + // @ts-expect-error: we’ll add `end` in a second. + end: undefined + } + // @ts-expect-error: `listItem` is most definitely defined, TS... + events.splice(index, 0, ['enter', listItem, event[2]]) + index++ + length++ + firstBlankLineIndex = undefined + atMarker = true + } + } + } + + events[start][1]._spread = listSpread + return length + } + + /** + * Set data. + * + * @template {keyof CompileData} Key + * Field type. + * @param {Key} key + * Key of field. + * @param {CompileData[Key]} [value] + * New value. + * @returns {void} + * Nothing. + */ + function setData(key, value) { + data[key] = value + } + + /** + * Get data. + * + * @template {keyof CompileData} Key + * Field type. + * @param {Key} key + * Key of field. + * @returns {CompileData[Key]} + * Value. + */ + function getData(key) { + return data[key] + } + + /** + * Create an opener handle. + * + * @param {(token: Token) => Node} create + * Create a node. + * @param {Handle} [and] + * Optional function to also run. + * @returns {Handle} + * Handle. + */ + function opener(create, and) { + return open + + /** + * @this {CompileContext} + * @param {Token} token + * @returns {void} + */ + function open(token) { + enter.call(this, create(token), token) + if (and) and.call(this, token) + } + } + + /** + * @this {CompileContext} + * @returns {void} + */ + function buffer() { + this.stack.push({type: 'fragment', children: []}) + } + + /** + * @template {Node} Kind + * Node type. + * @this {CompileContext} + * Context. + * @param {Kind} node + * Node to enter. + * @param {Token} token + * Corresponding token. + * @param {OnEnterError | undefined} [errorHandler] + * Handle the case where this token is open, but it is closed by something else. + * @returns {Kind} + * The given node. + */ + function enter(node, token, errorHandler) { + const parent = this.stack[this.stack.length - 1] + ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(parent, 'expected `parent`') + ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)('children' in parent, 'expected `parent`') + // @ts-expect-error: Assume `Node` can exist as a child of `parent`. + parent.children.push(node) + this.stack.push(node) + this.tokenStack.push([token, errorHandler]) + // @ts-expect-error: `end` will be patched later. + node.position = {start: point(token.start)} + return node + } + + /** + * Create a closer handle. + * + * @param {Handle} [and] + * Optional function to also run. + * @returns {Handle} + * Handle. + */ + function closer(and) { + return close + + /** + * @this {CompileContext} + * @param {Token} token + * @returns {void} + */ + function close(token) { + if (and) and.call(this, token) + exit.call(this, token) + } + } + + /** + * @this {CompileContext} + * Context. + * @param {Token} token + * Corresponding token. + * @param {OnExitError | undefined} [onExitError] + * Handle the case where another token is open. + * @returns {Node} + * The closed node. + */ + function exit(token, onExitError) { + const node = this.stack.pop() + ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(node, 'expected `node`') + const open = this.tokenStack.pop() + + if (!open) { + throw new Error( + 'Cannot close `' + + token.type + + '` (' + + (0,unist_util_stringify_position__WEBPACK_IMPORTED_MODULE_5__.stringifyPosition)({start: token.start, end: token.end}) + + '): it’s not open' + ) + } else if (open[0].type !== token.type) { + if (onExitError) { + onExitError.call(this, token, open[0]) + } else { + const handler = open[1] || defaultOnError + handler.call(this, token, open[0]) + } + } + + (0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(node.type !== 'fragment', 'unexpected fragment `exit`ed') + ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(node.position, 'expected `position` to be defined') + node.position.end = point(token.end) + return node + } + + /** + * @this {CompileContext} + * @returns {string} + */ + function resume() { + return (0,mdast_util_to_string__WEBPACK_IMPORTED_MODULE_6__.toString)(this.stack.pop()) + } + + // + // Handlers. + // + + /** + * @this {CompileContext} + * @type {Handle} + */ + function onenterlistordered() { + setData('expectingFirstListItemValue', true) + } + + /** + * @this {CompileContext} + * @type {Handle} + */ + function onenterlistitemvalue(token) { + if (getData('expectingFirstListItemValue')) { + const ancestor = this.stack[this.stack.length - 2] + ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(ancestor, 'expected nodes on stack') + ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(ancestor.type === 'list', 'expected list on stack') + ancestor.start = Number.parseInt( + this.sliceSerialize(token), + micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_7__.constants.numericBaseDecimal + ) + setData('expectingFirstListItemValue') + } + } + + /** + * @this {CompileContext} + * @type {Handle} + */ + function onexitcodefencedfenceinfo() { + const data = this.resume() + const node = this.stack[this.stack.length - 1] + ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(node, 'expected node on stack') + ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(node.type === 'code', 'expected code on stack') + node.lang = data + } + + /** + * @this {CompileContext} + * @type {Handle} + */ + function onexitcodefencedfencemeta() { + const data = this.resume() + const node = this.stack[this.stack.length - 1] + ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(node, 'expected node on stack') + ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(node.type === 'code', 'expected code on stack') + node.meta = data + } + + /** + * @this {CompileContext} + * @type {Handle} + */ + function onexitcodefencedfence() { + // Exit if this is the closing fence. + if (getData('flowCodeInside')) return + this.buffer() + setData('flowCodeInside', true) + } + + /** + * @this {CompileContext} + * @type {Handle} + */ + function onexitcodefenced() { + const data = this.resume() + const node = this.stack[this.stack.length - 1] + ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(node, 'expected node on stack') + ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(node.type === 'code', 'expected code on stack') + + node.value = data.replace(/^(\r?\n|\r)|(\r?\n|\r)$/g, '') + setData('flowCodeInside') + } + + /** + * @this {CompileContext} + * @type {Handle} + */ + function onexitcodeindented() { + const data = this.resume() + const node = this.stack[this.stack.length - 1] + ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(node, 'expected node on stack') + ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(node.type === 'code', 'expected code on stack') + + node.value = data.replace(/(\r?\n|\r)$/g, '') + } + + /** + * @this {CompileContext} + * @type {Handle} + */ + function onexitdefinitionlabelstring(token) { + const label = this.resume() + const node = this.stack[this.stack.length - 1] + ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(node, 'expected node on stack') + ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(node.type === 'definition', 'expected definition on stack') + + node.label = label + node.identifier = (0,micromark_util_normalize_identifier__WEBPACK_IMPORTED_MODULE_8__.normalizeIdentifier)( + this.sliceSerialize(token) + ).toLowerCase() + } + + /** + * @this {CompileContext} + * @type {Handle} + */ + function onexitdefinitiontitlestring() { + const data = this.resume() + const node = this.stack[this.stack.length - 1] + ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(node, 'expected node on stack') + ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(node.type === 'definition', 'expected definition on stack') + + node.title = data + } + + /** + * @this {CompileContext} + * @type {Handle} + */ + function onexitdefinitiondestinationstring() { + const data = this.resume() + const node = this.stack[this.stack.length - 1] + ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(node, 'expected node on stack') + ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(node.type === 'definition', 'expected definition on stack') + + node.url = data + } + + /** + * @this {CompileContext} + * @type {Handle} + */ + function onexitatxheadingsequence(token) { + const node = this.stack[this.stack.length - 1] + ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(node, 'expected node on stack') + ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(node.type === 'heading', 'expected heading on stack') + + if (!node.depth) { + const depth = this.sliceSerialize(token).length + + ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)( + depth === 1 || + depth === 2 || + depth === 3 || + depth === 4 || + depth === 5 || + depth === 6, + 'expected `depth` between `1` and `6`' + ) + + node.depth = depth + } + } + + /** + * @this {CompileContext} + * @type {Handle} + */ + function onexitsetextheadingtext() { + setData('setextHeadingSlurpLineEnding', true) + } + + /** + * @this {CompileContext} + * @type {Handle} + */ + function onexitsetextheadinglinesequence(token) { + const node = this.stack[this.stack.length - 1] + ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(node, 'expected node on stack') + ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(node.type === 'heading', 'expected heading on stack') + + node.depth = + this.sliceSerialize(token).charCodeAt(0) === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_9__.codes.equalsTo ? 1 : 2 + } + + /** + * @this {CompileContext} + * @type {Handle} + */ + function onexitsetextheading() { + setData('setextHeadingSlurpLineEnding') + } + + /** + * @this {CompileContext} + * @type {Handle} + */ + + function onenterdata(token) { + const node = this.stack[this.stack.length - 1] + ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(node, 'expected node on stack') + ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)('children' in node, 'expected parent on stack') + + let tail = node.children[node.children.length - 1] + + if (!tail || tail.type !== 'text') { + // Add a new text node. + tail = text() + // @ts-expect-error: we’ll add `end` later. + tail.position = {start: point(token.start)} + // @ts-expect-error: Assume `parent` accepts `text`. + node.children.push(tail) + } + + this.stack.push(tail) + } + + /** + * @this {CompileContext} + * @type {Handle} + */ + + function onexitdata(token) { + const tail = this.stack.pop() + ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(tail, 'expected a `node` to be on the stack') + ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)('value' in tail, 'expected a `literal` to be on the stack') + ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(tail.position, 'expected `node` to have an open position') + tail.value += this.sliceSerialize(token) + tail.position.end = point(token.end) + } + + /** + * @this {CompileContext} + * @type {Handle} + */ + + function onexitlineending(token) { + const context = this.stack[this.stack.length - 1] + ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(context, 'expected `node`') + + // If we’re at a hard break, include the line ending in there. + if (getData('atHardBreak')) { + (0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)('children' in context, 'expected `parent`') + const tail = context.children[context.children.length - 1] + ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(tail.position, 'expected tail to have a starting position') + tail.position.end = point(token.end) + setData('atHardBreak') + return + } + + if ( + !getData('setextHeadingSlurpLineEnding') && + config.canContainEols.includes(context.type) + ) { + onenterdata.call(this, token) + onexitdata.call(this, token) + } + } + + /** + * @this {CompileContext} + * @type {Handle} + */ + + function onexithardbreak() { + setData('atHardBreak', true) + } + + /** + * @this {CompileContext} + * @type {Handle} + */ + + function onexithtmlflow() { + const data = this.resume() + const node = this.stack[this.stack.length - 1] + ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(node, 'expected node on stack') + ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(node.type === 'html', 'expected html on stack') + + node.value = data + } + + /** + * @this {CompileContext} + * @type {Handle} + */ + + function onexithtmltext() { + const data = this.resume() + const node = this.stack[this.stack.length - 1] + ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(node, 'expected node on stack') + ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(node.type === 'html', 'expected html on stack') + + node.value = data + } + + /** + * @this {CompileContext} + * @type {Handle} + */ + + function onexitcodetext() { + const data = this.resume() + const node = this.stack[this.stack.length - 1] + ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(node, 'expected node on stack') + ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(node.type === 'inlineCode', 'expected inline code on stack') + + node.value = data + } + + /** + * @this {CompileContext} + * @type {Handle} + */ + + function onexitlink() { + const node = this.stack[this.stack.length - 1] + ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(node, 'expected node on stack') + ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(node.type === 'link', 'expected link on stack') + + // Note: there are also `identifier` and `label` fields on this link node! + // These are used / cleaned here. + + // To do: clean. + if (getData('inReference')) { + /** @type {ReferenceType} */ + const referenceType = getData('referenceType') || 'shortcut' + + node.type += 'Reference' + // @ts-expect-error: mutate. + node.referenceType = referenceType + // @ts-expect-error: mutate. + delete node.url + delete node.title + } else { + // @ts-expect-error: mutate. + delete node.identifier + // @ts-expect-error: mutate. + delete node.label + } + + setData('referenceType') + } + + /** + * @this {CompileContext} + * @type {Handle} + */ + + function onexitimage() { + const node = this.stack[this.stack.length - 1] + ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(node, 'expected node on stack') + ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(node.type === 'image', 'expected image on stack') + + // Note: there are also `identifier` and `label` fields on this link node! + // These are used / cleaned here. + + // To do: clean. + if (getData('inReference')) { + /** @type {ReferenceType} */ + const referenceType = getData('referenceType') || 'shortcut' + + node.type += 'Reference' + // @ts-expect-error: mutate. + node.referenceType = referenceType + // @ts-expect-error: mutate. + delete node.url + delete node.title + } else { + // @ts-expect-error: mutate. + delete node.identifier + // @ts-expect-error: mutate. + delete node.label + } + + setData('referenceType') + } + + /** + * @this {CompileContext} + * @type {Handle} + */ + + function onexitlabeltext(token) { + const string = this.sliceSerialize(token) + const ancestor = this.stack[this.stack.length - 2] + ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(ancestor, 'expected ancestor on stack') + ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)( + ancestor.type === 'image' || ancestor.type === 'link', + 'expected image or link on stack' + ) + + // @ts-expect-error: stash this on the node, as it might become a reference + // later. + ancestor.label = (0,micromark_util_decode_string__WEBPACK_IMPORTED_MODULE_10__.decodeString)(string) + // @ts-expect-error: same as above. + ancestor.identifier = (0,micromark_util_normalize_identifier__WEBPACK_IMPORTED_MODULE_8__.normalizeIdentifier)(string).toLowerCase() + } + + /** + * @this {CompileContext} + * @type {Handle} + */ + + function onexitlabel() { + const fragment = this.stack[this.stack.length - 1] + ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(fragment, 'expected node on stack') + ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(fragment.type === 'fragment', 'expected fragment on stack') + const value = this.resume() + const node = this.stack[this.stack.length - 1] + ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(node, 'expected node on stack') + ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)( + node.type === 'image' || node.type === 'link', + 'expected image or link on stack' + ) + + // Assume a reference. + setData('inReference', true) + + if (node.type === 'link') { + /** @type {Array} */ + // @ts-expect-error: Assume static phrasing content. + const children = fragment.children + + node.children = children + } else { + node.alt = value + } + } + + /** + * @this {CompileContext} + * @type {Handle} + */ + + function onexitresourcedestinationstring() { + const data = this.resume() + const node = this.stack[this.stack.length - 1] + ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(node, 'expected node on stack') + ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)( + node.type === 'image' || node.type === 'link', + 'expected image or link on stack' + ) + node.url = data + } + + /** + * @this {CompileContext} + * @type {Handle} + */ + + function onexitresourcetitlestring() { + const data = this.resume() + const node = this.stack[this.stack.length - 1] + ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(node, 'expected node on stack') + ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)( + node.type === 'image' || node.type === 'link', + 'expected image or link on stack' + ) + node.title = data + } + + /** + * @this {CompileContext} + * @type {Handle} + */ + + function onexitresource() { + setData('inReference') + } + + /** + * @this {CompileContext} + * @type {Handle} + */ + + function onenterreference() { + setData('referenceType', 'collapsed') + } + + /** + * @this {CompileContext} + * @type {Handle} + */ + + function onexitreferencestring(token) { + const label = this.resume() + const node = this.stack[this.stack.length - 1] + ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(node, 'expected node on stack') + ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)( + node.type === 'image' || node.type === 'link', + 'expected image reference or link reference on stack' + ) + + // @ts-expect-error: stash this on the node, as it might become a reference + // later. + node.label = label + // @ts-expect-error: same as above. + node.identifier = (0,micromark_util_normalize_identifier__WEBPACK_IMPORTED_MODULE_8__.normalizeIdentifier)( + this.sliceSerialize(token) + ).toLowerCase() + setData('referenceType', 'full') + } + + /** + * @this {CompileContext} + * @type {Handle} + */ + + function onexitcharacterreferencemarker(token) { + (0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)( + token.type === 'characterReferenceMarkerNumeric' || + token.type === 'characterReferenceMarkerHexadecimal' + ) + setData('characterReferenceType', token.type) + } + + /** + * @this {CompileContext} + * @type {Handle} + */ + function onexitcharacterreferencevalue(token) { + const data = this.sliceSerialize(token) + const type = getData('characterReferenceType') + /** @type {string} */ + let value + + if (type) { + value = (0,micromark_util_decode_numeric_character_reference__WEBPACK_IMPORTED_MODULE_11__.decodeNumericCharacterReference)( + data, + type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_4__.types.characterReferenceMarkerNumeric + ? micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_7__.constants.numericBaseDecimal + : micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_7__.constants.numericBaseHexadecimal + ) + setData('characterReferenceType') + } else { + const result = (0,decode_named_character_reference__WEBPACK_IMPORTED_MODULE_12__.decodeNamedCharacterReference)(data) + ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(result !== false, 'expected reference to decode') + value = result + } + + const tail = this.stack.pop() + ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(tail, 'expected `node`') + ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(tail.position, 'expected `node.position`') + ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)('value' in tail, 'expected `node.value`') + tail.value += value + tail.position.end = point(token.end) + } + + /** + * @this {CompileContext} + * @type {Handle} + */ + function onexitautolinkprotocol(token) { + onexitdata.call(this, token) + const node = this.stack[this.stack.length - 1] + ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(node, 'expected node on stack') + ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(node.type === 'link', 'expected link on stack') + + node.url = this.sliceSerialize(token) + } + + /** + * @this {CompileContext} + * @type {Handle} + */ + function onexitautolinkemail(token) { + onexitdata.call(this, token) + const node = this.stack[this.stack.length - 1] + ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(node, 'expected node on stack') + ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(node.type === 'link', 'expected link on stack') + + node.url = 'mailto:' + this.sliceSerialize(token) + } + + // + // Creaters. + // + + /** @returns {Blockquote} */ + function blockQuote() { + return {type: 'blockquote', children: []} + } + + /** @returns {Code} */ + function codeFlow() { + return {type: 'code', lang: null, meta: null, value: ''} + } + + /** @returns {InlineCode} */ + function codeText() { + return {type: 'inlineCode', value: ''} + } + + /** @returns {Definition} */ + function definition() { + return { + type: 'definition', + identifier: '', + label: null, + title: null, + url: '' + } + } + + /** @returns {Emphasis} */ + function emphasis() { + return {type: 'emphasis', children: []} + } + + /** @returns {Heading} */ + function heading() { + // @ts-expect-error `depth` will be set later. + return {type: 'heading', depth: undefined, children: []} + } + + /** @returns {Break} */ + function hardBreak() { + return {type: 'break'} + } + + /** @returns {HTML} */ + function html() { + return {type: 'html', value: ''} + } + + /** @returns {Image} */ + function image() { + return {type: 'image', title: null, url: '', alt: null} + } + + /** @returns {Link} */ + function link() { + return {type: 'link', title: null, url: '', children: []} + } + + /** + * @param {Token} token + * @returns {List} + */ + function list(token) { + return { + type: 'list', + ordered: token.type === 'listOrdered', + start: null, + spread: token._spread, + children: [] + } + } + + /** + * @param {Token} token + * @returns {ListItem} + */ + function listItem(token) { + return { + type: 'listItem', + spread: token._spread, + checked: null, + children: [] + } + } + + /** @returns {Paragraph} */ + function paragraph() { + return {type: 'paragraph', children: []} + } + + /** @returns {Strong} */ + function strong() { + return {type: 'strong', children: []} + } + + /** @returns {Text} */ + function text() { + return {type: 'text', value: ''} + } + + /** @returns {ThematicBreak} */ + function thematicBreak() { + return {type: 'thematicBreak'} + } +} + +/** + * Copy a point-like value. + * + * @param {Point} d + * Point-like value. + * @returns {Point} + * unist point. + */ +function point(d) { + return {line: d.line, column: d.column, offset: d.offset} +} + +/** + * @param {Config} combined + * @param {Array>} extensions + * @returns {void} + */ +function configure(combined, extensions) { + let index = -1 + + while (++index < extensions.length) { + const value = extensions[index] + + if (Array.isArray(value)) { + configure(combined, value) + } else { + extension(combined, value) + } + } +} + +/** + * @param {Config} combined + * @param {Extension} extension + * @returns {void} + */ +function extension(combined, extension) { + /** @type {keyof Extension} */ + let key + + for (key in extension) { + if (own.call(extension, key)) { + if (key === 'canContainEols') { + const right = extension[key] + if (right) { + combined[key].push(...right) + } + } else if (key === 'transforms') { + const right = extension[key] + if (right) { + combined[key].push(...right) + } + } else if (key === 'enter' || key === 'exit') { + const right = extension[key] + if (right) { + Object.assign(combined[key], right) + } + } + } + } +} + +/** @type {OnEnterError} */ +function defaultOnError(left, right) { + if (left) { + throw new Error( + 'Cannot close `' + + left.type + + '` (' + + (0,unist_util_stringify_position__WEBPACK_IMPORTED_MODULE_5__.stringifyPosition)({start: left.start, end: left.end}) + + '): a different token (`' + + right.type + + '`, ' + + (0,unist_util_stringify_position__WEBPACK_IMPORTED_MODULE_5__.stringifyPosition)({start: right.start, end: right.end}) + + ') is open' + ) + } else { + throw new Error( + 'Cannot close document, a token (`' + + right.type + + '`, ' + + (0,unist_util_stringify_position__WEBPACK_IMPORTED_MODULE_5__.stringifyPosition)({start: right.start, end: right.end}) + + ') is still open' + ) + } +} + + +/***/ }), + +/***/ "../node_modules/mdast-util-to-hast/lib/footer.js": +/*!********************************************************!*\ + !*** ../node_modules/mdast-util-to-hast/lib/footer.js ***! + \********************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ footer: () => (/* binding */ footer) +/* harmony export */ }); +/* harmony import */ var micromark_util_sanitize_uri__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! micromark-util-sanitize-uri */ "../node_modules/micromark-util-sanitize-uri/dev/index.js"); +/** + * @typedef {import('hast').Element} Element + * @typedef {import('hast').ElementContent} ElementContent + * + * @typedef {import('./state.js').State} State + */ + + + +/** + * Generate a hast footer for called footnote definitions. + * + * @param {State} state + * Info passed around. + * @returns {Element | undefined} + * `section` element or `undefined`. + */ +function footer(state) { + /** @type {Array} */ + const listItems = [] + let index = -1 + + while (++index < state.footnoteOrder.length) { + const def = state.footnoteById[state.footnoteOrder[index]] + + if (!def) { + continue + } + + const content = state.all(def) + const id = String(def.identifier).toUpperCase() + const safeId = (0,micromark_util_sanitize_uri__WEBPACK_IMPORTED_MODULE_0__.normalizeUri)(id.toLowerCase()) + let referenceIndex = 0 + /** @type {Array} */ + const backReferences = [] + + while (++referenceIndex <= state.footnoteCounts[id]) { + /** @type {Element} */ + const backReference = { + type: 'element', + tagName: 'a', + properties: { + href: + '#' + + state.clobberPrefix + + 'fnref-' + + safeId + + (referenceIndex > 1 ? '-' + referenceIndex : ''), + dataFootnoteBackref: true, + className: ['data-footnote-backref'], + ariaLabel: state.footnoteBackLabel + }, + children: [{type: 'text', value: '↩'}] + } + + if (referenceIndex > 1) { + backReference.children.push({ + type: 'element', + tagName: 'sup', + children: [{type: 'text', value: String(referenceIndex)}] + }) + } + + if (backReferences.length > 0) { + backReferences.push({type: 'text', value: ' '}) + } + + backReferences.push(backReference) + } + + const tail = content[content.length - 1] + + if (tail && tail.type === 'element' && tail.tagName === 'p') { + const tailTail = tail.children[tail.children.length - 1] + if (tailTail && tailTail.type === 'text') { + tailTail.value += ' ' + } else { + tail.children.push({type: 'text', value: ' '}) + } + + tail.children.push(...backReferences) + } else { + content.push(...backReferences) + } + + /** @type {Element} */ + const listItem = { + type: 'element', + tagName: 'li', + properties: {id: state.clobberPrefix + 'fn-' + safeId}, + children: state.wrap(content, true) + } + + state.patch(def, listItem) + + listItems.push(listItem) + } + + if (listItems.length === 0) { + return + } + + return { + type: 'element', + tagName: 'section', + properties: {dataFootnotes: true, className: ['footnotes']}, + children: [ + { + type: 'element', + tagName: state.footnoteLabelTagName, + properties: { + // To do: use structured clone. + ...JSON.parse(JSON.stringify(state.footnoteLabelProperties)), + id: 'footnote-label' + }, + children: [{type: 'text', value: state.footnoteLabel}] + }, + {type: 'text', value: '\n'}, + { + type: 'element', + tagName: 'ol', + properties: {}, + children: state.wrap(listItems, true) + }, + {type: 'text', value: '\n'} + ] + } +} + + +/***/ }), + +/***/ "../node_modules/mdast-util-to-hast/lib/handlers/blockquote.js": +/*!*********************************************************************!*\ + !*** ../node_modules/mdast-util-to-hast/lib/handlers/blockquote.js ***! + \*********************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ blockquote: () => (/* binding */ blockquote) +/* harmony export */ }); +/** + * @typedef {import('hast').Element} Element + * @typedef {import('mdast').Blockquote} Blockquote + * @typedef {import('../state.js').State} State + */ + +/** + * Turn an mdast `blockquote` node into hast. + * + * @param {State} state + * Info passed around. + * @param {Blockquote} node + * mdast node. + * @returns {Element} + * hast node. + */ +function blockquote(state, node) { + /** @type {Element} */ + const result = { + type: 'element', + tagName: 'blockquote', + properties: {}, + children: state.wrap(state.all(node), true) + } + state.patch(node, result) + return state.applyData(node, result) +} + + +/***/ }), + +/***/ "../node_modules/mdast-util-to-hast/lib/handlers/break.js": +/*!****************************************************************!*\ + !*** ../node_modules/mdast-util-to-hast/lib/handlers/break.js ***! + \****************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ hardBreak: () => (/* binding */ hardBreak) +/* harmony export */ }); +/** + * @typedef {import('hast').Element} Element + * @typedef {import('hast').Text} Text + * @typedef {import('mdast').Break} Break + * @typedef {import('../state.js').State} State + */ + +/** + * Turn an mdast `break` node into hast. + * + * @param {State} state + * Info passed around. + * @param {Break} node + * mdast node. + * @returns {Array} + * hast element content. + */ +function hardBreak(state, node) { + /** @type {Element} */ + const result = {type: 'element', tagName: 'br', properties: {}, children: []} + state.patch(node, result) + return [state.applyData(node, result), {type: 'text', value: '\n'}] +} + + +/***/ }), + +/***/ "../node_modules/mdast-util-to-hast/lib/handlers/code.js": +/*!***************************************************************!*\ + !*** ../node_modules/mdast-util-to-hast/lib/handlers/code.js ***! + \***************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ code: () => (/* binding */ code) +/* harmony export */ }); +/** + * @typedef {import('hast').Element} Element + * @typedef {import('hast').Properties} Properties + * @typedef {import('mdast').Code} Code + * @typedef {import('../state.js').State} State + + */ + +/** + * Turn an mdast `code` node into hast. + * + * @param {State} state + * Info passed around. + * @param {Code} node + * mdast node. + * @returns {Element} + * hast node. + */ +function code(state, node) { + const value = node.value ? node.value + '\n' : '' + // To do: next major, use `node.lang` w/o regex, the splitting’s been going + // on for years in remark now. + const lang = node.lang ? node.lang.match(/^[^ \t]+(?=[ \t]|$)/) : null + /** @type {Properties} */ + const properties = {} + + if (lang) { + properties.className = ['language-' + lang] + } + + // Create ``. + /** @type {Element} */ + let result = { + type: 'element', + tagName: 'code', + properties, + children: [{type: 'text', value}] + } + + if (node.meta) { + result.data = {meta: node.meta} + } + + state.patch(node, result) + result = state.applyData(node, result) + + // Create `
    `.
    +  result = {type: 'element', tagName: 'pre', properties: {}, children: [result]}
    +  state.patch(node, result)
    +  return result
    +}
    +
    +
    +/***/ }),
    +
    +/***/ "../node_modules/mdast-util-to-hast/lib/handlers/delete.js":
    +/*!*****************************************************************!*\
    +  !*** ../node_modules/mdast-util-to-hast/lib/handlers/delete.js ***!
    +  \*****************************************************************/
    +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
    +
    +"use strict";
    +__webpack_require__.r(__webpack_exports__);
    +/* harmony export */ __webpack_require__.d(__webpack_exports__, {
    +/* harmony export */   strikethrough: () => (/* binding */ strikethrough)
    +/* harmony export */ });
    +/**
    + * @typedef {import('hast').Element} Element
    + * @typedef {import('mdast').Delete} Delete
    + * @typedef {import('../state.js').State} State
    +
    + */
    +
    +/**
    + * Turn an mdast `delete` node into hast.
    + *
    + * @param {State} state
    + *   Info passed around.
    + * @param {Delete} node
    + *   mdast node.
    + * @returns {Element}
    + *   hast node.
    + */
    +function strikethrough(state, node) {
    +  /** @type {Element} */
    +  const result = {
    +    type: 'element',
    +    tagName: 'del',
    +    properties: {},
    +    children: state.all(node)
    +  }
    +  state.patch(node, result)
    +  return state.applyData(node, result)
    +}
    +
    +
    +/***/ }),
    +
    +/***/ "../node_modules/mdast-util-to-hast/lib/handlers/emphasis.js":
    +/*!*******************************************************************!*\
    +  !*** ../node_modules/mdast-util-to-hast/lib/handlers/emphasis.js ***!
    +  \*******************************************************************/
    +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
    +
    +"use strict";
    +__webpack_require__.r(__webpack_exports__);
    +/* harmony export */ __webpack_require__.d(__webpack_exports__, {
    +/* harmony export */   emphasis: () => (/* binding */ emphasis)
    +/* harmony export */ });
    +/**
    + * @typedef {import('hast').Element} Element
    + * @typedef {import('mdast').Emphasis} Emphasis
    + * @typedef {import('../state.js').State} State
    + */
    +
    +/**
    + * Turn an mdast `emphasis` node into hast.
    + *
    + * @param {State} state
    + *   Info passed around.
    + * @param {Emphasis} node
    + *   mdast node.
    + * @returns {Element}
    + *   hast node.
    + */
    +function emphasis(state, node) {
    +  /** @type {Element} */
    +  const result = {
    +    type: 'element',
    +    tagName: 'em',
    +    properties: {},
    +    children: state.all(node)
    +  }
    +  state.patch(node, result)
    +  return state.applyData(node, result)
    +}
    +
    +
    +/***/ }),
    +
    +/***/ "../node_modules/mdast-util-to-hast/lib/handlers/footnote-reference.js":
    +/*!*****************************************************************************!*\
    +  !*** ../node_modules/mdast-util-to-hast/lib/handlers/footnote-reference.js ***!
    +  \*****************************************************************************/
    +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
    +
    +"use strict";
    +__webpack_require__.r(__webpack_exports__);
    +/* harmony export */ __webpack_require__.d(__webpack_exports__, {
    +/* harmony export */   footnoteReference: () => (/* binding */ footnoteReference)
    +/* harmony export */ });
    +/* harmony import */ var micromark_util_sanitize_uri__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! micromark-util-sanitize-uri */ "../node_modules/micromark-util-sanitize-uri/dev/index.js");
    +/**
    + * @typedef {import('mdast').FootnoteReference} FootnoteReference
    + * @typedef {import('hast').Element} Element
    + * @typedef {import('../state.js').State} State
    + */
    +
    +
    +
    +/**
    + * Turn an mdast `footnoteReference` node into hast.
    + *
    + * @param {State} state
    + *   Info passed around.
    + * @param {FootnoteReference} node
    + *   mdast node.
    + * @returns {Element}
    + *   hast node.
    + */
    +function footnoteReference(state, node) {
    +  const id = String(node.identifier).toUpperCase()
    +  const safeId = (0,micromark_util_sanitize_uri__WEBPACK_IMPORTED_MODULE_0__.normalizeUri)(id.toLowerCase())
    +  const index = state.footnoteOrder.indexOf(id)
    +  /** @type {number} */
    +  let counter
    +
    +  if (index === -1) {
    +    state.footnoteOrder.push(id)
    +    state.footnoteCounts[id] = 1
    +    counter = state.footnoteOrder.length
    +  } else {
    +    state.footnoteCounts[id]++
    +    counter = index + 1
    +  }
    +
    +  const reuseCounter = state.footnoteCounts[id]
    +
    +  /** @type {Element} */
    +  const link = {
    +    type: 'element',
    +    tagName: 'a',
    +    properties: {
    +      href: '#' + state.clobberPrefix + 'fn-' + safeId,
    +      id:
    +        state.clobberPrefix +
    +        'fnref-' +
    +        safeId +
    +        (reuseCounter > 1 ? '-' + reuseCounter : ''),
    +      dataFootnoteRef: true,
    +      ariaDescribedBy: ['footnote-label']
    +    },
    +    children: [{type: 'text', value: String(counter)}]
    +  }
    +  state.patch(node, link)
    +
    +  /** @type {Element} */
    +  const sup = {
    +    type: 'element',
    +    tagName: 'sup',
    +    properties: {},
    +    children: [link]
    +  }
    +  state.patch(node, sup)
    +  return state.applyData(node, sup)
    +}
    +
    +
    +/***/ }),
    +
    +/***/ "../node_modules/mdast-util-to-hast/lib/handlers/footnote.js":
    +/*!*******************************************************************!*\
    +  !*** ../node_modules/mdast-util-to-hast/lib/handlers/footnote.js ***!
    +  \*******************************************************************/
    +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
    +
    +"use strict";
    +__webpack_require__.r(__webpack_exports__);
    +/* harmony export */ __webpack_require__.d(__webpack_exports__, {
    +/* harmony export */   footnote: () => (/* binding */ footnote)
    +/* harmony export */ });
    +/* harmony import */ var _footnote_reference_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./footnote-reference.js */ "../node_modules/mdast-util-to-hast/lib/handlers/footnote-reference.js");
    +/**
    + * @typedef {import('hast').Element} Element
    + * @typedef {import('mdast').Footnote} Footnote
    + * @typedef {import('../state.js').State} State
    + */
    +
    +
    +
    +// To do: when both:
    +// * 
    +// * 
    +// …are archived, remove this (also from mdast).
    +// These inline notes are not used in GFM.
    +
    +/**
    + * Turn an mdast `footnote` node into hast.
    + *
    + * @param {State} state
    + *   Info passed around.
    + * @param {Footnote} node
    + *   mdast node.
    + * @returns {Element}
    + *   hast node.
    + */
    +function footnote(state, node) {
    +  const footnoteById = state.footnoteById
    +  let no = 1
    +
    +  while (no in footnoteById) no++
    +
    +  const identifier = String(no)
    +
    +  footnoteById[identifier] = {
    +    type: 'footnoteDefinition',
    +    identifier,
    +    children: [{type: 'paragraph', children: node.children}],
    +    position: node.position
    +  }
    +
    +  return (0,_footnote_reference_js__WEBPACK_IMPORTED_MODULE_0__.footnoteReference)(state, {
    +    type: 'footnoteReference',
    +    identifier,
    +    position: node.position
    +  })
    +}
    +
    +
    +/***/ }),
    +
    +/***/ "../node_modules/mdast-util-to-hast/lib/handlers/heading.js":
    +/*!******************************************************************!*\
    +  !*** ../node_modules/mdast-util-to-hast/lib/handlers/heading.js ***!
    +  \******************************************************************/
    +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
    +
    +"use strict";
    +__webpack_require__.r(__webpack_exports__);
    +/* harmony export */ __webpack_require__.d(__webpack_exports__, {
    +/* harmony export */   heading: () => (/* binding */ heading)
    +/* harmony export */ });
    +/**
    + * @typedef {import('hast').Element} Element
    + * @typedef {import('mdast').Heading} Heading
    + * @typedef {import('../state.js').State} State
    + */
    +
    +/**
    + * Turn an mdast `heading` node into hast.
    + *
    + * @param {State} state
    + *   Info passed around.
    + * @param {Heading} node
    + *   mdast node.
    + * @returns {Element}
    + *   hast node.
    + */
    +function heading(state, node) {
    +  /** @type {Element} */
    +  const result = {
    +    type: 'element',
    +    tagName: 'h' + node.depth,
    +    properties: {},
    +    children: state.all(node)
    +  }
    +  state.patch(node, result)
    +  return state.applyData(node, result)
    +}
    +
    +
    +/***/ }),
    +
    +/***/ "../node_modules/mdast-util-to-hast/lib/handlers/html.js":
    +/*!***************************************************************!*\
    +  !*** ../node_modules/mdast-util-to-hast/lib/handlers/html.js ***!
    +  \***************************************************************/
    +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
    +
    +"use strict";
    +__webpack_require__.r(__webpack_exports__);
    +/* harmony export */ __webpack_require__.d(__webpack_exports__, {
    +/* harmony export */   html: () => (/* binding */ html)
    +/* harmony export */ });
    +/**
    + * @typedef {import('hast').Element} Element
    + * @typedef {import('mdast').HTML} Html
    + * @typedef {import('../state.js').State} State
    + * @typedef {import('../../index.js').Raw} Raw
    + */
    +
    +/**
    + * Turn an mdast `html` node into hast (`raw` node in dangerous mode, otherwise
    + * nothing).
    + *
    + * @param {State} state
    + *   Info passed around.
    + * @param {Html} node
    + *   mdast node.
    + * @returns {Raw | Element | null}
    + *   hast node.
    + */
    +function html(state, node) {
    +  if (state.dangerous) {
    +    /** @type {Raw} */
    +    const result = {type: 'raw', value: node.value}
    +    state.patch(node, result)
    +    return state.applyData(node, result)
    +  }
    +
    +  // To do: next major: return `undefined`.
    +  return null
    +}
    +
    +
    +/***/ }),
    +
    +/***/ "../node_modules/mdast-util-to-hast/lib/handlers/image-reference.js":
    +/*!**************************************************************************!*\
    +  !*** ../node_modules/mdast-util-to-hast/lib/handlers/image-reference.js ***!
    +  \**************************************************************************/
    +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
    +
    +"use strict";
    +__webpack_require__.r(__webpack_exports__);
    +/* harmony export */ __webpack_require__.d(__webpack_exports__, {
    +/* harmony export */   imageReference: () => (/* binding */ imageReference)
    +/* harmony export */ });
    +/* harmony import */ var micromark_util_sanitize_uri__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! micromark-util-sanitize-uri */ "../node_modules/micromark-util-sanitize-uri/dev/index.js");
    +/* harmony import */ var _revert_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../revert.js */ "../node_modules/mdast-util-to-hast/lib/revert.js");
    +/**
    + * @typedef {import('hast').ElementContent} ElementContent
    + * @typedef {import('hast').Element} Element
    + * @typedef {import('hast').Properties} Properties
    + * @typedef {import('mdast').ImageReference} ImageReference
    + * @typedef {import('../state.js').State} State
    + */
    +
    +
    +
    +
    +/**
    + * Turn an mdast `imageReference` node into hast.
    + *
    + * @param {State} state
    + *   Info passed around.
    + * @param {ImageReference} node
    + *   mdast node.
    + * @returns {ElementContent | Array}
    + *   hast node.
    + */
    +function imageReference(state, node) {
    +  const def = state.definition(node.identifier)
    +
    +  if (!def) {
    +    return (0,_revert_js__WEBPACK_IMPORTED_MODULE_0__.revert)(state, node)
    +  }
    +
    +  /** @type {Properties} */
    +  const properties = {src: (0,micromark_util_sanitize_uri__WEBPACK_IMPORTED_MODULE_1__.normalizeUri)(def.url || ''), alt: node.alt}
    +
    +  if (def.title !== null && def.title !== undefined) {
    +    properties.title = def.title
    +  }
    +
    +  /** @type {Element} */
    +  const result = {type: 'element', tagName: 'img', properties, children: []}
    +  state.patch(node, result)
    +  return state.applyData(node, result)
    +}
    +
    +
    +/***/ }),
    +
    +/***/ "../node_modules/mdast-util-to-hast/lib/handlers/image.js":
    +/*!****************************************************************!*\
    +  !*** ../node_modules/mdast-util-to-hast/lib/handlers/image.js ***!
    +  \****************************************************************/
    +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
    +
    +"use strict";
    +__webpack_require__.r(__webpack_exports__);
    +/* harmony export */ __webpack_require__.d(__webpack_exports__, {
    +/* harmony export */   image: () => (/* binding */ image)
    +/* harmony export */ });
    +/* harmony import */ var micromark_util_sanitize_uri__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! micromark-util-sanitize-uri */ "../node_modules/micromark-util-sanitize-uri/dev/index.js");
    +/**
    + * @typedef {import('hast').Element} Element
    + * @typedef {import('hast').Properties} Properties
    + * @typedef {import('mdast').Image} Image
    + * @typedef {import('../state.js').State} State
    + */
    +
    +
    +
    +/**
    + * Turn an mdast `image` node into hast.
    + *
    + * @param {State} state
    + *   Info passed around.
    + * @param {Image} node
    + *   mdast node.
    + * @returns {Element}
    + *   hast node.
    + */
    +function image(state, node) {
    +  /** @type {Properties} */
    +  const properties = {src: (0,micromark_util_sanitize_uri__WEBPACK_IMPORTED_MODULE_0__.normalizeUri)(node.url)}
    +
    +  if (node.alt !== null && node.alt !== undefined) {
    +    properties.alt = node.alt
    +  }
    +
    +  if (node.title !== null && node.title !== undefined) {
    +    properties.title = node.title
    +  }
    +
    +  /** @type {Element} */
    +  const result = {type: 'element', tagName: 'img', properties, children: []}
    +  state.patch(node, result)
    +  return state.applyData(node, result)
    +}
    +
    +
    +/***/ }),
    +
    +/***/ "../node_modules/mdast-util-to-hast/lib/handlers/index.js":
    +/*!****************************************************************!*\
    +  !*** ../node_modules/mdast-util-to-hast/lib/handlers/index.js ***!
    +  \****************************************************************/
    +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
    +
    +"use strict";
    +__webpack_require__.r(__webpack_exports__);
    +/* harmony export */ __webpack_require__.d(__webpack_exports__, {
    +/* harmony export */   handlers: () => (/* binding */ handlers)
    +/* harmony export */ });
    +/* harmony import */ var _blockquote_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./blockquote.js */ "../node_modules/mdast-util-to-hast/lib/handlers/blockquote.js");
    +/* harmony import */ var _break_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./break.js */ "../node_modules/mdast-util-to-hast/lib/handlers/break.js");
    +/* harmony import */ var _code_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./code.js */ "../node_modules/mdast-util-to-hast/lib/handlers/code.js");
    +/* harmony import */ var _delete_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./delete.js */ "../node_modules/mdast-util-to-hast/lib/handlers/delete.js");
    +/* harmony import */ var _emphasis_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./emphasis.js */ "../node_modules/mdast-util-to-hast/lib/handlers/emphasis.js");
    +/* harmony import */ var _footnote_reference_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./footnote-reference.js */ "../node_modules/mdast-util-to-hast/lib/handlers/footnote-reference.js");
    +/* harmony import */ var _footnote_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./footnote.js */ "../node_modules/mdast-util-to-hast/lib/handlers/footnote.js");
    +/* harmony import */ var _heading_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./heading.js */ "../node_modules/mdast-util-to-hast/lib/handlers/heading.js");
    +/* harmony import */ var _html_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./html.js */ "../node_modules/mdast-util-to-hast/lib/handlers/html.js");
    +/* harmony import */ var _image_reference_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./image-reference.js */ "../node_modules/mdast-util-to-hast/lib/handlers/image-reference.js");
    +/* harmony import */ var _image_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./image.js */ "../node_modules/mdast-util-to-hast/lib/handlers/image.js");
    +/* harmony import */ var _inline_code_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./inline-code.js */ "../node_modules/mdast-util-to-hast/lib/handlers/inline-code.js");
    +/* harmony import */ var _link_reference_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./link-reference.js */ "../node_modules/mdast-util-to-hast/lib/handlers/link-reference.js");
    +/* harmony import */ var _link_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./link.js */ "../node_modules/mdast-util-to-hast/lib/handlers/link.js");
    +/* harmony import */ var _list_item_js__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./list-item.js */ "../node_modules/mdast-util-to-hast/lib/handlers/list-item.js");
    +/* harmony import */ var _list_js__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./list.js */ "../node_modules/mdast-util-to-hast/lib/handlers/list.js");
    +/* harmony import */ var _paragraph_js__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./paragraph.js */ "../node_modules/mdast-util-to-hast/lib/handlers/paragraph.js");
    +/* harmony import */ var _root_js__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./root.js */ "../node_modules/mdast-util-to-hast/lib/handlers/root.js");
    +/* harmony import */ var _strong_js__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./strong.js */ "../node_modules/mdast-util-to-hast/lib/handlers/strong.js");
    +/* harmony import */ var _table_js__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./table.js */ "../node_modules/mdast-util-to-hast/lib/handlers/table.js");
    +/* harmony import */ var _table_row_js__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./table-row.js */ "../node_modules/mdast-util-to-hast/lib/handlers/table-row.js");
    +/* harmony import */ var _table_cell_js__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./table-cell.js */ "../node_modules/mdast-util-to-hast/lib/handlers/table-cell.js");
    +/* harmony import */ var _text_js__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ./text.js */ "../node_modules/mdast-util-to-hast/lib/handlers/text.js");
    +/* harmony import */ var _thematic_break_js__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ./thematic-break.js */ "../node_modules/mdast-util-to-hast/lib/handlers/thematic-break.js");
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +/**
    + * Default handlers for nodes.
    + */
    +const handlers = {
    +  blockquote: _blockquote_js__WEBPACK_IMPORTED_MODULE_0__.blockquote,
    +  break: _break_js__WEBPACK_IMPORTED_MODULE_1__.hardBreak,
    +  code: _code_js__WEBPACK_IMPORTED_MODULE_2__.code,
    +  delete: _delete_js__WEBPACK_IMPORTED_MODULE_3__.strikethrough,
    +  emphasis: _emphasis_js__WEBPACK_IMPORTED_MODULE_4__.emphasis,
    +  footnoteReference: _footnote_reference_js__WEBPACK_IMPORTED_MODULE_5__.footnoteReference,
    +  footnote: _footnote_js__WEBPACK_IMPORTED_MODULE_6__.footnote,
    +  heading: _heading_js__WEBPACK_IMPORTED_MODULE_7__.heading,
    +  html: _html_js__WEBPACK_IMPORTED_MODULE_8__.html,
    +  imageReference: _image_reference_js__WEBPACK_IMPORTED_MODULE_9__.imageReference,
    +  image: _image_js__WEBPACK_IMPORTED_MODULE_10__.image,
    +  inlineCode: _inline_code_js__WEBPACK_IMPORTED_MODULE_11__.inlineCode,
    +  linkReference: _link_reference_js__WEBPACK_IMPORTED_MODULE_12__.linkReference,
    +  link: _link_js__WEBPACK_IMPORTED_MODULE_13__.link,
    +  listItem: _list_item_js__WEBPACK_IMPORTED_MODULE_14__.listItem,
    +  list: _list_js__WEBPACK_IMPORTED_MODULE_15__.list,
    +  paragraph: _paragraph_js__WEBPACK_IMPORTED_MODULE_16__.paragraph,
    +  root: _root_js__WEBPACK_IMPORTED_MODULE_17__.root,
    +  strong: _strong_js__WEBPACK_IMPORTED_MODULE_18__.strong,
    +  table: _table_js__WEBPACK_IMPORTED_MODULE_19__.table,
    +  tableCell: _table_cell_js__WEBPACK_IMPORTED_MODULE_20__.tableCell,
    +  tableRow: _table_row_js__WEBPACK_IMPORTED_MODULE_21__.tableRow,
    +  text: _text_js__WEBPACK_IMPORTED_MODULE_22__.text,
    +  thematicBreak: _thematic_break_js__WEBPACK_IMPORTED_MODULE_23__.thematicBreak,
    +  toml: ignore,
    +  yaml: ignore,
    +  definition: ignore,
    +  footnoteDefinition: ignore
    +}
    +
    +// Return nothing for nodes that are ignored.
    +function ignore() {
    +  // To do: next major: return `undefined`.
    +  return null
    +}
    +
    +
    +/***/ }),
    +
    +/***/ "../node_modules/mdast-util-to-hast/lib/handlers/inline-code.js":
    +/*!**********************************************************************!*\
    +  !*** ../node_modules/mdast-util-to-hast/lib/handlers/inline-code.js ***!
    +  \**********************************************************************/
    +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
    +
    +"use strict";
    +__webpack_require__.r(__webpack_exports__);
    +/* harmony export */ __webpack_require__.d(__webpack_exports__, {
    +/* harmony export */   inlineCode: () => (/* binding */ inlineCode)
    +/* harmony export */ });
    +/**
    + * @typedef {import('hast').Element} Element
    + * @typedef {import('hast').Text} Text
    + * @typedef {import('mdast').InlineCode} InlineCode
    + * @typedef {import('../state.js').State} State
    + */
    +
    +/**
    + * Turn an mdast `inlineCode` node into hast.
    + *
    + * @param {State} state
    + *   Info passed around.
    + * @param {InlineCode} node
    + *   mdast node.
    + * @returns {Element}
    + *   hast node.
    + */
    +function inlineCode(state, node) {
    +  /** @type {Text} */
    +  const text = {type: 'text', value: node.value.replace(/\r?\n|\r/g, ' ')}
    +  state.patch(node, text)
    +
    +  /** @type {Element} */
    +  const result = {
    +    type: 'element',
    +    tagName: 'code',
    +    properties: {},
    +    children: [text]
    +  }
    +  state.patch(node, result)
    +  return state.applyData(node, result)
    +}
    +
    +
    +/***/ }),
    +
    +/***/ "../node_modules/mdast-util-to-hast/lib/handlers/link-reference.js":
    +/*!*************************************************************************!*\
    +  !*** ../node_modules/mdast-util-to-hast/lib/handlers/link-reference.js ***!
    +  \*************************************************************************/
    +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
    +
    +"use strict";
    +__webpack_require__.r(__webpack_exports__);
    +/* harmony export */ __webpack_require__.d(__webpack_exports__, {
    +/* harmony export */   linkReference: () => (/* binding */ linkReference)
    +/* harmony export */ });
    +/* harmony import */ var micromark_util_sanitize_uri__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! micromark-util-sanitize-uri */ "../node_modules/micromark-util-sanitize-uri/dev/index.js");
    +/* harmony import */ var _revert_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../revert.js */ "../node_modules/mdast-util-to-hast/lib/revert.js");
    +/**
    + * @typedef {import('hast').Element} Element
    + * @typedef {import('hast').ElementContent} ElementContent
    + * @typedef {import('hast').Properties} Properties
    + * @typedef {import('mdast').LinkReference} LinkReference
    + * @typedef {import('../state.js').State} State
    + */
    +
    +
    +
    +
    +/**
    + * Turn an mdast `linkReference` node into hast.
    + *
    + * @param {State} state
    + *   Info passed around.
    + * @param {LinkReference} node
    + *   mdast node.
    + * @returns {ElementContent | Array}
    + *   hast node.
    + */
    +function linkReference(state, node) {
    +  const def = state.definition(node.identifier)
    +
    +  if (!def) {
    +    return (0,_revert_js__WEBPACK_IMPORTED_MODULE_0__.revert)(state, node)
    +  }
    +
    +  /** @type {Properties} */
    +  const properties = {href: (0,micromark_util_sanitize_uri__WEBPACK_IMPORTED_MODULE_1__.normalizeUri)(def.url || '')}
    +
    +  if (def.title !== null && def.title !== undefined) {
    +    properties.title = def.title
    +  }
    +
    +  /** @type {Element} */
    +  const result = {
    +    type: 'element',
    +    tagName: 'a',
    +    properties,
    +    children: state.all(node)
    +  }
    +  state.patch(node, result)
    +  return state.applyData(node, result)
    +}
    +
    +
    +/***/ }),
    +
    +/***/ "../node_modules/mdast-util-to-hast/lib/handlers/link.js":
    +/*!***************************************************************!*\
    +  !*** ../node_modules/mdast-util-to-hast/lib/handlers/link.js ***!
    +  \***************************************************************/
    +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
    +
    +"use strict";
    +__webpack_require__.r(__webpack_exports__);
    +/* harmony export */ __webpack_require__.d(__webpack_exports__, {
    +/* harmony export */   link: () => (/* binding */ link)
    +/* harmony export */ });
    +/* harmony import */ var micromark_util_sanitize_uri__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! micromark-util-sanitize-uri */ "../node_modules/micromark-util-sanitize-uri/dev/index.js");
    +/**
    + * @typedef {import('hast').Element} Element
    + * @typedef {import('hast').Properties} Properties
    + * @typedef {import('mdast').Link} Link
    + * @typedef {import('../state.js').State} State
    + */
    +
    +
    +
    +/**
    + * Turn an mdast `link` node into hast.
    + *
    + * @param {State} state
    + *   Info passed around.
    + * @param {Link} node
    + *   mdast node.
    + * @returns {Element}
    + *   hast node.
    + */
    +function link(state, node) {
    +  /** @type {Properties} */
    +  const properties = {href: (0,micromark_util_sanitize_uri__WEBPACK_IMPORTED_MODULE_0__.normalizeUri)(node.url)}
    +
    +  if (node.title !== null && node.title !== undefined) {
    +    properties.title = node.title
    +  }
    +
    +  /** @type {Element} */
    +  const result = {
    +    type: 'element',
    +    tagName: 'a',
    +    properties,
    +    children: state.all(node)
    +  }
    +  state.patch(node, result)
    +  return state.applyData(node, result)
    +}
    +
    +
    +/***/ }),
    +
    +/***/ "../node_modules/mdast-util-to-hast/lib/handlers/list-item.js":
    +/*!********************************************************************!*\
    +  !*** ../node_modules/mdast-util-to-hast/lib/handlers/list-item.js ***!
    +  \********************************************************************/
    +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
    +
    +"use strict";
    +__webpack_require__.r(__webpack_exports__);
    +/* harmony export */ __webpack_require__.d(__webpack_exports__, {
    +/* harmony export */   listItem: () => (/* binding */ listItem)
    +/* harmony export */ });
    +/**
    + * @typedef {import('hast').Element} Element
    + * @typedef {import('hast').ElementContent} ElementContent
    + * @typedef {import('hast').Properties} Properties
    + * @typedef {import('mdast').Content} Content
    + * @typedef {import('mdast').ListItem} ListItem
    + * @typedef {import('mdast').Parent} Parent
    + * @typedef {import('mdast').Root} Root
    + * @typedef {import('../state.js').State} State
    + */
    +
    +/**
    + * @typedef {Root | Content} Nodes
    + * @typedef {Extract} Parents
    + */
    +
    +/**
    + * Turn an mdast `listItem` node into hast.
    + *
    + * @param {State} state
    + *   Info passed around.
    + * @param {ListItem} node
    + *   mdast node.
    + * @param {Parents | null | undefined} parent
    + *   Parent of `node`.
    + * @returns {Element}
    + *   hast node.
    + */
    +function listItem(state, node, parent) {
    +  const results = state.all(node)
    +  const loose = parent ? listLoose(parent) : listItemLoose(node)
    +  /** @type {Properties} */
    +  const properties = {}
    +  /** @type {Array} */
    +  const children = []
    +
    +  if (typeof node.checked === 'boolean') {
    +    const head = results[0]
    +    /** @type {Element} */
    +    let paragraph
    +
    +    if (head && head.type === 'element' && head.tagName === 'p') {
    +      paragraph = head
    +    } else {
    +      paragraph = {type: 'element', tagName: 'p', properties: {}, children: []}
    +      results.unshift(paragraph)
    +    }
    +
    +    if (paragraph.children.length > 0) {
    +      paragraph.children.unshift({type: 'text', value: ' '})
    +    }
    +
    +    paragraph.children.unshift({
    +      type: 'element',
    +      tagName: 'input',
    +      properties: {type: 'checkbox', checked: node.checked, disabled: true},
    +      children: []
    +    })
    +
    +    // According to github-markdown-css, this class hides bullet.
    +    // See: .
    +    properties.className = ['task-list-item']
    +  }
    +
    +  let index = -1
    +
    +  while (++index < results.length) {
    +    const child = results[index]
    +
    +    // Add eols before nodes, except if this is a loose, first paragraph.
    +    if (
    +      loose ||
    +      index !== 0 ||
    +      child.type !== 'element' ||
    +      child.tagName !== 'p'
    +    ) {
    +      children.push({type: 'text', value: '\n'})
    +    }
    +
    +    if (child.type === 'element' && child.tagName === 'p' && !loose) {
    +      children.push(...child.children)
    +    } else {
    +      children.push(child)
    +    }
    +  }
    +
    +  const tail = results[results.length - 1]
    +
    +  // Add a final eol.
    +  if (tail && (loose || tail.type !== 'element' || tail.tagName !== 'p')) {
    +    children.push({type: 'text', value: '\n'})
    +  }
    +
    +  /** @type {Element} */
    +  const result = {type: 'element', tagName: 'li', properties, children}
    +  state.patch(node, result)
    +  return state.applyData(node, result)
    +}
    +
    +/**
    + * @param {Parents} node
    + * @return {Boolean}
    + */
    +function listLoose(node) {
    +  let loose = false
    +  if (node.type === 'list') {
    +    loose = node.spread || false
    +    const children = node.children
    +    let index = -1
    +
    +    while (!loose && ++index < children.length) {
    +      loose = listItemLoose(children[index])
    +    }
    +  }
    +
    +  return loose
    +}
    +
    +/**
    + * @param {ListItem} node
    + * @return {Boolean}
    + */
    +function listItemLoose(node) {
    +  const spread = node.spread
    +
    +  return spread === undefined || spread === null
    +    ? node.children.length > 1
    +    : spread
    +}
    +
    +
    +/***/ }),
    +
    +/***/ "../node_modules/mdast-util-to-hast/lib/handlers/list.js":
    +/*!***************************************************************!*\
    +  !*** ../node_modules/mdast-util-to-hast/lib/handlers/list.js ***!
    +  \***************************************************************/
    +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
    +
    +"use strict";
    +__webpack_require__.r(__webpack_exports__);
    +/* harmony export */ __webpack_require__.d(__webpack_exports__, {
    +/* harmony export */   list: () => (/* binding */ list)
    +/* harmony export */ });
    +/**
    + * @typedef {import('hast').Element} Element
    + * @typedef {import('hast').Properties} Properties
    + * @typedef {import('mdast').List} List
    + * @typedef {import('../state.js').State} State
    + */
    +
    +/**
    + * Turn an mdast `list` node into hast.
    + *
    + * @param {State} state
    + *   Info passed around.
    + * @param {List} node
    + *   mdast node.
    + * @returns {Element}
    + *   hast node.
    + */
    +function list(state, node) {
    +  /** @type {Properties} */
    +  const properties = {}
    +  const results = state.all(node)
    +  let index = -1
    +
    +  if (typeof node.start === 'number' && node.start !== 1) {
    +    properties.start = node.start
    +  }
    +
    +  // Like GitHub, add a class for custom styling.
    +  while (++index < results.length) {
    +    const child = results[index]
    +
    +    if (
    +      child.type === 'element' &&
    +      child.tagName === 'li' &&
    +      child.properties &&
    +      Array.isArray(child.properties.className) &&
    +      child.properties.className.includes('task-list-item')
    +    ) {
    +      properties.className = ['contains-task-list']
    +      break
    +    }
    +  }
    +
    +  /** @type {Element} */
    +  const result = {
    +    type: 'element',
    +    tagName: node.ordered ? 'ol' : 'ul',
    +    properties,
    +    children: state.wrap(results, true)
    +  }
    +  state.patch(node, result)
    +  return state.applyData(node, result)
    +}
    +
    +
    +/***/ }),
    +
    +/***/ "../node_modules/mdast-util-to-hast/lib/handlers/paragraph.js":
    +/*!********************************************************************!*\
    +  !*** ../node_modules/mdast-util-to-hast/lib/handlers/paragraph.js ***!
    +  \********************************************************************/
    +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
    +
    +"use strict";
    +__webpack_require__.r(__webpack_exports__);
    +/* harmony export */ __webpack_require__.d(__webpack_exports__, {
    +/* harmony export */   paragraph: () => (/* binding */ paragraph)
    +/* harmony export */ });
    +/**
    + * @typedef {import('hast').Element} Element
    + * @typedef {import('mdast').Paragraph} Paragraph
    + * @typedef {import('../state.js').State} State
    + */
    +
    +/**
    + * Turn an mdast `paragraph` node into hast.
    + *
    + * @param {State} state
    + *   Info passed around.
    + * @param {Paragraph} node
    + *   mdast node.
    + * @returns {Element}
    + *   hast node.
    + */
    +function paragraph(state, node) {
    +  /** @type {Element} */
    +  const result = {
    +    type: 'element',
    +    tagName: 'p',
    +    properties: {},
    +    children: state.all(node)
    +  }
    +  state.patch(node, result)
    +  return state.applyData(node, result)
    +}
    +
    +
    +/***/ }),
    +
    +/***/ "../node_modules/mdast-util-to-hast/lib/handlers/root.js":
    +/*!***************************************************************!*\
    +  !*** ../node_modules/mdast-util-to-hast/lib/handlers/root.js ***!
    +  \***************************************************************/
    +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
    +
    +"use strict";
    +__webpack_require__.r(__webpack_exports__);
    +/* harmony export */ __webpack_require__.d(__webpack_exports__, {
    +/* harmony export */   root: () => (/* binding */ root)
    +/* harmony export */ });
    +/**
    + * @typedef {import('hast').Root} HastRoot
    + * @typedef {import('hast').Element} HastElement
    + * @typedef {import('mdast').Root} MdastRoot
    + * @typedef {import('../state.js').State} State
    + */
    +
    +/**
    + * Turn an mdast `root` node into hast.
    + *
    + * @param {State} state
    + *   Info passed around.
    + * @param {MdastRoot} node
    + *   mdast node.
    + * @returns {HastRoot | HastElement}
    + *   hast node.
    + */
    +function root(state, node) {
    +  /** @type {HastRoot} */
    +  const result = {type: 'root', children: state.wrap(state.all(node))}
    +  state.patch(node, result)
    +  return state.applyData(node, result)
    +}
    +
    +
    +/***/ }),
    +
    +/***/ "../node_modules/mdast-util-to-hast/lib/handlers/strong.js":
    +/*!*****************************************************************!*\
    +  !*** ../node_modules/mdast-util-to-hast/lib/handlers/strong.js ***!
    +  \*****************************************************************/
    +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
    +
    +"use strict";
    +__webpack_require__.r(__webpack_exports__);
    +/* harmony export */ __webpack_require__.d(__webpack_exports__, {
    +/* harmony export */   strong: () => (/* binding */ strong)
    +/* harmony export */ });
    +/**
    + * @typedef {import('hast').Element} Element
    + * @typedef {import('mdast').Strong} Strong
    + * @typedef {import('../state.js').State} State
    + */
    +
    +/**
    + * Turn an mdast `strong` node into hast.
    + *
    + * @param {State} state
    + *   Info passed around.
    + * @param {Strong} node
    + *   mdast node.
    + * @returns {Element}
    + *   hast node.
    + */
    +function strong(state, node) {
    +  /** @type {Element} */
    +  const result = {
    +    type: 'element',
    +    tagName: 'strong',
    +    properties: {},
    +    children: state.all(node)
    +  }
    +  state.patch(node, result)
    +  return state.applyData(node, result)
    +}
    +
    +
    +/***/ }),
    +
    +/***/ "../node_modules/mdast-util-to-hast/lib/handlers/table-cell.js":
    +/*!*********************************************************************!*\
    +  !*** ../node_modules/mdast-util-to-hast/lib/handlers/table-cell.js ***!
    +  \*********************************************************************/
    +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
    +
    +"use strict";
    +__webpack_require__.r(__webpack_exports__);
    +/* harmony export */ __webpack_require__.d(__webpack_exports__, {
    +/* harmony export */   tableCell: () => (/* binding */ tableCell)
    +/* harmony export */ });
    +/**
    + * @typedef {import('hast').Element} Element
    + * @typedef {import('mdast').TableCell} TableCell
    + * @typedef {import('../state.js').State} State
    + */
    +
    +/**
    + * Turn an mdast `tableCell` node into hast.
    + *
    + * @param {State} state
    + *   Info passed around.
    + * @param {TableCell} node
    + *   mdast node.
    + * @returns {Element}
    + *   hast node.
    + */
    +function tableCell(state, node) {
    +  // Note: this function is normally not called: see `table-row` for how rows
    +  // and their cells are compiled.
    +  /** @type {Element} */
    +  const result = {
    +    type: 'element',
    +    tagName: 'td', // Assume body cell.
    +    properties: {},
    +    children: state.all(node)
    +  }
    +  state.patch(node, result)
    +  return state.applyData(node, result)
    +}
    +
    +
    +/***/ }),
    +
    +/***/ "../node_modules/mdast-util-to-hast/lib/handlers/table-row.js":
    +/*!********************************************************************!*\
    +  !*** ../node_modules/mdast-util-to-hast/lib/handlers/table-row.js ***!
    +  \********************************************************************/
    +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
    +
    +"use strict";
    +__webpack_require__.r(__webpack_exports__);
    +/* harmony export */ __webpack_require__.d(__webpack_exports__, {
    +/* harmony export */   tableRow: () => (/* binding */ tableRow)
    +/* harmony export */ });
    +/**
    + * @typedef {import('hast').Properties} Properties
    + * @typedef {import('hast').Element} Element
    + * @typedef {import('hast').ElementContent} ElementContent
    + * @typedef {import('mdast').Content} Content
    + * @typedef {import('mdast').Parent} Parent
    + * @typedef {import('mdast').Root} Root
    + * @typedef {import('mdast').TableRow} TableRow
    + * @typedef {import('../state.js').State} State
    + */
    +
    +/**
    + * @typedef {Root | Content} Nodes
    + * @typedef {Extract} Parents
    + */
    +
    +/**
    + * Turn an mdast `tableRow` node into hast.
    + *
    + * @param {State} state
    + *   Info passed around.
    + * @param {TableRow} node
    + *   mdast node.
    + * @param {Parents | null | undefined} parent
    + *   Parent of `node`.
    + * @returns {Element}
    + *   hast node.
    + */
    +function tableRow(state, node, parent) {
    +  const siblings = parent ? parent.children : undefined
    +  // Generate a body row when without parent.
    +  const rowIndex = siblings ? siblings.indexOf(node) : 1
    +  const tagName = rowIndex === 0 ? 'th' : 'td'
    +  const align = parent && parent.type === 'table' ? parent.align : undefined
    +  const length = align ? align.length : node.children.length
    +  let cellIndex = -1
    +  /** @type {Array} */
    +  const cells = []
    +
    +  while (++cellIndex < length) {
    +    // Note: can also be undefined.
    +    const cell = node.children[cellIndex]
    +    /** @type {Properties} */
    +    const properties = {}
    +    const alignValue = align ? align[cellIndex] : undefined
    +
    +    if (alignValue) {
    +      properties.align = alignValue
    +    }
    +
    +    /** @type {Element} */
    +    let result = {type: 'element', tagName, properties, children: []}
    +
    +    if (cell) {
    +      result.children = state.all(cell)
    +      state.patch(cell, result)
    +      result = state.applyData(node, result)
    +    }
    +
    +    cells.push(result)
    +  }
    +
    +  /** @type {Element} */
    +  const result = {
    +    type: 'element',
    +    tagName: 'tr',
    +    properties: {},
    +    children: state.wrap(cells, true)
    +  }
    +  state.patch(node, result)
    +  return state.applyData(node, result)
    +}
    +
    +
    +/***/ }),
    +
    +/***/ "../node_modules/mdast-util-to-hast/lib/handlers/table.js":
    +/*!****************************************************************!*\
    +  !*** ../node_modules/mdast-util-to-hast/lib/handlers/table.js ***!
    +  \****************************************************************/
    +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
    +
    +"use strict";
    +__webpack_require__.r(__webpack_exports__);
    +/* harmony export */ __webpack_require__.d(__webpack_exports__, {
    +/* harmony export */   table: () => (/* binding */ table)
    +/* harmony export */ });
    +/* harmony import */ var unist_util_position__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! unist-util-position */ "../node_modules/unist-util-position/lib/index.js");
    +/**
    + * @typedef {import('hast').Element} Element
    + * @typedef {import('mdast').Table} Table
    + * @typedef {import('../state.js').State} State
    + */
    +
    +
    +
    +/**
    + * Turn an mdast `table` node into hast.
    + *
    + * @param {State} state
    + *   Info passed around.
    + * @param {Table} node
    + *   mdast node.
    + * @returns {Element}
    + *   hast node.
    + */
    +function table(state, node) {
    +  const rows = state.all(node)
    +  const firstRow = rows.shift()
    +  /** @type {Array} */
    +  const tableContent = []
    +
    +  if (firstRow) {
    +    /** @type {Element} */
    +    const head = {
    +      type: 'element',
    +      tagName: 'thead',
    +      properties: {},
    +      children: state.wrap([firstRow], true)
    +    }
    +    state.patch(node.children[0], head)
    +    tableContent.push(head)
    +  }
    +
    +  if (rows.length > 0) {
    +    /** @type {Element} */
    +    const body = {
    +      type: 'element',
    +      tagName: 'tbody',
    +      properties: {},
    +      children: state.wrap(rows, true)
    +    }
    +
    +    const start = (0,unist_util_position__WEBPACK_IMPORTED_MODULE_0__.pointStart)(node.children[1])
    +    const end = (0,unist_util_position__WEBPACK_IMPORTED_MODULE_0__.pointEnd)(node.children[node.children.length - 1])
    +    if (start.line && end.line) body.position = {start, end}
    +    tableContent.push(body)
    +  }
    +
    +  /** @type {Element} */
    +  const result = {
    +    type: 'element',
    +    tagName: 'table',
    +    properties: {},
    +    children: state.wrap(tableContent, true)
    +  }
    +  state.patch(node, result)
    +  return state.applyData(node, result)
    +}
    +
    +
    +/***/ }),
    +
    +/***/ "../node_modules/mdast-util-to-hast/lib/handlers/text.js":
    +/*!***************************************************************!*\
    +  !*** ../node_modules/mdast-util-to-hast/lib/handlers/text.js ***!
    +  \***************************************************************/
    +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
    +
    +"use strict";
    +__webpack_require__.r(__webpack_exports__);
    +/* harmony export */ __webpack_require__.d(__webpack_exports__, {
    +/* harmony export */   text: () => (/* binding */ text)
    +/* harmony export */ });
    +/* harmony import */ var trim_lines__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! trim-lines */ "../node_modules/trim-lines/index.js");
    +/**
    + * @typedef {import('hast').Element} HastElement
    + * @typedef {import('hast').Text} HastText
    + * @typedef {import('mdast').Text} MdastText
    + * @typedef {import('../state.js').State} State
    + */
    +
    +
    +
    +/**
    + * Turn an mdast `text` node into hast.
    + *
    + * @param {State} state
    + *   Info passed around.
    + * @param {MdastText} node
    + *   mdast node.
    + * @returns {HastText | HastElement}
    + *   hast node.
    + */
    +function text(state, node) {
    +  /** @type {HastText} */
    +  const result = {type: 'text', value: (0,trim_lines__WEBPACK_IMPORTED_MODULE_0__.trimLines)(String(node.value))}
    +  state.patch(node, result)
    +  return state.applyData(node, result)
    +}
    +
    +
    +/***/ }),
    +
    +/***/ "../node_modules/mdast-util-to-hast/lib/handlers/thematic-break.js":
    +/*!*************************************************************************!*\
    +  !*** ../node_modules/mdast-util-to-hast/lib/handlers/thematic-break.js ***!
    +  \*************************************************************************/
    +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
    +
    +"use strict";
    +__webpack_require__.r(__webpack_exports__);
    +/* harmony export */ __webpack_require__.d(__webpack_exports__, {
    +/* harmony export */   thematicBreak: () => (/* binding */ thematicBreak)
    +/* harmony export */ });
    +/**
    + * @typedef {import('hast').Element} Element
    + * @typedef {import('mdast').ThematicBreak} ThematicBreak
    + * @typedef {import('../state.js').State} State
    + */
    +
    +/**
    + * Turn an mdast `thematicBreak` node into hast.
    + *
    + * @param {State} state
    + *   Info passed around.
    + * @param {ThematicBreak} node
    + *   mdast node.
    + * @returns {Element}
    + *   hast node.
    + */
    +function thematicBreak(state, node) {
    +  /** @type {Element} */
    +  const result = {
    +    type: 'element',
    +    tagName: 'hr',
    +    properties: {},
    +    children: []
    +  }
    +  state.patch(node, result)
    +  return state.applyData(node, result)
    +}
    +
    +
    +/***/ }),
    +
    +/***/ "../node_modules/mdast-util-to-hast/lib/index.js":
    +/*!*******************************************************!*\
    +  !*** ../node_modules/mdast-util-to-hast/lib/index.js ***!
    +  \*******************************************************/
    +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
    +
    +"use strict";
    +__webpack_require__.r(__webpack_exports__);
    +/* harmony export */ __webpack_require__.d(__webpack_exports__, {
    +/* harmony export */   toHast: () => (/* binding */ toHast)
    +/* harmony export */ });
    +/* harmony import */ var _footer_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./footer.js */ "../node_modules/mdast-util-to-hast/lib/footer.js");
    +/* harmony import */ var _state_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./state.js */ "../node_modules/mdast-util-to-hast/lib/state.js");
    +/**
    + * @typedef {import('hast').Content} HastContent
    + * @typedef {import('hast').Root} HastRoot
    + *
    + * @typedef {import('mdast').Content} MdastContent
    + * @typedef {import('mdast').Root} MdastRoot
    + *
    + * @typedef {import('./state.js').Options} Options
    + */
    +
    +/**
    + * @typedef {HastRoot | HastContent} HastNodes
    + * @typedef {MdastRoot | MdastContent} MdastNodes
    + */
    +
    +
    +
    +
    +/**
    + * Transform mdast to hast.
    + *
    + * ##### Notes
    + *
    + * ###### HTML
    + *
    + * Raw HTML is available in mdast as `html` nodes and can be embedded in hast
    + * as semistandard `raw` nodes.
    + * Most utilities ignore `raw` nodes but two notable ones don’t:
    + *
    + * *   `hast-util-to-html` also has an option `allowDangerousHtml` which will
    + *     output the raw HTML.
    + *     This is typically discouraged as noted by the option name but is useful
    + *     if you completely trust authors
    + * *   `hast-util-raw` can handle the raw embedded HTML strings by parsing them
    + *     into standard hast nodes (`element`, `text`, etc).
    + *     This is a heavy task as it needs a full HTML parser, but it is the only
    + *     way to support untrusted content
    + *
    + * ###### Footnotes
    + *
    + * Many options supported here relate to footnotes.
    + * Footnotes are not specified by CommonMark, which we follow by default.
    + * They are supported by GitHub, so footnotes can be enabled in markdown with
    + * `mdast-util-gfm`.
    + *
    + * The options `footnoteBackLabel` and `footnoteLabel` define natural language
    + * that explains footnotes, which is hidden for sighted users but shown to
    + * assistive technology.
    + * When your page is not in English, you must define translated values.
    + *
    + * Back references use ARIA attributes, but the section label itself uses a
    + * heading that is hidden with an `sr-only` class.
    + * To show it to sighted users, define different attributes in
    + * `footnoteLabelProperties`.
    + *
    + * ###### Clobbering
    + *
    + * Footnotes introduces a problem, as it links footnote calls to footnote
    + * definitions on the page through `id` attributes generated from user content,
    + * which results in DOM clobbering.
    + *
    + * DOM clobbering is this:
    + *
    + * ```html
    + * 

    + * + * ``` + * + * Elements by their ID are made available by browsers on the `window` object, + * which is a security risk. + * Using a prefix solves this problem. + * + * More information on how to handle clobbering and the prefix is explained in + * Example: headings (DOM clobbering) in `rehype-sanitize`. + * + * ###### Unknown nodes + * + * Unknown nodes are nodes with a type that isn’t in `handlers` or `passThrough`. + * The default behavior for unknown nodes is: + * + * * when the node has a `value` (and doesn’t have `data.hName`, + * `data.hProperties`, or `data.hChildren`, see later), create a hast `text` + * node + * * otherwise, create a `
    ` element (which could be changed with + * `data.hName`), with its children mapped from mdast to hast as well + * + * This behavior can be changed by passing an `unknownHandler`. + * + * @param {MdastNodes} tree + * mdast tree. + * @param {Options | null | undefined} [options] + * Configuration. + * @returns {HastNodes | null | undefined} + * hast tree. + */ +// To do: next major: always return a single `root`. +function toHast(tree, options) { + const state = (0,_state_js__WEBPACK_IMPORTED_MODULE_0__.createState)(tree, options) + const node = state.one(tree, null) + const foot = (0,_footer_js__WEBPACK_IMPORTED_MODULE_1__.footer)(state) + + if (foot) { + // @ts-expect-error If there’s a footer, there were definitions, meaning block + // content. + // So assume `node` is a parent node. + node.children.push({type: 'text', value: '\n'}, foot) + } + + // To do: next major: always return root? + return Array.isArray(node) ? {type: 'root', children: node} : node +} + + +/***/ }), + +/***/ "../node_modules/mdast-util-to-hast/lib/revert.js": +/*!********************************************************!*\ + !*** ../node_modules/mdast-util-to-hast/lib/revert.js ***! + \********************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ revert: () => (/* binding */ revert) +/* harmony export */ }); +/** + * @typedef {import('hast').ElementContent} ElementContent + * + * @typedef {import('mdast').Content} Content + * @typedef {import('mdast').Reference} Reference + * @typedef {import('mdast').Root} Root + * + * @typedef {import('./state.js').State} State + */ + +/** + * @typedef {Root | Content} Nodes + * @typedef {Extract} References + */ + +// To do: next major: always return array. + +/** + * Return the content of a reference without definition as plain text. + * + * @param {State} state + * Info passed around. + * @param {References} node + * Reference node (image, link). + * @returns {ElementContent | Array} + * hast content. + */ +function revert(state, node) { + const subtype = node.referenceType + let suffix = ']' + + if (subtype === 'collapsed') { + suffix += '[]' + } else if (subtype === 'full') { + suffix += '[' + (node.label || node.identifier) + ']' + } + + if (node.type === 'imageReference') { + return {type: 'text', value: '![' + node.alt + suffix} + } + + const contents = state.all(node) + const head = contents[0] + + if (head && head.type === 'text') { + head.value = '[' + head.value + } else { + contents.unshift({type: 'text', value: '['}) + } + + const tail = contents[contents.length - 1] + + if (tail && tail.type === 'text') { + tail.value += suffix + } else { + contents.push({type: 'text', value: suffix}) + } + + return contents +} + + +/***/ }), + +/***/ "../node_modules/mdast-util-to-hast/lib/state.js": +/*!*******************************************************!*\ + !*** ../node_modules/mdast-util-to-hast/lib/state.js ***! + \*******************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ all: () => (/* binding */ all), +/* harmony export */ createState: () => (/* binding */ createState), +/* harmony export */ one: () => (/* binding */ one), +/* harmony export */ wrap: () => (/* binding */ wrap) +/* harmony export */ }); +/* harmony import */ var unist_util_visit__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! unist-util-visit */ "../node_modules/unist-util-visit/lib/index.js"); +/* harmony import */ var unist_util_position__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! unist-util-position */ "../node_modules/unist-util-position/lib/index.js"); +/* harmony import */ var unist_util_generated__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! unist-util-generated */ "../node_modules/unist-util-generated/lib/index.js"); +/* harmony import */ var mdast_util_definitions__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! mdast-util-definitions */ "../node_modules/mdast-util-definitions/lib/index.js"); +/* harmony import */ var _handlers_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./handlers/index.js */ "../node_modules/mdast-util-to-hast/lib/handlers/index.js"); +/** + * @typedef {import('hast').Content} HastContent + * @typedef {import('hast').Element} HastElement + * @typedef {import('hast').ElementContent} HastElementContent + * @typedef {import('hast').Properties} HastProperties + * @typedef {import('hast').Root} HastRoot + * @typedef {import('hast').Text} HastText + * + * @typedef {import('mdast').Content} MdastContent + * @typedef {import('mdast').Definition} MdastDefinition + * @typedef {import('mdast').FootnoteDefinition} MdastFootnoteDefinition + * @typedef {import('mdast').Parent} MdastParent + * @typedef {import('mdast').Root} MdastRoot + */ + +/** + * @typedef {HastRoot | HastContent} HastNodes + * @typedef {MdastRoot | MdastContent} MdastNodes + * @typedef {Extract} MdastParents + * + * @typedef EmbeddedHastFields + * hast fields. + * @property {string | null | undefined} [hName] + * Generate a specific element with this tag name instead. + * @property {HastProperties | null | undefined} [hProperties] + * Generate an element with these properties instead. + * @property {Array | null | undefined} [hChildren] + * Generate an element with this content instead. + * + * @typedef {Record & EmbeddedHastFields} MdastData + * mdast data with embedded hast fields. + * + * @typedef {MdastNodes & {data?: MdastData | null | undefined}} MdastNodeWithData + * mdast node with embedded hast data. + * + * @typedef PointLike + * Point-like value. + * @property {number | null | undefined} [line] + * Line. + * @property {number | null | undefined} [column] + * Column. + * @property {number | null | undefined} [offset] + * Offset. + * + * @typedef PositionLike + * Position-like value. + * @property {PointLike | null | undefined} [start] + * Point-like value. + * @property {PointLike | null | undefined} [end] + * Point-like value. + * + * @callback Handler + * Handle a node. + * @param {State} state + * Info passed around. + * @param {any} node + * mdast node to handle. + * @param {MdastParents | null | undefined} parent + * Parent of `node`. + * @returns {HastElementContent | Array | null | undefined} + * hast node. + * + * @callback HFunctionProps + * Signature of `state` for when props are passed. + * @param {MdastNodes | PositionLike | null | undefined} node + * mdast node or unist position. + * @param {string} tagName + * HTML tag name. + * @param {HastProperties} props + * Properties. + * @param {Array | null | undefined} [children] + * hast content. + * @returns {HastElement} + * Compiled element. + * + * @callback HFunctionNoProps + * Signature of `state` for when no props are passed. + * @param {MdastNodes | PositionLike | null | undefined} node + * mdast node or unist position. + * @param {string} tagName + * HTML tag name. + * @param {Array | null | undefined} [children] + * hast content. + * @returns {HastElement} + * Compiled element. + * + * @typedef HFields + * Info on `state`. + * @property {boolean} dangerous + * Whether HTML is allowed. + * @property {string} clobberPrefix + * Prefix to use to prevent DOM clobbering. + * @property {string} footnoteLabel + * Label to use to introduce the footnote section. + * @property {string} footnoteLabelTagName + * HTML used for the footnote label. + * @property {HastProperties} footnoteLabelProperties + * Properties on the HTML tag used for the footnote label. + * @property {string} footnoteBackLabel + * Label to use from backreferences back to their footnote call. + * @property {(identifier: string) => MdastDefinition | null} definition + * Definition cache. + * @property {Record} footnoteById + * Footnote definitions by their identifier. + * @property {Array} footnoteOrder + * Identifiers of order when footnote calls first appear in tree order. + * @property {Record} footnoteCounts + * Counts for how often the same footnote was called. + * @property {Handlers} handlers + * Applied handlers. + * @property {Handler} unknownHandler + * Handler for any none not in `passThrough` or otherwise handled. + * @property {(from: MdastNodes, node: HastNodes) => void} patch + * Copy a node’s positional info. + * @property {(from: MdastNodes, to: Type) => Type | HastElement} applyData + * Honor the `data` of `from`, and generate an element instead of `node`. + * @property {(node: MdastNodes, parent: MdastParents | null | undefined) => HastElementContent | Array | null | undefined} one + * Transform an mdast node to hast. + * @property {(node: MdastNodes) => Array} all + * Transform the children of an mdast parent to hast. + * @property {(nodes: Array, loose?: boolean | null | undefined) => Array} wrap + * Wrap `nodes` with line endings between each node, adds initial/final line endings when `loose`. + * @property {(left: MdastNodeWithData | PositionLike | null | undefined, right: HastElementContent) => HastElementContent} augment + * Like `state` but lower-level and usable on non-elements. + * Deprecated: use `patch` and `applyData`. + * @property {Array} passThrough + * List of node types to pass through untouched (except for their children). + * + * @typedef Options + * Configuration (optional). + * @property {boolean | null | undefined} [allowDangerousHtml=false] + * Whether to persist raw HTML in markdown in the hast tree. + * @property {string | null | undefined} [clobberPrefix='user-content-'] + * Prefix to use before the `id` attribute on footnotes to prevent it from + * *clobbering*. + * @property {string | null | undefined} [footnoteBackLabel='Back to content'] + * Label to use from backreferences back to their footnote call (affects + * screen readers). + * @property {string | null | undefined} [footnoteLabel='Footnotes'] + * Label to use for the footnotes section (affects screen readers). + * @property {HastProperties | null | undefined} [footnoteLabelProperties={className: ['sr-only']}] + * Properties to use on the footnote label (note that `id: 'footnote-label'` + * is always added as footnote calls use it with `aria-describedby` to + * provide an accessible label). + * @property {string | null | undefined} [footnoteLabelTagName='h2'] + * Tag name to use for the footnote label. + * @property {Handlers | null | undefined} [handlers] + * Extra handlers for nodes. + * @property {Array | null | undefined} [passThrough] + * List of custom mdast node types to pass through (keep) in hast (note that + * the node itself is passed, but eventual children are transformed). + * @property {Handler | null | undefined} [unknownHandler] + * Handler for all unknown nodes. + * + * @typedef {Record} Handlers + * Handle nodes. + * + * @typedef {HFunctionProps & HFunctionNoProps & HFields} State + * Info passed around. + */ + + + + + + + +const own = {}.hasOwnProperty + +/** + * Create `state` from an mdast tree. + * + * @param {MdastNodes} tree + * mdast node to transform. + * @param {Options | null | undefined} [options] + * Configuration. + * @returns {State} + * `state` function. + */ +function createState(tree, options) { + const settings = options || {} + const dangerous = settings.allowDangerousHtml || false + /** @type {Record} */ + const footnoteById = {} + + // To do: next major: add `options` to state, remove: + // `dangerous`, `clobberPrefix`, `footnoteLabel`, `footnoteLabelTagName`, + // `footnoteLabelProperties`, `footnoteBackLabel`, `passThrough`, + // `unknownHandler`. + + // To do: next major: move to `state.options.allowDangerousHtml`. + state.dangerous = dangerous + // To do: next major: move to `state.options`. + state.clobberPrefix = + settings.clobberPrefix === undefined || settings.clobberPrefix === null + ? 'user-content-' + : settings.clobberPrefix + // To do: next major: move to `state.options`. + state.footnoteLabel = settings.footnoteLabel || 'Footnotes' + // To do: next major: move to `state.options`. + state.footnoteLabelTagName = settings.footnoteLabelTagName || 'h2' + // To do: next major: move to `state.options`. + state.footnoteLabelProperties = settings.footnoteLabelProperties || { + className: ['sr-only'] + } + // To do: next major: move to `state.options`. + state.footnoteBackLabel = settings.footnoteBackLabel || 'Back to content' + // To do: next major: move to `state.options`. + state.unknownHandler = settings.unknownHandler + // To do: next major: move to `state.options`. + state.passThrough = settings.passThrough + + state.handlers = {..._handlers_index_js__WEBPACK_IMPORTED_MODULE_0__.handlers, ...settings.handlers} + + // To do: next major: replace utility with `definitionById` object, so we + // only walk once (as we need footnotes too). + state.definition = (0,mdast_util_definitions__WEBPACK_IMPORTED_MODULE_1__.definitions)(tree) + state.footnoteById = footnoteById + /** @type {Array} */ + state.footnoteOrder = [] + /** @type {Record} */ + state.footnoteCounts = {} + + state.patch = patch + state.applyData = applyData + state.one = oneBound + state.all = allBound + state.wrap = wrap + // To do: next major: remove `augment`. + state.augment = augment + + ;(0,unist_util_visit__WEBPACK_IMPORTED_MODULE_2__.visit)(tree, 'footnoteDefinition', (definition) => { + const id = String(definition.identifier).toUpperCase() + + // Mimick CM behavior of link definitions. + // See: . + if (!own.call(footnoteById, id)) { + footnoteById[id] = definition + } + }) + + // @ts-expect-error Hush, it’s fine! + return state + + /** + * Finalise the created `right`, a hast node, from `left`, an mdast node. + * + * @param {MdastNodeWithData | PositionLike | null | undefined} left + * @param {HastElementContent} right + * @returns {HastElementContent} + */ + /* c8 ignore start */ + // To do: next major: remove. + function augment(left, right) { + // Handle `data.hName`, `data.hProperties, `data.hChildren`. + if (left && 'data' in left && left.data) { + /** @type {MdastData} */ + const data = left.data + + if (data.hName) { + if (right.type !== 'element') { + right = { + type: 'element', + tagName: '', + properties: {}, + children: [] + } + } + + right.tagName = data.hName + } + + if (right.type === 'element' && data.hProperties) { + right.properties = {...right.properties, ...data.hProperties} + } + + if ('children' in right && right.children && data.hChildren) { + right.children = data.hChildren + } + } + + if (left) { + const ctx = 'type' in left ? left : {position: left} + + if (!(0,unist_util_generated__WEBPACK_IMPORTED_MODULE_3__.generated)(ctx)) { + // @ts-expect-error: fine. + right.position = {start: (0,unist_util_position__WEBPACK_IMPORTED_MODULE_4__.pointStart)(ctx), end: (0,unist_util_position__WEBPACK_IMPORTED_MODULE_4__.pointEnd)(ctx)} + } + } + + return right + } + /* c8 ignore stop */ + + /** + * Create an element for `node`. + * + * @type {HFunctionProps} + */ + /* c8 ignore start */ + // To do: next major: remove. + function state(node, tagName, props, children) { + if (Array.isArray(props)) { + children = props + props = {} + } + + // @ts-expect-error augmenting an element yields an element. + return augment(node, { + type: 'element', + tagName, + properties: props || {}, + children: children || [] + }) + } + /* c8 ignore stop */ + + /** + * Transform an mdast node into a hast node. + * + * @param {MdastNodes} node + * mdast node. + * @param {MdastParents | null | undefined} [parent] + * Parent of `node`. + * @returns {HastElementContent | Array | null | undefined} + * Resulting hast node. + */ + function oneBound(node, parent) { + // @ts-expect-error: that’s a state :) + return one(state, node, parent) + } + + /** + * Transform the children of an mdast node into hast nodes. + * + * @param {MdastNodes} parent + * mdast node to compile + * @returns {Array} + * Resulting hast nodes. + */ + function allBound(parent) { + // @ts-expect-error: that’s a state :) + return all(state, parent) + } +} + +/** + * Copy a node’s positional info. + * + * @param {MdastNodes} from + * mdast node to copy from. + * @param {HastNodes} to + * hast node to copy into. + * @returns {void} + * Nothing. + */ +function patch(from, to) { + if (from.position) to.position = (0,unist_util_position__WEBPACK_IMPORTED_MODULE_4__.position)(from) +} + +/** + * Honor the `data` of `from` and maybe generate an element instead of `to`. + * + * @template {HastNodes} Type + * Node type. + * @param {MdastNodes} from + * mdast node to use data from. + * @param {Type} to + * hast node to change. + * @returns {Type | HastElement} + * Nothing. + */ +function applyData(from, to) { + /** @type {Type | HastElement} */ + let result = to + + // Handle `data.hName`, `data.hProperties, `data.hChildren`. + if (from && from.data) { + const hName = from.data.hName + const hChildren = from.data.hChildren + const hProperties = from.data.hProperties + + if (typeof hName === 'string') { + // Transforming the node resulted in an element with a different name + // than wanted: + if (result.type === 'element') { + result.tagName = hName + } + // Transforming the node resulted in a non-element, which happens for + // raw, text, and root nodes (unless custom handlers are passed). + // The intent is likely to keep the content around (otherwise: pass + // `hChildren`). + else { + result = { + type: 'element', + tagName: hName, + properties: {}, + children: [] + } + + // To do: next major: take the children from the `root`, or inject the + // raw/text/comment or so into the element? + // if ('children' in node) { + // // @ts-expect-error: assume `children` are allowed in elements. + // result.children = node.children + // } else { + // // @ts-expect-error: assume `node` is allowed in elements. + // result.children.push(node) + // } + } + } + + if (result.type === 'element' && hProperties) { + result.properties = {...result.properties, ...hProperties} + } + + if ( + 'children' in result && + result.children && + hChildren !== null && + hChildren !== undefined + ) { + // @ts-expect-error: assume valid children are defined. + result.children = hChildren + } + } + + return result +} + +/** + * Transform an mdast node into a hast node. + * + * @param {State} state + * Info passed around. + * @param {MdastNodes} node + * mdast node. + * @param {MdastParents | null | undefined} [parent] + * Parent of `node`. + * @returns {HastElementContent | Array | null | undefined} + * Resulting hast node. + */ +// To do: next major: do not expose, keep bound. +function one(state, node, parent) { + const type = node && node.type + + // Fail on non-nodes. + if (!type) { + throw new Error('Expected node, got `' + node + '`') + } + + if (own.call(state.handlers, type)) { + return state.handlers[type](state, node, parent) + } + + if (state.passThrough && state.passThrough.includes(type)) { + // To do: next major: deep clone. + // @ts-expect-error: types of passed through nodes are expected to be added manually. + return 'children' in node ? {...node, children: all(state, node)} : node + } + + if (state.unknownHandler) { + return state.unknownHandler(state, node, parent) + } + + return defaultUnknownHandler(state, node) +} + +/** + * Transform the children of an mdast node into hast nodes. + * + * @param {State} state + * Info passed around. + * @param {MdastNodes} parent + * mdast node to compile + * @returns {Array} + * Resulting hast nodes. + */ +// To do: next major: do not expose, keep bound. +function all(state, parent) { + /** @type {Array} */ + const values = [] + + if ('children' in parent) { + const nodes = parent.children + let index = -1 + while (++index < nodes.length) { + const result = one(state, nodes[index], parent) + + // To do: see if we van clean this? Can we merge texts? + if (result) { + if (index && nodes[index - 1].type === 'break') { + if (!Array.isArray(result) && result.type === 'text') { + result.value = result.value.replace(/^\s+/, '') + } + + if (!Array.isArray(result) && result.type === 'element') { + const head = result.children[0] + + if (head && head.type === 'text') { + head.value = head.value.replace(/^\s+/, '') + } + } + } + + if (Array.isArray(result)) { + values.push(...result) + } else { + values.push(result) + } + } + } + } + + return values +} + +/** + * Transform an unknown node. + * + * @param {State} state + * Info passed around. + * @param {MdastNodes} node + * Unknown mdast node. + * @returns {HastText | HastElement} + * Resulting hast node. + */ +function defaultUnknownHandler(state, node) { + const data = node.data || {} + /** @type {HastText | HastElement} */ + const result = + 'value' in node && + !(own.call(data, 'hProperties') || own.call(data, 'hChildren')) + ? {type: 'text', value: node.value} + : { + type: 'element', + tagName: 'div', + properties: {}, + children: all(state, node) + } + + state.patch(node, result) + return state.applyData(node, result) +} + +/** + * Wrap `nodes` with line endings between each node. + * + * @template {HastContent} Type + * Node type. + * @param {Array} nodes + * List of nodes to wrap. + * @param {boolean | null | undefined} [loose=false] + * Whether to add line endings at start and end. + * @returns {Array} + * Wrapped nodes. + */ +function wrap(nodes, loose) { + /** @type {Array} */ + const result = [] + let index = -1 + + if (loose) { + result.push({type: 'text', value: '\n'}) + } + + while (++index < nodes.length) { + if (index) result.push({type: 'text', value: '\n'}) + result.push(nodes[index]) + } + + if (loose && nodes.length > 0) { + result.push({type: 'text', value: '\n'}) + } + + return result +} + + +/***/ }), + +/***/ "../node_modules/mdast-util-to-string/lib/index.js": +/*!*********************************************************!*\ + !*** ../node_modules/mdast-util-to-string/lib/index.js ***! + \*********************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ toString: () => (/* binding */ toString) +/* harmony export */ }); +/** + * @typedef {import('mdast').Root|import('mdast').Content} Node + * + * @typedef Options + * Configuration (optional). + * @property {boolean | null | undefined} [includeImageAlt=true] + * Whether to use `alt` for `image`s. + * @property {boolean | null | undefined} [includeHtml=true] + * Whether to use `value` of HTML. + */ + +/** @type {Options} */ +const emptyOptions = {} + +/** + * Get the text content of a node or list of nodes. + * + * Prefers the node’s plain-text fields, otherwise serializes its children, + * and if the given value is an array, serialize the nodes in it. + * + * @param {unknown} value + * Thing to serialize, typically `Node`. + * @param {Options | null | undefined} [options] + * Configuration (optional). + * @returns {string} + * Serialized `value`. + */ +function toString(value, options) { + const settings = options || emptyOptions + const includeImageAlt = + typeof settings.includeImageAlt === 'boolean' + ? settings.includeImageAlt + : true + const includeHtml = + typeof settings.includeHtml === 'boolean' ? settings.includeHtml : true + + return one(value, includeImageAlt, includeHtml) +} + +/** + * One node or several nodes. + * + * @param {unknown} value + * Thing to serialize. + * @param {boolean} includeImageAlt + * Include image `alt`s. + * @param {boolean} includeHtml + * Include HTML. + * @returns {string} + * Serialized node. + */ +function one(value, includeImageAlt, includeHtml) { + if (node(value)) { + if ('value' in value) { + return value.type === 'html' && !includeHtml ? '' : value.value + } + + if (includeImageAlt && 'alt' in value && value.alt) { + return value.alt + } + + if ('children' in value) { + return all(value.children, includeImageAlt, includeHtml) + } + } + + if (Array.isArray(value)) { + return all(value, includeImageAlt, includeHtml) + } + + return '' +} + +/** + * Serialize a list of nodes. + * + * @param {Array} values + * Thing to serialize. + * @param {boolean} includeImageAlt + * Include image `alt`s. + * @param {boolean} includeHtml + * Include HTML. + * @returns {string} + * Serialized nodes. + */ +function all(values, includeImageAlt, includeHtml) { + /** @type {Array} */ + const result = [] + let index = -1 + + while (++index < values.length) { + result[index] = one(values[index], includeImageAlt, includeHtml) + } + + return result.join('') +} + +/** + * Check if `value` looks like a node. + * + * @param {unknown} value + * Thing. + * @returns {value is Node} + * Whether `value` is a node. + */ +function node(value) { + return Boolean(value && typeof value === 'object') +} + + +/***/ }), + +/***/ "../node_modules/micromark-core-commonmark/dev/lib/attention.js": +/*!**********************************************************************!*\ + !*** ../node_modules/micromark-core-commonmark/dev/lib/attention.js ***! + \**********************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ attention: () => (/* binding */ attention) +/* harmony export */ }); +/* harmony import */ var micromark_util_chunked__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! micromark-util-chunked */ "../node_modules/micromark-util-chunked/dev/index.js"); +/* harmony import */ var micromark_util_classify_character__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! micromark-util-classify-character */ "../node_modules/micromark-util-classify-character/dev/index.js"); +/* harmony import */ var micromark_util_resolve_all__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! micromark-util-resolve-all */ "../node_modules/micromark-util-resolve-all/index.js"); +/* harmony import */ var micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! micromark-util-symbol/codes.js */ "../node_modules/micromark-util-symbol/codes.js"); +/* harmony import */ var micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! micromark-util-symbol/constants.js */ "../node_modules/micromark-util-symbol/constants.js"); +/* harmony import */ var micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! micromark-util-symbol/types.js */ "../node_modules/micromark-util-symbol/types.js"); +/* harmony import */ var uvu_assert__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! uvu/assert */ "../node_modules/uvu/assert/index.mjs"); +/** + * @typedef {import('micromark-util-types').Code} Code + * @typedef {import('micromark-util-types').Construct} Construct + * @typedef {import('micromark-util-types').Event} Event + * @typedef {import('micromark-util-types').Point} Point + * @typedef {import('micromark-util-types').Resolver} Resolver + * @typedef {import('micromark-util-types').State} State + * @typedef {import('micromark-util-types').Token} Token + * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext + * @typedef {import('micromark-util-types').Tokenizer} Tokenizer + */ + + + + + + + + + +/** @type {Construct} */ +const attention = { + name: 'attention', + tokenize: tokenizeAttention, + resolveAll: resolveAllAttention +} + +/** + * Take all events and resolve attention to emphasis or strong. + * + * @type {Resolver} + */ +function resolveAllAttention(events, context) { + let index = -1 + /** @type {number} */ + let open + /** @type {Token} */ + let group + /** @type {Token} */ + let text + /** @type {Token} */ + let openingSequence + /** @type {Token} */ + let closingSequence + /** @type {number} */ + let use + /** @type {Array} */ + let nextEvents + /** @type {number} */ + let offset + + // Walk through all events. + // + // Note: performance of this is fine on an mb of normal markdown, but it’s + // a bottleneck for malicious stuff. + while (++index < events.length) { + // Find a token that can close. + if ( + events[index][0] === 'enter' && + events[index][1].type === 'attentionSequence' && + events[index][1]._close + ) { + open = index + + // Now walk back to find an opener. + while (open--) { + // Find a token that can open the closer. + if ( + events[open][0] === 'exit' && + events[open][1].type === 'attentionSequence' && + events[open][1]._open && + // If the markers are the same: + context.sliceSerialize(events[open][1]).charCodeAt(0) === + context.sliceSerialize(events[index][1]).charCodeAt(0) + ) { + // If the opening can close or the closing can open, + // and the close size *is not* a multiple of three, + // but the sum of the opening and closing size *is* multiple of three, + // then don’t match. + if ( + (events[open][1]._close || events[index][1]._open) && + (events[index][1].end.offset - events[index][1].start.offset) % 3 && + !( + (events[open][1].end.offset - + events[open][1].start.offset + + events[index][1].end.offset - + events[index][1].start.offset) % + 3 + ) + ) { + continue + } + + // Number of markers to use from the sequence. + use = + events[open][1].end.offset - events[open][1].start.offset > 1 && + events[index][1].end.offset - events[index][1].start.offset > 1 + ? 2 + : 1 + + const start = Object.assign({}, events[open][1].end) + const end = Object.assign({}, events[index][1].start) + movePoint(start, -use) + movePoint(end, use) + + openingSequence = { + type: use > 1 ? micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.strongSequence : micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.emphasisSequence, + start, + end: Object.assign({}, events[open][1].end) + } + closingSequence = { + type: use > 1 ? micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.strongSequence : micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.emphasisSequence, + start: Object.assign({}, events[index][1].start), + end + } + text = { + type: use > 1 ? micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.strongText : micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.emphasisText, + start: Object.assign({}, events[open][1].end), + end: Object.assign({}, events[index][1].start) + } + group = { + type: use > 1 ? micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.strong : micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.emphasis, + start: Object.assign({}, openingSequence.start), + end: Object.assign({}, closingSequence.end) + } + + events[open][1].end = Object.assign({}, openingSequence.start) + events[index][1].start = Object.assign({}, closingSequence.end) + + nextEvents = [] + + // If there are more markers in the opening, add them before. + if (events[open][1].end.offset - events[open][1].start.offset) { + nextEvents = (0,micromark_util_chunked__WEBPACK_IMPORTED_MODULE_2__.push)(nextEvents, [ + ['enter', events[open][1], context], + ['exit', events[open][1], context] + ]) + } + + // Opening. + nextEvents = (0,micromark_util_chunked__WEBPACK_IMPORTED_MODULE_2__.push)(nextEvents, [ + ['enter', group, context], + ['enter', openingSequence, context], + ['exit', openingSequence, context], + ['enter', text, context] + ]) + + // Always populated by defaults. + ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)( + context.parser.constructs.insideSpan.null, + 'expected `insideSpan` to be populated' + ) + + // Between. + nextEvents = (0,micromark_util_chunked__WEBPACK_IMPORTED_MODULE_2__.push)( + nextEvents, + (0,micromark_util_resolve_all__WEBPACK_IMPORTED_MODULE_3__.resolveAll)( + context.parser.constructs.insideSpan.null, + events.slice(open + 1, index), + context + ) + ) + + // Closing. + nextEvents = (0,micromark_util_chunked__WEBPACK_IMPORTED_MODULE_2__.push)(nextEvents, [ + ['exit', text, context], + ['enter', closingSequence, context], + ['exit', closingSequence, context], + ['exit', group, context] + ]) + + // If there are more markers in the closing, add them after. + if (events[index][1].end.offset - events[index][1].start.offset) { + offset = 2 + nextEvents = (0,micromark_util_chunked__WEBPACK_IMPORTED_MODULE_2__.push)(nextEvents, [ + ['enter', events[index][1], context], + ['exit', events[index][1], context] + ]) + } else { + offset = 0 + } + + (0,micromark_util_chunked__WEBPACK_IMPORTED_MODULE_2__.splice)(events, open - 1, index - open + 3, nextEvents) + + index = open + nextEvents.length - offset - 2 + break + } + } + } + } + + // Remove remaining sequences. + index = -1 + + while (++index < events.length) { + if (events[index][1].type === 'attentionSequence') { + events[index][1].type = 'data' + } + } + + return events +} + +/** + * @this {TokenizeContext} + * @type {Tokenizer} + */ +function tokenizeAttention(effects, ok) { + const attentionMarkers = this.parser.constructs.attentionMarkers.null + const previous = this.previous + const before = (0,micromark_util_classify_character__WEBPACK_IMPORTED_MODULE_4__.classifyCharacter)(previous) + + /** @type {NonNullable} */ + let marker + + return start + + /** + * Before a sequence. + * + * ```markdown + * > | ** + * ^ + * ``` + * + * @type {State} + */ + function start(code) { + ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)( + code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_5__.codes.asterisk || code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_5__.codes.underscore, + 'expected asterisk or underscore' + ) + marker = code + effects.enter('attentionSequence') + return inside(code) + } + + /** + * In a sequence. + * + * ```markdown + * > | ** + * ^^ + * ``` + * + * @type {State} + */ + function inside(code) { + if (code === marker) { + effects.consume(code) + return inside + } + + const token = effects.exit('attentionSequence') + + // To do: next major: move this to resolver, just like `markdown-rs`. + const after = (0,micromark_util_classify_character__WEBPACK_IMPORTED_MODULE_4__.classifyCharacter)(code) + + // Always populated by defaults. + ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(attentionMarkers, 'expected `attentionMarkers` to be populated') + + const open = + !after || + (after === micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_6__.constants.characterGroupPunctuation && before) || + attentionMarkers.includes(code) + const close = + !before || + (before === micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_6__.constants.characterGroupPunctuation && after) || + attentionMarkers.includes(previous) + + token._open = Boolean( + marker === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_5__.codes.asterisk ? open : open && (before || !close) + ) + token._close = Boolean( + marker === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_5__.codes.asterisk ? close : close && (after || !open) + ) + return ok(code) + } +} + +/** + * Move a point a bit. + * + * Note: `move` only works inside lines! It’s not possible to move past other + * chunks (replacement characters, tabs, or line endings). + * + * @param {Point} point + * @param {number} offset + * @returns {void} + */ +function movePoint(point, offset) { + point.column += offset + point.offset += offset + point._bufferIndex += offset +} + + +/***/ }), + +/***/ "../node_modules/micromark-core-commonmark/dev/lib/autolink.js": +/*!*********************************************************************!*\ + !*** ../node_modules/micromark-core-commonmark/dev/lib/autolink.js ***! + \*********************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ autolink: () => (/* binding */ autolink) +/* harmony export */ }); +/* harmony import */ var micromark_util_character__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! micromark-util-character */ "../node_modules/micromark-util-character/dev/index.js"); +/* harmony import */ var micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! micromark-util-symbol/codes.js */ "../node_modules/micromark-util-symbol/codes.js"); +/* harmony import */ var micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! micromark-util-symbol/constants.js */ "../node_modules/micromark-util-symbol/constants.js"); +/* harmony import */ var micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! micromark-util-symbol/types.js */ "../node_modules/micromark-util-symbol/types.js"); +/* harmony import */ var uvu_assert__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! uvu/assert */ "../node_modules/uvu/assert/index.mjs"); +/** + * @typedef {import('micromark-util-types').Construct} Construct + * @typedef {import('micromark-util-types').State} State + * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext + * @typedef {import('micromark-util-types').Tokenizer} Tokenizer + */ + + + + + + + +/** @type {Construct} */ +const autolink = {name: 'autolink', tokenize: tokenizeAutolink} + +/** + * @this {TokenizeContext} + * @type {Tokenizer} + */ +function tokenizeAutolink(effects, ok, nok) { + let size = 0 + + return start + + /** + * Start of an autolink. + * + * ```markdown + * > | ab + * ^ + * > | ab + * ^ + * ``` + * + * @type {State} + */ + function start(code) { + ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.lessThan, 'expected `<`') + effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.autolink) + effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.autolinkMarker) + effects.consume(code) + effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.autolinkMarker) + effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.autolinkProtocol) + return open + } + + /** + * After `<`, at protocol or atext. + * + * ```markdown + * > | ab + * ^ + * > | ab + * ^ + * ``` + * + * @type {State} + */ + function open(code) { + if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.asciiAlpha)(code)) { + effects.consume(code) + return schemeOrEmailAtext + } + + return emailAtext(code) + } + + /** + * At second byte of protocol or atext. + * + * ```markdown + * > | ab + * ^ + * > | ab + * ^ + * ``` + * + * @type {State} + */ + function schemeOrEmailAtext(code) { + // ASCII alphanumeric and `+`, `-`, and `.`. + if ( + code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.plusSign || + code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.dash || + code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.dot || + (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.asciiAlphanumeric)(code) + ) { + // Count the previous alphabetical from `open` too. + size = 1 + return schemeInsideOrEmailAtext(code) + } + + return emailAtext(code) + } + + /** + * In ambiguous protocol or atext. + * + * ```markdown + * > | ab + * ^ + * > | ab + * ^ + * ``` + * + * @type {State} + */ + function schemeInsideOrEmailAtext(code) { + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.colon) { + effects.consume(code) + size = 0 + return urlInside + } + + // ASCII alphanumeric and `+`, `-`, and `.`. + if ( + (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.plusSign || + code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.dash || + code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.dot || + (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.asciiAlphanumeric)(code)) && + size++ < micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_4__.constants.autolinkSchemeSizeMax + ) { + effects.consume(code) + return schemeInsideOrEmailAtext + } + + size = 0 + return emailAtext(code) + } + + /** + * After protocol, in URL. + * + * ```markdown + * > | ab + * ^ + * ``` + * + * @type {State} + */ + function urlInside(code) { + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.greaterThan) { + effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.autolinkProtocol) + effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.autolinkMarker) + effects.consume(code) + effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.autolinkMarker) + effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.autolink) + return ok + } + + // ASCII control, space, or `<`. + if ( + code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.eof || + code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.space || + code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.lessThan || + (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.asciiControl)(code) + ) { + return nok(code) + } + + effects.consume(code) + return urlInside + } + + /** + * In email atext. + * + * ```markdown + * > | ab + * ^ + * ``` + * + * @type {State} + */ + function emailAtext(code) { + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.atSign) { + effects.consume(code) + return emailAtSignOrDot + } + + if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.asciiAtext)(code)) { + effects.consume(code) + return emailAtext + } + + return nok(code) + } + + /** + * In label, after at-sign or dot. + * + * ```markdown + * > | ab + * ^ ^ + * ``` + * + * @type {State} + */ + function emailAtSignOrDot(code) { + return (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.asciiAlphanumeric)(code) ? emailLabel(code) : nok(code) + } + + /** + * In label, where `.` and `>` are allowed. + * + * ```markdown + * > | ab + * ^ + * ``` + * + * @type {State} + */ + function emailLabel(code) { + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.dot) { + effects.consume(code) + size = 0 + return emailAtSignOrDot + } + + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.greaterThan) { + // Exit, then change the token type. + effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.autolinkProtocol).type = micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.autolinkEmail + effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.autolinkMarker) + effects.consume(code) + effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.autolinkMarker) + effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.autolink) + return ok + } + + return emailValue(code) + } + + /** + * In label, where `.` and `>` are *not* allowed. + * + * Though, this is also used in `emailLabel` to parse other values. + * + * ```markdown + * > | ab + * ^ + * ``` + * + * @type {State} + */ + function emailValue(code) { + // ASCII alphanumeric or `-`. + if ( + (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.dash || (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.asciiAlphanumeric)(code)) && + size++ < micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_4__.constants.autolinkDomainSizeMax + ) { + const next = code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.dash ? emailValue : emailLabel + effects.consume(code) + return next + } + + return nok(code) + } +} + + +/***/ }), + +/***/ "../node_modules/micromark-core-commonmark/dev/lib/blank-line.js": +/*!***********************************************************************!*\ + !*** ../node_modules/micromark-core-commonmark/dev/lib/blank-line.js ***! + \***********************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ blankLine: () => (/* binding */ blankLine) +/* harmony export */ }); +/* harmony import */ var micromark_factory_space__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! micromark-factory-space */ "../node_modules/micromark-factory-space/dev/index.js"); +/* harmony import */ var micromark_util_character__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! micromark-util-character */ "../node_modules/micromark-util-character/dev/index.js"); +/* harmony import */ var micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! micromark-util-symbol/codes.js */ "../node_modules/micromark-util-symbol/codes.js"); +/* harmony import */ var micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! micromark-util-symbol/types.js */ "../node_modules/micromark-util-symbol/types.js"); +/** + * @typedef {import('micromark-util-types').Construct} Construct + * @typedef {import('micromark-util-types').State} State + * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext + * @typedef {import('micromark-util-types').Tokenizer} Tokenizer + */ + + + + + + +/** @type {Construct} */ +const blankLine = {tokenize: tokenizeBlankLine, partial: true} + +/** + * @this {TokenizeContext} + * @type {Tokenizer} + */ +function tokenizeBlankLine(effects, ok, nok) { + return start + + /** + * Start of blank line. + * + * > 👉 **Note**: `␠` represents a space character. + * + * ```markdown + * > | ␠␠␊ + * ^ + * > | ␊ + * ^ + * ``` + * + * @type {State} + */ + function start(code) { + return (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_0__.markdownSpace)(code) + ? (0,micromark_factory_space__WEBPACK_IMPORTED_MODULE_1__.factorySpace)(effects, after, micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.linePrefix)(code) + : after(code) + } + + /** + * At eof/eol, after optional whitespace. + * + * > 👉 **Note**: `␠` represents a space character. + * + * ```markdown + * > | ␠␠␊ + * ^ + * > | ␊ + * ^ + * ``` + * + * @type {State} + */ + function after(code) { + return code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_3__.codes.eof || (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_0__.markdownLineEnding)(code) ? ok(code) : nok(code) + } +} + + +/***/ }), + +/***/ "../node_modules/micromark-core-commonmark/dev/lib/block-quote.js": +/*!************************************************************************!*\ + !*** ../node_modules/micromark-core-commonmark/dev/lib/block-quote.js ***! + \************************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ blockQuote: () => (/* binding */ blockQuote) +/* harmony export */ }); +/* harmony import */ var micromark_factory_space__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! micromark-factory-space */ "../node_modules/micromark-factory-space/dev/index.js"); +/* harmony import */ var micromark_util_character__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! micromark-util-character */ "../node_modules/micromark-util-character/dev/index.js"); +/* harmony import */ var micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! micromark-util-symbol/codes.js */ "../node_modules/micromark-util-symbol/codes.js"); +/* harmony import */ var micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! micromark-util-symbol/constants.js */ "../node_modules/micromark-util-symbol/constants.js"); +/* harmony import */ var micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! micromark-util-symbol/types.js */ "../node_modules/micromark-util-symbol/types.js"); +/* harmony import */ var uvu_assert__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! uvu/assert */ "../node_modules/uvu/assert/index.mjs"); +/** + * @typedef {import('micromark-util-types').Construct} Construct + * @typedef {import('micromark-util-types').Exiter} Exiter + * @typedef {import('micromark-util-types').State} State + * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext + * @typedef {import('micromark-util-types').Tokenizer} Tokenizer + */ + + + + + + + + +/** @type {Construct} */ +const blockQuote = { + name: 'blockQuote', + tokenize: tokenizeBlockQuoteStart, + continuation: {tokenize: tokenizeBlockQuoteContinuation}, + exit +} + +/** + * @this {TokenizeContext} + * @type {Tokenizer} + */ +function tokenizeBlockQuoteStart(effects, ok, nok) { + const self = this + + return start + + /** + * Start of block quote. + * + * ```markdown + * > | > a + * ^ + * ``` + * + * @type {State} + */ + function start(code) { + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.greaterThan) { + const state = self.containerState + + ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(state, 'expected `containerState` to be defined in container') + + if (!state.open) { + effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.blockQuote, {_container: true}) + state.open = true + } + + effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.blockQuotePrefix) + effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.blockQuoteMarker) + effects.consume(code) + effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.blockQuoteMarker) + return after + } + + return nok(code) + } + + /** + * After `>`, before optional whitespace. + * + * ```markdown + * > | > a + * ^ + * ``` + * + * @type {State} + */ + function after(code) { + if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.markdownSpace)(code)) { + effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.blockQuotePrefixWhitespace) + effects.consume(code) + effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.blockQuotePrefixWhitespace) + effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.blockQuotePrefix) + return ok + } + + effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.blockQuotePrefix) + return ok(code) + } +} + +/** + * Start of block quote continuation. + * + * ```markdown + * | > a + * > | > b + * ^ + * ``` + * + * @this {TokenizeContext} + * @type {Tokenizer} + */ +function tokenizeBlockQuoteContinuation(effects, ok, nok) { + const self = this + + return contStart + + /** + * Start of block quote continuation. + * + * Also used to parse the first block quote opening. + * + * ```markdown + * | > a + * > | > b + * ^ + * ``` + * + * @type {State} + */ + function contStart(code) { + if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.markdownSpace)(code)) { + // Always populated by defaults. + (0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)( + self.parser.constructs.disable.null, + 'expected `disable.null` to be populated' + ) + + return (0,micromark_factory_space__WEBPACK_IMPORTED_MODULE_4__.factorySpace)( + effects, + contBefore, + micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.linePrefix, + self.parser.constructs.disable.null.includes('codeIndented') + ? undefined + : micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_5__.constants.tabSize + )(code) + } + + return contBefore(code) + } + + /** + * At `>`, after optional whitespace. + * + * Also used to parse the first block quote opening. + * + * ```markdown + * | > a + * > | > b + * ^ + * ``` + * + * @type {State} + */ + function contBefore(code) { + return effects.attempt(blockQuote, ok, nok)(code) + } +} + +/** @type {Exiter} */ +function exit(effects) { + effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.blockQuote) +} + + +/***/ }), + +/***/ "../node_modules/micromark-core-commonmark/dev/lib/character-escape.js": +/*!*****************************************************************************!*\ + !*** ../node_modules/micromark-core-commonmark/dev/lib/character-escape.js ***! + \*****************************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ characterEscape: () => (/* binding */ characterEscape) +/* harmony export */ }); +/* harmony import */ var micromark_util_character__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! micromark-util-character */ "../node_modules/micromark-util-character/dev/index.js"); +/* harmony import */ var micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! micromark-util-symbol/codes.js */ "../node_modules/micromark-util-symbol/codes.js"); +/* harmony import */ var micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! micromark-util-symbol/types.js */ "../node_modules/micromark-util-symbol/types.js"); +/* harmony import */ var uvu_assert__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! uvu/assert */ "../node_modules/uvu/assert/index.mjs"); +/** + * @typedef {import('micromark-util-types').Construct} Construct + * @typedef {import('micromark-util-types').State} State + * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext + * @typedef {import('micromark-util-types').Tokenizer} Tokenizer + */ + + + + + + +/** @type {Construct} */ +const characterEscape = { + name: 'characterEscape', + tokenize: tokenizeCharacterEscape +} + +/** + * @this {TokenizeContext} + * @type {Tokenizer} + */ +function tokenizeCharacterEscape(effects, ok, nok) { + return start + + /** + * Start of character escape. + * + * ```markdown + * > | a\*b + * ^ + * ``` + * + * @type {State} + */ + function start(code) { + ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.backslash, 'expected `\\`') + effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.characterEscape) + effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.escapeMarker) + effects.consume(code) + effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.escapeMarker) + return inside + } + + /** + * After `\`, at punctuation. + * + * ```markdown + * > | a\*b + * ^ + * ``` + * + * @type {State} + */ + function inside(code) { + // ASCII punctuation. + if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.asciiPunctuation)(code)) { + effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.characterEscapeValue) + effects.consume(code) + effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.characterEscapeValue) + effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.characterEscape) + return ok + } + + return nok(code) + } +} + + +/***/ }), + +/***/ "../node_modules/micromark-core-commonmark/dev/lib/character-reference.js": +/*!********************************************************************************!*\ + !*** ../node_modules/micromark-core-commonmark/dev/lib/character-reference.js ***! + \********************************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ characterReference: () => (/* binding */ characterReference) +/* harmony export */ }); +/* harmony import */ var decode_named_character_reference__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! decode-named-character-reference */ "../node_modules/decode-named-character-reference/index.dom.js"); +/* harmony import */ var micromark_util_character__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! micromark-util-character */ "../node_modules/micromark-util-character/dev/index.js"); +/* harmony import */ var micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! micromark-util-symbol/codes.js */ "../node_modules/micromark-util-symbol/codes.js"); +/* harmony import */ var micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! micromark-util-symbol/constants.js */ "../node_modules/micromark-util-symbol/constants.js"); +/* harmony import */ var micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! micromark-util-symbol/types.js */ "../node_modules/micromark-util-symbol/types.js"); +/* harmony import */ var uvu_assert__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! uvu/assert */ "../node_modules/uvu/assert/index.mjs"); +/** + * @typedef {import('micromark-util-types').Code} Code + * @typedef {import('micromark-util-types').Construct} Construct + * @typedef {import('micromark-util-types').State} State + * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext + * @typedef {import('micromark-util-types').Tokenizer} Tokenizer + */ + + + + + + + + +/** @type {Construct} */ +const characterReference = { + name: 'characterReference', + tokenize: tokenizeCharacterReference +} + +/** + * @this {TokenizeContext} + * @type {Tokenizer} + */ +function tokenizeCharacterReference(effects, ok, nok) { + const self = this + let size = 0 + /** @type {number} */ + let max + /** @type {(code: Code) => boolean} */ + let test + + return start + + /** + * Start of character reference. + * + * ```markdown + * > | a&b + * ^ + * > | a{b + * ^ + * > | a b + * ^ + * ``` + * + * @type {State} + */ + function start(code) { + ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.ampersand, 'expected `&`') + effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.characterReference) + effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.characterReferenceMarker) + effects.consume(code) + effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.characterReferenceMarker) + return open + } + + /** + * After `&`, at `#` for numeric references or alphanumeric for named + * references. + * + * ```markdown + * > | a&b + * ^ + * > | a{b + * ^ + * > | a b + * ^ + * ``` + * + * @type {State} + */ + function open(code) { + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.numberSign) { + effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.characterReferenceMarkerNumeric) + effects.consume(code) + effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.characterReferenceMarkerNumeric) + return numeric + } + + effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.characterReferenceValue) + max = micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_3__.constants.characterReferenceNamedSizeMax + test = micromark_util_character__WEBPACK_IMPORTED_MODULE_4__.asciiAlphanumeric + return value(code) + } + + /** + * After `#`, at `x` for hexadecimals or digit for decimals. + * + * ```markdown + * > | a{b + * ^ + * > | a b + * ^ + * ``` + * + * @type {State} + */ + function numeric(code) { + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.uppercaseX || code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.lowercaseX) { + effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.characterReferenceMarkerHexadecimal) + effects.consume(code) + effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.characterReferenceMarkerHexadecimal) + effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.characterReferenceValue) + max = micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_3__.constants.characterReferenceHexadecimalSizeMax + test = micromark_util_character__WEBPACK_IMPORTED_MODULE_4__.asciiHexDigit + return value + } + + effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.characterReferenceValue) + max = micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_3__.constants.characterReferenceDecimalSizeMax + test = micromark_util_character__WEBPACK_IMPORTED_MODULE_4__.asciiDigit + return value(code) + } + + /** + * After markers (`&#x`, `&#`, or `&`), in value, before `;`. + * + * The character reference kind defines what and how many characters are + * allowed. + * + * ```markdown + * > | a&b + * ^^^ + * > | a{b + * ^^^ + * > | a b + * ^ + * ``` + * + * @type {State} + */ + function value(code) { + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.semicolon && size) { + const token = effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.characterReferenceValue) + + if ( + test === micromark_util_character__WEBPACK_IMPORTED_MODULE_4__.asciiAlphanumeric && + !(0,decode_named_character_reference__WEBPACK_IMPORTED_MODULE_5__.decodeNamedCharacterReference)(self.sliceSerialize(token)) + ) { + return nok(code) + } + + // To do: `markdown-rs` uses a different name: + // `CharacterReferenceMarkerSemi`. + effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.characterReferenceMarker) + effects.consume(code) + effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.characterReferenceMarker) + effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.characterReference) + return ok + } + + if (test(code) && size++ < max) { + effects.consume(code) + return value + } + + return nok(code) + } +} + + +/***/ }), + +/***/ "../node_modules/micromark-core-commonmark/dev/lib/code-fenced.js": +/*!************************************************************************!*\ + !*** ../node_modules/micromark-core-commonmark/dev/lib/code-fenced.js ***! + \************************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ codeFenced: () => (/* binding */ codeFenced) +/* harmony export */ }); +/* harmony import */ var micromark_factory_space__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! micromark-factory-space */ "../node_modules/micromark-factory-space/dev/index.js"); +/* harmony import */ var micromark_util_character__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! micromark-util-character */ "../node_modules/micromark-util-character/dev/index.js"); +/* harmony import */ var micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! micromark-util-symbol/codes.js */ "../node_modules/micromark-util-symbol/codes.js"); +/* harmony import */ var micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! micromark-util-symbol/constants.js */ "../node_modules/micromark-util-symbol/constants.js"); +/* harmony import */ var micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! micromark-util-symbol/types.js */ "../node_modules/micromark-util-symbol/types.js"); +/* harmony import */ var uvu_assert__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! uvu/assert */ "../node_modules/uvu/assert/index.mjs"); +/** + * @typedef {import('micromark-util-types').Code} Code + * @typedef {import('micromark-util-types').Construct} Construct + * @typedef {import('micromark-util-types').State} State + * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext + * @typedef {import('micromark-util-types').Tokenizer} Tokenizer + */ + + + + + + + + +/** @type {Construct} */ +const nonLazyContinuation = { + tokenize: tokenizeNonLazyContinuation, + partial: true +} + +/** @type {Construct} */ +const codeFenced = { + name: 'codeFenced', + tokenize: tokenizeCodeFenced, + concrete: true +} + +/** + * @this {TokenizeContext} + * @type {Tokenizer} + */ +function tokenizeCodeFenced(effects, ok, nok) { + const self = this + /** @type {Construct} */ + const closeStart = {tokenize: tokenizeCloseStart, partial: true} + let initialPrefix = 0 + let sizeOpen = 0 + /** @type {NonNullable} */ + let marker + + return start + + /** + * Start of code. + * + * ```markdown + * > | ~~~js + * ^ + * | alert(1) + * | ~~~ + * ``` + * + * @type {State} + */ + function start(code) { + // To do: parse whitespace like `markdown-rs`. + return beforeSequenceOpen(code) + } + + /** + * In opening fence, after prefix, at sequence. + * + * ```markdown + * > | ~~~js + * ^ + * | alert(1) + * | ~~~ + * ``` + * + * @type {State} + */ + function beforeSequenceOpen(code) { + (0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)( + code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.graveAccent || code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.tilde, + 'expected `` ` `` or `~`' + ) + + const tail = self.events[self.events.length - 1] + initialPrefix = + tail && tail[1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.linePrefix + ? tail[2].sliceSerialize(tail[1], true).length + : 0 + + marker = code + effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.codeFenced) + effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.codeFencedFence) + effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.codeFencedFenceSequence) + return sequenceOpen(code) + } + + /** + * In opening fence sequence. + * + * ```markdown + * > | ~~~js + * ^ + * | alert(1) + * | ~~~ + * ``` + * + * @type {State} + */ + function sequenceOpen(code) { + if (code === marker) { + sizeOpen++ + effects.consume(code) + return sequenceOpen + } + + if (sizeOpen < micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_3__.constants.codeFencedSequenceSizeMin) { + return nok(code) + } + + effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.codeFencedFenceSequence) + return (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_4__.markdownSpace)(code) + ? (0,micromark_factory_space__WEBPACK_IMPORTED_MODULE_5__.factorySpace)(effects, infoBefore, micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.whitespace)(code) + : infoBefore(code) + } + + /** + * In opening fence, after the sequence (and optional whitespace), before info. + * + * ```markdown + * > | ~~~js + * ^ + * | alert(1) + * | ~~~ + * ``` + * + * @type {State} + */ + function infoBefore(code) { + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.eof || (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_4__.markdownLineEnding)(code)) { + effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.codeFencedFence) + return self.interrupt + ? ok(code) + : effects.check(nonLazyContinuation, atNonLazyBreak, after)(code) + } + + effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.codeFencedFenceInfo) + effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.chunkString, {contentType: micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_3__.constants.contentTypeString}) + return info(code) + } + + /** + * In info. + * + * ```markdown + * > | ~~~js + * ^ + * | alert(1) + * | ~~~ + * ``` + * + * @type {State} + */ + function info(code) { + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.eof || (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_4__.markdownLineEnding)(code)) { + effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.chunkString) + effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.codeFencedFenceInfo) + return infoBefore(code) + } + + if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_4__.markdownSpace)(code)) { + effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.chunkString) + effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.codeFencedFenceInfo) + return (0,micromark_factory_space__WEBPACK_IMPORTED_MODULE_5__.factorySpace)(effects, metaBefore, micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.whitespace)(code) + } + + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.graveAccent && code === marker) { + return nok(code) + } + + effects.consume(code) + return info + } + + /** + * In opening fence, after info and whitespace, before meta. + * + * ```markdown + * > | ~~~js eval + * ^ + * | alert(1) + * | ~~~ + * ``` + * + * @type {State} + */ + function metaBefore(code) { + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.eof || (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_4__.markdownLineEnding)(code)) { + return infoBefore(code) + } + + effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.codeFencedFenceMeta) + effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.chunkString, {contentType: micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_3__.constants.contentTypeString}) + return meta(code) + } + + /** + * In meta. + * + * ```markdown + * > | ~~~js eval + * ^ + * | alert(1) + * | ~~~ + * ``` + * + * @type {State} + */ + function meta(code) { + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.eof || (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_4__.markdownLineEnding)(code)) { + effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.chunkString) + effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.codeFencedFenceMeta) + return infoBefore(code) + } + + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.graveAccent && code === marker) { + return nok(code) + } + + effects.consume(code) + return meta + } + + /** + * At eol/eof in code, before a non-lazy closing fence or content. + * + * ```markdown + * > | ~~~js + * ^ + * > | alert(1) + * ^ + * | ~~~ + * ``` + * + * @type {State} + */ + function atNonLazyBreak(code) { + (0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_4__.markdownLineEnding)(code), 'expected eol') + return effects.attempt(closeStart, after, contentBefore)(code) + } + + /** + * Before code content, not a closing fence, at eol. + * + * ```markdown + * | ~~~js + * > | alert(1) + * ^ + * | ~~~ + * ``` + * + * @type {State} + */ + function contentBefore(code) { + (0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_4__.markdownLineEnding)(code), 'expected eol') + effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.lineEnding) + effects.consume(code) + effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.lineEnding) + return contentStart + } + + /** + * Before code content, not a closing fence. + * + * ```markdown + * | ~~~js + * > | alert(1) + * ^ + * | ~~~ + * ``` + * + * @type {State} + */ + function contentStart(code) { + return initialPrefix > 0 && (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_4__.markdownSpace)(code) + ? (0,micromark_factory_space__WEBPACK_IMPORTED_MODULE_5__.factorySpace)( + effects, + beforeContentChunk, + micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.linePrefix, + initialPrefix + 1 + )(code) + : beforeContentChunk(code) + } + + /** + * Before code content, after optional prefix. + * + * ```markdown + * | ~~~js + * > | alert(1) + * ^ + * | ~~~ + * ``` + * + * @type {State} + */ + function beforeContentChunk(code) { + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.eof || (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_4__.markdownLineEnding)(code)) { + return effects.check(nonLazyContinuation, atNonLazyBreak, after)(code) + } + + effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.codeFlowValue) + return contentChunk(code) + } + + /** + * In code content. + * + * ```markdown + * | ~~~js + * > | alert(1) + * ^^^^^^^^ + * | ~~~ + * ``` + * + * @type {State} + */ + function contentChunk(code) { + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.eof || (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_4__.markdownLineEnding)(code)) { + effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.codeFlowValue) + return beforeContentChunk(code) + } + + effects.consume(code) + return contentChunk + } + + /** + * After code. + * + * ```markdown + * | ~~~js + * | alert(1) + * > | ~~~ + * ^ + * ``` + * + * @type {State} + */ + function after(code) { + effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.codeFenced) + return ok(code) + } + + /** + * @this {TokenizeContext} + * @type {Tokenizer} + */ + function tokenizeCloseStart(effects, ok, nok) { + let size = 0 + + return startBefore + + /** + * + * + * @type {State} + */ + function startBefore(code) { + ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_4__.markdownLineEnding)(code), 'expected eol') + effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.lineEnding) + effects.consume(code) + effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.lineEnding) + return start + } + + /** + * Before closing fence, at optional whitespace. + * + * ```markdown + * | ~~~js + * | alert(1) + * > | ~~~ + * ^ + * ``` + * + * @type {State} + */ + function start(code) { + // Always populated by defaults. + (0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)( + self.parser.constructs.disable.null, + 'expected `disable.null` to be populated' + ) + + // To do: `enter` here or in next state? + effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.codeFencedFence) + return (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_4__.markdownSpace)(code) + ? (0,micromark_factory_space__WEBPACK_IMPORTED_MODULE_5__.factorySpace)( + effects, + beforeSequenceClose, + micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.linePrefix, + self.parser.constructs.disable.null.includes('codeIndented') + ? undefined + : micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_3__.constants.tabSize + )(code) + : beforeSequenceClose(code) + } + + /** + * In closing fence, after optional whitespace, at sequence. + * + * ```markdown + * | ~~~js + * | alert(1) + * > | ~~~ + * ^ + * ``` + * + * @type {State} + */ + function beforeSequenceClose(code) { + if (code === marker) { + effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.codeFencedFenceSequence) + return sequenceClose(code) + } + + return nok(code) + } + + /** + * In closing fence sequence. + * + * ```markdown + * | ~~~js + * | alert(1) + * > | ~~~ + * ^ + * ``` + * + * @type {State} + */ + function sequenceClose(code) { + if (code === marker) { + size++ + effects.consume(code) + return sequenceClose + } + + if (size >= sizeOpen) { + effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.codeFencedFenceSequence) + return (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_4__.markdownSpace)(code) + ? (0,micromark_factory_space__WEBPACK_IMPORTED_MODULE_5__.factorySpace)(effects, sequenceCloseAfter, micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.whitespace)(code) + : sequenceCloseAfter(code) + } + + return nok(code) + } + + /** + * After closing fence sequence, after optional whitespace. + * + * ```markdown + * | ~~~js + * | alert(1) + * > | ~~~ + * ^ + * ``` + * + * @type {State} + */ + function sequenceCloseAfter(code) { + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.eof || (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_4__.markdownLineEnding)(code)) { + effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.codeFencedFence) + return ok(code) + } + + return nok(code) + } + } +} + +/** + * @this {TokenizeContext} + * @type {Tokenizer} + */ +function tokenizeNonLazyContinuation(effects, ok, nok) { + const self = this + + return start + + /** + * + * + * @type {State} + */ + function start(code) { + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.eof) { + return nok(code) + } + + (0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_4__.markdownLineEnding)(code), 'expected eol') + effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.lineEnding) + effects.consume(code) + effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.lineEnding) + return lineStart + } + + /** + * + * + * @type {State} + */ + function lineStart(code) { + return self.parser.lazy[self.now().line] ? nok(code) : ok(code) + } +} + + +/***/ }), + +/***/ "../node_modules/micromark-core-commonmark/dev/lib/code-indented.js": +/*!**************************************************************************!*\ + !*** ../node_modules/micromark-core-commonmark/dev/lib/code-indented.js ***! + \**************************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ codeIndented: () => (/* binding */ codeIndented) +/* harmony export */ }); +/* harmony import */ var micromark_factory_space__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! micromark-factory-space */ "../node_modules/micromark-factory-space/dev/index.js"); +/* harmony import */ var micromark_util_character__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! micromark-util-character */ "../node_modules/micromark-util-character/dev/index.js"); +/* harmony import */ var micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! micromark-util-symbol/codes.js */ "../node_modules/micromark-util-symbol/codes.js"); +/* harmony import */ var micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! micromark-util-symbol/constants.js */ "../node_modules/micromark-util-symbol/constants.js"); +/* harmony import */ var micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! micromark-util-symbol/types.js */ "../node_modules/micromark-util-symbol/types.js"); +/* harmony import */ var uvu_assert__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! uvu/assert */ "../node_modules/uvu/assert/index.mjs"); +/** + * @typedef {import('micromark-util-types').Construct} Construct + * @typedef {import('micromark-util-types').State} State + * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext + * @typedef {import('micromark-util-types').Tokenizer} Tokenizer + */ + + + + + + + + +/** @type {Construct} */ +const codeIndented = { + name: 'codeIndented', + tokenize: tokenizeCodeIndented +} + +/** @type {Construct} */ +const furtherStart = {tokenize: tokenizeFurtherStart, partial: true} + +/** + * @this {TokenizeContext} + * @type {Tokenizer} + */ +function tokenizeCodeIndented(effects, ok, nok) { + const self = this + return start + + /** + * Start of code (indented). + * + * > **Parsing note**: it is not needed to check if this first line is a + * > filled line (that it has a non-whitespace character), because blank lines + * > are parsed already, so we never run into that. + * + * ```markdown + * > | aaa + * ^ + * ``` + * + * @type {State} + */ + function start(code) { + // To do: manually check if interrupting like `markdown-rs`. + ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_1__.markdownSpace)(code)) + effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.codeIndented) + // To do: use an improved `space_or_tab` function like `markdown-rs`, + // so that we can drop the next state. + return (0,micromark_factory_space__WEBPACK_IMPORTED_MODULE_3__.factorySpace)( + effects, + afterPrefix, + micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.linePrefix, + micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_4__.constants.tabSize + 1 + )(code) + } + + /** + * At start, after 1 or 4 spaces. + * + * ```markdown + * > | aaa + * ^ + * ``` + * + * @type {State} + */ + function afterPrefix(code) { + const tail = self.events[self.events.length - 1] + return tail && + tail[1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.linePrefix && + tail[2].sliceSerialize(tail[1], true).length >= micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_4__.constants.tabSize + ? atBreak(code) + : nok(code) + } + + /** + * At a break. + * + * ```markdown + * > | aaa + * ^ ^ + * ``` + * + * @type {State} + */ + function atBreak(code) { + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_5__.codes.eof) { + return after(code) + } + + if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_1__.markdownLineEnding)(code)) { + return effects.attempt(furtherStart, atBreak, after)(code) + } + + effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.codeFlowValue) + return inside(code) + } + + /** + * In code content. + * + * ```markdown + * > | aaa + * ^^^^ + * ``` + * + * @type {State} + */ + function inside(code) { + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_5__.codes.eof || (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_1__.markdownLineEnding)(code)) { + effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.codeFlowValue) + return atBreak(code) + } + + effects.consume(code) + return inside + } + + /** @type {State} */ + function after(code) { + effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.codeIndented) + // To do: allow interrupting like `markdown-rs`. + // Feel free to interrupt. + // tokenizer.interrupt = false + return ok(code) + } +} + +/** + * @this {TokenizeContext} + * @type {Tokenizer} + */ +function tokenizeFurtherStart(effects, ok, nok) { + const self = this + + return furtherStart + + /** + * At eol, trying to parse another indent. + * + * ```markdown + * > | aaa + * ^ + * | bbb + * ``` + * + * @type {State} + */ + function furtherStart(code) { + // To do: improve `lazy` / `pierce` handling. + // If this is a lazy line, it can’t be code. + if (self.parser.lazy[self.now().line]) { + return nok(code) + } + + if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_1__.markdownLineEnding)(code)) { + effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.lineEnding) + effects.consume(code) + effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.lineEnding) + return furtherStart + } + + // To do: the code here in `micromark-js` is a bit different from + // `markdown-rs` because there it can attempt spaces. + // We can’t yet. + // + // To do: use an improved `space_or_tab` function like `markdown-rs`, + // so that we can drop the next state. + return (0,micromark_factory_space__WEBPACK_IMPORTED_MODULE_3__.factorySpace)( + effects, + afterPrefix, + micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.linePrefix, + micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_4__.constants.tabSize + 1 + )(code) + } + + /** + * At start, after 1 or 4 spaces. + * + * ```markdown + * > | aaa + * ^ + * ``` + * + * @type {State} + */ + function afterPrefix(code) { + const tail = self.events[self.events.length - 1] + return tail && + tail[1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.linePrefix && + tail[2].sliceSerialize(tail[1], true).length >= micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_4__.constants.tabSize + ? ok(code) + : (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_1__.markdownLineEnding)(code) + ? furtherStart(code) + : nok(code) + } +} + + +/***/ }), + +/***/ "../node_modules/micromark-core-commonmark/dev/lib/code-text.js": +/*!**********************************************************************!*\ + !*** ../node_modules/micromark-core-commonmark/dev/lib/code-text.js ***! + \**********************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ codeText: () => (/* binding */ codeText) +/* harmony export */ }); +/* harmony import */ var micromark_util_character__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! micromark-util-character */ "../node_modules/micromark-util-character/dev/index.js"); +/* harmony import */ var micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! micromark-util-symbol/codes.js */ "../node_modules/micromark-util-symbol/codes.js"); +/* harmony import */ var micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! micromark-util-symbol/types.js */ "../node_modules/micromark-util-symbol/types.js"); +/* harmony import */ var uvu_assert__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! uvu/assert */ "../node_modules/uvu/assert/index.mjs"); +/** + * @typedef {import('micromark-util-types').Construct} Construct + * @typedef {import('micromark-util-types').Previous} Previous + * @typedef {import('micromark-util-types').Resolver} Resolver + * @typedef {import('micromark-util-types').State} State + * @typedef {import('micromark-util-types').Token} Token + * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext + * @typedef {import('micromark-util-types').Tokenizer} Tokenizer + */ + + + + + + +/** @type {Construct} */ +const codeText = { + name: 'codeText', + tokenize: tokenizeCodeText, + resolve: resolveCodeText, + previous +} + +// To do: next major: don’t resolve, like `markdown-rs`. +/** @type {Resolver} */ +function resolveCodeText(events) { + let tailExitIndex = events.length - 4 + let headEnterIndex = 3 + /** @type {number} */ + let index + /** @type {number | undefined} */ + let enter + + // If we start and end with an EOL or a space. + if ( + (events[headEnterIndex][1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.lineEnding || + events[headEnterIndex][1].type === 'space') && + (events[tailExitIndex][1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.lineEnding || + events[tailExitIndex][1].type === 'space') + ) { + index = headEnterIndex + + // And we have data. + while (++index < tailExitIndex) { + if (events[index][1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.codeTextData) { + // Then we have padding. + events[headEnterIndex][1].type = micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.codeTextPadding + events[tailExitIndex][1].type = micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.codeTextPadding + headEnterIndex += 2 + tailExitIndex -= 2 + break + } + } + } + + // Merge adjacent spaces and data. + index = headEnterIndex - 1 + tailExitIndex++ + + while (++index <= tailExitIndex) { + if (enter === undefined) { + if ( + index !== tailExitIndex && + events[index][1].type !== micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.lineEnding + ) { + enter = index + } + } else if ( + index === tailExitIndex || + events[index][1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.lineEnding + ) { + events[enter][1].type = micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.codeTextData + + if (index !== enter + 2) { + events[enter][1].end = events[index - 1][1].end + events.splice(enter + 2, index - enter - 2) + tailExitIndex -= index - enter - 2 + index = enter + 2 + } + + enter = undefined + } + } + + return events +} + +/** + * @this {TokenizeContext} + * @type {Previous} + */ +function previous(code) { + // If there is a previous code, there will always be a tail. + return ( + code !== micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.graveAccent || + this.events[this.events.length - 1][1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.characterEscape + ) +} + +/** + * @this {TokenizeContext} + * @type {Tokenizer} + */ +function tokenizeCodeText(effects, ok, nok) { + const self = this + let sizeOpen = 0 + /** @type {number} */ + let size + /** @type {Token} */ + let token + + return start + + /** + * Start of code (text). + * + * ```markdown + * > | `a` + * ^ + * > | \`a` + * ^ + * ``` + * + * @type {State} + */ + function start(code) { + ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.graveAccent, 'expected `` ` ``') + ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(previous.call(self, self.previous), 'expected correct previous') + effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.codeText) + effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.codeTextSequence) + return sequenceOpen(code) + } + + /** + * In opening sequence. + * + * ```markdown + * > | `a` + * ^ + * ``` + * + * @type {State} + */ + function sequenceOpen(code) { + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.graveAccent) { + effects.consume(code) + sizeOpen++ + return sequenceOpen + } + + effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.codeTextSequence) + return between(code) + } + + /** + * Between something and something else. + * + * ```markdown + * > | `a` + * ^^ + * ``` + * + * @type {State} + */ + function between(code) { + // EOF. + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.eof) { + return nok(code) + } + + // To do: next major: don’t do spaces in resolve, but when compiling, + // like `markdown-rs`. + // Tabs don’t work, and virtual spaces don’t make sense. + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.space) { + effects.enter('space') + effects.consume(code) + effects.exit('space') + return between + } + + // Closing fence? Could also be data. + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.graveAccent) { + token = effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.codeTextSequence) + size = 0 + return sequenceClose(code) + } + + if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.markdownLineEnding)(code)) { + effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.lineEnding) + effects.consume(code) + effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.lineEnding) + return between + } + + // Data. + effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.codeTextData) + return data(code) + } + + /** + * In data. + * + * ```markdown + * > | `a` + * ^ + * ``` + * + * @type {State} + */ + function data(code) { + if ( + code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.eof || + code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.space || + code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.graveAccent || + (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.markdownLineEnding)(code) + ) { + effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.codeTextData) + return between(code) + } + + effects.consume(code) + return data + } + + /** + * In closing sequence. + * + * ```markdown + * > | `a` + * ^ + * ``` + * + * @type {State} + */ + function sequenceClose(code) { + // More. + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.graveAccent) { + effects.consume(code) + size++ + return sequenceClose + } + + // Done! + if (size === sizeOpen) { + effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.codeTextSequence) + effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.codeText) + return ok(code) + } + + // More or less accents: mark as data. + token.type = micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.codeTextData + return data(code) + } +} + + +/***/ }), + +/***/ "../node_modules/micromark-core-commonmark/dev/lib/content.js": +/*!********************************************************************!*\ + !*** ../node_modules/micromark-core-commonmark/dev/lib/content.js ***! + \********************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ content: () => (/* binding */ content) +/* harmony export */ }); +/* harmony import */ var micromark_factory_space__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! micromark-factory-space */ "../node_modules/micromark-factory-space/dev/index.js"); +/* harmony import */ var micromark_util_character__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! micromark-util-character */ "../node_modules/micromark-util-character/dev/index.js"); +/* harmony import */ var micromark_util_subtokenize__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! micromark-util-subtokenize */ "../node_modules/micromark-util-subtokenize/dev/index.js"); +/* harmony import */ var micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! micromark-util-symbol/codes.js */ "../node_modules/micromark-util-symbol/codes.js"); +/* harmony import */ var micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! micromark-util-symbol/constants.js */ "../node_modules/micromark-util-symbol/constants.js"); +/* harmony import */ var micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! micromark-util-symbol/types.js */ "../node_modules/micromark-util-symbol/types.js"); +/* harmony import */ var uvu_assert__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! uvu/assert */ "../node_modules/uvu/assert/index.mjs"); +/** + * @typedef {import('micromark-util-types').Construct} Construct + * @typedef {import('micromark-util-types').Resolver} Resolver + * @typedef {import('micromark-util-types').State} State + * @typedef {import('micromark-util-types').Token} Token + * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext + * @typedef {import('micromark-util-types').Tokenizer} Tokenizer + */ + + + + + + + + + +/** + * No name because it must not be turned off. + * @type {Construct} + */ +const content = {tokenize: tokenizeContent, resolve: resolveContent} + +/** @type {Construct} */ +const continuationConstruct = {tokenize: tokenizeContinuation, partial: true} + +/** + * Content is transparent: it’s parsed right now. That way, definitions are also + * parsed right now: before text in paragraphs (specifically, media) are parsed. + * + * @type {Resolver} + */ +function resolveContent(events) { + ;(0,micromark_util_subtokenize__WEBPACK_IMPORTED_MODULE_1__.subtokenize)(events) + return events +} + +/** + * @this {TokenizeContext} + * @type {Tokenizer} + */ +function tokenizeContent(effects, ok) { + /** @type {Token | undefined} */ + let previous + + return chunkStart + + /** + * Before a content chunk. + * + * ```markdown + * > | abc + * ^ + * ``` + * + * @type {State} + */ + function chunkStart(code) { + ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)( + code !== micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.eof && !(0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.markdownLineEnding)(code), + 'expected no eof or eol' + ) + + effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_4__.types.content) + previous = effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_4__.types.chunkContent, { + contentType: micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_5__.constants.contentTypeContent + }) + return chunkInside(code) + } + + /** + * In a content chunk. + * + * ```markdown + * > | abc + * ^^^ + * ``` + * + * @type {State} + */ + function chunkInside(code) { + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.eof) { + return contentEnd(code) + } + + // To do: in `markdown-rs`, each line is parsed on its own, and everything + // is stitched together resolving. + if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.markdownLineEnding)(code)) { + return effects.check( + continuationConstruct, + contentContinue, + contentEnd + )(code) + } + + // Data. + effects.consume(code) + return chunkInside + } + + /** + * + * + * @type {State} + */ + function contentEnd(code) { + effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_4__.types.chunkContent) + effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_4__.types.content) + return ok(code) + } + + /** + * + * + * @type {State} + */ + function contentContinue(code) { + (0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.markdownLineEnding)(code), 'expected eol') + effects.consume(code) + effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_4__.types.chunkContent) + ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(previous, 'expected previous token') + previous.next = effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_4__.types.chunkContent, { + contentType: micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_5__.constants.contentTypeContent, + previous + }) + previous = previous.next + return chunkInside + } +} + +/** + * @this {TokenizeContext} + * @type {Tokenizer} + */ +function tokenizeContinuation(effects, ok, nok) { + const self = this + + return startLookahead + + /** + * + * + * @type {State} + */ + function startLookahead(code) { + ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.markdownLineEnding)(code), 'expected a line ending') + effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_4__.types.chunkContent) + effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_4__.types.lineEnding) + effects.consume(code) + effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_4__.types.lineEnding) + return (0,micromark_factory_space__WEBPACK_IMPORTED_MODULE_6__.factorySpace)(effects, prefixed, micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_4__.types.linePrefix) + } + + /** + * + * + * @type {State} + */ + function prefixed(code) { + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.eof || (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.markdownLineEnding)(code)) { + return nok(code) + } + + // Always populated by defaults. + (0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)( + self.parser.constructs.disable.null, + 'expected `disable.null` to be populated' + ) + + const tail = self.events[self.events.length - 1] + + if ( + !self.parser.constructs.disable.null.includes('codeIndented') && + tail && + tail[1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_4__.types.linePrefix && + tail[2].sliceSerialize(tail[1], true).length >= micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_5__.constants.tabSize + ) { + return ok(code) + } + + return effects.interrupt(self.parser.constructs.flow, nok, ok)(code) + } +} + + +/***/ }), + +/***/ "../node_modules/micromark-core-commonmark/dev/lib/definition.js": +/*!***********************************************************************!*\ + !*** ../node_modules/micromark-core-commonmark/dev/lib/definition.js ***! + \***********************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ definition: () => (/* binding */ definition) +/* harmony export */ }); +/* harmony import */ var micromark_factory_destination__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! micromark-factory-destination */ "../node_modules/micromark-factory-destination/dev/index.js"); +/* harmony import */ var micromark_factory_label__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! micromark-factory-label */ "../node_modules/micromark-factory-label/dev/index.js"); +/* harmony import */ var micromark_factory_space__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! micromark-factory-space */ "../node_modules/micromark-factory-space/dev/index.js"); +/* harmony import */ var micromark_factory_title__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! micromark-factory-title */ "../node_modules/micromark-factory-title/dev/index.js"); +/* harmony import */ var micromark_factory_whitespace__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! micromark-factory-whitespace */ "../node_modules/micromark-factory-whitespace/dev/index.js"); +/* harmony import */ var micromark_util_character__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! micromark-util-character */ "../node_modules/micromark-util-character/dev/index.js"); +/* harmony import */ var micromark_util_normalize_identifier__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! micromark-util-normalize-identifier */ "../node_modules/micromark-util-normalize-identifier/dev/index.js"); +/* harmony import */ var micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! micromark-util-symbol/codes.js */ "../node_modules/micromark-util-symbol/codes.js"); +/* harmony import */ var micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! micromark-util-symbol/types.js */ "../node_modules/micromark-util-symbol/types.js"); +/* harmony import */ var uvu_assert__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! uvu/assert */ "../node_modules/uvu/assert/index.mjs"); +/** + * @typedef {import('micromark-util-types').Construct} Construct + * @typedef {import('micromark-util-types').State} State + * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext + * @typedef {import('micromark-util-types').Tokenizer} Tokenizer + */ + + + + + + + + + + + + +/** @type {Construct} */ +const definition = {name: 'definition', tokenize: tokenizeDefinition} + +/** @type {Construct} */ +const titleBefore = {tokenize: tokenizeTitleBefore, partial: true} + +/** + * @this {TokenizeContext} + * @type {Tokenizer} + */ +function tokenizeDefinition(effects, ok, nok) { + const self = this + /** @type {string} */ + let identifier + + return start + + /** + * At start of a definition. + * + * ```markdown + * > | [a]: b "c" + * ^ + * ``` + * + * @type {State} + */ + function start(code) { + // Do not interrupt paragraphs (but do follow definitions). + // To do: do `interrupt` the way `markdown-rs` does. + // To do: parse whitespace the way `markdown-rs` does. + effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.definition) + return before(code) + } + + /** + * After optional whitespace, at `[`. + * + * ```markdown + * > | [a]: b "c" + * ^ + * ``` + * + * @type {State} + */ + function before(code) { + // To do: parse whitespace the way `markdown-rs` does. + (0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.leftSquareBracket, 'expected `[`') + return micromark_factory_label__WEBPACK_IMPORTED_MODULE_3__.factoryLabel.call( + self, + effects, + labelAfter, + // Note: we don’t need to reset the way `markdown-rs` does. + nok, + micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.definitionLabel, + micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.definitionLabelMarker, + micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.definitionLabelString + )(code) + } + + /** + * After label. + * + * ```markdown + * > | [a]: b "c" + * ^ + * ``` + * + * @type {State} + */ + function labelAfter(code) { + identifier = (0,micromark_util_normalize_identifier__WEBPACK_IMPORTED_MODULE_4__.normalizeIdentifier)( + self.sliceSerialize(self.events[self.events.length - 1][1]).slice(1, -1) + ) + + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.colon) { + effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.definitionMarker) + effects.consume(code) + effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.definitionMarker) + return markerAfter + } + + return nok(code) + } + + /** + * After marker. + * + * ```markdown + * > | [a]: b "c" + * ^ + * ``` + * + * @type {State} + */ + function markerAfter(code) { + // Note: whitespace is optional. + return (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_5__.markdownLineEndingOrSpace)(code) + ? (0,micromark_factory_whitespace__WEBPACK_IMPORTED_MODULE_6__.factoryWhitespace)(effects, destinationBefore)(code) + : destinationBefore(code) + } + + /** + * Before destination. + * + * ```markdown + * > | [a]: b "c" + * ^ + * ``` + * + * @type {State} + */ + function destinationBefore(code) { + return (0,micromark_factory_destination__WEBPACK_IMPORTED_MODULE_7__.factoryDestination)( + effects, + destinationAfter, + // Note: we don’t need to reset the way `markdown-rs` does. + nok, + micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.definitionDestination, + micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.definitionDestinationLiteral, + micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.definitionDestinationLiteralMarker, + micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.definitionDestinationRaw, + micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.definitionDestinationString + )(code) + } + + /** + * After destination. + * + * ```markdown + * > | [a]: b "c" + * ^ + * ``` + * + * @type {State} + */ + function destinationAfter(code) { + return effects.attempt(titleBefore, after, after)(code) + } + + /** + * After definition. + * + * ```markdown + * > | [a]: b + * ^ + * > | [a]: b "c" + * ^ + * ``` + * + * @type {State} + */ + function after(code) { + return (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_5__.markdownSpace)(code) + ? (0,micromark_factory_space__WEBPACK_IMPORTED_MODULE_8__.factorySpace)(effects, afterWhitespace, micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.whitespace)(code) + : afterWhitespace(code) + } + + /** + * After definition, after optional whitespace. + * + * ```markdown + * > | [a]: b + * ^ + * > | [a]: b "c" + * ^ + * ``` + * + * @type {State} + */ + function afterWhitespace(code) { + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.eof || (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_5__.markdownLineEnding)(code)) { + effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.definition) + + // Note: we don’t care about uniqueness. + // It’s likely that that doesn’t happen very frequently. + // It is more likely that it wastes precious time. + self.parser.defined.push(identifier) + + // To do: `markdown-rs` interrupt. + // // You’d be interrupting. + // tokenizer.interrupt = true + return ok(code) + } + + return nok(code) + } +} + +/** + * @this {TokenizeContext} + * @type {Tokenizer} + */ +function tokenizeTitleBefore(effects, ok, nok) { + return titleBefore + + /** + * After destination, at whitespace. + * + * ```markdown + * > | [a]: b + * ^ + * > | [a]: b "c" + * ^ + * ``` + * + * @type {State} + */ + function titleBefore(code) { + return (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_5__.markdownLineEndingOrSpace)(code) + ? (0,micromark_factory_whitespace__WEBPACK_IMPORTED_MODULE_6__.factoryWhitespace)(effects, beforeMarker)(code) + : nok(code) + } + + /** + * At title. + * + * ```markdown + * | [a]: b + * > | "c" + * ^ + * ``` + * + * @type {State} + */ + function beforeMarker(code) { + return (0,micromark_factory_title__WEBPACK_IMPORTED_MODULE_9__.factoryTitle)( + effects, + titleAfter, + nok, + micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.definitionTitle, + micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.definitionTitleMarker, + micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.definitionTitleString + )(code) + } + + /** + * After title. + * + * ```markdown + * > | [a]: b "c" + * ^ + * ``` + * + * @type {State} + */ + function titleAfter(code) { + return (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_5__.markdownSpace)(code) + ? (0,micromark_factory_space__WEBPACK_IMPORTED_MODULE_8__.factorySpace)( + effects, + titleAfterOptionalWhitespace, + micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.whitespace + )(code) + : titleAfterOptionalWhitespace(code) + } + + /** + * After title, after optional whitespace. + * + * ```markdown + * > | [a]: b "c" + * ^ + * ``` + * + * @type {State} + */ + function titleAfterOptionalWhitespace(code) { + return code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.eof || (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_5__.markdownLineEnding)(code) ? ok(code) : nok(code) + } +} + + +/***/ }), + +/***/ "../node_modules/micromark-core-commonmark/dev/lib/hard-break-escape.js": +/*!******************************************************************************!*\ + !*** ../node_modules/micromark-core-commonmark/dev/lib/hard-break-escape.js ***! + \******************************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ hardBreakEscape: () => (/* binding */ hardBreakEscape) +/* harmony export */ }); +/* harmony import */ var micromark_util_character__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! micromark-util-character */ "../node_modules/micromark-util-character/dev/index.js"); +/* harmony import */ var micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! micromark-util-symbol/codes.js */ "../node_modules/micromark-util-symbol/codes.js"); +/* harmony import */ var micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! micromark-util-symbol/types.js */ "../node_modules/micromark-util-symbol/types.js"); +/* harmony import */ var uvu_assert__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! uvu/assert */ "../node_modules/uvu/assert/index.mjs"); +/** + * @typedef {import('micromark-util-types').Construct} Construct + * @typedef {import('micromark-util-types').State} State + * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext + * @typedef {import('micromark-util-types').Tokenizer} Tokenizer + */ + + + + + + +/** @type {Construct} */ +const hardBreakEscape = { + name: 'hardBreakEscape', + tokenize: tokenizeHardBreakEscape +} + +/** + * @this {TokenizeContext} + * @type {Tokenizer} + */ +function tokenizeHardBreakEscape(effects, ok, nok) { + return start + + /** + * Start of a hard break (escape). + * + * ```markdown + * > | a\ + * ^ + * | b + * ``` + * + * @type {State} + */ + function start(code) { + ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.backslash, 'expected `\\`') + effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.hardBreakEscape) + effects.consume(code) + return after + } + + /** + * After `\`, at eol. + * + * ```markdown + * > | a\ + * ^ + * | b + * ``` + * + * @type {State} + */ + function after(code) { + if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.markdownLineEnding)(code)) { + effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.hardBreakEscape) + return ok(code) + } + + return nok(code) + } +} + + +/***/ }), + +/***/ "../node_modules/micromark-core-commonmark/dev/lib/heading-atx.js": +/*!************************************************************************!*\ + !*** ../node_modules/micromark-core-commonmark/dev/lib/heading-atx.js ***! + \************************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ headingAtx: () => (/* binding */ headingAtx) +/* harmony export */ }); +/* harmony import */ var micromark_factory_space__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! micromark-factory-space */ "../node_modules/micromark-factory-space/dev/index.js"); +/* harmony import */ var micromark_util_character__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! micromark-util-character */ "../node_modules/micromark-util-character/dev/index.js"); +/* harmony import */ var micromark_util_chunked__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! micromark-util-chunked */ "../node_modules/micromark-util-chunked/dev/index.js"); +/* harmony import */ var micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! micromark-util-symbol/codes.js */ "../node_modules/micromark-util-symbol/codes.js"); +/* harmony import */ var micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! micromark-util-symbol/constants.js */ "../node_modules/micromark-util-symbol/constants.js"); +/* harmony import */ var micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! micromark-util-symbol/types.js */ "../node_modules/micromark-util-symbol/types.js"); +/* harmony import */ var uvu_assert__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! uvu/assert */ "../node_modules/uvu/assert/index.mjs"); +/** + * @typedef {import('micromark-util-types').Construct} Construct + * @typedef {import('micromark-util-types').Resolver} Resolver + * @typedef {import('micromark-util-types').State} State + * @typedef {import('micromark-util-types').Token} Token + * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext + * @typedef {import('micromark-util-types').Tokenizer} Tokenizer + */ + + + + + + + + + +/** @type {Construct} */ +const headingAtx = { + name: 'headingAtx', + tokenize: tokenizeHeadingAtx, + resolve: resolveHeadingAtx +} + +/** @type {Resolver} */ +function resolveHeadingAtx(events, context) { + let contentEnd = events.length - 2 + let contentStart = 3 + /** @type {Token} */ + let content + /** @type {Token} */ + let text + + // Prefix whitespace, part of the opening. + if (events[contentStart][1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.whitespace) { + contentStart += 2 + } + + // Suffix whitespace, part of the closing. + if ( + contentEnd - 2 > contentStart && + events[contentEnd][1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.whitespace + ) { + contentEnd -= 2 + } + + if ( + events[contentEnd][1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.atxHeadingSequence && + (contentStart === contentEnd - 1 || + (contentEnd - 4 > contentStart && + events[contentEnd - 2][1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.whitespace)) + ) { + contentEnd -= contentStart + 1 === contentEnd ? 2 : 4 + } + + if (contentEnd > contentStart) { + content = { + type: micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.atxHeadingText, + start: events[contentStart][1].start, + end: events[contentEnd][1].end + } + text = { + type: micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.chunkText, + start: events[contentStart][1].start, + end: events[contentEnd][1].end, + contentType: micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_2__.constants.contentTypeText + } + + ;(0,micromark_util_chunked__WEBPACK_IMPORTED_MODULE_3__.splice)(events, contentStart, contentEnd - contentStart + 1, [ + ['enter', content, context], + ['enter', text, context], + ['exit', text, context], + ['exit', content, context] + ]) + } + + return events +} + +/** + * @this {TokenizeContext} + * @type {Tokenizer} + */ +function tokenizeHeadingAtx(effects, ok, nok) { + let size = 0 + + return start + + /** + * Start of a heading (atx). + * + * ```markdown + * > | ## aa + * ^ + * ``` + * + * @type {State} + */ + function start(code) { + // To do: parse indent like `markdown-rs`. + effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.atxHeading) + return before(code) + } + + /** + * After optional whitespace, at `#`. + * + * ```markdown + * > | ## aa + * ^ + * ``` + * + * @type {State} + */ + function before(code) { + (0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_4__.codes.numberSign, 'expected `#`') + effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.atxHeadingSequence) + return sequenceOpen(code) + } + + /** + * In opening sequence. + * + * ```markdown + * > | ## aa + * ^ + * ``` + * + * @type {State} + */ + function sequenceOpen(code) { + if ( + code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_4__.codes.numberSign && + size++ < micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_2__.constants.atxHeadingOpeningFenceSizeMax + ) { + effects.consume(code) + return sequenceOpen + } + + // Always at least one `#`. + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_4__.codes.eof || (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_5__.markdownLineEndingOrSpace)(code)) { + effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.atxHeadingSequence) + return atBreak(code) + } + + return nok(code) + } + + /** + * After something, before something else. + * + * ```markdown + * > | ## aa + * ^ + * ``` + * + * @type {State} + */ + function atBreak(code) { + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_4__.codes.numberSign) { + effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.atxHeadingSequence) + return sequenceFurther(code) + } + + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_4__.codes.eof || (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_5__.markdownLineEnding)(code)) { + effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.atxHeading) + // To do: interrupt like `markdown-rs`. + // // Feel free to interrupt. + // tokenizer.interrupt = false + return ok(code) + } + + if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_5__.markdownSpace)(code)) { + return (0,micromark_factory_space__WEBPACK_IMPORTED_MODULE_6__.factorySpace)(effects, atBreak, micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.whitespace)(code) + } + + // To do: generate `data` tokens, add the `text` token later. + // Needs edit map, see: `markdown.rs`. + effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.atxHeadingText) + return data(code) + } + + /** + * In further sequence (after whitespace). + * + * Could be normal “visible” hashes in the heading or a final sequence. + * + * ```markdown + * > | ## aa ## + * ^ + * ``` + * + * @type {State} + */ + function sequenceFurther(code) { + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_4__.codes.numberSign) { + effects.consume(code) + return sequenceFurther + } + + effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.atxHeadingSequence) + return atBreak(code) + } + + /** + * In text. + * + * ```markdown + * > | ## aa + * ^ + * ``` + * + * @type {State} + */ + function data(code) { + if ( + code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_4__.codes.eof || + code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_4__.codes.numberSign || + (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_5__.markdownLineEndingOrSpace)(code) + ) { + effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.atxHeadingText) + return atBreak(code) + } + + effects.consume(code) + return data + } +} + + +/***/ }), + +/***/ "../node_modules/micromark-core-commonmark/dev/lib/html-flow.js": +/*!**********************************************************************!*\ + !*** ../node_modules/micromark-core-commonmark/dev/lib/html-flow.js ***! + \**********************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ htmlFlow: () => (/* binding */ htmlFlow) +/* harmony export */ }); +/* harmony import */ var micromark_util_character__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! micromark-util-character */ "../node_modules/micromark-util-character/dev/index.js"); +/* harmony import */ var micromark_util_html_tag_name__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! micromark-util-html-tag-name */ "../node_modules/micromark-util-html-tag-name/index.js"); +/* harmony import */ var micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! micromark-util-symbol/codes.js */ "../node_modules/micromark-util-symbol/codes.js"); +/* harmony import */ var micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! micromark-util-symbol/constants.js */ "../node_modules/micromark-util-symbol/constants.js"); +/* harmony import */ var micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! micromark-util-symbol/types.js */ "../node_modules/micromark-util-symbol/types.js"); +/* harmony import */ var uvu_assert__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! uvu/assert */ "../node_modules/uvu/assert/index.mjs"); +/* harmony import */ var _blank_line_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./blank-line.js */ "../node_modules/micromark-core-commonmark/dev/lib/blank-line.js"); +/** + * @typedef {import('micromark-util-types').Code} Code + * @typedef {import('micromark-util-types').Construct} Construct + * @typedef {import('micromark-util-types').Resolver} Resolver + * @typedef {import('micromark-util-types').State} State + * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext + * @typedef {import('micromark-util-types').Tokenizer} Tokenizer + */ + + + + + + + + + +/** @type {Construct} */ +const htmlFlow = { + name: 'htmlFlow', + tokenize: tokenizeHtmlFlow, + resolveTo: resolveToHtmlFlow, + concrete: true +} + +/** @type {Construct} */ +const blankLineBefore = {tokenize: tokenizeBlankLineBefore, partial: true} +const nonLazyContinuationStart = { + tokenize: tokenizeNonLazyContinuationStart, + partial: true +} + +/** @type {Resolver} */ +function resolveToHtmlFlow(events) { + let index = events.length + + while (index--) { + if ( + events[index][0] === 'enter' && + events[index][1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.htmlFlow + ) { + break + } + } + + if (index > 1 && events[index - 2][1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.linePrefix) { + // Add the prefix start to the HTML token. + events[index][1].start = events[index - 2][1].start + // Add the prefix start to the HTML line token. + events[index + 1][1].start = events[index - 2][1].start + // Remove the line prefix. + events.splice(index - 2, 2) + } + + return events +} + +/** + * @this {TokenizeContext} + * @type {Tokenizer} + */ +function tokenizeHtmlFlow(effects, ok, nok) { + const self = this + /** @type {number} */ + let marker + /** @type {boolean} */ + let closingTag + /** @type {string} */ + let buffer + /** @type {number} */ + let index + /** @type {Code} */ + let markerB + + return start + + /** + * Start of HTML (flow). + * + * ```markdown + * > | + * ^ + * ``` + * + * @type {State} + */ + function start(code) { + // To do: parse indent like `markdown-rs`. + return before(code) + } + + /** + * At `<`, after optional whitespace. + * + * ```markdown + * > | + * ^ + * ``` + * + * @type {State} + */ + function before(code) { + (0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.lessThan, 'expected `<`') + effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.htmlFlow) + effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.htmlFlowData) + effects.consume(code) + return open + } + + /** + * After `<`, at tag name or other stuff. + * + * ```markdown + * > | + * ^ + * > | + * ^ + * > | + * ^ + * ``` + * + * @type {State} + */ + function open(code) { + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.exclamationMark) { + effects.consume(code) + return declarationOpen + } + + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.slash) { + effects.consume(code) + closingTag = true + return tagCloseStart + } + + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.questionMark) { + effects.consume(code) + marker = micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_3__.constants.htmlInstruction + // To do: + // tokenizer.concrete = true + // To do: use `markdown-rs` style interrupt. + // While we’re in an instruction instead of a declaration, we’re on a `?` + // right now, so we do need to search for `>`, similar to declarations. + return self.interrupt ? ok : continuationDeclarationInside + } + + // ASCII alphabetical. + if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_4__.asciiAlpha)(code)) { + effects.consume(code) + // @ts-expect-error: not null. + buffer = String.fromCharCode(code) + return tagName + } + + return nok(code) + } + + /** + * After ` | + * ^ + * > | + * ^ + * > | &<]]> + * ^ + * ``` + * + * @type {State} + */ + function declarationOpen(code) { + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.dash) { + effects.consume(code) + marker = micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_3__.constants.htmlComment + return commentOpenInside + } + + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.leftSquareBracket) { + effects.consume(code) + marker = micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_3__.constants.htmlCdata + index = 0 + return cdataOpenInside + } + + // ASCII alphabetical. + if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_4__.asciiAlpha)(code)) { + effects.consume(code) + marker = micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_3__.constants.htmlDeclaration + // // Do not form containers. + // tokenizer.concrete = true + return self.interrupt ? ok : continuationDeclarationInside + } + + return nok(code) + } + + /** + * After ` | + * ^ + * ``` + * + * @type {State} + */ + function commentOpenInside(code) { + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.dash) { + effects.consume(code) + // // Do not form containers. + // tokenizer.concrete = true + return self.interrupt ? ok : continuationDeclarationInside + } + + return nok(code) + } + + /** + * After ` | &<]]> + * ^^^^^^ + * ``` + * + * @type {State} + */ + function cdataOpenInside(code) { + const value = micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_3__.constants.cdataOpeningString + + if (code === value.charCodeAt(index++)) { + effects.consume(code) + + if (index === value.length) { + // // Do not form containers. + // tokenizer.concrete = true + return self.interrupt ? ok : continuation + } + + return cdataOpenInside + } + + return nok(code) + } + + /** + * After ` | + * ^ + * ``` + * + * @type {State} + */ + function tagCloseStart(code) { + if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_4__.asciiAlpha)(code)) { + effects.consume(code) + // @ts-expect-error: not null. + buffer = String.fromCharCode(code) + return tagName + } + + return nok(code) + } + + /** + * In tag name. + * + * ```markdown + * > | + * ^^ + * > | + * ^^ + * ``` + * + * @type {State} + */ + function tagName(code) { + if ( + code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.eof || + code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.slash || + code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.greaterThan || + (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_4__.markdownLineEndingOrSpace)(code) + ) { + const slash = code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.slash + const name = buffer.toLowerCase() + + if (!slash && !closingTag && micromark_util_html_tag_name__WEBPACK_IMPORTED_MODULE_5__.htmlRawNames.includes(name)) { + marker = micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_3__.constants.htmlRaw + // // Do not form containers. + // tokenizer.concrete = true + return self.interrupt ? ok(code) : continuation(code) + } + + if (micromark_util_html_tag_name__WEBPACK_IMPORTED_MODULE_5__.htmlBlockNames.includes(buffer.toLowerCase())) { + marker = micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_3__.constants.htmlBasic + + if (slash) { + effects.consume(code) + return basicSelfClosing + } + + // // Do not form containers. + // tokenizer.concrete = true + return self.interrupt ? ok(code) : continuation(code) + } + + marker = micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_3__.constants.htmlComplete + // Do not support complete HTML when interrupting. + return self.interrupt && !self.parser.lazy[self.now().line] + ? nok(code) + : closingTag + ? completeClosingTagAfter(code) + : completeAttributeNameBefore(code) + } + + // ASCII alphanumerical and `-`. + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.dash || (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_4__.asciiAlphanumeric)(code)) { + effects.consume(code) + buffer += String.fromCharCode(code) + return tagName + } + + return nok(code) + } + + /** + * After closing slash of a basic tag name. + * + * ```markdown + * > |
    + * ^ + * ``` + * + * @type {State} + */ + function basicSelfClosing(code) { + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.greaterThan) { + effects.consume(code) + // // Do not form containers. + // tokenizer.concrete = true + return self.interrupt ? ok : continuation + } + + return nok(code) + } + + /** + * After closing slash of a complete tag name. + * + * ```markdown + * > | + * ^ + * ``` + * + * @type {State} + */ + function completeClosingTagAfter(code) { + if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_4__.markdownSpace)(code)) { + effects.consume(code) + return completeClosingTagAfter + } + + return completeEnd(code) + } + + /** + * At an attribute name. + * + * At first, this state is used after a complete tag name, after whitespace, + * where it expects optional attributes or the end of the tag. + * It is also reused after attributes, when expecting more optional + * attributes. + * + * ```markdown + * > | + * ^ + * > | + * ^ + * > | + * ^ + * > | + * ^ + * > | + * ^ + * ``` + * + * @type {State} + */ + function completeAttributeNameBefore(code) { + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.slash) { + effects.consume(code) + return completeEnd + } + + // ASCII alphanumerical and `:` and `_`. + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.colon || code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.underscore || (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_4__.asciiAlpha)(code)) { + effects.consume(code) + return completeAttributeName + } + + if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_4__.markdownSpace)(code)) { + effects.consume(code) + return completeAttributeNameBefore + } + + return completeEnd(code) + } + + /** + * In attribute name. + * + * ```markdown + * > | + * ^ + * > | + * ^ + * > | + * ^ + * ``` + * + * @type {State} + */ + function completeAttributeName(code) { + // ASCII alphanumerical and `-`, `.`, `:`, and `_`. + if ( + code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.dash || + code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.dot || + code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.colon || + code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.underscore || + (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_4__.asciiAlphanumeric)(code) + ) { + effects.consume(code) + return completeAttributeName + } + + return completeAttributeNameAfter(code) + } + + /** + * After attribute name, at an optional initializer, the end of the tag, or + * whitespace. + * + * ```markdown + * > | + * ^ + * > | + * ^ + * ``` + * + * @type {State} + */ + function completeAttributeNameAfter(code) { + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.equalsTo) { + effects.consume(code) + return completeAttributeValueBefore + } + + if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_4__.markdownSpace)(code)) { + effects.consume(code) + return completeAttributeNameAfter + } + + return completeAttributeNameBefore(code) + } + + /** + * Before unquoted, double quoted, or single quoted attribute value, allowing + * whitespace. + * + * ```markdown + * > | + * ^ + * > | + * ^ + * ``` + * + * @type {State} + */ + function completeAttributeValueBefore(code) { + if ( + code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.eof || + code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.lessThan || + code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.equalsTo || + code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.greaterThan || + code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.graveAccent + ) { + return nok(code) + } + + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.quotationMark || code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.apostrophe) { + effects.consume(code) + markerB = code + return completeAttributeValueQuoted + } + + if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_4__.markdownSpace)(code)) { + effects.consume(code) + return completeAttributeValueBefore + } + + return completeAttributeValueUnquoted(code) + } + + /** + * In double or single quoted attribute value. + * + * ```markdown + * > | + * ^ + * > | + * ^ + * ``` + * + * @type {State} + */ + function completeAttributeValueQuoted(code) { + if (code === markerB) { + effects.consume(code) + markerB = null + return completeAttributeValueQuotedAfter + } + + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.eof || (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_4__.markdownLineEnding)(code)) { + return nok(code) + } + + effects.consume(code) + return completeAttributeValueQuoted + } + + /** + * In unquoted attribute value. + * + * ```markdown + * > | + * ^ + * ``` + * + * @type {State} + */ + function completeAttributeValueUnquoted(code) { + if ( + code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.eof || + code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.quotationMark || + code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.apostrophe || + code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.slash || + code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.lessThan || + code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.equalsTo || + code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.greaterThan || + code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.graveAccent || + (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_4__.markdownLineEndingOrSpace)(code) + ) { + return completeAttributeNameAfter(code) + } + + effects.consume(code) + return completeAttributeValueUnquoted + } + + /** + * After double or single quoted attribute value, before whitespace or the + * end of the tag. + * + * ```markdown + * > | + * ^ + * ``` + * + * @type {State} + */ + function completeAttributeValueQuotedAfter(code) { + if ( + code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.slash || + code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.greaterThan || + (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_4__.markdownSpace)(code) + ) { + return completeAttributeNameBefore(code) + } + + return nok(code) + } + + /** + * In certain circumstances of a complete tag where only an `>` is allowed. + * + * ```markdown + * > | + * ^ + * ``` + * + * @type {State} + */ + function completeEnd(code) { + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.greaterThan) { + effects.consume(code) + return completeAfter + } + + return nok(code) + } + + /** + * After `>` in a complete tag. + * + * ```markdown + * > | + * ^ + * ``` + * + * @type {State} + */ + function completeAfter(code) { + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.eof || (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_4__.markdownLineEnding)(code)) { + // // Do not form containers. + // tokenizer.concrete = true + return continuation(code) + } + + if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_4__.markdownSpace)(code)) { + effects.consume(code) + return completeAfter + } + + return nok(code) + } + + /** + * In continuation of any HTML kind. + * + * ```markdown + * > | + * ^ + * ``` + * + * @type {State} + */ + function continuation(code) { + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.dash && marker === micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_3__.constants.htmlComment) { + effects.consume(code) + return continuationCommentInside + } + + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.lessThan && marker === micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_3__.constants.htmlRaw) { + effects.consume(code) + return continuationRawTagOpen + } + + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.greaterThan && marker === micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_3__.constants.htmlDeclaration) { + effects.consume(code) + return continuationClose + } + + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.questionMark && marker === micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_3__.constants.htmlInstruction) { + effects.consume(code) + return continuationDeclarationInside + } + + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.rightSquareBracket && marker === micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_3__.constants.htmlCdata) { + effects.consume(code) + return continuationCdataInside + } + + if ( + (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_4__.markdownLineEnding)(code) && + (marker === micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_3__.constants.htmlBasic || marker === micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_3__.constants.htmlComplete) + ) { + effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.htmlFlowData) + return effects.check( + blankLineBefore, + continuationAfter, + continuationStart + )(code) + } + + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.eof || (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_4__.markdownLineEnding)(code)) { + effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.htmlFlowData) + return continuationStart(code) + } + + effects.consume(code) + return continuation + } + + /** + * In continuation, at eol. + * + * ```markdown + * > | + * ^ + * | asd + * ``` + * + * @type {State} + */ + function continuationStart(code) { + return effects.check( + nonLazyContinuationStart, + continuationStartNonLazy, + continuationAfter + )(code) + } + + /** + * In continuation, at eol, before non-lazy content. + * + * ```markdown + * > | + * ^ + * | asd + * ``` + * + * @type {State} + */ + function continuationStartNonLazy(code) { + (0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_4__.markdownLineEnding)(code)) + effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.lineEnding) + effects.consume(code) + effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.lineEnding) + return continuationBefore + } + + /** + * In continuation, before non-lazy content. + * + * ```markdown + * | + * > | asd + * ^ + * ``` + * + * @type {State} + */ + function continuationBefore(code) { + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.eof || (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_4__.markdownLineEnding)(code)) { + return continuationStart(code) + } + + effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.htmlFlowData) + return continuation(code) + } + + /** + * In comment continuation, after one `-`, expecting another. + * + * ```markdown + * > | + * ^ + * ``` + * + * @type {State} + */ + function continuationCommentInside(code) { + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.dash) { + effects.consume(code) + return continuationDeclarationInside + } + + return continuation(code) + } + + /** + * In raw continuation, after `<`, at `/`. + * + * ```markdown + * > | + * ^ + * ``` + * + * @type {State} + */ + function continuationRawTagOpen(code) { + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.slash) { + effects.consume(code) + buffer = '' + return continuationRawEndTag + } + + return continuation(code) + } + + /** + * In raw continuation, after ` | + * ^^^^^^ + * ``` + * + * @type {State} + */ + function continuationRawEndTag(code) { + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.greaterThan) { + const name = buffer.toLowerCase() + + if (micromark_util_html_tag_name__WEBPACK_IMPORTED_MODULE_5__.htmlRawNames.includes(name)) { + effects.consume(code) + return continuationClose + } + + return continuation(code) + } + + if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_4__.asciiAlpha)(code) && buffer.length < micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_3__.constants.htmlRawSizeMax) { + effects.consume(code) + // @ts-expect-error: not null. + buffer += String.fromCharCode(code) + return continuationRawEndTag + } + + return continuation(code) + } + + /** + * In cdata continuation, after `]`, expecting `]>`. + * + * ```markdown + * > | &<]]> + * ^ + * ``` + * + * @type {State} + */ + function continuationCdataInside(code) { + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.rightSquareBracket) { + effects.consume(code) + return continuationDeclarationInside + } + + return continuation(code) + } + + /** + * In declaration or instruction continuation, at `>`. + * + * ```markdown + * > | + * ^ + * > | + * ^ + * > | + * ^ + * > | + * ^ + * > | &<]]> + * ^ + * ``` + * + * @type {State} + */ + function continuationDeclarationInside(code) { + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.greaterThan) { + effects.consume(code) + return continuationClose + } + + // More dashes. + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.dash && marker === micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_3__.constants.htmlComment) { + effects.consume(code) + return continuationDeclarationInside + } + + return continuation(code) + } + + /** + * In closed continuation: everything we get until the eol/eof is part of it. + * + * ```markdown + * > | + * ^ + * ``` + * + * @type {State} + */ + function continuationClose(code) { + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.eof || (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_4__.markdownLineEnding)(code)) { + effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.htmlFlowData) + return continuationAfter(code) + } + + effects.consume(code) + return continuationClose + } + + /** + * Done. + * + * ```markdown + * > | + * ^ + * ``` + * + * @type {State} + */ + function continuationAfter(code) { + effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.htmlFlow) + // // Feel free to interrupt. + // tokenizer.interrupt = false + // // No longer concrete. + // tokenizer.concrete = false + return ok(code) + } +} + +/** + * @this {TokenizeContext} + * @type {Tokenizer} + */ +function tokenizeNonLazyContinuationStart(effects, ok, nok) { + const self = this + + return start + + /** + * At eol, before continuation. + * + * ```markdown + * > | * ```js + * ^ + * | b + * ``` + * + * @type {State} + */ + function start(code) { + if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_4__.markdownLineEnding)(code)) { + effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.lineEnding) + effects.consume(code) + effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.lineEnding) + return after + } + + return nok(code) + } + + /** + * A continuation. + * + * ```markdown + * | * ```js + * > | b + * ^ + * ``` + * + * @type {State} + */ + function after(code) { + return self.parser.lazy[self.now().line] ? nok(code) : ok(code) + } +} + +/** + * @this {TokenizeContext} + * @type {Tokenizer} + */ +function tokenizeBlankLineBefore(effects, ok, nok) { + return start + + /** + * Before eol, expecting blank line. + * + * ```markdown + * > |
    + * ^ + * | + * ``` + * + * @type {State} + */ + function start(code) { + ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_4__.markdownLineEnding)(code), 'expected a line ending') + effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.lineEnding) + effects.consume(code) + effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.lineEnding) + return effects.attempt(_blank_line_js__WEBPACK_IMPORTED_MODULE_6__.blankLine, ok, nok) + } +} + + +/***/ }), + +/***/ "../node_modules/micromark-core-commonmark/dev/lib/html-text.js": +/*!**********************************************************************!*\ + !*** ../node_modules/micromark-core-commonmark/dev/lib/html-text.js ***! + \**********************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ htmlText: () => (/* binding */ htmlText) +/* harmony export */ }); +/* harmony import */ var micromark_factory_space__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! micromark-factory-space */ "../node_modules/micromark-factory-space/dev/index.js"); +/* harmony import */ var micromark_util_character__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! micromark-util-character */ "../node_modules/micromark-util-character/dev/index.js"); +/* harmony import */ var micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! micromark-util-symbol/codes.js */ "../node_modules/micromark-util-symbol/codes.js"); +/* harmony import */ var micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! micromark-util-symbol/constants.js */ "../node_modules/micromark-util-symbol/constants.js"); +/* harmony import */ var micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! micromark-util-symbol/types.js */ "../node_modules/micromark-util-symbol/types.js"); +/* harmony import */ var uvu_assert__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! uvu/assert */ "../node_modules/uvu/assert/index.mjs"); +/** + * @typedef {import('micromark-util-types').Code} Code + * @typedef {import('micromark-util-types').Construct} Construct + * @typedef {import('micromark-util-types').State} State + * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext + * @typedef {import('micromark-util-types').Tokenizer} Tokenizer + */ + + + + + + + + +/** @type {Construct} */ +const htmlText = {name: 'htmlText', tokenize: tokenizeHtmlText} + +/** + * @this {TokenizeContext} + * @type {Tokenizer} + */ +function tokenizeHtmlText(effects, ok, nok) { + const self = this + /** @type {NonNullable | undefined} */ + let marker + /** @type {number} */ + let index + /** @type {State} */ + let returnState + + return start + + /** + * Start of HTML (text). + * + * ```markdown + * > | a c + * ^ + * ``` + * + * @type {State} + */ + function start(code) { + ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.lessThan, 'expected `<`') + effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.htmlText) + effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.htmlTextData) + effects.consume(code) + return open + } + + /** + * After `<`, at tag name or other stuff. + * + * ```markdown + * > | a c + * ^ + * > | a c + * ^ + * > | a c + * ^ + * ``` + * + * @type {State} + */ + function open(code) { + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.exclamationMark) { + effects.consume(code) + return declarationOpen + } + + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.slash) { + effects.consume(code) + return tagCloseStart + } + + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.questionMark) { + effects.consume(code) + return instruction + } + + // ASCII alphabetical. + if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.asciiAlpha)(code)) { + effects.consume(code) + return tagOpen + } + + return nok(code) + } + + /** + * After ` | a c + * ^ + * > | a c + * ^ + * > | a &<]]> c + * ^ + * ``` + * + * @type {State} + */ + function declarationOpen(code) { + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.dash) { + effects.consume(code) + return commentOpenInside + } + + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.leftSquareBracket) { + effects.consume(code) + index = 0 + return cdataOpenInside + } + + if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.asciiAlpha)(code)) { + effects.consume(code) + return declaration + } + + return nok(code) + } + + /** + * In a comment, after ` | a c + * ^ + * ``` + * + * @type {State} + */ + function commentOpenInside(code) { + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.dash) { + effects.consume(code) + return commentEnd + } + + return nok(code) + } + + /** + * In comment. + * + * ```markdown + * > | a c + * ^ + * ``` + * + * @type {State} + */ + function comment(code) { + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.eof) { + return nok(code) + } + + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.dash) { + effects.consume(code) + return commentClose + } + + if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.markdownLineEnding)(code)) { + returnState = comment + return lineEndingBefore(code) + } + + effects.consume(code) + return comment + } + + /** + * In comment, after `-`. + * + * ```markdown + * > | a c + * ^ + * ``` + * + * @type {State} + */ + function commentClose(code) { + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.dash) { + effects.consume(code) + return commentEnd + } + + return comment(code) + } + + /** + * In comment, after `--`. + * + * ```markdown + * > | a c + * ^ + * ``` + * + * @type {State} + */ + function commentEnd(code) { + return code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.greaterThan + ? end(code) + : code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.dash + ? commentClose(code) + : comment(code) + } + + /** + * After ` | a &<]]> b + * ^^^^^^ + * ``` + * + * @type {State} + */ + function cdataOpenInside(code) { + const value = micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_4__.constants.cdataOpeningString + + if (code === value.charCodeAt(index++)) { + effects.consume(code) + return index === value.length ? cdata : cdataOpenInside + } + + return nok(code) + } + + /** + * In CDATA. + * + * ```markdown + * > | a &<]]> b + * ^^^ + * ``` + * + * @type {State} + */ + function cdata(code) { + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.eof) { + return nok(code) + } + + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.rightSquareBracket) { + effects.consume(code) + return cdataClose + } + + if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.markdownLineEnding)(code)) { + returnState = cdata + return lineEndingBefore(code) + } + + effects.consume(code) + return cdata + } + + /** + * In CDATA, after `]`, at another `]`. + * + * ```markdown + * > | a &<]]> b + * ^ + * ``` + * + * @type {State} + */ + function cdataClose(code) { + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.rightSquareBracket) { + effects.consume(code) + return cdataEnd + } + + return cdata(code) + } + + /** + * In CDATA, after `]]`, at `>`. + * + * ```markdown + * > | a &<]]> b + * ^ + * ``` + * + * @type {State} + */ + function cdataEnd(code) { + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.greaterThan) { + return end(code) + } + + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.rightSquareBracket) { + effects.consume(code) + return cdataEnd + } + + return cdata(code) + } + + /** + * In declaration. + * + * ```markdown + * > | a c + * ^ + * ``` + * + * @type {State} + */ + function declaration(code) { + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.eof || code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.greaterThan) { + return end(code) + } + + if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.markdownLineEnding)(code)) { + returnState = declaration + return lineEndingBefore(code) + } + + effects.consume(code) + return declaration + } + + /** + * In instruction. + * + * ```markdown + * > | a c + * ^ + * ``` + * + * @type {State} + */ + function instruction(code) { + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.eof) { + return nok(code) + } + + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.questionMark) { + effects.consume(code) + return instructionClose + } + + if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.markdownLineEnding)(code)) { + returnState = instruction + return lineEndingBefore(code) + } + + effects.consume(code) + return instruction + } + + /** + * In instruction, after `?`, at `>`. + * + * ```markdown + * > | a c + * ^ + * ``` + * + * @type {State} + */ + function instructionClose(code) { + return code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.greaterThan ? end(code) : instruction(code) + } + + /** + * After ` | a c + * ^ + * ``` + * + * @type {State} + */ + function tagCloseStart(code) { + // ASCII alphabetical. + if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.asciiAlpha)(code)) { + effects.consume(code) + return tagClose + } + + return nok(code) + } + + /** + * After ` | a c + * ^ + * ``` + * + * @type {State} + */ + function tagClose(code) { + // ASCII alphanumerical and `-`. + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.dash || (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.asciiAlphanumeric)(code)) { + effects.consume(code) + return tagClose + } + + return tagCloseBetween(code) + } + + /** + * In closing tag, after tag name. + * + * ```markdown + * > | a c + * ^ + * ``` + * + * @type {State} + */ + function tagCloseBetween(code) { + if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.markdownLineEnding)(code)) { + returnState = tagCloseBetween + return lineEndingBefore(code) + } + + if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.markdownSpace)(code)) { + effects.consume(code) + return tagCloseBetween + } + + return end(code) + } + + /** + * After ` | a c + * ^ + * ``` + * + * @type {State} + */ + function tagOpen(code) { + // ASCII alphanumerical and `-`. + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.dash || (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.asciiAlphanumeric)(code)) { + effects.consume(code) + return tagOpen + } + + if ( + code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.slash || + code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.greaterThan || + (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.markdownLineEndingOrSpace)(code) + ) { + return tagOpenBetween(code) + } + + return nok(code) + } + + /** + * In opening tag, after tag name. + * + * ```markdown + * > | a c + * ^ + * ``` + * + * @type {State} + */ + function tagOpenBetween(code) { + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.slash) { + effects.consume(code) + return end + } + + // ASCII alphabetical and `:` and `_`. + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.colon || code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.underscore || (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.asciiAlpha)(code)) { + effects.consume(code) + return tagOpenAttributeName + } + + if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.markdownLineEnding)(code)) { + returnState = tagOpenBetween + return lineEndingBefore(code) + } + + if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.markdownSpace)(code)) { + effects.consume(code) + return tagOpenBetween + } + + return end(code) + } + + /** + * In attribute name. + * + * ```markdown + * > | a d + * ^ + * ``` + * + * @type {State} + */ + function tagOpenAttributeName(code) { + // ASCII alphabetical and `-`, `.`, `:`, and `_`. + if ( + code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.dash || + code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.dot || + code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.colon || + code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.underscore || + (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.asciiAlphanumeric)(code) + ) { + effects.consume(code) + return tagOpenAttributeName + } + + return tagOpenAttributeNameAfter(code) + } + + /** + * After attribute name, before initializer, the end of the tag, or + * whitespace. + * + * ```markdown + * > | a d + * ^ + * ``` + * + * @type {State} + */ + function tagOpenAttributeNameAfter(code) { + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.equalsTo) { + effects.consume(code) + return tagOpenAttributeValueBefore + } + + if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.markdownLineEnding)(code)) { + returnState = tagOpenAttributeNameAfter + return lineEndingBefore(code) + } + + if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.markdownSpace)(code)) { + effects.consume(code) + return tagOpenAttributeNameAfter + } + + return tagOpenBetween(code) + } + + /** + * Before unquoted, double quoted, or single quoted attribute value, allowing + * whitespace. + * + * ```markdown + * > | a e + * ^ + * ``` + * + * @type {State} + */ + function tagOpenAttributeValueBefore(code) { + if ( + code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.eof || + code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.lessThan || + code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.equalsTo || + code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.greaterThan || + code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.graveAccent + ) { + return nok(code) + } + + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.quotationMark || code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.apostrophe) { + effects.consume(code) + marker = code + return tagOpenAttributeValueQuoted + } + + if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.markdownLineEnding)(code)) { + returnState = tagOpenAttributeValueBefore + return lineEndingBefore(code) + } + + if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.markdownSpace)(code)) { + effects.consume(code) + return tagOpenAttributeValueBefore + } + + effects.consume(code) + return tagOpenAttributeValueUnquoted + } + + /** + * In double or single quoted attribute value. + * + * ```markdown + * > | a e + * ^ + * ``` + * + * @type {State} + */ + function tagOpenAttributeValueQuoted(code) { + if (code === marker) { + effects.consume(code) + marker = undefined + return tagOpenAttributeValueQuotedAfter + } + + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.eof) { + return nok(code) + } + + if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.markdownLineEnding)(code)) { + returnState = tagOpenAttributeValueQuoted + return lineEndingBefore(code) + } + + effects.consume(code) + return tagOpenAttributeValueQuoted + } + + /** + * In unquoted attribute value. + * + * ```markdown + * > | a e + * ^ + * ``` + * + * @type {State} + */ + function tagOpenAttributeValueUnquoted(code) { + if ( + code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.eof || + code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.quotationMark || + code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.apostrophe || + code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.lessThan || + code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.equalsTo || + code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.graveAccent + ) { + return nok(code) + } + + if ( + code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.slash || + code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.greaterThan || + (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.markdownLineEndingOrSpace)(code) + ) { + return tagOpenBetween(code) + } + + effects.consume(code) + return tagOpenAttributeValueUnquoted + } + + /** + * After double or single quoted attribute value, before whitespace or the end + * of the tag. + * + * ```markdown + * > | a e + * ^ + * ``` + * + * @type {State} + */ + function tagOpenAttributeValueQuotedAfter(code) { + if ( + code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.slash || + code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.greaterThan || + (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.markdownLineEndingOrSpace)(code) + ) { + return tagOpenBetween(code) + } + + return nok(code) + } + + /** + * In certain circumstances of a tag where only an `>` is allowed. + * + * ```markdown + * > | a e + * ^ + * ``` + * + * @type {State} + */ + function end(code) { + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.greaterThan) { + effects.consume(code) + effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.htmlTextData) + effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.htmlText) + return ok + } + + return nok(code) + } + + /** + * At eol. + * + * > 👉 **Note**: we can’t have blank lines in text, so no need to worry about + * > empty tokens. + * + * ```markdown + * > | a + * ``` + * + * @type {State} + */ + function lineEndingBefore(code) { + (0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(returnState, 'expected return state') + ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.markdownLineEnding)(code), 'expected eol') + effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.htmlTextData) + effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.lineEnding) + effects.consume(code) + effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.lineEnding) + return lineEndingAfter + } + + /** + * After eol, at optional whitespace. + * + * > 👉 **Note**: we can’t have blank lines in text, so no need to worry about + * > empty tokens. + * + * ```markdown + * | a + * ^ + * ``` + * + * @type {State} + */ + function lineEndingAfter(code) { + // Always populated by defaults. + (0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)( + self.parser.constructs.disable.null, + 'expected `disable.null` to be populated' + ) + return (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.markdownSpace)(code) + ? (0,micromark_factory_space__WEBPACK_IMPORTED_MODULE_5__.factorySpace)( + effects, + lineEndingAfterPrefix, + micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.linePrefix, + self.parser.constructs.disable.null.includes('codeIndented') + ? undefined + : micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_4__.constants.tabSize + )(code) + : lineEndingAfterPrefix(code) + } + + /** + * After eol, after optional whitespace. + * + * > 👉 **Note**: we can’t have blank lines in text, so no need to worry about + * > empty tokens. + * + * ```markdown + * | a + * ^ + * ``` + * + * @type {State} + */ + function lineEndingAfterPrefix(code) { + effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.htmlTextData) + return returnState(code) + } +} + + +/***/ }), + +/***/ "../node_modules/micromark-core-commonmark/dev/lib/label-end.js": +/*!**********************************************************************!*\ + !*** ../node_modules/micromark-core-commonmark/dev/lib/label-end.js ***! + \**********************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ labelEnd: () => (/* binding */ labelEnd) +/* harmony export */ }); +/* harmony import */ var micromark_factory_destination__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! micromark-factory-destination */ "../node_modules/micromark-factory-destination/dev/index.js"); +/* harmony import */ var micromark_factory_label__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! micromark-factory-label */ "../node_modules/micromark-factory-label/dev/index.js"); +/* harmony import */ var micromark_factory_title__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! micromark-factory-title */ "../node_modules/micromark-factory-title/dev/index.js"); +/* harmony import */ var micromark_factory_whitespace__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! micromark-factory-whitespace */ "../node_modules/micromark-factory-whitespace/dev/index.js"); +/* harmony import */ var micromark_util_character__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! micromark-util-character */ "../node_modules/micromark-util-character/dev/index.js"); +/* harmony import */ var micromark_util_chunked__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! micromark-util-chunked */ "../node_modules/micromark-util-chunked/dev/index.js"); +/* harmony import */ var micromark_util_normalize_identifier__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! micromark-util-normalize-identifier */ "../node_modules/micromark-util-normalize-identifier/dev/index.js"); +/* harmony import */ var micromark_util_resolve_all__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! micromark-util-resolve-all */ "../node_modules/micromark-util-resolve-all/index.js"); +/* harmony import */ var micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! micromark-util-symbol/codes.js */ "../node_modules/micromark-util-symbol/codes.js"); +/* harmony import */ var micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! micromark-util-symbol/constants.js */ "../node_modules/micromark-util-symbol/constants.js"); +/* harmony import */ var micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! micromark-util-symbol/types.js */ "../node_modules/micromark-util-symbol/types.js"); +/* harmony import */ var uvu_assert__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! uvu/assert */ "../node_modules/uvu/assert/index.mjs"); +/** + * @typedef {import('micromark-util-types').Construct} Construct + * @typedef {import('micromark-util-types').Event} Event + * @typedef {import('micromark-util-types').Resolver} Resolver + * @typedef {import('micromark-util-types').State} State + * @typedef {import('micromark-util-types').Token} Token + * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext + * @typedef {import('micromark-util-types').Tokenizer} Tokenizer + */ + + + + + + + + + + + + + + +/** @type {Construct} */ +const labelEnd = { + name: 'labelEnd', + tokenize: tokenizeLabelEnd, + resolveTo: resolveToLabelEnd, + resolveAll: resolveAllLabelEnd +} + +/** @type {Construct} */ +const resourceConstruct = {tokenize: tokenizeResource} +/** @type {Construct} */ +const referenceFullConstruct = {tokenize: tokenizeReferenceFull} +/** @type {Construct} */ +const referenceCollapsedConstruct = {tokenize: tokenizeReferenceCollapsed} + +/** @type {Resolver} */ +function resolveAllLabelEnd(events) { + let index = -1 + + while (++index < events.length) { + const token = events[index][1] + + if ( + token.type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.labelImage || + token.type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.labelLink || + token.type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.labelEnd + ) { + // Remove the marker. + events.splice(index + 1, token.type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.labelImage ? 4 : 2) + token.type = micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.data + index++ + } + } + + return events +} + +/** @type {Resolver} */ +function resolveToLabelEnd(events, context) { + let index = events.length + let offset = 0 + /** @type {Token} */ + let token + /** @type {number | undefined} */ + let open + /** @type {number | undefined} */ + let close + /** @type {Array} */ + let media + + // Find an opening. + while (index--) { + token = events[index][1] + + if (open) { + // If we see another link, or inactive link label, we’ve been here before. + if ( + token.type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.link || + (token.type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.labelLink && token._inactive) + ) { + break + } + + // Mark other link openings as inactive, as we can’t have links in + // links. + if (events[index][0] === 'enter' && token.type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.labelLink) { + token._inactive = true + } + } else if (close) { + if ( + events[index][0] === 'enter' && + (token.type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.labelImage || token.type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.labelLink) && + !token._balanced + ) { + open = index + + if (token.type !== micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.labelLink) { + offset = 2 + break + } + } + } else if (token.type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.labelEnd) { + close = index + } + } + + (0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(open !== undefined, '`open` is supposed to be found') + ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(close !== undefined, '`close` is supposed to be found') + + const group = { + type: events[open][1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.labelLink ? micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.link : micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.image, + start: Object.assign({}, events[open][1].start), + end: Object.assign({}, events[events.length - 1][1].end) + } + + const label = { + type: micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.label, + start: Object.assign({}, events[open][1].start), + end: Object.assign({}, events[close][1].end) + } + + const text = { + type: micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.labelText, + start: Object.assign({}, events[open + offset + 2][1].end), + end: Object.assign({}, events[close - 2][1].start) + } + + media = [ + ['enter', group, context], + ['enter', label, context] + ] + + // Opening marker. + media = (0,micromark_util_chunked__WEBPACK_IMPORTED_MODULE_2__.push)(media, events.slice(open + 1, open + offset + 3)) + + // Text open. + media = (0,micromark_util_chunked__WEBPACK_IMPORTED_MODULE_2__.push)(media, [['enter', text, context]]) + + // Always populated by defaults. + ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)( + context.parser.constructs.insideSpan.null, + 'expected `insideSpan.null` to be populated' + ) + // Between. + media = (0,micromark_util_chunked__WEBPACK_IMPORTED_MODULE_2__.push)( + media, + (0,micromark_util_resolve_all__WEBPACK_IMPORTED_MODULE_3__.resolveAll)( + context.parser.constructs.insideSpan.null, + events.slice(open + offset + 4, close - 3), + context + ) + ) + + // Text close, marker close, label close. + media = (0,micromark_util_chunked__WEBPACK_IMPORTED_MODULE_2__.push)(media, [ + ['exit', text, context], + events[close - 2], + events[close - 1], + ['exit', label, context] + ]) + + // Reference, resource, or so. + media = (0,micromark_util_chunked__WEBPACK_IMPORTED_MODULE_2__.push)(media, events.slice(close + 1)) + + // Media close. + media = (0,micromark_util_chunked__WEBPACK_IMPORTED_MODULE_2__.push)(media, [['exit', group, context]]) + + ;(0,micromark_util_chunked__WEBPACK_IMPORTED_MODULE_2__.splice)(events, open, events.length, media) + + return events +} + +/** + * @this {TokenizeContext} + * @type {Tokenizer} + */ +function tokenizeLabelEnd(effects, ok, nok) { + const self = this + let index = self.events.length + /** @type {Token} */ + let labelStart + /** @type {boolean} */ + let defined + + // Find an opening. + while (index--) { + if ( + (self.events[index][1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.labelImage || + self.events[index][1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.labelLink) && + !self.events[index][1]._balanced + ) { + labelStart = self.events[index][1] + break + } + } + + return start + + /** + * Start of label end. + * + * ```markdown + * > | [a](b) c + * ^ + * > | [a][b] c + * ^ + * > | [a][] b + * ^ + * > | [a] b + * ``` + * + * @type {State} + */ + function start(code) { + ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_4__.codes.rightSquareBracket, 'expected `]`') + + // If there is not an okay opening. + if (!labelStart) { + return nok(code) + } + + // If the corresponding label (link) start is marked as inactive, + // it means we’d be wrapping a link, like this: + // + // ```markdown + // > | a [b [c](d) e](f) g. + // ^ + // ``` + // + // We can’t have that, so it’s just balanced brackets. + if (labelStart._inactive) { + return labelEndNok(code) + } + + defined = self.parser.defined.includes( + (0,micromark_util_normalize_identifier__WEBPACK_IMPORTED_MODULE_5__.normalizeIdentifier)( + self.sliceSerialize({start: labelStart.end, end: self.now()}) + ) + ) + effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.labelEnd) + effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.labelMarker) + effects.consume(code) + effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.labelMarker) + effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.labelEnd) + return after + } + + /** + * After `]`. + * + * ```markdown + * > | [a](b) c + * ^ + * > | [a][b] c + * ^ + * > | [a][] b + * ^ + * > | [a] b + * ^ + * ``` + * + * @type {State} + */ + function after(code) { + // Note: `markdown-rs` also parses GFM footnotes here, which for us is in + // an extension. + + // Resource (`[asd](fgh)`)? + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_4__.codes.leftParenthesis) { + return effects.attempt( + resourceConstruct, + labelEndOk, + defined ? labelEndOk : labelEndNok + )(code) + } + + // Full (`[asd][fgh]`) or collapsed (`[asd][]`) reference? + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_4__.codes.leftSquareBracket) { + return effects.attempt( + referenceFullConstruct, + labelEndOk, + defined ? referenceNotFull : labelEndNok + )(code) + } + + // Shortcut (`[asd]`) reference? + return defined ? labelEndOk(code) : labelEndNok(code) + } + + /** + * After `]`, at `[`, but not at a full reference. + * + * > 👉 **Note**: we only get here if the label is defined. + * + * ```markdown + * > | [a][] b + * ^ + * > | [a] b + * ^ + * ``` + * + * @type {State} + */ + function referenceNotFull(code) { + return effects.attempt( + referenceCollapsedConstruct, + labelEndOk, + labelEndNok + )(code) + } + + /** + * Done, we found something. + * + * ```markdown + * > | [a](b) c + * ^ + * > | [a][b] c + * ^ + * > | [a][] b + * ^ + * > | [a] b + * ^ + * ``` + * + * @type {State} + */ + function labelEndOk(code) { + // Note: `markdown-rs` does a bunch of stuff here. + return ok(code) + } + + /** + * Done, it’s nothing. + * + * There was an okay opening, but we didn’t match anything. + * + * ```markdown + * > | [a](b c + * ^ + * > | [a][b c + * ^ + * > | [a] b + * ^ + * ``` + * + * @type {State} + */ + function labelEndNok(code) { + labelStart._balanced = true + return nok(code) + } +} + +/** + * @this {TokenizeContext} + * @type {Tokenizer} + */ +function tokenizeResource(effects, ok, nok) { + return resourceStart + + /** + * At a resource. + * + * ```markdown + * > | [a](b) c + * ^ + * ``` + * + * @type {State} + */ + function resourceStart(code) { + ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_4__.codes.leftParenthesis, 'expected left paren') + effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.resource) + effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.resourceMarker) + effects.consume(code) + effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.resourceMarker) + return resourceBefore + } + + /** + * In resource, after `(`, at optional whitespace. + * + * ```markdown + * > | [a](b) c + * ^ + * ``` + * + * @type {State} + */ + function resourceBefore(code) { + return (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_6__.markdownLineEndingOrSpace)(code) + ? (0,micromark_factory_whitespace__WEBPACK_IMPORTED_MODULE_7__.factoryWhitespace)(effects, resourceOpen)(code) + : resourceOpen(code) + } + + /** + * In resource, after optional whitespace, at `)` or a destination. + * + * ```markdown + * > | [a](b) c + * ^ + * ``` + * + * @type {State} + */ + function resourceOpen(code) { + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_4__.codes.rightParenthesis) { + return resourceEnd(code) + } + + return (0,micromark_factory_destination__WEBPACK_IMPORTED_MODULE_8__.factoryDestination)( + effects, + resourceDestinationAfter, + resourceDestinationMissing, + micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.resourceDestination, + micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.resourceDestinationLiteral, + micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.resourceDestinationLiteralMarker, + micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.resourceDestinationRaw, + micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.resourceDestinationString, + micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_9__.constants.linkResourceDestinationBalanceMax + )(code) + } + + /** + * In resource, after destination, at optional whitespace. + * + * ```markdown + * > | [a](b) c + * ^ + * ``` + * + * @type {State} + */ + function resourceDestinationAfter(code) { + return (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_6__.markdownLineEndingOrSpace)(code) + ? (0,micromark_factory_whitespace__WEBPACK_IMPORTED_MODULE_7__.factoryWhitespace)(effects, resourceBetween)(code) + : resourceEnd(code) + } + + /** + * At invalid destination. + * + * ```markdown + * > | [a](<<) b + * ^ + * ``` + * + * @type {State} + */ + function resourceDestinationMissing(code) { + return nok(code) + } + + /** + * In resource, after destination and whitespace, at `(` or title. + * + * ```markdown + * > | [a](b ) c + * ^ + * ``` + * + * @type {State} + */ + function resourceBetween(code) { + if ( + code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_4__.codes.quotationMark || + code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_4__.codes.apostrophe || + code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_4__.codes.leftParenthesis + ) { + return (0,micromark_factory_title__WEBPACK_IMPORTED_MODULE_10__.factoryTitle)( + effects, + resourceTitleAfter, + nok, + micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.resourceTitle, + micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.resourceTitleMarker, + micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.resourceTitleString + )(code) + } + + return resourceEnd(code) + } + + /** + * In resource, after title, at optional whitespace. + * + * ```markdown + * > | [a](b "c") d + * ^ + * ``` + * + * @type {State} + */ + function resourceTitleAfter(code) { + return (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_6__.markdownLineEndingOrSpace)(code) + ? (0,micromark_factory_whitespace__WEBPACK_IMPORTED_MODULE_7__.factoryWhitespace)(effects, resourceEnd)(code) + : resourceEnd(code) + } + + /** + * In resource, at `)`. + * + * ```markdown + * > | [a](b) d + * ^ + * ``` + * + * @type {State} + */ + function resourceEnd(code) { + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_4__.codes.rightParenthesis) { + effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.resourceMarker) + effects.consume(code) + effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.resourceMarker) + effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.resource) + return ok + } + + return nok(code) + } +} + +/** + * @this {TokenizeContext} + * @type {Tokenizer} + */ +function tokenizeReferenceFull(effects, ok, nok) { + const self = this + + return referenceFull + + /** + * In a reference (full), at the `[`. + * + * ```markdown + * > | [a][b] d + * ^ + * ``` + * + * @type {State} + */ + function referenceFull(code) { + ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_4__.codes.leftSquareBracket, 'expected left bracket') + return micromark_factory_label__WEBPACK_IMPORTED_MODULE_11__.factoryLabel.call( + self, + effects, + referenceFullAfter, + referenceFullMissing, + micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.reference, + micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.referenceMarker, + micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.referenceString + )(code) + } + + /** + * In a reference (full), after `]`. + * + * ```markdown + * > | [a][b] d + * ^ + * ``` + * + * @type {State} + */ + function referenceFullAfter(code) { + return self.parser.defined.includes( + (0,micromark_util_normalize_identifier__WEBPACK_IMPORTED_MODULE_5__.normalizeIdentifier)( + self.sliceSerialize(self.events[self.events.length - 1][1]).slice(1, -1) + ) + ) + ? ok(code) + : nok(code) + } + + /** + * In reference (full) that was missing. + * + * ```markdown + * > | [a][b d + * ^ + * ``` + * + * @type {State} + */ + function referenceFullMissing(code) { + return nok(code) + } +} + +/** + * @this {TokenizeContext} + * @type {Tokenizer} + */ +function tokenizeReferenceCollapsed(effects, ok, nok) { + return referenceCollapsedStart + + /** + * In reference (collapsed), at `[`. + * + * > 👉 **Note**: we only get here if the label is defined. + * + * ```markdown + * > | [a][] d + * ^ + * ``` + * + * @type {State} + */ + function referenceCollapsedStart(code) { + // We only attempt a collapsed label if there’s a `[`. + ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_4__.codes.leftSquareBracket, 'expected left bracket') + effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.reference) + effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.referenceMarker) + effects.consume(code) + effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.referenceMarker) + return referenceCollapsedOpen + } + + /** + * In reference (collapsed), at `]`. + * + * > 👉 **Note**: we only get here if the label is defined. + * + * ```markdown + * > | [a][] d + * ^ + * ``` + * + * @type {State} + */ + function referenceCollapsedOpen(code) { + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_4__.codes.rightSquareBracket) { + effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.referenceMarker) + effects.consume(code) + effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.referenceMarker) + effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.reference) + return ok + } + + return nok(code) + } +} + + +/***/ }), + +/***/ "../node_modules/micromark-core-commonmark/dev/lib/label-start-image.js": +/*!******************************************************************************!*\ + !*** ../node_modules/micromark-core-commonmark/dev/lib/label-start-image.js ***! + \******************************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ labelStartImage: () => (/* binding */ labelStartImage) +/* harmony export */ }); +/* harmony import */ var micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! micromark-util-symbol/codes.js */ "../node_modules/micromark-util-symbol/codes.js"); +/* harmony import */ var micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! micromark-util-symbol/types.js */ "../node_modules/micromark-util-symbol/types.js"); +/* harmony import */ var uvu_assert__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! uvu/assert */ "../node_modules/uvu/assert/index.mjs"); +/* harmony import */ var _label_end_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./label-end.js */ "../node_modules/micromark-core-commonmark/dev/lib/label-end.js"); +/** + * @typedef {import('micromark-util-types').Construct} Construct + * @typedef {import('micromark-util-types').State} State + * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext + * @typedef {import('micromark-util-types').Tokenizer} Tokenizer + */ + + + + + + +/** @type {Construct} */ +const labelStartImage = { + name: 'labelStartImage', + tokenize: tokenizeLabelStartImage, + resolveAll: _label_end_js__WEBPACK_IMPORTED_MODULE_1__.labelEnd.resolveAll +} + +/** + * @this {TokenizeContext} + * @type {Tokenizer} + */ +function tokenizeLabelStartImage(effects, ok, nok) { + const self = this + + return start + + /** + * Start of label (image) start. + * + * ```markdown + * > | a ![b] c + * ^ + * ``` + * + * @type {State} + */ + function start(code) { + ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.exclamationMark, 'expected `!`') + effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_3__.types.labelImage) + effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_3__.types.labelImageMarker) + effects.consume(code) + effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_3__.types.labelImageMarker) + return open + } + + /** + * After `!`, at `[`. + * + * ```markdown + * > | a ![b] c + * ^ + * ``` + * + * @type {State} + */ + function open(code) { + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.leftSquareBracket) { + effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_3__.types.labelMarker) + effects.consume(code) + effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_3__.types.labelMarker) + effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_3__.types.labelImage) + return after + } + + return nok(code) + } + + /** + * After `![`. + * + * ```markdown + * > | a ![b] c + * ^ + * ``` + * + * This is needed in because, when GFM footnotes are enabled, images never + * form when started with a `^`. + * Instead, links form: + * + * ```markdown + * ![^a](b) + * + * ![^a][b] + * + * [b]: c + * ``` + * + * ```html + *

    !^a

    + *

    !^a

    + * ``` + * + * @type {State} + */ + function after(code) { + // To do: use a new field to do this, this is still needed for + // `micromark-extension-gfm-footnote`, but the `label-start-link` + // behavior isn’t. + // Hidden footnotes hook. + /* c8 ignore next 3 */ + return code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.caret && + '_hiddenFootnoteSupport' in self.parser.constructs + ? nok(code) + : ok(code) + } +} + + +/***/ }), + +/***/ "../node_modules/micromark-core-commonmark/dev/lib/label-start-link.js": +/*!*****************************************************************************!*\ + !*** ../node_modules/micromark-core-commonmark/dev/lib/label-start-link.js ***! + \*****************************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ labelStartLink: () => (/* binding */ labelStartLink) +/* harmony export */ }); +/* harmony import */ var micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! micromark-util-symbol/codes.js */ "../node_modules/micromark-util-symbol/codes.js"); +/* harmony import */ var micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! micromark-util-symbol/types.js */ "../node_modules/micromark-util-symbol/types.js"); +/* harmony import */ var uvu_assert__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! uvu/assert */ "../node_modules/uvu/assert/index.mjs"); +/* harmony import */ var _label_end_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./label-end.js */ "../node_modules/micromark-core-commonmark/dev/lib/label-end.js"); +/** + * @typedef {import('micromark-util-types').Construct} Construct + * @typedef {import('micromark-util-types').State} State + * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext + * @typedef {import('micromark-util-types').Tokenizer} Tokenizer + */ + + + + + + +/** @type {Construct} */ +const labelStartLink = { + name: 'labelStartLink', + tokenize: tokenizeLabelStartLink, + resolveAll: _label_end_js__WEBPACK_IMPORTED_MODULE_1__.labelEnd.resolveAll +} + +/** + * @this {TokenizeContext} + * @type {Tokenizer} + */ +function tokenizeLabelStartLink(effects, ok, nok) { + const self = this + + return start + + /** + * Start of label (link) start. + * + * ```markdown + * > | a [b] c + * ^ + * ``` + * + * @type {State} + */ + function start(code) { + ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.leftSquareBracket, 'expected `[`') + effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_3__.types.labelLink) + effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_3__.types.labelMarker) + effects.consume(code) + effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_3__.types.labelMarker) + effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_3__.types.labelLink) + return after + } + + /** @type {State} */ + function after(code) { + // To do: this isn’t needed in `micromark-extension-gfm-footnote`, + // remove. + // Hidden footnotes hook. + /* c8 ignore next 3 */ + return code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.caret && + '_hiddenFootnoteSupport' in self.parser.constructs + ? nok(code) + : ok(code) + } +} + + +/***/ }), + +/***/ "../node_modules/micromark-core-commonmark/dev/lib/line-ending.js": +/*!************************************************************************!*\ + !*** ../node_modules/micromark-core-commonmark/dev/lib/line-ending.js ***! + \************************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ lineEnding: () => (/* binding */ lineEnding) +/* harmony export */ }); +/* harmony import */ var micromark_factory_space__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! micromark-factory-space */ "../node_modules/micromark-factory-space/dev/index.js"); +/* harmony import */ var micromark_util_character__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! micromark-util-character */ "../node_modules/micromark-util-character/dev/index.js"); +/* harmony import */ var micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! micromark-util-symbol/types.js */ "../node_modules/micromark-util-symbol/types.js"); +/* harmony import */ var uvu_assert__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! uvu/assert */ "../node_modules/uvu/assert/index.mjs"); +/** + * @typedef {import('micromark-util-types').Construct} Construct + * @typedef {import('micromark-util-types').State} State + * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext + * @typedef {import('micromark-util-types').Tokenizer} Tokenizer + */ + + + + + + +/** @type {Construct} */ +const lineEnding = {name: 'lineEnding', tokenize: tokenizeLineEnding} + +/** + * @this {TokenizeContext} + * @type {Tokenizer} + */ +function tokenizeLineEnding(effects, ok) { + return start + + /** @type {State} */ + function start(code) { + ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_1__.markdownLineEnding)(code), 'expected eol') + effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.lineEnding) + effects.consume(code) + effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.lineEnding) + return (0,micromark_factory_space__WEBPACK_IMPORTED_MODULE_3__.factorySpace)(effects, ok, micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.linePrefix) + } +} + + +/***/ }), + +/***/ "../node_modules/micromark-core-commonmark/dev/lib/list.js": +/*!*****************************************************************!*\ + !*** ../node_modules/micromark-core-commonmark/dev/lib/list.js ***! + \*****************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ list: () => (/* binding */ list) +/* harmony export */ }); +/* harmony import */ var micromark_factory_space__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! micromark-factory-space */ "../node_modules/micromark-factory-space/dev/index.js"); +/* harmony import */ var micromark_util_character__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! micromark-util-character */ "../node_modules/micromark-util-character/dev/index.js"); +/* harmony import */ var micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! micromark-util-symbol/codes.js */ "../node_modules/micromark-util-symbol/codes.js"); +/* harmony import */ var micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! micromark-util-symbol/constants.js */ "../node_modules/micromark-util-symbol/constants.js"); +/* harmony import */ var micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! micromark-util-symbol/types.js */ "../node_modules/micromark-util-symbol/types.js"); +/* harmony import */ var uvu_assert__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! uvu/assert */ "../node_modules/uvu/assert/index.mjs"); +/* harmony import */ var _blank_line_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./blank-line.js */ "../node_modules/micromark-core-commonmark/dev/lib/blank-line.js"); +/* harmony import */ var _thematic_break_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./thematic-break.js */ "../node_modules/micromark-core-commonmark/dev/lib/thematic-break.js"); +/** + * @typedef {import('micromark-util-types').Code} Code + * @typedef {import('micromark-util-types').Construct} Construct + * @typedef {import('micromark-util-types').ContainerState} ContainerState + * @typedef {import('micromark-util-types').Exiter} Exiter + * @typedef {import('micromark-util-types').State} State + * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext + * @typedef {import('micromark-util-types').Tokenizer} Tokenizer + */ + + + + + + + + + + +/** @type {Construct} */ +const list = { + name: 'list', + tokenize: tokenizeListStart, + continuation: {tokenize: tokenizeListContinuation}, + exit: tokenizeListEnd +} + +/** @type {Construct} */ +const listItemPrefixWhitespaceConstruct = { + tokenize: tokenizeListItemPrefixWhitespace, + partial: true +} + +/** @type {Construct} */ +const indentConstruct = {tokenize: tokenizeIndent, partial: true} + +// To do: `markdown-rs` parses list items on their own and later stitches them +// together. + +/** + * @type {Tokenizer} + * @this {TokenizeContext} + */ +function tokenizeListStart(effects, ok, nok) { + const self = this + const tail = self.events[self.events.length - 1] + let initialSize = + tail && tail[1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.linePrefix + ? tail[2].sliceSerialize(tail[1], true).length + : 0 + let size = 0 + + return start + + /** @type {State} */ + function start(code) { + ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(self.containerState, 'expected state') + const kind = + self.containerState.type || + (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.asterisk || code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.plusSign || code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.dash + ? micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.listUnordered + : micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.listOrdered) + + if ( + kind === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.listUnordered + ? !self.containerState.marker || code === self.containerState.marker + : (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.asciiDigit)(code) + ) { + if (!self.containerState.type) { + self.containerState.type = kind + effects.enter(kind, {_container: true}) + } + + if (kind === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.listUnordered) { + effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.listItemPrefix) + return code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.asterisk || code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.dash + ? effects.check(_thematic_break_js__WEBPACK_IMPORTED_MODULE_4__.thematicBreak, nok, atMarker)(code) + : atMarker(code) + } + + if (!self.interrupt || code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.digit1) { + effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.listItemPrefix) + effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.listItemValue) + return inside(code) + } + } + + return nok(code) + } + + /** @type {State} */ + function inside(code) { + (0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(self.containerState, 'expected state') + if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.asciiDigit)(code) && ++size < micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_5__.constants.listItemValueSizeMax) { + effects.consume(code) + return inside + } + + if ( + (!self.interrupt || size < 2) && + (self.containerState.marker + ? code === self.containerState.marker + : code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.rightParenthesis || code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.dot) + ) { + effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.listItemValue) + return atMarker(code) + } + + return nok(code) + } + + /** + * @type {State} + **/ + function atMarker(code) { + (0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(self.containerState, 'expected state') + ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(code !== micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.eof, 'eof (`null`) is not a marker') + effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.listItemMarker) + effects.consume(code) + effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.listItemMarker) + self.containerState.marker = self.containerState.marker || code + return effects.check( + _blank_line_js__WEBPACK_IMPORTED_MODULE_6__.blankLine, + // Can’t be empty when interrupting. + self.interrupt ? nok : onBlank, + effects.attempt( + listItemPrefixWhitespaceConstruct, + endOfPrefix, + otherPrefix + ) + ) + } + + /** @type {State} */ + function onBlank(code) { + (0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(self.containerState, 'expected state') + self.containerState.initialBlankLine = true + initialSize++ + return endOfPrefix(code) + } + + /** @type {State} */ + function otherPrefix(code) { + if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.markdownSpace)(code)) { + effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.listItemPrefixWhitespace) + effects.consume(code) + effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.listItemPrefixWhitespace) + return endOfPrefix + } + + return nok(code) + } + + /** @type {State} */ + function endOfPrefix(code) { + (0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(self.containerState, 'expected state') + self.containerState.size = + initialSize + + self.sliceSerialize(effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.listItemPrefix), true).length + return ok(code) + } +} + +/** + * @type {Tokenizer} + * @this {TokenizeContext} + */ +function tokenizeListContinuation(effects, ok, nok) { + const self = this + + ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(self.containerState, 'expected state') + self.containerState._closeFlow = undefined + + return effects.check(_blank_line_js__WEBPACK_IMPORTED_MODULE_6__.blankLine, onBlank, notBlank) + + /** @type {State} */ + function onBlank(code) { + ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(self.containerState, 'expected state') + ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(typeof self.containerState.size === 'number', 'expected size') + self.containerState.furtherBlankLines = + self.containerState.furtherBlankLines || + self.containerState.initialBlankLine + + // We have a blank line. + // Still, try to consume at most the items size. + return (0,micromark_factory_space__WEBPACK_IMPORTED_MODULE_7__.factorySpace)( + effects, + ok, + micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.listItemIndent, + self.containerState.size + 1 + )(code) + } + + /** @type {State} */ + function notBlank(code) { + (0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(self.containerState, 'expected state') + if (self.containerState.furtherBlankLines || !(0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.markdownSpace)(code)) { + self.containerState.furtherBlankLines = undefined + self.containerState.initialBlankLine = undefined + return notInCurrentItem(code) + } + + self.containerState.furtherBlankLines = undefined + self.containerState.initialBlankLine = undefined + return effects.attempt(indentConstruct, ok, notInCurrentItem)(code) + } + + /** @type {State} */ + function notInCurrentItem(code) { + (0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(self.containerState, 'expected state') + // While we do continue, we signal that the flow should be closed. + self.containerState._closeFlow = true + // As we’re closing flow, we’re no longer interrupting. + self.interrupt = undefined + // Always populated by defaults. + ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)( + self.parser.constructs.disable.null, + 'expected `disable.null` to be populated' + ) + return (0,micromark_factory_space__WEBPACK_IMPORTED_MODULE_7__.factorySpace)( + effects, + effects.attempt(list, ok, nok), + micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.linePrefix, + self.parser.constructs.disable.null.includes('codeIndented') + ? undefined + : micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_5__.constants.tabSize + )(code) + } +} + +/** + * @type {Tokenizer} + * @this {TokenizeContext} + */ +function tokenizeIndent(effects, ok, nok) { + const self = this + + ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(self.containerState, 'expected state') + ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(typeof self.containerState.size === 'number', 'expected size') + + return (0,micromark_factory_space__WEBPACK_IMPORTED_MODULE_7__.factorySpace)( + effects, + afterPrefix, + micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.listItemIndent, + self.containerState.size + 1 + ) + + /** @type {State} */ + function afterPrefix(code) { + ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(self.containerState, 'expected state') + const tail = self.events[self.events.length - 1] + return tail && + tail[1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.listItemIndent && + tail[2].sliceSerialize(tail[1], true).length === self.containerState.size + ? ok(code) + : nok(code) + } +} + +/** + * @type {Exiter} + * @this {TokenizeContext} + */ +function tokenizeListEnd(effects) { + (0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(this.containerState, 'expected state') + ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(typeof this.containerState.type === 'string', 'expected type') + effects.exit(this.containerState.type) +} + +/** + * @type {Tokenizer} + * @this {TokenizeContext} + */ +function tokenizeListItemPrefixWhitespace(effects, ok, nok) { + const self = this + + // Always populated by defaults. + ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)( + self.parser.constructs.disable.null, + 'expected `disable.null` to be populated' + ) + + return (0,micromark_factory_space__WEBPACK_IMPORTED_MODULE_7__.factorySpace)( + effects, + afterPrefix, + micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.listItemPrefixWhitespace, + self.parser.constructs.disable.null.includes('codeIndented') + ? undefined + : micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_5__.constants.tabSize + 1 + ) + + /** @type {State} */ + function afterPrefix(code) { + const tail = self.events[self.events.length - 1] + + return !(0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.markdownSpace)(code) && + tail && + tail[1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.listItemPrefixWhitespace + ? ok(code) + : nok(code) + } +} + + +/***/ }), + +/***/ "../node_modules/micromark-core-commonmark/dev/lib/setext-underline.js": +/*!*****************************************************************************!*\ + !*** ../node_modules/micromark-core-commonmark/dev/lib/setext-underline.js ***! + \*****************************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ setextUnderline: () => (/* binding */ setextUnderline) +/* harmony export */ }); +/* harmony import */ var micromark_factory_space__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! micromark-factory-space */ "../node_modules/micromark-factory-space/dev/index.js"); +/* harmony import */ var micromark_util_character__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! micromark-util-character */ "../node_modules/micromark-util-character/dev/index.js"); +/* harmony import */ var micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! micromark-util-symbol/codes.js */ "../node_modules/micromark-util-symbol/codes.js"); +/* harmony import */ var micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! micromark-util-symbol/types.js */ "../node_modules/micromark-util-symbol/types.js"); +/* harmony import */ var uvu_assert__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! uvu/assert */ "../node_modules/uvu/assert/index.mjs"); +/** + * @typedef {import('micromark-util-types').Code} Code + * @typedef {import('micromark-util-types').Construct} Construct + * @typedef {import('micromark-util-types').Resolver} Resolver + * @typedef {import('micromark-util-types').State} State + * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext + * @typedef {import('micromark-util-types').Tokenizer} Tokenizer + */ + + + + + + + +/** @type {Construct} */ +const setextUnderline = { + name: 'setextUnderline', + tokenize: tokenizeSetextUnderline, + resolveTo: resolveToSetextUnderline +} + +/** @type {Resolver} */ +function resolveToSetextUnderline(events, context) { + // To do: resolve like `markdown-rs`. + let index = events.length + /** @type {number | undefined} */ + let content + /** @type {number | undefined} */ + let text + /** @type {number | undefined} */ + let definition + + // Find the opening of the content. + // It’ll always exist: we don’t tokenize if it isn’t there. + while (index--) { + if (events[index][0] === 'enter') { + if (events[index][1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.content) { + content = index + break + } + + if (events[index][1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.paragraph) { + text = index + } + } + // Exit + else { + if (events[index][1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.content) { + // Remove the content end (if needed we’ll add it later) + events.splice(index, 1) + } + + if (!definition && events[index][1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.definition) { + definition = index + } + } + } + + (0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(text !== undefined, 'expected a `text` index to be found') + ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(content !== undefined, 'expected a `text` index to be found') + + const heading = { + type: micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.setextHeading, + start: Object.assign({}, events[text][1].start), + end: Object.assign({}, events[events.length - 1][1].end) + } + + // Change the paragraph to setext heading text. + events[text][1].type = micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.setextHeadingText + + // If we have definitions in the content, we’ll keep on having content, + // but we need move it. + if (definition) { + events.splice(text, 0, ['enter', heading, context]) + events.splice(definition + 1, 0, ['exit', events[content][1], context]) + events[content][1].end = Object.assign({}, events[definition][1].end) + } else { + events[content][1] = heading + } + + // Add the heading exit at the end. + events.push(['exit', heading, context]) + + return events +} + +/** + * @this {TokenizeContext} + * @type {Tokenizer} + */ +function tokenizeSetextUnderline(effects, ok, nok) { + const self = this + /** @type {NonNullable} */ + let marker + + return start + + /** + * At start of heading (setext) underline. + * + * ```markdown + * | aa + * > | == + * ^ + * ``` + * + * @type {State} + */ + function start(code) { + let index = self.events.length + /** @type {boolean | undefined} */ + let paragraph + + ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)( + code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.dash || code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.equalsTo, + 'expected `=` or `-`' + ) + + // Find an opening. + while (index--) { + // Skip enter/exit of line ending, line prefix, and content. + // We can now either have a definition or a paragraph. + if ( + self.events[index][1].type !== micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.lineEnding && + self.events[index][1].type !== micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.linePrefix && + self.events[index][1].type !== micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.content + ) { + paragraph = self.events[index][1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.paragraph + break + } + } + + // To do: handle lazy/pierce like `markdown-rs`. + // To do: parse indent like `markdown-rs`. + if (!self.parser.lazy[self.now().line] && (self.interrupt || paragraph)) { + effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.setextHeadingLine) + marker = code + return before(code) + } + + return nok(code) + } + + /** + * After optional whitespace, at `-` or `=`. + * + * ```markdown + * | aa + * > | == + * ^ + * ``` + * + * @type {State} + */ + function before(code) { + effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.setextHeadingLineSequence) + return inside(code) + } + + /** + * In sequence. + * + * ```markdown + * | aa + * > | == + * ^ + * ``` + * + * @type {State} + */ + function inside(code) { + if (code === marker) { + effects.consume(code) + return inside + } + + effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.setextHeadingLineSequence) + + return (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.markdownSpace)(code) + ? (0,micromark_factory_space__WEBPACK_IMPORTED_MODULE_4__.factorySpace)(effects, after, micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.lineSuffix)(code) + : after(code) + } + + /** + * After sequence, after optional whitespace. + * + * ```markdown + * | aa + * > | == + * ^ + * ``` + * + * @type {State} + */ + function after(code) { + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.eof || (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.markdownLineEnding)(code)) { + effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.setextHeadingLine) + return ok(code) + } + + return nok(code) + } +} + + +/***/ }), + +/***/ "../node_modules/micromark-core-commonmark/dev/lib/thematic-break.js": +/*!***************************************************************************!*\ + !*** ../node_modules/micromark-core-commonmark/dev/lib/thematic-break.js ***! + \***************************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ thematicBreak: () => (/* binding */ thematicBreak) +/* harmony export */ }); +/* harmony import */ var micromark_factory_space__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! micromark-factory-space */ "../node_modules/micromark-factory-space/dev/index.js"); +/* harmony import */ var micromark_util_character__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! micromark-util-character */ "../node_modules/micromark-util-character/dev/index.js"); +/* harmony import */ var micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! micromark-util-symbol/codes.js */ "../node_modules/micromark-util-symbol/codes.js"); +/* harmony import */ var micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! micromark-util-symbol/constants.js */ "../node_modules/micromark-util-symbol/constants.js"); +/* harmony import */ var micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! micromark-util-symbol/types.js */ "../node_modules/micromark-util-symbol/types.js"); +/* harmony import */ var uvu_assert__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! uvu/assert */ "../node_modules/uvu/assert/index.mjs"); +/** + * @typedef {import('micromark-util-types').Code} Code + * @typedef {import('micromark-util-types').Construct} Construct + * @typedef {import('micromark-util-types').State} State + * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext + * @typedef {import('micromark-util-types').Tokenizer} Tokenizer + */ + + + + + + + + +/** @type {Construct} */ +const thematicBreak = { + name: 'thematicBreak', + tokenize: tokenizeThematicBreak +} + +/** + * @this {TokenizeContext} + * @type {Tokenizer} + */ +function tokenizeThematicBreak(effects, ok, nok) { + let size = 0 + /** @type {NonNullable} */ + let marker + + return start + + /** + * Start of thematic break. + * + * ```markdown + * > | *** + * ^ + * ``` + * + * @type {State} + */ + function start(code) { + effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.thematicBreak) + // To do: parse indent like `markdown-rs`. + return before(code) + } + + /** + * After optional whitespace, at marker. + * + * ```markdown + * > | *** + * ^ + * ``` + * + * @type {State} + */ + function before(code) { + (0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)( + code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.asterisk || + code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.dash || + code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.underscore, + 'expected `*`, `-`, or `_`' + ) + marker = code + return atBreak(code) + } + + /** + * After something, before something else. + * + * ```markdown + * > | *** + * ^ + * ``` + * + * @type {State} + */ + function atBreak(code) { + if (code === marker) { + effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.thematicBreakSequence) + return sequence(code) + } + + if ( + size >= micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_3__.constants.thematicBreakMarkerCountMin && + (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.eof || (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_4__.markdownLineEnding)(code)) + ) { + effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.thematicBreak) + return ok(code) + } + + return nok(code) + } + + /** + * In sequence. + * + * ```markdown + * > | *** + * ^ + * ``` + * + * @type {State} + */ + function sequence(code) { + if (code === marker) { + effects.consume(code) + size++ + return sequence + } + + effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.thematicBreakSequence) + return (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_4__.markdownSpace)(code) + ? (0,micromark_factory_space__WEBPACK_IMPORTED_MODULE_5__.factorySpace)(effects, atBreak, micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.whitespace)(code) + : atBreak(code) + } +} + + +/***/ }), + +/***/ "../node_modules/micromark-factory-destination/dev/index.js": +/*!******************************************************************!*\ + !*** ../node_modules/micromark-factory-destination/dev/index.js ***! + \******************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ factoryDestination: () => (/* binding */ factoryDestination) +/* harmony export */ }); +/* harmony import */ var micromark_util_character__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! micromark-util-character */ "../node_modules/micromark-util-character/dev/index.js"); +/* harmony import */ var micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! micromark-util-symbol/codes.js */ "../node_modules/micromark-util-symbol/codes.js"); +/* harmony import */ var micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! micromark-util-symbol/constants.js */ "../node_modules/micromark-util-symbol/constants.js"); +/* harmony import */ var micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! micromark-util-symbol/types.js */ "../node_modules/micromark-util-symbol/types.js"); +/** + * @typedef {import('micromark-util-types').Effects} Effects + * @typedef {import('micromark-util-types').State} State + * @typedef {import('micromark-util-types').TokenType} TokenType + */ + + + + + + +/** + * Parse destinations. + * + * ###### Examples + * + * ```markdown + * + * b> + * + * + * a + * a\)b + * a(b)c + * a(b) + * ``` + * + * @param {Effects} effects + * Context. + * @param {State} ok + * State switched to when successful. + * @param {State} nok + * State switched to when unsuccessful. + * @param {TokenType} type + * Type for whole (`` or `b`). + * @param {TokenType} literalType + * Type when enclosed (``). + * @param {TokenType} literalMarkerType + * Type for enclosing (`<` and `>`). + * @param {TokenType} rawType + * Type when not enclosed (`b`). + * @param {TokenType} stringType + * Type for the value (`a` or `b`). + * @param {number | undefined} [max=Infinity] + * Depth of nested parens (inclusive). + * @returns {State} + * Start state. + */ +// eslint-disable-next-line max-params +function factoryDestination( + effects, + ok, + nok, + type, + literalType, + literalMarkerType, + rawType, + stringType, + max +) { + const limit = max || Number.POSITIVE_INFINITY + let balance = 0 + + return start + + /** + * Start of destination. + * + * ```markdown + * > | + * ^ + * > | aa + * ^ + * ``` + * + * @type {State} + */ + function start(code) { + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.lessThan) { + effects.enter(type) + effects.enter(literalType) + effects.enter(literalMarkerType) + effects.consume(code) + effects.exit(literalMarkerType) + return enclosedBefore + } + + // ASCII control, space, closing paren. + if ( + code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.eof || + code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.space || + code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.rightParenthesis || + (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_1__.asciiControl)(code) + ) { + return nok(code) + } + + effects.enter(type) + effects.enter(rawType) + effects.enter(stringType) + effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.chunkString, {contentType: micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_3__.constants.contentTypeString}) + return raw(code) + } + + /** + * After `<`, at an enclosed destination. + * + * ```markdown + * > | + * ^ + * ``` + * + * @type {State} + */ + function enclosedBefore(code) { + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.greaterThan) { + effects.enter(literalMarkerType) + effects.consume(code) + effects.exit(literalMarkerType) + effects.exit(literalType) + effects.exit(type) + return ok + } + + effects.enter(stringType) + effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.chunkString, {contentType: micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_3__.constants.contentTypeString}) + return enclosed(code) + } + + /** + * In enclosed destination. + * + * ```markdown + * > | + * ^ + * ``` + * + * @type {State} + */ + function enclosed(code) { + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.greaterThan) { + effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.chunkString) + effects.exit(stringType) + return enclosedBefore(code) + } + + if ( + code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.eof || + code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.lessThan || + (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_1__.markdownLineEnding)(code) + ) { + return nok(code) + } + + effects.consume(code) + return code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.backslash ? enclosedEscape : enclosed + } + + /** + * After `\`, at a special character. + * + * ```markdown + * > | + * ^ + * ``` + * + * @type {State} + */ + function enclosedEscape(code) { + if ( + code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.lessThan || + code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.greaterThan || + code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.backslash + ) { + effects.consume(code) + return enclosed + } + + return enclosed(code) + } + + /** + * In raw destination. + * + * ```markdown + * > | aa + * ^ + * ``` + * + * @type {State} + */ + function raw(code) { + if ( + !balance && + (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.eof || + code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.rightParenthesis || + (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_1__.markdownLineEndingOrSpace)(code)) + ) { + effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.chunkString) + effects.exit(stringType) + effects.exit(rawType) + effects.exit(type) + return ok(code) + } + + if (balance < limit && code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.leftParenthesis) { + effects.consume(code) + balance++ + return raw + } + + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.rightParenthesis) { + effects.consume(code) + balance-- + return raw + } + + // ASCII control (but *not* `\0`) and space and `(`. + // Note: in `markdown-rs`, `\0` exists in codes, in `micromark-js` it + // doesn’t. + if ( + code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.eof || + code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.space || + code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.leftParenthesis || + (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_1__.asciiControl)(code) + ) { + return nok(code) + } + + effects.consume(code) + return code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.backslash ? rawEscape : raw + } + + /** + * After `\`, at special character. + * + * ```markdown + * > | a\*a + * ^ + * ``` + * + * @type {State} + */ + function rawEscape(code) { + if ( + code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.leftParenthesis || + code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.rightParenthesis || + code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.backslash + ) { + effects.consume(code) + return raw + } + + return raw(code) + } +} + + +/***/ }), + +/***/ "../node_modules/micromark-factory-label/dev/index.js": +/*!************************************************************!*\ + !*** ../node_modules/micromark-factory-label/dev/index.js ***! + \************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ factoryLabel: () => (/* binding */ factoryLabel) +/* harmony export */ }); +/* harmony import */ var micromark_util_character__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! micromark-util-character */ "../node_modules/micromark-util-character/dev/index.js"); +/* harmony import */ var micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! micromark-util-symbol/codes.js */ "../node_modules/micromark-util-symbol/codes.js"); +/* harmony import */ var micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! micromark-util-symbol/constants.js */ "../node_modules/micromark-util-symbol/constants.js"); +/* harmony import */ var micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! micromark-util-symbol/types.js */ "../node_modules/micromark-util-symbol/types.js"); +/* harmony import */ var uvu_assert__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! uvu/assert */ "../node_modules/uvu/assert/index.mjs"); +/** + * @typedef {import('micromark-util-types').Effects} Effects + * @typedef {import('micromark-util-types').State} State + * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext + * @typedef {import('micromark-util-types').TokenType} TokenType + */ + + + + + + + +/** + * Parse labels. + * + * > 👉 **Note**: labels in markdown are capped at 999 characters in the string. + * + * ###### Examples + * + * ```markdown + * [a] + * [a + * b] + * [a\]b] + * ``` + * + * @this {TokenizeContext} + * Tokenize context. + * @param {Effects} effects + * Context. + * @param {State} ok + * State switched to when successful. + * @param {State} nok + * State switched to when unsuccessful. + * @param {TokenType} type + * Type of the whole label (`[a]`). + * @param {TokenType} markerType + * Type for the markers (`[` and `]`). + * @param {TokenType} stringType + * Type for the identifier (`a`). + * @returns {State} + * Start state. + */ +// eslint-disable-next-line max-params +function factoryLabel(effects, ok, nok, type, markerType, stringType) { + const self = this + let size = 0 + /** @type {boolean} */ + let seen + + return start + + /** + * Start of label. + * + * ```markdown + * > | [a] + * ^ + * ``` + * + * @type {State} + */ + function start(code) { + ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.leftSquareBracket, 'expected `[`') + effects.enter(type) + effects.enter(markerType) + effects.consume(code) + effects.exit(markerType) + effects.enter(stringType) + return atBreak + } + + /** + * In label, at something, before something else. + * + * ```markdown + * > | [a] + * ^ + * ``` + * + * @type {State} + */ + function atBreak(code) { + if ( + size > micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_2__.constants.linkReferenceSizeMax || + code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.eof || + code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.leftSquareBracket || + (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.rightSquareBracket && !seen) || + // To do: remove in the future once we’ve switched from + // `micromark-extension-footnote` to `micromark-extension-gfm-footnote`, + // which doesn’t need this. + // Hidden footnotes hook. + /* c8 ignore next 3 */ + (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.caret && + !size && + '_hiddenFootnoteSupport' in self.parser.constructs) + ) { + return nok(code) + } + + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.rightSquareBracket) { + effects.exit(stringType) + effects.enter(markerType) + effects.consume(code) + effects.exit(markerType) + effects.exit(type) + return ok + } + + // To do: indent? Link chunks and EOLs together? + if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.markdownLineEnding)(code)) { + effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_4__.types.lineEnding) + effects.consume(code) + effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_4__.types.lineEnding) + return atBreak + } + + effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_4__.types.chunkString, {contentType: micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_2__.constants.contentTypeString}) + return labelInside(code) + } + + /** + * In label, in text. + * + * ```markdown + * > | [a] + * ^ + * ``` + * + * @type {State} + */ + function labelInside(code) { + if ( + code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.eof || + code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.leftSquareBracket || + code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.rightSquareBracket || + (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.markdownLineEnding)(code) || + size++ > micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_2__.constants.linkReferenceSizeMax + ) { + effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_4__.types.chunkString) + return atBreak(code) + } + + effects.consume(code) + if (!seen) seen = !(0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.markdownSpace)(code) + return code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.backslash ? labelEscape : labelInside + } + + /** + * After `\`, at a special character. + * + * ```markdown + * > | [a\*a] + * ^ + * ``` + * + * @type {State} + */ + function labelEscape(code) { + if ( + code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.leftSquareBracket || + code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.backslash || + code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.rightSquareBracket + ) { + effects.consume(code) + size++ + return labelInside + } + + return labelInside(code) + } +} + + +/***/ }), + +/***/ "../node_modules/micromark-factory-space/dev/index.js": +/*!************************************************************!*\ + !*** ../node_modules/micromark-factory-space/dev/index.js ***! + \************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ factorySpace: () => (/* binding */ factorySpace) +/* harmony export */ }); +/* harmony import */ var micromark_util_character__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! micromark-util-character */ "../node_modules/micromark-util-character/dev/index.js"); +/** + * @typedef {import('micromark-util-types').Effects} Effects + * @typedef {import('micromark-util-types').State} State + * @typedef {import('micromark-util-types').TokenType} TokenType + */ + + + +// To do: implement `spaceOrTab`, `spaceOrTabMinMax`, `spaceOrTabWithOptions`. + +/** + * Parse spaces and tabs. + * + * There is no `nok` parameter: + * + * * spaces in markdown are often optional, in which case this factory can be + * used and `ok` will be switched to whether spaces were found or not + * * one line ending or space can be detected with `markdownSpace(code)` right + * before using `factorySpace` + * + * ###### Examples + * + * Where `␉` represents a tab (plus how much it expands) and `␠` represents a + * single space. + * + * ```markdown + * ␉ + * ␠␠␠␠ + * ␉␠ + * ``` + * + * @param {Effects} effects + * Context. + * @param {State} ok + * State switched to when successful. + * @param {TokenType} type + * Type (`' \t'`). + * @param {number | undefined} [max=Infinity] + * Max (exclusive). + * @returns + * Start state. + */ +function factorySpace(effects, ok, type, max) { + const limit = max ? max - 1 : Number.POSITIVE_INFINITY + let size = 0 + + return start + + /** @type {State} */ + function start(code) { + if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_0__.markdownSpace)(code)) { + effects.enter(type) + return prefix(code) + } + + return ok(code) + } + + /** @type {State} */ + function prefix(code) { + if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_0__.markdownSpace)(code) && size++ < limit) { + effects.consume(code) + return prefix + } + + effects.exit(type) + return ok(code) + } +} + + +/***/ }), + +/***/ "../node_modules/micromark-factory-title/dev/index.js": +/*!************************************************************!*\ + !*** ../node_modules/micromark-factory-title/dev/index.js ***! + \************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ factoryTitle: () => (/* binding */ factoryTitle) +/* harmony export */ }); +/* harmony import */ var micromark_factory_space__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! micromark-factory-space */ "../node_modules/micromark-factory-space/dev/index.js"); +/* harmony import */ var micromark_util_character__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! micromark-util-character */ "../node_modules/micromark-util-character/dev/index.js"); +/* harmony import */ var micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! micromark-util-symbol/codes.js */ "../node_modules/micromark-util-symbol/codes.js"); +/* harmony import */ var micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! micromark-util-symbol/constants.js */ "../node_modules/micromark-util-symbol/constants.js"); +/* harmony import */ var micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! micromark-util-symbol/types.js */ "../node_modules/micromark-util-symbol/types.js"); +/** + * @typedef {import('micromark-util-types').Code} Code + * @typedef {import('micromark-util-types').Effects} Effects + * @typedef {import('micromark-util-types').State} State + * @typedef {import('micromark-util-types').TokenType} TokenType + */ + + + + + + + +/** + * Parse titles. + * + * ###### Examples + * + * ```markdown + * "a" + * 'b' + * (c) + * "a + * b" + * 'a + * b' + * (a\)b) + * ``` + * + * @param {Effects} effects + * Context. + * @param {State} ok + * State switched to when successful. + * @param {State} nok + * State switched to when unsuccessful. + * @param {TokenType} type + * Type of the whole title (`"a"`, `'b'`, `(c)`). + * @param {TokenType} markerType + * Type for the markers (`"`, `'`, `(`, and `)`). + * @param {TokenType} stringType + * Type for the value (`a`). + * @returns {State} + * Start state. + */ +// eslint-disable-next-line max-params +function factoryTitle(effects, ok, nok, type, markerType, stringType) { + /** @type {NonNullable} */ + let marker + + return start + + /** + * Start of title. + * + * ```markdown + * > | "a" + * ^ + * ``` + * + * @type {State} + */ + function start(code) { + if ( + code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.quotationMark || + code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.apostrophe || + code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.leftParenthesis + ) { + effects.enter(type) + effects.enter(markerType) + effects.consume(code) + effects.exit(markerType) + marker = code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.leftParenthesis ? micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.rightParenthesis : code + return begin + } + + return nok(code) + } + + /** + * After opening marker. + * + * This is also used at the closing marker. + * + * ```markdown + * > | "a" + * ^ + * ``` + * + * @type {State} + */ + function begin(code) { + if (code === marker) { + effects.enter(markerType) + effects.consume(code) + effects.exit(markerType) + effects.exit(type) + return ok + } + + effects.enter(stringType) + return atBreak(code) + } + + /** + * At something, before something else. + * + * ```markdown + * > | "a" + * ^ + * ``` + * + * @type {State} + */ + function atBreak(code) { + if (code === marker) { + effects.exit(stringType) + return begin(marker) + } + + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.eof) { + return nok(code) + } + + // Note: blank lines can’t exist in content. + if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_1__.markdownLineEnding)(code)) { + // To do: use `space_or_tab_eol_with_options`, connect. + effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.lineEnding) + effects.consume(code) + effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.lineEnding) + return (0,micromark_factory_space__WEBPACK_IMPORTED_MODULE_3__.factorySpace)(effects, atBreak, micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.linePrefix) + } + + effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.chunkString, {contentType: micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_4__.constants.contentTypeString}) + return inside(code) + } + + /** + * + * + * @type {State} + */ + function inside(code) { + if (code === marker || code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.eof || (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_1__.markdownLineEnding)(code)) { + effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.chunkString) + return atBreak(code) + } + + effects.consume(code) + return code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.backslash ? escape : inside + } + + /** + * After `\`, at a special character. + * + * ```markdown + * > | "a\*b" + * ^ + * ``` + * + * @type {State} + */ + function escape(code) { + if (code === marker || code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.backslash) { + effects.consume(code) + return inside + } + + return inside(code) + } +} + + +/***/ }), + +/***/ "../node_modules/micromark-factory-whitespace/dev/index.js": +/*!*****************************************************************!*\ + !*** ../node_modules/micromark-factory-whitespace/dev/index.js ***! + \*****************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ factoryWhitespace: () => (/* binding */ factoryWhitespace) +/* harmony export */ }); +/* harmony import */ var micromark_factory_space__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! micromark-factory-space */ "../node_modules/micromark-factory-space/dev/index.js"); +/* harmony import */ var micromark_util_character__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! micromark-util-character */ "../node_modules/micromark-util-character/dev/index.js"); +/* harmony import */ var micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! micromark-util-symbol/types.js */ "../node_modules/micromark-util-symbol/types.js"); +/** + * @typedef {import('micromark-util-types').Effects} Effects + * @typedef {import('micromark-util-types').State} State + */ + + + + + +/** + * Parse spaces and tabs. + * + * There is no `nok` parameter: + * + * * line endings or spaces in markdown are often optional, in which case this + * factory can be used and `ok` will be switched to whether spaces were found + * or not + * * one line ending or space can be detected with + * `markdownLineEndingOrSpace(code)` right before using `factoryWhitespace` + * + * @param {Effects} effects + * Context. + * @param {State} ok + * State switched to when successful. + * @returns + * Start state. + */ +function factoryWhitespace(effects, ok) { + /** @type {boolean} */ + let seen + + return start + + /** @type {State} */ + function start(code) { + if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_0__.markdownLineEnding)(code)) { + effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.lineEnding) + effects.consume(code) + effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.lineEnding) + seen = true + return start + } + + if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_0__.markdownSpace)(code)) { + return (0,micromark_factory_space__WEBPACK_IMPORTED_MODULE_2__.factorySpace)( + effects, + start, + seen ? micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.linePrefix : micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.lineSuffix + )(code) + } + + return ok(code) + } +} + + +/***/ }), + +/***/ "../node_modules/micromark-util-character/dev/index.js": +/*!*************************************************************!*\ + !*** ../node_modules/micromark-util-character/dev/index.js ***! + \*************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ asciiAlpha: () => (/* binding */ asciiAlpha), +/* harmony export */ asciiAlphanumeric: () => (/* binding */ asciiAlphanumeric), +/* harmony export */ asciiAtext: () => (/* binding */ asciiAtext), +/* harmony export */ asciiControl: () => (/* binding */ asciiControl), +/* harmony export */ asciiDigit: () => (/* binding */ asciiDigit), +/* harmony export */ asciiHexDigit: () => (/* binding */ asciiHexDigit), +/* harmony export */ asciiPunctuation: () => (/* binding */ asciiPunctuation), +/* harmony export */ markdownLineEnding: () => (/* binding */ markdownLineEnding), +/* harmony export */ markdownLineEndingOrSpace: () => (/* binding */ markdownLineEndingOrSpace), +/* harmony export */ markdownSpace: () => (/* binding */ markdownSpace), +/* harmony export */ unicodePunctuation: () => (/* binding */ unicodePunctuation), +/* harmony export */ unicodeWhitespace: () => (/* binding */ unicodeWhitespace) +/* harmony export */ }); +/* harmony import */ var micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! micromark-util-symbol/codes.js */ "../node_modules/micromark-util-symbol/codes.js"); +/* harmony import */ var _lib_unicode_punctuation_regex_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./lib/unicode-punctuation-regex.js */ "../node_modules/micromark-util-character/dev/lib/unicode-punctuation-regex.js"); +/** + * @typedef {import('micromark-util-types').Code} Code + */ + + + + +/** + * Check whether the character code represents an ASCII alpha (`a` through `z`, + * case insensitive). + * + * An **ASCII alpha** is an ASCII upper alpha or ASCII lower alpha. + * + * An **ASCII upper alpha** is a character in the inclusive range U+0041 (`A`) + * to U+005A (`Z`). + * + * An **ASCII lower alpha** is a character in the inclusive range U+0061 (`a`) + * to U+007A (`z`). + * + * @param code + * Code. + * @returns + * Whether it matches. + */ +const asciiAlpha = regexCheck(/[A-Za-z]/) + +/** + * Check whether the character code represents an ASCII alphanumeric (`a` + * through `z`, case insensitive, or `0` through `9`). + * + * An **ASCII alphanumeric** is an ASCII digit (see `asciiDigit`) or ASCII alpha + * (see `asciiAlpha`). + * + * @param code + * Code. + * @returns + * Whether it matches. + */ +const asciiAlphanumeric = regexCheck(/[\dA-Za-z]/) + +/** + * Check whether the character code represents an ASCII atext. + * + * atext is an ASCII alphanumeric (see `asciiAlphanumeric`), or a character in + * the inclusive ranges U+0023 NUMBER SIGN (`#`) to U+0027 APOSTROPHE (`'`), + * U+002A ASTERISK (`*`), U+002B PLUS SIGN (`+`), U+002D DASH (`-`), U+002F + * SLASH (`/`), U+003D EQUALS TO (`=`), U+003F QUESTION MARK (`?`), U+005E + * CARET (`^`) to U+0060 GRAVE ACCENT (`` ` ``), or U+007B LEFT CURLY BRACE + * (`{`) to U+007E TILDE (`~`). + * + * See: + * **\[RFC5322]**: + * [Internet Message Format](https://tools.ietf.org/html/rfc5322). + * P. Resnick. + * IETF. + * + * @param code + * Code. + * @returns + * Whether it matches. + */ +const asciiAtext = regexCheck(/[#-'*+\--9=?A-Z^-~]/) + +/** + * Check whether a character code is an ASCII control character. + * + * An **ASCII control** is a character in the inclusive range U+0000 NULL (NUL) + * to U+001F (US), or U+007F (DEL). + * + * @param {Code} code + * Code. + * @returns {boolean} + * Whether it matches. + */ +function asciiControl(code) { + return ( + // Special whitespace codes (which have negative values), C0 and Control + // character DEL + code !== null && (code < micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.space || code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.del) + ) +} + +/** + * Check whether the character code represents an ASCII digit (`0` through `9`). + * + * An **ASCII digit** is a character in the inclusive range U+0030 (`0`) to + * U+0039 (`9`). + * + * @param code + * Code. + * @returns + * Whether it matches. + */ +const asciiDigit = regexCheck(/\d/) + +/** + * Check whether the character code represents an ASCII hex digit (`a` through + * `f`, case insensitive, or `0` through `9`). + * + * An **ASCII hex digit** is an ASCII digit (see `asciiDigit`), ASCII upper hex + * digit, or an ASCII lower hex digit. + * + * An **ASCII upper hex digit** is a character in the inclusive range U+0041 + * (`A`) to U+0046 (`F`). + * + * An **ASCII lower hex digit** is a character in the inclusive range U+0061 + * (`a`) to U+0066 (`f`). + * + * @param code + * Code. + * @returns + * Whether it matches. + */ +const asciiHexDigit = regexCheck(/[\dA-Fa-f]/) + +/** + * Check whether the character code represents ASCII punctuation. + * + * An **ASCII punctuation** is a character in the inclusive ranges U+0021 + * EXCLAMATION MARK (`!`) to U+002F SLASH (`/`), U+003A COLON (`:`) to U+0040 AT + * SIGN (`@`), U+005B LEFT SQUARE BRACKET (`[`) to U+0060 GRAVE ACCENT + * (`` ` ``), or U+007B LEFT CURLY BRACE (`{`) to U+007E TILDE (`~`). + * + * @param code + * Code. + * @returns + * Whether it matches. + */ +const asciiPunctuation = regexCheck(/[!-/:-@[-`{-~]/) + +/** + * Check whether a character code is a markdown line ending. + * + * A **markdown line ending** is the virtual characters M-0003 CARRIAGE RETURN + * LINE FEED (CRLF), M-0004 LINE FEED (LF) and M-0005 CARRIAGE RETURN (CR). + * + * In micromark, the actual character U+000A LINE FEED (LF) and U+000D CARRIAGE + * RETURN (CR) are replaced by these virtual characters depending on whether + * they occurred together. + * + * @param {Code} code + * Code. + * @returns {boolean} + * Whether it matches. + */ +function markdownLineEnding(code) { + return code !== null && code < micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.horizontalTab +} + +/** + * Check whether a character code is a markdown line ending (see + * `markdownLineEnding`) or markdown space (see `markdownSpace`). + * + * @param {Code} code + * Code. + * @returns {boolean} + * Whether it matches. + */ +function markdownLineEndingOrSpace(code) { + return code !== null && (code < micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.nul || code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.space) +} + +/** + * Check whether a character code is a markdown space. + * + * A **markdown space** is the concrete character U+0020 SPACE (SP) and the + * virtual characters M-0001 VIRTUAL SPACE (VS) and M-0002 HORIZONTAL TAB (HT). + * + * In micromark, the actual character U+0009 CHARACTER TABULATION (HT) is + * replaced by one M-0002 HORIZONTAL TAB (HT) and between 0 and 3 M-0001 VIRTUAL + * SPACE (VS) characters, depending on the column at which the tab occurred. + * + * @param {Code} code + * Code. + * @returns {boolean} + * Whether it matches. + */ +function markdownSpace(code) { + return ( + code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.horizontalTab || + code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.virtualSpace || + code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.space + ) +} + +// Size note: removing ASCII from the regex and using `asciiPunctuation` here +// In fact adds to the bundle size. +/** + * Check whether the character code represents Unicode punctuation. + * + * A **Unicode punctuation** is a character in the Unicode `Pc` (Punctuation, + * Connector), `Pd` (Punctuation, Dash), `Pe` (Punctuation, Close), `Pf` + * (Punctuation, Final quote), `Pi` (Punctuation, Initial quote), `Po` + * (Punctuation, Other), or `Ps` (Punctuation, Open) categories, or an ASCII + * punctuation (see `asciiPunctuation`). + * + * See: + * **\[UNICODE]**: + * [The Unicode Standard](https://www.unicode.org/versions/). + * Unicode Consortium. + * + * @param code + * Code. + * @returns + * Whether it matches. + */ +const unicodePunctuation = regexCheck(_lib_unicode_punctuation_regex_js__WEBPACK_IMPORTED_MODULE_1__.unicodePunctuationRegex) + +/** + * Check whether the character code represents Unicode whitespace. + * + * Note that this does handle micromark specific markdown whitespace characters. + * See `markdownLineEndingOrSpace` to check that. + * + * A **Unicode whitespace** is a character in the Unicode `Zs` (Separator, + * Space) category, or U+0009 CHARACTER TABULATION (HT), U+000A LINE FEED (LF), + * U+000C (FF), or U+000D CARRIAGE RETURN (CR) (**\[UNICODE]**). + * + * See: + * **\[UNICODE]**: + * [The Unicode Standard](https://www.unicode.org/versions/). + * Unicode Consortium. + * + * @param code + * Code. + * @returns + * Whether it matches. + */ +const unicodeWhitespace = regexCheck(/\s/) + +/** + * Create a code check from a regex. + * + * @param {RegExp} regex + * @returns {(code: Code) => boolean} + */ +function regexCheck(regex) { + return check + + /** + * Check whether a code matches the bound regex. + * + * @param {Code} code + * Character code. + * @returns {boolean} + * Whether the character code matches the bound regex. + */ + function check(code) { + return code !== null && regex.test(String.fromCharCode(code)) + } +} + + +/***/ }), + +/***/ "../node_modules/micromark-util-character/dev/lib/unicode-punctuation-regex.js": +/*!*************************************************************************************!*\ + !*** ../node_modules/micromark-util-character/dev/lib/unicode-punctuation-regex.js ***! + \*************************************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ unicodePunctuationRegex: () => (/* binding */ unicodePunctuationRegex) +/* harmony export */ }); +// This module is generated by `script/`. +// +// CommonMark handles attention (emphasis, strong) markers based on what comes +// before or after them. +// One such difference is if those characters are Unicode punctuation. +// This script is generated from the Unicode data. + +/** + * Regular expression that matches a unicode punctuation character. + */ +const unicodePunctuationRegex = + /[!-/:-@[-`{-~\u00A1\u00A7\u00AB\u00B6\u00B7\u00BB\u00BF\u037E\u0387\u055A-\u055F\u0589\u058A\u05BE\u05C0\u05C3\u05C6\u05F3\u05F4\u0609\u060A\u060C\u060D\u061B\u061D-\u061F\u066A-\u066D\u06D4\u0700-\u070D\u07F7-\u07F9\u0830-\u083E\u085E\u0964\u0965\u0970\u09FD\u0A76\u0AF0\u0C77\u0C84\u0DF4\u0E4F\u0E5A\u0E5B\u0F04-\u0F12\u0F14\u0F3A-\u0F3D\u0F85\u0FD0-\u0FD4\u0FD9\u0FDA\u104A-\u104F\u10FB\u1360-\u1368\u1400\u166E\u169B\u169C\u16EB-\u16ED\u1735\u1736\u17D4-\u17D6\u17D8-\u17DA\u1800-\u180A\u1944\u1945\u1A1E\u1A1F\u1AA0-\u1AA6\u1AA8-\u1AAD\u1B5A-\u1B60\u1B7D\u1B7E\u1BFC-\u1BFF\u1C3B-\u1C3F\u1C7E\u1C7F\u1CC0-\u1CC7\u1CD3\u2010-\u2027\u2030-\u2043\u2045-\u2051\u2053-\u205E\u207D\u207E\u208D\u208E\u2308-\u230B\u2329\u232A\u2768-\u2775\u27C5\u27C6\u27E6-\u27EF\u2983-\u2998\u29D8-\u29DB\u29FC\u29FD\u2CF9-\u2CFC\u2CFE\u2CFF\u2D70\u2E00-\u2E2E\u2E30-\u2E4F\u2E52-\u2E5D\u3001-\u3003\u3008-\u3011\u3014-\u301F\u3030\u303D\u30A0\u30FB\uA4FE\uA4FF\uA60D-\uA60F\uA673\uA67E\uA6F2-\uA6F7\uA874-\uA877\uA8CE\uA8CF\uA8F8-\uA8FA\uA8FC\uA92E\uA92F\uA95F\uA9C1-\uA9CD\uA9DE\uA9DF\uAA5C-\uAA5F\uAADE\uAADF\uAAF0\uAAF1\uABEB\uFD3E\uFD3F\uFE10-\uFE19\uFE30-\uFE52\uFE54-\uFE61\uFE63\uFE68\uFE6A\uFE6B\uFF01-\uFF03\uFF05-\uFF0A\uFF0C-\uFF0F\uFF1A\uFF1B\uFF1F\uFF20\uFF3B-\uFF3D\uFF3F\uFF5B\uFF5D\uFF5F-\uFF65]/ + + +/***/ }), + +/***/ "../node_modules/micromark-util-chunked/dev/index.js": +/*!***********************************************************!*\ + !*** ../node_modules/micromark-util-chunked/dev/index.js ***! + \***********************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ push: () => (/* binding */ push), +/* harmony export */ splice: () => (/* binding */ splice) +/* harmony export */ }); +/* harmony import */ var micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! micromark-util-symbol/constants.js */ "../node_modules/micromark-util-symbol/constants.js"); + + +/** + * Like `Array#splice`, but smarter for giant arrays. + * + * `Array#splice` takes all items to be inserted as individual argument which + * causes a stack overflow in V8 when trying to insert 100k items for instance. + * + * Otherwise, this does not return the removed items, and takes `items` as an + * array instead of rest parameters. + * + * @template {unknown} T + * Item type. + * @param {Array} list + * List to operate on. + * @param {number} start + * Index to remove/insert at (can be negative). + * @param {number} remove + * Number of items to remove. + * @param {Array} items + * Items to inject into `list`. + * @returns {void} + * Nothing. + */ +function splice(list, start, remove, items) { + const end = list.length + let chunkStart = 0 + /** @type {Array} */ + let parameters + + // Make start between zero and `end` (included). + if (start < 0) { + start = -start > end ? 0 : end + start + } else { + start = start > end ? end : start + } + + remove = remove > 0 ? remove : 0 + + // No need to chunk the items if there’s only a couple (10k) items. + if (items.length < micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_0__.constants.v8MaxSafeChunkSize) { + parameters = Array.from(items) + parameters.unshift(start, remove) + // @ts-expect-error Hush, it’s fine. + list.splice(...parameters) + } else { + // Delete `remove` items starting from `start` + if (remove) list.splice(start, remove) + + // Insert the items in chunks to not cause stack overflows. + while (chunkStart < items.length) { + parameters = items.slice( + chunkStart, + chunkStart + micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_0__.constants.v8MaxSafeChunkSize + ) + parameters.unshift(start, 0) + // @ts-expect-error Hush, it’s fine. + list.splice(...parameters) + + chunkStart += micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_0__.constants.v8MaxSafeChunkSize + start += micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_0__.constants.v8MaxSafeChunkSize + } + } +} + +/** + * Append `items` (an array) at the end of `list` (another array). + * When `list` was empty, returns `items` instead. + * + * This prevents a potentially expensive operation when `list` is empty, + * and adds items in batches to prevent V8 from hanging. + * + * @template {unknown} T + * Item type. + * @param {Array} list + * List to operate on. + * @param {Array} items + * Items to add to `list`. + * @returns {Array} + * Either `list` or `items`. + */ +function push(list, items) { + if (list.length > 0) { + splice(list, list.length, 0, items) + return list + } + + return items +} + + +/***/ }), + +/***/ "../node_modules/micromark-util-classify-character/dev/index.js": +/*!**********************************************************************!*\ + !*** ../node_modules/micromark-util-classify-character/dev/index.js ***! + \**********************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ classifyCharacter: () => (/* binding */ classifyCharacter) +/* harmony export */ }); +/* harmony import */ var micromark_util_character__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! micromark-util-character */ "../node_modules/micromark-util-character/dev/index.js"); +/* harmony import */ var micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! micromark-util-symbol/codes.js */ "../node_modules/micromark-util-symbol/codes.js"); +/* harmony import */ var micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! micromark-util-symbol/constants.js */ "../node_modules/micromark-util-symbol/constants.js"); +/** + * @typedef {import('micromark-util-types').Code} Code + */ + + + + + +/** + * Classify whether a code represents whitespace, punctuation, or something + * else. + * + * Used for attention (emphasis, strong), whose sequences can open or close + * based on the class of surrounding characters. + * + * > 👉 **Note**: eof (`null`) is seen as whitespace. + * + * @param {Code} code + * Code. + * @returns {typeof constants.characterGroupWhitespace | typeof constants.characterGroupPunctuation | undefined} + * Group. + */ +function classifyCharacter(code) { + if ( + code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.eof || + (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_1__.markdownLineEndingOrSpace)(code) || + (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_1__.unicodeWhitespace)(code) + ) { + return micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_2__.constants.characterGroupWhitespace + } + + if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_1__.unicodePunctuation)(code)) { + return micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_2__.constants.characterGroupPunctuation + } +} + + +/***/ }), + +/***/ "../node_modules/micromark-util-combine-extensions/index.js": +/*!******************************************************************!*\ + !*** ../node_modules/micromark-util-combine-extensions/index.js ***! + \******************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ combineExtensions: () => (/* binding */ combineExtensions), +/* harmony export */ combineHtmlExtensions: () => (/* binding */ combineHtmlExtensions) +/* harmony export */ }); +/* harmony import */ var micromark_util_chunked__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! micromark-util-chunked */ "../node_modules/micromark-util-chunked/dev/index.js"); +/** + * @typedef {import('micromark-util-types').Extension} Extension + * @typedef {import('micromark-util-types').Handles} Handles + * @typedef {import('micromark-util-types').HtmlExtension} HtmlExtension + * @typedef {import('micromark-util-types').NormalizedExtension} NormalizedExtension + */ + + + +const hasOwnProperty = {}.hasOwnProperty + +/** + * Combine multiple syntax extensions into one. + * + * @param {Array} extensions + * List of syntax extensions. + * @returns {NormalizedExtension} + * A single combined extension. + */ +function combineExtensions(extensions) { + /** @type {NormalizedExtension} */ + const all = {} + let index = -1 + + while (++index < extensions.length) { + syntaxExtension(all, extensions[index]) + } + + return all +} + +/** + * Merge `extension` into `all`. + * + * @param {NormalizedExtension} all + * Extension to merge into. + * @param {Extension} extension + * Extension to merge. + * @returns {void} + */ +function syntaxExtension(all, extension) { + /** @type {keyof Extension} */ + let hook + + for (hook in extension) { + const maybe = hasOwnProperty.call(all, hook) ? all[hook] : undefined + /** @type {Record} */ + const left = maybe || (all[hook] = {}) + /** @type {Record | undefined} */ + const right = extension[hook] + /** @type {string} */ + let code + + if (right) { + for (code in right) { + if (!hasOwnProperty.call(left, code)) left[code] = [] + const value = right[code] + constructs( + // @ts-expect-error Looks like a list. + left[code], + Array.isArray(value) ? value : value ? [value] : [] + ) + } + } + } +} + +/** + * Merge `list` into `existing` (both lists of constructs). + * Mutates `existing`. + * + * @param {Array} existing + * @param {Array} list + * @returns {void} + */ +function constructs(existing, list) { + let index = -1 + /** @type {Array} */ + const before = [] + + while (++index < list.length) { + // @ts-expect-error Looks like an object. + ;(list[index].add === 'after' ? existing : before).push(list[index]) + } + + (0,micromark_util_chunked__WEBPACK_IMPORTED_MODULE_0__.splice)(existing, 0, 0, before) +} + +/** + * Combine multiple HTML extensions into one. + * + * @param {Array} htmlExtensions + * List of HTML extensions. + * @returns {HtmlExtension} + * A single combined HTML extension. + */ +function combineHtmlExtensions(htmlExtensions) { + /** @type {HtmlExtension} */ + const handlers = {} + let index = -1 + + while (++index < htmlExtensions.length) { + htmlExtension(handlers, htmlExtensions[index]) + } + + return handlers +} + +/** + * Merge `extension` into `all`. + * + * @param {HtmlExtension} all + * Extension to merge into. + * @param {HtmlExtension} extension + * Extension to merge. + * @returns {void} + */ +function htmlExtension(all, extension) { + /** @type {keyof HtmlExtension} */ + let hook + + for (hook in extension) { + const maybe = hasOwnProperty.call(all, hook) ? all[hook] : undefined + const left = maybe || (all[hook] = {}) + const right = extension[hook] + /** @type {keyof Handles} */ + let type + + if (right) { + for (type in right) { + // @ts-expect-error assume document vs regular handler are managed correctly. + left[type] = right[type] + } + } + } +} + + +/***/ }), + +/***/ "../node_modules/micromark-util-decode-numeric-character-reference/dev/index.js": +/*!**************************************************************************************!*\ + !*** ../node_modules/micromark-util-decode-numeric-character-reference/dev/index.js ***! + \**************************************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ decodeNumericCharacterReference: () => (/* binding */ decodeNumericCharacterReference) +/* harmony export */ }); +/* harmony import */ var micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! micromark-util-symbol/codes.js */ "../node_modules/micromark-util-symbol/codes.js"); +/* harmony import */ var micromark_util_symbol_values_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! micromark-util-symbol/values.js */ "../node_modules/micromark-util-symbol/values.js"); + + + +/** + * Turn the number (in string form as either hexa- or plain decimal) coming from + * a numeric character reference into a character. + * + * Sort of like `String.fromCharCode(Number.parseInt(value, base))`, but makes + * non-characters and control characters safe. + * + * @param {string} value + * Value to decode. + * @param {number} base + * Numeric base. + * @returns {string} + * Character. + */ +function decodeNumericCharacterReference(value, base) { + const code = Number.parseInt(value, base) + + if ( + // C0 except for HT, LF, FF, CR, space. + code < micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.ht || + code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.vt || + (code > micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.cr && code < micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.space) || + // Control character (DEL) of C0, and C1 controls. + (code > micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.tilde && code < 160) || + // Lone high surrogates and low surrogates. + (code > 55295 && code < 57344) || + // Noncharacters. + (code > 64975 && code < 65008) || + /* eslint-disable no-bitwise */ + (code & 65535) === 65535 || + (code & 65535) === 65534 || + /* eslint-enable no-bitwise */ + // Out of range + code > 1114111 + ) { + return micromark_util_symbol_values_js__WEBPACK_IMPORTED_MODULE_1__.values.replacementCharacter + } + + return String.fromCharCode(code) +} + + +/***/ }), + +/***/ "../node_modules/micromark-util-decode-string/dev/index.js": +/*!*****************************************************************!*\ + !*** ../node_modules/micromark-util-decode-string/dev/index.js ***! + \*****************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ decodeString: () => (/* binding */ decodeString) +/* harmony export */ }); +/* harmony import */ var decode_named_character_reference__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! decode-named-character-reference */ "../node_modules/decode-named-character-reference/index.dom.js"); +/* harmony import */ var micromark_util_decode_numeric_character_reference__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! micromark-util-decode-numeric-character-reference */ "../node_modules/micromark-util-decode-numeric-character-reference/dev/index.js"); +/* harmony import */ var micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! micromark-util-symbol/codes.js */ "../node_modules/micromark-util-symbol/codes.js"); +/* harmony import */ var micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! micromark-util-symbol/constants.js */ "../node_modules/micromark-util-symbol/constants.js"); + + + + + +const characterEscapeOrReference = + /\\([!-/:-@[-`{-~])|&(#(?:\d{1,7}|x[\da-f]{1,6})|[\da-z]{1,31});/gi + +/** + * Decode markdown strings (which occur in places such as fenced code info + * strings, destinations, labels, and titles). + * + * The “string” content type allows character escapes and -references. + * This decodes those. + * + * @param {string} value + * Value to decode. + * @returns {string} + * Decoded value. + */ +function decodeString(value) { + return value.replace(characterEscapeOrReference, decode) +} + +/** + * @param {string} $0 + * @param {string} $1 + * @param {string} $2 + * @returns {string} + */ +function decode($0, $1, $2) { + if ($1) { + // Escape. + return $1 + } + + // Reference. + const head = $2.charCodeAt(0) + + if (head === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.numberSign) { + const head = $2.charCodeAt(1) + const hex = head === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.lowercaseX || head === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.uppercaseX + return (0,micromark_util_decode_numeric_character_reference__WEBPACK_IMPORTED_MODULE_1__.decodeNumericCharacterReference)( + $2.slice(hex ? 2 : 1), + hex ? micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_2__.constants.numericBaseHexadecimal : micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_2__.constants.numericBaseDecimal + ) + } + + return (0,decode_named_character_reference__WEBPACK_IMPORTED_MODULE_3__.decodeNamedCharacterReference)($2) || $0 +} + + +/***/ }), + +/***/ "../node_modules/micromark-util-encode/index.js": +/*!******************************************************!*\ + !*** ../node_modules/micromark-util-encode/index.js ***! + \******************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ encode: () => (/* binding */ encode) +/* harmony export */ }); +const characterReferences = {'"': 'quot', '&': 'amp', '<': 'lt', '>': 'gt'} + +/** + * Encode only the dangerous HTML characters. + * + * This ensures that certain characters which have special meaning in HTML are + * dealt with. + * Technically, we can skip `>` and `"` in many cases, but CM includes them. + * + * @param {string} value + * Value to encode. + * @returns {string} + * Encoded value. + */ +function encode(value) { + return value.replace(/["&<>]/g, replace) + + /** + * @param {string} value + * @returns {string} + */ + function replace(value) { + // @ts-expect-error Hush, it’s fine. + return '&' + characterReferences[value] + ';' + } +} + + +/***/ }), + +/***/ "../node_modules/micromark-util-html-tag-name/index.js": +/*!*************************************************************!*\ + !*** ../node_modules/micromark-util-html-tag-name/index.js ***! + \*************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ htmlBlockNames: () => (/* binding */ htmlBlockNames), +/* harmony export */ htmlRawNames: () => (/* binding */ htmlRawNames) +/* harmony export */ }); +/** + * List of lowercase HTML “block” tag names. + * + * The list, when parsing HTML (flow), results in more relaxed rules (condition + * 6). + * Because they are known blocks, the HTML-like syntax doesn’t have to be + * strictly parsed. + * For tag names not in this list, a more strict algorithm (condition 7) is used + * to detect whether the HTML-like syntax is seen as HTML (flow) or not. + * + * This is copied from: + * . + * + * > 👉 **Note**: `search` was added in `CommonMark@0.31`. + */ +const htmlBlockNames = [ + 'address', + 'article', + 'aside', + 'base', + 'basefont', + 'blockquote', + 'body', + 'caption', + 'center', + 'col', + 'colgroup', + 'dd', + 'details', + 'dialog', + 'dir', + 'div', + 'dl', + 'dt', + 'fieldset', + 'figcaption', + 'figure', + 'footer', + 'form', + 'frame', + 'frameset', + 'h1', + 'h2', + 'h3', + 'h4', + 'h5', + 'h6', + 'head', + 'header', + 'hr', + 'html', + 'iframe', + 'legend', + 'li', + 'link', + 'main', + 'menu', + 'menuitem', + 'nav', + 'noframes', + 'ol', + 'optgroup', + 'option', + 'p', + 'param', + 'search', + 'section', + 'summary', + 'table', + 'tbody', + 'td', + 'tfoot', + 'th', + 'thead', + 'title', + 'tr', + 'track', + 'ul' +] + +/** + * List of lowercase HTML “raw” tag names. + * + * The list, when parsing HTML (flow), results in HTML that can include lines + * without exiting, until a closing tag also in this list is found (condition + * 1). + * + * This module is copied from: + * . + * + * > 👉 **Note**: `textarea` was added in `CommonMark@0.30`. + */ +const htmlRawNames = ['pre', 'script', 'style', 'textarea'] + + +/***/ }), + +/***/ "../node_modules/micromark-util-normalize-identifier/dev/index.js": +/*!************************************************************************!*\ + !*** ../node_modules/micromark-util-normalize-identifier/dev/index.js ***! + \************************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ normalizeIdentifier: () => (/* binding */ normalizeIdentifier) +/* harmony export */ }); +/* harmony import */ var micromark_util_symbol_values_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! micromark-util-symbol/values.js */ "../node_modules/micromark-util-symbol/values.js"); + + +/** + * Normalize an identifier (as found in references, definitions). + * + * Collapses markdown whitespace, trim, and then lower- and uppercase. + * + * Some characters are considered “uppercase”, such as U+03F4 (`ϴ`), but if their + * lowercase counterpart (U+03B8 (`θ`)) is uppercased will result in a different + * uppercase character (U+0398 (`Θ`)). + * So, to get a canonical form, we perform both lower- and uppercase. + * + * Using uppercase last makes sure keys will never interact with default + * prototypal values (such as `constructor`): nothing in the prototype of + * `Object` is uppercase. + * + * @param {string} value + * Identifier to normalize. + * @returns {string} + * Normalized identifier. + */ +function normalizeIdentifier(value) { + return ( + value + // Collapse markdown whitespace. + .replace(/[\t\n\r ]+/g, micromark_util_symbol_values_js__WEBPACK_IMPORTED_MODULE_0__.values.space) + // Trim. + .replace(/^ | $/g, '') + // Some characters are considered “uppercase”, but if their lowercase + // counterpart is uppercased will result in a different uppercase + // character. + // Hence, to get that form, we perform both lower- and uppercase. + // Upper case makes sure keys will not interact with default prototypal + // methods: no method is uppercase. + .toLowerCase() + .toUpperCase() + ) +} + + +/***/ }), + +/***/ "../node_modules/micromark-util-resolve-all/index.js": +/*!***********************************************************!*\ + !*** ../node_modules/micromark-util-resolve-all/index.js ***! + \***********************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ resolveAll: () => (/* binding */ resolveAll) +/* harmony export */ }); +/** + * @typedef {import('micromark-util-types').Event} Event + * @typedef {import('micromark-util-types').Resolver} Resolver + * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext + */ + +/** + * Call all `resolveAll`s. + * + * @param {Array<{resolveAll?: Resolver | undefined}>} constructs + * List of constructs, optionally with `resolveAll`s. + * @param {Array} events + * List of events. + * @param {TokenizeContext} context + * Context used by `tokenize`. + * @returns {Array} + * Changed events. + */ +function resolveAll(constructs, events, context) { + /** @type {Array} */ + const called = [] + let index = -1 + + while (++index < constructs.length) { + const resolve = constructs[index].resolveAll + + if (resolve && !called.includes(resolve)) { + events = resolve(events, context) + called.push(resolve) + } + } + + return events +} + + +/***/ }), + +/***/ "../node_modules/micromark-util-sanitize-uri/dev/index.js": +/*!****************************************************************!*\ + !*** ../node_modules/micromark-util-sanitize-uri/dev/index.js ***! + \****************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ normalizeUri: () => (/* binding */ normalizeUri), +/* harmony export */ sanitizeUri: () => (/* binding */ sanitizeUri) +/* harmony export */ }); +/* harmony import */ var micromark_util_character__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! micromark-util-character */ "../node_modules/micromark-util-character/dev/index.js"); +/* harmony import */ var micromark_util_encode__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! micromark-util-encode */ "../node_modules/micromark-util-encode/index.js"); +/* harmony import */ var micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! micromark-util-symbol/codes.js */ "../node_modules/micromark-util-symbol/codes.js"); +/* harmony import */ var micromark_util_symbol_values_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! micromark-util-symbol/values.js */ "../node_modules/micromark-util-symbol/values.js"); + + + + + +/** + * Make a value safe for injection as a URL. + * + * This encodes unsafe characters with percent-encoding and skips already + * encoded sequences (see `normalizeUri`). + * Further unsafe characters are encoded as character references (see + * `micromark-util-encode`). + * + * A regex of allowed protocols can be given, in which case the URL is + * sanitized. + * For example, `/^(https?|ircs?|mailto|xmpp)$/i` can be used for `a[href]`, or + * `/^https?$/i` for `img[src]` (this is what `github.com` allows). + * If the URL includes an unknown protocol (one not matched by `protocol`, such + * as a dangerous example, `javascript:`), the value is ignored. + * + * @param {string | undefined} url + * URI to sanitize. + * @param {RegExp | null | undefined} [protocol] + * Allowed protocols. + * @returns {string} + * Sanitized URI. + */ +function sanitizeUri(url, protocol) { + const value = (0,micromark_util_encode__WEBPACK_IMPORTED_MODULE_0__.encode)(normalizeUri(url || '')) + + if (!protocol) { + return value + } + + const colon = value.indexOf(':') + const questionMark = value.indexOf('?') + const numberSign = value.indexOf('#') + const slash = value.indexOf('/') + + if ( + // If there is no protocol, it’s relative. + colon < 0 || + // If the first colon is after a `?`, `#`, or `/`, it’s not a protocol. + (slash > -1 && colon > slash) || + (questionMark > -1 && colon > questionMark) || + (numberSign > -1 && colon > numberSign) || + // It is a protocol, it should be allowed. + protocol.test(value.slice(0, colon)) + ) { + return value + } + + return '' +} + +/** + * Normalize a URL. + * + * Encode unsafe characters with percent-encoding, skipping already encoded + * sequences. + * + * @param {string} value + * URI to normalize. + * @returns {string} + * Normalized URI. + */ +function normalizeUri(value) { + /** @type {Array} */ + const result = [] + let index = -1 + let start = 0 + let skip = 0 + + while (++index < value.length) { + const code = value.charCodeAt(index) + /** @type {string} */ + let replace = '' + + // A correct percent encoded value. + if ( + code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.percentSign && + (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_2__.asciiAlphanumeric)(value.charCodeAt(index + 1)) && + (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_2__.asciiAlphanumeric)(value.charCodeAt(index + 2)) + ) { + skip = 2 + } + // ASCII. + else if (code < 128) { + if (!/[!#$&-;=?-Z_a-z~]/.test(String.fromCharCode(code))) { + replace = String.fromCharCode(code) + } + } + // Astral. + else if (code > 55295 && code < 57344) { + const next = value.charCodeAt(index + 1) + + // A correct surrogate pair. + if (code < 56320 && next > 56319 && next < 57344) { + replace = String.fromCharCode(code, next) + skip = 1 + } + // Lone surrogate. + else { + replace = micromark_util_symbol_values_js__WEBPACK_IMPORTED_MODULE_3__.values.replacementCharacter + } + } + // Unicode. + else { + replace = String.fromCharCode(code) + } + + if (replace) { + result.push(value.slice(start, index), encodeURIComponent(replace)) + start = index + skip + 1 + replace = '' + } + + if (skip) { + index += skip + skip = 0 + } + } + + return result.join('') + value.slice(start) +} + + +/***/ }), + +/***/ "../node_modules/micromark-util-subtokenize/dev/index.js": +/*!***************************************************************!*\ + !*** ../node_modules/micromark-util-subtokenize/dev/index.js ***! + \***************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ subtokenize: () => (/* binding */ subtokenize) +/* harmony export */ }); +/* harmony import */ var micromark_util_chunked__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! micromark-util-chunked */ "../node_modules/micromark-util-chunked/dev/index.js"); +/* harmony import */ var micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! micromark-util-symbol/codes.js */ "../node_modules/micromark-util-symbol/codes.js"); +/* harmony import */ var micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! micromark-util-symbol/types.js */ "../node_modules/micromark-util-symbol/types.js"); +/* harmony import */ var uvu_assert__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! uvu/assert */ "../node_modules/uvu/assert/index.mjs"); +/** + * @typedef {import('micromark-util-types').Chunk} Chunk + * @typedef {import('micromark-util-types').Event} Event + * @typedef {import('micromark-util-types').Token} Token + */ + + + + + + +/** + * Tokenize subcontent. + * + * @param {Array} events + * List of events. + * @returns {boolean} + * Whether subtokens were found. + */ +function subtokenize(events) { + /** @type {Record} */ + const jumps = {} + let index = -1 + /** @type {Event} */ + let event + /** @type {number | undefined} */ + let lineIndex + /** @type {number} */ + let otherIndex + /** @type {Event} */ + let otherEvent + /** @type {Array} */ + let parameters + /** @type {Array} */ + let subevents + /** @type {boolean | undefined} */ + let more + + while (++index < events.length) { + while (index in jumps) { + index = jumps[index] + } + + event = events[index] + + // Add a hook for the GFM tasklist extension, which needs to know if text + // is in the first content of a list item. + if ( + index && + event[1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.chunkFlow && + events[index - 1][1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.listItemPrefix + ) { + (0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(event[1]._tokenizer, 'expected `_tokenizer` on subtokens') + subevents = event[1]._tokenizer.events + otherIndex = 0 + + if ( + otherIndex < subevents.length && + subevents[otherIndex][1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.lineEndingBlank + ) { + otherIndex += 2 + } + + if ( + otherIndex < subevents.length && + subevents[otherIndex][1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.content + ) { + while (++otherIndex < subevents.length) { + if (subevents[otherIndex][1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.content) { + break + } + + if (subevents[otherIndex][1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.chunkText) { + subevents[otherIndex][1]._isInFirstContentOfListItem = true + otherIndex++ + } + } + } + } + + // Enter. + if (event[0] === 'enter') { + if (event[1].contentType) { + Object.assign(jumps, subcontent(events, index)) + index = jumps[index] + more = true + } + } + // Exit. + else if (event[1]._container) { + otherIndex = index + lineIndex = undefined + + while (otherIndex--) { + otherEvent = events[otherIndex] + + if ( + otherEvent[1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.lineEnding || + otherEvent[1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.lineEndingBlank + ) { + if (otherEvent[0] === 'enter') { + if (lineIndex) { + events[lineIndex][1].type = micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.lineEndingBlank + } + + otherEvent[1].type = micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.lineEnding + lineIndex = otherIndex + } + } else { + break + } + } + + if (lineIndex) { + // Fix position. + event[1].end = Object.assign({}, events[lineIndex][1].start) + + // Switch container exit w/ line endings. + parameters = events.slice(lineIndex, index) + parameters.unshift(event) + ;(0,micromark_util_chunked__WEBPACK_IMPORTED_MODULE_2__.splice)(events, lineIndex, index - lineIndex + 1, parameters) + } + } + } + + return !more +} + +/** + * Tokenize embedded tokens. + * + * @param {Array} events + * @param {number} eventIndex + * @returns {Record} + */ +function subcontent(events, eventIndex) { + const token = events[eventIndex][1] + const context = events[eventIndex][2] + let startPosition = eventIndex - 1 + /** @type {Array} */ + const startPositions = [] + ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(token.contentType, 'expected `contentType` on subtokens') + const tokenizer = + token._tokenizer || context.parser[token.contentType](token.start) + const childEvents = tokenizer.events + /** @type {Array<[number, number]>} */ + const jumps = [] + /** @type {Record} */ + const gaps = {} + /** @type {Array} */ + let stream + /** @type {Token | undefined} */ + let previous + let index = -1 + /** @type {Token | undefined} */ + let current = token + let adjust = 0 + let start = 0 + const breaks = [start] + + // Loop forward through the linked tokens to pass them in order to the + // subtokenizer. + while (current) { + // Find the position of the event for this token. + while (events[++startPosition][1] !== current) { + // Empty. + } + + (0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)( + !previous || current.previous === previous, + 'expected previous to match' + ) + ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(!previous || previous.next === current, 'expected next to match') + + startPositions.push(startPosition) + + if (!current._tokenizer) { + stream = context.sliceStream(current) + + if (!current.next) { + stream.push(micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_3__.codes.eof) + } + + if (previous) { + tokenizer.defineSkip(current.start) + } + + if (current._isInFirstContentOfListItem) { + tokenizer._gfmTasklistFirstContentOfListItem = true + } + + tokenizer.write(stream) + + if (current._isInFirstContentOfListItem) { + tokenizer._gfmTasklistFirstContentOfListItem = undefined + } + } + + // Unravel the next token. + previous = current + current = current.next + } + + // Now, loop back through all events (and linked tokens), to figure out which + // parts belong where. + current = token + + while (++index < childEvents.length) { + if ( + // Find a void token that includes a break. + childEvents[index][0] === 'exit' && + childEvents[index - 1][0] === 'enter' && + childEvents[index][1].type === childEvents[index - 1][1].type && + childEvents[index][1].start.line !== childEvents[index][1].end.line + ) { + (0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(current, 'expected a current token') + start = index + 1 + breaks.push(start) + // Help GC. + current._tokenizer = undefined + current.previous = undefined + current = current.next + } + } + + // Help GC. + tokenizer.events = [] + + // If there’s one more token (which is the cases for lines that end in an + // EOF), that’s perfect: the last point we found starts it. + // If there isn’t then make sure any remaining content is added to it. + if (current) { + // Help GC. + current._tokenizer = undefined + current.previous = undefined + ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(!current.next, 'expected no next token') + } else { + breaks.pop() + } + + // Now splice the events from the subtokenizer into the current events, + // moving back to front so that splice indices aren’t affected. + index = breaks.length + + while (index--) { + const slice = childEvents.slice(breaks[index], breaks[index + 1]) + const start = startPositions.pop() + ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(start !== undefined, 'expected a start position when splicing') + jumps.unshift([start, start + slice.length - 1]) + ;(0,micromark_util_chunked__WEBPACK_IMPORTED_MODULE_2__.splice)(events, start, 2, slice) + } + + index = -1 + + while (++index < jumps.length) { + gaps[adjust + jumps[index][0]] = adjust + jumps[index][1] + adjust += jumps[index][1] - jumps[index][0] - 1 + } + + return gaps +} + + +/***/ }), + +/***/ "../node_modules/micromark-util-symbol/codes.js": +/*!******************************************************!*\ + !*** ../node_modules/micromark-util-symbol/codes.js ***! + \******************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ codes: () => (/* binding */ codes) +/* harmony export */ }); +/** + * Character codes. + * + * This module is compiled away! + * + * micromark works based on character codes. + * This module contains constants for the ASCII block and the replacement + * character. + * A couple of them are handled in a special way, such as the line endings + * (CR, LF, and CR+LF, commonly known as end-of-line: EOLs), the tab (horizontal + * tab) and its expansion based on what column it’s at (virtual space), + * and the end-of-file (eof) character. + * As values are preprocessed before handling them, the actual characters LF, + * CR, HT, and NUL (which is present as the replacement character), are + * guaranteed to not exist. + * + * Unicode basic latin block. + */ +const codes = /** @type {const} */ ({ + carriageReturn: -5, + lineFeed: -4, + carriageReturnLineFeed: -3, + horizontalTab: -2, + virtualSpace: -1, + eof: null, + nul: 0, + soh: 1, + stx: 2, + etx: 3, + eot: 4, + enq: 5, + ack: 6, + bel: 7, + bs: 8, + ht: 9, // `\t` + lf: 10, // `\n` + vt: 11, // `\v` + ff: 12, // `\f` + cr: 13, // `\r` + so: 14, + si: 15, + dle: 16, + dc1: 17, + dc2: 18, + dc3: 19, + dc4: 20, + nak: 21, + syn: 22, + etb: 23, + can: 24, + em: 25, + sub: 26, + esc: 27, + fs: 28, + gs: 29, + rs: 30, + us: 31, + space: 32, + exclamationMark: 33, // `!` + quotationMark: 34, // `"` + numberSign: 35, // `#` + dollarSign: 36, // `$` + percentSign: 37, // `%` + ampersand: 38, // `&` + apostrophe: 39, // `'` + leftParenthesis: 40, // `(` + rightParenthesis: 41, // `)` + asterisk: 42, // `*` + plusSign: 43, // `+` + comma: 44, // `,` + dash: 45, // `-` + dot: 46, // `.` + slash: 47, // `/` + digit0: 48, // `0` + digit1: 49, // `1` + digit2: 50, // `2` + digit3: 51, // `3` + digit4: 52, // `4` + digit5: 53, // `5` + digit6: 54, // `6` + digit7: 55, // `7` + digit8: 56, // `8` + digit9: 57, // `9` + colon: 58, // `:` + semicolon: 59, // `;` + lessThan: 60, // `<` + equalsTo: 61, // `=` + greaterThan: 62, // `>` + questionMark: 63, // `?` + atSign: 64, // `@` + uppercaseA: 65, // `A` + uppercaseB: 66, // `B` + uppercaseC: 67, // `C` + uppercaseD: 68, // `D` + uppercaseE: 69, // `E` + uppercaseF: 70, // `F` + uppercaseG: 71, // `G` + uppercaseH: 72, // `H` + uppercaseI: 73, // `I` + uppercaseJ: 74, // `J` + uppercaseK: 75, // `K` + uppercaseL: 76, // `L` + uppercaseM: 77, // `M` + uppercaseN: 78, // `N` + uppercaseO: 79, // `O` + uppercaseP: 80, // `P` + uppercaseQ: 81, // `Q` + uppercaseR: 82, // `R` + uppercaseS: 83, // `S` + uppercaseT: 84, // `T` + uppercaseU: 85, // `U` + uppercaseV: 86, // `V` + uppercaseW: 87, // `W` + uppercaseX: 88, // `X` + uppercaseY: 89, // `Y` + uppercaseZ: 90, // `Z` + leftSquareBracket: 91, // `[` + backslash: 92, // `\` + rightSquareBracket: 93, // `]` + caret: 94, // `^` + underscore: 95, // `_` + graveAccent: 96, // `` ` `` + lowercaseA: 97, // `a` + lowercaseB: 98, // `b` + lowercaseC: 99, // `c` + lowercaseD: 100, // `d` + lowercaseE: 101, // `e` + lowercaseF: 102, // `f` + lowercaseG: 103, // `g` + lowercaseH: 104, // `h` + lowercaseI: 105, // `i` + lowercaseJ: 106, // `j` + lowercaseK: 107, // `k` + lowercaseL: 108, // `l` + lowercaseM: 109, // `m` + lowercaseN: 110, // `n` + lowercaseO: 111, // `o` + lowercaseP: 112, // `p` + lowercaseQ: 113, // `q` + lowercaseR: 114, // `r` + lowercaseS: 115, // `s` + lowercaseT: 116, // `t` + lowercaseU: 117, // `u` + lowercaseV: 118, // `v` + lowercaseW: 119, // `w` + lowercaseX: 120, // `x` + lowercaseY: 121, // `y` + lowercaseZ: 122, // `z` + leftCurlyBrace: 123, // `{` + verticalBar: 124, // `|` + rightCurlyBrace: 125, // `}` + tilde: 126, // `~` + del: 127, + // Unicode Specials block. + byteOrderMarker: 65279, + // Unicode Specials block. + replacementCharacter: 65533 // `` +}) + + +/***/ }), + +/***/ "../node_modules/micromark-util-symbol/constants.js": +/*!**********************************************************!*\ + !*** ../node_modules/micromark-util-symbol/constants.js ***! + \**********************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ constants: () => (/* binding */ constants) +/* harmony export */ }); +/** + * This module is compiled away! + * + * Parsing markdown comes with a couple of constants, such as minimum or maximum + * sizes of certain sequences. + * Additionally, there are a couple symbols used inside micromark. + * These are all defined here, but compiled away by scripts. + */ +const constants = /** @type {const} */ ({ + attentionSideBefore: 1, // Symbol to mark an attention sequence as before content: `*a` + attentionSideAfter: 2, // Symbol to mark an attention sequence as after content: `a*` + atxHeadingOpeningFenceSizeMax: 6, // 6 number signs is fine, 7 isn’t. + autolinkDomainSizeMax: 63, // 63 characters is fine, 64 is too many. + autolinkSchemeSizeMax: 32, // 32 characters is fine, 33 is too many. + cdataOpeningString: 'CDATA[', // And preceded by `` + htmlComment: 2, // Symbol for `` + htmlInstruction: 3, // Symbol for `` + htmlDeclaration: 4, // Symbol for `` + htmlCdata: 5, // Symbol for `` + htmlBasic: 6, // Symbol for `` + htmlRawSizeMax: 8, // Length of `textarea`. + linkResourceDestinationBalanceMax: 32, // See: , + linkReferenceSizeMax: 999, // See: + listItemValueSizeMax: 10, // See: + numericBaseDecimal: 10, + numericBaseHexadecimal: 0x10, + tabSize: 4, // Tabs have a hard-coded size of 4, per CommonMark. + thematicBreakMarkerCountMin: 3, // At least 3 asterisks, dashes, or underscores are needed. + v8MaxSafeChunkSize: 10000 // V8 (and potentially others) have problems injecting giant arrays into other arrays, hence we operate in chunks. +}) + + +/***/ }), + +/***/ "../node_modules/micromark-util-symbol/types.js": +/*!******************************************************!*\ + !*** ../node_modules/micromark-util-symbol/types.js ***! + \******************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ types: () => (/* binding */ types) +/* harmony export */ }); +/** + * This module is compiled away! + * + * Here is the list of all types of tokens exposed by micromark, with a short + * explanation of what they include and where they are found. + * In picking names, generally, the rule is to be as explicit as possible + * instead of reusing names. + * For example, there is a `definitionDestination` and a `resourceDestination`, + * instead of one shared name. + */ + +// Note: when changing the next record, you must also change `TokenTypeMap` +// in `micromark-util-types/index.d.ts`. +const types = /** @type {const} */ ({ + // Generic type for data, such as in a title, a destination, etc. + data: 'data', + + // Generic type for syntactic whitespace (tabs, virtual spaces, spaces). + // Such as, between a fenced code fence and an info string. + whitespace: 'whitespace', + + // Generic type for line endings (line feed, carriage return, carriage return + + // line feed). + lineEnding: 'lineEnding', + + // A line ending, but ending a blank line. + lineEndingBlank: 'lineEndingBlank', + + // Generic type for whitespace (tabs, virtual spaces, spaces) at the start of a + // line. + linePrefix: 'linePrefix', + + // Generic type for whitespace (tabs, virtual spaces, spaces) at the end of a + // line. + lineSuffix: 'lineSuffix', + + // Whole ATX heading: + // + // ```markdown + // # + // ## Alpha + // ### Bravo ### + // ``` + // + // Includes `atxHeadingSequence`, `whitespace`, `atxHeadingText`. + atxHeading: 'atxHeading', + + // Sequence of number signs in an ATX heading (`###`). + atxHeadingSequence: 'atxHeadingSequence', + + // Content in an ATX heading (`alpha`). + // Includes text. + atxHeadingText: 'atxHeadingText', + + // Whole autolink (`` or ``) + // Includes `autolinkMarker` and `autolinkProtocol` or `autolinkEmail`. + autolink: 'autolink', + + // Email autolink w/o markers (`admin@example.com`) + autolinkEmail: 'autolinkEmail', + + // Marker around an `autolinkProtocol` or `autolinkEmail` (`<` or `>`). + autolinkMarker: 'autolinkMarker', + + // Protocol autolink w/o markers (`https://example.com`) + autolinkProtocol: 'autolinkProtocol', + + // A whole character escape (`\-`). + // Includes `escapeMarker` and `characterEscapeValue`. + characterEscape: 'characterEscape', + + // The escaped character (`-`). + characterEscapeValue: 'characterEscapeValue', + + // A whole character reference (`&`, `≠`, or `𝌆`). + // Includes `characterReferenceMarker`, an optional + // `characterReferenceMarkerNumeric`, in which case an optional + // `characterReferenceMarkerHexadecimal`, and a `characterReferenceValue`. + characterReference: 'characterReference', + + // The start or end marker (`&` or `;`). + characterReferenceMarker: 'characterReferenceMarker', + + // Mark reference as numeric (`#`). + characterReferenceMarkerNumeric: 'characterReferenceMarkerNumeric', + + // Mark reference as numeric (`x` or `X`). + characterReferenceMarkerHexadecimal: 'characterReferenceMarkerHexadecimal', + + // Value of character reference w/o markers (`amp`, `8800`, or `1D306`). + characterReferenceValue: 'characterReferenceValue', + + // Whole fenced code: + // + // ````markdown + // ```js + // alert(1) + // ``` + // ```` + codeFenced: 'codeFenced', + + // A fenced code fence, including whitespace, sequence, info, and meta + // (` ```js `). + codeFencedFence: 'codeFencedFence', + + // Sequence of grave accent or tilde characters (` ``` `) in a fence. + codeFencedFenceSequence: 'codeFencedFenceSequence', + + // Info word (`js`) in a fence. + // Includes string. + codeFencedFenceInfo: 'codeFencedFenceInfo', + + // Meta words (`highlight="1"`) in a fence. + // Includes string. + codeFencedFenceMeta: 'codeFencedFenceMeta', + + // A line of code. + codeFlowValue: 'codeFlowValue', + + // Whole indented code: + // + // ```markdown + // alert(1) + // ``` + // + // Includes `lineEnding`, `linePrefix`, and `codeFlowValue`. + codeIndented: 'codeIndented', + + // A text code (``` `alpha` ```). + // Includes `codeTextSequence`, `codeTextData`, `lineEnding`, and can include + // `codeTextPadding`. + codeText: 'codeText', + + codeTextData: 'codeTextData', + + // A space or line ending right after or before a tick. + codeTextPadding: 'codeTextPadding', + + // A text code fence (` `` `). + codeTextSequence: 'codeTextSequence', + + // Whole content: + // + // ```markdown + // [a]: b + // c + // = + // d + // ``` + // + // Includes `paragraph` and `definition`. + content: 'content', + // Whole definition: + // + // ```markdown + // [micromark]: https://github.com/micromark/micromark + // ``` + // + // Includes `definitionLabel`, `definitionMarker`, `whitespace`, + // `definitionDestination`, and optionally `lineEnding` and `definitionTitle`. + definition: 'definition', + + // Destination of a definition (`https://github.com/micromark/micromark` or + // ``). + // Includes `definitionDestinationLiteral` or `definitionDestinationRaw`. + definitionDestination: 'definitionDestination', + + // Enclosed destination of a definition + // (``). + // Includes `definitionDestinationLiteralMarker` and optionally + // `definitionDestinationString`. + definitionDestinationLiteral: 'definitionDestinationLiteral', + + // Markers of an enclosed definition destination (`<` or `>`). + definitionDestinationLiteralMarker: 'definitionDestinationLiteralMarker', + + // Unenclosed destination of a definition + // (`https://github.com/micromark/micromark`). + // Includes `definitionDestinationString`. + definitionDestinationRaw: 'definitionDestinationRaw', + + // Text in an destination (`https://github.com/micromark/micromark`). + // Includes string. + definitionDestinationString: 'definitionDestinationString', + + // Label of a definition (`[micromark]`). + // Includes `definitionLabelMarker` and `definitionLabelString`. + definitionLabel: 'definitionLabel', + + // Markers of a definition label (`[` or `]`). + definitionLabelMarker: 'definitionLabelMarker', + + // Value of a definition label (`micromark`). + // Includes string. + definitionLabelString: 'definitionLabelString', + + // Marker between a label and a destination (`:`). + definitionMarker: 'definitionMarker', + + // Title of a definition (`"x"`, `'y'`, or `(z)`). + // Includes `definitionTitleMarker` and optionally `definitionTitleString`. + definitionTitle: 'definitionTitle', + + // Marker around a title of a definition (`"`, `'`, `(`, or `)`). + definitionTitleMarker: 'definitionTitleMarker', + + // Data without markers in a title (`z`). + // Includes string. + definitionTitleString: 'definitionTitleString', + + // Emphasis (`*alpha*`). + // Includes `emphasisSequence` and `emphasisText`. + emphasis: 'emphasis', + + // Sequence of emphasis markers (`*` or `_`). + emphasisSequence: 'emphasisSequence', + + // Emphasis text (`alpha`). + // Includes text. + emphasisText: 'emphasisText', + + // The character escape marker (`\`). + escapeMarker: 'escapeMarker', + + // A hard break created with a backslash (`\\n`). + // Note: does not include the line ending. + hardBreakEscape: 'hardBreakEscape', + + // A hard break created with trailing spaces (` \n`). + // Does not include the line ending. + hardBreakTrailing: 'hardBreakTrailing', + + // Flow HTML: + // + // ```markdown + //
    b`). + // Includes `lineEnding`, `htmlTextData`. + htmlText: 'htmlText', + + htmlTextData: 'htmlTextData', + + // Whole image (`![alpha](bravo)`, `![alpha][bravo]`, `![alpha][]`, or + // `![alpha]`). + // Includes `label` and an optional `resource` or `reference`. + image: 'image', + + // Whole link label (`[*alpha*]`). + // Includes `labelLink` or `labelImage`, `labelText`, and `labelEnd`. + label: 'label', + + // Text in an label (`*alpha*`). + // Includes text. + labelText: 'labelText', + + // Start a link label (`[`). + // Includes a `labelMarker`. + labelLink: 'labelLink', + + // Start an image label (`![`). + // Includes `labelImageMarker` and `labelMarker`. + labelImage: 'labelImage', + + // Marker of a label (`[` or `]`). + labelMarker: 'labelMarker', + + // Marker to start an image (`!`). + labelImageMarker: 'labelImageMarker', + + // End a label (`]`). + // Includes `labelMarker`. + labelEnd: 'labelEnd', + + // Whole link (`[alpha](bravo)`, `[alpha][bravo]`, `[alpha][]`, or `[alpha]`). + // Includes `label` and an optional `resource` or `reference`. + link: 'link', + + // Whole paragraph: + // + // ```markdown + // alpha + // bravo. + // ``` + // + // Includes text. + paragraph: 'paragraph', + + // A reference (`[alpha]` or `[]`). + // Includes `referenceMarker` and an optional `referenceString`. + reference: 'reference', + + // A reference marker (`[` or `]`). + referenceMarker: 'referenceMarker', + + // Reference text (`alpha`). + // Includes string. + referenceString: 'referenceString', + + // A resource (`(https://example.com "alpha")`). + // Includes `resourceMarker`, an optional `resourceDestination` with an optional + // `whitespace` and `resourceTitle`. + resource: 'resource', + + // A resource destination (`https://example.com`). + // Includes `resourceDestinationLiteral` or `resourceDestinationRaw`. + resourceDestination: 'resourceDestination', + + // A literal resource destination (``). + // Includes `resourceDestinationLiteralMarker` and optionally + // `resourceDestinationString`. + resourceDestinationLiteral: 'resourceDestinationLiteral', + + // A resource destination marker (`<` or `>`). + resourceDestinationLiteralMarker: 'resourceDestinationLiteralMarker', + + // A raw resource destination (`https://example.com`). + // Includes `resourceDestinationString`. + resourceDestinationRaw: 'resourceDestinationRaw', + + // Resource destination text (`https://example.com`). + // Includes string. + resourceDestinationString: 'resourceDestinationString', + + // A resource marker (`(` or `)`). + resourceMarker: 'resourceMarker', + + // A resource title (`"alpha"`, `'alpha'`, or `(alpha)`). + // Includes `resourceTitleMarker` and optionally `resourceTitleString`. + resourceTitle: 'resourceTitle', + + // A resource title marker (`"`, `'`, `(`, or `)`). + resourceTitleMarker: 'resourceTitleMarker', + + // Resource destination title (`alpha`). + // Includes string. + resourceTitleString: 'resourceTitleString', + + // Whole setext heading: + // + // ```markdown + // alpha + // bravo + // ===== + // ``` + // + // Includes `setextHeadingText`, `lineEnding`, `linePrefix`, and + // `setextHeadingLine`. + setextHeading: 'setextHeading', + + // Content in a setext heading (`alpha\nbravo`). + // Includes text. + setextHeadingText: 'setextHeadingText', + + // Underline in a setext heading, including whitespace suffix (`==`). + // Includes `setextHeadingLineSequence`. + setextHeadingLine: 'setextHeadingLine', + + // Sequence of equals or dash characters in underline in a setext heading (`-`). + setextHeadingLineSequence: 'setextHeadingLineSequence', + + // Strong (`**alpha**`). + // Includes `strongSequence` and `strongText`. + strong: 'strong', + + // Sequence of strong markers (`**` or `__`). + strongSequence: 'strongSequence', + + // Strong text (`alpha`). + // Includes text. + strongText: 'strongText', + + // Whole thematic break: + // + // ```markdown + // * * * + // ``` + // + // Includes `thematicBreakSequence` and `whitespace`. + thematicBreak: 'thematicBreak', + + // A sequence of one or more thematic break markers (`***`). + thematicBreakSequence: 'thematicBreakSequence', + + // Whole block quote: + // + // ```markdown + // > a + // > + // > b + // ``` + // + // Includes `blockQuotePrefix` and flow. + blockQuote: 'blockQuote', + // The `>` or `> ` of a block quote. + blockQuotePrefix: 'blockQuotePrefix', + // The `>` of a block quote prefix. + blockQuoteMarker: 'blockQuoteMarker', + // The optional ` ` of a block quote prefix. + blockQuotePrefixWhitespace: 'blockQuotePrefixWhitespace', + + // Whole unordered list: + // + // ```markdown + // - a + // b + // ``` + // + // Includes `listItemPrefix`, flow, and optionally `listItemIndent` on further + // lines. + listOrdered: 'listOrdered', + + // Whole ordered list: + // + // ```markdown + // 1. a + // b + // ``` + // + // Includes `listItemPrefix`, flow, and optionally `listItemIndent` on further + // lines. + listUnordered: 'listUnordered', + + // The indent of further list item lines. + listItemIndent: 'listItemIndent', + + // A marker, as in, `*`, `+`, `-`, `.`, or `)`. + listItemMarker: 'listItemMarker', + + // The thing that starts a list item, such as `1. `. + // Includes `listItemValue` if ordered, `listItemMarker`, and + // `listItemPrefixWhitespace` (unless followed by a line ending). + listItemPrefix: 'listItemPrefix', + + // The whitespace after a marker. + listItemPrefixWhitespace: 'listItemPrefixWhitespace', + + // The numerical value of an ordered item. + listItemValue: 'listItemValue', + + // Internal types used for subtokenizers, compiled away + chunkDocument: 'chunkDocument', + chunkContent: 'chunkContent', + chunkFlow: 'chunkFlow', + chunkText: 'chunkText', + chunkString: 'chunkString' +}) + + +/***/ }), + +/***/ "../node_modules/micromark-util-symbol/values.js": +/*!*******************************************************!*\ + !*** ../node_modules/micromark-util-symbol/values.js ***! + \*******************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ values: () => (/* binding */ values) +/* harmony export */ }); +/** + * This module is compiled away! + * + * While micromark works based on character codes, this module includes the + * string versions of ’em. + * The C0 block, except for LF, CR, HT, and w/ the replacement character added, + * are available here. + */ +const values = /** @type {const} */ ({ + ht: '\t', + lf: '\n', + cr: '\r', + space: ' ', + exclamationMark: '!', + quotationMark: '"', + numberSign: '#', + dollarSign: '$', + percentSign: '%', + ampersand: '&', + apostrophe: "'", + leftParenthesis: '(', + rightParenthesis: ')', + asterisk: '*', + plusSign: '+', + comma: ',', + dash: '-', + dot: '.', + slash: '/', + digit0: '0', + digit1: '1', + digit2: '2', + digit3: '3', + digit4: '4', + digit5: '5', + digit6: '6', + digit7: '7', + digit8: '8', + digit9: '9', + colon: ':', + semicolon: ';', + lessThan: '<', + equalsTo: '=', + greaterThan: '>', + questionMark: '?', + atSign: '@', + uppercaseA: 'A', + uppercaseB: 'B', + uppercaseC: 'C', + uppercaseD: 'D', + uppercaseE: 'E', + uppercaseF: 'F', + uppercaseG: 'G', + uppercaseH: 'H', + uppercaseI: 'I', + uppercaseJ: 'J', + uppercaseK: 'K', + uppercaseL: 'L', + uppercaseM: 'M', + uppercaseN: 'N', + uppercaseO: 'O', + uppercaseP: 'P', + uppercaseQ: 'Q', + uppercaseR: 'R', + uppercaseS: 'S', + uppercaseT: 'T', + uppercaseU: 'U', + uppercaseV: 'V', + uppercaseW: 'W', + uppercaseX: 'X', + uppercaseY: 'Y', + uppercaseZ: 'Z', + leftSquareBracket: '[', + backslash: '\\', + rightSquareBracket: ']', + caret: '^', + underscore: '_', + graveAccent: '`', + lowercaseA: 'a', + lowercaseB: 'b', + lowercaseC: 'c', + lowercaseD: 'd', + lowercaseE: 'e', + lowercaseF: 'f', + lowercaseG: 'g', + lowercaseH: 'h', + lowercaseI: 'i', + lowercaseJ: 'j', + lowercaseK: 'k', + lowercaseL: 'l', + lowercaseM: 'm', + lowercaseN: 'n', + lowercaseO: 'o', + lowercaseP: 'p', + lowercaseQ: 'q', + lowercaseR: 'r', + lowercaseS: 's', + lowercaseT: 't', + lowercaseU: 'u', + lowercaseV: 'v', + lowercaseW: 'w', + lowercaseX: 'x', + lowercaseY: 'y', + lowercaseZ: 'z', + leftCurlyBrace: '{', + verticalBar: '|', + rightCurlyBrace: '}', + tilde: '~', + replacementCharacter: '' +}) + + +/***/ }), + +/***/ "../node_modules/micromark/dev/lib/constructs.js": +/*!*******************************************************!*\ + !*** ../node_modules/micromark/dev/lib/constructs.js ***! + \*******************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ attentionMarkers: () => (/* binding */ attentionMarkers), +/* harmony export */ contentInitial: () => (/* binding */ contentInitial), +/* harmony export */ disable: () => (/* binding */ disable), +/* harmony export */ document: () => (/* binding */ document), +/* harmony export */ flow: () => (/* binding */ flow), +/* harmony export */ flowInitial: () => (/* binding */ flowInitial), +/* harmony export */ insideSpan: () => (/* binding */ insideSpan), +/* harmony export */ string: () => (/* binding */ string), +/* harmony export */ text: () => (/* binding */ text) +/* harmony export */ }); +/* harmony import */ var micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! micromark-core-commonmark */ "../node_modules/micromark-core-commonmark/dev/lib/list.js"); +/* harmony import */ var micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! micromark-core-commonmark */ "../node_modules/micromark-core-commonmark/dev/lib/block-quote.js"); +/* harmony import */ var micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! micromark-core-commonmark */ "../node_modules/micromark-core-commonmark/dev/lib/definition.js"); +/* harmony import */ var micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! micromark-core-commonmark */ "../node_modules/micromark-core-commonmark/dev/lib/code-indented.js"); +/* harmony import */ var micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! micromark-core-commonmark */ "../node_modules/micromark-core-commonmark/dev/lib/heading-atx.js"); +/* harmony import */ var micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! micromark-core-commonmark */ "../node_modules/micromark-core-commonmark/dev/lib/thematic-break.js"); +/* harmony import */ var micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! micromark-core-commonmark */ "../node_modules/micromark-core-commonmark/dev/lib/setext-underline.js"); +/* harmony import */ var micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! micromark-core-commonmark */ "../node_modules/micromark-core-commonmark/dev/lib/html-flow.js"); +/* harmony import */ var micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! micromark-core-commonmark */ "../node_modules/micromark-core-commonmark/dev/lib/code-fenced.js"); +/* harmony import */ var micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! micromark-core-commonmark */ "../node_modules/micromark-core-commonmark/dev/lib/character-reference.js"); +/* harmony import */ var micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! micromark-core-commonmark */ "../node_modules/micromark-core-commonmark/dev/lib/character-escape.js"); +/* harmony import */ var micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! micromark-core-commonmark */ "../node_modules/micromark-core-commonmark/dev/lib/line-ending.js"); +/* harmony import */ var micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! micromark-core-commonmark */ "../node_modules/micromark-core-commonmark/dev/lib/label-start-image.js"); +/* harmony import */ var micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! micromark-core-commonmark */ "../node_modules/micromark-core-commonmark/dev/lib/attention.js"); +/* harmony import */ var micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! micromark-core-commonmark */ "../node_modules/micromark-core-commonmark/dev/lib/autolink.js"); +/* harmony import */ var micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! micromark-core-commonmark */ "../node_modules/micromark-core-commonmark/dev/lib/html-text.js"); +/* harmony import */ var micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! micromark-core-commonmark */ "../node_modules/micromark-core-commonmark/dev/lib/label-start-link.js"); +/* harmony import */ var micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! micromark-core-commonmark */ "../node_modules/micromark-core-commonmark/dev/lib/hard-break-escape.js"); +/* harmony import */ var micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! micromark-core-commonmark */ "../node_modules/micromark-core-commonmark/dev/lib/label-end.js"); +/* harmony import */ var micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! micromark-core-commonmark */ "../node_modules/micromark-core-commonmark/dev/lib/code-text.js"); +/* harmony import */ var micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! micromark-util-symbol/codes.js */ "../node_modules/micromark-util-symbol/codes.js"); +/* harmony import */ var _initialize_text_js__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./initialize/text.js */ "../node_modules/micromark/dev/lib/initialize/text.js"); +/** + * @typedef {import('micromark-util-types').Extension} Extension + */ + + + + + +/** @satisfies {Extension['document']} */ +const document = { + [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.asterisk]: micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_1__.list, + [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.plusSign]: micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_1__.list, + [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.dash]: micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_1__.list, + [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.digit0]: micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_1__.list, + [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.digit1]: micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_1__.list, + [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.digit2]: micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_1__.list, + [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.digit3]: micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_1__.list, + [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.digit4]: micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_1__.list, + [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.digit5]: micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_1__.list, + [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.digit6]: micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_1__.list, + [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.digit7]: micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_1__.list, + [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.digit8]: micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_1__.list, + [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.digit9]: micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_1__.list, + [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.greaterThan]: micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_2__.blockQuote +} + +/** @satisfies {Extension['contentInitial']} */ +const contentInitial = { + [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.leftSquareBracket]: micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_3__.definition +} + +/** @satisfies {Extension['flowInitial']} */ +const flowInitial = { + [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.horizontalTab]: micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_4__.codeIndented, + [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.virtualSpace]: micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_4__.codeIndented, + [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.space]: micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_4__.codeIndented +} + +/** @satisfies {Extension['flow']} */ +const flow = { + [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.numberSign]: micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_5__.headingAtx, + [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.asterisk]: micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_6__.thematicBreak, + [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.dash]: [micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_7__.setextUnderline, micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_6__.thematicBreak], + [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.lessThan]: micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_8__.htmlFlow, + [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.equalsTo]: micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_7__.setextUnderline, + [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.underscore]: micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_6__.thematicBreak, + [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.graveAccent]: micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_9__.codeFenced, + [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.tilde]: micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_9__.codeFenced +} + +/** @satisfies {Extension['string']} */ +const string = { + [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.ampersand]: micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_10__.characterReference, + [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.backslash]: micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_11__.characterEscape +} + +/** @satisfies {Extension['text']} */ +const text = { + [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.carriageReturn]: micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_12__.lineEnding, + [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.lineFeed]: micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_12__.lineEnding, + [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.carriageReturnLineFeed]: micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_12__.lineEnding, + [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.exclamationMark]: micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_13__.labelStartImage, + [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.ampersand]: micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_10__.characterReference, + [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.asterisk]: micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_14__.attention, + [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.lessThan]: [micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_15__.autolink, micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_16__.htmlText], + [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.leftSquareBracket]: micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_17__.labelStartLink, + [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.backslash]: [micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_18__.hardBreakEscape, micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_11__.characterEscape], + [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.rightSquareBracket]: micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_19__.labelEnd, + [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.underscore]: micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_14__.attention, + [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.graveAccent]: micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_20__.codeText +} + +/** @satisfies {Extension['insideSpan']} */ +const insideSpan = {null: [micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_14__.attention, _initialize_text_js__WEBPACK_IMPORTED_MODULE_21__.resolver]} + +/** @satisfies {Extension['attentionMarkers']} */ +const attentionMarkers = {null: [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.asterisk, micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.underscore]} + +/** @satisfies {Extension['disable']} */ +const disable = {null: []} + + +/***/ }), + +/***/ "../node_modules/micromark/dev/lib/create-tokenizer.js": +/*!*************************************************************!*\ + !*** ../node_modules/micromark/dev/lib/create-tokenizer.js ***! + \*************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ createTokenizer: () => (/* binding */ createTokenizer) +/* harmony export */ }); +/* harmony import */ var debug__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! debug */ "../node_modules/debug/src/browser.js"); +/* harmony import */ var micromark_util_character__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! micromark-util-character */ "../node_modules/micromark-util-character/dev/index.js"); +/* harmony import */ var micromark_util_chunked__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! micromark-util-chunked */ "../node_modules/micromark-util-chunked/dev/index.js"); +/* harmony import */ var micromark_util_resolve_all__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! micromark-util-resolve-all */ "../node_modules/micromark-util-resolve-all/index.js"); +/* harmony import */ var micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! micromark-util-symbol/codes.js */ "../node_modules/micromark-util-symbol/codes.js"); +/* harmony import */ var micromark_util_symbol_values_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! micromark-util-symbol/values.js */ "../node_modules/micromark-util-symbol/values.js"); +/* harmony import */ var uvu_assert__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! uvu/assert */ "../node_modules/uvu/assert/index.mjs"); +/** + * @typedef {import('micromark-util-types').Chunk} Chunk + * @typedef {import('micromark-util-types').Code} Code + * @typedef {import('micromark-util-types').Construct} Construct + * @typedef {import('micromark-util-types').ConstructRecord} ConstructRecord + * @typedef {import('micromark-util-types').Effects} Effects + * @typedef {import('micromark-util-types').InitialConstruct} InitialConstruct + * @typedef {import('micromark-util-types').ParseContext} ParseContext + * @typedef {import('micromark-util-types').Point} Point + * @typedef {import('micromark-util-types').State} State + * @typedef {import('micromark-util-types').Token} Token + * @typedef {import('micromark-util-types').TokenType} TokenType + * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext + */ + +/** + * @callback Restore + * @returns {void} + * + * @typedef Info + * @property {Restore} restore + * @property {number} from + * + * @callback ReturnHandle + * Handle a successful run. + * @param {Construct} construct + * @param {Info} info + * @returns {void} + */ + + + + + + + + + +const debug = debug__WEBPACK_IMPORTED_MODULE_0__('micromark') + +/** + * Create a tokenizer. + * Tokenizers deal with one type of data (e.g., containers, flow, text). + * The parser is the object dealing with it all. + * `initialize` works like other constructs, except that only its `tokenize` + * function is used, in which case it doesn’t receive an `ok` or `nok`. + * `from` can be given to set the point before the first character, although + * when further lines are indented, they must be set with `defineSkip`. + * + * @param {ParseContext} parser + * @param {InitialConstruct} initialize + * @param {Omit | undefined} [from] + * @returns {TokenizeContext} + */ +function createTokenizer(parser, initialize, from) { + /** @type {Point} */ + let point = Object.assign( + from ? Object.assign({}, from) : {line: 1, column: 1, offset: 0}, + {_index: 0, _bufferIndex: -1} + ) + /** @type {Record} */ + const columnStart = {} + /** @type {Array} */ + const resolveAllConstructs = [] + /** @type {Array} */ + let chunks = [] + /** @type {Array} */ + let stack = [] + /** @type {boolean | undefined} */ + let consumed = true + + /** + * Tools used for tokenizing. + * + * @type {Effects} + */ + const effects = { + consume, + enter, + exit, + attempt: constructFactory(onsuccessfulconstruct), + check: constructFactory(onsuccessfulcheck), + interrupt: constructFactory(onsuccessfulcheck, {interrupt: true}) + } + + /** + * State and tools for resolving and serializing. + * + * @type {TokenizeContext} + */ + const context = { + previous: micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.eof, + code: micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.eof, + containerState: {}, + events: [], + parser, + sliceStream, + sliceSerialize, + now, + defineSkip, + write + } + + /** + * The state function. + * + * @type {State | void} + */ + let state = initialize.tokenize.call(context, effects) + + /** + * Track which character we expect to be consumed, to catch bugs. + * + * @type {Code} + */ + let expectedCode + + if (initialize.resolveAll) { + resolveAllConstructs.push(initialize) + } + + return context + + /** @type {TokenizeContext['write']} */ + function write(slice) { + chunks = (0,micromark_util_chunked__WEBPACK_IMPORTED_MODULE_3__.push)(chunks, slice) + + main() + + // Exit if we’re not done, resolve might change stuff. + if (chunks[chunks.length - 1] !== micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.eof) { + return [] + } + + addResult(initialize, 0) + + // Otherwise, resolve, and exit. + context.events = (0,micromark_util_resolve_all__WEBPACK_IMPORTED_MODULE_4__.resolveAll)(resolveAllConstructs, context.events, context) + + return context.events + } + + // + // Tools. + // + + /** @type {TokenizeContext['sliceSerialize']} */ + function sliceSerialize(token, expandTabs) { + return serializeChunks(sliceStream(token), expandTabs) + } + + /** @type {TokenizeContext['sliceStream']} */ + function sliceStream(token) { + return sliceChunks(chunks, token) + } + + /** @type {TokenizeContext['now']} */ + function now() { + // This is a hot path, so we clone manually instead of `Object.assign({}, point)` + const {line, column, offset, _index, _bufferIndex} = point + return {line, column, offset, _index, _bufferIndex} + } + + /** @type {TokenizeContext['defineSkip']} */ + function defineSkip(value) { + columnStart[value.line] = value.column + accountForPotentialSkip() + debug('position: define skip: `%j`', point) + } + + // + // State management. + // + + /** + * Main loop (note that `_index` and `_bufferIndex` in `point` are modified by + * `consume`). + * Here is where we walk through the chunks, which either include strings of + * several characters, or numerical character codes. + * The reason to do this in a loop instead of a call is so the stack can + * drain. + * + * @returns {void} + */ + function main() { + /** @type {number} */ + let chunkIndex + + while (point._index < chunks.length) { + const chunk = chunks[point._index] + + // If we’re in a buffer chunk, loop through it. + if (typeof chunk === 'string') { + chunkIndex = point._index + + if (point._bufferIndex < 0) { + point._bufferIndex = 0 + } + + while ( + point._index === chunkIndex && + point._bufferIndex < chunk.length + ) { + go(chunk.charCodeAt(point._bufferIndex)) + } + } else { + go(chunk) + } + } + } + + /** + * Deal with one code. + * + * @param {Code} code + * @returns {void} + */ + function go(code) { + (0,uvu_assert__WEBPACK_IMPORTED_MODULE_1__.ok)(consumed === true, 'expected character to be consumed') + consumed = undefined + debug('main: passing `%s` to %s', code, state && state.name) + expectedCode = code + ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_1__.ok)(typeof state === 'function', 'expected state') + state = state(code) + } + + /** @type {Effects['consume']} */ + function consume(code) { + (0,uvu_assert__WEBPACK_IMPORTED_MODULE_1__.ok)(code === expectedCode, 'expected given code to equal expected code') + + debug('consume: `%s`', code) + + ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_1__.ok)( + consumed === undefined, + 'expected code to not have been consumed: this might be because `return x(code)` instead of `return x` was used' + ) + ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_1__.ok)( + code === null + ? context.events.length === 0 || + context.events[context.events.length - 1][0] === 'exit' + : context.events[context.events.length - 1][0] === 'enter', + 'expected last token to be open' + ) + + if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_5__.markdownLineEnding)(code)) { + point.line++ + point.column = 1 + point.offset += code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.carriageReturnLineFeed ? 2 : 1 + accountForPotentialSkip() + debug('position: after eol: `%j`', point) + } else if (code !== micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.virtualSpace) { + point.column++ + point.offset++ + } + + // Not in a string chunk. + if (point._bufferIndex < 0) { + point._index++ + } else { + point._bufferIndex++ + + // At end of string chunk. + // @ts-expect-error Points w/ non-negative `_bufferIndex` reference + // strings. + if (point._bufferIndex === chunks[point._index].length) { + point._bufferIndex = -1 + point._index++ + } + } + + // Expose the previous character. + context.previous = code + + // Mark as consumed. + consumed = true + } + + /** @type {Effects['enter']} */ + function enter(type, fields) { + /** @type {Token} */ + // @ts-expect-error Patch instead of assign required fields to help GC. + const token = fields || {} + token.type = type + token.start = now() + + ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_1__.ok)(typeof type === 'string', 'expected string type') + ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_1__.ok)(type.length > 0, 'expected non-empty string') + debug('enter: `%s`', type) + + context.events.push(['enter', token, context]) + + stack.push(token) + + return token + } + + /** @type {Effects['exit']} */ + function exit(type) { + (0,uvu_assert__WEBPACK_IMPORTED_MODULE_1__.ok)(typeof type === 'string', 'expected string type') + ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_1__.ok)(type.length > 0, 'expected non-empty string') + + const token = stack.pop() + ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_1__.ok)(token, 'cannot close w/o open tokens') + token.end = now() + + ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_1__.ok)(type === token.type, 'expected exit token to match current token') + + ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_1__.ok)( + !( + token.start._index === token.end._index && + token.start._bufferIndex === token.end._bufferIndex + ), + 'expected non-empty token (`' + type + '`)' + ) + + debug('exit: `%s`', token.type) + context.events.push(['exit', token, context]) + + return token + } + + /** + * Use results. + * + * @type {ReturnHandle} + */ + function onsuccessfulconstruct(construct, info) { + addResult(construct, info.from) + } + + /** + * Discard results. + * + * @type {ReturnHandle} + */ + function onsuccessfulcheck(_, info) { + info.restore() + } + + /** + * Factory to attempt/check/interrupt. + * + * @param {ReturnHandle} onreturn + * @param {{interrupt?: boolean | undefined} | undefined} [fields] + */ + function constructFactory(onreturn, fields) { + return hook + + /** + * Handle either an object mapping codes to constructs, a list of + * constructs, or a single construct. + * + * @param {Array | Construct | ConstructRecord} constructs + * @param {State} returnState + * @param {State | undefined} [bogusState] + * @returns {State} + */ + function hook(constructs, returnState, bogusState) { + /** @type {Array} */ + let listOfConstructs + /** @type {number} */ + let constructIndex + /** @type {Construct} */ + let currentConstruct + /** @type {Info} */ + let info + + return Array.isArray(constructs) + ? /* c8 ignore next 1 */ + handleListOfConstructs(constructs) + : 'tokenize' in constructs + ? // @ts-expect-error Looks like a construct. + handleListOfConstructs([constructs]) + : handleMapOfConstructs(constructs) + + /** + * Handle a list of construct. + * + * @param {ConstructRecord} map + * @returns {State} + */ + function handleMapOfConstructs(map) { + return start + + /** @type {State} */ + function start(code) { + const def = code !== null && map[code] + const all = code !== null && map.null + const list = [ + // To do: add more extension tests. + /* c8 ignore next 2 */ + ...(Array.isArray(def) ? def : def ? [def] : []), + ...(Array.isArray(all) ? all : all ? [all] : []) + ] + + return handleListOfConstructs(list)(code) + } + } + + /** + * Handle a list of construct. + * + * @param {Array} list + * @returns {State} + */ + function handleListOfConstructs(list) { + listOfConstructs = list + constructIndex = 0 + + if (list.length === 0) { + (0,uvu_assert__WEBPACK_IMPORTED_MODULE_1__.ok)(bogusState, 'expected `bogusState` to be given') + return bogusState + } + + return handleConstruct(list[constructIndex]) + } + + /** + * Handle a single construct. + * + * @param {Construct} construct + * @returns {State} + */ + function handleConstruct(construct) { + return start + + /** @type {State} */ + function start(code) { + // To do: not needed to store if there is no bogus state, probably? + // Currently doesn’t work because `inspect` in document does a check + // w/o a bogus, which doesn’t make sense. But it does seem to help perf + // by not storing. + info = store() + currentConstruct = construct + + if (!construct.partial) { + context.currentConstruct = construct + } + + // Always populated by defaults. + (0,uvu_assert__WEBPACK_IMPORTED_MODULE_1__.ok)( + context.parser.constructs.disable.null, + 'expected `disable.null` to be populated' + ) + + if ( + construct.name && + context.parser.constructs.disable.null.includes(construct.name) + ) { + return nok(code) + } + + return construct.tokenize.call( + // If we do have fields, create an object w/ `context` as its + // prototype. + // This allows a “live binding”, which is needed for `interrupt`. + fields ? Object.assign(Object.create(context), fields) : context, + effects, + ok, + nok + )(code) + } + } + + /** @type {State} */ + function ok(code) { + (0,uvu_assert__WEBPACK_IMPORTED_MODULE_1__.ok)(code === expectedCode, 'expected code') + consumed = true + onreturn(currentConstruct, info) + return returnState + } + + /** @type {State} */ + function nok(code) { + (0,uvu_assert__WEBPACK_IMPORTED_MODULE_1__.ok)(code === expectedCode, 'expected code') + consumed = true + info.restore() + + if (++constructIndex < listOfConstructs.length) { + return handleConstruct(listOfConstructs[constructIndex]) + } + + return bogusState + } + } + } + + /** + * @param {Construct} construct + * @param {number} from + * @returns {void} + */ + function addResult(construct, from) { + if (construct.resolveAll && !resolveAllConstructs.includes(construct)) { + resolveAllConstructs.push(construct) + } + + if (construct.resolve) { + (0,micromark_util_chunked__WEBPACK_IMPORTED_MODULE_3__.splice)( + context.events, + from, + context.events.length - from, + construct.resolve(context.events.slice(from), context) + ) + } + + if (construct.resolveTo) { + context.events = construct.resolveTo(context.events, context) + } + + (0,uvu_assert__WEBPACK_IMPORTED_MODULE_1__.ok)( + construct.partial || + context.events.length === 0 || + context.events[context.events.length - 1][0] === 'exit', + 'expected last token to end' + ) + } + + /** + * Store state. + * + * @returns {Info} + */ + function store() { + const startPoint = now() + const startPrevious = context.previous + const startCurrentConstruct = context.currentConstruct + const startEventsIndex = context.events.length + const startStack = Array.from(stack) + + return {restore, from: startEventsIndex} + + /** + * Restore state. + * + * @returns {void} + */ + function restore() { + point = startPoint + context.previous = startPrevious + context.currentConstruct = startCurrentConstruct + context.events.length = startEventsIndex + stack = startStack + accountForPotentialSkip() + debug('position: restore: `%j`', point) + } + } + + /** + * Move the current point a bit forward in the line when it’s on a column + * skip. + * + * @returns {void} + */ + function accountForPotentialSkip() { + if (point.line in columnStart && point.column < 2) { + point.column = columnStart[point.line] + point.offset += columnStart[point.line] - 1 + } + } +} + +/** + * Get the chunks from a slice of chunks in the range of a token. + * + * @param {Array} chunks + * @param {Pick} token + * @returns {Array} + */ +function sliceChunks(chunks, token) { + const startIndex = token.start._index + const startBufferIndex = token.start._bufferIndex + const endIndex = token.end._index + const endBufferIndex = token.end._bufferIndex + /** @type {Array} */ + let view + + if (startIndex === endIndex) { + (0,uvu_assert__WEBPACK_IMPORTED_MODULE_1__.ok)(endBufferIndex > -1, 'expected non-negative end buffer index') + ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_1__.ok)(startBufferIndex > -1, 'expected non-negative start buffer index') + // @ts-expect-error `_bufferIndex` is used on string chunks. + view = [chunks[startIndex].slice(startBufferIndex, endBufferIndex)] + } else { + view = chunks.slice(startIndex, endIndex) + + if (startBufferIndex > -1) { + const head = view[0] + if (typeof head === 'string') { + view[0] = head.slice(startBufferIndex) + } else { + (0,uvu_assert__WEBPACK_IMPORTED_MODULE_1__.ok)(startBufferIndex === 0, 'expected `startBufferIndex` to be `0`') + view.shift() + } + } + + if (endBufferIndex > 0) { + // @ts-expect-error `_bufferIndex` is used on string chunks. + view.push(chunks[endIndex].slice(0, endBufferIndex)) + } + } + + return view +} + +/** + * Get the string value of a slice of chunks. + * + * @param {Array} chunks + * @param {boolean | undefined} [expandTabs=false] + * @returns {string} + */ +function serializeChunks(chunks, expandTabs) { + let index = -1 + /** @type {Array} */ + const result = [] + /** @type {boolean | undefined} */ + let atTab + + while (++index < chunks.length) { + const chunk = chunks[index] + /** @type {string} */ + let value + + if (typeof chunk === 'string') { + value = chunk + } else + switch (chunk) { + case micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.carriageReturn: { + value = micromark_util_symbol_values_js__WEBPACK_IMPORTED_MODULE_6__.values.cr + + break + } + + case micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.lineFeed: { + value = micromark_util_symbol_values_js__WEBPACK_IMPORTED_MODULE_6__.values.lf + + break + } + + case micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.carriageReturnLineFeed: { + value = micromark_util_symbol_values_js__WEBPACK_IMPORTED_MODULE_6__.values.cr + micromark_util_symbol_values_js__WEBPACK_IMPORTED_MODULE_6__.values.lf + + break + } + + case micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.horizontalTab: { + value = expandTabs ? micromark_util_symbol_values_js__WEBPACK_IMPORTED_MODULE_6__.values.space : micromark_util_symbol_values_js__WEBPACK_IMPORTED_MODULE_6__.values.ht + + break + } + + case micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.virtualSpace: { + if (!expandTabs && atTab) continue + value = micromark_util_symbol_values_js__WEBPACK_IMPORTED_MODULE_6__.values.space + + break + } + + default: { + (0,uvu_assert__WEBPACK_IMPORTED_MODULE_1__.ok)(typeof chunk === 'number', 'expected number') + // Currently only replacement character. + value = String.fromCharCode(chunk) + } + } + + atTab = chunk === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.horizontalTab + result.push(value) + } + + return result.join('') +} + + +/***/ }), + +/***/ "../node_modules/micromark/dev/lib/initialize/content.js": +/*!***************************************************************!*\ + !*** ../node_modules/micromark/dev/lib/initialize/content.js ***! + \***************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ content: () => (/* binding */ content) +/* harmony export */ }); +/* harmony import */ var micromark_factory_space__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! micromark-factory-space */ "../node_modules/micromark-factory-space/dev/index.js"); +/* harmony import */ var micromark_util_character__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! micromark-util-character */ "../node_modules/micromark-util-character/dev/index.js"); +/* harmony import */ var micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! micromark-util-symbol/codes.js */ "../node_modules/micromark-util-symbol/codes.js"); +/* harmony import */ var micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! micromark-util-symbol/constants.js */ "../node_modules/micromark-util-symbol/constants.js"); +/* harmony import */ var micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! micromark-util-symbol/types.js */ "../node_modules/micromark-util-symbol/types.js"); +/* harmony import */ var uvu_assert__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! uvu/assert */ "../node_modules/uvu/assert/index.mjs"); +/** + * @typedef {import('micromark-util-types').InitialConstruct} InitialConstruct + * @typedef {import('micromark-util-types').Initializer} Initializer + * @typedef {import('micromark-util-types').State} State + * @typedef {import('micromark-util-types').Token} Token + * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext + */ + + + + + + + + +/** @type {InitialConstruct} */ +const content = {tokenize: initializeContent} + +/** + * @this {TokenizeContext} + * @type {Initializer} + */ +function initializeContent(effects) { + const contentStart = effects.attempt( + this.parser.constructs.contentInitial, + afterContentStartConstruct, + paragraphInitial + ) + /** @type {Token} */ + let previous + + return contentStart + + /** @type {State} */ + function afterContentStartConstruct(code) { + ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)( + code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.eof || (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_2__.markdownLineEnding)(code), + 'expected eol or eof' + ) + + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.eof) { + effects.consume(code) + return + } + + effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_3__.types.lineEnding) + effects.consume(code) + effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_3__.types.lineEnding) + return (0,micromark_factory_space__WEBPACK_IMPORTED_MODULE_4__.factorySpace)(effects, contentStart, micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_3__.types.linePrefix) + } + + /** @type {State} */ + function paragraphInitial(code) { + (0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)( + code !== micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.eof && !(0,micromark_util_character__WEBPACK_IMPORTED_MODULE_2__.markdownLineEnding)(code), + 'expected anything other than a line ending or EOF' + ) + effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_3__.types.paragraph) + return lineStart(code) + } + + /** @type {State} */ + function lineStart(code) { + const token = effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_3__.types.chunkText, { + contentType: micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_5__.constants.contentTypeText, + previous + }) + + if (previous) { + previous.next = token + } + + previous = token + + return data(code) + } + + /** @type {State} */ + function data(code) { + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.eof) { + effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_3__.types.chunkText) + effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_3__.types.paragraph) + effects.consume(code) + return + } + + if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_2__.markdownLineEnding)(code)) { + effects.consume(code) + effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_3__.types.chunkText) + return lineStart + } + + // Data. + effects.consume(code) + return data + } +} + + +/***/ }), + +/***/ "../node_modules/micromark/dev/lib/initialize/document.js": +/*!****************************************************************!*\ + !*** ../node_modules/micromark/dev/lib/initialize/document.js ***! + \****************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ document: () => (/* binding */ document) +/* harmony export */ }); +/* harmony import */ var micromark_factory_space__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! micromark-factory-space */ "../node_modules/micromark-factory-space/dev/index.js"); +/* harmony import */ var micromark_util_character__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! micromark-util-character */ "../node_modules/micromark-util-character/dev/index.js"); +/* harmony import */ var micromark_util_chunked__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! micromark-util-chunked */ "../node_modules/micromark-util-chunked/dev/index.js"); +/* harmony import */ var micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! micromark-util-symbol/codes.js */ "../node_modules/micromark-util-symbol/codes.js"); +/* harmony import */ var micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! micromark-util-symbol/constants.js */ "../node_modules/micromark-util-symbol/constants.js"); +/* harmony import */ var micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! micromark-util-symbol/types.js */ "../node_modules/micromark-util-symbol/types.js"); +/* harmony import */ var uvu_assert__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! uvu/assert */ "../node_modules/uvu/assert/index.mjs"); +/** + * @typedef {import('micromark-util-types').Construct} Construct + * @typedef {import('micromark-util-types').ContainerState} ContainerState + * @typedef {import('micromark-util-types').InitialConstruct} InitialConstruct + * @typedef {import('micromark-util-types').Initializer} Initializer + * @typedef {import('micromark-util-types').Point} Point + * @typedef {import('micromark-util-types').State} State + * @typedef {import('micromark-util-types').Token} Token + * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext + * @typedef {import('micromark-util-types').Tokenizer} Tokenizer + */ + +/** + * @typedef {[Construct, ContainerState]} StackItem + */ + + + + + + + + + +/** @type {InitialConstruct} */ +const document = {tokenize: initializeDocument} + +/** @type {Construct} */ +const containerConstruct = {tokenize: tokenizeContainer} + +/** + * @this {TokenizeContext} + * @type {Initializer} + */ +function initializeDocument(effects) { + const self = this + /** @type {Array} */ + const stack = [] + let continued = 0 + /** @type {TokenizeContext | undefined} */ + let childFlow + /** @type {Token | undefined} */ + let childToken + /** @type {number} */ + let lineStartOffset + + return start + + /** @type {State} */ + function start(code) { + // First we iterate through the open blocks, starting with the root + // document, and descending through last children down to the last open + // block. + // Each block imposes a condition that the line must satisfy if the block is + // to remain open. + // For example, a block quote requires a `>` character. + // A paragraph requires a non-blank line. + // In this phase we may match all or just some of the open blocks. + // But we cannot close unmatched blocks yet, because we may have a lazy + // continuation line. + if (continued < stack.length) { + const item = stack[continued] + self.containerState = item[1] + ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)( + item[0].continuation, + 'expected `continuation` to be defined on container construct' + ) + return effects.attempt( + item[0].continuation, + documentContinue, + checkNewContainers + )(code) + } + + // Done. + return checkNewContainers(code) + } + + /** @type {State} */ + function documentContinue(code) { + (0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)( + self.containerState, + 'expected `containerState` to be defined after continuation' + ) + + continued++ + + // Note: this field is called `_closeFlow` but it also closes containers. + // Perhaps a good idea to rename it but it’s already used in the wild by + // extensions. + if (self.containerState._closeFlow) { + self.containerState._closeFlow = undefined + + if (childFlow) { + closeFlow() + } + + // Note: this algorithm for moving events around is similar to the + // algorithm when dealing with lazy lines in `writeToChild`. + const indexBeforeExits = self.events.length + let indexBeforeFlow = indexBeforeExits + /** @type {Point | undefined} */ + let point + + // Find the flow chunk. + while (indexBeforeFlow--) { + if ( + self.events[indexBeforeFlow][0] === 'exit' && + self.events[indexBeforeFlow][1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.chunkFlow + ) { + point = self.events[indexBeforeFlow][1].end + break + } + } + + (0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(point, 'could not find previous flow chunk') + + exitContainers(continued) + + // Fix positions. + let index = indexBeforeExits + + while (index < self.events.length) { + self.events[index][1].end = Object.assign({}, point) + index++ + } + + // Inject the exits earlier (they’re still also at the end). + (0,micromark_util_chunked__WEBPACK_IMPORTED_MODULE_2__.splice)( + self.events, + indexBeforeFlow + 1, + 0, + self.events.slice(indexBeforeExits) + ) + + // Discard the duplicate exits. + self.events.length = index + + return checkNewContainers(code) + } + + return start(code) + } + + /** @type {State} */ + function checkNewContainers(code) { + // Next, after consuming the continuation markers for existing blocks, we + // look for new block starts (e.g. `>` for a block quote). + // If we encounter a new block start, we close any blocks unmatched in + // step 1 before creating the new block as a child of the last matched + // block. + if (continued === stack.length) { + // No need to `check` whether there’s a container, of `exitContainers` + // would be moot. + // We can instead immediately `attempt` to parse one. + if (!childFlow) { + return documentContinued(code) + } + + // If we have concrete content, such as block HTML or fenced code, + // we can’t have containers “pierce” into them, so we can immediately + // start. + if (childFlow.currentConstruct && childFlow.currentConstruct.concrete) { + return flowStart(code) + } + + // If we do have flow, it could still be a blank line, + // but we’d be interrupting it w/ a new container if there’s a current + // construct. + // To do: next major: remove `_gfmTableDynamicInterruptHack` (no longer + // needed in micromark-extension-gfm-table@1.0.6). + self.interrupt = Boolean( + childFlow.currentConstruct && !childFlow._gfmTableDynamicInterruptHack + ) + } + + // Check if there is a new container. + self.containerState = {} + return effects.check( + containerConstruct, + thereIsANewContainer, + thereIsNoNewContainer + )(code) + } + + /** @type {State} */ + function thereIsANewContainer(code) { + if (childFlow) closeFlow() + exitContainers(continued) + return documentContinued(code) + } + + /** @type {State} */ + function thereIsNoNewContainer(code) { + self.parser.lazy[self.now().line] = continued !== stack.length + lineStartOffset = self.now().offset + return flowStart(code) + } + + /** @type {State} */ + function documentContinued(code) { + // Try new containers. + self.containerState = {} + return effects.attempt( + containerConstruct, + containerContinue, + flowStart + )(code) + } + + /** @type {State} */ + function containerContinue(code) { + (0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)( + self.currentConstruct, + 'expected `currentConstruct` to be defined on tokenizer' + ) + ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)( + self.containerState, + 'expected `containerState` to be defined on tokenizer' + ) + continued++ + stack.push([self.currentConstruct, self.containerState]) + // Try another. + return documentContinued(code) + } + + /** @type {State} */ + function flowStart(code) { + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_3__.codes.eof) { + if (childFlow) closeFlow() + exitContainers(0) + effects.consume(code) + return + } + + childFlow = childFlow || self.parser.flow(self.now()) + effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.chunkFlow, { + contentType: micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_4__.constants.contentTypeFlow, + previous: childToken, + _tokenizer: childFlow + }) + + return flowContinue(code) + } + + /** @type {State} */ + function flowContinue(code) { + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_3__.codes.eof) { + writeToChild(effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.chunkFlow), true) + exitContainers(0) + effects.consume(code) + return + } + + if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_5__.markdownLineEnding)(code)) { + effects.consume(code) + writeToChild(effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.chunkFlow)) + // Get ready for the next line. + continued = 0 + self.interrupt = undefined + return start + } + + effects.consume(code) + return flowContinue + } + + /** + * @param {Token} token + * @param {boolean | undefined} [eof] + * @returns {void} + */ + function writeToChild(token, eof) { + (0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(childFlow, 'expected `childFlow` to be defined when continuing') + const stream = self.sliceStream(token) + if (eof) stream.push(null) + token.previous = childToken + if (childToken) childToken.next = token + childToken = token + childFlow.defineSkip(token.start) + childFlow.write(stream) + + // Alright, so we just added a lazy line: + // + // ```markdown + // > a + // b. + // + // Or: + // + // > ~~~c + // d + // + // Or: + // + // > | e | + // f + // ``` + // + // The construct in the second example (fenced code) does not accept lazy + // lines, so it marked itself as done at the end of its first line, and + // then the content construct parses `d`. + // Most constructs in markdown match on the first line: if the first line + // forms a construct, a non-lazy line can’t “unmake” it. + // + // The construct in the third example is potentially a GFM table, and + // those are *weird*. + // It *could* be a table, from the first line, if the following line + // matches a condition. + // In this case, that second line is lazy, which “unmakes” the first line + // and turns the whole into one content block. + // + // We’ve now parsed the non-lazy and the lazy line, and can figure out + // whether the lazy line started a new flow block. + // If it did, we exit the current containers between the two flow blocks. + if (self.parser.lazy[token.start.line]) { + let index = childFlow.events.length + + while (index--) { + if ( + // The token starts before the line ending… + childFlow.events[index][1].start.offset < lineStartOffset && + // …and either is not ended yet… + (!childFlow.events[index][1].end || + // …or ends after it. + childFlow.events[index][1].end.offset > lineStartOffset) + ) { + // Exit: there’s still something open, which means it’s a lazy line + // part of something. + return + } + } + + // Note: this algorithm for moving events around is similar to the + // algorithm when closing flow in `documentContinue`. + const indexBeforeExits = self.events.length + let indexBeforeFlow = indexBeforeExits + /** @type {boolean | undefined} */ + let seen + /** @type {Point | undefined} */ + let point + + // Find the previous chunk (the one before the lazy line). + while (indexBeforeFlow--) { + if ( + self.events[indexBeforeFlow][0] === 'exit' && + self.events[indexBeforeFlow][1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.chunkFlow + ) { + if (seen) { + point = self.events[indexBeforeFlow][1].end + break + } + + seen = true + } + } + + (0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(point, 'could not find previous flow chunk') + + exitContainers(continued) + + // Fix positions. + index = indexBeforeExits + + while (index < self.events.length) { + self.events[index][1].end = Object.assign({}, point) + index++ + } + + // Inject the exits earlier (they’re still also at the end). + (0,micromark_util_chunked__WEBPACK_IMPORTED_MODULE_2__.splice)( + self.events, + indexBeforeFlow + 1, + 0, + self.events.slice(indexBeforeExits) + ) + + // Discard the duplicate exits. + self.events.length = index + } + } + + /** + * @param {number} size + * @returns {void} + */ + function exitContainers(size) { + let index = stack.length + + // Exit open containers. + while (index-- > size) { + const entry = stack[index] + self.containerState = entry[1] + ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)( + entry[0].exit, + 'expected `exit` to be defined on container construct' + ) + entry[0].exit.call(self, effects) + } + + stack.length = size + } + + function closeFlow() { + (0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)( + self.containerState, + 'expected `containerState` to be defined when closing flow' + ) + ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(childFlow, 'expected `childFlow` to be defined when closing it') + childFlow.write([micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_3__.codes.eof]) + childToken = undefined + childFlow = undefined + self.containerState._closeFlow = undefined + } +} + +/** + * @this {TokenizeContext} + * @type {Tokenizer} + */ +function tokenizeContainer(effects, ok, nok) { + // Always populated by defaults. + (0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)( + this.parser.constructs.disable.null, + 'expected `disable.null` to be populated' + ) + return (0,micromark_factory_space__WEBPACK_IMPORTED_MODULE_6__.factorySpace)( + effects, + effects.attempt(this.parser.constructs.document, ok, nok), + micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.linePrefix, + this.parser.constructs.disable.null.includes('codeIndented') + ? undefined + : micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_4__.constants.tabSize + ) +} + + +/***/ }), + +/***/ "../node_modules/micromark/dev/lib/initialize/flow.js": +/*!************************************************************!*\ + !*** ../node_modules/micromark/dev/lib/initialize/flow.js ***! + \************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ flow: () => (/* binding */ flow) +/* harmony export */ }); +/* harmony import */ var micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! micromark-core-commonmark */ "../node_modules/micromark-core-commonmark/dev/lib/blank-line.js"); +/* harmony import */ var micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! micromark-core-commonmark */ "../node_modules/micromark-core-commonmark/dev/lib/content.js"); +/* harmony import */ var micromark_factory_space__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! micromark-factory-space */ "../node_modules/micromark-factory-space/dev/index.js"); +/* harmony import */ var micromark_util_character__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! micromark-util-character */ "../node_modules/micromark-util-character/dev/index.js"); +/* harmony import */ var micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! micromark-util-symbol/codes.js */ "../node_modules/micromark-util-symbol/codes.js"); +/* harmony import */ var micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! micromark-util-symbol/types.js */ "../node_modules/micromark-util-symbol/types.js"); +/* harmony import */ var uvu_assert__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! uvu/assert */ "../node_modules/uvu/assert/index.mjs"); +/** + * @typedef {import('micromark-util-types').InitialConstruct} InitialConstruct + * @typedef {import('micromark-util-types').Initializer} Initializer + * @typedef {import('micromark-util-types').State} State + * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext + */ + + + + + + + + +/** @type {InitialConstruct} */ +const flow = {tokenize: initializeFlow} + +/** + * @this {TokenizeContext} + * @type {Initializer} + */ +function initializeFlow(effects) { + const self = this + const initial = effects.attempt( + // Try to parse a blank line. + micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_1__.blankLine, + atBlankEnding, + // Try to parse initial flow (essentially, only code). + effects.attempt( + this.parser.constructs.flowInitial, + afterConstruct, + (0,micromark_factory_space__WEBPACK_IMPORTED_MODULE_2__.factorySpace)( + effects, + effects.attempt( + this.parser.constructs.flow, + afterConstruct, + effects.attempt(micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_3__.content, afterConstruct) + ), + micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_4__.types.linePrefix + ) + ) + ) + + return initial + + /** @type {State} */ + function atBlankEnding(code) { + ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)( + code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_5__.codes.eof || (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_6__.markdownLineEnding)(code), + 'expected eol or eof' + ) + + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_5__.codes.eof) { + effects.consume(code) + return + } + + effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_4__.types.lineEndingBlank) + effects.consume(code) + effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_4__.types.lineEndingBlank) + self.currentConstruct = undefined + return initial + } + + /** @type {State} */ + function afterConstruct(code) { + (0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)( + code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_5__.codes.eof || (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_6__.markdownLineEnding)(code), + 'expected eol or eof' + ) + + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_5__.codes.eof) { + effects.consume(code) + return + } + + effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_4__.types.lineEnding) + effects.consume(code) + effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_4__.types.lineEnding) + self.currentConstruct = undefined + return initial + } +} + + +/***/ }), + +/***/ "../node_modules/micromark/dev/lib/initialize/text.js": +/*!************************************************************!*\ + !*** ../node_modules/micromark/dev/lib/initialize/text.js ***! + \************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ resolver: () => (/* binding */ resolver), +/* harmony export */ string: () => (/* binding */ string), +/* harmony export */ text: () => (/* binding */ text) +/* harmony export */ }); +/* harmony import */ var micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! micromark-util-symbol/codes.js */ "../node_modules/micromark-util-symbol/codes.js"); +/* harmony import */ var micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! micromark-util-symbol/constants.js */ "../node_modules/micromark-util-symbol/constants.js"); +/* harmony import */ var micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! micromark-util-symbol/types.js */ "../node_modules/micromark-util-symbol/types.js"); +/* harmony import */ var uvu_assert__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! uvu/assert */ "../node_modules/uvu/assert/index.mjs"); +/** + * @typedef {import('micromark-util-types').Code} Code + * @typedef {import('micromark-util-types').InitialConstruct} InitialConstruct + * @typedef {import('micromark-util-types').Initializer} Initializer + * @typedef {import('micromark-util-types').Resolver} Resolver + * @typedef {import('micromark-util-types').State} State + * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext + */ + + + + + + +const resolver = {resolveAll: createResolver()} +const string = initializeFactory('string') +const text = initializeFactory('text') + +/** + * @param {'string' | 'text'} field + * @returns {InitialConstruct} + */ +function initializeFactory(field) { + return { + tokenize: initializeText, + resolveAll: createResolver( + field === 'text' ? resolveAllLineSuffixes : undefined + ) + } + + /** + * @this {TokenizeContext} + * @type {Initializer} + */ + function initializeText(effects) { + const self = this + const constructs = this.parser.constructs[field] + const text = effects.attempt(constructs, start, notText) + + return start + + /** @type {State} */ + function start(code) { + return atBreak(code) ? text(code) : notText(code) + } + + /** @type {State} */ + function notText(code) { + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.eof) { + effects.consume(code) + return + } + + effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.data) + effects.consume(code) + return data + } + + /** @type {State} */ + function data(code) { + if (atBreak(code)) { + effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.data) + return text(code) + } + + // Data. + effects.consume(code) + return data + } + + /** + * @param {Code} code + * @returns {boolean} + */ + function atBreak(code) { + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.eof) { + return true + } + + const list = constructs[code] + let index = -1 + + if (list) { + // Always populated by defaults. + (0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(Array.isArray(list), 'expected `disable.null` to be populated') + + while (++index < list.length) { + const item = list[index] + if (!item.previous || item.previous.call(self, self.previous)) { + return true + } + } + } + + return false + } + } +} + +/** + * @param {Resolver | undefined} [extraResolver] + * @returns {Resolver} + */ +function createResolver(extraResolver) { + return resolveAllText + + /** @type {Resolver} */ + function resolveAllText(events, context) { + let index = -1 + /** @type {number | undefined} */ + let enter + + // A rather boring computation (to merge adjacent `data` events) which + // improves mm performance by 29%. + while (++index <= events.length) { + if (enter === undefined) { + if (events[index] && events[index][1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.data) { + enter = index + index++ + } + } else if (!events[index] || events[index][1].type !== micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.data) { + // Don’t do anything if there is one data token. + if (index !== enter + 2) { + events[enter][1].end = events[index - 1][1].end + events.splice(enter + 2, index - enter - 2) + index = enter + 2 + } + + enter = undefined + } + } + + return extraResolver ? extraResolver(events, context) : events + } +} + +/** + * A rather ugly set of instructions which again looks at chunks in the input + * stream. + * The reason to do this here is that it is *much* faster to parse in reverse. + * And that we can’t hook into `null` to split the line suffix before an EOF. + * To do: figure out if we can make this into a clean utility, or even in core. + * As it will be useful for GFMs literal autolink extension (and maybe even + * tables?) + * + * @type {Resolver} + */ +function resolveAllLineSuffixes(events, context) { + let eventIndex = 0 // Skip first. + + while (++eventIndex <= events.length) { + if ( + (eventIndex === events.length || + events[eventIndex][1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.lineEnding) && + events[eventIndex - 1][1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.data + ) { + const data = events[eventIndex - 1][1] + const chunks = context.sliceStream(data) + let index = chunks.length + let bufferIndex = -1 + let size = 0 + /** @type {boolean | undefined} */ + let tabs + + while (index--) { + const chunk = chunks[index] + + if (typeof chunk === 'string') { + bufferIndex = chunk.length + + while (chunk.charCodeAt(bufferIndex - 1) === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.space) { + size++ + bufferIndex-- + } + + if (bufferIndex) break + bufferIndex = -1 + } + // Number + else if (chunk === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.horizontalTab) { + tabs = true + size++ + } else if (chunk === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.virtualSpace) { + // Empty + } else { + // Replacement character, exit. + index++ + break + } + } + + if (size) { + const token = { + type: + eventIndex === events.length || + tabs || + size < micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_3__.constants.hardBreakPrefixSizeMin + ? micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.lineSuffix + : micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.hardBreakTrailing, + start: { + line: data.end.line, + column: data.end.column - size, + offset: data.end.offset - size, + _index: data.start._index + index, + _bufferIndex: index + ? bufferIndex + : data.start._bufferIndex + bufferIndex + }, + end: Object.assign({}, data.end) + } + + data.end = Object.assign({}, token.start) + + if (data.start.offset === data.end.offset) { + Object.assign(data, token) + } else { + events.splice( + eventIndex, + 0, + ['enter', token, context], + ['exit', token, context] + ) + eventIndex += 2 + } + } + + eventIndex++ + } + } + + return events +} + + +/***/ }), + +/***/ "../node_modules/micromark/dev/lib/parse.js": +/*!**************************************************!*\ + !*** ../node_modules/micromark/dev/lib/parse.js ***! + \**************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ parse: () => (/* binding */ parse) +/* harmony export */ }); +/* harmony import */ var micromark_util_combine_extensions__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! micromark-util-combine-extensions */ "../node_modules/micromark-util-combine-extensions/index.js"); +/* harmony import */ var _initialize_content_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./initialize/content.js */ "../node_modules/micromark/dev/lib/initialize/content.js"); +/* harmony import */ var _initialize_document_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./initialize/document.js */ "../node_modules/micromark/dev/lib/initialize/document.js"); +/* harmony import */ var _initialize_flow_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./initialize/flow.js */ "../node_modules/micromark/dev/lib/initialize/flow.js"); +/* harmony import */ var _initialize_text_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./initialize/text.js */ "../node_modules/micromark/dev/lib/initialize/text.js"); +/* harmony import */ var _create_tokenizer_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./create-tokenizer.js */ "../node_modules/micromark/dev/lib/create-tokenizer.js"); +/* harmony import */ var _constructs_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./constructs.js */ "../node_modules/micromark/dev/lib/constructs.js"); +/** + * @typedef {import('micromark-util-types').Create} Create + * @typedef {import('micromark-util-types').FullNormalizedExtension} FullNormalizedExtension + * @typedef {import('micromark-util-types').InitialConstruct} InitialConstruct + * @typedef {import('micromark-util-types').ParseContext} ParseContext + * @typedef {import('micromark-util-types').ParseOptions} ParseOptions + */ + + + + + + + + + +/** + * @param {ParseOptions | null | undefined} [options] + * @returns {ParseContext} + */ +function parse(options) { + const settings = options || {} + const constructs = /** @type {FullNormalizedExtension} */ ( + (0,micromark_util_combine_extensions__WEBPACK_IMPORTED_MODULE_0__.combineExtensions)([_constructs_js__WEBPACK_IMPORTED_MODULE_1__, ...(settings.extensions || [])]) + ) + + /** @type {ParseContext} */ + const parser = { + defined: [], + lazy: {}, + constructs, + content: create(_initialize_content_js__WEBPACK_IMPORTED_MODULE_2__.content), + document: create(_initialize_document_js__WEBPACK_IMPORTED_MODULE_3__.document), + flow: create(_initialize_flow_js__WEBPACK_IMPORTED_MODULE_4__.flow), + string: create(_initialize_text_js__WEBPACK_IMPORTED_MODULE_5__.string), + text: create(_initialize_text_js__WEBPACK_IMPORTED_MODULE_5__.text) + } + + return parser + + /** + * @param {InitialConstruct} initial + */ + function create(initial) { + return creator + /** @type {Create} */ + function creator(from) { + return (0,_create_tokenizer_js__WEBPACK_IMPORTED_MODULE_6__.createTokenizer)(parser, initial, from) + } + } +} + + +/***/ }), + +/***/ "../node_modules/micromark/dev/lib/postprocess.js": +/*!********************************************************!*\ + !*** ../node_modules/micromark/dev/lib/postprocess.js ***! + \********************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ postprocess: () => (/* binding */ postprocess) +/* harmony export */ }); +/* harmony import */ var micromark_util_subtokenize__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! micromark-util-subtokenize */ "../node_modules/micromark-util-subtokenize/dev/index.js"); +/** + * @typedef {import('micromark-util-types').Event} Event + */ + + + +/** + * @param {Array} events + * @returns {Array} + */ +function postprocess(events) { + while (!(0,micromark_util_subtokenize__WEBPACK_IMPORTED_MODULE_0__.subtokenize)(events)) { + // Empty + } + + return events +} + + +/***/ }), + +/***/ "../node_modules/micromark/dev/lib/preprocess.js": +/*!*******************************************************!*\ + !*** ../node_modules/micromark/dev/lib/preprocess.js ***! + \*******************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ preprocess: () => (/* binding */ preprocess) +/* harmony export */ }); +/* harmony import */ var micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! micromark-util-symbol/codes.js */ "../node_modules/micromark-util-symbol/codes.js"); +/* harmony import */ var micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! micromark-util-symbol/constants.js */ "../node_modules/micromark-util-symbol/constants.js"); +/** + * @typedef {import('micromark-util-types').Chunk} Chunk + * @typedef {import('micromark-util-types').Code} Code + * @typedef {import('micromark-util-types').Encoding} Encoding + * @typedef {import('micromark-util-types').Value} Value + */ + +/** + * @callback Preprocessor + * @param {Value} value + * @param {Encoding | null | undefined} [encoding] + * @param {boolean | null | undefined} [end=false] + * @returns {Array} + */ + + + + +const search = /[\0\t\n\r]/g + +/** + * @returns {Preprocessor} + */ +function preprocess() { + let column = 1 + let buffer = '' + /** @type {boolean | undefined} */ + let start = true + /** @type {boolean | undefined} */ + let atCarriageReturn + + return preprocessor + + /** @type {Preprocessor} */ + function preprocessor(value, encoding, end) { + /** @type {Array} */ + const chunks = [] + /** @type {RegExpMatchArray | null} */ + let match + /** @type {number} */ + let next + /** @type {number} */ + let startPosition + /** @type {number} */ + let endPosition + /** @type {Code} */ + let code + + // @ts-expect-error `Buffer` does allow an encoding. + value = buffer + value.toString(encoding) + startPosition = 0 + buffer = '' + + if (start) { + // To do: `markdown-rs` actually parses BOMs (byte order mark). + if (value.charCodeAt(0) === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.byteOrderMarker) { + startPosition++ + } + + start = undefined + } + + while (startPosition < value.length) { + search.lastIndex = startPosition + match = search.exec(value) + endPosition = + match && match.index !== undefined ? match.index : value.length + code = value.charCodeAt(endPosition) + + if (!match) { + buffer = value.slice(startPosition) + break + } + + if ( + code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.lf && + startPosition === endPosition && + atCarriageReturn + ) { + chunks.push(micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.carriageReturnLineFeed) + atCarriageReturn = undefined + } else { + if (atCarriageReturn) { + chunks.push(micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.carriageReturn) + atCarriageReturn = undefined + } + + if (startPosition < endPosition) { + chunks.push(value.slice(startPosition, endPosition)) + column += endPosition - startPosition + } + + switch (code) { + case micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.nul: { + chunks.push(micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.replacementCharacter) + column++ + + break + } + + case micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.ht: { + next = Math.ceil(column / micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_1__.constants.tabSize) * micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_1__.constants.tabSize + chunks.push(micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.horizontalTab) + while (column++ < next) chunks.push(micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.virtualSpace) + + break + } + + case micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.lf: { + chunks.push(micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.lineFeed) + column = 1 + + break + } + + default: { + atCarriageReturn = true + column = 1 + } + } + } + + startPosition = endPosition + 1 + } + + if (end) { + if (atCarriageReturn) chunks.push(micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.carriageReturn) + if (buffer) chunks.push(buffer) + chunks.push(micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.eof) + } + + return chunks + } +} + + +/***/ }), + +/***/ "../node_modules/property-information/index.js": +/*!*****************************************************!*\ + !*** ../node_modules/property-information/index.js ***! + \*****************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ find: () => (/* reexport safe */ _lib_find_js__WEBPACK_IMPORTED_MODULE_0__.find), +/* harmony export */ hastToReact: () => (/* reexport safe */ _lib_hast_to_react_js__WEBPACK_IMPORTED_MODULE_1__.hastToReact), +/* harmony export */ html: () => (/* binding */ html), +/* harmony export */ normalize: () => (/* reexport safe */ _lib_normalize_js__WEBPACK_IMPORTED_MODULE_2__.normalize), +/* harmony export */ svg: () => (/* binding */ svg) +/* harmony export */ }); +/* harmony import */ var _lib_util_merge_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./lib/util/merge.js */ "../node_modules/property-information/lib/util/merge.js"); +/* harmony import */ var _lib_xlink_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./lib/xlink.js */ "../node_modules/property-information/lib/xlink.js"); +/* harmony import */ var _lib_xml_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./lib/xml.js */ "../node_modules/property-information/lib/xml.js"); +/* harmony import */ var _lib_xmlns_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./lib/xmlns.js */ "../node_modules/property-information/lib/xmlns.js"); +/* harmony import */ var _lib_aria_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./lib/aria.js */ "../node_modules/property-information/lib/aria.js"); +/* harmony import */ var _lib_html_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./lib/html.js */ "../node_modules/property-information/lib/html.js"); +/* harmony import */ var _lib_svg_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./lib/svg.js */ "../node_modules/property-information/lib/svg.js"); +/* harmony import */ var _lib_find_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./lib/find.js */ "../node_modules/property-information/lib/find.js"); +/* harmony import */ var _lib_hast_to_react_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./lib/hast-to-react.js */ "../node_modules/property-information/lib/hast-to-react.js"); +/* harmony import */ var _lib_normalize_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./lib/normalize.js */ "../node_modules/property-information/lib/normalize.js"); +/** + * @typedef {import('./lib/util/info.js').Info} Info + * @typedef {import('./lib/util/schema.js').Schema} Schema + */ + + + + + + + + + + + + +const html = (0,_lib_util_merge_js__WEBPACK_IMPORTED_MODULE_3__.merge)([_lib_xml_js__WEBPACK_IMPORTED_MODULE_4__.xml, _lib_xlink_js__WEBPACK_IMPORTED_MODULE_5__.xlink, _lib_xmlns_js__WEBPACK_IMPORTED_MODULE_6__.xmlns, _lib_aria_js__WEBPACK_IMPORTED_MODULE_7__.aria, _lib_html_js__WEBPACK_IMPORTED_MODULE_8__.html], 'html') +const svg = (0,_lib_util_merge_js__WEBPACK_IMPORTED_MODULE_3__.merge)([_lib_xml_js__WEBPACK_IMPORTED_MODULE_4__.xml, _lib_xlink_js__WEBPACK_IMPORTED_MODULE_5__.xlink, _lib_xmlns_js__WEBPACK_IMPORTED_MODULE_6__.xmlns, _lib_aria_js__WEBPACK_IMPORTED_MODULE_7__.aria, _lib_svg_js__WEBPACK_IMPORTED_MODULE_9__.svg], 'svg') + + +/***/ }), + +/***/ "../node_modules/property-information/lib/aria.js": +/*!********************************************************!*\ + !*** ../node_modules/property-information/lib/aria.js ***! + \********************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ aria: () => (/* binding */ aria) +/* harmony export */ }); +/* harmony import */ var _util_types_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./util/types.js */ "../node_modules/property-information/lib/util/types.js"); +/* harmony import */ var _util_create_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./util/create.js */ "../node_modules/property-information/lib/util/create.js"); + + + +const aria = (0,_util_create_js__WEBPACK_IMPORTED_MODULE_0__.create)({ + transform(_, prop) { + return prop === 'role' ? prop : 'aria-' + prop.slice(4).toLowerCase() + }, + properties: { + ariaActiveDescendant: null, + ariaAtomic: _util_types_js__WEBPACK_IMPORTED_MODULE_1__.booleanish, + ariaAutoComplete: null, + ariaBusy: _util_types_js__WEBPACK_IMPORTED_MODULE_1__.booleanish, + ariaChecked: _util_types_js__WEBPACK_IMPORTED_MODULE_1__.booleanish, + ariaColCount: _util_types_js__WEBPACK_IMPORTED_MODULE_1__.number, + ariaColIndex: _util_types_js__WEBPACK_IMPORTED_MODULE_1__.number, + ariaColSpan: _util_types_js__WEBPACK_IMPORTED_MODULE_1__.number, + ariaControls: _util_types_js__WEBPACK_IMPORTED_MODULE_1__.spaceSeparated, + ariaCurrent: null, + ariaDescribedBy: _util_types_js__WEBPACK_IMPORTED_MODULE_1__.spaceSeparated, + ariaDetails: null, + ariaDisabled: _util_types_js__WEBPACK_IMPORTED_MODULE_1__.booleanish, + ariaDropEffect: _util_types_js__WEBPACK_IMPORTED_MODULE_1__.spaceSeparated, + ariaErrorMessage: null, + ariaExpanded: _util_types_js__WEBPACK_IMPORTED_MODULE_1__.booleanish, + ariaFlowTo: _util_types_js__WEBPACK_IMPORTED_MODULE_1__.spaceSeparated, + ariaGrabbed: _util_types_js__WEBPACK_IMPORTED_MODULE_1__.booleanish, + ariaHasPopup: null, + ariaHidden: _util_types_js__WEBPACK_IMPORTED_MODULE_1__.booleanish, + ariaInvalid: null, + ariaKeyShortcuts: null, + ariaLabel: null, + ariaLabelledBy: _util_types_js__WEBPACK_IMPORTED_MODULE_1__.spaceSeparated, + ariaLevel: _util_types_js__WEBPACK_IMPORTED_MODULE_1__.number, + ariaLive: null, + ariaModal: _util_types_js__WEBPACK_IMPORTED_MODULE_1__.booleanish, + ariaMultiLine: _util_types_js__WEBPACK_IMPORTED_MODULE_1__.booleanish, + ariaMultiSelectable: _util_types_js__WEBPACK_IMPORTED_MODULE_1__.booleanish, + ariaOrientation: null, + ariaOwns: _util_types_js__WEBPACK_IMPORTED_MODULE_1__.spaceSeparated, + ariaPlaceholder: null, + ariaPosInSet: _util_types_js__WEBPACK_IMPORTED_MODULE_1__.number, + ariaPressed: _util_types_js__WEBPACK_IMPORTED_MODULE_1__.booleanish, + ariaReadOnly: _util_types_js__WEBPACK_IMPORTED_MODULE_1__.booleanish, + ariaRelevant: null, + ariaRequired: _util_types_js__WEBPACK_IMPORTED_MODULE_1__.booleanish, + ariaRoleDescription: _util_types_js__WEBPACK_IMPORTED_MODULE_1__.spaceSeparated, + ariaRowCount: _util_types_js__WEBPACK_IMPORTED_MODULE_1__.number, + ariaRowIndex: _util_types_js__WEBPACK_IMPORTED_MODULE_1__.number, + ariaRowSpan: _util_types_js__WEBPACK_IMPORTED_MODULE_1__.number, + ariaSelected: _util_types_js__WEBPACK_IMPORTED_MODULE_1__.booleanish, + ariaSetSize: _util_types_js__WEBPACK_IMPORTED_MODULE_1__.number, + ariaSort: null, + ariaValueMax: _util_types_js__WEBPACK_IMPORTED_MODULE_1__.number, + ariaValueMin: _util_types_js__WEBPACK_IMPORTED_MODULE_1__.number, + ariaValueNow: _util_types_js__WEBPACK_IMPORTED_MODULE_1__.number, + ariaValueText: null, + role: null + } +}) + + +/***/ }), + +/***/ "../node_modules/property-information/lib/find.js": +/*!********************************************************!*\ + !*** ../node_modules/property-information/lib/find.js ***! + \********************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ find: () => (/* binding */ find) +/* harmony export */ }); +/* harmony import */ var _normalize_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./normalize.js */ "../node_modules/property-information/lib/normalize.js"); +/* harmony import */ var _util_defined_info_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./util/defined-info.js */ "../node_modules/property-information/lib/util/defined-info.js"); +/* harmony import */ var _util_info_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./util/info.js */ "../node_modules/property-information/lib/util/info.js"); +/** + * @typedef {import('./util/schema.js').Schema} Schema + */ + + + + + +const valid = /^data[-\w.:]+$/i +const dash = /-[a-z]/g +const cap = /[A-Z]/g + +/** + * @param {Schema} schema + * @param {string} value + * @returns {Info} + */ +function find(schema, value) { + const normal = (0,_normalize_js__WEBPACK_IMPORTED_MODULE_0__.normalize)(value) + let prop = value + let Type = _util_info_js__WEBPACK_IMPORTED_MODULE_1__.Info + + if (normal in schema.normal) { + return schema.property[schema.normal[normal]] + } + + if (normal.length > 4 && normal.slice(0, 4) === 'data' && valid.test(value)) { + // Attribute or property. + if (value.charAt(4) === '-') { + // Turn it into a property. + const rest = value.slice(5).replace(dash, camelcase) + prop = 'data' + rest.charAt(0).toUpperCase() + rest.slice(1) + } else { + // Turn it into an attribute. + const rest = value.slice(4) + + if (!dash.test(rest)) { + let dashes = rest.replace(cap, kebab) + + if (dashes.charAt(0) !== '-') { + dashes = '-' + dashes + } + + value = 'data' + dashes + } + } + + Type = _util_defined_info_js__WEBPACK_IMPORTED_MODULE_2__.DefinedInfo + } + + return new Type(prop, value) +} + +/** + * @param {string} $0 + * @returns {string} + */ +function kebab($0) { + return '-' + $0.toLowerCase() +} + +/** + * @param {string} $0 + * @returns {string} + */ +function camelcase($0) { + return $0.charAt(1).toUpperCase() +} + + +/***/ }), + +/***/ "../node_modules/property-information/lib/hast-to-react.js": +/*!*****************************************************************!*\ + !*** ../node_modules/property-information/lib/hast-to-react.js ***! + \*****************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ hastToReact: () => (/* binding */ hastToReact) +/* harmony export */ }); +/** + * `hast` is close to `React`, but differs in a couple of cases. + * + * To get a React property from a hast property, check if it is in + * `hastToReact`, if it is, then use the corresponding value, + * otherwise, use the hast property. + * + * @type {Record} + */ +const hastToReact = { + classId: 'classID', + dataType: 'datatype', + itemId: 'itemID', + strokeDashArray: 'strokeDasharray', + strokeDashOffset: 'strokeDashoffset', + strokeLineCap: 'strokeLinecap', + strokeLineJoin: 'strokeLinejoin', + strokeMiterLimit: 'strokeMiterlimit', + typeOf: 'typeof', + xLinkActuate: 'xlinkActuate', + xLinkArcRole: 'xlinkArcrole', + xLinkHref: 'xlinkHref', + xLinkRole: 'xlinkRole', + xLinkShow: 'xlinkShow', + xLinkTitle: 'xlinkTitle', + xLinkType: 'xlinkType', + xmlnsXLink: 'xmlnsXlink' +} + + +/***/ }), + +/***/ "../node_modules/property-information/lib/html.js": +/*!********************************************************!*\ + !*** ../node_modules/property-information/lib/html.js ***! + \********************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ html: () => (/* binding */ html) +/* harmony export */ }); +/* harmony import */ var _util_types_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./util/types.js */ "../node_modules/property-information/lib/util/types.js"); +/* harmony import */ var _util_create_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./util/create.js */ "../node_modules/property-information/lib/util/create.js"); +/* harmony import */ var _util_case_insensitive_transform_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./util/case-insensitive-transform.js */ "../node_modules/property-information/lib/util/case-insensitive-transform.js"); + + + + +const html = (0,_util_create_js__WEBPACK_IMPORTED_MODULE_0__.create)({ + space: 'html', + attributes: { + acceptcharset: 'accept-charset', + classname: 'class', + htmlfor: 'for', + httpequiv: 'http-equiv' + }, + transform: _util_case_insensitive_transform_js__WEBPACK_IMPORTED_MODULE_1__.caseInsensitiveTransform, + mustUseProperty: ['checked', 'multiple', 'muted', 'selected'], + properties: { + // Standard Properties. + abbr: null, + accept: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.commaSeparated, + acceptCharset: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.spaceSeparated, + accessKey: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.spaceSeparated, + action: null, + allow: null, + allowFullScreen: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.boolean, + allowPaymentRequest: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.boolean, + allowUserMedia: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.boolean, + alt: null, + as: null, + async: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.boolean, + autoCapitalize: null, + autoComplete: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.spaceSeparated, + autoFocus: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.boolean, + autoPlay: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.boolean, + capture: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.boolean, + charSet: null, + checked: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.boolean, + cite: null, + className: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.spaceSeparated, + cols: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.number, + colSpan: null, + content: null, + contentEditable: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.booleanish, + controls: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.boolean, + controlsList: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.spaceSeparated, + coords: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.number | _util_types_js__WEBPACK_IMPORTED_MODULE_2__.commaSeparated, + crossOrigin: null, + data: null, + dateTime: null, + decoding: null, + default: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.boolean, + defer: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.boolean, + dir: null, + dirName: null, + disabled: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.boolean, + download: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.overloadedBoolean, + draggable: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.booleanish, + encType: null, + enterKeyHint: null, + form: null, + formAction: null, + formEncType: null, + formMethod: null, + formNoValidate: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.boolean, + formTarget: null, + headers: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.spaceSeparated, + height: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.number, + hidden: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.boolean, + high: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.number, + href: null, + hrefLang: null, + htmlFor: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.spaceSeparated, + httpEquiv: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.spaceSeparated, + id: null, + imageSizes: null, + imageSrcSet: null, + inputMode: null, + integrity: null, + is: null, + isMap: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.boolean, + itemId: null, + itemProp: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.spaceSeparated, + itemRef: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.spaceSeparated, + itemScope: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.boolean, + itemType: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.spaceSeparated, + kind: null, + label: null, + lang: null, + language: null, + list: null, + loading: null, + loop: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.boolean, + low: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.number, + manifest: null, + max: null, + maxLength: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.number, + media: null, + method: null, + min: null, + minLength: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.number, + multiple: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.boolean, + muted: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.boolean, + name: null, + nonce: null, + noModule: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.boolean, + noValidate: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.boolean, + onAbort: null, + onAfterPrint: null, + onAuxClick: null, + onBeforeMatch: null, + onBeforePrint: null, + onBeforeUnload: null, + onBlur: null, + onCancel: null, + onCanPlay: null, + onCanPlayThrough: null, + onChange: null, + onClick: null, + onClose: null, + onContextLost: null, + onContextMenu: null, + onContextRestored: null, + onCopy: null, + onCueChange: null, + onCut: null, + onDblClick: null, + onDrag: null, + onDragEnd: null, + onDragEnter: null, + onDragExit: null, + onDragLeave: null, + onDragOver: null, + onDragStart: null, + onDrop: null, + onDurationChange: null, + onEmptied: null, + onEnded: null, + onError: null, + onFocus: null, + onFormData: null, + onHashChange: null, + onInput: null, + onInvalid: null, + onKeyDown: null, + onKeyPress: null, + onKeyUp: null, + onLanguageChange: null, + onLoad: null, + onLoadedData: null, + onLoadedMetadata: null, + onLoadEnd: null, + onLoadStart: null, + onMessage: null, + onMessageError: null, + onMouseDown: null, + onMouseEnter: null, + onMouseLeave: null, + onMouseMove: null, + onMouseOut: null, + onMouseOver: null, + onMouseUp: null, + onOffline: null, + onOnline: null, + onPageHide: null, + onPageShow: null, + onPaste: null, + onPause: null, + onPlay: null, + onPlaying: null, + onPopState: null, + onProgress: null, + onRateChange: null, + onRejectionHandled: null, + onReset: null, + onResize: null, + onScroll: null, + onScrollEnd: null, + onSecurityPolicyViolation: null, + onSeeked: null, + onSeeking: null, + onSelect: null, + onSlotChange: null, + onStalled: null, + onStorage: null, + onSubmit: null, + onSuspend: null, + onTimeUpdate: null, + onToggle: null, + onUnhandledRejection: null, + onUnload: null, + onVolumeChange: null, + onWaiting: null, + onWheel: null, + open: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.boolean, + optimum: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.number, + pattern: null, + ping: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.spaceSeparated, + placeholder: null, + playsInline: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.boolean, + poster: null, + preload: null, + readOnly: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.boolean, + referrerPolicy: null, + rel: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.spaceSeparated, + required: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.boolean, + reversed: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.boolean, + rows: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.number, + rowSpan: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.number, + sandbox: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.spaceSeparated, + scope: null, + scoped: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.boolean, + seamless: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.boolean, + selected: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.boolean, + shape: null, + size: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.number, + sizes: null, + slot: null, + span: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.number, + spellCheck: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.booleanish, + src: null, + srcDoc: null, + srcLang: null, + srcSet: null, + start: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.number, + step: null, + style: null, + tabIndex: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.number, + target: null, + title: null, + translate: null, + type: null, + typeMustMatch: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.boolean, + useMap: null, + value: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.booleanish, + width: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.number, + wrap: null, + + // Legacy. + // See: https://html.spec.whatwg.org/#other-elements,-attributes-and-apis + align: null, // Several. Use CSS `text-align` instead, + aLink: null, // ``. Use CSS `a:active {color}` instead + archive: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.spaceSeparated, // ``. List of URIs to archives + axis: null, // `` and ``. Use `scope` on `` + background: null, // ``. Use CSS `background-image` instead + bgColor: null, // `` and table elements. Use CSS `background-color` instead + border: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.number, // ``. Use CSS `border-width` instead, + borderColor: null, // `
    `. Use CSS `border-color` instead, + bottomMargin: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.number, // `` + cellPadding: null, // `
    ` + cellSpacing: null, // `
    ` + char: null, // Several table elements. When `align=char`, sets the character to align on + charOff: null, // Several table elements. When `char`, offsets the alignment + classId: null, // `` + clear: null, // `
    `. Use CSS `clear` instead + code: null, // `` + codeBase: null, // `` + codeType: null, // `` + color: null, // `` and `
    `. Use CSS instead + compact: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.boolean, // Lists. Use CSS to reduce space between items instead + declare: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.boolean, // `` + event: null, // ` + * ``` + * + * Elements by their ID are made available by browsers on the `window` object, + * which is a security risk. + * Using a prefix solves this problem. + * + * More information on how to handle clobbering and the prefix is explained in + * Example: headings (DOM clobbering) in `rehype-sanitize`. + * + * ###### Unknown nodes + * + * Unknown nodes are nodes with a type that isn’t in `handlers` or `passThrough`. + * The default behavior for unknown nodes is: + * + * * when the node has a `value` (and doesn’t have `data.hName`, + * `data.hProperties`, or `data.hChildren`, see later), create a hast `text` + * node + * * otherwise, create a `
    ` element (which could be changed with + * `data.hName`), with its children mapped from mdast to hast as well + * + * This behavior can be changed by passing an `unknownHandler`. + * + * @param {MdastNodes} tree + * mdast tree. + * @param {Options | null | undefined} [options] + * Configuration. + * @returns {HastNodes | null | undefined} + * hast tree. + */ +// To do: next major: always return a single `root`. +function toHast(tree, options) { + const state = (0,_state_js__WEBPACK_IMPORTED_MODULE_0__.createState)(tree, options) + const node = state.one(tree, null) + const foot = (0,_footer_js__WEBPACK_IMPORTED_MODULE_1__.footer)(state) + + if (foot) { + // @ts-expect-error If there’s a footer, there were definitions, meaning block + // content. + // So assume `node` is a parent node. + node.children.push({type: 'text', value: '\n'}, foot) + } + + // To do: next major: always return root? + return Array.isArray(node) ? {type: 'root', children: node} : node +} + + +/***/ }), + +/***/ "../node_modules/mdast-util-to-hast/lib/revert.js": +/*!********************************************************!*\ + !*** ../node_modules/mdast-util-to-hast/lib/revert.js ***! + \********************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ revert: () => (/* binding */ revert) +/* harmony export */ }); +/** + * @typedef {import('hast').ElementContent} ElementContent + * + * @typedef {import('mdast').Content} Content + * @typedef {import('mdast').Reference} Reference + * @typedef {import('mdast').Root} Root + * + * @typedef {import('./state.js').State} State + */ + +/** + * @typedef {Root | Content} Nodes + * @typedef {Extract} References + */ + +// To do: next major: always return array. + +/** + * Return the content of a reference without definition as plain text. + * + * @param {State} state + * Info passed around. + * @param {References} node + * Reference node (image, link). + * @returns {ElementContent | Array} + * hast content. + */ +function revert(state, node) { + const subtype = node.referenceType + let suffix = ']' + + if (subtype === 'collapsed') { + suffix += '[]' + } else if (subtype === 'full') { + suffix += '[' + (node.label || node.identifier) + ']' + } + + if (node.type === 'imageReference') { + return {type: 'text', value: '![' + node.alt + suffix} + } + + const contents = state.all(node) + const head = contents[0] + + if (head && head.type === 'text') { + head.value = '[' + head.value + } else { + contents.unshift({type: 'text', value: '['}) + } + + const tail = contents[contents.length - 1] + + if (tail && tail.type === 'text') { + tail.value += suffix + } else { + contents.push({type: 'text', value: suffix}) + } + + return contents +} + + +/***/ }), + +/***/ "../node_modules/mdast-util-to-hast/lib/state.js": +/*!*******************************************************!*\ + !*** ../node_modules/mdast-util-to-hast/lib/state.js ***! + \*******************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ all: () => (/* binding */ all), +/* harmony export */ createState: () => (/* binding */ createState), +/* harmony export */ one: () => (/* binding */ one), +/* harmony export */ wrap: () => (/* binding */ wrap) +/* harmony export */ }); +/* harmony import */ var unist_util_visit__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! unist-util-visit */ "../node_modules/unist-util-visit/lib/index.js"); +/* harmony import */ var unist_util_position__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! unist-util-position */ "../node_modules/unist-util-position/lib/index.js"); +/* harmony import */ var unist_util_generated__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! unist-util-generated */ "../node_modules/unist-util-generated/lib/index.js"); +/* harmony import */ var mdast_util_definitions__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! mdast-util-definitions */ "../node_modules/mdast-util-definitions/lib/index.js"); +/* harmony import */ var _handlers_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./handlers/index.js */ "../node_modules/mdast-util-to-hast/lib/handlers/index.js"); +/** + * @typedef {import('hast').Content} HastContent + * @typedef {import('hast').Element} HastElement + * @typedef {import('hast').ElementContent} HastElementContent + * @typedef {import('hast').Properties} HastProperties + * @typedef {import('hast').Root} HastRoot + * @typedef {import('hast').Text} HastText + * + * @typedef {import('mdast').Content} MdastContent + * @typedef {import('mdast').Definition} MdastDefinition + * @typedef {import('mdast').FootnoteDefinition} MdastFootnoteDefinition + * @typedef {import('mdast').Parent} MdastParent + * @typedef {import('mdast').Root} MdastRoot + */ + +/** + * @typedef {HastRoot | HastContent} HastNodes + * @typedef {MdastRoot | MdastContent} MdastNodes + * @typedef {Extract} MdastParents + * + * @typedef EmbeddedHastFields + * hast fields. + * @property {string | null | undefined} [hName] + * Generate a specific element with this tag name instead. + * @property {HastProperties | null | undefined} [hProperties] + * Generate an element with these properties instead. + * @property {Array | null | undefined} [hChildren] + * Generate an element with this content instead. + * + * @typedef {Record & EmbeddedHastFields} MdastData + * mdast data with embedded hast fields. + * + * @typedef {MdastNodes & {data?: MdastData | null | undefined}} MdastNodeWithData + * mdast node with embedded hast data. + * + * @typedef PointLike + * Point-like value. + * @property {number | null | undefined} [line] + * Line. + * @property {number | null | undefined} [column] + * Column. + * @property {number | null | undefined} [offset] + * Offset. + * + * @typedef PositionLike + * Position-like value. + * @property {PointLike | null | undefined} [start] + * Point-like value. + * @property {PointLike | null | undefined} [end] + * Point-like value. + * + * @callback Handler + * Handle a node. + * @param {State} state + * Info passed around. + * @param {any} node + * mdast node to handle. + * @param {MdastParents | null | undefined} parent + * Parent of `node`. + * @returns {HastElementContent | Array | null | undefined} + * hast node. + * + * @callback HFunctionProps + * Signature of `state` for when props are passed. + * @param {MdastNodes | PositionLike | null | undefined} node + * mdast node or unist position. + * @param {string} tagName + * HTML tag name. + * @param {HastProperties} props + * Properties. + * @param {Array | null | undefined} [children] + * hast content. + * @returns {HastElement} + * Compiled element. + * + * @callback HFunctionNoProps + * Signature of `state` for when no props are passed. + * @param {MdastNodes | PositionLike | null | undefined} node + * mdast node or unist position. + * @param {string} tagName + * HTML tag name. + * @param {Array | null | undefined} [children] + * hast content. + * @returns {HastElement} + * Compiled element. + * + * @typedef HFields + * Info on `state`. + * @property {boolean} dangerous + * Whether HTML is allowed. + * @property {string} clobberPrefix + * Prefix to use to prevent DOM clobbering. + * @property {string} footnoteLabel + * Label to use to introduce the footnote section. + * @property {string} footnoteLabelTagName + * HTML used for the footnote label. + * @property {HastProperties} footnoteLabelProperties + * Properties on the HTML tag used for the footnote label. + * @property {string} footnoteBackLabel + * Label to use from backreferences back to their footnote call. + * @property {(identifier: string) => MdastDefinition | null} definition + * Definition cache. + * @property {Record} footnoteById + * Footnote definitions by their identifier. + * @property {Array} footnoteOrder + * Identifiers of order when footnote calls first appear in tree order. + * @property {Record} footnoteCounts + * Counts for how often the same footnote was called. + * @property {Handlers} handlers + * Applied handlers. + * @property {Handler} unknownHandler + * Handler for any none not in `passThrough` or otherwise handled. + * @property {(from: MdastNodes, node: HastNodes) => void} patch + * Copy a node’s positional info. + * @property {(from: MdastNodes, to: Type) => Type | HastElement} applyData + * Honor the `data` of `from`, and generate an element instead of `node`. + * @property {(node: MdastNodes, parent: MdastParents | null | undefined) => HastElementContent | Array | null | undefined} one + * Transform an mdast node to hast. + * @property {(node: MdastNodes) => Array} all + * Transform the children of an mdast parent to hast. + * @property {(nodes: Array, loose?: boolean | null | undefined) => Array} wrap + * Wrap `nodes` with line endings between each node, adds initial/final line endings when `loose`. + * @property {(left: MdastNodeWithData | PositionLike | null | undefined, right: HastElementContent) => HastElementContent} augment + * Like `state` but lower-level and usable on non-elements. + * Deprecated: use `patch` and `applyData`. + * @property {Array} passThrough + * List of node types to pass through untouched (except for their children). + * + * @typedef Options + * Configuration (optional). + * @property {boolean | null | undefined} [allowDangerousHtml=false] + * Whether to persist raw HTML in markdown in the hast tree. + * @property {string | null | undefined} [clobberPrefix='user-content-'] + * Prefix to use before the `id` attribute on footnotes to prevent it from + * *clobbering*. + * @property {string | null | undefined} [footnoteBackLabel='Back to content'] + * Label to use from backreferences back to their footnote call (affects + * screen readers). + * @property {string | null | undefined} [footnoteLabel='Footnotes'] + * Label to use for the footnotes section (affects screen readers). + * @property {HastProperties | null | undefined} [footnoteLabelProperties={className: ['sr-only']}] + * Properties to use on the footnote label (note that `id: 'footnote-label'` + * is always added as footnote calls use it with `aria-describedby` to + * provide an accessible label). + * @property {string | null | undefined} [footnoteLabelTagName='h2'] + * Tag name to use for the footnote label. + * @property {Handlers | null | undefined} [handlers] + * Extra handlers for nodes. + * @property {Array | null | undefined} [passThrough] + * List of custom mdast node types to pass through (keep) in hast (note that + * the node itself is passed, but eventual children are transformed). + * @property {Handler | null | undefined} [unknownHandler] + * Handler for all unknown nodes. + * + * @typedef {Record} Handlers + * Handle nodes. + * + * @typedef {HFunctionProps & HFunctionNoProps & HFields} State + * Info passed around. + */ + + + + + + + +const own = {}.hasOwnProperty + +/** + * Create `state` from an mdast tree. + * + * @param {MdastNodes} tree + * mdast node to transform. + * @param {Options | null | undefined} [options] + * Configuration. + * @returns {State} + * `state` function. + */ +function createState(tree, options) { + const settings = options || {} + const dangerous = settings.allowDangerousHtml || false + /** @type {Record} */ + const footnoteById = {} + + // To do: next major: add `options` to state, remove: + // `dangerous`, `clobberPrefix`, `footnoteLabel`, `footnoteLabelTagName`, + // `footnoteLabelProperties`, `footnoteBackLabel`, `passThrough`, + // `unknownHandler`. + + // To do: next major: move to `state.options.allowDangerousHtml`. + state.dangerous = dangerous + // To do: next major: move to `state.options`. + state.clobberPrefix = + settings.clobberPrefix === undefined || settings.clobberPrefix === null + ? 'user-content-' + : settings.clobberPrefix + // To do: next major: move to `state.options`. + state.footnoteLabel = settings.footnoteLabel || 'Footnotes' + // To do: next major: move to `state.options`. + state.footnoteLabelTagName = settings.footnoteLabelTagName || 'h2' + // To do: next major: move to `state.options`. + state.footnoteLabelProperties = settings.footnoteLabelProperties || { + className: ['sr-only'] + } + // To do: next major: move to `state.options`. + state.footnoteBackLabel = settings.footnoteBackLabel || 'Back to content' + // To do: next major: move to `state.options`. + state.unknownHandler = settings.unknownHandler + // To do: next major: move to `state.options`. + state.passThrough = settings.passThrough + + state.handlers = {..._handlers_index_js__WEBPACK_IMPORTED_MODULE_0__.handlers, ...settings.handlers} + + // To do: next major: replace utility with `definitionById` object, so we + // only walk once (as we need footnotes too). + state.definition = (0,mdast_util_definitions__WEBPACK_IMPORTED_MODULE_1__.definitions)(tree) + state.footnoteById = footnoteById + /** @type {Array} */ + state.footnoteOrder = [] + /** @type {Record} */ + state.footnoteCounts = {} + + state.patch = patch + state.applyData = applyData + state.one = oneBound + state.all = allBound + state.wrap = wrap + // To do: next major: remove `augment`. + state.augment = augment + + ;(0,unist_util_visit__WEBPACK_IMPORTED_MODULE_2__.visit)(tree, 'footnoteDefinition', (definition) => { + const id = String(definition.identifier).toUpperCase() + + // Mimick CM behavior of link definitions. + // See: . + if (!own.call(footnoteById, id)) { + footnoteById[id] = definition + } + }) + + // @ts-expect-error Hush, it’s fine! + return state + + /** + * Finalise the created `right`, a hast node, from `left`, an mdast node. + * + * @param {MdastNodeWithData | PositionLike | null | undefined} left + * @param {HastElementContent} right + * @returns {HastElementContent} + */ + /* c8 ignore start */ + // To do: next major: remove. + function augment(left, right) { + // Handle `data.hName`, `data.hProperties, `data.hChildren`. + if (left && 'data' in left && left.data) { + /** @type {MdastData} */ + const data = left.data + + if (data.hName) { + if (right.type !== 'element') { + right = { + type: 'element', + tagName: '', + properties: {}, + children: [] + } + } + + right.tagName = data.hName + } + + if (right.type === 'element' && data.hProperties) { + right.properties = {...right.properties, ...data.hProperties} + } + + if ('children' in right && right.children && data.hChildren) { + right.children = data.hChildren + } + } + + if (left) { + const ctx = 'type' in left ? left : {position: left} + + if (!(0,unist_util_generated__WEBPACK_IMPORTED_MODULE_3__.generated)(ctx)) { + // @ts-expect-error: fine. + right.position = {start: (0,unist_util_position__WEBPACK_IMPORTED_MODULE_4__.pointStart)(ctx), end: (0,unist_util_position__WEBPACK_IMPORTED_MODULE_4__.pointEnd)(ctx)} + } + } + + return right + } + /* c8 ignore stop */ + + /** + * Create an element for `node`. + * + * @type {HFunctionProps} + */ + /* c8 ignore start */ + // To do: next major: remove. + function state(node, tagName, props, children) { + if (Array.isArray(props)) { + children = props + props = {} + } + + // @ts-expect-error augmenting an element yields an element. + return augment(node, { + type: 'element', + tagName, + properties: props || {}, + children: children || [] + }) + } + /* c8 ignore stop */ + + /** + * Transform an mdast node into a hast node. + * + * @param {MdastNodes} node + * mdast node. + * @param {MdastParents | null | undefined} [parent] + * Parent of `node`. + * @returns {HastElementContent | Array | null | undefined} + * Resulting hast node. + */ + function oneBound(node, parent) { + // @ts-expect-error: that’s a state :) + return one(state, node, parent) + } + + /** + * Transform the children of an mdast node into hast nodes. + * + * @param {MdastNodes} parent + * mdast node to compile + * @returns {Array} + * Resulting hast nodes. + */ + function allBound(parent) { + // @ts-expect-error: that’s a state :) + return all(state, parent) + } +} + +/** + * Copy a node’s positional info. + * + * @param {MdastNodes} from + * mdast node to copy from. + * @param {HastNodes} to + * hast node to copy into. + * @returns {void} + * Nothing. + */ +function patch(from, to) { + if (from.position) to.position = (0,unist_util_position__WEBPACK_IMPORTED_MODULE_4__.position)(from) +} + +/** + * Honor the `data` of `from` and maybe generate an element instead of `to`. + * + * @template {HastNodes} Type + * Node type. + * @param {MdastNodes} from + * mdast node to use data from. + * @param {Type} to + * hast node to change. + * @returns {Type | HastElement} + * Nothing. + */ +function applyData(from, to) { + /** @type {Type | HastElement} */ + let result = to + + // Handle `data.hName`, `data.hProperties, `data.hChildren`. + if (from && from.data) { + const hName = from.data.hName + const hChildren = from.data.hChildren + const hProperties = from.data.hProperties + + if (typeof hName === 'string') { + // Transforming the node resulted in an element with a different name + // than wanted: + if (result.type === 'element') { + result.tagName = hName + } + // Transforming the node resulted in a non-element, which happens for + // raw, text, and root nodes (unless custom handlers are passed). + // The intent is likely to keep the content around (otherwise: pass + // `hChildren`). + else { + result = { + type: 'element', + tagName: hName, + properties: {}, + children: [] + } + + // To do: next major: take the children from the `root`, or inject the + // raw/text/comment or so into the element? + // if ('children' in node) { + // // @ts-expect-error: assume `children` are allowed in elements. + // result.children = node.children + // } else { + // // @ts-expect-error: assume `node` is allowed in elements. + // result.children.push(node) + // } + } + } + + if (result.type === 'element' && hProperties) { + result.properties = {...result.properties, ...hProperties} + } + + if ( + 'children' in result && + result.children && + hChildren !== null && + hChildren !== undefined + ) { + // @ts-expect-error: assume valid children are defined. + result.children = hChildren + } + } + + return result +} + +/** + * Transform an mdast node into a hast node. + * + * @param {State} state + * Info passed around. + * @param {MdastNodes} node + * mdast node. + * @param {MdastParents | null | undefined} [parent] + * Parent of `node`. + * @returns {HastElementContent | Array | null | undefined} + * Resulting hast node. + */ +// To do: next major: do not expose, keep bound. +function one(state, node, parent) { + const type = node && node.type + + // Fail on non-nodes. + if (!type) { + throw new Error('Expected node, got `' + node + '`') + } + + if (own.call(state.handlers, type)) { + return state.handlers[type](state, node, parent) + } + + if (state.passThrough && state.passThrough.includes(type)) { + // To do: next major: deep clone. + // @ts-expect-error: types of passed through nodes are expected to be added manually. + return 'children' in node ? {...node, children: all(state, node)} : node + } + + if (state.unknownHandler) { + return state.unknownHandler(state, node, parent) + } + + return defaultUnknownHandler(state, node) +} + +/** + * Transform the children of an mdast node into hast nodes. + * + * @param {State} state + * Info passed around. + * @param {MdastNodes} parent + * mdast node to compile + * @returns {Array} + * Resulting hast nodes. + */ +// To do: next major: do not expose, keep bound. +function all(state, parent) { + /** @type {Array} */ + const values = [] + + if ('children' in parent) { + const nodes = parent.children + let index = -1 + while (++index < nodes.length) { + const result = one(state, nodes[index], parent) + + // To do: see if we van clean this? Can we merge texts? + if (result) { + if (index && nodes[index - 1].type === 'break') { + if (!Array.isArray(result) && result.type === 'text') { + result.value = result.value.replace(/^\s+/, '') + } + + if (!Array.isArray(result) && result.type === 'element') { + const head = result.children[0] + + if (head && head.type === 'text') { + head.value = head.value.replace(/^\s+/, '') + } + } + } + + if (Array.isArray(result)) { + values.push(...result) + } else { + values.push(result) + } + } + } + } + + return values +} + +/** + * Transform an unknown node. + * + * @param {State} state + * Info passed around. + * @param {MdastNodes} node + * Unknown mdast node. + * @returns {HastText | HastElement} + * Resulting hast node. + */ +function defaultUnknownHandler(state, node) { + const data = node.data || {} + /** @type {HastText | HastElement} */ + const result = + 'value' in node && + !(own.call(data, 'hProperties') || own.call(data, 'hChildren')) + ? {type: 'text', value: node.value} + : { + type: 'element', + tagName: 'div', + properties: {}, + children: all(state, node) + } + + state.patch(node, result) + return state.applyData(node, result) +} + +/** + * Wrap `nodes` with line endings between each node. + * + * @template {HastContent} Type + * Node type. + * @param {Array} nodes + * List of nodes to wrap. + * @param {boolean | null | undefined} [loose=false] + * Whether to add line endings at start and end. + * @returns {Array} + * Wrapped nodes. + */ +function wrap(nodes, loose) { + /** @type {Array} */ + const result = [] + let index = -1 + + if (loose) { + result.push({type: 'text', value: '\n'}) + } + + while (++index < nodes.length) { + if (index) result.push({type: 'text', value: '\n'}) + result.push(nodes[index]) + } + + if (loose && nodes.length > 0) { + result.push({type: 'text', value: '\n'}) + } + + return result +} + + +/***/ }), + +/***/ "../node_modules/mdast-util-to-string/lib/index.js": +/*!*********************************************************!*\ + !*** ../node_modules/mdast-util-to-string/lib/index.js ***! + \*********************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ toString: () => (/* binding */ toString) +/* harmony export */ }); +/** + * @typedef {import('mdast').Root|import('mdast').Content} Node + * + * @typedef Options + * Configuration (optional). + * @property {boolean | null | undefined} [includeImageAlt=true] + * Whether to use `alt` for `image`s. + * @property {boolean | null | undefined} [includeHtml=true] + * Whether to use `value` of HTML. + */ + +/** @type {Options} */ +const emptyOptions = {} + +/** + * Get the text content of a node or list of nodes. + * + * Prefers the node’s plain-text fields, otherwise serializes its children, + * and if the given value is an array, serialize the nodes in it. + * + * @param {unknown} value + * Thing to serialize, typically `Node`. + * @param {Options | null | undefined} [options] + * Configuration (optional). + * @returns {string} + * Serialized `value`. + */ +function toString(value, options) { + const settings = options || emptyOptions + const includeImageAlt = + typeof settings.includeImageAlt === 'boolean' + ? settings.includeImageAlt + : true + const includeHtml = + typeof settings.includeHtml === 'boolean' ? settings.includeHtml : true + + return one(value, includeImageAlt, includeHtml) +} + +/** + * One node or several nodes. + * + * @param {unknown} value + * Thing to serialize. + * @param {boolean} includeImageAlt + * Include image `alt`s. + * @param {boolean} includeHtml + * Include HTML. + * @returns {string} + * Serialized node. + */ +function one(value, includeImageAlt, includeHtml) { + if (node(value)) { + if ('value' in value) { + return value.type === 'html' && !includeHtml ? '' : value.value + } + + if (includeImageAlt && 'alt' in value && value.alt) { + return value.alt + } + + if ('children' in value) { + return all(value.children, includeImageAlt, includeHtml) + } + } + + if (Array.isArray(value)) { + return all(value, includeImageAlt, includeHtml) + } + + return '' +} + +/** + * Serialize a list of nodes. + * + * @param {Array} values + * Thing to serialize. + * @param {boolean} includeImageAlt + * Include image `alt`s. + * @param {boolean} includeHtml + * Include HTML. + * @returns {string} + * Serialized nodes. + */ +function all(values, includeImageAlt, includeHtml) { + /** @type {Array} */ + const result = [] + let index = -1 + + while (++index < values.length) { + result[index] = one(values[index], includeImageAlt, includeHtml) + } + + return result.join('') +} + +/** + * Check if `value` looks like a node. + * + * @param {unknown} value + * Thing. + * @returns {value is Node} + * Whether `value` is a node. + */ +function node(value) { + return Boolean(value && typeof value === 'object') +} + + +/***/ }), + +/***/ "../node_modules/micromark-core-commonmark/dev/lib/attention.js": +/*!**********************************************************************!*\ + !*** ../node_modules/micromark-core-commonmark/dev/lib/attention.js ***! + \**********************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ attention: () => (/* binding */ attention) +/* harmony export */ }); +/* harmony import */ var micromark_util_chunked__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! micromark-util-chunked */ "../node_modules/micromark-util-chunked/dev/index.js"); +/* harmony import */ var micromark_util_classify_character__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! micromark-util-classify-character */ "../node_modules/micromark-util-classify-character/dev/index.js"); +/* harmony import */ var micromark_util_resolve_all__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! micromark-util-resolve-all */ "../node_modules/micromark-util-resolve-all/index.js"); +/* harmony import */ var micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! micromark-util-symbol/codes.js */ "../node_modules/micromark-util-symbol/codes.js"); +/* harmony import */ var micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! micromark-util-symbol/constants.js */ "../node_modules/micromark-util-symbol/constants.js"); +/* harmony import */ var micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! micromark-util-symbol/types.js */ "../node_modules/micromark-util-symbol/types.js"); +/* harmony import */ var uvu_assert__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! uvu/assert */ "../node_modules/uvu/assert/index.mjs"); +/** + * @typedef {import('micromark-util-types').Code} Code + * @typedef {import('micromark-util-types').Construct} Construct + * @typedef {import('micromark-util-types').Event} Event + * @typedef {import('micromark-util-types').Point} Point + * @typedef {import('micromark-util-types').Resolver} Resolver + * @typedef {import('micromark-util-types').State} State + * @typedef {import('micromark-util-types').Token} Token + * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext + * @typedef {import('micromark-util-types').Tokenizer} Tokenizer + */ + + + + + + + + + +/** @type {Construct} */ +const attention = { + name: 'attention', + tokenize: tokenizeAttention, + resolveAll: resolveAllAttention +} + +/** + * Take all events and resolve attention to emphasis or strong. + * + * @type {Resolver} + */ +function resolveAllAttention(events, context) { + let index = -1 + /** @type {number} */ + let open + /** @type {Token} */ + let group + /** @type {Token} */ + let text + /** @type {Token} */ + let openingSequence + /** @type {Token} */ + let closingSequence + /** @type {number} */ + let use + /** @type {Array} */ + let nextEvents + /** @type {number} */ + let offset + + // Walk through all events. + // + // Note: performance of this is fine on an mb of normal markdown, but it’s + // a bottleneck for malicious stuff. + while (++index < events.length) { + // Find a token that can close. + if ( + events[index][0] === 'enter' && + events[index][1].type === 'attentionSequence' && + events[index][1]._close + ) { + open = index + + // Now walk back to find an opener. + while (open--) { + // Find a token that can open the closer. + if ( + events[open][0] === 'exit' && + events[open][1].type === 'attentionSequence' && + events[open][1]._open && + // If the markers are the same: + context.sliceSerialize(events[open][1]).charCodeAt(0) === + context.sliceSerialize(events[index][1]).charCodeAt(0) + ) { + // If the opening can close or the closing can open, + // and the close size *is not* a multiple of three, + // but the sum of the opening and closing size *is* multiple of three, + // then don’t match. + if ( + (events[open][1]._close || events[index][1]._open) && + (events[index][1].end.offset - events[index][1].start.offset) % 3 && + !( + (events[open][1].end.offset - + events[open][1].start.offset + + events[index][1].end.offset - + events[index][1].start.offset) % + 3 + ) + ) { + continue + } + + // Number of markers to use from the sequence. + use = + events[open][1].end.offset - events[open][1].start.offset > 1 && + events[index][1].end.offset - events[index][1].start.offset > 1 + ? 2 + : 1 + + const start = Object.assign({}, events[open][1].end) + const end = Object.assign({}, events[index][1].start) + movePoint(start, -use) + movePoint(end, use) + + openingSequence = { + type: use > 1 ? micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.strongSequence : micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.emphasisSequence, + start, + end: Object.assign({}, events[open][1].end) + } + closingSequence = { + type: use > 1 ? micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.strongSequence : micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.emphasisSequence, + start: Object.assign({}, events[index][1].start), + end + } + text = { + type: use > 1 ? micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.strongText : micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.emphasisText, + start: Object.assign({}, events[open][1].end), + end: Object.assign({}, events[index][1].start) + } + group = { + type: use > 1 ? micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.strong : micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.emphasis, + start: Object.assign({}, openingSequence.start), + end: Object.assign({}, closingSequence.end) + } + + events[open][1].end = Object.assign({}, openingSequence.start) + events[index][1].start = Object.assign({}, closingSequence.end) + + nextEvents = [] + + // If there are more markers in the opening, add them before. + if (events[open][1].end.offset - events[open][1].start.offset) { + nextEvents = (0,micromark_util_chunked__WEBPACK_IMPORTED_MODULE_2__.push)(nextEvents, [ + ['enter', events[open][1], context], + ['exit', events[open][1], context] + ]) + } + + // Opening. + nextEvents = (0,micromark_util_chunked__WEBPACK_IMPORTED_MODULE_2__.push)(nextEvents, [ + ['enter', group, context], + ['enter', openingSequence, context], + ['exit', openingSequence, context], + ['enter', text, context] + ]) + + // Always populated by defaults. + ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)( + context.parser.constructs.insideSpan.null, + 'expected `insideSpan` to be populated' + ) + + // Between. + nextEvents = (0,micromark_util_chunked__WEBPACK_IMPORTED_MODULE_2__.push)( + nextEvents, + (0,micromark_util_resolve_all__WEBPACK_IMPORTED_MODULE_3__.resolveAll)( + context.parser.constructs.insideSpan.null, + events.slice(open + 1, index), + context + ) + ) + + // Closing. + nextEvents = (0,micromark_util_chunked__WEBPACK_IMPORTED_MODULE_2__.push)(nextEvents, [ + ['exit', text, context], + ['enter', closingSequence, context], + ['exit', closingSequence, context], + ['exit', group, context] + ]) + + // If there are more markers in the closing, add them after. + if (events[index][1].end.offset - events[index][1].start.offset) { + offset = 2 + nextEvents = (0,micromark_util_chunked__WEBPACK_IMPORTED_MODULE_2__.push)(nextEvents, [ + ['enter', events[index][1], context], + ['exit', events[index][1], context] + ]) + } else { + offset = 0 + } + + (0,micromark_util_chunked__WEBPACK_IMPORTED_MODULE_2__.splice)(events, open - 1, index - open + 3, nextEvents) + + index = open + nextEvents.length - offset - 2 + break + } + } + } + } + + // Remove remaining sequences. + index = -1 + + while (++index < events.length) { + if (events[index][1].type === 'attentionSequence') { + events[index][1].type = 'data' + } + } + + return events +} + +/** + * @this {TokenizeContext} + * @type {Tokenizer} + */ +function tokenizeAttention(effects, ok) { + const attentionMarkers = this.parser.constructs.attentionMarkers.null + const previous = this.previous + const before = (0,micromark_util_classify_character__WEBPACK_IMPORTED_MODULE_4__.classifyCharacter)(previous) + + /** @type {NonNullable} */ + let marker + + return start + + /** + * Before a sequence. + * + * ```markdown + * > | ** + * ^ + * ``` + * + * @type {State} + */ + function start(code) { + ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)( + code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_5__.codes.asterisk || code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_5__.codes.underscore, + 'expected asterisk or underscore' + ) + marker = code + effects.enter('attentionSequence') + return inside(code) + } + + /** + * In a sequence. + * + * ```markdown + * > | ** + * ^^ + * ``` + * + * @type {State} + */ + function inside(code) { + if (code === marker) { + effects.consume(code) + return inside + } + + const token = effects.exit('attentionSequence') + + // To do: next major: move this to resolver, just like `markdown-rs`. + const after = (0,micromark_util_classify_character__WEBPACK_IMPORTED_MODULE_4__.classifyCharacter)(code) + + // Always populated by defaults. + ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(attentionMarkers, 'expected `attentionMarkers` to be populated') + + const open = + !after || + (after === micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_6__.constants.characterGroupPunctuation && before) || + attentionMarkers.includes(code) + const close = + !before || + (before === micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_6__.constants.characterGroupPunctuation && after) || + attentionMarkers.includes(previous) + + token._open = Boolean( + marker === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_5__.codes.asterisk ? open : open && (before || !close) + ) + token._close = Boolean( + marker === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_5__.codes.asterisk ? close : close && (after || !open) + ) + return ok(code) + } +} + +/** + * Move a point a bit. + * + * Note: `move` only works inside lines! It’s not possible to move past other + * chunks (replacement characters, tabs, or line endings). + * + * @param {Point} point + * @param {number} offset + * @returns {void} + */ +function movePoint(point, offset) { + point.column += offset + point.offset += offset + point._bufferIndex += offset +} + + +/***/ }), + +/***/ "../node_modules/micromark-core-commonmark/dev/lib/autolink.js": +/*!*********************************************************************!*\ + !*** ../node_modules/micromark-core-commonmark/dev/lib/autolink.js ***! + \*********************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ autolink: () => (/* binding */ autolink) +/* harmony export */ }); +/* harmony import */ var micromark_util_character__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! micromark-util-character */ "../node_modules/micromark-util-character/dev/index.js"); +/* harmony import */ var micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! micromark-util-symbol/codes.js */ "../node_modules/micromark-util-symbol/codes.js"); +/* harmony import */ var micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! micromark-util-symbol/constants.js */ "../node_modules/micromark-util-symbol/constants.js"); +/* harmony import */ var micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! micromark-util-symbol/types.js */ "../node_modules/micromark-util-symbol/types.js"); +/* harmony import */ var uvu_assert__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! uvu/assert */ "../node_modules/uvu/assert/index.mjs"); +/** + * @typedef {import('micromark-util-types').Construct} Construct + * @typedef {import('micromark-util-types').State} State + * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext + * @typedef {import('micromark-util-types').Tokenizer} Tokenizer + */ + + + + + + + +/** @type {Construct} */ +const autolink = {name: 'autolink', tokenize: tokenizeAutolink} + +/** + * @this {TokenizeContext} + * @type {Tokenizer} + */ +function tokenizeAutolink(effects, ok, nok) { + let size = 0 + + return start + + /** + * Start of an autolink. + * + * ```markdown + * > | ab + * ^ + * > | ab + * ^ + * ``` + * + * @type {State} + */ + function start(code) { + ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.lessThan, 'expected `<`') + effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.autolink) + effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.autolinkMarker) + effects.consume(code) + effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.autolinkMarker) + effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.autolinkProtocol) + return open + } + + /** + * After `<`, at protocol or atext. + * + * ```markdown + * > | ab + * ^ + * > | ab + * ^ + * ``` + * + * @type {State} + */ + function open(code) { + if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.asciiAlpha)(code)) { + effects.consume(code) + return schemeOrEmailAtext + } + + return emailAtext(code) + } + + /** + * At second byte of protocol or atext. + * + * ```markdown + * > | ab + * ^ + * > | ab + * ^ + * ``` + * + * @type {State} + */ + function schemeOrEmailAtext(code) { + // ASCII alphanumeric and `+`, `-`, and `.`. + if ( + code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.plusSign || + code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.dash || + code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.dot || + (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.asciiAlphanumeric)(code) + ) { + // Count the previous alphabetical from `open` too. + size = 1 + return schemeInsideOrEmailAtext(code) + } + + return emailAtext(code) + } + + /** + * In ambiguous protocol or atext. + * + * ```markdown + * > | ab + * ^ + * > | ab + * ^ + * ``` + * + * @type {State} + */ + function schemeInsideOrEmailAtext(code) { + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.colon) { + effects.consume(code) + size = 0 + return urlInside + } + + // ASCII alphanumeric and `+`, `-`, and `.`. + if ( + (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.plusSign || + code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.dash || + code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.dot || + (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.asciiAlphanumeric)(code)) && + size++ < micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_4__.constants.autolinkSchemeSizeMax + ) { + effects.consume(code) + return schemeInsideOrEmailAtext + } + + size = 0 + return emailAtext(code) + } + + /** + * After protocol, in URL. + * + * ```markdown + * > | ab + * ^ + * ``` + * + * @type {State} + */ + function urlInside(code) { + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.greaterThan) { + effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.autolinkProtocol) + effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.autolinkMarker) + effects.consume(code) + effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.autolinkMarker) + effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.autolink) + return ok + } + + // ASCII control, space, or `<`. + if ( + code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.eof || + code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.space || + code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.lessThan || + (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.asciiControl)(code) + ) { + return nok(code) + } + + effects.consume(code) + return urlInside + } + + /** + * In email atext. + * + * ```markdown + * > | ab + * ^ + * ``` + * + * @type {State} + */ + function emailAtext(code) { + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.atSign) { + effects.consume(code) + return emailAtSignOrDot + } + + if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.asciiAtext)(code)) { + effects.consume(code) + return emailAtext + } + + return nok(code) + } + + /** + * In label, after at-sign or dot. + * + * ```markdown + * > | ab + * ^ ^ + * ``` + * + * @type {State} + */ + function emailAtSignOrDot(code) { + return (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.asciiAlphanumeric)(code) ? emailLabel(code) : nok(code) + } + + /** + * In label, where `.` and `>` are allowed. + * + * ```markdown + * > | ab + * ^ + * ``` + * + * @type {State} + */ + function emailLabel(code) { + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.dot) { + effects.consume(code) + size = 0 + return emailAtSignOrDot + } + + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.greaterThan) { + // Exit, then change the token type. + effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.autolinkProtocol).type = micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.autolinkEmail + effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.autolinkMarker) + effects.consume(code) + effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.autolinkMarker) + effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.autolink) + return ok + } + + return emailValue(code) + } + + /** + * In label, where `.` and `>` are *not* allowed. + * + * Though, this is also used in `emailLabel` to parse other values. + * + * ```markdown + * > | ab + * ^ + * ``` + * + * @type {State} + */ + function emailValue(code) { + // ASCII alphanumeric or `-`. + if ( + (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.dash || (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.asciiAlphanumeric)(code)) && + size++ < micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_4__.constants.autolinkDomainSizeMax + ) { + const next = code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.dash ? emailValue : emailLabel + effects.consume(code) + return next + } + + return nok(code) + } +} + + +/***/ }), + +/***/ "../node_modules/micromark-core-commonmark/dev/lib/blank-line.js": +/*!***********************************************************************!*\ + !*** ../node_modules/micromark-core-commonmark/dev/lib/blank-line.js ***! + \***********************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ blankLine: () => (/* binding */ blankLine) +/* harmony export */ }); +/* harmony import */ var micromark_factory_space__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! micromark-factory-space */ "../node_modules/micromark-factory-space/dev/index.js"); +/* harmony import */ var micromark_util_character__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! micromark-util-character */ "../node_modules/micromark-util-character/dev/index.js"); +/* harmony import */ var micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! micromark-util-symbol/codes.js */ "../node_modules/micromark-util-symbol/codes.js"); +/* harmony import */ var micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! micromark-util-symbol/types.js */ "../node_modules/micromark-util-symbol/types.js"); +/** + * @typedef {import('micromark-util-types').Construct} Construct + * @typedef {import('micromark-util-types').State} State + * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext + * @typedef {import('micromark-util-types').Tokenizer} Tokenizer + */ + + + + + + +/** @type {Construct} */ +const blankLine = {tokenize: tokenizeBlankLine, partial: true} + +/** + * @this {TokenizeContext} + * @type {Tokenizer} + */ +function tokenizeBlankLine(effects, ok, nok) { + return start + + /** + * Start of blank line. + * + * > 👉 **Note**: `␠` represents a space character. + * + * ```markdown + * > | ␠␠␊ + * ^ + * > | ␊ + * ^ + * ``` + * + * @type {State} + */ + function start(code) { + return (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_0__.markdownSpace)(code) + ? (0,micromark_factory_space__WEBPACK_IMPORTED_MODULE_1__.factorySpace)(effects, after, micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.linePrefix)(code) + : after(code) + } + + /** + * At eof/eol, after optional whitespace. + * + * > 👉 **Note**: `␠` represents a space character. + * + * ```markdown + * > | ␠␠␊ + * ^ + * > | ␊ + * ^ + * ``` + * + * @type {State} + */ + function after(code) { + return code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_3__.codes.eof || (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_0__.markdownLineEnding)(code) ? ok(code) : nok(code) + } +} + + +/***/ }), + +/***/ "../node_modules/micromark-core-commonmark/dev/lib/block-quote.js": +/*!************************************************************************!*\ + !*** ../node_modules/micromark-core-commonmark/dev/lib/block-quote.js ***! + \************************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ blockQuote: () => (/* binding */ blockQuote) +/* harmony export */ }); +/* harmony import */ var micromark_factory_space__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! micromark-factory-space */ "../node_modules/micromark-factory-space/dev/index.js"); +/* harmony import */ var micromark_util_character__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! micromark-util-character */ "../node_modules/micromark-util-character/dev/index.js"); +/* harmony import */ var micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! micromark-util-symbol/codes.js */ "../node_modules/micromark-util-symbol/codes.js"); +/* harmony import */ var micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! micromark-util-symbol/constants.js */ "../node_modules/micromark-util-symbol/constants.js"); +/* harmony import */ var micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! micromark-util-symbol/types.js */ "../node_modules/micromark-util-symbol/types.js"); +/* harmony import */ var uvu_assert__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! uvu/assert */ "../node_modules/uvu/assert/index.mjs"); +/** + * @typedef {import('micromark-util-types').Construct} Construct + * @typedef {import('micromark-util-types').Exiter} Exiter + * @typedef {import('micromark-util-types').State} State + * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext + * @typedef {import('micromark-util-types').Tokenizer} Tokenizer + */ + + + + + + + + +/** @type {Construct} */ +const blockQuote = { + name: 'blockQuote', + tokenize: tokenizeBlockQuoteStart, + continuation: {tokenize: tokenizeBlockQuoteContinuation}, + exit +} + +/** + * @this {TokenizeContext} + * @type {Tokenizer} + */ +function tokenizeBlockQuoteStart(effects, ok, nok) { + const self = this + + return start + + /** + * Start of block quote. + * + * ```markdown + * > | > a + * ^ + * ``` + * + * @type {State} + */ + function start(code) { + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.greaterThan) { + const state = self.containerState + + ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(state, 'expected `containerState` to be defined in container') + + if (!state.open) { + effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.blockQuote, {_container: true}) + state.open = true + } + + effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.blockQuotePrefix) + effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.blockQuoteMarker) + effects.consume(code) + effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.blockQuoteMarker) + return after + } + + return nok(code) + } + + /** + * After `>`, before optional whitespace. + * + * ```markdown + * > | > a + * ^ + * ``` + * + * @type {State} + */ + function after(code) { + if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.markdownSpace)(code)) { + effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.blockQuotePrefixWhitespace) + effects.consume(code) + effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.blockQuotePrefixWhitespace) + effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.blockQuotePrefix) + return ok + } + + effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.blockQuotePrefix) + return ok(code) + } +} + +/** + * Start of block quote continuation. + * + * ```markdown + * | > a + * > | > b + * ^ + * ``` + * + * @this {TokenizeContext} + * @type {Tokenizer} + */ +function tokenizeBlockQuoteContinuation(effects, ok, nok) { + const self = this + + return contStart + + /** + * Start of block quote continuation. + * + * Also used to parse the first block quote opening. + * + * ```markdown + * | > a + * > | > b + * ^ + * ``` + * + * @type {State} + */ + function contStart(code) { + if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.markdownSpace)(code)) { + // Always populated by defaults. + (0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)( + self.parser.constructs.disable.null, + 'expected `disable.null` to be populated' + ) + + return (0,micromark_factory_space__WEBPACK_IMPORTED_MODULE_4__.factorySpace)( + effects, + contBefore, + micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.linePrefix, + self.parser.constructs.disable.null.includes('codeIndented') + ? undefined + : micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_5__.constants.tabSize + )(code) + } + + return contBefore(code) + } + + /** + * At `>`, after optional whitespace. + * + * Also used to parse the first block quote opening. + * + * ```markdown + * | > a + * > | > b + * ^ + * ``` + * + * @type {State} + */ + function contBefore(code) { + return effects.attempt(blockQuote, ok, nok)(code) + } +} + +/** @type {Exiter} */ +function exit(effects) { + effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.blockQuote) +} + + +/***/ }), + +/***/ "../node_modules/micromark-core-commonmark/dev/lib/character-escape.js": +/*!*****************************************************************************!*\ + !*** ../node_modules/micromark-core-commonmark/dev/lib/character-escape.js ***! + \*****************************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ characterEscape: () => (/* binding */ characterEscape) +/* harmony export */ }); +/* harmony import */ var micromark_util_character__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! micromark-util-character */ "../node_modules/micromark-util-character/dev/index.js"); +/* harmony import */ var micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! micromark-util-symbol/codes.js */ "../node_modules/micromark-util-symbol/codes.js"); +/* harmony import */ var micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! micromark-util-symbol/types.js */ "../node_modules/micromark-util-symbol/types.js"); +/* harmony import */ var uvu_assert__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! uvu/assert */ "../node_modules/uvu/assert/index.mjs"); +/** + * @typedef {import('micromark-util-types').Construct} Construct + * @typedef {import('micromark-util-types').State} State + * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext + * @typedef {import('micromark-util-types').Tokenizer} Tokenizer + */ + + + + + + +/** @type {Construct} */ +const characterEscape = { + name: 'characterEscape', + tokenize: tokenizeCharacterEscape +} + +/** + * @this {TokenizeContext} + * @type {Tokenizer} + */ +function tokenizeCharacterEscape(effects, ok, nok) { + return start + + /** + * Start of character escape. + * + * ```markdown + * > | a\*b + * ^ + * ``` + * + * @type {State} + */ + function start(code) { + ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.backslash, 'expected `\\`') + effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.characterEscape) + effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.escapeMarker) + effects.consume(code) + effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.escapeMarker) + return inside + } + + /** + * After `\`, at punctuation. + * + * ```markdown + * > | a\*b + * ^ + * ``` + * + * @type {State} + */ + function inside(code) { + // ASCII punctuation. + if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.asciiPunctuation)(code)) { + effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.characterEscapeValue) + effects.consume(code) + effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.characterEscapeValue) + effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.characterEscape) + return ok + } + + return nok(code) + } +} + + +/***/ }), + +/***/ "../node_modules/micromark-core-commonmark/dev/lib/character-reference.js": +/*!********************************************************************************!*\ + !*** ../node_modules/micromark-core-commonmark/dev/lib/character-reference.js ***! + \********************************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ characterReference: () => (/* binding */ characterReference) +/* harmony export */ }); +/* harmony import */ var decode_named_character_reference__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! decode-named-character-reference */ "../node_modules/decode-named-character-reference/index.dom.js"); +/* harmony import */ var micromark_util_character__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! micromark-util-character */ "../node_modules/micromark-util-character/dev/index.js"); +/* harmony import */ var micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! micromark-util-symbol/codes.js */ "../node_modules/micromark-util-symbol/codes.js"); +/* harmony import */ var micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! micromark-util-symbol/constants.js */ "../node_modules/micromark-util-symbol/constants.js"); +/* harmony import */ var micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! micromark-util-symbol/types.js */ "../node_modules/micromark-util-symbol/types.js"); +/* harmony import */ var uvu_assert__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! uvu/assert */ "../node_modules/uvu/assert/index.mjs"); +/** + * @typedef {import('micromark-util-types').Code} Code + * @typedef {import('micromark-util-types').Construct} Construct + * @typedef {import('micromark-util-types').State} State + * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext + * @typedef {import('micromark-util-types').Tokenizer} Tokenizer + */ + + + + + + + + +/** @type {Construct} */ +const characterReference = { + name: 'characterReference', + tokenize: tokenizeCharacterReference +} + +/** + * @this {TokenizeContext} + * @type {Tokenizer} + */ +function tokenizeCharacterReference(effects, ok, nok) { + const self = this + let size = 0 + /** @type {number} */ + let max + /** @type {(code: Code) => boolean} */ + let test + + return start + + /** + * Start of character reference. + * + * ```markdown + * > | a&b + * ^ + * > | a{b + * ^ + * > | a b + * ^ + * ``` + * + * @type {State} + */ + function start(code) { + ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.ampersand, 'expected `&`') + effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.characterReference) + effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.characterReferenceMarker) + effects.consume(code) + effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.characterReferenceMarker) + return open + } + + /** + * After `&`, at `#` for numeric references or alphanumeric for named + * references. + * + * ```markdown + * > | a&b + * ^ + * > | a{b + * ^ + * > | a b + * ^ + * ``` + * + * @type {State} + */ + function open(code) { + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.numberSign) { + effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.characterReferenceMarkerNumeric) + effects.consume(code) + effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.characterReferenceMarkerNumeric) + return numeric + } + + effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.characterReferenceValue) + max = micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_3__.constants.characterReferenceNamedSizeMax + test = micromark_util_character__WEBPACK_IMPORTED_MODULE_4__.asciiAlphanumeric + return value(code) + } + + /** + * After `#`, at `x` for hexadecimals or digit for decimals. + * + * ```markdown + * > | a{b + * ^ + * > | a b + * ^ + * ``` + * + * @type {State} + */ + function numeric(code) { + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.uppercaseX || code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.lowercaseX) { + effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.characterReferenceMarkerHexadecimal) + effects.consume(code) + effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.characterReferenceMarkerHexadecimal) + effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.characterReferenceValue) + max = micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_3__.constants.characterReferenceHexadecimalSizeMax + test = micromark_util_character__WEBPACK_IMPORTED_MODULE_4__.asciiHexDigit + return value + } + + effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.characterReferenceValue) + max = micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_3__.constants.characterReferenceDecimalSizeMax + test = micromark_util_character__WEBPACK_IMPORTED_MODULE_4__.asciiDigit + return value(code) + } + + /** + * After markers (`&#x`, `&#`, or `&`), in value, before `;`. + * + * The character reference kind defines what and how many characters are + * allowed. + * + * ```markdown + * > | a&b + * ^^^ + * > | a{b + * ^^^ + * > | a b + * ^ + * ``` + * + * @type {State} + */ + function value(code) { + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.semicolon && size) { + const token = effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.characterReferenceValue) + + if ( + test === micromark_util_character__WEBPACK_IMPORTED_MODULE_4__.asciiAlphanumeric && + !(0,decode_named_character_reference__WEBPACK_IMPORTED_MODULE_5__.decodeNamedCharacterReference)(self.sliceSerialize(token)) + ) { + return nok(code) + } + + // To do: `markdown-rs` uses a different name: + // `CharacterReferenceMarkerSemi`. + effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.characterReferenceMarker) + effects.consume(code) + effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.characterReferenceMarker) + effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.characterReference) + return ok + } + + if (test(code) && size++ < max) { + effects.consume(code) + return value + } + + return nok(code) + } +} + + +/***/ }), + +/***/ "../node_modules/micromark-core-commonmark/dev/lib/code-fenced.js": +/*!************************************************************************!*\ + !*** ../node_modules/micromark-core-commonmark/dev/lib/code-fenced.js ***! + \************************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ codeFenced: () => (/* binding */ codeFenced) +/* harmony export */ }); +/* harmony import */ var micromark_factory_space__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! micromark-factory-space */ "../node_modules/micromark-factory-space/dev/index.js"); +/* harmony import */ var micromark_util_character__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! micromark-util-character */ "../node_modules/micromark-util-character/dev/index.js"); +/* harmony import */ var micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! micromark-util-symbol/codes.js */ "../node_modules/micromark-util-symbol/codes.js"); +/* harmony import */ var micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! micromark-util-symbol/constants.js */ "../node_modules/micromark-util-symbol/constants.js"); +/* harmony import */ var micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! micromark-util-symbol/types.js */ "../node_modules/micromark-util-symbol/types.js"); +/* harmony import */ var uvu_assert__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! uvu/assert */ "../node_modules/uvu/assert/index.mjs"); +/** + * @typedef {import('micromark-util-types').Code} Code + * @typedef {import('micromark-util-types').Construct} Construct + * @typedef {import('micromark-util-types').State} State + * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext + * @typedef {import('micromark-util-types').Tokenizer} Tokenizer + */ + + + + + + + + +/** @type {Construct} */ +const nonLazyContinuation = { + tokenize: tokenizeNonLazyContinuation, + partial: true +} + +/** @type {Construct} */ +const codeFenced = { + name: 'codeFenced', + tokenize: tokenizeCodeFenced, + concrete: true +} + +/** + * @this {TokenizeContext} + * @type {Tokenizer} + */ +function tokenizeCodeFenced(effects, ok, nok) { + const self = this + /** @type {Construct} */ + const closeStart = {tokenize: tokenizeCloseStart, partial: true} + let initialPrefix = 0 + let sizeOpen = 0 + /** @type {NonNullable} */ + let marker + + return start + + /** + * Start of code. + * + * ```markdown + * > | ~~~js + * ^ + * | alert(1) + * | ~~~ + * ``` + * + * @type {State} + */ + function start(code) { + // To do: parse whitespace like `markdown-rs`. + return beforeSequenceOpen(code) + } + + /** + * In opening fence, after prefix, at sequence. + * + * ```markdown + * > | ~~~js + * ^ + * | alert(1) + * | ~~~ + * ``` + * + * @type {State} + */ + function beforeSequenceOpen(code) { + (0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)( + code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.graveAccent || code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.tilde, + 'expected `` ` `` or `~`' + ) + + const tail = self.events[self.events.length - 1] + initialPrefix = + tail && tail[1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.linePrefix + ? tail[2].sliceSerialize(tail[1], true).length + : 0 + + marker = code + effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.codeFenced) + effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.codeFencedFence) + effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.codeFencedFenceSequence) + return sequenceOpen(code) + } + + /** + * In opening fence sequence. + * + * ```markdown + * > | ~~~js + * ^ + * | alert(1) + * | ~~~ + * ``` + * + * @type {State} + */ + function sequenceOpen(code) { + if (code === marker) { + sizeOpen++ + effects.consume(code) + return sequenceOpen + } + + if (sizeOpen < micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_3__.constants.codeFencedSequenceSizeMin) { + return nok(code) + } + + effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.codeFencedFenceSequence) + return (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_4__.markdownSpace)(code) + ? (0,micromark_factory_space__WEBPACK_IMPORTED_MODULE_5__.factorySpace)(effects, infoBefore, micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.whitespace)(code) + : infoBefore(code) + } + + /** + * In opening fence, after the sequence (and optional whitespace), before info. + * + * ```markdown + * > | ~~~js + * ^ + * | alert(1) + * | ~~~ + * ``` + * + * @type {State} + */ + function infoBefore(code) { + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.eof || (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_4__.markdownLineEnding)(code)) { + effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.codeFencedFence) + return self.interrupt + ? ok(code) + : effects.check(nonLazyContinuation, atNonLazyBreak, after)(code) + } + + effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.codeFencedFenceInfo) + effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.chunkString, {contentType: micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_3__.constants.contentTypeString}) + return info(code) + } + + /** + * In info. + * + * ```markdown + * > | ~~~js + * ^ + * | alert(1) + * | ~~~ + * ``` + * + * @type {State} + */ + function info(code) { + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.eof || (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_4__.markdownLineEnding)(code)) { + effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.chunkString) + effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.codeFencedFenceInfo) + return infoBefore(code) + } + + if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_4__.markdownSpace)(code)) { + effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.chunkString) + effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.codeFencedFenceInfo) + return (0,micromark_factory_space__WEBPACK_IMPORTED_MODULE_5__.factorySpace)(effects, metaBefore, micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.whitespace)(code) + } + + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.graveAccent && code === marker) { + return nok(code) + } + + effects.consume(code) + return info + } + + /** + * In opening fence, after info and whitespace, before meta. + * + * ```markdown + * > | ~~~js eval + * ^ + * | alert(1) + * | ~~~ + * ``` + * + * @type {State} + */ + function metaBefore(code) { + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.eof || (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_4__.markdownLineEnding)(code)) { + return infoBefore(code) + } + + effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.codeFencedFenceMeta) + effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.chunkString, {contentType: micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_3__.constants.contentTypeString}) + return meta(code) + } + + /** + * In meta. + * + * ```markdown + * > | ~~~js eval + * ^ + * | alert(1) + * | ~~~ + * ``` + * + * @type {State} + */ + function meta(code) { + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.eof || (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_4__.markdownLineEnding)(code)) { + effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.chunkString) + effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.codeFencedFenceMeta) + return infoBefore(code) + } + + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.graveAccent && code === marker) { + return nok(code) + } + + effects.consume(code) + return meta + } + + /** + * At eol/eof in code, before a non-lazy closing fence or content. + * + * ```markdown + * > | ~~~js + * ^ + * > | alert(1) + * ^ + * | ~~~ + * ``` + * + * @type {State} + */ + function atNonLazyBreak(code) { + (0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_4__.markdownLineEnding)(code), 'expected eol') + return effects.attempt(closeStart, after, contentBefore)(code) + } + + /** + * Before code content, not a closing fence, at eol. + * + * ```markdown + * | ~~~js + * > | alert(1) + * ^ + * | ~~~ + * ``` + * + * @type {State} + */ + function contentBefore(code) { + (0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_4__.markdownLineEnding)(code), 'expected eol') + effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.lineEnding) + effects.consume(code) + effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.lineEnding) + return contentStart + } + + /** + * Before code content, not a closing fence. + * + * ```markdown + * | ~~~js + * > | alert(1) + * ^ + * | ~~~ + * ``` + * + * @type {State} + */ + function contentStart(code) { + return initialPrefix > 0 && (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_4__.markdownSpace)(code) + ? (0,micromark_factory_space__WEBPACK_IMPORTED_MODULE_5__.factorySpace)( + effects, + beforeContentChunk, + micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.linePrefix, + initialPrefix + 1 + )(code) + : beforeContentChunk(code) + } + + /** + * Before code content, after optional prefix. + * + * ```markdown + * | ~~~js + * > | alert(1) + * ^ + * | ~~~ + * ``` + * + * @type {State} + */ + function beforeContentChunk(code) { + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.eof || (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_4__.markdownLineEnding)(code)) { + return effects.check(nonLazyContinuation, atNonLazyBreak, after)(code) + } + + effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.codeFlowValue) + return contentChunk(code) + } + + /** + * In code content. + * + * ```markdown + * | ~~~js + * > | alert(1) + * ^^^^^^^^ + * | ~~~ + * ``` + * + * @type {State} + */ + function contentChunk(code) { + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.eof || (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_4__.markdownLineEnding)(code)) { + effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.codeFlowValue) + return beforeContentChunk(code) + } + + effects.consume(code) + return contentChunk + } + + /** + * After code. + * + * ```markdown + * | ~~~js + * | alert(1) + * > | ~~~ + * ^ + * ``` + * + * @type {State} + */ + function after(code) { + effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.codeFenced) + return ok(code) + } + + /** + * @this {TokenizeContext} + * @type {Tokenizer} + */ + function tokenizeCloseStart(effects, ok, nok) { + let size = 0 + + return startBefore + + /** + * + * + * @type {State} + */ + function startBefore(code) { + ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_4__.markdownLineEnding)(code), 'expected eol') + effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.lineEnding) + effects.consume(code) + effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.lineEnding) + return start + } + + /** + * Before closing fence, at optional whitespace. + * + * ```markdown + * | ~~~js + * | alert(1) + * > | ~~~ + * ^ + * ``` + * + * @type {State} + */ + function start(code) { + // Always populated by defaults. + (0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)( + self.parser.constructs.disable.null, + 'expected `disable.null` to be populated' + ) + + // To do: `enter` here or in next state? + effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.codeFencedFence) + return (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_4__.markdownSpace)(code) + ? (0,micromark_factory_space__WEBPACK_IMPORTED_MODULE_5__.factorySpace)( + effects, + beforeSequenceClose, + micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.linePrefix, + self.parser.constructs.disable.null.includes('codeIndented') + ? undefined + : micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_3__.constants.tabSize + )(code) + : beforeSequenceClose(code) + } + + /** + * In closing fence, after optional whitespace, at sequence. + * + * ```markdown + * | ~~~js + * | alert(1) + * > | ~~~ + * ^ + * ``` + * + * @type {State} + */ + function beforeSequenceClose(code) { + if (code === marker) { + effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.codeFencedFenceSequence) + return sequenceClose(code) + } + + return nok(code) + } + + /** + * In closing fence sequence. + * + * ```markdown + * | ~~~js + * | alert(1) + * > | ~~~ + * ^ + * ``` + * + * @type {State} + */ + function sequenceClose(code) { + if (code === marker) { + size++ + effects.consume(code) + return sequenceClose + } + + if (size >= sizeOpen) { + effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.codeFencedFenceSequence) + return (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_4__.markdownSpace)(code) + ? (0,micromark_factory_space__WEBPACK_IMPORTED_MODULE_5__.factorySpace)(effects, sequenceCloseAfter, micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.whitespace)(code) + : sequenceCloseAfter(code) + } + + return nok(code) + } + + /** + * After closing fence sequence, after optional whitespace. + * + * ```markdown + * | ~~~js + * | alert(1) + * > | ~~~ + * ^ + * ``` + * + * @type {State} + */ + function sequenceCloseAfter(code) { + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.eof || (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_4__.markdownLineEnding)(code)) { + effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.codeFencedFence) + return ok(code) + } + + return nok(code) + } + } +} + +/** + * @this {TokenizeContext} + * @type {Tokenizer} + */ +function tokenizeNonLazyContinuation(effects, ok, nok) { + const self = this + + return start + + /** + * + * + * @type {State} + */ + function start(code) { + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.eof) { + return nok(code) + } + + (0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_4__.markdownLineEnding)(code), 'expected eol') + effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.lineEnding) + effects.consume(code) + effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.lineEnding) + return lineStart + } + + /** + * + * + * @type {State} + */ + function lineStart(code) { + return self.parser.lazy[self.now().line] ? nok(code) : ok(code) + } +} + + +/***/ }), + +/***/ "../node_modules/micromark-core-commonmark/dev/lib/code-indented.js": +/*!**************************************************************************!*\ + !*** ../node_modules/micromark-core-commonmark/dev/lib/code-indented.js ***! + \**************************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ codeIndented: () => (/* binding */ codeIndented) +/* harmony export */ }); +/* harmony import */ var micromark_factory_space__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! micromark-factory-space */ "../node_modules/micromark-factory-space/dev/index.js"); +/* harmony import */ var micromark_util_character__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! micromark-util-character */ "../node_modules/micromark-util-character/dev/index.js"); +/* harmony import */ var micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! micromark-util-symbol/codes.js */ "../node_modules/micromark-util-symbol/codes.js"); +/* harmony import */ var micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! micromark-util-symbol/constants.js */ "../node_modules/micromark-util-symbol/constants.js"); +/* harmony import */ var micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! micromark-util-symbol/types.js */ "../node_modules/micromark-util-symbol/types.js"); +/* harmony import */ var uvu_assert__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! uvu/assert */ "../node_modules/uvu/assert/index.mjs"); +/** + * @typedef {import('micromark-util-types').Construct} Construct + * @typedef {import('micromark-util-types').State} State + * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext + * @typedef {import('micromark-util-types').Tokenizer} Tokenizer + */ + + + + + + + + +/** @type {Construct} */ +const codeIndented = { + name: 'codeIndented', + tokenize: tokenizeCodeIndented +} + +/** @type {Construct} */ +const furtherStart = {tokenize: tokenizeFurtherStart, partial: true} + +/** + * @this {TokenizeContext} + * @type {Tokenizer} + */ +function tokenizeCodeIndented(effects, ok, nok) { + const self = this + return start + + /** + * Start of code (indented). + * + * > **Parsing note**: it is not needed to check if this first line is a + * > filled line (that it has a non-whitespace character), because blank lines + * > are parsed already, so we never run into that. + * + * ```markdown + * > | aaa + * ^ + * ``` + * + * @type {State} + */ + function start(code) { + // To do: manually check if interrupting like `markdown-rs`. + ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_1__.markdownSpace)(code)) + effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.codeIndented) + // To do: use an improved `space_or_tab` function like `markdown-rs`, + // so that we can drop the next state. + return (0,micromark_factory_space__WEBPACK_IMPORTED_MODULE_3__.factorySpace)( + effects, + afterPrefix, + micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.linePrefix, + micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_4__.constants.tabSize + 1 + )(code) + } + + /** + * At start, after 1 or 4 spaces. + * + * ```markdown + * > | aaa + * ^ + * ``` + * + * @type {State} + */ + function afterPrefix(code) { + const tail = self.events[self.events.length - 1] + return tail && + tail[1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.linePrefix && + tail[2].sliceSerialize(tail[1], true).length >= micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_4__.constants.tabSize + ? atBreak(code) + : nok(code) + } + + /** + * At a break. + * + * ```markdown + * > | aaa + * ^ ^ + * ``` + * + * @type {State} + */ + function atBreak(code) { + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_5__.codes.eof) { + return after(code) + } + + if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_1__.markdownLineEnding)(code)) { + return effects.attempt(furtherStart, atBreak, after)(code) + } + + effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.codeFlowValue) + return inside(code) + } + + /** + * In code content. + * + * ```markdown + * > | aaa + * ^^^^ + * ``` + * + * @type {State} + */ + function inside(code) { + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_5__.codes.eof || (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_1__.markdownLineEnding)(code)) { + effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.codeFlowValue) + return atBreak(code) + } + + effects.consume(code) + return inside + } + + /** @type {State} */ + function after(code) { + effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.codeIndented) + // To do: allow interrupting like `markdown-rs`. + // Feel free to interrupt. + // tokenizer.interrupt = false + return ok(code) + } +} + +/** + * @this {TokenizeContext} + * @type {Tokenizer} + */ +function tokenizeFurtherStart(effects, ok, nok) { + const self = this + + return furtherStart + + /** + * At eol, trying to parse another indent. + * + * ```markdown + * > | aaa + * ^ + * | bbb + * ``` + * + * @type {State} + */ + function furtherStart(code) { + // To do: improve `lazy` / `pierce` handling. + // If this is a lazy line, it can’t be code. + if (self.parser.lazy[self.now().line]) { + return nok(code) + } + + if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_1__.markdownLineEnding)(code)) { + effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.lineEnding) + effects.consume(code) + effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.lineEnding) + return furtherStart + } + + // To do: the code here in `micromark-js` is a bit different from + // `markdown-rs` because there it can attempt spaces. + // We can’t yet. + // + // To do: use an improved `space_or_tab` function like `markdown-rs`, + // so that we can drop the next state. + return (0,micromark_factory_space__WEBPACK_IMPORTED_MODULE_3__.factorySpace)( + effects, + afterPrefix, + micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.linePrefix, + micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_4__.constants.tabSize + 1 + )(code) + } + + /** + * At start, after 1 or 4 spaces. + * + * ```markdown + * > | aaa + * ^ + * ``` + * + * @type {State} + */ + function afterPrefix(code) { + const tail = self.events[self.events.length - 1] + return tail && + tail[1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.linePrefix && + tail[2].sliceSerialize(tail[1], true).length >= micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_4__.constants.tabSize + ? ok(code) + : (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_1__.markdownLineEnding)(code) + ? furtherStart(code) + : nok(code) + } +} + + +/***/ }), + +/***/ "../node_modules/micromark-core-commonmark/dev/lib/code-text.js": +/*!**********************************************************************!*\ + !*** ../node_modules/micromark-core-commonmark/dev/lib/code-text.js ***! + \**********************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ codeText: () => (/* binding */ codeText) +/* harmony export */ }); +/* harmony import */ var micromark_util_character__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! micromark-util-character */ "../node_modules/micromark-util-character/dev/index.js"); +/* harmony import */ var micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! micromark-util-symbol/codes.js */ "../node_modules/micromark-util-symbol/codes.js"); +/* harmony import */ var micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! micromark-util-symbol/types.js */ "../node_modules/micromark-util-symbol/types.js"); +/* harmony import */ var uvu_assert__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! uvu/assert */ "../node_modules/uvu/assert/index.mjs"); +/** + * @typedef {import('micromark-util-types').Construct} Construct + * @typedef {import('micromark-util-types').Previous} Previous + * @typedef {import('micromark-util-types').Resolver} Resolver + * @typedef {import('micromark-util-types').State} State + * @typedef {import('micromark-util-types').Token} Token + * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext + * @typedef {import('micromark-util-types').Tokenizer} Tokenizer + */ + + + + + + +/** @type {Construct} */ +const codeText = { + name: 'codeText', + tokenize: tokenizeCodeText, + resolve: resolveCodeText, + previous +} + +// To do: next major: don’t resolve, like `markdown-rs`. +/** @type {Resolver} */ +function resolveCodeText(events) { + let tailExitIndex = events.length - 4 + let headEnterIndex = 3 + /** @type {number} */ + let index + /** @type {number | undefined} */ + let enter + + // If we start and end with an EOL or a space. + if ( + (events[headEnterIndex][1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.lineEnding || + events[headEnterIndex][1].type === 'space') && + (events[tailExitIndex][1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.lineEnding || + events[tailExitIndex][1].type === 'space') + ) { + index = headEnterIndex + + // And we have data. + while (++index < tailExitIndex) { + if (events[index][1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.codeTextData) { + // Then we have padding. + events[headEnterIndex][1].type = micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.codeTextPadding + events[tailExitIndex][1].type = micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.codeTextPadding + headEnterIndex += 2 + tailExitIndex -= 2 + break + } + } + } + + // Merge adjacent spaces and data. + index = headEnterIndex - 1 + tailExitIndex++ + + while (++index <= tailExitIndex) { + if (enter === undefined) { + if ( + index !== tailExitIndex && + events[index][1].type !== micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.lineEnding + ) { + enter = index + } + } else if ( + index === tailExitIndex || + events[index][1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.lineEnding + ) { + events[enter][1].type = micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.codeTextData + + if (index !== enter + 2) { + events[enter][1].end = events[index - 1][1].end + events.splice(enter + 2, index - enter - 2) + tailExitIndex -= index - enter - 2 + index = enter + 2 + } + + enter = undefined + } + } + + return events +} + +/** + * @this {TokenizeContext} + * @type {Previous} + */ +function previous(code) { + // If there is a previous code, there will always be a tail. + return ( + code !== micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.graveAccent || + this.events[this.events.length - 1][1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.characterEscape + ) +} + +/** + * @this {TokenizeContext} + * @type {Tokenizer} + */ +function tokenizeCodeText(effects, ok, nok) { + const self = this + let sizeOpen = 0 + /** @type {number} */ + let size + /** @type {Token} */ + let token + + return start + + /** + * Start of code (text). + * + * ```markdown + * > | `a` + * ^ + * > | \`a` + * ^ + * ``` + * + * @type {State} + */ + function start(code) { + ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.graveAccent, 'expected `` ` ``') + ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(previous.call(self, self.previous), 'expected correct previous') + effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.codeText) + effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.codeTextSequence) + return sequenceOpen(code) + } + + /** + * In opening sequence. + * + * ```markdown + * > | `a` + * ^ + * ``` + * + * @type {State} + */ + function sequenceOpen(code) { + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.graveAccent) { + effects.consume(code) + sizeOpen++ + return sequenceOpen + } + + effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.codeTextSequence) + return between(code) + } + + /** + * Between something and something else. + * + * ```markdown + * > | `a` + * ^^ + * ``` + * + * @type {State} + */ + function between(code) { + // EOF. + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.eof) { + return nok(code) + } + + // To do: next major: don’t do spaces in resolve, but when compiling, + // like `markdown-rs`. + // Tabs don’t work, and virtual spaces don’t make sense. + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.space) { + effects.enter('space') + effects.consume(code) + effects.exit('space') + return between + } + + // Closing fence? Could also be data. + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.graveAccent) { + token = effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.codeTextSequence) + size = 0 + return sequenceClose(code) + } + + if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.markdownLineEnding)(code)) { + effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.lineEnding) + effects.consume(code) + effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.lineEnding) + return between + } + + // Data. + effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.codeTextData) + return data(code) + } + + /** + * In data. + * + * ```markdown + * > | `a` + * ^ + * ``` + * + * @type {State} + */ + function data(code) { + if ( + code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.eof || + code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.space || + code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.graveAccent || + (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.markdownLineEnding)(code) + ) { + effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.codeTextData) + return between(code) + } + + effects.consume(code) + return data + } + + /** + * In closing sequence. + * + * ```markdown + * > | `a` + * ^ + * ``` + * + * @type {State} + */ + function sequenceClose(code) { + // More. + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.graveAccent) { + effects.consume(code) + size++ + return sequenceClose + } + + // Done! + if (size === sizeOpen) { + effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.codeTextSequence) + effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.codeText) + return ok(code) + } + + // More or less accents: mark as data. + token.type = micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.codeTextData + return data(code) + } +} + + +/***/ }), + +/***/ "../node_modules/micromark-core-commonmark/dev/lib/content.js": +/*!********************************************************************!*\ + !*** ../node_modules/micromark-core-commonmark/dev/lib/content.js ***! + \********************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ content: () => (/* binding */ content) +/* harmony export */ }); +/* harmony import */ var micromark_factory_space__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! micromark-factory-space */ "../node_modules/micromark-factory-space/dev/index.js"); +/* harmony import */ var micromark_util_character__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! micromark-util-character */ "../node_modules/micromark-util-character/dev/index.js"); +/* harmony import */ var micromark_util_subtokenize__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! micromark-util-subtokenize */ "../node_modules/micromark-util-subtokenize/dev/index.js"); +/* harmony import */ var micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! micromark-util-symbol/codes.js */ "../node_modules/micromark-util-symbol/codes.js"); +/* harmony import */ var micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! micromark-util-symbol/constants.js */ "../node_modules/micromark-util-symbol/constants.js"); +/* harmony import */ var micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! micromark-util-symbol/types.js */ "../node_modules/micromark-util-symbol/types.js"); +/* harmony import */ var uvu_assert__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! uvu/assert */ "../node_modules/uvu/assert/index.mjs"); +/** + * @typedef {import('micromark-util-types').Construct} Construct + * @typedef {import('micromark-util-types').Resolver} Resolver + * @typedef {import('micromark-util-types').State} State + * @typedef {import('micromark-util-types').Token} Token + * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext + * @typedef {import('micromark-util-types').Tokenizer} Tokenizer + */ + + + + + + + + + +/** + * No name because it must not be turned off. + * @type {Construct} + */ +const content = {tokenize: tokenizeContent, resolve: resolveContent} + +/** @type {Construct} */ +const continuationConstruct = {tokenize: tokenizeContinuation, partial: true} + +/** + * Content is transparent: it’s parsed right now. That way, definitions are also + * parsed right now: before text in paragraphs (specifically, media) are parsed. + * + * @type {Resolver} + */ +function resolveContent(events) { + ;(0,micromark_util_subtokenize__WEBPACK_IMPORTED_MODULE_1__.subtokenize)(events) + return events +} + +/** + * @this {TokenizeContext} + * @type {Tokenizer} + */ +function tokenizeContent(effects, ok) { + /** @type {Token | undefined} */ + let previous + + return chunkStart + + /** + * Before a content chunk. + * + * ```markdown + * > | abc + * ^ + * ``` + * + * @type {State} + */ + function chunkStart(code) { + ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)( + code !== micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.eof && !(0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.markdownLineEnding)(code), + 'expected no eof or eol' + ) + + effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_4__.types.content) + previous = effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_4__.types.chunkContent, { + contentType: micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_5__.constants.contentTypeContent + }) + return chunkInside(code) + } + + /** + * In a content chunk. + * + * ```markdown + * > | abc + * ^^^ + * ``` + * + * @type {State} + */ + function chunkInside(code) { + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.eof) { + return contentEnd(code) + } + + // To do: in `markdown-rs`, each line is parsed on its own, and everything + // is stitched together resolving. + if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.markdownLineEnding)(code)) { + return effects.check( + continuationConstruct, + contentContinue, + contentEnd + )(code) + } + + // Data. + effects.consume(code) + return chunkInside + } + + /** + * + * + * @type {State} + */ + function contentEnd(code) { + effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_4__.types.chunkContent) + effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_4__.types.content) + return ok(code) + } + + /** + * + * + * @type {State} + */ + function contentContinue(code) { + (0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.markdownLineEnding)(code), 'expected eol') + effects.consume(code) + effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_4__.types.chunkContent) + ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(previous, 'expected previous token') + previous.next = effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_4__.types.chunkContent, { + contentType: micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_5__.constants.contentTypeContent, + previous + }) + previous = previous.next + return chunkInside + } +} + +/** + * @this {TokenizeContext} + * @type {Tokenizer} + */ +function tokenizeContinuation(effects, ok, nok) { + const self = this + + return startLookahead + + /** + * + * + * @type {State} + */ + function startLookahead(code) { + ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.markdownLineEnding)(code), 'expected a line ending') + effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_4__.types.chunkContent) + effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_4__.types.lineEnding) + effects.consume(code) + effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_4__.types.lineEnding) + return (0,micromark_factory_space__WEBPACK_IMPORTED_MODULE_6__.factorySpace)(effects, prefixed, micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_4__.types.linePrefix) + } + + /** + * + * + * @type {State} + */ + function prefixed(code) { + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.eof || (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.markdownLineEnding)(code)) { + return nok(code) + } + + // Always populated by defaults. + (0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)( + self.parser.constructs.disable.null, + 'expected `disable.null` to be populated' + ) + + const tail = self.events[self.events.length - 1] + + if ( + !self.parser.constructs.disable.null.includes('codeIndented') && + tail && + tail[1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_4__.types.linePrefix && + tail[2].sliceSerialize(tail[1], true).length >= micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_5__.constants.tabSize + ) { + return ok(code) + } + + return effects.interrupt(self.parser.constructs.flow, nok, ok)(code) + } +} + + +/***/ }), + +/***/ "../node_modules/micromark-core-commonmark/dev/lib/definition.js": +/*!***********************************************************************!*\ + !*** ../node_modules/micromark-core-commonmark/dev/lib/definition.js ***! + \***********************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ definition: () => (/* binding */ definition) +/* harmony export */ }); +/* harmony import */ var micromark_factory_destination__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! micromark-factory-destination */ "../node_modules/micromark-factory-destination/dev/index.js"); +/* harmony import */ var micromark_factory_label__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! micromark-factory-label */ "../node_modules/micromark-factory-label/dev/index.js"); +/* harmony import */ var micromark_factory_space__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! micromark-factory-space */ "../node_modules/micromark-factory-space/dev/index.js"); +/* harmony import */ var micromark_factory_title__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! micromark-factory-title */ "../node_modules/micromark-factory-title/dev/index.js"); +/* harmony import */ var micromark_factory_whitespace__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! micromark-factory-whitespace */ "../node_modules/micromark-factory-whitespace/dev/index.js"); +/* harmony import */ var micromark_util_character__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! micromark-util-character */ "../node_modules/micromark-util-character/dev/index.js"); +/* harmony import */ var micromark_util_normalize_identifier__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! micromark-util-normalize-identifier */ "../node_modules/micromark-util-normalize-identifier/dev/index.js"); +/* harmony import */ var micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! micromark-util-symbol/codes.js */ "../node_modules/micromark-util-symbol/codes.js"); +/* harmony import */ var micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! micromark-util-symbol/types.js */ "../node_modules/micromark-util-symbol/types.js"); +/* harmony import */ var uvu_assert__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! uvu/assert */ "../node_modules/uvu/assert/index.mjs"); +/** + * @typedef {import('micromark-util-types').Construct} Construct + * @typedef {import('micromark-util-types').State} State + * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext + * @typedef {import('micromark-util-types').Tokenizer} Tokenizer + */ + + + + + + + + + + + + +/** @type {Construct} */ +const definition = {name: 'definition', tokenize: tokenizeDefinition} + +/** @type {Construct} */ +const titleBefore = {tokenize: tokenizeTitleBefore, partial: true} + +/** + * @this {TokenizeContext} + * @type {Tokenizer} + */ +function tokenizeDefinition(effects, ok, nok) { + const self = this + /** @type {string} */ + let identifier + + return start + + /** + * At start of a definition. + * + * ```markdown + * > | [a]: b "c" + * ^ + * ``` + * + * @type {State} + */ + function start(code) { + // Do not interrupt paragraphs (but do follow definitions). + // To do: do `interrupt` the way `markdown-rs` does. + // To do: parse whitespace the way `markdown-rs` does. + effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.definition) + return before(code) + } + + /** + * After optional whitespace, at `[`. + * + * ```markdown + * > | [a]: b "c" + * ^ + * ``` + * + * @type {State} + */ + function before(code) { + // To do: parse whitespace the way `markdown-rs` does. + (0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.leftSquareBracket, 'expected `[`') + return micromark_factory_label__WEBPACK_IMPORTED_MODULE_3__.factoryLabel.call( + self, + effects, + labelAfter, + // Note: we don’t need to reset the way `markdown-rs` does. + nok, + micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.definitionLabel, + micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.definitionLabelMarker, + micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.definitionLabelString + )(code) + } + + /** + * After label. + * + * ```markdown + * > | [a]: b "c" + * ^ + * ``` + * + * @type {State} + */ + function labelAfter(code) { + identifier = (0,micromark_util_normalize_identifier__WEBPACK_IMPORTED_MODULE_4__.normalizeIdentifier)( + self.sliceSerialize(self.events[self.events.length - 1][1]).slice(1, -1) + ) + + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.colon) { + effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.definitionMarker) + effects.consume(code) + effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.definitionMarker) + return markerAfter + } + + return nok(code) + } + + /** + * After marker. + * + * ```markdown + * > | [a]: b "c" + * ^ + * ``` + * + * @type {State} + */ + function markerAfter(code) { + // Note: whitespace is optional. + return (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_5__.markdownLineEndingOrSpace)(code) + ? (0,micromark_factory_whitespace__WEBPACK_IMPORTED_MODULE_6__.factoryWhitespace)(effects, destinationBefore)(code) + : destinationBefore(code) + } + + /** + * Before destination. + * + * ```markdown + * > | [a]: b "c" + * ^ + * ``` + * + * @type {State} + */ + function destinationBefore(code) { + return (0,micromark_factory_destination__WEBPACK_IMPORTED_MODULE_7__.factoryDestination)( + effects, + destinationAfter, + // Note: we don’t need to reset the way `markdown-rs` does. + nok, + micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.definitionDestination, + micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.definitionDestinationLiteral, + micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.definitionDestinationLiteralMarker, + micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.definitionDestinationRaw, + micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.definitionDestinationString + )(code) + } + + /** + * After destination. + * + * ```markdown + * > | [a]: b "c" + * ^ + * ``` + * + * @type {State} + */ + function destinationAfter(code) { + return effects.attempt(titleBefore, after, after)(code) + } + + /** + * After definition. + * + * ```markdown + * > | [a]: b + * ^ + * > | [a]: b "c" + * ^ + * ``` + * + * @type {State} + */ + function after(code) { + return (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_5__.markdownSpace)(code) + ? (0,micromark_factory_space__WEBPACK_IMPORTED_MODULE_8__.factorySpace)(effects, afterWhitespace, micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.whitespace)(code) + : afterWhitespace(code) + } + + /** + * After definition, after optional whitespace. + * + * ```markdown + * > | [a]: b + * ^ + * > | [a]: b "c" + * ^ + * ``` + * + * @type {State} + */ + function afterWhitespace(code) { + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.eof || (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_5__.markdownLineEnding)(code)) { + effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.definition) + + // Note: we don’t care about uniqueness. + // It’s likely that that doesn’t happen very frequently. + // It is more likely that it wastes precious time. + self.parser.defined.push(identifier) + + // To do: `markdown-rs` interrupt. + // // You’d be interrupting. + // tokenizer.interrupt = true + return ok(code) + } + + return nok(code) + } +} + +/** + * @this {TokenizeContext} + * @type {Tokenizer} + */ +function tokenizeTitleBefore(effects, ok, nok) { + return titleBefore + + /** + * After destination, at whitespace. + * + * ```markdown + * > | [a]: b + * ^ + * > | [a]: b "c" + * ^ + * ``` + * + * @type {State} + */ + function titleBefore(code) { + return (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_5__.markdownLineEndingOrSpace)(code) + ? (0,micromark_factory_whitespace__WEBPACK_IMPORTED_MODULE_6__.factoryWhitespace)(effects, beforeMarker)(code) + : nok(code) + } + + /** + * At title. + * + * ```markdown + * | [a]: b + * > | "c" + * ^ + * ``` + * + * @type {State} + */ + function beforeMarker(code) { + return (0,micromark_factory_title__WEBPACK_IMPORTED_MODULE_9__.factoryTitle)( + effects, + titleAfter, + nok, + micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.definitionTitle, + micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.definitionTitleMarker, + micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.definitionTitleString + )(code) + } + + /** + * After title. + * + * ```markdown + * > | [a]: b "c" + * ^ + * ``` + * + * @type {State} + */ + function titleAfter(code) { + return (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_5__.markdownSpace)(code) + ? (0,micromark_factory_space__WEBPACK_IMPORTED_MODULE_8__.factorySpace)( + effects, + titleAfterOptionalWhitespace, + micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.whitespace + )(code) + : titleAfterOptionalWhitespace(code) + } + + /** + * After title, after optional whitespace. + * + * ```markdown + * > | [a]: b "c" + * ^ + * ``` + * + * @type {State} + */ + function titleAfterOptionalWhitespace(code) { + return code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.eof || (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_5__.markdownLineEnding)(code) ? ok(code) : nok(code) + } +} + + +/***/ }), + +/***/ "../node_modules/micromark-core-commonmark/dev/lib/hard-break-escape.js": +/*!******************************************************************************!*\ + !*** ../node_modules/micromark-core-commonmark/dev/lib/hard-break-escape.js ***! + \******************************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ hardBreakEscape: () => (/* binding */ hardBreakEscape) +/* harmony export */ }); +/* harmony import */ var micromark_util_character__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! micromark-util-character */ "../node_modules/micromark-util-character/dev/index.js"); +/* harmony import */ var micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! micromark-util-symbol/codes.js */ "../node_modules/micromark-util-symbol/codes.js"); +/* harmony import */ var micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! micromark-util-symbol/types.js */ "../node_modules/micromark-util-symbol/types.js"); +/* harmony import */ var uvu_assert__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! uvu/assert */ "../node_modules/uvu/assert/index.mjs"); +/** + * @typedef {import('micromark-util-types').Construct} Construct + * @typedef {import('micromark-util-types').State} State + * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext + * @typedef {import('micromark-util-types').Tokenizer} Tokenizer + */ + + + + + + +/** @type {Construct} */ +const hardBreakEscape = { + name: 'hardBreakEscape', + tokenize: tokenizeHardBreakEscape +} + +/** + * @this {TokenizeContext} + * @type {Tokenizer} + */ +function tokenizeHardBreakEscape(effects, ok, nok) { + return start + + /** + * Start of a hard break (escape). + * + * ```markdown + * > | a\ + * ^ + * | b + * ``` + * + * @type {State} + */ + function start(code) { + ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.backslash, 'expected `\\`') + effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.hardBreakEscape) + effects.consume(code) + return after + } + + /** + * After `\`, at eol. + * + * ```markdown + * > | a\ + * ^ + * | b + * ``` + * + * @type {State} + */ + function after(code) { + if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.markdownLineEnding)(code)) { + effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.hardBreakEscape) + return ok(code) + } + + return nok(code) + } +} + + +/***/ }), + +/***/ "../node_modules/micromark-core-commonmark/dev/lib/heading-atx.js": +/*!************************************************************************!*\ + !*** ../node_modules/micromark-core-commonmark/dev/lib/heading-atx.js ***! + \************************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ headingAtx: () => (/* binding */ headingAtx) +/* harmony export */ }); +/* harmony import */ var micromark_factory_space__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! micromark-factory-space */ "../node_modules/micromark-factory-space/dev/index.js"); +/* harmony import */ var micromark_util_character__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! micromark-util-character */ "../node_modules/micromark-util-character/dev/index.js"); +/* harmony import */ var micromark_util_chunked__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! micromark-util-chunked */ "../node_modules/micromark-util-chunked/dev/index.js"); +/* harmony import */ var micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! micromark-util-symbol/codes.js */ "../node_modules/micromark-util-symbol/codes.js"); +/* harmony import */ var micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! micromark-util-symbol/constants.js */ "../node_modules/micromark-util-symbol/constants.js"); +/* harmony import */ var micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! micromark-util-symbol/types.js */ "../node_modules/micromark-util-symbol/types.js"); +/* harmony import */ var uvu_assert__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! uvu/assert */ "../node_modules/uvu/assert/index.mjs"); +/** + * @typedef {import('micromark-util-types').Construct} Construct + * @typedef {import('micromark-util-types').Resolver} Resolver + * @typedef {import('micromark-util-types').State} State + * @typedef {import('micromark-util-types').Token} Token + * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext + * @typedef {import('micromark-util-types').Tokenizer} Tokenizer + */ + + + + + + + + + +/** @type {Construct} */ +const headingAtx = { + name: 'headingAtx', + tokenize: tokenizeHeadingAtx, + resolve: resolveHeadingAtx +} + +/** @type {Resolver} */ +function resolveHeadingAtx(events, context) { + let contentEnd = events.length - 2 + let contentStart = 3 + /** @type {Token} */ + let content + /** @type {Token} */ + let text + + // Prefix whitespace, part of the opening. + if (events[contentStart][1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.whitespace) { + contentStart += 2 + } + + // Suffix whitespace, part of the closing. + if ( + contentEnd - 2 > contentStart && + events[contentEnd][1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.whitespace + ) { + contentEnd -= 2 + } + + if ( + events[contentEnd][1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.atxHeadingSequence && + (contentStart === contentEnd - 1 || + (contentEnd - 4 > contentStart && + events[contentEnd - 2][1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.whitespace)) + ) { + contentEnd -= contentStart + 1 === contentEnd ? 2 : 4 + } + + if (contentEnd > contentStart) { + content = { + type: micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.atxHeadingText, + start: events[contentStart][1].start, + end: events[contentEnd][1].end + } + text = { + type: micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.chunkText, + start: events[contentStart][1].start, + end: events[contentEnd][1].end, + contentType: micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_2__.constants.contentTypeText + } + + ;(0,micromark_util_chunked__WEBPACK_IMPORTED_MODULE_3__.splice)(events, contentStart, contentEnd - contentStart + 1, [ + ['enter', content, context], + ['enter', text, context], + ['exit', text, context], + ['exit', content, context] + ]) + } + + return events +} + +/** + * @this {TokenizeContext} + * @type {Tokenizer} + */ +function tokenizeHeadingAtx(effects, ok, nok) { + let size = 0 + + return start + + /** + * Start of a heading (atx). + * + * ```markdown + * > | ## aa + * ^ + * ``` + * + * @type {State} + */ + function start(code) { + // To do: parse indent like `markdown-rs`. + effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.atxHeading) + return before(code) + } + + /** + * After optional whitespace, at `#`. + * + * ```markdown + * > | ## aa + * ^ + * ``` + * + * @type {State} + */ + function before(code) { + (0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_4__.codes.numberSign, 'expected `#`') + effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.atxHeadingSequence) + return sequenceOpen(code) + } + + /** + * In opening sequence. + * + * ```markdown + * > | ## aa + * ^ + * ``` + * + * @type {State} + */ + function sequenceOpen(code) { + if ( + code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_4__.codes.numberSign && + size++ < micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_2__.constants.atxHeadingOpeningFenceSizeMax + ) { + effects.consume(code) + return sequenceOpen + } + + // Always at least one `#`. + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_4__.codes.eof || (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_5__.markdownLineEndingOrSpace)(code)) { + effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.atxHeadingSequence) + return atBreak(code) + } + + return nok(code) + } + + /** + * After something, before something else. + * + * ```markdown + * > | ## aa + * ^ + * ``` + * + * @type {State} + */ + function atBreak(code) { + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_4__.codes.numberSign) { + effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.atxHeadingSequence) + return sequenceFurther(code) + } + + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_4__.codes.eof || (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_5__.markdownLineEnding)(code)) { + effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.atxHeading) + // To do: interrupt like `markdown-rs`. + // // Feel free to interrupt. + // tokenizer.interrupt = false + return ok(code) + } + + if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_5__.markdownSpace)(code)) { + return (0,micromark_factory_space__WEBPACK_IMPORTED_MODULE_6__.factorySpace)(effects, atBreak, micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.whitespace)(code) + } + + // To do: generate `data` tokens, add the `text` token later. + // Needs edit map, see: `markdown.rs`. + effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.atxHeadingText) + return data(code) + } + + /** + * In further sequence (after whitespace). + * + * Could be normal “visible” hashes in the heading or a final sequence. + * + * ```markdown + * > | ## aa ## + * ^ + * ``` + * + * @type {State} + */ + function sequenceFurther(code) { + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_4__.codes.numberSign) { + effects.consume(code) + return sequenceFurther + } + + effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.atxHeadingSequence) + return atBreak(code) + } + + /** + * In text. + * + * ```markdown + * > | ## aa + * ^ + * ``` + * + * @type {State} + */ + function data(code) { + if ( + code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_4__.codes.eof || + code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_4__.codes.numberSign || + (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_5__.markdownLineEndingOrSpace)(code) + ) { + effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.atxHeadingText) + return atBreak(code) + } + + effects.consume(code) + return data + } +} + + +/***/ }), + +/***/ "../node_modules/micromark-core-commonmark/dev/lib/html-flow.js": +/*!**********************************************************************!*\ + !*** ../node_modules/micromark-core-commonmark/dev/lib/html-flow.js ***! + \**********************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ htmlFlow: () => (/* binding */ htmlFlow) +/* harmony export */ }); +/* harmony import */ var micromark_util_character__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! micromark-util-character */ "../node_modules/micromark-util-character/dev/index.js"); +/* harmony import */ var micromark_util_html_tag_name__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! micromark-util-html-tag-name */ "../node_modules/micromark-util-html-tag-name/index.js"); +/* harmony import */ var micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! micromark-util-symbol/codes.js */ "../node_modules/micromark-util-symbol/codes.js"); +/* harmony import */ var micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! micromark-util-symbol/constants.js */ "../node_modules/micromark-util-symbol/constants.js"); +/* harmony import */ var micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! micromark-util-symbol/types.js */ "../node_modules/micromark-util-symbol/types.js"); +/* harmony import */ var uvu_assert__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! uvu/assert */ "../node_modules/uvu/assert/index.mjs"); +/* harmony import */ var _blank_line_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./blank-line.js */ "../node_modules/micromark-core-commonmark/dev/lib/blank-line.js"); +/** + * @typedef {import('micromark-util-types').Code} Code + * @typedef {import('micromark-util-types').Construct} Construct + * @typedef {import('micromark-util-types').Resolver} Resolver + * @typedef {import('micromark-util-types').State} State + * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext + * @typedef {import('micromark-util-types').Tokenizer} Tokenizer + */ + + + + + + + + + +/** @type {Construct} */ +const htmlFlow = { + name: 'htmlFlow', + tokenize: tokenizeHtmlFlow, + resolveTo: resolveToHtmlFlow, + concrete: true +} + +/** @type {Construct} */ +const blankLineBefore = {tokenize: tokenizeBlankLineBefore, partial: true} +const nonLazyContinuationStart = { + tokenize: tokenizeNonLazyContinuationStart, + partial: true +} + +/** @type {Resolver} */ +function resolveToHtmlFlow(events) { + let index = events.length + + while (index--) { + if ( + events[index][0] === 'enter' && + events[index][1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.htmlFlow + ) { + break + } + } + + if (index > 1 && events[index - 2][1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.linePrefix) { + // Add the prefix start to the HTML token. + events[index][1].start = events[index - 2][1].start + // Add the prefix start to the HTML line token. + events[index + 1][1].start = events[index - 2][1].start + // Remove the line prefix. + events.splice(index - 2, 2) + } + + return events +} + +/** + * @this {TokenizeContext} + * @type {Tokenizer} + */ +function tokenizeHtmlFlow(effects, ok, nok) { + const self = this + /** @type {number} */ + let marker + /** @type {boolean} */ + let closingTag + /** @type {string} */ + let buffer + /** @type {number} */ + let index + /** @type {Code} */ + let markerB + + return start + + /** + * Start of HTML (flow). + * + * ```markdown + * > | + * ^ + * ``` + * + * @type {State} + */ + function start(code) { + // To do: parse indent like `markdown-rs`. + return before(code) + } + + /** + * At `<`, after optional whitespace. + * + * ```markdown + * > | + * ^ + * ``` + * + * @type {State} + */ + function before(code) { + (0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.lessThan, 'expected `<`') + effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.htmlFlow) + effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.htmlFlowData) + effects.consume(code) + return open + } + + /** + * After `<`, at tag name or other stuff. + * + * ```markdown + * > | + * ^ + * > | + * ^ + * > | + * ^ + * ``` + * + * @type {State} + */ + function open(code) { + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.exclamationMark) { + effects.consume(code) + return declarationOpen + } + + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.slash) { + effects.consume(code) + closingTag = true + return tagCloseStart + } + + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.questionMark) { + effects.consume(code) + marker = micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_3__.constants.htmlInstruction + // To do: + // tokenizer.concrete = true + // To do: use `markdown-rs` style interrupt. + // While we’re in an instruction instead of a declaration, we’re on a `?` + // right now, so we do need to search for `>`, similar to declarations. + return self.interrupt ? ok : continuationDeclarationInside + } + + // ASCII alphabetical. + if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_4__.asciiAlpha)(code)) { + effects.consume(code) + // @ts-expect-error: not null. + buffer = String.fromCharCode(code) + return tagName + } + + return nok(code) + } + + /** + * After ` | + * ^ + * > | + * ^ + * > | &<]]> + * ^ + * ``` + * + * @type {State} + */ + function declarationOpen(code) { + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.dash) { + effects.consume(code) + marker = micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_3__.constants.htmlComment + return commentOpenInside + } + + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.leftSquareBracket) { + effects.consume(code) + marker = micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_3__.constants.htmlCdata + index = 0 + return cdataOpenInside + } + + // ASCII alphabetical. + if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_4__.asciiAlpha)(code)) { + effects.consume(code) + marker = micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_3__.constants.htmlDeclaration + // // Do not form containers. + // tokenizer.concrete = true + return self.interrupt ? ok : continuationDeclarationInside + } + + return nok(code) + } + + /** + * After ` | + * ^ + * ``` + * + * @type {State} + */ + function commentOpenInside(code) { + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.dash) { + effects.consume(code) + // // Do not form containers. + // tokenizer.concrete = true + return self.interrupt ? ok : continuationDeclarationInside + } + + return nok(code) + } + + /** + * After ` | &<]]> + * ^^^^^^ + * ``` + * + * @type {State} + */ + function cdataOpenInside(code) { + const value = micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_3__.constants.cdataOpeningString + + if (code === value.charCodeAt(index++)) { + effects.consume(code) + + if (index === value.length) { + // // Do not form containers. + // tokenizer.concrete = true + return self.interrupt ? ok : continuation + } + + return cdataOpenInside + } + + return nok(code) + } + + /** + * After ` | + * ^ + * ``` + * + * @type {State} + */ + function tagCloseStart(code) { + if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_4__.asciiAlpha)(code)) { + effects.consume(code) + // @ts-expect-error: not null. + buffer = String.fromCharCode(code) + return tagName + } + + return nok(code) + } + + /** + * In tag name. + * + * ```markdown + * > | + * ^^ + * > | + * ^^ + * ``` + * + * @type {State} + */ + function tagName(code) { + if ( + code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.eof || + code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.slash || + code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.greaterThan || + (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_4__.markdownLineEndingOrSpace)(code) + ) { + const slash = code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.slash + const name = buffer.toLowerCase() + + if (!slash && !closingTag && micromark_util_html_tag_name__WEBPACK_IMPORTED_MODULE_5__.htmlRawNames.includes(name)) { + marker = micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_3__.constants.htmlRaw + // // Do not form containers. + // tokenizer.concrete = true + return self.interrupt ? ok(code) : continuation(code) + } + + if (micromark_util_html_tag_name__WEBPACK_IMPORTED_MODULE_5__.htmlBlockNames.includes(buffer.toLowerCase())) { + marker = micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_3__.constants.htmlBasic + + if (slash) { + effects.consume(code) + return basicSelfClosing + } + + // // Do not form containers. + // tokenizer.concrete = true + return self.interrupt ? ok(code) : continuation(code) + } + + marker = micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_3__.constants.htmlComplete + // Do not support complete HTML when interrupting. + return self.interrupt && !self.parser.lazy[self.now().line] + ? nok(code) + : closingTag + ? completeClosingTagAfter(code) + : completeAttributeNameBefore(code) + } + + // ASCII alphanumerical and `-`. + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.dash || (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_4__.asciiAlphanumeric)(code)) { + effects.consume(code) + buffer += String.fromCharCode(code) + return tagName + } + + return nok(code) + } + + /** + * After closing slash of a basic tag name. + * + * ```markdown + * > |
    + * ^ + * ``` + * + * @type {State} + */ + function basicSelfClosing(code) { + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.greaterThan) { + effects.consume(code) + // // Do not form containers. + // tokenizer.concrete = true + return self.interrupt ? ok : continuation + } + + return nok(code) + } + + /** + * After closing slash of a complete tag name. + * + * ```markdown + * > | + * ^ + * ``` + * + * @type {State} + */ + function completeClosingTagAfter(code) { + if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_4__.markdownSpace)(code)) { + effects.consume(code) + return completeClosingTagAfter + } + + return completeEnd(code) + } + + /** + * At an attribute name. + * + * At first, this state is used after a complete tag name, after whitespace, + * where it expects optional attributes or the end of the tag. + * It is also reused after attributes, when expecting more optional + * attributes. + * + * ```markdown + * > | + * ^ + * > | + * ^ + * > | + * ^ + * > | + * ^ + * > | + * ^ + * ``` + * + * @type {State} + */ + function completeAttributeNameBefore(code) { + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.slash) { + effects.consume(code) + return completeEnd + } + + // ASCII alphanumerical and `:` and `_`. + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.colon || code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.underscore || (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_4__.asciiAlpha)(code)) { + effects.consume(code) + return completeAttributeName + } + + if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_4__.markdownSpace)(code)) { + effects.consume(code) + return completeAttributeNameBefore + } + + return completeEnd(code) + } + + /** + * In attribute name. + * + * ```markdown + * > | + * ^ + * > | + * ^ + * > | + * ^ + * ``` + * + * @type {State} + */ + function completeAttributeName(code) { + // ASCII alphanumerical and `-`, `.`, `:`, and `_`. + if ( + code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.dash || + code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.dot || + code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.colon || + code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.underscore || + (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_4__.asciiAlphanumeric)(code) + ) { + effects.consume(code) + return completeAttributeName + } + + return completeAttributeNameAfter(code) + } + + /** + * After attribute name, at an optional initializer, the end of the tag, or + * whitespace. + * + * ```markdown + * > | + * ^ + * > | + * ^ + * ``` + * + * @type {State} + */ + function completeAttributeNameAfter(code) { + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.equalsTo) { + effects.consume(code) + return completeAttributeValueBefore + } + + if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_4__.markdownSpace)(code)) { + effects.consume(code) + return completeAttributeNameAfter + } + + return completeAttributeNameBefore(code) + } + + /** + * Before unquoted, double quoted, or single quoted attribute value, allowing + * whitespace. + * + * ```markdown + * > | + * ^ + * > | + * ^ + * ``` + * + * @type {State} + */ + function completeAttributeValueBefore(code) { + if ( + code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.eof || + code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.lessThan || + code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.equalsTo || + code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.greaterThan || + code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.graveAccent + ) { + return nok(code) + } + + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.quotationMark || code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.apostrophe) { + effects.consume(code) + markerB = code + return completeAttributeValueQuoted + } + + if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_4__.markdownSpace)(code)) { + effects.consume(code) + return completeAttributeValueBefore + } + + return completeAttributeValueUnquoted(code) + } + + /** + * In double or single quoted attribute value. + * + * ```markdown + * > | + * ^ + * > | + * ^ + * ``` + * + * @type {State} + */ + function completeAttributeValueQuoted(code) { + if (code === markerB) { + effects.consume(code) + markerB = null + return completeAttributeValueQuotedAfter + } + + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.eof || (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_4__.markdownLineEnding)(code)) { + return nok(code) + } + + effects.consume(code) + return completeAttributeValueQuoted + } + + /** + * In unquoted attribute value. + * + * ```markdown + * > | + * ^ + * ``` + * + * @type {State} + */ + function completeAttributeValueUnquoted(code) { + if ( + code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.eof || + code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.quotationMark || + code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.apostrophe || + code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.slash || + code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.lessThan || + code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.equalsTo || + code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.greaterThan || + code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.graveAccent || + (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_4__.markdownLineEndingOrSpace)(code) + ) { + return completeAttributeNameAfter(code) + } + + effects.consume(code) + return completeAttributeValueUnquoted + } + + /** + * After double or single quoted attribute value, before whitespace or the + * end of the tag. + * + * ```markdown + * > | + * ^ + * ``` + * + * @type {State} + */ + function completeAttributeValueQuotedAfter(code) { + if ( + code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.slash || + code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.greaterThan || + (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_4__.markdownSpace)(code) + ) { + return completeAttributeNameBefore(code) + } + + return nok(code) + } + + /** + * In certain circumstances of a complete tag where only an `>` is allowed. + * + * ```markdown + * > | + * ^ + * ``` + * + * @type {State} + */ + function completeEnd(code) { + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.greaterThan) { + effects.consume(code) + return completeAfter + } + + return nok(code) + } + + /** + * After `>` in a complete tag. + * + * ```markdown + * > | + * ^ + * ``` + * + * @type {State} + */ + function completeAfter(code) { + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.eof || (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_4__.markdownLineEnding)(code)) { + // // Do not form containers. + // tokenizer.concrete = true + return continuation(code) + } + + if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_4__.markdownSpace)(code)) { + effects.consume(code) + return completeAfter + } + + return nok(code) + } + + /** + * In continuation of any HTML kind. + * + * ```markdown + * > | + * ^ + * ``` + * + * @type {State} + */ + function continuation(code) { + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.dash && marker === micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_3__.constants.htmlComment) { + effects.consume(code) + return continuationCommentInside + } + + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.lessThan && marker === micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_3__.constants.htmlRaw) { + effects.consume(code) + return continuationRawTagOpen + } + + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.greaterThan && marker === micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_3__.constants.htmlDeclaration) { + effects.consume(code) + return continuationClose + } + + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.questionMark && marker === micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_3__.constants.htmlInstruction) { + effects.consume(code) + return continuationDeclarationInside + } + + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.rightSquareBracket && marker === micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_3__.constants.htmlCdata) { + effects.consume(code) + return continuationCdataInside + } + + if ( + (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_4__.markdownLineEnding)(code) && + (marker === micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_3__.constants.htmlBasic || marker === micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_3__.constants.htmlComplete) + ) { + effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.htmlFlowData) + return effects.check( + blankLineBefore, + continuationAfter, + continuationStart + )(code) + } + + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.eof || (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_4__.markdownLineEnding)(code)) { + effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.htmlFlowData) + return continuationStart(code) + } + + effects.consume(code) + return continuation + } + + /** + * In continuation, at eol. + * + * ```markdown + * > | + * ^ + * | asd + * ``` + * + * @type {State} + */ + function continuationStart(code) { + return effects.check( + nonLazyContinuationStart, + continuationStartNonLazy, + continuationAfter + )(code) + } + + /** + * In continuation, at eol, before non-lazy content. + * + * ```markdown + * > | + * ^ + * | asd + * ``` + * + * @type {State} + */ + function continuationStartNonLazy(code) { + (0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_4__.markdownLineEnding)(code)) + effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.lineEnding) + effects.consume(code) + effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.lineEnding) + return continuationBefore + } + + /** + * In continuation, before non-lazy content. + * + * ```markdown + * | + * > | asd + * ^ + * ``` + * + * @type {State} + */ + function continuationBefore(code) { + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.eof || (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_4__.markdownLineEnding)(code)) { + return continuationStart(code) + } + + effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.htmlFlowData) + return continuation(code) + } + + /** + * In comment continuation, after one `-`, expecting another. + * + * ```markdown + * > | + * ^ + * ``` + * + * @type {State} + */ + function continuationCommentInside(code) { + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.dash) { + effects.consume(code) + return continuationDeclarationInside + } + + return continuation(code) + } + + /** + * In raw continuation, after `<`, at `/`. + * + * ```markdown + * > | + * ^ + * ``` + * + * @type {State} + */ + function continuationRawTagOpen(code) { + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.slash) { + effects.consume(code) + buffer = '' + return continuationRawEndTag + } + + return continuation(code) + } + + /** + * In raw continuation, after ` | + * ^^^^^^ + * ``` + * + * @type {State} + */ + function continuationRawEndTag(code) { + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.greaterThan) { + const name = buffer.toLowerCase() + + if (micromark_util_html_tag_name__WEBPACK_IMPORTED_MODULE_5__.htmlRawNames.includes(name)) { + effects.consume(code) + return continuationClose + } + + return continuation(code) + } + + if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_4__.asciiAlpha)(code) && buffer.length < micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_3__.constants.htmlRawSizeMax) { + effects.consume(code) + // @ts-expect-error: not null. + buffer += String.fromCharCode(code) + return continuationRawEndTag + } + + return continuation(code) + } + + /** + * In cdata continuation, after `]`, expecting `]>`. + * + * ```markdown + * > | &<]]> + * ^ + * ``` + * + * @type {State} + */ + function continuationCdataInside(code) { + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.rightSquareBracket) { + effects.consume(code) + return continuationDeclarationInside + } + + return continuation(code) + } + + /** + * In declaration or instruction continuation, at `>`. + * + * ```markdown + * > | + * ^ + * > | + * ^ + * > | + * ^ + * > | + * ^ + * > | &<]]> + * ^ + * ``` + * + * @type {State} + */ + function continuationDeclarationInside(code) { + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.greaterThan) { + effects.consume(code) + return continuationClose + } + + // More dashes. + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.dash && marker === micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_3__.constants.htmlComment) { + effects.consume(code) + return continuationDeclarationInside + } + + return continuation(code) + } + + /** + * In closed continuation: everything we get until the eol/eof is part of it. + * + * ```markdown + * > | + * ^ + * ``` + * + * @type {State} + */ + function continuationClose(code) { + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.eof || (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_4__.markdownLineEnding)(code)) { + effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.htmlFlowData) + return continuationAfter(code) + } + + effects.consume(code) + return continuationClose + } + + /** + * Done. + * + * ```markdown + * > | + * ^ + * ``` + * + * @type {State} + */ + function continuationAfter(code) { + effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.htmlFlow) + // // Feel free to interrupt. + // tokenizer.interrupt = false + // // No longer concrete. + // tokenizer.concrete = false + return ok(code) + } +} + +/** + * @this {TokenizeContext} + * @type {Tokenizer} + */ +function tokenizeNonLazyContinuationStart(effects, ok, nok) { + const self = this + + return start + + /** + * At eol, before continuation. + * + * ```markdown + * > | * ```js + * ^ + * | b + * ``` + * + * @type {State} + */ + function start(code) { + if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_4__.markdownLineEnding)(code)) { + effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.lineEnding) + effects.consume(code) + effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.lineEnding) + return after + } + + return nok(code) + } + + /** + * A continuation. + * + * ```markdown + * | * ```js + * > | b + * ^ + * ``` + * + * @type {State} + */ + function after(code) { + return self.parser.lazy[self.now().line] ? nok(code) : ok(code) + } +} + +/** + * @this {TokenizeContext} + * @type {Tokenizer} + */ +function tokenizeBlankLineBefore(effects, ok, nok) { + return start + + /** + * Before eol, expecting blank line. + * + * ```markdown + * > |
    + * ^ + * | + * ``` + * + * @type {State} + */ + function start(code) { + ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_4__.markdownLineEnding)(code), 'expected a line ending') + effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.lineEnding) + effects.consume(code) + effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.lineEnding) + return effects.attempt(_blank_line_js__WEBPACK_IMPORTED_MODULE_6__.blankLine, ok, nok) + } +} + + +/***/ }), + +/***/ "../node_modules/micromark-core-commonmark/dev/lib/html-text.js": +/*!**********************************************************************!*\ + !*** ../node_modules/micromark-core-commonmark/dev/lib/html-text.js ***! + \**********************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ htmlText: () => (/* binding */ htmlText) +/* harmony export */ }); +/* harmony import */ var micromark_factory_space__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! micromark-factory-space */ "../node_modules/micromark-factory-space/dev/index.js"); +/* harmony import */ var micromark_util_character__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! micromark-util-character */ "../node_modules/micromark-util-character/dev/index.js"); +/* harmony import */ var micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! micromark-util-symbol/codes.js */ "../node_modules/micromark-util-symbol/codes.js"); +/* harmony import */ var micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! micromark-util-symbol/constants.js */ "../node_modules/micromark-util-symbol/constants.js"); +/* harmony import */ var micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! micromark-util-symbol/types.js */ "../node_modules/micromark-util-symbol/types.js"); +/* harmony import */ var uvu_assert__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! uvu/assert */ "../node_modules/uvu/assert/index.mjs"); +/** + * @typedef {import('micromark-util-types').Code} Code + * @typedef {import('micromark-util-types').Construct} Construct + * @typedef {import('micromark-util-types').State} State + * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext + * @typedef {import('micromark-util-types').Tokenizer} Tokenizer + */ + + + + + + + + +/** @type {Construct} */ +const htmlText = {name: 'htmlText', tokenize: tokenizeHtmlText} + +/** + * @this {TokenizeContext} + * @type {Tokenizer} + */ +function tokenizeHtmlText(effects, ok, nok) { + const self = this + /** @type {NonNullable | undefined} */ + let marker + /** @type {number} */ + let index + /** @type {State} */ + let returnState + + return start + + /** + * Start of HTML (text). + * + * ```markdown + * > | a c + * ^ + * ``` + * + * @type {State} + */ + function start(code) { + ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.lessThan, 'expected `<`') + effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.htmlText) + effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.htmlTextData) + effects.consume(code) + return open + } + + /** + * After `<`, at tag name or other stuff. + * + * ```markdown + * > | a c + * ^ + * > | a c + * ^ + * > | a c + * ^ + * ``` + * + * @type {State} + */ + function open(code) { + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.exclamationMark) { + effects.consume(code) + return declarationOpen + } + + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.slash) { + effects.consume(code) + return tagCloseStart + } + + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.questionMark) { + effects.consume(code) + return instruction + } + + // ASCII alphabetical. + if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.asciiAlpha)(code)) { + effects.consume(code) + return tagOpen + } + + return nok(code) + } + + /** + * After ` | a c + * ^ + * > | a c + * ^ + * > | a &<]]> c + * ^ + * ``` + * + * @type {State} + */ + function declarationOpen(code) { + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.dash) { + effects.consume(code) + return commentOpenInside + } + + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.leftSquareBracket) { + effects.consume(code) + index = 0 + return cdataOpenInside + } + + if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.asciiAlpha)(code)) { + effects.consume(code) + return declaration + } + + return nok(code) + } + + /** + * In a comment, after ` | a c + * ^ + * ``` + * + * @type {State} + */ + function commentOpenInside(code) { + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.dash) { + effects.consume(code) + return commentEnd + } + + return nok(code) + } + + /** + * In comment. + * + * ```markdown + * > | a c + * ^ + * ``` + * + * @type {State} + */ + function comment(code) { + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.eof) { + return nok(code) + } + + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.dash) { + effects.consume(code) + return commentClose + } + + if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.markdownLineEnding)(code)) { + returnState = comment + return lineEndingBefore(code) + } + + effects.consume(code) + return comment + } + + /** + * In comment, after `-`. + * + * ```markdown + * > | a c + * ^ + * ``` + * + * @type {State} + */ + function commentClose(code) { + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.dash) { + effects.consume(code) + return commentEnd + } + + return comment(code) + } + + /** + * In comment, after `--`. + * + * ```markdown + * > | a c + * ^ + * ``` + * + * @type {State} + */ + function commentEnd(code) { + return code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.greaterThan + ? end(code) + : code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.dash + ? commentClose(code) + : comment(code) + } + + /** + * After ` | a &<]]> b + * ^^^^^^ + * ``` + * + * @type {State} + */ + function cdataOpenInside(code) { + const value = micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_4__.constants.cdataOpeningString + + if (code === value.charCodeAt(index++)) { + effects.consume(code) + return index === value.length ? cdata : cdataOpenInside + } + + return nok(code) + } + + /** + * In CDATA. + * + * ```markdown + * > | a &<]]> b + * ^^^ + * ``` + * + * @type {State} + */ + function cdata(code) { + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.eof) { + return nok(code) + } + + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.rightSquareBracket) { + effects.consume(code) + return cdataClose + } + + if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.markdownLineEnding)(code)) { + returnState = cdata + return lineEndingBefore(code) + } + + effects.consume(code) + return cdata + } + + /** + * In CDATA, after `]`, at another `]`. + * + * ```markdown + * > | a &<]]> b + * ^ + * ``` + * + * @type {State} + */ + function cdataClose(code) { + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.rightSquareBracket) { + effects.consume(code) + return cdataEnd + } + + return cdata(code) + } + + /** + * In CDATA, after `]]`, at `>`. + * + * ```markdown + * > | a &<]]> b + * ^ + * ``` + * + * @type {State} + */ + function cdataEnd(code) { + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.greaterThan) { + return end(code) + } + + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.rightSquareBracket) { + effects.consume(code) + return cdataEnd + } + + return cdata(code) + } + + /** + * In declaration. + * + * ```markdown + * > | a c + * ^ + * ``` + * + * @type {State} + */ + function declaration(code) { + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.eof || code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.greaterThan) { + return end(code) + } + + if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.markdownLineEnding)(code)) { + returnState = declaration + return lineEndingBefore(code) + } + + effects.consume(code) + return declaration + } + + /** + * In instruction. + * + * ```markdown + * > | a c + * ^ + * ``` + * + * @type {State} + */ + function instruction(code) { + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.eof) { + return nok(code) + } + + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.questionMark) { + effects.consume(code) + return instructionClose + } + + if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.markdownLineEnding)(code)) { + returnState = instruction + return lineEndingBefore(code) + } + + effects.consume(code) + return instruction + } + + /** + * In instruction, after `?`, at `>`. + * + * ```markdown + * > | a c + * ^ + * ``` + * + * @type {State} + */ + function instructionClose(code) { + return code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.greaterThan ? end(code) : instruction(code) + } + + /** + * After ` | a c + * ^ + * ``` + * + * @type {State} + */ + function tagCloseStart(code) { + // ASCII alphabetical. + if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.asciiAlpha)(code)) { + effects.consume(code) + return tagClose + } + + return nok(code) + } + + /** + * After ` | a c + * ^ + * ``` + * + * @type {State} + */ + function tagClose(code) { + // ASCII alphanumerical and `-`. + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.dash || (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.asciiAlphanumeric)(code)) { + effects.consume(code) + return tagClose + } + + return tagCloseBetween(code) + } + + /** + * In closing tag, after tag name. + * + * ```markdown + * > | a c + * ^ + * ``` + * + * @type {State} + */ + function tagCloseBetween(code) { + if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.markdownLineEnding)(code)) { + returnState = tagCloseBetween + return lineEndingBefore(code) + } + + if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.markdownSpace)(code)) { + effects.consume(code) + return tagCloseBetween + } + + return end(code) + } + + /** + * After ` | a c + * ^ + * ``` + * + * @type {State} + */ + function tagOpen(code) { + // ASCII alphanumerical and `-`. + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.dash || (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.asciiAlphanumeric)(code)) { + effects.consume(code) + return tagOpen + } + + if ( + code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.slash || + code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.greaterThan || + (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.markdownLineEndingOrSpace)(code) + ) { + return tagOpenBetween(code) + } + + return nok(code) + } + + /** + * In opening tag, after tag name. + * + * ```markdown + * > | a c + * ^ + * ``` + * + * @type {State} + */ + function tagOpenBetween(code) { + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.slash) { + effects.consume(code) + return end + } + + // ASCII alphabetical and `:` and `_`. + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.colon || code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.underscore || (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.asciiAlpha)(code)) { + effects.consume(code) + return tagOpenAttributeName + } + + if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.markdownLineEnding)(code)) { + returnState = tagOpenBetween + return lineEndingBefore(code) + } + + if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.markdownSpace)(code)) { + effects.consume(code) + return tagOpenBetween + } + + return end(code) + } + + /** + * In attribute name. + * + * ```markdown + * > | a d + * ^ + * ``` + * + * @type {State} + */ + function tagOpenAttributeName(code) { + // ASCII alphabetical and `-`, `.`, `:`, and `_`. + if ( + code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.dash || + code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.dot || + code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.colon || + code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.underscore || + (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.asciiAlphanumeric)(code) + ) { + effects.consume(code) + return tagOpenAttributeName + } + + return tagOpenAttributeNameAfter(code) + } + + /** + * After attribute name, before initializer, the end of the tag, or + * whitespace. + * + * ```markdown + * > | a d + * ^ + * ``` + * + * @type {State} + */ + function tagOpenAttributeNameAfter(code) { + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.equalsTo) { + effects.consume(code) + return tagOpenAttributeValueBefore + } + + if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.markdownLineEnding)(code)) { + returnState = tagOpenAttributeNameAfter + return lineEndingBefore(code) + } + + if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.markdownSpace)(code)) { + effects.consume(code) + return tagOpenAttributeNameAfter + } + + return tagOpenBetween(code) + } + + /** + * Before unquoted, double quoted, or single quoted attribute value, allowing + * whitespace. + * + * ```markdown + * > | a e + * ^ + * ``` + * + * @type {State} + */ + function tagOpenAttributeValueBefore(code) { + if ( + code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.eof || + code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.lessThan || + code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.equalsTo || + code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.greaterThan || + code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.graveAccent + ) { + return nok(code) + } + + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.quotationMark || code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.apostrophe) { + effects.consume(code) + marker = code + return tagOpenAttributeValueQuoted + } + + if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.markdownLineEnding)(code)) { + returnState = tagOpenAttributeValueBefore + return lineEndingBefore(code) + } + + if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.markdownSpace)(code)) { + effects.consume(code) + return tagOpenAttributeValueBefore + } + + effects.consume(code) + return tagOpenAttributeValueUnquoted + } + + /** + * In double or single quoted attribute value. + * + * ```markdown + * > | a e + * ^ + * ``` + * + * @type {State} + */ + function tagOpenAttributeValueQuoted(code) { + if (code === marker) { + effects.consume(code) + marker = undefined + return tagOpenAttributeValueQuotedAfter + } + + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.eof) { + return nok(code) + } + + if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.markdownLineEnding)(code)) { + returnState = tagOpenAttributeValueQuoted + return lineEndingBefore(code) + } + + effects.consume(code) + return tagOpenAttributeValueQuoted + } + + /** + * In unquoted attribute value. + * + * ```markdown + * > | a e + * ^ + * ``` + * + * @type {State} + */ + function tagOpenAttributeValueUnquoted(code) { + if ( + code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.eof || + code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.quotationMark || + code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.apostrophe || + code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.lessThan || + code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.equalsTo || + code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.graveAccent + ) { + return nok(code) + } + + if ( + code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.slash || + code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.greaterThan || + (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.markdownLineEndingOrSpace)(code) + ) { + return tagOpenBetween(code) + } + + effects.consume(code) + return tagOpenAttributeValueUnquoted + } + + /** + * After double or single quoted attribute value, before whitespace or the end + * of the tag. + * + * ```markdown + * > | a e + * ^ + * ``` + * + * @type {State} + */ + function tagOpenAttributeValueQuotedAfter(code) { + if ( + code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.slash || + code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.greaterThan || + (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.markdownLineEndingOrSpace)(code) + ) { + return tagOpenBetween(code) + } + + return nok(code) + } + + /** + * In certain circumstances of a tag where only an `>` is allowed. + * + * ```markdown + * > | a e + * ^ + * ``` + * + * @type {State} + */ + function end(code) { + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.greaterThan) { + effects.consume(code) + effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.htmlTextData) + effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.htmlText) + return ok + } + + return nok(code) + } + + /** + * At eol. + * + * > 👉 **Note**: we can’t have blank lines in text, so no need to worry about + * > empty tokens. + * + * ```markdown + * > | a + * ``` + * + * @type {State} + */ + function lineEndingBefore(code) { + (0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(returnState, 'expected return state') + ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.markdownLineEnding)(code), 'expected eol') + effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.htmlTextData) + effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.lineEnding) + effects.consume(code) + effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.lineEnding) + return lineEndingAfter + } + + /** + * After eol, at optional whitespace. + * + * > 👉 **Note**: we can’t have blank lines in text, so no need to worry about + * > empty tokens. + * + * ```markdown + * | a + * ^ + * ``` + * + * @type {State} + */ + function lineEndingAfter(code) { + // Always populated by defaults. + (0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)( + self.parser.constructs.disable.null, + 'expected `disable.null` to be populated' + ) + return (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.markdownSpace)(code) + ? (0,micromark_factory_space__WEBPACK_IMPORTED_MODULE_5__.factorySpace)( + effects, + lineEndingAfterPrefix, + micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.linePrefix, + self.parser.constructs.disable.null.includes('codeIndented') + ? undefined + : micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_4__.constants.tabSize + )(code) + : lineEndingAfterPrefix(code) + } + + /** + * After eol, after optional whitespace. + * + * > 👉 **Note**: we can’t have blank lines in text, so no need to worry about + * > empty tokens. + * + * ```markdown + * | a + * ^ + * ``` + * + * @type {State} + */ + function lineEndingAfterPrefix(code) { + effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.htmlTextData) + return returnState(code) + } +} + + +/***/ }), + +/***/ "../node_modules/micromark-core-commonmark/dev/lib/label-end.js": +/*!**********************************************************************!*\ + !*** ../node_modules/micromark-core-commonmark/dev/lib/label-end.js ***! + \**********************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ labelEnd: () => (/* binding */ labelEnd) +/* harmony export */ }); +/* harmony import */ var micromark_factory_destination__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! micromark-factory-destination */ "../node_modules/micromark-factory-destination/dev/index.js"); +/* harmony import */ var micromark_factory_label__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! micromark-factory-label */ "../node_modules/micromark-factory-label/dev/index.js"); +/* harmony import */ var micromark_factory_title__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! micromark-factory-title */ "../node_modules/micromark-factory-title/dev/index.js"); +/* harmony import */ var micromark_factory_whitespace__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! micromark-factory-whitespace */ "../node_modules/micromark-factory-whitespace/dev/index.js"); +/* harmony import */ var micromark_util_character__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! micromark-util-character */ "../node_modules/micromark-util-character/dev/index.js"); +/* harmony import */ var micromark_util_chunked__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! micromark-util-chunked */ "../node_modules/micromark-util-chunked/dev/index.js"); +/* harmony import */ var micromark_util_normalize_identifier__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! micromark-util-normalize-identifier */ "../node_modules/micromark-util-normalize-identifier/dev/index.js"); +/* harmony import */ var micromark_util_resolve_all__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! micromark-util-resolve-all */ "../node_modules/micromark-util-resolve-all/index.js"); +/* harmony import */ var micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! micromark-util-symbol/codes.js */ "../node_modules/micromark-util-symbol/codes.js"); +/* harmony import */ var micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! micromark-util-symbol/constants.js */ "../node_modules/micromark-util-symbol/constants.js"); +/* harmony import */ var micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! micromark-util-symbol/types.js */ "../node_modules/micromark-util-symbol/types.js"); +/* harmony import */ var uvu_assert__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! uvu/assert */ "../node_modules/uvu/assert/index.mjs"); +/** + * @typedef {import('micromark-util-types').Construct} Construct + * @typedef {import('micromark-util-types').Event} Event + * @typedef {import('micromark-util-types').Resolver} Resolver + * @typedef {import('micromark-util-types').State} State + * @typedef {import('micromark-util-types').Token} Token + * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext + * @typedef {import('micromark-util-types').Tokenizer} Tokenizer + */ + + + + + + + + + + + + + + +/** @type {Construct} */ +const labelEnd = { + name: 'labelEnd', + tokenize: tokenizeLabelEnd, + resolveTo: resolveToLabelEnd, + resolveAll: resolveAllLabelEnd +} + +/** @type {Construct} */ +const resourceConstruct = {tokenize: tokenizeResource} +/** @type {Construct} */ +const referenceFullConstruct = {tokenize: tokenizeReferenceFull} +/** @type {Construct} */ +const referenceCollapsedConstruct = {tokenize: tokenizeReferenceCollapsed} + +/** @type {Resolver} */ +function resolveAllLabelEnd(events) { + let index = -1 + + while (++index < events.length) { + const token = events[index][1] + + if ( + token.type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.labelImage || + token.type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.labelLink || + token.type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.labelEnd + ) { + // Remove the marker. + events.splice(index + 1, token.type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.labelImage ? 4 : 2) + token.type = micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.data + index++ + } + } + + return events +} + +/** @type {Resolver} */ +function resolveToLabelEnd(events, context) { + let index = events.length + let offset = 0 + /** @type {Token} */ + let token + /** @type {number | undefined} */ + let open + /** @type {number | undefined} */ + let close + /** @type {Array} */ + let media + + // Find an opening. + while (index--) { + token = events[index][1] + + if (open) { + // If we see another link, or inactive link label, we’ve been here before. + if ( + token.type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.link || + (token.type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.labelLink && token._inactive) + ) { + break + } + + // Mark other link openings as inactive, as we can’t have links in + // links. + if (events[index][0] === 'enter' && token.type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.labelLink) { + token._inactive = true + } + } else if (close) { + if ( + events[index][0] === 'enter' && + (token.type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.labelImage || token.type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.labelLink) && + !token._balanced + ) { + open = index + + if (token.type !== micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.labelLink) { + offset = 2 + break + } + } + } else if (token.type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.labelEnd) { + close = index + } + } + + (0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(open !== undefined, '`open` is supposed to be found') + ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(close !== undefined, '`close` is supposed to be found') + + const group = { + type: events[open][1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.labelLink ? micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.link : micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.image, + start: Object.assign({}, events[open][1].start), + end: Object.assign({}, events[events.length - 1][1].end) + } + + const label = { + type: micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.label, + start: Object.assign({}, events[open][1].start), + end: Object.assign({}, events[close][1].end) + } + + const text = { + type: micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.labelText, + start: Object.assign({}, events[open + offset + 2][1].end), + end: Object.assign({}, events[close - 2][1].start) + } + + media = [ + ['enter', group, context], + ['enter', label, context] + ] + + // Opening marker. + media = (0,micromark_util_chunked__WEBPACK_IMPORTED_MODULE_2__.push)(media, events.slice(open + 1, open + offset + 3)) + + // Text open. + media = (0,micromark_util_chunked__WEBPACK_IMPORTED_MODULE_2__.push)(media, [['enter', text, context]]) + + // Always populated by defaults. + ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)( + context.parser.constructs.insideSpan.null, + 'expected `insideSpan.null` to be populated' + ) + // Between. + media = (0,micromark_util_chunked__WEBPACK_IMPORTED_MODULE_2__.push)( + media, + (0,micromark_util_resolve_all__WEBPACK_IMPORTED_MODULE_3__.resolveAll)( + context.parser.constructs.insideSpan.null, + events.slice(open + offset + 4, close - 3), + context + ) + ) + + // Text close, marker close, label close. + media = (0,micromark_util_chunked__WEBPACK_IMPORTED_MODULE_2__.push)(media, [ + ['exit', text, context], + events[close - 2], + events[close - 1], + ['exit', label, context] + ]) + + // Reference, resource, or so. + media = (0,micromark_util_chunked__WEBPACK_IMPORTED_MODULE_2__.push)(media, events.slice(close + 1)) + + // Media close. + media = (0,micromark_util_chunked__WEBPACK_IMPORTED_MODULE_2__.push)(media, [['exit', group, context]]) + + ;(0,micromark_util_chunked__WEBPACK_IMPORTED_MODULE_2__.splice)(events, open, events.length, media) + + return events +} + +/** + * @this {TokenizeContext} + * @type {Tokenizer} + */ +function tokenizeLabelEnd(effects, ok, nok) { + const self = this + let index = self.events.length + /** @type {Token} */ + let labelStart + /** @type {boolean} */ + let defined + + // Find an opening. + while (index--) { + if ( + (self.events[index][1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.labelImage || + self.events[index][1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.labelLink) && + !self.events[index][1]._balanced + ) { + labelStart = self.events[index][1] + break + } + } + + return start + + /** + * Start of label end. + * + * ```markdown + * > | [a](b) c + * ^ + * > | [a][b] c + * ^ + * > | [a][] b + * ^ + * > | [a] b + * ``` + * + * @type {State} + */ + function start(code) { + ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_4__.codes.rightSquareBracket, 'expected `]`') + + // If there is not an okay opening. + if (!labelStart) { + return nok(code) + } + + // If the corresponding label (link) start is marked as inactive, + // it means we’d be wrapping a link, like this: + // + // ```markdown + // > | a [b [c](d) e](f) g. + // ^ + // ``` + // + // We can’t have that, so it’s just balanced brackets. + if (labelStart._inactive) { + return labelEndNok(code) + } + + defined = self.parser.defined.includes( + (0,micromark_util_normalize_identifier__WEBPACK_IMPORTED_MODULE_5__.normalizeIdentifier)( + self.sliceSerialize({start: labelStart.end, end: self.now()}) + ) + ) + effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.labelEnd) + effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.labelMarker) + effects.consume(code) + effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.labelMarker) + effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.labelEnd) + return after + } + + /** + * After `]`. + * + * ```markdown + * > | [a](b) c + * ^ + * > | [a][b] c + * ^ + * > | [a][] b + * ^ + * > | [a] b + * ^ + * ``` + * + * @type {State} + */ + function after(code) { + // Note: `markdown-rs` also parses GFM footnotes here, which for us is in + // an extension. + + // Resource (`[asd](fgh)`)? + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_4__.codes.leftParenthesis) { + return effects.attempt( + resourceConstruct, + labelEndOk, + defined ? labelEndOk : labelEndNok + )(code) + } + + // Full (`[asd][fgh]`) or collapsed (`[asd][]`) reference? + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_4__.codes.leftSquareBracket) { + return effects.attempt( + referenceFullConstruct, + labelEndOk, + defined ? referenceNotFull : labelEndNok + )(code) + } + + // Shortcut (`[asd]`) reference? + return defined ? labelEndOk(code) : labelEndNok(code) + } + + /** + * After `]`, at `[`, but not at a full reference. + * + * > 👉 **Note**: we only get here if the label is defined. + * + * ```markdown + * > | [a][] b + * ^ + * > | [a] b + * ^ + * ``` + * + * @type {State} + */ + function referenceNotFull(code) { + return effects.attempt( + referenceCollapsedConstruct, + labelEndOk, + labelEndNok + )(code) + } + + /** + * Done, we found something. + * + * ```markdown + * > | [a](b) c + * ^ + * > | [a][b] c + * ^ + * > | [a][] b + * ^ + * > | [a] b + * ^ + * ``` + * + * @type {State} + */ + function labelEndOk(code) { + // Note: `markdown-rs` does a bunch of stuff here. + return ok(code) + } + + /** + * Done, it’s nothing. + * + * There was an okay opening, but we didn’t match anything. + * + * ```markdown + * > | [a](b c + * ^ + * > | [a][b c + * ^ + * > | [a] b + * ^ + * ``` + * + * @type {State} + */ + function labelEndNok(code) { + labelStart._balanced = true + return nok(code) + } +} + +/** + * @this {TokenizeContext} + * @type {Tokenizer} + */ +function tokenizeResource(effects, ok, nok) { + return resourceStart + + /** + * At a resource. + * + * ```markdown + * > | [a](b) c + * ^ + * ``` + * + * @type {State} + */ + function resourceStart(code) { + ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_4__.codes.leftParenthesis, 'expected left paren') + effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.resource) + effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.resourceMarker) + effects.consume(code) + effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.resourceMarker) + return resourceBefore + } + + /** + * In resource, after `(`, at optional whitespace. + * + * ```markdown + * > | [a](b) c + * ^ + * ``` + * + * @type {State} + */ + function resourceBefore(code) { + return (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_6__.markdownLineEndingOrSpace)(code) + ? (0,micromark_factory_whitespace__WEBPACK_IMPORTED_MODULE_7__.factoryWhitespace)(effects, resourceOpen)(code) + : resourceOpen(code) + } + + /** + * In resource, after optional whitespace, at `)` or a destination. + * + * ```markdown + * > | [a](b) c + * ^ + * ``` + * + * @type {State} + */ + function resourceOpen(code) { + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_4__.codes.rightParenthesis) { + return resourceEnd(code) + } + + return (0,micromark_factory_destination__WEBPACK_IMPORTED_MODULE_8__.factoryDestination)( + effects, + resourceDestinationAfter, + resourceDestinationMissing, + micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.resourceDestination, + micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.resourceDestinationLiteral, + micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.resourceDestinationLiteralMarker, + micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.resourceDestinationRaw, + micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.resourceDestinationString, + micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_9__.constants.linkResourceDestinationBalanceMax + )(code) + } + + /** + * In resource, after destination, at optional whitespace. + * + * ```markdown + * > | [a](b) c + * ^ + * ``` + * + * @type {State} + */ + function resourceDestinationAfter(code) { + return (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_6__.markdownLineEndingOrSpace)(code) + ? (0,micromark_factory_whitespace__WEBPACK_IMPORTED_MODULE_7__.factoryWhitespace)(effects, resourceBetween)(code) + : resourceEnd(code) + } + + /** + * At invalid destination. + * + * ```markdown + * > | [a](<<) b + * ^ + * ``` + * + * @type {State} + */ + function resourceDestinationMissing(code) { + return nok(code) + } + + /** + * In resource, after destination and whitespace, at `(` or title. + * + * ```markdown + * > | [a](b ) c + * ^ + * ``` + * + * @type {State} + */ + function resourceBetween(code) { + if ( + code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_4__.codes.quotationMark || + code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_4__.codes.apostrophe || + code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_4__.codes.leftParenthesis + ) { + return (0,micromark_factory_title__WEBPACK_IMPORTED_MODULE_10__.factoryTitle)( + effects, + resourceTitleAfter, + nok, + micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.resourceTitle, + micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.resourceTitleMarker, + micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.resourceTitleString + )(code) + } + + return resourceEnd(code) + } + + /** + * In resource, after title, at optional whitespace. + * + * ```markdown + * > | [a](b "c") d + * ^ + * ``` + * + * @type {State} + */ + function resourceTitleAfter(code) { + return (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_6__.markdownLineEndingOrSpace)(code) + ? (0,micromark_factory_whitespace__WEBPACK_IMPORTED_MODULE_7__.factoryWhitespace)(effects, resourceEnd)(code) + : resourceEnd(code) + } + + /** + * In resource, at `)`. + * + * ```markdown + * > | [a](b) d + * ^ + * ``` + * + * @type {State} + */ + function resourceEnd(code) { + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_4__.codes.rightParenthesis) { + effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.resourceMarker) + effects.consume(code) + effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.resourceMarker) + effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.resource) + return ok + } + + return nok(code) + } +} + +/** + * @this {TokenizeContext} + * @type {Tokenizer} + */ +function tokenizeReferenceFull(effects, ok, nok) { + const self = this + + return referenceFull + + /** + * In a reference (full), at the `[`. + * + * ```markdown + * > | [a][b] d + * ^ + * ``` + * + * @type {State} + */ + function referenceFull(code) { + ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_4__.codes.leftSquareBracket, 'expected left bracket') + return micromark_factory_label__WEBPACK_IMPORTED_MODULE_11__.factoryLabel.call( + self, + effects, + referenceFullAfter, + referenceFullMissing, + micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.reference, + micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.referenceMarker, + micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.referenceString + )(code) + } + + /** + * In a reference (full), after `]`. + * + * ```markdown + * > | [a][b] d + * ^ + * ``` + * + * @type {State} + */ + function referenceFullAfter(code) { + return self.parser.defined.includes( + (0,micromark_util_normalize_identifier__WEBPACK_IMPORTED_MODULE_5__.normalizeIdentifier)( + self.sliceSerialize(self.events[self.events.length - 1][1]).slice(1, -1) + ) + ) + ? ok(code) + : nok(code) + } + + /** + * In reference (full) that was missing. + * + * ```markdown + * > | [a][b d + * ^ + * ``` + * + * @type {State} + */ + function referenceFullMissing(code) { + return nok(code) + } +} + +/** + * @this {TokenizeContext} + * @type {Tokenizer} + */ +function tokenizeReferenceCollapsed(effects, ok, nok) { + return referenceCollapsedStart + + /** + * In reference (collapsed), at `[`. + * + * > 👉 **Note**: we only get here if the label is defined. + * + * ```markdown + * > | [a][] d + * ^ + * ``` + * + * @type {State} + */ + function referenceCollapsedStart(code) { + // We only attempt a collapsed label if there’s a `[`. + ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_4__.codes.leftSquareBracket, 'expected left bracket') + effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.reference) + effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.referenceMarker) + effects.consume(code) + effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.referenceMarker) + return referenceCollapsedOpen + } + + /** + * In reference (collapsed), at `]`. + * + * > 👉 **Note**: we only get here if the label is defined. + * + * ```markdown + * > | [a][] d + * ^ + * ``` + * + * @type {State} + */ + function referenceCollapsedOpen(code) { + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_4__.codes.rightSquareBracket) { + effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.referenceMarker) + effects.consume(code) + effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.referenceMarker) + effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.reference) + return ok + } + + return nok(code) + } +} + + +/***/ }), + +/***/ "../node_modules/micromark-core-commonmark/dev/lib/label-start-image.js": +/*!******************************************************************************!*\ + !*** ../node_modules/micromark-core-commonmark/dev/lib/label-start-image.js ***! + \******************************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ labelStartImage: () => (/* binding */ labelStartImage) +/* harmony export */ }); +/* harmony import */ var micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! micromark-util-symbol/codes.js */ "../node_modules/micromark-util-symbol/codes.js"); +/* harmony import */ var micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! micromark-util-symbol/types.js */ "../node_modules/micromark-util-symbol/types.js"); +/* harmony import */ var uvu_assert__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! uvu/assert */ "../node_modules/uvu/assert/index.mjs"); +/* harmony import */ var _label_end_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./label-end.js */ "../node_modules/micromark-core-commonmark/dev/lib/label-end.js"); +/** + * @typedef {import('micromark-util-types').Construct} Construct + * @typedef {import('micromark-util-types').State} State + * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext + * @typedef {import('micromark-util-types').Tokenizer} Tokenizer + */ + + + + + + +/** @type {Construct} */ +const labelStartImage = { + name: 'labelStartImage', + tokenize: tokenizeLabelStartImage, + resolveAll: _label_end_js__WEBPACK_IMPORTED_MODULE_1__.labelEnd.resolveAll +} + +/** + * @this {TokenizeContext} + * @type {Tokenizer} + */ +function tokenizeLabelStartImage(effects, ok, nok) { + const self = this + + return start + + /** + * Start of label (image) start. + * + * ```markdown + * > | a ![b] c + * ^ + * ``` + * + * @type {State} + */ + function start(code) { + ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.exclamationMark, 'expected `!`') + effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_3__.types.labelImage) + effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_3__.types.labelImageMarker) + effects.consume(code) + effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_3__.types.labelImageMarker) + return open + } + + /** + * After `!`, at `[`. + * + * ```markdown + * > | a ![b] c + * ^ + * ``` + * + * @type {State} + */ + function open(code) { + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.leftSquareBracket) { + effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_3__.types.labelMarker) + effects.consume(code) + effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_3__.types.labelMarker) + effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_3__.types.labelImage) + return after + } + + return nok(code) + } + + /** + * After `![`. + * + * ```markdown + * > | a ![b] c + * ^ + * ``` + * + * This is needed in because, when GFM footnotes are enabled, images never + * form when started with a `^`. + * Instead, links form: + * + * ```markdown + * ![^a](b) + * + * ![^a][b] + * + * [b]: c + * ``` + * + * ```html + *

    !^a

    + *

    !^a

    + * ``` + * + * @type {State} + */ + function after(code) { + // To do: use a new field to do this, this is still needed for + // `micromark-extension-gfm-footnote`, but the `label-start-link` + // behavior isn’t. + // Hidden footnotes hook. + /* c8 ignore next 3 */ + return code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.caret && + '_hiddenFootnoteSupport' in self.parser.constructs + ? nok(code) + : ok(code) + } +} + + +/***/ }), + +/***/ "../node_modules/micromark-core-commonmark/dev/lib/label-start-link.js": +/*!*****************************************************************************!*\ + !*** ../node_modules/micromark-core-commonmark/dev/lib/label-start-link.js ***! + \*****************************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ labelStartLink: () => (/* binding */ labelStartLink) +/* harmony export */ }); +/* harmony import */ var micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! micromark-util-symbol/codes.js */ "../node_modules/micromark-util-symbol/codes.js"); +/* harmony import */ var micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! micromark-util-symbol/types.js */ "../node_modules/micromark-util-symbol/types.js"); +/* harmony import */ var uvu_assert__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! uvu/assert */ "../node_modules/uvu/assert/index.mjs"); +/* harmony import */ var _label_end_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./label-end.js */ "../node_modules/micromark-core-commonmark/dev/lib/label-end.js"); +/** + * @typedef {import('micromark-util-types').Construct} Construct + * @typedef {import('micromark-util-types').State} State + * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext + * @typedef {import('micromark-util-types').Tokenizer} Tokenizer + */ + + + + + + +/** @type {Construct} */ +const labelStartLink = { + name: 'labelStartLink', + tokenize: tokenizeLabelStartLink, + resolveAll: _label_end_js__WEBPACK_IMPORTED_MODULE_1__.labelEnd.resolveAll +} + +/** + * @this {TokenizeContext} + * @type {Tokenizer} + */ +function tokenizeLabelStartLink(effects, ok, nok) { + const self = this + + return start + + /** + * Start of label (link) start. + * + * ```markdown + * > | a [b] c + * ^ + * ``` + * + * @type {State} + */ + function start(code) { + ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.leftSquareBracket, 'expected `[`') + effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_3__.types.labelLink) + effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_3__.types.labelMarker) + effects.consume(code) + effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_3__.types.labelMarker) + effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_3__.types.labelLink) + return after + } + + /** @type {State} */ + function after(code) { + // To do: this isn’t needed in `micromark-extension-gfm-footnote`, + // remove. + // Hidden footnotes hook. + /* c8 ignore next 3 */ + return code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.caret && + '_hiddenFootnoteSupport' in self.parser.constructs + ? nok(code) + : ok(code) + } +} + + +/***/ }), + +/***/ "../node_modules/micromark-core-commonmark/dev/lib/line-ending.js": +/*!************************************************************************!*\ + !*** ../node_modules/micromark-core-commonmark/dev/lib/line-ending.js ***! + \************************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ lineEnding: () => (/* binding */ lineEnding) +/* harmony export */ }); +/* harmony import */ var micromark_factory_space__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! micromark-factory-space */ "../node_modules/micromark-factory-space/dev/index.js"); +/* harmony import */ var micromark_util_character__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! micromark-util-character */ "../node_modules/micromark-util-character/dev/index.js"); +/* harmony import */ var micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! micromark-util-symbol/types.js */ "../node_modules/micromark-util-symbol/types.js"); +/* harmony import */ var uvu_assert__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! uvu/assert */ "../node_modules/uvu/assert/index.mjs"); +/** + * @typedef {import('micromark-util-types').Construct} Construct + * @typedef {import('micromark-util-types').State} State + * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext + * @typedef {import('micromark-util-types').Tokenizer} Tokenizer + */ + + + + + + +/** @type {Construct} */ +const lineEnding = {name: 'lineEnding', tokenize: tokenizeLineEnding} + +/** + * @this {TokenizeContext} + * @type {Tokenizer} + */ +function tokenizeLineEnding(effects, ok) { + return start + + /** @type {State} */ + function start(code) { + ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_1__.markdownLineEnding)(code), 'expected eol') + effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.lineEnding) + effects.consume(code) + effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.lineEnding) + return (0,micromark_factory_space__WEBPACK_IMPORTED_MODULE_3__.factorySpace)(effects, ok, micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.linePrefix) + } +} + + +/***/ }), + +/***/ "../node_modules/micromark-core-commonmark/dev/lib/list.js": +/*!*****************************************************************!*\ + !*** ../node_modules/micromark-core-commonmark/dev/lib/list.js ***! + \*****************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ list: () => (/* binding */ list) +/* harmony export */ }); +/* harmony import */ var micromark_factory_space__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! micromark-factory-space */ "../node_modules/micromark-factory-space/dev/index.js"); +/* harmony import */ var micromark_util_character__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! micromark-util-character */ "../node_modules/micromark-util-character/dev/index.js"); +/* harmony import */ var micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! micromark-util-symbol/codes.js */ "../node_modules/micromark-util-symbol/codes.js"); +/* harmony import */ var micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! micromark-util-symbol/constants.js */ "../node_modules/micromark-util-symbol/constants.js"); +/* harmony import */ var micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! micromark-util-symbol/types.js */ "../node_modules/micromark-util-symbol/types.js"); +/* harmony import */ var uvu_assert__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! uvu/assert */ "../node_modules/uvu/assert/index.mjs"); +/* harmony import */ var _blank_line_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./blank-line.js */ "../node_modules/micromark-core-commonmark/dev/lib/blank-line.js"); +/* harmony import */ var _thematic_break_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./thematic-break.js */ "../node_modules/micromark-core-commonmark/dev/lib/thematic-break.js"); +/** + * @typedef {import('micromark-util-types').Code} Code + * @typedef {import('micromark-util-types').Construct} Construct + * @typedef {import('micromark-util-types').ContainerState} ContainerState + * @typedef {import('micromark-util-types').Exiter} Exiter + * @typedef {import('micromark-util-types').State} State + * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext + * @typedef {import('micromark-util-types').Tokenizer} Tokenizer + */ + + + + + + + + + + +/** @type {Construct} */ +const list = { + name: 'list', + tokenize: tokenizeListStart, + continuation: {tokenize: tokenizeListContinuation}, + exit: tokenizeListEnd +} + +/** @type {Construct} */ +const listItemPrefixWhitespaceConstruct = { + tokenize: tokenizeListItemPrefixWhitespace, + partial: true +} + +/** @type {Construct} */ +const indentConstruct = {tokenize: tokenizeIndent, partial: true} + +// To do: `markdown-rs` parses list items on their own and later stitches them +// together. + +/** + * @type {Tokenizer} + * @this {TokenizeContext} + */ +function tokenizeListStart(effects, ok, nok) { + const self = this + const tail = self.events[self.events.length - 1] + let initialSize = + tail && tail[1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.linePrefix + ? tail[2].sliceSerialize(tail[1], true).length + : 0 + let size = 0 + + return start + + /** @type {State} */ + function start(code) { + ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(self.containerState, 'expected state') + const kind = + self.containerState.type || + (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.asterisk || code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.plusSign || code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.dash + ? micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.listUnordered + : micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.listOrdered) + + if ( + kind === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.listUnordered + ? !self.containerState.marker || code === self.containerState.marker + : (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.asciiDigit)(code) + ) { + if (!self.containerState.type) { + self.containerState.type = kind + effects.enter(kind, {_container: true}) + } + + if (kind === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.listUnordered) { + effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.listItemPrefix) + return code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.asterisk || code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.dash + ? effects.check(_thematic_break_js__WEBPACK_IMPORTED_MODULE_4__.thematicBreak, nok, atMarker)(code) + : atMarker(code) + } + + if (!self.interrupt || code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.digit1) { + effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.listItemPrefix) + effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.listItemValue) + return inside(code) + } + } + + return nok(code) + } + + /** @type {State} */ + function inside(code) { + (0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(self.containerState, 'expected state') + if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.asciiDigit)(code) && ++size < micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_5__.constants.listItemValueSizeMax) { + effects.consume(code) + return inside + } + + if ( + (!self.interrupt || size < 2) && + (self.containerState.marker + ? code === self.containerState.marker + : code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.rightParenthesis || code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.dot) + ) { + effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.listItemValue) + return atMarker(code) + } + + return nok(code) + } + + /** + * @type {State} + **/ + function atMarker(code) { + (0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(self.containerState, 'expected state') + ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(code !== micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.eof, 'eof (`null`) is not a marker') + effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.listItemMarker) + effects.consume(code) + effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.listItemMarker) + self.containerState.marker = self.containerState.marker || code + return effects.check( + _blank_line_js__WEBPACK_IMPORTED_MODULE_6__.blankLine, + // Can’t be empty when interrupting. + self.interrupt ? nok : onBlank, + effects.attempt( + listItemPrefixWhitespaceConstruct, + endOfPrefix, + otherPrefix + ) + ) + } + + /** @type {State} */ + function onBlank(code) { + (0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(self.containerState, 'expected state') + self.containerState.initialBlankLine = true + initialSize++ + return endOfPrefix(code) + } + + /** @type {State} */ + function otherPrefix(code) { + if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.markdownSpace)(code)) { + effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.listItemPrefixWhitespace) + effects.consume(code) + effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.listItemPrefixWhitespace) + return endOfPrefix + } + + return nok(code) + } + + /** @type {State} */ + function endOfPrefix(code) { + (0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(self.containerState, 'expected state') + self.containerState.size = + initialSize + + self.sliceSerialize(effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.listItemPrefix), true).length + return ok(code) + } +} + +/** + * @type {Tokenizer} + * @this {TokenizeContext} + */ +function tokenizeListContinuation(effects, ok, nok) { + const self = this + + ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(self.containerState, 'expected state') + self.containerState._closeFlow = undefined + + return effects.check(_blank_line_js__WEBPACK_IMPORTED_MODULE_6__.blankLine, onBlank, notBlank) + + /** @type {State} */ + function onBlank(code) { + ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(self.containerState, 'expected state') + ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(typeof self.containerState.size === 'number', 'expected size') + self.containerState.furtherBlankLines = + self.containerState.furtherBlankLines || + self.containerState.initialBlankLine + + // We have a blank line. + // Still, try to consume at most the items size. + return (0,micromark_factory_space__WEBPACK_IMPORTED_MODULE_7__.factorySpace)( + effects, + ok, + micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.listItemIndent, + self.containerState.size + 1 + )(code) + } + + /** @type {State} */ + function notBlank(code) { + (0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(self.containerState, 'expected state') + if (self.containerState.furtherBlankLines || !(0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.markdownSpace)(code)) { + self.containerState.furtherBlankLines = undefined + self.containerState.initialBlankLine = undefined + return notInCurrentItem(code) + } + + self.containerState.furtherBlankLines = undefined + self.containerState.initialBlankLine = undefined + return effects.attempt(indentConstruct, ok, notInCurrentItem)(code) + } + + /** @type {State} */ + function notInCurrentItem(code) { + (0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(self.containerState, 'expected state') + // While we do continue, we signal that the flow should be closed. + self.containerState._closeFlow = true + // As we’re closing flow, we’re no longer interrupting. + self.interrupt = undefined + // Always populated by defaults. + ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)( + self.parser.constructs.disable.null, + 'expected `disable.null` to be populated' + ) + return (0,micromark_factory_space__WEBPACK_IMPORTED_MODULE_7__.factorySpace)( + effects, + effects.attempt(list, ok, nok), + micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.linePrefix, + self.parser.constructs.disable.null.includes('codeIndented') + ? undefined + : micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_5__.constants.tabSize + )(code) + } +} + +/** + * @type {Tokenizer} + * @this {TokenizeContext} + */ +function tokenizeIndent(effects, ok, nok) { + const self = this + + ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(self.containerState, 'expected state') + ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(typeof self.containerState.size === 'number', 'expected size') + + return (0,micromark_factory_space__WEBPACK_IMPORTED_MODULE_7__.factorySpace)( + effects, + afterPrefix, + micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.listItemIndent, + self.containerState.size + 1 + ) + + /** @type {State} */ + function afterPrefix(code) { + ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(self.containerState, 'expected state') + const tail = self.events[self.events.length - 1] + return tail && + tail[1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.listItemIndent && + tail[2].sliceSerialize(tail[1], true).length === self.containerState.size + ? ok(code) + : nok(code) + } +} + +/** + * @type {Exiter} + * @this {TokenizeContext} + */ +function tokenizeListEnd(effects) { + (0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(this.containerState, 'expected state') + ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(typeof this.containerState.type === 'string', 'expected type') + effects.exit(this.containerState.type) +} + +/** + * @type {Tokenizer} + * @this {TokenizeContext} + */ +function tokenizeListItemPrefixWhitespace(effects, ok, nok) { + const self = this + + // Always populated by defaults. + ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)( + self.parser.constructs.disable.null, + 'expected `disable.null` to be populated' + ) + + return (0,micromark_factory_space__WEBPACK_IMPORTED_MODULE_7__.factorySpace)( + effects, + afterPrefix, + micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.listItemPrefixWhitespace, + self.parser.constructs.disable.null.includes('codeIndented') + ? undefined + : micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_5__.constants.tabSize + 1 + ) + + /** @type {State} */ + function afterPrefix(code) { + const tail = self.events[self.events.length - 1] + + return !(0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.markdownSpace)(code) && + tail && + tail[1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.listItemPrefixWhitespace + ? ok(code) + : nok(code) + } +} + + +/***/ }), + +/***/ "../node_modules/micromark-core-commonmark/dev/lib/setext-underline.js": +/*!*****************************************************************************!*\ + !*** ../node_modules/micromark-core-commonmark/dev/lib/setext-underline.js ***! + \*****************************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ setextUnderline: () => (/* binding */ setextUnderline) +/* harmony export */ }); +/* harmony import */ var micromark_factory_space__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! micromark-factory-space */ "../node_modules/micromark-factory-space/dev/index.js"); +/* harmony import */ var micromark_util_character__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! micromark-util-character */ "../node_modules/micromark-util-character/dev/index.js"); +/* harmony import */ var micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! micromark-util-symbol/codes.js */ "../node_modules/micromark-util-symbol/codes.js"); +/* harmony import */ var micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! micromark-util-symbol/types.js */ "../node_modules/micromark-util-symbol/types.js"); +/* harmony import */ var uvu_assert__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! uvu/assert */ "../node_modules/uvu/assert/index.mjs"); +/** + * @typedef {import('micromark-util-types').Code} Code + * @typedef {import('micromark-util-types').Construct} Construct + * @typedef {import('micromark-util-types').Resolver} Resolver + * @typedef {import('micromark-util-types').State} State + * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext + * @typedef {import('micromark-util-types').Tokenizer} Tokenizer + */ + + + + + + + +/** @type {Construct} */ +const setextUnderline = { + name: 'setextUnderline', + tokenize: tokenizeSetextUnderline, + resolveTo: resolveToSetextUnderline +} + +/** @type {Resolver} */ +function resolveToSetextUnderline(events, context) { + // To do: resolve like `markdown-rs`. + let index = events.length + /** @type {number | undefined} */ + let content + /** @type {number | undefined} */ + let text + /** @type {number | undefined} */ + let definition + + // Find the opening of the content. + // It’ll always exist: we don’t tokenize if it isn’t there. + while (index--) { + if (events[index][0] === 'enter') { + if (events[index][1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.content) { + content = index + break + } + + if (events[index][1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.paragraph) { + text = index + } + } + // Exit + else { + if (events[index][1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.content) { + // Remove the content end (if needed we’ll add it later) + events.splice(index, 1) + } + + if (!definition && events[index][1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.definition) { + definition = index + } + } + } + + (0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(text !== undefined, 'expected a `text` index to be found') + ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(content !== undefined, 'expected a `text` index to be found') + + const heading = { + type: micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.setextHeading, + start: Object.assign({}, events[text][1].start), + end: Object.assign({}, events[events.length - 1][1].end) + } + + // Change the paragraph to setext heading text. + events[text][1].type = micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.setextHeadingText + + // If we have definitions in the content, we’ll keep on having content, + // but we need move it. + if (definition) { + events.splice(text, 0, ['enter', heading, context]) + events.splice(definition + 1, 0, ['exit', events[content][1], context]) + events[content][1].end = Object.assign({}, events[definition][1].end) + } else { + events[content][1] = heading + } + + // Add the heading exit at the end. + events.push(['exit', heading, context]) + + return events +} + +/** + * @this {TokenizeContext} + * @type {Tokenizer} + */ +function tokenizeSetextUnderline(effects, ok, nok) { + const self = this + /** @type {NonNullable} */ + let marker + + return start + + /** + * At start of heading (setext) underline. + * + * ```markdown + * | aa + * > | == + * ^ + * ``` + * + * @type {State} + */ + function start(code) { + let index = self.events.length + /** @type {boolean | undefined} */ + let paragraph + + ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)( + code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.dash || code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.equalsTo, + 'expected `=` or `-`' + ) + + // Find an opening. + while (index--) { + // Skip enter/exit of line ending, line prefix, and content. + // We can now either have a definition or a paragraph. + if ( + self.events[index][1].type !== micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.lineEnding && + self.events[index][1].type !== micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.linePrefix && + self.events[index][1].type !== micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.content + ) { + paragraph = self.events[index][1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.paragraph + break + } + } + + // To do: handle lazy/pierce like `markdown-rs`. + // To do: parse indent like `markdown-rs`. + if (!self.parser.lazy[self.now().line] && (self.interrupt || paragraph)) { + effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.setextHeadingLine) + marker = code + return before(code) + } + + return nok(code) + } + + /** + * After optional whitespace, at `-` or `=`. + * + * ```markdown + * | aa + * > | == + * ^ + * ``` + * + * @type {State} + */ + function before(code) { + effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.setextHeadingLineSequence) + return inside(code) + } + + /** + * In sequence. + * + * ```markdown + * | aa + * > | == + * ^ + * ``` + * + * @type {State} + */ + function inside(code) { + if (code === marker) { + effects.consume(code) + return inside + } + + effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.setextHeadingLineSequence) + + return (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.markdownSpace)(code) + ? (0,micromark_factory_space__WEBPACK_IMPORTED_MODULE_4__.factorySpace)(effects, after, micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.lineSuffix)(code) + : after(code) + } + + /** + * After sequence, after optional whitespace. + * + * ```markdown + * | aa + * > | == + * ^ + * ``` + * + * @type {State} + */ + function after(code) { + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.eof || (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.markdownLineEnding)(code)) { + effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.setextHeadingLine) + return ok(code) + } + + return nok(code) + } +} + + +/***/ }), + +/***/ "../node_modules/micromark-core-commonmark/dev/lib/thematic-break.js": +/*!***************************************************************************!*\ + !*** ../node_modules/micromark-core-commonmark/dev/lib/thematic-break.js ***! + \***************************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ thematicBreak: () => (/* binding */ thematicBreak) +/* harmony export */ }); +/* harmony import */ var micromark_factory_space__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! micromark-factory-space */ "../node_modules/micromark-factory-space/dev/index.js"); +/* harmony import */ var micromark_util_character__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! micromark-util-character */ "../node_modules/micromark-util-character/dev/index.js"); +/* harmony import */ var micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! micromark-util-symbol/codes.js */ "../node_modules/micromark-util-symbol/codes.js"); +/* harmony import */ var micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! micromark-util-symbol/constants.js */ "../node_modules/micromark-util-symbol/constants.js"); +/* harmony import */ var micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! micromark-util-symbol/types.js */ "../node_modules/micromark-util-symbol/types.js"); +/* harmony import */ var uvu_assert__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! uvu/assert */ "../node_modules/uvu/assert/index.mjs"); +/** + * @typedef {import('micromark-util-types').Code} Code + * @typedef {import('micromark-util-types').Construct} Construct + * @typedef {import('micromark-util-types').State} State + * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext + * @typedef {import('micromark-util-types').Tokenizer} Tokenizer + */ + + + + + + + + +/** @type {Construct} */ +const thematicBreak = { + name: 'thematicBreak', + tokenize: tokenizeThematicBreak +} + +/** + * @this {TokenizeContext} + * @type {Tokenizer} + */ +function tokenizeThematicBreak(effects, ok, nok) { + let size = 0 + /** @type {NonNullable} */ + let marker + + return start + + /** + * Start of thematic break. + * + * ```markdown + * > | *** + * ^ + * ``` + * + * @type {State} + */ + function start(code) { + effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.thematicBreak) + // To do: parse indent like `markdown-rs`. + return before(code) + } + + /** + * After optional whitespace, at marker. + * + * ```markdown + * > | *** + * ^ + * ``` + * + * @type {State} + */ + function before(code) { + (0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)( + code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.asterisk || + code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.dash || + code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.underscore, + 'expected `*`, `-`, or `_`' + ) + marker = code + return atBreak(code) + } + + /** + * After something, before something else. + * + * ```markdown + * > | *** + * ^ + * ``` + * + * @type {State} + */ + function atBreak(code) { + if (code === marker) { + effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.thematicBreakSequence) + return sequence(code) + } + + if ( + size >= micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_3__.constants.thematicBreakMarkerCountMin && + (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.eof || (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_4__.markdownLineEnding)(code)) + ) { + effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.thematicBreak) + return ok(code) + } + + return nok(code) + } + + /** + * In sequence. + * + * ```markdown + * > | *** + * ^ + * ``` + * + * @type {State} + */ + function sequence(code) { + if (code === marker) { + effects.consume(code) + size++ + return sequence + } + + effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.thematicBreakSequence) + return (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_4__.markdownSpace)(code) + ? (0,micromark_factory_space__WEBPACK_IMPORTED_MODULE_5__.factorySpace)(effects, atBreak, micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.whitespace)(code) + : atBreak(code) + } +} + + +/***/ }), + +/***/ "../node_modules/micromark-factory-destination/dev/index.js": +/*!******************************************************************!*\ + !*** ../node_modules/micromark-factory-destination/dev/index.js ***! + \******************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ factoryDestination: () => (/* binding */ factoryDestination) +/* harmony export */ }); +/* harmony import */ var micromark_util_character__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! micromark-util-character */ "../node_modules/micromark-util-character/dev/index.js"); +/* harmony import */ var micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! micromark-util-symbol/codes.js */ "../node_modules/micromark-util-symbol/codes.js"); +/* harmony import */ var micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! micromark-util-symbol/constants.js */ "../node_modules/micromark-util-symbol/constants.js"); +/* harmony import */ var micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! micromark-util-symbol/types.js */ "../node_modules/micromark-util-symbol/types.js"); +/** + * @typedef {import('micromark-util-types').Effects} Effects + * @typedef {import('micromark-util-types').State} State + * @typedef {import('micromark-util-types').TokenType} TokenType + */ + + + + + + +/** + * Parse destinations. + * + * ###### Examples + * + * ```markdown + * + * b> + * + * + * a + * a\)b + * a(b)c + * a(b) + * ``` + * + * @param {Effects} effects + * Context. + * @param {State} ok + * State switched to when successful. + * @param {State} nok + * State switched to when unsuccessful. + * @param {TokenType} type + * Type for whole (`` or `b`). + * @param {TokenType} literalType + * Type when enclosed (``). + * @param {TokenType} literalMarkerType + * Type for enclosing (`<` and `>`). + * @param {TokenType} rawType + * Type when not enclosed (`b`). + * @param {TokenType} stringType + * Type for the value (`a` or `b`). + * @param {number | undefined} [max=Infinity] + * Depth of nested parens (inclusive). + * @returns {State} + * Start state. + */ +// eslint-disable-next-line max-params +function factoryDestination( + effects, + ok, + nok, + type, + literalType, + literalMarkerType, + rawType, + stringType, + max +) { + const limit = max || Number.POSITIVE_INFINITY + let balance = 0 + + return start + + /** + * Start of destination. + * + * ```markdown + * > | + * ^ + * > | aa + * ^ + * ``` + * + * @type {State} + */ + function start(code) { + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.lessThan) { + effects.enter(type) + effects.enter(literalType) + effects.enter(literalMarkerType) + effects.consume(code) + effects.exit(literalMarkerType) + return enclosedBefore + } + + // ASCII control, space, closing paren. + if ( + code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.eof || + code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.space || + code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.rightParenthesis || + (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_1__.asciiControl)(code) + ) { + return nok(code) + } + + effects.enter(type) + effects.enter(rawType) + effects.enter(stringType) + effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.chunkString, {contentType: micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_3__.constants.contentTypeString}) + return raw(code) + } + + /** + * After `<`, at an enclosed destination. + * + * ```markdown + * > | + * ^ + * ``` + * + * @type {State} + */ + function enclosedBefore(code) { + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.greaterThan) { + effects.enter(literalMarkerType) + effects.consume(code) + effects.exit(literalMarkerType) + effects.exit(literalType) + effects.exit(type) + return ok + } + + effects.enter(stringType) + effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.chunkString, {contentType: micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_3__.constants.contentTypeString}) + return enclosed(code) + } + + /** + * In enclosed destination. + * + * ```markdown + * > | + * ^ + * ``` + * + * @type {State} + */ + function enclosed(code) { + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.greaterThan) { + effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.chunkString) + effects.exit(stringType) + return enclosedBefore(code) + } + + if ( + code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.eof || + code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.lessThan || + (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_1__.markdownLineEnding)(code) + ) { + return nok(code) + } + + effects.consume(code) + return code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.backslash ? enclosedEscape : enclosed + } + + /** + * After `\`, at a special character. + * + * ```markdown + * > | + * ^ + * ``` + * + * @type {State} + */ + function enclosedEscape(code) { + if ( + code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.lessThan || + code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.greaterThan || + code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.backslash + ) { + effects.consume(code) + return enclosed + } + + return enclosed(code) + } + + /** + * In raw destination. + * + * ```markdown + * > | aa + * ^ + * ``` + * + * @type {State} + */ + function raw(code) { + if ( + !balance && + (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.eof || + code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.rightParenthesis || + (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_1__.markdownLineEndingOrSpace)(code)) + ) { + effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.chunkString) + effects.exit(stringType) + effects.exit(rawType) + effects.exit(type) + return ok(code) + } + + if (balance < limit && code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.leftParenthesis) { + effects.consume(code) + balance++ + return raw + } + + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.rightParenthesis) { + effects.consume(code) + balance-- + return raw + } + + // ASCII control (but *not* `\0`) and space and `(`. + // Note: in `markdown-rs`, `\0` exists in codes, in `micromark-js` it + // doesn’t. + if ( + code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.eof || + code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.space || + code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.leftParenthesis || + (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_1__.asciiControl)(code) + ) { + return nok(code) + } + + effects.consume(code) + return code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.backslash ? rawEscape : raw + } + + /** + * After `\`, at special character. + * + * ```markdown + * > | a\*a + * ^ + * ``` + * + * @type {State} + */ + function rawEscape(code) { + if ( + code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.leftParenthesis || + code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.rightParenthesis || + code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.backslash + ) { + effects.consume(code) + return raw + } + + return raw(code) + } +} + + +/***/ }), + +/***/ "../node_modules/micromark-factory-label/dev/index.js": +/*!************************************************************!*\ + !*** ../node_modules/micromark-factory-label/dev/index.js ***! + \************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ factoryLabel: () => (/* binding */ factoryLabel) +/* harmony export */ }); +/* harmony import */ var micromark_util_character__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! micromark-util-character */ "../node_modules/micromark-util-character/dev/index.js"); +/* harmony import */ var micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! micromark-util-symbol/codes.js */ "../node_modules/micromark-util-symbol/codes.js"); +/* harmony import */ var micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! micromark-util-symbol/constants.js */ "../node_modules/micromark-util-symbol/constants.js"); +/* harmony import */ var micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! micromark-util-symbol/types.js */ "../node_modules/micromark-util-symbol/types.js"); +/* harmony import */ var uvu_assert__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! uvu/assert */ "../node_modules/uvu/assert/index.mjs"); +/** + * @typedef {import('micromark-util-types').Effects} Effects + * @typedef {import('micromark-util-types').State} State + * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext + * @typedef {import('micromark-util-types').TokenType} TokenType + */ + + + + + + + +/** + * Parse labels. + * + * > 👉 **Note**: labels in markdown are capped at 999 characters in the string. + * + * ###### Examples + * + * ```markdown + * [a] + * [a + * b] + * [a\]b] + * ``` + * + * @this {TokenizeContext} + * Tokenize context. + * @param {Effects} effects + * Context. + * @param {State} ok + * State switched to when successful. + * @param {State} nok + * State switched to when unsuccessful. + * @param {TokenType} type + * Type of the whole label (`[a]`). + * @param {TokenType} markerType + * Type for the markers (`[` and `]`). + * @param {TokenType} stringType + * Type for the identifier (`a`). + * @returns {State} + * Start state. + */ +// eslint-disable-next-line max-params +function factoryLabel(effects, ok, nok, type, markerType, stringType) { + const self = this + let size = 0 + /** @type {boolean} */ + let seen + + return start + + /** + * Start of label. + * + * ```markdown + * > | [a] + * ^ + * ``` + * + * @type {State} + */ + function start(code) { + ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.leftSquareBracket, 'expected `[`') + effects.enter(type) + effects.enter(markerType) + effects.consume(code) + effects.exit(markerType) + effects.enter(stringType) + return atBreak + } + + /** + * In label, at something, before something else. + * + * ```markdown + * > | [a] + * ^ + * ``` + * + * @type {State} + */ + function atBreak(code) { + if ( + size > micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_2__.constants.linkReferenceSizeMax || + code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.eof || + code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.leftSquareBracket || + (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.rightSquareBracket && !seen) || + // To do: remove in the future once we’ve switched from + // `micromark-extension-footnote` to `micromark-extension-gfm-footnote`, + // which doesn’t need this. + // Hidden footnotes hook. + /* c8 ignore next 3 */ + (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.caret && + !size && + '_hiddenFootnoteSupport' in self.parser.constructs) + ) { + return nok(code) + } + + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.rightSquareBracket) { + effects.exit(stringType) + effects.enter(markerType) + effects.consume(code) + effects.exit(markerType) + effects.exit(type) + return ok + } + + // To do: indent? Link chunks and EOLs together? + if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.markdownLineEnding)(code)) { + effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_4__.types.lineEnding) + effects.consume(code) + effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_4__.types.lineEnding) + return atBreak + } + + effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_4__.types.chunkString, {contentType: micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_2__.constants.contentTypeString}) + return labelInside(code) + } + + /** + * In label, in text. + * + * ```markdown + * > | [a] + * ^ + * ``` + * + * @type {State} + */ + function labelInside(code) { + if ( + code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.eof || + code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.leftSquareBracket || + code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.rightSquareBracket || + (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.markdownLineEnding)(code) || + size++ > micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_2__.constants.linkReferenceSizeMax + ) { + effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_4__.types.chunkString) + return atBreak(code) + } + + effects.consume(code) + if (!seen) seen = !(0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.markdownSpace)(code) + return code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.backslash ? labelEscape : labelInside + } + + /** + * After `\`, at a special character. + * + * ```markdown + * > | [a\*a] + * ^ + * ``` + * + * @type {State} + */ + function labelEscape(code) { + if ( + code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.leftSquareBracket || + code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.backslash || + code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.rightSquareBracket + ) { + effects.consume(code) + size++ + return labelInside + } + + return labelInside(code) + } +} + + +/***/ }), + +/***/ "../node_modules/micromark-factory-space/dev/index.js": +/*!************************************************************!*\ + !*** ../node_modules/micromark-factory-space/dev/index.js ***! + \************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ factorySpace: () => (/* binding */ factorySpace) +/* harmony export */ }); +/* harmony import */ var micromark_util_character__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! micromark-util-character */ "../node_modules/micromark-util-character/dev/index.js"); +/** + * @typedef {import('micromark-util-types').Effects} Effects + * @typedef {import('micromark-util-types').State} State + * @typedef {import('micromark-util-types').TokenType} TokenType + */ + + + +// To do: implement `spaceOrTab`, `spaceOrTabMinMax`, `spaceOrTabWithOptions`. + +/** + * Parse spaces and tabs. + * + * There is no `nok` parameter: + * + * * spaces in markdown are often optional, in which case this factory can be + * used and `ok` will be switched to whether spaces were found or not + * * one line ending or space can be detected with `markdownSpace(code)` right + * before using `factorySpace` + * + * ###### Examples + * + * Where `␉` represents a tab (plus how much it expands) and `␠` represents a + * single space. + * + * ```markdown + * ␉ + * ␠␠␠␠ + * ␉␠ + * ``` + * + * @param {Effects} effects + * Context. + * @param {State} ok + * State switched to when successful. + * @param {TokenType} type + * Type (`' \t'`). + * @param {number | undefined} [max=Infinity] + * Max (exclusive). + * @returns + * Start state. + */ +function factorySpace(effects, ok, type, max) { + const limit = max ? max - 1 : Number.POSITIVE_INFINITY + let size = 0 + + return start + + /** @type {State} */ + function start(code) { + if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_0__.markdownSpace)(code)) { + effects.enter(type) + return prefix(code) + } + + return ok(code) + } + + /** @type {State} */ + function prefix(code) { + if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_0__.markdownSpace)(code) && size++ < limit) { + effects.consume(code) + return prefix + } + + effects.exit(type) + return ok(code) + } +} + + +/***/ }), + +/***/ "../node_modules/micromark-factory-title/dev/index.js": +/*!************************************************************!*\ + !*** ../node_modules/micromark-factory-title/dev/index.js ***! + \************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ factoryTitle: () => (/* binding */ factoryTitle) +/* harmony export */ }); +/* harmony import */ var micromark_factory_space__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! micromark-factory-space */ "../node_modules/micromark-factory-space/dev/index.js"); +/* harmony import */ var micromark_util_character__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! micromark-util-character */ "../node_modules/micromark-util-character/dev/index.js"); +/* harmony import */ var micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! micromark-util-symbol/codes.js */ "../node_modules/micromark-util-symbol/codes.js"); +/* harmony import */ var micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! micromark-util-symbol/constants.js */ "../node_modules/micromark-util-symbol/constants.js"); +/* harmony import */ var micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! micromark-util-symbol/types.js */ "../node_modules/micromark-util-symbol/types.js"); +/** + * @typedef {import('micromark-util-types').Code} Code + * @typedef {import('micromark-util-types').Effects} Effects + * @typedef {import('micromark-util-types').State} State + * @typedef {import('micromark-util-types').TokenType} TokenType + */ + + + + + + + +/** + * Parse titles. + * + * ###### Examples + * + * ```markdown + * "a" + * 'b' + * (c) + * "a + * b" + * 'a + * b' + * (a\)b) + * ``` + * + * @param {Effects} effects + * Context. + * @param {State} ok + * State switched to when successful. + * @param {State} nok + * State switched to when unsuccessful. + * @param {TokenType} type + * Type of the whole title (`"a"`, `'b'`, `(c)`). + * @param {TokenType} markerType + * Type for the markers (`"`, `'`, `(`, and `)`). + * @param {TokenType} stringType + * Type for the value (`a`). + * @returns {State} + * Start state. + */ +// eslint-disable-next-line max-params +function factoryTitle(effects, ok, nok, type, markerType, stringType) { + /** @type {NonNullable} */ + let marker + + return start + + /** + * Start of title. + * + * ```markdown + * > | "a" + * ^ + * ``` + * + * @type {State} + */ + function start(code) { + if ( + code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.quotationMark || + code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.apostrophe || + code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.leftParenthesis + ) { + effects.enter(type) + effects.enter(markerType) + effects.consume(code) + effects.exit(markerType) + marker = code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.leftParenthesis ? micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.rightParenthesis : code + return begin + } + + return nok(code) + } + + /** + * After opening marker. + * + * This is also used at the closing marker. + * + * ```markdown + * > | "a" + * ^ + * ``` + * + * @type {State} + */ + function begin(code) { + if (code === marker) { + effects.enter(markerType) + effects.consume(code) + effects.exit(markerType) + effects.exit(type) + return ok + } + + effects.enter(stringType) + return atBreak(code) + } + + /** + * At something, before something else. + * + * ```markdown + * > | "a" + * ^ + * ``` + * + * @type {State} + */ + function atBreak(code) { + if (code === marker) { + effects.exit(stringType) + return begin(marker) + } + + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.eof) { + return nok(code) + } + + // Note: blank lines can’t exist in content. + if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_1__.markdownLineEnding)(code)) { + // To do: use `space_or_tab_eol_with_options`, connect. + effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.lineEnding) + effects.consume(code) + effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.lineEnding) + return (0,micromark_factory_space__WEBPACK_IMPORTED_MODULE_3__.factorySpace)(effects, atBreak, micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.linePrefix) + } + + effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.chunkString, {contentType: micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_4__.constants.contentTypeString}) + return inside(code) + } + + /** + * + * + * @type {State} + */ + function inside(code) { + if (code === marker || code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.eof || (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_1__.markdownLineEnding)(code)) { + effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.chunkString) + return atBreak(code) + } + + effects.consume(code) + return code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.backslash ? escape : inside + } + + /** + * After `\`, at a special character. + * + * ```markdown + * > | "a\*b" + * ^ + * ``` + * + * @type {State} + */ + function escape(code) { + if (code === marker || code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.backslash) { + effects.consume(code) + return inside + } + + return inside(code) + } +} + + +/***/ }), + +/***/ "../node_modules/micromark-factory-whitespace/dev/index.js": +/*!*****************************************************************!*\ + !*** ../node_modules/micromark-factory-whitespace/dev/index.js ***! + \*****************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ factoryWhitespace: () => (/* binding */ factoryWhitespace) +/* harmony export */ }); +/* harmony import */ var micromark_factory_space__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! micromark-factory-space */ "../node_modules/micromark-factory-space/dev/index.js"); +/* harmony import */ var micromark_util_character__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! micromark-util-character */ "../node_modules/micromark-util-character/dev/index.js"); +/* harmony import */ var micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! micromark-util-symbol/types.js */ "../node_modules/micromark-util-symbol/types.js"); +/** + * @typedef {import('micromark-util-types').Effects} Effects + * @typedef {import('micromark-util-types').State} State + */ + + + + + +/** + * Parse spaces and tabs. + * + * There is no `nok` parameter: + * + * * line endings or spaces in markdown are often optional, in which case this + * factory can be used and `ok` will be switched to whether spaces were found + * or not + * * one line ending or space can be detected with + * `markdownLineEndingOrSpace(code)` right before using `factoryWhitespace` + * + * @param {Effects} effects + * Context. + * @param {State} ok + * State switched to when successful. + * @returns + * Start state. + */ +function factoryWhitespace(effects, ok) { + /** @type {boolean} */ + let seen + + return start + + /** @type {State} */ + function start(code) { + if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_0__.markdownLineEnding)(code)) { + effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.lineEnding) + effects.consume(code) + effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.lineEnding) + seen = true + return start + } + + if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_0__.markdownSpace)(code)) { + return (0,micromark_factory_space__WEBPACK_IMPORTED_MODULE_2__.factorySpace)( + effects, + start, + seen ? micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.linePrefix : micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.lineSuffix + )(code) + } + + return ok(code) + } +} + + +/***/ }), + +/***/ "../node_modules/micromark-util-character/dev/index.js": +/*!*************************************************************!*\ + !*** ../node_modules/micromark-util-character/dev/index.js ***! + \*************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ asciiAlpha: () => (/* binding */ asciiAlpha), +/* harmony export */ asciiAlphanumeric: () => (/* binding */ asciiAlphanumeric), +/* harmony export */ asciiAtext: () => (/* binding */ asciiAtext), +/* harmony export */ asciiControl: () => (/* binding */ asciiControl), +/* harmony export */ asciiDigit: () => (/* binding */ asciiDigit), +/* harmony export */ asciiHexDigit: () => (/* binding */ asciiHexDigit), +/* harmony export */ asciiPunctuation: () => (/* binding */ asciiPunctuation), +/* harmony export */ markdownLineEnding: () => (/* binding */ markdownLineEnding), +/* harmony export */ markdownLineEndingOrSpace: () => (/* binding */ markdownLineEndingOrSpace), +/* harmony export */ markdownSpace: () => (/* binding */ markdownSpace), +/* harmony export */ unicodePunctuation: () => (/* binding */ unicodePunctuation), +/* harmony export */ unicodeWhitespace: () => (/* binding */ unicodeWhitespace) +/* harmony export */ }); +/* harmony import */ var micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! micromark-util-symbol/codes.js */ "../node_modules/micromark-util-symbol/codes.js"); +/* harmony import */ var _lib_unicode_punctuation_regex_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./lib/unicode-punctuation-regex.js */ "../node_modules/micromark-util-character/dev/lib/unicode-punctuation-regex.js"); +/** + * @typedef {import('micromark-util-types').Code} Code + */ + + + + +/** + * Check whether the character code represents an ASCII alpha (`a` through `z`, + * case insensitive). + * + * An **ASCII alpha** is an ASCII upper alpha or ASCII lower alpha. + * + * An **ASCII upper alpha** is a character in the inclusive range U+0041 (`A`) + * to U+005A (`Z`). + * + * An **ASCII lower alpha** is a character in the inclusive range U+0061 (`a`) + * to U+007A (`z`). + * + * @param code + * Code. + * @returns + * Whether it matches. + */ +const asciiAlpha = regexCheck(/[A-Za-z]/) + +/** + * Check whether the character code represents an ASCII alphanumeric (`a` + * through `z`, case insensitive, or `0` through `9`). + * + * An **ASCII alphanumeric** is an ASCII digit (see `asciiDigit`) or ASCII alpha + * (see `asciiAlpha`). + * + * @param code + * Code. + * @returns + * Whether it matches. + */ +const asciiAlphanumeric = regexCheck(/[\dA-Za-z]/) + +/** + * Check whether the character code represents an ASCII atext. + * + * atext is an ASCII alphanumeric (see `asciiAlphanumeric`), or a character in + * the inclusive ranges U+0023 NUMBER SIGN (`#`) to U+0027 APOSTROPHE (`'`), + * U+002A ASTERISK (`*`), U+002B PLUS SIGN (`+`), U+002D DASH (`-`), U+002F + * SLASH (`/`), U+003D EQUALS TO (`=`), U+003F QUESTION MARK (`?`), U+005E + * CARET (`^`) to U+0060 GRAVE ACCENT (`` ` ``), or U+007B LEFT CURLY BRACE + * (`{`) to U+007E TILDE (`~`). + * + * See: + * **\[RFC5322]**: + * [Internet Message Format](https://tools.ietf.org/html/rfc5322). + * P. Resnick. + * IETF. + * + * @param code + * Code. + * @returns + * Whether it matches. + */ +const asciiAtext = regexCheck(/[#-'*+\--9=?A-Z^-~]/) + +/** + * Check whether a character code is an ASCII control character. + * + * An **ASCII control** is a character in the inclusive range U+0000 NULL (NUL) + * to U+001F (US), or U+007F (DEL). + * + * @param {Code} code + * Code. + * @returns {boolean} + * Whether it matches. + */ +function asciiControl(code) { + return ( + // Special whitespace codes (which have negative values), C0 and Control + // character DEL + code !== null && (code < micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.space || code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.del) + ) +} + +/** + * Check whether the character code represents an ASCII digit (`0` through `9`). + * + * An **ASCII digit** is a character in the inclusive range U+0030 (`0`) to + * U+0039 (`9`). + * + * @param code + * Code. + * @returns + * Whether it matches. + */ +const asciiDigit = regexCheck(/\d/) + +/** + * Check whether the character code represents an ASCII hex digit (`a` through + * `f`, case insensitive, or `0` through `9`). + * + * An **ASCII hex digit** is an ASCII digit (see `asciiDigit`), ASCII upper hex + * digit, or an ASCII lower hex digit. + * + * An **ASCII upper hex digit** is a character in the inclusive range U+0041 + * (`A`) to U+0046 (`F`). + * + * An **ASCII lower hex digit** is a character in the inclusive range U+0061 + * (`a`) to U+0066 (`f`). + * + * @param code + * Code. + * @returns + * Whether it matches. + */ +const asciiHexDigit = regexCheck(/[\dA-Fa-f]/) + +/** + * Check whether the character code represents ASCII punctuation. + * + * An **ASCII punctuation** is a character in the inclusive ranges U+0021 + * EXCLAMATION MARK (`!`) to U+002F SLASH (`/`), U+003A COLON (`:`) to U+0040 AT + * SIGN (`@`), U+005B LEFT SQUARE BRACKET (`[`) to U+0060 GRAVE ACCENT + * (`` ` ``), or U+007B LEFT CURLY BRACE (`{`) to U+007E TILDE (`~`). + * + * @param code + * Code. + * @returns + * Whether it matches. + */ +const asciiPunctuation = regexCheck(/[!-/:-@[-`{-~]/) + +/** + * Check whether a character code is a markdown line ending. + * + * A **markdown line ending** is the virtual characters M-0003 CARRIAGE RETURN + * LINE FEED (CRLF), M-0004 LINE FEED (LF) and M-0005 CARRIAGE RETURN (CR). + * + * In micromark, the actual character U+000A LINE FEED (LF) and U+000D CARRIAGE + * RETURN (CR) are replaced by these virtual characters depending on whether + * they occurred together. + * + * @param {Code} code + * Code. + * @returns {boolean} + * Whether it matches. + */ +function markdownLineEnding(code) { + return code !== null && code < micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.horizontalTab +} + +/** + * Check whether a character code is a markdown line ending (see + * `markdownLineEnding`) or markdown space (see `markdownSpace`). + * + * @param {Code} code + * Code. + * @returns {boolean} + * Whether it matches. + */ +function markdownLineEndingOrSpace(code) { + return code !== null && (code < micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.nul || code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.space) +} + +/** + * Check whether a character code is a markdown space. + * + * A **markdown space** is the concrete character U+0020 SPACE (SP) and the + * virtual characters M-0001 VIRTUAL SPACE (VS) and M-0002 HORIZONTAL TAB (HT). + * + * In micromark, the actual character U+0009 CHARACTER TABULATION (HT) is + * replaced by one M-0002 HORIZONTAL TAB (HT) and between 0 and 3 M-0001 VIRTUAL + * SPACE (VS) characters, depending on the column at which the tab occurred. + * + * @param {Code} code + * Code. + * @returns {boolean} + * Whether it matches. + */ +function markdownSpace(code) { + return ( + code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.horizontalTab || + code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.virtualSpace || + code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.space + ) +} + +// Size note: removing ASCII from the regex and using `asciiPunctuation` here +// In fact adds to the bundle size. +/** + * Check whether the character code represents Unicode punctuation. + * + * A **Unicode punctuation** is a character in the Unicode `Pc` (Punctuation, + * Connector), `Pd` (Punctuation, Dash), `Pe` (Punctuation, Close), `Pf` + * (Punctuation, Final quote), `Pi` (Punctuation, Initial quote), `Po` + * (Punctuation, Other), or `Ps` (Punctuation, Open) categories, or an ASCII + * punctuation (see `asciiPunctuation`). + * + * See: + * **\[UNICODE]**: + * [The Unicode Standard](https://www.unicode.org/versions/). + * Unicode Consortium. + * + * @param code + * Code. + * @returns + * Whether it matches. + */ +const unicodePunctuation = regexCheck(_lib_unicode_punctuation_regex_js__WEBPACK_IMPORTED_MODULE_1__.unicodePunctuationRegex) + +/** + * Check whether the character code represents Unicode whitespace. + * + * Note that this does handle micromark specific markdown whitespace characters. + * See `markdownLineEndingOrSpace` to check that. + * + * A **Unicode whitespace** is a character in the Unicode `Zs` (Separator, + * Space) category, or U+0009 CHARACTER TABULATION (HT), U+000A LINE FEED (LF), + * U+000C (FF), or U+000D CARRIAGE RETURN (CR) (**\[UNICODE]**). + * + * See: + * **\[UNICODE]**: + * [The Unicode Standard](https://www.unicode.org/versions/). + * Unicode Consortium. + * + * @param code + * Code. + * @returns + * Whether it matches. + */ +const unicodeWhitespace = regexCheck(/\s/) + +/** + * Create a code check from a regex. + * + * @param {RegExp} regex + * @returns {(code: Code) => boolean} + */ +function regexCheck(regex) { + return check + + /** + * Check whether a code matches the bound regex. + * + * @param {Code} code + * Character code. + * @returns {boolean} + * Whether the character code matches the bound regex. + */ + function check(code) { + return code !== null && regex.test(String.fromCharCode(code)) + } +} + + +/***/ }), + +/***/ "../node_modules/micromark-util-character/dev/lib/unicode-punctuation-regex.js": +/*!*************************************************************************************!*\ + !*** ../node_modules/micromark-util-character/dev/lib/unicode-punctuation-regex.js ***! + \*************************************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ unicodePunctuationRegex: () => (/* binding */ unicodePunctuationRegex) +/* harmony export */ }); +// This module is generated by `script/`. +// +// CommonMark handles attention (emphasis, strong) markers based on what comes +// before or after them. +// One such difference is if those characters are Unicode punctuation. +// This script is generated from the Unicode data. + +/** + * Regular expression that matches a unicode punctuation character. + */ +const unicodePunctuationRegex = + /[!-/:-@[-`{-~\u00A1\u00A7\u00AB\u00B6\u00B7\u00BB\u00BF\u037E\u0387\u055A-\u055F\u0589\u058A\u05BE\u05C0\u05C3\u05C6\u05F3\u05F4\u0609\u060A\u060C\u060D\u061B\u061D-\u061F\u066A-\u066D\u06D4\u0700-\u070D\u07F7-\u07F9\u0830-\u083E\u085E\u0964\u0965\u0970\u09FD\u0A76\u0AF0\u0C77\u0C84\u0DF4\u0E4F\u0E5A\u0E5B\u0F04-\u0F12\u0F14\u0F3A-\u0F3D\u0F85\u0FD0-\u0FD4\u0FD9\u0FDA\u104A-\u104F\u10FB\u1360-\u1368\u1400\u166E\u169B\u169C\u16EB-\u16ED\u1735\u1736\u17D4-\u17D6\u17D8-\u17DA\u1800-\u180A\u1944\u1945\u1A1E\u1A1F\u1AA0-\u1AA6\u1AA8-\u1AAD\u1B5A-\u1B60\u1B7D\u1B7E\u1BFC-\u1BFF\u1C3B-\u1C3F\u1C7E\u1C7F\u1CC0-\u1CC7\u1CD3\u2010-\u2027\u2030-\u2043\u2045-\u2051\u2053-\u205E\u207D\u207E\u208D\u208E\u2308-\u230B\u2329\u232A\u2768-\u2775\u27C5\u27C6\u27E6-\u27EF\u2983-\u2998\u29D8-\u29DB\u29FC\u29FD\u2CF9-\u2CFC\u2CFE\u2CFF\u2D70\u2E00-\u2E2E\u2E30-\u2E4F\u2E52-\u2E5D\u3001-\u3003\u3008-\u3011\u3014-\u301F\u3030\u303D\u30A0\u30FB\uA4FE\uA4FF\uA60D-\uA60F\uA673\uA67E\uA6F2-\uA6F7\uA874-\uA877\uA8CE\uA8CF\uA8F8-\uA8FA\uA8FC\uA92E\uA92F\uA95F\uA9C1-\uA9CD\uA9DE\uA9DF\uAA5C-\uAA5F\uAADE\uAADF\uAAF0\uAAF1\uABEB\uFD3E\uFD3F\uFE10-\uFE19\uFE30-\uFE52\uFE54-\uFE61\uFE63\uFE68\uFE6A\uFE6B\uFF01-\uFF03\uFF05-\uFF0A\uFF0C-\uFF0F\uFF1A\uFF1B\uFF1F\uFF20\uFF3B-\uFF3D\uFF3F\uFF5B\uFF5D\uFF5F-\uFF65]/ + + +/***/ }), + +/***/ "../node_modules/micromark-util-chunked/dev/index.js": +/*!***********************************************************!*\ + !*** ../node_modules/micromark-util-chunked/dev/index.js ***! + \***********************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ push: () => (/* binding */ push), +/* harmony export */ splice: () => (/* binding */ splice) +/* harmony export */ }); +/* harmony import */ var micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! micromark-util-symbol/constants.js */ "../node_modules/micromark-util-symbol/constants.js"); + + +/** + * Like `Array#splice`, but smarter for giant arrays. + * + * `Array#splice` takes all items to be inserted as individual argument which + * causes a stack overflow in V8 when trying to insert 100k items for instance. + * + * Otherwise, this does not return the removed items, and takes `items` as an + * array instead of rest parameters. + * + * @template {unknown} T + * Item type. + * @param {Array} list + * List to operate on. + * @param {number} start + * Index to remove/insert at (can be negative). + * @param {number} remove + * Number of items to remove. + * @param {Array} items + * Items to inject into `list`. + * @returns {void} + * Nothing. + */ +function splice(list, start, remove, items) { + const end = list.length + let chunkStart = 0 + /** @type {Array} */ + let parameters + + // Make start between zero and `end` (included). + if (start < 0) { + start = -start > end ? 0 : end + start + } else { + start = start > end ? end : start + } + + remove = remove > 0 ? remove : 0 + + // No need to chunk the items if there’s only a couple (10k) items. + if (items.length < micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_0__.constants.v8MaxSafeChunkSize) { + parameters = Array.from(items) + parameters.unshift(start, remove) + // @ts-expect-error Hush, it’s fine. + list.splice(...parameters) + } else { + // Delete `remove` items starting from `start` + if (remove) list.splice(start, remove) + + // Insert the items in chunks to not cause stack overflows. + while (chunkStart < items.length) { + parameters = items.slice( + chunkStart, + chunkStart + micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_0__.constants.v8MaxSafeChunkSize + ) + parameters.unshift(start, 0) + // @ts-expect-error Hush, it’s fine. + list.splice(...parameters) + + chunkStart += micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_0__.constants.v8MaxSafeChunkSize + start += micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_0__.constants.v8MaxSafeChunkSize + } + } +} + +/** + * Append `items` (an array) at the end of `list` (another array). + * When `list` was empty, returns `items` instead. + * + * This prevents a potentially expensive operation when `list` is empty, + * and adds items in batches to prevent V8 from hanging. + * + * @template {unknown} T + * Item type. + * @param {Array} list + * List to operate on. + * @param {Array} items + * Items to add to `list`. + * @returns {Array} + * Either `list` or `items`. + */ +function push(list, items) { + if (list.length > 0) { + splice(list, list.length, 0, items) + return list + } + + return items +} + + +/***/ }), + +/***/ "../node_modules/micromark-util-classify-character/dev/index.js": +/*!**********************************************************************!*\ + !*** ../node_modules/micromark-util-classify-character/dev/index.js ***! + \**********************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ classifyCharacter: () => (/* binding */ classifyCharacter) +/* harmony export */ }); +/* harmony import */ var micromark_util_character__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! micromark-util-character */ "../node_modules/micromark-util-character/dev/index.js"); +/* harmony import */ var micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! micromark-util-symbol/codes.js */ "../node_modules/micromark-util-symbol/codes.js"); +/* harmony import */ var micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! micromark-util-symbol/constants.js */ "../node_modules/micromark-util-symbol/constants.js"); +/** + * @typedef {import('micromark-util-types').Code} Code + */ + + + + + +/** + * Classify whether a code represents whitespace, punctuation, or something + * else. + * + * Used for attention (emphasis, strong), whose sequences can open or close + * based on the class of surrounding characters. + * + * > 👉 **Note**: eof (`null`) is seen as whitespace. + * + * @param {Code} code + * Code. + * @returns {typeof constants.characterGroupWhitespace | typeof constants.characterGroupPunctuation | undefined} + * Group. + */ +function classifyCharacter(code) { + if ( + code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.eof || + (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_1__.markdownLineEndingOrSpace)(code) || + (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_1__.unicodeWhitespace)(code) + ) { + return micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_2__.constants.characterGroupWhitespace + } + + if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_1__.unicodePunctuation)(code)) { + return micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_2__.constants.characterGroupPunctuation + } +} + + +/***/ }), + +/***/ "../node_modules/micromark-util-combine-extensions/index.js": +/*!******************************************************************!*\ + !*** ../node_modules/micromark-util-combine-extensions/index.js ***! + \******************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ combineExtensions: () => (/* binding */ combineExtensions), +/* harmony export */ combineHtmlExtensions: () => (/* binding */ combineHtmlExtensions) +/* harmony export */ }); +/* harmony import */ var micromark_util_chunked__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! micromark-util-chunked */ "../node_modules/micromark-util-chunked/dev/index.js"); +/** + * @typedef {import('micromark-util-types').Extension} Extension + * @typedef {import('micromark-util-types').Handles} Handles + * @typedef {import('micromark-util-types').HtmlExtension} HtmlExtension + * @typedef {import('micromark-util-types').NormalizedExtension} NormalizedExtension + */ + + + +const hasOwnProperty = {}.hasOwnProperty + +/** + * Combine multiple syntax extensions into one. + * + * @param {Array} extensions + * List of syntax extensions. + * @returns {NormalizedExtension} + * A single combined extension. + */ +function combineExtensions(extensions) { + /** @type {NormalizedExtension} */ + const all = {} + let index = -1 + + while (++index < extensions.length) { + syntaxExtension(all, extensions[index]) + } + + return all +} + +/** + * Merge `extension` into `all`. + * + * @param {NormalizedExtension} all + * Extension to merge into. + * @param {Extension} extension + * Extension to merge. + * @returns {void} + */ +function syntaxExtension(all, extension) { + /** @type {keyof Extension} */ + let hook + + for (hook in extension) { + const maybe = hasOwnProperty.call(all, hook) ? all[hook] : undefined + /** @type {Record} */ + const left = maybe || (all[hook] = {}) + /** @type {Record | undefined} */ + const right = extension[hook] + /** @type {string} */ + let code + + if (right) { + for (code in right) { + if (!hasOwnProperty.call(left, code)) left[code] = [] + const value = right[code] + constructs( + // @ts-expect-error Looks like a list. + left[code], + Array.isArray(value) ? value : value ? [value] : [] + ) + } + } + } +} + +/** + * Merge `list` into `existing` (both lists of constructs). + * Mutates `existing`. + * + * @param {Array} existing + * @param {Array} list + * @returns {void} + */ +function constructs(existing, list) { + let index = -1 + /** @type {Array} */ + const before = [] + + while (++index < list.length) { + // @ts-expect-error Looks like an object. + ;(list[index].add === 'after' ? existing : before).push(list[index]) + } + + (0,micromark_util_chunked__WEBPACK_IMPORTED_MODULE_0__.splice)(existing, 0, 0, before) +} + +/** + * Combine multiple HTML extensions into one. + * + * @param {Array} htmlExtensions + * List of HTML extensions. + * @returns {HtmlExtension} + * A single combined HTML extension. + */ +function combineHtmlExtensions(htmlExtensions) { + /** @type {HtmlExtension} */ + const handlers = {} + let index = -1 + + while (++index < htmlExtensions.length) { + htmlExtension(handlers, htmlExtensions[index]) + } + + return handlers +} + +/** + * Merge `extension` into `all`. + * + * @param {HtmlExtension} all + * Extension to merge into. + * @param {HtmlExtension} extension + * Extension to merge. + * @returns {void} + */ +function htmlExtension(all, extension) { + /** @type {keyof HtmlExtension} */ + let hook + + for (hook in extension) { + const maybe = hasOwnProperty.call(all, hook) ? all[hook] : undefined + const left = maybe || (all[hook] = {}) + const right = extension[hook] + /** @type {keyof Handles} */ + let type + + if (right) { + for (type in right) { + // @ts-expect-error assume document vs regular handler are managed correctly. + left[type] = right[type] + } + } + } +} + + +/***/ }), + +/***/ "../node_modules/micromark-util-decode-numeric-character-reference/dev/index.js": +/*!**************************************************************************************!*\ + !*** ../node_modules/micromark-util-decode-numeric-character-reference/dev/index.js ***! + \**************************************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ decodeNumericCharacterReference: () => (/* binding */ decodeNumericCharacterReference) +/* harmony export */ }); +/* harmony import */ var micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! micromark-util-symbol/codes.js */ "../node_modules/micromark-util-symbol/codes.js"); +/* harmony import */ var micromark_util_symbol_values_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! micromark-util-symbol/values.js */ "../node_modules/micromark-util-symbol/values.js"); + + + +/** + * Turn the number (in string form as either hexa- or plain decimal) coming from + * a numeric character reference into a character. + * + * Sort of like `String.fromCharCode(Number.parseInt(value, base))`, but makes + * non-characters and control characters safe. + * + * @param {string} value + * Value to decode. + * @param {number} base + * Numeric base. + * @returns {string} + * Character. + */ +function decodeNumericCharacterReference(value, base) { + const code = Number.parseInt(value, base) + + if ( + // C0 except for HT, LF, FF, CR, space. + code < micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.ht || + code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.vt || + (code > micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.cr && code < micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.space) || + // Control character (DEL) of C0, and C1 controls. + (code > micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.tilde && code < 160) || + // Lone high surrogates and low surrogates. + (code > 55295 && code < 57344) || + // Noncharacters. + (code > 64975 && code < 65008) || + /* eslint-disable no-bitwise */ + (code & 65535) === 65535 || + (code & 65535) === 65534 || + /* eslint-enable no-bitwise */ + // Out of range + code > 1114111 + ) { + return micromark_util_symbol_values_js__WEBPACK_IMPORTED_MODULE_1__.values.replacementCharacter + } + + return String.fromCharCode(code) +} + + +/***/ }), + +/***/ "../node_modules/micromark-util-decode-string/dev/index.js": +/*!*****************************************************************!*\ + !*** ../node_modules/micromark-util-decode-string/dev/index.js ***! + \*****************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ decodeString: () => (/* binding */ decodeString) +/* harmony export */ }); +/* harmony import */ var decode_named_character_reference__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! decode-named-character-reference */ "../node_modules/decode-named-character-reference/index.dom.js"); +/* harmony import */ var micromark_util_decode_numeric_character_reference__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! micromark-util-decode-numeric-character-reference */ "../node_modules/micromark-util-decode-numeric-character-reference/dev/index.js"); +/* harmony import */ var micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! micromark-util-symbol/codes.js */ "../node_modules/micromark-util-symbol/codes.js"); +/* harmony import */ var micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! micromark-util-symbol/constants.js */ "../node_modules/micromark-util-symbol/constants.js"); + + + + + +const characterEscapeOrReference = + /\\([!-/:-@[-`{-~])|&(#(?:\d{1,7}|x[\da-f]{1,6})|[\da-z]{1,31});/gi + +/** + * Decode markdown strings (which occur in places such as fenced code info + * strings, destinations, labels, and titles). + * + * The “string” content type allows character escapes and -references. + * This decodes those. + * + * @param {string} value + * Value to decode. + * @returns {string} + * Decoded value. + */ +function decodeString(value) { + return value.replace(characterEscapeOrReference, decode) +} + +/** + * @param {string} $0 + * @param {string} $1 + * @param {string} $2 + * @returns {string} + */ +function decode($0, $1, $2) { + if ($1) { + // Escape. + return $1 + } + + // Reference. + const head = $2.charCodeAt(0) + + if (head === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.numberSign) { + const head = $2.charCodeAt(1) + const hex = head === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.lowercaseX || head === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.uppercaseX + return (0,micromark_util_decode_numeric_character_reference__WEBPACK_IMPORTED_MODULE_1__.decodeNumericCharacterReference)( + $2.slice(hex ? 2 : 1), + hex ? micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_2__.constants.numericBaseHexadecimal : micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_2__.constants.numericBaseDecimal + ) + } + + return (0,decode_named_character_reference__WEBPACK_IMPORTED_MODULE_3__.decodeNamedCharacterReference)($2) || $0 +} + + +/***/ }), + +/***/ "../node_modules/micromark-util-encode/index.js": +/*!******************************************************!*\ + !*** ../node_modules/micromark-util-encode/index.js ***! + \******************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ encode: () => (/* binding */ encode) +/* harmony export */ }); +const characterReferences = {'"': 'quot', '&': 'amp', '<': 'lt', '>': 'gt'} + +/** + * Encode only the dangerous HTML characters. + * + * This ensures that certain characters which have special meaning in HTML are + * dealt with. + * Technically, we can skip `>` and `"` in many cases, but CM includes them. + * + * @param {string} value + * Value to encode. + * @returns {string} + * Encoded value. + */ +function encode(value) { + return value.replace(/["&<>]/g, replace) + + /** + * @param {string} value + * @returns {string} + */ + function replace(value) { + // @ts-expect-error Hush, it’s fine. + return '&' + characterReferences[value] + ';' + } +} + + +/***/ }), + +/***/ "../node_modules/micromark-util-html-tag-name/index.js": +/*!*************************************************************!*\ + !*** ../node_modules/micromark-util-html-tag-name/index.js ***! + \*************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ htmlBlockNames: () => (/* binding */ htmlBlockNames), +/* harmony export */ htmlRawNames: () => (/* binding */ htmlRawNames) +/* harmony export */ }); +/** + * List of lowercase HTML “block” tag names. + * + * The list, when parsing HTML (flow), results in more relaxed rules (condition + * 6). + * Because they are known blocks, the HTML-like syntax doesn’t have to be + * strictly parsed. + * For tag names not in this list, a more strict algorithm (condition 7) is used + * to detect whether the HTML-like syntax is seen as HTML (flow) or not. + * + * This is copied from: + * . + * + * > 👉 **Note**: `search` was added in `CommonMark@0.31`. + */ +const htmlBlockNames = [ + 'address', + 'article', + 'aside', + 'base', + 'basefont', + 'blockquote', + 'body', + 'caption', + 'center', + 'col', + 'colgroup', + 'dd', + 'details', + 'dialog', + 'dir', + 'div', + 'dl', + 'dt', + 'fieldset', + 'figcaption', + 'figure', + 'footer', + 'form', + 'frame', + 'frameset', + 'h1', + 'h2', + 'h3', + 'h4', + 'h5', + 'h6', + 'head', + 'header', + 'hr', + 'html', + 'iframe', + 'legend', + 'li', + 'link', + 'main', + 'menu', + 'menuitem', + 'nav', + 'noframes', + 'ol', + 'optgroup', + 'option', + 'p', + 'param', + 'search', + 'section', + 'summary', + 'table', + 'tbody', + 'td', + 'tfoot', + 'th', + 'thead', + 'title', + 'tr', + 'track', + 'ul' +] + +/** + * List of lowercase HTML “raw” tag names. + * + * The list, when parsing HTML (flow), results in HTML that can include lines + * without exiting, until a closing tag also in this list is found (condition + * 1). + * + * This module is copied from: + * . + * + * > 👉 **Note**: `textarea` was added in `CommonMark@0.30`. + */ +const htmlRawNames = ['pre', 'script', 'style', 'textarea'] + + +/***/ }), + +/***/ "../node_modules/micromark-util-normalize-identifier/dev/index.js": +/*!************************************************************************!*\ + !*** ../node_modules/micromark-util-normalize-identifier/dev/index.js ***! + \************************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ normalizeIdentifier: () => (/* binding */ normalizeIdentifier) +/* harmony export */ }); +/* harmony import */ var micromark_util_symbol_values_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! micromark-util-symbol/values.js */ "../node_modules/micromark-util-symbol/values.js"); + + +/** + * Normalize an identifier (as found in references, definitions). + * + * Collapses markdown whitespace, trim, and then lower- and uppercase. + * + * Some characters are considered “uppercase”, such as U+03F4 (`ϴ`), but if their + * lowercase counterpart (U+03B8 (`θ`)) is uppercased will result in a different + * uppercase character (U+0398 (`Θ`)). + * So, to get a canonical form, we perform both lower- and uppercase. + * + * Using uppercase last makes sure keys will never interact with default + * prototypal values (such as `constructor`): nothing in the prototype of + * `Object` is uppercase. + * + * @param {string} value + * Identifier to normalize. + * @returns {string} + * Normalized identifier. + */ +function normalizeIdentifier(value) { + return ( + value + // Collapse markdown whitespace. + .replace(/[\t\n\r ]+/g, micromark_util_symbol_values_js__WEBPACK_IMPORTED_MODULE_0__.values.space) + // Trim. + .replace(/^ | $/g, '') + // Some characters are considered “uppercase”, but if their lowercase + // counterpart is uppercased will result in a different uppercase + // character. + // Hence, to get that form, we perform both lower- and uppercase. + // Upper case makes sure keys will not interact with default prototypal + // methods: no method is uppercase. + .toLowerCase() + .toUpperCase() + ) +} + + +/***/ }), + +/***/ "../node_modules/micromark-util-resolve-all/index.js": +/*!***********************************************************!*\ + !*** ../node_modules/micromark-util-resolve-all/index.js ***! + \***********************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ resolveAll: () => (/* binding */ resolveAll) +/* harmony export */ }); +/** + * @typedef {import('micromark-util-types').Event} Event + * @typedef {import('micromark-util-types').Resolver} Resolver + * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext + */ + +/** + * Call all `resolveAll`s. + * + * @param {Array<{resolveAll?: Resolver | undefined}>} constructs + * List of constructs, optionally with `resolveAll`s. + * @param {Array} events + * List of events. + * @param {TokenizeContext} context + * Context used by `tokenize`. + * @returns {Array} + * Changed events. + */ +function resolveAll(constructs, events, context) { + /** @type {Array} */ + const called = [] + let index = -1 + + while (++index < constructs.length) { + const resolve = constructs[index].resolveAll + + if (resolve && !called.includes(resolve)) { + events = resolve(events, context) + called.push(resolve) + } + } + + return events +} + + +/***/ }), + +/***/ "../node_modules/micromark-util-sanitize-uri/dev/index.js": +/*!****************************************************************!*\ + !*** ../node_modules/micromark-util-sanitize-uri/dev/index.js ***! + \****************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ normalizeUri: () => (/* binding */ normalizeUri), +/* harmony export */ sanitizeUri: () => (/* binding */ sanitizeUri) +/* harmony export */ }); +/* harmony import */ var micromark_util_character__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! micromark-util-character */ "../node_modules/micromark-util-character/dev/index.js"); +/* harmony import */ var micromark_util_encode__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! micromark-util-encode */ "../node_modules/micromark-util-encode/index.js"); +/* harmony import */ var micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! micromark-util-symbol/codes.js */ "../node_modules/micromark-util-symbol/codes.js"); +/* harmony import */ var micromark_util_symbol_values_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! micromark-util-symbol/values.js */ "../node_modules/micromark-util-symbol/values.js"); + + + + + +/** + * Make a value safe for injection as a URL. + * + * This encodes unsafe characters with percent-encoding and skips already + * encoded sequences (see `normalizeUri`). + * Further unsafe characters are encoded as character references (see + * `micromark-util-encode`). + * + * A regex of allowed protocols can be given, in which case the URL is + * sanitized. + * For example, `/^(https?|ircs?|mailto|xmpp)$/i` can be used for `a[href]`, or + * `/^https?$/i` for `img[src]` (this is what `github.com` allows). + * If the URL includes an unknown protocol (one not matched by `protocol`, such + * as a dangerous example, `javascript:`), the value is ignored. + * + * @param {string | undefined} url + * URI to sanitize. + * @param {RegExp | null | undefined} [protocol] + * Allowed protocols. + * @returns {string} + * Sanitized URI. + */ +function sanitizeUri(url, protocol) { + const value = (0,micromark_util_encode__WEBPACK_IMPORTED_MODULE_0__.encode)(normalizeUri(url || '')) + + if (!protocol) { + return value + } + + const colon = value.indexOf(':') + const questionMark = value.indexOf('?') + const numberSign = value.indexOf('#') + const slash = value.indexOf('/') + + if ( + // If there is no protocol, it’s relative. + colon < 0 || + // If the first colon is after a `?`, `#`, or `/`, it’s not a protocol. + (slash > -1 && colon > slash) || + (questionMark > -1 && colon > questionMark) || + (numberSign > -1 && colon > numberSign) || + // It is a protocol, it should be allowed. + protocol.test(value.slice(0, colon)) + ) { + return value + } + + return '' +} + +/** + * Normalize a URL. + * + * Encode unsafe characters with percent-encoding, skipping already encoded + * sequences. + * + * @param {string} value + * URI to normalize. + * @returns {string} + * Normalized URI. + */ +function normalizeUri(value) { + /** @type {Array} */ + const result = [] + let index = -1 + let start = 0 + let skip = 0 + + while (++index < value.length) { + const code = value.charCodeAt(index) + /** @type {string} */ + let replace = '' + + // A correct percent encoded value. + if ( + code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.percentSign && + (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_2__.asciiAlphanumeric)(value.charCodeAt(index + 1)) && + (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_2__.asciiAlphanumeric)(value.charCodeAt(index + 2)) + ) { + skip = 2 + } + // ASCII. + else if (code < 128) { + if (!/[!#$&-;=?-Z_a-z~]/.test(String.fromCharCode(code))) { + replace = String.fromCharCode(code) + } + } + // Astral. + else if (code > 55295 && code < 57344) { + const next = value.charCodeAt(index + 1) + + // A correct surrogate pair. + if (code < 56320 && next > 56319 && next < 57344) { + replace = String.fromCharCode(code, next) + skip = 1 + } + // Lone surrogate. + else { + replace = micromark_util_symbol_values_js__WEBPACK_IMPORTED_MODULE_3__.values.replacementCharacter + } + } + // Unicode. + else { + replace = String.fromCharCode(code) + } + + if (replace) { + result.push(value.slice(start, index), encodeURIComponent(replace)) + start = index + skip + 1 + replace = '' + } + + if (skip) { + index += skip + skip = 0 + } + } + + return result.join('') + value.slice(start) +} + + +/***/ }), + +/***/ "../node_modules/micromark-util-subtokenize/dev/index.js": +/*!***************************************************************!*\ + !*** ../node_modules/micromark-util-subtokenize/dev/index.js ***! + \***************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ subtokenize: () => (/* binding */ subtokenize) +/* harmony export */ }); +/* harmony import */ var micromark_util_chunked__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! micromark-util-chunked */ "../node_modules/micromark-util-chunked/dev/index.js"); +/* harmony import */ var micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! micromark-util-symbol/codes.js */ "../node_modules/micromark-util-symbol/codes.js"); +/* harmony import */ var micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! micromark-util-symbol/types.js */ "../node_modules/micromark-util-symbol/types.js"); +/* harmony import */ var uvu_assert__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! uvu/assert */ "../node_modules/uvu/assert/index.mjs"); +/** + * @typedef {import('micromark-util-types').Chunk} Chunk + * @typedef {import('micromark-util-types').Event} Event + * @typedef {import('micromark-util-types').Token} Token + */ + + + + + + +/** + * Tokenize subcontent. + * + * @param {Array} events + * List of events. + * @returns {boolean} + * Whether subtokens were found. + */ +function subtokenize(events) { + /** @type {Record} */ + const jumps = {} + let index = -1 + /** @type {Event} */ + let event + /** @type {number | undefined} */ + let lineIndex + /** @type {number} */ + let otherIndex + /** @type {Event} */ + let otherEvent + /** @type {Array} */ + let parameters + /** @type {Array} */ + let subevents + /** @type {boolean | undefined} */ + let more + + while (++index < events.length) { + while (index in jumps) { + index = jumps[index] + } + + event = events[index] + + // Add a hook for the GFM tasklist extension, which needs to know if text + // is in the first content of a list item. + if ( + index && + event[1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.chunkFlow && + events[index - 1][1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.listItemPrefix + ) { + (0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(event[1]._tokenizer, 'expected `_tokenizer` on subtokens') + subevents = event[1]._tokenizer.events + otherIndex = 0 + + if ( + otherIndex < subevents.length && + subevents[otherIndex][1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.lineEndingBlank + ) { + otherIndex += 2 + } + + if ( + otherIndex < subevents.length && + subevents[otherIndex][1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.content + ) { + while (++otherIndex < subevents.length) { + if (subevents[otherIndex][1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.content) { + break + } + + if (subevents[otherIndex][1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.chunkText) { + subevents[otherIndex][1]._isInFirstContentOfListItem = true + otherIndex++ + } + } + } + } + + // Enter. + if (event[0] === 'enter') { + if (event[1].contentType) { + Object.assign(jumps, subcontent(events, index)) + index = jumps[index] + more = true + } + } + // Exit. + else if (event[1]._container) { + otherIndex = index + lineIndex = undefined + + while (otherIndex--) { + otherEvent = events[otherIndex] + + if ( + otherEvent[1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.lineEnding || + otherEvent[1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.lineEndingBlank + ) { + if (otherEvent[0] === 'enter') { + if (lineIndex) { + events[lineIndex][1].type = micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.lineEndingBlank + } + + otherEvent[1].type = micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.lineEnding + lineIndex = otherIndex + } + } else { + break + } + } + + if (lineIndex) { + // Fix position. + event[1].end = Object.assign({}, events[lineIndex][1].start) + + // Switch container exit w/ line endings. + parameters = events.slice(lineIndex, index) + parameters.unshift(event) + ;(0,micromark_util_chunked__WEBPACK_IMPORTED_MODULE_2__.splice)(events, lineIndex, index - lineIndex + 1, parameters) + } + } + } + + return !more +} + +/** + * Tokenize embedded tokens. + * + * @param {Array} events + * @param {number} eventIndex + * @returns {Record} + */ +function subcontent(events, eventIndex) { + const token = events[eventIndex][1] + const context = events[eventIndex][2] + let startPosition = eventIndex - 1 + /** @type {Array} */ + const startPositions = [] + ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(token.contentType, 'expected `contentType` on subtokens') + const tokenizer = + token._tokenizer || context.parser[token.contentType](token.start) + const childEvents = tokenizer.events + /** @type {Array<[number, number]>} */ + const jumps = [] + /** @type {Record} */ + const gaps = {} + /** @type {Array} */ + let stream + /** @type {Token | undefined} */ + let previous + let index = -1 + /** @type {Token | undefined} */ + let current = token + let adjust = 0 + let start = 0 + const breaks = [start] + + // Loop forward through the linked tokens to pass them in order to the + // subtokenizer. + while (current) { + // Find the position of the event for this token. + while (events[++startPosition][1] !== current) { + // Empty. + } + + (0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)( + !previous || current.previous === previous, + 'expected previous to match' + ) + ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(!previous || previous.next === current, 'expected next to match') + + startPositions.push(startPosition) + + if (!current._tokenizer) { + stream = context.sliceStream(current) + + if (!current.next) { + stream.push(micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_3__.codes.eof) + } + + if (previous) { + tokenizer.defineSkip(current.start) + } + + if (current._isInFirstContentOfListItem) { + tokenizer._gfmTasklistFirstContentOfListItem = true + } + + tokenizer.write(stream) + + if (current._isInFirstContentOfListItem) { + tokenizer._gfmTasklistFirstContentOfListItem = undefined + } + } + + // Unravel the next token. + previous = current + current = current.next + } + + // Now, loop back through all events (and linked tokens), to figure out which + // parts belong where. + current = token + + while (++index < childEvents.length) { + if ( + // Find a void token that includes a break. + childEvents[index][0] === 'exit' && + childEvents[index - 1][0] === 'enter' && + childEvents[index][1].type === childEvents[index - 1][1].type && + childEvents[index][1].start.line !== childEvents[index][1].end.line + ) { + (0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(current, 'expected a current token') + start = index + 1 + breaks.push(start) + // Help GC. + current._tokenizer = undefined + current.previous = undefined + current = current.next + } + } + + // Help GC. + tokenizer.events = [] + + // If there’s one more token (which is the cases for lines that end in an + // EOF), that’s perfect: the last point we found starts it. + // If there isn’t then make sure any remaining content is added to it. + if (current) { + // Help GC. + current._tokenizer = undefined + current.previous = undefined + ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(!current.next, 'expected no next token') + } else { + breaks.pop() + } + + // Now splice the events from the subtokenizer into the current events, + // moving back to front so that splice indices aren’t affected. + index = breaks.length + + while (index--) { + const slice = childEvents.slice(breaks[index], breaks[index + 1]) + const start = startPositions.pop() + ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(start !== undefined, 'expected a start position when splicing') + jumps.unshift([start, start + slice.length - 1]) + ;(0,micromark_util_chunked__WEBPACK_IMPORTED_MODULE_2__.splice)(events, start, 2, slice) + } + + index = -1 + + while (++index < jumps.length) { + gaps[adjust + jumps[index][0]] = adjust + jumps[index][1] + adjust += jumps[index][1] - jumps[index][0] - 1 + } + + return gaps +} + + +/***/ }), + +/***/ "../node_modules/micromark-util-symbol/codes.js": +/*!******************************************************!*\ + !*** ../node_modules/micromark-util-symbol/codes.js ***! + \******************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ codes: () => (/* binding */ codes) +/* harmony export */ }); +/** + * Character codes. + * + * This module is compiled away! + * + * micromark works based on character codes. + * This module contains constants for the ASCII block and the replacement + * character. + * A couple of them are handled in a special way, such as the line endings + * (CR, LF, and CR+LF, commonly known as end-of-line: EOLs), the tab (horizontal + * tab) and its expansion based on what column it’s at (virtual space), + * and the end-of-file (eof) character. + * As values are preprocessed before handling them, the actual characters LF, + * CR, HT, and NUL (which is present as the replacement character), are + * guaranteed to not exist. + * + * Unicode basic latin block. + */ +const codes = /** @type {const} */ ({ + carriageReturn: -5, + lineFeed: -4, + carriageReturnLineFeed: -3, + horizontalTab: -2, + virtualSpace: -1, + eof: null, + nul: 0, + soh: 1, + stx: 2, + etx: 3, + eot: 4, + enq: 5, + ack: 6, + bel: 7, + bs: 8, + ht: 9, // `\t` + lf: 10, // `\n` + vt: 11, // `\v` + ff: 12, // `\f` + cr: 13, // `\r` + so: 14, + si: 15, + dle: 16, + dc1: 17, + dc2: 18, + dc3: 19, + dc4: 20, + nak: 21, + syn: 22, + etb: 23, + can: 24, + em: 25, + sub: 26, + esc: 27, + fs: 28, + gs: 29, + rs: 30, + us: 31, + space: 32, + exclamationMark: 33, // `!` + quotationMark: 34, // `"` + numberSign: 35, // `#` + dollarSign: 36, // `$` + percentSign: 37, // `%` + ampersand: 38, // `&` + apostrophe: 39, // `'` + leftParenthesis: 40, // `(` + rightParenthesis: 41, // `)` + asterisk: 42, // `*` + plusSign: 43, // `+` + comma: 44, // `,` + dash: 45, // `-` + dot: 46, // `.` + slash: 47, // `/` + digit0: 48, // `0` + digit1: 49, // `1` + digit2: 50, // `2` + digit3: 51, // `3` + digit4: 52, // `4` + digit5: 53, // `5` + digit6: 54, // `6` + digit7: 55, // `7` + digit8: 56, // `8` + digit9: 57, // `9` + colon: 58, // `:` + semicolon: 59, // `;` + lessThan: 60, // `<` + equalsTo: 61, // `=` + greaterThan: 62, // `>` + questionMark: 63, // `?` + atSign: 64, // `@` + uppercaseA: 65, // `A` + uppercaseB: 66, // `B` + uppercaseC: 67, // `C` + uppercaseD: 68, // `D` + uppercaseE: 69, // `E` + uppercaseF: 70, // `F` + uppercaseG: 71, // `G` + uppercaseH: 72, // `H` + uppercaseI: 73, // `I` + uppercaseJ: 74, // `J` + uppercaseK: 75, // `K` + uppercaseL: 76, // `L` + uppercaseM: 77, // `M` + uppercaseN: 78, // `N` + uppercaseO: 79, // `O` + uppercaseP: 80, // `P` + uppercaseQ: 81, // `Q` + uppercaseR: 82, // `R` + uppercaseS: 83, // `S` + uppercaseT: 84, // `T` + uppercaseU: 85, // `U` + uppercaseV: 86, // `V` + uppercaseW: 87, // `W` + uppercaseX: 88, // `X` + uppercaseY: 89, // `Y` + uppercaseZ: 90, // `Z` + leftSquareBracket: 91, // `[` + backslash: 92, // `\` + rightSquareBracket: 93, // `]` + caret: 94, // `^` + underscore: 95, // `_` + graveAccent: 96, // `` ` `` + lowercaseA: 97, // `a` + lowercaseB: 98, // `b` + lowercaseC: 99, // `c` + lowercaseD: 100, // `d` + lowercaseE: 101, // `e` + lowercaseF: 102, // `f` + lowercaseG: 103, // `g` + lowercaseH: 104, // `h` + lowercaseI: 105, // `i` + lowercaseJ: 106, // `j` + lowercaseK: 107, // `k` + lowercaseL: 108, // `l` + lowercaseM: 109, // `m` + lowercaseN: 110, // `n` + lowercaseO: 111, // `o` + lowercaseP: 112, // `p` + lowercaseQ: 113, // `q` + lowercaseR: 114, // `r` + lowercaseS: 115, // `s` + lowercaseT: 116, // `t` + lowercaseU: 117, // `u` + lowercaseV: 118, // `v` + lowercaseW: 119, // `w` + lowercaseX: 120, // `x` + lowercaseY: 121, // `y` + lowercaseZ: 122, // `z` + leftCurlyBrace: 123, // `{` + verticalBar: 124, // `|` + rightCurlyBrace: 125, // `}` + tilde: 126, // `~` + del: 127, + // Unicode Specials block. + byteOrderMarker: 65279, + // Unicode Specials block. + replacementCharacter: 65533 // `` +}) + + +/***/ }), + +/***/ "../node_modules/micromark-util-symbol/constants.js": +/*!**********************************************************!*\ + !*** ../node_modules/micromark-util-symbol/constants.js ***! + \**********************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ constants: () => (/* binding */ constants) +/* harmony export */ }); +/** + * This module is compiled away! + * + * Parsing markdown comes with a couple of constants, such as minimum or maximum + * sizes of certain sequences. + * Additionally, there are a couple symbols used inside micromark. + * These are all defined here, but compiled away by scripts. + */ +const constants = /** @type {const} */ ({ + attentionSideBefore: 1, // Symbol to mark an attention sequence as before content: `*a` + attentionSideAfter: 2, // Symbol to mark an attention sequence as after content: `a*` + atxHeadingOpeningFenceSizeMax: 6, // 6 number signs is fine, 7 isn’t. + autolinkDomainSizeMax: 63, // 63 characters is fine, 64 is too many. + autolinkSchemeSizeMax: 32, // 32 characters is fine, 33 is too many. + cdataOpeningString: 'CDATA[', // And preceded by `` + htmlComment: 2, // Symbol for `` + htmlInstruction: 3, // Symbol for `` + htmlDeclaration: 4, // Symbol for `` + htmlCdata: 5, // Symbol for `` + htmlBasic: 6, // Symbol for `` + htmlRawSizeMax: 8, // Length of `textarea`. + linkResourceDestinationBalanceMax: 32, // See: , + linkReferenceSizeMax: 999, // See: + listItemValueSizeMax: 10, // See: + numericBaseDecimal: 10, + numericBaseHexadecimal: 0x10, + tabSize: 4, // Tabs have a hard-coded size of 4, per CommonMark. + thematicBreakMarkerCountMin: 3, // At least 3 asterisks, dashes, or underscores are needed. + v8MaxSafeChunkSize: 10000 // V8 (and potentially others) have problems injecting giant arrays into other arrays, hence we operate in chunks. +}) + + +/***/ }), + +/***/ "../node_modules/micromark-util-symbol/types.js": +/*!******************************************************!*\ + !*** ../node_modules/micromark-util-symbol/types.js ***! + \******************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ types: () => (/* binding */ types) +/* harmony export */ }); +/** + * This module is compiled away! + * + * Here is the list of all types of tokens exposed by micromark, with a short + * explanation of what they include and where they are found. + * In picking names, generally, the rule is to be as explicit as possible + * instead of reusing names. + * For example, there is a `definitionDestination` and a `resourceDestination`, + * instead of one shared name. + */ + +// Note: when changing the next record, you must also change `TokenTypeMap` +// in `micromark-util-types/index.d.ts`. +const types = /** @type {const} */ ({ + // Generic type for data, such as in a title, a destination, etc. + data: 'data', + + // Generic type for syntactic whitespace (tabs, virtual spaces, spaces). + // Such as, between a fenced code fence and an info string. + whitespace: 'whitespace', + + // Generic type for line endings (line feed, carriage return, carriage return + + // line feed). + lineEnding: 'lineEnding', + + // A line ending, but ending a blank line. + lineEndingBlank: 'lineEndingBlank', + + // Generic type for whitespace (tabs, virtual spaces, spaces) at the start of a + // line. + linePrefix: 'linePrefix', + + // Generic type for whitespace (tabs, virtual spaces, spaces) at the end of a + // line. + lineSuffix: 'lineSuffix', + + // Whole ATX heading: + // + // ```markdown + // # + // ## Alpha + // ### Bravo ### + // ``` + // + // Includes `atxHeadingSequence`, `whitespace`, `atxHeadingText`. + atxHeading: 'atxHeading', + + // Sequence of number signs in an ATX heading (`###`). + atxHeadingSequence: 'atxHeadingSequence', + + // Content in an ATX heading (`alpha`). + // Includes text. + atxHeadingText: 'atxHeadingText', + + // Whole autolink (`` or ``) + // Includes `autolinkMarker` and `autolinkProtocol` or `autolinkEmail`. + autolink: 'autolink', + + // Email autolink w/o markers (`admin@example.com`) + autolinkEmail: 'autolinkEmail', + + // Marker around an `autolinkProtocol` or `autolinkEmail` (`<` or `>`). + autolinkMarker: 'autolinkMarker', + + // Protocol autolink w/o markers (`https://example.com`) + autolinkProtocol: 'autolinkProtocol', + + // A whole character escape (`\-`). + // Includes `escapeMarker` and `characterEscapeValue`. + characterEscape: 'characterEscape', + + // The escaped character (`-`). + characterEscapeValue: 'characterEscapeValue', + + // A whole character reference (`&`, `≠`, or `𝌆`). + // Includes `characterReferenceMarker`, an optional + // `characterReferenceMarkerNumeric`, in which case an optional + // `characterReferenceMarkerHexadecimal`, and a `characterReferenceValue`. + characterReference: 'characterReference', + + // The start or end marker (`&` or `;`). + characterReferenceMarker: 'characterReferenceMarker', + + // Mark reference as numeric (`#`). + characterReferenceMarkerNumeric: 'characterReferenceMarkerNumeric', + + // Mark reference as numeric (`x` or `X`). + characterReferenceMarkerHexadecimal: 'characterReferenceMarkerHexadecimal', + + // Value of character reference w/o markers (`amp`, `8800`, or `1D306`). + characterReferenceValue: 'characterReferenceValue', + + // Whole fenced code: + // + // ````markdown + // ```js + // alert(1) + // ``` + // ```` + codeFenced: 'codeFenced', + + // A fenced code fence, including whitespace, sequence, info, and meta + // (` ```js `). + codeFencedFence: 'codeFencedFence', + + // Sequence of grave accent or tilde characters (` ``` `) in a fence. + codeFencedFenceSequence: 'codeFencedFenceSequence', + + // Info word (`js`) in a fence. + // Includes string. + codeFencedFenceInfo: 'codeFencedFenceInfo', + + // Meta words (`highlight="1"`) in a fence. + // Includes string. + codeFencedFenceMeta: 'codeFencedFenceMeta', + + // A line of code. + codeFlowValue: 'codeFlowValue', + + // Whole indented code: + // + // ```markdown + // alert(1) + // ``` + // + // Includes `lineEnding`, `linePrefix`, and `codeFlowValue`. + codeIndented: 'codeIndented', + + // A text code (``` `alpha` ```). + // Includes `codeTextSequence`, `codeTextData`, `lineEnding`, and can include + // `codeTextPadding`. + codeText: 'codeText', + + codeTextData: 'codeTextData', + + // A space or line ending right after or before a tick. + codeTextPadding: 'codeTextPadding', + + // A text code fence (` `` `). + codeTextSequence: 'codeTextSequence', + + // Whole content: + // + // ```markdown + // [a]: b + // c + // = + // d + // ``` + // + // Includes `paragraph` and `definition`. + content: 'content', + // Whole definition: + // + // ```markdown + // [micromark]: https://github.com/micromark/micromark + // ``` + // + // Includes `definitionLabel`, `definitionMarker`, `whitespace`, + // `definitionDestination`, and optionally `lineEnding` and `definitionTitle`. + definition: 'definition', + + // Destination of a definition (`https://github.com/micromark/micromark` or + // ``). + // Includes `definitionDestinationLiteral` or `definitionDestinationRaw`. + definitionDestination: 'definitionDestination', + + // Enclosed destination of a definition + // (``). + // Includes `definitionDestinationLiteralMarker` and optionally + // `definitionDestinationString`. + definitionDestinationLiteral: 'definitionDestinationLiteral', + + // Markers of an enclosed definition destination (`<` or `>`). + definitionDestinationLiteralMarker: 'definitionDestinationLiteralMarker', + + // Unenclosed destination of a definition + // (`https://github.com/micromark/micromark`). + // Includes `definitionDestinationString`. + definitionDestinationRaw: 'definitionDestinationRaw', + + // Text in an destination (`https://github.com/micromark/micromark`). + // Includes string. + definitionDestinationString: 'definitionDestinationString', + + // Label of a definition (`[micromark]`). + // Includes `definitionLabelMarker` and `definitionLabelString`. + definitionLabel: 'definitionLabel', + + // Markers of a definition label (`[` or `]`). + definitionLabelMarker: 'definitionLabelMarker', + + // Value of a definition label (`micromark`). + // Includes string. + definitionLabelString: 'definitionLabelString', + + // Marker between a label and a destination (`:`). + definitionMarker: 'definitionMarker', + + // Title of a definition (`"x"`, `'y'`, or `(z)`). + // Includes `definitionTitleMarker` and optionally `definitionTitleString`. + definitionTitle: 'definitionTitle', + + // Marker around a title of a definition (`"`, `'`, `(`, or `)`). + definitionTitleMarker: 'definitionTitleMarker', + + // Data without markers in a title (`z`). + // Includes string. + definitionTitleString: 'definitionTitleString', + + // Emphasis (`*alpha*`). + // Includes `emphasisSequence` and `emphasisText`. + emphasis: 'emphasis', + + // Sequence of emphasis markers (`*` or `_`). + emphasisSequence: 'emphasisSequence', + + // Emphasis text (`alpha`). + // Includes text. + emphasisText: 'emphasisText', + + // The character escape marker (`\`). + escapeMarker: 'escapeMarker', + + // A hard break created with a backslash (`\\n`). + // Note: does not include the line ending. + hardBreakEscape: 'hardBreakEscape', + + // A hard break created with trailing spaces (` \n`). + // Does not include the line ending. + hardBreakTrailing: 'hardBreakTrailing', + + // Flow HTML: + // + // ```markdown + //
    b`). + // Includes `lineEnding`, `htmlTextData`. + htmlText: 'htmlText', + + htmlTextData: 'htmlTextData', + + // Whole image (`![alpha](bravo)`, `![alpha][bravo]`, `![alpha][]`, or + // `![alpha]`). + // Includes `label` and an optional `resource` or `reference`. + image: 'image', + + // Whole link label (`[*alpha*]`). + // Includes `labelLink` or `labelImage`, `labelText`, and `labelEnd`. + label: 'label', + + // Text in an label (`*alpha*`). + // Includes text. + labelText: 'labelText', + + // Start a link label (`[`). + // Includes a `labelMarker`. + labelLink: 'labelLink', + + // Start an image label (`![`). + // Includes `labelImageMarker` and `labelMarker`. + labelImage: 'labelImage', + + // Marker of a label (`[` or `]`). + labelMarker: 'labelMarker', + + // Marker to start an image (`!`). + labelImageMarker: 'labelImageMarker', + + // End a label (`]`). + // Includes `labelMarker`. + labelEnd: 'labelEnd', + + // Whole link (`[alpha](bravo)`, `[alpha][bravo]`, `[alpha][]`, or `[alpha]`). + // Includes `label` and an optional `resource` or `reference`. + link: 'link', + + // Whole paragraph: + // + // ```markdown + // alpha + // bravo. + // ``` + // + // Includes text. + paragraph: 'paragraph', + + // A reference (`[alpha]` or `[]`). + // Includes `referenceMarker` and an optional `referenceString`. + reference: 'reference', + + // A reference marker (`[` or `]`). + referenceMarker: 'referenceMarker', + + // Reference text (`alpha`). + // Includes string. + referenceString: 'referenceString', + + // A resource (`(https://example.com "alpha")`). + // Includes `resourceMarker`, an optional `resourceDestination` with an optional + // `whitespace` and `resourceTitle`. + resource: 'resource', + + // A resource destination (`https://example.com`). + // Includes `resourceDestinationLiteral` or `resourceDestinationRaw`. + resourceDestination: 'resourceDestination', + + // A literal resource destination (``). + // Includes `resourceDestinationLiteralMarker` and optionally + // `resourceDestinationString`. + resourceDestinationLiteral: 'resourceDestinationLiteral', + + // A resource destination marker (`<` or `>`). + resourceDestinationLiteralMarker: 'resourceDestinationLiteralMarker', + + // A raw resource destination (`https://example.com`). + // Includes `resourceDestinationString`. + resourceDestinationRaw: 'resourceDestinationRaw', + + // Resource destination text (`https://example.com`). + // Includes string. + resourceDestinationString: 'resourceDestinationString', + + // A resource marker (`(` or `)`). + resourceMarker: 'resourceMarker', + + // A resource title (`"alpha"`, `'alpha'`, or `(alpha)`). + // Includes `resourceTitleMarker` and optionally `resourceTitleString`. + resourceTitle: 'resourceTitle', + + // A resource title marker (`"`, `'`, `(`, or `)`). + resourceTitleMarker: 'resourceTitleMarker', + + // Resource destination title (`alpha`). + // Includes string. + resourceTitleString: 'resourceTitleString', + + // Whole setext heading: + // + // ```markdown + // alpha + // bravo + // ===== + // ``` + // + // Includes `setextHeadingText`, `lineEnding`, `linePrefix`, and + // `setextHeadingLine`. + setextHeading: 'setextHeading', + + // Content in a setext heading (`alpha\nbravo`). + // Includes text. + setextHeadingText: 'setextHeadingText', + + // Underline in a setext heading, including whitespace suffix (`==`). + // Includes `setextHeadingLineSequence`. + setextHeadingLine: 'setextHeadingLine', + + // Sequence of equals or dash characters in underline in a setext heading (`-`). + setextHeadingLineSequence: 'setextHeadingLineSequence', + + // Strong (`**alpha**`). + // Includes `strongSequence` and `strongText`. + strong: 'strong', + + // Sequence of strong markers (`**` or `__`). + strongSequence: 'strongSequence', + + // Strong text (`alpha`). + // Includes text. + strongText: 'strongText', + + // Whole thematic break: + // + // ```markdown + // * * * + // ``` + // + // Includes `thematicBreakSequence` and `whitespace`. + thematicBreak: 'thematicBreak', + + // A sequence of one or more thematic break markers (`***`). + thematicBreakSequence: 'thematicBreakSequence', + + // Whole block quote: + // + // ```markdown + // > a + // > + // > b + // ``` + // + // Includes `blockQuotePrefix` and flow. + blockQuote: 'blockQuote', + // The `>` or `> ` of a block quote. + blockQuotePrefix: 'blockQuotePrefix', + // The `>` of a block quote prefix. + blockQuoteMarker: 'blockQuoteMarker', + // The optional ` ` of a block quote prefix. + blockQuotePrefixWhitespace: 'blockQuotePrefixWhitespace', + + // Whole unordered list: + // + // ```markdown + // - a + // b + // ``` + // + // Includes `listItemPrefix`, flow, and optionally `listItemIndent` on further + // lines. + listOrdered: 'listOrdered', + + // Whole ordered list: + // + // ```markdown + // 1. a + // b + // ``` + // + // Includes `listItemPrefix`, flow, and optionally `listItemIndent` on further + // lines. + listUnordered: 'listUnordered', + + // The indent of further list item lines. + listItemIndent: 'listItemIndent', + + // A marker, as in, `*`, `+`, `-`, `.`, or `)`. + listItemMarker: 'listItemMarker', + + // The thing that starts a list item, such as `1. `. + // Includes `listItemValue` if ordered, `listItemMarker`, and + // `listItemPrefixWhitespace` (unless followed by a line ending). + listItemPrefix: 'listItemPrefix', + + // The whitespace after a marker. + listItemPrefixWhitespace: 'listItemPrefixWhitespace', + + // The numerical value of an ordered item. + listItemValue: 'listItemValue', + + // Internal types used for subtokenizers, compiled away + chunkDocument: 'chunkDocument', + chunkContent: 'chunkContent', + chunkFlow: 'chunkFlow', + chunkText: 'chunkText', + chunkString: 'chunkString' +}) + + +/***/ }), + +/***/ "../node_modules/micromark-util-symbol/values.js": +/*!*******************************************************!*\ + !*** ../node_modules/micromark-util-symbol/values.js ***! + \*******************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ values: () => (/* binding */ values) +/* harmony export */ }); +/** + * This module is compiled away! + * + * While micromark works based on character codes, this module includes the + * string versions of ’em. + * The C0 block, except for LF, CR, HT, and w/ the replacement character added, + * are available here. + */ +const values = /** @type {const} */ ({ + ht: '\t', + lf: '\n', + cr: '\r', + space: ' ', + exclamationMark: '!', + quotationMark: '"', + numberSign: '#', + dollarSign: '$', + percentSign: '%', + ampersand: '&', + apostrophe: "'", + leftParenthesis: '(', + rightParenthesis: ')', + asterisk: '*', + plusSign: '+', + comma: ',', + dash: '-', + dot: '.', + slash: '/', + digit0: '0', + digit1: '1', + digit2: '2', + digit3: '3', + digit4: '4', + digit5: '5', + digit6: '6', + digit7: '7', + digit8: '8', + digit9: '9', + colon: ':', + semicolon: ';', + lessThan: '<', + equalsTo: '=', + greaterThan: '>', + questionMark: '?', + atSign: '@', + uppercaseA: 'A', + uppercaseB: 'B', + uppercaseC: 'C', + uppercaseD: 'D', + uppercaseE: 'E', + uppercaseF: 'F', + uppercaseG: 'G', + uppercaseH: 'H', + uppercaseI: 'I', + uppercaseJ: 'J', + uppercaseK: 'K', + uppercaseL: 'L', + uppercaseM: 'M', + uppercaseN: 'N', + uppercaseO: 'O', + uppercaseP: 'P', + uppercaseQ: 'Q', + uppercaseR: 'R', + uppercaseS: 'S', + uppercaseT: 'T', + uppercaseU: 'U', + uppercaseV: 'V', + uppercaseW: 'W', + uppercaseX: 'X', + uppercaseY: 'Y', + uppercaseZ: 'Z', + leftSquareBracket: '[', + backslash: '\\', + rightSquareBracket: ']', + caret: '^', + underscore: '_', + graveAccent: '`', + lowercaseA: 'a', + lowercaseB: 'b', + lowercaseC: 'c', + lowercaseD: 'd', + lowercaseE: 'e', + lowercaseF: 'f', + lowercaseG: 'g', + lowercaseH: 'h', + lowercaseI: 'i', + lowercaseJ: 'j', + lowercaseK: 'k', + lowercaseL: 'l', + lowercaseM: 'm', + lowercaseN: 'n', + lowercaseO: 'o', + lowercaseP: 'p', + lowercaseQ: 'q', + lowercaseR: 'r', + lowercaseS: 's', + lowercaseT: 't', + lowercaseU: 'u', + lowercaseV: 'v', + lowercaseW: 'w', + lowercaseX: 'x', + lowercaseY: 'y', + lowercaseZ: 'z', + leftCurlyBrace: '{', + verticalBar: '|', + rightCurlyBrace: '}', + tilde: '~', + replacementCharacter: '' +}) + + +/***/ }), + +/***/ "../node_modules/micromark/dev/lib/constructs.js": +/*!*******************************************************!*\ + !*** ../node_modules/micromark/dev/lib/constructs.js ***! + \*******************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ attentionMarkers: () => (/* binding */ attentionMarkers), +/* harmony export */ contentInitial: () => (/* binding */ contentInitial), +/* harmony export */ disable: () => (/* binding */ disable), +/* harmony export */ document: () => (/* binding */ document), +/* harmony export */ flow: () => (/* binding */ flow), +/* harmony export */ flowInitial: () => (/* binding */ flowInitial), +/* harmony export */ insideSpan: () => (/* binding */ insideSpan), +/* harmony export */ string: () => (/* binding */ string), +/* harmony export */ text: () => (/* binding */ text) +/* harmony export */ }); +/* harmony import */ var micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! micromark-core-commonmark */ "../node_modules/micromark-core-commonmark/dev/lib/list.js"); +/* harmony import */ var micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! micromark-core-commonmark */ "../node_modules/micromark-core-commonmark/dev/lib/block-quote.js"); +/* harmony import */ var micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! micromark-core-commonmark */ "../node_modules/micromark-core-commonmark/dev/lib/definition.js"); +/* harmony import */ var micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! micromark-core-commonmark */ "../node_modules/micromark-core-commonmark/dev/lib/code-indented.js"); +/* harmony import */ var micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! micromark-core-commonmark */ "../node_modules/micromark-core-commonmark/dev/lib/heading-atx.js"); +/* harmony import */ var micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! micromark-core-commonmark */ "../node_modules/micromark-core-commonmark/dev/lib/thematic-break.js"); +/* harmony import */ var micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! micromark-core-commonmark */ "../node_modules/micromark-core-commonmark/dev/lib/setext-underline.js"); +/* harmony import */ var micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! micromark-core-commonmark */ "../node_modules/micromark-core-commonmark/dev/lib/html-flow.js"); +/* harmony import */ var micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! micromark-core-commonmark */ "../node_modules/micromark-core-commonmark/dev/lib/code-fenced.js"); +/* harmony import */ var micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! micromark-core-commonmark */ "../node_modules/micromark-core-commonmark/dev/lib/character-reference.js"); +/* harmony import */ var micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! micromark-core-commonmark */ "../node_modules/micromark-core-commonmark/dev/lib/character-escape.js"); +/* harmony import */ var micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! micromark-core-commonmark */ "../node_modules/micromark-core-commonmark/dev/lib/line-ending.js"); +/* harmony import */ var micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! micromark-core-commonmark */ "../node_modules/micromark-core-commonmark/dev/lib/label-start-image.js"); +/* harmony import */ var micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! micromark-core-commonmark */ "../node_modules/micromark-core-commonmark/dev/lib/attention.js"); +/* harmony import */ var micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! micromark-core-commonmark */ "../node_modules/micromark-core-commonmark/dev/lib/autolink.js"); +/* harmony import */ var micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! micromark-core-commonmark */ "../node_modules/micromark-core-commonmark/dev/lib/html-text.js"); +/* harmony import */ var micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! micromark-core-commonmark */ "../node_modules/micromark-core-commonmark/dev/lib/label-start-link.js"); +/* harmony import */ var micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! micromark-core-commonmark */ "../node_modules/micromark-core-commonmark/dev/lib/hard-break-escape.js"); +/* harmony import */ var micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! micromark-core-commonmark */ "../node_modules/micromark-core-commonmark/dev/lib/label-end.js"); +/* harmony import */ var micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! micromark-core-commonmark */ "../node_modules/micromark-core-commonmark/dev/lib/code-text.js"); +/* harmony import */ var micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! micromark-util-symbol/codes.js */ "../node_modules/micromark-util-symbol/codes.js"); +/* harmony import */ var _initialize_text_js__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./initialize/text.js */ "../node_modules/micromark/dev/lib/initialize/text.js"); +/** + * @typedef {import('micromark-util-types').Extension} Extension + */ + + + + + +/** @satisfies {Extension['document']} */ +const document = { + [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.asterisk]: micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_1__.list, + [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.plusSign]: micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_1__.list, + [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.dash]: micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_1__.list, + [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.digit0]: micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_1__.list, + [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.digit1]: micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_1__.list, + [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.digit2]: micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_1__.list, + [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.digit3]: micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_1__.list, + [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.digit4]: micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_1__.list, + [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.digit5]: micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_1__.list, + [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.digit6]: micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_1__.list, + [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.digit7]: micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_1__.list, + [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.digit8]: micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_1__.list, + [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.digit9]: micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_1__.list, + [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.greaterThan]: micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_2__.blockQuote +} + +/** @satisfies {Extension['contentInitial']} */ +const contentInitial = { + [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.leftSquareBracket]: micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_3__.definition +} + +/** @satisfies {Extension['flowInitial']} */ +const flowInitial = { + [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.horizontalTab]: micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_4__.codeIndented, + [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.virtualSpace]: micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_4__.codeIndented, + [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.space]: micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_4__.codeIndented +} + +/** @satisfies {Extension['flow']} */ +const flow = { + [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.numberSign]: micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_5__.headingAtx, + [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.asterisk]: micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_6__.thematicBreak, + [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.dash]: [micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_7__.setextUnderline, micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_6__.thematicBreak], + [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.lessThan]: micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_8__.htmlFlow, + [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.equalsTo]: micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_7__.setextUnderline, + [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.underscore]: micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_6__.thematicBreak, + [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.graveAccent]: micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_9__.codeFenced, + [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.tilde]: micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_9__.codeFenced +} + +/** @satisfies {Extension['string']} */ +const string = { + [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.ampersand]: micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_10__.characterReference, + [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.backslash]: micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_11__.characterEscape +} + +/** @satisfies {Extension['text']} */ +const text = { + [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.carriageReturn]: micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_12__.lineEnding, + [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.lineFeed]: micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_12__.lineEnding, + [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.carriageReturnLineFeed]: micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_12__.lineEnding, + [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.exclamationMark]: micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_13__.labelStartImage, + [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.ampersand]: micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_10__.characterReference, + [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.asterisk]: micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_14__.attention, + [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.lessThan]: [micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_15__.autolink, micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_16__.htmlText], + [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.leftSquareBracket]: micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_17__.labelStartLink, + [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.backslash]: [micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_18__.hardBreakEscape, micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_11__.characterEscape], + [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.rightSquareBracket]: micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_19__.labelEnd, + [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.underscore]: micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_14__.attention, + [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.graveAccent]: micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_20__.codeText +} + +/** @satisfies {Extension['insideSpan']} */ +const insideSpan = {null: [micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_14__.attention, _initialize_text_js__WEBPACK_IMPORTED_MODULE_21__.resolver]} + +/** @satisfies {Extension['attentionMarkers']} */ +const attentionMarkers = {null: [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.asterisk, micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.underscore]} + +/** @satisfies {Extension['disable']} */ +const disable = {null: []} + + +/***/ }), + +/***/ "../node_modules/micromark/dev/lib/create-tokenizer.js": +/*!*************************************************************!*\ + !*** ../node_modules/micromark/dev/lib/create-tokenizer.js ***! + \*************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ createTokenizer: () => (/* binding */ createTokenizer) +/* harmony export */ }); +/* harmony import */ var debug__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! debug */ "../node_modules/debug/src/browser.js"); +/* harmony import */ var micromark_util_character__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! micromark-util-character */ "../node_modules/micromark-util-character/dev/index.js"); +/* harmony import */ var micromark_util_chunked__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! micromark-util-chunked */ "../node_modules/micromark-util-chunked/dev/index.js"); +/* harmony import */ var micromark_util_resolve_all__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! micromark-util-resolve-all */ "../node_modules/micromark-util-resolve-all/index.js"); +/* harmony import */ var micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! micromark-util-symbol/codes.js */ "../node_modules/micromark-util-symbol/codes.js"); +/* harmony import */ var micromark_util_symbol_values_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! micromark-util-symbol/values.js */ "../node_modules/micromark-util-symbol/values.js"); +/* harmony import */ var uvu_assert__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! uvu/assert */ "../node_modules/uvu/assert/index.mjs"); +/** + * @typedef {import('micromark-util-types').Chunk} Chunk + * @typedef {import('micromark-util-types').Code} Code + * @typedef {import('micromark-util-types').Construct} Construct + * @typedef {import('micromark-util-types').ConstructRecord} ConstructRecord + * @typedef {import('micromark-util-types').Effects} Effects + * @typedef {import('micromark-util-types').InitialConstruct} InitialConstruct + * @typedef {import('micromark-util-types').ParseContext} ParseContext + * @typedef {import('micromark-util-types').Point} Point + * @typedef {import('micromark-util-types').State} State + * @typedef {import('micromark-util-types').Token} Token + * @typedef {import('micromark-util-types').TokenType} TokenType + * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext + */ + +/** + * @callback Restore + * @returns {void} + * + * @typedef Info + * @property {Restore} restore + * @property {number} from + * + * @callback ReturnHandle + * Handle a successful run. + * @param {Construct} construct + * @param {Info} info + * @returns {void} + */ + + + + + + + + + +const debug = debug__WEBPACK_IMPORTED_MODULE_0__('micromark') + +/** + * Create a tokenizer. + * Tokenizers deal with one type of data (e.g., containers, flow, text). + * The parser is the object dealing with it all. + * `initialize` works like other constructs, except that only its `tokenize` + * function is used, in which case it doesn’t receive an `ok` or `nok`. + * `from` can be given to set the point before the first character, although + * when further lines are indented, they must be set with `defineSkip`. + * + * @param {ParseContext} parser + * @param {InitialConstruct} initialize + * @param {Omit | undefined} [from] + * @returns {TokenizeContext} + */ +function createTokenizer(parser, initialize, from) { + /** @type {Point} */ + let point = Object.assign( + from ? Object.assign({}, from) : {line: 1, column: 1, offset: 0}, + {_index: 0, _bufferIndex: -1} + ) + /** @type {Record} */ + const columnStart = {} + /** @type {Array} */ + const resolveAllConstructs = [] + /** @type {Array} */ + let chunks = [] + /** @type {Array} */ + let stack = [] + /** @type {boolean | undefined} */ + let consumed = true + + /** + * Tools used for tokenizing. + * + * @type {Effects} + */ + const effects = { + consume, + enter, + exit, + attempt: constructFactory(onsuccessfulconstruct), + check: constructFactory(onsuccessfulcheck), + interrupt: constructFactory(onsuccessfulcheck, {interrupt: true}) + } + + /** + * State and tools for resolving and serializing. + * + * @type {TokenizeContext} + */ + const context = { + previous: micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.eof, + code: micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.eof, + containerState: {}, + events: [], + parser, + sliceStream, + sliceSerialize, + now, + defineSkip, + write + } + + /** + * The state function. + * + * @type {State | void} + */ + let state = initialize.tokenize.call(context, effects) + + /** + * Track which character we expect to be consumed, to catch bugs. + * + * @type {Code} + */ + let expectedCode + + if (initialize.resolveAll) { + resolveAllConstructs.push(initialize) + } + + return context + + /** @type {TokenizeContext['write']} */ + function write(slice) { + chunks = (0,micromark_util_chunked__WEBPACK_IMPORTED_MODULE_3__.push)(chunks, slice) + + main() + + // Exit if we’re not done, resolve might change stuff. + if (chunks[chunks.length - 1] !== micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.eof) { + return [] + } + + addResult(initialize, 0) + + // Otherwise, resolve, and exit. + context.events = (0,micromark_util_resolve_all__WEBPACK_IMPORTED_MODULE_4__.resolveAll)(resolveAllConstructs, context.events, context) + + return context.events + } + + // + // Tools. + // + + /** @type {TokenizeContext['sliceSerialize']} */ + function sliceSerialize(token, expandTabs) { + return serializeChunks(sliceStream(token), expandTabs) + } + + /** @type {TokenizeContext['sliceStream']} */ + function sliceStream(token) { + return sliceChunks(chunks, token) + } + + /** @type {TokenizeContext['now']} */ + function now() { + // This is a hot path, so we clone manually instead of `Object.assign({}, point)` + const {line, column, offset, _index, _bufferIndex} = point + return {line, column, offset, _index, _bufferIndex} + } + + /** @type {TokenizeContext['defineSkip']} */ + function defineSkip(value) { + columnStart[value.line] = value.column + accountForPotentialSkip() + debug('position: define skip: `%j`', point) + } + + // + // State management. + // + + /** + * Main loop (note that `_index` and `_bufferIndex` in `point` are modified by + * `consume`). + * Here is where we walk through the chunks, which either include strings of + * several characters, or numerical character codes. + * The reason to do this in a loop instead of a call is so the stack can + * drain. + * + * @returns {void} + */ + function main() { + /** @type {number} */ + let chunkIndex + + while (point._index < chunks.length) { + const chunk = chunks[point._index] + + // If we’re in a buffer chunk, loop through it. + if (typeof chunk === 'string') { + chunkIndex = point._index + + if (point._bufferIndex < 0) { + point._bufferIndex = 0 + } + + while ( + point._index === chunkIndex && + point._bufferIndex < chunk.length + ) { + go(chunk.charCodeAt(point._bufferIndex)) + } + } else { + go(chunk) + } + } + } + + /** + * Deal with one code. + * + * @param {Code} code + * @returns {void} + */ + function go(code) { + (0,uvu_assert__WEBPACK_IMPORTED_MODULE_1__.ok)(consumed === true, 'expected character to be consumed') + consumed = undefined + debug('main: passing `%s` to %s', code, state && state.name) + expectedCode = code + ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_1__.ok)(typeof state === 'function', 'expected state') + state = state(code) + } + + /** @type {Effects['consume']} */ + function consume(code) { + (0,uvu_assert__WEBPACK_IMPORTED_MODULE_1__.ok)(code === expectedCode, 'expected given code to equal expected code') + + debug('consume: `%s`', code) + + ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_1__.ok)( + consumed === undefined, + 'expected code to not have been consumed: this might be because `return x(code)` instead of `return x` was used' + ) + ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_1__.ok)( + code === null + ? context.events.length === 0 || + context.events[context.events.length - 1][0] === 'exit' + : context.events[context.events.length - 1][0] === 'enter', + 'expected last token to be open' + ) + + if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_5__.markdownLineEnding)(code)) { + point.line++ + point.column = 1 + point.offset += code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.carriageReturnLineFeed ? 2 : 1 + accountForPotentialSkip() + debug('position: after eol: `%j`', point) + } else if (code !== micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.virtualSpace) { + point.column++ + point.offset++ + } + + // Not in a string chunk. + if (point._bufferIndex < 0) { + point._index++ + } else { + point._bufferIndex++ + + // At end of string chunk. + // @ts-expect-error Points w/ non-negative `_bufferIndex` reference + // strings. + if (point._bufferIndex === chunks[point._index].length) { + point._bufferIndex = -1 + point._index++ + } + } + + // Expose the previous character. + context.previous = code + + // Mark as consumed. + consumed = true + } + + /** @type {Effects['enter']} */ + function enter(type, fields) { + /** @type {Token} */ + // @ts-expect-error Patch instead of assign required fields to help GC. + const token = fields || {} + token.type = type + token.start = now() + + ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_1__.ok)(typeof type === 'string', 'expected string type') + ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_1__.ok)(type.length > 0, 'expected non-empty string') + debug('enter: `%s`', type) + + context.events.push(['enter', token, context]) + + stack.push(token) + + return token + } + + /** @type {Effects['exit']} */ + function exit(type) { + (0,uvu_assert__WEBPACK_IMPORTED_MODULE_1__.ok)(typeof type === 'string', 'expected string type') + ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_1__.ok)(type.length > 0, 'expected non-empty string') + + const token = stack.pop() + ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_1__.ok)(token, 'cannot close w/o open tokens') + token.end = now() + + ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_1__.ok)(type === token.type, 'expected exit token to match current token') + + ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_1__.ok)( + !( + token.start._index === token.end._index && + token.start._bufferIndex === token.end._bufferIndex + ), + 'expected non-empty token (`' + type + '`)' + ) + + debug('exit: `%s`', token.type) + context.events.push(['exit', token, context]) + + return token + } + + /** + * Use results. + * + * @type {ReturnHandle} + */ + function onsuccessfulconstruct(construct, info) { + addResult(construct, info.from) + } + + /** + * Discard results. + * + * @type {ReturnHandle} + */ + function onsuccessfulcheck(_, info) { + info.restore() + } + + /** + * Factory to attempt/check/interrupt. + * + * @param {ReturnHandle} onreturn + * @param {{interrupt?: boolean | undefined} | undefined} [fields] + */ + function constructFactory(onreturn, fields) { + return hook + + /** + * Handle either an object mapping codes to constructs, a list of + * constructs, or a single construct. + * + * @param {Array | Construct | ConstructRecord} constructs + * @param {State} returnState + * @param {State | undefined} [bogusState] + * @returns {State} + */ + function hook(constructs, returnState, bogusState) { + /** @type {Array} */ + let listOfConstructs + /** @type {number} */ + let constructIndex + /** @type {Construct} */ + let currentConstruct + /** @type {Info} */ + let info + + return Array.isArray(constructs) + ? /* c8 ignore next 1 */ + handleListOfConstructs(constructs) + : 'tokenize' in constructs + ? // @ts-expect-error Looks like a construct. + handleListOfConstructs([constructs]) + : handleMapOfConstructs(constructs) + + /** + * Handle a list of construct. + * + * @param {ConstructRecord} map + * @returns {State} + */ + function handleMapOfConstructs(map) { + return start + + /** @type {State} */ + function start(code) { + const def = code !== null && map[code] + const all = code !== null && map.null + const list = [ + // To do: add more extension tests. + /* c8 ignore next 2 */ + ...(Array.isArray(def) ? def : def ? [def] : []), + ...(Array.isArray(all) ? all : all ? [all] : []) + ] + + return handleListOfConstructs(list)(code) + } + } + + /** + * Handle a list of construct. + * + * @param {Array} list + * @returns {State} + */ + function handleListOfConstructs(list) { + listOfConstructs = list + constructIndex = 0 + + if (list.length === 0) { + (0,uvu_assert__WEBPACK_IMPORTED_MODULE_1__.ok)(bogusState, 'expected `bogusState` to be given') + return bogusState + } + + return handleConstruct(list[constructIndex]) + } + + /** + * Handle a single construct. + * + * @param {Construct} construct + * @returns {State} + */ + function handleConstruct(construct) { + return start + + /** @type {State} */ + function start(code) { + // To do: not needed to store if there is no bogus state, probably? + // Currently doesn’t work because `inspect` in document does a check + // w/o a bogus, which doesn’t make sense. But it does seem to help perf + // by not storing. + info = store() + currentConstruct = construct + + if (!construct.partial) { + context.currentConstruct = construct + } + + // Always populated by defaults. + (0,uvu_assert__WEBPACK_IMPORTED_MODULE_1__.ok)( + context.parser.constructs.disable.null, + 'expected `disable.null` to be populated' + ) + + if ( + construct.name && + context.parser.constructs.disable.null.includes(construct.name) + ) { + return nok(code) + } + + return construct.tokenize.call( + // If we do have fields, create an object w/ `context` as its + // prototype. + // This allows a “live binding”, which is needed for `interrupt`. + fields ? Object.assign(Object.create(context), fields) : context, + effects, + ok, + nok + )(code) + } + } + + /** @type {State} */ + function ok(code) { + (0,uvu_assert__WEBPACK_IMPORTED_MODULE_1__.ok)(code === expectedCode, 'expected code') + consumed = true + onreturn(currentConstruct, info) + return returnState + } + + /** @type {State} */ + function nok(code) { + (0,uvu_assert__WEBPACK_IMPORTED_MODULE_1__.ok)(code === expectedCode, 'expected code') + consumed = true + info.restore() + + if (++constructIndex < listOfConstructs.length) { + return handleConstruct(listOfConstructs[constructIndex]) + } + + return bogusState + } + } + } + + /** + * @param {Construct} construct + * @param {number} from + * @returns {void} + */ + function addResult(construct, from) { + if (construct.resolveAll && !resolveAllConstructs.includes(construct)) { + resolveAllConstructs.push(construct) + } + + if (construct.resolve) { + (0,micromark_util_chunked__WEBPACK_IMPORTED_MODULE_3__.splice)( + context.events, + from, + context.events.length - from, + construct.resolve(context.events.slice(from), context) + ) + } + + if (construct.resolveTo) { + context.events = construct.resolveTo(context.events, context) + } + + (0,uvu_assert__WEBPACK_IMPORTED_MODULE_1__.ok)( + construct.partial || + context.events.length === 0 || + context.events[context.events.length - 1][0] === 'exit', + 'expected last token to end' + ) + } + + /** + * Store state. + * + * @returns {Info} + */ + function store() { + const startPoint = now() + const startPrevious = context.previous + const startCurrentConstruct = context.currentConstruct + const startEventsIndex = context.events.length + const startStack = Array.from(stack) + + return {restore, from: startEventsIndex} + + /** + * Restore state. + * + * @returns {void} + */ + function restore() { + point = startPoint + context.previous = startPrevious + context.currentConstruct = startCurrentConstruct + context.events.length = startEventsIndex + stack = startStack + accountForPotentialSkip() + debug('position: restore: `%j`', point) + } + } + + /** + * Move the current point a bit forward in the line when it’s on a column + * skip. + * + * @returns {void} + */ + function accountForPotentialSkip() { + if (point.line in columnStart && point.column < 2) { + point.column = columnStart[point.line] + point.offset += columnStart[point.line] - 1 + } + } +} + +/** + * Get the chunks from a slice of chunks in the range of a token. + * + * @param {Array} chunks + * @param {Pick} token + * @returns {Array} + */ +function sliceChunks(chunks, token) { + const startIndex = token.start._index + const startBufferIndex = token.start._bufferIndex + const endIndex = token.end._index + const endBufferIndex = token.end._bufferIndex + /** @type {Array} */ + let view + + if (startIndex === endIndex) { + (0,uvu_assert__WEBPACK_IMPORTED_MODULE_1__.ok)(endBufferIndex > -1, 'expected non-negative end buffer index') + ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_1__.ok)(startBufferIndex > -1, 'expected non-negative start buffer index') + // @ts-expect-error `_bufferIndex` is used on string chunks. + view = [chunks[startIndex].slice(startBufferIndex, endBufferIndex)] + } else { + view = chunks.slice(startIndex, endIndex) + + if (startBufferIndex > -1) { + const head = view[0] + if (typeof head === 'string') { + view[0] = head.slice(startBufferIndex) + } else { + (0,uvu_assert__WEBPACK_IMPORTED_MODULE_1__.ok)(startBufferIndex === 0, 'expected `startBufferIndex` to be `0`') + view.shift() + } + } + + if (endBufferIndex > 0) { + // @ts-expect-error `_bufferIndex` is used on string chunks. + view.push(chunks[endIndex].slice(0, endBufferIndex)) + } + } + + return view +} + +/** + * Get the string value of a slice of chunks. + * + * @param {Array} chunks + * @param {boolean | undefined} [expandTabs=false] + * @returns {string} + */ +function serializeChunks(chunks, expandTabs) { + let index = -1 + /** @type {Array} */ + const result = [] + /** @type {boolean | undefined} */ + let atTab + + while (++index < chunks.length) { + const chunk = chunks[index] + /** @type {string} */ + let value + + if (typeof chunk === 'string') { + value = chunk + } else + switch (chunk) { + case micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.carriageReturn: { + value = micromark_util_symbol_values_js__WEBPACK_IMPORTED_MODULE_6__.values.cr + + break + } + + case micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.lineFeed: { + value = micromark_util_symbol_values_js__WEBPACK_IMPORTED_MODULE_6__.values.lf + + break + } + + case micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.carriageReturnLineFeed: { + value = micromark_util_symbol_values_js__WEBPACK_IMPORTED_MODULE_6__.values.cr + micromark_util_symbol_values_js__WEBPACK_IMPORTED_MODULE_6__.values.lf + + break + } + + case micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.horizontalTab: { + value = expandTabs ? micromark_util_symbol_values_js__WEBPACK_IMPORTED_MODULE_6__.values.space : micromark_util_symbol_values_js__WEBPACK_IMPORTED_MODULE_6__.values.ht + + break + } + + case micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.virtualSpace: { + if (!expandTabs && atTab) continue + value = micromark_util_symbol_values_js__WEBPACK_IMPORTED_MODULE_6__.values.space + + break + } + + default: { + (0,uvu_assert__WEBPACK_IMPORTED_MODULE_1__.ok)(typeof chunk === 'number', 'expected number') + // Currently only replacement character. + value = String.fromCharCode(chunk) + } + } + + atTab = chunk === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.horizontalTab + result.push(value) + } + + return result.join('') +} + + +/***/ }), + +/***/ "../node_modules/micromark/dev/lib/initialize/content.js": +/*!***************************************************************!*\ + !*** ../node_modules/micromark/dev/lib/initialize/content.js ***! + \***************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ content: () => (/* binding */ content) +/* harmony export */ }); +/* harmony import */ var micromark_factory_space__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! micromark-factory-space */ "../node_modules/micromark-factory-space/dev/index.js"); +/* harmony import */ var micromark_util_character__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! micromark-util-character */ "../node_modules/micromark-util-character/dev/index.js"); +/* harmony import */ var micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! micromark-util-symbol/codes.js */ "../node_modules/micromark-util-symbol/codes.js"); +/* harmony import */ var micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! micromark-util-symbol/constants.js */ "../node_modules/micromark-util-symbol/constants.js"); +/* harmony import */ var micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! micromark-util-symbol/types.js */ "../node_modules/micromark-util-symbol/types.js"); +/* harmony import */ var uvu_assert__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! uvu/assert */ "../node_modules/uvu/assert/index.mjs"); +/** + * @typedef {import('micromark-util-types').InitialConstruct} InitialConstruct + * @typedef {import('micromark-util-types').Initializer} Initializer + * @typedef {import('micromark-util-types').State} State + * @typedef {import('micromark-util-types').Token} Token + * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext + */ + + + + + + + + +/** @type {InitialConstruct} */ +const content = {tokenize: initializeContent} + +/** + * @this {TokenizeContext} + * @type {Initializer} + */ +function initializeContent(effects) { + const contentStart = effects.attempt( + this.parser.constructs.contentInitial, + afterContentStartConstruct, + paragraphInitial + ) + /** @type {Token} */ + let previous + + return contentStart + + /** @type {State} */ + function afterContentStartConstruct(code) { + ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)( + code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.eof || (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_2__.markdownLineEnding)(code), + 'expected eol or eof' + ) + + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.eof) { + effects.consume(code) + return + } + + effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_3__.types.lineEnding) + effects.consume(code) + effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_3__.types.lineEnding) + return (0,micromark_factory_space__WEBPACK_IMPORTED_MODULE_4__.factorySpace)(effects, contentStart, micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_3__.types.linePrefix) + } + + /** @type {State} */ + function paragraphInitial(code) { + (0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)( + code !== micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.eof && !(0,micromark_util_character__WEBPACK_IMPORTED_MODULE_2__.markdownLineEnding)(code), + 'expected anything other than a line ending or EOF' + ) + effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_3__.types.paragraph) + return lineStart(code) + } + + /** @type {State} */ + function lineStart(code) { + const token = effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_3__.types.chunkText, { + contentType: micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_5__.constants.contentTypeText, + previous + }) + + if (previous) { + previous.next = token + } + + previous = token + + return data(code) + } + + /** @type {State} */ + function data(code) { + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.eof) { + effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_3__.types.chunkText) + effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_3__.types.paragraph) + effects.consume(code) + return + } + + if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_2__.markdownLineEnding)(code)) { + effects.consume(code) + effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_3__.types.chunkText) + return lineStart + } + + // Data. + effects.consume(code) + return data + } +} + + +/***/ }), + +/***/ "../node_modules/micromark/dev/lib/initialize/document.js": +/*!****************************************************************!*\ + !*** ../node_modules/micromark/dev/lib/initialize/document.js ***! + \****************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ document: () => (/* binding */ document) +/* harmony export */ }); +/* harmony import */ var micromark_factory_space__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! micromark-factory-space */ "../node_modules/micromark-factory-space/dev/index.js"); +/* harmony import */ var micromark_util_character__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! micromark-util-character */ "../node_modules/micromark-util-character/dev/index.js"); +/* harmony import */ var micromark_util_chunked__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! micromark-util-chunked */ "../node_modules/micromark-util-chunked/dev/index.js"); +/* harmony import */ var micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! micromark-util-symbol/codes.js */ "../node_modules/micromark-util-symbol/codes.js"); +/* harmony import */ var micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! micromark-util-symbol/constants.js */ "../node_modules/micromark-util-symbol/constants.js"); +/* harmony import */ var micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! micromark-util-symbol/types.js */ "../node_modules/micromark-util-symbol/types.js"); +/* harmony import */ var uvu_assert__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! uvu/assert */ "../node_modules/uvu/assert/index.mjs"); +/** + * @typedef {import('micromark-util-types').Construct} Construct + * @typedef {import('micromark-util-types').ContainerState} ContainerState + * @typedef {import('micromark-util-types').InitialConstruct} InitialConstruct + * @typedef {import('micromark-util-types').Initializer} Initializer + * @typedef {import('micromark-util-types').Point} Point + * @typedef {import('micromark-util-types').State} State + * @typedef {import('micromark-util-types').Token} Token + * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext + * @typedef {import('micromark-util-types').Tokenizer} Tokenizer + */ + +/** + * @typedef {[Construct, ContainerState]} StackItem + */ + + + + + + + + + +/** @type {InitialConstruct} */ +const document = {tokenize: initializeDocument} + +/** @type {Construct} */ +const containerConstruct = {tokenize: tokenizeContainer} + +/** + * @this {TokenizeContext} + * @type {Initializer} + */ +function initializeDocument(effects) { + const self = this + /** @type {Array} */ + const stack = [] + let continued = 0 + /** @type {TokenizeContext | undefined} */ + let childFlow + /** @type {Token | undefined} */ + let childToken + /** @type {number} */ + let lineStartOffset + + return start + + /** @type {State} */ + function start(code) { + // First we iterate through the open blocks, starting with the root + // document, and descending through last children down to the last open + // block. + // Each block imposes a condition that the line must satisfy if the block is + // to remain open. + // For example, a block quote requires a `>` character. + // A paragraph requires a non-blank line. + // In this phase we may match all or just some of the open blocks. + // But we cannot close unmatched blocks yet, because we may have a lazy + // continuation line. + if (continued < stack.length) { + const item = stack[continued] + self.containerState = item[1] + ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)( + item[0].continuation, + 'expected `continuation` to be defined on container construct' + ) + return effects.attempt( + item[0].continuation, + documentContinue, + checkNewContainers + )(code) + } + + // Done. + return checkNewContainers(code) + } + + /** @type {State} */ + function documentContinue(code) { + (0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)( + self.containerState, + 'expected `containerState` to be defined after continuation' + ) + + continued++ + + // Note: this field is called `_closeFlow` but it also closes containers. + // Perhaps a good idea to rename it but it’s already used in the wild by + // extensions. + if (self.containerState._closeFlow) { + self.containerState._closeFlow = undefined + + if (childFlow) { + closeFlow() + } + + // Note: this algorithm for moving events around is similar to the + // algorithm when dealing with lazy lines in `writeToChild`. + const indexBeforeExits = self.events.length + let indexBeforeFlow = indexBeforeExits + /** @type {Point | undefined} */ + let point + + // Find the flow chunk. + while (indexBeforeFlow--) { + if ( + self.events[indexBeforeFlow][0] === 'exit' && + self.events[indexBeforeFlow][1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.chunkFlow + ) { + point = self.events[indexBeforeFlow][1].end + break + } + } + + (0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(point, 'could not find previous flow chunk') + + exitContainers(continued) + + // Fix positions. + let index = indexBeforeExits + + while (index < self.events.length) { + self.events[index][1].end = Object.assign({}, point) + index++ + } + + // Inject the exits earlier (they’re still also at the end). + (0,micromark_util_chunked__WEBPACK_IMPORTED_MODULE_2__.splice)( + self.events, + indexBeforeFlow + 1, + 0, + self.events.slice(indexBeforeExits) + ) + + // Discard the duplicate exits. + self.events.length = index + + return checkNewContainers(code) + } + + return start(code) + } + + /** @type {State} */ + function checkNewContainers(code) { + // Next, after consuming the continuation markers for existing blocks, we + // look for new block starts (e.g. `>` for a block quote). + // If we encounter a new block start, we close any blocks unmatched in + // step 1 before creating the new block as a child of the last matched + // block. + if (continued === stack.length) { + // No need to `check` whether there’s a container, of `exitContainers` + // would be moot. + // We can instead immediately `attempt` to parse one. + if (!childFlow) { + return documentContinued(code) + } + + // If we have concrete content, such as block HTML or fenced code, + // we can’t have containers “pierce” into them, so we can immediately + // start. + if (childFlow.currentConstruct && childFlow.currentConstruct.concrete) { + return flowStart(code) + } + + // If we do have flow, it could still be a blank line, + // but we’d be interrupting it w/ a new container if there’s a current + // construct. + // To do: next major: remove `_gfmTableDynamicInterruptHack` (no longer + // needed in micromark-extension-gfm-table@1.0.6). + self.interrupt = Boolean( + childFlow.currentConstruct && !childFlow._gfmTableDynamicInterruptHack + ) + } + + // Check if there is a new container. + self.containerState = {} + return effects.check( + containerConstruct, + thereIsANewContainer, + thereIsNoNewContainer + )(code) + } + + /** @type {State} */ + function thereIsANewContainer(code) { + if (childFlow) closeFlow() + exitContainers(continued) + return documentContinued(code) + } + + /** @type {State} */ + function thereIsNoNewContainer(code) { + self.parser.lazy[self.now().line] = continued !== stack.length + lineStartOffset = self.now().offset + return flowStart(code) + } + + /** @type {State} */ + function documentContinued(code) { + // Try new containers. + self.containerState = {} + return effects.attempt( + containerConstruct, + containerContinue, + flowStart + )(code) + } + + /** @type {State} */ + function containerContinue(code) { + (0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)( + self.currentConstruct, + 'expected `currentConstruct` to be defined on tokenizer' + ) + ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)( + self.containerState, + 'expected `containerState` to be defined on tokenizer' + ) + continued++ + stack.push([self.currentConstruct, self.containerState]) + // Try another. + return documentContinued(code) + } + + /** @type {State} */ + function flowStart(code) { + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_3__.codes.eof) { + if (childFlow) closeFlow() + exitContainers(0) + effects.consume(code) + return + } + + childFlow = childFlow || self.parser.flow(self.now()) + effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.chunkFlow, { + contentType: micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_4__.constants.contentTypeFlow, + previous: childToken, + _tokenizer: childFlow + }) + + return flowContinue(code) + } + + /** @type {State} */ + function flowContinue(code) { + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_3__.codes.eof) { + writeToChild(effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.chunkFlow), true) + exitContainers(0) + effects.consume(code) + return + } + + if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_5__.markdownLineEnding)(code)) { + effects.consume(code) + writeToChild(effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.chunkFlow)) + // Get ready for the next line. + continued = 0 + self.interrupt = undefined + return start + } + + effects.consume(code) + return flowContinue + } + + /** + * @param {Token} token + * @param {boolean | undefined} [eof] + * @returns {void} + */ + function writeToChild(token, eof) { + (0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(childFlow, 'expected `childFlow` to be defined when continuing') + const stream = self.sliceStream(token) + if (eof) stream.push(null) + token.previous = childToken + if (childToken) childToken.next = token + childToken = token + childFlow.defineSkip(token.start) + childFlow.write(stream) + + // Alright, so we just added a lazy line: + // + // ```markdown + // > a + // b. + // + // Or: + // + // > ~~~c + // d + // + // Or: + // + // > | e | + // f + // ``` + // + // The construct in the second example (fenced code) does not accept lazy + // lines, so it marked itself as done at the end of its first line, and + // then the content construct parses `d`. + // Most constructs in markdown match on the first line: if the first line + // forms a construct, a non-lazy line can’t “unmake” it. + // + // The construct in the third example is potentially a GFM table, and + // those are *weird*. + // It *could* be a table, from the first line, if the following line + // matches a condition. + // In this case, that second line is lazy, which “unmakes” the first line + // and turns the whole into one content block. + // + // We’ve now parsed the non-lazy and the lazy line, and can figure out + // whether the lazy line started a new flow block. + // If it did, we exit the current containers between the two flow blocks. + if (self.parser.lazy[token.start.line]) { + let index = childFlow.events.length + + while (index--) { + if ( + // The token starts before the line ending… + childFlow.events[index][1].start.offset < lineStartOffset && + // …and either is not ended yet… + (!childFlow.events[index][1].end || + // …or ends after it. + childFlow.events[index][1].end.offset > lineStartOffset) + ) { + // Exit: there’s still something open, which means it’s a lazy line + // part of something. + return + } + } + + // Note: this algorithm for moving events around is similar to the + // algorithm when closing flow in `documentContinue`. + const indexBeforeExits = self.events.length + let indexBeforeFlow = indexBeforeExits + /** @type {boolean | undefined} */ + let seen + /** @type {Point | undefined} */ + let point + + // Find the previous chunk (the one before the lazy line). + while (indexBeforeFlow--) { + if ( + self.events[indexBeforeFlow][0] === 'exit' && + self.events[indexBeforeFlow][1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.chunkFlow + ) { + if (seen) { + point = self.events[indexBeforeFlow][1].end + break + } + + seen = true + } + } + + (0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(point, 'could not find previous flow chunk') + + exitContainers(continued) + + // Fix positions. + index = indexBeforeExits + + while (index < self.events.length) { + self.events[index][1].end = Object.assign({}, point) + index++ + } + + // Inject the exits earlier (they’re still also at the end). + (0,micromark_util_chunked__WEBPACK_IMPORTED_MODULE_2__.splice)( + self.events, + indexBeforeFlow + 1, + 0, + self.events.slice(indexBeforeExits) + ) + + // Discard the duplicate exits. + self.events.length = index + } + } + + /** + * @param {number} size + * @returns {void} + */ + function exitContainers(size) { + let index = stack.length + + // Exit open containers. + while (index-- > size) { + const entry = stack[index] + self.containerState = entry[1] + ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)( + entry[0].exit, + 'expected `exit` to be defined on container construct' + ) + entry[0].exit.call(self, effects) + } + + stack.length = size + } + + function closeFlow() { + (0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)( + self.containerState, + 'expected `containerState` to be defined when closing flow' + ) + ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(childFlow, 'expected `childFlow` to be defined when closing it') + childFlow.write([micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_3__.codes.eof]) + childToken = undefined + childFlow = undefined + self.containerState._closeFlow = undefined + } +} + +/** + * @this {TokenizeContext} + * @type {Tokenizer} + */ +function tokenizeContainer(effects, ok, nok) { + // Always populated by defaults. + (0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)( + this.parser.constructs.disable.null, + 'expected `disable.null` to be populated' + ) + return (0,micromark_factory_space__WEBPACK_IMPORTED_MODULE_6__.factorySpace)( + effects, + effects.attempt(this.parser.constructs.document, ok, nok), + micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.linePrefix, + this.parser.constructs.disable.null.includes('codeIndented') + ? undefined + : micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_4__.constants.tabSize + ) +} + + +/***/ }), + +/***/ "../node_modules/micromark/dev/lib/initialize/flow.js": +/*!************************************************************!*\ + !*** ../node_modules/micromark/dev/lib/initialize/flow.js ***! + \************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ flow: () => (/* binding */ flow) +/* harmony export */ }); +/* harmony import */ var micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! micromark-core-commonmark */ "../node_modules/micromark-core-commonmark/dev/lib/blank-line.js"); +/* harmony import */ var micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! micromark-core-commonmark */ "../node_modules/micromark-core-commonmark/dev/lib/content.js"); +/* harmony import */ var micromark_factory_space__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! micromark-factory-space */ "../node_modules/micromark-factory-space/dev/index.js"); +/* harmony import */ var micromark_util_character__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! micromark-util-character */ "../node_modules/micromark-util-character/dev/index.js"); +/* harmony import */ var micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! micromark-util-symbol/codes.js */ "../node_modules/micromark-util-symbol/codes.js"); +/* harmony import */ var micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! micromark-util-symbol/types.js */ "../node_modules/micromark-util-symbol/types.js"); +/* harmony import */ var uvu_assert__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! uvu/assert */ "../node_modules/uvu/assert/index.mjs"); +/** + * @typedef {import('micromark-util-types').InitialConstruct} InitialConstruct + * @typedef {import('micromark-util-types').Initializer} Initializer + * @typedef {import('micromark-util-types').State} State + * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext + */ + + + + + + + + +/** @type {InitialConstruct} */ +const flow = {tokenize: initializeFlow} + +/** + * @this {TokenizeContext} + * @type {Initializer} + */ +function initializeFlow(effects) { + const self = this + const initial = effects.attempt( + // Try to parse a blank line. + micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_1__.blankLine, + atBlankEnding, + // Try to parse initial flow (essentially, only code). + effects.attempt( + this.parser.constructs.flowInitial, + afterConstruct, + (0,micromark_factory_space__WEBPACK_IMPORTED_MODULE_2__.factorySpace)( + effects, + effects.attempt( + this.parser.constructs.flow, + afterConstruct, + effects.attempt(micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_3__.content, afterConstruct) + ), + micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_4__.types.linePrefix + ) + ) + ) + + return initial + + /** @type {State} */ + function atBlankEnding(code) { + ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)( + code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_5__.codes.eof || (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_6__.markdownLineEnding)(code), + 'expected eol or eof' + ) + + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_5__.codes.eof) { + effects.consume(code) + return + } + + effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_4__.types.lineEndingBlank) + effects.consume(code) + effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_4__.types.lineEndingBlank) + self.currentConstruct = undefined + return initial + } + + /** @type {State} */ + function afterConstruct(code) { + (0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)( + code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_5__.codes.eof || (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_6__.markdownLineEnding)(code), + 'expected eol or eof' + ) + + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_5__.codes.eof) { + effects.consume(code) + return + } + + effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_4__.types.lineEnding) + effects.consume(code) + effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_4__.types.lineEnding) + self.currentConstruct = undefined + return initial + } +} + + +/***/ }), + +/***/ "../node_modules/micromark/dev/lib/initialize/text.js": +/*!************************************************************!*\ + !*** ../node_modules/micromark/dev/lib/initialize/text.js ***! + \************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ resolver: () => (/* binding */ resolver), +/* harmony export */ string: () => (/* binding */ string), +/* harmony export */ text: () => (/* binding */ text) +/* harmony export */ }); +/* harmony import */ var micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! micromark-util-symbol/codes.js */ "../node_modules/micromark-util-symbol/codes.js"); +/* harmony import */ var micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! micromark-util-symbol/constants.js */ "../node_modules/micromark-util-symbol/constants.js"); +/* harmony import */ var micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! micromark-util-symbol/types.js */ "../node_modules/micromark-util-symbol/types.js"); +/* harmony import */ var uvu_assert__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! uvu/assert */ "../node_modules/uvu/assert/index.mjs"); +/** + * @typedef {import('micromark-util-types').Code} Code + * @typedef {import('micromark-util-types').InitialConstruct} InitialConstruct + * @typedef {import('micromark-util-types').Initializer} Initializer + * @typedef {import('micromark-util-types').Resolver} Resolver + * @typedef {import('micromark-util-types').State} State + * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext + */ + + + + + + +const resolver = {resolveAll: createResolver()} +const string = initializeFactory('string') +const text = initializeFactory('text') + +/** + * @param {'string' | 'text'} field + * @returns {InitialConstruct} + */ +function initializeFactory(field) { + return { + tokenize: initializeText, + resolveAll: createResolver( + field === 'text' ? resolveAllLineSuffixes : undefined + ) + } + + /** + * @this {TokenizeContext} + * @type {Initializer} + */ + function initializeText(effects) { + const self = this + const constructs = this.parser.constructs[field] + const text = effects.attempt(constructs, start, notText) + + return start + + /** @type {State} */ + function start(code) { + return atBreak(code) ? text(code) : notText(code) + } + + /** @type {State} */ + function notText(code) { + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.eof) { + effects.consume(code) + return + } + + effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.data) + effects.consume(code) + return data + } + + /** @type {State} */ + function data(code) { + if (atBreak(code)) { + effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.data) + return text(code) + } + + // Data. + effects.consume(code) + return data + } + + /** + * @param {Code} code + * @returns {boolean} + */ + function atBreak(code) { + if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.eof) { + return true + } + + const list = constructs[code] + let index = -1 + + if (list) { + // Always populated by defaults. + (0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(Array.isArray(list), 'expected `disable.null` to be populated') + + while (++index < list.length) { + const item = list[index] + if (!item.previous || item.previous.call(self, self.previous)) { + return true + } + } + } + + return false + } + } +} + +/** + * @param {Resolver | undefined} [extraResolver] + * @returns {Resolver} + */ +function createResolver(extraResolver) { + return resolveAllText + + /** @type {Resolver} */ + function resolveAllText(events, context) { + let index = -1 + /** @type {number | undefined} */ + let enter + + // A rather boring computation (to merge adjacent `data` events) which + // improves mm performance by 29%. + while (++index <= events.length) { + if (enter === undefined) { + if (events[index] && events[index][1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.data) { + enter = index + index++ + } + } else if (!events[index] || events[index][1].type !== micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.data) { + // Don’t do anything if there is one data token. + if (index !== enter + 2) { + events[enter][1].end = events[index - 1][1].end + events.splice(enter + 2, index - enter - 2) + index = enter + 2 + } + + enter = undefined + } + } + + return extraResolver ? extraResolver(events, context) : events + } +} + +/** + * A rather ugly set of instructions which again looks at chunks in the input + * stream. + * The reason to do this here is that it is *much* faster to parse in reverse. + * And that we can’t hook into `null` to split the line suffix before an EOF. + * To do: figure out if we can make this into a clean utility, or even in core. + * As it will be useful for GFMs literal autolink extension (and maybe even + * tables?) + * + * @type {Resolver} + */ +function resolveAllLineSuffixes(events, context) { + let eventIndex = 0 // Skip first. + + while (++eventIndex <= events.length) { + if ( + (eventIndex === events.length || + events[eventIndex][1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.lineEnding) && + events[eventIndex - 1][1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.data + ) { + const data = events[eventIndex - 1][1] + const chunks = context.sliceStream(data) + let index = chunks.length + let bufferIndex = -1 + let size = 0 + /** @type {boolean | undefined} */ + let tabs + + while (index--) { + const chunk = chunks[index] + + if (typeof chunk === 'string') { + bufferIndex = chunk.length + + while (chunk.charCodeAt(bufferIndex - 1) === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.space) { + size++ + bufferIndex-- + } + + if (bufferIndex) break + bufferIndex = -1 + } + // Number + else if (chunk === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.horizontalTab) { + tabs = true + size++ + } else if (chunk === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.virtualSpace) { + // Empty + } else { + // Replacement character, exit. + index++ + break + } + } + + if (size) { + const token = { + type: + eventIndex === events.length || + tabs || + size < micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_3__.constants.hardBreakPrefixSizeMin + ? micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.lineSuffix + : micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.hardBreakTrailing, + start: { + line: data.end.line, + column: data.end.column - size, + offset: data.end.offset - size, + _index: data.start._index + index, + _bufferIndex: index + ? bufferIndex + : data.start._bufferIndex + bufferIndex + }, + end: Object.assign({}, data.end) + } + + data.end = Object.assign({}, token.start) + + if (data.start.offset === data.end.offset) { + Object.assign(data, token) + } else { + events.splice( + eventIndex, + 0, + ['enter', token, context], + ['exit', token, context] + ) + eventIndex += 2 + } + } + + eventIndex++ + } + } + + return events +} + + +/***/ }), + +/***/ "../node_modules/micromark/dev/lib/parse.js": +/*!**************************************************!*\ + !*** ../node_modules/micromark/dev/lib/parse.js ***! + \**************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ parse: () => (/* binding */ parse) +/* harmony export */ }); +/* harmony import */ var micromark_util_combine_extensions__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! micromark-util-combine-extensions */ "../node_modules/micromark-util-combine-extensions/index.js"); +/* harmony import */ var _initialize_content_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./initialize/content.js */ "../node_modules/micromark/dev/lib/initialize/content.js"); +/* harmony import */ var _initialize_document_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./initialize/document.js */ "../node_modules/micromark/dev/lib/initialize/document.js"); +/* harmony import */ var _initialize_flow_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./initialize/flow.js */ "../node_modules/micromark/dev/lib/initialize/flow.js"); +/* harmony import */ var _initialize_text_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./initialize/text.js */ "../node_modules/micromark/dev/lib/initialize/text.js"); +/* harmony import */ var _create_tokenizer_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./create-tokenizer.js */ "../node_modules/micromark/dev/lib/create-tokenizer.js"); +/* harmony import */ var _constructs_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./constructs.js */ "../node_modules/micromark/dev/lib/constructs.js"); +/** + * @typedef {import('micromark-util-types').Create} Create + * @typedef {import('micromark-util-types').FullNormalizedExtension} FullNormalizedExtension + * @typedef {import('micromark-util-types').InitialConstruct} InitialConstruct + * @typedef {import('micromark-util-types').ParseContext} ParseContext + * @typedef {import('micromark-util-types').ParseOptions} ParseOptions + */ + + + + + + + + + +/** + * @param {ParseOptions | null | undefined} [options] + * @returns {ParseContext} + */ +function parse(options) { + const settings = options || {} + const constructs = /** @type {FullNormalizedExtension} */ ( + (0,micromark_util_combine_extensions__WEBPACK_IMPORTED_MODULE_0__.combineExtensions)([_constructs_js__WEBPACK_IMPORTED_MODULE_1__, ...(settings.extensions || [])]) + ) + + /** @type {ParseContext} */ + const parser = { + defined: [], + lazy: {}, + constructs, + content: create(_initialize_content_js__WEBPACK_IMPORTED_MODULE_2__.content), + document: create(_initialize_document_js__WEBPACK_IMPORTED_MODULE_3__.document), + flow: create(_initialize_flow_js__WEBPACK_IMPORTED_MODULE_4__.flow), + string: create(_initialize_text_js__WEBPACK_IMPORTED_MODULE_5__.string), + text: create(_initialize_text_js__WEBPACK_IMPORTED_MODULE_5__.text) + } + + return parser + + /** + * @param {InitialConstruct} initial + */ + function create(initial) { + return creator + /** @type {Create} */ + function creator(from) { + return (0,_create_tokenizer_js__WEBPACK_IMPORTED_MODULE_6__.createTokenizer)(parser, initial, from) + } + } +} + + +/***/ }), + +/***/ "../node_modules/micromark/dev/lib/postprocess.js": +/*!********************************************************!*\ + !*** ../node_modules/micromark/dev/lib/postprocess.js ***! + \********************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ postprocess: () => (/* binding */ postprocess) +/* harmony export */ }); +/* harmony import */ var micromark_util_subtokenize__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! micromark-util-subtokenize */ "../node_modules/micromark-util-subtokenize/dev/index.js"); +/** + * @typedef {import('micromark-util-types').Event} Event + */ + + + +/** + * @param {Array} events + * @returns {Array} + */ +function postprocess(events) { + while (!(0,micromark_util_subtokenize__WEBPACK_IMPORTED_MODULE_0__.subtokenize)(events)) { + // Empty + } + + return events +} + + +/***/ }), + +/***/ "../node_modules/micromark/dev/lib/preprocess.js": +/*!*******************************************************!*\ + !*** ../node_modules/micromark/dev/lib/preprocess.js ***! + \*******************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ preprocess: () => (/* binding */ preprocess) +/* harmony export */ }); +/* harmony import */ var micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! micromark-util-symbol/codes.js */ "../node_modules/micromark-util-symbol/codes.js"); +/* harmony import */ var micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! micromark-util-symbol/constants.js */ "../node_modules/micromark-util-symbol/constants.js"); +/** + * @typedef {import('micromark-util-types').Chunk} Chunk + * @typedef {import('micromark-util-types').Code} Code + * @typedef {import('micromark-util-types').Encoding} Encoding + * @typedef {import('micromark-util-types').Value} Value + */ + +/** + * @callback Preprocessor + * @param {Value} value + * @param {Encoding | null | undefined} [encoding] + * @param {boolean | null | undefined} [end=false] + * @returns {Array} + */ + + + + +const search = /[\0\t\n\r]/g + +/** + * @returns {Preprocessor} + */ +function preprocess() { + let column = 1 + let buffer = '' + /** @type {boolean | undefined} */ + let start = true + /** @type {boolean | undefined} */ + let atCarriageReturn + + return preprocessor + + /** @type {Preprocessor} */ + function preprocessor(value, encoding, end) { + /** @type {Array} */ + const chunks = [] + /** @type {RegExpMatchArray | null} */ + let match + /** @type {number} */ + let next + /** @type {number} */ + let startPosition + /** @type {number} */ + let endPosition + /** @type {Code} */ + let code + + // @ts-expect-error `Buffer` does allow an encoding. + value = buffer + value.toString(encoding) + startPosition = 0 + buffer = '' + + if (start) { + // To do: `markdown-rs` actually parses BOMs (byte order mark). + if (value.charCodeAt(0) === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.byteOrderMarker) { + startPosition++ + } + + start = undefined + } + + while (startPosition < value.length) { + search.lastIndex = startPosition + match = search.exec(value) + endPosition = + match && match.index !== undefined ? match.index : value.length + code = value.charCodeAt(endPosition) + + if (!match) { + buffer = value.slice(startPosition) + break + } + + if ( + code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.lf && + startPosition === endPosition && + atCarriageReturn + ) { + chunks.push(micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.carriageReturnLineFeed) + atCarriageReturn = undefined + } else { + if (atCarriageReturn) { + chunks.push(micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.carriageReturn) + atCarriageReturn = undefined + } + + if (startPosition < endPosition) { + chunks.push(value.slice(startPosition, endPosition)) + column += endPosition - startPosition + } + + switch (code) { + case micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.nul: { + chunks.push(micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.replacementCharacter) + column++ + + break + } + + case micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.ht: { + next = Math.ceil(column / micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_1__.constants.tabSize) * micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_1__.constants.tabSize + chunks.push(micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.horizontalTab) + while (column++ < next) chunks.push(micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.virtualSpace) + + break + } + + case micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.lf: { + chunks.push(micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.lineFeed) + column = 1 + + break + } + + default: { + atCarriageReturn = true + column = 1 + } + } + } + + startPosition = endPosition + 1 + } + + if (end) { + if (atCarriageReturn) chunks.push(micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.carriageReturn) + if (buffer) chunks.push(buffer) + chunks.push(micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.eof) + } + + return chunks + } +} + + +/***/ }), + +/***/ "../node_modules/property-information/index.js": +/*!*****************************************************!*\ + !*** ../node_modules/property-information/index.js ***! + \*****************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ find: () => (/* reexport safe */ _lib_find_js__WEBPACK_IMPORTED_MODULE_0__.find), +/* harmony export */ hastToReact: () => (/* reexport safe */ _lib_hast_to_react_js__WEBPACK_IMPORTED_MODULE_1__.hastToReact), +/* harmony export */ html: () => (/* binding */ html), +/* harmony export */ normalize: () => (/* reexport safe */ _lib_normalize_js__WEBPACK_IMPORTED_MODULE_2__.normalize), +/* harmony export */ svg: () => (/* binding */ svg) +/* harmony export */ }); +/* harmony import */ var _lib_util_merge_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./lib/util/merge.js */ "../node_modules/property-information/lib/util/merge.js"); +/* harmony import */ var _lib_xlink_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./lib/xlink.js */ "../node_modules/property-information/lib/xlink.js"); +/* harmony import */ var _lib_xml_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./lib/xml.js */ "../node_modules/property-information/lib/xml.js"); +/* harmony import */ var _lib_xmlns_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./lib/xmlns.js */ "../node_modules/property-information/lib/xmlns.js"); +/* harmony import */ var _lib_aria_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./lib/aria.js */ "../node_modules/property-information/lib/aria.js"); +/* harmony import */ var _lib_html_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./lib/html.js */ "../node_modules/property-information/lib/html.js"); +/* harmony import */ var _lib_svg_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./lib/svg.js */ "../node_modules/property-information/lib/svg.js"); +/* harmony import */ var _lib_find_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./lib/find.js */ "../node_modules/property-information/lib/find.js"); +/* harmony import */ var _lib_hast_to_react_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./lib/hast-to-react.js */ "../node_modules/property-information/lib/hast-to-react.js"); +/* harmony import */ var _lib_normalize_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./lib/normalize.js */ "../node_modules/property-information/lib/normalize.js"); +/** + * @typedef {import('./lib/util/info.js').Info} Info + * @typedef {import('./lib/util/schema.js').Schema} Schema + */ + + + + + + + + + + + + +const html = (0,_lib_util_merge_js__WEBPACK_IMPORTED_MODULE_3__.merge)([_lib_xml_js__WEBPACK_IMPORTED_MODULE_4__.xml, _lib_xlink_js__WEBPACK_IMPORTED_MODULE_5__.xlink, _lib_xmlns_js__WEBPACK_IMPORTED_MODULE_6__.xmlns, _lib_aria_js__WEBPACK_IMPORTED_MODULE_7__.aria, _lib_html_js__WEBPACK_IMPORTED_MODULE_8__.html], 'html') +const svg = (0,_lib_util_merge_js__WEBPACK_IMPORTED_MODULE_3__.merge)([_lib_xml_js__WEBPACK_IMPORTED_MODULE_4__.xml, _lib_xlink_js__WEBPACK_IMPORTED_MODULE_5__.xlink, _lib_xmlns_js__WEBPACK_IMPORTED_MODULE_6__.xmlns, _lib_aria_js__WEBPACK_IMPORTED_MODULE_7__.aria, _lib_svg_js__WEBPACK_IMPORTED_MODULE_9__.svg], 'svg') + + +/***/ }), + +/***/ "../node_modules/property-information/lib/aria.js": +/*!********************************************************!*\ + !*** ../node_modules/property-information/lib/aria.js ***! + \********************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ aria: () => (/* binding */ aria) +/* harmony export */ }); +/* harmony import */ var _util_types_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./util/types.js */ "../node_modules/property-information/lib/util/types.js"); +/* harmony import */ var _util_create_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./util/create.js */ "../node_modules/property-information/lib/util/create.js"); + + + +const aria = (0,_util_create_js__WEBPACK_IMPORTED_MODULE_0__.create)({ + transform(_, prop) { + return prop === 'role' ? prop : 'aria-' + prop.slice(4).toLowerCase() + }, + properties: { + ariaActiveDescendant: null, + ariaAtomic: _util_types_js__WEBPACK_IMPORTED_MODULE_1__.booleanish, + ariaAutoComplete: null, + ariaBusy: _util_types_js__WEBPACK_IMPORTED_MODULE_1__.booleanish, + ariaChecked: _util_types_js__WEBPACK_IMPORTED_MODULE_1__.booleanish, + ariaColCount: _util_types_js__WEBPACK_IMPORTED_MODULE_1__.number, + ariaColIndex: _util_types_js__WEBPACK_IMPORTED_MODULE_1__.number, + ariaColSpan: _util_types_js__WEBPACK_IMPORTED_MODULE_1__.number, + ariaControls: _util_types_js__WEBPACK_IMPORTED_MODULE_1__.spaceSeparated, + ariaCurrent: null, + ariaDescribedBy: _util_types_js__WEBPACK_IMPORTED_MODULE_1__.spaceSeparated, + ariaDetails: null, + ariaDisabled: _util_types_js__WEBPACK_IMPORTED_MODULE_1__.booleanish, + ariaDropEffect: _util_types_js__WEBPACK_IMPORTED_MODULE_1__.spaceSeparated, + ariaErrorMessage: null, + ariaExpanded: _util_types_js__WEBPACK_IMPORTED_MODULE_1__.booleanish, + ariaFlowTo: _util_types_js__WEBPACK_IMPORTED_MODULE_1__.spaceSeparated, + ariaGrabbed: _util_types_js__WEBPACK_IMPORTED_MODULE_1__.booleanish, + ariaHasPopup: null, + ariaHidden: _util_types_js__WEBPACK_IMPORTED_MODULE_1__.booleanish, + ariaInvalid: null, + ariaKeyShortcuts: null, + ariaLabel: null, + ariaLabelledBy: _util_types_js__WEBPACK_IMPORTED_MODULE_1__.spaceSeparated, + ariaLevel: _util_types_js__WEBPACK_IMPORTED_MODULE_1__.number, + ariaLive: null, + ariaModal: _util_types_js__WEBPACK_IMPORTED_MODULE_1__.booleanish, + ariaMultiLine: _util_types_js__WEBPACK_IMPORTED_MODULE_1__.booleanish, + ariaMultiSelectable: _util_types_js__WEBPACK_IMPORTED_MODULE_1__.booleanish, + ariaOrientation: null, + ariaOwns: _util_types_js__WEBPACK_IMPORTED_MODULE_1__.spaceSeparated, + ariaPlaceholder: null, + ariaPosInSet: _util_types_js__WEBPACK_IMPORTED_MODULE_1__.number, + ariaPressed: _util_types_js__WEBPACK_IMPORTED_MODULE_1__.booleanish, + ariaReadOnly: _util_types_js__WEBPACK_IMPORTED_MODULE_1__.booleanish, + ariaRelevant: null, + ariaRequired: _util_types_js__WEBPACK_IMPORTED_MODULE_1__.booleanish, + ariaRoleDescription: _util_types_js__WEBPACK_IMPORTED_MODULE_1__.spaceSeparated, + ariaRowCount: _util_types_js__WEBPACK_IMPORTED_MODULE_1__.number, + ariaRowIndex: _util_types_js__WEBPACK_IMPORTED_MODULE_1__.number, + ariaRowSpan: _util_types_js__WEBPACK_IMPORTED_MODULE_1__.number, + ariaSelected: _util_types_js__WEBPACK_IMPORTED_MODULE_1__.booleanish, + ariaSetSize: _util_types_js__WEBPACK_IMPORTED_MODULE_1__.number, + ariaSort: null, + ariaValueMax: _util_types_js__WEBPACK_IMPORTED_MODULE_1__.number, + ariaValueMin: _util_types_js__WEBPACK_IMPORTED_MODULE_1__.number, + ariaValueNow: _util_types_js__WEBPACK_IMPORTED_MODULE_1__.number, + ariaValueText: null, + role: null + } +}) + + +/***/ }), + +/***/ "../node_modules/property-information/lib/find.js": +/*!********************************************************!*\ + !*** ../node_modules/property-information/lib/find.js ***! + \********************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ find: () => (/* binding */ find) +/* harmony export */ }); +/* harmony import */ var _normalize_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./normalize.js */ "../node_modules/property-information/lib/normalize.js"); +/* harmony import */ var _util_defined_info_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./util/defined-info.js */ "../node_modules/property-information/lib/util/defined-info.js"); +/* harmony import */ var _util_info_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./util/info.js */ "../node_modules/property-information/lib/util/info.js"); +/** + * @typedef {import('./util/schema.js').Schema} Schema + */ + + + + + +const valid = /^data[-\w.:]+$/i +const dash = /-[a-z]/g +const cap = /[A-Z]/g + +/** + * @param {Schema} schema + * @param {string} value + * @returns {Info} + */ +function find(schema, value) { + const normal = (0,_normalize_js__WEBPACK_IMPORTED_MODULE_0__.normalize)(value) + let prop = value + let Type = _util_info_js__WEBPACK_IMPORTED_MODULE_1__.Info + + if (normal in schema.normal) { + return schema.property[schema.normal[normal]] + } + + if (normal.length > 4 && normal.slice(0, 4) === 'data' && valid.test(value)) { + // Attribute or property. + if (value.charAt(4) === '-') { + // Turn it into a property. + const rest = value.slice(5).replace(dash, camelcase) + prop = 'data' + rest.charAt(0).toUpperCase() + rest.slice(1) + } else { + // Turn it into an attribute. + const rest = value.slice(4) + + if (!dash.test(rest)) { + let dashes = rest.replace(cap, kebab) + + if (dashes.charAt(0) !== '-') { + dashes = '-' + dashes + } + + value = 'data' + dashes + } + } + + Type = _util_defined_info_js__WEBPACK_IMPORTED_MODULE_2__.DefinedInfo + } + + return new Type(prop, value) +} + +/** + * @param {string} $0 + * @returns {string} + */ +function kebab($0) { + return '-' + $0.toLowerCase() +} + +/** + * @param {string} $0 + * @returns {string} + */ +function camelcase($0) { + return $0.charAt(1).toUpperCase() +} + + +/***/ }), + +/***/ "../node_modules/property-information/lib/hast-to-react.js": +/*!*****************************************************************!*\ + !*** ../node_modules/property-information/lib/hast-to-react.js ***! + \*****************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ hastToReact: () => (/* binding */ hastToReact) +/* harmony export */ }); +/** + * `hast` is close to `React`, but differs in a couple of cases. + * + * To get a React property from a hast property, check if it is in + * `hastToReact`, if it is, then use the corresponding value, + * otherwise, use the hast property. + * + * @type {Record} + */ +const hastToReact = { + classId: 'classID', + dataType: 'datatype', + itemId: 'itemID', + strokeDashArray: 'strokeDasharray', + strokeDashOffset: 'strokeDashoffset', + strokeLineCap: 'strokeLinecap', + strokeLineJoin: 'strokeLinejoin', + strokeMiterLimit: 'strokeMiterlimit', + typeOf: 'typeof', + xLinkActuate: 'xlinkActuate', + xLinkArcRole: 'xlinkArcrole', + xLinkHref: 'xlinkHref', + xLinkRole: 'xlinkRole', + xLinkShow: 'xlinkShow', + xLinkTitle: 'xlinkTitle', + xLinkType: 'xlinkType', + xmlnsXLink: 'xmlnsXlink' +} + + +/***/ }), + +/***/ "../node_modules/property-information/lib/html.js": +/*!********************************************************!*\ + !*** ../node_modules/property-information/lib/html.js ***! + \********************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ html: () => (/* binding */ html) +/* harmony export */ }); +/* harmony import */ var _util_types_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./util/types.js */ "../node_modules/property-information/lib/util/types.js"); +/* harmony import */ var _util_create_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./util/create.js */ "../node_modules/property-information/lib/util/create.js"); +/* harmony import */ var _util_case_insensitive_transform_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./util/case-insensitive-transform.js */ "../node_modules/property-information/lib/util/case-insensitive-transform.js"); + + + + +const html = (0,_util_create_js__WEBPACK_IMPORTED_MODULE_0__.create)({ + space: 'html', + attributes: { + acceptcharset: 'accept-charset', + classname: 'class', + htmlfor: 'for', + httpequiv: 'http-equiv' + }, + transform: _util_case_insensitive_transform_js__WEBPACK_IMPORTED_MODULE_1__.caseInsensitiveTransform, + mustUseProperty: ['checked', 'multiple', 'muted', 'selected'], + properties: { + // Standard Properties. + abbr: null, + accept: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.commaSeparated, + acceptCharset: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.spaceSeparated, + accessKey: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.spaceSeparated, + action: null, + allow: null, + allowFullScreen: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.boolean, + allowPaymentRequest: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.boolean, + allowUserMedia: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.boolean, + alt: null, + as: null, + async: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.boolean, + autoCapitalize: null, + autoComplete: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.spaceSeparated, + autoFocus: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.boolean, + autoPlay: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.boolean, + capture: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.boolean, + charSet: null, + checked: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.boolean, + cite: null, + className: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.spaceSeparated, + cols: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.number, + colSpan: null, + content: null, + contentEditable: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.booleanish, + controls: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.boolean, + controlsList: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.spaceSeparated, + coords: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.number | _util_types_js__WEBPACK_IMPORTED_MODULE_2__.commaSeparated, + crossOrigin: null, + data: null, + dateTime: null, + decoding: null, + default: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.boolean, + defer: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.boolean, + dir: null, + dirName: null, + disabled: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.boolean, + download: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.overloadedBoolean, + draggable: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.booleanish, + encType: null, + enterKeyHint: null, + form: null, + formAction: null, + formEncType: null, + formMethod: null, + formNoValidate: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.boolean, + formTarget: null, + headers: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.spaceSeparated, + height: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.number, + hidden: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.boolean, + high: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.number, + href: null, + hrefLang: null, + htmlFor: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.spaceSeparated, + httpEquiv: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.spaceSeparated, + id: null, + imageSizes: null, + imageSrcSet: null, + inputMode: null, + integrity: null, + is: null, + isMap: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.boolean, + itemId: null, + itemProp: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.spaceSeparated, + itemRef: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.spaceSeparated, + itemScope: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.boolean, + itemType: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.spaceSeparated, + kind: null, + label: null, + lang: null, + language: null, + list: null, + loading: null, + loop: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.boolean, + low: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.number, + manifest: null, + max: null, + maxLength: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.number, + media: null, + method: null, + min: null, + minLength: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.number, + multiple: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.boolean, + muted: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.boolean, + name: null, + nonce: null, + noModule: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.boolean, + noValidate: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.boolean, + onAbort: null, + onAfterPrint: null, + onAuxClick: null, + onBeforeMatch: null, + onBeforePrint: null, + onBeforeUnload: null, + onBlur: null, + onCancel: null, + onCanPlay: null, + onCanPlayThrough: null, + onChange: null, + onClick: null, + onClose: null, + onContextLost: null, + onContextMenu: null, + onContextRestored: null, + onCopy: null, + onCueChange: null, + onCut: null, + onDblClick: null, + onDrag: null, + onDragEnd: null, + onDragEnter: null, + onDragExit: null, + onDragLeave: null, + onDragOver: null, + onDragStart: null, + onDrop: null, + onDurationChange: null, + onEmptied: null, + onEnded: null, + onError: null, + onFocus: null, + onFormData: null, + onHashChange: null, + onInput: null, + onInvalid: null, + onKeyDown: null, + onKeyPress: null, + onKeyUp: null, + onLanguageChange: null, + onLoad: null, + onLoadedData: null, + onLoadedMetadata: null, + onLoadEnd: null, + onLoadStart: null, + onMessage: null, + onMessageError: null, + onMouseDown: null, + onMouseEnter: null, + onMouseLeave: null, + onMouseMove: null, + onMouseOut: null, + onMouseOver: null, + onMouseUp: null, + onOffline: null, + onOnline: null, + onPageHide: null, + onPageShow: null, + onPaste: null, + onPause: null, + onPlay: null, + onPlaying: null, + onPopState: null, + onProgress: null, + onRateChange: null, + onRejectionHandled: null, + onReset: null, + onResize: null, + onScroll: null, + onScrollEnd: null, + onSecurityPolicyViolation: null, + onSeeked: null, + onSeeking: null, + onSelect: null, + onSlotChange: null, + onStalled: null, + onStorage: null, + onSubmit: null, + onSuspend: null, + onTimeUpdate: null, + onToggle: null, + onUnhandledRejection: null, + onUnload: null, + onVolumeChange: null, + onWaiting: null, + onWheel: null, + open: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.boolean, + optimum: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.number, + pattern: null, + ping: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.spaceSeparated, + placeholder: null, + playsInline: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.boolean, + poster: null, + preload: null, + readOnly: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.boolean, + referrerPolicy: null, + rel: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.spaceSeparated, + required: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.boolean, + reversed: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.boolean, + rows: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.number, + rowSpan: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.number, + sandbox: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.spaceSeparated, + scope: null, + scoped: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.boolean, + seamless: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.boolean, + selected: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.boolean, + shape: null, + size: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.number, + sizes: null, + slot: null, + span: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.number, + spellCheck: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.booleanish, + src: null, + srcDoc: null, + srcLang: null, + srcSet: null, + start: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.number, + step: null, + style: null, + tabIndex: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.number, + target: null, + title: null, + translate: null, + type: null, + typeMustMatch: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.boolean, + useMap: null, + value: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.booleanish, + width: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.number, + wrap: null, + + // Legacy. + // See: https://html.spec.whatwg.org/#other-elements,-attributes-and-apis + align: null, // Several. Use CSS `text-align` instead, + aLink: null, // ``. Use CSS `a:active {color}` instead + archive: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.spaceSeparated, // ``. List of URIs to archives + axis: null, // `
    "; + } ) + ->implode( '' ); + } + + /** + * Format compatibility status into raw string. + * + * @param array $compatibility_status + * + * @return string + */ + private function get_raw_from_compatibility_status( array $compatibility_status ) { + return PHP_EOL . $this->merge_compatibility_status_with_plugins( $compatibility_status ) + ->map( function ( array $plugin ) { + return "\t{$plugin['Name']}: {$plugin['compatibility_status']}"; + } ) + ->implode( PHP_EOL ); + } + + /** + * @return array + */ + private function get_report_labels() { + return [ + Compatibility_Tag::COMPATIBLE => esc_html__( 'Compatible', 'elementor' ), + Compatibility_Tag::INCOMPATIBLE => esc_html__( 'Incompatible', 'elementor' ), + Compatibility_Tag::HEADER_NOT_EXISTS => esc_html__( 'Compatibility not specified', 'elementor' ), + Compatibility_Tag::INVALID_VERSION => esc_html__( 'Compatibility unknown', 'elementor' ), + Compatibility_Tag::PLUGIN_NOT_EXISTS => esc_html__( 'Error', 'elementor' ), + ]; + } +} diff --git a/wp-content/plugins/elementor/modules/compatibility-tag/compatibility-tag.php b/wp-content/plugins/elementor/modules/compatibility-tag/compatibility-tag.php new file mode 100644 index 0000000..a42f5a1 --- /dev/null +++ b/wp-content/plugins/elementor/modules/compatibility-tag/compatibility-tag.php @@ -0,0 +1,83 @@ +header = $header; + } + + /** + * Return if plugins is compatible or not. + * + * @param Version $version + * @param array $plugins_names + * + * @return array + * @throws \Exception + */ + public function check( Version $version, array $plugins_names ) { + return ( new Collection( $plugins_names ) ) + ->map_with_keys( function ( $plugin_name ) use ( $version ) { + return [ $plugin_name => $this->is_compatible( $version, $plugin_name ) ]; + } ) + ->all(); + } + + /** + * Check single plugin if is compatible or not. + * + * @param Version $version + * @param $plugin_name + * + * @return string + * @throws \Exception + */ + private function is_compatible( Version $version, $plugin_name ) { + $plugins = Plugin::$instance->wp->get_plugins(); + + if ( ! isset( $plugins[ $plugin_name ] ) ) { + return self::PLUGIN_NOT_EXISTS; + } + + $requested_plugin = $plugins[ $plugin_name ]; + + if ( empty( $requested_plugin[ $this->header ] ) ) { + return self::HEADER_NOT_EXISTS; + } + + if ( ! Version::is_valid_version( $requested_plugin[ $this->header ] ) ) { + return self::INVALID_VERSION; + } + + if ( $version->compare( '>', $requested_plugin[ $this->header ], Version::PART_MAJOR_2 ) ) { + return self::INCOMPATIBLE; + } + + return self::COMPATIBLE; + } +} diff --git a/wp-content/plugins/elementor/modules/compatibility-tag/module.php b/wp-content/plugins/elementor/modules/compatibility-tag/module.php new file mode 100644 index 0000000..35ea0ca --- /dev/null +++ b/wp-content/plugins/elementor/modules/compatibility-tag/module.php @@ -0,0 +1,78 @@ +merge( $this->get_plugins_with_plugin_title_in_their_name() ); + } + + /** + * Get all the plugins that has the name of the current plugin in their name. + * + * @return Collection + */ + private function get_plugins_with_plugin_title_in_their_name() { + return Plugin::$instance->wp + ->get_plugins() + ->except( [ + 'elementor/elementor.php', + 'elementor-beta/elementor-beta.php', + 'block-builder/block-builder.php', + ] ) + ->filter( function ( array $data ) { + return false !== strpos( strtolower( $data['Name'] ), 'elementor' ); + } ); + } +} diff --git a/wp-content/plugins/elementor/modules/compatibility-tag/views/plugin-update-message-compatibility.php b/wp-content/plugins/elementor/modules/compatibility-tag/views/plugin-update-message-compatibility.php new file mode 100644 index 0000000..9bde74f --- /dev/null +++ b/wp-content/plugins/elementor/modules/compatibility-tag/views/plugin-update-message-compatibility.php @@ -0,0 +1,68 @@ + +
    +
    +
    + +
    +
    +
    + + + - + get_plugin_label() ), + $new_version->__toString() // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped + ); + ?> +
    +
    +
    ` and ``. Use `scope` on `` + background: null, // ``. Use CSS `background-image` instead + bgColor: null, // `` and table elements. Use CSS `background-color` instead + border: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.number, // ``. Use CSS `border-width` instead, + borderColor: null, // `
    `. Use CSS `border-color` instead, + bottomMargin: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.number, // `` + cellPadding: null, // `
    ` + cellSpacing: null, // `
    ` + char: null, // Several table elements. When `align=char`, sets the character to align on + charOff: null, // Several table elements. When `char`, offsets the alignment + classId: null, // `` + clear: null, // `
    `. Use CSS `clear` instead + code: null, // `` + codeBase: null, // `` + codeType: null, // `` + color: null, // `` and `
    `. Use CSS instead + compact: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.boolean, // Lists. Use CSS to reduce space between items instead + declare: _util_types_js__WEBPACK_IMPORTED_MODULE_2__.boolean, // `` + event: null, // ` + is_connected() ) { + // Try update the server, but not needed to handle errors. + $this->request( 'disconnect' ); + } + + $this->delete(); + } + + /** + * @since 2.3.0 + * @access protected + */ + public function get_site_key() { + $site_key = get_option( static::OPTION_CONNECT_SITE_KEY ); + + if ( ! $site_key ) { + $site_key = md5( uniqid( wp_generate_password() ) ); + update_option( static::OPTION_CONNECT_SITE_KEY, $site_key ); + } + + return $site_key; + } + + protected function redirect_to_remote_authorize_url() { + switch ( $this->auth_mode ) { + case 'cli': + $this->get_app_token_from_cli_token( Utils::get_super_global_value( $_REQUEST, 'token' ) ); //phpcs:ignore WordPress.Security.NonceVerification.Recommended -- Nonce verification is not required here. + return; + default: + wp_redirect( $this->get_remote_authorize_url() ); //phpcs:ignore WordPress.Security.SafeRedirect.wp_redirect_wp_redirect -- Safe redirect is used here. + die; + } + } + + protected function get_auth_redirect_uri() { + $redirect_uri = $this->get_admin_url( 'get_token' ); + + switch ( $this->auth_mode ) { + case 'popup': + $redirect_uri = add_query_arg( [ + 'mode' => 'popup', + 'callback_id' => esc_attr( Utils::get_super_global_value( $_REQUEST, 'callback_id' ) ), //phpcs:ignore WordPress.Security.NonceVerification.Recommended -- Nonce verification is not required here. + ], $redirect_uri ); + break; + } + + return $redirect_uri; + } + + + protected function print_notices( $notices ) { + switch ( $this->auth_mode ) { + case 'cli': + foreach ( $notices as $notice ) { + printf( '[%s] %s', wp_kses_post( $notice['type'] ), wp_kses_post( $notice['content'] ) ); + } + break; + default: + /** + * @var Admin_Notices $admin_notices + */ + $admin_notices = Plugin::$instance->admin->get_component( 'admin-notices' ); + + foreach ( $notices as $notice ) { + $options = [ + 'description' => wp_kses_post( wpautop( $notice['content'] ) ), + 'type' => $notice['type'], + 'icon' => false, + ]; + + $admin_notices->print_admin_notice( $options ); + } + } + } + + protected function get_app_info() { + return []; + } + + protected function print_app_info() { + $app_info = $this->get_app_info(); + + foreach ( $app_info as $key => $item ) { + if ( $item['value'] ) { + $status = 'Exist'; + $color = 'green'; + } else { + $status = 'Empty'; + $color = 'red'; + } + + // PHPCS - the values of $item['label'], $color, $status are plain strings. + printf( '%s: %s
    ', $item['label'], $color, $status ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped + } + + } + + private function get_generated_urls( $endpoint ) { + $base_urls = $this->get_api_url(); + + if ( ! is_array( $base_urls ) ) { + $base_urls = [ $base_urls ]; + } + + return array_map( function ( $base_url ) use ( $endpoint ) { + return trailingslashit( $base_url ) . $endpoint; + }, $base_urls ); + } + + private function init_auth_mode() { + $is_rest = defined( 'REST_REQUEST' ) && REST_REQUEST; + $is_ajax = wp_doing_ajax(); + + if ( $is_rest || $is_ajax ) { + // Set default to 'xhr' if rest or ajax request. + $this->set_auth_mode( 'xhr' ); + } + + $mode = Utils::get_super_global_value( $_REQUEST, 'mode' ); //phpcs:ignore WordPress.Security.NonceVerification.Recommended -- Nonce verification is not required here. + + if ( $mode ) { + $allowed_auth_modes = [ + 'popup', + ]; + + if ( defined( 'WP_CLI' ) && WP_CLI ) { + $allowed_auth_modes[] = 'cli'; + } + + if ( in_array( $mode, $allowed_auth_modes, true ) ) { + $this->set_auth_mode( $mode ); + } + } + } + + public function set_auth_mode( $mode ) { + $this->auth_mode = $mode; + } + + /** + * @since 2.3.0 + * @access public + */ + public function __construct() { + add_action( 'admin_notices', [ $this, 'admin_notice' ] ); + + $this->init_auth_mode(); + + $this->http = new Http(); + + /** + * Allow extended apps to customize the __construct without call parent::__construct. + */ + $this->init(); + } +} diff --git a/wp-content/plugins/elementor/core/common/modules/connect/apps/base-user-app.php b/wp-content/plugins/elementor/core/common/modules/connect/apps/base-user-app.php new file mode 100644 index 0000000..7a25b26 --- /dev/null +++ b/wp-content/plugins/elementor/core/common/modules/connect/apps/base-user-app.php @@ -0,0 +1,29 @@ +get_option_name(), $this->data ); + } + + /** + * @since 2.3.0 + * @access protected + */ + protected function init_data() { + $this->data = get_user_option( $this->get_option_name() ); + + if ( ! $this->data ) { + $this->data = []; + } + } +} diff --git a/wp-content/plugins/elementor/core/common/modules/connect/apps/common-app.php b/wp-content/plugins/elementor/core/common/modules/connect/apps/common-app.php new file mode 100644 index 0000000..a9fd18b --- /dev/null +++ b/wp-content/plugins/elementor/core/common/modules/connect/apps/common-app.php @@ -0,0 +1,42 @@ +data = & self::$common_data; + } + + public function action_reset() { + delete_user_option( get_current_user_id(), static::OPTION_CONNECT_COMMON_DATA_KEY ); + + parent::action_reset(); + } +} diff --git a/wp-content/plugins/elementor/core/common/modules/connect/apps/connect.php b/wp-content/plugins/elementor/core/common/modules/connect/apps/connect.php new file mode 100644 index 0000000..7f42c0a --- /dev/null +++ b/wp-content/plugins/elementor/core/common/modules/connect/apps/connect.php @@ -0,0 +1,27 @@ +is_connected() ) { + return new \WP_Error( '401', esc_html__( 'Connecting to the Library failed. Please try reloading the page and try again', 'elementor' ) ); + } + + $body_args = [ + 'id' => $id, + + // Which API version is used. + 'api_version' => ELEMENTOR_VERSION, + // Which language to return. + 'site_lang' => get_bloginfo( 'language' ), + ]; + + /** + * API: Template body args. + * + * Filters the body arguments send with the GET request when fetching the content. + * + * @since 1.0.0 + * + * @param array $body_args Body arguments. + */ + $body_args = apply_filters( 'elementor/api/get_templates/body_args', $body_args ); + + $template_content = $this->request( 'get_template_content', $body_args, true ); + + if ( is_wp_error( $template_content ) && 401 === $template_content->get_error_code() ) { + // Normalize 401 message + return new \WP_Error( 401, esc_html__( 'Connecting to the Library failed. Please try reloading the page and try again', 'elementor' ) ); + } + + return $template_content; + } + + public function localize_settings( $settings ) { + $is_connected = $this->is_connected(); + + /** @var ConnectModule $connect */ + $connect = Plugin::$instance->common->get_component( 'connect' ); + + return array_replace_recursive( $settings, [ + 'library_connect' => [ + 'is_connected' => $is_connected, + 'subscription_plans' => $connect->get_subscription_plans( 'template-library' ), + // TODO: Remove `base_access_level`. + 'base_access_level' => ConnectModule::ACCESS_LEVEL_CORE, + 'base_access_tier' => ConnectModule::ACCESS_TIER_FREE, + 'current_access_level' => ConnectModule::ACCESS_LEVEL_CORE, + 'current_access_tier' => ConnectModule::ACCESS_TIER_FREE, + ], + ] ); + } + + public function library_connect_popup_seen() { + User::set_introduction_viewed( [ + 'introductionKey' => 'library_connect', + ] ); + } + + /** + * @param \Elementor\Core\Common\Modules\Ajax\Module $ajax_manager + */ + public function register_ajax_actions( $ajax_manager ) { + $ajax_manager->register_ajax_action( 'library_connect_popup_seen', [ $this, 'library_connect_popup_seen' ] ); + } + + /** + * After Connect + * + * After Connecting to the library, re-fetch the library data to get it up to date. + * + * @since 3.7.0 + */ + protected function after_connect() { + Api::get_library_data( true ); + } + + protected function get_app_info() { + return [ + 'user_common_data' => [ + 'label' => 'User Common Data', + 'value' => get_user_option( $this->get_option_name(), get_current_user_id() ), + ], + 'connect_site_key' => [ + 'label' => 'Site Key', + 'value' => get_option( self::OPTION_CONNECT_SITE_KEY ), + ], + 'remote_info_library' => [ + 'label' => 'Remote Library Info', + 'value' => get_option( 'elementor_remote_info_library' ), + ], + ]; + } + + protected function get_popup_success_event_data() { + return [ + 'access_level' => ConnectModule::ACCESS_LEVEL_CORE, + 'access_tier' => ConnectModule::ACCESS_TIER_FREE, + ]; + } + + protected function init() { + add_filter( 'elementor/editor/localize_settings', [ $this, 'localize_settings' ] ); + add_filter( 'elementor/common/localize_settings', [ $this, 'localize_settings' ] ); + add_action( 'elementor/ajax/register_actions', [ $this, 'register_ajax_actions' ] ); + } +} diff --git a/wp-content/plugins/elementor/core/common/modules/connect/connect-menu-item.php b/wp-content/plugins/elementor/core/common/modules/connect/connect-menu-item.php new file mode 100644 index 0000000..8d7c441 --- /dev/null +++ b/wp-content/plugins/elementor/core/common/modules/connect/connect-menu-item.php @@ -0,0 +1,58 @@ +common->get_component( 'connect' )->get_apps(); + ?> + +
    + '; + $app->render_admin_widget(); + echo '
    '; + } + + ?> + + registered_apps = [ + 'connect' => Connect::get_class_name(), + 'library' => Library::get_class_name(), + ]; + + // When using REST API the parent module is construct after the action 'elementor/init' + // so this part of code make sure to register the module "apps". + if ( did_action( 'elementor/init' ) ) { + $this->init(); + } else { + // Note: The priority 11 is for allowing plugins to add their register callback on elementor init. + add_action( 'elementor/init', [ $this, 'init' ], 11 ); + } + + add_filter( 'elementor/tracker/send_tracking_data_params', function ( $params ) { + return $this->add_tracking_data( $params ); + } ); + } + + /** + * Register default apps. + * + * Registers the default apps. + * + * @since 2.3.0 + * @access public + */ + public function init() { + if ( is_admin() ) { + $this->admin_page = new Admin(); + } + + /** + * Register Elementor apps. + * + * Fires after Elementor registers the default apps. + * + * @since 2.3.0 + * + * @param self $this The apps manager instance. + */ + do_action( 'elementor/connect/apps/register', $this ); + + foreach ( $this->registered_apps as $slug => $class ) { + $this->apps[ $slug ] = new $class(); + } + } + + /** + * @deprecated 3.1.0 + */ + public function localize_settings() { + Plugin::$instance->modules_manager->get_modules( 'dev-tools' )->deprecation->deprecated_function( __METHOD__, '3.1.0' ); + + return []; + } + + /** + * Register app. + * + * Registers an app. + * + * @since 2.3.0 + * @access public + * + * @param string $slug App slug. + * @param string $class App full class name. + * + * @return self The updated apps manager instance. + */ + public function register_app( $slug, $class ) { + $this->registered_apps[ $slug ] = $class; + + return $this; + } + + /** + * Get app instance. + * + * Retrieve the app instance. + * + * @since 2.3.0 + * @access public + * + * @param $slug + * + * @return Base_App|null + */ + public function get_app( $slug ) { + if ( isset( $this->apps[ $slug ] ) ) { + return $this->apps[ $slug ]; + } + + return null; + } + + /** + * @since 2.3.0 + * @access public + * @return Base_App[] + */ + public function get_apps() { + return $this->apps; + } + + /** + * @since 2.3.0 + * @access public + */ + public function register_category( $slug, $args ) { + $this->categories[ $slug ] = $args; + return $this; + } + + /** + * @since 2.3.0 + * @access public + */ + public function get_categories() { + return $this->categories; + } + + /** + * @param string $context Where this subscription plan should be shown. + * + * @return array + */ + public function get_subscription_plans( $context = '' ) { + $base_url = Utils::has_pro() ? 'https://my.elementor.com/upgrade-subscription' : 'https://elementor.com/pro'; + $promotion_url = $base_url . '/?utm_source=' . $context . '&utm_medium=wp-dash&utm_campaign=gopro'; + + return [ + static::ACCESS_TIER_FREE => [ + 'label' => null, + 'promotion_url' => null, + 'color' => null, + ], + static::ACCESS_TIER_ESSENTIAL => [ + 'label' => 'Pro', + 'promotion_url' => $promotion_url, + 'color' => '#92003B', + ], + static::ACCESS_TIER_ESSENTIAL_OCT_2023 => [ + 'label' => 'Advanced', // Should be the same label as "Advanced". + 'promotion_url' => $promotion_url, + 'color' => '#92003B', + ], + static::ACCESS_TIER_ADVANCED => [ + 'label' => 'Advanced', + 'promotion_url' => $promotion_url, + 'color' => '#92003B', + ], + static::ACCESS_TIER_EXPERT => [ + 'label' => 'Expert', + 'promotion_url' => $promotion_url, + 'color' => '#92003B', + ], + static::ACCESS_TIER_AGENCY => [ + 'label' => 'Agency', + 'promotion_url' => $promotion_url, + 'color' => '#92003B', + ], + ]; + } + + private function add_tracking_data( $params ) { + $users = []; + + $users_query = new WP_User_Query( [ + 'count_total' => false, // Disable SQL_CALC_FOUND_ROWS. + 'meta_query' => [ + 'key' => Common_App::OPTION_CONNECT_COMMON_DATA_KEY, + 'compare' => 'EXISTS', + ], + ] ); + + foreach ( $users_query->get_results() as $user ) { + $connect_common_data = get_user_option( Common_App::OPTION_CONNECT_COMMON_DATA_KEY, $user->ID ); + + if ( $connect_common_data ) { + $users [] = [ + 'id' => $user->ID, + 'email' => $connect_common_data['user']->email, + 'roles' => implode( ', ', $user->roles ), + ]; + } + } + + $params['usages'][ $this->get_name() ] = [ + 'site_key' => get_option( Base_App::OPTION_CONNECT_SITE_KEY ), + 'count' => count( $users ), + 'users' => $users, + ]; + + return $params; + } +} diff --git a/wp-content/plugins/elementor/core/common/modules/event-tracker/data/controller.php b/wp-content/plugins/elementor/core/common/modules/event-tracker/data/controller.php new file mode 100644 index 0000000..30ba2f0 --- /dev/null +++ b/wp-content/plugins/elementor/core/common/modules/event-tracker/data/controller.php @@ -0,0 +1,74 @@ +index_endpoint->register_items_route( \WP_REST_Server::CREATABLE, [ + 'event_data' => [ + 'description' => 'All the recorded event data in JSON format', + 'type' => 'object', + 'required' => true, + ], + ] ); + } + + /** + * Get Permissions Callback + * + * This endpoint should only accept POST requests, and currently we only track site administrator actions. + * + * @since 3.6.0 + * + * @param \WP_REST_Request $request + * @return bool + */ + public function get_permission_callback( $request ) { + if ( WP_REST_Server::CREATABLE !== $request->get_method() ) { + return false; + } + + return current_user_can( 'manage_options' ); + } + + /** + * Create Items + * + * Receives a request for adding an event data entry into the database. If the request contains event data, this + * method initiates creation of a database entry with the event data in the Events DB table. + * + * @since 3.6.0 + * + * @param \WP_REST_Request $request + * @return bool + */ + public function create_items( $request ) { + $request_body = $request->get_json_params(); + + if ( empty( $request_body['event_data'] ) ) { + return false; + } + + /** @var Events_DB_Manager $event_tracker_db_manager */ + $event_tracker_db_manager = Plugin::$instance->common + ->get_component( 'event-tracker' ) + ->get_component( 'events-db' ); + + $event_tracker_db_manager->create_entry( $request_body['event_data'] ); + + return true; + } +} diff --git a/wp-content/plugins/elementor/core/common/modules/event-tracker/db.php b/wp-content/plugins/elementor/core/common/modules/event-tracker/db.php new file mode 100644 index 0000000..254e9a3 --- /dev/null +++ b/wp-content/plugins/elementor/core/common/modules/event-tracker/db.php @@ -0,0 +1,188 @@ +wpdb->prefix . self::TABLE_NAME; + } + + /** + * Prepare Database for Entry + * + * The events database should have a limit of up to 1000 event entries stored daily. + * Before adding a new entry to the database, we make sure that the limit of 1000 events is not reached. + * If there are 1000 or more entries in the DB, we delete the earliest-inserted entry before inserting a new one. + * + * @since 3.6.0 + */ + public function prepare_db_for_entry() { + $events = $this->get_event_ids_from_db(); + + if ( 1000 <= count( $events ) ) { + $event_ids = []; + + foreach ( $events as $event ) { + $event_ids[] = $event->id; + } + + // Sort the array by entry ID + array_multisort( $event_ids, SORT_ASC, $events ); + + // Delete the smallest ID (which is the earliest DB entry) + $this->wpdb->delete( $this->get_table_name(), [ 'ID' => $events[0]->id ] ); + } + } + + /** + * Create Entry + * + * Adds an event entry to the database. + * + * @since 3.6.0 + */ + public function create_entry( $event_data ) { + $this->prepare_db_for_entry(); + + $connect = Plugin::$instance->common->get_component( 'connect' ); + /** @var Library $library */ + $library = $connect->get_apps()['library']; + + if ( ! isset( $event_data['details'] ) ) { + $event_data['details'] = []; + } + + if ( $library->is_connected() ) { + $user_connect_data = get_user_option( Common_App::OPTION_CONNECT_COMMON_DATA_KEY ); + + // Add the user's client ID to the event. + $event_data['details']['client_id'] = $user_connect_data['client_id']; + } + + $event_data['details'] = json_encode( $event_data['details'] ); + + $entry = [ + 'event_data' => wp_json_encode( $event_data ), + 'created_at' => $event_data['ts'], + ]; + + $this->wpdb->insert( $this->get_table_name(), $entry ); + } + + /** + * Get Event IDs From DB + * + * Fetches the IDs of all events saved in the database. + * + * @since 3.6.0 + * + * @return array|object|null + */ + public function get_event_ids_from_db() { + // phpcs:disable WordPress.DB.PreparedSQL.InterpolatedNotPrepared + return $this->wpdb->get_results( "SELECT id FROM {$this->get_table_name()}" ); + } + + /** + * Reset Table + * + * Empties the contents of the Events DB table. + * + * @since 3.6.0 + */ + public static function reset_table() { + global $wpdb; + + $table_name = $wpdb->prefix . self::TABLE_NAME; + + // Delete all content of the table. + // phpcs:disable WordPress.DB.PreparedSQL.InterpolatedNotPrepared + $wpdb->query( "TRUNCATE TABLE {$table_name}" ); + } + + /** + * Create Table + * + * Creates the `wp_e_events` database table. + * + * @since 3.6.0 + * + * @param string $query to that looks for the Events table in the DB. Used for checking if table was created. + */ + private function create_table( $query ) { + require_once ABSPATH . 'wp-admin/includes/upgrade.php'; + + $table_name = $this->get_table_name(); + $charset_collate = $this->wpdb->get_charset_collate(); + + $e_events_table = "CREATE TABLE `{$table_name}` ( + id bigint(20) unsigned auto_increment primary key, + event_data text null, + created_at datetime not null + ) {$charset_collate};"; + + // phpcs:disable WordPress.DB.PreparedSQL.NotPrepared + $this->wpdb->query( $e_events_table ); + + // Check if table was created successfully. + // phpcs:disable WordPress.DB.PreparedSQL.NotPrepared + if ( $this->wpdb->get_var( $query ) === $table_name ) { + update_option( self::DB_VERSION_OPTION_KEY, self::CURRENT_DB_VERSION, false ); + } + } + + /** + * Add Indexes + * + * Adds an index to the events table for the creation date column. + * + * @since 3.6.0 + */ + private function add_indexes() { + // phpcs:ignore WordPress.DB.PreparedSQL.NotPrepared + $this->wpdb->query( 'ALTER TABLE ' . $this->get_table_name() . ' + ADD INDEX `created_at_index` (`created_at`) + ' ); + } + + public function __construct() { + global $wpdb; + $this->wpdb = $wpdb; + + // Check if table exists. If not, create it. + $query = $wpdb->prepare( 'SHOW TABLES LIKE %s', $wpdb->esc_like( $this->get_table_name() ) ); + + // phpcs:disable WordPress.DB.PreparedSQL.NotPrepared + if ( $wpdb->get_var( $query ) !== $this->get_table_name() ) { + $this->create_table( $query ); + $this->add_indexes(); + } + } +} diff --git a/wp-content/plugins/elementor/core/common/modules/event-tracker/module.php b/wp-content/plugins/elementor/core/common/modules/event-tracker/module.php new file mode 100644 index 0000000..faaa887 --- /dev/null +++ b/wp-content/plugins/elementor/core/common/modules/event-tracker/module.php @@ -0,0 +1,47 @@ + Tracker::is_allow_track(), + ]; + } + + public function __construct() { + // Initialize Events Database Table + $this->add_component( 'events-db', new DB() ); + + // Handle User Data Deletion/Export requests. + new Personal_Data(); + + Plugin::$instance->data_manager_v2->register_controller( new Controller() ); + } +} diff --git a/wp-content/plugins/elementor/core/common/modules/event-tracker/personal-data.php b/wp-content/plugins/elementor/core/common/modules/event-tracker/personal-data.php new file mode 100644 index 0000000..960d36f --- /dev/null +++ b/wp-content/plugins/elementor/core/common/modules/event-tracker/personal-data.php @@ -0,0 +1,85 @@ +common + ->get_component( 'event-tracker' ) + ->get_component( 'events-db' ); + + $events = $event_tracker_db_manager->get_event_ids_from_db(); + $events_count = count( $events ); + + DB::reset_table(); + + // Validate table deleted + $updated_events = $event_tracker_db_manager->get_event_ids_from_db(); + $updated_events_count = count( $updated_events ); + + return [ + 'items_removed' => $events_count - $updated_events_count, + 'items_retained' => 0, + 'messages' => [], + 'done' => 0 === $updated_events_count, + ]; + } + + /** + * Add eraser to the list of erasers. + * + * @param $erasers + * + * @return array[] + */ + private function add_eraser( $erasers ) { + return $erasers + [ + self::WP_KEY => [ + 'eraser_friendly_name' => $this->get_title(), + 'callback' => function () { + return $this->erase_data(); + }, + ], + ]; + } + + /** + * Personal_Data constructor. + */ + public function __construct() { + add_filter( 'wp_privacy_personal_data_erasers', function ( $exporters ) { + return $this->add_eraser( $exporters ); + } ); + } +} diff --git a/wp-content/plugins/elementor/core/common/modules/finder/base-category.php b/wp-content/plugins/elementor/core/common/modules/finder/base-category.php new file mode 100644 index 0000000..6e63d98 --- /dev/null +++ b/wp-content/plugins/elementor/core/common/modules/finder/base-category.php @@ -0,0 +1,98 @@ +modules_manager->get_modules( 'dev-tools' )->deprecation->deprecated_function( + get_class( $this ) . '::' . __FUNCTION__, + '3.5.0', + 'This method will be replaced with an abstract method.' + ); + + return ''; + } + + /** + * Get category items. + * + * @since 2.3.0 + * @abstract + * @access public + * + * @param array $options + * + * @return array + */ + abstract public function get_category_items( array $options = [] ); + + /** + * Is dynamic. + * + * Determine if the category is dynamic. + * + * @since 2.3.0 + * @access public + * + * @return bool + */ + public function is_dynamic() { + return false; + } + + /** + * Get init settings. + * + * @since 2.3.0 + * @access protected + * + * @return array + */ + protected function get_init_settings() { + $settings = [ + 'title' => $this->get_title(), + 'dynamic' => $this->is_dynamic(), + ]; + + if ( ! $settings['dynamic'] ) { + $settings['items'] = $this->get_category_items(); + } + + return $settings; + } +} diff --git a/wp-content/plugins/elementor/core/common/modules/finder/categories-manager.php b/wp-content/plugins/elementor/core/common/modules/finder/categories-manager.php new file mode 100644 index 0000000..f0f5527 --- /dev/null +++ b/wp-content/plugins/elementor/core/common/modules/finder/categories-manager.php @@ -0,0 +1,167 @@ +modules_manager->get_modules( 'dev-tools' )->deprecation->deprecated_function( + __METHOD__, + '3.5.0', + 'register()' + ); + + $this->register( $category, $category_name ); + } + + /** + * Register finder category. + * + * @since 3.5.0 + * @access public + * + * @param Base_Category $finder_category_instance An Instance of a category. + * @param string $finder_category_name A Category name. Deprecated parameter. + * + * @return void + */ + public function register( Base_Category $finder_category_instance, $finder_category_name = null ) { + // TODO: For BC. Remove in the future. + if ( $finder_category_name ) { + Plugin::instance()->modules_manager->get_modules( 'dev-tools' )->deprecation->deprecated_argument( + '$finder_category_name', '3.5.0' + ); + } else { + $finder_category_name = $finder_category_instance->get_id(); + } + + $this->categories[ $finder_category_name ] = $finder_category_instance; + } + + /** + * Unregister a finder category. + * + * @param string $finder_category_name - Category to unregister. + * + * @return void + * @since 3.6.0 + * @access public + */ + public function unregister( $finder_category_name ) { + unset( $this->categories[ $finder_category_name ] ); + } + + /** + * Get categories. + * + * Retrieve the registered categories, or a specific category if the category name + * is provided as a parameter. + * + * @since 2.3.0 + * @access public + * + * @param string $category Category name. + * + * @return Base_Category|Base_Category[]|null + */ + public function get_categories( $category = '' ) { + if ( ! $this->categories ) { + $this->init_categories(); + } + + if ( $category ) { + if ( isset( $this->categories[ $category ] ) ) { + return $this->categories[ $category ]; + } + + return null; + } + + return $this->categories; + } + + /** + * Init categories. + * + * Used to initialize the native finder categories. + * + * @since 2.3.0 + * @access private + */ + private function init_categories() { + foreach ( $this->categories_list as $category_name ) { + $class_name = __NAMESPACE__ . '\Categories\\' . $category_name; + + $this->register( new $class_name() ); + } + + /** + * Elementor Finder categories init. + * + * Fires after Elementor Finder initialize it's native categories. + * + * This hook should be used to add your own Finder categories. + * + * @since 2.3.0 + * @deprecated 3.5.0 Use `elementor/finder/register` hook instead. + * + * @param Categories_Manager $this. + */ + Plugin::$instance->modules_manager->get_modules( 'dev-tools' )->deprecation->do_deprecated_action( + 'elementor/finder/categories/init', + [ $this ], + '3.5.0', + 'elementor/finder/register' + ); + + /** + * Elementor Finder categories registration. + * + * Fires after Elementor Finder initialize it's native categories. + * + * This hook should be used to register your own Finder categories. + * + * @since 3.5.0 + * + * @param Categories_Manager $this Finder Categories manager. + */ + do_action( 'elementor/finder/register', $this ); + } +} diff --git a/wp-content/plugins/elementor/core/common/modules/finder/categories/create.php b/wp-content/plugins/elementor/core/common/modules/finder/categories/create.php new file mode 100644 index 0000000..7ae11d0 --- /dev/null +++ b/wp-content/plugins/elementor/core/common/modules/finder/categories/create.php @@ -0,0 +1,115 @@ +documents->get_document_types(); + + // TODO: Remove - Support 'post' backwards compatibility - See `Documents_Manager::register_default_types()`. + unset( $registered_document_types['post'] ); + + $elementor_supported_post_types = array_flip( get_post_types_by_support( 'elementor' ) ); + + foreach ( $registered_document_types as $document_name => $document_class ) { + $document_properties = $document_class::get_properties(); + + if ( empty( $document_properties['show_in_finder'] ) ) { + continue; + } + + if ( ! empty( $document_properties['cpt'] ) ) { + foreach ( $document_properties['cpt'] as $cpt ) { + unset( $elementor_supported_post_types[ $cpt ] ); + } + } + + $result[ $document_name ] = $this->create_item_url_by_document_class( $document_class ); + } + + foreach ( $elementor_supported_post_types as $post_type => $val ) { + $result[ $post_type ] = $this->create_item_url_by_post_type( $post_type ); + } + + return $result; + } + + private function create_item_url_by_post_type( $post_type ) { + $post_type_object = get_post_type_object( $post_type ); + + // If there is an old post type from inactive plugins. + if ( ! $post_type_object ) { + return false; + } + + return $this->get_create_new_template( + sprintf( __( 'Add New %s', 'elementor' ), $post_type_object->labels->singular_name ), + Plugin::$instance->documents->get_create_new_post_url( $post_type ) + ); + } + + private function create_item_url_by_document_class( $document_class ) { + $result = $this->get_create_new_template( + $document_class::get_add_new_title(), + $document_class::get_create_url() + ); + + $lock_behavior = $document_class::get_lock_behavior_v2(); + $is_locked = ! empty( $lock_behavior ) && $lock_behavior->is_locked(); + + if ( $is_locked ) { + $result['lock'] = $lock_behavior->get_config(); + } + + return $result; + } + + private function get_create_new_template( $add_new_title, $url ) { + return [ + 'title' => $add_new_title, + 'icon' => 'plus-circle-o', + 'url' => $url, + 'keywords' => [ $add_new_title, 'post', 'page', 'template', 'new', 'create' ], + ]; + } +} diff --git a/wp-content/plugins/elementor/core/common/modules/finder/categories/edit.php b/wp-content/plugins/elementor/core/common/modules/finder/categories/edit.php new file mode 100644 index 0000000..0ea980c --- /dev/null +++ b/wp-content/plugins/elementor/core/common/modules/finder/categories/edit.php @@ -0,0 +1,140 @@ + false, + ] ); + + $post_types[] = Source_Local::CPT; + + $document_types = Plugin::$instance->documents->get_document_types( [ + 'is_editable' => true, + 'show_in_finder' => true, + ] ); + + $recently_edited_query_args = [ + 'no_found_rows' => true, + 'post_type' => $post_types, + 'post_status' => [ 'publish', 'draft', 'private', 'pending', 'future' ], + 'posts_per_page' => '10', + 'meta_query' => [ + [ + 'key' => '_elementor_edit_mode', + 'value' => 'builder', + ], + [ + 'relation' => 'or', + [ + 'key' => Document::TYPE_META_KEY, + 'compare' => 'NOT EXISTS', + ], + [ + 'key' => Document::TYPE_META_KEY, + 'value' => array_keys( $document_types ), + ], + ], + ], + 'orderby' => 'modified', + 's' => $options['filter'], + ]; + + $recently_edited_query = new \WP_Query( $recently_edited_query_args ); + + $items = []; + + /** @var \WP_Post $post */ + foreach ( $recently_edited_query->posts as $post ) { + $document = Plugin::$instance->documents->get( $post->ID ); + + if ( ! $document ) { + continue; + } + + $is_template = Source_Local::CPT === $post->post_type; + + $description = $document->get_title(); + + $icon = 'document-file'; + + if ( $is_template ) { + $description = esc_html__( 'Template', 'elementor' ) . ' / ' . $description; + + $icon = 'post-title'; + } + + $items[] = [ + 'icon' => $icon, + 'title' => esc_html( $post->post_title ), + 'description' => $description, + 'url' => $document->get_edit_url(), + 'actions' => [ + [ + 'name' => 'view', + 'url' => $document->get_permalink(), + 'icon' => 'preview-medium', + ], + ], + ]; + } + + return $items; + } +} diff --git a/wp-content/plugins/elementor/core/common/modules/finder/categories/general.php b/wp-content/plugins/elementor/core/common/modules/finder/categories/general.php new file mode 100644 index 0000000..0bd48df --- /dev/null +++ b/wp-content/plugins/elementor/core/common/modules/finder/categories/general.php @@ -0,0 +1,85 @@ + [ + 'title' => esc_html__( 'Saved Templates', 'elementor' ), + 'icon' => 'library-save', + 'url' => Source_Local::get_admin_url(), + 'keywords' => [ 'template', 'section', 'page', 'library' ], + ], + 'system-info' => [ + 'title' => esc_html__( 'System Info', 'elementor' ), + 'icon' => 'info-circle-o', + 'url' => admin_url( 'admin.php?page=elementor-system-info' ), + 'keywords' => [ 'system', 'info', 'environment', 'elementor' ], + ], + 'role-manager' => [ + 'title' => esc_html__( 'Role Manager', 'elementor' ), + 'icon' => 'person', + 'url' => Role_Manager::get_url(), + 'keywords' => [ 'role', 'manager', 'user', 'elementor' ], + ], + 'knowledge-base' => [ + 'title' => esc_html__( 'Knowledge Base', 'elementor' ), + 'url' => admin_url( 'admin.php?page=go_knowledge_base_site' ), + 'keywords' => [ 'help', 'knowledge', 'docs', 'elementor' ], + ], + 'theme-builder' => [ + 'title' => esc_html__( 'Theme Builder', 'elementor' ), + 'icon' => 'library-save', + 'url' => Plugin::$instance->app->get_settings( 'menu_url' ), + 'keywords' => [ 'template', 'header', 'footer', 'single', 'archive', 'search', '404', 'library' ], + ], + 'kit-library' => [ + 'title' => esc_html__( 'Kit Library', 'elementor' ), + 'icon' => 'kit-parts', + 'url' => Plugin::$instance->app->get_base_url() . '#/kit-library', + 'keywords' => [ 'kit library', 'kit', 'library', 'site parts', 'parts', 'assets', 'templates' ], + ], + ]; + } +} diff --git a/wp-content/plugins/elementor/core/common/modules/finder/categories/settings.php b/wp-content/plugins/elementor/core/common/modules/finder/categories/settings.php new file mode 100644 index 0000000..7ba928f --- /dev/null +++ b/wp-content/plugins/elementor/core/common/modules/finder/categories/settings.php @@ -0,0 +1,77 @@ + [ + 'title' => esc_html__( 'General Settings', 'elementor' ), + 'url' => $settings_url, + 'keywords' => [ 'general', 'settings', 'elementor' ], + ], + 'advanced' => [ + 'title' => esc_html__( 'Advanced', 'elementor' ), + 'url' => $settings_url . '#tab-advanced', + 'keywords' => [ 'advanced', 'settings', 'elementor' ], + ], + 'experiments' => [ + 'title' => esc_html__( 'Experiments', 'elementor' ), + 'url' => $settings_url . '#tab-experiments', + 'keywords' => [ 'settings', 'elementor', 'experiments' ], + ], + 'features' => [ + 'title' => esc_html__( 'Features', 'elementor' ), + 'url' => $settings_url . '#tab-experiments', + 'keywords' => [ 'settings', 'elementor', 'features' ], + ], + 'element-manager' => [ + 'title' => esc_html__( 'Element Manager', 'elementor' ), + 'url' => admin_url( 'admin.php?page=' . ElementManagerModule::PAGE_ID ), + 'keywords' => [ 'settings', 'elements', 'widgets', 'manager' ], + ], + ]; + } +} diff --git a/wp-content/plugins/elementor/core/common/modules/finder/categories/site.php b/wp-content/plugins/elementor/core/common/modules/finder/categories/site.php new file mode 100644 index 0000000..a88bdfd --- /dev/null +++ b/wp-content/plugins/elementor/core/common/modules/finder/categories/site.php @@ -0,0 +1,89 @@ + [ + 'title' => esc_html__( 'Homepage', 'elementor' ), + 'url' => home_url(), + 'icon' => 'home-heart', + 'keywords' => [ 'home', 'page' ], + ], + 'wordpress-dashboard' => [ + 'title' => esc_html__( 'Dashboard', 'elementor' ), + 'icon' => 'dashboard', + 'url' => admin_url(), + 'keywords' => [ 'dashboard', 'wordpress' ], + ], + 'wordpress-menus' => [ + 'title' => esc_html__( 'Menus', 'elementor' ), + 'icon' => 'wordpress', + 'url' => admin_url( 'nav-menus.php' ), + 'keywords' => [ 'menu', 'wordpress' ], + ], + 'wordpress-themes' => [ + 'title' => esc_html__( 'Themes', 'elementor' ), + 'icon' => 'wordpress', + 'url' => admin_url( 'themes.php' ), + 'keywords' => [ 'themes', 'wordpress' ], + ], + 'wordpress-customizer' => [ + 'title' => esc_html__( 'Customizer', 'elementor' ), + 'icon' => 'wordpress', + 'url' => admin_url( 'customize.php' ), + 'keywords' => [ 'customizer', 'wordpress' ], + ], + 'wordpress-plugins' => [ + 'title' => esc_html__( 'Plugins', 'elementor' ), + 'icon' => 'wordpress', + 'url' => admin_url( 'plugins.php' ), + 'keywords' => [ 'plugins', 'wordpress' ], + ], + 'wordpress-users' => [ + 'title' => esc_html__( 'Users', 'elementor' ), + 'icon' => 'wordpress', + 'url' => admin_url( 'users.php' ), + 'keywords' => [ 'users', 'profile', 'wordpress' ], + ], + ]; + } +} diff --git a/wp-content/plugins/elementor/core/common/modules/finder/categories/tools.php b/wp-content/plugins/elementor/core/common/modules/finder/categories/tools.php new file mode 100644 index 0000000..aeb120b --- /dev/null +++ b/wp-content/plugins/elementor/core/common/modules/finder/categories/tools.php @@ -0,0 +1,86 @@ + [ + 'title' => esc_html__( 'Tools', 'elementor' ), + 'icon' => 'tools', + 'url' => $tools_url, + 'keywords' => [ 'tools', 'regenerate css', 'safe mode', 'debug bar', 'sync library', 'elementor' ], + ], + 'replace-url' => [ + 'title' => esc_html__( 'Replace URL', 'elementor' ), + 'icon' => 'tools', + 'url' => $tools_url . '#tab-replace_url', + 'keywords' => [ 'tools', 'replace url', 'domain', 'elementor' ], + ], + 'maintenance-mode' => [ + 'title' => esc_html__( 'Maintenance Mode', 'elementor' ), + 'icon' => 'tools', + 'url' => $tools_url . '#tab-maintenance_mode', + 'keywords' => [ 'tools', 'maintenance', 'coming soon', 'elementor' ], + ], + 'import-export' => [ + 'title' => esc_html__( 'Import Export', 'elementor' ), + 'icon' => 'import-export', + 'url' => $tools_url . '#tab-import-export-kit', + 'keywords' => [ 'tools', 'import export', 'import', 'export', 'kit' ], + ], + ]; + + if ( ElementorTools::can_user_rollback_versions() ) { + $items['version-control'] = [ + 'title' => esc_html__( 'Version Control', 'elementor' ), + 'icon' => 'time-line', + 'url' => $tools_url . '#tab-versions', + 'keywords' => [ 'tools', 'version', 'control', 'rollback', 'beta', 'elementor' ], + ]; + } + + return $items; + } +} diff --git a/wp-content/plugins/elementor/core/common/modules/finder/module.php b/wp-content/plugins/elementor/core/common/modules/finder/module.php new file mode 100644 index 0000000..fa66504 --- /dev/null +++ b/wp-content/plugins/elementor/core/common/modules/finder/module.php @@ -0,0 +1,130 @@ +categories_manager = new Categories_Manager(); + + $this->add_template(); + + add_action( 'elementor/ajax/register_actions', [ $this, 'register_ajax_actions' ] ); + } + + /** + * Get name. + * + * @since 2.3.0 + * @access public + * + * @return string + */ + public function get_name() { + return 'finder'; + } + + /** + * Add template. + * + * @since 2.3.0 + * @access public + */ + public function add_template() { + Plugin::$instance->common->add_template( __DIR__ . '/template.php' ); + } + + /** + * Register ajax actions. + * + * @since 2.3.0 + * @access public + * + * @param Ajax $ajax + */ + public function register_ajax_actions( Ajax $ajax ) { + $ajax->register_ajax_action( 'finder_get_category_items', [ $this, 'ajax_get_category_items' ] ); + } + + /** + * Ajax get category items. + * + * @since 2.3.0 + * @access public + * + * @param array $data + * + * @return array + */ + public function ajax_get_category_items( array $data ) { + if ( ! current_user_can( 'manage_options' ) ) { + throw new \Exception( 'Access denied.' ); + } + + $category = $this->categories_manager->get_categories( $data['category'] ); + + return $category->get_category_items( $data ); + } + + /** + * Get init settings. + * + * @since 2.3.0 + * @access protected + * + * @return array + */ + protected function get_init_settings() { + $categories = $this->categories_manager->get_categories(); + + $categories_data = []; + + foreach ( $categories as $category_name => $category ) { + $categories_data[ $category_name ] = array_merge( $category->get_settings(), [ 'name' => $category_name ] ); + } + + /** + * Finder categories. + * + * Filters the list of finder categories. This hook is used to manage Finder + * categories - to add new categories, remove and edit existing categories. + * + * @since 2.3.0 + * + * @param array $categories_data A list of finder categories. + */ + $categories_data = apply_filters( 'elementor/finder/categories', $categories_data ); + + return [ + 'data' => $categories_data, + ]; + } +} diff --git a/wp-content/plugins/elementor/core/common/modules/finder/template.php b/wp-content/plugins/elementor/core/common/modules/finder/template.php new file mode 100644 index 0000000..2c27d98 --- /dev/null +++ b/wp-content/plugins/elementor/core/common/modules/finder/template.php @@ -0,0 +1,51 @@ + + + + + + + + diff --git a/wp-content/plugins/elementor/core/debug/classes/htaccess.php b/wp-content/plugins/elementor/core/debug/classes/htaccess.php new file mode 100644 index 0000000..b34fd7c --- /dev/null +++ b/wp-content/plugins/elementor/core/debug/classes/htaccess.php @@ -0,0 +1,48 @@ +message = esc_html__( 'Your site\'s .htaccess file appears to be missing.', 'elementor' ); + } + + public function run() { + $safe_mode_enabled = get_option( Safe_Mode::OPTION_ENABLED, '' ); + if ( empty( $safe_mode_enabled ) || is_multisite() ) { + return true; + } + + $permalink_structure = get_option( 'permalink_structure' ); + if ( empty( $permalink_structure ) || empty( $_SERVER['SERVER_SOFTWARE'] ) ) { + return true; + } + + $server = strtoupper( Utils::get_super_global_value( $_SERVER, 'SERVER_SOFTWARE' ) ); + + if ( strstr( $server, 'APACHE' ) ) { + $htaccess_file = get_home_path() . '.htaccess'; + /* translators: %s: Path to .htaccess file. */ + $this->message .= ' ' . sprintf( esc_html__( 'File Path: %s', 'elementor' ), $htaccess_file ) . ' '; + return file_exists( $htaccess_file ); + } + return true; + } + + public function get_name() { + return 'apache-htaccess'; + } + + public function get_message() { + return $this->message; + } + + public function get_help_doc_url() { + return 'https://go.elementor.com/preview-not-loaded/#htaccess'; + } +} diff --git a/wp-content/plugins/elementor/core/debug/classes/inspection-base.php b/wp-content/plugins/elementor/core/debug/classes/inspection-base.php new file mode 100644 index 0000000..1813cdd --- /dev/null +++ b/wp-content/plugins/elementor/core/debug/classes/inspection-base.php @@ -0,0 +1,32 @@ +exists(); + } + + public function get_name() { + return 'theme-missing'; + } + + public function get_message() { + return esc_html__( 'Some of your theme files are missing.', 'elementor' ); + } + + public function get_help_doc_url() { + return 'https://go.elementor.com/preview-not-loaded/#theme-files'; + } +} diff --git a/wp-content/plugins/elementor/core/debug/inspector.php b/wp-content/plugins/elementor/core/debug/inspector.php new file mode 100644 index 0000000..b084fb0 --- /dev/null +++ b/wp-content/plugins/elementor/core/debug/inspector.php @@ -0,0 +1,144 @@ +is_enabled = is_null( $option ) ? $is_debug : 'enable' === $option; + + if ( $this->is_enabled ) { + add_action( 'admin_bar_menu', [ $this, 'add_menu_in_admin_bar' ], 201 ); + } + + add_action( 'elementor/admin/after_create_settings/' . Tools::PAGE_ID, [ $this, 'register_admin_tools_fields' ], 50 ); + } + + /** + * @since 2.1.3 + * @access public + */ + public function is_enabled() { + return $this->is_enabled; + } + + /** + * @since 2.1.3 + * @access public + */ + public function register_admin_tools_fields( Tools $tools ) { + $tools->add_fields( Settings::TAB_GENERAL, 'tools', [ + 'enable_inspector' => [ + 'label' => esc_html__( 'Debug Bar', 'elementor' ), + 'field_args' => [ + 'type' => 'select', + 'std' => $this->is_enabled ? 'enable' : '', + 'options' => [ + '' => esc_html__( 'Disable', 'elementor' ), + 'enable' => esc_html__( 'Enable', 'elementor' ), + ], + 'desc' => esc_html__( 'Debug Bar adds an admin bar menu that lists all the templates that are used on a page that is being displayed.', 'elementor' ), + ], + ], + ] ); + } + + /** + * @since 2.1.2 + * @access public + */ + public function parse_template_path( $template ) { + // `untrailingslashit` for windows path style. + if ( 0 === strpos( $template, untrailingslashit( ELEMENTOR_PATH ) ) ) { + return 'Elementor - ' . basename( $template ); + } + + if ( 0 === strpos( $template, get_stylesheet_directory() ) ) { + return wp_get_theme()->get( 'Name' ) . ' - ' . basename( $template ); + } + + $plugins_dir = dirname( ELEMENTOR_PATH ); + if ( 0 === strpos( $template, $plugins_dir ) ) { + return ltrim( str_replace( $plugins_dir, '', $template ), '/\\' ); + } + + return str_replace( WP_CONTENT_DIR, '', $template ); + } + + /** + * @since 2.1.2 + * @access public + */ + public function add_log( $module, $title, $url = '' ) { + if ( ! $this->is_enabled ) { + return; + } + + if ( ! isset( $this->log[ $module ] ) ) { + $this->log[ $module ] = []; + } + + $this->log[ $module ][] = [ + 'title' => $title, + 'url' => $url, + ]; + } + + /** + * @since 2.1.2 + * @access public + */ + public function add_menu_in_admin_bar( \WP_Admin_Bar $wp_admin_bar ) { + if ( empty( $this->log ) ) { + return; + } + + $wp_admin_bar->add_node( [ + 'id' => 'elementor_inspector', + 'title' => esc_html__( 'Elementor Debugger', 'elementor' ), + ] ); + + foreach ( $this->log as $module => $log ) { + $module_id = sanitize_key( $module ); + + $wp_admin_bar->add_menu( [ + 'id' => 'elementor_inspector_' . $module_id, + 'parent' => 'elementor_inspector', + 'title' => $module, + ] ); + + foreach ( $log as $index => $row ) { + $url = $row['url']; + + unset( $row['url'] ); + + $wp_admin_bar->add_menu( [ + 'id' => 'elementor_inspector_log_' . $module_id . '_' . $index, + 'parent' => 'elementor_inspector_' . $module_id, + 'href' => $url, + 'title' => implode( ' > ', $row ), + 'meta' => [ + 'target' => '_blank', + ], + ] ); + } + } + } +} diff --git a/wp-content/plugins/elementor/core/debug/loading-inspection-manager.php b/wp-content/plugins/elementor/core/debug/loading-inspection-manager.php new file mode 100644 index 0000000..5766174 --- /dev/null +++ b/wp-content/plugins/elementor/core/debug/loading-inspection-manager.php @@ -0,0 +1,54 @@ +inspections['theme-missing'] = new Theme_Missing(); + $this->inspections['htaccess'] = new Htaccess(); + } + + /** + * @param Inspection_Base $inspection + */ + public function register_inspection( $inspection ) { + $this->inspections[ $inspection->get_name() ] = $inspection; + } + + public function run_inspections() { + $debug_data = [ + 'message' => esc_html__( "We’re sorry, but something went wrong. Click on 'Learn more' and follow each of the steps to quickly solve it.", 'elementor' ), + 'header' => esc_html__( 'The preview could not be loaded', 'elementor' ), + 'doc_url' => 'https://go.elementor.com/preview-not-loaded/', + ]; + foreach ( $this->inspections as $inspection ) { + if ( ! $inspection->run() ) { + $debug_data = [ + 'message' => $inspection->get_message(), + 'header' => $inspection->get_header_message(), + 'doc_url' => $inspection->get_help_doc_url(), + 'error' => true, + ]; + break; + } + } + + return $debug_data; + } +} diff --git a/wp-content/plugins/elementor/core/document-types/page-base.php b/wp-content/plugins/elementor/core/document-types/page-base.php new file mode 100644 index 0000000..63e66d2 --- /dev/null +++ b/wp-content/plugins/elementor/core/document-types/page-base.php @@ -0,0 +1,274 @@ + [ + 'title' => esc_html__( 'Single', 'elementor' ), + 'active' => false, + 'promotion' => [ + 'url' => esc_url( 'https://go.elementor.com/go-pro-section-single-widget-panel/' ), + ], + ], + ] + ); + } + + /** + * @since 2.0.0 + * @access public + */ + public function get_css_wrapper_selector() { + return 'body.elementor-page-' . $this->get_main_id(); + } + + /** + * @since 3.1.0 + * @access protected + */ + protected function register_controls() { + parent::register_controls(); + + self::register_hide_title_control( $this ); + + self::register_post_fields_control( $this ); + + self::register_style_controls( $this ); + } + + /** + * @since 2.0.0 + * @access public + * @static + * @param Document $document + */ + public static function register_hide_title_control( $document ) { + $document->start_injection( [ + 'of' => 'post_status', + 'fallback' => [ + 'of' => 'post_title', + ], + ] ); + + $document->add_control( + 'hide_title', + [ + 'label' => esc_html__( 'Hide Title', 'elementor' ), + 'type' => Controls_Manager::SWITCHER, + 'description' => sprintf( + /* translators: 1: Link open tag, 2: Link close tag. */ + esc_html__( 'Set a different selector for the title in the %1$sLayout panel%2$s.', 'elementor' ), + '', + '' + ), + 'separator' => 'before', + 'selectors' => [ + ':root' => '--page-title-display: none', + ], + ] + ); + + $document->end_injection(); + } + + /** + * @since 2.0.0 + * @access public + * @static + * @param Document $document + */ + public static function register_style_controls( $document ) { + $document->start_controls_section( + 'section_page_style', + [ + 'label' => esc_html__( 'Body Style', 'elementor' ), + 'tab' => Controls_Manager::TAB_STYLE, + ] + ); + + $document->add_responsive_control( + 'margin', + [ + 'label' => esc_html__( 'Margin', 'elementor' ), + 'type' => Controls_Manager::DIMENSIONS, + 'size_units' => [ 'px', '%', 'em', 'rem', 'vw', 'custom' ], + 'selectors' => [ + '{{WRAPPER}}' => 'margin: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}}', + ], + ] + ); + + $document->add_responsive_control( + 'padding', + [ + 'label' => esc_html__( 'Padding', 'elementor' ), + 'type' => Controls_Manager::DIMENSIONS, + 'size_units' => [ 'px', '%', 'em', 'rem', 'vw', 'custom' ], + 'selectors' => [ + '{{WRAPPER}}' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}}', + ], + ] + ); + + $document->add_group_control( + Group_Control_Background::get_type(), + [ + 'name' => 'background', + 'separator' => 'before', + 'fields_options' => [ + 'image' => [ + // Currently isn't supported. + 'dynamic' => [ + 'active' => false, + ], + ], + ], + ] + ); + + $document->end_controls_section(); + + Plugin::$instance->controls_manager->add_custom_css_controls( $document ); + } + + /** + * @since 2.0.0 + * @access public + * @static + * @param Document $document + */ + public static function register_post_fields_control( $document ) { + $document->start_injection( [ + 'of' => 'post_status', + 'fallback' => [ + 'of' => 'post_title', + ], + ] ); + + if ( post_type_supports( $document->post->post_type, 'excerpt' ) ) { + $document->add_control( + 'post_excerpt', + [ + 'label' => esc_html__( 'Excerpt', 'elementor' ), + 'type' => Controls_Manager::TEXTAREA, + 'default' => $document->post->post_excerpt, + 'separator' => 'before', + ] + ); + } + + if ( current_theme_supports( 'post-thumbnails' ) && post_type_supports( $document->post->post_type, 'thumbnail' ) ) { + $document->add_control( + 'post_featured_image', + [ + 'label' => esc_html__( 'Featured Image', 'elementor' ), + 'type' => Controls_Manager::MEDIA, + 'default' => [ + 'id' => get_post_thumbnail_id(), + 'url' => (string) get_the_post_thumbnail_url( $document->post->ID ), + ], + 'separator' => 'before', + ] + ); + } + + if ( is_post_type_hierarchical( $document->post->post_type ) ) { + $document->add_control( + 'menu_order', + [ + 'label' => esc_html__( 'Order', 'elementor' ), + 'type' => Controls_Manager::NUMBER, + 'default' => $document->post->menu_order, + 'separator' => 'before', + ] + ); + } + + if ( post_type_supports( $document->post->post_type, 'comments' ) ) { + $document->add_control( + 'comment_status', + [ + 'label' => esc_html__( 'Allow Comments', 'elementor' ), + 'type' => Controls_Manager::SWITCHER, + 'return_value' => 'open', + 'default' => $document->post->comment_status, + 'separator' => 'before', + ] + ); + } + + $document->end_injection(); + } + + /** + * @since 2.0.0 + * @access public + * + * @param array $data + * + * @throws \Exception + */ + public function __construct( array $data = [] ) { + if ( $data ) { + $template = get_post_meta( $data['post_id'], '_wp_page_template', true ); + + if ( empty( $template ) ) { + $template = 'default'; + } + + $data['settings']['template'] = $template; + } + + parent::__construct( $data ); + } + + protected function get_remote_library_config() { + $config = parent::get_remote_library_config(); + + $config['category'] = ''; + $config['type'] = 'block'; + $config['default_route'] = 'templates/blocks'; + + return $config; + } +} diff --git a/wp-content/plugins/elementor/core/document-types/page.php b/wp-content/plugins/elementor/core/document-types/page.php new file mode 100644 index 0000000..3fe735f --- /dev/null +++ b/wp-content/plugins/elementor/core/document-types/page.php @@ -0,0 +1,67 @@ +register_ajax_action( 'save_builder', [ $this, 'ajax_save' ] ); + $ajax_manager->register_ajax_action( 'discard_changes', [ $this, 'ajax_discard_changes' ] ); + $ajax_manager->register_ajax_action( 'get_document_config', [ $this, 'ajax_get_document_config' ] ); + } + + /** + * Register default types. + * + * Registers the default document types. + * + * @since 2.0.0 + * @access public + */ + public function register_default_types() { + $default_types = [ + 'post' => Post::get_class_full_name(), // BC. + 'wp-post' => Post::get_class_full_name(), + 'wp-page' => Page::get_class_full_name(), + ]; + + foreach ( $default_types as $type => $class ) { + $this->register_document_type( $type, $class ); + } + } + + /** + * Register document type. + * + * Registers a single document. + * + * @since 2.0.0 + * @access public + * + * @param string $type Document type name. + * @param string $class The name of the class that registers the document type. + * Full name with the namespace. + * + * @return Documents_Manager The updated document manager instance. + */ + public function register_document_type( $type, $class ) { + $this->types[ $type ] = $class; + + $cpt = $class::get_property( 'cpt' ); + + if ( $cpt ) { + foreach ( $cpt as $post_type ) { + $this->cpt[ $post_type ] = $type; + } + } + + if ( $class::get_property( 'register_type' ) ) { + Source_Local::add_template_type( $type ); + } + + return $this; + } + + /** + * Get document. + * + * Retrieve the document data based on a post ID. + * + * @since 2.0.0 + * @access public + * + * @param int $post_id Post ID. + * @param bool $from_cache Optional. Whether to retrieve cached data. Default is true. + * + * @return false|Document Document data or false if post ID was not entered. + */ + public function get( $post_id, $from_cache = true ) { + $this->register_types(); + + $post_id = absint( $post_id ); + + if ( ! $post_id || ! get_post( $post_id ) ) { + return false; + } + + /** + * Retrieve document post ID. + * + * Filters the document post ID. + * + * @since 2.0.7 + * + * @param int $post_id The post ID of the document. + */ + $post_id = apply_filters( 'elementor/documents/get/post_id', $post_id ); + + if ( ! $from_cache || ! isset( $this->documents[ $post_id ] ) ) { + $doc_type = $this->get_doc_type_by_id( $post_id ); + $doc_type_class = $this->get_document_type( $doc_type ); + + $this->documents[ $post_id ] = new $doc_type_class( [ + 'post_id' => $post_id, + ] ); + } + + return $this->documents[ $post_id ]; + } + + /** + * Retrieve a document after checking it exist and allowed to edit. + * + * @since 3.13.0 + * + * @param int $post_id The post ID of the document. + * + * @return Document + * @throws \Exception + */ + public function get_with_permissions( $id ): Document { + $document = $this->get( $id ); + + if ( ! $document ) { + throw new \Exception( 'Not found.' ); + } + + if ( ! $document->is_editable_by_current_user() ) { + throw new \Exception( 'Access denied.' ); + } + + return $document; + } + + /** + * A `void` version for `get_with_permissions`. + * + * @param $id + * @return void + * @throws \Exception + */ + public function check_permissions( $id ) { + $this->get_with_permissions( $id ); + } + + /** + * Get document or autosave. + * + * Retrieve either the document or the autosave. + * + * @since 2.0.0 + * @access public + * + * @param int $id Optional. Post ID. Default is `0`. + * @param int $user_id Optional. User ID. Default is `0`. + * + * @return false|Document The document if it exist, False otherwise. + */ + public function get_doc_or_auto_save( $id, $user_id = 0 ) { + $document = $this->get( $id ); + if ( $document && $document->get_autosave_id( $user_id ) ) { + $document = $document->get_autosave( $user_id ); + } + + return $document; + } + + /** + * Get document for frontend. + * + * Retrieve the document for frontend use. + * + * @since 2.0.0 + * @access public + * + * @param int $post_id Optional. Post ID. Default is `0`. + * + * @return false|Document The document if it exist, False otherwise. + */ + public function get_doc_for_frontend( $post_id ) { + if ( is_preview() || Plugin::$instance->preview->is_preview_mode() ) { + $document = $this->get_doc_or_auto_save( $post_id, get_current_user_id() ); + } else { + $document = $this->get( $post_id ); + } + + return $document; + } + + /** + * Get document type. + * + * Retrieve the type of any given document. + * + * @since 2.0.0 + * @access public + * + * @param string $type + * + * @param string $fallback + * + * @return Document|bool The type of the document. + */ + public function get_document_type( $type, $fallback = 'post' ) { + $types = $this->get_document_types(); + + if ( isset( $types[ $type ] ) ) { + return $types[ $type ]; + } + + if ( isset( $types[ $fallback ] ) ) { + return $types[ $fallback ]; + } + + return false; + } + + /** + * Get document types. + * + * Retrieve the all the registered document types. + * + * @since 2.0.0 + * @access public + * + * @param array $args Optional. An array of key => value arguments to match against + * the properties. Default is empty array. + * @param string $operator Optional. The logical operation to perform. 'or' means only one + * element from the array needs to match; 'and' means all elements + * must match; 'not' means no elements may match. Default 'and'. + * + * @return Document[] All the registered document types. + */ + public function get_document_types( $args = [], $operator = 'and' ) { + $this->register_types(); + + if ( ! empty( $args ) ) { + $types_properties = $this->get_types_properties(); + + $filtered = wp_filter_object_list( $types_properties, $args, $operator ); + + return array_intersect_key( $this->types, $filtered ); + } + + return $this->types; + } + + /** + * Get document types with their properties. + * + * @return array A list of properties arrays indexed by the type. + */ + public function get_types_properties() { + $types_properties = []; + + foreach ( $this->get_document_types() as $type => $class ) { + $types_properties[ $type ] = $class::get_properties(); + } + return $types_properties; + } + + /** + * Create a document. + * + * Create a new document using any given parameters. + * + * @since 2.0.0 + * @access public + * + * @param string $type Document type. + * @param array $post_data An array containing the post data. + * @param array $meta_data An array containing the post meta data. + * + * @return Document The type of the document. + */ + public function create( $type, $post_data = [], $meta_data = [] ) { + $class = $this->get_document_type( $type, false ); + + if ( ! $class ) { + return new \WP_Error( 500, sprintf( 'Type %s does not exist.', $type ) ); + } + + if ( empty( $post_data['post_title'] ) ) { + $post_data['post_title'] = esc_html__( 'Elementor', 'elementor' ); + if ( 'post' !== $type ) { + $post_data['post_title'] = sprintf( + /* translators: %s: Document title. */ + __( 'Elementor %s', 'elementor' ), + call_user_func( [ $class, 'get_title' ] ) + ); + } + $update_title = true; + } + + $meta_data['_elementor_edit_mode'] = 'builder'; + + // Save the type as-is for plugins that hooked at `wp_insert_post`. + $meta_data[ Document::TYPE_META_KEY ] = $type; + + $post_data['meta_input'] = $meta_data; + + $post_types = $class::get_property( 'cpt' ); + + if ( ! empty( $post_types[0] ) && empty( $post_data['post_type'] ) ) { + $post_data['post_type'] = $post_types[0]; + } + + $post_id = wp_insert_post( $post_data ); + + if ( ! empty( $update_title ) ) { + $post_data['ID'] = $post_id; + $post_data['post_title'] .= ' #' . $post_id; + + // The meta doesn't need update. + unset( $post_data['meta_input'] ); + + wp_update_post( $post_data ); + } + + /** @var Document $document */ + $document = new $class( [ + 'post_id' => $post_id, + ] ); + + // Let the $document to re-save the template type by his way + version. + $document->save( [] ); + + return $document; + } + + /** + * Remove user edit capabilities if document is not editable. + * + * Filters the user capabilities to disable editing in admin. + * + * @param array $allcaps An array of all the user's capabilities. + * @param array $caps Actual capabilities for meta capability. + * @param array $args Optional parameters passed to has_cap(), typically object ID. + * + * @return array + */ + public function remove_user_edit_cap( $allcaps, $caps, $args ) { + global $pagenow; + + if ( ! in_array( $pagenow, [ 'post.php', 'edit.php' ], true ) ) { + return $allcaps; + } + + // Don't touch not existing or not allowed caps. + if ( empty( $caps[0] ) || empty( $allcaps[ $caps[0] ] ) ) { + return $allcaps; + } + + $capability = $args[0]; + + if ( 'edit_post' !== $capability ) { + return $allcaps; + } + + if ( empty( $args[2] ) ) { + return $allcaps; + } + + $post_id = $args[2]; + + $document = Plugin::$instance->documents->get( $post_id ); + + if ( ! $document ) { + return $allcaps; + } + + $allcaps[ $caps[0] ] = $document::get_property( 'is_editable' ); + + return $allcaps; + } + + /** + * Filter Post Row Actions. + * + * Let the Document to filter the array of row action links on the Posts list table. + * + * @param array $actions + * @param \WP_Post $post + * + * @return array + */ + public function filter_post_row_actions( $actions, $post ) { + $document = $this->get( $post->ID ); + + if ( $document ) { + $actions = $document->filter_admin_row_actions( $actions ); + } + + return $actions; + } + + /** + * Save document data using ajax. + * + * Save the document on the builder using ajax, when saving the changes, and refresh the editor. + * + * @since 2.0.0 + * @access public + * + * @param $request Post ID. + * + * @throws \Exception If current user don't have permissions to edit the post or the post is not using Elementor. + * + * @return array The document data after saving. + */ + public function ajax_save( $request ) { + $document = $this->get( $request['editor_post_id'] ); + + if ( ! $document->is_built_with_elementor() || ! $document->is_editable_by_current_user() ) { + throw new \Exception( 'Access denied.' ); + } + + $this->switch_to_document( $document ); + + // Set the post as global post. + Plugin::$instance->db->switch_to_post( $document->get_post()->ID ); + + $status = Document::STATUS_DRAFT; + + if ( isset( $request['status'] ) && in_array( $request['status'], [ Document::STATUS_PUBLISH, Document::STATUS_PRIVATE, Document::STATUS_PENDING, Document::STATUS_AUTOSAVE ], true ) ) { + $status = $request['status']; + } + + if ( Document::STATUS_AUTOSAVE === $status ) { + // If the post is a draft - save the `autosave` to the original draft. + // Allow a revision only if the original post is already published. + if ( in_array( $document->get_post()->post_status, [ Document::STATUS_PUBLISH, Document::STATUS_PRIVATE ], true ) ) { + $document = $document->get_autosave( 0, true ); + } + } + + // Set default page template because the footer-saver doesn't send default values, + // But if the template was changed from canvas to default - it needed to save. + if ( Utils::is_cpt_custom_templates_supported() && ! isset( $request['settings']['template'] ) ) { + $request['settings']['template'] = 'default'; + } + + $data = [ + 'elements' => $request['elements'], + 'settings' => $request['settings'], + ]; + + $document->save( $data ); + + $post = $document->get_post(); + $main_post = $document->get_main_post(); + + // Refresh after save. + $document = $this->get( $post->ID, false ); + + $return_data = [ + 'status' => $post->post_status, + 'config' => [ + 'document' => [ + 'last_edited' => $document->get_last_edited(), + 'urls' => [ + 'wp_preview' => $document->get_wp_preview_url(), + ], + ], + ], + ]; + + $post_status_object = get_post_status_object( $main_post->post_status ); + + if ( $post_status_object ) { + $return_data['config']['document']['status'] = [ + 'value' => $post_status_object->name, + 'label' => $post_status_object->label, + ]; + } + + /** + * Returned documents ajax saved data. + * + * Filters the ajax data returned when saving the post on the builder. + * + * @since 2.0.0 + * + * @param array $return_data The returned data. + * @param Document $document The document instance. + */ + $return_data = apply_filters( 'elementor/documents/ajax_save/return_data', $return_data, $document ); + + return $return_data; + } + + /** + * Ajax discard changes. + * + * Load the document data from an autosave, deleting unsaved changes. + * + * @param $request + * + * @return bool True if changes discarded, False otherwise. + * @throws \Exception + * + * @since 2.0.0 + * @access public + * + */ + public function ajax_discard_changes( $request ) { + $document = $this->get_with_permissions( $request['editor_post_id'] ); + + $autosave = $document->get_autosave(); + + if ( $autosave ) { + $success = $autosave->delete(); + } else { + $success = true; + } + + return $success; + } + + public function ajax_get_document_config( $request ) { + $post_id = absint( $request['id'] ); + + Plugin::$instance->editor->set_post_id( $post_id ); + + $document = $this->get_doc_or_auto_save( $post_id ); + + if ( ! $document ) { + throw new \Exception( 'Not found.' ); + } + + if ( ! $document->is_editable_by_current_user() ) { + throw new \Exception( 'Access denied.' ); + } + + // Set the global data like $post, $authordata and etc + Plugin::$instance->db->switch_to_post( $post_id ); + + $this->switch_to_document( $document ); + + // Change mode to Builder + $document->set_is_built_with_elementor( true ); + + $doc_config = $document->get_config(); + + return $doc_config; + } + + /** + * Switch to document. + * + * Change the document to any new given document type. + * + * @since 2.0.0 + * @access public + * + * @param Document $document The document to switch to. + */ + public function switch_to_document( $document ) { + // If is already switched, or is the same post, return. + if ( $this->current_doc === $document ) { + $this->switched_data[] = false; + return; + } + + $this->switched_data[] = [ + 'switched_doc' => $document, + 'original_doc' => $this->current_doc, // Note, it can be null if the global isn't set + ]; + + $this->current_doc = $document; + } + + /** + * Restore document. + * + * Rollback to the original document. + * + * @since 2.0.0 + * @access public + */ + public function restore_document() { + $data = array_pop( $this->switched_data ); + + // If not switched, return. + if ( ! $data ) { + return; + } + + $this->current_doc = $data['original_doc']; + } + + /** + * Get current document. + * + * Retrieve the current document. + * + * @since 2.0.0 + * @access public + * + * @return Document The current document. + */ + public function get_current() { + return $this->current_doc; + } + + public function localize_settings( $settings ) { + $translations = []; + + foreach ( $this->get_document_types() as $type => $class ) { + $translations[ $type ] = $class::get_title(); + } + + return array_replace_recursive( $settings, [ + 'i18n' => $translations, + ] ); + } + + private function register_types() { + if ( ! did_action( 'elementor/documents/register' ) ) { + /** + * Register Elementor documents. + * + * @since 2.0.0 + * + * @param Documents_Manager $this The document manager instance. + */ + do_action( 'elementor/documents/register', $this ); + } + } + + /** + * Get create new post URL. + * + * Retrieve a custom URL for creating a new post/page using Elementor. + * + * @param string $post_type Optional. Post type slug. Default is 'page'. + * @param string|null $template_type Optional. Query arg 'template_type'. Default is null. + * + * @return string A URL for creating new post using Elementor. + */ + public static function get_create_new_post_url( $post_type = 'page', $template_type = null ) { + $query_args = [ + 'action' => 'elementor_new_post', + 'post_type' => $post_type, + ]; + + if ( $template_type ) { + $query_args['template_type'] = $template_type; + } + + $new_post_url = add_query_arg( $query_args, admin_url( 'edit.php' ) ); + + $new_post_url = add_query_arg( '_wpnonce', wp_create_nonce( 'elementor_action_new_post' ), $new_post_url ); + + return $new_post_url; + } + + private function get_doc_type_by_id( $post_id ) { + // Auto-save inherits from the original post. + if ( wp_is_post_autosave( $post_id ) ) { + $post_id = wp_get_post_parent_id( $post_id ); + } + + // Content built with Elementor. + $template_type = get_post_meta( $post_id, Document::TYPE_META_KEY, true ); + + if ( $template_type && isset( $this->types[ $template_type ] ) ) { + return $template_type; + } + + // Elementor installation on a site with existing content (which doesn't contain Elementor's meta). + $post_type = get_post_type( $post_id ); + + return $this->cpt[ $post_type ] ?? 'post'; + } +} diff --git a/wp-content/plugins/elementor/core/dynamic-tags/base-tag.php b/wp-content/plugins/elementor/core/dynamic-tags/base-tag.php new file mode 100644 index 0000000..5c31a21 --- /dev/null +++ b/wp-content/plugins/elementor/core/dynamic-tags/base-tag.php @@ -0,0 +1,191 @@ +print_panel_template(); + + $panel_template = ob_get_clean(); + + return [ + 'name' => $this->get_name(), + 'title' => $this->get_title(), + 'panel_template' => $panel_template, + 'categories' => $this->get_categories(), + 'group' => $this->get_group(), + 'controls' => $this->get_controls(), + 'content_type' => $this->get_content_type(), + 'settings_required' => $this->is_settings_required(), + 'editable' => $this->is_editable(), + ]; + } + + /** + * @since 2.0.0 + * @access public + */ + public function print_panel_template() { + $panel_template_setting_key = $this->get_panel_template_setting_key(); + + if ( ! $panel_template_setting_key ) { + return; + } + ?><# + var key = ; + + if ( key ) { + var settingsKey = ""; + + /* + * If the tag has controls, + * and key is an existing control (and not an old one), + * and the control has options (select/select2), + * and the key is an existing option (and not in a group or an old one). + */ + if ( controls && controls[settingsKey] ) { + var controlSettings = controls[settingsKey]; + + if ( controlSettings.options && controlSettings.options[ key ] ) { + key = controlSettings.options[ key ]; + } else if ( controlSettings.groups ) { + var label = _.filter( _.pluck( _.pluck( controls.key.groups, 'options' ), key ) ); + + if ( label[0] ) { + key = label[0]; + } + } + } + + print( '(' + _.escape( key ) + ')' ); + } + #> + get_name(); + } + + /** + * @since 2.0.0 + * @access protected + */ + protected function register_advanced_section() {} + + /** + * @since 2.0.0 + * @access protected + */ + final protected function init_controls() { + Plugin::$instance->controls_manager->open_stack( $this ); + + $this->start_controls_section( 'settings', [ + 'label' => esc_html__( 'Settings', 'elementor' ), + ] ); + + if ( $this->has_own_method( '_register_controls' ) ) { + Plugin::$instance->modules_manager->get_modules( 'dev-tools' )->deprecation->deprecated_function( '_register_controls', '3.1.0', __CLASS__ . '::register_controls()' ); + + $this->_register_controls(); + } else { + $this->register_controls(); + } + + $this->end_controls_section(); + + // If in fact no controls were registered, empty the stack + if ( 1 === count( Plugin::$instance->controls_manager->get_stacks( $this->get_unique_name() )['controls'] ) ) { + Plugin::$instance->controls_manager->open_stack( $this ); + } + + $this->register_advanced_section(); + } +} diff --git a/wp-content/plugins/elementor/core/dynamic-tags/data-tag.php b/wp-content/plugins/elementor/core/dynamic-tags/data-tag.php new file mode 100644 index 0000000..df5d6e3 --- /dev/null +++ b/wp-content/plugins/elementor/core/dynamic-tags/data-tag.php @@ -0,0 +1,46 @@ +get_value( $options ); + } +} diff --git a/wp-content/plugins/elementor/core/dynamic-tags/dynamic-css.php b/wp-content/plugins/elementor/core/dynamic-tags/dynamic-css.php new file mode 100644 index 0000000..03364c4 --- /dev/null +++ b/wp-content/plugins/elementor/core/dynamic-tags/dynamic-css.php @@ -0,0 +1,127 @@ +post_dynamic_elements_ids ) ) { + return null; + } + + return $this->post_id_for_data; + } + + protected function is_global_parsing_supported() { + return false; + } + + protected function render_styles( Element_Base $element ) { + $id = $element->get_id(); + + if ( in_array( $id, $this->post_dynamic_elements_ids ) ) { + parent::render_styles( $element ); + } + + foreach ( $element->get_children() as $child_element ) { + $this->render_styles( $child_element ); + } + } + + /** + * Dynamic_CSS constructor. + * + * @since 2.0.13 + * @access public + * + * @param int $post_id Post ID + * @param Post_CSS $post_css_file + */ + public function __construct( $post_id, Post_CSS $post_css_file ) { + if ( $post_css_file instanceof Post_Preview ) { + $this->post_id_for_data = $post_css_file->get_post_id_for_data(); + } else { + $this->post_id_for_data = $post_id; + } + + $this->post_dynamic_elements_ids = $post_css_file->get_meta( 'dynamic_elements_ids' ); + + parent::__construct( $post_id ); + } + + /** + * @since 2.0.13 + * @access public + */ + public function get_name() { + return 'dynamic'; + } + + /** + * Get Responsive Control Duplication Mode + * + * @since 3.4.0 + * + * @return string + */ + protected function get_responsive_control_duplication_mode() { + return 'dynamic'; + } + + /** + * @since 2.0.13 + * @access protected + */ + protected function use_external_file() { + return false; + } + + /** + * @since 2.0.13 + * @access protected + */ + protected function get_file_handle_id() { + return 'elementor-post-dynamic-' . $this->get_post_id_for_data(); + } + + /** + * @since 2.0.13 + * @access public + */ + public function add_controls_stack_style_rules( Controls_Stack $controls_stack, array $controls, array $values, array $placeholders, array $replacements, array $all_controls = null ) { + $dynamic_settings = $controls_stack->get_settings( '__dynamic__' ); + + if ( ! empty( $dynamic_settings ) ) { + $controls = array_intersect_key( $controls, $dynamic_settings ); + + $all_controls = $controls_stack->get_controls(); + + $parsed_dynamic_settings = $controls_stack->parse_dynamic_settings( $values, $controls ); + + foreach ( $controls as $control ) { + if ( ! empty( $control['style_fields'] ) ) { + $this->add_repeater_control_style_rules( $controls_stack, $control, $values[ $control['name'] ], $placeholders, $replacements ); + } + + if ( empty( $control['selectors'] ) ) { + continue; + } + + $this->add_control_style_rules( $control, $parsed_dynamic_settings, $all_controls, $placeholders, $replacements ); + } + } + } +} diff --git a/wp-content/plugins/elementor/core/dynamic-tags/manager.php b/wp-content/plugins/elementor/core/dynamic-tags/manager.php new file mode 100644 index 0000000..adc3dc5 --- /dev/null +++ b/wp-content/plugins/elementor/core/dynamic-tags/manager.php @@ -0,0 +1,508 @@ +add_actions(); + } + + /** + * @deprecated 3.1.0 + */ + public function localize_settings() { + Plugin::$instance->modules_manager->get_modules( 'dev-tools' )->deprecation->deprecated_function( __METHOD__, '3.1.0' ); + + return []; + } + + /** + * Parse dynamic tags text. + * + * Receives the dynamic tag text, and returns a single value or multiple values + * from the tag callback function. + * + * @since 2.0.0 + * @access public + * + * @param string $text Dynamic tag text. + * @param array $settings The dynamic tag settings. + * @param callable $parse_callback The functions that renders the dynamic tag. + * + * @return string|string[]|mixed A single string or an array of strings with + * the return values from each tag callback + * function. + */ + public function parse_tags_text( $text, array $settings, callable $parse_callback ) { + if ( ! empty( $settings['returnType'] ) && 'object' === $settings['returnType'] ) { + $value = $this->parse_tag_text( $text, $settings, $parse_callback ); + } else { + + $value = preg_replace_callback( '/\[' . self::TAG_LABEL . '.+?(?=\])\]/', function( $tag_text_match ) use ( $settings, $parse_callback ) { + return $this->parse_tag_text( $tag_text_match[0], $settings, $parse_callback ); + }, $text ); + } + + return $value; + } + + /** + * Parse dynamic tag text. + * + * Receives the dynamic tag text, and returns the value from the callback + * function. + * + * @since 2.0.0 + * @access public + * + * @param string $tag_text Dynamic tag text. + * @param array $settings The dynamic tag settings. + * @param callable $parse_callback The functions that renders the dynamic tag. + * + * @return string|array|mixed If the tag was not found an empty string or an + * empty array will be returned, otherwise the + * return value from the tag callback function. + */ + public function parse_tag_text( $tag_text, array $settings, callable $parse_callback ) { + $tag_data = $this->tag_text_to_tag_data( $tag_text ); + + if ( ! $tag_data ) { + if ( ! empty( $settings['returnType'] ) && 'object' === $settings['returnType'] ) { + return []; + } + + return ''; + } + + return call_user_func_array( $parse_callback, array_values( $tag_data ) ); + } + + /** + * @since 2.0.0 + * @access public + * + * @param string $tag_text + * + * @return array|null + */ + public function tag_text_to_tag_data( $tag_text ) { + preg_match( '/id="(.*?(?="))"/', $tag_text, $tag_id_match ); + preg_match( '/name="(.*?(?="))"/', $tag_text, $tag_name_match ); + preg_match( '/settings="(.*?(?="]))/', $tag_text, $tag_settings_match ); + + if ( ! $tag_id_match || ! $tag_name_match || ! $tag_settings_match ) { + return null; + } + + return [ + 'id' => $tag_id_match[1], + 'name' => $tag_name_match[1], + 'settings' => json_decode( urldecode( $tag_settings_match[1] ), true ), + ]; + } + + /** + * Dynamic tag to text. + * + * Retrieve the shortcode that represents the dynamic tag. + * + * @since 2.0.0 + * @access public + * + * @param Base_Tag $tag An instance of the dynamic tag. + * + * @return string The shortcode that represents the dynamic tag. + */ + public function tag_to_text( Base_Tag $tag ) { + return sprintf( '[%1$s id="%2$s" name="%3$s" settings="%4$s"]', self::TAG_LABEL, $tag->get_id(), $tag->get_name(), urlencode( wp_json_encode( $tag->get_settings(), JSON_FORCE_OBJECT ) ) ); + } + + /** + * @since 2.0.0 + * @access public + * @param string $tag_id + * @param string $tag_name + * @param array $settings + * + * @return string + */ + public function tag_data_to_tag_text( $tag_id, $tag_name, array $settings = [] ) { + $tag = $this->create_tag( $tag_id, $tag_name, $settings ); + + if ( ! $tag ) { + return ''; + } + + return $this->tag_to_text( $tag ); + } + + /** + * @since 2.0.0 + * @access public + * @param string $tag_id + * @param string $tag_name + * @param array $settings + * + * @return Tag|null + */ + public function create_tag( $tag_id, $tag_name, array $settings = [] ) { + $tag_info = $this->get_tag_info( $tag_name ); + + if ( ! $tag_info ) { + return null; + } + + $tag_class = $tag_info['class']; + + return new $tag_class( [ + 'settings' => $settings, + 'id' => $tag_id, + ] ); + } + + /** + * @since 2.0.0 + * @access public + * + * @param $tag_id + * @param $tag_name + * @param array $settings + * + * @return null|string + */ + public function get_tag_data_content( $tag_id, $tag_name, array $settings = [] ) { + if ( self::MODE_REMOVE === $this->parsing_mode ) { + return null; + } + + $tag = $this->create_tag( $tag_id, $tag_name, $settings ); + + if ( ! $tag ) { + return null; + } + + return $tag->get_content(); + } + + /** + * @since 2.0.0 + * @access public + * + * @param $tag_name + * + * @return mixed|null + */ + public function get_tag_info( $tag_name ) { + $tags = $this->get_tags(); + + if ( empty( $tags[ $tag_name ] ) ) { + return null; + } + + return $tags[ $tag_name ]; + } + + /** + * @since 2.0.9 + * @access public + */ + public function get_tags() { + if ( ! did_action( 'elementor/dynamic_tags/register_tags' ) ) { + /** + * Register dynamic tags. + * + * Fires when Elementor registers dynamic tags. + * + * @since 2.0.9 + * @deprecated 3.5.0 Use `elementor/dynamic_tags/register` hook instead. + * + * @param Manager $this Dynamic tags manager. + */ + Plugin::$instance->modules_manager->get_modules( 'dev-tools' )->deprecation->do_deprecated_action( + 'elementor/dynamic_tags/register_tags', + [ $this ], + '3.5.0', + 'elementor/dynamic_tags/register' + ); + } + + if ( ! did_action( 'elementor/dynamic_tags/register' ) ) { + /** + * Register dynamic tags. + * + * Fires when Elementor registers dynamic tags. + * + * @since 3.5.0 + * + * @param Manager $this Dynamic tags manager. + */ + do_action( 'elementor/dynamic_tags/register', $this ); + } + + return $this->tags_info; + } + + /** + * @since 2.0.0 + * @access public + * @deprecated 3.5.0 Use `register()` method instead. + * + * @param string $class + */ + public function register_tag( $class ) { + Plugin::$instance->modules_manager->get_modules( 'dev-tools' )->deprecation->deprecated_function( + __METHOD__, + '3.5.0', + 'register()' + ); + + /** @var Base_Tag $tag */ + $instance = new $class(); + + $this->register( $instance ); + } + + /** + * Register a new Dynamic Tag. + * + * @param Base_Tag $dynamic_tag_instance + * + * @return void + * @since 3.5.0 + * @access public + * + */ + public function register( Base_Tag $dynamic_tag_instance ) { + $this->tags_info[ $dynamic_tag_instance->get_name() ] = [ + 'class' => get_class( $dynamic_tag_instance ), + 'instance' => $dynamic_tag_instance, + ]; + } + + /** + * @since 2.0.9 + * @access public + * @deprecated 3.5.0 Use `unregister()` method instead. + * + * @param string $tag_name + */ + public function unregister_tag( $tag_name ) { + Plugin::$instance->modules_manager->get_modules( 'dev-tools' )->deprecation->deprecated_function( + __METHOD__, + '3.5.0', + 'unregister()' + ); + + $this->unregister( $tag_name ); + } + + /** + * Unregister a dynamic tag. + * + * @since 3.5.0 + * @access public + * + * @param string $tag_name Dynamic Tag name to unregister. + * + * @return void + */ + public function unregister( $tag_name ) { + unset( $this->tags_info[ $tag_name ] ); + } + + /** + * @since 2.0.0 + * @access public + * + * @param $group_name + * @param array $group_settings + */ + public function register_group( $group_name, array $group_settings ) { + $default_group_settings = [ + 'title' => '', + ]; + + $group_settings = array_merge( $default_group_settings, $group_settings ); + + $this->tags_groups[ $group_name ] = $group_settings; + } + + /** + * @since 2.0.0 + * @access public + */ + public function print_templates() { + foreach ( $this->get_tags() as $tag_name => $tag_info ) { + $tag = $tag_info['instance']; + + if ( ! $tag instanceof Tag ) { + continue; + } + + $tag->print_template(); + } + } + + /** + * @since 2.0.0 + * @access public + */ + public function get_tags_config() { + $config = []; + + foreach ( $this->get_tags() as $tag_name => $tag_info ) { + /** @var Tag $tag */ + $tag = $tag_info['instance']; + + $config[ $tag_name ] = $tag->get_editor_config(); + } + + return $config; + } + + /** + * @since 2.0.0 + * @access public + */ + public function get_config() { + return [ + 'tags' => $this->get_tags_config(), + 'groups' => $this->tags_groups, + ]; + } + + /** + * @since 2.0.0 + * @access public + * + * @throws \Exception If post ID is missing. + * @throws \Exception If current user don't have permissions to edit the post. + */ + public function ajax_render_tags( $data ) { + if ( empty( $data['post_id'] ) ) { + throw new \Exception( 'Missing post id.' ); + } + + if ( ! User::is_current_user_can_edit( $data['post_id'] ) ) { + throw new \Exception( 'Access denied.' ); + } + + Plugin::$instance->db->switch_to_post( $data['post_id'] ); + + /** + * Before dynamic tags rendered. + * + * Fires before Elementor renders the dynamic tags. + * + * @since 2.0.0 + */ + do_action( 'elementor/dynamic_tags/before_render' ); + + $tags_data = []; + + foreach ( $data['tags'] as $tag_key ) { + $tag_key_parts = explode( '-', $tag_key ); + + $tag_name = base64_decode( $tag_key_parts[0] ); + + $tag_settings = json_decode( urldecode( base64_decode( $tag_key_parts[1] ) ), true ); + + $tag = $this->create_tag( null, $tag_name, $tag_settings ); + + $tags_data[ $tag_key ] = $tag->get_content(); + } + + /** + * After dynamic tags rendered. + * + * Fires after Elementor renders the dynamic tags. + * + * @since 2.0.0 + */ + do_action( 'elementor/dynamic_tags/after_render' ); + + return $tags_data; + } + + /** + * @since 2.0.0 + * @access public + * + * @param $mode + */ + public function set_parsing_mode( $mode ) { + $this->parsing_mode = $mode; + } + + /** + * @since 2.0.0 + * @access public + */ + public function get_parsing_mode() { + return $this->parsing_mode; + } + + /** + * @since 2.1.0 + * @access public + * @param Post $css_file + */ + public function after_enqueue_post_css( $css_file ) { + $post_id = $css_file->get_post_id(); + $should_enqueue = apply_filters( 'elementor/css-file/dynamic/should_enqueue', true, $post_id ); + + if ( $should_enqueue ) { + $css_file = Dynamic_CSS::create( $post_id, $css_file ); + $css_file->enqueue(); + } + } + + /** + * @since 2.3.0 + * @access public + */ + public function register_ajax_actions( Ajax $ajax ) { + $ajax->register_ajax_action( 'render_tags', [ $this, 'ajax_render_tags' ] ); + } + + /** + * @since 2.0.0 + * @access private + */ + private function add_actions() { + add_action( 'elementor/ajax/register_actions', [ $this, 'register_ajax_actions' ] ); + add_action( 'elementor/css-file/post/enqueue', [ $this, 'after_enqueue_post_css' ] ); + } +} diff --git a/wp-content/plugins/elementor/core/dynamic-tags/tag.php b/wp-content/plugins/elementor/core/dynamic-tags/tag.php new file mode 100644 index 0000000..185aed7 --- /dev/null +++ b/wp-content/plugins/elementor/core/dynamic-tags/tag.php @@ -0,0 +1,124 @@ +get_settings(); + + ob_start(); + + $this->render(); + + $value = ob_get_clean(); + + if ( ! Utils::is_empty( $value ) ) { + // TODO: fix spaces in `before`/`after` if WRAPPED_TAG ( conflicted with .elementor-tag { display: inline-flex; } ); + if ( ! Utils::is_empty( $settings, 'before' ) ) { + $value = wp_kses_post( $settings['before'] ) . $value; + } + + if ( ! Utils::is_empty( $settings, 'after' ) ) { + $value .= wp_kses_post( $settings['after'] ); + } + + if ( static::WRAPPED_TAG ) : + $value = '' . $value . ''; + endif; + + } elseif ( ! Utils::is_empty( $settings, 'fallback' ) ) { + $value = wp_kses_post_deep( $settings['fallback'] ); + } + + return $value; + } + + /** + * @since 2.0.0 + * @access public + */ + final public function get_content_type() { + return 'ui'; + } + + /** + * @since 2.0.9 + * @access public + */ + public function get_editor_config() { + $config = parent::get_editor_config(); + + $config['wrapped_tag'] = $this::WRAPPED_TAG; + + return $config; + } + + /** + * @since 2.0.0 + * @access protected + */ + protected function register_advanced_section() { + $this->start_controls_section( + 'advanced', + [ + 'label' => esc_html__( 'Advanced', 'elementor' ), + ] + ); + + $this->add_control( + 'before', + [ + 'label' => esc_html__( 'Before', 'elementor' ), + 'ai' => [ + 'active' => false, + ], + ] + ); + + $this->add_control( + 'after', + [ + 'label' => esc_html__( 'After', 'elementor' ), + 'ai' => [ + 'active' => false, + ], + ] + ); + + $this->add_control( + 'fallback', + [ + 'label' => esc_html__( 'Fallback', 'elementor' ), + 'ai' => [ + 'active' => false, + ], + ] + ); + + $this->end_controls_section(); + } +} diff --git a/wp-content/plugins/elementor/core/editor/data/globals/controller.php b/wp-content/plugins/elementor/core/editor/data/globals/controller.php new file mode 100644 index 0000000..18a438a --- /dev/null +++ b/wp-content/plugins/elementor/core/editor/data/globals/controller.php @@ -0,0 +1,36 @@ +register_endpoint( new Endpoints\Colors( $this ) ); + $this->register_endpoint( new Endpoints\Typography( $this ) ); + } + + public function get_collection_params() { + // Does not have 'get_items' args (OPTIONS). + // Maybe TODO: try `$this->get_index_endpoint()->get_collection_params()`. + return []; + } + + public function get_permission_callback( $request ) { + // Allow internal get global values. (e.g render global.css for a visitor) + if ( 'GET' === $request->get_method() && Plugin::$instance->data_manager_v2->is_internal() ) { + return true; + } + + return current_user_can( 'edit_posts' ); + } + + protected function register_index_endpoint() { + $this->register_endpoint( new Endpoint\Index\AllChildren( $this ) ); + } +} diff --git a/wp-content/plugins/elementor/core/editor/data/globals/endpoints/base.php b/wp-content/plugins/elementor/core/editor/data/globals/endpoints/base.php new file mode 100644 index 0000000..e8305f4 --- /dev/null +++ b/wp-content/plugins/elementor/core/editor/data/globals/endpoints/base.php @@ -0,0 +1,67 @@ + '[\w]+', + ]; + + $this->register_item_route( \WP_REST_Server::READABLE, $args ); + $this->register_item_route( \WP_REST_Server::CREATABLE, $args ); + $this->register_item_route( \WP_REST_Server::DELETABLE, $args ); + } + + public function get_items( $request ) { + return $this->get_kit_items(); + } + + /** + * @inheritDoc + * @throws \Elementor\Data\V2\Base\Exceptions\Error_404 + */ + public function get_item( $id, $request ) { + $items = $this->get_kit_items(); + + if ( ! isset( $items[ $id ] ) ) { + throw new Error_404( esc_html__( 'The Global value you are trying to use is not available.', 'elementor' ), + 'global_not_found' + ); + } + + return $items[ $id ]; + } + + public function create_item( $id, $request ) { + $item = $request->get_body_params(); + + if ( ! isset( $item['title'] ) ) { + return new Data_Exception( esc_html__( 'Invalid title', 'elementor' ), 'invalid_title' ); + } + + $kit = Plugin::$instance->kits_manager->get_active_kit(); + + $item['id'] = $id; + + $db_item = $this->convert_db_format( $item ); + + $kit->add_repeater_row( 'custom_' . $this->get_name(), $db_item ); + + return $item; + } + + abstract protected function get_kit_items(); + + /** + * @param array $item frontend format. + * @return array backend format. + */ + abstract protected function convert_db_format( $item ); +} diff --git a/wp-content/plugins/elementor/core/editor/data/globals/endpoints/colors.php b/wp-content/plugins/elementor/core/editor/data/globals/endpoints/colors.php new file mode 100644 index 0000000..3c83cf7 --- /dev/null +++ b/wp-content/plugins/elementor/core/editor/data/globals/endpoints/colors.php @@ -0,0 +1,51 @@ +kits_manager->get_active_kit_for_frontend(); + + $system_items = $kit->get_settings_for_display( 'system_colors' ); + $custom_items = $kit->get_settings_for_display( 'custom_colors' ); + + if ( ! $system_items ) { + $system_items = []; + } + + if ( ! $custom_items ) { + $custom_items = []; + } + + $items = array_merge( $system_items, $custom_items ); + + foreach ( $items as $index => $item ) { + $id = $item['_id']; + $result[ $id ] = [ + 'id' => $id, + 'title' => $item['title'], + 'value' => $item['color'], + ]; + } + + return $result; + } + + protected function convert_db_format( $item ) { + return [ + '_id' => $item['id'], + 'title' => $item['title'], + 'color' => $item['value'], + ]; + } +} diff --git a/wp-content/plugins/elementor/core/editor/data/globals/endpoints/typography.php b/wp-content/plugins/elementor/core/editor/data/globals/endpoints/typography.php new file mode 100644 index 0000000..56fe744 --- /dev/null +++ b/wp-content/plugins/elementor/core/editor/data/globals/endpoints/typography.php @@ -0,0 +1,73 @@ +kits_manager->get_active_kit_for_frontend(); + + // Use raw settings that doesn't have default values. + $kit_raw_settings = $kit->get_data( 'settings' ); + + if ( isset( $kit_raw_settings['system_typography'] ) ) { + $system_items = $kit_raw_settings['system_typography']; + } else { + // Get default items, but without empty defaults. + $control = $kit->get_controls( 'system_typography' ); + $system_items = $control['default']; + } + + $custom_items = $kit->get_settings( 'custom_typography' ); + + if ( ! $custom_items ) { + $custom_items = []; + } + + $items = array_merge( $system_items, $custom_items ); + + foreach ( $items as $index => &$item ) { + foreach ( $item as $setting => $value ) { + $new_setting = str_replace( 'styles_', '', $setting, $count ); + if ( $count ) { + $item[ $new_setting ] = $value; + unset( $item[ $setting ] ); + } + } + + $id = $item['_id']; + + $result[ $id ] = [ + 'title' => $item['title'], + 'id' => $id, + ]; + + unset( $item['_id'], $item['title'] ); + + $result[ $id ]['value'] = $item; + } + + return $result; + } + + protected function convert_db_format( $item ) { + $db_format = [ + '_id' => $item['id'], + 'title' => $item['title'], + ]; + + $db_format = array_merge( $item['value'], $db_format ); + + return $db_format; + } +} diff --git a/wp-content/plugins/elementor/core/editor/editor.php b/wp-content/plugins/elementor/core/editor/editor.php new file mode 100644 index 0000000..ea7c172 --- /dev/null +++ b/wp-content/plugins/elementor/core/editor/editor.php @@ -0,0 +1,668 @@ +set_post_id( absint( $_REQUEST['post'] ) ); + + if ( ! $this->is_edit_mode( $this->post_id ) ) { + return; + } + + // BC: From 2.9.0, the editor shouldn't handle the global post / current document. + // Use requested id and not the global in order to avoid conflicts with plugins that changes the global post. + query_posts( [ + 'p' => $this->post_id, + 'post_type' => get_post_type( $this->post_id ), + ] ); + + Plugin::$instance->db->switch_to_post( $this->post_id ); + + $document = Plugin::$instance->documents->get( $this->post_id ); + + Plugin::$instance->documents->switch_to_document( $document ); + + // Change mode to Builder + $document->set_is_built_with_elementor( true ); + + // End BC. + + Loading_Inspection_Manager::instance()->register_inspections(); + + // Send MIME Type header like WP admin-header. + @header( 'Content-Type: ' . get_option( 'html_type' ) . '; charset=' . get_option( 'blog_charset' ) ); + + add_filter( 'show_admin_bar', '__return_false' ); + + // Remove all WordPress actions + remove_all_actions( 'wp_head' ); + remove_all_actions( 'wp_print_styles' ); + remove_all_actions( 'wp_print_head_scripts' ); + remove_all_actions( 'wp_footer' ); + + // Handle `wp_head` + add_action( 'wp_head', 'wp_enqueue_scripts', 1 ); + add_action( 'wp_head', 'wp_print_styles', 8 ); + add_action( 'wp_head', 'wp_print_head_scripts', 9 ); + add_action( 'wp_head', 'wp_site_icon' ); + add_action( 'wp_head', [ $this, 'editor_head_trigger' ], 30 ); + + // Handle `wp_footer` + add_action( 'wp_footer', 'wp_print_footer_scripts', 20 ); + add_action( 'wp_footer', 'wp_auth_check_html', 30 ); + add_action( 'wp_footer', [ $this, 'wp_footer' ] ); + + // Handle `wp_enqueue_scripts` + remove_all_actions( 'wp_enqueue_scripts' ); + + // Also remove all scripts hooked into after_wp_tiny_mce. + remove_all_actions( 'after_wp_tiny_mce' ); + + add_action( 'wp_enqueue_scripts', [ $this, 'enqueue_scripts' ], 999999 ); + add_action( 'wp_enqueue_scripts', [ $this, 'enqueue_styles' ], 999999 ); + + // Setup default heartbeat options + add_filter( 'heartbeat_settings', function( $settings ) { + $settings['interval'] = 15; + return $settings; + } ); + + // Tell to WP Cache plugins do not cache this request. + Utils::do_not_cache(); + + do_action( 'elementor/editor/init' ); + + $this->get_loader()->print_root_template(); + + // From the action it's an empty string, from tests its `false` + if ( false !== $die ) { + die; + } + } + + /** + * Retrieve post ID. + * + * Get the ID of the current post. + * + * @since 1.8.0 + * @access public + * + * @return int Post ID. + */ + public function get_post_id() { + return $this->post_id; + } + + /** + * Redirect to new URL. + * + * Used as a fallback function for the old URL structure of Elementor page + * edit URL. + * + * Fired by `template_redirect` action. + * + * @since 1.6.0 + * @access public + */ + public function redirect_to_new_url() { + if ( ! isset( $_GET['elementor'] ) ) { + return; + } + + $document = Plugin::$instance->documents->get( get_the_ID() ); + + if ( ! $document ) { + wp_die( esc_html__( 'Document not found.', 'elementor' ) ); + } + + if ( ! $document->is_editable_by_current_user() || ! $document->is_built_with_elementor() ) { + return; + } + + wp_safe_redirect( $document->get_edit_url() ); + die; + } + + /** + * Whether the edit mode is active. + * + * Used to determine whether we are in the edit mode. + * + * @since 1.0.0 + * @access public + * + * @param int $post_id Optional. Post ID. Default is `null`, the current + * post ID. + * + * @return bool Whether the edit mode is active. + */ + public function is_edit_mode( $post_id = null ) { + if ( null !== $this->is_edit_mode ) { + return $this->is_edit_mode; + } + + if ( empty( $post_id ) ) { + $post_id = $this->post_id; + } + + $document = Plugin::$instance->documents->get( $post_id ); + + if ( ! $document || ! $document->is_editable_by_current_user() ) { + return false; + } + + /** @var Module ajax */ + $ajax_data = Plugin::$instance->common->get_component( 'ajax' )->get_current_action_data(); + + if ( ! empty( $ajax_data ) && 'get_document_config' === $ajax_data['action'] ) { + return true; + } + + // Ajax request as Editor mode + $actions = [ + 'elementor', + + // Templates + 'elementor_get_templates', + 'elementor_save_template', + 'elementor_get_template', + 'elementor_delete_template', + 'elementor_import_template', + 'elementor_library_direct_actions', + ]; + + if ( isset( $_REQUEST['action'] ) && in_array( $_REQUEST['action'], $actions ) ) { + return true; + } + + return false; + } + + /** + * Lock post. + * + * Mark the post as currently being edited by the current user. + * + * @since 1.0.0 + * @access public + * + * @param int $post_id The ID of the post being edited. + */ + public function lock_post( $post_id ) { + if ( ! function_exists( 'wp_set_post_lock' ) ) { + require_once ABSPATH . 'wp-admin/includes/post.php'; + } + + wp_set_post_lock( $post_id ); + } + + /** + * Get locked user. + * + * Check what user is currently editing the post. + * + * @since 1.0.0 + * @access public + * + * @param int $post_id The ID of the post being edited. + * + * @return \WP_User|false User information or false if the post is not locked. + */ + public function get_locked_user( $post_id ) { + if ( ! function_exists( 'wp_check_post_lock' ) ) { + require_once ABSPATH . 'wp-admin/includes/post.php'; + } + + $locked_user = wp_check_post_lock( $post_id ); + if ( ! $locked_user ) { + return false; + } + + return get_user_by( 'id', $locked_user ); + } + + /** + * NOTICE: This method not in use, it's here for backward compatibility. + * + * Print Editor Template. + * + * Include the wrapper template of the editor. + * + * @since 2.2.0 + * @access public + */ + public function print_editor_template() { + include ELEMENTOR_PATH . 'includes/editor-templates/editor-wrapper.php'; + } + + /** + * Enqueue scripts. + * + * Registers all the editor scripts and enqueues them. + * + * @since 1.0.0 + * @access public + */ + public function enqueue_scripts() { + remove_action( 'wp_enqueue_scripts', [ $this, __FUNCTION__ ], 999999 ); + + global $wp_styles, $wp_scripts; + + // Reset global variable + $wp_styles = new \WP_Styles(); // phpcs:ignore WordPress.WP.GlobalVariablesOverride.Prohibited + $wp_scripts = new \WP_Scripts(); // phpcs:ignore WordPress.WP.GlobalVariablesOverride.Prohibited + + $this->get_loader()->register_scripts(); + + /** + * Before editor enqueue scripts. + * + * Fires before Elementor editor scripts are enqueued. + * + * @since 1.0.0 + */ + do_action( 'elementor/editor/before_enqueue_scripts' ); + + // Tweak for WP Admin menu icons + wp_print_styles( 'editor-buttons' ); + + $this->get_loader()->enqueue_scripts(); + + Plugin::$instance->controls_manager->enqueue_control_scripts(); + + /** + * After editor enqueue scripts. + * + * Fires after Elementor editor scripts are enqueued. + * + * @since 1.0.0 + */ + do_action( 'elementor/editor/after_enqueue_scripts' ); + } + + /** + * Enqueue styles. + * + * Registers all the editor styles and enqueues them. + * + * @since 1.0.0 + * @access public + */ + public function enqueue_styles() { + /** + * Before editor enqueue styles. + * + * Fires before Elementor editor styles are enqueued. + * + * @since 1.0.0 + */ + do_action( 'elementor/editor/before_enqueue_styles' ); + + $this->get_loader()->register_styles(); + $this->get_loader()->enqueue_styles(); + + $this->enqueue_theme_ui_styles(); + + $breakpoints = Plugin::$instance->breakpoints->get_breakpoints(); + + // The two breakpoints under 'tablet' need to be checked for values. + if ( $breakpoints[ Breakpoints_Manager::BREAKPOINT_KEY_MOBILE ]->is_custom() || $breakpoints[ Breakpoints_Manager::BREAKPOINT_KEY_MOBILE_EXTRA ]->is_enabled() ) { + wp_add_inline_style( + 'elementor-editor', + '.elementor-device-tablet #elementor-preview-responsive-wrapper { width: ' . Plugin::$instance->breakpoints->get_device_min_breakpoint( Breakpoints_Manager::BREAKPOINT_KEY_TABLET ) . 'px; }' + ); + } + + /** + * After editor enqueue styles. + * + * Fires after Elementor editor styles are enqueued. + * + * @since 1.0.0 + */ + do_action( 'elementor/editor/after_enqueue_styles' ); + } + + private function enqueue_theme_ui_styles() { + $ui_theme_selected = SettingsManager::get_settings_managers( 'editorPreferences' )->get_model()->get_settings( 'ui_theme' ); + + $ui_themes = [ + 'light', + 'dark', + ]; + + if ( 'auto' === $ui_theme_selected || ! in_array( $ui_theme_selected, $ui_themes, true ) ) { + $ui_light_theme_media_queries = '(prefers-color-scheme: light)'; + $ui_dark_theme_media_queries = '(prefers-color-scheme: dark)'; + } else { + $ui_light_theme_media_queries = 'none'; + $ui_dark_theme_media_queries = 'none'; + + if ( 'light' === $ui_theme_selected ) { + $ui_light_theme_media_queries = 'all'; + } elseif ( 'dark' === $ui_theme_selected ) { + $ui_dark_theme_media_queries = 'all'; + } + } + + $this->enqueue_theme_ui( 'light', $ui_light_theme_media_queries ); + $this->enqueue_theme_ui( 'dark', $ui_dark_theme_media_queries ); + } + + private function enqueue_theme_ui( $ui_theme, $ui_theme_media_queries = 'all' ) { + $suffix = Utils::is_script_debug() ? '' : '.min'; + + wp_enqueue_style( + 'e-theme-ui-' . $ui_theme, + ELEMENTOR_ASSETS_URL . 'css/theme-' . $ui_theme . $suffix . '.css', + [], + ELEMENTOR_VERSION, + $ui_theme_media_queries + ); + } + + /** + * Editor head trigger. + * + * Fires the 'elementor/editor/wp_head' action in the head tag in Elementor + * editor. + * + * @since 1.0.0 + * @access public + */ + public function editor_head_trigger() { + /** + * Elementor editor head. + * + * Fires on Elementor editor head tag. + * + * Used to prints scripts or any other data in the head tag. + * + * @since 1.0.0 + */ + do_action( 'elementor/editor/wp_head' ); + } + + /** + * WP footer. + * + * Prints Elementor editor with all the editor templates, and render controls, + * widgets and content elements. + * + * Fired by `wp_footer` action. + * + * @since 1.0.0 + * @access public + */ + public function wp_footer() { + $plugin = Plugin::$instance; + + $plugin->controls_manager->render_controls(); + $plugin->widgets_manager->render_widgets_content(); + $plugin->elements_manager->render_elements_content(); + + $plugin->dynamic_tags->print_templates(); + + $this->get_loader()->register_additional_templates(); + + /** + * Elementor editor footer. + * + * Fires on Elementor editor before closing the body tag. + * + * Used to prints scripts or any other HTML before closing the body tag. + * + * @since 1.0.0 + */ + do_action( 'elementor/editor/footer' ); + } + + /** + * Set edit mode. + * + * Used to update the edit mode. + * + * @since 1.0.0 + * @access public + * + * @param bool $edit_mode Whether the edit mode is active. + */ + public function set_edit_mode( $edit_mode ) { + $this->is_edit_mode = $edit_mode; + } + + /** + * Editor constructor. + * + * Initializing Elementor editor and redirect from old URL structure of + * Elementor editor. + * + * @since 1.0.0 + * @access public + */ + public function __construct() { + Plugin::$instance->data_manager_v2->register_controller( new Data\Globals\Controller() ); + + $this->notice_bar = new Notice_Bar(); + $this->promotion = new Promotion(); + + add_action( 'admin_action_elementor', [ $this, 'init' ] ); + add_action( 'template_redirect', [ $this, 'redirect_to_new_url' ] ); + + $this->register_editor_v2_experiment(); + + // Handle autocomplete feature for URL control. + add_filter( 'wp_link_query_args', [ $this, 'filter_wp_link_query_args' ] ); + add_filter( 'wp_link_query', [ $this, 'filter_wp_link_query' ] ); + } + + /** + * @since 2.2.0 + * @access public + */ + public function filter_wp_link_query_args( $query ) { + $library_cpt_key = array_search( Source_Local::CPT, $query['post_type'], true ); + if ( false !== $library_cpt_key ) { + unset( $query['post_type'][ $library_cpt_key ] ); + } + + return $query; + } + + /** + * @since 2.2.0 + * @access public + */ + public function filter_wp_link_query( $results ) { + + // PHPCS - The user data is not used. + if ( isset( $_POST['editor'] ) && 'elementor' === $_POST['editor'] ) { // phpcs:ignore WordPress.Security.NonceVerification.Missing + $post_type_object = get_post_type_object( 'post' ); + $post_label = $post_type_object->labels->singular_name; + + foreach ( $results as & $result ) { + if ( 'post' === get_post_type( $result['ID'] ) ) { + $result['info'] = $post_label; + } + } + } + + return $results; + } + + public function set_post_id( $post_id ) { + $this->post_id = $post_id; + } + + /** + * Get loader. + * + * @return Editor_Loader_Interface + */ + private function get_loader() { + if ( ! $this->loader ) { + $this->loader = Editor_Loader_Factory::create(); + + $this->loader->init(); + } + + return $this->loader; + } + + /** + * Adding Editor V2 experiment. + * + * @return void + * @throws \Exception + */ + private function register_editor_v2_experiment() { + Plugin::$instance->experiments->add_feature( [ + 'name' => static::EDITOR_V2_EXPERIMENT_NAME, + 'title' => esc_html__( 'Editor Top Bar', 'elementor' ), + 'description' => sprintf( + '%1$s %2$s', + esc_html__( 'Get a sneak peek of the new Editor powered by React. The beautiful design and experimental layout of the Top bar are just some of the exciting tools on their way.', 'elementor' ), + esc_html__( 'Learn more', 'elementor' ) + ), + 'default' => Experiments_Manager::STATE_INACTIVE, + 'status' => Experiments_Manager::RELEASE_STATUS_ALPHA, + ] ); + } + + /** + * Get elements presets. + * + * @return array + */ + public function get_elements_presets() { + $element_types = Plugin::$instance->elements_manager->get_element_types(); + $presets = []; + + foreach ( $element_types as $el_type => $element ) { + $this->check_element_for_presets( $element, $el_type, $presets ); + } + + return $presets; + } + + /** + * @return void + */ + private function check_element_for_presets( $element, $el_type, &$presets ) { + $element_presets = $element->get_panel_presets(); + + if ( empty( $element_presets ) ) { + return; + } + + foreach ( $element_presets as $key => $preset ) { + $this->maybe_add_preset( $el_type, $preset, $key, $presets ); + } + } + + /** + * @return void + */ + private function maybe_add_preset( $el_type, $preset, $key, &$presets ) { + if ( $this->is_valid_preset( $el_type, $preset ) ) { + $presets[ $key ] = $preset; + } + } + + /** + * @return boolean + */ + private function is_valid_preset( $el_type, $preset ) { + return isset( $preset['replacements']['custom']['originalWidget'] ) + && $el_type === $preset['replacements']['custom']['originalWidget']; + } +} diff --git a/wp-content/plugins/elementor/core/editor/loader/common/editor-common-scripts-settings.php b/wp-content/plugins/elementor/core/editor/loader/common/editor-common-scripts-settings.php new file mode 100644 index 0000000..ee10b17 --- /dev/null +++ b/wp-content/plugins/elementor/core/editor/loader/common/editor-common-scripts-settings.php @@ -0,0 +1,191 @@ +documents->get_doc_or_auto_save( Plugin::$instance->editor->get_post_id() ); + $kits_manager = Plugin::$instance->kits_manager; + + $page_title_selector = $kits_manager->get_current_settings( 'page_title_selector' ); + + $page_title_selector .= ', .elementor-page-title .elementor-heading-title'; + + $client_env = [ + 'initial_document' => $document->get_config(), + 'version' => ELEMENTOR_VERSION, + 'home_url' => home_url(), + 'admin_settings_url' => admin_url( 'admin.php?page=' . Settings::PAGE_ID ), + 'admin_tools_url' => admin_url( 'admin.php?page=' . Tools::PAGE_ID ), + 'admin_apps_url' => admin_url( 'admin.php?page=' . AppsModule::PAGE_ID ), + 'autosave_interval' => AUTOSAVE_INTERVAL, + 'tabs' => Plugin::$instance->controls_manager->get_tabs(), + 'controls' => Plugin::$instance->controls_manager->get_controls_data(), + 'elements' => Plugin::$instance->elements_manager->get_element_types_config(), + 'globals' => [ + 'defaults_enabled' => [ + 'colors' => $kits_manager->is_custom_colors_enabled(), + 'typography' => $kits_manager->is_custom_typography_enabled(), + ], + ], + 'icons' => [ + 'libraries' => Icons_Manager::get_icon_manager_tabs_config(), + 'goProURL' => 'https://go.elementor.com/go-pro-icon-library/', + ], + 'fa4_to_fa5_mapping_url' => ELEMENTOR_ASSETS_URL . 'lib/font-awesome/migration/mapping.js', + 'settings' => $settings, + 'wp_editor' => static::get_wp_editor_config(), + 'settings_page_link' => Settings::get_url(), + 'tools_page_link' => Tools::get_url(), + 'tools_page_nonce' => wp_create_nonce( 'tools-page-from-editor' ), + 'elementor_site' => 'https://go.elementor.com/about-elementor/', + 'docs_elementor_site' => 'https://go.elementor.com/docs/', + 'help_the_content_url' => 'https://go.elementor.com/the-content-missing/', + 'help_flexbox_bc_url' => 'https://go.elementor.com/flexbox-layout-bc/', + 'elementPromotionURL' => 'https://go.elementor.com/go-pro-%s', + 'dynamicPromotionURL' => 'https://go.elementor.com/go-pro-dynamic-tag', + 'additional_shapes' => Shapes::get_additional_shapes_for_config(), + 'user' => [ + 'restrictions' => Plugin::$instance->role_manager->get_user_restrictions_array(), + 'is_administrator' => current_user_can( 'manage_options' ), + 'introduction' => User::get_introduction_meta(), + 'dismissed_editor_notices' => User::get_dismissed_editor_notices(), + 'locale' => get_user_locale(), + ], + 'preview' => [ + 'help_preview_error_url' => 'https://go.elementor.com/preview-not-loaded/', + 'help_preview_http_error_url' => 'https://go.elementor.com/preview-not-loaded/#permissions', + 'help_preview_http_error_500_url' => 'https://go.elementor.com/500-error/', + 'debug_data' => Loading_Inspection_Manager::instance()->run_inspections(), + ], + 'locale' => get_locale(), + 'rich_editing_enabled' => filter_var( get_user_meta( get_current_user_id(), 'rich_editing', true ), FILTER_VALIDATE_BOOLEAN ), + 'page_title_selector' => $page_title_selector, + 'tinymceHasCustomConfig' => class_exists( 'Tinymce_Advanced' ) || class_exists( 'Advanced_Editor_Tools' ), + 'inlineEditing' => Plugin::$instance->widgets_manager->get_inline_editing_config(), + 'dynamicTags' => Plugin::$instance->dynamic_tags->get_config(), + 'ui' => [ + 'defaultGenericFonts' => $kits_manager->get_current_settings( 'default_generic_fonts' ), + ], + // Empty array for BC to avoid errors. + 'i18n' => [], + // 'responsive' contains the custom breakpoints config introduced in Elementor v3.2.0 + 'responsive' => [ + 'breakpoints' => Plugin::$instance->breakpoints->get_breakpoints_config(), + 'icons_map' => Plugin::$instance->breakpoints->get_responsive_icons_classes_map(), + ], + 'promotion' => [ + 'elements' => Plugin::$instance->editor->promotion->get_elements_promotion(), + ], + 'editor_events' => EditorEventsModule::get_editor_events_config(), + ]; + + if ( ! Utils::has_pro() && current_user_can( 'manage_options' ) ) { + $client_env['promotionWidgets'] = Api::get_promotion_widgets(); + } + + if ( Plugin::$instance->experiments->is_feature_active( 'container_grid' ) ) { + $client_env['elementsPresets'] = Plugin::$instance->editor->get_elements_presets(); + } + + static::bc_move_document_filters(); + + /** + * Localize editor settings. + * + * Filters the editor localized settings. + * + * @since 1.0.0 + * + * @param array $client_env Editor configuration. + * @param int $post_id The ID of the current post being edited. + */ + return apply_filters( 'elementor/editor/localize_settings', $client_env ); + } + + private static function bc_move_document_filters() { + global $wp_filter; + + $old_tag = 'elementor/editor/localize_settings'; + $new_tag = 'elementor/document/config'; + + if ( ! has_filter( $old_tag ) ) { + return; + } + + foreach ( $wp_filter[ $old_tag ] as $priority => $filters ) { + foreach ( $filters as $filter_id => $filter_args ) { + if ( 2 === $filter_args['accepted_args'] ) { + remove_filter( $old_tag, $filter_id, $priority ); + + add_filter( $new_tag, $filter_args['function'], $priority, 2 ); + } + } + } + } + + /** + * Get WordPress editor config. + * + * Config the default WordPress editor with custom settings for Elementor use. + * + * @since 1.9.0 + * @access private + */ + private static function get_wp_editor_config() { + // Remove all TinyMCE plugins. + remove_all_filters( 'mce_buttons', 10 ); + remove_all_filters( 'mce_external_plugins', 10 ); + + if ( ! class_exists( '\_WP_Editors', false ) ) { + require ABSPATH . WPINC . '/class-wp-editor.php'; + } + + // WordPress 4.8 and higher + if ( method_exists( '\_WP_Editors', 'print_tinymce_scripts' ) ) { + \_WP_Editors::print_default_editor_scripts(); + \_WP_Editors::print_tinymce_scripts(); + } + ob_start(); + + wp_editor( + '%%EDITORCONTENT%%', + 'elementorwpeditor', + [ + 'editor_class' => 'elementor-wp-editor', + 'editor_height' => 250, + 'drag_drop_upload' => true, + ] + ); + + $config = ob_get_clean(); + + // Don't call \_WP_Editors methods again + remove_action( 'admin_print_footer_scripts', [ '_WP_Editors', 'editor_js' ], 50 ); + remove_action( 'admin_print_footer_scripts', [ '_WP_Editors', 'print_default_editor_scripts' ], 45 ); + + \_WP_Editors::editor_js(); + + return $config; + } +} diff --git a/wp-content/plugins/elementor/core/editor/loader/editor-base-loader.php b/wp-content/plugins/elementor/core/editor/loader/editor-base-loader.php new file mode 100644 index 0000000..0953395 --- /dev/null +++ b/wp-content/plugins/elementor/core/editor/loader/editor-base-loader.php @@ -0,0 +1,268 @@ +config = $config; + $this->assets_config_provider = $assets_config_provider; + } + + /** + * @return void + */ + public function register_scripts() { + $assets_url = $this->config->get( 'assets_url' ); + $min_suffix = $this->config->get( 'min_suffix' ); + + wp_register_script( + 'elementor-editor-modules', + "{$assets_url}js/editor-modules{$min_suffix}.js", + [ 'elementor-common-modules' ], + ELEMENTOR_VERSION, + true + ); + + wp_register_script( + 'elementor-editor-document', + "{$assets_url}js/editor-document{$min_suffix}.js", + [ 'elementor-common-modules' ], + ELEMENTOR_VERSION, + true + ); + + // Hack for waypoint with editor mode. + wp_register_script( + 'elementor-waypoints', + "{$assets_url}lib/waypoints/waypoints-for-editor.js", + [ 'jquery' ], + '4.0.2', + true + ); + + wp_register_script( + 'perfect-scrollbar', + "{$assets_url}lib/perfect-scrollbar/js/perfect-scrollbar{$min_suffix}.js", + [], + '1.4.0', + true + ); + + wp_register_script( + 'jquery-easing', + "{$assets_url}lib/jquery-easing/jquery-easing{$min_suffix}.js", + [ 'jquery' ], + '1.3.2', + true + ); + + wp_register_script( + 'nprogress', + "{$assets_url}lib/nprogress/nprogress{$min_suffix}.js", + [], + '0.2.0', + true + ); + + wp_register_script( + 'tipsy', + "{$assets_url}lib/tipsy/tipsy{$min_suffix}.js", + [ 'jquery' ], + '1.0.0', + true + ); + + wp_register_script( + 'jquery-elementor-select2', + "{$assets_url}lib/e-select2/js/e-select2.full{$min_suffix}.js", + [ 'jquery' ], + '4.0.6-rc.1', + true + ); + + wp_register_script( + 'flatpickr', + "{$assets_url}lib/flatpickr/flatpickr{$min_suffix}.js", + [ 'jquery' ], + '1.12.0', + true + ); + + wp_register_script( + 'ace', + 'https://cdnjs.cloudflare.com/ajax/libs/ace/1.2.5/ace.js', + [], + '1.2.5', + true + ); + + wp_register_script( + 'ace-language-tools', + 'https://cdnjs.cloudflare.com/ajax/libs/ace/1.2.5/ext-language_tools.js', + [ 'ace' ], + '1.2.5', + true + ); + + wp_register_script( + 'jquery-hover-intent', + "{$assets_url}lib/jquery-hover-intent/jquery-hover-intent{$min_suffix}.js", + [], + '1.0.0', + true + ); + + wp_register_script( + 'nouislider', + "{$assets_url}lib/nouislider/nouislider{$min_suffix}.js", + [], + '13.0.0', + true + ); + + wp_register_script( + 'pickr', + "{$assets_url}lib/pickr/pickr.min.js", + [], + '1.5.0', + true + ); + + wp_register_script( + 'elementor-editor', + "{$assets_url}js/editor{$min_suffix}.js", + [ + 'elementor-common', + 'elementor-editor-modules', + 'elementor-editor-document', + 'wp-auth-check', + 'jquery-ui-sortable', + 'jquery-ui-resizable', + 'perfect-scrollbar', + 'nprogress', + 'tipsy', + 'imagesloaded', + 'heartbeat', + 'jquery-elementor-select2', + 'flatpickr', + 'ace', + 'ace-language-tools', + 'jquery-hover-intent', + 'nouislider', + 'pickr', + 'react', + 'react-dom', + ], + ELEMENTOR_VERSION, + true + ); + + wp_set_script_translations( 'elementor-editor', 'elementor' ); + } + + /** + * @return void + */ + public function register_styles() { + $assets_url = $this->config->get( 'assets_url' ); + $min_suffix = $this->config->get( 'min_suffix' ); + $direction_suffix = $this->config->get( 'direction_suffix' ); + + wp_register_style( + 'font-awesome', + "{$assets_url}lib/font-awesome/css/font-awesome{$min_suffix}.css", + [], + '4.7.0' + ); + + wp_register_style( + 'elementor-select2', + "{$assets_url}lib/e-select2/css/e-select2{$min_suffix}.css", + [], + '4.0.6-rc.1' + ); + + wp_register_style( + 'google-font-roboto', + 'https://fonts.googleapis.com/css?family=Roboto:300,400,500,700', + [], + ELEMENTOR_VERSION + ); + + wp_register_style( + 'flatpickr', + "{$assets_url}lib/flatpickr/flatpickr{$min_suffix}.css", + [], + '1.12.0' + ); + + wp_register_style( + 'pickr', + "{$assets_url}lib/pickr/themes/monolith.min.css", + [], + '1.5.0' + ); + + wp_register_style( + 'elementor-editor', + "{$assets_url}css/editor{$direction_suffix}{$min_suffix}.css", + [ + 'elementor-common', + 'elementor-select2', + 'elementor-icons', + 'wp-auth-check', + 'google-font-roboto', + 'flatpickr', + 'pickr', + ], + ELEMENTOR_VERSION + ); + } + + /** + * @return void + */ + public function enqueue_styles() { + wp_enqueue_style( 'elementor-editor' ); + } + + /** + * @return void + */ + public function register_additional_templates() { + $templates = [ + 'global', + 'panel', + 'panel-elements', + 'repeater', + 'templates', + 'navigator', + 'hotkeys', + ]; + + foreach ( $templates as $template ) { + Plugin::$instance->common->add_template( ELEMENTOR_PATH . "includes/editor-templates/{$template}.php" ); + } + } +} diff --git a/wp-content/plugins/elementor/core/editor/loader/editor-loader-factory.php b/wp-content/plugins/elementor/core/editor/loader/editor-loader-factory.php new file mode 100644 index 0000000..34a3db4 --- /dev/null +++ b/wp-content/plugins/elementor/core/editor/loader/editor-loader-factory.php @@ -0,0 +1,44 @@ +experiments->is_feature_active( Editor::EDITOR_V2_EXPERIMENT_NAME ); + + // Nonce verification is not required, using param for routing purposes. + // phpcs:ignore WordPress.Security.NonceVerification.Recommended + $editor_version = Utils::get_super_global_value( $_GET, 'v' ) ?? ( $is_editor_v2_active ? '2' : '1' ); + + $config = new Collection( [ + 'assets_url' => ELEMENTOR_ASSETS_URL, + 'min_suffix' => ( Utils::is_script_debug() || Utils::is_elementor_tests() ) ? '' : '.min', + 'direction_suffix' => is_rtl() ? '-rtl' : '', + ] ); + + $assets_config_provider = ( new Assets_Config_Provider() ) + ->set_path_resolver( function ( $name ) { + return ELEMENTOR_ASSETS_PATH . "js/packages/{$name}/{$name}.asset.php"; + } ); + + if ( '2' === $editor_version ) { + return new Editor_V2_Loader( $config, $assets_config_provider ); + } + + return new Editor_V1_Loader( $config, $assets_config_provider ); + } +} diff --git a/wp-content/plugins/elementor/core/editor/loader/editor-loader-interface.php b/wp-content/plugins/elementor/core/editor/loader/editor-loader-interface.php new file mode 100644 index 0000000..b7277a2 --- /dev/null +++ b/wp-content/plugins/elementor/core/editor/loader/editor-loader-interface.php @@ -0,0 +1,58 @@ +assets_config_provider->load( $package ); + } + } + + /** + * @return void + */ + public function register_scripts() { + parent::register_scripts(); + + $assets_url = $this->config->get( 'assets_url' ); + $min_suffix = $this->config->get( 'min_suffix' ); + + foreach ( $this->assets_config_provider->all() as $package => $config ) { + wp_register_script( + $config['handle'], + "{$assets_url}js/packages/{$package}/{$package}{$min_suffix}.js", + $config['deps'], + ELEMENTOR_VERSION, + true + ); + } + + wp_register_script( + 'elementor-responsive-bar', + "{$assets_url}js/responsive-bar{$min_suffix}.js", + [ 'elementor-editor' ], + ELEMENTOR_VERSION, + true + ); + + wp_set_script_translations( 'elementor-responsive-bar', 'elementor' ); + + wp_register_script( + 'elementor-editor-loader-v1', + "{$assets_url}js/editor-loader-v1{$min_suffix}.js", + [ 'elementor-editor' ], + ELEMENTOR_VERSION, + true + ); + } + + /** + * @return void + */ + public function enqueue_scripts() { + wp_enqueue_script( 'elementor-responsive-bar' ); + + // Must be last. + wp_enqueue_script( 'elementor-editor-loader-v1' ); + + Utils::print_js_config( + 'elementor-editor', + 'ElementorConfig', + Editor_Common_Scripts_Settings::get() + ); + } + + /** + * @return void + */ + public function register_styles() { + parent::register_styles(); + + $assets_url = $this->config->get( 'assets_url' ); + $min_suffix = $this->config->get( 'min_suffix' ); + + wp_register_style( + 'elementor-responsive-bar', + "{$assets_url}css/responsive-bar{$min_suffix}.css", + [], + ELEMENTOR_VERSION + ); + } + + public function enqueue_styles() { + parent::enqueue_styles(); + + wp_enqueue_style( 'elementor-responsive-bar' ); + } + + /** + * @return void + */ + public function print_root_template() { + // Exposing the path for the view part to render the body of the editor template. + $body_file_path = __DIR__ . '/templates/editor-body-v1.view.php'; + + include ELEMENTOR_PATH . 'includes/editor-templates/editor-wrapper.php'; + } + + /** + * @return void + */ + public function register_additional_templates() { + parent::register_additional_templates(); + + Plugin::$instance->common->add_template( ELEMENTOR_PATH . 'includes/editor-templates/responsive-bar.php' ); + } +} diff --git a/wp-content/plugins/elementor/core/editor/loader/v1/js/editor-loader-v1.js b/wp-content/plugins/elementor/core/editor/loader/v1/js/editor-loader-v1.js new file mode 100644 index 0000000..67f52d2 --- /dev/null +++ b/wp-content/plugins/elementor/core/editor/loader/v1/js/editor-loader-v1.js @@ -0,0 +1 @@ +window.elementor.start(); diff --git a/wp-content/plugins/elementor/core/editor/loader/v1/templates/editor-body-v1.view.php b/wp-content/plugins/elementor/core/editor/loader/v1/templates/editor-body-v1.view.php new file mode 100644 index 0000000..a48e8c7 --- /dev/null +++ b/wp-content/plugins/elementor/core/editor/loader/v1/templates/editor-body-v1.view.php @@ -0,0 +1,43 @@ +editor->notice_bar->get_notice(); +?> + +
    +
    + +
    +
    +
    + +

    + +
    + +
    +
    +
    +
    + +
    + render(); + } // IFrame will be created here by the Javascript later. ?> +
    +
    + +
    diff --git a/wp-content/plugins/elementor/core/editor/loader/v2/editor-v2-loader.php b/wp-content/plugins/elementor/core/editor/loader/v2/editor-v2-loader.php new file mode 100644 index 0000000..2932ade --- /dev/null +++ b/wp-content/plugins/elementor/core/editor/loader/v2/editor-v2-loader.php @@ -0,0 +1,186 @@ +get_packages_to_enqueue(), self::LIBS ); + + foreach ( $packages as $package ) { + $this->assets_config_provider->load( $package ); + } + + do_action( 'elementor/editor/v2/init' ); + } + + /** + * @return void + */ + public function register_scripts() { + parent::register_scripts(); + + $assets_url = $this->config->get( 'assets_url' ); + $min_suffix = $this->config->get( 'min_suffix' ); + + foreach ( $this->assets_config_provider->all() as $package => $config ) { + if ( self::ENV_PACKAGE === $package ) { + wp_register_script( + 'elementor-editor-environment-v2', + "{$assets_url}js/editor-environment-v2{$min_suffix}.js", + [ $config['handle'] ], + ELEMENTOR_VERSION, + true + ); + } + + if ( static::APP_PACKAGE === $package ) { + wp_register_script( + 'elementor-editor-loader-v2', + "{$assets_url}js/editor-loader-v2{$min_suffix}.js", + [ 'elementor-editor', $config['handle'] ], + ELEMENTOR_VERSION, + true + ); + } + + wp_register_script( + $config['handle'], + "{$assets_url}js/packages/{$package}/{$package}{$min_suffix}.js", + $config['deps'], + ELEMENTOR_VERSION, + true + ); + } + + $packages_handles = $this->assets_config_provider->pluck( 'handle' )->all(); + + Assets_Translation_Loader::for_handles( $packages_handles, 'elementor' ); + + do_action( 'elementor/editor/v2/scripts/register' ); + } + + /** + * @return void + */ + public function enqueue_scripts() { + do_action( 'elementor/editor/v2/scripts/enqueue/before' ); + + wp_enqueue_script( 'elementor-editor-environment-v2' ); + + $env_config = $this->assets_config_provider->get( self::ENV_PACKAGE ); + + if ( $env_config ) { + $client_env = apply_filters( 'elementor/editor/v2/scripts/env', [] ); + + Utils::print_js_config( + $env_config['handle'], + 'elementorEditorV2Env', + $client_env + ); + } + + foreach ( $this->assets_config_provider->only( $this->get_packages_to_enqueue() ) as $config ) { + wp_enqueue_script( $config['handle'] ); + } + + do_action( 'elementor/editor/v2/scripts/enqueue' ); + + Utils::print_js_config( + 'elementor-editor', + 'ElementorConfig', + Editor_Common_Scripts_Settings::get() + ); + + // Must be last. + wp_enqueue_script( 'elementor-editor-loader-v2' ); + + do_action( 'elementor/editor/v2/scripts/enqueue/after' ); + } + + /** + * @return void + */ + public function register_styles() { + parent::register_styles(); + + $assets_url = $this->config->get( 'assets_url' ); + $min_suffix = $this->config->get( 'min_suffix' ); + + wp_register_style( + 'elementor-editor-v2-overrides', + "{$assets_url}css/editor-v2-overrides{$min_suffix}.css", + [ 'elementor-editor' ], + ELEMENTOR_VERSION + ); + + do_action( 'elementor/editor/v2/styles/register' ); + } + + /** + * @return void + */ + public function enqueue_styles() { + parent::enqueue_styles(); + + wp_enqueue_style( 'elementor-editor-v2-overrides' ); + + do_action( 'elementor/editor/v2/styles/enqueue' ); + } + + /** + * @return void + */ + public function print_root_template() { + // Exposing the path for the view part to render the body of the editor template. + $body_file_path = __DIR__ . '/templates/editor-body-v2.view.php'; + + include ELEMENTOR_PATH . 'includes/editor-templates/editor-wrapper.php'; + } + + private function get_packages_to_enqueue() : array { + return apply_filters( 'elementor/editor/v2/packages', self::PACKAGES_TO_ENQUEUE ); + } +} diff --git a/wp-content/plugins/elementor/core/editor/loader/v2/js/editor-environment-v2.js b/wp-content/plugins/elementor/core/editor/loader/v2/js/editor-environment-v2.js new file mode 100644 index 0000000..8a5fcc7 --- /dev/null +++ b/wp-content/plugins/elementor/core/editor/loader/v2/js/editor-environment-v2.js @@ -0,0 +1,5 @@ +if ( ! window.elementorV2?.env ) { + throw new Error( 'The "@elementor/env" package was not loaded.' ); +} + +window.elementorV2.env.initEnv( window.elementorEditorV2Env ); diff --git a/wp-content/plugins/elementor/core/editor/loader/v2/js/editor-loader-v2.js b/wp-content/plugins/elementor/core/editor/loader/v2/js/editor-loader-v2.js new file mode 100644 index 0000000..8d698d2 --- /dev/null +++ b/wp-content/plugins/elementor/core/editor/loader/v2/js/editor-loader-v2.js @@ -0,0 +1,17 @@ +window.__elementorEditorV1LoadingPromise = new Promise( ( resolve ) => { + window.addEventListener( 'elementor/init', () => { + resolve(); + }, { once: true } ); +} ); + +window.elementor.start(); + +if ( ! window.elementorV2?.editor ) { + throw new Error( 'The "@elementor/editor" package was not loaded.' ); +} + +window.elementorV2 + .editor + .init( + document.getElementById( 'elementor-editor-wrapper-v2' ), + ); diff --git a/wp-content/plugins/elementor/core/editor/loader/v2/scss/editor-v2-overrides.css b/wp-content/plugins/elementor/core/editor/loader/v2/scss/editor-v2-overrides.css new file mode 100644 index 0000000..5e45ce1 --- /dev/null +++ b/wp-content/plugins/elementor/core/editor/loader/v2/scss/editor-v2-overrides.css @@ -0,0 +1,44 @@ +/** + * Here should be only styles that related to the Editor v1, and should be overridden when using the Editor v2. + */ +body { + --editor-v2-top-bar-height: 48px; +} + +#elementor-editor-wrapper { + height: calc(100vh - var(--editor-v2-top-bar-height)); +} + +body.elementor-navigator-docked #elementor-navigator { + height: calc(100% - var(--editor-v2-top-bar-height)); + top: var(--editor-v2-top-bar-height); +} + +.elementor-panel #elementor-panel-header-menu-button, +.elementor-panel #elementor-panel-header-add-button, +.elementor-panel #elementor-panel-footer { + display: none; +} + +.elementor-panel #elementor-panel-header { + font-weight: 700; + background-color: var(--e-a-bg-default); + color: var(--e-a-color-txt-accent); + border-block-end: var(--e-a-border); + height: 48px; +} + +.elementor-control-type-wysiwyg .mce-fullscreen { + inset: var(--editor-v2-top-bar-height) 0 0 0; +} +.elementor-control-type-wysiwyg .mce-fullscreen > .mce-container-body { + display: flex; + flex-direction: column; + height: 100%; +} +.elementor-control-type-wysiwyg .mce-fullscreen > .mce-container-body > .mce-edit-area { + flex-grow: 1; +} +.elementor-control-type-wysiwyg .mce-fullscreen > .mce-container-body > .mce-edit-area > iframe { + height: 100% !important; +}/*# sourceMappingURL=editor-v2-overrides.css.map */ \ No newline at end of file diff --git a/wp-content/plugins/elementor/core/editor/loader/v2/scss/editor-v2-overrides.css.map b/wp-content/plugins/elementor/core/editor/loader/v2/scss/editor-v2-overrides.css.map new file mode 100644 index 0000000..c839b09 --- /dev/null +++ b/wp-content/plugins/elementor/core/editor/loader/v2/scss/editor-v2-overrides.css.map @@ -0,0 +1 @@ +{"version":3,"sources":["editor-v2-overrides.scss","editor-v2-overrides.css"],"names":[],"mappings":"AAAA;;EAAA;AAIA;EACC,gCAAA;ACAD;;ADGA;EACC,qDAAA;ACAD;;ADGA;EACC,oDAAA;EACA,oCAAA;ACAD;;ADGA;;;EAGC,aAAA;ACAD;;ADGA;EACC,gBAAA;EACA,uCAAA;EACA,kCAAA;EACA,mCAAA;EACA,YAAA;ACAD;;ADIA;EACC,4CAAA;ACDD;ADGC;EACC,aAAA;EACA,sBAAA;EACA,YAAA;ACDF;ADGE;EACC,YAAA;ACDH;ADGG;EACC,uBAAA;ACDJ","file":"editor-v2-overrides.css"} \ No newline at end of file diff --git a/wp-content/plugins/elementor/core/editor/loader/v2/scss/editor-v2-overrides.scss b/wp-content/plugins/elementor/core/editor/loader/v2/scss/editor-v2-overrides.scss new file mode 100644 index 0000000..0fe1fc2 --- /dev/null +++ b/wp-content/plugins/elementor/core/editor/loader/v2/scss/editor-v2-overrides.scss @@ -0,0 +1,49 @@ +/** + * Here should be only styles that related to the Editor v1, and should be overridden when using the Editor v2. + */ + +body { + --editor-v2-top-bar-height: 48px; +} + +#elementor-editor-wrapper { + height: calc(100vh - var(--editor-v2-top-bar-height)); +} + +body.elementor-navigator-docked #elementor-navigator { + height: calc(100% - var(--editor-v2-top-bar-height)); + top: var(--editor-v2-top-bar-height); +} + +.elementor-panel #elementor-panel-header-menu-button, +.elementor-panel #elementor-panel-header-add-button, +.elementor-panel #elementor-panel-footer { + display: none; +} + +.elementor-panel #elementor-panel-header { + font-weight: 700; + background-color: var( --e-a-bg-default ); + color: var( --e-a-color-txt-accent ); + border-block-end: var( --e-a-border ); + height: 48px; +} + +// Make the MCE full-screen work properly with the top bar. +.elementor-control-type-wysiwyg .mce-fullscreen { + inset: var(--editor-v2-top-bar-height) 0 0 0; + + & > .mce-container-body { + display: flex; + flex-direction: column; + height: 100%; + + & > .mce-edit-area { + flex-grow: 1; + + & > iframe { + height: 100% !important; + } + } + } +} diff --git a/wp-content/plugins/elementor/core/editor/loader/v2/templates/editor-body-v2.view.php b/wp-content/plugins/elementor/core/editor/loader/v2/templates/editor-body-v2.view.php new file mode 100644 index 0000000..516dd7b --- /dev/null +++ b/wp-content/plugins/elementor/core/editor/loader/v2/templates/editor-body-v2.view.php @@ -0,0 +1,44 @@ +editor->notice_bar->get_notice(); +?> + +
    +
    + +
    +
    +
    + +

    + +
    + +
    + +
    +
    +
    + +
    + render(); + } // IFrame will be created here by the Javascript later. ?> +
    +
    + +
    diff --git a/wp-content/plugins/elementor/core/editor/notice-bar.php b/wp-content/plugins/elementor/core/editor/notice-bar.php new file mode 100644 index 0000000..dba246a --- /dev/null +++ b/wp-content/plugins/elementor/core/editor/notice-bar.php @@ -0,0 +1,152 @@ +get_install_time() > strtotime( '-1 days' ) ) { + return []; + } + + $upgrade_url = 'https://go.elementor.com/go-pro-editor-notice-bar/'; + + $config = [ + 'description' => $this->get_description(), + 'upgrade_text' => $this->get_upgrade_text(), + 'upgrade_url' => $upgrade_url, + ]; + + $config = apply_filters( 'elementor/notice-bar/custom_promotion', $config ); + + if ( isset( $config['upgrade_url'] ) && ! Validate_Promotion::domain_is_on_elementor_dot_com( $config['upgrade_url'] ) ) { + $config['upgrade_url'] = esc_url( $upgrade_url ); + } + + return [ + 'muted_period' => 14, + 'option_key' => '_elementor_editor_upgrade_notice_dismissed', + 'message' => $config['description'] ?? $this->get_description(), + 'action_title' => $config['upgrade_text'] ?? $this->get_upgrade_text(), + 'action_url' => $config['upgrade_url'] ?? $upgrade_url, + ]; + } + + public function get_upgrade_text() { + return esc_html__( 'Upgrade Now', 'elementor' ); + } + + public function get_description() { + return esc_html__( 'Unleash the full power of Elementor\'s features and web creation tools.', 'elementor' ); + } + + final public function get_notice() { + if ( ! $this->has_access_to_notice() ) { + return null; + } + + $settings = $this->get_settings(); + + if ( empty( $settings['option_key'] ) ) { + return null; + } + + $dismissed_time = get_option( $settings['option_key'] ); + + if ( $dismissed_time ) { + if ( $dismissed_time > strtotime( '-' . $settings['muted_period'] . ' days' ) ) { + return null; + } + + $this->set_notice_dismissed(); + } + + return $this; + } + + protected function render_action( $type ) { + $settings = $this->get_settings(); + + // TODO: Make the API better. The bad naming is because of BC. + $prefix_map = [ + 'primary' => '', + 'secondary' => 'secondary_', + ]; + + $prefix = $prefix_map[ $type ]; + + $action_title = "{$prefix}action_title"; + $action_url = "{$prefix}action_url"; + $action_message = "{$prefix}message"; + $action_target = "{$prefix}action_target"; + + if ( empty( $settings[ $action_title ] ) || empty( $settings[ $action_url ] ) || empty( $settings[ $action_message ] ) ) { + return; + + } + + ?> +
    "> + +
    + +
    "> + + + +
    + get_settings(); + + $icon = empty( $settings['icon'] ) + ? 'eicon-elementor-square' + : esc_attr( $settings['icon'] ); + + ?> +
    + + + render_action( 'primary' ); + $this->render_action( 'secondary' ); + ?> + + +
    + has_access_to_notice() ) { + throw new \Exception( 'Access denied' ); + } + + update_option( $this->get_settings( 'option_key' ), time() ); + } + + public function register_ajax_actions( Ajax $ajax ) { + $ajax->register_ajax_action( 'notice_bar_dismiss', [ $this, 'set_notice_dismissed' ] ); + } + + private function has_access_to_notice() { + return current_user_can( 'manage_options' ); + } +} diff --git a/wp-content/plugins/elementor/core/editor/promotion.php b/wp-content/plugins/elementor/core/editor/promotion.php new file mode 100644 index 0000000..6b15c0d --- /dev/null +++ b/wp-content/plugins/elementor/core/editor/promotion.php @@ -0,0 +1,33 @@ + __( '%s Widget', 'elementor' ), + /* translators: %s: Widget title. */ + 'content' => __( + 'Use %s widget and dozens more pro features to extend your toolbox and build sites faster and better.', + 'elementor' + ), + 'action_button' => [ + 'text' => $has_pro ? + __( 'Connect & Activate', 'elementor' ) : + __( 'Upgrade Now', 'elementor' ), + 'url' => $has_pro ? + admin_url( 'admin.php?page=elementor-license' ) : + 'https://go.elementor.com/go-pro-%s', + ], + ]; + } +} diff --git a/wp-content/plugins/elementor/core/experiments/exceptions/dependency-exception.php b/wp-content/plugins/elementor/core/experiments/exceptions/dependency-exception.php new file mode 100644 index 0000000..aa0b961 --- /dev/null +++ b/wp-content/plugins/elementor/core/experiments/exceptions/dependency-exception.php @@ -0,0 +1,9 @@ + '', + ]; + } + + /** + * Get Experiments. + */ + public function get_experiments() { + $result = []; + + $experiments_manager = Plugin::$instance->experiments; + + // TODO: Those keys should be at `$experiments_manager`. + $tracking_keys = [ + 'default', + 'state', + 'tags', + ]; + + foreach ( $experiments_manager->get_features() as $feature_name => $feature_data ) { + $data_to_collect = []; + + // Extract only tracking keys. + foreach ( $tracking_keys as $tracking_key ) { + if ( empty( $feature_data[ $tracking_key ] ) ) { + continue; + } + + $data_to_collect[ $tracking_key ] = $feature_data[ $tracking_key ]; + } + + $result[ $feature_name ] = $data_to_collect; + } + + return [ + 'value' => $result, + ]; + } + + /** + * Get Raw Experiments. + * + * Retrieve a string containing the list of Elementor experiments and each experiment's status (active/inactive). + * The string is formatted in a non-table structure, and it is meant for export/download of the system info reports. + * + * @return array + */ + public function get_raw_experiments() { + $experiments = Plugin::$instance->experiments->get_features(); + + $output = ''; + + $is_first_item = true; + + foreach ( $experiments as $experiment ) { + // If the state is default, add the default state to the string. + $state = Plugin::$instance->experiments->get_feature_state_label( $experiment ); + + // The first item automatically has a tab character before it. Add tabs only to the rest of the items. + if ( ! $is_first_item ) { + $output .= "\t"; + } + + $title = isset( $experiment['title'] ) ? $experiment['title'] : $experiment['name']; + + $output .= $title . ': ' . $state . PHP_EOL; + + $is_first_item = false; + } + + return [ + 'value' => $output, + ]; + } + + /** + * Get HTML Experiments. + * + * Retrieve the list of Elementor experiments and each experiment's status (active/inactive), in HTML table format. + * + * @return array + */ + public function get_html_experiments() { + $experiments = Plugin::$instance->experiments->get_features(); + + $output = ''; + + foreach ( $experiments as $experiment ) { + // If the state is default, add the default state to the string. + $state = Plugin::$instance->experiments->get_feature_state_label( $experiment ); + + $title = isset( $experiment['title'] ) ? $experiment['title'] : $experiment['name']; + + $output .= '
    '; + $output .= ''; + $output .= ''; + } + + return [ + 'value' => $output, + ]; + } +} diff --git a/wp-content/plugins/elementor/core/experiments/manager.php b/wp-content/plugins/elementor/core/experiments/manager.php new file mode 100644 index 0000000..b2ef8bf --- /dev/null +++ b/wp-content/plugins/elementor/core/experiments/manager.php @@ -0,0 +1,1012 @@ +features[ $options['name'] ] ) ) { + return null; + } + + $default_experimental_data = [ + 'tag' => '', // Deprecated, use 'tags' instead. + 'tags' => [], + 'description' => '', + 'release_status' => self::RELEASE_STATUS_ALPHA, + 'default' => self::STATE_INACTIVE, + 'mutable' => true, + static::TYPE_HIDDEN => false, + 'new_site' => [ + 'default_active' => false, + 'always_active' => false, + 'minimum_installation_version' => null, + ], + 'on_state_change' => null, + 'generator_tag' => false, + ]; + + $allowed_options = [ 'name', 'title', 'tag', 'tags', 'description', 'release_status', 'default', 'mutable', static::TYPE_HIDDEN, 'new_site', 'on_state_change', 'dependencies', 'generator_tag', 'messages' ]; + + $experimental_data = $this->merge_properties( $default_experimental_data, $options, $allowed_options ); + + $experimental_data = $this->unify_feature_tags( $experimental_data ); + + $new_site = $experimental_data['new_site']; + + if ( $new_site['default_active'] || $new_site['always_active'] ) { + $is_new_installation = $this->install_compare( $new_site['minimum_installation_version'] ); + + if ( $is_new_installation ) { + if ( $new_site['always_active'] ) { + $experimental_data['state'] = self::STATE_ACTIVE; + + $experimental_data['mutable'] = false; + } elseif ( $new_site['default_active'] ) { + $experimental_data['default'] = self::STATE_ACTIVE; + } + } + } + + if ( $experimental_data['mutable'] ) { + $experimental_data['state'] = $this->get_saved_feature_state( $options['name'] ); + } + + if ( empty( $experimental_data['state'] ) ) { + $experimental_data['state'] = self::STATE_DEFAULT; + } + + if ( ! empty( $experimental_data['dependencies'] ) ) { + foreach ( $experimental_data['dependencies'] as $key => $dependency ) { + $feature = $this->get_features( $dependency ); + + if ( ! empty( $feature[ static::TYPE_HIDDEN ] ) ) { + throw new Exceptions\Dependency_Exception( 'Depending on a hidden experiment is not allowed.' ); + } + + $experimental_data['dependencies'][ $key ] = $this->create_dependency_class( $dependency, $feature ); + } + } + + $this->features[ $options['name'] ] = $experimental_data; + + if ( $experimental_data['mutable'] && is_admin() ) { + $feature_option_key = $this->get_feature_option_key( $options['name'] ); + + $on_state_change_callback = function( $old_state, $new_state ) use ( $experimental_data, $feature_option_key ) { + try { + $this->on_feature_state_change( $experimental_data, $new_state, $old_state ); + } catch ( Exceptions\Dependency_Exception $e ) { + $message = sprintf( + '

    %s

    %s

    ', + esc_html( $e->getMessage() ), + site_url( 'wp-admin/admin.php?page=elementor#tab-experiments' ), + esc_html__( 'Back', 'elementor' ) + ); + + wp_die( $message ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped + } + }; + + add_action( 'add_option_' . $feature_option_key, $on_state_change_callback, 10, 2 ); + add_action( 'update_option_' . $feature_option_key, $on_state_change_callback, 10, 2 ); + } + + do_action( 'elementor/experiments/feature-registered', $this, $experimental_data ); + + return $experimental_data; + } + + private function install_compare( $version ) { + $installs_history = Upgrade_Manager::get_installs_history(); + + if ( empty( $installs_history ) ) { + return false; + } + + $cleaned_version = preg_replace( '/-(beta|cloud|dev)\d*$/', '', key( $installs_history ) ); + + return version_compare( + $cleaned_version, + $version, + '>=' + ); + } + + /** + * Combine 'tag' and 'tags' into one property. + * + * @param array $experimental_data + * + * @return array + */ + private function unify_feature_tags( array $experimental_data ) : array { + foreach ( [ 'tag', 'tags' ] as $key ) { + if ( empty( $experimental_data[ $key ] ) ) { + continue; + } + + $experimental_data[ $key ] = $this->format_feature_tags( $experimental_data[ $key ] ); + } + + if ( is_array( $experimental_data['tag'] ) ) { + $experimental_data['tags'] = array_merge( $experimental_data['tag'], $experimental_data['tags'] ); + } + + return $experimental_data; + } + + /** + * Format feature tags into the right format. + * + * @param string|array[ + * [ + * 'type' => string, + * 'label' => string + * ] + * ] $tag + * + * @return array + */ + private function format_feature_tags( $tags ) : array { + if ( ! is_string( $tags ) && ! is_array( $tags ) ) { + return []; + } + + $default_tag = [ + 'type' => 'default', + 'label' => '', + ]; + + $allowed_tag_properties = [ 'type', 'label' ]; + + // If $tags is string, explode by commas and convert to array. + if ( is_string( $tags ) ) { + $tags = array_filter( explode( ',', $tags ) ); + + foreach ( $tags as $i => $tag ) { + $tags[ $i ] = [ 'label' => trim( $tag ) ]; + } + } + + foreach ( $tags as $i => $tag ) { + if ( empty( $tag['label'] ) ) { + unset( $tags[ $i ] ); + continue; + } + + $tags[ $i ] = $this->merge_properties( $default_tag, $tag, $allowed_tag_properties ); + } + + return $tags; + } + + /** + * Remove Feature + * + * @since 3.1.0 + * @access public + * + * @param string $feature_name + */ + public function remove_feature( $feature_name ) { + unset( $this->features[ $feature_name ] ); + } + + /** + * Get Features + * + * @since 3.1.0 + * @access public + * + * @param string $feature_name Optional. Default is null + * + * @return array|null + */ + public function get_features( $feature_name = null ) { + return self::get_items( $this->features, $feature_name ); + } + + /** + * Get Active Features + * + * @since 3.1.0 + * @access public + * + * @return array + */ + public function get_active_features() { + return array_filter( $this->features, [ $this, 'is_feature_active' ], ARRAY_FILTER_USE_KEY ); + } + + /** + * Is Feature Active + * + * @since 3.1.0 + * @access public + * + * @param string $feature_name + * + * @return bool + */ + public function is_feature_active( $feature_name ) { + $feature = $this->get_features( $feature_name ); + + if ( ! $feature ) { + return false; + } + + return self::STATE_ACTIVE === $this->get_feature_actual_state( $feature ); + } + + /** + * Set Feature Default State + * + * @since 3.1.0 + * @access public + * + * @param string $feature_name + * @param string $default_state + */ + public function set_feature_default_state( $feature_name, $default_state ) { + $feature = $this->get_features( $feature_name ); + + if ( ! $feature ) { + return; + } + + $this->features[ $feature_name ]['default'] = $default_state; + } + + /** + * Get Feature Option Key + * + * @since 3.1.0 + * @access public + * + * @param string $feature_name + * + * @return string + */ + public function get_feature_option_key( $feature_name ) { + return static::OPTION_PREFIX . $feature_name; + } + + private function add_default_features() { + $this->add_feature( [ + 'name' => 'e_optimized_assets_loading', + 'title' => esc_html__( 'Improved Asset Loading', 'elementor' ), + 'tag' => esc_html__( 'Performance', 'elementor' ), + 'description' => sprintf( + '%1$s %2$s', + esc_html__( 'Please Note! The "Improved Asset Loading" mode reduces the amount of code that is loaded on the page by default. When activated, parts of the infrastructure code will be loaded dynamically, only when needed. Keep in mind that activating this experiment may cause conflicts with incompatible plugins.', 'elementor' ), + esc_html__( 'Learn more', 'elementor' ) + ), + 'release_status' => self::RELEASE_STATUS_STABLE, + 'default' => self::STATE_ACTIVE, + 'generator_tag' => true, + ] ); + + $this->add_feature( [ + 'name' => 'e_optimized_css_loading', + 'title' => esc_html__( 'Improved CSS Loading', 'elementor' ), + 'tag' => esc_html__( 'Performance', 'elementor' ), + 'description' => sprintf( + '%1$s %2$s', + esc_html__( 'Please Note! The “Improved CSS Loading” mode reduces the amount of CSS code that is loaded on the page by default. When activated, the CSS code will be loaded, rather inline or in a dedicated file, only when needed. Activating this experiment may cause conflicts with incompatible plugins.', 'elementor' ), + esc_html__( 'Learn more', 'elementor' ) + ), + 'release_status' => self::RELEASE_STATUS_STABLE, + 'new_site' => [ + 'default_active' => true, + 'minimum_installation_version' => '3.3.0', + ], + 'generator_tag' => true, + ] ); + + $this->add_feature( [ + 'name' => 'e_font_icon_svg', + 'title' => esc_html__( 'Inline Font Icons', 'elementor' ), + 'tag' => esc_html__( 'Performance', 'elementor' ), + 'description' => sprintf( + '%1$s %2$s', + esc_html__( 'The “Inline Font Icons” will render the icons as inline SVG without loading the Font-Awesome and the eicons libraries and its related CSS files and fonts.', 'elementor' ), + esc_html__( 'Learn more', 'elementor' ) + ), + 'release_status' => self::RELEASE_STATUS_STABLE, + 'new_site' => [ + 'default_active' => true, + 'minimum_installation_version' => '3.17.0', + ], + 'generator_tag' => true, + ] ); + + $this->add_feature( [ + 'name' => 'additional_custom_breakpoints', + 'title' => esc_html__( 'Additional Custom Breakpoints', 'elementor' ), + 'tag' => esc_html__( 'Performance', 'elementor' ), + 'description' => sprintf( + '%1$s %2$s', + esc_html__( 'Get pixel-perfect design for every screen size. You can now add up to 6 customizable breakpoints beyond the default desktop setting: mobile, mobile extra, tablet, tablet extra, laptop, and widescreen.', 'elementor' ), + esc_html__( 'Learn more', 'elementor' ) + ), + 'release_status' => self::RELEASE_STATUS_STABLE, + 'default' => self::STATE_ACTIVE, + 'generator_tag' => true, + ] ); + + $this->add_feature( [ + 'name' => 'admin_menu_rearrangement', + 'mutable' => false, + ] ); + + $this->add_feature( [ + 'name' => 'container', + 'title' => esc_html__( 'Flexbox Container', 'elementor' ), + 'description' => sprintf( + esc_html__( + 'Create advanced layouts and responsive designs with the new %1$sFlexbox Container element%2$s. + This experiment replaces the current section/column structure, but you\'ll still keep your existing + Sections, Inner Sections and Columns and be able to edit them. Ready to give it a try? Check out the %3$sFlexbox playground%4$s.', + 'elementor' + ), + '', + '', + '', + '' + ), + 'release_status' => self::RELEASE_STATUS_STABLE, + 'default' => self::STATE_INACTIVE, + 'new_site' => [ + 'default_active' => true, + 'minimum_installation_version' => '3.16.0', + ], + 'messages' => [ + 'on_deactivate' => sprintf( + '%1$s %2$s', + esc_html__( 'Container-based content will be hidden from your site and may not be recoverable in all cases.', 'elementor' ), + esc_html__( 'Learn more', 'elementor' ), + ), + ], + ] ); + + $this->add_feature( [ + 'name' => 'e_swiper_latest', + 'title' => esc_html__( 'Upgrade Swiper Library', 'elementor' ), + 'description' => esc_html__( 'Prepare your website for future improvements to carousel features by upgrading the Swiper library integrated into your site from v5.36 to v8.45. This experiment includes markup changes so it might require updating custom code and cause compatibility issues with third party plugins.', 'elementor' ), + 'release_status' => self::RELEASE_STATUS_STABLE, + 'default' => self::STATE_ACTIVE, + ] ); + + $this->add_feature( [ + 'name' => 'container_grid', + 'title' => esc_html__( 'Grid Container', 'elementor' ), + 'tag' => esc_html__( 'Feature', 'elementor' ), + 'description' => sprintf( + '%1$s %2$s', + esc_html__( 'Create pixel perfect layouts by placing elements in a customizable grid. Activate to add the CSS Grid option to container elements.', 'elementor' ), + esc_html__( 'Learn more', 'elementor' ), + ), + 'release_status' => self::RELEASE_STATUS_BETA, + 'default' => self::STATE_INACTIVE, + 'new_site' => [ + 'default_active' => true, + 'minimum_installation_version' => '3.20.0', + ], + 'dependencies' => [ + 'container', + ], + ] ); + } + + /** + * Init States + * + * @since 3.1.0 + * @access private + */ + private function init_states() { + $this->states = [ + self::STATE_DEFAULT => esc_html__( 'Default', 'elementor' ), + self::STATE_ACTIVE => esc_html__( 'Active', 'elementor' ), + self::STATE_INACTIVE => esc_html__( 'Inactive', 'elementor' ), + ]; + } + + /** + * Init Statuses + * + * @since 3.1.0 + * @access private + */ + private function init_release_statuses() { + $this->release_statuses = [ + self::RELEASE_STATUS_DEV => esc_html__( 'Development', 'elementor' ), + self::RELEASE_STATUS_ALPHA => esc_html__( 'Alpha', 'elementor' ), + self::RELEASE_STATUS_BETA => esc_html__( 'Beta', 'elementor' ), + self::RELEASE_STATUS_RC => esc_html__( 'Release Candidate', 'elementor' ), + self::RELEASE_STATUS_STABLE => esc_html__( 'Stable', 'elementor' ), + ]; + } + + /** + * Init Features + * + * @since 3.1.0 + * @access private + */ + private function init_features() { + $this->features = []; + + $this->add_default_features(); + + do_action( 'elementor/experiments/default-features-registered', $this ); + } + + /** + * Register Settings Fields + * + * @param Settings $settings + * + * @since 3.1.0 + * @access private + * + */ + private function register_settings_fields( Settings $settings ) { + $features = $this->get_features(); + + $fields = []; + + foreach ( $features as $feature_name => $feature ) { + $is_hidden = $feature[ static::TYPE_HIDDEN ]; + $is_mutable = $feature['mutable']; + $should_hide_experiment = ! $is_mutable || ( $is_hidden && ! $this->should_show_hidden() ) || $this->has_non_existing_dependency( $feature ); + + if ( $should_hide_experiment ) { + unset( $features[ $feature_name ] ); + + continue; + } + + $feature_key = 'experiment-' . $feature_name; + + $section = 'stable' === $feature['release_status'] ? 'stable' : 'ongoing'; + + $fields[ $section ][ $feature_key ]['label'] = $this->get_feature_settings_label_html( $feature ); + + $fields[ $section ][ $feature_key ]['field_args'] = $feature; + + $fields[ $section ][ $feature_key ]['render'] = function( $feature ) { + $this->render_feature_settings_field( $feature ); + }; + } + + foreach ( [ 'stable', 'ongoing' ] as $section ) { + if ( ! isset( $fields[ $section ] ) ) { + $fields[ $section ]['no_features'] = [ + 'label' => esc_html__( 'No available experiments', 'elementor' ), + 'field_args' => [ + 'type' => 'raw_html', + 'html' => esc_html__( 'The current version of Elementor doesn\'t have any experimental features . if you\'re feeling curious make sure to come back in future versions.', 'elementor' ), + ], + ]; + } + + if ( ! Tracker::is_allow_track() && 'stable' === $section ) { + $fields[ $section ] += $settings->get_usage_fields(); + } + } + + $settings->add_tab( + 'experiments', [ + 'label' => esc_html__( 'Features', 'elementor' ), + 'sections' => [ + 'ongoing_experiments' => [ + 'callback' => function() { + $this->render_settings_intro(); + }, + 'fields' => $fields['ongoing'], + ], + 'stable_experiments' => [ + 'callback' => function() { + $this->render_stable_section_title(); + }, + 'fields' => $fields['stable'], + ], + ], + ] + ); + } + + private function render_stable_section_title() { + ?> +
    +

    + +

    + +

    + +

    +

    + ', + '' + ); + ?> +

    +

    + %2$s', + esc_html__( 'To use an experiment or feature on your site, simply click on the dropdown next to it and switch to Active. You can always deactivate them at any time.', 'elementor' ), + esc_html__( 'Learn more', 'elementor' ), + ); + ?> +

    + + get_features() ) { ?> + + + + +
    +

    + +

    + get_feature_option_key( $feature['name'] ); + + $status = sprintf( + /* translators: %s Release status. */ + esc_html__( 'Status: %s', 'elementor' ), + $this->release_statuses[ $feature['release_status'] ] + ); + + ?> +
    + + +

    + +

    + + render_feature_dependency( $feature ); ?> + + +
    + +
    + +
    + map( function ( $dependency ) { + return $dependency->get_title(); + } ) + ->implode( ', ' ); + + if ( empty( $dependencies ) ) { + return; + } + + ?> +
    + : + +
    + find( function ( $dependency ) { + return $dependency instanceof Non_Existing_Dependency; + } ); + + return ! ! $non_existing_dep; + } + + /** + * Get Feature Settings Label HTML + * + * @since 3.1.0 + * @access private + * + * @param array $feature + * + * @return string + */ + private function get_feature_settings_label_html( array $feature ) { + ob_start(); + + $is_feature_active = $this->is_feature_active( $feature['name'] ); + + $indicator_classes = 'e-experiment__title__indicator'; + + if ( $is_feature_active ) { + $indicator_classes .= ' e-experiment__title__indicator--active'; + } + + $indicator_tooltip = $this->get_feature_state_label( $feature ); + + ?> +
    +
    + + + + +
    + is_feature_active( $feature['name'] ); + + if ( self::STATE_DEFAULT === $feature['state'] ) { + $label = $is_feature_active ? esc_html__( 'Active by default', 'elementor' ) : + esc_html__( 'Inactive by default', 'elementor' ); + } else { + $label = self::STATE_ACTIVE === $feature['state'] ? esc_html__( 'Active', 'elementor' ) : + esc_html__( 'Inactive', 'elementor' ); + } + + return $label; + } + + /** + * Get Feature Settings Label HTML + * + * @since 3.1.0 + * @access private + * + * @param string $feature_name + * + * @return int + */ + private function get_saved_feature_state( $feature_name ) { + return get_option( $this->get_feature_option_key( $feature_name ) ); + } + + /** + * Get Feature Actual State + * + * @since 3.1.0 + * @access private + * + * @param array $feature + * + * @return string + */ + private function get_feature_actual_state( array $feature ) { + if ( ! empty( $feature['state'] ) && self::STATE_DEFAULT !== $feature['state'] ) { + return $feature['state']; + } + + return $feature['default']; + } + + /** + * On Feature State Change + * + * @since 3.1.0 + * @access private + * + * @param array $old_feature_data + * @param string $new_state + * + * @throws \Elementor\Core\Experiments\Exceptions\Dependency_Exception + */ + private function on_feature_state_change( array $old_feature_data, $new_state, $old_state ) { + $new_feature_data = $this->get_features( $old_feature_data['name'] ); + $this->validate_dependency( $new_feature_data, $new_state ); + $this->features[ $old_feature_data['name'] ]['state'] = $new_state; + if ( $old_state === $new_state ) { + return; + } + + Plugin::$instance->files_manager->clear_cache(); + if ( $new_feature_data['on_state_change'] ) { + $new_feature_data['on_state_change']( $old_state, $new_state ); + } + + do_action( 'elementor/experiments/feature-state-change/' . $old_feature_data['name'], $old_state, $new_state ); + } + + /** + * @throws \Elementor\Core\Experiments\Exceptions\Dependency_Exception + */ + private function validate_dependency( array $feature, $new_state ) { + $rollback = function ( $feature_option_key, $state ) { + remove_all_actions( 'add_option_' . $feature_option_key ); + remove_all_actions( 'update_option_' . $feature_option_key ); + + update_option( $feature_option_key, $state ); + }; + + if ( self::STATE_DEFAULT === $new_state ) { + $new_state = $this->get_feature_actual_state( $feature ); + } + + $feature_option_key = $this->get_feature_option_key( $feature['name'] ); + + if ( self::STATE_ACTIVE === $new_state ) { + if ( empty( $feature['dependencies'] ) ) { + return; + } + + // Validate if the current feature dependency is available. + foreach ( $feature['dependencies'] as $dependency ) { + $dependency_feature = $this->get_features( $dependency->get_name() ); + + if ( ! $dependency_feature ) { + $rollback( $feature_option_key, self::STATE_INACTIVE ); + + throw new Exceptions\Dependency_Exception( + sprintf( + 'The feature `%s` has a dependency `%s` that is not available.', + $feature['name'], + $dependency->get_name() + ) + ); + } + + $dependency_state = $this->get_feature_actual_state( $dependency_feature ); + + // If dependency is not active. + if ( self::STATE_INACTIVE === $dependency_state ) { + $rollback( $feature_option_key, self::STATE_INACTIVE ); + + throw new Exceptions\Dependency_Exception( + sprintf( + 'To turn on `%1$s`, Experiment: `%2$s` activity is required!', + $feature['name'], + $dependency_feature['name'] + ) + ); + } + } + } elseif ( self::STATE_INACTIVE === $new_state ) { + // Make sure to deactivate a dependant experiment of the current feature when it's deactivated. + foreach ( $this->get_features() as $current_feature ) { + if ( empty( $current_feature['dependencies'] ) ) { + continue; + } + + $current_feature_state = $this->get_feature_actual_state( $current_feature ); + + foreach ( $current_feature['dependencies'] as $dependency ) { + if ( self::STATE_ACTIVE === $current_feature_state && $feature['name'] === $dependency->get_name() ) { + update_option( $this->get_feature_option_key( $current_feature['name'] ), static::STATE_INACTIVE ); + } + } + } + } + } + + private function should_show_hidden() { + return defined( 'ELEMENTOR_SHOW_HIDDEN_EXPERIMENTS' ) && ELEMENTOR_SHOW_HIDDEN_EXPERIMENTS; + } + + private function create_dependency_class( $dependency_name, $dependency_args ) { + if ( class_exists( $dependency_name ) ) { + return $dependency_name::instance(); + } + + if ( ! empty( $dependency_args ) ) { + return new Wrap_Core_Dependency( $dependency_args ); + } + + return new Non_Existing_Dependency( $dependency_name ); + } + + /** + * The experiments page is a WordPress options page, which means all the experiments are registered via WordPress' register_settings(), + * and their states are being sent in the POST request when saving. + * The options are being updated in a chronological order based on the POST data. + * This behavior interferes with the experiments dependency mechanism because the data that's being sent can be in any order, + * while the dependencies mechanism expects it to be in a specific order (dependencies should be activated before their dependents can). + * In order to solve this issue, we sort the experiments in the POST data based on their dependencies tree. + * + * @param $allowed_options + * + * @return mixed + */ + private function sort_allowed_options_by_dependencies( $allowed_options ) { + if ( ! isset( $allowed_options['elementor'] ) ) { + return $allowed_options; + } + + $sorted = Collection::make(); + $visited = Collection::make(); + + $sort = function ( $item ) use ( &$sort, $sorted, $visited ) { + if ( $visited->contains( $item ) ) { + return; + } + + $visited->push( $item ); + + $feature = $this->get_features( $item ); + + if ( ! $feature ) { + return; + } + + foreach ( $feature['dependencies'] ?? [] as $dep ) { + $name = is_string( $dep ) ? $dep : $dep->get_name(); + + $sort( $name ); + } + + $sorted->push( $item ); + }; + + foreach ( $allowed_options['elementor'] as $option ) { + $is_experiment_option = strpos( $option, static::OPTION_PREFIX ) === 0; + + if ( ! $is_experiment_option ) { + continue; + } + + $sort( + str_replace( static::OPTION_PREFIX, '', $option ) + ); + } + + $allowed_options['elementor'] = Collection::make( $allowed_options['elementor'] ) + ->filter( function ( $option ) { + return 0 !== strpos( $option, static::OPTION_PREFIX ); + } ) + ->merge( + $sorted->map( function ( $item ) { + return static::OPTION_PREFIX . $item; + } ) + ) + ->values(); + + return $allowed_options; + } + + public function __construct() { + $this->init_states(); + + $this->init_release_statuses(); + + $this->init_features(); + + add_action( 'admin_init', function () { + System_Info::add_report( + 'experiments', [ + 'file_name' => __DIR__ . '/experiments-reporter.php', + 'class_name' => __NAMESPACE__ . '\Experiments_Reporter', + ] + ); + }, 79 /* Before log */ ); + + if ( is_admin() ) { + $page_id = Settings::PAGE_ID; + + add_action( "elementor/admin/after_create_settings/{$page_id}", function( Settings $settings ) { + $this->register_settings_fields( $settings ); + }, 11 ); + + add_filter( 'allowed_options', function ( $allowed_options ) { + return $this->sort_allowed_options_by_dependencies( $allowed_options ); + }, 11 ); + } + + // Register CLI commands. + if ( Utils::is_wp_cli() ) { + \WP_CLI::add_command( 'elementor experiments', WP_CLI::class ); + } + } +} diff --git a/wp-content/plugins/elementor/core/experiments/non-existing-dependency.php b/wp-content/plugins/elementor/core/experiments/non-existing-dependency.php new file mode 100644 index 0000000..292b9a1 --- /dev/null +++ b/wp-content/plugins/elementor/core/experiments/non-existing-dependency.php @@ -0,0 +1,31 @@ +feature_id = $feature_id; + } + + public function get_name() { + return $this->feature_id; + } + + public function get_title() { + return $this->feature_id; + } + + public function is_hidden() { + return false; + } + + public static function instance( $feature_id ) { + return new static( $feature_id ); + } +} diff --git a/wp-content/plugins/elementor/core/experiments/wp-cli.php b/wp-content/plugins/elementor/core/experiments/wp-cli.php new file mode 100644 index 0000000..befe91b --- /dev/null +++ b/wp-content/plugins/elementor/core/experiments/wp-cli.php @@ -0,0 +1,195 @@ +is_network( $assoc_args ); + + $experiments = $this->parse_experiments( $args[0] ); + $plural = $this->get_plural( $experiments ); + $success = 'Experiment' . $plural . ' activated successfully'; + $error = 'Cannot activate experiment' . $plural; + + if ( $is_network ) { + $success .= " for site {$site}"; + $error .= " for site {$site}"; + } + + $experiments_manager = Plugin::instance()->experiments; + if ( ! $this->check_experiments_exist( $experiments_manager, $experiments ) ) { + \WP_CLI::error( 'Experiments do not exist' . $args[0] ); + } + + if ( $is_network ) { + $this->foreach_sites( $this->update_experiment_state, $experiments, Experiments_Manager::STATE_ACTIVE, $is_network, $success, $error ); + } else { + $this->update_experiment_state( $experiments, Experiments_Manager::STATE_ACTIVE, $is_network, $success, $error ); + } + } + + /** + * Deactivate an Experiment + * + * ## EXAMPLES + * + * 1. wp elementor experiments deactivate container + * - This will deactivate the Container experiment. + * + * @param array $args + * @param array|null $assoc_args - Arguments from WP CLI command. + */ + public function deactivate( $args, $assoc_args ) { + if ( empty( $args[0] ) ) { + \WP_CLI::error( 'Please specify an experiment.' ); + } + + $is_network = $this->is_network( $assoc_args ); + + $experiments = $this->parse_experiments( $args[0] ); + $plural = $this->get_plural( $experiments ); + $success = 'Experiment' . $plural . ' deactivated successfully'; + $error = 'Cannot deactivate experiment' . $plural; + + $experiments_manager = Plugin::instance()->experiments; + if ( ! $this->check_experiments_exist( $experiments_manager, $experiments ) ) { + \WP_CLI::error( 'Experiments do not exist' ); + } + + if ( $is_network ) { + $this->foreach_sites( $this->update_experiment_state, $experiments, Experiments_Manager::STATE_INACTIVE, $is_network, $success, $error ); + } else { + $this->update_experiment_state( $experiments, Experiments_Manager::STATE_INACTIVE, $is_network, $success, $error ); + } + } + + /** + * Experiment Status + * + * ## EXAMPLES + * + * 1. wp elementor experiments status container + * - This will return the status of Container experiment. (active/inactive) + * + * @param array $args + */ + public function status( $args ) { + if ( empty( $args[0] ) ) { + \WP_CLI::error( 'Please specify an experiment.' ); + } + + $experiments_manager = Plugin::$instance->experiments; + $experiments_status = $experiments_manager->is_feature_active( $args[0] ) ? 'active' : 'inactive'; + + \WP_CLI::line( $experiments_status ); + } + + /** + * Determine if the current website is a multisite. + * + * @param array|null $assoc_args - Arguments from WP CLI command. + * + * @return bool + */ + private function is_network( $assoc_args ) { + return ! empty( $assoc_args['network'] ) && is_multisite(); + } + + /** + * Iterate over network sites and execute a callback. + * + * @param callable $callback - Callback to execute. Gets the site name & id as parameters. + * + * @return void + */ + private function foreach_sites( callable $callback, $experiments, $state, $is_network, $success, $error ) { + $blog_ids = get_sites( [ + 'fields' => 'ids', + 'number' => 0, + ] ); + + foreach ( $blog_ids as $blog_id ) { + switch_to_blog( $blog_id ); + + $callback( get_option( 'home' ), $experiments, $state, $is_network, $success, $error ); + + restore_current_blog(); + } + } + + /** + * @param string $experiments_str comma delimeted string of experiments + * + * @return array array of experiments + */ + private function parse_experiments( $experiments_str ) { + return explode( ',', $experiments_str ); + } + + /** + * @param array $experiments experiments + * + * @return string plural + */ + private function get_plural( $experiments ) { + return count( $experiments ) > 0 ? 's' : ''; + } + + /** + * @param Experiments_Manager $experiments_manager manager + * @param array $experiments experiments + * + * @return bool true when all experiments exist, otherwise false + */ + private function check_experiments_exist( $experiments_manager, $experiments ) { + foreach ( $experiments as $experiment ) { + $feature = $experiments_manager->get_features( $experiment ); + if ( ! $feature ) { + return false; + } + } + return true; + } + + private function update_experiment_state( $experiments, $state, $is_network, $success_message, $error_message, $site_id = '' ) { + if ( $is_network ) { + $success_message .= " for site {$site}"; + $error_message .= " for site {$site}"; + } + + $experiments_manager = Plugin::instance()->experiments; + foreach ( $experiments as $experiment ) { + $option = $experiments_manager->get_feature_option_key( $experiment ); + update_option( $option, $state ); + } + + try { + \WP_CLI::success( $success_message ); + } catch ( \Exception $e ) { + \WP_CLI::error( $error_message ); + } + } +} diff --git a/wp-content/plugins/elementor/core/experiments/wrap-core-dependency.php b/wp-content/plugins/elementor/core/experiments/wrap-core-dependency.php new file mode 100644 index 0000000..8b390b1 --- /dev/null +++ b/wp-content/plugins/elementor/core/experiments/wrap-core-dependency.php @@ -0,0 +1,31 @@ +feature_data = $feature_data; + } + + public function get_name() { + return $this->feature_data['name']; + } + + public function get_title() { + return $this->feature_data['title']; + } + + public function is_hidden() { + return $this->feature_data['hidden']; + } + + public static function instance( $feature_data ) { + return new static( $feature_data ); + } +} diff --git a/wp-content/plugins/elementor/core/files/assets/files-upload-handler.php b/wp-content/plugins/elementor/core/files/assets/files-upload-handler.php new file mode 100644 index 0000000..36e0064 --- /dev/null +++ b/wp-content/plugins/elementor/core/files/assets/files-upload-handler.php @@ -0,0 +1,137 @@ +uploads_manager->are_unfiltered_uploads_enabled()` instead. + * + * @return bool + */ + private function is_elementor_media_upload() { + Plugin::$instance->modules_manager->get_modules( 'dev-tools' )->deprecation->deprecated_function( __METHOD__, '3.5.0', 'Elementor\Plugin::$instance->uploads_manager->are_unfiltered_uploads_enabled()' ); + + return Plugin::$instance->uploads_manager->is_elementor_media_upload(); + } + + /** + * Is Enabled + * + * @deprecated 3.5.0 Use `Elementor\Plugin::$instance->uploads_manager->are_unfiltered_uploads_enabled()` instead. + * + * @return bool + */ + final public static function is_enabled() { + Plugin::$instance->modules_manager->get_modules( 'dev-tools' )->deprecation->deprecated_function( __METHOD__, '3.5.0', 'Elementor\Plugin::$instance->uploads_manager->are_unfiltered_uploads_enabled()' ); + + return Plugin::$instance->uploads_manager->are_unfiltered_uploads_enabled(); + } + + /** + * @deprecated 3.5.0 Use `Elementor\Plugin::$instance->uploads_manager->are_unfiltered_uploads_enabled()` instead. + */ + final public function support_unfiltered_files_upload( $existing_mimes ) { + Plugin::$instance->modules_manager->get_modules( 'dev-tools' )->deprecation->deprecated_function( __METHOD__, '3.5.0', 'Elementor\Plugin::$instance->uploads_manager->support_unfiltered_file_uploads()' ); + + return Plugin::$instance->uploads_manager->support_unfiltered_elementor_file_uploads( $existing_mimes ); + } + + /** + * handle_upload_prefilter + * + * @deprecated 3.5.0 Use `Elementor\Plugin::$instance->uploads_manager->handle_elementor_wp_media_upload()` instead. + * + * @param $file + * + * @return mixed + */ + public function handle_upload_prefilter( $file ) { + Plugin::$instance->modules_manager->get_modules( 'dev-tools' )->deprecation->deprecated_function( __METHOD__, '3.5.0', 'Elementor\Plugin::$instance->uploads_manager->handle_elementor_wp_media_upload()' ); + + return Plugin::$instance->uploads_manager->handle_elementor_wp_media_upload( $file ); + } + + /** + * is_file_should_handled + * + * @deprecated 3.5.0 + * + * @param $file + * + * @return bool + */ + protected function is_file_should_handled( $file ) { + Plugin::$instance->modules_manager->get_modules( 'dev-tools' )->deprecation->deprecated_function( __METHOD__, '3.5.0' ); + + $ext = pathinfo( $file['name'], PATHINFO_EXTENSION ); + + return $this->is_elementor_media_upload() && $this->get_file_type() === $ext; + } + + /** + * file_sanitizer_can_run + * + * @deprecated 3.5.0 Use `Elementor\Core\Files\File_Types\Svg::file_sanitizer_can_run()` instead. + * + * @return bool + */ + public static function file_sanitizer_can_run() { + Plugin::$instance->modules_manager->get_modules( 'dev-tools' )->deprecation->deprecated_function( __METHOD__, '3.5.0', 'Elementor\Core\Files\File_Types\Svg::file_sanitizer_can_run()' ); + + return Svg::file_sanitizer_can_run(); + } + + /** + * Check filetype and ext + * + * A workaround for upload validation which relies on a PHP extension (fileinfo) + * with inconsistent reporting behaviour. + * ref: https://core.trac.wordpress.org/ticket/39550 + * ref: https://core.trac.wordpress.org/ticket/40175 + * + * @deprecated 3.5.0 Use `Elementor\Plugin::$instance->uploads_manager->check_filetype_and_ext()` instead. + * + * @param $data + * @param $file + * @param $filename + * @param $mimes + * + * @return mixed + */ + public function check_filetype_and_ext( $data, $file, $filename, $mimes ) { + Plugin::$instance->modules_manager->get_modules( 'dev-tools' )->deprecation->deprecated_function( __METHOD__, '3.5.0', 'Elementor\Plugin::$instance->uploads_manager->check_filetype_and_ext()' ); + + Plugin::$instance->uploads_manager->check_filetype_and_ext( $data, $file, $filename, $mimes ); + } +} diff --git a/wp-content/plugins/elementor/core/files/assets/json/json-handler.php b/wp-content/plugins/elementor/core/files/assets/json/json-handler.php new file mode 100644 index 0000000..9677a0f --- /dev/null +++ b/wp-content/plugins/elementor/core/files/assets/json/json-handler.php @@ -0,0 +1,37 @@ +uploads_manager->get_file_type_handlers( 'svg' );` + */ +class Json_Handler extends Files_Upload_Handler { + + /** + * @deprecated 3.5.0 + */ + public static function get_name() { + return 'json-handler'; + } + + /** + * @deprecated 3.5.0 + */ + public function get_mime_type() { + return 'application/json'; + } + + /** + * @deprecated 3.5.0 + */ + public function get_file_type() { + return 'json'; + } +} diff --git a/wp-content/plugins/elementor/core/files/assets/manager.php b/wp-content/plugins/elementor/core/files/assets/manager.php new file mode 100644 index 0000000..fb35bf9 --- /dev/null +++ b/wp-content/plugins/elementor/core/files/assets/manager.php @@ -0,0 +1,65 @@ +register_asset_types(); + /** + * Elementor files assets registered. + * + * Fires after Elementor registers assets types + * + * @since 2.6.0 + */ + do_action( 'elementor/core/files/assets/assets_registered', $this ); + } + + public function get_asset( $name ) { + return isset( $this->asset_types[ $name ] ) ? $this->asset_types[ $name ] : false; + } + + /** + * Add Asset + * @param $instance + */ + public function add_asset( $instance ) { + $this->asset_types[ $instance::get_name() ] = $instance; + } + + + /** + * Register Asset Types + * + * Registers Elementor Asset Types + */ + private function register_asset_types() { + $this->add_asset( new Svg_Handler() ); + } +} diff --git a/wp-content/plugins/elementor/core/files/assets/svg/svg-handler.php b/wp-content/plugins/elementor/core/files/assets/svg/svg-handler.php new file mode 100644 index 0000000..cee9441 --- /dev/null +++ b/wp-content/plugins/elementor/core/files/assets/svg/svg-handler.php @@ -0,0 +1,245 @@ +uploads_manager->get_file_type_handlers( 'svg' );` + */ +class Svg_Handler extends Files_Upload_Handler { + + /** + * Inline svg attachment meta key + * + * @deprecated 3.5.0 + */ + const META_KEY = '_elementor_inline_svg'; + + /** + * @deprecated 3.5.0 + */ + const SCRIPT_REGEX = '/(?:\w+script|data):/xi'; + + /** + * Attachment ID. + * + * Holds the current attachment ID. + * + * @deprecated 3.5.0 + * + * @var int + */ + private $attachment_id; + + /** + * @deprecated 3.5.0 + */ + public static function get_name() { + return 'svg-handler'; + } + + /** + * get_meta + * + * @deprecated 3.5.0 + * + * @return mixed + */ + protected function get_meta() { + Plugin::$instance->modules_manager->get_modules( 'dev-tools' )->deprecation->deprecated_function( __METHOD__, '3.5.0' ); + + return get_post_meta( $this->attachment_id, self::META_KEY, true ); + } + + /** + * update_meta + * + * @deprecated 3.5.0 + * + * @param $meta + */ + protected function update_meta( $meta ) { + Plugin::$instance->modules_manager->get_modules( 'dev-tools' )->deprecation->deprecated_function( __METHOD__, '3.5.0' ); + + update_post_meta( $this->attachment_id, self::META_KEY, $meta ); + } + + /** + * delete_meta + * + * @deprecated 3.5.0 + */ + protected function delete_meta() { + Plugin::$instance->modules_manager->get_modules( 'dev-tools' )->deprecation->deprecated_function( __METHOD__, '3.5.0' ); + + delete_post_meta( $this->attachment_id, self::META_KEY ); + } + + /** + * @deprecated 3.5.0 + */ + public function get_mime_type() { + return 'image/svg+xml'; + } + + /** + * @deprecated 3.5.0 + */ + public function get_file_type() { + return 'svg'; + } + + /** + * delete_meta_cache + * + * @deprecated 3.5.0 Use `Plugin::$instance->uploads_manager->get_file_type_handlers( 'svg' )->delete_meta_cache()` instead. + */ + public function delete_meta_cache() { + Plugin::$instance->modules_manager->get_modules( 'dev-tools' )->deprecation->deprecated_function( __METHOD__, '3.5.0', 'Plugin::$instance->uploads_manager->get_file_type_handlers( \'svg\' )->delete_meta_cache()' ); + + /** @var Svg $svg_handler */ + $svg_handler = Plugin::$instance->uploads_manager->get_file_type_handlers( 'svg' ); + + $svg_handler->delete_meta_cache(); + } + + /** + * get_inline_svg + * + * @deprecated 3.5.0 Use `Elementor\Core\Files\File_Types\Svg::get_inline_svg()` instead. + * + * @param $attachment_id + * + * @return bool|mixed|string + */ + public static function get_inline_svg( $attachment_id ) { + Plugin::$instance->modules_manager->get_modules( 'dev-tools' )->deprecation->deprecated_function( __METHOD__, '3.5.0', 'Elementor\Core\Files\File_Types\Svg::get_inline_svg()' ); + + return Svg::get_inline_svg( $attachment_id ); + } + + /** + * sanitize_svg + * + * @deprecated 3.5.0 Use `Plugin::$instance->uploads_manager->get_file_type_handlers( 'svg' )->delete_meta_cache()->sanitize_svg()` instead. + * + * @param $filename + * + * @return bool + */ + public function sanitize_svg( $filename ) { + Plugin::$instance->modules_manager->get_modules( 'dev-tools' )->deprecation->deprecated_function( __METHOD__, '3.5.0', 'Plugin::$instance->uploads_manager->get_file_type_handlers( \'svg\' )->delete_meta_cache()->sanitize_svg()' ); + + /** @var Svg $svg_handler */ + $svg_handler = Plugin::$instance->uploads_manager->get_file_type_handlers( 'svg' ); + + return $svg_handler->sanitize_svg( $filename ); + } + + /** + * sanitizer + * + * @deprecated 3.5.0 Use `Plugin::$instance->uploads_manager->get_file_type_handlers( 'svg' )->sanitizer()` instead. + * + * @param $content + * + * @return bool|string + */ + public function sanitizer( $content ) { + Plugin::$instance->modules_manager->get_modules( 'dev-tools' )->deprecation->deprecated_function( __METHOD__, '3.5.0', 'Plugin::$instance->uploads_manager->get_file_type_handlers( \'svg\' )->sanitizer()' ); + + /** @var Svg $svg_handler */ + $svg_handler = Plugin::$instance->uploads_manager->get_file_type_handlers( 'svg' ); + + return $svg_handler->sanitizer( $content ); + } + + /** + * wp_prepare_attachment_for_js + * + * @deprecated 3.5.0 Use `Plugin::$instance->uploads_manager->get_file_type_handlers( 'svg' )->wp_prepare_attachment_for_js()` instead. + * + * @param $attachment_data + * @param $attachment + * @param $meta + * + * @return mixed + */ + public function wp_prepare_attachment_for_js( $attachment_data, $attachment, $meta ) { + Plugin::$instance->modules_manager->get_modules( 'dev-tools' )->deprecation->deprecated_function( __METHOD__, '3.5.0', 'Plugin::$instance->uploads_manager->get_file_type_handlers( \'svg\' )->wp_prepare_attachment_for_js()' ); + + /** @var Svg $svg_handler */ + $svg_handler = Plugin::$instance->uploads_manager->get_file_type_handlers( 'svg' ); + + return $svg_handler->wp_prepare_attachment_for_js( $attachment_data, $attachment, $meta ); + } + + /** + * set_attachment_id + * + * @deprecated 3.5.0 + * + * @param $attachment_id + * + * @return int + */ + public function set_attachment_id( $attachment_id ) { + Plugin::$instance->modules_manager->get_modules( 'dev-tools' )->deprecation->deprecated_function( __METHOD__, '3.5.0' ); + + $this->attachment_id = $attachment_id; + return $this->attachment_id; + } + + /** + * get_attachment_id + * + * @deprecated 3.5.0 + * + * @return int + */ + public function get_attachment_id() { + Plugin::$instance->modules_manager->get_modules( 'dev-tools' )->deprecation->deprecated_function( __METHOD__, '3.5.0' ); + + return $this->attachment_id; + } + + /** + * set_svg_meta_data + * + * @deprecated 3.5.0 Use `Plugin::$instance->uploads_manager->get_file_type_handlers( 'svg' )->set_svg_meta_data()` instead. + * + * @return mixed + */ + public function set_svg_meta_data( $data, $id ) { + Plugin::$instance->modules_manager->get_modules( 'dev-tools' )->deprecation->deprecated_function( __METHOD__, '3.5.0', 'Plugin::$instance->uploads_manager->get_file_type_handlers( \'svg\' )->set_svg_meta_data()' ); + + /** @var Svg $svg_handler */ + $svg_handler = Plugin::$instance->uploads_manager->get_file_type_handlers( 'svg' ); + + return $svg_handler->set_svg_meta_data( $data, $id ); + } + + /** + * handle_upload_prefilter + * + * @deprecated 3.5.0 Use `Elementor\Plugin::$instance->uploads_manager->handle_elementor_wp_media_upload()` instead. + * + * @param $file + * + * @return mixed + */ + public function handle_upload_prefilter( $file ) { + Plugin::$instance->modules_manager->get_modules( 'dev-tools' )->deprecation->deprecated_function( __METHOD__, '3.5.0', 'Elementor\Plugin::$instance->uploads_manager->handle_elementor_wp_media_upload()' ); + + return Plugin::$instance->uploads_manager->handle_elementor_wp_media_upload( $file ); + } +} diff --git a/wp-content/plugins/elementor/core/files/base.php b/wp-content/plugins/elementor/core/files/base.php new file mode 100644 index 0000000..6c24154 --- /dev/null +++ b/wp-content/plugins/elementor/core/files/base.php @@ -0,0 +1,318 @@ +files_manager->get( get_called_class(), func_get_args() ); + } + + /** + * @since 2.1.0 + * @access public + */ + public function __construct( $file_name ) { + /** + * Elementor File Name + * + * Filters the File name + * + * @since 2.3.0 + * + * @param string $file_name + * @param object $this The file instance, which inherits Elementor\Core\Files + */ + $file_name = apply_filters( 'elementor/files/file_name', $file_name, $this ); + + $this->set_file_name( $file_name ); + + $this->set_files_dir( static::DEFAULT_FILES_DIR ); + + $this->set_path(); + } + + /** + * @since 2.1.0 + * @access public + */ + public function set_files_dir( $files_dir ) { + $this->files_dir = $files_dir; + } + + /** + * @since 2.1.0 + * @access public + */ + public function set_file_name( $file_name ) { + $this->file_name = $file_name; + } + + /** + * @since 2.1.0 + * @access public + */ + public function get_file_name() { + return $this->file_name; + } + + /** + * @since 2.1.0 + * @access public + */ + public function get_url() { + $url = set_url_scheme( self::get_base_uploads_url() . $this->files_dir . $this->file_name ); + + return add_query_arg( [ 'ver' => $this->get_meta( 'time' ) ], $url ); + } + + /** + * Get Path + * + * Returns the local path of the generated file. + * + * @since 3.5.0 + * @access public + * + * @return string + */ + public function get_path() { + return set_url_scheme( self::get_base_uploads_dir() . $this->files_dir . $this->file_name ); + } + + /** + * @since 2.1.0 + * @access public + */ + public function get_content() { + if ( ! $this->content ) { + $this->content = $this->parse_content(); + } + + return $this->content; + } + + /** + * @since 2.1.0 + * @access public + */ + public function update() { + $this->update_file(); + + $meta = $this->get_meta(); + + $meta['time'] = time(); + + $this->update_meta( $meta ); + } + + /** + * @since 2.1.0 + * @access public + */ + public function update_file() { + $this->content = $this->parse_content(); + + if ( $this->content ) { + $this->write(); + } else { + $this->delete(); + } + } + + /** + * @since 2.1.0 + * @access public + */ + public function write() { + return file_put_contents( $this->path, $this->content ); + } + + /** + * @since 2.1.0 + * @access public + */ + public function delete() { + if ( file_exists( $this->path ) ) { + unlink( $this->path ); + } + + $this->delete_meta(); + } + + /** + * Get meta data. + * + * Retrieve the CSS file meta data. Returns an array of all the data, or if + * custom property is given it will return the property value, or `null` if + * the property does not exist. + * + * @since 2.1.0 + * @access public + * + * @param string $property Optional. Custom meta data property. Default is + * null. + * + * @return array|null An array of all the data, or if custom property is + * given it will return the property value, or `null` if + * the property does not exist. + */ + public function get_meta( $property = null ) { + $meta = array_merge( $this->get_default_meta(), (array) $this->load_meta() ); + + if ( $property ) { + return isset( $meta[ $property ] ) ? $meta[ $property ] : null; + } + + return $meta; + } + + /** + * @since 2.1.0 + * @access protected + * @abstract + */ + abstract protected function parse_content(); + + /** + * Load meta. + * + * Retrieve the file meta data. + * + * @since 2.1.0 + * @access protected + */ + protected function load_meta() { + return get_option( static::META_KEY ); + } + + /** + * Update meta. + * + * Update the file meta data. + * + * @since 2.1.0 + * @access protected + * + * @param array $meta New meta data. + */ + protected function update_meta( $meta ) { + update_option( static::META_KEY, $meta ); + } + + /** + * Delete meta. + * + * Delete the file meta data. + * + * @since 2.1.0 + * @access protected + */ + protected function delete_meta() { + delete_option( static::META_KEY ); + } + + /** + * @since 2.1.0 + * @access protected + */ + protected function get_default_meta() { + return [ + 'time' => 0, + ]; + } + + /** + * @since 2.1.0 + * @access private + * @static + */ + private static function get_wp_uploads_dir() { + global $blog_id; + if ( empty( self::$wp_uploads_dir[ $blog_id ] ) ) { + self::$wp_uploads_dir[ $blog_id ] = wp_upload_dir( null, false ); + } + + return self::$wp_uploads_dir[ $blog_id ]; + } + + /** + * @since 2.1.0 + * @access private + */ + private function set_path() { + $dir_path = self::get_base_uploads_dir() . $this->files_dir; + + if ( ! is_dir( $dir_path ) ) { + wp_mkdir_p( $dir_path ); + } + + $this->path = $dir_path . $this->file_name; + } +} diff --git a/wp-content/plugins/elementor/core/files/css/base.php b/wp-content/plugins/elementor/core/files/css/base.php new file mode 100644 index 0000000..0ecfca0 --- /dev/null +++ b/wp-content/plugins/elementor/core/files/css/base.php @@ -0,0 +1,1015 @@ +update_file(); + + $meta = $this->get_meta(); + + $meta['time'] = time(); + + $content = $this->get_content(); + + if ( empty( $content ) ) { + $meta['status'] = self::CSS_STATUS_EMPTY; + $meta['css'] = ''; + } else { + $use_external_file = $this->use_external_file(); + + if ( $use_external_file ) { + $meta['status'] = self::CSS_STATUS_FILE; + } else { + $meta['status'] = self::CSS_STATUS_INLINE; + $meta['css'] = $content; + } + } + + $meta['dynamic_elements_ids'] = $this->dynamic_elements_ids; + + $this->update_meta( $meta ); + } + + /** + * @since 2.1.0 + * @access public + */ + public function write() { + if ( $this->use_external_file() ) { + parent::write(); + } + } + + /** + * @since 3.0.0 + * @access public + */ + public function delete() { + if ( $this->use_external_file() ) { + parent::delete(); + } else { + $this->delete_meta(); + } + } + + /** + * Get Responsive Control Duplication Mode + * + * @since 3.4.0 + * + * @return string + */ + protected function get_responsive_control_duplication_mode() { + return 'on'; + } + + /** + * Enqueue CSS. + * + * Either enqueue the CSS file in Elementor or add inline style. + * + * This method is also responsible for loading the fonts. + * + * @since 1.2.0 + * @access public + */ + public function enqueue() { + $handle_id = $this->get_file_handle_id(); + + if ( isset( self::$printed[ $handle_id ] ) ) { + return; + } + + self::$printed[ $handle_id ] = true; + + $meta = $this->get_meta(); + + if ( self::CSS_STATUS_EMPTY === $meta['status'] ) { + return; + } + + /** + * Enqueue CSS file. + * + * Fires before enqueuing a CSS file. + * + * @param Base $this The current CSS file. + */ + do_action( 'elementor/css-file/before_enqueue', $this ); + + // First time after clear cache and etc. + if ( '' === $meta['status'] || $this->is_update_required() ) { + $this->update(); + + $meta = $this->get_meta(); + } + + if ( self::CSS_STATUS_INLINE === $meta['status'] ) { + $dep = $this->get_inline_dependency(); + // If the dependency has already been printed ( like a template in footer ) + if ( wp_styles()->query( $dep, 'done' ) ) { + printf( '', $this->get_file_handle_id(), $meta['css'] ); // XSS ok. + } else { + wp_add_inline_style( $dep, $meta['css'] ); + } + } elseif ( self::CSS_STATUS_FILE === $meta['status'] ) { // Re-check if it's not empty after CSS update. + wp_enqueue_style( $this->get_file_handle_id(), $this->get_url(), $this->get_enqueue_dependencies(), null ); // phpcs:ignore WordPress.WP.EnqueuedResourceParameters.MissingVersion + } + + // Handle fonts. + if ( ! empty( $meta['fonts'] ) ) { + foreach ( $meta['fonts'] as $font ) { + Plugin::$instance->frontend->enqueue_font( $font ); + } + } + + if ( ! empty( $meta['icons'] ) ) { + $icons_types = Icons_Manager::get_icon_manager_tabs(); + foreach ( $meta['icons'] as $icon_font ) { + if ( ! isset( $icons_types[ $icon_font ] ) ) { + continue; + } + Plugin::$instance->frontend->enqueue_font( $icon_font ); + } + } + + $name = $this->get_name(); + + /** + * Enqueue CSS file. + * + * Fires when CSS file is enqueued on Elementor. + * + * The dynamic portion of the hook name, `$name`, refers to the CSS file name. + * + * @since 2.0.0 + * + * @param Base $this The current CSS file. + */ + do_action( "elementor/css-file/{$name}/enqueue", $this ); + + /** + * Enqueue CSS file. + * + * Fires after enqueuing a CSS file. + * + * @param Base $this The current CSS file. + */ + do_action( 'elementor/css-file/after_enqueue', $this ); + } + + /** + * Print CSS. + * + * Output the final CSS inside the `'; // XSS ok. + Plugin::$instance->frontend->print_fonts_links(); + } + + /** + * Add control rules. + * + * Parse the CSS for all the elements inside any given control. + * + * This method recursively renders the CSS for all the selectors in the control. + * + * @since 1.2.0 + * @access public + * + * @param array $control The controls. + * @param array $controls_stack The controls stack. + * @param callable $value_callback Callback function for the value. + * @param array $placeholders Placeholders. + * @param array $replacements Replacements. + * @param array $values Global Values. + */ + public function add_control_rules( array $control, array $controls_stack, callable $value_callback, array $placeholders, array $replacements, array $values = [] ) { + if ( empty( $control['selectors'] ) ) { + return; + } + + $control_global_key = $control['name']; + + if ( ! empty( $control['groupType'] ) ) { + $control_global_key = $control['groupPrefix'] . $control['groupType']; + } + + $global_values = []; + $global_key = ''; + + if ( ! empty( $values['__globals__'] ) ) { + $global_values = $values['__globals__']; + } + + if ( ! empty( $global_values[ $control_global_key ] ) ) { + $global_key = $global_values[ $control_global_key ]; + } + + if ( ! $global_key ) { + $value = call_user_func( $value_callback, $control ); + + if ( null === $value ) { + return; + } + } + + $stylesheet = $this->get_stylesheet(); + + $control = apply_filters( 'elementor/files/css/selectors', $control, $value ?? [], $this ); + + foreach ( $control['selectors'] as $selector => $css_property ) { + $output_css_property = ''; + + if ( $global_key ) { + $selector_global_value = $this->get_selector_global_value( $control, $global_key ); + + if ( $selector_global_value ) { + $output_css_property = preg_replace( '/(:)[^;]+(;?)/', '$1' . $selector_global_value . '$2', $css_property ); + } + } else { + try { + if ( $this->unit_has_custom_selector( $control, $value ) ) { + $css_property = $control['unit_selectors_dictionary'][ $value['unit'] ]; + } + + $output_css_property = preg_replace_callback( '/{{(?:([^.}]+)\.)?([^}| ]*)(?: *\|\| *(?:([^.}]+)\.)?([^}| ]*) *)*}}/', function( $matches ) use ( $control, $value_callback, $controls_stack, $value, $css_property ) { + $external_control_missing = $matches[1] && ! isset( $controls_stack[ $matches[1] ] ); + + $parsed_value = ''; + + $value = apply_filters( 'elementor/files/css/property', $value, $css_property, $matches, $control ); + + if ( ! $external_control_missing ) { + $parsed_value = $this->parse_property_placeholder( $control, $value, $controls_stack, $value_callback, $matches[2], $matches[1] ); + } + + if ( '' === $parsed_value ) { + if ( isset( $matches[4] ) ) { + $parsed_value = $matches[4]; + + $is_string_value = preg_match( '/^([\'"])(.*)\1$/', $parsed_value, $string_matches ); + + if ( $is_string_value ) { + $parsed_value = $string_matches[2]; + } elseif ( ! is_numeric( $parsed_value ) ) { + if ( $matches[3] && ! isset( $controls_stack[ $matches[3] ] ) ) { + return ''; + } + + $parsed_value = $this->parse_property_placeholder( $control, $value, $controls_stack, $value_callback, $matches[4], $matches[3] ); + } + } + + if ( '' === $parsed_value ) { + if ( $external_control_missing ) { + return ''; + } + + throw new \Exception(); + } + } + + if ( '__EMPTY__' === $parsed_value ) { + $parsed_value = ''; + } + + return $parsed_value; + }, $css_property ); + } catch ( \Exception $e ) { + return; + } + } + + if ( ! $output_css_property ) { + continue; + } + + $device_pattern = '/^(?:\([^\)]+\)){1,2}/'; + + preg_match( $device_pattern, $selector, $device_rules ); + + $query = []; + + if ( $device_rules ) { + $selector = preg_replace( $device_pattern, '', $selector ); + + preg_match_all( '/\(([^)]+)\)/', $device_rules[0], $pure_device_rules ); + + $pure_device_rules = $pure_device_rules[1]; + + foreach ( $pure_device_rules as $device_rule ) { + if ( Breakpoints_Manager::BREAKPOINT_KEY_DESKTOP === $device_rule ) { + continue; + } + + $device = preg_replace( '/\+$/', '', $device_rule ); + + $endpoint = $device === $device_rule ? 'max' : 'min'; + + $query[ $endpoint ] = $device; + } + } + + $parsed_selector = str_replace( $placeholders, $replacements, $selector ); + + if ( ! $query && ! empty( $control['responsive'] ) ) { + $query = array_intersect_key( $control['responsive'], array_flip( [ 'min', 'max' ] ) ); + + if ( ! empty( $query['max'] ) && Breakpoints_Manager::BREAKPOINT_KEY_DESKTOP === $query['max'] ) { + unset( $query['max'] ); + } + } + + $stylesheet->add_rules( $parsed_selector, $output_css_property, $query ); + } + } + + protected function unit_has_custom_selector( $control, $value ) { + return isset( $control['unit_selectors_dictionary'] ) && isset( $control['unit_selectors_dictionary'][ $value['unit'] ] ); + } + + /** + * @param array $control + * @param mixed $value + * @param array $controls_stack + * @param callable $value_callback + * @param string $placeholder + * @param string $parser_control_name + * + * @return string + */ + public function parse_property_placeholder( array $control, $value, array $controls_stack, $value_callback, $placeholder, $parser_control_name = null ) { + if ( $parser_control_name ) { + // If both the processed control and the control name found in the placeholder are responsive + if ( ! empty( $control['responsive'] ) && ! empty( $controls_stack[ $parser_control_name ]['responsive'] ) ) { + $device_suffix = Controls_Manager::get_responsive_control_device_suffix( $control ); + + $control = $controls_stack[ $parser_control_name . $device_suffix ] ?? $controls_stack[ $parser_control_name ]; + } else { + $control = $controls_stack[ $parser_control_name ]; + } + + $value = call_user_func( $value_callback, $control ); + } + + // If the control value is empty, check for global default. `0` (integer, string) are falsy but are valid values. + if ( empty( $value ) && '0' !== $value && 0 !== $value ) { + $value = $this->get_control_global_default_value( $control ); + } + + if ( Controls_Manager::FONT === $control['type'] ) { + $this->fonts[] = $value; + } + + /** @var Base_Data_Control $control_obj */ + $control_obj = Plugin::$instance->controls_manager->get_control( $control['type'] ); + + return (string) $control_obj->get_style_value( $placeholder, $value, $control ); + } + + /** + * Get the fonts. + * + * Retrieve the list of fonts. + * + * @since 1.9.0 + * @access public + * + * @return array Fonts. + */ + public function get_fonts() { + return $this->fonts; + } + + /** + * Get stylesheet. + * + * Retrieve the CSS file stylesheet instance. + * + * @since 1.2.0 + * @access public + * + * @return Stylesheet The stylesheet object. + */ + public function get_stylesheet() { + if ( ! $this->stylesheet_obj ) { + $this->init_stylesheet(); + } + + return $this->stylesheet_obj; + } + + /** + * Add controls stack style rules. + * + * Parse the CSS for all the elements inside any given controls stack. + * + * This method recursively renders the CSS for all the child elements in the stack. + * + * @since 1.6.0 + * @access public + * + * @param Controls_Stack $controls_stack The controls stack. + * @param array $controls Controls array. + * @param array $values Values array. + * @param array $placeholders Placeholders. + * @param array $replacements Replacements. + * @param array $all_controls All controls. + */ + public function add_controls_stack_style_rules( Controls_Stack $controls_stack, array $controls, array $values, array $placeholders, array $replacements, array $all_controls = null ) { + if ( ! $all_controls ) { + $all_controls = $controls_stack->get_controls(); + } + + $parsed_dynamic_settings = $controls_stack->parse_dynamic_settings( $values, $controls ); + + foreach ( $controls as $control ) { + if ( ! empty( $control['style_fields'] ) ) { + $this->add_repeater_control_style_rules( $controls_stack, $control, $values[ $control['name'] ], $placeholders, $replacements ); + } + + if ( ! empty( $control[ Manager::DYNAMIC_SETTING_KEY ][ $control['name'] ] ) ) { + $this->add_dynamic_control_style_rules( $control, $control[ Manager::DYNAMIC_SETTING_KEY ][ $control['name'] ] ); + } + + if ( Controls_Manager::ICONS === $control['type'] ) { + $this->icons_fonts[] = $values[ $control['name'] ]['library']; + } + + if ( ! empty( $parsed_dynamic_settings[ Manager::DYNAMIC_SETTING_KEY ][ $control['name'] ] ) ) { + // Dynamic CSS should not be added to the CSS files. + // Instead it's handled by \Elementor\Core\DynamicTags\Dynamic_CSS + // and printed in a style tag. + unset( $parsed_dynamic_settings[ $control['name'] ] ); + + $this->dynamic_elements_ids[] = $controls_stack->get_id(); + + continue; + } + + if ( empty( $control['selectors'] ) ) { + continue; + } + + $this->add_control_style_rules( $control, $parsed_dynamic_settings, $all_controls, $placeholders, $replacements ); + } + } + + /** + * Get file handle ID. + * + * Retrieve the file handle ID. + * + * @since 1.2.0 + * @access protected + * @abstract + * + * @return string CSS file handle ID. + */ + abstract protected function get_file_handle_id(); + + /** + * Render CSS. + * + * Parse the CSS. + * + * @since 1.2.0 + * @access protected + * @abstract + */ + abstract protected function render_css(); + + protected function get_default_meta() { + return array_merge( parent::get_default_meta(), [ + 'fonts' => array_unique( $this->fonts ), + 'icons' => array_unique( $this->icons_fonts ), + 'dynamic_elements_ids' => [], + 'status' => '', + ] ); + } + + /** + * Get enqueue dependencies. + * + * Retrieve the name of the stylesheet used by `wp_enqueue_style()`. + * + * @since 1.2.0 + * @access protected + * + * @return array Name of the stylesheet. + */ + protected function get_enqueue_dependencies() { + return []; + } + + /** + * Get inline dependency. + * + * Retrieve the name of the stylesheet used by `wp_add_inline_style()`. + * + * @since 1.2.0 + * @access protected + * + * @return string Name of the stylesheet. + */ + protected function get_inline_dependency() { + return ''; + } + + /** + * Is update required. + * + * Whether the CSS requires an update. When there are new schemes or settings + * updates. + * + * @since 1.2.0 + * @access protected + * + * @return bool True if the CSS requires an update, False otherwise. + */ + protected function is_update_required() { + return false; + } + + /** + * Parse CSS. + * + * Parsing the CSS file. + * + * @since 1.2.0 + * @access protected + */ + protected function parse_content() { + $initial_responsive_controls_duplication_mode = Plugin::$instance->breakpoints->get_responsive_control_duplication_mode(); + + Plugin::$instance->breakpoints->set_responsive_control_duplication_mode( $this->get_responsive_control_duplication_mode() ); + + $this->render_css(); + + $name = $this->get_name(); + + /** + * Parse CSS file. + * + * Fires when CSS file is parsed on Elementor. + * + * The dynamic portion of the hook name, `$name`, refers to the CSS file name. + * + * @since 2.0.0 + * + * @param Base $this The current CSS file. + */ + do_action( "elementor/css-file/{$name}/parse", $this ); + + Plugin::$instance->breakpoints->set_responsive_control_duplication_mode( $initial_responsive_controls_duplication_mode ); + + return $this->get_stylesheet()->__toString(); + } + + /** + * Add control style rules. + * + * Register new style rules for the control. + * + * @since 1.6.0 + * @access private + * + * @param array $control The control. + * @param array $values Values array. + * @param array $controls The controls stack. + * @param array $placeholders Placeholders. + * @param array $replacements Replacements. + */ + protected function add_control_style_rules( array $control, array $values, array $controls, array $placeholders, array $replacements ) { + $this->add_control_rules( + $control, $controls, function( $control ) use ( $values ) { + return $this->get_style_control_value( $control, $values ); + }, $placeholders, $replacements, $values + ); + } + + /** + * Get Control Global Default Value + * + * If the control has a global default value, and the corresponding global default setting is enabled, this method + * fetches and returns the global default value. Otherwise, it returns null. + * + * @since 3.7.0 + * @access private + * + * @param $control + * @return string|null + */ + private function get_control_global_default_value( $control ) { + if ( empty( $control['global']['default'] ) ) { + return null; + } + + // If the control value is empty, and the control has a global default set, fetch the global value and use it. + $global_enabled = false; + + if ( 'color' === $control['type'] ) { + $global_enabled = Plugin::$instance->kits_manager->is_custom_colors_enabled(); + } elseif ( isset( $control['groupType'] ) && 'typography' === $control['groupType'] ) { + $global_enabled = Plugin::$instance->kits_manager->is_custom_typography_enabled(); + } + + $value = null; + + // Only apply the global default if Global Colors are enabled. + if ( $global_enabled ) { + $value = $this->get_selector_global_value( $control, $control['global']['default'] ); + } + + return $value; + } + + /** + * Get style control value. + * + * Retrieve the value of the style control for any give control and values. + * + * It will retrieve the control name and return the style value. + * + * @since 1.6.0 + * @access private + * + * @param array $control The control. + * @param array $values Values array. + * + * @return mixed Style control value. + */ + private function get_style_control_value( array $control, array $values ) { + if ( ! empty( $values['__globals__'][ $control['name'] ] ) ) { + // When the control itself has no global value, but it refers to another control global value + return $this->get_selector_global_value( $control, $values['__globals__'][ $control['name'] ] ); + } + + $value = $values[ $control['name'] ]; + + if ( isset( $control['selectors_dictionary'][ $value ] ) ) { + $value = $control['selectors_dictionary'][ $value ]; + } + + if ( ! is_numeric( $value ) && ! is_float( $value ) && empty( $value ) ) { + return null; + } + + return $value; + } + + /** + * Init stylesheet. + * + * Initialize CSS file stylesheet by creating a new `Stylesheet` object and register new + * breakpoints for the stylesheet. + * + * @since 1.2.0 + * @access private + */ + private function init_stylesheet() { + $this->stylesheet_obj = new Stylesheet(); + + $active_breakpoints = Plugin::$instance->breakpoints->get_active_breakpoints(); + + foreach ( $active_breakpoints as $breakpoint_name => $breakpoint ) { + $this->stylesheet_obj->add_device( $breakpoint_name, $breakpoint->get_value() ); + } + } + + /** + * Add repeater control style rules. + * + * Register new style rules for the repeater control. + * + * @since 2.0.0 + * @access private + * + * @param Controls_Stack $controls_stack The control stack. + * @param array $repeater_control The repeater control. + * @param array $repeater_values Repeater values array. + * @param array $placeholders Placeholders. + * @param array $replacements Replacements. + */ + protected function add_repeater_control_style_rules( Controls_Stack $controls_stack, array $repeater_control, array $repeater_values, array $placeholders, array $replacements ) { + $placeholders = array_merge( $placeholders, [ '{{CURRENT_ITEM}}' ] ); + + foreach ( $repeater_control['style_fields'] as $index => $item ) { + $this->add_controls_stack_style_rules( + $controls_stack, + $item, + $repeater_values[ $index ], + $placeholders, + array_merge( $replacements, [ '.elementor-repeater-item-' . $repeater_values[ $index ]['_id'] ] ), + $repeater_control['fields'] + ); + } + } + + /** + * Add dynamic control style rules. + * + * Register new style rules for the dynamic control. + * + * @since 2.0.0 + * @access private + * + * @param array $control The control. + * @param string $value The value. + */ + protected function add_dynamic_control_style_rules( array $control, $value ) { + Plugin::$instance->dynamic_tags->parse_tags_text( $value, $control, function( $id, $name, $settings ) { + $tag = Plugin::$instance->dynamic_tags->create_tag( $id, $name, $settings ); + + if ( ! $tag instanceof Tag ) { + return; + } + + $this->add_controls_stack_style_rules( $tag, $this->get_style_controls( $tag ), $tag->get_active_settings(), [ '{{WRAPPER}}' ], [ '#elementor-tag-' . $id ] ); + } ); + } + + private function get_selector_global_value( $control, $global_key ) { + $data = Plugin::$instance->data_manager_v2->run( $global_key ); + + if ( empty( $data['value'] ) ) { + return null; + } + + $global_args = explode( '?id=', $global_key ); + + $id = $global_args[1]; + + if ( ! empty( $control['groupType'] ) ) { + $strings_to_replace = [ $control['groupPrefix'] ]; + + $active_breakpoint_keys = array_keys( Plugin::$instance->breakpoints->get_active_breakpoints() ); + + foreach ( $active_breakpoint_keys as $breakpoint ) { + $strings_to_replace[] = '_' . $breakpoint; + } + + $property_name = str_replace( $strings_to_replace, '', $control['name'] ); + + // TODO: This check won't retrieve the proper answer for array values (multiple controls). + if ( empty( $data['value'][ Global_Typography::TYPOGRAPHY_GROUP_PREFIX . $property_name ] ) ) { + return null; + } + + $property_name = str_replace( '_', '-', $property_name ); + + $value = "var( --e-global-$control[groupType]-$id-$property_name )"; + + if ( $control['groupPrefix'] . 'font_family' === $control['name'] ) { + $default_generic_fonts = Plugin::$instance->kits_manager->get_current_settings( 'default_generic_fonts' ); + + if ( $default_generic_fonts ) { + $value .= ", $default_generic_fonts"; + } + } + } else { + $value = "var( --e-global-$control[type]-$id )"; + } + + return $value; + } + + final protected function get_active_controls( Controls_Stack $controls_stack, array $controls = null, array $settings = null ) { + if ( ! $controls ) { + $controls = $controls_stack->get_controls(); + } + + if ( ! $settings ) { + $settings = $controls_stack->get_controls_settings(); + } + + if ( $this->is_global_parsing_supported() ) { + $settings = $this->parse_global_settings( $settings, $controls ); + } + + $active_controls = array_reduce( + array_keys( $controls ), function( $active_controls, $control_key ) use ( $controls_stack, $controls, $settings ) { + $control = $controls[ $control_key ]; + + if ( $controls_stack->is_control_visible( $control, $settings, $controls ) ) { + $active_controls[ $control_key ] = $control; + } + + return $active_controls; + }, [] + ); + + return $active_controls; + } + + final public function get_style_controls( Controls_Stack $controls_stack, array $controls = null, array $settings = null ) { + $controls = $this->get_active_controls( $controls_stack, $controls, $settings ); + + $style_controls = []; + + foreach ( $controls as $control_name => $control ) { + $control_obj = Plugin::$instance->controls_manager->get_control( $control['type'] ); + + if ( ! $control_obj instanceof Base_Data_Control ) { + continue; + } + + $control = array_merge( $control_obj->get_settings(), $control ); + + if ( $control_obj instanceof Control_Repeater ) { + $style_fields = []; + + foreach ( $controls_stack->get_settings( $control_name ) as $item ) { + $style_fields[] = $this->get_style_controls( $controls_stack, $control['fields'], $item ); + } + + $control['style_fields'] = $style_fields; + } + + if ( ! empty( $control['selectors'] ) || ! empty( $control['dynamic'] ) || $this->is_global_control( $controls_stack, $control_name, $controls ) || ! empty( $control['style_fields'] ) ) { + $style_controls[ $control_name ] = $control; + } + } + + return $style_controls; + } + + private function parse_global_settings( array $settings, array $controls ) { + foreach ( $controls as $control ) { + $control_name = $control['name']; + $control_obj = Plugin::$instance->controls_manager->get_control( $control['type'] ); + + if ( ! $control_obj instanceof Base_Data_Control ) { + continue; + } + + if ( $control_obj instanceof Control_Repeater ) { + foreach ( $settings[ $control_name ] as & $field ) { + $field = $this->parse_global_settings( $field, $control['fields'] ); + } + + continue; + } + + if ( empty( $control['global']['active'] ) ) { + continue; + } + + if ( empty( $settings['__globals__'][ $control_name ] ) ) { + continue; + } + + $settings[ $control_name ] = 'global'; + } + + return $settings; + } + + private function is_global_control( Controls_Stack $controls_stack, $control_name, $controls ) { + $control = $controls[ $control_name ]; + + $control_global_key = $control_name; + + if ( ! empty( $control['groupType'] ) ) { + $control_global_key = $control['groupPrefix'] . $control['groupType']; + } + + if ( empty( $controls[ $control_global_key ]['global']['active'] ) ) { + return false; + } + + $globals = $controls_stack->get_settings( '__globals__' ); + + return ! empty( $globals[ $control_global_key ] ); + } +} diff --git a/wp-content/plugins/elementor/core/files/css/global-css.php b/wp-content/plugins/elementor/core/files/css/global-css.php new file mode 100644 index 0000000..cd49635 --- /dev/null +++ b/wp-content/plugins/elementor/core/files/css/global-css.php @@ -0,0 +1,159 @@ +render_schemes_and_globals_css(); + } + + /** + * Get inline dependency. + * + * Retrieve the name of the stylesheet used by `wp_add_inline_style()`. + * + * @since 1.2.0 + * @access protected + * + * @return string Name of the stylesheet. + */ + protected function get_inline_dependency() { + return 'elementor-frontend'; + } + + /** + * Is update required. + * + * Whether the CSS requires an update. When there are new schemes or settings + * updates. + * + * @since 1.2.0 + * @access protected + * + * @return bool True if the CSS requires an update, False otherwise. + */ + protected function is_update_required() { + return $this->get_meta( 'time' ) < get_option( Settings::UPDATE_TIME_FIELD ); + } + + /** + * Render schemes CSS. + * + * Parse the CSS for all the widgets and all the scheme controls. + * + * @since 1.2.0 + * @access private + */ + private function render_schemes_and_globals_css() { + $elementor = Plugin::$instance; + + /** @var Manager $module */ + $kits_manager = Plugin::$instance->kits_manager; + $custom_colors_enabled = $kits_manager->is_custom_colors_enabled(); + $custom_typography_enabled = $kits_manager->is_custom_typography_enabled(); + + // If both default colors and typography are disabled, there is no need to render schemes and default global css. + if ( ! $custom_colors_enabled && ! $custom_typography_enabled ) { + return; + } + + foreach ( $elementor->widgets_manager->get_widget_types() as $widget ) { + $controls = $widget->get_controls(); + + $global_controls = []; + + $global_values['__globals__'] = []; + + foreach ( $controls as $control ) { + $is_color_control = 'color' === $control['type']; + $is_typography_control = isset( $control['groupType'] ) && 'typography' === $control['groupType']; + + // If it is a color/typography control and default colors/typography are disabled, + // don't add the default CSS. + if ( ( $is_color_control && ! $custom_colors_enabled ) || ( $is_typography_control && ! $custom_typography_enabled ) ) { + continue; + } + + $global_control = $control; + + // Handle group controls that don't have a default global property. + if ( ! empty( $control['groupType'] ) ) { + $global_control = $controls[ $control['groupPrefix'] . $control['groupType'] ]; + } + + // If the control has a default global defined, add it to the globals array + // that is used in add_control_rules. + if ( ! empty( $control['global']['default'] ) ) { + $global_values['__globals__'][ $control['name'] ] = $global_control['global']['default']; + } + + if ( ! empty( $global_control['global']['default'] ) ) { + $global_controls[] = $control; + } + } + + foreach ( $global_controls as $control ) { + $this->add_control_rules( $control, $controls, function( $control ) {}, [ '{{WRAPPER}}' ], [ '.elementor-widget-' . $widget->get_name() ], $global_values ); + } + } + } +} diff --git a/wp-content/plugins/elementor/core/files/css/post-local-cache.php b/wp-content/plugins/elementor/core/files/css/post-local-cache.php new file mode 100644 index 0000000..97bf8c7 --- /dev/null +++ b/wp-content/plugins/elementor/core/files/css/post-local-cache.php @@ -0,0 +1,43 @@ +meta_cache; + } + + protected function delete_meta() { + $this->meta_cache = []; + } + + protected function update_meta( $meta ) { + $this->meta_cache = $meta; + } + + protected function get_data() { + $document = Plugin::$instance->documents->get( $this->get_post_id_for_data() ); + + return $document ? $document->get_elements_data() : []; + } +} diff --git a/wp-content/plugins/elementor/core/files/css/post-preview.php b/wp-content/plugins/elementor/core/files/css/post-preview.php new file mode 100644 index 0000000..c7e5a96 --- /dev/null +++ b/wp-content/plugins/elementor/core/files/css/post-preview.php @@ -0,0 +1,65 @@ +post_id_for_data = $post_id; + + $parent_id = wp_get_post_parent_id( $post_id ); + + parent::__construct( $parent_id ); + } + + protected function get_post_id_for_data() { + return $this->post_id_for_data; + } + + /** + * Get file handle ID. + * + * Retrieve the handle ID for the previewed post CSS file. + * + * @since 1.9.0 + * @access protected + * + * @return string CSS file handle ID. + */ + protected function get_file_handle_id() { + return 'elementor-preview-' . $this->get_post_id_for_data(); + } +} diff --git a/wp-content/plugins/elementor/core/files/css/post.php b/wp-content/plugins/elementor/core/files/css/post.php new file mode 100644 index 0000000..6190ce3 --- /dev/null +++ b/wp-content/plugins/elementor/core/files/css/post.php @@ -0,0 +1,312 @@ +post_id = $post_id; + + parent::__construct( static::FILE_PREFIX . $post_id . '.css' ); + } + + /** + * Get CSS file name. + * + * Retrieve the CSS file name. + * + * @since 1.6.0 + * @access public + * + * @return string CSS file name. + */ + public function get_name() { + return 'post'; + } + + /** + * Get post ID. + * + * Retrieve the ID of current post. + * + * @since 1.2.0 + * @access public + * + * @return int Post ID. + */ + public function get_post_id() { + return $this->post_id; + } + + /** + * Get unique element selector. + * + * Retrieve the unique selector for any given element. + * + * @since 1.2.0 + * @access public + * + * @param Element_Base $element The element. + * + * @return string Unique element selector. + */ + public function get_element_unique_selector( Element_Base $element ) { + return '.elementor-' . $this->post_id . ' .elementor-element' . $element->get_unique_selector(); + } + + /** + * Load meta data. + * + * Retrieve the post CSS file meta data. + * + * @since 1.2.0 + * @access protected + * + * @return array Post CSS file meta data. + */ + protected function load_meta() { + return get_post_meta( $this->post_id, static::META_KEY, true ); + } + + /** + * Update meta data. + * + * Update the global CSS file meta data. + * + * @since 1.2.0 + * @access protected + * + * @param array $meta New meta data. + */ + protected function update_meta( $meta ) { + update_post_meta( $this->post_id, static::META_KEY, $meta ); + } + + /** + * Delete meta. + * + * Delete the file meta data. + * + * @since 2.1.0 + * @access protected + */ + protected function delete_meta() { + delete_post_meta( $this->post_id, static::META_KEY ); + } + + /** + * Get post data. + * + * Retrieve raw post data from the database. + * + * @since 1.9.0 + * @access protected + * + * @return array Post data. + */ + protected function get_data() { + $document = Plugin::$instance->documents->get( $this->post_id ); + return $document ? $document->get_elements_data() : []; + } + + /** + * Render CSS. + * + * Parse the CSS for all the elements. + * + * @since 1.2.0 + * @access protected + */ + protected function render_css() { + $data = $this->get_data(); + + if ( ! empty( $data ) ) { + foreach ( $data as $element_data ) { + $element = Plugin::$instance->elements_manager->create_element_instance( $element_data ); + + if ( ! $element ) { + continue; + } + + $this->render_styles( $element ); + } + } + } + + /** + * Enqueue CSS. + * + * Enqueue the post CSS file in Elementor. + * + * This method ensures that the post was actually built with elementor before + * enqueueing the post CSS file. + * + * @since 1.2.2 + * @access public + */ + public function enqueue() { + $document = Plugin::$instance->documents->get( $this->post_id ); + + if ( ! $document || ! $document->is_built_with_elementor() ) { + return; + } + + parent::enqueue(); + } + + /** + * Add controls-stack style rules. + * + * Parse the CSS for all the elements inside any given controls stack. + * + * This method recursively renders the CSS for all the child elements in the stack. + * + * @since 1.6.0 + * @access public + * + * @param Controls_Stack $controls_stack The controls stack. + * @param array $controls Controls array. + * @param array $values Values array. + * @param array $placeholders Placeholders. + * @param array $replacements Replacements. + * @param array $all_controls All controls. + */ + public function add_controls_stack_style_rules( Controls_Stack $controls_stack, array $controls, array $values, array $placeholders, array $replacements, array $all_controls = null ) { + parent::add_controls_stack_style_rules( $controls_stack, $controls, $values, $placeholders, $replacements, $all_controls ); + + if ( $controls_stack instanceof Element_Base ) { + foreach ( $controls_stack->get_children() as $child_element ) { + $this->render_styles( $child_element ); + } + } + } + + /** + * Get enqueue dependencies. + * + * Retrieve the name of the stylesheet used by `wp_enqueue_style()`. + * + * @since 1.2.0 + * @access protected + * + * @return array Name of the stylesheet. + */ + protected function get_enqueue_dependencies() { + return [ 'elementor-frontend' ]; + } + + /** + * Get inline dependency. + * + * Retrieve the name of the stylesheet used by `wp_add_inline_style()`. + * + * @since 1.2.0 + * @access protected + * + * @return string Name of the stylesheet. + */ + protected function get_inline_dependency() { + return 'elementor-frontend'; + } + + /** + * Get file handle ID. + * + * Retrieve the handle ID for the post CSS file. + * + * @since 1.2.0 + * @access protected + * + * @return string CSS file handle ID. + */ + protected function get_file_handle_id() { + return 'elementor-post-' . $this->post_id; + } + + /** + * Render styles. + * + * Parse the CSS for any given element. + * + * @since 1.2.0 + * @access protected + * + * @param Element_Base $element The element. + */ + protected function render_styles( Element_Base $element ) { + /** + * Before element parse CSS. + * + * Fires before the CSS of the element is parsed. + * + * @since 1.2.0 + * + * @param Post $this The post CSS file. + * @param Element_Base $element The element. + */ + do_action( 'elementor/element/before_parse_css', $this, $element ); + + $element_settings = $element->get_settings(); + + $this->add_controls_stack_style_rules( $element, $this->get_style_controls( $element, null, $element->get_parsed_dynamic_settings() ), $element_settings, [ '{{ID}}', '{{WRAPPER}}' ], [ $element->get_id(), $this->get_element_unique_selector( $element ) ] ); + + /** + * After element parse CSS. + * + * Fires after the CSS of the element is parsed. + * + * @since 1.2.0 + * + * @param Post $this The post CSS file. + * @param Element_Base $element The element. + */ + do_action( 'elementor/element/parse_css', $this, $element ); + } +} diff --git a/wp-content/plugins/elementor/core/files/file-types/base.php b/wp-content/plugins/elementor/core/files/file-types/base.php new file mode 100644 index 0000000..a6c3ea2 --- /dev/null +++ b/wp-content/plugins/elementor/core/files/file-types/base.php @@ -0,0 +1,70 @@ +sanitize_file( $filename ); + } + + /** + * Validate File + * + * @since 3.3.0 + * @access public + * + * @param $file + * @return bool|\WP_Error + */ + public function validate_file( $file ) { + if ( ! $this->sanitize_svg( $file['tmp_name'] ) ) { + return new \WP_Error( Exceptions::FORBIDDEN, esc_html__( 'This file is not allowed for security reasons.', 'elementor' ) ); + } + + return true; + } + + /** + * Sanitizer + * + * @since 3.5.0 + * @access public + * + * @param $content + * @return bool|string + */ + public function sanitizer( $content ) { + return ( new SVG_Sanitizer() )->sanitize( $content ); + } + + /** + * WP Prepare Attachment For J + * + * Runs on the `wp_prepare_attachment_for_js` filter. + * + * @since 3.5.0 + * @access public + * + * @param $attachment_data + * @param $attachment + * @param $meta + * + * @return mixed + */ + public function wp_prepare_attachment_for_js( $attachment_data, $attachment, $meta ) { + if ( 'image' !== $attachment_data['type'] || 'svg+xml' !== $attachment_data['subtype'] || ! class_exists( 'SimpleXMLElement' ) ) { + return $attachment_data; + } + + $svg = self::get_inline_svg( $attachment->ID ); + + if ( ! $svg ) { + return $attachment_data; + } + + try { + $svg = new \SimpleXMLElement( $svg ); + } catch ( \Exception $e ) { + return $attachment_data; + } + + $src = $attachment_data['url']; + $width = (int) $svg['width']; + $height = (int) $svg['height']; + + // Media Gallery + $attachment_data['image'] = compact( 'src', 'width', 'height' ); + $attachment_data['thumb'] = compact( 'src', 'width', 'height' ); + + // Single Details of Image + $attachment_data['sizes']['full'] = [ + 'height' => $height, + 'width' => $width, + 'url' => $src, + 'orientation' => $height > $width ? 'portrait' : 'landscape', + ]; + return $attachment_data; + } + + /** + * Set Svg Meta Data + * + * Adds dimensions metadata to uploaded SVG files, since WordPress doesn't do it. + * + * @since 3.5.0 + * @access public + * + * @return mixed + */ + public function set_svg_meta_data( $data, $id ) { + $attachment = get_post( $id ); // Filter makes sure that the post is an attachment. + $mime_type = $attachment->post_mime_type; + + // If the attachment is an svg + if ( 'image/svg+xml' === $mime_type ) { + // If the svg metadata are empty or the width is empty or the height is empty. + // then get the attributes from xml. + if ( empty( $data ) || empty( $data['width'] ) || empty( $data['height'] ) ) { + $attachment = wp_get_attachment_url( $id ); + $xml = simplexml_load_file( $attachment ); + + if ( ! empty( $xml ) ) { + $attr = $xml->attributes(); + $view_box = explode( ' ', $attr->viewBox );// phpcs:ignore WordPress.NamingConventions.ValidVariableName.UsedPropertyNotSnakeCase + $data['width'] = isset( $attr->width ) && preg_match( '/\d+/', $attr->width, $value ) ? (int) $value[0] : ( 4 === count( $view_box ) ? (int) $view_box[2] : null ); + $data['height'] = isset( $attr->height ) && preg_match( '/\d+/', $attr->height, $value ) ? (int) $value[0] : ( 4 === count( $view_box ) ? (int) $view_box[3] : null ); + } + } + } + + return $data; + } + + /** + * Delete Meta Cache + * + * Deletes the Inline SVG post meta entry. + * + * @since 3.5.0 + * @access public + */ + public function delete_meta_cache() { + delete_post_meta_by_key( self::META_KEY ); + } + + /** + * File Sanitizer Can Run + * + * Checks if the classes required for the file sanitizer are in memory. + * + * @since 3.5.0 + * @access public + * @static + * + * @return bool + */ + public static function file_sanitizer_can_run() { + return class_exists( 'DOMDocument' ) && class_exists( 'SimpleXMLElement' ); + } + + /** + * Get Inline SVG + * + * @since 3.5.0 + * @access public + * @static + * + * @param $attachment_id + * @return bool|mixed|string + */ + public static function get_inline_svg( $attachment_id ) { + $svg = get_post_meta( $attachment_id, self::META_KEY, true ); + + if ( ! empty( $svg ) ) { + $valid_svg = ( new SVG_Sanitizer() )->sanitize( $svg ); + + return ( false === $valid_svg ) ? '' : $valid_svg; + } + + $attachment_file = get_attached_file( $attachment_id ); + + if ( ! file_exists( $attachment_file ) ) { + return ''; + } + + $svg = Utils::file_get_contents( $attachment_file ); + + $valid_svg = ( new SVG_Sanitizer() )->sanitize( $svg ); + + if ( false === $valid_svg ) { + return ''; + } + + if ( ! empty( $valid_svg ) ) { + update_post_meta( $attachment_id, self::META_KEY, $valid_svg ); + } + + return $valid_svg; + } + + public function __construct() { + add_filter( 'wp_update_attachment_metadata', [ $this, 'set_svg_meta_data' ], 10, 2 ); + add_filter( 'wp_prepare_attachment_for_js', [ $this, 'wp_prepare_attachment_for_js' ], 10, 3 ); + add_action( 'elementor/core/files/clear_cache', [ $this, 'delete_meta_cache' ] ); + } +} diff --git a/wp-content/plugins/elementor/core/files/file-types/zip.php b/wp-content/plugins/elementor/core/files/file-types/zip.php new file mode 100644 index 0000000..9aec37c --- /dev/null +++ b/wp-content/plugins/elementor/core/files/file-types/zip.php @@ -0,0 +1,180 @@ +uploads_manager->create_unique_dir(); + } + + $zip->open( $file_path ); + + // if an array of allowed file types is provided, get the filtered file list to extract. + $allowed_files = $allowed_file_types ? $this->get_allowed_files( $zip, $allowed_file_types ) : null; + + $zip->extractTo( $extraction_directory, $allowed_files ); + + $zip->close(); + + return [ + 'extraction_directory' => $extraction_directory, + 'files' => $this->find_temp_files( $extraction_directory ), + ]; + } + + /** + * Get Allowed Files + * + * Accepts a zipArchive instance and an array of allowed file types. Iterates over the zip archive's files and + * checks if their extensions are in the list of allowed file types. Returns an array containing all valid files. + * + * @since 3.3.0 + * + * @param \ZipArchive $zip + * @param array $allowed_file_types + * @return array + */ + private function get_allowed_files( $zip, $allowed_file_types ) { + $allowed_files = []; + + // phpcs:ignore WordPress.NamingConventions.ValidVariableName.UsedPropertyNotSnakeCase + for ( $i = 0; $i < $zip->numFiles; $i++ ) { + $filename = $zip->getNameIndex( $i ); + $extension = pathinfo( $filename, PATHINFO_EXTENSION ); + + // Skip files with transversal paths. + if ( strpos( $filename, '..' ) !== false ) { + continue; + } + + if ( in_array( $extension, $allowed_file_types, true ) ) { + $allowed_files[] = $filename; + } + } + + return $allowed_files; + } + + /** + * Find temporary files. + * + * Recursively finds a list of temporary files from the extracted zip file. + * + * Example return data: + * + * [ + * 0 => '/www/wp-content/uploads/elementor/tmp/5eb3a7a411d44/templates/block-2-col-marble-title.json', + * 1 => '/www/wp-content/uploads/elementor/tmp/5eb3a7a411d44/templates/block-2-col-text-and-photo.json', + * ] + * + * @since 2.9.8 + * @access private + * + * @param string $temp_path - The temporary file path to scan for template files + * + * @return array An array of temporary files on the filesystem + */ + private function find_temp_files( $temp_path ) { + $file_names = []; + + $possible_file_names = array_diff( scandir( $temp_path ), [ '.', '..' ] ); + + // Find nested files in the unzipped path. This happens for example when the user imports a Website Kit. + foreach ( $possible_file_names as $possible_file_name ) { + $full_possible_file_name = $temp_path . $possible_file_name; + if ( is_dir( $full_possible_file_name ) ) { + $file_names = array_merge( $file_names, $this->find_temp_files( $full_possible_file_name . '/' ) ); + } else { + $file_names[] = $full_possible_file_name; + } + } + + return $file_names; + } +} diff --git a/wp-content/plugins/elementor/core/files/manager.php b/wp-content/plugins/elementor/core/files/manager.php new file mode 100644 index 0000000..f1bf136 --- /dev/null +++ b/wp-content/plugins/elementor/core/files/manager.php @@ -0,0 +1,203 @@ +register_actions(); + } + + public function get( $class, $args ) { + $id = $class . '-' . wp_json_encode( $args ); + + if ( ! isset( $this->files[ $id ] ) ) { + // Create an instance from dynamic args length. + $reflection_class = new \ReflectionClass( $class ); + $this->files[ $id ] = $reflection_class->newInstanceArgs( $args ); + } + + return $this->files[ $id ]; + } + + /** + * On post delete. + * + * Delete post CSS immediately after a post is deleted from the database. + * + * Fired by `deleted_post` action. + * + * @since 1.2.0 + * @access public + * + * @param string $post_id Post ID. + */ + public function on_delete_post( $post_id ) { + if ( ! Utils::is_post_support( $post_id ) ) { + return; + } + + $css_file = Post_CSS::create( $post_id ); + + $css_file->delete(); + } + + /** + * On export post meta. + * + * When exporting data using WXR, skip post CSS file meta key. This way the + * export won't contain the post CSS file data used by Elementor. + * + * Fired by `wxr_export_skip_postmeta` filter. + * + * @since 1.2.0 + * @access public + * + * @param bool $skip Whether to skip the current post meta. + * @param string $meta_key Current meta key. + * + * @return bool Whether to skip the post CSS meta. + */ + public function on_export_post_meta( $skip, $meta_key ) { + if ( Post_CSS::META_KEY === $meta_key ) { + $skip = true; + } + + return $skip; + } + + /** + * Clear cache. + * + * Delete all meta containing files data. And delete the actual + * files from the upload directory. + * + * @since 1.2.0 + * @access public + */ + public function clear_cache() { + // Delete files. + $path = Base::get_base_uploads_dir() . Base::DEFAULT_FILES_DIR . '*'; + + foreach ( glob( $path ) as $file_path ) { + unlink( $file_path ); + } + + delete_post_meta_by_key( Post_CSS::META_KEY ); + + delete_option( Global_CSS::META_KEY ); + delete_option( Frontend::META_KEY ); + + $this->reset_assets_data(); + + /** + * Elementor clear files. + * + * Fires after Elementor clears files + * + * @since 2.1.0 + */ + do_action( 'elementor/core/files/clear_cache' ); + } + + public function clear_custom_image_sizes() { + $upload_info = wp_upload_dir(); + $upload_dir = $upload_info['basedir'] . '/' . BFITHUMB_UPLOAD_DIR; + + $path = $upload_dir . '/*'; + + foreach ( glob( $path ) as $file_path ) { + unlink( $file_path ); + } + } + + /** + * Register Ajax Actions + * + * Deprecated - use the Uploads Manager instead. + * + * @deprecated 3.5.0 + * + * @param Ajax $ajax + */ + public function register_ajax_actions( Ajax $ajax ) { + Plugin::$instance->modules_manager->get_modules( 'dev-tools' )->deprecation->deprecated_function( __METHOD__, '3.5.0' ); + + Plugin::$instance->uploads_manager->register_ajax_actions( $ajax ); + } + + /** + * Ajax Unfiltered Files Upload + * + * Deprecated - use the Uploads Manager instead. + * + * @deprecated 3.5.0 + */ + public function ajax_unfiltered_files_upload() { + Plugin::$instance->modules_manager->get_modules( 'dev-tools' )->deprecation->deprecated_function( __METHOD__, '3.5.0' ); + + Plugin::$instance->uploads_manager->enable_unfiltered_files_upload(); + } + + /** + * Register actions. + * + * Register filters and actions for the files manager. + * + * @since 1.2.0 + * @access private + */ + private function register_actions() { + add_action( 'deleted_post', [ $this, 'on_delete_post' ] ); + + add_filter( 'wxr_export_skip_postmeta', [ $this, 'on_export_post_meta' ], 10, 2 ); + + add_action( 'update_option_home', function () { + $this->reset_assets_data(); + } ); + + add_action( 'update_option_siteurl', function () { + $this->reset_assets_data(); + } ); + } + + /** + * Reset Assets Data. + * + * Reset the page assets data. + * + * @since 3.3.0 + * @access private + */ + private function reset_assets_data() { + delete_option( Page_Assets_Data_Manager::ASSETS_DATA_KEY ); + } +} diff --git a/wp-content/plugins/elementor/core/files/uploads-manager.php b/wp-content/plugins/elementor/core/files/uploads-manager.php new file mode 100644 index 0000000..5b17772 --- /dev/null +++ b/wp-content/plugins/elementor/core/files/uploads-manager.php @@ -0,0 +1,685 @@ + new Json(), + 'zip' => new Zip(), + 'svg' => new Svg(), + ]; + + foreach ( $file_types as $file_type => $file_handler ) { + $this->file_type_handlers[ $file_type ] = $file_handler; + } + } + + /** + * Extract and Validate Zip + * + * This method accepts a $file array (which minimally should include a 'tmp_name') + * + * @since 3.3.0 + * @access public + * + * @param string $file_path + * @param array $allowed_file_types + * @return array|\WP_Error + */ + public function extract_and_validate_zip( $file_path, $allowed_file_types = null ) { + $result = []; + + /** @var Zip $zip_handler - File Type */ + $zip_handler = $this->file_type_handlers['zip']; + + // Returns an array of file paths. + $extracted = $zip_handler->extract( $file_path, $allowed_file_types ); + + if ( is_wp_error( $extracted ) ) { + return $extracted; + } + + // If there are no extracted file names, no files passed the extraction validation. + if ( empty( $extracted['files'] ) ) { + // TODO: Decide what to do if no files passed the extraction validation + return new \WP_Error( 'file_error', self::INVALID_FILE_CONTENT ); + } + + $result['extraction_directory'] = $extracted['extraction_directory']; + + foreach ( $extracted['files'] as $extracted_file_path ) { + // Each file is an array with a 'name' (file path) property. + if ( ! is_wp_error( $this->validate_file( [ 'tmp_name' => $extracted_file_path ] ) ) ) { + $result['files'][] = $extracted_file_path; + } + } + + return $result; + } + + /** + * Handle Elementor Upload + * + * This method receives a $file array. If the received file is a Base64 string, the $file array should include a + * 'fileData' property containing the string, which is decoded and has its contents stored in a temporary file. + * If the $file parameter passed is a standard $file array, the 'name' and 'tmp_name' properties are used for + * validation. + * + * The file goes through validation; if it passes validation, the file is returned. Otherwise, an error is returned. + * + * @since 3.3.0 + * @access public + * + * @param array $data + * @param array $allowed_file_extensions Optional. an array of file types that are allowed to pass validation for each + * upload. + * @return array|\WP_Error + */ + public function handle_elementor_upload( array $data, $allowed_file_extensions = null ) { + // If $file['fileData'] is set, it signals that the passed file is a Base64 string that needs to be decoded and + // saved to a temporary file. + if ( isset( $data['fileData'] ) ) { + $data = $this->save_base64_to_tmp_file( $data, $allowed_file_extensions ); + } + + if ( is_wp_error( $data ) ) { + return $data; + } + + $validation_result = $this->validate_file( $data, $allowed_file_extensions ); + + if ( is_wp_error( $validation_result ) ) { + return $validation_result; + } + + return $data; + } + + /** + * are Unfiltered Uploads Enabled + * + * @since 3.5.0 + * @access public + * + * @return bool + */ + final public static function are_unfiltered_uploads_enabled() { + $enabled = ! ! get_option( self::UNFILTERED_FILE_UPLOADS_KEY ) + && Svg::file_sanitizer_can_run() + && User::is_current_user_can_upload_json(); + + /** + * Allow Unfiltered Files Upload. + * + * Determines whether to enable unfiltered file uploads. + * + * @since 3.0.0 + * + * @param bool $enabled Whether upload is enabled or not. + */ + $enabled = apply_filters( 'elementor/files/allow_unfiltered_upload', $enabled ); + + return $enabled; + } + + /** + * Handle Elementor WP Media Upload + * + * Runs on the 'wp_handle_upload_prefilter' filter. + * + * @since 3.2.0 + * @access public + * + * @param $file + * @return mixed + */ + public function handle_elementor_wp_media_upload( $file ) { + // If it isn't a file uploaded by Elementor, we do not intervene. + if ( ! $this->is_elementor_wp_media_upload() ) { + return $file; + } + + $result = $this->validate_file( $file ); + + if ( is_wp_error( $result ) ) { + $file['error'] = $result->get_error_message(); + } + + return $file; + } + + /** + * Get File Type Handler + * + * Initialize the proper file type handler according to the file extension + * and assign it to the file type handlers array. + * + * @since 3.3.0 + * @access public + * + * @param string|null $file_extension - file extension + * @return File_Type_Base[]|File_Type_Base + */ + public function get_file_type_handlers( $file_extension = null ) { + return self::get_items( $this->file_type_handlers, $file_extension ); + } + + /** + * Check filetype and ext + * + * A workaround for upload validation which relies on a PHP extension (fileinfo) + * with inconsistent reporting behaviour. + * ref: https://core.trac.wordpress.org/ticket/39550 + * ref: https://core.trac.wordpress.org/ticket/40175 + * + * @since 3.5.0 + * @access public + * + * @param $data + * @param $file + * @param $filename + * @param $mimes + * + * @return mixed + */ + public function check_filetype_and_ext( $data, $file, $filename, $mimes ) { + if ( ! empty( $data['ext'] ) && ! empty( $data['type'] ) ) { + return $data; + } + + $wp_file_type = wp_check_filetype( $filename, $mimes ); + + $file_type_handlers = $this->get_file_type_handlers(); + + if ( isset( $file_type_handlers[ $wp_file_type['ext'] ] ) ) { + $file_type_handler = $file_type_handlers[ $wp_file_type['ext'] ]; + + $data['ext'] = $file_type_handler->get_file_extension(); + $data['type'] = $file_type_handler->get_mime_type(); + } + + return $data; + } + + /** + * Remove File Or Directory + * + * Directory is deleted recursively with all of its contents (subdirectories and files). + * + * @since 3.3.0 + * @access public + * + * @param string $path + */ + public function remove_file_or_dir( $path ) { + if ( is_dir( $path ) ) { + $this->remove_directory_with_files( $path ); + } elseif ( is_file( $path ) ) { + unlink( $path ); + } + } + + /** + * Create Temp File + * + * Create a random temporary file. + * + * @since 3.3.0 + * @access public + * + * @param string $file_content + * @param string $file_name + * @return string|\WP_Error + */ + public function create_temp_file( $file_content, $file_name ) { + $file_name = str_replace( ' ', '', sanitize_file_name( $file_name ) ); + + if ( empty( $file_name ) ) { + return new \WP_Error( 'invalid_file_name', esc_html__( 'Invalid file name.', 'elementor' ) ); + } + + $temp_filename = $this->create_unique_dir() . $file_name; + + /** + * Temp File Path + * + * Allows modifying the full path of the temporary file. + * + * @since 3.7.0 + * + * @param string full path to file + */ + $temp_filename = apply_filters( 'elementor/files/temp-file-path', $temp_filename ); + + file_put_contents( $temp_filename, $file_content ); // phpcs:ignore + + return $temp_filename; + } + + /** + * Get Temp Directory + * + * Get the temporary files directory path. If the directory does not exist, this method creates it. + * + * @since 3.3.0 + * @access public + * + * @return string $temp_dir + */ + public function get_temp_dir() { + if ( ! $this->temp_dir ) { + $wp_upload_dir = wp_upload_dir(); + + $temp_dir = implode( DIRECTORY_SEPARATOR, [ $wp_upload_dir['basedir'], 'elementor', 'tmp' ] ) . DIRECTORY_SEPARATOR; + + /** + * Temp File Path + * + * Allows modifying the full path of the temporary file. + * + * @since 3.7.0 + * + * @param string temporary directory + */ + $this->temp_dir = apply_filters( 'elementor/files/temp-dir', $temp_dir ); + + if ( ! is_dir( $this->temp_dir ) ) { + wp_mkdir_p( $this->temp_dir ); + } + } + + return $this->temp_dir; + } + + /** + * Create Unique Temp Dir + * + * Create a unique temporary directory + * + * @since 3.3.0 + * @access public + * + * @return string the new directory path + */ + public function create_unique_dir() { + $unique_dir_path = $this->get_temp_dir() . uniqid() . DIRECTORY_SEPARATOR; + + wp_mkdir_p( $unique_dir_path ); + + return $unique_dir_path; + } + + /** + * Register Ajax Actions + * + * Runs on the 'elementor/ajax/register_actions' hook. Receives the AJAX module as a parameter and registers + * callbacks for specified action IDs. + * + * @since 3.5.0 + * @access public + * + * @param Ajax $ajax + */ + public function register_ajax_actions( Ajax $ajax ) { + $ajax->register_ajax_action( 'enable_unfiltered_files_upload', [ $this, 'enable_unfiltered_files_upload' ] ); + } + + /** + * Set Unfiltered Files Upload + * + * @since 3.5.0 + * @access public + */ + public function enable_unfiltered_files_upload() { + if ( ! current_user_can( 'manage_options' ) ) { + return; + } + + update_option( self::UNFILTERED_FILE_UPLOADS_KEY, 1 ); + } + + /** + * Support Unfiltered File Uploads + * + * When uploading a file within Elementor, this method adds the registered + * file types to WordPress' allowed mimes list. This will only happen if the user allowed unfiltered file uploads + * in Elementor's settings in the admin dashboard. + * + * @since 3.5.0 + * @access public + * + * @param array $allowed_mimes + * @return array allowed mime types + */ + final public function support_unfiltered_elementor_file_uploads( $allowed_mimes ) { + if ( $this->is_elementor_upload() && $this->are_unfiltered_uploads_enabled() ) { + foreach ( $this->file_type_handlers as $file_type_handler ) { + $allowed_mimes[ $file_type_handler->get_file_extension() ] = $file_type_handler->get_mime_type(); + } + } + + return $allowed_mimes; + } + + /** + * Set Elementor Upload State + * + * @since 3.5.0 + * @access public + * + * @param $state + */ + public function set_elementor_upload_state( $state ) { + $this->is_elementor_upload = $state; + } + + /** + * Is Elementor Upload + * + * This method checks if the current session includes a request to upload files made via Elementor. + * + * @since 3.5.0 + * @access private + * + * @return bool + */ + private function is_elementor_upload() { + return $this->is_elementor_upload || $this->is_elementor_media_upload() || $this->is_elementor_wp_media_upload(); + } + + /** + * Is Elementor Media Upload + * + * Checks whether the current request includes uploading files via Elementor which are not destined for the Media + * Library. + * + * @since 3.5.0 + * @access public + * + * @return bool + */ + public function is_elementor_media_upload() { + // Sometimes `uploadTypeCaller` passed as a GET parameter when using the WP Media Library REST API, where the + // whole request body is occupied by the uploaded file. + return isset( $_REQUEST['uploadTypeCaller'] ) && 'elementor-media-upload' === $_REQUEST['uploadTypeCaller']; // phpcs:ignore + } + + /** + * Is Elementor WP Media Upload + * + * Checks whether the current request is a request to upload files into the WP Media Library via Elementor. + * + * @since 3.3.0 + * @access private + * + * @return bool + */ + private function is_elementor_wp_media_upload() { + return isset( $_REQUEST['uploadTypeCaller'] ) && 'elementor-wp-media-upload' === $_REQUEST['uploadTypeCaller']; // phpcs:ignore + } + + /** + * Add File Extension To Allowed Extensions List + * + * @since 3.3.0 + * @access private + * + * @param string $file_type + */ + private function add_file_extension_to_allowed_extensions_list( $file_type ) { + $file_handler = $this->file_type_handlers[ $file_type ]; + + $file_extension = $file_handler->get_file_extension(); + + // Only add the file extension to the list if it doesn't already exist in it. + if ( ! in_array( $file_extension, $this->allowed_file_extensions, true ) ) { + $this->allowed_file_extensions[] = $file_extension; + } + } + + /** + * Save Base64 as File + * + * Saves a Base64 string as a .tmp file in Elementor's temporary files directory. + * + * @since 3.3.0 + * @access private + * + * @param $file + * @param array|null $allowed_file_extensions + * + * @return array|\WP_Error + */ + private function save_base64_to_tmp_file( $file, $allowed_file_extensions = null ) { + if ( empty( $file['fileName'] ) || empty( $file['fileData'] ) ) { + return new \WP_Error( 'file_error', self::INVALID_FILE_CONTENT ); + } + + $file_extension = pathinfo( $file['fileName'], PATHINFO_EXTENSION ); + $is_file_type_allowed = $this->is_file_type_allowed( $file_extension, $allowed_file_extensions ); + + if ( is_wp_error( $is_file_type_allowed ) ) { + return $is_file_type_allowed; + } + + $file_content = base64_decode( $file['fileData'] ); // phpcs:ignore + + // If the decode fails + if ( ! $file_content ) { + return new \WP_Error( 'file_error', self::INVALID_FILE_CONTENT ); + } + + $temp_filename = $this->create_temp_file( $file_content, $file['fileName'] ); + + if ( is_wp_error( $temp_filename ) ) { + return $temp_filename; + } + + return [ + // the original uploaded file name + 'name' => $file['fileName'], + // The path to the temporary file + 'tmp_name' => $temp_filename, + ]; + } + + /** + * Validate File + * + * @since 3.3.0 + * @access private + * + * @param array $file + * @param array $file_extensions Optional + * @return bool|\WP_Error + */ + private function validate_file( array $file, $file_extensions = [] ) { + $uploaded_file_name = isset( $file['name'] ) ? $file['name'] : $file['tmp_name']; + + $file_extension = pathinfo( $uploaded_file_name, PATHINFO_EXTENSION ); + + if ( ! $this->is_elementor_wp_media_upload() ) { + $is_file_type_allowed = $this->is_file_type_allowed( $file_extension, $file_extensions ); + + if ( is_wp_error( $is_file_type_allowed ) ) { + return $is_file_type_allowed; + } + } + + $file_type_handler = $this->get_file_type_handlers( $file_extension ); + + // If Elementor does not have a handler for this file type, don't block it. + if ( ! $file_type_handler ) { + return true; + } + + // If there is a File Type Handler for the uploaded file, it means it is a non-standard file type. In this case, + // we check if unfiltered file uploads are enabled or not before allowing it. + if ( ! self::are_unfiltered_uploads_enabled() ) { + $error = 'json' === $file_extension + ? esc_html__( 'You don\'t have permission to upload JSON files. Contact the administrator.', 'elementor' ) + : esc_html__( 'This file is not allowed for security reasons.', 'elementor' ); + return new \WP_Error( Exceptions::FORBIDDEN, $error ); + } + + // Here is each file type handler's chance to run its own specific validations + return $file_type_handler->validate_file( $file ); + } + + /** + * Is File Type Allowed + * + * Checks whether the passed file extension is allowed for upload. + * + * @since 3.5.0 + * @access private + * + * @param $file_extension + * @param $filtered_file_extensions + * @return bool|\WP_Error + */ + private function is_file_type_allowed( $file_extension, $filtered_file_extensions ) { + $allowed_file_extensions = $this->get_allowed_file_extensions(); + + if ( $filtered_file_extensions ) { + $allowed_file_extensions = array_intersect( $allowed_file_extensions, $filtered_file_extensions ); + } + + $is_allowed = false; + + // Check if the file type (extension) is in the allowed extensions list. If it is a non-standard file type (not + // enabled by default in WordPress) and unfiltered file uploads are not enabled, it will not be in the allowed + // file extensions list. + foreach ( $allowed_file_extensions as $allowed_extension ) { + if ( preg_match( '/' . $allowed_extension . '/', $file_extension ) ) { + $is_allowed = true; + + break; + } + } + + if ( ! $is_allowed ) { + $is_allowed = new \WP_Error( Exceptions::FORBIDDEN, 'Uploading this file type is not allowed.' ); + } + + /** + * Elementor File Type Allowed + * + * Allows setting file types + * + * @since 3.5.0 + * + * @param bool|\WP_Error $is_allowed + */ + return apply_filters( 'elementor/files/allow-file-type/' . $file_extension, $is_allowed ); + } + + /** + * Remove Directory with Files + * + * @since 3.3.0 + * @access private + * + * @param string $dir + * @return bool + */ + private function remove_directory_with_files( $dir ) { + $dir_iterator = new \RecursiveDirectoryIterator( $dir, \RecursiveDirectoryIterator::SKIP_DOTS ); + + foreach ( new \RecursiveIteratorIterator( $dir_iterator, \RecursiveIteratorIterator::CHILD_FIRST ) as $name => $item ) { + if ( is_dir( $name ) ) { + rmdir( $name ); + } elseif ( is_file( $name ) ) { + unlink( $name ); + } + } + + return rmdir( $dir ); + } + + /** + * Get Allowed File Extensions + * + * Retrieve an array containing the list of file extensions allowed for upload. + * + * @since 3.3.0 + * @access private + * + * @return array file extension/s + */ + private function get_allowed_file_extensions() { + if ( ! $this->allowed_file_extensions ) { + $this->allowed_file_extensions = array_keys( get_allowed_mime_types() ); + + foreach ( $this->get_file_type_handlers() as $file_type => $handler ) { + if ( $handler->is_upload_allowed() ) { + // Add the file extension to the allowed extensions list only if unfiltered files upload is enabled. + $this->add_file_extension_to_allowed_extensions_list( $file_type ); + } + } + } + + return $this->allowed_file_extensions; + } + + public function __construct() { + $this->register_file_types(); + + add_filter( 'upload_mimes', [ $this, 'support_unfiltered_elementor_file_uploads' ] ); + add_filter( 'wp_handle_upload_prefilter', [ $this, 'handle_elementor_wp_media_upload' ] ); + add_filter( 'wp_check_filetype_and_ext', [ $this, 'check_filetype_and_ext' ], 10, 4 ); + + // Ajax. + add_action( 'elementor/ajax/register_actions', [ $this, 'register_ajax_actions' ] ); + } +} diff --git a/wp-content/plugins/elementor/core/frontend/render-mode-manager.php b/wp-content/plugins/elementor/core/frontend/render-mode-manager.php new file mode 100644 index 0000000..e297dba --- /dev/null +++ b/wp-content/plugins/elementor/core/frontend/render-mode-manager.php @@ -0,0 +1,159 @@ + $post_id, + self::QUERY_STRING_PARAM_NAME => $render_mode_name, + self::QUERY_STRING_NONCE_PARAM_NAME => wp_create_nonce( self::get_nonce_action( $post_id ) ), + 'ver' => time(), + ], get_permalink( $post_id ) ); + } + + /** + * @param $post_id + * + * @return string + */ + public static function get_nonce_action( $post_id ) { + return str_replace( '{post_id}', $post_id, self::NONCE_ACTION_PATTERN ); + } + + /** + * Register a new render mode into the render mode manager. + * + * @param $class_name + * + * @return $this + * @throws \Exception + */ + public function register_render_mode( $class_name ) { + if ( ! is_subclass_of( $class_name, Render_Mode_Base::class ) ) { + throw new \Exception( "'{$class_name}' must extend 'Render_Mode_Base'." ); + } + + $this->render_modes[ $class_name::get_name() ] = $class_name; + + return $this; + } + + /** + * Get the current render mode. + * + * @return Render_Mode_Base + */ + public function get_current() { + return $this->current; + } + + /** + * @param Render_Mode_Base $render_mode + * + * @return $this + */ + private function set_current( Render_Mode_Base $render_mode ) { + $this->current = $render_mode; + + return $this; + } + + /** + * Set render mode. + * + * @return $this + */ + private function choose_render_mode() { + $post_id = null; + $key = null; + $nonce = null; + + if ( isset( $_GET[ self::QUERY_STRING_POST_ID ] ) ) { + $post_id = $_GET[ self::QUERY_STRING_POST_ID ]; // phpcs:ignore -- Nonce will be checked next line. + } + + if ( isset( $_GET[ self::QUERY_STRING_NONCE_PARAM_NAME ] ) ) { + $nonce = $_GET[ self::QUERY_STRING_NONCE_PARAM_NAME ]; // phpcs:ignore -- Nonce will be checked next line. + } + + if ( isset( $_GET[ self::QUERY_STRING_PARAM_NAME ] ) ) { + $key = $_GET[ self::QUERY_STRING_PARAM_NAME ]; // phpcs:ignore -- Nonce will be checked next line. + } + + if ( + $post_id && + $nonce && + wp_verify_nonce( $nonce, self::get_nonce_action( $post_id ) ) && + $key && + array_key_exists( $key, $this->render_modes ) + ) { + $this->set_current( new $this->render_modes[ $key ]( $post_id ) ); + } else { + $this->set_current( new Render_Mode_Normal( $post_id ) ); + } + + return $this; + } + + /** + * Add actions base on the current render. + * + * @throws \Requests_Exception_HTTP_403 + * @throws Status403 + */ + private function add_current_actions() { + if ( ! $this->current->get_permissions_callback() ) { + // WP >= 6.2-alpha + if ( class_exists( '\WpOrg\Requests\Exception\Http\Status403' ) ) { + throw new \WpOrg\Requests\Exception\Http\Status403(); + } else { + throw new \Requests_Exception_HTTP_403(); + } + } + + // Run when 'template-redirect' actually because the the class is instantiate when 'template-redirect' run. + $this->current->prepare_render(); + } + + /** + * Render_Mode_Manager constructor. + * + * @throws \Exception + */ + public function __construct() { + $this->register_render_mode( Render_Mode_Normal::class ); + + do_action( 'elementor/frontend/render_mode/register', $this ); + + $this->choose_render_mode(); + $this->add_current_actions(); + } +} diff --git a/wp-content/plugins/elementor/core/frontend/render-modes/render-mode-base.php b/wp-content/plugins/elementor/core/frontend/render-modes/render-mode-base.php new file mode 100644 index 0000000..24a8f96 --- /dev/null +++ b/wp-content/plugins/elementor/core/frontend/render-modes/render-mode-base.php @@ -0,0 +1,110 @@ +post_id = intval( $post_id ); + } + + /** + * Returns the key name of the class. + * + * @return string + * @throws \Exception + */ + public static function get_name() { + throw new \Exception( 'You must implements `get_name` static method in ' . static::class ); + } + + /** + * @param $post_id + * + * @return string + * @throws \Exception + */ + public static function get_url( $post_id ) { + return Render_Mode_Manager::get_base_url( $post_id, static::get_name() ); + } + + /** + * Runs before the render, by default load scripts and styles. + */ + public function prepare_render() { + add_action( 'wp_enqueue_scripts', function () { + $this->enqueue_scripts(); + }, static::ENQUEUE_SCRIPTS_PRIORITY ); + + add_action( 'wp_enqueue_scripts', function () { + $this->enqueue_styles(); + }, static::ENQUEUE_STYLES_PRIORITY ); + } + + /** + * By default do not do anything. + */ + protected function enqueue_scripts() { + // + } + + /** + * By default do not do anything. + */ + protected function enqueue_styles() { + // + } + + /** + * Check if the current user has permissions for the current render mode. + * + * @return bool + */ + public function get_permissions_callback() { + return $this->get_document()->is_editable_by_current_user(); + } + + /** + * Checks if the current render mode is static render, By default returns false. + * + * @return bool + */ + public function is_static() { + return false; + } + + /** + * @return Document + */ + public function get_document() { + if ( ! $this->document ) { + $this->document = Plugin::$instance->documents->get( $this->post_id ); + } + + return $this->document; + } +} diff --git a/wp-content/plugins/elementor/core/frontend/render-modes/render-mode-normal.php b/wp-content/plugins/elementor/core/frontend/render-modes/render-mode-normal.php new file mode 100644 index 0000000..836f120 --- /dev/null +++ b/wp-content/plugins/elementor/core/frontend/render-modes/render-mode-normal.php @@ -0,0 +1,24 @@ + +
    + <# if ( itemActions.add ) { #> +
    + +
    + <# } #> + register_tabs(); + } + + public static function get_properties() { + $properties = parent::get_properties(); + + $properties['has_elements'] = false; + $properties['show_in_finder'] = false; + $properties['show_on_admin_bar'] = false; + $properties['edit_capability'] = 'edit_theme_options'; + $properties['support_kit'] = true; + + return $properties; + } + + public static function get_type() { + return 'kit'; + } + + public static function get_title() { + return esc_html__( 'Kit', 'elementor' ); + } + + /** + * @return Tabs\Tab_Base[] + */ + public function get_tabs() { + return $this->tabs; + } + + /** + * Retrieve a tab by ID. + * + * @param $id + * + * @return Tabs\Tab_Base + */ + public function get_tab( $id ) { + return self::get_items( $this->get_tabs(), $id ); + } + + protected function get_have_a_look_url() { + return ''; + } + + public static function get_editor_panel_config() { + $config = parent::get_editor_panel_config(); + $config['default_route'] = 'panel/global/menu'; + + $config['needHelpUrl'] = 'https://go.elementor.com/global-settings/'; + + return $config; + } + + public function get_css_wrapper_selector() { + return '.elementor-kit-' . $this->get_main_id(); + } + + public function save( $data ) { + foreach ( $this->tabs as $tab ) { + $data = $tab->before_save( $data ); + } + + $saved = parent::save( $data ); + + if ( ! $saved ) { + return false; + } + + // Should set is_saving to true, to avoid infinite loop when updating + // settings like: 'site_name" or "site_description". + $this->set_is_saving( true ); + + foreach ( $this->tabs as $tab ) { + $tab->on_save( $data ); + } + + $this->set_is_saving( false ); + + // When deleting a global color or typo, the css variable still exists in the frontend + // but without any value and it makes the element to be un styled even if there is a default style for the base element, + // for that reason this method removes css files of the entire site. + Plugin::instance()->files_manager->clear_cache(); + + return $saved; + } + + /** + * Register a kit settings menu. + * + * @param $id + * @param $class + */ + public function register_tab( $id, $class ) { + $this->tabs[ $id ] = new $class( $this ); + } + + /** + * @inheritDoc + */ + protected function get_initial_config() { + $config = parent::get_initial_config(); + + foreach ( $this->tabs as $id => $tab ) { + $config['tabs'][ $id ] = [ + 'id' => $id, + 'title' => $tab->get_title(), + 'icon' => $tab->get_icon(), + 'group' => $tab->get_group(), + 'helpUrl' => $tab->get_help_url(), + 'additionalContent' => $tab->get_additional_tab_content(), + ]; + } + + return $config; + } + + /** + * @since 3.1.0 + * @access protected + */ + protected function register_controls() { + $this->register_document_controls(); + + foreach ( $this->tabs as $tab ) { + $tab->register_controls(); + } + } + + protected function get_post_statuses() { + return [ + 'draft' => sprintf( '%s (%s)', esc_html__( 'Disabled', 'elementor' ), esc_html__( 'Draft', 'elementor' ) ), + 'publish' => esc_html__( 'Published', 'elementor' ), + ]; + } + + public function add_repeater_row( $control_id, $item ) { + $meta_key = PageManager::META_KEY; + $document_settings = $this->get_meta( $meta_key ); + + if ( ! $document_settings ) { + $document_settings = []; + } + + if ( ! isset( $document_settings[ $control_id ] ) ) { + $document_settings[ $control_id ] = []; + } + + $document_settings[ $control_id ][] = $item; + + $page_settings_manager = SettingsManager::get_settings_managers( 'page' ); + $page_settings_manager->save_settings( $document_settings, $this->get_id() ); + + /** @var Kit $autosave **/ + $autosave = $this->get_autosave(); + + if ( $autosave ) { + $autosave->add_repeater_row( $control_id, $item ); + } + + // Remove Post CSS. + $post_css = Post_CSS::create( $this->post->ID ); + + $post_css->delete(); + + // Refresh Cache. + Plugin::$instance->documents->get( $this->post->ID, false ); + + $post_css = Post_CSS::create( $this->post->ID ); + + $post_css->enqueue(); + } + + /** + * Register default tabs (menu pages) for site settings. + */ + private function register_tabs() { + $tabs = [ + 'global-colors' => Tabs\Global_Colors::class, + 'global-typography' => Tabs\Global_Typography::class, + 'theme-style-typography' => Tabs\Theme_Style_Typography::class, + 'theme-style-buttons' => Tabs\Theme_Style_Buttons::class, + 'theme-style-images' => Tabs\Theme_Style_Images::class, + 'theme-style-form-fields' => Tabs\Theme_Style_Form_Fields::class, + 'settings-site-identity' => Tabs\Settings_Site_Identity::class, + 'settings-background' => Tabs\Settings_Background::class, + 'settings-layout' => Tabs\Settings_Layout::class, + 'settings-lightbox' => Tabs\Settings_Lightbox::class, + 'settings-page-transitions' => Tabs\Settings_Page_Transitions::class, + 'settings-custom-css' => Tabs\Settings_Custom_CSS::class, + ]; + + foreach ( $tabs as $id => $class ) { + $this->register_tab( $id, $class ); + } + + do_action( 'elementor/kit/register_tabs', $this ); + } +} diff --git a/wp-content/plugins/elementor/core/kits/documents/tabs/global-colors.php b/wp-content/plugins/elementor/core/kits/documents/tabs/global-colors.php new file mode 100644 index 0000000..9a0b68b --- /dev/null +++ b/wp-content/plugins/elementor/core/kits/documents/tabs/global-colors.php @@ -0,0 +1,137 @@ +start_controls_section( + 'section_global_colors', + [ + 'label' => esc_html__( 'Global Colors', 'elementor' ), + 'tab' => $this->get_id(), + ] + ); + + $repeater = new Repeater(); + + $repeater->add_control( + 'title', + [ + 'type' => Controls_Manager::TEXT, + 'label_block' => true, + 'required' => true, + ] + ); + + // Color Value + $repeater->add_control( + 'color', + [ + 'type' => Controls_Manager::COLOR, + 'label_block' => true, + 'selectors' => [ + '{{WRAPPER}}' => '--e-global-color-{{_id.VALUE}}: {{VALUE}}', + ], + 'global' => [ + 'active' => false, + ], + ] + ); + + $default_colors = [ + [ + '_id' => 'primary', + 'title' => esc_html__( 'Primary', 'elementor' ), + 'color' => '#6EC1E4', + ], + [ + '_id' => 'secondary', + 'title' => esc_html__( 'Secondary', 'elementor' ), + 'color' => '#54595F', + ], + [ + '_id' => 'text', + 'title' => esc_html__( 'Text', 'elementor' ), + 'color' => '#7A7A7A', + ], + [ + '_id' => 'accent', + 'title' => esc_html__( 'Accent', 'elementor' ), + 'color' => '#61CE70', + ], + ]; + + $this->add_control( + 'heading_system_colors', + [ + 'type' => Controls_Manager::HEADING, + 'label' => esc_html__( 'System Colors', 'elementor' ), + ] + ); + + $this->add_control( + 'system_colors', + [ + 'type' => Global_Style_Repeater::CONTROL_TYPE, + 'fields' => $repeater->get_controls(), + 'default' => $default_colors, + 'item_actions' => [ + 'add' => false, + 'remove' => false, + ], + 'separator' => 'after', + ] + ); + + $this->add_control( + 'heading_custom_colors', + [ + 'type' => Controls_Manager::HEADING, + 'label' => esc_html__( 'Custom Colors', 'elementor' ), + ] + ); + + $this->add_control( + 'custom_colors', + [ + 'type' => Global_Style_Repeater::CONTROL_TYPE, + 'fields' => $repeater->get_controls(), + ] + ); + + $this->end_controls_section(); + } +} diff --git a/wp-content/plugins/elementor/core/kits/documents/tabs/global-typography.php b/wp-content/plugins/elementor/core/kits/documents/tabs/global-typography.php new file mode 100644 index 0000000..b364877 --- /dev/null +++ b/wp-content/plugins/elementor/core/kits/documents/tabs/global-typography.php @@ -0,0 +1,211 @@ +start_controls_section( + 'section_text_style', + [ + 'label' => esc_html__( 'Global Fonts', 'elementor' ), + 'tab' => $this->get_id(), + ] + ); + + $repeater = new Repeater(); + + $repeater->add_control( + 'title', + [ + 'type' => Controls_Manager::TEXT, + 'label_block' => true, + 'required' => true, + ] + ); + + $repeater->add_group_control( + Group_Control_Typography::get_type(), + [ + 'name' => self::TYPOGRAPHY_NAME, + 'label' => '', + 'global' => [ + 'active' => false, + ], + 'fields_options' => [ + 'font_family' => [ + 'selectors' => [ + '{{SELECTOR}}' => '--e-global-typography-{{external._id.VALUE}}-font-family: "{{VALUE}}"', + ], + ], + 'font_size' => [ + 'selectors' => [ + '{{SELECTOR}}' => '--e-global-typography-{{external._id.VALUE}}-font-size: {{SIZE}}{{UNIT}}', + ], + ], + 'font_weight' => [ + 'selectors' => [ + '{{SELECTOR}}' => '--e-global-typography-{{external._id.VALUE}}-font-weight: {{VALUE}}', + ], + ], + 'text_transform' => [ + 'selectors' => [ + '{{SELECTOR}}' => '--e-global-typography-{{external._id.VALUE}}-text-transform: {{VALUE}}', + ], + ], + 'font_style' => [ + 'selectors' => [ + '{{SELECTOR}}' => '--e-global-typography-{{external._id.VALUE}}-font-style: {{VALUE}}', + ], + ], + 'text_decoration' => [ + 'selectors' => [ + '{{SELECTOR}}' => '--e-global-typography-{{external._id.VALUE}}-text-decoration: {{VALUE}}', + ], + ], + 'line_height' => [ + 'selectors' => [ + '{{SELECTOR}}' => '--e-global-typography-{{external._id.VALUE}}-line-height: {{SIZE}}{{UNIT}}', + ], + ], + 'letter_spacing' => [ + 'selectors' => [ + '{{SELECTOR}}' => '--e-global-typography-{{external._id.VALUE}}-letter-spacing: {{SIZE}}{{UNIT}}', + ], + ], + 'word_spacing' => [ + 'selectors' => [ + '{{SELECTOR}}' => '--e-global-typography-{{external._id.VALUE}}-word-spacing: {{SIZE}}{{UNIT}}', + ], + ], + ], + ] + ); + + $typography_key = self::TYPOGRAPHY_GROUP_PREFIX . 'typography'; + $font_family_key = self::TYPOGRAPHY_GROUP_PREFIX . 'font_family'; + $font_weight_key = self::TYPOGRAPHY_GROUP_PREFIX . 'font_weight'; + + $default_typography = [ + [ + '_id' => 'primary', + 'title' => esc_html__( 'Primary', 'elementor' ), + $typography_key => 'custom', + $font_family_key => 'Roboto', + $font_weight_key => '600', + ], + [ + '_id' => 'secondary', + 'title' => esc_html__( 'Secondary', 'elementor' ), + $typography_key => 'custom', + $font_family_key => 'Roboto Slab', + $font_weight_key => '400', + ], + [ + '_id' => 'text', + 'title' => esc_html__( 'Text', 'elementor' ), + $typography_key => 'custom', + $font_family_key => 'Roboto', + $font_weight_key => '400', + ], + [ + '_id' => 'accent', + 'title' => esc_html__( 'Accent', 'elementor' ), + $typography_key => 'custom', + $font_family_key => 'Roboto', + $font_weight_key => '500', + ], + ]; + + $this->add_control( + 'heading_system_typography', + [ + 'type' => Controls_Manager::HEADING, + 'label' => esc_html__( 'System Fonts', 'elementor' ), + ] + ); + + $this->add_control( + 'system_typography', + [ + 'type' => Global_Style_Repeater::CONTROL_TYPE, + 'fields' => $repeater->get_controls(), + 'default' => $default_typography, + 'item_actions' => [ + 'add' => false, + 'remove' => false, + ], + 'separator' => 'after', + ] + ); + + $this->add_control( + 'heading_custom_typography', + [ + 'type' => Controls_Manager::HEADING, + 'label' => esc_html__( 'Custom Fonts', 'elementor' ), + ] + ); + + $this->add_control( + 'custom_typography', + [ + 'type' => Global_Style_Repeater::CONTROL_TYPE, + 'fields' => $repeater->get_controls(), + ] + ); + + $this->add_control( + 'default_generic_fonts', + [ + 'label' => esc_html__( 'Fallback Font Family', 'elementor' ), + 'type' => Controls_Manager::TEXT, + 'default' => 'Sans-serif', + 'description' => esc_html__( 'The list of fonts used if the chosen font is not available.', 'elementor' ), + 'label_block' => true, + 'separator' => 'before', + 'ai' => [ + 'active' => false, + ], + ] + ); + + $this->end_controls_section(); + } +} diff --git a/wp-content/plugins/elementor/core/kits/documents/tabs/settings-background.php b/wp-content/plugins/elementor/core/kits/documents/tabs/settings-background.php new file mode 100644 index 0000000..093f302 --- /dev/null +++ b/wp-content/plugins/elementor/core/kits/documents/tabs/settings-background.php @@ -0,0 +1,74 @@ +start_controls_section( + 'section_background', + [ + 'label' => $this->get_title(), + 'tab' => $this->get_id(), + ] + ); + + $this->add_group_control( + Group_Control_Background::get_type(), + [ + 'name' => 'body_background', + 'types' => [ 'classic', 'gradient' ], + 'selector' => '{{WRAPPER}}', + 'fields_options' => [ + 'background' => [ + 'frontend_available' => true, + ], + 'color' => [ + 'dynamic' => [], + ], + 'color_b' => [ + 'dynamic' => [], + ], + ], + ] + ); + + $this->add_control( + 'mobile_browser_background', + [ + 'label' => esc_html__( 'Mobile Browser Background', 'elementor' ), + 'type' => Controls_Manager::COLOR, + 'description' => esc_html__( 'The `theme-color` meta tag will only be available in supported browsers and devices.', 'elementor' ), + 'separator' => 'before', + ] + ); + + $this->end_controls_section(); + } +} diff --git a/wp-content/plugins/elementor/core/kits/documents/tabs/settings-custom-css.php b/wp-content/plugins/elementor/core/kits/documents/tabs/settings-custom-css.php new file mode 100644 index 0000000..ba162a2 --- /dev/null +++ b/wp-content/plugins/elementor/core/kits/documents/tabs/settings-custom-css.php @@ -0,0 +1,35 @@ +controls_manager->add_custom_css_controls( $this->parent, $this->get_id() ); + } +} diff --git a/wp-content/plugins/elementor/core/kits/documents/tabs/settings-layout.php b/wp-content/plugins/elementor/core/kits/documents/tabs/settings-layout.php new file mode 100644 index 0000000..c550676 --- /dev/null +++ b/wp-content/plugins/elementor/core/kits/documents/tabs/settings-layout.php @@ -0,0 +1,374 @@ +start_controls_section( + 'section_' . $this->get_id(), + [ + 'label' => esc_html__( 'Layout Settings', 'elementor' ), + 'tab' => $this->get_id(), + ] + ); + + $this->add_responsive_control( + 'container_width', + [ + 'label' => esc_html__( 'Content Width', 'elementor' ), + 'type' => Controls_Manager::SLIDER, + 'size_units' => [ 'px', '%', 'em', 'rem', 'vw', 'custom' ], + 'default' => [ + 'size' => 1140, + ], + 'tablet_default' => [ + 'size' => $breakpoints_default_config[ $breakpoint_key_tablet ]['default_value'], + ], + 'mobile_default' => [ + 'size' => $breakpoints_default_config[ $breakpoint_key_mobile ]['default_value'], + ], + 'range' => [ + 'px' => [ + 'min' => 300, + 'max' => 1500, + 'step' => 10, + ], + ], + 'description' => esc_html__( 'Sets the default width of the content area (Default: 1140px)', 'elementor' ), + 'selectors' => [ + '.elementor-section.elementor-section-boxed > .elementor-container' => 'max-width: {{SIZE}}{{UNIT}}', + '.e-con' => '--container-max-width: {{SIZE}}{{UNIT}}', + ], + ] + ); + + $is_container_active = Plugin::instance()->experiments->is_feature_active( 'container' ); + $logical_dimensions_inline_start = is_rtl() ? '{{RIGHT}}{{UNIT}}' : '{{LEFT}}{{UNIT}}'; + $logical_dimensions_inline_end = is_rtl() ? '{{LEFT}}{{UNIT}}' : '{{RIGHT}}{{UNIT}}'; + + if ( $is_container_active ) { + $this->add_responsive_control( + 'container_padding', + [ + 'label' => esc_html__( 'Container Padding', 'elementor' ), + 'type' => Controls_Manager::DIMENSIONS, + 'size_units' => [ 'px', '%', 'em', 'rem', 'vw', 'custom' ], + 'description' => esc_html__( 'Sets the default space inside the container (Default is 10px)', 'elementor' ), + 'selectors' => [ + '.e-con' => "--container-default-padding-block-start: {{TOP}}{{UNIT}}; --container-default-padding-inline-end: $logical_dimensions_inline_end; --container-default-padding-block-end: {{BOTTOM}}{{UNIT}}; --container-default-padding-inline-start: $logical_dimensions_inline_start;", + ], + ] + ); + } + + $widgets_space_label = $is_container_active + ? esc_html__( 'Gaps', 'elementor' ) + : esc_html__( 'Widgets Space', 'elementor' ); + + $this->add_control( + 'space_between_widgets', + [ + 'label' => $widgets_space_label, + 'type' => Controls_Manager::GAPS, + 'default' => [ + 'row' => '20', + 'column' => '20', + 'unit' => 'px', + ], + 'size_units' => [ 'px', '%', 'em', 'rem', 'vw', 'custom' ], + 'placeholder' => [ + 'row' => '20', + 'column' => '20', + ], + 'description' => esc_html__( 'Sets the default space between widgets (Default: 20px)', 'elementor' ), + 'selectors' => [ + '.elementor-widget:not(:last-child)' => 'margin-block-end: {{ROW}}{{UNIT}}', + '.elementor-element' => '--widgets-spacing: {{ROW}}{{UNIT}} {{COLUMN}}{{UNIT}}', + ], + 'conversion_map' => [ + 'old_key' => 'size', + 'new_key' => 'column', + ], + 'upgrade_conversion_map' => [ + 'old_key' => 'size', + 'new_keys' => [ 'column', 'row' ], + ], + 'validators' => [ + 'Number' => [ + 'min' => 0, + ], + ], + ] + ); + + $this->add_control( + 'page_title_selector', + [ + 'label' => esc_html__( 'Page Title Selector', 'elementor' ), + 'type' => Controls_Manager::TEXT, + 'default' => 'h1.entry-title', + 'placeholder' => 'h1.entry-title', + 'description' => esc_html__( 'Elementor lets you hide the page title. This works for themes that have "h1.entry-title" selector. If your theme\'s selector is different, please enter it above.', 'elementor' ), + 'label_block' => true, + 'ai' => [ + 'active' => false, + ], + 'selectors' => [ + // Hack to convert the value into a CSS selector. + '' => '}{{VALUE}}{display: var(--page-title-display)', + ], + ] + ); + + $this->add_control( + 'stretched_section_container', + [ + 'label' => esc_html__( 'Stretched Section Fit To', 'elementor' ), + 'type' => Controls_Manager::TEXT, + 'placeholder' => 'body', + 'description' => esc_html__( 'Enter parent element selector to which stretched sections will fit to (e.g. #primary / .wrapper / main etc). Leave blank to fit to page width.', 'elementor' ), + 'label_block' => true, + 'frontend_available' => true, + 'ai' => [ + 'active' => false, + ], + ] + ); + + /** + * @var PageTemplatesModule $page_templates_module + */ + $page_templates_module = Plugin::$instance->modules_manager->get_modules( 'page-templates' ); + $page_templates = $page_templates_module->add_page_templates( [], null, null ); + + // Removes the Theme option from the templates because 'default' is already handled. + unset( $page_templates[ PageTemplatesModule::TEMPLATE_THEME ] ); + + $page_template_control_options = [ + 'label' => esc_html__( 'Default Page Layout', 'elementor' ), + 'options' => [ + // This is here because the "Theme" string is different than the default option's string. + 'default' => esc_html__( 'Theme', 'elementor' ), + ] + $page_templates, + ]; + + $page_templates_module->add_template_controls( $this->parent, 'default_page_template', $page_template_control_options ); + + $this->end_controls_section(); + + $this->start_controls_section( + 'section_breakpoints', + [ + 'label' => esc_html__( 'Breakpoints', 'elementor' ), + 'tab' => $this->get_id(), + ] + ); + + $prefix = Breakpoints_Manager::BREAKPOINT_SETTING_PREFIX; + $options = []; + + foreach ( $breakpoints_default_config as $breakpoint_key => $breakpoint ) { + $options[ $prefix . $breakpoint_key ] = $breakpoint['label']; + } + + if ( Plugin::$instance->experiments->is_feature_active( 'additional_custom_breakpoints' ) ) { + $active_breakpoints_control_type = Controls_Manager::SELECT2; + } else { + $active_breakpoints_control_type = Controls_Manager::HIDDEN; + } + + $this->add_control( + self::ACTIVE_BREAKPOINTS_CONTROL_ID, + [ + 'label' => esc_html__( 'Active Breakpoints', 'elementor' ), + 'type' => $active_breakpoints_control_type, + 'description' => esc_html__( 'Mobile and Tablet options cannot be deleted.', 'elementor' ), + 'options' => $options, + 'default' => [ + $prefix . $breakpoint_key_mobile, + $prefix . $breakpoint_key_tablet, + ], + 'select2options' => [ + 'allowClear' => false, + ], + 'lockedOptions' => [ + $prefix . $breakpoint_key_mobile, + $prefix . $breakpoint_key_tablet, + ], + 'label_block' => true, + 'render_type' => 'none', + 'frontend_available' => true, + 'multiple' => true, + ] + ); + + $this->add_breakpoints_controls(); + + // Include the old mobile and tablet breakpoint controls as hidden for backwards compatibility. + $this->add_control( 'viewport_md', [ 'type' => Controls_Manager::HIDDEN ] ); + $this->add_control( 'viewport_lg', [ 'type' => Controls_Manager::HIDDEN ] ); + + $this->end_controls_section(); + } + + /** + * Before Save + * + * Runs Before the Kit document is saved. + * + * For backwards compatibility, when the mobile and tablet breakpoints are updated, we also update the + * old breakpoint settings ('viewport_md', 'viewport_lg' ) with the saved values + 1px. The reason 1px + * is added is because the old breakpoints system was min-width based, and the new system introduced in + * Elementor v3.2.0 is max-width based. + * + * @since 3.2.0 + * + * @param array $data + * @return array $data + */ + public function before_save( array $data ) { + // When creating a default kit, $data['settings'] is empty and should remain empty, so settings. + if ( empty( $data['settings'] ) ) { + return $data; + } + + $prefix = Breakpoints_Manager::BREAKPOINT_SETTING_PREFIX; + $mobile_breakpoint_key = $prefix . Breakpoints_Manager::BREAKPOINT_KEY_MOBILE; + $tablet_breakpoint_key = $prefix . Breakpoints_Manager::BREAKPOINT_KEY_TABLET; + + $default_breakpoint_config = Breakpoints_Manager::get_default_config(); + + // Update the old mobile breakpoint. If the setting is empty, use the default value. + $data['settings'][ $prefix . 'md' ] = empty( $data['settings'][ $mobile_breakpoint_key ] ) + ? $default_breakpoint_config[ Breakpoints_Manager::BREAKPOINT_KEY_MOBILE ]['default_value'] + 1 + : $data['settings'][ $mobile_breakpoint_key ] + 1; + + // Update the old tablet breakpoint. If the setting is empty, use the default value. + $data['settings'][ $prefix . 'lg' ] = empty( $data['settings'][ $tablet_breakpoint_key ] ) + ? $default_breakpoint_config[ Breakpoints_Manager::BREAKPOINT_KEY_TABLET ]['default_value'] + 1 + : $data['settings'][ $tablet_breakpoint_key ] + 1; + + return $data; + } + + public function on_save( $data ) { + if ( ! isset( $data['settings'] ) || ( isset( $data['settings']['post_status'] ) && Document::STATUS_PUBLISH !== $data['settings']['post_status'] ) ) { + return; + } + + $should_compile_css = false; + + $breakpoints_default_config = Breakpoints_Manager::get_default_config(); + + foreach ( $breakpoints_default_config as $breakpoint_key => $default_config ) { + $breakpoint_setting_key = Breakpoints_Manager::BREAKPOINT_SETTING_PREFIX . $breakpoint_key; + + if ( isset( $data['settings'][ $breakpoint_setting_key ] ) ) { + $should_compile_css = true; + } + } + + if ( $should_compile_css ) { + Breakpoints_Manager::compile_stylesheet_templates(); + } + } + + private function add_breakpoints_controls() { + $default_breakpoints_config = Breakpoints_Manager::get_default_config(); + $prefix = Breakpoints_Manager::BREAKPOINT_SETTING_PREFIX; + + // If the ACB experiment is inactive, only add the mobile and tablet controls. + if ( ! Plugin::$instance->experiments->is_feature_active( 'additional_custom_breakpoints' ) ) { + $default_breakpoints_config = array_intersect_key( $default_breakpoints_config, array_flip( [ Breakpoints_Manager::BREAKPOINT_KEY_MOBILE, Breakpoints_Manager::BREAKPOINT_KEY_TABLET ] ) ); + } + + // Add a control for each of the **default** breakpoints. + foreach ( $default_breakpoints_config as $breakpoint_key => $default_breakpoint_config ) { + $this->add_control( + 'breakpoint_' . $breakpoint_key . '_heading', + [ + 'label' => $default_breakpoint_config['label'], + 'type' => Controls_Manager::HEADING, + 'conditions' => [ + 'terms' => [ + [ + 'name' => 'active_breakpoints', + 'operator' => 'contains', + 'value' => $prefix . $breakpoint_key, + ], + ], + ], + ] + ); + + $control_config = [ + 'label' => esc_html__( 'Breakpoint', 'elementor' ) . ' (px)', + 'type' => Controls_Manager::NUMBER, + 'placeholder' => $default_breakpoint_config['default_value'], + 'frontend_available' => true, + 'separator' => 'after', + 'validators' => [ + 'Breakpoint' => [ + 'breakpointName' => $breakpoint_key, + ], + ], + 'conditions' => [ + 'terms' => [ + [ + 'name' => 'active_breakpoints', + 'operator' => 'contains', + 'value' => $prefix . $breakpoint_key, + ], + ], + ], + ]; + + if ( Breakpoints_Manager::BREAKPOINT_KEY_WIDESCREEN === $breakpoint_key ) { + $control_config['description'] = esc_html__( + 'Widescreen breakpoint settings will apply from the selected value and up.', + 'elementor' + ); + } + + // Add the breakpoint Control itself. + $this->add_control( $prefix . $breakpoint_key, $control_config ); + } + } +} diff --git a/wp-content/plugins/elementor/core/kits/documents/tabs/settings-lightbox.php b/wp-content/plugins/elementor/core/kits/documents/tabs/settings-lightbox.php new file mode 100644 index 0000000..9d02975 --- /dev/null +++ b/wp-content/plugins/elementor/core/kits/documents/tabs/settings-lightbox.php @@ -0,0 +1,199 @@ +start_controls_section( + 'section_' . $this->get_id(), + [ + 'label' => $this->get_title(), + 'tab' => $this->get_id(), + ] + ); + + $this->add_control( + 'global_image_lightbox', + [ + 'label' => esc_html__( 'Image Lightbox', 'elementor' ), + 'type' => Controls_Manager::SWITCHER, + 'default' => 'yes', + 'description' => esc_html__( 'Open all image links in a lightbox popup window. The lightbox will automatically work on any link that leads to an image file.', 'elementor' ), + 'frontend_available' => true, + ] + ); + + $this->add_control( + 'lightbox_enable_counter', + [ + 'label' => esc_html__( 'Counter', 'elementor' ), + 'type' => Controls_Manager::SWITCHER, + 'default' => 'yes', + 'frontend_available' => true, + ] + ); + + $this->add_control( + 'lightbox_enable_fullscreen', + [ + 'label' => esc_html__( 'Fullscreen', 'elementor' ), + 'type' => Controls_Manager::SWITCHER, + 'default' => 'yes', + 'frontend_available' => true, + ] + ); + + $this->add_control( + 'lightbox_enable_zoom', + [ + 'label' => esc_html__( 'Zoom', 'elementor' ), + 'type' => Controls_Manager::SWITCHER, + 'default' => 'yes', + 'frontend_available' => true, + ] + ); + + $this->add_control( + 'lightbox_enable_share', + [ + 'label' => esc_html__( 'Share', 'elementor' ), + 'type' => Controls_Manager::SWITCHER, + 'default' => 'yes', + 'frontend_available' => true, + ] + ); + + $this->add_control( + 'lightbox_title_src', + [ + 'label' => esc_html__( 'Title', 'elementor' ), + 'type' => Controls_Manager::SELECT, + 'options' => [ + '' => esc_html__( 'None', 'elementor' ), + 'title' => esc_html__( 'Title', 'elementor' ), + 'caption' => esc_html__( 'Caption', 'elementor' ), + 'alt' => esc_html__( 'Alt', 'elementor' ), + 'description' => esc_html__( 'Description', 'elementor' ), + ], + 'default' => 'title', + 'frontend_available' => true, + ] + ); + + $this->add_control( + 'lightbox_description_src', + [ + 'label' => esc_html__( 'Description', 'elementor' ), + 'type' => Controls_Manager::SELECT, + 'options' => [ + '' => esc_html__( 'None', 'elementor' ), + 'title' => esc_html__( 'Title', 'elementor' ), + 'caption' => esc_html__( 'Caption', 'elementor' ), + 'alt' => esc_html__( 'Alt', 'elementor' ), + 'description' => esc_html__( 'Description', 'elementor' ), + ], + 'default' => 'description', + 'frontend_available' => true, + ] + ); + + $this->add_control( + 'lightbox_color', + [ + 'label' => esc_html__( 'Background Color', 'elementor' ), + 'type' => Controls_Manager::COLOR, + 'selectors' => [ + '.elementor-lightbox' => 'background-color: {{VALUE}}', + ], + ] + ); + + $this->add_control( + 'lightbox_ui_color', + [ + 'label' => esc_html__( 'UI Color', 'elementor' ), + 'type' => Controls_Manager::COLOR, + 'selectors' => [ + '.elementor-lightbox' => '--lightbox-ui-color: {{VALUE}}', + ], + ] + ); + + $this->add_control( + 'lightbox_ui_color_hover', + [ + 'label' => esc_html__( 'UI Hover Color', 'elementor' ), + 'type' => Controls_Manager::COLOR, + 'selectors' => [ + '.elementor-lightbox' => '--lightbox-ui-color-hover: {{VALUE}}', + ], + ] + ); + + $this->add_control( + 'lightbox_text_color', + [ + 'label' => esc_html__( 'Text Color', 'elementor' ), + 'type' => Controls_Manager::COLOR, + 'selectors' => [ + '.elementor-lightbox' => '--lightbox-text-color: {{VALUE}}', + ], + ] + ); + + $this->add_control( + 'lightbox_icons_size', + [ + 'label' => esc_html__( 'Toolbar Icons Size', 'elementor' ), + 'type' => Controls_Manager::SLIDER, + 'size_units' => [ 'px', 'em', 'rem', 'vw', 'custom' ], + 'selectors' => [ + '.elementor-lightbox' => '--lightbox-header-icons-size: {{SIZE}}{{UNIT}}', + ], + 'separator' => 'before', + ] + ); + + $this->add_control( + 'lightbox_slider_icons_size', + [ + 'label' => esc_html__( 'Navigation Icons Size', 'elementor' ), + 'type' => Controls_Manager::SLIDER, + 'size_units' => [ 'px', 'em', 'rem', 'vw', 'custom' ], + 'selectors' => [ + '.elementor-lightbox' => '--lightbox-navigation-icons-size: {{SIZE}}{{UNIT}}', + ], + 'separator' => 'before', + ] + ); + + $this->end_controls_section(); + } +} diff --git a/wp-content/plugins/elementor/core/kits/documents/tabs/settings-page-transitions.php b/wp-content/plugins/elementor/core/kits/documents/tabs/settings-page-transitions.php new file mode 100644 index 0000000..8ee1971 --- /dev/null +++ b/wp-content/plugins/elementor/core/kits/documents/tabs/settings-page-transitions.php @@ -0,0 +1,37 @@ +controls_manager->add_page_transitions_controls( $this->parent, $this->get_id() ); + } +} diff --git a/wp-content/plugins/elementor/core/kits/documents/tabs/settings-site-identity.php b/wp-content/plugins/elementor/core/kits/documents/tabs/settings-site-identity.php new file mode 100644 index 0000000..87cf271 --- /dev/null +++ b/wp-content/plugins/elementor/core/kits/documents/tabs/settings-site-identity.php @@ -0,0 +1,155 @@ +start_controls_section( + 'section_' . $this->get_id(), + [ + 'label' => $this->get_title(), + 'tab' => $this->get_id(), + ] + ); + + $this->add_control( + $this->get_id() . '_refresh_notice', + [ + 'type' => Controls_Manager::ALERT, + 'alert_type' => 'info', + 'content' => sprintf( + /* translators: 1: Link open tag, 2: Link open tag, 3: Link close tag. */ + esc_html__( 'Changes will be reflected only after %1$s saving %3$s and %2$s reloading %3$s preview.', 'elementor' ), + '', + '', + '' + ), + ] + ); + + $this->add_control( + 'site_name', + [ + 'label' => esc_html__( 'Site Name', 'elementor' ), + 'default' => get_option( 'blogname' ), + 'placeholder' => esc_html__( 'Choose name', 'elementor' ), + 'label_block' => true, + 'export' => false, + ] + ); + + $this->add_control( + 'site_description', + [ + 'label' => esc_html__( 'Site Description', 'elementor' ), + 'default' => get_option( 'blogdescription' ), + 'placeholder' => esc_html__( 'Choose description', 'elementor' ), + 'label_block' => true, + 'export' => false, + ] + ); + + $this->add_control( + 'site_logo', + [ + 'label' => esc_html__( 'Site Logo', 'elementor' ), + 'type' => Controls_Manager::MEDIA, + 'should_include_svg_inline_option' => $should_include_svg_inline_option, + 'default' => [ + 'id' => $custom_logo_id, + 'url' => $custom_logo_src ? $custom_logo_src[0] : '', + ], + 'description' => sprintf( + /* translators: 1: Width number pixel, 2: Height number pixel. */ + esc_html__( 'Suggested image dimensions: %1$s × %2$s pixels.', 'elementor' ), + '350', + '100' + ), + 'export' => false, + ] + ); + + $this->add_control( + 'site_favicon', + [ + 'label' => esc_html__( 'Site Favicon', 'elementor' ), + 'type' => Controls_Manager::MEDIA, + 'should_include_svg_inline_option' => $should_include_svg_inline_option, + 'default' => [ + 'id' => $site_icon_id, + 'url' => $site_icon_src ? $site_icon_src[0] : '', + ], + 'description' => esc_html__( 'Suggested favicon dimensions: 512 × 512 pixels.', 'elementor' ), + 'export' => false, + ] + ); + + $this->end_controls_section(); + } + + public function on_save( $data ) { + if ( + ! isset( $data['settings']['post_status'] ) || + Document::STATUS_PUBLISH !== $data['settings']['post_status'] || + // Should check for the current action to avoid infinite loop + // when updating options like: "blogname" and "blogdescription". + strpos( current_action(), 'update_option_' ) === 0 + ) { + return; + } + + if ( isset( $data['settings']['site_name'] ) ) { + update_option( 'blogname', $data['settings']['site_name'] ); + } + + if ( isset( $data['settings']['site_description'] ) ) { + update_option( 'blogdescription', $data['settings']['site_description'] ); + } + + if ( isset( $data['settings']['site_logo'] ) ) { + set_theme_mod( 'custom_logo', $data['settings']['site_logo']['id'] ); + } + + if ( isset( $data['settings']['site_favicon'] ) ) { + update_option( 'site_icon', $data['settings']['site_favicon']['id'] ); + } + } +} diff --git a/wp-content/plugins/elementor/core/kits/documents/tabs/tab-base.php b/wp-content/plugins/elementor/core/kits/documents/tabs/tab-base.php new file mode 100644 index 0000000..1db51e8 --- /dev/null +++ b/wp-content/plugins/elementor/core/kits/documents/tabs/tab-base.php @@ -0,0 +1,89 @@ +register_tab(); + + $this->register_tab_controls(); + } + + public function on_save( $data ) {} + + /** + * Before Save + * + * Allows for modifying the kit data before it is saved to the database. + * + * @param array $data + * @return array + */ + public function before_save( array $data ) { + return $data; + } + + protected function register_tab() { + Controls_Manager::add_tab( $this->get_id(), $this->get_title() ); + } + + protected function add_default_globals_notice() { + // Get the current section config (array - section id and tab) to use for creating a unique control ID and name + $current_section = $this->parent->get_current_section(); + + /** @var Manager $module */ + $kits_manager = Plugin::$instance->kits_manager; + + if ( $kits_manager->is_custom_colors_enabled() || $kits_manager->is_custom_typography_enabled() ) { + $this->add_control( + $current_section['section'] . '_schemes_notice', + [ + 'name' => $current_section['section'] . '_schemes_notice', + 'type' => Controls_Manager::ALERT, + 'alert_type' => 'warning', + 'content' => sprintf( + /* translators: 1: Link open tag, 2: Link close tag. */ + esc_html__( 'In order for Theme Style to affect all relevant Elementor elements, please disable Default Colors and Fonts from the %1$sSettings Page%2$s.', 'elementor' ), + '', + '' + ), + 'render_type' => 'ui', + ] + ); + } + } +} diff --git a/wp-content/plugins/elementor/core/kits/documents/tabs/theme-style-buttons.php b/wp-content/plugins/elementor/core/kits/documents/tabs/theme-style-buttons.php new file mode 100644 index 0000000..26fdaec --- /dev/null +++ b/wp-content/plugins/elementor/core/kits/documents/tabs/theme-style-buttons.php @@ -0,0 +1,255 @@ +start_controls_section( + 'section_buttons', + [ + 'label' => esc_html__( 'Buttons', 'elementor' ), + 'tab' => $this->get_id(), + ] + ); + + $this->add_default_globals_notice(); + + $this->add_group_control( + Group_Control_Typography::get_type(), + [ + 'name' => 'button_typography', + 'selector' => $button_selector, + ] + ); + + $this->add_group_control( + Group_Control_Text_Shadow::get_type(), + [ + 'name' => 'button_text_shadow', + 'selector' => $button_selector, + ] + ); + + $this->start_controls_tabs( 'tabs_button_style' ); + + $this->start_controls_tab( + 'tab_button_normal', + [ + 'label' => esc_html__( 'Normal', 'elementor' ), + ] + ); + + $this->add_control( + 'button_text_color', + [ + 'label' => esc_html__( 'Text Color', 'elementor' ), + 'type' => Controls_Manager::COLOR, + 'dynamic' => [], + 'selectors' => [ + $button_selector => 'color: {{VALUE}};', + ], + ] + ); + + $this->add_group_control( + Group_Control_Background::get_type(), + [ + 'name' => 'button_background', + 'types' => [ 'classic', 'gradient' ], + 'exclude' => [ 'image' ], + 'selector' => $button_selector, + 'fields_options' => [ + 'background' => [ + 'default' => 'classic', + ], + 'color' => [ + 'dynamic' => [], + ], + 'color_b' => [ + 'dynamic' => [], + ], + ], + ] + ); + + $this->add_group_control( + Group_Control_Box_Shadow::get_type(), + [ + 'name' => 'button_box_shadow', + 'selector' => $button_selector, + ] + ); + + $this->add_group_control( + Group_Control_Border::get_type(), + [ + 'name' => 'button_border', + 'selector' => $button_selector, + 'fields_options' => [ + 'color' => [ + 'dynamic' => [], + ], + ], + ] + ); + + $this->add_control( + 'button_border_radius', + [ + 'label' => esc_html__( 'Border Radius', 'elementor' ), + 'type' => Controls_Manager::DIMENSIONS, + 'size_units' => [ 'px', '%', 'em', 'rem', 'custom' ], + 'selectors' => [ + $button_selector => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};', + ], + ] + ); + + $this->end_controls_tab(); + + $this->start_controls_tab( + 'tab_button_hover', + [ + 'label' => esc_html__( 'Hover', 'elementor' ), + ] + ); + + $this->add_control( + 'button_hover_text_color', + [ + 'label' => esc_html__( 'Text Color', 'elementor' ), + 'type' => Controls_Manager::COLOR, + 'dynamic' => [], + 'selectors' => [ + $button_hover_selector => 'color: {{VALUE}};', + ], + ] + ); + + $this->add_group_control( + Group_Control_Background::get_type(), + [ + 'name' => 'button_hover_background', + 'types' => [ 'classic', 'gradient' ], + 'exclude' => [ 'image' ], + 'selector' => $button_hover_selector, + 'fields_options' => [ + 'background' => [ + 'default' => 'classic', + ], + 'color' => [ + 'dynamic' => [], + ], + 'color_b' => [ + 'dynamic' => [], + ], + ], + ] + ); + + $this->add_group_control( + Group_Control_Box_Shadow::get_type(), + [ + 'name' => 'button_hover_box_shadow', + 'selector' => $button_hover_selector, + ] + ); + + $this->add_group_control( + Group_Control_Border::get_type(), + [ + 'name' => 'button_hover_border', + 'selector' => $button_hover_selector, + 'fields_options' => [ + 'color' => [ + 'dynamic' => [], + ], + ], + ] + ); + + $this->add_control( + 'button_hover_border_radius', + [ + 'label' => esc_html__( 'Border Radius', 'elementor' ), + 'type' => Controls_Manager::DIMENSIONS, + 'size_units' => [ 'px', '%', 'em', 'rem', 'custom' ], + 'selectors' => [ + $button_hover_selector => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};', + ], + ] + ); + + $this->end_controls_tab(); + + $this->end_controls_tabs(); + + $this->add_responsive_control( + 'button_padding', + [ + 'label' => esc_html__( 'Padding', 'elementor' ), + 'type' => Controls_Manager::DIMENSIONS, + 'size_units' => [ 'px', '%', 'em', 'rem', 'vw', 'custom' ], + 'selectors' => [ + $button_selector => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};', + ], + 'separator' => 'before', + ] + ); + + $this->end_controls_section(); + } +} diff --git a/wp-content/plugins/elementor/core/kits/documents/tabs/theme-style-form-fields.php b/wp-content/plugins/elementor/core/kits/documents/tabs/theme-style-form-fields.php new file mode 100644 index 0000000..f774b41 --- /dev/null +++ b/wp-content/plugins/elementor/core/kits/documents/tabs/theme-style-form-fields.php @@ -0,0 +1,242 @@ +start_controls_section( + 'section_form_fields', + [ + 'label' => esc_html__( 'Form Fields', 'elementor' ), + 'tab' => $this->get_id(), + ] + ); + + $this->add_default_globals_notice(); + + $this->add_control( + 'form_label_heading', + [ + 'type' => Controls_Manager::HEADING, + 'label' => esc_html__( 'Label', 'elementor' ), + ] + ); + + $this->add_control( + 'form_label_color', + [ + 'label' => esc_html__( 'Color', 'elementor' ), + 'type' => Controls_Manager::COLOR, + 'dynamic' => [], + 'selectors' => [ + $label_selector => 'color: {{VALUE}};', + ], + ] + ); + + $this->add_group_control( + Group_Control_Typography::get_type(), + [ + 'name' => 'form_label_typography', + 'selector' => $label_selector, + ] + ); + + $this->add_control( + 'form_field_heading', + [ + 'type' => Controls_Manager::HEADING, + 'label' => esc_html__( 'Field', 'elementor' ), + 'separator' => 'before', + ] + ); + + $this->add_group_control( + Group_Control_Typography::get_type(), + [ + 'name' => 'form_field_typography', + 'selector' => $input_selector, + ] + ); + + $this->start_controls_tabs( 'tabs_form_field_style' ); + + $this->start_controls_tab( + 'tab_form_field_normal', + [ + 'label' => esc_html__( 'Normal', 'elementor' ), + ] + ); + + $this->add_form_field_state_tab_controls( 'form_field', $input_selector ); + + $this->end_controls_tab(); + + $this->start_controls_tab( + 'tab_form_field_focus', + [ + 'label' => esc_html__( 'Focus', 'elementor' ), + ] + ); + + $this->add_form_field_state_tab_controls( 'form_field_focus', $input_focus_selector ); + + $this->add_control( + 'form_field_focus_transition_duration', + [ + 'label' => esc_html__( 'Transition Duration', 'elementor' ) . ' (ms)', + 'type' => Controls_Manager::SLIDER, + 'selectors' => [ + $input_selector => 'transition: {{SIZE}}ms', + ], + 'range' => [ + 'px' => [ + 'min' => 0, + 'max' => 3000, + 'step' => 100, + ], + ], + ] + ); + + $this->end_controls_tab(); + + $this->end_controls_tabs(); + + $this->add_responsive_control( + 'form_field_padding', + [ + 'label' => esc_html__( 'Padding', 'elementor' ), + 'type' => Controls_Manager::DIMENSIONS, + 'size_units' => [ 'px', '%', 'em', 'rem', 'vw', 'custom' ], + 'selectors' => [ + $input_selector => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};', + ], + 'separator' => 'before', + ] + ); + + $this->end_controls_section(); + } + + private function add_form_field_state_tab_controls( $prefix, $selector ) { + $this->add_control( + $prefix . '_text_color', + [ + 'label' => esc_html__( 'Text Color', 'elementor' ), + 'type' => Controls_Manager::COLOR, + 'dynamic' => [], + 'selectors' => [ + $selector => 'color: {{VALUE}};', + ], + ] + ); + + $this->add_control( + $prefix . '_accent_color', + [ + 'label' => esc_html__( 'Accent Color', 'elementor' ), + 'type' => Controls_Manager::COLOR, + 'dynamic' => [], + 'selectors' => [ + $selector => 'accent-color: {{VALUE}};', + ], + ] + ); + + $this->add_control( + $prefix . '_background_color', + [ + 'label' => esc_html__( 'Background Color', 'elementor' ), + 'type' => Controls_Manager::COLOR, + 'dynamic' => [], + 'selectors' => [ + $selector => 'background-color: {{VALUE}};', + ], + ] + ); + + $this->add_group_control( + Group_Control_Box_Shadow::get_type(), + [ + 'name' => $prefix . '_box_shadow', + 'selector' => $selector, + ] + ); + + $this->add_group_control( + Group_Control_Border::get_type(), + [ + 'name' => $prefix . '_border', + 'selector' => $selector, + 'fields_options' => [ + 'color' => [ + 'dynamic' => [], + ], + ], + ] + ); + + $this->add_control( + $prefix . '_border_radius', + [ + 'label' => esc_html__( 'Border Radius', 'elementor' ), + 'type' => Controls_Manager::DIMENSIONS, + 'size_units' => [ 'px', '%', 'em', 'rem', 'custom' ], + 'selectors' => [ + $selector => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};', + ], + ] + ); + } +} diff --git a/wp-content/plugins/elementor/core/kits/documents/tabs/theme-style-images.php b/wp-content/plugins/elementor/core/kits/documents/tabs/theme-style-images.php new file mode 100644 index 0000000..f65e61f --- /dev/null +++ b/wp-content/plugins/elementor/core/kits/documents/tabs/theme-style-images.php @@ -0,0 +1,224 @@ +start_controls_section( + 'section_images', + [ + 'label' => esc_html__( 'Images', 'elementor' ), + 'tab' => $this->get_id(), + ] + ); + + $this->add_default_globals_notice(); + + $this->start_controls_tabs( 'tabs_image_style' ); + + $this->start_controls_tab( + 'tab_image_normal', + [ + 'label' => esc_html__( 'Normal', 'elementor' ), + ] + ); + + $this->add_group_control( + Group_Control_Border::get_type(), + [ + 'name' => 'image_border', + 'selector' => $image_selectors, + 'fields_options' => [ + 'color' => [ + 'dynamic' => [], + ], + ], + ] + ); + + $this->add_responsive_control( + 'image_border_radius', + [ + 'label' => esc_html__( 'Border Radius', 'elementor' ), + 'type' => Controls_Manager::DIMENSIONS, + 'size_units' => [ 'px', '%', 'em', 'rem', 'custom' ], + 'selectors' => [ + $image_selectors => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};', + ], + ] + ); + + $this->add_control( + 'image_opacity', + [ + 'label' => esc_html__( 'Opacity', 'elementor' ), + 'type' => Controls_Manager::SLIDER, + 'range' => [ + 'px' => [ + 'max' => 1, + 'min' => 0.10, + 'step' => 0.01, + ], + ], + 'selectors' => [ + $image_selectors => 'opacity: {{SIZE}};', + ], + ] + ); + + $this->add_group_control( + Group_Control_Box_Shadow::get_type(), + [ + 'name' => 'image_box_shadow', + 'exclude' => [ + 'box_shadow_position', + ], + 'selector' => $image_selectors, + ] + ); + + $this->add_group_control( + Group_Control_Css_Filter::get_type(), + [ + 'name' => 'image_css_filters', + 'selector' => '{{WRAPPER}} img', + ] + ); + + $this->end_controls_tab(); + + $this->start_controls_tab( + 'tab_image_hover', + [ + 'label' => esc_html__( 'Hover', 'elementor' ), + ] + ); + + $this->add_group_control( + Group_Control_Border::get_type(), + [ + 'name' => 'image_hover_border', + 'selector' => '{{WRAPPER}} img:hover', + 'fields_options' => [ + 'color' => [ + 'dynamic' => [], + ], + ], + ] + ); + + $this->add_responsive_control( + 'image_hover_border_radius', + [ + 'label' => esc_html__( 'Border Radius', 'elementor' ), + 'type' => Controls_Manager::DIMENSIONS, + 'size_units' => [ 'px', '%', 'em', 'rem', 'custom' ], + 'selectors' => [ + $image_hover_selectors => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};', + ], + ] + ); + + $this->add_control( + 'image_hover_opacity', + [ + 'label' => esc_html__( 'Opacity', 'elementor' ), + 'type' => Controls_Manager::SLIDER, + 'range' => [ + 'px' => [ + 'max' => 1, + 'min' => 0.10, + 'step' => 0.01, + ], + ], + 'selectors' => [ + $image_hover_selectors => 'opacity: {{SIZE}};', + ], + ] + ); + + $this->add_group_control( + Group_Control_Box_Shadow::get_type(), + [ + 'name' => 'image_hover_box_shadow', + 'exclude' => [ + 'box_shadow_position', + ], + 'selector' => $image_hover_selectors, + ] + ); + + $this->add_group_control( + Group_Control_Css_Filter::get_type(), + [ + 'name' => 'image_hover_css_filters', + 'selector' => $image_hover_selectors, + ] + ); + + $this->add_control( + 'image_hover_transition', + [ + 'label' => esc_html__( 'Transition Duration', 'elementor' ) . ' (s)', + 'type' => Controls_Manager::SLIDER, + 'range' => [ + 'px' => [ + 'min' => 0, + 'max' => 3, + 'step' => 0.1, + ], + ], + 'selectors' => [ + $image_selectors => 'transition-duration: {{SIZE}}s', + ], + ] + ); + + $this->end_controls_tab(); + + $this->end_controls_tabs(); + + $this->end_controls_section(); + } +} diff --git a/wp-content/plugins/elementor/core/kits/documents/tabs/theme-style-typography.php b/wp-content/plugins/elementor/core/kits/documents/tabs/theme-style-typography.php new file mode 100644 index 0000000..9c8cc3a --- /dev/null +++ b/wp-content/plugins/elementor/core/kits/documents/tabs/theme-style-typography.php @@ -0,0 +1,218 @@ +start_controls_section( + 'section_typography', + [ + 'label' => esc_html__( 'Typography', 'elementor' ), + 'tab' => $this->get_id(), + ] + ); + + $this->add_default_globals_notice(); + + $this->add_control( + 'body_heading', + [ + 'type' => Controls_Manager::HEADING, + 'label' => esc_html__( 'Body', 'elementor' ), + ] + ); + + $this->add_control( + 'body_color', + [ + 'label' => esc_html__( 'Text Color', 'elementor' ), + 'type' => Controls_Manager::COLOR, + 'dynamic' => [], + 'selectors' => [ + '{{WRAPPER}}' => 'color: {{VALUE}};', + ], + ] + ); + + $this->add_group_control( + Group_Control_Typography::get_type(), + [ + 'name' => 'body_typography', + 'selector' => '{{WRAPPER}}', + ] + ); + + $this->add_responsive_control( + 'paragraph_spacing', + [ + 'label' => esc_html__( 'Paragraph Spacing', 'elementor' ), + 'type' => Controls_Manager::SLIDER, + 'selectors' => [ + '{{WRAPPER}} p' => 'margin-bottom: {{SIZE}}{{UNIT}}', + ], + 'range' => [ + 'px' => [ + 'max' => 100, + ], + 'em' => [ + 'min' => 0.1, + 'max' => 20, + ], + ], + 'size_units' => [ 'px', 'em', 'rem', 'vh', 'custom' ], + ] + ); + + //Link Selectors + $link_selectors = [ + '{{WRAPPER}} a', + ]; + + $link_hover_selectors = [ + '{{WRAPPER}} a:hover', + ]; + + $link_selectors = implode( ',', $link_selectors ); + $link_hover_selectors = implode( ',', $link_hover_selectors ); + + $this->add_control( + 'link_heading', + [ + 'type' => Controls_Manager::HEADING, + 'label' => esc_html__( 'Link', 'elementor' ), + 'separator' => 'before', + ] + ); + + $this->start_controls_tabs( 'tabs_link_style' ); + + $this->start_controls_tab( + 'tab_link_normal', + [ + 'label' => esc_html__( 'Normal', 'elementor' ), + ] + ); + + $this->add_control( + 'link_normal_color', + [ + 'label' => esc_html__( 'Color', 'elementor' ), + 'type' => Controls_Manager::COLOR, + 'dynamic' => [], + 'selectors' => [ + $link_selectors => 'color: {{VALUE}};', + ], + ] + ); + + $this->add_group_control( + Group_Control_Typography::get_type(), + [ + 'name' => 'link_normal_typography', + 'selector' => $link_selectors, + ] + ); + + $this->end_controls_tab(); + + $this->start_controls_tab( + 'tab_link_hover', + [ + 'label' => esc_html__( 'Hover', 'elementor' ), + ] + ); + + $this->add_control( + 'link_hover_color', + [ + 'label' => esc_html__( 'Color', 'elementor' ), + 'type' => Controls_Manager::COLOR, + 'dynamic' => [], + 'selectors' => [ + $link_hover_selectors => 'color: {{VALUE}};', + ], + ] + ); + + $this->add_group_control( + Group_Control_Typography::get_type(), + [ + 'name' => 'link_hover_typography', + 'selector' => $link_hover_selectors, + ] + ); + + $this->end_controls_tab(); + + $this->end_controls_tabs(); + + // Headings. + $this->add_element_controls( esc_html__( 'H1', 'elementor' ), 'h1', '{{WRAPPER}} h1' ); + $this->add_element_controls( esc_html__( 'H2', 'elementor' ), 'h2', '{{WRAPPER}} h2' ); + $this->add_element_controls( esc_html__( 'H3', 'elementor' ), 'h3', '{{WRAPPER}} h3' ); + $this->add_element_controls( esc_html__( 'H4', 'elementor' ), 'h4', '{{WRAPPER}} h4' ); + $this->add_element_controls( esc_html__( 'H5', 'elementor' ), 'h5', '{{WRAPPER}} h5' ); + $this->add_element_controls( esc_html__( 'H6', 'elementor' ), 'h6', '{{WRAPPER}} h6' ); + + $this->end_controls_section(); + } + + private function add_element_controls( $label, $prefix, $selector ) { + $this->add_control( + $prefix . '_heading', + [ + 'type' => Controls_Manager::HEADING, + 'label' => $label, + 'separator' => 'before', + ] + ); + + $this->add_control( + $prefix . '_color', + [ + 'label' => esc_html__( 'Color', 'elementor' ), + 'type' => Controls_Manager::COLOR, + 'dynamic' => [], + 'selectors' => [ + $selector => 'color: {{VALUE}};', + ], + ] + ); + + $this->add_group_control( + Group_Control_Typography::get_type(), + [ + 'name' => $prefix . '_typography', + 'selector' => $selector, + ] + ); + } +} diff --git a/wp-content/plugins/elementor/core/kits/manager.php b/wp-content/plugins/elementor/core/kits/manager.php new file mode 100644 index 0000000..5c08429 --- /dev/null +++ b/wp-content/plugins/elementor/core/kits/manager.php @@ -0,0 +1,479 @@ +documents->get( $kit_id ); + + if ( ! $this->is_valid_kit( $kit ) ) { + return $this->get_empty_kit_instance(); + } + + return $kit; + } + + public function get_active_kit() { + return $this->get_kit( $this->get_active_id() ); + } + + public function get_active_kit_for_frontend() { + $kit = Plugin::$instance->documents->get_doc_for_frontend( $this->get_active_id() ); + + if ( ! $this->is_valid_kit( $kit ) ) { + return $this->get_empty_kit_instance(); + } + + return $kit; + } + + /** + * @param $kit + * + * @return bool + */ + private function is_valid_kit( $kit ) { + return $kit && $kit instanceof Kit && 'trash' !== $kit->get_main_post()->post_status; + } + + /** + * Returns an empty kit for situation when there is no kit in the site. + * + * @return Kit + * @throws \Exception + */ + private function get_empty_kit_instance() { + return new Kit( [ + 'settings' => [], + 'post_id' => 0, + ] ); + } + + /** + * Checks if specific post is a kit. + * + * @param $post_id + * + * @return bool + */ + public function is_kit( $post_id ) { + $document = Plugin::$instance->documents->get( $post_id ); + + return $document && $document instanceof Kit && ! $document->is_revision(); + } + + + /** + * Init kit controls. + * + * A temp solution in order to avoid init kit group control from within another group control. + * + * After moving the `default_font` to the kit, the Typography group control cause initialize the kit controls at: https://github.com/elementor/elementor/blob/e6e1db9eddef7e3c1a5b2ba0c2338e2af2a3bfe3/includes/controls/groups/typography.php#L91 + * and because the group control is a singleton, its args are changed to the last kit group control. + */ + public function init_kit_controls() { + $this->get_active_kit_for_frontend()->get_settings(); + } + + public function get_current_settings( $setting = null ) { + $kit = $this->get_active_kit_for_frontend(); + + if ( ! $kit ) { + return ''; + } + + return $kit->get_settings( $setting ); + } + + public function create( array $kit_data = [], array $kit_meta_data = [] ) { + $default_kit_data = [ + 'post_status' => 'publish', + ]; + + $kit_data = array_merge( $default_kit_data, $kit_data ); + + $kit_data['post_type'] = Source_Local::CPT; + + $kit = Plugin::$instance->documents->create( 'kit', $kit_data, $kit_meta_data ); + + if ( isset( $kit_data['settings'] ) ) { + $kit->save( [ 'settings' => $kit_data['settings'] ] ); + } + + return $kit->get_id(); + } + + public function create_new_kit( $kit_name = '', $settings = [], $active = true ) { + $kit_name = $kit_name ? $kit_name : esc_html__( 'Custom', 'elementor' ); + + $id = $this->create( [ + 'post_title' => $kit_name, + 'settings' => $settings, + ] ); + + if ( $active ) { + update_option( self::OPTION_PREVIOUS, $this->get_active_id() ); + update_option( self::OPTION_ACTIVE, $id ); + } + + return $id; + } + + public function create_default() { + return $this->create( [ + 'post_title' => esc_html__( 'Default Kit', 'elementor' ), + ] ); + } + + /** + * Create a default kit if needed. + * + * This action runs on activation hook, all the Plugin components do not exists and + * the Document manager and Kits manager instances cannot be used. + * + * @return int|void|\WP_Error + */ + public static function create_default_kit() { + if ( get_option( self::OPTION_ACTIVE ) ) { + return; + } + + $id = wp_insert_post( [ + 'post_title' => esc_html__( 'Default Kit', 'elementor' ), + 'post_type' => Source_Local::CPT, + 'post_status' => 'publish', + 'meta_input' => [ + '_elementor_edit_mode' => 'builder', + Document::TYPE_META_KEY => 'kit', + ], + ] ); + + update_option( self::OPTION_ACTIVE, $id ); + + return $id; + } + + /** + * @param $imported_kit_id int The id of the imported kit that should be deleted. + * @param $active_kit_id int The id of the kit that should set as 'active_kit' after the deletion. + * @param $previous_kit_id int The id of the kit that should set as 'previous_kit' after the deletion. + * @return void + */ + public function revert( int $imported_kit_id, int $active_kit_id, int $previous_kit_id ) { + // If the kit that should set as active is not a valid kit then abort the revert. + if ( ! $this->is_kit( $active_kit_id ) ) { + return; + } + + // This a hacky solution to avoid from the revert process to be interrupted by the `trash_kit_confirmation`. + $this->should_skip_trash_kit_confirmation = true; + + $kit = $this->get_kit( $imported_kit_id ); + $kit->force_delete(); + + $this->should_skip_trash_kit_confirmation = false; + + update_option( self::OPTION_ACTIVE, $active_kit_id ); + + if ( $this->is_kit( $previous_kit_id ) ) { + update_option( self::OPTION_PREVIOUS, $previous_kit_id ); + } + } + + /** + * @param Documents_Manager $documents_manager + */ + public function register_document( $documents_manager ) { + $documents_manager->register_document_type( 'kit', Kit::get_class_full_name() ); + } + + public function localize_settings( $settings ) { + $kit = $this->get_active_kit(); + $kit_controls = $kit->get_controls(); + $design_system_controls = [ + 'colors' => $kit_controls['system_colors']['fields'], + 'typography' => $kit_controls['system_typography']['fields'], + ]; + + $settings = array_replace_recursive( $settings, [ + 'kit_id' => $kit->get_main_id(), + 'kit_config' => [ + 'typography_prefix' => Global_Typography::TYPOGRAPHY_GROUP_PREFIX, + 'design_system_controls' => $design_system_controls, + ], + 'user' => [ + 'can_edit_kit' => $kit->is_editable_by_current_user(), + ], + ] ); + + return $settings; + } + + public function preview_enqueue_styles() { + $kit = $this->get_kit_for_frontend(); + + if ( $kit ) { + // On preview, the global style is not enqueued. + $this->frontend_before_enqueue_styles(); + + Plugin::$instance->frontend->print_fonts_links(); + } + } + + public function frontend_before_enqueue_styles() { + $kit = $this->get_kit_for_frontend(); + + if ( $kit ) { + if ( $kit->is_autosave() ) { + $css_file = Post_Preview::create( $kit->get_id() ); + } else { + $css_file = Post_CSS::create( $kit->get_id() ); + } + + $css_file->enqueue(); + } + } + + public function render_panel_html() { + require __DIR__ . '/views/panel.php'; + } + + public function get_kit_for_frontend() { + $kit = false; + $active_kit = $this->get_active_kit(); + $is_kit_preview = is_preview() && isset( $_GET['preview_id'] ) && $active_kit->get_main_id() === (int) $_GET['preview_id']; + + if ( $is_kit_preview ) { + $kit = Plugin::$instance->documents->get_doc_or_auto_save( $active_kit->get_main_id(), get_current_user_id() ); + } elseif ( 'publish' === $active_kit->get_main_post()->post_status ) { + $kit = $active_kit; + } + + return $kit; + } + + public function update_kit_settings_based_on_option( $key, $value ) { + /** @var Kit $active_kit */ + $active_kit = $this->get_active_kit(); + + if ( $active_kit->is_saving() ) { + return; + } + + $active_kit->update_settings( [ $key => $value ] ); + } + + /** + * Map Scheme To Global + * + * Convert a given scheme value to its corresponding default global value + * + * @param string $type 'color'/'typography' + * @param $value + * @return mixed + */ + private function map_scheme_to_global( $type, $value ) { + $schemes_to_globals_map = [ + 'color' => [ + '1' => Global_Colors::COLOR_PRIMARY, + '2' => Global_Colors::COLOR_SECONDARY, + '3' => Global_Colors::COLOR_TEXT, + '4' => Global_Colors::COLOR_ACCENT, + ], + 'typography' => [ + '1' => Global_Typography::TYPOGRAPHY_PRIMARY, + '2' => Global_Typography::TYPOGRAPHY_SECONDARY, + '3' => Global_Typography::TYPOGRAPHY_TEXT, + '4' => Global_Typography::TYPOGRAPHY_ACCENT, + ], + ]; + + return $schemes_to_globals_map[ $type ][ $value ]; + } + + /** + * Convert Scheme to Default Global + * + * If a control has a scheme property, convert it to a default Global. + * + * @param $scheme - Control scheme property + * @return array - Control/group control args + * @since 3.0.0 + * @access public + */ + public function convert_scheme_to_global( $scheme ) { + if ( isset( $scheme['type'] ) && isset( $scheme['value'] ) ) { + //_deprecated_argument( $args['scheme'], '3.0.0', 'Schemes are now deprecated - use $args[\'global\'] instead.' ); + return $this->map_scheme_to_global( $scheme['type'], $scheme['value'] ); + } + + // Typography control 'scheme' properties usually only include the string with the typography value ('1'-'4'). + return $this->map_scheme_to_global( 'typography', $scheme ); + } + + public function register_controls() { + $controls_manager = Plugin::$instance->controls_manager; + + $controls_manager->register( new Repeater() ); + } + + public function is_custom_colors_enabled() { + return ! get_option( 'elementor_disable_color_schemes' ); + } + + public function is_custom_typography_enabled() { + return ! get_option( 'elementor_disable_typography_schemes' ); + } + + /** + * Add kit wrapper body class. + * + * It should be added even for non Elementor pages, + * in order to support embedded templates. + */ + private function add_body_class() { + $kit = $this->get_kit_for_frontend(); + + if ( $kit ) { + Plugin::$instance->frontend->add_body_class( 'elementor-kit-' . $kit->get_main_id() ); + } + } + + /** + * Send a confirm message before move a kit to trash, or if delete permanently not for trash. + * + * @param $post_id + * @param false $is_permanently_delete + */ + private function before_delete_kit( $post_id, $is_permanently_delete = false ) { + if ( $this->should_skip_trash_kit_confirmation ) { + return; + } + + $document = Plugin::$instance->documents->get( $post_id ); + + if ( + ! $document || + ! $this->is_kit( $post_id ) || + isset( $_GET['force_delete_kit'] ) || // phpcs:ignore -- nonce validation is not require here. + ( $is_permanently_delete && $document->is_trash() ) + ) { + return; + } + + ob_start(); + require __DIR__ . '/views/trash-kit-confirmation.php'; + + $confirmation_content = ob_get_clean(); + + // PHPCS - the content does not contain user input value. + wp_die( new \WP_Error( 'cant_delete_kit', $confirmation_content ) ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped + } + + /** + * Add 'Edit with elementor -> Site Settings' in admin bar. + * + * @param [] $admin_bar_config + * + * @return array $admin_bar_config + */ + private function add_menu_in_admin_bar( $admin_bar_config ) { + $document = Plugin::$instance->documents->get( get_the_ID() ); + + if ( ! $document || ! $document->is_built_with_elementor() ) { + $recent_edited_post = Utils::get_recently_edited_posts_query( [ + 'posts_per_page' => 1, + ] ); + + if ( $recent_edited_post->post_count ) { + $posts = $recent_edited_post->get_posts(); + $document = Plugin::$instance->documents->get( reset( $posts )->ID ); + } + } + + if ( $document ) { + $document_edit_url = add_query_arg( + [ + 'active-document' => $this->get_active_id(), + ], + $document->get_edit_url() + ); + + $admin_bar_config['elementor_edit_page']['children'][] = [ + 'id' => 'elementor_site_settings', + 'title' => esc_html__( 'Site Settings', 'elementor' ), + 'sub_title' => esc_html__( 'Site', 'elementor' ), + 'href' => $document_edit_url, + 'class' => 'elementor-site-settings', + 'parent_class' => 'elementor-second-section', + ]; + } + + return $admin_bar_config; + } + + public function __construct() { + add_action( 'elementor/documents/register', [ $this, 'register_document' ] ); + add_filter( 'elementor/editor/localize_settings', [ $this, 'localize_settings' ] ); + add_filter( 'elementor/editor/footer', [ $this, 'render_panel_html' ] ); + add_action( 'elementor/frontend/after_enqueue_styles', [ $this, 'frontend_before_enqueue_styles' ], 0 ); + add_action( 'elementor/preview/enqueue_styles', [ $this, 'preview_enqueue_styles' ], 0 ); + add_action( 'elementor/controls/register', [ $this, 'register_controls' ] ); + + add_action( 'wp_trash_post', function ( $post_id ) { + $this->before_delete_kit( $post_id ); + } ); + + add_action( 'before_delete_post', function ( $post_id ) { + $this->before_delete_kit( $post_id, true ); + } ); + + add_action( 'update_option_blogname', function ( $old_value, $value ) { + $this->update_kit_settings_based_on_option( 'site_name', $value ); + }, 10, 2 ); + + add_action( 'update_option_blogdescription', function ( $old_value, $value ) { + $this->update_kit_settings_based_on_option( 'site_description', $value ); + }, 10, 2 ); + + add_action( 'wp_head', function() { + $this->add_body_class(); + } ); + + add_filter( 'elementor/frontend/admin_bar/settings', function ( $admin_bar_config ) { + return $this->add_menu_in_admin_bar( $admin_bar_config ); + }, 9 /* Before site-editor (theme-builder) */ ); + } +} diff --git a/wp-content/plugins/elementor/core/kits/views/panel.php b/wp-content/plugins/elementor/core/kits/views/panel.php new file mode 100644 index 0000000..2f57b2f --- /dev/null +++ b/wp-content/plugins/elementor/core/kits/views/panel.php @@ -0,0 +1,48 @@ + + + + + diff --git a/wp-content/plugins/elementor/core/kits/views/trash-kit-confirmation.php b/wp-content/plugins/elementor/core/kits/views/trash-kit-confirmation.php new file mode 100644 index 0000000..accb54d --- /dev/null +++ b/wp-content/plugins/elementor/core/kits/views/trash-kit-confirmation.php @@ -0,0 +1,64 @@ + '1' ], + get_delete_post_link( $post_id, '', $is_permanently_delete ) +); +?> +

    + +

    + +

    + +

    + +
    + + + + + + + + + diff --git a/wp-content/plugins/elementor/core/logger/items/base.php b/wp-content/plugins/elementor/core/logger/items/base.php new file mode 100644 index 0000000..f4e5c18 --- /dev/null +++ b/wp-content/plugins/elementor/core/logger/items/base.php @@ -0,0 +1,178 @@ +date = current_time( 'mysql' ); + $this->message = ! empty( $args['message'] ) ? esc_html( $args['message'] ) : ''; + $this->type = ! empty( $args['type'] ) ? $args['type'] : 'info'; + $this->meta = ! empty( $args['meta'] ) ? $args['meta'] : []; + $this->args = $args; + + $this->set_trace(); + } + + public function __get( $name ) { + if ( property_exists( $this, $name ) ) { + return $this->{$name}; + } + + return ''; + } + + public function __toString() { + $vars = get_object_vars( $this ); + return strtr( static::FORMAT, $vars ); + } + + #[\ReturnTypeWillChange] + public function jsonSerialize() { + return [ + 'class' => get_class( $this ), + 'item' => [ + 'date' => $this->date, + 'message' => $this->message, + 'type' => $this->type, + 'meta' => $this->meta, + 'times' => $this->times, + 'times_dates' => $this->times_dates, + 'args' => $this->args, + ], + ]; + } + + public function deserialize( $properties ) { + $this->date = ! empty( $properties['date'] ) && is_string( $properties['date'] ) ? $properties['date'] : ''; + $this->message = ! empty( $properties['message'] ) && is_string( $properties['message'] ) ? $properties['message'] : ''; + $this->type = ! empty( $properties['type'] ) && is_string( $properties['type'] ) ? $properties['type'] : ''; + $this->meta = ! empty( $properties['meta'] ) && is_array( $properties['meta'] ) ? $properties['meta'] : []; + $this->times = ! empty( $properties['times'] ) && is_string( $properties['times'] ) ? $properties['times'] : ''; + $this->times_dates = ! empty( $properties['times_dates'] ) && is_array( $properties['times_dates'] ) ? $properties['times_dates'] : []; + $this->args = ! empty( $properties['args'] ) && is_array( $properties['args'] ) ? $properties['args'] : []; + } + + /** + * @return Log_Item_Interface | null + */ + public static function from_json( $str ) { + $obj = json_decode( $str, true ); + if ( ! array_key_exists( 'class', $obj ) ) { + return null; + } + $class = $obj['class']; + if ( class_exists( $class ) ) { + /** @var Base $item */ + $item = new $class( $obj['item']['message'] ); + $item->deserialize( $obj['item'] ); + return $item; + } + + return null; + } + + public function to_formatted_string( $output_format = 'html' ) { + $vars = get_object_vars( $this ); + $format = static::FORMAT; + if ( 'html' === $output_format ) { + $format = str_replace( 'message', 'message', static::FORMAT ); + } + if ( empty( $vars['meta'] ) ) { + $format = str_replace( '[meta]', '', $format ); + } else { + $vars['meta'] = stripslashes( var_export( $vars['meta'], true ) ); // @codingStandardsIgnoreLine + } + return strtr( $format, $vars ); + } + + public function get_fingerprint() { + $unique_key = $this->type . $this->message . var_export( $this->meta, true ); // @codingStandardsIgnoreLine + //info messages are not be aggregated: + if ( 'info' === $this->type ) { + $unique_key .= $this->date; + } + return md5( $unique_key ); + } + + public function increase_times( $item, $truncate = true ) { + $this->times++; + $this->times_dates[] = $item->date; + + if ( $truncate && ( self::MAX_LOG_ENTRIES < count( $this->times_dates ) ) ) { + $this->times_dates = array_slice( $this->times_dates, -self::MAX_LOG_ENTRIES ); + } + } + + public function format( $format = 'html' ) { + $trace = $this->format_trace(); + if ( empty( $trace ) ) { + return $this->to_formatted_string( $format ); + } + $copy = clone $this; + $copy->meta['trace'] = $trace; + return $copy->to_formatted_string( $format ); + } + + public function get_name() { + return 'Log'; + } + + private function format_trace() { + $trace = empty( $this->meta['trace'] ) ? '' : $this->meta['trace']; + + if ( is_string( $trace ) ) { + return $trace; + } + + $trace_str = ''; + foreach ( $trace as $key => $trace_line ) { + $format = static::TRACE_FORMAT; + $trace_line['key'] = $key; + if ( empty( $trace_line['file'] ) ) { + $format = str_replace( 'file(line): ', '', $format ); + } + + $trace_str .= PHP_EOL . strtr( $format, $trace_line ); + $trace_str .= empty( $trace_line['args'] ) ? '' : var_export( $trace_line['args'], true ); // @codingStandardsIgnoreLine + } + + return $trace_str . PHP_EOL; + } + + private function set_trace() { + if ( ! empty( $this->args['trace'] ) && true === $this->args['trace'] ) { + $limit = empty( $this->args['trace_limit'] ) ? static::TRACE_LIMIT : $this->args['trace_limit']; + + $stack = debug_backtrace( DEBUG_BACKTRACE_IGNORE_ARGS ); // @codingStandardsIgnoreLine + + while ( ! empty( $stack ) && ! empty( $stack[0]['file'] ) && ( false !== strpos( $stack[0]['file'], 'core' . DIRECTORY_SEPARATOR . 'logger' ) ) ) { + array_shift( $stack ); + } + + $this->meta['trace'] = array_slice( $stack, 0, $limit ); + + return; + } + + if ( is_array( $this->args ) ) { + unset( $this->args['trace'] ); + } + } +} diff --git a/wp-content/plugins/elementor/core/logger/items/file.php b/wp-content/plugins/elementor/core/logger/items/file.php new file mode 100644 index 0000000..fb31bce --- /dev/null +++ b/wp-content/plugins/elementor/core/logger/items/file.php @@ -0,0 +1,39 @@ +file = empty( $args['file'] ) ? '' : $args['file']; + $this->line = empty( $args['line'] ) ? '' : $args['line']; + } + + #[\ReturnTypeWillChange] + public function jsonSerialize() { + $json_arr = parent::jsonSerialize(); + $json_arr['file'] = $this->file; + $json_arr['line'] = $this->line; + return $json_arr; + } + + public function deserialize( $properties ) { + parent::deserialize( $properties ); + $this->file = ! empty( $properties['file'] ) && is_string( $properties['file'] ) ? $properties['file'] : ''; + $this->line = ! empty( $properties['line'] ) && is_string( $properties['line'] ) ? $properties['line'] : ''; + } + + public function get_name() { + return 'File'; + } +} diff --git a/wp-content/plugins/elementor/core/logger/items/js.php b/wp-content/plugins/elementor/core/logger/items/js.php new file mode 100644 index 0000000..9c57dee --- /dev/null +++ b/wp-content/plugins/elementor/core/logger/items/js.php @@ -0,0 +1,36 @@ +column = $args['column']; + $this->file = $args['url']; + $this->date = gmdate( 'Y-m-d H:i:s', $args['timestamp'] ); + } + + #[\ReturnTypeWillChange] + public function jsonSerialize() { + $json_arr = parent::jsonSerialize(); + $json_arr['column'] = $this->column; + return $json_arr; + } + + public function deserialize( $properties ) { + parent::deserialize( $properties ); + $this->column = ! empty( $properties['column'] ) && is_string( $properties['column'] ) ? $properties['column'] : ''; + } + + public function get_name() { + return 'JS'; + } +} diff --git a/wp-content/plugins/elementor/core/logger/items/log-item-interface.php b/wp-content/plugins/elementor/core/logger/items/log-item-interface.php new file mode 100644 index 0000000..cd54b4e --- /dev/null +++ b/wp-content/plugins/elementor/core/logger/items/log-item-interface.php @@ -0,0 +1,73 @@ + '', + ]; + } + + public function print_html_label( $log_label ) { + $title = $this->get_title(); + + if ( empty( $_GET[ self::CLEAR_LOG_ACTION ] ) ) { // phpcs:ignore -- nonce validation is not require here. + $nonce = wp_create_nonce( self::CLEAR_LOG_ACTION ); + $url = add_query_arg( [ + self::CLEAR_LOG_ACTION => 1, + '_wpnonce' => $nonce, + ] ); + + $title .= '' . esc_html__( 'Clear Log', 'elementor' ) . ''; + $title .= ''; + } + + parent::print_html_label( $title ); + } + + public function get_log_entries() { + /** @var \Elementor\Core\Logger\Manager $manager */ + $manager = Manager::instance(); + + /** @var \Elementor\Core\Logger\Loggers\Db $logger */ + $logger = $manager->get_logger( 'db' ); + + if ( ! empty( $_GET[ self::CLEAR_LOG_ACTION ] ) ) { + $nonce = Utils::get_super_global_value( $_GET, '_wpnonce' ); + + if ( ! wp_verify_nonce( $nonce, self::CLEAR_LOG_ACTION ) ) { + wp_die( 'Invalid Nonce', 'Invalid Nonce', [ + 'back_link' => true, + ] ); + } + + $logger->clear(); + } + + $log_string = 'No entries to display'; + $log_entries = $logger->get_formatted_log_entries( self::MAX_ENTRIES, false ); + + if ( ! empty( $log_entries ) ) { + $entries_string = ''; + foreach ( $log_entries as $key => $log_entry ) { + if ( $log_entry['count'] ) { + $entries_string .= '

    ' . sprintf( '%s: showing %s of %s', $key, $log_entry['count'], $log_entry['total_count'] ) . '

    '; + $entries_string .= '
    ' . $log_entry['entries'] . '
    '; + } + } + + if ( ! empty( $entries_string ) ) { + $log_string = $entries_string; + } + } + + return [ + 'value' => $log_string, + ]; + } + + public function get_raw_log_entries() { + $log_string = 'No entries to display'; + + /** @var \Elementor\Core\Logger\Manager $manager */ + $manager = Manager::instance(); + $logger = $manager->get_logger(); + $log_entries = $logger->get_formatted_log_entries( self::MAX_ENTRIES, false ); + + if ( ! empty( $log_entries ) ) { + $entries_string = PHP_EOL; + foreach ( $log_entries as $key => $log_entry ) { + if ( $log_entry['count'] ) { + $entries_string .= sprintf( '%s: showing %s of %s', $key, $log_entry['count'], $log_entry['total_count'] ) . $log_entry['entries'] . PHP_EOL; + } + } + + if ( ! empty( $entries_string ) ) { + $log_string = $entries_string; + } + } + + return [ + 'value' => $log_string, + ]; + } +} diff --git a/wp-content/plugins/elementor/core/logger/loggers/base.php b/wp-content/plugins/elementor/core/logger/loggers/base.php new file mode 100644 index 0000000..bf8baa3 --- /dev/null +++ b/wp-content/plugins/elementor/core/logger/loggers/base.php @@ -0,0 +1,93 @@ +create_item( $item, $type, $args ); + } + $this->save_log( $item ); + } + + public function info( $message, $args = [] ) { + $this->log( $message, self::LEVEL_INFO, $args ); + } + + public function notice( $message, $args = [] ) { + $this->log( $message, self::LEVEL_NOTICE, $args ); + } + + public function warning( $message, $args = [] ) { + $this->log( $message, self::LEVEL_WARNING, $args ); + } + + public function error( $message, $args = [] ) { + $this->log( $message, self::LEVEL_ERROR, $args ); + } + + /** + * @param string $message + * @param string $type + * @param array $args + * + * @return Log_Item_Interface + */ + private function create_item( $message, $type, $args = [] ) { + $args['message'] = $message; + $args['type'] = $type; + + $item = new Log_Item( $args ); + + return $item; + } + + public function get_formatted_log_entries( $max_entries, $table = true ) { + $entries = $this->get_log(); + + if ( empty( $entries ) ) { + return [ + 'All' => [ + 'total_count' => 0, + 'count' => 0, + 'entries' => '', + ], + ]; + } + + $sorted_entries = []; + $open_tag = $table ? '' : PHP_EOL; + + $format = $table ? 'html' : 'raw'; + + foreach ( $entries as $entry ) { + /** @var Log_Item $entry */ + $sorted_entries[ $entry->get_name() ][] = $open_tag . $entry->format( $format ) . $close_tab; + } + + $formatted_entries = []; + foreach ( $sorted_entries as $key => $sorted_entry ) { + $formatted_entries[ $key ]['total_count'] = count( $sorted_entry ); + $formatted_entries[ $key ]['count'] = count( $sorted_entry ); + $sorted_entry = array_slice( $sorted_entry, -$max_entries ); + $formatted_entries[ $key ]['count'] = count( $sorted_entry ); + $formatted_entries[ $key ]['entries'] = implode( $sorted_entry ); + } + return $formatted_entries; + } +} diff --git a/wp-content/plugins/elementor/core/logger/loggers/db.php b/wp-content/plugins/elementor/core/logger/loggers/db.php new file mode 100644 index 0000000..3031b39 --- /dev/null +++ b/wp-content/plugins/elementor/core/logger/loggers/db.php @@ -0,0 +1,54 @@ +maybe_truncate_log(); + + $id = $item->get_fingerprint(); + + if ( empty( $log[ $id ] ) ) { + $log[ $id ] = $item; + } + + $log[ $id ]->increase_times( $item ); + + update_option( self::LOG_NAME, $log, 'no' ); + } + + public function clear() { + delete_option( self::LOG_NAME ); + } + + private function maybe_truncate_log() { + /** @var Log_Item[] $log */ + $log = $this->get_log(); + + if ( Log_Item::MAX_LOG_ENTRIES < count( $log ) ) { + $log = array_slice( $log, -Log_Item::MAX_LOG_ENTRIES ); + } + + return $log; + } + + public function get_log() { + // Clear cache. + wp_cache_delete( self::LOG_NAME, 'options' ); + + $log = get_option( self::LOG_NAME, [] ); + + // In case the DB log is corrupted. + if ( ! is_array( $log ) ) { + $log = []; + } + + return $log; + } +} diff --git a/wp-content/plugins/elementor/core/logger/loggers/logger-interface.php b/wp-content/plugins/elementor/core/logger/loggers/logger-interface.php new file mode 100644 index 0000000..ad4e8e6 --- /dev/null +++ b/wp-content/plugins/elementor/core/logger/loggers/logger-interface.php @@ -0,0 +1,64 @@ + in format + * + * @return array [ 'key' => [ 'total_count' => int, 'count' => int, 'entries' => Log_Item[] ] ] + */ + public function get_formatted_log_entries( $max_entries, $table = true ); + +} diff --git a/wp-content/plugins/elementor/core/logger/manager.php b/wp-content/plugins/elementor/core/logger/manager.php new file mode 100644 index 0000000..f052faa --- /dev/null +++ b/wp-content/plugins/elementor/core/logger/manager.php @@ -0,0 +1,281 @@ +get_log_type_from_php_error( $last_error['type'] ); + $last_error['trace'] = true; + + $item = new PHP( $last_error ); + + $this->get_logger()->log( $item ); + + if ( $should_exit ) { + exit; + } + } + + public function rest_error_handler( $error_number, $error_message, $error_file, $error_line ) { + // Temporary solution until all PHP notices will be fixed in the core and pro. + if ( Utils::is_wp_cli() ) { + return null; + } + + $error = new \WP_Error( $error_number, $error_message, [ + 'type' => $error_number, + 'message' => $error_message, + 'file' => $error_file, + 'line' => $error_line, + ] ); + + if ( ! Utils::is_elementor_path( $error_file ) ) { + // Do execute PHP internal error handler. + return false; + } + + $is_an_error = in_array( // It can be notice or warning + $error_number, + [ E_ERROR, E_CORE_ERROR, E_COMPILE_ERROR, E_USER_ERROR ], + true + ); + + $error_data = $error->get_error_data(); + + // TODO: This part should be modular, temporary hard-coded. + // Notify $e.data. + if ( $is_an_error && ! headers_sent() ) { + header( 'Content-Type: application/json; charset=UTF-8' ); + + http_response_code( 500 ); + + if ( defined( 'WP_DEBUG' ) && WP_DEBUG ) { + echo wp_json_encode( $error_data ); + } else { + echo wp_json_encode( [ + 'message' => 'Server error, see Elementor => System Info', + ] ); + } + } + + $this->shutdown( $error_data, $is_an_error ); + } + + public function register_error_handler() { + set_error_handler( [ $this, 'rest_error_handler' ], E_ALL ); + } + + public function add_system_info_report() { + System_Info::add_report( + 'log', [ + 'file_name' => __DIR__ . '/log-reporter.php', + 'class_name' => __NAMESPACE__ . '\Log_Reporter', + ] + ); + } + + /** + * Javascript log. + * + * Log Elementor errors and save them in the database. + * + * Fired by `wp_ajax_elementor_js_log` action. + * + */ + public function js_log() { + /** @var Module $ajax */ + $ajax = Plugin::$instance->common->get_component( 'ajax' ); + + // PHPCS ignore is added throughout this method because nonce verification happens in the $ajax->verify_request_nonce() method. + if ( ! $ajax->verify_request_nonce() || empty( $_POST['data'] ) ) { // phpcs:ignore WordPress.Security.NonceVerification.Missing + wp_send_json_error(); + } + + if ( ! current_user_can( Editor::EDITING_CAPABILITY ) ) { + wp_send_json_error( 'Permission denied' ); + } + + // PHPCS - See comment above. + $data = Utils::get_super_global_value( $_POST, 'data' ) ?? []; // phpcs:ignore WordPress.Security.NonceVerification.Missing + + array_walk_recursive( $data, function( &$value ) { + $value = sanitize_text_field( $value ); + } ); + + // PHPCS - See comment above. + foreach ( $data as $error ) { // phpcs:ignore WordPress.Security.NonceVerification.Missing + $error['type'] = Logger_Interface::LEVEL_ERROR; + + if ( ! empty( $error['customFields'] ) ) { + $error['meta'] = $error['customFields']; + } + + $item = new JS( $error ); + $this->get_logger()->log( $item ); + } + + wp_send_json_success(); + } + + public function register_logger( $name, $class ) { + $this->loggers[ $name ] = $class; + } + + public function set_default_logger( $name ) { + if ( ! empty( $this->loggers[ $name ] ) ) { + $this->default_logger = $name; + } + } + + public function register_default_loggers() { + $this->register_logger( 'db', 'Elementor\Core\Logger\Loggers\Db' ); + $this->set_default_logger( 'db' ); + } + + /** + * @param string $name + * + * @return Logger_Interface + */ + public function get_logger( $name = '' ) { + $this->register_loggers(); + + if ( empty( $name ) || ! isset( $this->loggers[ $name ] ) ) { + $name = $this->default_logger; + } + + if ( ! $this->get_component( $name ) ) { + $this->add_component( $name, new $this->loggers[ $name ]() ); + } + + return $this->get_component( $name ); + } + + /** + * @param string $message + * @param array $args + * + * @return void + */ + public function log( $message, $args = [] ) { + $this->get_logger()->log( $message, $args ); + } + + /** + * @param string $message + * @param array $args + * + * @return void + */ + public function info( $message, $args = [] ) { + $this->get_logger()->info( $message, $args ); + } + + /** + * @param string $message + * @param array $args + * + * @return void + */ + public function notice( $message, $args = [] ) { + $this->get_logger()->notice( $message, $args ); + } + + /** + * @param string $message + * @param array $args + * + * @return void + */ + public function warning( $message, $args = [] ) { + $this->get_logger()->warning( $message, $args ); + } + + /** + * @param string $message + * @param array $args + * + * @return void + */ + public function error( $message, $args = [] ) { + $this->get_logger()->error( $message, $args ); + } + + private function get_log_type_from_php_error( $type ) { + $error_map = [ + E_CORE_ERROR => Logger_Interface::LEVEL_ERROR, + E_ERROR => Logger_Interface::LEVEL_ERROR, + E_USER_ERROR => Logger_Interface::LEVEL_ERROR, + E_COMPILE_ERROR => Logger_Interface::LEVEL_ERROR, + E_RECOVERABLE_ERROR => Logger_Interface::LEVEL_ERROR, + E_PARSE => Logger_Interface::LEVEL_ERROR, + E_STRICT => Logger_Interface::LEVEL_ERROR, + + E_WARNING => Logger_Interface::LEVEL_WARNING, + E_USER_WARNING => Logger_Interface::LEVEL_WARNING, + E_CORE_WARNING => Logger_Interface::LEVEL_WARNING, + E_COMPILE_WARNING => Logger_Interface::LEVEL_WARNING, + + E_NOTICE => Logger_Interface::LEVEL_NOTICE, + E_USER_NOTICE => Logger_Interface::LEVEL_NOTICE, + E_DEPRECATED => Logger_Interface::LEVEL_NOTICE, + E_USER_DEPRECATED => Logger_Interface::LEVEL_NOTICE, + ]; + + return isset( $error_map[ $type ] ) ? $error_map[ $type ] : Logger_Interface::LEVEL_ERROR; + } + + private function register_loggers() { + if ( ! did_action( 'elementor/loggers/register' ) ) { + do_action( 'elementor/loggers/register', $this ); + } + } + + public function __construct() { + register_shutdown_function( [ $this, 'shutdown' ] ); + + add_action( 'admin_init', [ $this, 'add_system_info_report' ], 80 ); + + add_action( 'wp_ajax_elementor_js_log', [ $this, 'js_log' ] ); + + add_action( 'elementor/loggers/register', [ $this, 'register_default_loggers' ] ); + } +} diff --git a/wp-content/plugins/elementor/core/modules-manager.php b/wp-content/plugins/elementor/core/modules-manager.php new file mode 100644 index 0000000..90e91bc --- /dev/null +++ b/wp-content/plugins/elementor/core/modules-manager.php @@ -0,0 +1,158 @@ +get_modules_namespace_prefix(); + + foreach ( $this->get_modules_names() as $module_name ) { + $class_name = str_replace( '-', ' ', $module_name ); + + $class_name = str_replace( ' ', '', ucwords( $class_name ) ); + + $class_name = $modules_namespace_prefix . '\\Modules\\' . $class_name . '\Module'; + + /** @var Module $class_name */ + + $experimental_data = $class_name::get_experimental_data(); + + if ( $experimental_data ) { + Plugin::$instance->experiments->add_feature( $experimental_data ); + + if ( ! Plugin::$instance->experiments->is_feature_active( $experimental_data['name'] ) ) { + continue; + } + } + + if ( $class_name::is_active() ) { + $this->modules[ $module_name ] = $class_name::instance(); + } + } + } + + /** + * Get modules names. + * + * Retrieve the modules names. + * + * @since 2.0.0 + * @access public + * + * @return string[] Modules names. + */ + public function get_modules_names() { + return [ + 'admin-bar', + 'history', + 'library', + 'dynamic-tags', + 'page-templates', + 'gutenberg', + 'wp-cli', + 'safe-mode', + 'ai', + 'notifications', + 'usage', + 'dev-tools', + 'landing-pages', + 'compatibility-tag', + 'generator-tag', + 'elements-color-picker', + 'shapes', + 'favorites', + 'admin-top-bar', + 'element-manager', + 'nested-elements', + // Depends on Nested Elements module + 'nested-tabs', + 'nested-accordion', + 'container-converter', + 'web-cli', + 'promotions', + 'notes', + 'performance-lab', + 'lazyload', + 'image-loading-optimization', + 'kit-elements-defaults', + 'announcements', + 'site-navigation', + 'styleguide', + 'apps', + 'editor-events', + ]; + } + + /** + * Get modules. + * + * Retrieve all the registered modules or a specific module. + * + * @since 2.0.0 + * @access public + * + * @param string $module_name Module name. + * + * @return null|Module|Module[] All the registered modules or a specific module. + */ + public function get_modules( $module_name ) { + if ( $module_name ) { + if ( isset( $this->modules[ $module_name ] ) ) { + return $this->modules[ $module_name ]; + } + + return null; + } + + return $this->modules; + } + + /** + * Get modules namespace prefix. + * + * Retrieve the modules namespace prefix. + * + * @since 2.0.0 + * @access protected + * + * @return string Modules namespace prefix. + */ + protected function get_modules_namespace_prefix() { + return 'Elementor'; + } +} diff --git a/wp-content/plugins/elementor/core/page-assets/data-managers/base.php b/wp-content/plugins/elementor/core/page-assets/data-managers/base.php new file mode 100644 index 0000000..94cb1c4 --- /dev/null +++ b/wp-content/plugins/elementor/core/page-assets/data-managers/base.php @@ -0,0 +1,345 @@ +assets_config['key']; + } + + /** + * Get Relative Version. + * + * The asset data will be re-evaluated according the version number. + * + * @since 3.3.0 + * @access protected + * + * @return string + */ + protected function get_version() { + return $this->assets_config['version']; + } + + /** + * Get Asset Path. + * + * The asset data will be extracted from the file path. + * + * @since 3.3.0 + * @access protected + * + * @return string + */ + protected function get_file_path() { + return $this->assets_config['file_path']; + } + + /** + * Get Config Data. + * + * Holds a unique data relevant for the specific assets category type. + * + * @since 3.3.0 + * @access protected + * + * @return string|array + */ + protected function get_config_data( $key = '' ) { + if ( isset( $this->assets_config['data'] ) ) { + if ( $key ) { + if ( isset( $this->assets_config['data'][ $key ] ) ) { + return $this->assets_config['data'][ $key ]; + } + + return ''; + } + + return $this->assets_config['data']; + } + + return []; + } + + /** + * Set Asset Data. + * + * Responsible for setting the current asset data. + * + * @since 3.3.0 + * @access protected + * + * @return void + */ + protected function set_asset_data( $asset_key ) { + if ( ! isset( $this->assets_data[ $asset_key ] ) ) { + $this->assets_data[ $asset_key ] = []; + } + + $this->assets_data[ $asset_key ]['content'] = $this->get_asset_content(); + $this->assets_data[ $asset_key ]['version'] = $this->get_version(); + + $this->save_asset_data( $asset_key ); + } + + /** + * Save Asset Data. + * + * Responsible for saving the asset data in the DB. + * + * @since 3.3.0 + * @access protected + * + * @param string $asset_key + * + * @return void + */ + protected function save_asset_data( $asset_key ) { + $assets_data = $this->get_saved_assets_data(); + + $content_type = $this->content_type; + $assets_category = $this->assets_category; + + $assets_data[ $content_type ][ $assets_category ][ $asset_key ] = $this->assets_data[ $asset_key ]; + + update_option( self::ASSETS_DATA_KEY, $assets_data ); + } + + /** + * Is Asset Version Changed. + * + * Responsible for comparing the saved asset data version to the current relative version. + * + * @since 3.3.0 + * @access protected + * + * @param string $asset_key + * + * @return boolean + */ + protected function is_asset_version_changed( $version ) { + return $this->get_version() !== $version; + } + + /** + * Get File Data. + * + * Getting a file content or size. + * + * @since 3.3.0 + * @access protected + * + * @param string $data_type (content|size) + * @param string $file_key - In case that the same file data is needed for multiple assets (like a JSON file), the file data key should be the same for all shared assets to make sure that the file is being read only once. + * + * @return string|number + */ + protected function get_file_data( $data_type, $file_key = '' ) { + $asset_key = $file_key ? $file_key : $this->get_key(); + + if ( isset( $this->files_data[ $asset_key ][ $data_type ] ) ) { + return $this->files_data[ $asset_key ][ $data_type ]; + } + + if ( ! isset( $this->files_data[ $asset_key ] ) ) { + $this->files_data[ $asset_key ] = []; + } + + $asset_path = $this->get_file_path(); + + if ( 'content' === $data_type ) { + $data = Utils::file_get_contents( $asset_path ); + + if ( ! $data ) { + $data = ''; + } + } elseif ( 'size' === $data_type ) { + $data = file_exists( $asset_path ) ? filesize( $asset_path ) : 0; + } + + $this->files_data[ $asset_key ][ $data_type ] = $data; + + return $data; + } + + /** + * Get Saved Assets Data. + * + * Getting the assets data from the DB. + * + * @since 3.3.0 + * @access protected + * + * @return array + */ + protected function get_saved_assets_data() { + $assets_data = get_option( self::ASSETS_DATA_KEY, [] ); + + $content_type = $this->content_type; + $assets_category = $this->assets_category; + + if ( ! isset( $assets_data[ $content_type ] ) ) { + $assets_data[ $content_type ] = []; + } + + if ( ! isset( $assets_data[ $content_type ][ $assets_category ] ) ) { + $assets_data[ $content_type ][ $assets_category ] = []; + } + return $assets_data; + } + + /** + * Get Config. + * + * Getting the assets data config. + * + * @since 3.5.0 + * @access protected + * + * @return array + */ + protected function get_config( $data ) { + return []; + } + + /** + * Init Asset Data. + * + * Initialize the asset data and handles the asset content updates when needed. + * + * @since 3.3.0 + * @access public + * + * @param array $config { + * @type string 'key' + * @type string 'version' + * @type string 'file_path' + * @type array 'data' + * } + * + * @return void + */ + public function init_asset_data( $config ) { + $this->assets_config = $config; + + $asset_key = $config['key']; + + $asset_data = isset( $this->assets_data[ $asset_key ] ) ? $this->assets_data[ $asset_key ] : []; + + if ( ! $asset_data || $this->is_asset_version_changed( $asset_data['version'] ) ) { + $this->set_asset_data( $asset_key ); + } + } + + /** + * Get Asset Data From Config. + * + * Getting the asset data content from config. + * + * @since 3.3.0 + * @access public + * + * @param array $config { + * @type string 'key' + * @type string 'version' + * @type string 'file_path' + * @type array 'data' + * } + * + * @return mixed + */ + public function get_asset_data_from_config( array $config ) { + $this->init_asset_data( $config ); + + $asset_key = $config['key']; + + return $this->assets_data[ $asset_key ]['content']; + } + + /** + * Get Asset Data. + * + * Getting the asset data content. + * + * @since 3.5.0 + * @access public + * + * @param array $data + * + * @return mixed + */ + public function get_asset_data( array $data ) { + $config = $this->get_config( $data ); + + return $this->get_asset_data_from_config( $config ); + } + + public function __construct() { + $assets_data = $this->get_saved_assets_data(); + + $content_type = $this->content_type; + $assets_category = $this->assets_category; + + $this->assets_data = $assets_data[ $content_type ][ $assets_category ]; + } +} diff --git a/wp-content/plugins/elementor/core/page-assets/data-managers/font-icon-svg/base.php b/wp-content/plugins/elementor/core/page-assets/data-managers/font-icon-svg/base.php new file mode 100644 index 0000000..3a7dbe4 --- /dev/null +++ b/wp-content/plugins/elementor/core/page-assets/data-managers/font-icon-svg/base.php @@ -0,0 +1,21 @@ + $icon['value'], + 'version' => self::LIBRARY_CURRENT_VERSION, + 'file_path' => ELEMENTOR_ASSETS_PATH . 'lib/eicons/eicons.json', + 'data' => [ + 'icon_data' => [ + 'name' => $icon['value'], + 'library' => $icon['library'], + ], + ], + ]; + } + + protected function get_asset_content() { + $icon_data = $this->get_config_data( 'icon_data' ); + + $file_data = json_decode( $this->get_file_data( 'content', $icon_data['library'] ), true ); + + $icon_name = str_replace( 'eicon-', '', $icon_data['name'] ); + + $svg_data = $file_data[ $icon_name ]; + + return [ + 'width' => $svg_data['width'], + 'height' => $svg_data['height'], + 'path' => $svg_data['path'], + 'key' => $this->get_key(), + ]; + } +} diff --git a/wp-content/plugins/elementor/core/page-assets/data-managers/font-icon-svg/font-awesome.php b/wp-content/plugins/elementor/core/page-assets/data-managers/font-icon-svg/font-awesome.php new file mode 100644 index 0000000..2e47e1a --- /dev/null +++ b/wp-content/plugins/elementor/core/page-assets/data-managers/font-icon-svg/font-awesome.php @@ -0,0 +1,54 @@ + $icon_key, + 'version' => self::LIBRARY_CURRENT_VERSION, + 'file_path' => ELEMENTOR_ASSETS_PATH . 'lib/font-awesome/json/' . $icon_file_name . '.json', + 'data' => [ + 'icon_data' => [ + 'name' => $icon_name, + 'library' => $icon['library'], + ], + ], + ]; + } + + protected function get_asset_content() { + $icon_data = $this->get_config_data( 'icon_data' ); + + $file_data = json_decode( $this->get_file_data( 'content', $icon_data['library'] ), true ); + + $icon_name = $icon_data['name']; + + $svg_data = $file_data['icons'][ $icon_name ]; + + return [ + 'width' => $svg_data[0], + 'height' => $svg_data[1], + 'path' => $svg_data[4], + 'key' => $this->get_key(), + ]; + } +} diff --git a/wp-content/plugins/elementor/core/page-assets/data-managers/font-icon-svg/manager.php b/wp-content/plugins/elementor/core/page-assets/data-managers/font-icon-svg/manager.php new file mode 100644 index 0000000..5050b80 --- /dev/null +++ b/wp-content/plugins/elementor/core/page-assets/data-managers/font-icon-svg/manager.php @@ -0,0 +1,54 @@ + [ + 'regex' => '/^fa-/', + 'manager' => new Font_Awesome(), + ], + 'eicons' => [ + 'regex' => '/^eicons$/', + 'manager' => new E_Icons(), + ], + ]; + } + + return self::$data; + } + + public static function get_font_icon_svg_data( $icon ) { + $data = self::get_data(); + + $font_family = $icon['font_family']; + + $font_family_manager = $data[ $font_family ]['manager']; + + return $font_family_manager->get_asset_data( $icon ); + } + + public static function get_font_family( $icon_library ) { + foreach ( self::get_data() as $family => $data ) { + if ( preg_match( $data['regex'], $icon_library ) ) { + return $family; + } + } + + return ''; + } +} diff --git a/wp-content/plugins/elementor/core/page-assets/data-managers/responsive-widgets.php b/wp-content/plugins/elementor/core/page-assets/data-managers/responsive-widgets.php new file mode 100644 index 0000000..bd22508 --- /dev/null +++ b/wp-content/plugins/elementor/core/page-assets/data-managers/responsive-widgets.php @@ -0,0 +1,31 @@ +get_file_data( 'content' ); + + if ( $data ) { + $data = json_decode( $data, true ); + } + + return $data; + } +} diff --git a/wp-content/plugins/elementor/core/page-assets/data-managers/widgets-css.php b/wp-content/plugins/elementor/core/page-assets/data-managers/widgets-css.php new file mode 100644 index 0000000..2803b31 --- /dev/null +++ b/wp-content/plugins/elementor/core/page-assets/data-managers/widgets-css.php @@ -0,0 +1,37 @@ +get_file_data( 'size' ); + + $widget_css = ''; + + if ( $asset_css_file_size ) { + // If the file size is larger than 8KB then calling the external CSS file, otherwise, printing inline CSS. + if ( $asset_css_file_size > 8000 ) { + $asset_url = $this->get_config_data( 'file_url' ); + + $widget_css = sprintf( '', $asset_url ); + } else { + $widget_css = $this->get_file_data( 'content' ); + $widget_css = sprintf( '', $widget_css ); + } + } + + return $widget_css; + } +} diff --git a/wp-content/plugins/elementor/core/page-assets/loader.php b/wp-content/plugins/elementor/core/page-assets/loader.php new file mode 100644 index 0000000..c7c59ff --- /dev/null +++ b/wp-content/plugins/elementor/core/page-assets/loader.php @@ -0,0 +1,115 @@ +assets = [ + 'styles' => [ + 'e-animations' => [ + 'src' => $this->get_css_assets_url( 'animations', 'assets/lib/animations/', true ), + 'version' => ELEMENTOR_VERSION, + 'dependencies' => [], + ], + ], + 'scripts' => [], + ]; + } + + public function get_assets() { + if ( ! $this->assets ) { + $this->init_assets(); + } + + return $this->assets; + } + + /** + * @param array $assets { + * @type array 'styles' + * @type array 'scripts' + * } + */ + public function enable_assets( array $assets_data ) { + if ( ! $this->assets ) { + $this->init_assets(); + } + + foreach ( $assets_data as $assets_type => $assets_list ) { + foreach ( $assets_list as $asset_name ) { + $this->assets[ $assets_type ][ $asset_name ]['enabled'] = true; + } + } + } + + /** + * @param array $assets { + * @type array 'styles' + * @type array 'scripts' + * } + */ + public function add_assets( array $assets ) { + if ( ! $this->assets ) { + $this->init_assets(); + } + + $this->assets = array_replace_recursive( $this->assets, $assets ); + } + + public function enqueue_assets() { + $assets = $this->get_assets(); + $is_preview_mode = Plugin::$instance->preview->is_preview_mode(); + $is_optimized_assets_loading = Plugin::$instance->experiments->is_feature_active( 'e_optimized_assets_loading' ); + + foreach ( $assets as $assets_type => $assets_type_data ) { + foreach ( $assets_type_data as $asset_name => $asset_data ) { + if ( ! empty( $asset_data['enabled'] ) || $is_preview_mode || ! $is_optimized_assets_loading ) { + if ( 'scripts' === $assets_type ) { + wp_enqueue_script( $asset_name, $asset_data['src'], $asset_data['dependencies'], $asset_data['version'], true ); + } else { + wp_enqueue_style( $asset_name, $asset_data['src'], $asset_data['dependencies'], $asset_data['version'] ); + } + } + } + } + } + + private function register_assets() { + $assets = $this->get_assets(); + + foreach ( $assets as $assets_type => $assets_type_data ) { + foreach ( $assets_type_data as $asset_name => $asset_data ) { + if ( 'scripts' === $assets_type ) { + wp_register_script( $asset_name, $asset_data['src'], $asset_data['dependencies'], $asset_data['version'], true ); + } else { + wp_register_style( $asset_name, $asset_data['src'], $asset_data['dependencies'], $asset_data['version'] ); + } + } + } + } + + public function __construct() { + parent::__construct(); + + $this->register_assets(); + } +} diff --git a/wp-content/plugins/elementor/core/responsive/files/frontend.php b/wp-content/plugins/elementor/core/responsive/files/frontend.php new file mode 100644 index 0000000..94acc42 --- /dev/null +++ b/wp-content/plugins/elementor/core/responsive/files/frontend.php @@ -0,0 +1,197 @@ +template_file = $template_file; + + parent::__construct( $file_name ); + } + + /** + * @since 2.1.0 + * @access public + */ + public function parse_content() { + $breakpoints = Plugin::$instance->breakpoints->get_active_breakpoints(); + + $breakpoints_keys = array_keys( $breakpoints ); + + $file_content = Utils::file_get_contents( $this->template_file ); + + // The regex pattern parses placeholders located in the frontend _templates.scss file. + $file_content = preg_replace_callback( '/ELEMENTOR_SCREEN_([A-Z_]+)(?:_(MIN|MAX|NEXT))/', function ( $placeholder_data ) use ( $breakpoints_keys, $breakpoints ) { + // Handle BC for legacy template files and Elementor Pro builds. + $placeholder_data = $this->maybe_convert_placeholder_data( $placeholder_data ); + + $breakpoint_index = array_search( strtolower( $placeholder_data[1] ), $breakpoints_keys, true ); + + if ( 'DESKTOP' === $placeholder_data[1] ) { + if ( 'MIN' === $placeholder_data[2] ) { + $value = Plugin::$instance->breakpoints->get_desktop_min_point(); + } elseif ( isset( $breakpoints['widescreen'] ) ) { + // If the 'widescreen' breakpoint is active, the Desktop's max value is the Widescreen breakpoint - 1px. + $value = $breakpoints['widescreen']->get_value() - 1; + } else { + // If the 'widescreen' breakpoint is not active, the Desktop device should not have a max value. + $value = 99999; + } + } elseif ( false === $breakpoint_index ) { + // If the breakpoint in the placeholder is not active - use a -1 value for the media query, to make + // sure the setting is printed (to avoid a PHP error) but doesn't apply. + return -1; + } elseif ( 'WIDESCREEN' === $placeholder_data[1] ) { + $value = $breakpoints['widescreen']->get_value(); + } else { + $breakpoint_index = array_search( strtolower( $placeholder_data[1] ), $breakpoints_keys, true ); + + $is_max_point = 'MAX' === $placeholder_data[2]; + + // If the placeholder capture is `MOBILE_NEXT` or `TABLET_NEXT`, the original breakpoint value is used. + if ( ! $is_max_point && 'NEXT' !== $placeholder_data[2] ) { + $breakpoint_index--; + } + + $value = $breakpoints[ $breakpoints_keys[ $breakpoint_index ] ]->get_value(); + + if ( ! $is_max_point ) { + $value++; + } + } + + return $value . 'px'; + }, $file_content ); + + return $file_content; + } + + /** + * Load meta. + * + * Retrieve the file meta data. + * + * @since 2.1.0 + * @access protected + */ + protected function load_meta() { + $option = $this->load_meta_option(); + + $file_meta_key = $this->get_file_meta_key(); + + if ( empty( $option[ $file_meta_key ] ) ) { + return []; + } + + return $option[ $file_meta_key ]; + } + + /** + * Update meta. + * + * Update the file meta data. + * + * @since 2.1.0 + * @access protected + * + * @param array $meta New meta data. + */ + protected function update_meta( $meta ) { + $option = $this->load_meta_option(); + + $option[ $this->get_file_meta_key() ] = $meta; + + update_option( static::META_KEY, $option ); + } + + /** + * Delete meta. + * + * Delete the file meta data. + * + * @since 2.1.0 + * @access protected + */ + protected function delete_meta() { + $option = $this->load_meta_option(); + + $file_meta_key = $this->get_file_meta_key(); + + if ( isset( $option[ $file_meta_key ] ) ) { + unset( $option[ $file_meta_key ] ); + } + + if ( $option ) { + update_option( static::META_KEY, $option ); + } else { + delete_option( static::META_KEY ); + } + } + + /** + * @since 2.1.0 + * @access private + */ + private function get_file_meta_key() { + return pathinfo( $this->get_file_name(), PATHINFO_FILENAME ); + } + + /** + * @since 2.1.0 + * @access private + */ + private function load_meta_option() { + $option = get_option( static::META_KEY ); + + if ( ! $option ) { + $option = []; + } + + return $option; + } + + /** + * Maybe Convert Placeholder Data + * + * Converts responsive placeholders in Elementor CSS template files from the legacy format into the new format. + * Used for backwards compatibility for old Pro versions that were built with an Elementor Core version <3.2.0. + * + * @since 3.2.3 + * + * @param $placeholder_data + * @return mixed + */ + private function maybe_convert_placeholder_data( $placeholder_data ) { + switch ( $placeholder_data[1] ) { + case 'SM': + $placeholder_data[1] = 'MOBILE'; + break; + case 'MD': + $placeholder_data[1] = 'TABLET'; + break; + case 'LG': + $placeholder_data[1] = 'DESKTOP'; + } + + return $placeholder_data; + } +} diff --git a/wp-content/plugins/elementor/core/responsive/responsive.php b/wp-content/plugins/elementor/core/responsive/responsive.php new file mode 100644 index 0000000..eb7e44f --- /dev/null +++ b/wp-content/plugins/elementor/core/responsive/responsive.php @@ -0,0 +1,167 @@ + 0, + 'sm' => 480, + 'md' => 768, + 'lg' => 1025, + 'xl' => 1440, + 'xxl' => 1600, + ]; + + /** + * Editable breakpoint keys. + * + * Holds the editable breakpoint keys. + * + * @since 1.0.0 + * @deprecated 3.2.0 + * @access private + * @static + * + * @var array Editable breakpoint keys. + */ + private static $editable_breakpoints_keys = [ + 'md', + 'lg', + ]; + + /** + * Get default breakpoints. + * + * Retrieve the default responsive breakpoints. + * + * @since 1.0.0 + * @deprecated 3.2.0 Use `Elementor\Core\Breakpoints\Manager::get_default_config()` instead. + * @access public + * @static + * + * @return array Default breakpoints. + */ + public static function get_default_breakpoints() { + Plugin::$instance->modules_manager->get_modules( 'dev-tools' )->deprecation->deprecated_function( __METHOD__, '3.2.0', 'Elementor\Core\Breakpoints\Manager::get_default_config()' ); + + return self::$default_breakpoints; + } + + /** + * Get editable breakpoints. + * + * Retrieve the editable breakpoints. + * + * @since 1.0.0 + * @deprecated 3.2.0 + * @access public + * @static + * + * @return array Editable breakpoints. + */ + public static function get_editable_breakpoints() { + Plugin::$instance->modules_manager->get_modules( 'dev-tools' )->deprecation->deprecated_function( __METHOD__, '3.2.0' ); + + return array_intersect_key( self::get_breakpoints(), array_flip( self::$editable_breakpoints_keys ) ); + } + + /** + * Get breakpoints. + * + * Retrieve the responsive breakpoints. + * + * @since 1.0.0 + * @deprecated 3.2.0 + * @access public + * @static + * + * @return array Responsive breakpoints. + */ + public static function get_breakpoints() { + return array_reduce( + array_keys( self::$default_breakpoints ), function( $new_array, $breakpoint_key ) { + if ( ! in_array( $breakpoint_key, self::$editable_breakpoints_keys ) ) { + $new_array[ $breakpoint_key ] = self::$default_breakpoints[ $breakpoint_key ]; + } else { + $saved_option = Plugin::$instance->kits_manager->get_current_settings( self::BREAKPOINT_OPTION_PREFIX . $breakpoint_key ); + + $new_array[ $breakpoint_key ] = $saved_option ? (int) $saved_option : self::$default_breakpoints[ $breakpoint_key ]; + } + + return $new_array; + }, [] + ); + } + + /** + * @since 2.1.0 + * @deprecated 3.2.0 Use `Plugin::$instance->breakpoints->has_custom_breakpoints()` instead. + * @access public + * @static + */ + public static function has_custom_breakpoints() { + Plugin::$instance->modules_manager->get_modules( 'dev-tools' )->deprecation->deprecated_function( __METHOD__, '3.2.0', 'Plugin::$instance->breakpoints->has_custom_breakpoints()' ); + + return ! ! array_diff( self::$default_breakpoints, self::get_breakpoints() ); + } + + /** + * @since 2.1.0 + * @deprecated 3.2.0 Use `Elementor\Core\Breakpoints\Manager::get_stylesheet_templates_path()` instead. + * @access public + * @static + */ + public static function get_stylesheet_templates_path() { + Plugin::$instance->modules_manager->get_modules( 'dev-tools' )->deprecation->deprecated_function( __METHOD__, '3.2.0', 'Elementor\Core\Breakpoints\Manager::get_stylesheet_templates_path()' ); + + return Breakpoints_Manager::get_stylesheet_templates_path(); + } + + /** + * @since 2.1.0 + * @deprecated 3.2.0 Use `Elementor\Core\Breakpoints\Manager::compile_stylesheet_templates()` instead. + * @access public + * @static + */ + public static function compile_stylesheet_templates() { + Plugin::$instance->modules_manager->get_modules( 'dev-tools' )->deprecation->deprecated_function( __METHOD__, '3.2.0', 'Elementor\Core\Breakpoints\Manager::compile_stylesheet_templates()' ); + + Breakpoints_Manager::compile_stylesheet_templates(); + } +} diff --git a/wp-content/plugins/elementor/core/role-manager/role-manager-menu-item.php b/wp-content/plugins/elementor/core/role-manager/role-manager-menu-item.php new file mode 100644 index 0000000..b860590 --- /dev/null +++ b/wp-content/plugins/elementor/core/role-manager/role-manager-menu-item.php @@ -0,0 +1,42 @@ +role_manager = $role_manager; + } + + public function is_visible() { + return true; + } + + public function get_parent_slug() { + return Settings::PAGE_ID; + } + + public function get_label() { + return esc_html__( 'Role Manager', 'elementor' ); + } + + public function get_page_title() { + return esc_html__( 'Role Manager', 'elementor' ); + } + + public function get_capability() { + return 'manage_options'; + } + + public function render() { + $this->role_manager->display_settings_page(); + } +} diff --git a/wp-content/plugins/elementor/core/role-manager/role-manager.php b/wp-content/plugins/elementor/core/role-manager/role-manager.php new file mode 100644 index 0000000..2eda24d --- /dev/null +++ b/wp-content/plugins/elementor/core/role-manager/role-manager.php @@ -0,0 +1,348 @@ +get_role_manager_advanced_options(); + return static::$advanced_options; + } + + /** + * @since 2.0.0 + * @access protected + */ + protected function get_page_title() { + return esc_html__( 'Role Manager', 'elementor' ); + } + + /** + * @since 2.0.0 + * @access public + */ + public function register_admin_menu( Admin_Menu_Manager $admin_menu ) { + $admin_menu->register( static::PAGE_ID, new Role_Manager_Menu_Item( $this ) ); + } + + /** + * @param $promotion + * @param string $upgrade_url + * @return mixed + */ + private function replace_url( $promotion, string $upgrade_url ) { + if ( ! Validate_Promotion::domain_is_on_elementor_dot_com( $promotion['upgrade_url'] ) ) { + $promotion['upgrade_url'] = $upgrade_url; + } + return $promotion; + } + + /** + * @since 2.0.0 + * @access protected + */ + protected function create_tabs() { + $validation_class = 'Elementor\Settings_Validations'; + return [ + 'general' => [ + 'label' => esc_html__( 'General', 'elementor' ), + 'sections' => [ + 'tools' => [ + 'fields' => [ + 'exclude_user_roles' => [ + 'label' => esc_html__( 'Exclude Roles', 'elementor' ), + 'field_args' => [ + 'type' => 'checkbox_list_roles', + 'exclude' => [ 'super_admin', 'administrator' ], + ], + 'setting_args' => [ + 'sanitize_callback' => [ $validation_class, 'checkbox_list' ], + ], + ], + self::ROLE_MANAGER_ADVANCED => [ + 'field_args' => [ + 'type' => 'raw_html', + 'html' => '', + ], + 'setting_args' => [ + 'sanitize_callback' => [ $this, 'save_advanced_options' ], + ], + ], + ], + ], + ], + ], + ]; + } + + public function save_advanced_options( $input ) { + return $input; + } + + /** + * @since 2.0.0 + * @access public + */ + public function display_settings_page() { + $this->get_tabs(); + ?> +
    +

    get_page_title() ); ?>

    + +
    +

    +
    + '; + foreach ( get_editable_roles() as $role_slug => $role_data ) { + if ( 'administrator' === $role_slug ) { + continue; + } + $this->display_role_controls( $role_slug, $role_data ); + } + submit_button(); + ?> + +
    +
    + get_role_manager_options(); + } + + ?> +
    +
    + + + +
    + +
    + get_user_advanced_options(); + $checked = isset( $advanced_options[ $role_slug ] ) ? $advanced_options[ $role_slug ] : []; + ?> +
    + +

    :

    +
    + get_user_advanced_options(); + $checked = isset( $advanced_options[ $role_slug ] ) ? $advanced_options[ $role_slug ] : []; + ?> +
    + +

    :

    +
    + get_go_pro_link_content(); + + ?> +
    +
    + +
    + esc_html__( 'Want to give access only to content?', 'elementor' ), + 'upgrade_url' => esc_url( $upgrade_url ), + 'upgrade_text' => esc_html__( 'Upgrade', 'elementor' ), + ]; + + $new_promotion = apply_filters( 'elementor/role/custom_promotion', $promotion ); + + if ( ! empty( $new_promotion ) && count( $new_promotion ) <= count( $promotion ) ) { + $promotion = $new_promotion; + $promotion = $this->replace_url( $promotion, $upgrade_url ); + } + + return $promotion; + } + + /** + * @since 2.0.0 + * @access public + */ + public function get_user_restrictions_array() { + $user = wp_get_current_user(); + $user_roles = $user->roles; + $options = $this->get_user_restrictions(); + $restrictions = []; + if ( empty( $options ) ) { + return $restrictions; + } + + foreach ( $user_roles as $role ) { + if ( ! isset( $options[ $role ] ) ) { + continue; + } + $restrictions = array_merge( $restrictions, $options[ $role ] ); + } + return array_unique( $restrictions ); + } + + /** + * @since 2.0.0 + * @access private + */ + private function get_user_restrictions() { + static $restrictions = false; + if ( ! $restrictions ) { + $restrictions = []; + + /** + * Editor user restrictions. + * + * Filters the user restrictions in the editor. + * + * @since 2.0.0 + * + * @param array $restrictions User restrictions. + */ + $restrictions = apply_filters( 'elementor/editor/user/restrictions', $restrictions ); + } + return $restrictions; + } + + /** + * @since 2.0.0 + * @access public + * + * @param $capability + * + * @return bool + */ + public function user_can( $capability ) { + $options = $this->get_user_restrictions_array(); + + if ( in_array( $capability, $options, true ) ) { + return false; + } + + return true; + } + + /** + * @since 2.0.0 + * @access public + */ + public function __construct() { + parent::__construct(); + + if ( ! Plugin::$instance->experiments->is_feature_active( 'admin_menu_rearrangement' ) ) { + add_action( 'elementor/admin/menu/register', function ( Admin_Menu_Manager $admin_menu ) { + $this->register_admin_menu( $admin_menu ); + }, Settings::ADMIN_MENU_PRIORITY + 10 ); + } + + add_action( 'elementor/role/restrictions/controls', [ $this, 'add_json_enable_control' ] ); + add_action( 'elementor/role/restrictions/controls', [ $this, 'add_custom_html_enable_control' ] ); + add_action( 'elementor/role/restrictions/controls', [ $this, 'get_go_pro_link_html' ] ); + + add_filter( 'elementor/editor/user/restrictions', [ $this, 'get_role_manager_advanced_options' ] ); + } +} diff --git a/wp-content/plugins/elementor/core/schemes/color.php b/wp-content/plugins/elementor/core/schemes/color.php new file mode 100644 index 0000000..49ee236 --- /dev/null +++ b/wp-content/plugins/elementor/core/schemes/color.php @@ -0,0 +1,130 @@ +get_css_file_name(); + + add_action( "elementor/css-file/{$name}/parse", [ $this, 'add_settings_css_rules' ] ); + } + + /** + * Save settings. + * + * Save settings to the database and update the CSS file. + * + * @since 2.8.0 + * @access public + * + * @param array $settings Settings. + * @param int $id Optional. Post ID. Default is `0`. + */ + public function save_settings( array $settings, $id = 0 ) { + parent::save_settings( $settings, $id ); + + $css_file = $this->get_css_file_for_update( $id ); + + if ( $css_file ) { + $css_file->update(); + } + } + + /** + * Add settings CSS rules. + * + * Add new CSS rules to the settings manager. + * + * Fired by `elementor/css-file/{$name}/parse` action. + * + * @since 2.8.0 + * @access public + * + * @param CSS_File $css_file The requested CSS file. + * + */ + public function add_settings_css_rules( CSS_File $css_file ) { + $model = $this->get_model_for_css_file( $css_file ); + + $css_file->add_controls_stack_style_rules( + $model, + $css_file->get_style_controls( $model, null, $model->get_settings() ), + $model->get_settings(), + [ '{{WRAPPER}}' ], + [ $model->get_css_wrapper_selector() ] + ); + } +} diff --git a/wp-content/plugins/elementor/core/settings/base/css-model.php b/wp-content/plugins/elementor/core/settings/base/css-model.php new file mode 100644 index 0000000..30b9cd1 --- /dev/null +++ b/wp-content/plugins/elementor/core/settings/base/css-model.php @@ -0,0 +1,21 @@ +get_name(); + + $ajax_manager->register_ajax_action( "save_{$name}_settings", [ $this, 'ajax_save_settings' ] ); + } + + /** + * Get model for config. + * + * Retrieve the model for settings configuration. + * + * @since 1.6.0 + * @access public + * @abstract + * + * @return Model The model object. + */ + abstract public function get_model_for_config(); + + /** + * Get manager name. + * + * Retrieve settings manager name. + * + * @since 1.6.0 + * @access public + * @abstract + */ + abstract public function get_name(); + + /** + * Get model. + * + * Retrieve the model for any given model ID. + * + * @since 1.6.0 + * @access public + * + * @param int $id Optional. Model ID. Default is `0`. + * + * @return Model The model. + */ + final public function get_model( $id = 0 ) { + if ( ! isset( $this->models_cache[ $id ] ) ) { + $this->create_model( $id ); + } + + return $this->models_cache[ $id ]; + } + + /** + * Ajax request to save settings. + * + * Save settings using an ajax request. + * + * @since 1.6.0 + * @access public + * + * @param array $request Ajax request. + * + * @return array Ajax response data. + */ + final public function ajax_save_settings( $request ) { + $data = $request['data']; + + $id = 0; + + if ( ! empty( $request['id'] ) ) { + $id = $request['id']; + } + + $this->ajax_before_save_settings( $data, $id ); + + $this->save_settings( $data, $id ); + + $settings_name = $this->get_name(); + + $success_response_data = []; + + /** + * Settings success response data. + * + * Filters the success response data when saving settings using ajax. + * + * The dynamic portion of the hook name, `$settings_name`, refers to the settings name. + * + * @since 2.0.0 + * + * @param array $success_response_data Success response data. + * @param int $id Settings ID. + * @param array $data Settings data. + */ + $success_response_data = apply_filters( "elementor/settings/{$settings_name}/success_response_data", $success_response_data, $id, $data ); + + return $success_response_data; + } + + /** + * Save settings. + * + * Save settings to the database. + * + * @since 1.6.0 + * @access public + * + * @param array $settings Settings. + * @param int $id Optional. Post ID. Default is `0`. + */ + public function save_settings( array $settings, $id = 0 ) { + $special_settings = $this->get_special_settings_names(); + + $settings_to_save = $settings; + + foreach ( $special_settings as $special_setting ) { + if ( isset( $settings_to_save[ $special_setting ] ) ) { + unset( $settings_to_save[ $special_setting ] ); + } + } + + $this->save_settings_to_db( $settings_to_save, $id ); + + // Clear cache after save. + if ( isset( $this->models_cache[ $id ] ) ) { + unset( $this->models_cache[ $id ] ); + } + } + + /** + * On Elementor init. + * + * Add editor template for the settings + * + * Fired by `elementor/init` action. + * + * @since 2.3.0 + * @access public + */ + public function on_elementor_editor_init() { + Plugin::$instance->common->add_template( $this->get_editor_template(), 'text' ); + } + + /** + * Get saved settings. + * + * Retrieve the saved settings from the database. + * + * @since 1.6.0 + * @access protected + * @abstract + * + * @param int $id Post ID. + */ + abstract protected function get_saved_settings( $id ); + + /** + * Save settings to DB. + * + * Save settings to the database. + * + * @since 1.6.0 + * @access protected + * @abstract + * + * @param array $settings Settings. + * @param int $id Post ID. + */ + abstract protected function save_settings_to_db( array $settings, $id ); + + /** + * Get special settings names. + * + * Retrieve the names of the special settings that are not saved as regular + * settings. Those settings have a separate saving process. + * + * @since 1.6.0 + * @access protected + * + * @return array Special settings names. + */ + protected function get_special_settings_names() { + return []; + } + + /** + * Ajax before saving settings. + * + * Validate the data before saving it and updating the data in the database. + * + * @since 1.6.0 + * @access public + * + * @param array $data Post data. + * @param int $id Post ID. + */ + public function ajax_before_save_settings( array $data, $id ) {} + + /** + * Print the setting template content in the editor. + * + * Used to generate the control HTML in the editor using Underscore JS + * template. The variables for the class are available using `data` JS + * object. + * + * @since 1.6.0 + * @access protected + * + * @param string $name Settings panel name. + */ + protected function print_editor_template_content( $name ) { + ?> + <# + const tabs = elementor.config.settings..tabs; + + if ( Object.values( tabs ).length > 1 ) { #> +
    + <# _.each( tabs, function( tabTitle, tabSlug ) { + $e.bc.ensureTab( 'panel/-settings', tabSlug ); #> + + <# } ); #> +
    + <# } #> +
    + models_cache[ $id ] = new $class_name( [ + 'id' => $id, + 'settings' => $this->get_saved_settings( $id ), + ] ); + } + + /** + * Get editor template. + * + * Retrieve the final HTML for the editor. + * + * @since 1.6.0 + * @access private + * + * @return string Settings editor template. + */ + private function get_editor_template() { + $name = $this->get_name(); + + ob_start(); + ?> + + get_model(); + } + + /** + * Get manager name. + * + * Retrieve settings manager name. + * + * @since 2.8.0 + * @access public + */ + public function get_name() { + return 'editorPreferences'; + } + + /** + * Get saved settings. + * + * Retrieve the saved settings from the database. + * + * @since 2.8.0 + * @access protected + * + * @param int $id. + * @return array + * + */ + protected function get_saved_settings( $id ) { + $settings = get_user_meta( get_current_user_id(), self::META_KEY, true ); + + if ( ! $settings ) { + $settings = []; + } + + return $settings; + } + + /** + * Save settings to DB. + * + * Save settings to the database. + * + * @param array $settings Settings. + * @param int $id Post ID. + * @since 2.8.0 + * @access protected + * + */ + protected function save_settings_to_db( array $settings, $id ) { + update_user_meta( get_current_user_id(), self::META_KEY, $settings ); + } +} diff --git a/wp-content/plugins/elementor/core/settings/editor-preferences/model.php b/wp-content/plugins/elementor/core/settings/editor-preferences/model.php new file mode 100644 index 0000000..1f0bc9c --- /dev/null +++ b/wp-content/plugins/elementor/core/settings/editor-preferences/model.php @@ -0,0 +1,171 @@ + esc_html__( 'User Preferences', 'elementor' ), + ]; + } + + /** + * @since 3.1.0 + * @access protected + */ + protected function register_controls() { + $this->start_controls_section( + 'preferences', + [ + 'tab' => Controls_Manager::TAB_SETTINGS, + 'label' => esc_html__( 'Preferences', 'elementor' ), + ] + ); + + $this->add_control( + 'ui_theme', + [ + 'label' => esc_html__( 'UI Theme', 'elementor' ), + 'type' => Controls_Manager::SELECT, + 'description' => esc_html__( 'Set light or dark mode, or use Auto Detect to sync it with your OS setting.', 'elementor' ), + 'default' => 'auto', + 'options' => [ + 'auto' => esc_html__( 'Auto Detect', 'elementor' ), + 'light' => esc_html__( 'Light', 'elementor' ), + 'dark' => esc_html__( 'Dark', 'elementor' ), + ], + ] + ); + + $this->add_control( + 'panel_width', + [ + 'label' => esc_html__( 'Panel Width', 'elementor' ) . ' (px)', + 'type' => Controls_Manager::SLIDER, + 'range' => [ + 'px' => [ + 'min' => 200, + 'max' => 680, + ], + ], + 'default' => [ + 'size' => 300, + ], + ] + ); + + $this->add_control( + 'edit_buttons', + [ + 'label' => esc_html__( 'Editing Handles', 'elementor' ), + 'type' => Controls_Manager::SWITCHER, + 'description' => esc_html__( 'Show editing handles when hovering over the element edit button.', 'elementor' ), + ] + ); + + $this->add_control( + 'lightbox_in_editor', + [ + 'label' => esc_html__( 'Enable Lightbox In Editor', 'elementor' ), + 'type' => Controls_Manager::SWITCHER, + 'default' => 'yes', + ] + ); + + $this->add_control( + 'responsive_heading', + [ + 'label' => esc_html__( 'Responsive Preview', 'elementor' ), + 'type' => Controls_Manager::HEADING, + 'separator' => 'before', + ] + ); + + $this->add_control( + 'show_hidden_elements', + [ + 'label' => esc_html__( 'Hidden Elements', 'elementor' ), + 'type' => Controls_Manager::SWITCHER, + 'label_on' => esc_html__( 'Show', 'elementor' ), + 'label_off' => esc_html__( 'Hide', 'elementor' ), + 'default' => 'yes', + ] + ); + + $this->add_control( + 'default_device_view', + [ + 'label' => esc_html__( 'Default Device View ', 'elementor' ), + 'type' => Controls_Manager::SELECT, + 'default' => 'default', + 'options' => [ + 'default' => esc_html__( 'Default', 'elementor' ), + 'mobile' => esc_html__( 'Mobile', 'elementor' ), + 'tablet' => esc_html__( 'Tablet', 'elementor' ), + 'desktop' => esc_html__( 'Desktop', 'elementor' ), + ], + ] + ); + + $this->add_control( + 'exit_to', + [ + 'label' => esc_html__( 'Exit to', 'elementor' ), + 'type' => Controls_Manager::SELECT, + 'separator' => 'before', + 'description' => esc_html__( 'Decide where you want to go when you click the "Exit" button.', 'elementor' ), + 'default' => 'this_post', + 'options' => [ + 'this_post' => esc_html__( 'This Post', 'elementor' ), + 'all_posts' => esc_html__( 'All Posts', 'elementor' ), + 'dashboard' => esc_html__( 'WP Dashboard', 'elementor' ), + ], + ] + ); + + $this->add_control( + 'enable_styleguide_preview', + [ + 'label' => esc_html__( 'Style Guide Preview', 'elementor' ), + 'type' => Controls_Manager::SWITCHER, + 'description' => esc_html__( 'Switch between the content area and style guide to preview your changes to global colors and fonts.', 'elementor' ), + 'separator' => 'before', + 'label_off' => esc_html__( 'Off', 'elementor' ), + 'label_on' => esc_html__( 'On', 'elementor' ), + 'default' => 'yes', + ] + ); + + $this->end_controls_section(); + } +} diff --git a/wp-content/plugins/elementor/core/settings/general/manager.php b/wp-content/plugins/elementor/core/settings/general/manager.php new file mode 100644 index 0000000..bf43714 --- /dev/null +++ b/wp-content/plugins/elementor/core/settings/general/manager.php @@ -0,0 +1,120 @@ +kits_manager->get_active_kit_for_frontend() instead. + * it changed to support call like this: Manager::get_settings_managers( 'general' )->get_model()->get_settings( 'elementor_default_generic_fonts' ) + * + * @deprecated 3.0.0 Use `Plugin::$instance->kits_manager->get_active_kit_for_frontend()` instead. + */ + +class Manager extends CSS_Manager { + + /** + * Meta key for the general settings. + * + * @deprecated 3.0.0 + */ + const META_KEY = '_elementor_general_settings'; + + /** + * General settings manager constructor. + * + * Initializing Elementor general settings manager. + * + * @since 1.6.0 + * @deprecated 3.0.0 + * @access public + */ + public function __construct() { + parent::__construct(); + + _deprecated_file( __FILE__, '3.0.0', 'Plugin::$instance->kits_manager->get_active_kit_for_frontend()' ); + + $name = $this->get_css_file_name(); + + remove_action( "elementor/css-file/{$name}/parse", [ $this, 'add_settings_css_rules' ] ); + } + + /** + * Get manager name. + * + * Retrieve general settings manager name. + * + * @since 1.6.0 + * @deprecated 3.0.0 + * @access public + * + * @return string Manager name. + */ + public function get_name() { + return 'general'; + } + + /** + * Get model for config. + * + * Retrieve the model for settings configuration. + * + * @since 1.6.0 + * @deprecated 3.0.0 + * @access public + * + * @return BaseModel The model object. + */ + public function get_model_for_config() { + return $this->get_model(); + } + + /** + * @deprecated 3.0.0 + */ + protected function get_saved_settings( $id ) { + return []; + } + + /** + * Get CSS file name. + * + * Retrieve CSS file name for the general settings manager. + * + * @since 1.6.0 + * @deprecated 3.0.0 + * @access protected + * @return string + * + * @return string CSS file name. + */ + protected function get_css_file_name() { + return 'global'; + } + + /** + * @deprecated 3.0.0 + */ + protected function save_settings_to_db( array $settings, $id ) { + throw new \Exception( __CLASS__ . ' is deprecated. Use Plugin::$instance->kits_manager->get_active_kit_for_frontend() instead.' ); + } + + /** + * @deprecated 3.0.0 + */ + protected function get_model_for_css_file( Base $css_file ) { + return false; + } + + /** + * @deprecated 3.0.0 + */ + protected function get_css_file_for_update( $id ) { + return false; + } +} diff --git a/wp-content/plugins/elementor/core/settings/general/model.php b/wp-content/plugins/elementor/core/settings/general/model.php new file mode 100644 index 0000000..37bb0bf --- /dev/null +++ b/wp-content/plugins/elementor/core/settings/general/model.php @@ -0,0 +1,66 @@ +kits_manager->get_active_kit_for_frontend() instead. + * it changed to support call like this: Manager::get_settings_managers( 'general' )->get_model()->get_settings( 'elementor_default_generic_fonts' ) + * + * @deprecated 3.0.0 Use `Plugin::$instance->kits_manager->get_active_kit_for_frontend()` instead. + */ + +class Model { + + /** + * @deprecated 3.0.0 + */ + public function get_name() { + return 'general-deprecated'; + } + + /** + * @deprecated 3.0.0 + */ + public function get_panel_page_settings() { + return []; + } + + /** + * @deprecated 3.0.0 + */ + public function get_tabs_controls() { + return []; + } + + /** + * @deprecated 3.0.0 + */ + public function get_frontend_settings() { + return []; + } + + /** + * @deprecated 3.0.0 + */ + public function get_controls() { + return []; + } + + /** + * @deprecated 3.0.0 + */ + public function get_settings( $setting = null ) { + + if ( $setting ) { + $setting = str_replace( 'elementor_', '', $setting ); + } + + return Plugin::$instance->kits_manager->get_current_settings( $setting ); + } +} diff --git a/wp-content/plugins/elementor/core/settings/manager.php b/wp-content/plugins/elementor/core/settings/manager.php new file mode 100644 index 0000000..20f36cf --- /dev/null +++ b/wp-content/plugins/elementor/core/settings/manager.php @@ -0,0 +1,210 @@ +get_name() ] = $manager; + } + + /** + * Get settings managers. + * + * Retrieve registered settings manager(s). + * + * If no parameter passed, it will retrieve all the settings managers. For + * any given parameter it will retrieve a single settings manager if one + * exist, or `null` otherwise. + * + * @since 1.6.0 + * @access public + * @static + * + * @param string $manager_name Optional. Settings manager name. Default is + * null. + * + * @return Base\Manager|Base\Manager[] Single settings manager, if it exists, + * null if it doesn't exists, or the all + * the settings managers if no parameter + * defined. + */ + public static function get_settings_managers( $manager_name = null ) { + if ( $manager_name ) { + // Backwards compatibility for `general` manager, since 3.0.0. + // Register the class only if needed. + if ( 'general' === $manager_name ) { + // TODO: _deprecated_argument( $manager_name, '3.0.0', 'Plugin::$instance->kits_manager->get_active_kit_for_frontend();' ); + $manager_class = self::get_manager_class( $manager_name ); + + self::add_settings_manager( new $manager_class() ); + } + + if ( isset( self::$settings_managers[ $manager_name ] ) ) { + return self::$settings_managers[ $manager_name ]; + } + + return null; + } + + return self::$settings_managers; + } + + /** + * Register default settings managers. + * + * Register builtin Elementor settings managers. + * + * @since 1.6.0 + * @access private + * @static + */ + private static function register_default_settings_managers() { + foreach ( self::$builtin_settings_managers_names as $manager_name ) { + $manager_class = self::get_manager_class( $manager_name ); + + self::add_settings_manager( new $manager_class() ); + } + } + + /** + * Get class path for default settings managers. + * + * @param $manager_name + * + * @return string + * @since 3.0.0 + * @access private + * @static + */ + private static function get_manager_class( $manager_name ) { + return __NAMESPACE__ . '\\' . ucfirst( $manager_name ) . '\Manager'; + } + + /** + * Get settings managers config. + * + * Retrieve the settings managers configuration. + * + * @since 1.6.0 + * @access public + * @static + * + * @return array The settings managers configuration. + */ + public static function get_settings_managers_config() { + $config = []; + + $user_can = Plugin::instance()->role_manager->user_can( 'design' ); + + foreach ( self::$settings_managers as $name => $manager ) { + $settings_model = $manager->get_model_for_config(); + $tabs = $settings_model->get_tabs_controls(); + + if ( ! $user_can ) { + unset( $tabs['style'] ); + } + + $config[ $name ] = [ + 'name' => $manager->get_name(), + 'panelPage' => $settings_model->get_panel_page_settings(), + 'controls' => $settings_model->get_controls(), + 'tabs' => $tabs, + 'settings' => $settings_model->get_settings(), + ]; + + if ( $settings_model instanceof CSS_Model ) { + $config[ $name ]['cssWrapperSelector'] = $settings_model->get_css_wrapper_selector(); + } + } + + return $config; + } + + /** + * Get settings frontend config. + * + * Retrieve the settings managers frontend configuration. + * + * @since 1.6.0 + * @access public + * @static + * + * @return array The settings managers frontend configuration. + */ + public static function get_settings_frontend_config() { + $config = []; + + foreach ( self::$settings_managers as $name => $manager ) { + $settings_model = $manager->get_model_for_config(); + + if ( $settings_model ) { + $config[ $name ] = $settings_model->get_frontend_settings(); + } + } + + return $config; + } + + /** + * Run settings managers. + * + * Register builtin Elementor settings managers. + * + * @since 1.6.0 + * @access public + * @static + */ + public static function run() { + self::register_default_settings_managers(); + } +} diff --git a/wp-content/plugins/elementor/core/settings/page/manager.php b/wp-content/plugins/elementor/core/settings/page/manager.php new file mode 100644 index 0000000..a9423c4 --- /dev/null +++ b/wp-content/plugins/elementor/core/settings/page/manager.php @@ -0,0 +1,355 @@ +editor->is_edit_mode() ) { + return null; + } + + if ( Plugin::$instance->editor->is_edit_mode() ) { + $post_id = Plugin::$instance->editor->get_post_id(); + $document = Plugin::$instance->documents->get_doc_or_auto_save( $post_id ); + } else { + $post_id = get_the_ID(); + $document = Plugin::$instance->documents->get_doc_for_frontend( $post_id ); + } + + if ( ! $document ) { + return null; + } + + $model = $this->get_model( $document->get_post()->ID ); + + if ( $document->is_autosave() ) { + $model->set_settings( 'post_status', $document->get_main_post()->post_status ); + } + + return $model; + } + + /** + * Ajax before saving settings. + * + * Validate the data before saving it and updating the data in the database. + * + * @since 1.6.0 + * @access public + * + * @param array $data Post data. + * @param int $id Post ID. + * + * @throws \Exception If invalid post returned using the `$id`. + * @throws \Exception If current user don't have permissions to edit the post. + */ + public function ajax_before_save_settings( array $data, $id ) { + $post = get_post( $id ); + + if ( empty( $post ) ) { + throw new \Exception( 'Invalid post.', Exceptions::NOT_FOUND ); + } + + if ( ! Utils::is_wp_cli() && ! current_user_can( 'edit_post', $id ) ) { + throw new \Exception( 'Access denied.', Exceptions::FORBIDDEN ); + } + + // Avoid save empty post title. + if ( ! empty( $data['post_title'] ) ) { + $post->post_title = $data['post_title']; + } + + if ( isset( $data['post_excerpt'] ) && post_type_supports( $post->post_type, 'excerpt' ) ) { + $post->post_excerpt = $data['post_excerpt']; + } + + if ( isset( $data['menu_order'] ) && is_post_type_hierarchical( $post->post_type ) ) { + $post->menu_order = $data['menu_order']; + } + + if ( isset( $data['post_status'] ) ) { + $this->save_post_status( $id, $data['post_status'] ); + unset( $post->post_status ); + } + + if ( isset( $data['comment_status'] ) && post_type_supports( $post->post_type, 'comments' ) ) { + $post->comment_status = $data['comment_status']; + } + + wp_update_post( $post ); + + // Check updated status + if ( Document::STATUS_PUBLISH === get_post_status( $id ) ) { + $autosave = wp_get_post_autosave( $post->ID ); + if ( $autosave ) { + wp_delete_post_revision( $autosave->ID ); + } + } + + if ( isset( $data['post_featured_image'] ) && post_type_supports( $post->post_type, 'thumbnail' ) ) { + if ( empty( $data['post_featured_image']['id'] ) ) { + delete_post_thumbnail( $post->ID ); + } else { + set_post_thumbnail( $post->ID, $data['post_featured_image']['id'] ); + } + } + + if ( Utils::is_cpt_custom_templates_supported() ) { + $template = get_metadata( 'post', $post->ID, '_wp_page_template', true ); + + if ( isset( $data['template'] ) ) { + $template = $data['template']; + } + + if ( empty( $template ) ) { + $template = 'default'; + } + + // Use `update_metadata` in order to save also for revisions. + update_metadata( 'post', $post->ID, '_wp_page_template', $template ); + } + } + + /** + * @inheritDoc + * + * Override parent because the page setting moved to document.settings. + */ + protected function print_editor_template_content( $name ) { + ?> + <# + const tabs = elementor.config.document.settings.tabs; + + if ( Object.values( tabs ).length > 1 ) { #> +
    + <# _.each( tabs, function( tabTitle, tabSlug ) { + $e.bc.ensureTab( 'panel/page-settings', tabSlug ); #> + + <# } ); #> +
    + <# } #> +
    + get_post_id(); + + if ( $css_file instanceof Post_Preview ) { + $autosave = Utils::get_post_autosave( $post_id ); + if ( $autosave ) { + $post_id = $autosave->ID; + } + } + + return $this->get_model( $post_id ); + } + + /** + * Get special settings names. + * + * Retrieve the names of the special settings that are not saved as regular + * settings. Those settings have a separate saving process. + * + * @since 1.6.0 + * @access protected + * + * @return array Special settings names. + */ + protected function get_special_settings_names() { + return [ + 'id', + 'post_title', + 'post_status', + 'template', + 'post_excerpt', + 'post_featured_image', + 'menu_order', + 'comment_status', + ]; + } + + /** + * @since 2.0.0 + * @access public + * + * @param $post_id + * @param $status + */ + public function save_post_status( $post_id, $status ) { + $parent_id = wp_is_post_revision( $post_id ); + + if ( $parent_id ) { + // Don't update revisions post-status + return; + } + + $parent_id = $post_id; + + $post = get_post( $parent_id ); + + $allowed_post_statuses = get_post_statuses(); + + if ( isset( $allowed_post_statuses[ $status ] ) ) { + $post_type_object = get_post_type_object( $post->post_type ); + if ( 'publish' !== $status || current_user_can( $post_type_object->cap->publish_posts ) ) { + $post->post_status = $status; + } + } + + wp_update_post( $post ); + } +} diff --git a/wp-content/plugins/elementor/core/settings/page/model.php b/wp-content/plugins/elementor/core/settings/page/model.php new file mode 100644 index 0000000..a96434e --- /dev/null +++ b/wp-content/plugins/elementor/core/settings/page/model.php @@ -0,0 +1,184 @@ +post = get_post( $data['id'] ); + + if ( ! $this->post ) { + $this->post = new \WP_Post( (object) [] ); + } + + if ( wp_is_post_revision( $this->post->ID ) ) { + $this->post_parent = get_post( $this->post->post_parent ); + } else { + $this->post_parent = $this->post; + } + + parent::__construct( $data ); + } + + /** + * Get model name. + * + * Retrieve page settings model name. + * + * @since 1.6.0 + * @access public + * + * @return string Model name. + */ + public function get_name() { + return 'page-settings'; + } + + /** + * Get model unique name. + * + * Retrieve page settings model unique name. + * + * @since 1.6.0 + * @access public + * + * @return string Model unique name. + */ + public function get_unique_name() { + return $this->get_name() . '-' . $this->post->ID; + } + + /** + * Get CSS wrapper selector. + * + * Retrieve the wrapper selector for the page settings model. + * + * @since 1.6.0 + * @access public + * + * @return string CSS wrapper selector. + */ + public function get_css_wrapper_selector() { + $document = Plugin::$instance->documents->get( $this->post_parent->ID ); + return $document->get_css_wrapper_selector(); + } + + /** + * Get panel page settings. + * + * Retrieve the panel setting for the page settings model. + * + * @since 1.6.0 + * @access public + * + * @return array { + * Panel settings. + * + * @type string $title The panel title. + * } + */ + public function get_panel_page_settings() { + $document = Plugin::$instance->documents->get( $this->post->ID ); + + return [ + 'title' => sprintf( + /* translators: %s: Document title. */ + esc_html__( '%s Settings', 'elementor' ), + $document::get_title() + ), + ]; + } + + /** + * On export post meta. + * + * When exporting data, check if the post is not using page template and + * exclude it from the exported Elementor data. + * + * @since 1.6.0 + * @access public + * + * @param array $element_data Element data. + * + * @return array Element data to be exported. + */ + public function on_export( $element_data ) { + if ( ! empty( $element_data['settings']['template'] ) ) { + /** + * @var \Elementor\Modules\PageTemplates\Module $page_templates_module + */ + $page_templates_module = Plugin::$instance->modules_manager->get_modules( 'page-templates' ); + $is_elementor_template = ! ! $page_templates_module->get_template_path( $element_data['settings']['template'] ); + + if ( ! $is_elementor_template ) { + unset( $element_data['settings']['template'] ); + } + } + + return $element_data; + } + + /** + * Register model controls. + * + * Used to add new controls to the page settings model. + * + * @since 3.1.0 + * @access protected + */ + protected function register_controls() { + // Check if it's a real model, or abstract (for example - on import ) + if ( $this->post->ID ) { + $document = Plugin::$instance->documents->get_doc_or_auto_save( $this->post->ID ); + + if ( $document ) { + $controls = $document->get_controls(); + + foreach ( $controls as $control_id => $args ) { + $this->add_control( $control_id, $args ); + } + } + } + } +} diff --git a/wp-content/plugins/elementor/core/upgrade/custom-tasks-manager.php b/wp-content/plugins/elementor/core/upgrade/custom-tasks-manager.php new file mode 100644 index 0000000..40269a9 --- /dev/null +++ b/wp-content/plugins/elementor/core/upgrade/custom-tasks-manager.php @@ -0,0 +1,111 @@ +get_custom_tasks(); + + if ( empty( $custom_tasks_callbacks ) ) { + return; + } + + $task_runner = $this->get_task_runner(); + + foreach ( $custom_tasks_callbacks as $callback ) { + $task_runner->push_to_queue( [ + 'callback' => $callback, + ] ); + } + + $this->clear_tasks_requested_to_run(); + + Plugin::$instance->logger->get_logger()->info( 'Elementor custom task(s) process has been queued.', [ + 'meta' => [ $custom_tasks_callbacks ], + ] ); + + $task_runner->save()->dispatch(); + } + + public function get_tasks_class() { + return Custom_Tasks::class; + } + + public function get_tasks_requested_to_run() { + return get_option( self::TASKS_OPTION_KEY, [] ); + } + + public function clear_tasks_requested_to_run() { + return update_option( self::TASKS_OPTION_KEY, [], false ); + } + + public function add_tasks_requested_to_run( $tasks = [] ) { + $current_tasks = $this->get_tasks_requested_to_run(); + $current_tasks = array_merge( $current_tasks, $tasks ); + + update_option( self::TASKS_OPTION_KEY, $current_tasks, false ); + } + + private function get_custom_tasks() { + $tasks_requested_to_run = $this->get_tasks_requested_to_run(); + + $tasks_class = $this->get_tasks_class(); + $tasks_reflection = new \ReflectionClass( $tasks_class ); + + $callbacks = []; + + foreach ( $tasks_reflection->getMethods() as $method ) { + $method_name = $method->getName(); + + if ( in_array( $method_name, $tasks_requested_to_run, true ) ) { + $callbacks[] = [ $tasks_class, $method_name ]; + } + } + + return $callbacks; + } + + public function __construct() { + $task_runner = $this->get_task_runner(); + + if ( $task_runner->is_running() ) { + return; + } + + $this->start_run(); + } +} diff --git a/wp-content/plugins/elementor/core/upgrade/custom-tasks.php b/wp-content/plugins/elementor/core/upgrade/custom-tasks.php new file mode 100644 index 0000000..66081fa --- /dev/null +++ b/wp-content/plugins/elementor/core/upgrade/custom-tasks.php @@ -0,0 +1,18 @@ +get_plugin_name() ) && version_compare( get_option( $this->get_version_option_name() ), '2.4.2', '<' ) ) { + delete_option( 'elementor_log' ); + } + + return parent::should_upgrade(); + } + + public function get_name() { + return 'upgrade'; + } + + public function get_action() { + return 'elementor_updater'; + } + + public function get_plugin_name() { + return 'elementor'; + } + + public function get_plugin_label() { + return esc_html__( 'Elementor', 'elementor' ); + } + + public function get_updater_label() { + return esc_html__( 'Elementor Data Updater', 'elementor' ); + } + + public function get_new_version() { + return ELEMENTOR_VERSION; + } + + public function get_version_option_name() { + return 'elementor_version'; + } + + public function get_upgrades_class() { + return 'Elementor\Core\Upgrade\Upgrades'; + } + + public static function get_installs_history() { + return get_option( static::get_install_history_meta(), [] ); + } + + public static function install_compare( $version, $operator ) { + $installs_history = self::get_installs_history(); + + return version_compare( + key( $installs_history ), + $version ? $version : '0.0.0', // when no version assigned + $operator + ); + } + + protected function update_db_version() { + parent::update_db_version(); + + $installs_history = self::get_installs_history(); + + $time = time(); + + $installs_history[ ELEMENTOR_VERSION ] = $time; + + $old_version = $this->get_current_version(); + + // If there was an old version of Elementor, and there's no record for that install yet + if ( $old_version && empty( $installs_history[ $old_version ] ) ) { + $installs_history[ $old_version ] = $installs_history[ ELEMENTOR_VERSION ] - 1; + } + + uksort( $installs_history, 'version_compare' ); + + update_option( static::get_install_history_meta(), $installs_history ); + } +} diff --git a/wp-content/plugins/elementor/core/upgrade/task.php b/wp-content/plugins/elementor/core/upgrade/task.php new file mode 100644 index 0000000..586e41d --- /dev/null +++ b/wp-content/plugins/elementor/core/upgrade/task.php @@ -0,0 +1,26 @@ +manager->get_plugin_label() . '/Tasks - ' . $item['callback'][1]; + } + + public function set_limit( $limit ) { + $this->manager->set_query_limit( $limit ); + } +} diff --git a/wp-content/plugins/elementor/core/upgrade/updater.php b/wp-content/plugins/elementor/core/upgrade/updater.php new file mode 100644 index 0000000..9901733 --- /dev/null +++ b/wp-content/plugins/elementor/core/upgrade/updater.php @@ -0,0 +1,24 @@ +manager->get_plugin_label() . '/Upgrades - ' . $item['callback'][1]; + } + + public function set_limit( $limit ) { + $this->manager->set_query_limit( $limit ); + } +} diff --git a/wp-content/plugins/elementor/core/upgrade/upgrade-utils.php b/wp-content/plugins/elementor/core/upgrade/upgrade-utils.php new file mode 100644 index 0000000..36982ba --- /dev/null +++ b/wp-content/plugins/elementor/core/upgrade/upgrade-utils.php @@ -0,0 +1,77 @@ +query_col( + 'SELECT `post_id` + FROM `' . $wpdb->postmeta . '` + WHERE `meta_key` = "_elementor_data" + AND `meta_value` LIKE \'%"widgetType":"' . $widget_id . '"%\';' + ); + + if ( empty( $post_ids ) ) { + return false; + } + + foreach ( $post_ids as $post_id ) { + $do_update = false; + + $document = Plugin::instance()->documents->get( $post_id ); + + if ( ! $document ) { + continue; + } + + $data = $document->get_elements_data(); + + if ( empty( $data ) ) { + continue; + } + + // loop thru callbacks & array + foreach ( $changes as $change ) { + $args = [ + 'do_update' => &$do_update, + 'widget_id' => $widget_id, + 'control_ids' => $change['control_ids'], + ]; + + if ( isset( $change['prefix'] ) ) { + $args['prefix'] = $change['prefix']; + $args['new_id'] = $change['new_id']; + } + + $data = Plugin::instance()->db->iterate_data( $data, $change['callback'], $args ); + if ( ! $do_update ) { + continue; + } + + // We need the `wp_slash` in order to avoid the unslashing during the `update_metadata` + $json_value = wp_slash( wp_json_encode( $data ) ); + + update_metadata( 'post', $post_id, '_elementor_data', $json_value ); + } + } // End foreach(). + + return $updater->should_run_again( $post_ids ); + } +} diff --git a/wp-content/plugins/elementor/core/upgrade/upgrades.php b/wp-content/plugins/elementor/core/upgrade/upgrades.php new file mode 100644 index 0000000..4362659 --- /dev/null +++ b/wp-content/plugins/elementor/core/upgrade/upgrades.php @@ -0,0 +1,1013 @@ +uploads_manager; + + $temp_dir = $uploads_manager->get_temp_dir(); + + if ( file_exists( $temp_dir ) ) { + $uploads_manager->remove_file_or_dir( $temp_dir ); + } + } + + /** + * Upgrade Elementor 0.3.2 + * + * Change the image widget link URL, setting is to `custom` link. + * + * @since 2.0.0 + * @static + * @access public + */ + public static function _v_0_3_2() { + global $wpdb; + + $post_ids = $wpdb->get_col( + 'SELECT `post_id` FROM `' . $wpdb->postmeta . '` + WHERE `meta_key` = \'_elementor_version\' + AND `meta_value` = \'0.1\';' + ); + + if ( empty( $post_ids ) ) { + return; + } + + foreach ( $post_ids as $post_id ) { + $document = Plugin::$instance->documents->get( $post_id ); + + if ( $document ) { + $data = $document->get_elements_data(); + } + + if ( empty( $data ) ) { + continue; + } + + $data = Plugin::$instance->db->iterate_data( $data, function( $element ) { + if ( empty( $element['widgetType'] ) || 'image' !== $element['widgetType'] ) { + return $element; + } + + if ( ! empty( $element['settings']['link']['url'] ) && ! isset( $element['settings']['link_to'] ) ) { + $element['settings']['link_to'] = 'custom'; + } + + return $element; + } ); + + $document = Plugin::$instance->documents->get( $post_id ); + + $document->save( [ + 'elements' => $data, + ] ); + } + } + + /** + * Upgrade Elementor 0.9.2 + * + * Change the icon widget, icon-box widget and the social-icons widget, + * setting their icon padding size to an empty string. + * + * Change the image widget, setting the image size to full image size. + * + * @since 2.0.0 + * @static + * @access public + */ + public static function _v_0_9_2() { + global $wpdb; + + // Fix Icon/Icon Box Widgets padding. + $post_ids = $wpdb->get_col( + 'SELECT `post_id` FROM `' . $wpdb->postmeta . '` + WHERE `meta_key` = \'_elementor_version\' + AND `meta_value` = \'0.2\';' + ); + + if ( empty( $post_ids ) ) { + return; + } + + foreach ( $post_ids as $post_id ) { + $document = Plugin::$instance->documents->get( $post_id ); + + if ( $document ) { + $data = $document->get_elements_data(); + } + + if ( empty( $data ) ) { + continue; + } + + $data = Plugin::$instance->db->iterate_data( $data, function( $element ) { + if ( empty( $element['widgetType'] ) ) { + return $element; + } + + if ( in_array( $element['widgetType'], [ 'icon', 'icon-box', 'social-icons' ] ) ) { + if ( ! empty( $element['settings']['icon_padding']['size'] ) ) { + $element['settings']['icon_padding']['size'] = ''; + } + } + + if ( 'image' === $element['widgetType'] ) { + if ( empty( $element['settings']['image_size'] ) ) { + $element['settings']['image_size'] = 'full'; + } + } + + return $element; + } ); + + $document = Plugin::$instance->documents->get( $post_id ); + + $document->save( [ + 'elements' => $data, + ] ); + } + } + + /** + * Upgrade Elementor 0.11.0 + * + * Change the button widget sizes, setting up new button sizes. + * + * @since 2.0.0 + * @static + * @access public + */ + public static function _v_0_11_0() { + global $wpdb; + + // Fix Button widget to new sizes options. + $post_ids = $wpdb->get_col( + 'SELECT `post_id` FROM `' . $wpdb->postmeta . '` + WHERE `meta_key` = \'_elementor_version\' + AND `meta_value` = \'0.3\';' + ); + + if ( empty( $post_ids ) ) { + return; + } + + foreach ( $post_ids as $post_id ) { + $document = Plugin::$instance->documents->get( $post_id ); + + if ( $document ) { + $data = $document->get_elements_data(); + } + + if ( empty( $data ) ) { + continue; + } + + $data = Plugin::$instance->db->iterate_data( $data, function( $element ) { + if ( empty( $element['widgetType'] ) ) { + return $element; + } + + if ( 'button' === $element['widgetType'] ) { + $size_to_replace = [ + 'small' => 'xs', + 'medium' => 'sm', + 'large' => 'md', + 'xl' => 'lg', + 'xxl' => 'xl', + ]; + + if ( ! empty( $element['settings']['size'] ) ) { + $old_size = $element['settings']['size']; + + if ( isset( $size_to_replace[ $old_size ] ) ) { + $element['settings']['size'] = $size_to_replace[ $old_size ]; + } + } + } + + return $element; + } ); + + $document = Plugin::$instance->documents->get( $post_id ); + + $document->save( [ + 'elements' => $data, + ] ); + } + } + + /** + * Upgrade Elementor 2.0.0 + * + * Fix post titles for old autosave drafts that saved with the format 'Auto Save 2018-03-18 17:24'. + * + * @static + * @since 2.0.0 + * @access public + */ + public static function _v_2_0_0() { + global $wpdb; + + $posts = $wpdb->get_results( + 'SELECT `ID`, `post_title`, `post_parent` + FROM `' . $wpdb->posts . '` p + LEFT JOIN `' . $wpdb->postmeta . '` m ON p.ID = m.post_id + WHERE `post_status` = \'inherit\' + AND `post_title` = CONCAT(\'Auto Save \', DATE_FORMAT(post_date, "%Y-%m-%d %H:%i")) + AND m.`meta_key` = \'_elementor_data\';' + ); + + if ( empty( $posts ) ) { + return; + } + + foreach ( $posts as $post ) { + wp_update_post( [ + 'ID' => $post->ID, + 'post_title' => get_the_title( $post->post_parent ), + ] ); + } + } + + /** + * Upgrade Elementor 2.0.1 + * + * Fix post titles for old autosave drafts that saved with the format 'Auto Save...'. + * + * @since 2.0.2 + * @static + * @access public + */ + public static function _v_2_0_1() { + global $wpdb; + + $posts = $wpdb->get_results( + 'SELECT `ID`, `post_title`, `post_parent` + FROM `' . $wpdb->posts . '` p + LEFT JOIN `' . $wpdb->postmeta . '` m ON p.ID = m.post_id + WHERE `post_status` = \'inherit\' + AND `post_title` REGEXP \'^Auto Save [0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}$\' + AND m.`meta_key` = \'_elementor_data\';' + ); + + if ( empty( $posts ) ) { + return; + } + + foreach ( $posts as $post ) { + $parent = get_post( $post->post_parent ); + $title = isset( $parent->post_title ) ? $parent->post_title : ''; + + wp_update_post( [ + 'ID' => $post->ID, + 'post_title' => $title, + ] ); + } + } + + /** + * Upgrade Elementor 2.0.10 + * + * Fix post titles for old autosave drafts that saved with the format 'Auto Save...'. + * Fix also Translated titles. + * + * @since 2.0.10 + * @static + * @access public + */ + public static function _v_2_0_10() { + global $wpdb; + + $posts = $wpdb->get_results( + 'SELECT `ID`, `post_title`, `post_parent` + FROM `' . $wpdb->posts . '` p + LEFT JOIN `' . $wpdb->postmeta . '` m ON p.ID = m.post_id + WHERE `post_status` = \'inherit\' + AND `post_title` REGEXP \'[[:alnum:]]+ [[:alnum:]]+ [0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}$\' + AND m.`meta_key` = \'_elementor_data\';' + ); + + if ( empty( $posts ) ) { + return; + } + + foreach ( $posts as $post ) { + $parent = get_post( $post->post_parent ); + $title = isset( $parent->post_title ) ? $parent->post_title : ''; + + wp_update_post( [ + 'ID' => $post->ID, + 'post_title' => $title, + ] ); + } + } + + public static function _v_2_1_0() { + global $wpdb; + + // upgrade `video` widget settings (merge providers). + $post_ids = $wpdb->get_col( + 'SELECT `post_id` FROM `' . $wpdb->postmeta . '` WHERE `meta_key` = "_elementor_data" AND `meta_value` LIKE \'%"widgetType":"video"%\';' + ); + + if ( empty( $post_ids ) ) { + return; + } + + foreach ( $post_ids as $post_id ) { + $do_update = false; + $document = Plugin::$instance->documents->get( $post_id ); + + if ( $document ) { + $data = $document->get_elements_data(); + } + + if ( empty( $data ) ) { + continue; + } + + $data = Plugin::$instance->db->iterate_data( $data, function( $element ) use ( &$do_update ) { + if ( empty( $element['widgetType'] ) || 'video' !== $element['widgetType'] ) { + return $element; + } + + $replacements = []; + + if ( empty( $element['settings']['video_type'] ) || 'youtube' === $element['settings']['video_type'] ) { + $replacements = [ + 'yt_autoplay' => 'autoplay', + 'yt_controls' => 'controls', + 'yt_mute' => 'mute', + 'yt_rel' => 'rel', + 'link' => 'youtube_url', + ]; + } elseif ( 'vimeo' === $element['settings']['video_type'] ) { + $replacements = [ + 'vimeo_autoplay' => 'autoplay', + 'vimeo_loop' => 'loop', + 'vimeo_color' => 'color', + 'vimeo_link' => 'vimeo_url', + ]; + } + + // cleanup old unused settings. + unset( $element['settings']['yt_rel_videos'] ); + + foreach ( $replacements as $old => $new ) { + if ( ! empty( $element['settings'][ $old ] ) ) { + $element['settings'][ $new ] = $element['settings'][ $old ]; + $do_update = true; + } + } + + return $element; + } ); + + // Only update if needed. + if ( ! $do_update ) { + continue; + } + + // We need the `wp_slash` in order to avoid the unslashing during the `update_post_meta` + $json_value = wp_slash( wp_json_encode( $data ) ); + + update_metadata( 'post', $post_id, '_elementor_data', $json_value ); + + // Clear WP cache for next step. + wp_cache_flush(); + } // End foreach(). + } + + /** + * @param Updater $updater + * + * @return bool + */ + public static function _v_2_3_0_widget_image( $updater ) { + global $wpdb; + + // upgrade `video` widget settings (merge providers). + $post_ids = $updater->query_col( + 'SELECT `post_id` FROM `' . $wpdb->postmeta . '` WHERE `meta_key` = "_elementor_data" AND ( + `meta_value` LIKE \'%"widgetType":"image"%\' + OR `meta_value` LIKE \'%"widgetType":"theme-post-featured-image"%\' + OR `meta_value` LIKE \'%"widgetType":"theme-site-logo"%\' + OR `meta_value` LIKE \'%"widgetType":"woocommerce-category-image"%\' + );' + ); + + if ( empty( $post_ids ) ) { + return false; + } + + $widgets = [ + 'image', + 'theme-post-featured-image', + 'theme-site-logo', + 'woocommerce-category-image', + ]; + + foreach ( $post_ids as $post_id ) { + // Clear WP cache for next step. + wp_cache_flush(); + + $do_update = false; + + $document = Plugin::$instance->documents->get( $post_id ); + + if ( ! $document ) { + continue; + } + + $data = $document->get_elements_data(); + + if ( empty( $data ) ) { + continue; + } + + $data = Plugin::$instance->db->iterate_data( $data, function( $element ) use ( &$do_update, $widgets ) { + if ( empty( $element['widgetType'] ) || ! in_array( $element['widgetType'], $widgets ) ) { + return $element; + } + + if ( ! empty( $element['settings']['caption'] ) ) { + if ( ! isset( $element['settings']['caption_source'] ) ) { + $element['settings']['caption_source'] = 'custom'; + + $do_update = true; + } + } + + return $element; + } ); + + // Only update if needed. + if ( ! $do_update ) { + continue; + } + + // We need the `wp_slash` in order to avoid the unslashing during the `update_post_meta` + $json_value = wp_slash( wp_json_encode( $data ) ); + + update_metadata( 'post', $post_id, '_elementor_data', $json_value ); + } // End foreach(). + + return $updater->should_run_again( $post_ids ); + } + + /** + * @param Updater $updater + * + * @return bool + */ + public static function _v_2_3_0_template_type( $updater ) { + global $wpdb; + + $post_ids = $updater->query_col( + 'SELECT p.ID + FROM `' . $wpdb->posts . '` AS p + LEFT JOIN `' . $wpdb->postmeta . '` AS pm1 ON (p.ID = pm1.post_id) + LEFT JOIN `' . $wpdb->postmeta . '` AS pm2 ON (pm1.post_id = pm2.post_id AND pm2.meta_key = "_elementor_template_type") + WHERE p.post_status != "inherit" AND pm1.`meta_key` = "_elementor_data" AND pm2.post_id IS NULL;' + ); + + if ( empty( $post_ids ) ) { + return false; + } + + foreach ( $post_ids as $post_id ) { + // Clear WP cache for next step. + wp_cache_flush(); + + $document = Plugin::$instance->documents->get( $post_id ); + + if ( ! $document ) { + continue; + } + + $document->save_template_type(); + } // End foreach(). + + return $updater->should_run_again( $post_ids ); + } + + /** + * Set FontAwesome Migration needed flag + */ + public static function _v_2_6_0_fa4_migration_flag() { + add_option( 'elementor_icon_manager_needs_update', 'yes' ); + add_option( 'elementor_load_fa4_shim', 'yes' ); + } + + /** + * migrate Icon control string value to Icons control array value + * + * @param array $element + * @param array $args + * + * @return mixed + */ + public static function _migrate_icon_fa4_value( $element, $args ) { + $widget_id = $args['widget_id']; + + if ( empty( $element['widgetType'] ) || $widget_id !== $element['widgetType'] ) { + return $element; + } + foreach ( $args['control_ids'] as $old_name => $new_name ) { + // exit if new value exists + if ( isset( $element['settings'][ $new_name ] ) ) { + continue; + } + + // exit if no value to migrate + if ( ! isset( $element['settings'][ $old_name ] ) ) { + continue; + } + + $element['settings'][ $new_name ] = Icons_Manager::fa4_to_fa5_value_migration( $element['settings'][ $old_name ] ); + $args['do_update'] = true; + } + return $element; + } + + /** + * Set FontAwesome 5 value Migration on for button widget + * + * @param Updater $updater + */ + public static function _v_2_6_6_fa4_migration_button( $updater ) { + $changes = [ + [ + 'callback' => [ 'Elementor\Core\Upgrade\Upgrades', '_migrate_icon_fa4_value' ], + 'control_ids' => [ + 'icon' => 'selected_icon', + ], + ], + ]; + Upgrade_Utils::_update_widget_settings( 'button', $updater, $changes ); + Upgrade_Utils::_update_widget_settings( 'icon-box', $updater, $changes ); + } + + /** + * Update database to separate page from post. + * + * @param Updater $updater + * + * @param string $type + * + * @return bool + */ + public static function rename_document_base_to_wp( $updater, $type ) { + global $wpdb; + + $post_ids = $updater->query_col( $wpdb->prepare( + "SELECT p1.ID FROM {$wpdb->posts} AS p + LEFT JOIN {$wpdb->posts} AS p1 ON (p.ID = p1.post_parent || p.ID = p1.ID) + WHERE p.post_type = %s;", $type ) ); + + if ( empty( $post_ids ) ) { + return false; + } + + $sql_post_ids = implode( ',', $post_ids ); + + $wpdb->query( $wpdb->prepare( + "UPDATE $wpdb->postmeta SET meta_value = %s + WHERE meta_key = '_elementor_template_type' && post_id in ( %s ); + ", 'wp-' . $type, $sql_post_ids ) ); + + return $updater->should_run_again( $post_ids ); + } + + /** + * Update database to separate page from post. + * + * @param Updater $updater + * + * @return bool + */ + // Because the query is slow on large sites, temporary don't upgrade. + /* public static function _v_2_7_0_rename_document_types_to_wp( $updater ) { + return self::rename_document_base_to_wp( $updater, 'post' ) || self::rename_document_base_to_wp( $updater, 'page' ); + }*/ + + // Upgrade code was fixed & moved to _v_2_7_1_remove_old_usage_data. + /* public static function _v_2_7_0_remove_old_usage_data() {} */ + + // Upgrade code moved to _v_2_7_1_recalc_usage_data. + /* public static function _v_2_7_0_recalc_usage_data( $updater ) {} */ + + /** + * Don't use the old data anymore. + * Since 2.7.1 the key was changed from `elementor_elements_usage` to `elementor_controls_usage`. + */ + public static function _v_2_7_1_remove_old_usage_data() { + delete_option( 'elementor_elements_usage' ); + delete_post_meta_by_key( '_elementor_elements_usage' ); + } + + /** + * Recalc usage. + * + * @param Updater $updater + * + * @return bool + */ + public static function recalc_usage_data( $updater ) { + if ( ! Tracker::is_allow_track() ) { + return false; + } + + /** @var Module $module */ + $module = Plugin::$instance->modules_manager->get_modules( 'usage' ); + + $post_count = $module->recalc_usage( $updater->get_limit(), $updater->get_current_offset() ); + + return ( $post_count === $updater->get_limit() ); + } + + public static function _v_2_7_1_recalc_usage_data( $updater ) { + return self::recalc_usage_data( $updater ); + } + + public static function _v_2_8_3_recalc_usage_data( $updater ) { + // Re-calc since older version(s) had invalid values. + return self::recalc_usage_data( $updater ); + } + + /** + * Move general & lightbox settings to active kit and all it's revisions. + * + * @param Updater $updater + * + * @return bool + */ + public static function _v_3_0_0_move_general_settings_to_kit( $updater ) { + $callback = function( $kit_id ) { + $kit = Plugin::$instance->documents->get( $kit_id ); + + if ( ! $kit ) { + self::notice( 'Kit not found. nothing to do.' ); + return; + } + + $meta_key = SettingsPageManager::META_KEY; + $current_settings = get_option( '_elementor_general_settings', [] ); + // Take the `space_between_widgets` from the option due to a bug on E < 3.0.0 that the value `0` is stored separated. + $current_settings['space_between_widgets'] = get_option( 'elementor_space_between_widgets', '' ); + $current_settings[ Breakpoints_Manager::BREAKPOINT_SETTING_PREFIX . 'md' ] = get_option( 'elementor_viewport_md', '' ); + $current_settings[ Breakpoints_Manager::BREAKPOINT_SETTING_PREFIX . 'lg' ] = get_option( 'elementor_viewport_lg', '' ); + + $kit_settings = $kit->get_meta( $meta_key ); + + // Already exist. + if ( isset( $kit_settings['default_generic_fonts'] ) ) { + self::notice( 'General Settings already exist. nothing to do.' ); + return; + } + + if ( empty( $current_settings ) ) { + self::notice( 'Current settings are empty. nothing to do.' ); + return; + } + + if ( ! $kit_settings ) { + $kit_settings = []; + } + + // Convert some setting to Elementor slider format. + $settings_to_slider = [ + 'container_width', + 'space_between_widgets', + ]; + + foreach ( $settings_to_slider as $setting ) { + if ( isset( $current_settings[ $setting ] ) ) { + $current_settings[ $setting ] = [ + 'unit' => 'px', + 'size' => $current_settings[ $setting ], + ]; + } + } + + $kit_settings = array_merge( $kit_settings, $current_settings ); + + $page_settings_manager = SettingsManager::get_settings_managers( 'page' ); + $page_settings_manager->save_settings( $kit_settings, $kit_id ); + }; + + return self::move_settings_to_kit( $callback, $updater ); + } + + public static function _v_3_2_0_migrate_breakpoints_to_new_system( $updater, $include_revisions = true ) { + $callback = function( $kit_id ) { + $kit = Plugin::$instance->documents->get( $kit_id ); + + $kit_settings = $kit->get_meta( SettingsPageManager::META_KEY ); + + if ( ! $kit_settings ) { + // Nothing to upgrade. + return; + } + + $prefix = Breakpoints_Manager::BREAKPOINT_SETTING_PREFIX; + $old_mobile_option_key = $prefix . 'md'; + $old_tablet_option_key = $prefix . 'lg'; + + $breakpoint_values = [ + $old_mobile_option_key => Plugin::$instance->kits_manager->get_current_settings( $old_mobile_option_key ), + $old_tablet_option_key => Plugin::$instance->kits_manager->get_current_settings( $old_tablet_option_key ), + ]; + + // Breakpoint values are either a number, or an empty string (empty setting). + array_walk( $breakpoint_values, function( &$breakpoint_value, $breakpoint_key ) { + if ( $breakpoint_value ) { + // If the saved breakpoint value is a number, 1px is reduced because the new breakpoints system is + // based on max-width, as opposed to the old breakpoints system that worked based on min-width. + $breakpoint_value--; + } + + return $breakpoint_value; + } ); + + $kit_settings[ $prefix . Breakpoints_Manager::BREAKPOINT_KEY_MOBILE ] = $breakpoint_values[ $old_mobile_option_key ]; + $kit_settings[ $prefix . Breakpoints_Manager::BREAKPOINT_KEY_TABLET ] = $breakpoint_values[ $old_tablet_option_key ]; + + $page_settings_manager = SettingsManager::get_settings_managers( 'page' ); + $page_settings_manager->save_settings( $kit_settings, $kit_id ); + }; + + return self::move_settings_to_kit( $callback, $updater, $include_revisions ); + } + + public static function _v_3_4_8_fix_font_awesome_default_value_from_1_to_yes() { + // if `Icons_Manager::LOAD_FA4_SHIM_OPTION_KEY` value is '1', then set it to `yes`. + $load_fa4_shim_option = get_option( Icons_Manager::LOAD_FA4_SHIM_OPTION_KEY ); + + if ( '1' === $load_fa4_shim_option ) { + update_option( Icons_Manager::LOAD_FA4_SHIM_OPTION_KEY, 'yes' ); + } + } + + public static function _v_3_5_0_remove_old_elementor_scheme() { + global $wpdb; + + $wpdb->query( "DELETE FROM {$wpdb->options} WHERE option_name LIKE 'elementor_scheme_%';" ); + } + + public static function _v_3_8_0_fix_php8_image_custom_size() { + global $wpdb; + + $attachment_ids = $wpdb->get_col( + 'SELECT `post_id` FROM `' . $wpdb->postmeta . '` + WHERE `meta_key` = "_wp_attachment_metadata" + AND ( + `meta_value` LIKE \'%elementor_custom_%\' + );' + ); + + foreach ( $attachment_ids as $attachment_id ) { + $attachment_metadata = wp_get_attachment_metadata( $attachment_id ); + if ( empty( $attachment_metadata['sizes'] ) || ! is_array( $attachment_metadata['sizes'] ) ) { + continue; + } + + $old_attachment_metadata = $attachment_metadata; + foreach ( $attachment_metadata['sizes'] as $size_key => $size_value ) { + if ( 0 !== strpos( $size_key, 'elementor_custom_' ) ) { + continue; + } + + if ( absint( $size_value['width'] ) !== $size_value['width'] ) { + $attachment_metadata['sizes'][ $size_key ]['width'] = (int) $size_value['width']; + } + + if ( absint( $size_value['height'] ) !== $size_value['height'] ) { + $attachment_metadata['sizes'][ $size_key ]['height'] = (int) $size_value['height']; + } + } + + if ( $old_attachment_metadata['sizes'] === $attachment_metadata['sizes'] ) { + continue; + } + + wp_update_attachment_metadata( $attachment_id, $attachment_metadata ); + } + } + + public static function _v_3_16_0_container_updates( $updater ) { + $post_ids = self::get_post_ids_by_element_type( $updater, 'container' ); + + if ( empty( $post_ids ) ) { + return false; + } + + foreach ( $post_ids as $post_id ) { + $document = Plugin::$instance->documents->get( $post_id ); + + if ( $document ) { + $data = $document->get_elements_data(); + } + + if ( empty( $data ) ) { + continue; + } + + $data = self::iterate_containers( $data ); + + self::save_updated_document( $post_id, $data ); + } + } + + public static function _v_3_17_0_site_settings_updates() { + $options = [ 'elementor_active_kit', 'elementor_previous_kit' ]; + + foreach ( $options as $option_name ) { + self::maybe_add_gap_control_data( $option_name ); + } + } + + private static function maybe_add_gap_control_data( $option_name ) { + $kit_id = get_option( $option_name ); + + if ( ! $kit_id ) { + return; + } + + $kit_data_array = get_post_meta( (int) $kit_id, '_elementor_page_settings', true ); + + $setting_not_exist = ! isset( $kit_data_array['space_between_widgets'] ); + $already_processed = isset( $kit_data_array['space_between_widgets']['column'] ); + + if ( $setting_not_exist || $already_processed ) { + return; + } + + $kit_data_array['space_between_widgets'] = Utils::update_space_between_widgets_values( $kit_data_array['space_between_widgets'] ); + + update_post_meta( (int) $kit_id, '_elementor_page_settings', $kit_data_array ); + } + + public static function remove_remote_info_api_data() { + global $wpdb; + + $key = Api::TRANSIENT_KEY_PREFIX; + + return $wpdb->query( "DELETE FROM {$wpdb->options} WHERE option_name LIKE '{$key}%';" ); // phpcs:ignore + } + + /** + * @param callback $callback + * @param Updater $updater + * + * @param bool $include_revisions + * + * @return mixed + */ + private static function move_settings_to_kit( $callback, $updater, $include_revisions = true ) { + $active_kit_id = Plugin::$instance->kits_manager->get_active_id(); + if ( ! $active_kit_id ) { + self::notice( 'Active kit not found. nothing to do.' ); + return false; + } + + $offset = $updater->get_current_offset(); + + // On first iteration apply on active kit itself. + // (don't include it with revisions in order to avoid offset/iteration count wrong numbers) + if ( 0 === $offset ) { + $callback( $active_kit_id ); + } + + if ( ! $include_revisions ) { + return false; + } + + $revisions_ids = wp_get_post_revisions( $active_kit_id, [ + 'fields' => 'ids', + 'posts_per_page' => $updater->get_limit(), + 'offset' => $offset, + ] ); + + foreach ( $revisions_ids as $revision_id ) { + $callback( $revision_id ); + } + + return $updater->should_run_again( $revisions_ids ); + } + + private static function notice( $message ) { + $logger = Plugin::$instance->logger->get_logger(); + $logger->notice( $message ); + } + + /** + * @param \wpdb $wpdb + * @param string $element_type + * + * @return array + */ + public static function get_post_ids_by_element_type( $updater, string $element_type ): array { + global $wpdb; + + return $updater->query_col( + 'SELECT `post_id` + FROM `' . $wpdb->postmeta . '` + WHERE `meta_key` = "_elementor_data" + AND `meta_value` LIKE \'%"elType":"' . $element_type . '"%\';' + ); + } + /** + * @param $data + * + * @return array|mixed + */ + private static function iterate_containers( $data ) { + return Plugin::$instance->db->iterate_data( + $data, function ( $element ) { + + if ( 'container' !== $element['elType'] || ! isset( $element['elements'] ) ) { + return $element; + } + + $element = self::maybe_convert_to_inner_container( $element ); + $element = self::maybe_convert_to_grid_container( $element ); + return Container::slider_to_gaps_converter( $element ); + } + ); + } + + /** + * @param $element + * + * @return array + */ + private static function maybe_convert_to_inner_container( $element ) { + foreach ( $element['elements'] as &$inner_element ) { + if ( 'container' === $inner_element['elType'] && ! $inner_element['isInner'] ) { + $inner_element['isInner'] = true; + } + } + + return $element; + } + + /** + * @param $element + * + * @return array + */ + private static function maybe_convert_to_grid_container( $element ) { + $is_grid_container = isset( $element['settings']['container_type'] ) && 'grid' === $element['settings']['container_type']; + if ( 'container' !== $element['elType'] || empty( $element['settings'] ) || ! $is_grid_container ) { + return $element; + } + + $element['settings']['presetTitle'] = 'Grid'; + $element['settings']['presetIcon'] = 'eicon-container-grid'; + + return $element; + } + + /** + * @param $post_id + * @param $data + * + * @return void + */ + private static function save_updated_document( $post_id, $data ) { + $json_value = wp_slash( wp_json_encode( $data ) ); + + update_metadata( 'post', $post_id, '_elementor_data', $json_value ); + } +} diff --git a/wp-content/plugins/elementor/core/utils/assets-config-provider.php b/wp-content/plugins/elementor/core/utils/assets-config-provider.php new file mode 100644 index 0000000..4c84f7c --- /dev/null +++ b/wp-content/plugins/elementor/core/utils/assets-config-provider.php @@ -0,0 +1,79 @@ +path_resolver = $path_resolver; + + return $this; + } + + /** + * Load asset config from a file into the collection. + * + * @param $key + * @param $path + * + * @return $this + */ + public function load( $key, $path = null ) { + if ( ! $path && $this->path_resolver ) { + $path_resolver_callback = $this->path_resolver; + + $path = $path_resolver_callback( $key ); + } + + if ( ! $path || ! file_exists( $path ) ) { + return $this; + } + + $config = require $path; + + if ( ! $this->is_valid_handle( $config ) ) { + return $this; + } + + $this->items[ $key ] = [ + 'handle' => $config['handle'], + 'deps' => $this->is_valid_deps( $config ) ? $config['deps'] : [], + ]; + + return $this; + } + + /** + * Check that the handle property in the config is a valid. + * + * @param $config + * + * @return bool + */ + private function is_valid_handle( $config ) { + return ! empty( $config['handle'] ) && is_string( $config['handle'] ); + } + + /** + * Check that the deps property in the config is a valid. + * + * @param $config + * + * @return bool + */ + private function is_valid_deps( $config ) { + return isset( $config['deps'] ) && is_array( $config['deps'] ); + } +} diff --git a/wp-content/plugins/elementor/core/utils/assets-translation-loader.php b/wp-content/plugins/elementor/core/utils/assets-translation-loader.php new file mode 100644 index 0000000..7b4e0fd --- /dev/null +++ b/wp-content/plugins/elementor/core/utils/assets-translation-loader.php @@ -0,0 +1,74 @@ +registered[ $handle ]->src; + }, $handles ); + } + + private static function default_replace_translation( $relative_path ) { + // Translations are always based on the non-minified filename. + $relative_path_without_ext = preg_replace( '/(\.min)?\.js$/i', '', $relative_path ); + + // By default, we suffix the file with `.strings` (e.g 'assets/js/editor.js' => 'assets/js/editor.strings.js'). + return implode( '.', [ + $relative_path_without_ext, + 'strings', + 'js', + ] ); + } +} diff --git a/wp-content/plugins/elementor/core/utils/collection.php b/wp-content/plugins/elementor/core/utils/collection.php new file mode 100644 index 0000000..1e46a44 --- /dev/null +++ b/wp-content/plugins/elementor/core/utils/collection.php @@ -0,0 +1,526 @@ +items = $items; + } + + /** + * @param array $items + * + * @return static + */ + public static function make( array $items = [] ) { + return new static( $items ); + } + + /** + * @param callable|null $callback + * + * @return $this + */ + public function filter( callable $callback = null ) { + if ( ! $callback ) { + return new static( array_filter( $this->items ) ); + } + + return new static( array_filter( $this->items, $callback, ARRAY_FILTER_USE_BOTH ) ); + } + + /** + * @param $items + * + * @return $this + */ + public function merge( $items ) { + if ( $items instanceof Collection ) { + $items = $items->all(); + } + + return new static( array_merge( $this->items, $items ) ); + } + + /** + * Union the collection with the given items. + * + * @param array $items + * + * @return $this + */ + public function union( array $items ) { + return new static( $this->all() + $items ); + } + + /** + * Merge array recursively + * + * @param $items + * + * @return $this + */ + public function merge_recursive( $items ) { + if ( $items instanceof Collection ) { + $items = $items->all(); + } + + return new static( array_merge_recursive( $this->items, $items ) ); + } + + /** + * Replace array recursively + * + * @param $items + * + * @return $this + */ + public function replace_recursive( $items ) { + if ( $items instanceof Collection ) { + $items = $items->all(); + } + + return new static( array_replace_recursive( $this->items, $items ) ); + } + + /** + * Implode the items + * + * @param $glue + * + * @return string + */ + public function implode( $glue ) { + return implode( $glue, $this->items ); + } + + /** + * Run a map over each of the items. + * + * @param callable $callback + * @return $this + */ + public function map( callable $callback ) { + $keys = array_keys( $this->items ); + + $items = array_map( $callback, $this->items, $keys ); + + return new static( array_combine( $keys, $items ) ); + } + + /** + * Run a callback over each of the items. + * + * @param callable $callback + * @return $this + */ + public function each( callable $callback ) { + foreach ( $this->items as $key => $value ) { + if ( false === $callback( $value, $key ) ) { + break; + } + } + + return $this; + } + + /** + * @param callable $callback + * @param null $initial + * + * @return mixed|null + */ + public function reduce( callable $callback, $initial = null ) { + $result = $initial; + + foreach ( $this->all() as $key => $value ) { + $result = $callback( $result, $value, $key ); + } + + return $result; + } + + /** + * @param callable $callback + * + * @return $this + */ + public function map_with_keys( callable $callback ) { + $result = []; + + foreach ( $this->items as $key => $value ) { + $assoc = $callback( $value, $key ); + + foreach ( $assoc as $map_key => $map_value ) { + $result[ $map_key ] = $map_value; + } + } + + return new static( $result ); + } + + /** + * Get all items except for those with the specified keys. + * + * @param array $keys + * + * @return $this + */ + public function except( array $keys ) { + return $this->filter( function ( $value, $key ) use ( $keys ) { + return ! in_array( $key, $keys, true ); + } ); + } + + /** + * Get the items with the specified keys. + * + * @param array $keys + * + * @return $this + */ + public function only( array $keys ) { + return $this->filter( function ( $value, $key ) use ( $keys ) { + return in_array( $key, $keys, true ); + } ); + } + + /** + * Run over the collection to get specific prop from the collection item. + * + * @param $key + * + * @return $this + */ + public function pluck( $key ) { + $result = []; + + foreach ( $this->items as $item ) { + $result[] = $this->get_item_value( $item, $key ); + } + + return new static( $result ); + } + + /** + * Group the collection items by specific key in each collection item. + * + * @param $group_by + * + * @return $this + */ + public function group_by( $group_by ) { + $result = []; + + foreach ( $this->items as $item ) { + $group_key = $this->get_item_value( $item, $group_by, 0 ); + + $result[ $group_key ][] = $item; + } + + return new static( $result ); + } + + /** + * Sort keys + * + * @param false $descending + * + * @return $this + */ + public function sort_keys( $descending = false ) { + $items = $this->items; + + if ( $descending ) { + krsort( $items ); + } else { + ksort( $items ); + } + + return new static( $items ); + } + + /** + * Get specific item from the collection. + * + * @param $key + * @param null $default + * + * @return mixed|null + */ + public function get( $key, $default = null ) { + if ( ! array_key_exists( $key, $this->items ) ) { + return $default; + } + + return $this->items[ $key ]; + } + + /** + * Get the first item. + * + * @param null $default + * + * @return mixed|null + */ + public function first( $default = null ) { + if ( $this->is_empty() ) { + return $default; + } + + foreach ( $this->items as $item ) { + return $item; + } + } + + /** + * Find an element from the items. + * + * @param callable $callback + * @param null $default + * + * @return mixed|null + */ + public function find( callable $callback, $default = null ) { + foreach ( $this->all() as $key => $item ) { + if ( $callback( $item, $key ) ) { + return $item; + } + } + + return $default; + } + + /** + * @param callable|string|int $value + * + * @return bool + */ + public function contains( $value ) { + $callback = $value instanceof \Closure + ? $value + : function ( $item ) use ( $value ) { + return $item === $value; + }; + + foreach ( $this->all() as $key => $item ) { + if ( $callback( $item, $key ) ) { + return true; + } + } + + return false; + } + + /** + * Make sure all the values inside the array are uniques. + * + * @param null|string|string[] $keys + * + * @return $this + */ + public function unique( $keys = null ) { + if ( ! $keys ) { + return new static( + array_unique( $this->items ) + ); + } + + if ( ! is_array( $keys ) ) { + $keys = [ $keys ]; + } + + $exists = []; + + return $this->filter( function ( $item ) use ( $keys, &$exists ) { + $value = null; + + foreach ( $keys as $key ) { + $current_value = $this->get_item_value( $item, $key ); + + $value .= "{$key}:{$current_value};"; + } + + // If no value for the specific key return the item. + if ( null === $value ) { + return true; + } + + // If value is not exists, add to the exists array and return the item. + if ( ! in_array( $value, $exists, true ) ) { + $exists[] = $value; + + return true; + } + + return false; + } ); + } + + /** + * @return array + */ + public function keys() { + return array_keys( $this->items ); + } + + /** + * @return bool + */ + public function is_empty() { + return empty( $this->items ); + } + + /** + * @return array + */ + public function all() { + return $this->items; + } + + /** + * @return array + */ + public function values() { + return array_values( $this->all() ); + } + + /** + * Support only one level depth. + * + * @return $this + */ + public function flatten() { + $result = []; + + foreach ( $this->all() as $item ) { + $item = $item instanceof Collection ? $item->all() : $item; + + if ( ! is_array( $item ) ) { + $result[] = $item; + } else { + $values = array_values( $item ); + + foreach ( $values as $value ) { + $result[] = $value; + } + } + } + + return new static( $result ); + } + + /** + * @param ...$values + * + * @return $this + */ + public function push( ...$values ) { + foreach ( $values as $value ) { + $this->items[] = $value; + } + + return $this; + } + + public function prepend( ...$values ) { + $this->items = array_merge( $values, $this->items ); + + return $this; + } + + /** + * @param mixed $offset + * + * @return bool + */ + #[\ReturnTypeWillChange] + public function offsetExists( $offset ) { + return isset( $this->items[ $offset ] ); + } + + /** + * @param mixed $offset + * + * @return mixed + */ + #[\ReturnTypeWillChange] + public function offsetGet( $offset ) { + return $this->items[ $offset ]; + } + + /** + * @param mixed $offset + * @param mixed $value + */ + #[\ReturnTypeWillChange] + public function offsetSet( $offset, $value ) { + if ( is_null( $offset ) ) { + $this->items[] = $value; + } else { + $this->items[ $offset ] = $value; + } + } + + /** + * @param mixed $offset + */ + #[\ReturnTypeWillChange] + public function offsetUnset( $offset ) { + unset( $this->items[ $offset ] ); + } + + /** + * @return \ArrayIterator|\Traversable + */ + #[\ReturnTypeWillChange] + public function getIterator() { + return new \ArrayIterator( $this->items ); + } + + /** + * @return int|void + */ + #[\ReturnTypeWillChange] + public function count() { + return count( $this->items ); + } + + /** + * @param $item + * @param $key + * @param null $default + * + * @return mixed|null + */ + private function get_item_value( $item, $key, $default = null ) { + $value = $default; + + if ( is_object( $item ) && isset( $item->{$key} ) ) { + $value = $item->{$key}; + } elseif ( is_array( $item ) && isset( $item[ $key ] ) ) { + $value = $item[ $key ]; + } + + return $value; + } +} diff --git a/wp-content/plugins/elementor/core/utils/exceptions.php b/wp-content/plugins/elementor/core/utils/exceptions.php new file mode 100644 index 0000000..7f40c16 --- /dev/null +++ b/wp-content/plugins/elementor/core/utils/exceptions.php @@ -0,0 +1,41 @@ +new_locale = $new_locale; + + $this->original_locale = $original_locale ? $original_locale : determine_locale(); + + $this->filter = function() use ( $new_locale ) { + return $new_locale; + }; + } + + /** + * Force the translations to use a specific locale. + * + * @return void + */ + public function force() { + switch_to_locale( $this->new_locale ); + + /** + * Reset the \WP_Textdomain_Registry instance to clear its cache. + * + * @see https://github.com/WordPress/wordpress-develop/blob/799d7dc86f5b07b17f7a418948fc851bd2fc334b/src/wp-includes/class-wp-textdomain-registry.php#L179-L187 + * @see https://github.com/WordPress/wordpress-develop/blob/799d7dc86f5b07b17f7a418948fc851bd2fc334b/tests/phpunit/tests/l10n/wpLocaleSwitcher.php#L19-L31 + */ + $this->reset_textdomain_registry(); + + /** + * Reset l10n in order to clear the translations cache. + * + * @see https://github.com/WordPress/wordpress-develop/blob/2437ef5130f10153bc4fffa412d4f37e65e3d66b/src/wp-includes/l10n.php#L1324 + * @see https://github.com/WordPress/wordpress-develop/blob/2437ef5130f10153bc4fffa412d4f37e65e3d66b/src/wp-includes/l10n.php#L1222 + * @see https://github.com/WordPress/wordpress-develop/blob/2437ef5130f10153bc4fffa412d4f37e65e3d66b/src/wp-includes/l10n.php#L821 + */ + $this->reset_l10n(); + + /** + * Force the translations of `$new_locale` to be loaded. + * + * @see https://github.com/WordPress/wordpress-develop/blob/2437ef5130f10153bc4fffa412d4f37e65e3d66b/src/wp-includes/l10n.php#L1294 + */ + add_filter( 'pre_determine_locale', $this->filter ); + } + + /** + * Restore the original locale and cleanup filters, etc. + * + * @return void + */ + public function restore() { + $this->restore_textdomain_registry(); + + $this->reset_l10n(); + + switch_to_locale( $this->original_locale ); + + remove_filter( 'pre_determine_locale', $this->filter ); + } + + private function reset_textdomain_registry() { + if ( ! class_exists( '\WP_Textdomain_Registry' ) ) { + return; + } + + /** @var \WP_Textdomain_Registry $wp_textdomain_registry */ + global $wp_textdomain_registry; + + $this->original_textdomain_registry = $wp_textdomain_registry; + + $wp_textdomain_registry = new \WP_Textdomain_Registry(); + } + + private function restore_textdomain_registry() { + if ( ! $this->original_textdomain_registry ) { + return; + } + + /** @var \WP_Textdomain_Registry $wp_textdomain_registry */ + global $wp_textdomain_registry; + + $wp_textdomain_registry = $this->original_textdomain_registry; + } + + /** + * Reset the l10n global variables. + * + * @return void + */ + private function reset_l10n() { + global $l10n, $l10n_unloaded; + + if ( is_array( $l10n ) ) { + foreach ( $l10n as $domain => $l10n_data ) { + unset( $l10n[ $domain ] ); + } + } + + if ( is_array( $l10n_unloaded ) ) { + foreach ( $l10n_unloaded as $domain => $l10n_unloaded_data ) { + unset( $l10n_unloaded[ $domain ] ); + } + } + } +} diff --git a/wp-content/plugins/elementor/core/utils/hints.php b/wp-content/plugins/elementor/core/utils/hints.php new file mode 100644 index 0000000..8d161fc --- /dev/null +++ b/wp-content/plugins/elementor/core/utils/hints.php @@ -0,0 +1,356 @@ + [ + self::DISMISSED => 'image-optimization-once', + self::CAPABILITY => 'install_plugins', + self::DEFINED => 'IMAGE_OPTIMIZATION_VERSION', + ], + 'image-optimization-once-media-modal' => [ + self::DISMISSED => 'image-optimization-once-media-modal', + self::CAPABILITY => 'install_plugins', + self::DEFINED => 'IMAGE_OPTIMIZATION_VERSION', + ], + 'image-optimization' => [ + self::DISMISSED => 'image_optimizer_hint', + self::CAPABILITY => 'install_plugins', + self::DEFINED => 'IMAGE_OPTIMIZATION_VERSION', + ], + 'image-optimization-media-modal' => [ + self::DISMISSED => 'image-optimization-media-modal', + self::CAPABILITY => 'install_plugins', + self::DEFINED => 'IMAGE_OPTIMIZATION_VERSION', + ], + ]; + if ( ! $hint_key ) { + return $hints; + } + + return $hints[ $hint_key ] ?? []; + } + + /** + * get_notice_icon + * @return string + */ + public static function get_notice_icon(): string { + return '
    + + + +
    '; + } + + /** + * get_notice_template + * + * Print or Retrieve the notice template. + * @param array $notice + * @param bool $return + * + * @return string|void + */ + public static function get_notice_template( array $notice, bool $return = false ) { + $default_settings = [ + 'type' => 'info', + 'icon' => false, + 'heading' => '', + 'content' => '', + 'dismissible' => false, + 'button_text' => '', + 'button_event' => '', + 'button_data' => [], + 'display' => false, + ]; + $notice_settings = array_merge( $default_settings, $notice ); + + if ( empty( $notice_settings['heading'] ) && empty( $notice_settings['content'] ) ) { + return ''; + } + + if ( ! in_array( $notice_settings['type'], self::get_notice_types(), true ) ) { + $notice_settings['type'] = 'info'; + } + + $icon = ''; + $heading = ''; + $content = ''; + $dismissible = ''; + $button = ''; + + if ( $notice_settings['icon'] ) { + $icon = self::get_notice_icon(); + } + + if ( ! empty( $notice_settings['heading'] ) ) { + $heading = '
    ' . $notice_settings['heading'] . '
    '; + } + + if ( ! empty( $notice_settings['content'] ) ) { + $content = '
    ' . $notice_settings['content'] . '
    '; + } + + if ( ! empty( $notice_settings['button_text'] ) ) { + $button_settings = ( ! empty( $notice_settings['button_data'] ) ) ? ' data-settings="' . esc_attr( json_encode( $notice_settings['button_data'] ) ) . '"' : ''; + $button = '
    + +
    '; + } + + if ( $notice_settings['dismissible'] ) { + $dismissible = ''; + } + + $notice_template = sprintf( '
    + %2$s +
    + %3$s + %4$s + %5$s +
    + %6$s +
    ', + $notice_settings['type'], + $icon, + $heading, + $content, + $button, + $dismissible, + $notice_settings['display'] + ); + + if ( $return ) { + return $notice_template; + } + echo wp_kses( $notice_template, self::get_notice_allowed_html() ); + } + + /** + * get_plugin_install_url + * @param $plugin_slug + * + * @return string + */ + public static function get_plugin_install_url( $plugin_slug ): string { + $action = 'install-plugin'; + return wp_nonce_url( + add_query_arg( + [ + 'action' => $action, + 'plugin' => $plugin_slug, + ], + admin_url( 'update.php' ) + ), + $action . '_' . $plugin_slug + ); + } + + /** + * get_plugin_activate_url + * @param $plugin_slug + * + * @return string + */ + public static function get_plugin_activate_url( $plugin_slug ): string { + return admin_url( 'plugins.php' ); + } + + /** + * is_dismissed + * @param $key + * + * @return bool + */ + public static function is_dismissed( $key ): bool { + $dismissed = User::get_dismissed_editor_notices(); + return in_array( $key, $dismissed, true ); + } + + /** + * should_display_hint + * @param $hint_key + * + * @return bool + */ + public static function should_display_hint( $hint_key ): bool { + $hint = self::get_hints( $hint_key ); + if ( empty( $hint ) ) { + return false; + } + + foreach ( $hint as $key => $value ) { + switch ( $key ) { + case self::DISMISSED: + if ( self::is_dismissed( $value ) ) { + return false; + } + break; + case self::CAPABILITY: + if ( ! current_user_can( $value ) ) { + return false; + } + break; + case self::DEFINED: + if ( defined( $value ) ) { + return false; + } + break; + case self::PLUGIN_INSTALLED: + if ( ! self::is_plugin_installed( $value ) ) { + return false; + } + break; + case self::PLUGIN_ACTIVE: + if ( ! self::is_plugin_active( $value ) ) { + return false; + } + break; + } + } + return true; + } + + /** + * is_plugin_installed + * @param $plugin + * + * @return bool + */ + public static function is_plugin_installed( $plugin ) : bool { + $plugins = get_plugins(); + $plugin = self::ensure_plugin_folder( $plugin ); + return ! empty( $plugins[ $plugin ] ); + } + + /** + * is_plugin_active + * @param $plugin + * + * @return bool + */ + public static function is_plugin_active( $plugin ): bool { + $plugin = self::ensure_plugin_folder( $plugin ); + return is_plugin_active( $plugin ); + } + + /** + * get_plugin_action_url + * @param $plugin + * + * @return string + */ + public static function get_plugin_action_url( $plugin ): string { + if ( ! self::is_plugin_installed( $plugin ) ) { + return self::get_plugin_install_url( $plugin ); + } + + if ( ! self::is_plugin_active( $plugin ) ) { + return self::get_plugin_activate_url( $plugin ); + } + + return ''; + } + + /** + * ensure_plugin_folder + * @param $plugin + * + * @return string + */ + private static function ensure_plugin_folder( $plugin ): string { + if ( false === strpos( $plugin, '/' ) ) { + $plugin = $plugin . '/' . $plugin . '.php'; + } + return $plugin; + } + + /** + * get_notice_allowed_html + * @return array[] + */ + public static function get_notice_allowed_html(): array { + return [ + 'div' => [ + 'class' => [], + 'data-display' => [], + ], + 'svg' => [ + 'width' => [], + 'height' => [], + 'viewbox' => [], + 'fill' => [], + 'xmlns' => [], + ], + 'path' => [ + 'd' => [], + 'stroke' => [], + 'stroke-width' => [], + 'stroke-linecap' => [], + 'stroke-linejoin' => [], + ], + 'button' => [ + 'class' => [], + 'data-event' => [], + 'data-settings' => [], + 'data-tooltip' => [], + ], + 'i' => [ + 'class' => [], + 'aria-hidden' => [], + ], + 'span' => [ + 'class' => [], + ], + 'a' => [ + 'href' => [], + 'style' => [], + 'target' => [], + ], + ]; + } +} diff --git a/wp-content/plugins/elementor/core/utils/http.php b/wp-content/plugins/elementor/core/utils/http.php new file mode 100644 index 0000000..e7caa78 --- /dev/null +++ b/wp-content/plugins/elementor/core/utils/http.php @@ -0,0 +1,50 @@ +request( $url, $args ); + + if ( $this->is_successful_response( $response ) ) { + return $response; + } + } + + return $response; + } + + /** + * @param $response + * + * @return bool + */ + private function is_successful_response( $response ) { + if ( is_wp_error( $response ) ) { + return false; + } + + $response_code = (int) wp_remote_retrieve_response_code( $response ); + + if ( in_array( $response_code, [ 0, 404, 500 ], true ) ) { + return false; + } + + return true; + } +} diff --git a/wp-content/plugins/elementor/core/utils/import-export/parsers/wxr-parser-regex.php b/wp-content/plugins/elementor/core/utils/import-export/parsers/wxr-parser-regex.php new file mode 100644 index 0000000..5006319 --- /dev/null +++ b/wp-content/plugins/elementor/core/utils/import-export/parsers/wxr-parser-regex.php @@ -0,0 +1,387 @@ + [ + 'posts', + function ( $post ) { + return $this->process_post( $post ); + }, + ], + 'wp:category' => [ + 'categories', + function ( $category ) { + return $this->process_category( $category ); + }, + ], + 'wp:tag' => [ + 'tags', + function ( $tag ) { + return $this->process_tag( $tag ); + }, + ], + 'wp:term' => [ + 'terms', + function ( $term ) { + return $this->process_term( $term ); + }, + ], + ]; + + $fp = $this->fopen( $file, 'r' ); + if ( $fp ) { + while ( ! $this->feof( $fp ) ) { + $importline = rtrim( $this->fgets( $fp ) ); + + if ( ! $wxr_version && preg_match( '|(\d+\.\d+)|', $importline, $version ) ) { + $wxr_version = $version[1]; + } + + if ( false !== strpos( $importline, '' ) ) { + preg_match( '|(.*?)|is', $importline, $url ); + $this->base_url = $url[1]; + continue; + } + + if ( false !== strpos( $importline, '' ) ) { + preg_match( '|(.*?)|is', $importline, $blog_url ); + $this->base_blog_url = $blog_url[1]; + continue; + } else { + $this->base_blog_url = $this->base_url; + } + + if ( false !== strpos( $importline, '' ) ) { + preg_match( '|(.*?)|is', $importline, $author ); + $a = $this->process_author( $author[1] ); + $this->authors[ $a['author_login'] ] = $a; + continue; + } + + foreach ( $multiline_tags as $tag => $handler ) { + // Handle multi-line tags on a singular line. + if ( preg_match( '|<' . $tag . '>(.*?)|is', $importline, $matches ) ) { + $this->{$handler[0]}[] = call_user_func( $handler[1], $matches[1] ); + + continue; + } + + $pos = strpos( $importline, "<$tag>" ); + + if ( false !== $pos ) { + // Take note of any content after the opening tag. + $multiline_content = trim( substr( $importline, $pos + strlen( $tag ) + 2 ) ); + + // We don't want to have this line added to `$is_multiline` below. + $importline = ''; + $in_multiline = $tag; + + continue; + } + + $pos = strpos( $importline, "" ); + + if ( false !== $pos ) { + $in_multiline = false; + $multiline_content .= trim( substr( $importline, 0, $pos ) ); + + $this->{$handler[0]}[] = call_user_func( $handler[1], $multiline_content ); + } + } + + if ( $in_multiline && $importline ) { + $multiline_content .= $importline . "\n"; + } + } + + $this->fclose( $fp ); + } + + if ( ! $wxr_version ) { + return new WP_Error( 'WXR_parse_error', esc_html__( 'This does not appear to be a WXR file, missing/invalid WXR version number', 'elementor' ) ); + } + + return [ + 'authors' => $this->authors, + 'posts' => $this->posts, + 'categories' => $this->categories, + 'tags' => $this->tags, + 'terms' => $this->terms, + 'base_url' => $this->base_url, + 'base_blog_url' => $this->base_blog_url, + 'version' => $wxr_version, + ]; + } + + private function process_category( $category ) { + $term = [ + 'term_id' => $this->get_tag( $category, 'wp:term_id' ), + 'cat_name' => $this->get_tag( $category, 'wp:cat_name' ), + 'category_nicename' => $this->get_tag( $category, 'wp:category_nicename' ), + 'category_parent' => $this->get_tag( $category, 'wp:category_parent' ), + 'category_description' => $this->get_tag( $category, 'wp:category_description' ), + ]; + + $term_meta = $this->process_meta( $category, 'wp:termmeta' ); + if ( ! empty( $term_meta ) ) { + $term['termmeta'] = $term_meta; + } + + return $term; + } + + private function process_tag( $tag ) { + $term = [ + 'term_id' => $this->get_tag( $tag, 'wp:term_id' ), + 'tag_name' => $this->get_tag( $tag, 'wp:tag_name' ), + 'tag_slug' => $this->get_tag( $tag, 'wp:tag_slug' ), + 'tag_description' => $this->get_tag( $tag, 'wp:tag_description' ), + ]; + + $term_meta = $this->process_meta( $tag, 'wp:termmeta' ); + if ( ! empty( $term_meta ) ) { + $term['termmeta'] = $term_meta; + } + + return $term; + } + + private function process_term( $term ) { + $term_data = [ + 'term_id' => $this->get_tag( $term, 'wp:term_id' ), + 'term_taxonomy' => $this->get_tag( $term, 'wp:term_taxonomy' ), + 'slug' => $this->get_tag( $term, 'wp:term_slug' ), + 'term_parent' => $this->get_tag( $term, 'wp:term_parent' ), + 'term_name' => $this->get_tag( $term, 'wp:term_name' ), + 'term_description' => $this->get_tag( $term, 'wp:term_description' ), + ]; + + $term_meta = $this->process_meta( $term, 'wp:termmeta' ); + if ( ! empty( $term_meta ) ) { + $term_data['termmeta'] = $term_meta; + } + + return $term_data; + } + + private function process_meta( $string, $tag ) { + $parsed_meta = []; + + preg_match_all( "|<$tag>(.+?)|is", $string, $meta ); + + if ( ! isset( $meta[1] ) ) { + return $parsed_meta; + } + + foreach ( $meta[1] as $m ) { + $parsed_meta[] = [ + 'key' => $this->get_tag( $m, 'wp:meta_key' ), + 'value' => $this->get_tag( $m, 'wp:meta_value' ), + ]; + } + + return $parsed_meta; + } + + private function process_author( $a ) { + return [ + 'author_id' => $this->get_tag( $a, 'wp:author_id' ), + 'author_login' => $this->get_tag( $a, 'wp:author_login' ), + 'author_email' => $this->get_tag( $a, 'wp:author_email' ), + 'author_display_name' => $this->get_tag( $a, 'wp:author_display_name' ), + 'author_first_name' => $this->get_tag( $a, 'wp:author_first_name' ), + 'author_last_name' => $this->get_tag( $a, 'wp:author_last_name' ), + ]; + } + + private function process_post( $post ) { + $normalize_tag_callback = function ( $matches ) { + return $this->normalize_tag( $matches ); + }; + + $post_id = $this->get_tag( $post, 'wp:post_id' ); + $post_title = $this->get_tag( $post, 'title' ); + $post_date = $this->get_tag( $post, 'wp:post_date' ); + $post_date_gmt = $this->get_tag( $post, 'wp:post_date_gmt' ); + $comment_status = $this->get_tag( $post, 'wp:comment_status' ); + $ping_status = $this->get_tag( $post, 'wp:ping_status' ); + $status = $this->get_tag( $post, 'wp:status' ); + $post_name = $this->get_tag( $post, 'wp:post_name' ); + $post_parent = $this->get_tag( $post, 'wp:post_parent' ); + $menu_order = $this->get_tag( $post, 'wp:menu_order' ); + $post_type = $this->get_tag( $post, 'wp:post_type' ); + $post_password = $this->get_tag( $post, 'wp:post_password' ); + $is_sticky = $this->get_tag( $post, 'wp:is_sticky' ); + $guid = $this->get_tag( $post, 'guid' ); + $post_author = $this->get_tag( $post, 'dc:creator' ); + + $post_excerpt = $this->get_tag( $post, 'excerpt:encoded' ); + $post_excerpt = preg_replace_callback( '|<(/?[A-Z]+)|', $normalize_tag_callback, $post_excerpt ); + $post_excerpt = str_replace( '
    ', '
    ', $post_excerpt ); + $post_excerpt = str_replace( '
    ', '
    ', $post_excerpt ); + + $post_content = $this->get_tag( $post, 'content:encoded' ); + $post_content = preg_replace_callback( '|<(/?[A-Z]+)|', $normalize_tag_callback, $post_content ); + $post_content = str_replace( '
    ', '
    ', $post_content ); + $post_content = str_replace( '
    ', '
    ', $post_content ); + + $postdata = compact( 'post_id', 'post_author', 'post_date', 'post_date_gmt', 'post_content', 'post_excerpt', 'post_title', 'status', 'post_name', 'comment_status', 'ping_status', 'guid', 'post_parent', 'menu_order', 'post_type', 'post_password', 'is_sticky' ); + + $attachment_url = $this->get_tag( $post, 'wp:attachment_url' ); + if ( $attachment_url ) { + $postdata['attachment_url'] = $attachment_url; + } + + preg_match_all( '|(.+?)|is', $post, $terms, PREG_SET_ORDER ); + foreach ( $terms as $t ) { + $post_terms[] = [ + 'slug' => $t[2], + 'domain' => $t[1], + 'name' => str_replace( [ '' ], '', $t[3] ), + ]; + } + if ( ! empty( $post_terms ) ) { + $postdata['terms'] = $post_terms; + } + + preg_match_all( '|(.+?)|is', $post, $comments ); + $comments = $comments[1]; + if ( $comments ) { + foreach ( $comments as $comment ) { + $post_comments[] = [ + 'comment_id' => $this->get_tag( $comment, 'wp:comment_id' ), + 'comment_author' => $this->get_tag( $comment, 'wp:comment_author' ), + 'comment_author_email' => $this->get_tag( $comment, 'wp:comment_author_email' ), + 'comment_author_IP' => $this->get_tag( $comment, 'wp:comment_author_IP' ), + 'comment_author_url' => $this->get_tag( $comment, 'wp:comment_author_url' ), + 'comment_date' => $this->get_tag( $comment, 'wp:comment_date' ), + 'comment_date_gmt' => $this->get_tag( $comment, 'wp:comment_date_gmt' ), + 'comment_content' => $this->get_tag( $comment, 'wp:comment_content' ), + 'comment_approved' => $this->get_tag( $comment, 'wp:comment_approved' ), + 'comment_type' => $this->get_tag( $comment, 'wp:comment_type' ), + 'comment_parent' => $this->get_tag( $comment, 'wp:comment_parent' ), + 'comment_user_id' => $this->get_tag( $comment, 'wp:comment_user_id' ), + 'commentmeta' => $this->process_meta( $comment, 'wp:commentmeta' ), + ]; + } + } + if ( ! empty( $post_comments ) ) { + $postdata['comments'] = $post_comments; + } + + $post_meta = $this->process_meta( $post, 'wp:postmeta' ); + if ( ! empty( $post_meta ) ) { + $postdata['postmeta'] = $post_meta; + } + + return $postdata; + } + + private function get_tag( $string, $tag ) { + preg_match( "|<$tag.*?>(.*?)|is", $string, $return ); + if ( isset( $return[1] ) ) { + if ( substr( $return[1], 0, 9 ) == '' ) !== false ) { + preg_match_all( '||s', $return[1], $matches ); + $return = ''; + foreach ( $matches[1] as $match ) { + $return .= $match; + } + } else { + $return = preg_replace( '|^$|s', '$1', $return[1] ); + } + } else { + $return = $return[1]; + } + } else { + $return = ''; + } + + return $return; + } + + private function normalize_tag( $matches ) { + return '<' . strtolower( $matches[1] ); + } + + private function fopen( $filename, $mode = 'r' ) { + if ( $this->has_gzip ) { + return gzopen( $filename, $mode ); + } + + return fopen( $filename, $mode ); + } + + private function feof( $fp ) { + if ( $this->has_gzip ) { + return gzeof( $fp ); + } + + return feof( $fp ); + } + + private function fgets( $fp, $len = 8192 ) { + if ( $this->has_gzip ) { + return gzgets( $fp, $len ); + } + + return fgets( $fp, $len ); + } + + private function fclose( $fp ) { + if ( $this->has_gzip ) { + return gzclose( $fp ); + } + + return fclose( $fp ); + } + + public function __construct() { + $this->has_gzip = is_callable( 'gzopen' ); + } +} diff --git a/wp-content/plugins/elementor/core/utils/import-export/parsers/wxr-parser-simple-xml.php b/wp-content/plugins/elementor/core/utils/import-export/parsers/wxr-parser-simple-xml.php new file mode 100644 index 0000000..fab85ef --- /dev/null +++ b/wp-content/plugins/elementor/core/utils/import-export/parsers/wxr-parser-simple-xml.php @@ -0,0 +1,272 @@ +loadXML( Utils::file_get_contents( $file ) ); + + if ( $libxml_disable_entity_loader_exists && ! is_null( $old_value ) ) { + libxml_disable_entity_loader( $old_value ); // phpcs:ignore Generic.PHP.DeprecatedFunctions.Deprecated + } + + if ( ! $success || isset( $dom->doctype ) ) { + return new WP_Error( 'SimpleXML_parse_error', esc_html__( 'There was an error when reading this WXR file', 'elementor' ), libxml_get_errors() ); + } + + $xml = simplexml_import_dom( $dom ); + unset( $dom ); + + // Halt if loading produces an error. + if ( ! $xml ) { + return new WP_Error( 'SimpleXML_parse_error', esc_html__( 'There was an error when reading this WXR file', 'elementor' ), libxml_get_errors() ); + } + + $wxr_version = $xml->xpath( '/rss/channel/wp:wxr_version' ); + if ( ! $wxr_version ) { + return new WP_Error( 'WXR_parse_error', esc_html__( 'This does not appear to be a WXR file, missing/invalid WXR version number', 'elementor' ) ); + } + + $wxr_version = (string) trim( $wxr_version[0] ); + // Confirm that we are dealing with the correct file format. + if ( ! preg_match( '/^\d+\.\d+$/', $wxr_version ) ) { + return new WP_Error( 'WXR_parse_error', esc_html__( 'This does not appear to be a WXR file, missing/invalid WXR version number', 'elementor' ) ); + } + + $base_url = $xml->xpath( '/rss/channel/wp:base_site_url' ); + $base_url = (string) trim( isset( $base_url[0] ) ? $base_url[0] : '' ); + + $base_blog_url = $xml->xpath( '/rss/channel/wp:base_blog_url' ); + if ( $base_blog_url ) { + $base_blog_url = (string) trim( $base_blog_url[0] ); + } else { + $base_blog_url = $base_url; + } + + $page_on_front = $xml->xpath( '/rss/channel/wp:page_on_front' ); + + if ( $page_on_front ) { + $page_on_front = (int) $page_on_front[0]; + } + + $namespaces = $xml->getDocNamespaces(); + if ( ! isset( $namespaces['wp'] ) ) { + $namespaces['wp'] = 'http://wordpress.org/export/1.1/'; + } + if ( ! isset( $namespaces['excerpt'] ) ) { + $namespaces['excerpt'] = 'http://wordpress.org/export/1.1/excerpt/'; + } + + // Grab authors. + foreach ( $xml->xpath( '/rss/channel/wp:author' ) as $author_arr ) { + $a = $author_arr->children( $namespaces['wp'] ); + $login = (string) $a->author_login; + $authors[ $login ] = [ + 'author_id' => (int) $a->author_id, + 'author_login' => $login, + 'author_email' => (string) $a->author_email, + 'author_display_name' => (string) $a->author_display_name, + 'author_first_name' => (string) $a->author_first_name, + 'author_last_name' => (string) $a->author_last_name, + ]; + } + + // Grab cats, tags and terms. + foreach ( $xml->xpath( '/rss/channel/wp:category' ) as $term_arr ) { + $t = $term_arr->children( $namespaces['wp'] ); + $category = [ + 'term_id' => (int) $t->term_id, + 'category_nicename' => (string) $t->category_nicename, + 'category_parent' => (string) $t->category_parent, + 'cat_name' => (string) $t->cat_name, + 'category_description' => (string) $t->category_description, + ]; + + foreach ( $t->termmeta as $meta ) { + $category['termmeta'][] = [ + 'key' => (string) $meta->meta_key, + 'value' => (string) $meta->meta_value, + ]; + } + + $categories[] = $category; + } + + foreach ( $xml->xpath( '/rss/channel/wp:tag' ) as $term_arr ) { + $t = $term_arr->children( $namespaces['wp'] ); + $tag = [ + 'term_id' => (int) $t->term_id, + 'tag_slug' => (string) $t->tag_slug, + 'tag_name' => (string) $t->tag_name, + 'tag_description' => (string) $t->tag_description, + ]; + + foreach ( $t->termmeta as $meta ) { + $tag['termmeta'][] = [ + 'key' => (string) $meta->meta_key, + 'value' => (string) $meta->meta_value, + ]; + } + + $tags[] = $tag; + } + + foreach ( $xml->xpath( '/rss/channel/wp:term' ) as $term_arr ) { + $t = $term_arr->children( $namespaces['wp'] ); + $term = [ + 'term_id' => (int) $t->term_id, + 'term_taxonomy' => (string) $t->term_taxonomy, + 'slug' => (string) $t->term_slug, + 'term_parent' => (string) $t->term_parent, + 'term_name' => (string) $t->term_name, + 'term_description' => (string) $t->term_description, + ]; + + foreach ( $t->termmeta as $meta ) { + $term['termmeta'][] = [ + 'key' => (string) $meta->meta_key, + 'value' => (string) $meta->meta_value, + ]; + } + + $terms[] = $term; + } + + // Grab posts. + foreach ( $xml->channel->item as $item ) { + $post = [ + 'post_title' => (string) $item->title, + 'guid' => (string) $item->guid, + ]; + + $dc = $item->children( 'http://purl.org/dc/elements/1.1/' ); + $post['post_author'] = (string) $dc->creator; + + $content = $item->children( 'http://purl.org/rss/1.0/modules/content/' ); + $excerpt = $item->children( $namespaces['excerpt'] ); + $post['post_content'] = (string) $content->encoded; + $post['post_excerpt'] = (string) $excerpt->encoded; + + $wp = $item->children( $namespaces['wp'] ); + $post['post_id'] = (int) $wp->post_id; + $post['post_date'] = (string) $wp->post_date; + $post['post_date_gmt'] = (string) $wp->post_date_gmt; + $post['comment_status'] = (string) $wp->comment_status; + $post['ping_status'] = (string) $wp->ping_status; + $post['post_name'] = (string) $wp->post_name; + $post['status'] = (string) $wp->status; + $post['post_parent'] = (int) $wp->post_parent; + $post['menu_order'] = (int) $wp->menu_order; + $post['post_type'] = (string) $wp->post_type; + $post['post_password'] = (string) $wp->post_password; + $post['is_sticky'] = (int) $wp->is_sticky; + + if ( isset( $wp->attachment_url ) ) { + $post['attachment_url'] = (string) $wp->attachment_url; + } + + foreach ( $item->category as $c ) { + $att = $c->attributes(); + if ( isset( $att['nicename'] ) ) { + $post['terms'][] = [ + 'name' => (string) $c, + 'slug' => (string) $att['nicename'], + 'domain' => (string) $att['domain'], + ]; + } + } + + foreach ( $wp->postmeta as $meta ) { + $post['postmeta'][] = [ + 'key' => (string) $meta->meta_key, + 'value' => (string) $meta->meta_value, + ]; + } + + foreach ( $wp->comment as $comment ) { + $meta = []; + if ( isset( $comment->commentmeta ) ) { + foreach ( $comment->commentmeta as $m ) { + $meta[] = [ + 'key' => (string) $m->meta_key, + 'value' => (string) $m->meta_value, + ]; + } + } + + $post['comments'][] = [ + 'comment_id' => (int) $comment->comment_id, + 'comment_author' => (string) $comment->comment_author, + 'comment_author_email' => (string) $comment->comment_author_email, + 'comment_author_IP' => (string) $comment->comment_author_IP, + 'comment_author_url' => (string) $comment->comment_author_url, + 'comment_date' => (string) $comment->comment_date, + 'comment_date_gmt' => (string) $comment->comment_date_gmt, + 'comment_content' => (string) $comment->comment_content, + 'comment_approved' => (string) $comment->comment_approved, + 'comment_type' => (string) $comment->comment_type, + 'comment_parent' => (string) $comment->comment_parent, + 'comment_user_id' => (int) $comment->comment_user_id, + 'commentmeta' => $meta, + ]; + } + + $posts[] = $post; + } + + return [ + 'authors' => $authors, + 'posts' => $posts, + 'categories' => $categories, + 'tags' => $tags, + 'terms' => $terms, + 'base_url' => $base_url, + 'base_blog_url' => $base_blog_url, + 'page_on_front' => $page_on_front, + 'version' => $wxr_version, + ]; + } +} diff --git a/wp-content/plugins/elementor/core/utils/import-export/parsers/wxr-parser-xml.php b/wp-content/plugins/elementor/core/utils/import-export/parsers/wxr-parser-xml.php new file mode 100644 index 0000000..b46bda5 --- /dev/null +++ b/wp-content/plugins/elementor/core/utils/import-export/parsers/wxr-parser-xml.php @@ -0,0 +1,364 @@ +clear(); + + $xml = xml_parser_create( 'UTF-8' ); + xml_parser_set_option( $xml, XML_OPTION_SKIP_WHITE, 1 ); + xml_parser_set_option( $xml, XML_OPTION_CASE_FOLDING, 0 ); + xml_set_object( $xml, $this ); + + xml_set_character_data_handler( $xml, function ( $parser, $cdata ) { + $this->cdata( $cdata ); + } ); + + $tag_open_callback = function ( $parse, $tag, $attr ) { + $this->tag_open( $tag, $attr ); + }; + + $tag_close_callback = function ( $parser, $tag ) { + $this->tag_close( $tag ); + }; + + xml_set_element_handler( $xml, $tag_open_callback, $tag_close_callback ); + + if ( ! xml_parse( $xml, Utils::file_get_contents( $file ), true ) ) { + $current_line = xml_get_current_line_number( $xml ); + $current_column = xml_get_current_column_number( $xml ); + $error_code = xml_get_error_code( $xml ); + $error_string = xml_error_string( $error_code ); + + return new WP_Error( 'XML_parse_error', 'There was an error when reading this WXR file', [ + $current_line, + $current_column, + $error_string, + ] ); + } + xml_parser_free( $xml ); + + if ( ! preg_match( '/^\d+\.\d+$/', $this->wxr_version ) ) { + return new WP_Error( 'WXR_parse_error', esc_html__( 'This does not appear to be a WXR file, missing/invalid WXR version number', 'elementor' ) ); + } + + return array( + 'authors' => $this->authors, + 'posts' => $this->posts, + 'categories' => $this->category, + 'tags' => $this->tag, + 'terms' => $this->term, + 'base_url' => $this->base_url, + 'base_blog_url' => $this->base_blog_url, + 'version' => $this->wxr_version, + ); + } + + private function tag_open( $tag, $attr ) { + if ( in_array( $tag, self::$wp_tags ) ) { + $this->in_tag = substr( $tag, 3 ); + + return; + } + + if ( in_array( $tag, self::$wp_sub_tags ) ) { + $this->in_sub_tag = substr( $tag, 3 ); + + return; + } + + switch ( $tag ) { + case 'category': + if ( isset( $attr['domain'], $attr['nicename'] ) ) { + $this->sub_data['domain'] = $attr['domain']; + $this->sub_data['slug'] = $attr['nicename']; + } + break; + case 'item': + $this->in_post = true; + // No break !!!. + case 'title': + if ( $this->in_post ) { + $this->in_tag = 'post_title'; + } + break; + case 'guid': + $this->in_tag = 'guid'; + break; + case 'dc:creator': + $this->in_tag = 'post_author'; + break; + case 'content:encoded': + $this->in_tag = 'post_content'; + break; + case 'excerpt:encoded': + $this->in_tag = 'post_excerpt'; + break; + + case 'wp:term_slug': + $this->in_tag = 'slug'; + break; + case 'wp:meta_key': + $this->in_sub_tag = 'key'; + break; + case 'wp:meta_value': + $this->in_sub_tag = 'value'; + break; + } + } + + private function cdata( $cdata ) { + if ( ! trim( $cdata ) ) { + return; + } + + if ( false !== $this->in_tag || false !== $this->in_sub_tag ) { + $this->cdata .= $cdata; + } else { + $this->cdata .= trim( $cdata ); + } + } + + private function tag_close( $tag ) { + switch ( $tag ) { + case 'wp:comment': + unset( $this->sub_data['key'], $this->sub_data['value'] ); // Remove meta sub_data. + if ( ! empty( $this->sub_data ) ) { + $this->data['comments'][] = $this->sub_data; + } + $this->sub_data = []; + break; + case 'wp:commentmeta': + $this->sub_data['commentmeta'][] = [ + 'key' => $this->sub_data['key'], + 'value' => $this->sub_data['value'], + ]; + break; + case 'category': + if ( ! empty( $this->sub_data ) ) { + $this->sub_data['name'] = $this->cdata; + $this->data['terms'][] = $this->sub_data; + } + $this->sub_data = []; + break; + case 'wp:postmeta': + if ( ! empty( $this->sub_data ) ) { + $this->data['postmeta'][] = $this->sub_data; + } + $this->sub_data = []; + break; + case 'item': + $this->posts[] = $this->data; + $this->data = []; + break; + case 'wp:category': + case 'wp:tag': + case 'wp:term': + $n = substr( $tag, 3 ); + array_push( $this->$n, $this->data ); + $this->data = []; + break; + case 'wp:termmeta': + if ( ! empty( $this->sub_data ) ) { + $this->data['termmeta'][] = $this->sub_data; + } + $this->sub_data = []; + break; + case 'wp:author': + if ( ! empty( $this->data['author_login'] ) ) { + $this->authors[ $this->data['author_login'] ] = $this->data; + } + $this->data = []; + break; + case 'wp:base_site_url': + $this->base_url = $this->cdata; + if ( ! isset( $this->base_blog_url ) ) { + $this->base_blog_url = $this->cdata; + } + break; + case 'wp:base_blog_url': + $this->base_blog_url = $this->cdata; + break; + case 'wp:wxr_version': + $this->wxr_version = $this->cdata; + break; + + default: + if ( $this->in_sub_tag ) { + $this->sub_data[ $this->in_sub_tag ] = $this->cdata; + $this->in_sub_tag = false; + } else if ( $this->in_tag ) { + $this->data[ $this->in_tag ] = $this->cdata; + $this->in_tag = false; + } + } + + $this->cdata = ''; + } + + private function clear() { + $this->wxr_version = ''; + + $this->cdata = ''; + $this->data = []; + $this->sub_data = []; + + $this->in_post = false; + $this->in_tag = false; + $this->in_sub_tag = false; + + $this->authors = []; + $this->posts = []; + $this->term = []; + $this->category = []; + $this->tag = []; + } +} diff --git a/wp-content/plugins/elementor/core/utils/import-export/parsers/wxr-parser.php b/wp-content/plugins/elementor/core/utils/import-export/parsers/wxr-parser.php new file mode 100644 index 0000000..cb53830 --- /dev/null +++ b/wp-content/plugins/elementor/core/utils/import-export/parsers/wxr-parser.php @@ -0,0 +1,48 @@ +parse( $file ); + + // If SimpleXML succeeds or this is an invalid WXR file then return the results. + if ( ! is_wp_error( $result ) || 'SimpleXML_parse_error' != $result->get_error_code() ) { + return $result; + } + } elseif ( extension_loaded( 'xml' ) ) { + $parser = new WXR_Parser_XML(); + $result = $parser->parse( $file ); + + // If XMLParser succeeds or this is an invalid WXR file then return the results. + if ( ! is_wp_error( $result ) || 'XML_parse_error' != $result->get_error_code() ) { + return $result; + } + } + + // Use regular expressions if nothing else available or this is bad XML. + $parser = new WXR_Parser_Regex(); + + return $parser->parse( $file ); + } +} diff --git a/wp-content/plugins/elementor/core/utils/import-export/url.php b/wp-content/plugins/elementor/core/utils/import-export/url.php new file mode 100644 index 0000000..eb221dd --- /dev/null +++ b/wp-content/plugins/elementor/core/utils/import-export/url.php @@ -0,0 +1,64 @@ +ID ); + } + + if ( empty( $permalink ) ) { + return $full_url; + } + + if ( ! empty( $parsed_url['query'] ) ) { + parse_str( $parsed_url['query'], $parsed_query ); + + // Clean WP permalinks query args to prevent collision with the new permalink. + unset( $parsed_query['p'] ); + unset( $parsed_query['page_id'] ); + + $permalink = add_query_arg( $parsed_query, $permalink ); + } + + if ( ! empty( $parsed_url['fragment'] ) ) { + $permalink .= '#' . $parsed_url['fragment']; + } + + return wp_make_link_relative( $permalink ); + } +} diff --git a/wp-content/plugins/elementor/core/utils/import-export/wp-exporter.php b/wp-content/plugins/elementor/core/utils/import-export/wp-exporter.php new file mode 100644 index 0000000..dedef08 --- /dev/null +++ b/wp-content/plugins/elementor/core/utils/import-export/wp-exporter.php @@ -0,0 +1,737 @@ + 'all', + 'author' => false, + 'category' => false, + 'start_date' => false, + 'end_date' => false, + 'status' => false, + 'offset' => 0, + 'limit' => -1, + 'meta_query' => [], // If specified `meta_key` then will include all post(s) that have this meta_key. + ]; + + /** + * @var array + */ + private $args; + + /** + * @var \wpdb + */ + private $wpdb; + + private $terms; + + /** + * Run export, by requested args. + * Returns XML with exported data. + * + * @return array + */ + public function run() { + if ( 'all' !== $this->args['content'] && post_type_exists( $this->args['content'] ) ) { + $ptype = get_post_type_object( $this->args['content'] ); + if ( ! $ptype->can_export ) { + $this->args['content'] = 'post'; + } + + $where = $this->wpdb->prepare( "{$this->wpdb->posts}.post_type = %s", $this->args['content'] );// phpcs:ignore + } else { + $post_types = get_post_types( [ 'can_export' => true ] ); + $esses = array_fill( 0, count( $post_types ), '%s' ); + + $where = $this->wpdb->prepare( "{$this->wpdb->posts}.post_type IN (" . implode( ',', $esses ) . ')', $post_types );// phpcs:ignore + } + + if ( $this->args['status'] && ( 'post' === $this->args['content'] || 'page' === $this->args['content'] || 'nav_menu_item' === $this->args['content'] ) ) { + $where .= $this->wpdb->prepare( " AND {$this->wpdb->posts}.post_status = %s", $this->args['status'] );// phpcs:ignore + } else { + $where .= " AND {$this->wpdb->posts}.post_status != 'auto-draft'"; + } + + $join = ''; + if ( $this->args['category'] && 'post' === $this->args['content'] ) { + $term = term_exists( $this->args['category'], 'category' ); + if ( $term ) { + $join = "INNER JOIN {$this->wpdb->term_relationships} ON ({$this->wpdb->posts}.ID = {$this->wpdb->term_relationships}.object_id)"; + $where .= $this->wpdb->prepare( " AND {$this->wpdb->term_relationships}.term_taxonomy_id = %d", $term['term_taxonomy_id'] );// phpcs:ignore + } + } + + if ( in_array( $this->args['content'], [ 'post', 'page', 'attachment' ], true ) ) { + if ( $this->args['author'] ) { + $where .= $this->wpdb->prepare( " AND {$this->wpdb->posts}.post_author = %d", $this->args['author'] );// phpcs:ignore + } + + if ( $this->args['start_date'] ) { + $where .= $this->wpdb->prepare( " AND {$this->wpdb->posts}.post_date >= %s", gmdate( 'Y-m-d', strtotime( $this->args['start_date'] ) ) );// phpcs:ignore + } + + if ( $this->args['end_date'] ) { + $where .= $this->wpdb->prepare( " AND {$this->wpdb->posts}.post_date < %s", gmdate( 'Y-m-d', strtotime( '+1 month', strtotime( $this->args['end_date'] ) ) ) );// phpcs:ignore + } + } + + $limit = ''; + if ( -1 !== (int) $this->args['limit'] ) { + $limit = 'LIMIT ' . (int) $this->args['limit'] . ' OFFSET ' . (int) $this->args['offset']; + } + + if ( ! empty( $this->args['meta_query'] ) ) { + if ( $join ) { + $join .= ' '; + } + + if ( $where ) { + $where .= ' '; + } + + $meta_query = new \WP_Meta_Query( $this->args['meta_query'] ); + + global $wpdb; + + $query_clauses = $meta_query->get_sql( 'post', $wpdb->posts, 'ID' ); + + $join .= $query_clauses['join']; + $where .= $query_clauses['where']; + } + + // Grab a snapshot of post IDs, just in case it changes during the export. + $post_ids = $this->wpdb->get_col( "SELECT ID FROM {$this->wpdb->posts} $join WHERE $where $limit" );// phpcs:ignore + $thumbnail_ids = []; + + if ( ! empty( $this->args['include_post_featured_image_as_attachment'] ) ) { + foreach ( $post_ids as $post_id ) { + $thumbnail_id = get_post_meta( $post_id, '_thumbnail_id', true ); + + if ( $thumbnail_id && ! in_array( $thumbnail_id, $post_ids, true ) ) { + $thumbnail_ids [] = $thumbnail_id; + } + } + } + + return [ + 'ids' => $post_ids, + 'xml' => $this->get_xml_export( array_merge( $post_ids, $thumbnail_ids ) ), + ]; + } + + /** + * Return tabulation characters, by `$columns`. + * + * @param int $columns + * + * @return string + */ + private function indent( $columns = 1 ) { + $output = ''; + + for ( $i = 0; $i < $columns; $i++ ) { + $output .= "\t"; + } + + return (string) $output; + } + + /** + * Return wrapped given string in XML CDATA tag. + * + * @param string $str String to wrap in XML CDATA tag. + * + * @return string + */ + private function wxr_cdata( $str ) { + $str = (string) $str; + + if ( ! seems_utf8( $str ) ) { + $str = utf8_encode( $str ); + } + + $str = '', ']]]]>', $str ) . ']]>'; + + return $str; + } + + /** + * Return the URL of the site. + * + * @return string Site URL. + */ + private function wxr_site_url() { + if ( is_multisite() ) { + // Multisite: the base URL. + return network_home_url(); + } else { + // WordPress (single site): the blog URL. + return get_bloginfo_rss( 'url' ); + } + } + + /** + * Return a cat_name XML tag from a given category object. + * + * @param \WP_Term $category Category Object + * + * @return string + */ + private function wxr_cat_name( $category ) { + if ( empty( $category->name ) ) { + return ''; + } + + return $this->indent( 3 ) . '' . $this->wxr_cdata( $category->name ) . '' . PHP_EOL; + } + + /** + * Return a category_description XML tag from a given category object. + * + * @param \WP_Term $category Category Object + * + * @return string + */ + private function wxr_category_description( $category ) { + if ( empty( $category->description ) ) { + return ''; + } + + return $this->indent( 3 ) . '' . $this->wxr_cdata( $category->description ) . "\n"; + } + + /** + * Return a tag_name XML tag from a given tag object. + * + * @param \WP_Term $tag Tag Object + * + * @return string + */ + private function wxr_tag_name( $tag ) { + if ( empty( $tag->name ) ) { + return ''; + } + + return $this->indent( 3 ) . '' . $this->wxr_cdata( $tag->name ) . '' . PHP_EOL; + } + + /** + * Return a tag_description XML tag from a given tag object. + * + * @param \WP_Term $tag Tag Object + * + * @return string + */ + private function wxr_tag_description( $tag ) { + if ( empty( $tag->description ) ) { + return ''; + } + + return $this->indent( 3 ) . '' . $this->wxr_cdata( $tag->description ) . '' . PHP_EOL; + } + + /** + * Return a term_name XML tag from a given term object. + * + * @param \WP_Term $term Term Object + * + * @return string + */ + private function wxr_term_name( $term ) { + if ( empty( $term->name ) ) { + return ''; + } + + return $this->indent( 3 ) . '' . $this->wxr_cdata( $term->name ) . '' . PHP_EOL; + } + + /** + * Return a term_description XML tag from a given term object. + * + * @param \WP_Term $term Term Object + * + * @return string + */ + private function wxr_term_description( $term ) { + if ( empty( $term->description ) ) { + return ''; + } + + return $this->indent( 3 ) . '' . $this->wxr_cdata( $term->description ) . '' . PHP_EOL; + } + + /** + * Return term meta XML tags for a given term object. + * + * @param \WP_Term $term Term object. + * + * @return string + */ + private function wxr_term_meta( $term ) { + $result = ''; + $termmeta = $this->wpdb->get_results( $this->wpdb->prepare( "SELECT * FROM {$this->wpdb->termmeta} WHERE term_id = %d", $term->term_id ) );// phpcs:ignore + + foreach ( $termmeta as $meta ) { + /** + * Filters whether to selectively skip term meta used for WXR exports. + * + * Returning a truthy value from the filter will skip the current meta + * object from being exported. + * + * @since 4.6.0 + * + * @param bool $skip Whether to skip the current piece of term meta. Default false. + * @param string $meta_key Current meta key. + * @param object $meta Current meta object. + */ + if ( ! apply_filters( 'wxr_export_skip_termmeta', false, $meta->meta_key, $meta ) ) { + $result .= sprintf( $this->indent( 3 ) . "\n\t\t\t%s\n\t\t\t%s\n\t\t\n", $this->wxr_cdata( $meta->meta_key ), $this->wxr_cdata( $meta->meta_value ) ); + } + } + + return $result; + } + + /** + * Return list of authors with posts. + * + * @param int[] $post_ids Optional. Array of post IDs to filter the query by. + * + * @return string + */ + private function wxr_authors_list( array $post_ids = null ) { + $result = ''; + + if ( ! empty( $post_ids ) ) { + $post_ids = array_map( 'absint', $post_ids ); + $and = 'AND ID IN ( ' . implode( ', ', $post_ids ) . ')'; + } else { + $and = ''; + } + + $authors = []; + $results = $this->wpdb->get_results( "SELECT DISTINCT post_author FROM {$this->wpdb->posts} WHERE post_status != 'auto-draft' $and" );// phpcs:ignore + foreach ( (array) $results as $r ) { + $authors[] = get_userdata( $r->post_author ); + } + + $authors = array_filter( $authors ); + + foreach ( $authors as $author ) { + $result .= $this->indent( 2 ) . '' . PHP_EOL; + + $result .= $this->indent( 3 ) . '' . (int) $author->ID . '' . PHP_EOL; + $result .= $this->indent( 3 ) . '' . $this->wxr_cdata( $author->user_login ) . '' . PHP_EOL; + $result .= $this->indent( 3 ) . '' . $this->wxr_cdata( $author->user_email ) . '' . PHP_EOL; + $result .= $this->indent( 3 ) . '' . $this->wxr_cdata( $author->display_name ) . '' . PHP_EOL; + $result .= $this->indent( 3 ) . '' . $this->wxr_cdata( $author->first_name ) . '' . PHP_EOL; + $result .= $this->indent( 3 ) . '' . $this->wxr_cdata( $author->last_name ) . '' . PHP_EOL; + + $result .= $this->indent( 2 ) . '' . PHP_EOL; + } + + return $result; + } + + /** + * Return list of categories. + * + * @param array $cats + * + * @return string + */ + private function wxr_categories_list( array $cats ) { + $result = ''; + + foreach ( $cats as $c ) { + $result .= $this->indent( 2 ) . '' . PHP_EOL; + + $result .= $this->indent( 3 ) . '' . (int) $c->term_id . '' . PHP_EOL; + $result .= $this->indent( 3 ) . '' . $this->wxr_cdata( $c->slug ) . '' . PHP_EOL; + $result .= $this->indent( 3 ) . '' . $this->wxr_cdata( $c->parent ? $cats[ $c->parent ]->slug : '' ) . '' . PHP_EOL; + $result .= $this->wxr_cat_name( $c ) . + $this->wxr_category_description( $c ) . + $this->wxr_term_meta( $c ); + + $result .= $this->indent( 2 ) . '' . PHP_EOL; + } + + return $result; + } + + /** + * Return list of tags. + * + * @param array $tags + * + * @return string + */ + private function wxr_tags_list( array $tags ) { + $result = ''; + + foreach ( $tags as $t ) { + $result .= $this->indent( 2 ) . '' . PHP_EOL; + + $result .= $this->indent( 3 ) . '' . (int) $t->term_id . '' . PHP_EOL; + $result .= $this->indent( 3 ) . '' . $this->wxr_cdata( $t->slug ) . '' . PHP_EOL; + $result .= $this->wxr_tag_name( $t ) . + $this->wxr_tag_description( $t ) . + $this->wxr_term_meta( $t ); + + $result .= $this->indent( 2 ) . '' . PHP_EOL; + } + + return $result; + } + + /** + * Return list of terms. + * + * @param array $terms + * + * @return string + */ + private function wxr_terms_list( array $terms ) { + $result = ''; + + foreach ( $terms as $t ) { + $result .= $this->indent( 2 ) . '' . PHP_EOL; + + $result .= $this->indent( 3 ) . '' . $this->wxr_cdata( $t->term_id ) . '' . PHP_EOL; + $result .= $this->indent( 3 ) . '' . $this->wxr_cdata( $t->taxonomy ) . '' . PHP_EOL; + $result .= $this->indent( 3 ) . '' . $this->wxr_cdata( $t->slug ) . '' . PHP_EOL; + $result .= $this->indent( 3 ) . '' . $this->wxr_cdata( $t->parent ? $terms[ $t->parent ]->slug : '' ) . '' . PHP_EOL; + $result .= $this->wxr_term_name( $t ) . + $this->wxr_term_description( $t ) . + $this->wxr_term_meta( $t ); + + $result .= $this->indent( 2 ) . '' . PHP_EOL; + } + + return $result; + } + + /** + * Return list of posts, by requested `$post_ids`. + * + * @param array $post_ids + * + * @return string + */ + private function wxr_posts_list( array $post_ids ) { + $result = ''; + + if ( $post_ids ) { + global $wp_query; + + // Fake being in the loop. + $wp_query->in_the_loop = true; + + // Fetch 20 posts at a time rather than loading the entire table into memory. + while ( $next_posts = array_splice( $post_ids, 0, 20 ) ) { + $where = 'WHERE ID IN (' . implode( ',', $next_posts ) . ')'; + $posts = $this->wpdb->get_results( "SELECT * FROM {$this->wpdb->posts} $where" );// phpcs:ignore + + // Begin Loop. + foreach ( $posts as $post ) { + setup_postdata( $post ); + + $title = apply_filters( 'the_title_rss', $post->post_title ); + + /** + * Filters the post content used for WXR exports. + * + * @since 2.5.0 + * + * @param string $post_content Content of the current post. + */ + $content = $this->wxr_cdata( apply_filters( 'the_content_export', $post->post_content ) ); + + /** + * Filters the post excerpt used for WXR exports. + * + * @since 2.6.0 + * + * @param string $post_excerpt Excerpt for the current post. + */ + $excerpt = $this->wxr_cdata( apply_filters( 'the_excerpt_export', $post->post_excerpt ) ); + + $result .= $this->indent( 2 ) . '' . PHP_EOL; + + $result .= $this->indent( 3 ) . '' . $title . '' . PHP_EOL; + $result .= $this->indent( 3 ) . '' . esc_url( get_permalink() ) . '' . PHP_EOL; + $result .= $this->indent( 3 ) . '' . mysql2date( 'D, d M Y H:i:s +0000', get_post_time( 'Y-m-d H:i:s', true ), false ) . '' . PHP_EOL; + $result .= $this->indent( 3 ) . '' . $this->wxr_cdata( get_the_author_meta( 'login' ) ) . '' . PHP_EOL; + $result .= $this->indent( 3 ) . '' . $this->wxr_cdata( get_the_author_meta( 'login' ) ) . '' . PHP_EOL; + $result .= $this->indent( 3 ) . '' . PHP_EOL; + $result .= $this->indent( 3 ) . '' . $content . '' . PHP_EOL; + $result .= $this->indent( 3 ) . '' . $excerpt . '' . PHP_EOL; + $result .= $this->indent( 3 ) . '' . (int) $post->ID . '' . PHP_EOL; + $result .= $this->indent( 3 ) . '' . $this->wxr_cdata( $post->post_date ) . '' . PHP_EOL; + $result .= $this->indent( 3 ) . '' . $this->wxr_cdata( $post->post_date_gmt ) . '' . PHP_EOL; + $result .= $this->indent( 3 ) . '' . $this->wxr_cdata( $post->comment_status ) . '' . PHP_EOL; + $result .= $this->indent( 3 ) . '' . $this->wxr_cdata( $post->ping_status ) . '' . PHP_EOL; + $result .= $this->indent( 3 ) . '' . $this->wxr_cdata( $post->post_name ) . '' . PHP_EOL; + $result .= $this->indent( 3 ) . '' . $this->wxr_cdata( $post->post_status ) . '' . PHP_EOL; + $result .= $this->indent( 3 ) . '' . $this->wxr_cdata( $post->post_parent ) . '' . PHP_EOL; + $result .= $this->indent( 3 ) . '' . (int) $post->menu_order . '' . PHP_EOL; + $result .= $this->indent( 3 ) . '' . $this->wxr_cdata( $post->post_type ) . '' . PHP_EOL; + $result .= $this->indent( 3 ) . '' . $this->wxr_cdata( $post->post_password ) . '' . PHP_EOL; + $result .= $this->indent( 3 ) . '' . ( is_sticky( $post->ID ) ? 1 : 0 ) . '' . PHP_EOL; + + if ( 'attachment' === $post->post_type ) { + $result .= $this->indent( 3 ) . '' . $this->wxr_cdata( wp_get_attachment_url( $post->ID ) ) . '' . PHP_EOL; + } + + $result .= $this->wxr_post_taxonomy( $post ); + + $postmeta = $this->wpdb->get_results( $this->wpdb->prepare( "SELECT * FROM {$this->wpdb->postmeta} WHERE post_id = %d", $post->ID ) );// phpcs:ignore + foreach ( $postmeta as $meta ) { + /** + * Filters whether to selectively skip post meta used for WXR exports. + * + * Returning a truthy value from the filter will skip the current meta + * object from being exported. + * + * @since 3.3.0 + * + * @param bool $skip Whether to skip the current post meta. Default false. + * @param string $meta_key Current meta key. + * @param object $meta Current meta object. + */ + if ( apply_filters( 'wxr_export_skip_postmeta', false, $meta->meta_key, $meta ) ) { + continue; + } + + $result .= $this->indent( 3 ) . '' . PHP_EOL; + + $result .= $this->indent( 4 ) . '' . $this->wxr_cdata( $meta->meta_key ) . '' . PHP_EOL; + $result .= $this->indent( 4 ) . '' . $this->wxr_cdata( $meta->meta_value ) . '' . PHP_EOL; + + $result .= $this->indent( 3 ) . '' . PHP_EOL; + } + + $_comments = $this->wpdb->get_results( $this->wpdb->prepare( "SELECT * FROM {$this->wpdb->comments} WHERE comment_post_ID = %d AND comment_approved <> 'spam'", $post->ID ) );// phpcs:ignore + $comments = array_map( 'get_comment', $_comments ); + foreach ( $comments as $c ) { + + $result .= $this->indent( 3 ) . '' . PHP_EOL; + + $result .= $this->indent( 4 ) . '' . (int) $c->comment_ID . '' . PHP_EOL; + $result .= $this->indent( 4 ) . '' . $this->wxr_cdata( $c->comment_author ) . '' . PHP_EOL; + $result .= $this->indent( 4 ) . '' . $this->wxr_cdata( $c->comment_author_email ) . '' . PHP_EOL; + $result .= $this->indent( 4 ) . '' . $this->wxr_cdata( $c->comment_author_url ) . '' . PHP_EOL; + $result .= $this->indent( 4 ) . '' . $this->wxr_cdata( $c->comment_author_IP ) . '' . PHP_EOL; + $result .= $this->indent( 4 ) . '' . $this->wxr_cdata( $c->comment_date ) . '' . PHP_EOL; + $result .= $this->indent( 4 ) . '' . $this->wxr_cdata( $c->comment_date_gmt ) . '' . PHP_EOL; + $result .= $this->indent( 4 ) . '' . $this->wxr_cdata( $c->comment_content ) . '' . PHP_EOL; + $result .= $this->indent( 4 ) . '' . $this->wxr_cdata( $c->comment_approved ) . '' . PHP_EOL; + $result .= $this->indent( 4 ) . '' . $this->wxr_cdata( $c->comment_type ) . '' . PHP_EOL; + $result .= $this->indent( 4 ) . '' . $this->wxr_cdata( $c->comment_parent ) . '' . PHP_EOL; + $result .= $this->indent( 4 ) . '' . (int) $c->user_id . '' . PHP_EOL; + + $c_meta = $this->wpdb->get_results( $this->wpdb->prepare( "SELECT * FROM {$this->wpdb->commentmeta} WHERE comment_id = %d", $c->comment_ID ) );// phpcs:ignore + foreach ( $c_meta as $meta ) { + /** + * Filters whether to selectively skip comment meta used for WXR exports. + * + * Returning a truthy value from the filter will skip the current meta + * object from being exported. + * + * @since 4.0.0 + * + * @param bool $skip Whether to skip the current comment meta. Default false. + * @param string $meta_key Current meta key. + * @param object $meta Current meta object. + */ + if ( apply_filters( 'wxr_export_skip_commentmeta', false, $meta->meta_key, $meta ) ) { + continue; + } + + $result .= $this->indent( 4 ) . '' . PHP_EOL; + + $result .= $this->indent( 5 ) . '' . $this->wxr_cdata( $meta->meta_key ) . '' . PHP_EOL; + $result .= $this->indent( 5 ) . '' . $this->wxr_cdata( $meta->meta_key ) . '' . PHP_EOL; + + $result .= $this->indent( 4 ) . '' . PHP_EOL; + } + + $result .= $this->indent( 3 ) . '' . PHP_EOL; + } + + $result .= $this->indent( 2 ) . '' . PHP_EOL; + } + } + } + + return $result; + } + + /** + * Return all navigation menu terms + * + * @return string + */ + private function wxr_nav_menu_terms() { + $nav_menus = wp_get_nav_menus(); + if ( empty( $nav_menus ) || ! is_array( $nav_menus ) ) { + return ''; + } + + $result = ''; + + foreach ( $nav_menus as $menu ) { + $this->terms[ $menu->term_id ] = $menu; + + $result .= $this->indent( 2 ) . '' . PHP_EOL; + $result .= $this->indent( 3 ) . '' . (int) $menu->term_id . '' . PHP_EOL; + $result .= $this->indent( 3 ) . 'nav_menu' . PHP_EOL; + $result .= $this->indent( 3 ) . '' . $this->wxr_cdata( $menu->slug ) . '' . PHP_EOL; + $result .= $this->indent( 3 ) . '' . $this->wxr_cdata( $menu->name ) . '' . PHP_EOL; + $result .= $this->indent( 2 ) . '' . PHP_EOL; + } + + return $result; + } + + /** + * Return list of taxonomy terms, in XML tag format, associated with a post + * + * @param \WP_Post $post + * + * @return string + */ + private function wxr_post_taxonomy( $post ) { + $result = ''; + + $taxonomies = get_object_taxonomies( $post->post_type ); + + if ( empty( $taxonomies ) ) { + return $result; + } + + $terms = wp_get_object_terms( $post->ID, $taxonomies ); + + foreach ( (array) $terms as $term ) { + $result .= $this->indent( 3 ) . "taxonomy}\" nicename=\"{$term->slug}\">" . $this->wxr_cdata( $term->name ) . '' . PHP_EOL; + } + + return $result; + } + + /** + * Get's the XML export. + * + * @param $post_ids + * + * @return string + */ + private function get_xml_export( array $post_ids ) { + $charset = get_bloginfo( 'charset' ); + $generator = get_the_generator( 'export' ); + $wxr_version = self::WXR_VERSION; + $wxr_site_url = $this->wxr_site_url(); + $rss_info_name = get_bloginfo_rss( 'name' ); + $rss_info_url = get_bloginfo_rss( 'url' ); + $rss_info_description = get_bloginfo_rss( 'description' ); + $rss_info_language = get_bloginfo_rss( 'language' ); + $pub_date = gmdate( 'D, d M Y H:i:s +0000' ); + + $show_page_on_front = 'page' === get_option( 'show_on_front' ); + + $page_on_front_xml = ''; + + if ( $show_page_on_front ) { + $page_on_front_id = (int) get_option( 'page_on_front' ); + + if ( in_array( $page_on_front_id, $post_ids ) ) { + $page_on_front_xml = "$page_on_front_id"; + } + } + + $dynamic = $this->wxr_authors_list( $post_ids ); + + ob_start(); + /** This action is documented in wp-includes/feed-rss2.php */ + do_action( 'rss2_head' ); + $rss2_head = ob_get_clean(); + + $dynamic .= $rss2_head; + + if ( 'all' === $this->args['content'] || 'nav_menu_item' === $this->args['content'] ) { + $dynamic .= $this->wxr_nav_menu_terms(); + } + + $dynamic .= $this->wxr_posts_list( $post_ids ); + + $result = << + + + + + + + + + + + + + + + + +$generator + + + $rss_info_name + $rss_info_url + $rss_info_description + $pub_date + $rss_info_language + $wxr_version + $wxr_site_url + $rss_info_url + $page_on_front_xml + $dynamic + + +EOT; + return $result; + } + + public function __construct( array $args = [] ) { + global $wpdb; + + $this->args = wp_parse_args( $args, self::$default_args ); + + $this->wpdb = $wpdb; + } +} diff --git a/wp-content/plugins/elementor/core/utils/import-export/wp-import.php b/wp-content/plugins/elementor/core/utils/import-export/wp-import.php new file mode 100644 index 0000000..acd816b --- /dev/null +++ b/wp-content/plugins/elementor/core/utils/import-export/wp-import.php @@ -0,0 +1,1355 @@ +output` append. + * Removed `die` ( exit(s) ). + */ + +if ( ! class_exists( 'WP_Importer' ) ) { + $class_wp_importer = ABSPATH . 'wp-admin/includes/class-wp-importer.php'; + + if ( file_exists( $class_wp_importer ) ) { + require $class_wp_importer; + } +} + +class WP_Import extends \WP_Importer { + const DEFAULT_BUMP_REQUEST_TIMEOUT = 60; + const DEFAULT_ALLOW_CREATE_USERS = true; + const DEFAULT_IMPORT_ATTACHMENT_SIZE_LIMIT = 0; // 0 = unlimited. + + /** + * @var string + */ + private $requested_file_path; + + /** + * @var array + */ + private $args; + + /** + * @var array + */ + private $output = [ + 'status' => 'failed', + 'errors' => [], + ]; + + /* + * WXR attachment ID + */ + private $id; + + // Information to import from WXR file. + private $version; + private $authors = []; + private $posts = []; + private $terms = []; + private $base_url = ''; + private $page_on_front; + private $base_blog_url = ''; + + // Mappings from old information to new. + private $processed_taxonomies; + private $processed_terms = []; + private $processed_posts = []; + private $processed_authors = []; + private $author_mapping = []; + private $processed_menu_items = []; + private $post_orphans = []; + private $menu_item_orphans = []; + private $mapped_terms_slug = []; + + private $fetch_attachments = false; + private $url_remap = []; + private $featured_images = []; + + /** + * @var array[] [meta_key => meta_value] Meta value that should be set for every imported post. + */ + private $posts_meta = []; + + /** + * @var array[] [meta_key => meta_value] Meta value that should be set for every imported term. + */ + private $terms_meta = []; + + /** + * Parses filename from a Content-Disposition header value. + * + * As per RFC6266: + * + * content-disposition = "Content-Disposition" ":" + * disposition-type *( ";" disposition-parm ) + * + * disposition-type = "inline" | "attachment" | disp-ext-type + * ; case-insensitive + * disp-ext-type = token + * + * disposition-parm = filename-parm | disp-ext-parm + * + * filename-parm = "filename" "=" value + * | "filename*" "=" ext-value + * + * disp-ext-parm = token "=" value + * | ext-token "=" ext-value + * ext-token = + * + * @param string[] $disposition_header List of Content-Disposition header values. + * + * @return string|null Filename if available, or null if not found. + * @link http://tools.ietf.org/html/rfc2388 + * @link http://tools.ietf.org/html/rfc6266 + * + * @see WP_REST_Attachments_Controller::get_filename_from_disposition() + * + */ + protected static function get_filename_from_disposition( $disposition_header ) { + // Get the filename. + $filename = null; + + foreach ( $disposition_header as $value ) { + $value = trim( $value ); + + if ( strpos( $value, ';' ) === false ) { + continue; + } + + list( $type, $attr_parts ) = explode( ';', $value, 2 ); + + $attr_parts = explode( ';', $attr_parts ); + $attributes = []; + + foreach ( $attr_parts as $part ) { + if ( strpos( $part, '=' ) === false ) { + continue; + } + + list( $key, $value ) = explode( '=', $part, 2 ); + + $attributes[ trim( $key ) ] = trim( $value ); + } + + if ( empty( $attributes['filename'] ) ) { + continue; + } + + $filename = trim( $attributes['filename'] ); + + // Unquote quoted filename, but after trimming. + if ( substr( $filename, 0, 1 ) === '"' && substr( $filename, -1, 1 ) === '"' ) { + $filename = substr( $filename, 1, -1 ); + } + } + + return $filename; + } + + /** + * Retrieves file extension by mime type. + * + * @param string $mime_type Mime type to search extension for. + * + * @return string|null File extension if available, or null if not found. + */ + protected static function get_file_extension_by_mime_type( $mime_type ) { + static $map = null; + + if ( is_array( $map ) ) { + return isset( $map[ $mime_type ] ) ? $map[ $mime_type ] : null; + } + + $mime_types = wp_get_mime_types(); + $map = array_flip( $mime_types ); + + // Some types have multiple extensions, use only the first one. + foreach ( $map as $type => $extensions ) { + $map[ $type ] = strtok( $extensions, '|' ); + } + + return isset( $map[ $mime_type ] ) ? $map[ $mime_type ] : null; + } + + /** + * The main controller for the actual import stage. + * + * @param string $file Path to the WXR file for importing + */ + private function import( $file ) { + add_filter( 'import_post_meta_key', function ( $key ) { + return $this->is_valid_meta_key( $key ); + } ); + add_filter( 'http_request_timeout', function () { + return self::DEFAULT_BUMP_REQUEST_TIMEOUT; + } ); + + if ( ! $this->import_start( $file ) ) { + return; + } + + $this->set_author_mapping(); + + wp_suspend_cache_invalidation( true ); + $imported_summary = [ + 'terms' => $this->process_terms(), + 'posts' => $this->process_posts(), + ]; + wp_suspend_cache_invalidation( false ); + + // Update incorrect/missing information in the DB. + $this->backfill_parents(); + $this->backfill_attachment_urls(); + $this->remap_featured_images(); + + $this->import_end(); + + $is_some_succeed = false; + foreach ( $imported_summary as $item ) { + if ( $item > 0 ) { + $is_some_succeed = true; + break; + } + } + + if ( $is_some_succeed ) { + $this->output['status'] = 'success'; + $this->output['summary'] = $imported_summary; + } + } + + /** + * Parses the WXR file and prepares us for the task of processing parsed data. + * + * @param string $file Path to the WXR file for importing + */ + private function import_start( $file ) { + if ( ! is_file( $file ) ) { + $this->output['errors'] = [ esc_html__( 'The file does not exist, please try again.', 'elementor' ) ]; + + return false; + } + + $import_data = $this->parse( $file ); + + if ( is_wp_error( $import_data ) ) { + $this->output['errors'] = [ $import_data->get_error_message() ]; + + return false; + } + + $this->version = $import_data['version']; + $this->set_authors_from_import( $import_data ); + $this->posts = $import_data['posts']; + $this->terms = $import_data['terms']; + $this->base_url = esc_url( $import_data['base_url'] ); + $this->base_blog_url = esc_url( $import_data['base_blog_url'] ); + $this->page_on_front = $import_data['page_on_front']; + + wp_defer_term_counting( true ); + wp_defer_comment_counting( true ); + + do_action( 'import_start' ); + + return true; + } + + /** + * Performs post-import cleanup of files and the cache + */ + private function import_end() { + wp_import_cleanup( $this->id ); + + wp_cache_flush(); + + foreach ( get_taxonomies() as $tax ) { + delete_option( "{$tax}_children" ); + _get_term_hierarchy( $tax ); + } + + wp_defer_term_counting( false ); + wp_defer_comment_counting( false ); + + do_action( 'import_end' ); + } + + /** + * Retrieve authors from parsed WXR data and set it to `$this->>authors`. + * + * Uses the provided author information from WXR 1.1 files + * or extracts info from each post for WXR 1.0 files + * + * @param array $import_data Data returned by a WXR parser + */ + private function set_authors_from_import( $import_data ) { + if ( ! empty( $import_data['authors'] ) ) { + $this->authors = $import_data['authors']; + // No author information, grab it from the posts. + } else { + foreach ( $import_data['posts'] as $post ) { + $login = sanitize_user( $post['post_author'], true ); + + if ( empty( $login ) ) { + $this->output['errors'][] = sprintf( + /* translators: %s: Post author. */ + esc_html__( 'Failed to import author %s. Their posts will be attributed to the current user.', 'elementor' ), + $post['post_author'] + ); + continue; + } + + if ( ! isset( $this->authors[ $login ] ) ) { + $this->authors[ $login ] = [ + 'author_login' => $login, + 'author_display_name' => $post['post_author'], + ]; + } + } + } + } + + /** + * Map old author logins to local user IDs based on decisions made + * in import options form. Can map to an existing user, create a new user + * or falls back to the current user in case of error with either of the previous + */ + private function set_author_mapping() { + if ( ! isset( $this->args['imported_authors'] ) ) { + return; + } + + $create_users = apply_filters( 'import_allow_create_users', self::DEFAULT_ALLOW_CREATE_USERS ); + + foreach ( (array) $this->args['imported_authors'] as $i => $old_login ) { + // Multisite adds strtolower to sanitize_user. Need to sanitize here to stop breakage in process_posts. + $santized_old_login = sanitize_user( $old_login, true ); + $old_id = isset( $this->authors[ $old_login ]['author_id'] ) ? (int) $this->authors[ $old_login ]['author_id'] : false; + + if ( ! empty( $this->args['user_map'][ $i ] ) ) { + $user = get_userdata( (int) $this->args['user_map'][ $i ] ); + if ( isset( $user->ID ) ) { + if ( $old_id ) { + $this->processed_authors[ $old_id ] = $user->ID; + } + $this->author_mapping[ $santized_old_login ] = $user->ID; + } + } elseif ( $create_users ) { + $user_id = 0; + if ( ! empty( $this->args['user_new'][ $i ] ) ) { + $user_id = wp_create_user( $this->args['user_new'][ $i ], wp_generate_password() ); + } elseif ( '1.0' !== $this->version ) { + $user_data = [ + 'user_login' => $old_login, + 'user_pass' => wp_generate_password(), + 'user_email' => isset( $this->authors[ $old_login ]['author_email'] ) ? $this->authors[ $old_login ]['author_email'] : '', + 'display_name' => $this->authors[ $old_login ]['author_display_name'], + 'first_name' => isset( $this->authors[ $old_login ]['author_first_name'] ) ? $this->authors[ $old_login ]['author_first_name'] : '', + 'last_name' => isset( $this->authors[ $old_login ]['author_last_name'] ) ? $this->authors[ $old_login ]['author_last_name'] : '', + ]; + $user_id = wp_insert_user( $user_data ); + } + + if ( ! is_wp_error( $user_id ) ) { + if ( $old_id ) { + $this->processed_authors[ $old_id ] = $user_id; + } + $this->author_mapping[ $santized_old_login ] = $user_id; + } else { + $error = sprintf( + /* translators: %s: Author display name. */ + esc_html__( 'Failed to create new user for %s. Their posts will be attributed to the current user.', 'elementor' ), + $this->authors[ $old_login ]['author_display_name'] + ); + + if ( defined( 'IMPORT_DEBUG' ) && IMPORT_DEBUG ) { + $error .= PHP_EOL . $user_id->get_error_message(); + } + + $this->output['errors'][] = $error; + } + } + + // Failsafe: if the user_id was invalid, default to the current user. + if ( ! isset( $this->author_mapping[ $santized_old_login ] ) ) { + if ( $old_id ) { + $this->processed_authors[ $old_id ] = (int) get_current_user_id(); + } + $this->author_mapping[ $santized_old_login ] = (int) get_current_user_id(); + } + } + } + + /** + * Create new terms based on import information + * + * Doesn't create a term its slug already exists + * + * @return array|array[] the ids of succeed/failed imported terms. + */ + private function process_terms() { + $result = [ + 'succeed' => [], + 'failed' => [], + ]; + + $this->terms = apply_filters( 'wp_import_terms', $this->terms ); + + if ( empty( $this->terms ) ) { + return $result; + } + + foreach ( $this->terms as $term ) { + + // if the term already exists in the correct taxonomy leave it alone + $term_id = term_exists( $term['slug'], $term['term_taxonomy'] ); + if ( $term_id ) { + if ( is_array( $term_id ) ) { + $term_id = $term_id['term_id']; + } + + if ( isset( $term['term_id'] ) ) { + if ( 'nav_menu' === $term['term_taxonomy'] ) { + // BC - support old kits that the menu terms are part of the 'nav_menu_item' post type + // and not part of the taxonomies. + if ( ! empty( $this->processed_taxonomies[ $term['term_taxonomy'] ] ) ) { + foreach ( $this->processed_taxonomies[ $term['term_taxonomy'] ] as $processed_term ) { + $old_slug = $processed_term['old_slug']; + $new_slug = $processed_term['new_slug']; + + $this->mapped_terms_slug[ $old_slug ] = $new_slug; + $result['succeed'][ $old_slug ] = $new_slug; + } + continue; + } else { + $term = $this->handle_duplicated_nav_menu_term( $term ); + } + } else { + $this->processed_terms[ (int) $term['term_id'] ] = (int) $term_id; + $result['succeed'][ (int) $term['term_id'] ] = (int) $term_id; + continue; + } + } + } + + if ( empty( $term['term_parent'] ) ) { + $parent = 0; + } else { + $parent = term_exists( $term['term_parent'], $term['term_taxonomy'] ); + if ( is_array( $parent ) ) { + $parent = $parent['term_id']; + } + } + + $description = isset( $term['term_description'] ) ? $term['term_description'] : ''; + $args = [ + 'slug' => $term['slug'], + 'description' => wp_slash( $description ), + 'parent' => (int) $parent, + ]; + + $id = wp_insert_term( wp_slash( $term['term_name'] ), $term['term_taxonomy'], $args ); + if ( ! is_wp_error( $id ) ) { + if ( isset( $term['term_id'] ) ) { + $this->processed_terms[ (int) $term['term_id'] ] = $id['term_id']; + $result['succeed'][ (int) $term['term_id'] ] = $id['term_id']; + + $this->update_term_meta( $id['term_id'] ); + } + } else { + /* translators: 1: Term taxonomy, 2: Term name. */ + $error = sprintf( esc_html__( 'Failed to import %1$s %2$s', 'elementor' ), $term['term_taxonomy'], $term['term_name'] ); + + if ( defined( 'IMPORT_DEBUG' ) && IMPORT_DEBUG ) { + $error .= PHP_EOL . $id->get_error_message(); + } + + $result['failed'][] = $id; + $this->output['errors'][] = $error; + continue; + } + + $this->process_termmeta( $term, $id['term_id'] ); + } + + unset( $this->terms ); + + return $result; + } + + /** + * Add metadata to imported term. + * + * @param array $term Term data from WXR import. + * @param int $term_id ID of the newly created term. + */ + private function process_termmeta( $term, $term_id ) { + if ( ! function_exists( 'add_term_meta' ) ) { + return; + } + + if ( ! isset( $term['termmeta'] ) ) { + $term['termmeta'] = []; + } + + /** + * Filters the metadata attached to an imported term. + * + * @param array $termmeta Array of term meta. + * @param int $term_id ID of the newly created term. + * @param array $term Term data from the WXR import. + */ + $term['termmeta'] = apply_filters( 'wp_import_term_meta', $term['termmeta'], $term_id, $term ); + + if ( empty( $term['termmeta'] ) ) { + return; + } + + foreach ( $term['termmeta'] as $meta ) { + /** + * Filters the meta key for an imported piece of term meta. + * + * @param string $meta_key Meta key. + * @param int $term_id ID of the newly created term. + * @param array $term Term data from the WXR import. + */ + $key = apply_filters( 'import_term_meta_key', $meta['key'], $term_id, $term ); + if ( ! $key ) { + continue; + } + + // Export gets meta straight from the DB so could have a serialized string + $value = maybe_unserialize( $meta['value'] ); + + add_term_meta( $term_id, wp_slash( $key ), wp_slash_strings_only( $value ) ); + + /** + * Fires after term meta is imported. + * + * @param int $term_id ID of the newly created term. + * @param string $key Meta key. + * @param mixed $value Meta value. + */ + do_action( 'import_term_meta', $term_id, $key, $value ); + } + } + + /** + * Create new posts based on import information + * + * Posts marked as having a parent which doesn't exist will become top level items. + * Doesn't create a new post if: the post type doesn't exist, the given post ID + * is already noted as imported or a post with the same title and date already exists. + * Note that new/updated terms, comments and meta are imported for the last of the above. + * + * @return array the ids of succeed/failed imported posts. + */ + private function process_posts() { + $result = [ + 'succeed' => [], + 'failed' => [], + ]; + + $this->posts = apply_filters( 'wp_import_posts', $this->posts ); + + foreach ( $this->posts as $post ) { + $post = apply_filters( 'wp_import_post_data_raw', $post ); + + if ( ! post_type_exists( $post['post_type'] ) ) { + /* translators: 1: Post title, 2: Post type. */ + $this->output['errors'][] = sprintf( esc_html__( 'Failed to import %1$s: Invalid post type %2$s', 'elementor' ), $post['post_title'], $post['post_type'] ); + do_action( 'wp_import_post_exists', $post ); + continue; + } + + if ( isset( $this->processed_posts[ $post['post_id'] ] ) && ! empty( $post['post_id'] ) ) { + continue; + } + + if ( 'auto-draft' === $post['status'] ) { + continue; + } + + if ( 'nav_menu_item' === $post['post_type'] ) { + $result['succeed'] += $this->process_menu_item( $post ); + + continue; + } + + $post_type_object = get_post_type_object( $post['post_type'] ); + + $post_parent = (int) $post['post_parent']; + if ( $post_parent ) { + // if we already know the parent, map it to the new local ID. + if ( isset( $this->processed_posts[ $post_parent ] ) ) { + $post_parent = $this->processed_posts[ $post_parent ]; + // otherwise record the parent for later. + } else { + $this->post_orphans[ (int) $post['post_id'] ] = $post_parent; + $post_parent = 0; + } + } + + // Map the post author. + $author = sanitize_user( $post['post_author'], true ); + if ( isset( $this->author_mapping[ $author ] ) ) { + $author = $this->author_mapping[ $author ]; + } else { + $author = (int) get_current_user_id(); + } + + $postdata = [ + 'post_author' => $author, + 'post_content' => $post['post_content'], + 'post_excerpt' => $post['post_excerpt'], + 'post_title' => $post['post_title'], + 'post_status' => $post['status'], + 'post_name' => $post['post_name'], + 'comment_status' => $post['comment_status'], + 'ping_status' => $post['ping_status'], + 'guid' => $post['guid'], + 'post_parent' => $post_parent, + 'menu_order' => $post['menu_order'], + 'post_type' => $post['post_type'], + 'post_password' => $post['post_password'], + ]; + + $original_post_id = $post['post_id']; + $postdata = apply_filters( 'wp_import_post_data_processed', $postdata, $post ); + + $postdata = wp_slash( $postdata ); + + if ( 'attachment' === $postdata['post_type'] ) { + $remote_url = ! empty( $post['attachment_url'] ) ? $post['attachment_url'] : $post['guid']; + + // try to use _wp_attached file for upload folder placement to ensure the same location as the export site + // e.g. location is 2003/05/image.jpg but the attachment post_date is 2010/09, see media_handle_upload() + $postdata['upload_date'] = $post['post_date']; + if ( isset( $post['postmeta'] ) ) { + foreach ( $post['postmeta'] as $meta ) { + if ( '_wp_attached_file' === $meta['key'] ) { + if ( preg_match( '%^[0-9]{4}/[0-9]{2}%', $meta['value'], $matches ) ) { + $postdata['upload_date'] = $matches[0]; + } + break; + } + } + } + + $post_id = $this->process_attachment( $postdata, $remote_url ); + $comment_post_id = $post_id; + } else { + $post_id = wp_insert_post( $postdata, true ); + + $this->update_post_meta( $post_id ); + + $comment_post_id = $post_id; + do_action( 'wp_import_insert_post', $post_id, $original_post_id, $postdata, $post ); + } + + if ( is_wp_error( $post_id ) ) { + /* translators: 1: Post type singular label, 2: Post title. */ + $error = sprintf( __( 'Failed to import %1$s %2$s', 'elementor' ), $post_type_object->labels->singular_name, $post['post_title'] ); + + if ( defined( 'IMPORT_DEBUG' ) && IMPORT_DEBUG ) { + $error .= PHP_EOL . $post_id->get_error_message(); + } + + $result['failed'][] = $original_post_id; + + $this->output['errors'][] = $error; + + continue; + } + + $result['succeed'][ $original_post_id ] = $post_id; + + if ( 1 === $post['is_sticky'] ) { + stick_post( $post_id ); + } + + if ( $this->page_on_front === $original_post_id ) { + update_option( 'page_on_front', $post_id ); + } + + // Map pre-import ID to local ID. + $this->processed_posts[ (int) $post['post_id'] ] = (int) $post_id; + + if ( ! isset( $post['terms'] ) ) { + $post['terms'] = []; + } + + $post['terms'] = apply_filters( 'wp_import_post_terms', $post['terms'], $post_id, $post ); + + // add categories, tags and other terms + if ( ! empty( $post['terms'] ) ) { + $terms_to_set = []; + foreach ( $post['terms'] as $term ) { + // back compat with WXR 1.0 map 'tag' to 'post_tag' + $taxonomy = ( 'tag' === $term['domain'] ) ? 'post_tag' : $term['domain']; + $term_exists = term_exists( $term['slug'], $taxonomy ); + $term_id = is_array( $term_exists ) ? $term_exists['term_id'] : $term_exists; + if ( ! $term_id ) { + $t = wp_insert_term( $term['name'], $taxonomy, [ 'slug' => $term['slug'] ] ); + if ( ! is_wp_error( $t ) ) { + $term_id = $t['term_id']; + + $this->update_term_meta( $term_id ); + + do_action( 'wp_import_insert_term', $t, $term, $post_id, $post ); + } else { + /* translators: 1: Taxonomy name, 2: Term name. */ + $error = sprintf( esc_html__( 'Failed to import %1$s %2$s', 'elementor' ), $taxonomy, $term['name'] ); + + if ( defined( 'IMPORT_DEBUG' ) && IMPORT_DEBUG ) { + $error .= PHP_EOL . $t->get_error_message(); + } + + $this->output['errors'][] = $error; + + do_action( 'wp_import_insert_term_failed', $t, $term, $post_id, $post ); + continue; + } + } + $terms_to_set[ $taxonomy ][] = (int) $term_id; + } + + foreach ( $terms_to_set as $tax => $ids ) { + $tt_ids = wp_set_post_terms( $post_id, $ids, $tax ); + do_action( 'wp_import_set_post_terms', $tt_ids, $ids, $tax, $post_id, $post ); + } + unset( $post['terms'], $terms_to_set ); + } + + if ( ! isset( $post['comments'] ) ) { + $post['comments'] = []; + } + + $post['comments'] = apply_filters( 'wp_import_post_comments', $post['comments'], $post_id, $post ); + + // Add/update comments. + if ( ! empty( $post['comments'] ) ) { + $num_comments = 0; + $inserted_comments = []; + foreach ( $post['comments'] as $comment ) { + $comment_id = $comment['comment_id']; + $newcomments[ $comment_id ]['comment_post_ID'] = $comment_post_id; + $newcomments[ $comment_id ]['comment_author'] = $comment['comment_author']; + $newcomments[ $comment_id ]['comment_author_email'] = $comment['comment_author_email']; + $newcomments[ $comment_id ]['comment_author_IP'] = $comment['comment_author_IP']; + $newcomments[ $comment_id ]['comment_author_url'] = $comment['comment_author_url']; + $newcomments[ $comment_id ]['comment_date'] = $comment['comment_date']; + $newcomments[ $comment_id ]['comment_date_gmt'] = $comment['comment_date_gmt']; + $newcomments[ $comment_id ]['comment_content'] = $comment['comment_content']; + $newcomments[ $comment_id ]['comment_approved'] = $comment['comment_approved']; + $newcomments[ $comment_id ]['comment_type'] = $comment['comment_type']; + $newcomments[ $comment_id ]['comment_parent'] = $comment['comment_parent']; + $newcomments[ $comment_id ]['commentmeta'] = isset( $comment['commentmeta'] ) ? $comment['commentmeta'] : []; + if ( isset( $this->processed_authors[ $comment['comment_user_id'] ] ) ) { + $newcomments[ $comment_id ]['user_id'] = $this->processed_authors[ $comment['comment_user_id'] ]; + } + } + + ksort( $newcomments ); + + foreach ( $newcomments as $key => $comment ) { + if ( isset( $inserted_comments[ $comment['comment_parent'] ] ) ) { + $comment['comment_parent'] = $inserted_comments[ $comment['comment_parent'] ]; + } + + $comment_data = wp_slash( $comment ); + unset( $comment_data['commentmeta'] ); // Handled separately, wp_insert_comment() also expects `comment_meta`. + $comment_data = wp_filter_comment( $comment_data ); + + $inserted_comments[ $key ] = wp_insert_comment( $comment_data ); + + do_action( 'wp_import_insert_comment', $inserted_comments[ $key ], $comment, $comment_post_id, $post ); + + foreach ( $comment['commentmeta'] as $meta ) { + $value = maybe_unserialize( $meta['value'] ); + + add_comment_meta( $inserted_comments[ $key ], wp_slash( $meta['key'] ), wp_slash_strings_only( $value ) ); + } + + $num_comments++; + } + unset( $newcomments, $inserted_comments, $post['comments'] ); + } + + if ( ! isset( $post['postmeta'] ) ) { + $post['postmeta'] = []; + } + + $post['postmeta'] = apply_filters( 'wp_import_post_meta', $post['postmeta'], $post_id, $post ); + + // Add/update post meta. + if ( ! empty( $post['postmeta'] ) ) { + foreach ( $post['postmeta'] as $meta ) { + $key = apply_filters( 'import_post_meta_key', $meta['key'], $post_id, $post ); + $value = false; + + if ( '_edit_last' === $key ) { + if ( isset( $this->processed_authors[ (int) $meta['value'] ] ) ) { + $value = $this->processed_authors[ (int) $meta['value'] ]; + } else { + $key = false; + } + } + + if ( $key ) { + // Export gets meta straight from the DB so could have a serialized string. + if ( ! $value ) { + $value = maybe_unserialize( $meta['value'] ); + } + + add_post_meta( $post_id, wp_slash( $key ), wp_slash_strings_only( $value ) ); + + do_action( 'import_post_meta', $post_id, $key, $value ); + + // If the post has a featured image, take note of this in case of remap. + if ( '_thumbnail_id' === $key ) { + $this->featured_images[ $post_id ] = (int) $value; + } + } + } + } + } + + unset( $this->posts ); + + return $result; + } + + /** + * Attempt to create a new menu item from import data + * + * Fails for draft, orphaned menu items and those without an associated nav_menu + * or an invalid nav_menu term. If the post type or term object which the menu item + * represents doesn't exist then the menu item will not be imported (waits until the + * end of the import to retry again before discarding). + * + * @param array $item Menu item details from WXR file + */ + private function process_menu_item( $item ) { + $result = []; + + // Skip draft, orphaned menu items. + if ( 'draft' === $item['status'] ) { + return; + } + + $menu_slug = false; + if ( isset( $item['terms'] ) ) { + // Loop through terms, assume first nav_menu term is correct menu. + foreach ( $item['terms'] as $term ) { + if ( 'nav_menu' === $term['domain'] ) { + $menu_slug = $term['slug']; + break; + } + } + } + + // No nav_menu term associated with this menu item. + if ( ! $menu_slug ) { + $this->output['errors'][] = esc_html__( 'Menu item skipped due to missing menu slug', 'elementor' ); + + return $result; + } + + // If menu was already exists, refer the items to the duplicated menu created. + if ( array_key_exists( $menu_slug, $this->mapped_terms_slug ) ) { + $menu_slug = $this->mapped_terms_slug[ $menu_slug ]; + } + + $menu_id = term_exists( $menu_slug, 'nav_menu' ); + if ( ! $menu_id ) { + /* translators: %s: Menu slug. */ + $this->output['errors'][] = sprintf( esc_html__( 'Menu item skipped due to invalid menu slug: %s', 'elementor' ), $menu_slug ); + + return $result; + } else { + $menu_id = is_array( $menu_id ) ? $menu_id['term_id'] : $menu_id; + } + + $post_meta_key_value = []; + foreach ( $item['postmeta'] as $meta ) { + $post_meta_key_value[ $meta['key'] ] = $meta['value']; + } + + $_menu_item_type = $post_meta_key_value['_menu_item_type']; + $_menu_item_url = $post_meta_key_value['_menu_item_url']; + + // Skip menu items 'taxonomy' type, when the taxonomy is not exits. + if ( 'taxonomy' === $_menu_item_type && ! taxonomy_exists( $post_meta_key_value['_menu_item_object'] ) ) { + return $result; + } + + // Skip menu items 'post_type' type, when the post type is not exits. + if ( 'post_type' === $_menu_item_type && ! post_type_exists( $post_meta_key_value['_menu_item_object'] ) ) { + return $result; + } + + $_menu_item_object_id = $post_meta_key_value['_menu_item_object_id']; + if ( 'taxonomy' === $_menu_item_type && isset( $this->processed_terms[ (int) $_menu_item_object_id ] ) ) { + $_menu_item_object_id = $this->processed_terms[ (int) $_menu_item_object_id ]; + } elseif ( 'post_type' === $_menu_item_type && isset( $this->processed_posts[ (int) $_menu_item_object_id ] ) ) { + $_menu_item_object_id = $this->processed_posts[ (int) $_menu_item_object_id ]; + } elseif ( 'custom' === $_menu_item_type ) { + $_menu_item_url = Url::migrate( $_menu_item_url, $this->base_blog_url ); + } else { + return $result; + } + + $_menu_item_menu_item_parent = $post_meta_key_value['_menu_item_menu_item_parent']; + if ( isset( $this->processed_menu_items[ (int) $_menu_item_menu_item_parent ] ) ) { + $_menu_item_menu_item_parent = $this->processed_menu_items[ (int) $_menu_item_menu_item_parent ]; + } elseif ( $_menu_item_menu_item_parent ) { + $this->menu_item_orphans[ (int) $item['post_id'] ] = (int) $_menu_item_menu_item_parent; + $_menu_item_menu_item_parent = 0; + } + + // wp_update_nav_menu_item expects CSS classes as a space separated string + $_menu_item_classes = maybe_unserialize( $post_meta_key_value['_menu_item_classes'] ); + if ( is_array( $_menu_item_classes ) ) { + $_menu_item_classes = implode( ' ', $_menu_item_classes ); + } + + $args = [ + 'menu-item-object-id' => $_menu_item_object_id, + 'menu-item-object' => $post_meta_key_value['_menu_item_object'], + 'menu-item-parent-id' => $_menu_item_menu_item_parent, + 'menu-item-position' => (int) $item['menu_order'], + 'menu-item-type' => $_menu_item_type, + 'menu-item-title' => $item['post_title'], + 'menu-item-url' => $_menu_item_url, + 'menu-item-description' => $item['post_content'], + 'menu-item-attr-title' => $item['post_excerpt'], + 'menu-item-target' => $post_meta_key_value['_menu_item_target'], + 'menu-item-classes' => $_menu_item_classes, + 'menu-item-xfn' => $post_meta_key_value['_menu_item_xfn'], + 'menu-item-status' => $item['status'], + ]; + + $id = wp_update_nav_menu_item( $menu_id, 0, $args ); + if ( $id && ! is_wp_error( $id ) ) { + $this->processed_menu_items[ (int) $item['post_id'] ] = (int) $id; + $result[ $item['post_id'] ] = $id; + + $this->update_post_meta( $id ); + } + + return $result; + } + + /** + * If fetching attachments is enabled then attempt to create a new attachment + * + * @param array $post Attachment post details from WXR + * @param string $url URL to fetch attachment from + * + * @return int|WP_Error Post ID on success, WP_Error otherwise + */ + private function process_attachment( $post, $url ) { + if ( ! $this->fetch_attachments ) { + return new WP_Error( 'attachment_processing_error', esc_html__( 'Fetching attachments is not enabled', 'elementor' ) ); + } + + // if the URL is absolute, but does not contain address, then upload it assuming base_site_url. + if ( preg_match( '|^/[\w\W]+$|', $url ) ) { + $url = rtrim( $this->base_url, '/' ) . $url; + } + + $upload = $this->fetch_remote_file( $url, $post ); + if ( is_wp_error( $upload ) ) { + return $upload; + } + + $info = wp_check_filetype( $upload['file'] ); + if ( $info ) { + $post['post_mime_type'] = $info['type']; + } else { + return new WP_Error( 'attachment_processing_error', esc_html__( 'Invalid file type', 'elementor' ) ); + } + + $post['guid'] = $upload['url']; + + // As per wp-admin/includes/upload.php. + $post_id = wp_insert_attachment( $post, $upload['file'] ); + + $this->update_post_meta( $post_id ); + + wp_update_attachment_metadata( $post_id, wp_generate_attachment_metadata( $post_id, $upload['file'] ) ); + + // Remap resized image URLs, works by stripping the extension and remapping the URL stub. + if ( preg_match( '!^image/!', $info['type'] ) ) { + $parts = pathinfo( $url ); + $name = basename( $parts['basename'], ".{$parts['extension']}" ); // PATHINFO_FILENAME in PHP 5.2 + + $parts_new = pathinfo( $upload['url'] ); + $name_new = basename( $parts_new['basename'], ".{$parts_new['extension']}" ); + + $this->url_remap[ $parts['dirname'] . '/' . $name ] = $parts_new['dirname'] . '/' . $name_new; + } + + return $post_id; + } + + /** + * Attempt to download a remote file attachment + * + * @param string $url URL of item to fetch + * @param array $post Attachment details + * + * @return array|WP_Error Local file location details on success, WP_Error otherwise + */ + private function fetch_remote_file( $url, $post ) { + // Extract the file name from the URL. + $file_name = basename( parse_url( $url, PHP_URL_PATH ) ); + + if ( ! $file_name ) { + $file_name = md5( $url ); + } + + $tmp_file_name = wp_tempnam( $file_name ); + if ( ! $tmp_file_name ) { + return new WP_Error( 'import_no_file', esc_html__( 'Could not create temporary file.', 'elementor' ) ); + } + + // Fetch the remote URL and write it to the placeholder file. + $remote_response = wp_safe_remote_get( $url, [ + 'timeout' => 300, + 'stream' => true, + 'filename' => $tmp_file_name, + 'headers' => [ + 'Accept-Encoding' => 'identity', + ], + ] ); + + if ( is_wp_error( $remote_response ) ) { + @unlink( $tmp_file_name ); + + return new WP_Error( 'import_file_error', sprintf( /* translators: 1: WordPress error message, 2: WordPress error code. */ esc_html__( 'Request failed due to an error: %1$s (%2$s)', 'elementor' ), esc_html( $remote_response->get_error_message() ), esc_html( $remote_response->get_error_code() ) ) ); + } + + $remote_response_code = (int) wp_remote_retrieve_response_code( $remote_response ); + + // Make sure the fetch was successful. + if ( 200 !== $remote_response_code ) { + @unlink( $tmp_file_name ); + + return new WP_Error( 'import_file_error', sprintf( /* translators: 1: HTTP error message, 2: HTTP error code. */ esc_html__( 'Remote server returned the following unexpected result: %1$s (%2$s)', 'elementor' ), get_status_header_desc( $remote_response_code ), esc_html( $remote_response_code ) ) ); + } + + $headers = wp_remote_retrieve_headers( $remote_response ); + + // Request failed. + if ( ! $headers ) { + @unlink( $tmp_file_name ); + + return new WP_Error( 'import_file_error', esc_html__( 'Remote server did not respond', 'elementor' ) ); + } + + $filesize = (int) filesize( $tmp_file_name ); + + if ( 0 === $filesize ) { + @unlink( $tmp_file_name ); + + return new WP_Error( 'import_file_error', esc_html__( 'Zero size file downloaded', 'elementor' ) ); + } + + if ( ! isset( $headers['content-encoding'] ) && isset( $headers['content-length'] ) && $filesize !== (int) $headers['content-length'] ) { + @unlink( $tmp_file_name ); + + return new WP_Error( 'import_file_error', esc_html__( 'Downloaded file has incorrect size', 'elementor' ) ); + } + + $max_size = (int) apply_filters( 'import_attachment_size_limit', self::DEFAULT_IMPORT_ATTACHMENT_SIZE_LIMIT ); + if ( ! empty( $max_size ) && $filesize > $max_size ) { + @unlink( $tmp_file_name ); + + /* translators: %s: Max file size. */ + return new WP_Error( 'import_file_error', sprintf( esc_html__( 'Remote file is too large, limit is %s', 'elementor' ), size_format( $max_size ) ) ); + } + + // Override file name with Content-Disposition header value. + if ( ! empty( $headers['content-disposition'] ) ) { + $file_name_from_disposition = self::get_filename_from_disposition( (array) $headers['content-disposition'] ); + if ( $file_name_from_disposition ) { + $file_name = $file_name_from_disposition; + } + } + + // Set file extension if missing. + $file_ext = pathinfo( $file_name, PATHINFO_EXTENSION ); + if ( ! $file_ext && ! empty( $headers['content-type'] ) ) { + $extension = self::get_file_extension_by_mime_type( $headers['content-type'] ); + if ( $extension ) { + $file_name = "{$file_name}.{$extension}"; + } + } + + // Handle the upload like _wp_handle_upload() does. + $wp_filetype = wp_check_filetype_and_ext( $tmp_file_name, $file_name ); + $ext = empty( $wp_filetype['ext'] ) ? '' : $wp_filetype['ext']; + $type = empty( $wp_filetype['type'] ) ? '' : $wp_filetype['type']; + $proper_filename = empty( $wp_filetype['proper_filename'] ) ? '' : $wp_filetype['proper_filename']; + + // Check to see if wp_check_filetype_and_ext() determined the filename was incorrect. + if ( $proper_filename ) { + $file_name = $proper_filename; + } + + if ( ( ! $type || ! $ext ) && ! current_user_can( 'unfiltered_upload' ) ) { + return new WP_Error( 'import_file_error', esc_html__( 'Sorry, this file type is not permitted for security reasons.', 'elementor' ) ); + } + + $uploads = wp_upload_dir( $post['upload_date'] ); + if ( ! ( $uploads && false === $uploads['error'] ) ) { + return new WP_Error( 'upload_dir_error', $uploads['error'] ); + } + + // Move the file to the uploads dir. + $file_name = wp_unique_filename( $uploads['path'], $file_name ); + $new_file = $uploads['path'] . "/$file_name"; + $move_new_file = copy( $tmp_file_name, $new_file ); + + if ( ! $move_new_file ) { + @unlink( $tmp_file_name ); + + return new WP_Error( 'import_file_error', esc_html__( 'The uploaded file could not be moved', 'elementor' ) ); + } + + // Set correct file permissions. + $stat = stat( dirname( $new_file ) ); + $perms = $stat['mode'] & 0000666; + chmod( $new_file, $perms ); + + $upload = [ + 'file' => $new_file, + 'url' => $uploads['url'] . "/$file_name", + 'type' => $wp_filetype['type'], + 'error' => false, + ]; + + // Keep track of the old and new urls so we can substitute them later. + $this->url_remap[ $url ] = $upload['url']; + $this->url_remap[ $post['guid'] ] = $upload['url']; // r13735, really needed? + // Keep track of the destination if the remote url is redirected somewhere else. + if ( isset( $headers['x-final-location'] ) && $headers['x-final-location'] !== $url ) { + $this->url_remap[ $headers['x-final-location'] ] = $upload['url']; + } + + return $upload; + } + + /** + * Attempt to associate posts and menu items with previously missing parents + * + * An imported post's parent may not have been imported when it was first created + * so try again. Similarly for child menu items and menu items which were missing + * the object (e.g. post) they represent in the menu + */ + private function backfill_parents() { + global $wpdb; + + // Find parents for post orphans. + foreach ( $this->post_orphans as $child_id => $parent_id ) { + $local_child_id = false; + $local_parent_id = false; + + if ( isset( $this->processed_posts[ $child_id ] ) ) { + $local_child_id = $this->processed_posts[ $child_id ]; + } + if ( isset( $this->processed_posts[ $parent_id ] ) ) { + $local_parent_id = $this->processed_posts[ $parent_id ]; + } + + if ( $local_child_id && $local_parent_id ) { + $wpdb->update( $wpdb->posts, [ 'post_parent' => $local_parent_id ], [ 'ID' => $local_child_id ], '%d', '%d' ); + clean_post_cache( $local_child_id ); + } + } + + // Find parents for menu item orphans. + foreach ( $this->menu_item_orphans as $child_id => $parent_id ) { + $local_child_id = 0; + $local_parent_id = 0; + if ( isset( $this->processed_menu_items[ $child_id ] ) ) { + $local_child_id = $this->processed_menu_items[ $child_id ]; + } + if ( isset( $this->processed_menu_items[ $parent_id ] ) ) { + $local_parent_id = $this->processed_menu_items[ $parent_id ]; + } + + if ( $local_child_id && $local_parent_id ) { + update_post_meta( $local_child_id, '_menu_item_menu_item_parent', (int) $local_parent_id ); + } + } + } + + /** + * Use stored mapping information to update old attachment URLs + */ + private function backfill_attachment_urls() { + global $wpdb; + // Make sure we do the longest urls first, in case one is a substring of another. + uksort( $this->url_remap, function ( $a, $b ) { + // Return the difference in length between two strings. + return strlen( $b ) - strlen( $a ); + } ); + + foreach ( $this->url_remap as $from_url => $to_url ) { + // Remap urls in post_content. + $wpdb->query( $wpdb->prepare( "UPDATE {$wpdb->posts} SET post_content = REPLACE(post_content, %s, %s)", $from_url, $to_url ) ); + // Remap enclosure urls. + $wpdb->query( $wpdb->prepare( "UPDATE {$wpdb->postmeta} SET meta_value = REPLACE(meta_value, %s, %s) WHERE meta_key='enclosure'", $from_url, $to_url ) ); + } + } + + /** + * Update _thumbnail_id meta to new, imported attachment IDs + */ + private function remap_featured_images() { + // Cycle through posts that have a featured image. + foreach ( $this->featured_images as $post_id => $value ) { + if ( isset( $this->processed_posts[ $value ] ) ) { + $new_id = $this->processed_posts[ $value ]; + // Only update if there's a difference. + if ( $new_id !== $value ) { + update_post_meta( $post_id, '_thumbnail_id', $new_id ); + } + } + } + } + + /** + * Parse a WXR file + * + * @param string $file Path to WXR file for parsing + * + * @return array Information gathered from the WXR file + */ + private function parse( $file ) { + $parser = new WXR_Parser(); + + return $parser->parse( $file ); + } + + /** + * Decide if the given meta key maps to information we will want to import + * + * @param string $key The meta key to check + * + * @return string|bool The key if we do want to import, false if not + */ + private function is_valid_meta_key( $key ) { + // Skip attachment metadata since we'll regenerate it from scratch. + // Skip _edit_lock as not relevant for import + if ( in_array( $key, [ '_wp_attached_file', '_wp_attachment_metadata', '_edit_lock' ] ) ) { + return false; + } + + return $key; + } + + /** + * @param $term + * @return mixed + */ + private function handle_duplicated_nav_menu_term( $term ) { + $duplicate_slug = $term['slug'] . '-duplicate'; + $duplicate_name = $term['term_name'] . ' duplicate'; + + while ( term_exists( $duplicate_slug, 'nav_menu' ) ) { + $duplicate_slug .= '-duplicate'; + $duplicate_name .= ' duplicate'; + } + + $this->mapped_terms_slug[ $term['slug'] ] = $duplicate_slug; + + $term['slug'] = $duplicate_slug; + $term['term_name'] = $duplicate_name; + + return $term; + } + + /** + * Add all term_meta to specified term. + * + * @param $term_id + * @return void + */ + private function update_term_meta( $term_id ) { + foreach ( $this->terms_meta as $meta_key => $meta_value ) { + update_term_meta( $term_id, $meta_key, $meta_value ); + } + } + + /** + * Add all post_meta to specified term. + * + * @param $post_id + * @return void + */ + private function update_post_meta( $post_id ) { + foreach ( $this->posts_meta as $meta_key => $meta_value ) { + update_post_meta( $post_id, $meta_key, $meta_value ); + } + } + + public function run() { + $this->import( $this->requested_file_path ); + + return $this->output; + } + + /** + * @param $file + * @param $args + */ + public function __construct( $file, $args = [] ) { + $this->requested_file_path = $file; + $this->args = $args; + + if ( ! empty( $this->args['fetch_attachments'] ) ) { + $this->fetch_attachments = true; + } + + if ( isset( $this->args['posts'] ) && is_array( $this->args['posts'] ) ) { + $this->processed_posts = $this->args['posts']; + } + + if ( isset( $this->args['terms'] ) && is_array( $this->args['terms'] ) ) { + $this->processed_terms = $this->args['terms']; + } + + if ( isset( $this->args['taxonomies'] ) && is_array( $this->args['taxonomies'] ) ) { + $this->processed_taxonomies = $this->args['taxonomies']; + } + + if ( ! empty( $this->args['posts_meta'] ) ) { + $this->posts_meta = $this->args['posts_meta']; + } + + if ( ! empty( $this->args['terms_meta'] ) ) { + $this->terms_meta = $this->args['terms_meta']; + } + } +} diff --git a/wp-content/plugins/elementor/core/utils/plugins-manager.php b/wp-content/plugins/elementor/core/utils/plugins-manager.php new file mode 100644 index 0000000..a7ce762 --- /dev/null +++ b/wp-content/plugins/elementor/core/utils/plugins-manager.php @@ -0,0 +1,137 @@ +upgrader = $upgrader; + } else { + $skin = new WP_Ajax_Upgrader_Skin(); + $this->upgrader = new Plugin_Upgrader( $skin ); + } + } + + /** + * Install plugin or an array of plugins. + * + * @since 3.6.2 + * + * @param string|array $plugins + * @return array [ 'succeeded' => [] , 'failed' => [] ] + */ + public function install( $plugins ) { + $succeeded = []; + $failed = []; + $already_installed_plugins = Plugin::$instance->wp->get_plugins(); + + if ( ! is_array( $plugins ) ) { + $plugins = [ $plugins ]; + } + + foreach ( $plugins as $plugin ) { + if ( in_array( $plugin, $already_installed_plugins->keys(), true ) ) { + $succeeded[] = $plugin; + continue; + } + + $slug = $this->clean_slug( $plugin ); + + $api = Plugin::$instance->wp->plugins_api('plugin_information', + [ + 'slug' => $slug, + 'fields' => array( + 'short_description' => false, + 'sections' => false, + 'requires' => false, + 'rating' => false, + 'ratings' => false, + 'downloaded' => false, + 'last_updated' => false, + 'added' => false, + 'tags' => false, + 'compatibility' => false, + 'homepage' => false, + 'donate_link' => false, + ), + ] + ); + + if ( ! isset( $api->download_link ) ) { + $failed[] = $plugin; + continue; + } + + $installation = $this->upgrader->install( $api->download_link ); + + if ( $installation ) { + $succeeded[] = $plugin; + } else { + $failed[] = $plugin; + } + } + + return [ + 'succeeded' => $succeeded, + 'failed' => $failed, + ]; + } + + /** + * Activate plugin or array off plugins. + * + * @since 3.6.2 + * + * @param array|string $plugins + * @return array [ 'succeeded' => [] , 'failed' => [] ] + */ + public function activate( $plugins ) { + $succeeded = []; + $failed = []; + + if ( ! is_array( $plugins ) ) { + $plugins = [ $plugins ]; + } + + foreach ( $plugins as $plugin ) { + if ( Plugin::$instance->wp->is_plugin_active( $plugin ) ) { + $succeeded[] = $plugin; + continue; + } + + Plugin::$instance->wp->activate_plugin( $plugin ); + + if ( Plugin::$instance->wp->is_plugin_active( $plugin ) ) { + $succeeded[] = $plugin; + } else { + $failed[] = $plugin; + } + } + + return [ + 'succeeded' => $succeeded, + 'failed' => $failed, + ]; + } + + private function clean_slug( $initial_slug ) { + return explode( '/', $initial_slug )[0]; + } +} diff --git a/wp-content/plugins/elementor/core/utils/promotions/filtered-promotions-manager.php b/wp-content/plugins/elementor/core/utils/promotions/filtered-promotions-manager.php new file mode 100644 index 0000000..aeeb159 --- /dev/null +++ b/wp-content/plugins/elementor/core/utils/promotions/filtered-promotions-manager.php @@ -0,0 +1,66 @@ +collection = new Collection( $items ); + $this->unique_values = $unique_values; + } + + /** + * Since this class is a wrapper, every call will be forwarded to wrapped class. + * Most of the collection methods returns a new collection instance, and therefore + * it will be assigned as the current collection instance after executing any method. + * + * @param string $name + * @param array $arguments + */ + public function __call( $name, $arguments ) { + $call = call_user_func_array( [ $this->collection, $name ], $arguments ); + + if ( $call instanceof Collection ) { + $this->collection = $this->unique_values ? + $call->unique() : + $call; + } + + return $call; + } +} diff --git a/wp-content/plugins/elementor/core/utils/str.php b/wp-content/plugins/elementor/core/utils/str.php new file mode 100644 index 0000000..959e59e --- /dev/null +++ b/wp-content/plugins/elementor/core/utils/str.php @@ -0,0 +1,41 @@ += 6.2-alpha + if ( class_exists( '\WpOrg\Requests\IdnaEncoder' ) ) { + $class = \WpOrg\Requests\IdnaEncoder::class; + } else { + $class = \Requests_IDNAEncoder::class; + } + + return $matches[1] . $class::encode( $matches[2] ); + }, $url ); + } + + /** + * Checks if a string ends with a given substring + * + * @param $haystack + * @param $needle + * @return bool + */ + public static function ends_with( $haystack, $needle ) { + return substr( $haystack, -strlen( $needle ) ) === $needle; + } +} diff --git a/wp-content/plugins/elementor/core/utils/svg/svg-sanitizer.php b/wp-content/plugins/elementor/core/utils/svg/svg-sanitizer.php new file mode 100644 index 0000000..01028bc --- /dev/null +++ b/wp-content/plugins/elementor/core/utils/svg/svg-sanitizer.php @@ -0,0 +1,661 @@ +is_encoded( $original_content ); + + if ( $is_encoded ) { + $decoded = $this->decode_svg( $original_content ); + if ( false === $decoded ) { + return false; + } + $original_content = $decoded; + } + + $valid_svg = $this->sanitize( $original_content ); + + if ( false === $valid_svg ) { + return false; + } + + // If we were gzipped, we need to re-zip + if ( $is_encoded ) { + $valid_svg = $this->encode_svg( $valid_svg ); + } + file_put_contents( $filename, $valid_svg ); + + return true; + } + + /** + * Sanitize + * + * @since 3.16.0 + * @access public + * + * @param $content + * @return bool|string + */ + public function sanitize( $content ) { + // Strip php tags + $content = $this->strip_comments( $content ); + $content = $this->strip_php_tags( $content ); + $content = $this->strip_line_breaks( $content ); + + // Find the start and end tags so we can cut out miscellaneous garbage. + $start = strpos( $content, '' ); + if ( false === $start || false === $end ) { + return false; + } + + $content = substr( $content, $start, ( $end - $start + 6 ) ); + + // If the server's PHP version is 8 or up, make sure to Disable the ability to load external entities + $php_version_under_eight = version_compare( PHP_VERSION, '8.0.0', '<' ); + if ( $php_version_under_eight ) { + $libxml_disable_entity_loader = libxml_disable_entity_loader( true ); // phpcs:ignore Generic.PHP.DeprecatedFunctions.Deprecated + } + // Suppress the errors + $libxml_use_internal_errors = libxml_use_internal_errors( true ); + + // Create DomDocument instance + $this->svg_dom = new \DOMDocument(); + $this->svg_dom->formatOutput = false; + $this->svg_dom->preserveWhiteSpace = false; + $this->svg_dom->strictErrorChecking = false; + + $open_svg = $this->svg_dom->loadXML( $content ); + if ( ! $open_svg ) { + return false; + } + + $this->strip_doctype(); + $this->sanitize_elements(); + + // Export sanitized svg to string + // Using documentElement to strip out svg_dom->saveXML( $this->svg_dom->documentElement, LIBXML_NOEMPTYTAG ); + + // Restore defaults + if ( $php_version_under_eight ) { + libxml_disable_entity_loader( $libxml_disable_entity_loader ); // phpcs:ignore Generic.PHP.DeprecatedFunctions.Deprecated + } + libxml_use_internal_errors( $libxml_use_internal_errors ); + + return $sanitized; + } + + /** + * Is Encoded + * + * Check if the contents of the SVG file are gzipped + * @see http://www.gzip.org/zlib/rfc-gzip.html#member-format + * + * @since 3.16.0 + * @access private + * + * @param $contents + * + * @return bool + */ + private function is_encoded( $contents ) { + $needle = "\x1f\x8b\x08"; + if ( function_exists( 'mb_strpos' ) ) { + return 0 === mb_strpos( $contents, $needle ); + } else { + return 0 === strpos( $contents, $needle ); + } + } + + /** + * Encode SVG + * + * @since 3.16.0 + * @access private + * + * @param $content + * @return string + */ + private function encode_svg( $content ) { + return gzencode( $content ); + } + + /** + * Decode SVG + * + * @since 3.16.0 + * @access private + * + * @param $content + * + * @return string + */ + private function decode_svg( $content ) { + return gzdecode( $content ); + } + + /** + * Is Allowed Tag + * + * @since 3.16.0 + * @access private + * + * @param $element + * @return bool + */ + private function is_allowed_tag( $element ) { + static $allowed_tags = false; + if ( false === $allowed_tags ) { + $allowed_tags = $this->get_allowed_elements(); + } + + $tag_name = $element->tagName; // phpcs:ignore -- php DomDocument + + if ( ! in_array( strtolower( $tag_name ), $allowed_tags ) ) { + $this->remove_element( $element ); + return false; + } + + return true; + } + + /** + * Remove Element + * + * Removes the passed element from its DomDocument tree + * + * @since 3.16.0 + * @access private + * + * @param $element + */ + private function remove_element( $element ) { + $element->parentNode->removeChild( $element ); // phpcs:ignore -- php DomDocument + } + + /** + * Is It An Attribute + * + * @since 3.16.0 + * @access private + * + * @param $name + * @param $check + * @return bool + */ + private function is_a_attribute( $name, $check ) { + return 0 === strpos( $name, $check . '-' ); + } + + /** + * Is Remote Value + * + * @since 3.16.0 + * @access private + * + * @param $value + * @return string + */ + private function is_remote_value( $value ) { + $value = trim( preg_replace( '/[^ -~]/xu', '', $value ) ); + $wrapped_in_url = preg_match( '~^url\(\s*[\'"]\s*(.*)\s*[\'"]\s*\)$~xi', $value, $match ); + if ( ! $wrapped_in_url ) { + return false; + } + + $value = trim( $match[1], '\'"' ); + return preg_match( '~^((https?|ftp|file):)?//~xi', $value ); + } + + /** + * Has JS Value + * + * @since 3.16.0 + * @access private + * + * @param $value + * @return false|int + */ + private function has_js_value( $value ) { + return preg_match( '/base64|data|(?:java)?script|alert\(|window\.|document/i', $value ); + } + + /** + * Get Allowed Attributes + * + * Returns an array of allowed tag attributes in SVG files. + * + * @since 3.16.0 + * @access private + * + * @return array + */ + private function get_allowed_attributes() { + $allowed_attributes = [ + 'class', + 'clip-path', + 'clip-rule', + 'fill', + 'fill-opacity', + 'fill-rule', + 'filter', + 'id', + 'mask', + 'opacity', + 'stroke', + 'stroke-dasharray', + 'stroke-dashoffset', + 'stroke-linecap', + 'stroke-linejoin', + 'stroke-miterlimit', + 'stroke-opacity', + 'stroke-width', + 'style', + 'systemlanguage', + 'transform', + 'href', + 'xlink:href', + 'xlink:title', + 'cx', + 'cy', + 'r', + 'requiredfeatures', + 'clippathunits', + 'type', + 'rx', + 'ry', + 'color-interpolation-filters', + 'stddeviation', + 'filterres', + 'filterunits', + 'height', + 'primitiveunits', + 'width', + 'x', + 'y', + 'font-size', + 'display', + 'font-family', + 'font-style', + 'font-weight', + 'text-anchor', + 'marker-end', + 'marker-mid', + 'marker-start', + 'x1', + 'x2', + 'y1', + 'y2', + 'gradienttransform', + 'gradientunits', + 'spreadmethod', + 'markerheight', + 'markerunits', + 'markerwidth', + 'orient', + 'preserveaspectratio', + 'refx', + 'refy', + 'viewbox', + 'maskcontentunits', + 'maskunits', + 'd', + 'patterncontentunits', + 'patterntransform', + 'patternunits', + 'points', + 'fx', + 'fy', + 'offset', + 'stop-color', + 'stop-opacity', + 'xmlns', + 'xmlns:se', + 'xmlns:xlink', + 'xml:space', + 'method', + 'spacing', + 'startoffset', + 'dx', + 'dy', + 'rotate', + 'textlength', + ]; + + /** + * Allowed attributes in SVG file. + * + * Filters the list of allowed attributes in SVG files. + * + * Since SVG files can run JS code that may inject malicious code, all attributes + * are removed except the allowed attributes. + * + * This hook can be used to manage allowed SVG attributes. To either add new + * attributes or delete existing attributes. To strengthen or weaken site security. + * + * @param array $allowed_attributes A list of allowed attributes. + */ + $allowed_attributes = apply_filters( 'elementor/files/svg/allowed_attributes', $allowed_attributes ); + + return $allowed_attributes; + } + + /** + * Get Allowed Elements + * + * Returns an array of allowed element tags to be in SVG files. + * + * @since 3.16.0 + * @access private + * + * @return array + */ + private function get_allowed_elements() { + $allowed_elements = [ + 'a', + 'circle', + 'clippath', + 'defs', + 'style', + 'desc', + 'ellipse', + 'fegaussianblur', + 'filter', + 'foreignobject', + 'g', + 'image', + 'line', + 'lineargradient', + 'marker', + 'mask', + 'metadata', + 'path', + 'pattern', + 'polygon', + 'polyline', + 'radialgradient', + 'rect', + 'stop', + 'svg', + 'switch', + 'symbol', + 'text', + 'textpath', + 'title', + 'tspan', + 'use', + ]; + + /** + * Allowed elements in SVG file. + * + * Filters the list of allowed elements in SVG files. + * + * Since SVG files can run JS code that may inject malicious code, all elements + * are removed except the allowed elements. + * + * This hook can be used to manage SVG elements. To either add new elements or + * delete existing elements. To strengthen or weaken site security. + * + * @param array $allowed_elements A list of allowed elements. + */ + $allowed_elements = apply_filters( 'elementor/files/svg/allowed_elements', $allowed_elements ); + + return $allowed_elements; + } + + /** + * Validate Allowed Attributes + * + * @since 3.16.0 + * @access private + * + * @param \DOMElement $element + */ + private function validate_allowed_attributes( $element ) { + static $allowed_attributes = false; + if ( false === $allowed_attributes ) { + $allowed_attributes = $this->get_allowed_attributes(); + } + + for ( $index = $element->attributes->length - 1; $index >= 0; $index-- ) { + // get attribute name + $attr_name = $element->attributes->item( $index )->name; + $attr_name_lowercase = strtolower( $attr_name ); + // Remove attribute if not in whitelist + if ( ! in_array( $attr_name_lowercase, $allowed_attributes ) && ! $this->is_a_attribute( $attr_name_lowercase, 'aria' ) && ! $this->is_a_attribute( $attr_name_lowercase, 'data' ) ) { + $element->removeAttribute( $attr_name ); + continue; + } + + $attr_value = $element->attributes->item( $index )->value; + + // Remove attribute if it has a remote reference or js or data-URI/base64 + if ( ! empty( $attr_value ) && ( $this->is_remote_value( $attr_value ) || $this->has_js_value( $attr_value ) ) ) { + $element->removeAttribute( $attr_name ); + continue; + } + } + } + + /** + * Strip xlinks + * + * @since 3.16.0 + * @access private + * + * @param \DOMElement $element + */ + private function strip_xlinks( $element ) { + $xlinks = $element->getAttributeNS( 'http://www.w3.org/1999/xlink', 'href' ); + + if ( ! $xlinks ) { + return; + } + + if ( ! $this->is_safe_href( $xlinks ) ) { + $element->removeAttributeNS( 'http://www.w3.org/1999/xlink', 'href' ); + } + } + + /** + * @see https://github.com/darylldoyle/svg-sanitizer/blob/2321a914e/src/Sanitizer.php#L454 + */ + private function is_safe_href( $value ) { + // Allow empty values. + if ( empty( $value ) ) { + return true; + } + + // Allow fragment identifiers. + if ( '#' === substr( $value, 0, 1 ) ) { + return true; + } + + // Allow relative URIs. + if ( '/' === substr( $value, 0, 1 ) ) { + return true; + } + + // Allow HTTPS domains. + if ( 'https://' === substr( $value, 0, 8 ) ) { + return true; + } + + // Allow HTTP domains. + if ( 'http://' === substr( $value, 0, 7 ) ) { + return true; + } + + // Allow known data URIs. + if ( in_array( substr( $value, 0, 14 ), [ + 'data:image/png', // PNG + 'data:image/gif', // GIF + 'data:image/jpg', // JPG + 'data:image/jpe', // JPEG + 'data:image/pjp', // PJPEG + ], true ) ) { + return true; + } + + // Allow known short data URIs. + if ( in_array( substr( $value, 0, 12 ), [ + 'data:img/png', // PNG + 'data:img/gif', // GIF + 'data:img/jpg', // JPG + 'data:img/jpe', // JPEG + 'data:img/pjp', // PJPEG + ], true ) ) { + return true; + } + + return false; + } + + /** + * Validate Use Tag + * + * @since 3.16.0 + * @access private + * + * @param $element + */ + private function validate_use_tag( $element ) { + $xlinks = $element->getAttributeNS( 'http://www.w3.org/1999/xlink', 'href' ); + if ( $xlinks && '#' !== substr( $xlinks, 0, 1 ) ) { + $element->parentNode->removeChild( $element ); // phpcs:ignore -- php DomNode + } + } + + /** + * Strip Doctype + * + * @since 3.16.0 + * @access private + * + */ + private function strip_doctype() { + foreach ( $this->svg_dom->childNodes as $child ) { + if ( XML_DOCUMENT_TYPE_NODE === $child->nodeType ) { // phpcs:ignore -- php DomDocument + $child->parentNode->removeChild( $child ); // phpcs:ignore -- php DomDocument + } + } + } + + /** + * Sanitize Elements + * + * @since 3.16.0 + * @access private + */ + private function sanitize_elements() { + $elements = $this->svg_dom->getElementsByTagName( '*' ); + // loop through all elements + // we do this backwards so we don't skip anything if we delete a node + // see comments at: http://php.net/manual/en/class.domnamednodemap.php + for ( $index = $elements->length - 1; $index >= 0; $index-- ) { + /** + * @var \DOMElement $current_element + */ + $current_element = $elements->item( $index ); + // If the tag isn't in the whitelist, remove it and continue with next iteration + if ( ! $this->is_allowed_tag( $current_element ) ) { + continue; + } + + //validate element attributes + $this->validate_allowed_attributes( $current_element ); + + $this->strip_xlinks( $current_element ); + + if ( 'use' === strtolower( $current_element->tagName ) ) { // phpcs:ignore -- php DomDocument + $this->validate_use_tag( $current_element ); + } + } + } + + /** + * Strip PHP Tags + * + * @since 3.16.0 + * @access private + * + * @param $string + * @return string + */ + private function strip_php_tags( $string ) { + $string = preg_replace( '/<\?(=|php)(.+?)\?>/i', '', $string ); + // Remove XML, ASP, etc. + $string = preg_replace( '/<\?(.*)\?>/Us', '', $string ); + $string = preg_replace( '/<\%(.*)\%>/Us', '', $string ); + + if ( ( false !== strpos( $string, '/Us', '', $string ); + $string = preg_replace( '/\/\*(.*)\*\//Us', '', $string ); + if ( ( false !== strpos( $string, ' + ', + '' + ); ?> + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/wp-content/plugins/elementor/includes/editor-templates/repeater.php b/wp-content/plugins/elementor/includes/editor-templates/repeater.php new file mode 100644 index 0000000..7fd627a --- /dev/null +++ b/wp-content/plugins/elementor/includes/editor-templates/repeater.php @@ -0,0 +1,32 @@ + + diff --git a/wp-content/plugins/elementor/includes/editor-templates/responsive-bar.php b/wp-content/plugins/elementor/includes/editor-templates/responsive-bar.php new file mode 100644 index 0000000..12283b0 --- /dev/null +++ b/wp-content/plugins/elementor/includes/editor-templates/responsive-bar.php @@ -0,0 +1,73 @@ +breakpoints->get_active_breakpoints(); +$active_devices = Plugin::$instance->breakpoints->get_active_devices_list( [ 'reverse' => true ] ); + +$breakpoint_classes_map = array_intersect_key( Plugin::$instance->breakpoints->get_responsive_icons_classes_map(), array_flip( $active_devices ) ); +?> + + diff --git a/wp-content/plugins/elementor/includes/editor-templates/templates.php b/wp-content/plugins/elementor/includes/editor-templates/templates.php new file mode 100644 index 0000000..e0c5a63 --- /dev/null +++ b/wp-content/plugins/elementor/includes/editor-templates/templates.php @@ -0,0 +1,319 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/wp-content/plugins/elementor/includes/elements/column.php b/wp-content/plugins/elementor/includes/elements/column.php new file mode 100644 index 0000000..b130b8e --- /dev/null +++ b/wp-content/plugins/elementor/includes/elements/column.php @@ -0,0 +1,1069 @@ +get_controls(); + $config['tabs_controls'] = $this->get_tabs_controls(); + + return $config; + } + + /** + * Register column controls. + * + * Used to add new controls to the column element. + * + * @since 3.1.0 + * @access protected + */ + protected function register_controls() { + // Section Layout. + $this->start_controls_section( + 'layout', + [ + 'label' => esc_html__( 'Layout', 'elementor' ), + 'tab' => Controls_Manager::TAB_LAYOUT, + ] + ); + + // Element Name for the Navigator + $this->add_control( + '_title', + [ + 'label' => esc_html__( 'Title', 'elementor' ), + 'type' => Controls_Manager::HIDDEN, + 'render_type' => 'none', + ] + ); + + $active_breakpoint_keys = array_reverse( array_keys( Plugin::$instance->breakpoints->get_active_breakpoints() ) ); + $inline_size_device_args = [ + Breakpoints_Manager::BREAKPOINT_KEY_MOBILE => [ 'placeholder' => 100 ], + ]; + + foreach ( $active_breakpoint_keys as $breakpoint_key ) { + if ( ! isset( $inline_size_device_args[ $breakpoint_key ] ) ) { + $inline_size_device_args[ $breakpoint_key ] = []; + } + + $inline_size_device_args[ $breakpoint_key ] = array_merge_recursive( + $inline_size_device_args[ $breakpoint_key ], + [ + 'max' => 100, + 'required' => false, + ] + ); + } + + if ( in_array( Breakpoints_Manager::BREAKPOINT_KEY_MOBILE_EXTRA, $active_breakpoint_keys, true ) ) { + $min_affected_device_value = Breakpoints_Manager::BREAKPOINT_KEY_MOBILE_EXTRA; + } else { + $min_affected_device_value = Breakpoints_Manager::BREAKPOINT_KEY_TABLET; + } + + $this->add_responsive_control( + '_inline_size', + [ + 'label' => esc_html__( 'Column Width', 'elementor' ) . ' (%)', + 'type' => Controls_Manager::NUMBER, + 'min' => 2, + 'max' => 98, + 'required' => true, + 'device_args' => $inline_size_device_args, + 'min_affected_device' => [ + Breakpoints_Manager::BREAKPOINT_KEY_DESKTOP => $min_affected_device_value, + Breakpoints_Manager::BREAKPOINT_KEY_LAPTOP => $min_affected_device_value, + Breakpoints_Manager::BREAKPOINT_KEY_TABLET_EXTRA => $min_affected_device_value, + Breakpoints_Manager::BREAKPOINT_KEY_TABLET => $min_affected_device_value, + Breakpoints_Manager::BREAKPOINT_KEY_MOBILE_EXTRA => $min_affected_device_value, + ], + 'selectors' => [ + '{{WRAPPER}}' => 'width: {{VALUE}}%', + ], + ] + ); + + $this->add_responsive_control( + 'content_position', + [ + 'label' => esc_html__( 'Vertical Alignment', 'elementor' ), + 'type' => Controls_Manager::SELECT, + 'default' => '', + 'options' => [ + '' => esc_html__( 'Default', 'elementor' ), + 'top' => esc_html__( 'Top', 'elementor' ), + 'center' => esc_html__( 'Middle', 'elementor' ), + 'bottom' => esc_html__( 'Bottom', 'elementor' ), + 'space-between' => esc_html__( 'Space Between', 'elementor' ), + 'space-around' => esc_html__( 'Space Around', 'elementor' ), + 'space-evenly' => esc_html__( 'Space Evenly', 'elementor' ), + ], + 'selectors_dictionary' => [ + 'top' => 'flex-start', + 'bottom' => 'flex-end', + ], + 'selectors' => [ + // TODO: The following line is for BC since 2.7.0 + '.elementor-bc-flex-widget {{WRAPPER}}.elementor-column .elementor-widget-wrap' => 'align-items: {{VALUE}}', + // This specificity is intended to make sure column css overwrites section css on vertical alignment (content_position) + '{{WRAPPER}}.elementor-column.elementor-element[data-element_type="column"] > .elementor-widget-wrap.elementor-element-populated' => 'align-content: {{VALUE}}; align-items: {{VALUE}};', + ], + ] + ); + + $this->add_responsive_control( + 'align', + [ + 'label' => esc_html__( 'Horizontal Alignment', 'elementor' ), + 'type' => Controls_Manager::SELECT, + 'default' => '', + 'options' => [ + '' => esc_html__( 'Default', 'elementor' ), + 'flex-start' => esc_html__( 'Start', 'elementor' ), + 'center' => esc_html__( 'Center', 'elementor' ), + 'flex-end' => esc_html__( 'End', 'elementor' ), + 'space-between' => esc_html__( 'Space Between', 'elementor' ), + 'space-around' => esc_html__( 'Space Around', 'elementor' ), + 'space-evenly' => esc_html__( 'Space Evenly', 'elementor' ), + ], + 'selectors' => [ + '{{WRAPPER}}.elementor-column > .elementor-widget-wrap' => 'justify-content: {{VALUE}}', + ], + ] + ); + + $this->add_responsive_control( + 'space_between_widgets', + [ + 'label' => esc_html__( 'Widgets Space', 'elementor' ) . ' (px)', + 'type' => Controls_Manager::NUMBER, + 'placeholder' => 20, + 'selectors' => [ + '{{WRAPPER}} > .elementor-widget-wrap > .elementor-widget:not(.elementor-widget__width-auto):not(.elementor-widget__width-initial):not(:last-child):not(.elementor-absolute)' => 'margin-bottom: {{VALUE}}px', //Need the full path for exclude the inner section + ], + ] + ); + + $possible_tags = [ + 'div', + 'header', + 'footer', + 'main', + 'article', + 'section', + 'aside', + 'nav', + ]; + + $options = [ + '' => esc_html__( 'Default', 'elementor' ), + ] + array_combine( $possible_tags, $possible_tags ); + + $this->add_control( + 'html_tag', + [ + 'label' => esc_html__( 'HTML Tag', 'elementor' ), + 'type' => Controls_Manager::SELECT, + 'options' => $options, + 'render_type' => 'none', + ] + ); + + $this->end_controls_section(); + + $this->start_controls_section( + 'section_style', + [ + 'label' => esc_html__( 'Background', 'elementor' ), + 'tab' => Controls_Manager::TAB_STYLE, + ] + ); + + $this->start_controls_tabs( 'tabs_background' ); + + $this->start_controls_tab( + 'tab_background_normal', + [ + 'label' => esc_html__( 'Normal', 'elementor' ), + ] + ); + + $this->add_group_control( + Group_Control_Background::get_type(), + [ + 'name' => 'background', + 'types' => [ 'classic', 'gradient', 'slideshow' ], + 'selector' => '{{WRAPPER}}:not(.elementor-motion-effects-element-type-background) > .elementor-widget-wrap, {{WRAPPER}} > .elementor-widget-wrap > .elementor-motion-effects-container > .elementor-motion-effects-layer', + 'fields_options' => [ + 'background' => [ + 'frontend_available' => true, + ], + 'image' => [ + 'background_lazyload' => [ + 'active' => true, + 'keys' => [ 'background_image', 'url' ], + 'selector' => '.elementor-element-populated', + ], + ], + ], + ] + ); + + $this->end_controls_tab(); + + $this->start_controls_tab( + 'tab_background_hover', + [ + 'label' => esc_html__( 'Hover', 'elementor' ), + ] + ); + + $this->add_group_control( + Group_Control_Background::get_type(), + [ + 'name' => 'background_hover', + 'selector' => '{{WRAPPER}}:hover > .elementor-element-populated', + ] + ); + + $this->add_control( + 'background_hover_transition', + [ + 'label' => esc_html__( 'Transition Duration', 'elementor' ) . ' (s)', + 'type' => Controls_Manager::SLIDER, + 'default' => [ + 'size' => 0.3, + ], + 'range' => [ + 'px' => [ + 'min' => 0, + 'max' => 3, + 'step' => 0.1, + ], + ], + 'render_type' => 'ui', + 'separator' => 'before', + ] + ); + + $this->end_controls_tab(); + + $this->end_controls_tabs(); + + $this->end_controls_section(); + + // Section Column Background Overlay. + $this->start_controls_section( + 'section_background_overlay', + [ + 'label' => esc_html__( 'Background Overlay', 'elementor' ), + 'tab' => Controls_Manager::TAB_STYLE, + 'condition' => [ + 'background_background' => [ 'classic', 'gradient' ], + ], + ] + ); + + $this->start_controls_tabs( 'tabs_background_overlay' ); + + $this->start_controls_tab( + 'tab_background_overlay_normal', + [ + 'label' => esc_html__( 'Normal', 'elementor' ), + ] + ); + + $this->add_group_control( + Group_Control_Background::get_type(), + [ + 'name' => 'background_overlay', + 'selector' => '{{WRAPPER}} > .elementor-element-populated > .elementor-background-overlay', + 'fields_options' => [ + 'image' => [ + 'background_lazyload' => [ + 'active' => true, + 'keys' => [ '_background_overlay', 'url' ], + 'selector' => '.elementor-background-overlay,', + ], + ], + ], + ] + ); + + $this->add_responsive_control( + 'background_overlay_opacity', + [ + 'label' => esc_html__( 'Opacity', 'elementor' ), + 'type' => Controls_Manager::SLIDER, + 'default' => [ + 'size' => .5, + ], + 'range' => [ + 'px' => [ + 'max' => 1, + 'step' => 0.01, + ], + ], + 'selectors' => [ + '{{WRAPPER}} > .elementor-element-populated > .elementor-background-overlay' => 'opacity: {{SIZE}};', + ], + 'condition' => [ + 'background_overlay_background' => [ 'classic', 'gradient' ], + ], + ] + ); + + $this->add_group_control( + Group_Control_Css_Filter::get_type(), + [ + 'name' => 'css_filters', + 'selector' => '{{WRAPPER}} > .elementor-element-populated > .elementor-background-overlay', + ] + ); + + $this->add_control( + 'overlay_blend_mode', + [ + 'label' => esc_html__( 'Blend Mode', 'elementor' ), + 'type' => Controls_Manager::SELECT, + 'options' => [ + '' => esc_html__( 'Normal', 'elementor' ), + 'multiply' => esc_html__( 'Multiply', 'elementor' ), + 'screen' => esc_html__( 'Screen', 'elementor' ), + 'overlay' => esc_html__( 'Overlay', 'elementor' ), + 'darken' => esc_html__( 'Darken', 'elementor' ), + 'lighten' => esc_html__( 'Lighten', 'elementor' ), + 'color-dodge' => esc_html__( 'Color Dodge', 'elementor' ), + 'saturation' => esc_html__( 'Saturation', 'elementor' ), + 'color' => esc_html__( 'Color', 'elementor' ), + 'difference' => esc_html__( 'Difference', 'elementor' ), + 'exclusion' => esc_html__( 'Exclusion', 'elementor' ), + 'hue' => esc_html__( 'Hue', 'elementor' ), + 'luminosity' => esc_html__( 'Luminosity', 'elementor' ), + ], + 'selectors' => [ + '{{WRAPPER}} > .elementor-element-populated > .elementor-background-overlay' => 'mix-blend-mode: {{VALUE}}', + ], + ] + ); + + $this->end_controls_tab(); + + $this->start_controls_tab( + 'tab_background_overlay_hover', + [ + 'label' => esc_html__( 'Hover', 'elementor' ), + ] + ); + + $this->add_group_control( + Group_Control_Background::get_type(), + [ + 'name' => 'background_overlay_hover', + 'selector' => '{{WRAPPER}}:hover > .elementor-element-populated > .elementor-background-overlay', + ] + ); + + $this->add_responsive_control( + 'background_overlay_hover_opacity', + [ + 'label' => esc_html__( 'Opacity', 'elementor' ), + 'type' => Controls_Manager::SLIDER, + 'default' => [ + 'size' => .5, + ], + 'range' => [ + 'px' => [ + 'max' => 1, + 'step' => 0.01, + ], + ], + 'selectors' => [ + '{{WRAPPER}}:hover > .elementor-element-populated > .elementor-background-overlay' => 'opacity: {{SIZE}};', + ], + 'condition' => [ + 'background_overlay_hover_background' => [ 'classic', 'gradient' ], + ], + ] + ); + + $this->add_group_control( + Group_Control_Css_Filter::get_type(), + [ + 'name' => 'css_filters_hover', + 'selector' => '{{WRAPPER}}:hover > .elementor-element-populated > .elementor-background-overlay', + ] + ); + + $this->add_control( + 'background_overlay_hover_transition', + [ + 'label' => esc_html__( 'Transition Duration', 'elementor' ) . ' (s)', + 'type' => Controls_Manager::SLIDER, + 'default' => [ + 'size' => 0.3, + ], + 'range' => [ + 'px' => [ + 'min' => 0, + 'max' => 3, + 'step' => 0.1, + ], + ], + 'render_type' => 'ui', + 'separator' => 'before', + ] + ); + + $this->end_controls_tab(); + + $this->end_controls_tabs(); + + $this->end_controls_section(); + + $this->start_controls_section( + 'section_border', + [ + 'label' => esc_html__( 'Border', 'elementor' ), + 'tab' => Controls_Manager::TAB_STYLE, + ] + ); + + $this->start_controls_tabs( 'tabs_border' ); + + $this->start_controls_tab( + 'tab_border_normal', + [ + 'label' => esc_html__( 'Normal', 'elementor' ), + ] + ); + + $this->add_group_control( + Group_Control_Border::get_type(), + [ + 'name' => 'border', + 'selector' => '{{WRAPPER}} > .elementor-element-populated', + ] + ); + + $this->add_responsive_control( + 'border_radius', + [ + 'label' => esc_html__( 'Border Radius', 'elementor' ), + 'type' => Controls_Manager::DIMENSIONS, + 'size_units' => [ 'px', '%', 'em', 'rem', 'custom' ], + 'selectors' => [ + '{{WRAPPER}} > .elementor-element-populated, {{WRAPPER}} > .elementor-element-populated > .elementor-background-overlay, {{WRAPPER}} > .elementor-background-slideshow' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};', + ], + ] + ); + + $this->add_group_control( + Group_Control_Box_Shadow::get_type(), + [ + 'name' => 'box_shadow', + 'selector' => '{{WRAPPER}} > .elementor-element-populated', + ] + ); + + $this->end_controls_tab(); + + $this->start_controls_tab( + 'tab_border_hover', + [ + 'label' => esc_html__( 'Hover', 'elementor' ), + ] + ); + + $this->add_group_control( + Group_Control_Border::get_type(), + [ + 'name' => 'border_hover', + 'selector' => '{{WRAPPER}}:hover > .elementor-element-populated', + ] + ); + + $this->add_responsive_control( + 'border_radius_hover', + [ + 'label' => esc_html__( 'Border Radius', 'elementor' ), + 'type' => Controls_Manager::DIMENSIONS, + 'size_units' => [ 'px', '%', 'em', 'rem', 'custom' ], + 'selectors' => [ + '{{WRAPPER}}:hover > .elementor-element-populated, {{WRAPPER}}:hover > .elementor-element-populated > .elementor-background-overlay' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};', + ], + ] + ); + + $this->add_group_control( + Group_Control_Box_Shadow::get_type(), + [ + 'name' => 'box_shadow_hover', + 'selector' => '{{WRAPPER}}:hover > .elementor-element-populated', + ] + ); + + $this->add_control( + 'border_hover_transition', + [ + 'label' => esc_html__( 'Transition Duration', 'elementor' ) . ' (s)', + 'type' => Controls_Manager::SLIDER, + 'separator' => 'before', + 'default' => [ + 'size' => 0.3, + ], + 'range' => [ + 'px' => [ + 'min' => 0, + 'max' => 3, + 'step' => 0.1, + ], + ], + 'conditions' => [ + 'relation' => 'or', + 'terms' => [ + [ + 'name' => 'background_background', + 'operator' => '!==', + 'value' => '', + ], + [ + 'name' => 'border_border', + 'operator' => '!==', + 'value' => '', + ], + ], + ], + 'selectors' => [ + '{{WRAPPER}} > .elementor-element-populated' => 'transition: background {{background_hover_transition.SIZE}}s, border {{SIZE}}s, border-radius {{SIZE}}s, box-shadow {{SIZE}}s', + '{{WRAPPER}} > .elementor-element-populated > .elementor-background-overlay' => 'transition: background {{background_overlay_hover_transition.SIZE}}s, border-radius {{SIZE}}s, opacity {{background_overlay_hover_transition.SIZE}}s', + ], + ] + ); + + $this->end_controls_tab(); + + $this->end_controls_tabs(); + + $this->end_controls_section(); + + // Section Typography. + $this->start_controls_section( + 'section_typo', + [ + 'label' => esc_html__( 'Typography', 'elementor' ), + 'type' => Controls_Manager::SECTION, + 'tab' => Controls_Manager::TAB_STYLE, + ] + ); + + $this->add_control( + 'heading_color', + [ + 'label' => esc_html__( 'Heading Color', 'elementor' ), + 'type' => Controls_Manager::COLOR, + 'default' => '', + 'selectors' => [ + '{{WRAPPER}} .elementor-element-populated .elementor-heading-title' => 'color: {{VALUE}};', + ], + ] + ); + + $this->add_control( + 'color_text', + [ + 'label' => esc_html__( 'Text Color', 'elementor' ), + 'type' => Controls_Manager::COLOR, + 'default' => '', + 'selectors' => [ + '{{WRAPPER}} > .elementor-element-populated' => 'color: {{VALUE}};', + ], + ] + ); + + $this->add_control( + 'color_link', + [ + 'label' => esc_html__( 'Link Color', 'elementor' ), + 'type' => Controls_Manager::COLOR, + 'default' => '', + 'selectors' => [ + '{{WRAPPER}} .elementor-element-populated a' => 'color: {{VALUE}};', + ], + ] + ); + + $this->add_control( + 'color_link_hover', + [ + 'label' => esc_html__( 'Link Hover Color', 'elementor' ), + 'type' => Controls_Manager::COLOR, + 'default' => '', + 'selectors' => [ + '{{WRAPPER}} .elementor-element-populated a:hover' => 'color: {{VALUE}};', + ], + ] + ); + + $this->add_responsive_control( + 'text_align', + [ + 'label' => esc_html__( 'Text Align', 'elementor' ), + 'type' => Controls_Manager::CHOOSE, + 'options' => [ + 'left' => [ + 'title' => esc_html__( 'Left', 'elementor' ), + 'icon' => 'eicon-text-align-left', + ], + 'center' => [ + 'title' => esc_html__( 'Center', 'elementor' ), + 'icon' => 'eicon-text-align-center', + ], + 'right' => [ + 'title' => esc_html__( 'Right', 'elementor' ), + 'icon' => 'eicon-text-align-right', + ], + 'justify' => [ + 'title' => esc_html__( 'Justified', 'elementor' ), + 'icon' => 'eicon-text-align-justify', + ], + ], + 'selectors' => [ + '{{WRAPPER}} > .elementor-element-populated' => 'text-align: {{VALUE}};', + ], + ] + ); + + $this->end_controls_section(); + + // Section Advanced. + $this->start_controls_section( + 'section_advanced', + [ + 'label' => esc_html__( 'Advanced', 'elementor' ), + 'type' => Controls_Manager::SECTION, + 'tab' => Controls_Manager::TAB_ADVANCED, + ] + ); + + $this->add_responsive_control( + 'margin', + [ + 'label' => esc_html__( 'Margin', 'elementor' ), + 'type' => Controls_Manager::DIMENSIONS, + 'size_units' => [ 'px', '%', 'em', 'rem', 'vw', 'custom' ], + 'selectors' => [ + '{{WRAPPER}} > .elementor-element-populated' => 'margin: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}}; + --e-column-margin-right: {{RIGHT}}{{UNIT}}; --e-column-margin-left: {{LEFT}}{{UNIT}};', + ], + ] + ); + + $this->add_responsive_control( + 'padding', + [ + 'label' => esc_html__( 'Padding', 'elementor' ), + 'type' => Controls_Manager::DIMENSIONS, + 'size_units' => [ 'px', '%', 'em', 'rem', 'vw', 'custom' ], + 'selectors' => [ + '{{WRAPPER}} > .elementor-element-populated' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};', + ], + ] + ); + + $this->add_responsive_control( + 'z_index', + [ + 'label' => esc_html__( 'Z-Index', 'elementor' ), + 'type' => Controls_Manager::NUMBER, + 'min' => 0, + 'selectors' => [ + '{{WRAPPER}}' => 'z-index: {{VALUE}};', + ], + ] + ); + + $this->add_control( + '_element_id', + [ + 'label' => esc_html__( 'CSS ID', 'elementor' ), + 'type' => Controls_Manager::TEXT, + 'default' => '', + 'ai' => [ + 'active' => false, + ], + 'dynamic' => [ + 'active' => true, + ], + 'title' => esc_html__( 'Add your custom id WITHOUT the Pound key. e.g: my-id', 'elementor' ), + 'style_transfer' => false, + 'classes' => 'elementor-control-direction-ltr', + ] + ); + + $this->add_control( + 'css_classes', + [ + 'label' => esc_html__( 'CSS Classes', 'elementor' ), + 'type' => Controls_Manager::TEXT, + 'default' => '', + 'ai' => [ + 'active' => false, + ], + 'dynamic' => [ + 'active' => true, + ], + 'prefix_class' => '', + 'title' => esc_html__( 'Add your custom class WITHOUT the dot. e.g: my-class', 'elementor' ), + 'classes' => 'elementor-control-direction-ltr', + ] + ); + + Plugin::$instance->controls_manager->add_display_conditions_controls( $this ); + + // TODO: Backward comparability for deprecated controls + $this->add_control( + 'screen_sm', + [ + 'type' => Controls_Manager::HIDDEN, + ] + ); + + $this->add_control( + 'screen_sm_width', + [ + 'type' => Controls_Manager::HIDDEN, + 'condition' => [ + 'screen_sm' => [ 'custom' ], + ], + 'prefix_class' => 'elementor-sm-', + ] + ); + // END Backward comparability + + $this->end_controls_section(); + + $this->start_controls_section( + 'section_effects', + [ + 'label' => esc_html__( 'Motion Effects', 'elementor' ), + 'tab' => Controls_Manager::TAB_ADVANCED, + ] + ); + + Plugin::$instance->controls_manager->add_motion_effects_promotion_control( $this ); + + $this->add_responsive_control( + 'animation', + [ + 'label' => esc_html__( 'Entrance Animation', 'elementor' ), + 'type' => Controls_Manager::ANIMATION, + 'frontend_available' => true, + ] + ); + + $this->add_control( + 'animation_duration', + [ + 'label' => esc_html__( 'Animation Duration', 'elementor' ), + 'type' => Controls_Manager::SELECT, + 'default' => '', + 'options' => [ + 'slow' => esc_html__( 'Slow', 'elementor' ), + '' => esc_html__( 'Normal', 'elementor' ), + 'fast' => esc_html__( 'Fast', 'elementor' ), + ], + 'prefix_class' => 'animated-', + 'condition' => [ + 'animation!' => '', + ], + ] + ); + + $this->add_control( + 'animation_delay', + [ + 'label' => esc_html__( 'Animation Delay', 'elementor' ) . ' (ms)', + 'type' => Controls_Manager::NUMBER, + 'default' => '', + 'min' => 0, + 'step' => 100, + 'condition' => [ + 'animation!' => '', + ], + 'render_type' => 'none', + 'frontend_available' => true, + ] + ); + + $this->end_controls_section(); + + $this->start_controls_section( + '_section_responsive', + [ + 'label' => esc_html__( 'Responsive', 'elementor' ), + 'tab' => Controls_Manager::TAB_ADVANCED, + ] + ); + + $this->add_control( + 'responsive_description', + [ + 'raw' => sprintf( + /* translators: 1: Link open tag, 2: Link close tag. */ + esc_html__( 'Responsive visibility will take effect only on %1$s preview mode %2$s or live page, and not while editing in Elementor.', 'elementor' ), + '', + '' + ), + 'type' => Controls_Manager::RAW_HTML, + 'content_classes' => 'elementor-descriptor', + ] + ); + + $this->add_hidden_device_controls(); + + $this->end_controls_section(); + + Plugin::$instance->controls_manager->add_custom_attributes_controls( $this ); + + Plugin::$instance->controls_manager->add_custom_css_controls( $this ); + } + + /** + * Render column output in the editor. + * + * Used to generate the live preview, using a Backbone JavaScript template. + * + * @since 2.9.0 + * @access protected + */ + protected function content_template() { + ?> +
    +
    +
    + get_settings_for_display(); + + $has_background_overlay = in_array( $settings['background_overlay_background'], [ 'classic', 'gradient' ], true ) || + in_array( $settings['background_overlay_hover_background'], [ 'classic', 'gradient' ], true ); + + $column_wrap_classes = [ 'elementor-widget-wrap' ]; + + if ( $this->get_children() ) { + $column_wrap_classes[] = 'elementor-element-populated'; + } + + $this->add_render_attribute( [ + '_widget_wrapper' => [ + 'class' => $column_wrap_classes, + ], + '_background_overlay' => [ + 'class' => [ 'elementor-background-overlay' ], + ], + ] ); + ?> + <get_html_tag(); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped + ?> print_render_attribute_string( '_wrapper' ); ?>> +
    print_render_attribute_string( '_widget_wrapper' ); ?>> + +
    print_render_attribute_string( '_background_overlay' ); ?>>
    + + +
    + get_html_tag(); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?>> + get_data( 'isInner' ); + + $column_type = ! empty( $is_inner ) ? 'inner' : 'top'; + + $settings = $this->get_settings(); + + $this->add_render_attribute( + '_wrapper', 'class', [ + 'elementor-column', + 'elementor-col-' . $settings['_column_size'], + 'elementor-' . $column_type . '-column', + ] + ); + + parent::add_render_attributes(); + } + + /** + * Get default child type. + * + * Retrieve the column child type based on element data. + * + * @since 1.0.0 + * @access protected + * + * @param array $element_data Element ID. + * + * @return Element_Base|false Column default child type. + */ + protected function _get_default_child_type( array $element_data ) { + if ( 'section' === $element_data['elType'] ) { + return Plugin::$instance->elements_manager->get_element_types( 'section' ); + } + + if ( 'container' === $element_data['elType'] ) { + return Plugin::$instance->elements_manager->get_element_types( 'container' ); + } + + // If the element doesn't exists (disabled element, experiment, etc.), return false to prevent errors. + if ( empty( $element_data['widgetType'] ) ) { + return false; + } + + return Plugin::$instance->widgets_manager->get_widget_types( $element_data['widgetType'] ); + } + + /** + * Get HTML tag. + * + * Retrieve the column element HTML tag. + * + * @since 1.5.3 + * @access private + * + * @return string Column HTML tag. + */ + private function get_html_tag() { + $html_tag = $this->get_settings( 'html_tag' ); + + if ( empty( $html_tag ) ) { + $html_tag = 'div'; + } + + return Utils::validate_html_tag( $html_tag ); + } +} diff --git a/wp-content/plugins/elementor/includes/elements/container.php b/wp-content/plugins/elementor/includes/elements/container.php new file mode 100644 index 0000000..b1390e5 --- /dev/null +++ b/wp-content/plugins/elementor/includes/elements/container.php @@ -0,0 +1,1855 @@ +active_kit = Plugin::$instance->kits_manager->get_active_kit(); + $this->logical_dimensions_inline_start = is_rtl() ? '{{RIGHT}}{{UNIT}}' : '{{LEFT}}{{UNIT}}'; + $this->logical_dimensions_inline_end = is_rtl() ? '{{LEFT}}{{UNIT}}' : '{{RIGHT}}{{UNIT}}'; + } + + /** + * Get the element type. + * + * @return string + */ + public static function get_type() { + return 'container'; + } + + /** + * Get the element name. + * + * @return string + */ + public function get_name() { + return 'container'; + } + + /** + * Get the element display name. + * + * @return string + */ + public function get_title() { + return esc_html__( 'Container', 'elementor' ); + } + + /** + * Get the element display icon. + * + * @return string + */ + public function get_icon() { + return 'eicon-container'; + } + + public function get_keywords() { + $keywords = [ 'Container', 'Flex', 'Flexbox', 'Flexbox Container', 'Layout' ]; + + if ( Plugin::$instance->experiments->is_feature_active( 'container_grid' ) ) { + array_push( $keywords, 'Grid', 'Grid Container', 'CSS Grid' ); + } + + return $keywords; + } + + public function get_panel_presets() { + return [ + 'container_grid' => [ + 'replacements' => [ + 'name' => 'container_grid', + 'controls' => [ + 'container_type' => [ 'default' => 'grid' ], + ], + 'title' => esc_html__( 'Grid', 'elementor' ), + 'icon' => 'eicon-container-grid', + 'custom' => [ + 'isPreset' => true, + 'originalWidget' => $this->get_name(), + 'presetWidget' => 'container_grid', + 'preset_settings' => [ + 'container_type' => 'grid', + 'presetTitle' => esc_html__( 'Grid', 'elementor' ), + 'presetIcon' => 'eicon-container-grid', + ], + ], + ], + ], + ]; + } + + /** + * Override the render attributes to add a custom wrapper class. + * + * @return void + */ + protected function add_render_attributes() { + parent::add_render_attributes(); + + $is_nested_class_name = $this->get_data( 'isInner' ) ? 'e-child' : 'e-parent'; + + $this->add_render_attribute( '_wrapper', [ + 'class' => [ + 'e-con', + $is_nested_class_name, + ], + ] ); + + if ( $this->get_data( 'isInner' ) ) { + return; + } + + // Todo: Remove in version 3.21.0: https://elementor.atlassian.net/browse/ED-11884. + // Remove together with support for physical properties inside the Mega Menu & Nested Carousel widgets. + $this->add_render_attribute( '_wrapper', [ + 'data-core-v316-plus' => 'true', + ] ); + } + + /** + * Override the initial element config to display the Container in the panel. + * + * @return array + */ + protected function get_initial_config() { + $config = parent::get_initial_config(); + + $config['controls'] = $this->get_controls(); + $config['tabs_controls'] = $this->get_tabs_controls(); + $config['show_in_panel'] = true; + $config['categories'] = [ 'layout' ]; + + return $config; + } + + /** + * Render the element JS template. + * + * @return void + */ + protected function content_template() { + ?> + <# if ( 'boxed' === settings.content_width ) { #> +
    + <# + } + if ( settings.background_video_link ) { + let videoAttributes = 'autoplay muted playsinline'; + + if ( ! settings.background_play_once ) { + videoAttributes += ' loop'; + } + + view.addRenderAttribute( 'background-video-container', 'class', 'elementor-background-video-container' ); + + if ( ! settings.background_play_on_mobile ) { + view.addRenderAttribute( 'background-video-container', 'class', 'elementor-hidden-phone' ); + } + #> +
    +
    + +
    + <# } #> +
    +
    + <# if ( 'boxed' === settings.content_width ) { #> +
    + <# } #> + get_settings_for_display(); + + if ( 'video' !== $settings['background_background'] ) { + return; + } + + if ( ! $settings['background_video_link'] ) { + return; + } + + $video_properties = Embed::get_video_properties( $settings['background_video_link'] ); + + $this->add_render_attribute( 'background-video-container', 'class', 'elementor-background-video-container' ); + + if ( ! $settings['background_play_on_mobile'] ) { + $this->add_render_attribute( 'background-video-container', 'class', 'elementor-hidden-phone' ); + } + + ?>
    print_render_attribute_string( 'background-video-container' ); ?>> + +
    + + + +
    get_active_settings(); + $base_setting_key = "shape_divider_$side"; + $negative = ! empty( $settings[ $base_setting_key . '_negative' ] ); + $shape_path = Shapes::get_shape_path( $settings[ $base_setting_key ], $negative ); + + if ( ! is_file( $shape_path ) || ! is_readable( $shape_path ) ) { + return; + } + ?> +
    + +
    + get_settings( 'html_tag' ); + + if ( empty( $html_tag ) ) { + $html_tag = 'div'; + } + + Utils::print_validated_html_tag( $html_tag ); + } + + /** + * Before rendering the container content. (Print the opening tag, etc.) + * + * @return void + */ + public function before_render() { + $settings = $this->get_settings_for_display(); + $link = $settings['link']; + + if ( ! empty( $link['url'] ) ) { + $this->add_link_attributes( '_wrapper', $link ); + } + + ?><print_html_tag(); ?> print_render_attribute_string( '_wrapper' ); ?>> + is_boxed_container( $settings ) ) { ?> +
    + render_video_background(); + + if ( ! empty( $settings['shape_divider_top'] ) ) { + $this->render_shape_divider( 'top' ); + } + + if ( ! empty( $settings['shape_divider_bottom'] ) ) { + $this->render_shape_divider( 'bottom' ); + } + } + + /** + * After rendering the Container content. (Print the closing tag, etc.) + * + * @return void + */ + public function after_render() { + $settings = $this->get_settings_for_display(); + if ( $this->is_boxed_container( $settings ) ) { ?> +
    + + print_html_tag(); ?>> + elements_manager->get_element_types( 'container' ); + } + + return Plugin::$instance->widgets_manager->get_widget_types( $element_data['widgetType'] ); + } + + protected function get_flex_control_options( $is_container_grid_active ) { + $flex_control_options = [ + 'name' => 'flex', + 'selector' => '{{WRAPPER}}', + 'fields_options' => [ + 'gap' => [ + 'label' => esc_html__( 'Gaps', 'elementor' ), + 'device_args' => [ + Breakpoints_Manager::BREAKPOINT_KEY_DESKTOP => [ + // Use the default gap from the kit as a placeholder. + 'placeholder' => $this->active_kit->get_settings_for_display( 'space_between_widgets' ), + ], + ], + ], + ], + ]; + + if ( $is_container_grid_active ) { + $flex_control_options['condition'] = [ + 'container_type' => 'flex', + ]; + } + + return $flex_control_options; + } + + protected function get_container_type_control_options( $is_container_grid_active ) { + if ( $is_container_grid_active ) { + return [ + 'label' => esc_html__( 'Container Layout', 'elementor' ), + 'type' => Controls_Manager::SELECT, + 'default' => 'flex', + 'prefix_class' => 'e-', + 'options' => [ + 'flex' => esc_html__( 'Flexbox', 'elementor' ), + 'grid' => esc_html__( 'Grid', 'elementor' ), + ], + 'selectors' => [ + '{{WRAPPER}}' => '--display: {{VALUE}}', + ], + 'separator' => 'after', + 'editor_available' => true, + ]; + } + + // TODO: This can be removed when the 'Container Grid Experiment' is merged. + return [ + 'label' => esc_html__( 'Container Layout', 'elementor' ), + 'type' => Controls_Manager::HIDDEN, + 'render_type' => 'none', + 'default' => 'flex', + 'prefix_class' => 'e-', + 'selectors' => [ + '{{WRAPPER}}' => '--display: {{VALUE}}', + ], + 'separator' => 'after', + ]; + } + + /** + * Register the Container's layout controls. + * + * @return void + */ + protected function register_container_layout_controls() { + $this->start_controls_section( + 'section_layout_container', + [ + 'label' => esc_html__( 'Container', 'elementor' ), + 'tab' => Controls_Manager::TAB_LAYOUT, + ] + ); + + $active_breakpoints = Plugin::$instance->breakpoints->get_active_breakpoints(); + + if ( array_key_exists( Breakpoints_Manager::BREAKPOINT_KEY_MOBILE_EXTRA, $active_breakpoints ) ) { + $min_affected_device = Breakpoints_Manager::BREAKPOINT_KEY_MOBILE_EXTRA; + } else { + $min_affected_device = Breakpoints_Manager::BREAKPOINT_KEY_TABLET; + } + + $is_container_grid_active = Plugin::$instance->experiments->is_feature_active( 'container_grid' ); + + $this->add_control( + 'container_type', + $this->get_container_type_control_options( $is_container_grid_active ) + ); + + $this->add_control( + 'content_width', + [ + 'label' => esc_html__( 'Content Width', 'elementor' ), + 'type' => Controls_Manager::SELECT, + 'default' => 'boxed', + 'options' => [ + 'boxed' => esc_html__( 'Boxed', 'elementor' ), + 'full' => esc_html__( 'Full Width', 'elementor' ), + ], + 'render_type' => 'template', + 'prefix_class' => 'e-con-', + 'editor_available' => true, + ] + ); + + $width_control_settings = [ + 'label' => esc_html__( 'Width', 'elementor' ), + 'type' => Controls_Manager::SLIDER, + 'size_units' => [ 'px', '%', 'em', 'rem', 'vw', 'custom' ], + 'range' => [ + 'px' => [ + 'min' => 500, + 'max' => 1600, + ], + ], + 'default' => [ + 'unit' => '%', + ], + 'min_affected_device' => [ + Breakpoints_Manager::BREAKPOINT_KEY_DESKTOP => $min_affected_device, + Breakpoints_Manager::BREAKPOINT_KEY_LAPTOP => $min_affected_device, + Breakpoints_Manager::BREAKPOINT_KEY_TABLET_EXTRA => $min_affected_device, + Breakpoints_Manager::BREAKPOINT_KEY_TABLET => $min_affected_device, + Breakpoints_Manager::BREAKPOINT_KEY_MOBILE_EXTRA => $min_affected_device, + ], + ]; + + $this->add_responsive_control( + 'width', + array_merge( $width_control_settings, [ + 'selectors' => [ + '{{WRAPPER}}' => '--width: {{SIZE}}{{UNIT}};', + ], + 'condition' => [ + 'content_width' => 'full', + ], + 'device_args' => [ + Breakpoints_Manager::BREAKPOINT_KEY_DESKTOP => [ + 'placeholder' => [ + 'size' => 100, + 'unit' => '%', + ], + ], + Breakpoints_Manager::BREAKPOINT_KEY_MOBILE => [ + // The mobile width is not inherited from the higher breakpoint width controls. + 'placeholder' => [ + 'size' => 100, + 'unit' => '%', + ], + ], + ], + ] ) + ); + + $this->add_responsive_control( + 'boxed_width', + array_merge( $width_control_settings, [ + 'selectors' => [ + '{{WRAPPER}}' => '--content-width: {{SIZE}}{{UNIT}};', + ], + 'condition' => [ + 'content_width' => 'boxed', + ], + 'default' => [ + 'unit' => 'px', + ], + 'device_args' => [ + Breakpoints_Manager::BREAKPOINT_KEY_DESKTOP => [ + // Use the default width from the kit as a placeholder. + 'placeholder' => $this->active_kit->get_settings_for_display( 'container_width' ), + ], + Breakpoints_Manager::BREAKPOINT_KEY_MOBILE => [ + // The mobile width is not inherited from the higher breakpoint width controls. + 'placeholder' => [ + 'size' => 100, + 'unit' => '%', + ], + ], + ], + ] ) + ); + + $this->add_responsive_control( + 'min_height', + [ + 'label' => esc_html__( 'Min Height', 'elementor' ), + 'type' => Controls_Manager::SLIDER, + 'size_units' => [ 'px', 'em', 'rem', 'vh', 'custom' ], + 'range' => [ + 'px' => [ + 'max' => 1440, + ], + ], + 'description' => sprintf( + esc_html__( 'To achieve full height Container use %s.', 'elementor' ), + '100vh' + ), + 'selectors' => [ + '{{WRAPPER}}' => '--min-height: {{SIZE}}{{UNIT}};', + ], + ] + ); + + $this->add_group_control( + Group_Control_Flex_Container::get_type(), + $this->get_flex_control_options( $is_container_grid_active ) + ); + + if ( $is_container_grid_active ) { + $this->add_group_control( + Group_Control_Grid_Container::get_type(), + [ + 'name' => 'grid', + 'selector' => '{{WRAPPER}}', + 'condition' => [ + 'container_type' => [ 'grid' ], + ], + ] + ); + } + + $this->end_controls_section(); + } + + /** + * Register the Container's items layout controls. + * + * @return void + */ + protected function register_items_layout_controls() { + $this->start_controls_section( + 'section_layout_additional_options', + [ + 'label' => esc_html__( 'Additional Options', 'elementor' ), + 'tab' => Controls_Manager::TAB_LAYOUT, + ] + ); + + $this->add_control( + 'overflow', + [ + 'label' => esc_html__( 'Overflow', 'elementor' ), + 'type' => Controls_Manager::SELECT, + 'default' => '', + 'options' => [ + '' => esc_html__( 'Default', 'elementor' ), + 'hidden' => esc_html__( 'Hidden', 'elementor' ), + 'auto' => esc_html__( 'Auto', 'elementor' ), + ], + 'selectors' => [ + '{{WRAPPER}}' => '--overflow: {{VALUE}}', + ], + ] + ); + + $possible_tags = [ + 'div' => 'div', + 'header' => 'header', + 'footer' => 'footer', + 'main' => 'main', + 'article' => 'article', + 'section' => 'section', + 'aside' => 'aside', + 'nav' => 'nav', + 'a' => 'a ' . esc_html__( '(link)', 'elementor' ), + ]; + + $options = [ + '' => esc_html__( 'Default', 'elementor' ), + ] + $possible_tags; + + $this->add_control( + 'html_tag', + [ + 'label' => esc_html__( 'HTML Tag', 'elementor' ), + 'type' => Controls_Manager::SELECT, + 'options' => $options, + ] + ); + + $this->add_control( + 'link_note', + [ + 'type' => Controls_Manager::ALERT, + 'alert_type' => 'warning', + 'content' => esc_html__( 'Don’t add links to elements nested in this container - it will break the layout.', 'elementor' ), + 'condition' => [ + 'html_tag' => 'a', + ], + ] + ); + + $this->add_control( + 'link', + [ + 'label' => esc_html__( 'Link', 'elementor' ), + 'type' => Controls_Manager::URL, + 'dynamic' => [ + 'active' => true, + ], + 'condition' => [ + 'html_tag' => 'a', + ], + ] + ); + + $this->end_controls_section(); + } + + /** + * Register the Container's layout tab. + * + * @return void + */ + protected function register_layout_tab() { + $this->register_container_layout_controls(); + + $this->register_items_layout_controls(); + } + + /** + * Register the Container's background controls. + * + * @return void + */ + protected function register_background_controls() { + $this->start_controls_section( + 'section_background', + [ + 'label' => esc_html__( 'Background', 'elementor' ), + 'tab' => Controls_Manager::TAB_STYLE, + ] + ); + + $this->start_controls_tabs( 'tabs_background' ); + + /** + * Normal. + */ + $this->start_controls_tab( + 'tab_background_normal', + [ + 'label' => esc_html__( 'Normal', 'elementor' ), + ] + ); + + $this->add_group_control( + Group_Control_Background::get_type(), + [ + 'name' => 'background', + 'types' => [ 'classic', 'gradient', 'video', 'slideshow' ], + 'fields_options' => [ + 'background' => [ + 'frontend_available' => true, + ], + 'image' => [ + 'background_lazyload' => [ + 'active' => true, + 'keys' => [ 'background_image', 'url' ], + ], + ], + ], + ] + ); + + $this->end_controls_tab(); + + /** + * Hover. + */ + $this->start_controls_tab( + 'tab_background_hover', + [ + 'label' => esc_html__( 'Hover', 'elementor' ), + ] + ); + + $this->add_group_control( + Group_Control_Background::get_type(), + [ + 'name' => 'background_hover', + 'selector' => '{{WRAPPER}}:hover', + ] + ); + + $this->add_control( + 'background_hover_transition', + [ + 'label' => esc_html__( 'Transition Duration', 'elementor' ) . ' (s)', + 'type' => Controls_Manager::SLIDER, + 'default' => [ + 'size' => 0.3, + ], + 'range' => [ + 'px' => [ + 'min' => 0, + 'max' => 3, + 'step' => 0.1, + ], + ], + 'render_type' => 'ui', + 'separator' => 'before', + 'selectors' => [ + '{{WRAPPER}}' => '--background-transition: {{SIZE}}s;', + ], + ] + ); + + $this->end_controls_tab(); + + $this->end_controls_tabs(); + + $this->end_controls_section(); + } + + /** + * Register the Container's background overlay controls. + * + * @return void + */ + protected function register_background_overlay_controls() { + $this->start_controls_section( + 'section_background_overlay', + [ + 'label' => esc_html__( 'Background Overlay', 'elementor' ), + 'tab' => Controls_Manager::TAB_STYLE, + ] + ); + + $this->start_controls_tabs( 'tabs_background_overlay' ); + + /** + * Normal. + */ + $this->start_controls_tab( + 'tab_background_overlay', + [ + 'label' => esc_html__( 'Normal', 'elementor' ), + ] + ); + + $background_overlay_selector = '{{WRAPPER}}::before, {{WRAPPER}} > .elementor-background-video-container::before, {{WRAPPER}} > .e-con-inner > .elementor-background-video-container::before, {{WRAPPER}} > .elementor-background-slideshow::before, {{WRAPPER}} > .e-con-inner > .elementor-background-slideshow::before, {{WRAPPER}} > .elementor-motion-effects-container > .elementor-motion-effects-layer::before'; + + $this->add_group_control( + Group_Control_Background::get_type(), + [ + 'name' => 'background_overlay', + 'selector' => $background_overlay_selector, + 'fields_options' => [ + 'background' => [ + 'selectors' => [ + // Hack to set the `::before` content in order to render it only when there is a background overlay. + $background_overlay_selector => '--background-overlay: \'\';', + ], + ], + 'image' => [ + 'background_lazyload' => [ + 'active' => true, + 'keys' => [ 'background_overlay_image', 'url' ], + ], + ], + ], + ] + ); + + $this->add_responsive_control( + 'background_overlay_opacity', + [ + 'label' => esc_html__( 'Opacity', 'elementor' ), + 'type' => Controls_Manager::SLIDER, + 'default' => [ + 'size' => .5, + ], + 'range' => [ + 'px' => [ + 'max' => 1, + 'step' => 0.01, + ], + ], + 'selectors' => [ + '{{WRAPPER}}' => '--overlay-opacity: {{SIZE}};', + ], + 'condition' => [ + 'background_overlay_background' => [ 'classic', 'gradient' ], + ], + ] + ); + + $this->add_group_control( + Group_Control_Css_Filter::get_type(), + [ + 'name' => 'css_filters', + 'selector' => '{{WRAPPER}}::before', + 'conditions' => [ + 'relation' => 'or', + 'terms' => [ + [ + 'name' => 'background_overlay_image[url]', + 'operator' => '!==', + 'value' => '', + ], + [ + 'name' => 'background_overlay_color', + 'operator' => '!==', + 'value' => '', + ], + ], + ], + ] + ); + + $this->add_control( + 'overlay_blend_mode', + [ + 'label' => esc_html__( 'Blend Mode', 'elementor' ), + 'type' => Controls_Manager::SELECT, + 'options' => [ + '' => esc_html__( 'Normal', 'elementor' ), + 'multiply' => esc_html__( 'Multiply', 'elementor' ), + 'screen' => esc_html__( 'Screen', 'elementor' ), + 'overlay' => esc_html__( 'Overlay', 'elementor' ), + 'darken' => esc_html__( 'Darken', 'elementor' ), + 'lighten' => esc_html__( 'Lighten', 'elementor' ), + 'color-dodge' => esc_html__( 'Color Dodge', 'elementor' ), + 'saturation' => esc_html__( 'Saturation', 'elementor' ), + 'color' => esc_html__( 'Color', 'elementor' ), + 'luminosity' => esc_html__( 'Luminosity', 'elementor' ), + ], + 'selectors' => [ + '{{WRAPPER}}' => '--overlay-mix-blend-mode: {{VALUE}}', + ], + 'conditions' => [ + 'relation' => 'or', + 'terms' => [ + [ + 'name' => 'background_overlay_image[url]', + 'operator' => '!==', + 'value' => '', + ], + [ + 'name' => 'background_overlay_color', + 'operator' => '!==', + 'value' => '', + ], + ], + ], + ] + ); + + $this->end_controls_tab(); + + /** + * Hover. + */ + $this->start_controls_tab( + 'tab_background_overlay_hover', + [ + 'label' => esc_html__( 'Hover', 'elementor' ), + ] + ); + + $background_overlay_hover_selector = '{{WRAPPER}}:hover::before, {{WRAPPER}}:hover > .elementor-background-video-container::before, {{WRAPPER}}:hover > .e-con-inner > .elementor-background-video-container::before, {{WRAPPER}} > .elementor-background-slideshow:hover::before, {{WRAPPER}} > .e-con-inner > .elementor-background-slideshow:hover::before'; + + $this->add_group_control( + Group_Control_Background::get_type(), + [ + 'name' => 'background_overlay_hover', + 'selector' => $background_overlay_hover_selector, + 'fields_options' => [ + 'background' => [ + 'selectors' => [ + // Hack to set the `::before` content in order to render it only when there is a background overlay. + $background_overlay_hover_selector => '--background-overlay: \'\';', + ], + ], + ], + ] + ); + + $this->add_responsive_control( + 'background_overlay_hover_opacity', + [ + 'label' => esc_html__( 'Opacity', 'elementor' ), + 'type' => Controls_Manager::SLIDER, + 'default' => [ + 'size' => .5, + ], + 'range' => [ + 'px' => [ + 'max' => 1, + 'step' => 0.01, + ], + ], + 'selectors' => [ + '{{WRAPPER}}:hover' => '--overlay-opacity: {{SIZE}};', + ], + 'condition' => [ + 'background_overlay_hover_background' => [ 'classic', 'gradient' ], + ], + ] + ); + + $this->add_group_control( + Group_Control_Css_Filter::get_type(), + [ + 'name' => 'css_filters_hover', + 'selector' => '{{WRAPPER}}:hover::before', + ] + ); + + $this->add_control( + 'background_overlay_hover_transition', + [ + 'label' => esc_html__( 'Transition Duration', 'elementor' ) . ' (s)', + 'type' => Controls_Manager::SLIDER, + 'range' => [ + 'px' => [ + 'min' => 0, + 'max' => 3, + 'step' => 0.1, + ], + ], + 'render_type' => 'ui', + 'separator' => 'before', + 'selectors' => [ + '{{WRAPPER}}, {{WRAPPER}}::before' => '--overlay-transition: {{SIZE}}s;', + ], + ] + ); + + $this->end_controls_tab(); + + $this->end_controls_tabs(); + + $this->end_controls_section(); + } + + /** + * Register the Container's border controls. + * + * @return void + */ + protected function register_border_controls() { + $this->start_controls_section( + 'section_border', + [ + 'label' => esc_html__( 'Border', 'elementor' ), + 'tab' => Controls_Manager::TAB_STYLE, + ] + ); + + $this->start_controls_tabs( 'tabs_border' ); + + /** + * Normal. + */ + $this->start_controls_tab( + 'tab_border', + [ + 'label' => esc_html__( 'Normal', 'elementor' ), + ] + ); + + $this->add_group_control( + Group_Control_Border::get_type(), + [ + 'name' => 'border', + 'selector' => '{{WRAPPER}}', + 'fields_options' => [ + 'width' => [ + 'selectors' => [ + '{{SELECTOR}}' => "border-width: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}}; --border-block-start-width: {{TOP}}{{UNIT}}; --border-inline-end-width: $this->logical_dimensions_inline_end; --border-block-end-width: {{BOTTOM}}{{UNIT}}; --border-inline-start-width: $this->logical_dimensions_inline_start;", + ], + ], + 'color' => [ + 'selectors' => [ + '{{SELECTOR}}' => 'border-color: {{VALUE}}; --border-color: {{VALUE}};', + ], + ], + 'border' => [ + 'selectors' => [ + '{{SELECTOR}}' => 'border-style: {{VALUE}}; --border-style: {{VALUE}};', + ], + ], + ], + ] + ); + + $this->add_responsive_control( + 'border_radius', + [ + 'label' => esc_html__( 'Border Radius', 'elementor' ), + 'type' => Controls_Manager::DIMENSIONS, + 'size_units' => [ 'px', '%', 'em', 'rem', 'custom' ], + 'selectors' => [ + '{{WRAPPER}}' => '--border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};', + ], + ] + ); + + $this->add_group_control( + Group_Control_Box_Shadow::get_type(), + [ + 'name' => 'box_shadow', + ] + ); + + $this->end_controls_tab(); + + /** + * Hover. + */ + $this->start_controls_tab( + 'tab_border_hover', + [ + 'label' => esc_html__( 'Hover', 'elementor' ), + ] + ); + + $this->add_group_control( + Group_Control_Border::get_type(), + [ + 'name' => 'border_hover', + 'selector' => '{{WRAPPER}}:hover', + 'fields_options' => [ + 'width' => [ + 'selectors' => [ + '{{SELECTOR}}' => "border-width: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}}; --border-block-start-width: {{TOP}}{{UNIT}}; --border-inline-end-width: $this->logical_dimensions_inline_end; --border-block-end-width: {{BOTTOM}}{{UNIT}}; --border-inline-start-width: $this->logical_dimensions_inline_start;", + ], + ], + 'color' => [ + 'selectors' => [ + '{{SELECTOR}}' => 'border-color: {{VALUE}}; --border-color: {{VALUE}};', + ], + ], + ], + ] + ); + + $this->add_responsive_control( + 'border_radius_hover', + [ + 'label' => esc_html__( 'Border Radius', 'elementor' ), + 'type' => Controls_Manager::DIMENSIONS, + 'size_units' => [ 'px', '%', 'em', 'rem', 'custom' ], + 'selectors' => [ + '{{WRAPPER}}:hover' => "--border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}}; --border-top-left-radius: {{TOP}}{{UNIT}}; --border-top-right-radius: $this->logical_dimensions_inline_end; --border-bottom-right-radius: {{BOTTOM}}{{UNIT}}; --border-bottom-left-radius: $this->logical_dimensions_inline_start;", + ], + ] + ); + + $this->add_group_control( + Group_Control_Box_Shadow::get_type(), + [ + 'name' => 'box_shadow_hover', + 'selector' => '{{WRAPPER}}:hover', + ] + ); + + $this->add_control( + 'border_hover_transition', + [ + 'label' => esc_html__( 'Transition Duration', 'elementor' ) . ' (s)', + 'type' => Controls_Manager::SLIDER, + 'separator' => 'before', + 'default' => [ + 'size' => 0.3, + ], + 'range' => [ + 'px' => [ + 'min' => 0, + 'max' => 3, + 'step' => 0.1, + ], + ], + 'conditions' => [ + 'relation' => 'or', + 'terms' => [ + [ + 'name' => 'background_background', + 'operator' => '!==', + 'value' => '', + ], + [ + 'name' => 'border_border', + 'operator' => '!==', + 'value' => '', + ], + ], + ], + 'selectors' => [ + '{{WRAPPER}}, {{WRAPPER}}::before' => '--border-transition: {{SIZE}}s;', + ], + ] + ); + + $this->end_controls_tab(); + + $this->end_controls_tabs(); + + $this->end_controls_section(); + } + + /** + * Register the Container's shape dividers controls. + * TODO: Copied from `section.php`. + * + * @return void + */ + protected function register_shape_dividers_controls() { + $this->start_controls_section( + 'section_shape_divider', + [ + 'label' => esc_html__( 'Shape Divider', 'elementor' ), + 'tab' => Controls_Manager::TAB_STYLE, + ] + ); + + $this->start_controls_tabs( 'tabs_shape_dividers' ); + + $shapes_options = [ + '' => esc_html__( 'None', 'elementor' ), + ]; + + foreach ( Shapes::get_shapes() as $shape_name => $shape_props ) { + $shapes_options[ $shape_name ] = $shape_props['title']; + } + + foreach ( [ + 'top' => esc_html__( 'Top', 'elementor' ), + 'bottom' => esc_html__( 'Bottom', 'elementor' ), + ] as $side => $side_label ) { + $base_control_key = "shape_divider_$side"; + + $this->start_controls_tab( + "tab_$base_control_key", + [ + 'label' => $side_label, + ] + ); + + $this->add_control( + $base_control_key, + [ + 'label' => esc_html__( 'Type', 'elementor' ), + 'type' => Controls_Manager::SELECT, + 'options' => $shapes_options, + 'render_type' => 'none', + 'frontend_available' => true, + ] + ); + + $this->add_control( + $base_control_key . '_color', + [ + 'label' => esc_html__( 'Color', 'elementor' ), + 'type' => Controls_Manager::COLOR, + 'condition' => [ + "shape_divider_$side!" => '', + ], + 'selectors' => [ + "{{WRAPPER}} > .elementor-shape-$side .elementor-shape-fill, {{WRAPPER}} > .e-con-inner > .elementor-shape-$side .elementor-shape-fill" => 'fill: {{UNIT}};', + ], + ] + ); + + $this->add_responsive_control( + $base_control_key . '_width', + [ + 'label' => esc_html__( 'Width', 'elementor' ), + 'type' => Controls_Manager::SLIDER, + 'default' => [ + 'unit' => '%', + ], + 'tablet_default' => [ + 'unit' => '%', + ], + 'mobile_default' => [ + 'unit' => '%', + ], + 'range' => [ + '%' => [ + 'min' => 100, + 'max' => 300, + ], + ], + 'condition' => [ + "shape_divider_$side" => array_keys( Shapes::filter_shapes( 'height_only', Shapes::FILTER_EXCLUDE ) ), + ], + 'selectors' => [ + "{{WRAPPER}} > .elementor-shape-$side svg, {{WRAPPER}} > .e-con-inner > .elementor-shape-$side svg" => 'width: calc({{SIZE}}{{UNIT}} + 1.3px)', + ], + ] + ); + + $this->add_responsive_control( + $base_control_key . '_height', + [ + 'label' => esc_html__( 'Height', 'elementor' ), + 'type' => Controls_Manager::SLIDER, + 'range' => [ + 'px' => [ + 'max' => 500, + ], + ], + 'condition' => [ + "shape_divider_$side!" => '', + ], + 'selectors' => [ + "{{WRAPPER}} > .elementor-shape-$side svg, {{WRAPPER}} > .e-con-inner > .elementor-shape-$side svg" => 'height: {{SIZE}}{{UNIT}};', + ], + ] + ); + + $this->add_control( + $base_control_key . '_flip', + [ + 'label' => esc_html__( 'Flip', 'elementor' ), + 'type' => Controls_Manager::SWITCHER, + 'condition' => [ + "shape_divider_$side" => array_keys( Shapes::filter_shapes( 'has_flip' ) ), + ], + 'selectors' => [ + "{{WRAPPER}} > .elementor-shape-$side svg, {{WRAPPER}} > .e-con-inner > .elementor-shape-$side svg" => 'transform: translateX(-50%) rotateY(180deg)', + ], + ] + ); + + $this->add_control( + $base_control_key . '_negative', + [ + 'label' => esc_html__( 'Invert', 'elementor' ), + 'type' => Controls_Manager::SWITCHER, + 'frontend_available' => true, + 'condition' => [ + "shape_divider_$side" => array_keys( Shapes::filter_shapes( 'has_negative' ) ), + ], + 'render_type' => 'none', + ] + ); + + $this->add_control( + $base_control_key . '_above_content', + [ + 'label' => esc_html__( 'Bring to Front', 'elementor' ), + 'type' => Controls_Manager::SWITCHER, + 'selectors' => [ + "{{WRAPPER}} > .elementor-shape-$side, {{WRAPPER}} > .e-con-inner > .elementor-shape-$side" => 'z-index: 2; pointer-events: none', + ], + 'condition' => [ + "shape_divider_$side!" => '', + ], + ] + ); + + $this->end_controls_tab(); + } + + $this->end_controls_tabs(); + + $this->end_controls_section(); + } + /** + * Register the Container's style tab. + * + * @return void + */ + protected function register_style_tab() { + $this->register_background_controls(); + + $this->register_background_overlay_controls(); + + $this->register_border_controls(); + + $this->register_shape_dividers_controls(); + } + + /** + * Register the Container's advanced style controls. + * + * @return void + */ + protected function register_advanced_controls() { + $this->start_controls_section( + 'section_layout', + [ + 'label' => esc_html__( 'Layout', 'elementor' ), + 'tab' => Controls_Manager::TAB_ADVANCED, + ] + ); + + $this->add_responsive_control( + 'margin', + [ + 'label' => esc_html__( 'Margin', 'elementor' ), + 'type' => Controls_Manager::DIMENSIONS, + 'size_units' => [ 'px', '%', 'em', 'rem', 'vw', 'custom' ], + 'selectors' => [ + '{{WRAPPER}}' => "--margin-block-start: {{TOP}}{{UNIT}}; --margin-block-end: {{BOTTOM}}{{UNIT}}; --margin-inline-start: $this->logical_dimensions_inline_start; --margin-inline-end: $this->logical_dimensions_inline_end;", + ], + ] + ); + + $this->add_responsive_control( + 'padding', + [ + 'label' => esc_html__( 'Padding', 'elementor' ), + 'type' => Controls_Manager::DIMENSIONS, + 'size_units' => [ 'px', '%', 'em', 'rem', 'vw', 'custom' ], + 'selectors' => [ + '{{WRAPPER}}' => "--padding-block-start: {{TOP}}{{UNIT}}; --padding-block-end: {{BOTTOM}}{{UNIT}}; --padding-inline-start: $this->logical_dimensions_inline_start; --padding-inline-end: $this->logical_dimensions_inline_end;", + ], + ] + ); + + $this->add_group_control( + Group_Control_Flex_Item::get_type(), + [ + 'name' => '_flex', + 'include' => [ + 'align_self', + 'order', + 'order_custom', + 'size', + 'grow', + 'shrink', + ], + 'selector' => '{{WRAPPER}}.e-con', // Hack to increase specificity. + 'separator' => 'before', + ] + ); + + $this->add_control( + 'position_description', + [ + 'type' => Controls_Manager::ALERT, + 'alert_type' => 'warning', + 'heading' => esc_html__( 'Please note!', 'elementor' ), + 'content' => esc_html__( 'Custom positioning is not considered best practice for responsive web design and should not be used too frequently.', 'elementor' ), + 'render_type' => 'ui', + 'condition' => [ + 'position!' => '', + ], + ] + ); + + // TODO: Copied from `common.php` - Extract to group control. + $this->add_control( + 'position', + [ + 'label' => esc_html__( 'Position', 'elementor' ), + 'type' => Controls_Manager::SELECT, + 'default' => '', + 'options' => [ + '' => esc_html__( 'Default', 'elementor' ), + 'absolute' => esc_html__( 'Absolute', 'elementor' ), + 'fixed' => esc_html__( 'Fixed', 'elementor' ), + ], + 'selectors' => [ + '{{WRAPPER}}' => '--position: {{VALUE}};', + ], + 'frontend_available' => true, + 'separator' => 'before', + ] + ); + + $left = esc_html__( 'Left', 'elementor' ); + $right = esc_html__( 'Right', 'elementor' ); + + $start = is_rtl() ? $right : $left; + $end = ! is_rtl() ? $right : $left; + + $this->add_control( + '_offset_orientation_h', + [ + 'label' => esc_html__( 'Horizontal Orientation', 'elementor' ), + 'type' => Controls_Manager::CHOOSE, + 'toggle' => false, + 'default' => 'start', + 'options' => [ + 'start' => [ + 'title' => $start, + 'icon' => 'eicon-h-align-left', + ], + 'end' => [ + 'title' => $end, + 'icon' => 'eicon-h-align-right', + ], + ], + 'classes' => 'elementor-control-start-end', + 'render_type' => 'ui', + 'condition' => [ + 'position!' => '', + ], + ] + ); + + $this->add_responsive_control( + '_offset_x', + [ + 'label' => esc_html__( 'Offset', 'elementor' ), + 'type' => Controls_Manager::SLIDER, + 'range' => [ + 'px' => [ + 'min' => -1000, + 'max' => 1000, + ], + '%' => [ + 'min' => -200, + 'max' => 200, + ], + 'vw' => [ + 'min' => -200, + 'max' => 200, + ], + 'vh' => [ + 'min' => -200, + 'max' => 200, + ], + ], + 'default' => [ + 'size' => 0, + ], + 'size_units' => [ 'px', '%', 'em', 'rem', 'vw', 'vh', 'custom' ], + 'selectors' => [ + 'body:not(.rtl) {{WRAPPER}}' => 'left: {{SIZE}}{{UNIT}}', + 'body.rtl {{WRAPPER}}' => 'right: {{SIZE}}{{UNIT}}', + ], + 'condition' => [ + '_offset_orientation_h!' => 'end', + 'position!' => '', + ], + ] + ); + + $this->add_responsive_control( + '_offset_x_end', + [ + 'label' => esc_html__( 'Offset', 'elementor' ), + 'type' => Controls_Manager::SLIDER, + 'range' => [ + 'px' => [ + 'min' => -1000, + 'max' => 1000, + ], + '%' => [ + 'min' => -200, + 'max' => 200, + ], + 'vw' => [ + 'min' => -200, + 'max' => 200, + ], + 'vh' => [ + 'min' => -200, + 'max' => 200, + ], + ], + 'default' => [ + 'size' => 0, + ], + 'size_units' => [ 'px', '%', 'em', 'rem', 'vw', 'vh', 'custom' ], + 'selectors' => [ + 'body:not(.rtl) {{WRAPPER}}' => 'right: {{SIZE}}{{UNIT}}', + 'body.rtl {{WRAPPER}}' => 'left: {{SIZE}}{{UNIT}}', + ], + 'condition' => [ + '_offset_orientation_h' => 'end', + 'position!' => '', + ], + ] + ); + + $this->add_control( + '_offset_orientation_v', + [ + 'label' => esc_html__( 'Vertical Orientation', 'elementor' ), + 'type' => Controls_Manager::CHOOSE, + 'toggle' => false, + 'default' => 'start', + 'options' => [ + 'start' => [ + 'title' => esc_html__( 'Top', 'elementor' ), + 'icon' => 'eicon-v-align-top', + ], + 'end' => [ + 'title' => esc_html__( 'Bottom', 'elementor' ), + 'icon' => 'eicon-v-align-bottom', + ], + ], + 'render_type' => 'ui', + 'condition' => [ + 'position!' => '', + ], + ] + ); + + $this->add_responsive_control( + '_offset_y', + [ + 'label' => esc_html__( 'Offset', 'elementor' ), + 'type' => Controls_Manager::SLIDER, + 'range' => [ + 'px' => [ + 'min' => -1000, + 'max' => 1000, + ], + '%' => [ + 'min' => -200, + 'max' => 200, + ], + 'vh' => [ + 'min' => -200, + 'max' => 200, + ], + 'vw' => [ + 'min' => -200, + 'max' => 200, + ], + ], + 'size_units' => [ 'px', '%', 'em', 'rem', 'vh', 'vw', 'custom' ], + 'default' => [ + 'size' => 0, + ], + 'selectors' => [ + '{{WRAPPER}}' => 'top: {{SIZE}}{{UNIT}}', + ], + 'condition' => [ + '_offset_orientation_v!' => 'end', + 'position!' => '', + ], + ] + ); + + $this->add_responsive_control( + '_offset_y_end', + [ + 'label' => esc_html__( 'Offset', 'elementor' ), + 'type' => Controls_Manager::SLIDER, + 'range' => [ + 'px' => [ + 'min' => -1000, + 'max' => 1000, + ], + '%' => [ + 'min' => -200, + 'max' => 200, + ], + 'vh' => [ + 'min' => -200, + 'max' => 200, + ], + 'vw' => [ + 'min' => -200, + 'max' => 200, + ], + ], + 'size_units' => [ 'px', '%', 'em', 'rem', 'vh', 'vw', 'custom' ], + 'default' => [ + 'size' => 0, + ], + 'selectors' => [ + '{{WRAPPER}}' => 'bottom: {{SIZE}}{{UNIT}}', + ], + 'condition' => [ + '_offset_orientation_v' => 'end', + 'position!' => '', + ], + ] + ); + + $this->add_responsive_control( + 'z_index', + [ + 'label' => esc_html__( 'Z-Index', 'elementor' ), + 'type' => Controls_Manager::NUMBER, + 'min' => 0, + 'selectors' => [ + '{{WRAPPER}}' => '--z-index: {{VALUE}};', + ], + ] + ); + + $this->add_control( + '_element_id', + [ + 'label' => esc_html__( 'CSS ID', 'elementor' ), + 'type' => Controls_Manager::TEXT, + 'default' => '', + 'ai' => [ + 'active' => false, + ], + 'dynamic' => [ + 'active' => true, + ], + 'title' => esc_html__( 'Add your custom id WITHOUT the Pound key. e.g: my-id', 'elementor' ), + 'style_transfer' => false, + 'classes' => 'elementor-control-direction-ltr', + ] + ); + + $this->add_control( + 'css_classes', + [ + 'label' => esc_html__( 'CSS Classes', 'elementor' ), + 'type' => Controls_Manager::TEXT, + 'default' => '', + 'ai' => [ + 'active' => false, + ], + 'dynamic' => [ + 'active' => true, + ], + 'prefix_class' => '', + 'title' => esc_html__( 'Add your custom class WITHOUT the dot. e.g: my-class', 'elementor' ), + 'classes' => 'elementor-control-direction-ltr', + ] + ); + + Plugin::$instance->controls_manager->add_display_conditions_controls( $this ); + + $this->end_controls_section(); + } + + /** + * Register the Container's motion effects controls. + * + * @return void + */ + protected function register_motion_effects_controls() { + $this->start_controls_section( + 'section_effects', + [ + 'label' => esc_html__( 'Motion Effects', 'elementor' ), + 'tab' => Controls_Manager::TAB_ADVANCED, + ] + ); + + Plugin::$instance->controls_manager->add_motion_effects_promotion_control( $this ); + + $this->add_responsive_control( + 'animation', + [ + 'label' => esc_html__( 'Entrance Animation', 'elementor' ), + 'type' => Controls_Manager::ANIMATION, + 'frontend_available' => true, + ] + ); + + $this->add_control( + 'animation_duration', + [ + 'label' => esc_html__( 'Animation Duration', 'elementor' ), + 'type' => Controls_Manager::SELECT, + 'default' => '', + 'options' => [ + 'slow' => esc_html__( 'Slow', 'elementor' ), + '' => esc_html__( 'Normal', 'elementor' ), + 'fast' => esc_html__( 'Fast', 'elementor' ), + ], + 'prefix_class' => 'animated-', + 'condition' => [ + 'animation!' => '', + ], + ] + ); + + $this->add_control( + 'animation_delay', + [ + 'label' => esc_html__( 'Animation Delay', 'elementor' ) . ' (ms)', + 'type' => Controls_Manager::NUMBER, + 'default' => '', + 'min' => 0, + 'step' => 100, + 'condition' => [ + 'animation!' => '', + ], + 'render_type' => 'none', + 'frontend_available' => true, + ] + ); + + $this->end_controls_section(); + } + + /** + * Register the Container's responsive controls. + * + * @return void + */ + protected function register_responsive_controls() { + $this->start_controls_section( + '_section_responsive', + [ + 'label' => esc_html__( 'Responsive', 'elementor' ), + 'tab' => Controls_Manager::TAB_ADVANCED, + ] + ); + + $this->add_control( + 'heading_visibility', + [ + 'label' => esc_html__( 'Visibility', 'elementor' ), + 'type' => Controls_Manager::HEADING, + ] + ); + + $this->add_control( + 'responsive_description', + [ + 'raw' => sprintf( + /* translators: 1: Link open tag, 2: Link close tag. */ + esc_html__( 'Responsive visibility will take effect only on %1$s preview mode %2$s or live page, and not while editing in Elementor.', 'elementor' ), + '', + '' + ), + 'type' => Controls_Manager::RAW_HTML, + 'content_classes' => 'elementor-descriptor', + ] + ); + + $this->add_hidden_device_controls(); + + $this->end_controls_section(); + } + + /** + * Register the Container's advanced tab. + * + * @return void + */ + protected function register_advanced_tab() { + $this->register_advanced_controls(); + + $this->register_motion_effects_controls(); + + $this->hook_sticky_notice_into_transform_section(); + + $this->register_transform_section( 'con' ); + + $this->register_responsive_controls(); + + Plugin::$instance->controls_manager->add_custom_attributes_controls( $this ); + + Plugin::$instance->controls_manager->add_custom_css_controls( $this ); + } + + protected function hook_sticky_notice_into_transform_section() { + add_action( 'elementor/element/container/_section_transform/after_section_start', function( Container $container ) { + if ( ! empty( $container->get_controls( 'transform_sticky_notice' ) ) ) { + return; + } + + $container->add_control( + 'transform_sticky_notice', + [ + 'type' => Controls_Manager::ALERT, + 'alert_type' => 'warning', + 'content' => esc_html__( 'Note: Avoid applying transform properties on sticky containers. Doing so might cause unexpected results.', 'elementor' ), + ] + ); + } ); + } + + /** + * Register the Container's controls. + * + * @return void + */ + protected function register_controls() { + $this->register_layout_tab(); + $this->register_style_tab(); + $this->register_advanced_tab(); + } + + public function on_import( $element ) { + return self::slider_to_gaps_converter( $element ); + } + + /** + * convert slider to gaps control for the 3.16 upgrade script + * + * @param $element + * @return array + */ + public static function slider_to_gaps_converter( $element ) { + $breakpoints = array_keys( (array) Plugin::$instance->breakpoints->get_breakpoints() ); + $breakpoints[] = 'desktop'; + $control_name = 'flex_gap'; + + foreach ( $breakpoints as $breakpoint ) { + $control = 'desktop' !== $breakpoint + ? $control_name . '_' . $breakpoint + : $control_name; + + if ( isset( $element['settings'][ $control ] ) ) { + $old_size = strval( $element['settings'][ $control ]['size'] ); + + $element['settings'][ $control ]['column'] = $old_size; + $element['settings'][ $control ]['row'] = $old_size; + $element['settings'][ $control ]['isLinked'] = true; + } + } + + return $element; + } +} diff --git a/wp-content/plugins/elementor/includes/elements/repeater.php b/wp-content/plugins/elementor/includes/elements/repeater.php new file mode 100644 index 0000000..ba10d92 --- /dev/null +++ b/wp-content/plugins/elementor/includes/elements/repeater.php @@ -0,0 +1,158 @@ +id = self::$counter; + + parent::__construct( $data, $args ); + + $this->add_control( + '_id', + [ + 'type' => Controls_Manager::HIDDEN, + ] + ); + } + + /** + * Get repeater name. + * + * Retrieve the repeater name. + * + * @since 1.0.7 + * @access public + * + * @return string Repeater name. + */ + public function get_name() { + return 'repeater-' . $this->id; + } + + /** + * Get repeater type. + * + * Retrieve the repeater type. + * + * @since 1.0.0 + * @access public + * @static + * + * @return string Repeater type. + */ + public static function get_type() { + return 'repeater'; + } + + /** + * Add new repeater control to stack. + * + * Register a repeater control to allow the user to set/update data. + * + * This method should be used inside `register_controls()`. + * + * @since 1.0.0 + * @access public + * + * @param string $id Repeater control ID. + * @param array $args Repeater control arguments. + * @param array $options Optional. Repeater control options. Default is an + * empty array. + * + * @return bool True if repeater control added, False otherwise. + */ + public function add_control( $id, array $args, $options = [] ) { + $current_tab = $this->get_current_tab(); + + if ( null !== $current_tab ) { + $args = array_merge( $args, $current_tab ); + } + + return parent::add_control( $id, $args, $options ); + } + + /** + * Get repeater fields. + * + * Retrieve the fields from the current repeater control. + * + * @since 1.5.0 + * @deprecated 2.1.0 Use `get_controls()` method instead. + * @access public + * + * @return array Repeater fields. + */ + public function get_fields() { + _deprecated_function( __METHOD__, '2.1.0', 'get_controls()' ); + + return array_values( $this->get_controls() ); + } + + /** + * Get default child type. + * + * Retrieve the repeater child type based on element data. + * + * Note that repeater does not support children, therefore it returns false. + * + * @since 1.0.0 + * @access protected + * + * @param array $element_data Element ID. + * + * @return false Repeater default child type or False if type not found. + */ + protected function _get_default_child_type( array $element_data ) { + return false; + } + + protected function handle_control_position( array $args, $control_id, $overwrite ) { + return $args; + } +} diff --git a/wp-content/plugins/elementor/includes/elements/section.php b/wp-content/plugins/elementor/includes/elements/section.php new file mode 100644 index 0000000..71b6c6c --- /dev/null +++ b/wp-content/plugins/elementor/includes/elements/section.php @@ -0,0 +1,1580 @@ + [ + [ + 'preset' => [ 33, 66 ], + ], + [ + 'preset' => [ 66, 33 ], + ], + ], + 3 => [ + [ + 'preset' => [ 25, 25, 50 ], + ], + [ + 'preset' => [ 50, 25, 25 ], + ], + [ + 'preset' => [ 25, 50, 25 ], + ], + [ + 'preset' => [ 16, 66, 16 ], + ], + ], + ]; + + foreach ( range( 1, 10 ) as $columns_count ) { + self::$presets[ $columns_count ] = [ + [ + 'preset' => [], + ], + ]; + + $preset_unit = floor( 1 / $columns_count * 100 ); + + for ( $i = 0; $i < $columns_count; $i++ ) { + self::$presets[ $columns_count ][0]['preset'][] = $preset_unit; + } + + if ( ! empty( $additional_presets[ $columns_count ] ) ) { + self::$presets[ $columns_count ] = array_merge( self::$presets[ $columns_count ], $additional_presets[ $columns_count ] ); + } + + foreach ( self::$presets[ $columns_count ] as $preset_index => & $preset ) { + $preset['key'] = $columns_count . $preset_index; + } + } + } + + /** + * Get initial config. + * + * Retrieve the current section initial configuration. + * + * Adds more configuration on top of the controls list, the tabs assigned to + * the control, element name, type, icon and more. This method also adds + * section presets. + * + * @since 2.9.0 + * @access protected + * + * @return array The initial config. + */ + protected function get_initial_config() { + $config = parent::get_initial_config(); + + $config['presets'] = self::get_presets(); + $config['controls'] = $this->get_controls(); + $config['tabs_controls'] = $this->get_tabs_controls(); + + return $config; + } + + /** + * Register section controls. + * + * Used to add new controls to the section element. + * + * @since 3.1.0 + * @access protected + */ + protected function register_controls() { + $this->start_controls_section( + 'section_layout', + [ + 'label' => esc_html__( 'Layout', 'elementor' ), + 'tab' => Controls_Manager::TAB_LAYOUT, + ] + ); + + // Element Name for the Navigator + $this->add_control( + '_title', + [ + 'label' => esc_html__( 'Title', 'elementor' ), + 'type' => Controls_Manager::HIDDEN, + 'render_type' => 'none', + ] + ); + + $this->add_control( + 'layout', + [ + 'label' => esc_html__( 'Content Width', 'elementor' ), + 'type' => Controls_Manager::SELECT, + 'default' => 'boxed', + 'options' => [ + 'boxed' => esc_html__( 'Boxed', 'elementor' ), + 'full_width' => esc_html__( 'Full Width', 'elementor' ), + ], + 'prefix_class' => 'elementor-section-', + ] + ); + + $this->add_responsive_control( + 'content_width', + [ + 'label' => esc_html__( 'Width', 'elementor' ), + 'type' => Controls_Manager::SLIDER, + 'range' => [ + 'px' => [ + 'min' => 500, + 'max' => 1600, + ], + ], + 'selectors' => [ + '{{WRAPPER}} > .elementor-container' => 'max-width: {{SIZE}}{{UNIT}};', + ], + 'condition' => [ + 'layout' => [ 'boxed' ], + ], + ] + ); + + $this->add_control( + 'gap', + [ + 'label' => esc_html__( 'Columns Gap', 'elementor' ), + 'type' => Controls_Manager::SELECT, + 'default' => 'default', + 'options' => [ + 'default' => esc_html__( 'Default', 'elementor' ), + 'no' => esc_html__( 'No Gap', 'elementor' ), + 'narrow' => esc_html__( 'Narrow', 'elementor' ), + 'extended' => esc_html__( 'Extended', 'elementor' ), + 'wide' => esc_html__( 'Wide', 'elementor' ), + 'wider' => esc_html__( 'Wider', 'elementor' ), + 'custom' => esc_html__( 'Custom', 'elementor' ), + ], + ] + ); + + $this->add_responsive_control( + 'gap_columns_custom', + [ + 'label' => esc_html__( 'Custom Columns Gap', 'elementor' ), + 'type' => Controls_Manager::SLIDER, + 'range' => [ + 'px' => [ + 'max' => 500, + ], + ], + 'size_units' => [ 'px', '%', 'em', 'rem', 'vh', 'vw', 'custom' ], + 'selectors' => [ + '{{WRAPPER}} .elementor-column-gap-custom .elementor-column > .elementor-element-populated' => 'padding: {{SIZE}}{{UNIT}};', + ], + 'condition' => [ + 'gap' => 'custom', + ], + ] + ); + + $this->add_control( + 'height', + [ + 'label' => esc_html__( 'Height', 'elementor' ), + 'type' => Controls_Manager::SELECT, + 'default' => 'default', + 'options' => [ + 'default' => esc_html__( 'Default', 'elementor' ), + 'full' => esc_html__( 'Fit To Screen', 'elementor' ), + 'min-height' => esc_html__( 'Min Height', 'elementor' ), + ], + 'prefix_class' => 'elementor-section-height-', + 'hide_in_inner' => true, + ] + ); + + $this->add_responsive_control( + 'custom_height', + [ + 'label' => esc_html__( 'Minimum Height', 'elementor' ), + 'type' => Controls_Manager::SLIDER, + 'default' => [ + 'size' => 400, + ], + 'range' => [ + 'px' => [ + 'max' => 1440, + ], + ], + 'size_units' => [ 'px', 'em', 'rem', 'vh', 'vw', 'custom' ], + 'selectors' => [ + '{{WRAPPER}} > .elementor-container' => 'min-height: {{SIZE}}{{UNIT}};', + ], + 'condition' => [ + 'height' => [ 'min-height' ], + ], + 'hide_in_inner' => true, + ] + ); + + $this->add_control( + 'height_inner', + [ + 'label' => esc_html__( 'Height', 'elementor' ), + 'type' => Controls_Manager::SELECT, + 'default' => 'default', + 'options' => [ + 'default' => esc_html__( 'Default', 'elementor' ), + 'full' => esc_html__( 'Fit To Screen', 'elementor' ), + 'min-height' => esc_html__( 'Min Height', 'elementor' ), + ], + 'prefix_class' => 'elementor-section-height-', + 'hide_in_top' => true, + ] + ); + + $this->add_responsive_control( + 'custom_height_inner', + [ + 'label' => esc_html__( 'Minimum Height', 'elementor' ), + 'type' => Controls_Manager::SLIDER, + 'default' => [ + 'size' => 400, + ], + 'range' => [ + 'px' => [ + 'max' => 1440, + ], + ], + 'selectors' => [ + '{{WRAPPER}} > .elementor-container' => 'min-height: {{SIZE}}{{UNIT}};', + ], + 'condition' => [ + 'height_inner' => [ 'min-height' ], + ], + 'size_units' => [ 'px', 'em', 'rem', 'vh', 'vw', 'custom' ], + 'hide_in_top' => true, + ] + ); + + $this->add_control( + 'column_position', + [ + 'label' => esc_html__( 'Column Position', 'elementor' ), + 'type' => Controls_Manager::SELECT, + 'default' => 'middle', + 'options' => [ + 'stretch' => esc_html__( 'Stretch', 'elementor' ), + 'top' => esc_html__( 'Top', 'elementor' ), + 'middle' => esc_html__( 'Middle', 'elementor' ), + 'bottom' => esc_html__( 'Bottom', 'elementor' ), + ], + 'prefix_class' => 'elementor-section-items-', + 'condition' => [ + 'height' => [ 'full', 'min-height' ], + ], + ] + ); + + $this->add_control( + 'content_position', + [ + 'label' => esc_html__( 'Vertical Align', 'elementor' ), + 'type' => Controls_Manager::SELECT, + 'default' => '', + 'options' => [ + '' => esc_html__( 'Default', 'elementor' ), + 'top' => esc_html__( 'Top', 'elementor' ), + 'middle' => esc_html__( 'Middle', 'elementor' ), + 'bottom' => esc_html__( 'Bottom', 'elementor' ), + 'space-between' => esc_html__( 'Space Between', 'elementor' ), + 'space-around' => esc_html__( 'Space Around', 'elementor' ), + 'space-evenly' => esc_html__( 'Space Evenly', 'elementor' ), + ], + 'selectors_dictionary' => [ + 'top' => 'flex-start', + 'middle' => 'center', + 'bottom' => 'flex-end', + ], + 'selectors' => [ + '{{WRAPPER}} > .elementor-container > .elementor-column > .elementor-widget-wrap' => 'align-content: {{VALUE}}; align-items: {{VALUE}};', + ], + // TODO: The following line is for BC since 2.7.0 + 'prefix_class' => 'elementor-section-content-', + ] + ); + + $this->add_control( + 'overflow', + [ + 'label' => esc_html__( 'Overflow', 'elementor' ), + 'type' => Controls_Manager::SELECT, + 'default' => '', + 'options' => [ + '' => esc_html__( 'Default', 'elementor' ), + 'hidden' => esc_html__( 'Hidden', 'elementor' ), + ], + 'selectors' => [ + '{{WRAPPER}}' => 'overflow: {{VALUE}}', + ], + ] + ); + + $this->add_control( + 'stretch_section', + [ + 'label' => esc_html__( 'Stretch Section', 'elementor' ), + 'type' => Controls_Manager::SWITCHER, + 'default' => '', + 'return_value' => 'section-stretched', + 'prefix_class' => 'elementor-', + 'hide_in_inner' => true, + 'description' => sprintf( + '%1$s %2$s', + esc_html__( 'Stretch the section to the full width of the page using JS.', 'elementor' ), + esc_html__( 'Learn more', 'elementor' ) + ), + 'render_type' => 'none', + 'frontend_available' => true, + ] + ); + + $possible_tags = [ + 'div', + 'header', + 'footer', + 'main', + 'article', + 'section', + 'aside', + 'nav', + ]; + + $options = [ + '' => esc_html__( 'Default', 'elementor' ), + ] + array_combine( $possible_tags, $possible_tags ); + + $this->add_control( + 'html_tag', + [ + 'label' => esc_html__( 'HTML Tag', 'elementor' ), + 'type' => Controls_Manager::SELECT, + 'options' => $options, + 'separator' => 'before', + ] + ); + + $this->end_controls_section(); + + // Section Structure + $this->start_controls_section( + 'section_structure', + [ + 'label' => esc_html__( 'Structure', 'elementor' ), + 'tab' => Controls_Manager::TAB_LAYOUT, + ] + ); + + $this->add_control( + 'structure', + [ + 'label' => esc_html__( 'Structure', 'elementor' ), + 'type' => Controls_Manager::STRUCTURE, + 'default' => '10', + 'render_type' => 'none', + 'style_transfer' => false, + ] + ); + + $this->end_controls_section(); + + // Section background + $this->start_controls_section( + 'section_background', + [ + 'label' => esc_html__( 'Background', 'elementor' ), + 'tab' => Controls_Manager::TAB_STYLE, + ] + ); + + $this->start_controls_tabs( 'tabs_background' ); + + $this->start_controls_tab( + 'tab_background_normal', + [ + 'label' => esc_html__( 'Normal', 'elementor' ), + ] + ); + + $this->add_group_control( + Group_Control_Background::get_type(), + [ + 'name' => 'background', + 'types' => [ 'classic', 'gradient', 'video', 'slideshow' ], + 'fields_options' => [ + 'background' => [ + 'frontend_available' => true, + ], + 'image' => [ + 'background_lazyload' => [ + 'active' => true, + 'keys' => [ 'background_image', 'url' ], + ], + ], + ], + ] + ); + + $this->end_controls_tab(); + + $this->start_controls_tab( + 'tab_background_hover', + [ + 'label' => esc_html__( 'Hover', 'elementor' ), + ] + ); + + $this->add_group_control( + Group_Control_Background::get_type(), + [ + 'name' => 'background_hover', + 'selector' => '{{WRAPPER}}:hover', + ] + ); + + $this->add_control( + 'background_hover_transition', + [ + 'label' => esc_html__( 'Transition Duration', 'elementor' ) . ' (s)', + 'type' => Controls_Manager::SLIDER, + 'default' => [ + 'size' => 0.3, + ], + 'range' => [ + 'px' => [ + 'min' => 0, + 'max' => 3, + 'step' => 0.1, + ], + ], + 'render_type' => 'ui', + 'separator' => 'before', + ] + ); + + $this->end_controls_tab(); + + $this->end_controls_tabs(); + + $this->end_controls_section(); + + // Background Overlay + $this->start_controls_section( + 'section_background_overlay', + [ + 'label' => esc_html__( 'Background Overlay', 'elementor' ), + 'tab' => Controls_Manager::TAB_STYLE, + ] + ); + + $this->start_controls_tabs( 'tabs_background_overlay' ); + + $this->start_controls_tab( + 'tab_background_overlay_normal', + [ + 'label' => esc_html__( 'Normal', 'elementor' ), + ] + ); + + $this->add_group_control( + Group_Control_Background::get_type(), + [ + 'name' => 'background_overlay', + 'selector' => '{{WRAPPER}} > .elementor-background-overlay', + 'fields_options' => [ + 'image' => [ + 'background_lazyload' => [ + 'active' => true, + 'keys' => [ 'background_overlay_image', 'url' ], + 'selector' => '.elementor-background-overlay', + ], + ], + ], + ] + ); + + $this->add_responsive_control( + 'background_overlay_opacity', + [ + 'label' => esc_html__( 'Opacity', 'elementor' ), + 'type' => Controls_Manager::SLIDER, + 'default' => [ + 'size' => .5, + ], + 'range' => [ + 'px' => [ + 'max' => 1, + 'step' => 0.01, + ], + ], + 'selectors' => [ + '{{WRAPPER}} > .elementor-background-overlay' => 'opacity: {{SIZE}};', + ], + 'condition' => [ + 'background_overlay_background' => [ 'classic', 'gradient' ], + ], + ] + ); + + $this->add_group_control( + Group_Control_Css_Filter::get_type(), + [ + 'name' => 'css_filters', + 'selector' => '{{WRAPPER}} .elementor-background-overlay', + 'conditions' => [ + 'relation' => 'or', + 'terms' => [ + [ + 'name' => 'background_overlay_image[url]', + 'operator' => '!==', + 'value' => '', + ], + [ + 'name' => 'background_overlay_color', + 'operator' => '!==', + 'value' => '', + ], + ], + ], + ] + ); + + $this->add_control( + 'overlay_blend_mode', + [ + 'label' => esc_html__( 'Blend Mode', 'elementor' ), + 'type' => Controls_Manager::SELECT, + 'options' => [ + '' => esc_html__( 'Normal', 'elementor' ), + 'multiply' => esc_html__( 'Multiply', 'elementor' ), + 'screen' => esc_html__( 'Screen', 'elementor' ), + 'overlay' => esc_html__( 'Overlay', 'elementor' ), + 'darken' => esc_html__( 'Darken', 'elementor' ), + 'lighten' => esc_html__( 'Lighten', 'elementor' ), + 'color-dodge' => esc_html__( 'Color Dodge', 'elementor' ), + 'saturation' => esc_html__( 'Saturation', 'elementor' ), + 'color' => esc_html__( 'Color', 'elementor' ), + 'luminosity' => esc_html__( 'Luminosity', 'elementor' ), + 'difference' => esc_html__( 'Difference', 'elementor' ), + 'exclusion' => esc_html__( 'Exclusion', 'elementor' ), + 'hue' => esc_html__( 'Hue', 'elementor' ), + ], + 'selectors' => [ + '{{WRAPPER}} > .elementor-background-overlay' => 'mix-blend-mode: {{VALUE}}', + ], + 'conditions' => [ + 'relation' => 'or', + 'terms' => [ + [ + 'name' => 'background_overlay_image[url]', + 'operator' => '!==', + 'value' => '', + ], + [ + 'name' => 'background_overlay_color', + 'operator' => '!==', + 'value' => '', + ], + ], + ], + ] + ); + + $this->end_controls_tab(); + + $this->start_controls_tab( + 'tab_background_overlay_hover', + [ + 'label' => esc_html__( 'Hover', 'elementor' ), + ] + ); + + $this->add_group_control( + Group_Control_Background::get_type(), + [ + 'name' => 'background_overlay_hover', + 'selector' => '{{WRAPPER}}:hover > .elementor-background-overlay', + ] + ); + + $this->add_responsive_control( + 'background_overlay_hover_opacity', + [ + 'label' => esc_html__( 'Opacity', 'elementor' ), + 'type' => Controls_Manager::SLIDER, + 'default' => [ + 'size' => .5, + ], + 'range' => [ + 'px' => [ + 'max' => 1, + 'step' => 0.01, + ], + ], + 'selectors' => [ + '{{WRAPPER}}:hover > .elementor-background-overlay' => 'opacity: {{SIZE}};', + ], + 'condition' => [ + 'background_overlay_hover_background' => [ 'classic', 'gradient' ], + ], + ] + ); + + $this->add_group_control( + Group_Control_Css_Filter::get_type(), + [ + 'name' => 'css_filters_hover', + 'selector' => '{{WRAPPER}}:hover > .elementor-background-overlay', + ] + ); + + $this->add_control( + 'background_overlay_hover_transition', + [ + 'label' => esc_html__( 'Transition Duration', 'elementor' ) . ' (s)', + 'type' => Controls_Manager::SLIDER, + 'default' => [ + 'size' => 0.3, + ], + 'range' => [ + 'px' => [ + 'min' => 0, + 'max' => 3, + 'step' => 0.1, + ], + ], + 'render_type' => 'ui', + 'separator' => 'before', + ] + ); + + $this->end_controls_tab(); + + $this->end_controls_tabs(); + + $this->end_controls_section(); + + // Section border + $this->start_controls_section( + 'section_border', + [ + 'label' => esc_html__( 'Border', 'elementor' ), + 'tab' => Controls_Manager::TAB_STYLE, + ] + ); + + $this->start_controls_tabs( 'tabs_border' ); + + $this->start_controls_tab( + 'tab_border_normal', + [ + 'label' => esc_html__( 'Normal', 'elementor' ), + ] + ); + + $this->add_group_control( + Group_Control_Border::get_type(), + [ + 'name' => 'border', + ] + ); + + $this->add_responsive_control( + 'border_radius', + [ + 'label' => esc_html__( 'Border Radius', 'elementor' ), + 'type' => Controls_Manager::DIMENSIONS, + 'size_units' => [ 'px', '%', 'em', 'rem', 'custom' ], + 'selectors' => [ + '{{WRAPPER}}, {{WRAPPER}} > .elementor-background-overlay' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};', + ], + ] + ); + + $this->add_group_control( + Group_Control_Box_Shadow::get_type(), + [ + 'name' => 'box_shadow', + ] + ); + + $this->end_controls_tab(); + + $this->start_controls_tab( + 'tab_border_hover', + [ + 'label' => esc_html__( 'Hover', 'elementor' ), + ] + ); + + $this->add_group_control( + Group_Control_Border::get_type(), + [ + 'name' => 'border_hover', + 'selector' => '{{WRAPPER}}:hover', + ] + ); + + $this->add_responsive_control( + 'border_radius_hover', + [ + 'label' => esc_html__( 'Border Radius', 'elementor' ), + 'type' => Controls_Manager::DIMENSIONS, + 'size_units' => [ 'px', '%', 'em', 'rem', 'custom' ], + 'selectors' => [ + '{{WRAPPER}}:hover, {{WRAPPER}}:hover > .elementor-background-overlay' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};', + ], + ] + ); + + $this->add_group_control( + Group_Control_Box_Shadow::get_type(), + [ + 'name' => 'box_shadow_hover', + 'selector' => '{{WRAPPER}}:hover', + ] + ); + + $this->add_control( + 'border_hover_transition', + [ + 'label' => esc_html__( 'Transition Duration', 'elementor' ) . ' (s)', + 'type' => Controls_Manager::SLIDER, + 'separator' => 'before', + 'default' => [ + 'size' => 0.3, + ], + 'range' => [ + 'px' => [ + 'min' => 0, + 'max' => 3, + 'step' => 0.1, + ], + ], + 'conditions' => [ + 'relation' => 'or', + 'terms' => [ + [ + 'name' => 'background_background', + 'operator' => '!==', + 'value' => '', + ], + [ + 'name' => 'border_border', + 'operator' => '!==', + 'value' => '', + ], + ], + ], + 'selectors' => [ + '{{WRAPPER}}' => 'transition: background {{background_hover_transition.SIZE}}s, border {{SIZE}}s, border-radius {{SIZE}}s, box-shadow {{SIZE}}s', + '{{WRAPPER}} > .elementor-background-overlay' => 'transition: background {{background_overlay_hover_transition.SIZE}}s, border-radius {{SIZE}}s, opacity {{background_overlay_hover_transition.SIZE}}s', + ], + ] + ); + + $this->end_controls_tab(); + + $this->end_controls_tabs(); + + $this->end_controls_section(); + + // Section Shape Divider + $this->start_controls_section( + 'section_shape_divider', + [ + 'label' => esc_html__( 'Shape Divider', 'elementor' ), + 'tab' => Controls_Manager::TAB_STYLE, + ] + ); + + $this->start_controls_tabs( 'tabs_shape_dividers' ); + + $shapes_options = [ + '' => esc_html__( 'None', 'elementor' ), + ]; + + foreach ( Shapes::get_shapes() as $shape_name => $shape_props ) { + $shapes_options[ $shape_name ] = $shape_props['title']; + } + + foreach ( [ + 'top' => esc_html__( 'Top', 'elementor' ), + 'bottom' => esc_html__( 'Bottom', 'elementor' ), + ] as $side => $side_label ) { + $base_control_key = "shape_divider_$side"; + + $this->start_controls_tab( + "tab_$base_control_key", + [ + 'label' => $side_label, + ] + ); + + $this->add_control( + $base_control_key, + [ + 'label' => esc_html__( 'Type', 'elementor' ), + 'type' => Controls_Manager::SELECT, + 'options' => $shapes_options, + 'render_type' => 'none', + 'frontend_available' => true, + ] + ); + + $this->add_control( + $base_control_key . '_color', + [ + 'label' => esc_html__( 'Color', 'elementor' ), + 'type' => Controls_Manager::COLOR, + 'condition' => [ + "shape_divider_$side!" => '', + ], + 'selectors' => [ + "{{WRAPPER}} > .elementor-shape-$side .elementor-shape-fill" => 'fill: {{UNIT}};', + ], + ] + ); + + $this->add_responsive_control( + $base_control_key . '_width', + [ + 'label' => esc_html__( 'Width', 'elementor' ) . ' (%)', + 'type' => Controls_Manager::SLIDER, + 'default' => [ + 'unit' => '%', + ], + 'tablet_default' => [ + 'unit' => '%', + ], + 'mobile_default' => [ + 'unit' => '%', + ], + 'range' => [ + '%' => [ + 'min' => 100, + 'max' => 300, + ], + ], + 'condition' => [ + "shape_divider_$side" => array_keys( Shapes::filter_shapes( 'height_only', Shapes::FILTER_EXCLUDE ) ), + ], + 'selectors' => [ + "{{WRAPPER}} > .elementor-shape-$side svg" => 'width: calc({{SIZE}}{{UNIT}} + 1.3px)', + ], + ] + ); + + $this->add_responsive_control( + $base_control_key . '_height', + [ + 'label' => esc_html__( 'Height', 'elementor' ), + 'type' => Controls_Manager::SLIDER, + 'range' => [ + 'px' => [ + 'max' => 500, + ], + ], + 'condition' => [ + "shape_divider_$side!" => '', + ], + 'selectors' => [ + "{{WRAPPER}} > .elementor-shape-$side svg" => 'height: {{SIZE}}{{UNIT}};', + ], + ] + ); + + $this->add_control( + $base_control_key . '_flip', + [ + 'label' => esc_html__( 'Flip', 'elementor' ), + 'type' => Controls_Manager::SWITCHER, + 'condition' => [ + "shape_divider_$side" => array_keys( Shapes::filter_shapes( 'has_flip' ) ), + ], + 'selectors' => [ + "{{WRAPPER}} > .elementor-shape-$side svg" => 'transform: translateX(-50%) rotateY(180deg)', + ], + ] + ); + + $this->add_control( + $base_control_key . '_negative', + [ + 'label' => esc_html__( 'Invert', 'elementor' ), + 'type' => Controls_Manager::SWITCHER, + 'frontend_available' => true, + 'condition' => [ + "shape_divider_$side" => array_keys( Shapes::filter_shapes( 'has_negative' ) ), + ], + 'render_type' => 'none', + ] + ); + + $this->add_control( + $base_control_key . '_above_content', + [ + 'label' => esc_html__( 'Bring to Front', 'elementor' ), + 'type' => Controls_Manager::SWITCHER, + 'selectors' => [ + "{{WRAPPER}} > .elementor-shape-$side" => 'z-index: 2; pointer-events: none', + ], + 'condition' => [ + "shape_divider_$side!" => '', + ], + ] + ); + + $this->end_controls_tab(); + } + + $this->end_controls_tabs(); + + $this->end_controls_section(); + + // Section Typography + $this->start_controls_section( + 'section_typo', + [ + 'label' => esc_html__( 'Typography', 'elementor' ), + 'tab' => Controls_Manager::TAB_STYLE, + ] + ); + + $this->add_control( + 'heading_color', + [ + 'label' => esc_html__( 'Heading Color', 'elementor' ), + 'type' => Controls_Manager::COLOR, + 'default' => '', + 'selectors' => [ + '{{WRAPPER}} .elementor-heading-title' => 'color: {{VALUE}};', + ], + ] + ); + + $this->add_control( + 'color_text', + [ + 'label' => esc_html__( 'Text Color', 'elementor' ), + 'type' => Controls_Manager::COLOR, + 'default' => '', + 'selectors' => [ + '{{WRAPPER}}' => 'color: {{VALUE}};', + ], + ] + ); + + $this->add_control( + 'color_link', + [ + 'label' => esc_html__( 'Link Color', 'elementor' ), + 'type' => Controls_Manager::COLOR, + 'default' => '', + 'selectors' => [ + '{{WRAPPER}} a' => 'color: {{VALUE}};', + ], + ] + ); + + $this->add_control( + 'color_link_hover', + [ + 'label' => esc_html__( 'Link Hover Color', 'elementor' ), + 'type' => Controls_Manager::COLOR, + 'default' => '', + 'selectors' => [ + '{{WRAPPER}} a:hover' => 'color: {{VALUE}};', + ], + ] + ); + + $this->add_responsive_control( + 'text_align', + [ + 'label' => esc_html__( 'Text Align', 'elementor' ), + 'type' => Controls_Manager::CHOOSE, + 'options' => [ + 'left' => [ + 'title' => esc_html__( 'Left', 'elementor' ), + 'icon' => 'eicon-text-align-left', + ], + 'center' => [ + 'title' => esc_html__( 'Center', 'elementor' ), + 'icon' => 'eicon-text-align-center', + ], + 'right' => [ + 'title' => esc_html__( 'Right', 'elementor' ), + 'icon' => 'eicon-text-align-right', + ], + 'justify' => [ + 'title' => esc_html__( 'Justified', 'elementor' ), + 'icon' => 'eicon-text-align-justify', + ], + ], + 'selectors' => [ + '{{WRAPPER}} > .elementor-container' => 'text-align: {{VALUE}};', + ], + ] + ); + + $this->end_controls_section(); + + // Section Advanced + $this->start_controls_section( + 'section_advanced', + [ + 'label' => esc_html__( 'Advanced', 'elementor' ), + 'tab' => Controls_Manager::TAB_ADVANCED, + ] + ); + + $this->add_responsive_control( + 'margin', + [ + 'label' => esc_html__( 'Margin', 'elementor' ), + 'type' => Controls_Manager::DIMENSIONS, + 'size_units' => [ 'px', '%', 'em', 'rem', 'vw', 'custom' ], + 'allowed_dimensions' => 'vertical', + 'placeholder' => [ + 'top' => '', + 'right' => 'auto', + 'bottom' => '', + 'left' => 'auto', + ], + 'selectors' => [ + '{{WRAPPER}}' => 'margin-top: {{TOP}}{{UNIT}}; margin-bottom: {{BOTTOM}}{{UNIT}};', + ], + ] + ); + + $this->add_responsive_control( + 'padding', + [ + 'label' => esc_html__( 'Padding', 'elementor' ), + 'type' => Controls_Manager::DIMENSIONS, + 'size_units' => [ 'px', '%', 'em', 'rem', 'vw', 'custom' ], + 'selectors' => [ + '{{WRAPPER}}' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};', + ], + ] + ); + + $this->add_responsive_control( + 'z_index', + [ + 'label' => esc_html__( 'Z-Index', 'elementor' ), + 'type' => Controls_Manager::NUMBER, + 'min' => 0, + 'selectors' => [ + '{{WRAPPER}}' => 'z-index: {{VALUE}};', + ], + ] + ); + + $this->add_control( + '_element_id', + [ + 'label' => esc_html__( 'CSS ID', 'elementor' ), + 'type' => Controls_Manager::TEXT, + 'default' => '', + 'ai' => [ + 'active' => false, + ], + 'dynamic' => [ + 'active' => true, + ], + 'title' => esc_html__( 'Add your custom id WITHOUT the Pound key. e.g: my-id', 'elementor' ), + 'style_transfer' => false, + 'classes' => 'elementor-control-direction-ltr', + ] + ); + + $this->add_control( + 'css_classes', + [ + 'label' => esc_html__( 'CSS Classes', 'elementor' ), + 'type' => Controls_Manager::TEXT, + 'default' => '', + 'ai' => [ + 'active' => false, + ], + 'dynamic' => [ + 'active' => true, + ], + 'prefix_class' => '', + 'title' => esc_html__( 'Add your custom class WITHOUT the dot. e.g: my-class', 'elementor' ), + 'classes' => 'elementor-control-direction-ltr', + ] + ); + + Plugin::$instance->controls_manager->add_display_conditions_controls( $this ); + + $this->end_controls_section(); + + $this->start_controls_section( + 'section_effects', + [ + 'label' => esc_html__( 'Motion Effects', 'elementor' ), + 'tab' => Controls_Manager::TAB_ADVANCED, + ] + ); + + Plugin::$instance->controls_manager->add_motion_effects_promotion_control( $this ); + + $this->add_responsive_control( + 'animation', + [ + 'label' => esc_html__( 'Entrance Animation', 'elementor' ), + 'type' => Controls_Manager::ANIMATION, + 'frontend_available' => true, + ] + ); + + $this->add_control( + 'animation_duration', + [ + 'label' => esc_html__( 'Animation Duration', 'elementor' ), + 'type' => Controls_Manager::SELECT, + 'default' => '', + 'options' => [ + 'slow' => esc_html__( 'Slow', 'elementor' ), + '' => esc_html__( 'Normal', 'elementor' ), + 'fast' => esc_html__( 'Fast', 'elementor' ), + ], + 'prefix_class' => 'animated-', + 'condition' => [ + 'animation!' => '', + ], + ] + ); + + $this->add_control( + 'animation_delay', + [ + 'label' => esc_html__( 'Animation Delay', 'elementor' ) . ' (ms)', + 'type' => Controls_Manager::NUMBER, + 'default' => '', + 'min' => 0, + 'step' => 100, + 'condition' => [ + 'animation!' => '', + ], + 'render_type' => 'none', + 'frontend_available' => true, + ] + ); + + $this->end_controls_section(); + + // Section Responsive + $this->start_controls_section( + '_section_responsive', + [ + 'label' => esc_html__( 'Responsive', 'elementor' ), + 'tab' => Controls_Manager::TAB_ADVANCED, + ] + ); + + // The controls should be displayed from largest to smallest breakpoint, so we reverse the array. + $active_breakpoints = array_reverse( Plugin::$instance->breakpoints->get_active_breakpoints() ); + + foreach ( $active_breakpoints as $breakpoint_key => $breakpoint ) { + $this->add_control( + 'reverse_order_' . $breakpoint_key, + [ + 'label' => esc_html__( 'Reverse Columns', 'elementor' ) . ' (' . $breakpoint->get_label() . ')', + 'type' => Controls_Manager::SWITCHER, + 'default' => '', + 'prefix_class' => 'elementor-', + 'return_value' => 'reverse-' . $breakpoint_key, + ] + ); + } + + $this->add_control( + 'heading_visibility', + [ + 'label' => esc_html__( 'Visibility', 'elementor' ), + 'type' => Controls_Manager::HEADING, + 'separator' => 'before', + ] + ); + + $this->add_control( + 'responsive_description', + [ + 'raw' => sprintf( + /* translators: 1: Link open tag, 2: Link close tag. */ + esc_html__( 'Responsive visibility will take effect only on %1$s preview mode %2$s or live page, and not while editing in Elementor.', 'elementor' ), + '', + '' + ), + 'type' => Controls_Manager::RAW_HTML, + 'content_classes' => 'elementor-descriptor', + ] + ); + + $this->add_hidden_device_controls(); + + $this->end_controls_section(); + + Plugin::$instance->controls_manager->add_custom_attributes_controls( $this ); + + Plugin::$instance->controls_manager->add_custom_css_controls( $this ); + } + + /** + * Render section output in the editor. + * + * Used to generate the live preview, using a Backbone JavaScript template. + * + * @since 2.9.0 + * @access protected + */ + protected function content_template() { + ?> + <# + if ( settings.background_video_link ) { + let videoAttributes = 'autoplay muted playsinline'; + + if ( ! settings.background_play_once ) { + videoAttributes += ' loop'; + } + + view.addRenderAttribute( 'background-video-container', 'class', 'elementor-background-video-container' ); + + if ( ! settings.background_play_on_mobile ) { + view.addRenderAttribute( 'background-video-container', 'class', 'elementor-hidden-mobile' ); + } + #> +
    +
    + +
    + <# } #> +
    +
    +
    +
    + get_settings_for_display(); + ?> + <get_html_tag(); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped + ?> print_render_attribute_string( '_wrapper' ); ?>> + add_render_attribute( 'background-video-container', 'class', 'elementor-background-video-container' ); + + if ( ! $settings['background_play_on_mobile'] ) { + $this->add_render_attribute( 'background-video-container', 'class', 'elementor-hidden-phone' ); + } + ?> +
    print_render_attribute_string( 'background-video-container' ); ?>> + +
    + + + +
    + +
    + print_shape_divider( 'top' ); + } + + if ( $settings['shape_divider_bottom'] ) { + $this->print_shape_divider( 'bottom' ); + } + ?> +
    + +
    + get_html_tag(); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped + ?>> + get_data( 'isInner' ) ? 'inner' : 'top'; + + $this->add_render_attribute( + '_wrapper', 'class', [ + 'elementor-section', + 'elementor-' . $section_type . '-section', + ] + ); + + parent::add_render_attributes(); + } + + /** + * Get default child type. + * + * Retrieve the section child type based on element data. + * + * @since 1.0.0 + * @access protected + * + * @param array $element_data Element ID. + * + * @return Element_Base Section default child type. + */ + protected function _get_default_child_type( array $element_data ) { + return Plugin::$instance->elements_manager->get_element_types( 'column' ); + } + + /** + * Get HTML tag. + * + * Retrieve the section element HTML tag. + * + * @since 1.5.3 + * @access private + * + * @return string Section HTML tag. + */ + protected function get_html_tag() { + $html_tag = $this->get_settings( 'html_tag' ); + + if ( empty( $html_tag ) ) { + $html_tag = 'section'; + } + + return Utils::validate_html_tag( $html_tag ); + } + + /** + * Print section shape divider. + * + * Used to generate the shape dividers HTML. + * + * @since 1.3.0 + * @access private + * + * @param string $side Shape divider side, used to set the shape key. + */ + protected function print_shape_divider( $side ) { + $settings = $this->get_active_settings(); + $base_setting_key = "shape_divider_$side"; + $negative = ! empty( $settings[ $base_setting_key . '_negative' ] ); + $shape_path = Shapes::get_shape_path( $settings[ $base_setting_key ], $negative ); + if ( ! is_file( $shape_path ) || ! is_readable( $shape_path ) ) { + return; + } + + ?> +
    + +
    + '/^.*(?:youtu\.be\/|youtube(?:-nocookie)?\.com\/(?:(?:watch)?\?(?:.*&)?vi?=|(?:embed|v|vi|user)\/))([^\?&\"\'>]+)/', + 'vimeo' => '/^.*vimeo\.com\/(?:[a-z]*\/)*([‌​0-9]{6,11})[?]?.*/', + 'dailymotion' => '/^.*dailymotion.com\/(?:video|hub)\/([^_]+)[^#]*(#video=([^_&]+))?/', + 'videopress' => [ + '/^(?:http(?:s)?:\/\/)?videos\.files\.wordpress\.com\/([a-zA-Z\d]{8,})\//i', + '/^(?:http(?:s)?:\/\/)?(?:www\.)?video(?:\.word)?press\.com\/(?:v|embed)\/([a-zA-Z\d]{8,})(.+)?/i', + ], + ]; + + /** + * Embed patterns. + * + * Holds a list of supported providers with their embed patters. + * + * @since 1.5.0 + * @access private + * @static + * + * @var array Embed patters. + */ + private static $embed_patterns = [ + 'youtube' => 'https://www.youtube{NO_COOKIE}.com/embed/{VIDEO_ID}?feature=oembed', + 'vimeo' => 'https://player.vimeo.com/video/{VIDEO_ID}#t={TIME}', + 'dailymotion' => 'https://dailymotion.com/embed/video/{VIDEO_ID}', + 'videopress' => 'https://videopress.com/embed/{VIDEO_ID}', + ]; + + /** + * Get video properties. + * + * Retrieve the video properties for a given video URL. + * + * @since 1.5.0 + * @access public + * @static + * + * @param string $video_url Video URL. + * + * @return null|array The video properties, or null. + */ + public static function get_video_properties( $video_url ) { + foreach ( self::$provider_match_masks as $provider => $match_mask ) { + if ( ! is_array( $match_mask ) ) { + $match_mask = [ $match_mask ]; + } + + foreach ( $match_mask as $mask ) { + if ( preg_match( $mask, $video_url, $matches ) ) { + return [ + 'provider' => $provider, + 'video_id' => $matches[1], + ]; + } + } + } + + return null; + } + + /** + * Get embed URL. + * + * Retrieve the embed URL for a given video. + * + * @since 1.5.0 + * @access public + * @static + * + * @param string $video_url Video URL. + * @param array $embed_url_params Optional. Embed parameters. Default is an + * empty array. + * @param array $options Optional. Embed options. Default is an + * empty array. + * + * @return null|array The video properties, or null. + */ + public static function get_embed_url( $video_url, array $embed_url_params = [], array $options = [] ) { + $video_properties = self::get_video_properties( $video_url ); + + if ( ! $video_properties ) { + return null; + } + + $embed_pattern = self::$embed_patterns[ $video_properties['provider'] ]; + + $replacements = [ + '{VIDEO_ID}' => $video_properties['video_id'], + ]; + + if ( 'youtube' === $video_properties['provider'] ) { + $replacements['{NO_COOKIE}'] = ! empty( $options['privacy'] ) ? '-nocookie' : ''; + } elseif ( 'vimeo' === $video_properties['provider'] ) { + $time_text = ''; + + if ( ! empty( $options['start'] ) ) { + $time_text = date( 'H\hi\ms\s', $options['start'] ); // PHPCS:Ignore WordPress.DateTime.RestrictedFunctions.date_date + } + + $replacements['{TIME}'] = $time_text; + + /** + * Handle Vimeo private videos + * + * Vimeo requires an additional parameter when displaying private/unlisted videos. It has two ways of + * passing that parameter: + * * as an endpoint - vimeo.com/{video_id}/{privacy_token} + * OR + * * as a GET parameter named `h` - vimeo.com/{video_id}?h={privacy_token} + * + * The following regex match looks for either of these methods in the Vimeo URL, and if it finds a privacy + * token, it adds it to the embed params array as the `h` parameter (which is how Vimeo can receive it when + * using Oembed). + */ + $h_param = []; + preg_match( '/(?|(?:[\?|\&]h={1})([\w]+)|\d\/([\w]+))/', $video_url, $h_param ); + + if ( ! empty( $h_param ) ) { + $embed_url_params['h'] = $h_param[1]; + } + } + + $embed_pattern = str_replace( array_keys( $replacements ), $replacements, $embed_pattern ); + + return add_query_arg( $embed_url_params, $embed_pattern ); + } + + /** + * Get embed HTML. + * + * Retrieve the final HTML of the embedded URL. + * + * @since 1.5.0 + * @access public + * @static + * + * @param string $video_url Video URL. + * @param array $embed_url_params Optional. Embed parameters. Default is an + * empty array. + * @param array $options Optional. Embed options. Default is an + * empty array. + * @param array $frame_attributes Optional. IFrame attributes. Default is an + * empty array. + * + * @return string The embed HTML. + */ + public static function get_embed_html( $video_url, array $embed_url_params = [], array $options = [], array $frame_attributes = [] ) { + $video_properties = self::get_video_properties( $video_url ); + + $default_frame_attributes = [ + 'class' => 'elementor-video-iframe', + 'allowfullscreen', + 'allow' => 'clipboard-write', + 'title' => sprintf( + /* translators: %s: Video provider */ + __( '%s Video Player', 'elementor' ), + $video_properties['provider'] + ), + ]; + + $video_embed_url = self::get_embed_url( $video_url, $embed_url_params, $options ); + if ( ! $video_embed_url ) { + return null; + } + if ( ! isset( $options['lazy_load'] ) || ! $options['lazy_load'] ) { + $default_frame_attributes['src'] = $video_embed_url; + } else { + $default_frame_attributes['data-lazy-load'] = $video_embed_url; + } + + $frame_attributes = array_merge( $default_frame_attributes, $frame_attributes ); + + $attributes_for_print = []; + + foreach ( $frame_attributes as $attribute_key => $attribute_value ) { + $attribute_value = esc_attr( $attribute_value ); + + if ( is_numeric( $attribute_key ) ) { + $attributes_for_print[] = $attribute_value; + } else { + $attributes_for_print[] = sprintf( '%1$s="%2$s"', $attribute_key, $attribute_value ); + } + } + + $attributes_for_print = implode( ' ', $attributes_for_print ); + + $iframe_html = ""; + + /** This filter is documented in wp-includes/class-oembed.php */ + return apply_filters( 'oembed_result', $iframe_html, $video_url, $frame_attributes ); + } + + /** + * Get oembed data from the cache. + * if not exists in the cache it will fetch from provider and then save to the cache. + * + * @param $oembed_url + * @param $cached_post_id + * + * @return array|null + */ + public static function get_oembed_data( $oembed_url, $cached_post_id ) { + $cached_oembed_data = json_decode( get_post_meta( $cached_post_id, '_elementor_oembed_cache', true ), true ); + + if ( isset( $cached_oembed_data[ $oembed_url ] ) ) { + return $cached_oembed_data[ $oembed_url ]; + } + + $normalize_oembed_data = self::fetch_oembed_data( $oembed_url ); + + if ( ! $cached_oembed_data ) { + $cached_oembed_data = []; + } + + update_post_meta( $cached_post_id, '_elementor_oembed_cache', wp_json_encode( array_merge( + $cached_oembed_data, + [ + $oembed_url => $normalize_oembed_data, + ] + ) ) ); + + return $normalize_oembed_data; + } + + /** + * Fetch oembed data from oembed provider. + * + * @param $oembed_url + * + * @return array|null + */ + public static function fetch_oembed_data( $oembed_url ) { + $oembed_data = _wp_oembed_get_object()->get_data( $oembed_url ); + + if ( ! $oembed_data ) { + return null; + } + + return [ + 'thumbnail_url' => $oembed_data->thumbnail_url, + 'title' => $oembed_data->title, + ]; + } + + /** + * @param $oembed_url + * @param null|string|int $cached_post_id + * + * @return string|null + */ + public static function get_embed_thumbnail_html( $oembed_url, $cached_post_id = null ) { + $oembed_data = self::get_oembed_data( $oembed_url, $cached_post_id ); + + if ( ! $oembed_data ) { + return null; + } + + return '
    ' . sprintf( '%2$s', $oembed_data['thumbnail_url'], esc_attr( $oembed_data['title'] ), '100%' ) . '
    '; + } +} diff --git a/wp-content/plugins/elementor/includes/fonts.php b/wp-content/plugins/elementor/includes/fonts.php new file mode 100644 index 0000000..0f8f76b --- /dev/null +++ b/wp-content/plugins/elementor/includes/fonts.php @@ -0,0 +1,1716 @@ + esc_html__( 'System', 'elementor' ), + ]; + + if ( static::is_google_fonts_enabled() ) { + $font_groups = array_merge( $font_groups, [ + self::GOOGLE => esc_html__( 'Google', 'elementor' ), + self::EARLYACCESS => esc_html__( 'Google (Early Access)', 'elementor' ), + ] ); + } + + /** + * Font groups. + * + * Filters the fonts groups used by Elementor. + * + * @since 1.9.4 + * + * @param array $font_groups Font groups. + */ + $font_groups = apply_filters( 'elementor/fonts/groups', $font_groups ); + + self::$font_groups = $font_groups; + } + + return self::$font_groups; + } + + /** + * Get fonts. + * + * Retrieve the list of supported fonts. + * + * @since 1.0.0 + * @access public + * @static + * + * @return array Supported fonts. + */ + public static function get_fonts() { + if ( null === self::$fonts ) { + $additional_fonts = []; + + /** + * Additional fonts. + * + * Filters the fonts used by Elementor to add additional fonts. + * + * @since 1.9.4 + * + * @param array $additional_fonts Additional Elementor fonts. + */ + $additional_fonts = apply_filters( 'elementor/fonts/additional_fonts', $additional_fonts ); + + self::$fonts = array_replace( self::get_native_fonts(), $additional_fonts ); + } + + return self::$fonts; + } + + /** + * Get Elementor native fonts. + * + * Retrieve the list of supported fonts. + * + * @since 1.9.4 + * @access private + * @static + * + * @return array Supported fonts. + */ + private static function get_native_fonts() { + $fonts = [ + // System fonts. + 'Arial' => self::SYSTEM, + 'Tahoma' => self::SYSTEM, + 'Verdana' => self::SYSTEM, + 'Helvetica' => self::SYSTEM, + 'Times New Roman' => self::SYSTEM, + 'Trebuchet MS' => self::SYSTEM, + 'Georgia' => self::SYSTEM, + ]; + + if ( static::is_google_fonts_enabled() ) { + $fonts = array_merge( $fonts, [ + // Google Fonts (last update: 19/01/2023). + 'ABeeZee' => self::GOOGLE, + 'Abel' => self::GOOGLE, + 'Abhaya Libre' => self::GOOGLE, + 'Aboreto' => self::GOOGLE, + 'Abril Fatface' => self::GOOGLE, + 'Abyssinica SIL' => self::GOOGLE, + 'Aclonica' => self::GOOGLE, + 'Acme' => self::GOOGLE, + 'Actor' => self::GOOGLE, + 'Adamina' => self::GOOGLE, + 'Advent Pro' => self::GOOGLE, + 'Aguafina Script' => self::GOOGLE, + 'Akaya Kanadaka' => self::GOOGLE, + 'Akaya Telivigala' => self::GOOGLE, + 'Akronim' => self::GOOGLE, + 'Akshar' => self::GOOGLE, + 'Aladin' => self::GOOGLE, + 'Alata' => self::GOOGLE, + 'Alatsi' => self::GOOGLE, + 'Albert Sans' => self::GOOGLE, + 'Aldrich' => self::GOOGLE, + 'Alef' => self::GOOGLE, + 'Alef Hebrew' => self::EARLYACCESS, // Hack for Google Early Access. + 'Alegreya' => self::GOOGLE, + 'Alegreya SC' => self::GOOGLE, + 'Alegreya Sans' => self::GOOGLE, + 'Alegreya Sans SC' => self::GOOGLE, + 'Aleo' => self::GOOGLE, + 'Alex Brush' => self::GOOGLE, + 'Alexandria' => self::GOOGLE, + 'Alfa Slab One' => self::GOOGLE, + 'Alice' => self::GOOGLE, + 'Alike' => self::GOOGLE, + 'Alike Angular' => self::GOOGLE, + 'Alkalami' => self::GOOGLE, + 'Allan' => self::GOOGLE, + 'Allerta' => self::GOOGLE, + 'Allerta Stencil' => self::GOOGLE, + 'Allison' => self::GOOGLE, + 'Allura' => self::GOOGLE, + 'Almarai' => self::GOOGLE, + 'Almendra' => self::GOOGLE, + 'Almendra Display' => self::GOOGLE, + 'Almendra SC' => self::GOOGLE, + 'Alumni Sans' => self::GOOGLE, + 'Alumni Sans Collegiate One' => self::GOOGLE, + 'Alumni Sans Inline One' => self::GOOGLE, + 'Alumni Sans Pinstripe' => self::GOOGLE, + 'Amarante' => self::GOOGLE, + 'Amaranth' => self::GOOGLE, + 'Amatic SC' => self::GOOGLE, + 'Amethysta' => self::GOOGLE, + 'Amiko' => self::GOOGLE, + 'Amiri' => self::GOOGLE, + 'Amiri Quran' => self::GOOGLE, + 'Amita' => self::GOOGLE, + 'Anaheim' => self::GOOGLE, + 'Andada Pro' => self::GOOGLE, + 'Andika' => self::GOOGLE, + 'Anek Bangla' => self::GOOGLE, + 'Anek Devanagari' => self::GOOGLE, + 'Anek Gujarati' => self::GOOGLE, + 'Anek Gurmukhi' => self::GOOGLE, + 'Anek Kannada' => self::GOOGLE, + 'Anek Latin' => self::GOOGLE, + 'Anek Malayalam' => self::GOOGLE, + 'Anek Odia' => self::GOOGLE, + 'Anek Tamil' => self::GOOGLE, + 'Anek Telugu' => self::GOOGLE, + 'Angkor' => self::GOOGLE, + 'Annie Use Your Telescope' => self::GOOGLE, + 'Anonymous Pro' => self::GOOGLE, + 'Antic' => self::GOOGLE, + 'Antic Didone' => self::GOOGLE, + 'Antic Slab' => self::GOOGLE, + 'Anton' => self::GOOGLE, + 'Antonio' => self::GOOGLE, + 'Anybody' => self::GOOGLE, + 'Arapey' => self::GOOGLE, + 'Arbutus' => self::GOOGLE, + 'Arbutus Slab' => self::GOOGLE, + 'Architects Daughter' => self::GOOGLE, + 'Archivo' => self::GOOGLE, + 'Archivo Black' => self::GOOGLE, + 'Archivo Narrow' => self::GOOGLE, + 'Are You Serious' => self::GOOGLE, + 'Aref Ruqaa' => self::GOOGLE, + 'Aref Ruqaa Ink' => self::GOOGLE, + 'Arima' => self::GOOGLE, + 'Arima Madurai' => self::GOOGLE, + 'Arimo' => self::GOOGLE, + 'Arizonia' => self::GOOGLE, + 'Armata' => self::GOOGLE, + 'Arsenal' => self::GOOGLE, + 'Artifika' => self::GOOGLE, + 'Arvo' => self::GOOGLE, + 'Arya' => self::GOOGLE, + 'Asap' => self::GOOGLE, + 'Asap Condensed' => self::GOOGLE, + 'Asar' => self::GOOGLE, + 'Asset' => self::GOOGLE, + 'Assistant' => self::GOOGLE, + 'Astloch' => self::GOOGLE, + 'Asul' => self::GOOGLE, + 'Athiti' => self::GOOGLE, + 'Atkinson Hyperlegible' => self::GOOGLE, + 'Atma' => self::GOOGLE, + 'Atomic Age' => self::GOOGLE, + 'Aubrey' => self::GOOGLE, + 'Audiowide' => self::GOOGLE, + 'Autour One' => self::GOOGLE, + 'Average' => self::GOOGLE, + 'Average Sans' => self::GOOGLE, + 'Averia Gruesa Libre' => self::GOOGLE, + 'Averia Libre' => self::GOOGLE, + 'Averia Sans Libre' => self::GOOGLE, + 'Averia Serif Libre' => self::GOOGLE, + 'Azeret Mono' => self::GOOGLE, + 'B612' => self::GOOGLE, + 'B612 Mono' => self::GOOGLE, + 'BIZ UDGothic' => self::GOOGLE, + 'BIZ UDMincho' => self::GOOGLE, + 'BIZ UDPGothic' => self::GOOGLE, + 'BIZ UDPMincho' => self::GOOGLE, + 'Babylonica' => self::GOOGLE, + 'Bad Script' => self::GOOGLE, + 'Bahiana' => self::GOOGLE, + 'Bahianita' => self::GOOGLE, + 'Bai Jamjuree' => self::GOOGLE, + 'Bakbak One' => self::GOOGLE, + 'Ballet' => self::GOOGLE, + 'Baloo 2' => self::GOOGLE, + 'Baloo Bhai 2' => self::GOOGLE, + 'Baloo Bhaijaan 2' => self::GOOGLE, + 'Baloo Bhaina 2' => self::GOOGLE, + 'Baloo Chettan 2' => self::GOOGLE, + 'Baloo Da 2' => self::GOOGLE, + 'Baloo Paaji 2' => self::GOOGLE, + 'Baloo Tamma 2' => self::GOOGLE, + 'Baloo Tammudu 2' => self::GOOGLE, + 'Baloo Thambi 2' => self::GOOGLE, + 'Balsamiq Sans' => self::GOOGLE, + 'Balthazar' => self::GOOGLE, + 'Bangers' => self::GOOGLE, + 'Barlow' => self::GOOGLE, + 'Barlow Condensed' => self::GOOGLE, + 'Barlow Semi Condensed' => self::GOOGLE, + 'Barriecito' => self::GOOGLE, + 'Barrio' => self::GOOGLE, + 'Basic' => self::GOOGLE, + 'Baskervville' => self::GOOGLE, + 'Battambang' => self::GOOGLE, + 'Baumans' => self::GOOGLE, + 'Bayon' => self::GOOGLE, + 'Be Vietnam Pro' => self::GOOGLE, + 'Beau Rivage' => self::GOOGLE, + 'Bebas Neue' => self::GOOGLE, + 'Belgrano' => self::GOOGLE, + 'Bellefair' => self::GOOGLE, + 'Belleza' => self::GOOGLE, + 'Bellota' => self::GOOGLE, + 'Bellota Text' => self::GOOGLE, + 'BenchNine' => self::GOOGLE, + 'Benne' => self::GOOGLE, + 'Bentham' => self::GOOGLE, + 'Berkshire Swash' => self::GOOGLE, + 'Besley' => self::GOOGLE, + 'Beth Ellen' => self::GOOGLE, + 'Bevan' => self::GOOGLE, + 'BhuTuka Expanded One' => self::GOOGLE, + 'Big Shoulders Display' => self::GOOGLE, + 'Big Shoulders Inline Display' => self::GOOGLE, + 'Big Shoulders Inline Text' => self::GOOGLE, + 'Big Shoulders Stencil Display' => self::GOOGLE, + 'Big Shoulders Stencil Text' => self::GOOGLE, + 'Big Shoulders Text' => self::GOOGLE, + 'Bigelow Rules' => self::GOOGLE, + 'Bigshot One' => self::GOOGLE, + 'Bilbo' => self::GOOGLE, + 'Bilbo Swash Caps' => self::GOOGLE, + 'BioRhyme' => self::GOOGLE, + 'BioRhyme Expanded' => self::GOOGLE, + 'Birthstone' => self::GOOGLE, + 'Birthstone Bounce' => self::GOOGLE, + 'Biryani' => self::GOOGLE, + 'Bitter' => self::GOOGLE, + 'Black And White Picture' => self::GOOGLE, + 'Black Han Sans' => self::GOOGLE, + 'Black Ops One' => self::GOOGLE, + 'Blaka' => self::GOOGLE, + 'Blaka Hollow' => self::GOOGLE, + 'Blaka Ink' => self::GOOGLE, + 'Blinker' => self::GOOGLE, + 'Bodoni Moda' => self::GOOGLE, + 'Bokor' => self::GOOGLE, + 'Bona Nova' => self::GOOGLE, + 'Bonbon' => self::GOOGLE, + 'Bonheur Royale' => self::GOOGLE, + 'Boogaloo' => self::GOOGLE, + 'Bowlby One' => self::GOOGLE, + 'Bowlby One SC' => self::GOOGLE, + 'Brawler' => self::GOOGLE, + 'Bree Serif' => self::GOOGLE, + 'Brygada 1918' => self::GOOGLE, + 'Bubblegum Sans' => self::GOOGLE, + 'Bubbler One' => self::GOOGLE, + 'Buda' => self::GOOGLE, + 'Buenard' => self::GOOGLE, + 'Bungee' => self::GOOGLE, + 'Bungee Hairline' => self::GOOGLE, + 'Bungee Inline' => self::GOOGLE, + 'Bungee Outline' => self::GOOGLE, + 'Bungee Shade' => self::GOOGLE, + 'Bungee Spice' => self::GOOGLE, + 'Butcherman' => self::GOOGLE, + 'Butterfly Kids' => self::GOOGLE, + 'Cabin' => self::GOOGLE, + 'Cabin Condensed' => self::GOOGLE, + 'Cabin Sketch' => self::GOOGLE, + 'Caesar Dressing' => self::GOOGLE, + 'Cagliostro' => self::GOOGLE, + 'Cairo' => self::GOOGLE, + 'Cairo Play' => self::GOOGLE, + 'Caladea' => self::GOOGLE, + 'Calistoga' => self::GOOGLE, + 'Calligraffitti' => self::GOOGLE, + 'Cambay' => self::GOOGLE, + 'Cambo' => self::GOOGLE, + 'Candal' => self::GOOGLE, + 'Cantarell' => self::GOOGLE, + 'Cantata One' => self::GOOGLE, + 'Cantora One' => self::GOOGLE, + 'Capriola' => self::GOOGLE, + 'Caramel' => self::GOOGLE, + 'Carattere' => self::GOOGLE, + 'Cardo' => self::GOOGLE, + 'Carme' => self::GOOGLE, + 'Carrois Gothic' => self::GOOGLE, + 'Carrois Gothic SC' => self::GOOGLE, + 'Carter One' => self::GOOGLE, + 'Castoro' => self::GOOGLE, + 'Catamaran' => self::GOOGLE, + 'Caudex' => self::GOOGLE, + 'Caveat' => self::GOOGLE, + 'Caveat Brush' => self::GOOGLE, + 'Cedarville Cursive' => self::GOOGLE, + 'Ceviche One' => self::GOOGLE, + 'Chakra Petch' => self::GOOGLE, + 'Changa' => self::GOOGLE, + 'Changa One' => self::GOOGLE, + 'Chango' => self::GOOGLE, + 'Charis SIL' => self::GOOGLE, + 'Charm' => self::GOOGLE, + 'Charmonman' => self::GOOGLE, + 'Chathura' => self::GOOGLE, + 'Chau Philomene One' => self::GOOGLE, + 'Chela One' => self::GOOGLE, + 'Chelsea Market' => self::GOOGLE, + 'Chenla' => self::GOOGLE, + 'Cherish' => self::GOOGLE, + 'Cherry Cream Soda' => self::GOOGLE, + 'Cherry Swash' => self::GOOGLE, + 'Chewy' => self::GOOGLE, + 'Chicle' => self::GOOGLE, + 'Chilanka' => self::GOOGLE, + 'Chivo' => self::GOOGLE, + 'Chivo Mono' => self::GOOGLE, + 'Chonburi' => self::GOOGLE, + 'Cinzel' => self::GOOGLE, + 'Cinzel Decorative' => self::GOOGLE, + 'Clicker Script' => self::GOOGLE, + 'Coda' => self::GOOGLE, + 'Coda Caption' => self::GOOGLE, + 'Codystar' => self::GOOGLE, + 'Coiny' => self::GOOGLE, + 'Combo' => self::GOOGLE, + 'Comfortaa' => self::GOOGLE, + 'Comforter' => self::GOOGLE, + 'Comforter Brush' => self::GOOGLE, + 'Comic Neue' => self::GOOGLE, + 'Coming Soon' => self::GOOGLE, + 'Commissioner' => self::GOOGLE, + 'Concert One' => self::GOOGLE, + 'Condiment' => self::GOOGLE, + 'Content' => self::GOOGLE, + 'Contrail One' => self::GOOGLE, + 'Convergence' => self::GOOGLE, + 'Cookie' => self::GOOGLE, + 'Copse' => self::GOOGLE, + 'Corben' => self::GOOGLE, + 'Corinthia' => self::GOOGLE, + 'Cormorant' => self::GOOGLE, + 'Cormorant Garamond' => self::GOOGLE, + 'Cormorant Infant' => self::GOOGLE, + 'Cormorant SC' => self::GOOGLE, + 'Cormorant Unicase' => self::GOOGLE, + 'Cormorant Upright' => self::GOOGLE, + 'Courgette' => self::GOOGLE, + 'Courier Prime' => self::GOOGLE, + 'Cousine' => self::GOOGLE, + 'Coustard' => self::GOOGLE, + 'Covered By Your Grace' => self::GOOGLE, + 'Crafty Girls' => self::GOOGLE, + 'Creepster' => self::GOOGLE, + 'Crete Round' => self::GOOGLE, + 'Crimson Pro' => self::GOOGLE, + 'Crimson Text' => self::GOOGLE, + 'Croissant One' => self::GOOGLE, + 'Crushed' => self::GOOGLE, + 'Cuprum' => self::GOOGLE, + 'Cute Font' => self::GOOGLE, + 'Cutive' => self::GOOGLE, + 'Cutive Mono' => self::GOOGLE, + 'DM Mono' => self::GOOGLE, + 'DM Sans' => self::GOOGLE, + 'DM Serif Display' => self::GOOGLE, + 'DM Serif Text' => self::GOOGLE, + 'Damion' => self::GOOGLE, + 'Dancing Script' => self::GOOGLE, + 'Dangrek' => self::GOOGLE, + 'Darker Grotesque' => self::GOOGLE, + 'David Libre' => self::GOOGLE, + 'Dawning of a New Day' => self::GOOGLE, + 'Days One' => self::GOOGLE, + 'Dekko' => self::GOOGLE, + 'Dela Gothic One' => self::GOOGLE, + 'Delius' => self::GOOGLE, + 'Delius Swash Caps' => self::GOOGLE, + 'Delius Unicase' => self::GOOGLE, + 'Della Respira' => self::GOOGLE, + 'Denk One' => self::GOOGLE, + 'Devonshire' => self::GOOGLE, + 'Dhurjati' => self::GOOGLE, + 'Didact Gothic' => self::GOOGLE, + 'Diplomata' => self::GOOGLE, + 'Diplomata SC' => self::GOOGLE, + 'Do Hyeon' => self::GOOGLE, + 'Dokdo' => self::GOOGLE, + 'Domine' => self::GOOGLE, + 'Donegal One' => self::GOOGLE, + 'Dongle' => self::GOOGLE, + 'Doppio One' => self::GOOGLE, + 'Dorsa' => self::GOOGLE, + 'Dosis' => self::GOOGLE, + 'DotGothic16' => self::GOOGLE, + 'Dr Sugiyama' => self::GOOGLE, + 'Droid Arabic Kufi' => self::EARLYACCESS, // Hack for Google Early Access. + 'Droid Arabic Naskh' => self::EARLYACCESS, // Hack for Google Early Access. + 'Duru Sans' => self::GOOGLE, + 'DynaPuff' => self::GOOGLE, + 'Dynalight' => self::GOOGLE, + 'EB Garamond' => self::GOOGLE, + 'Eagle Lake' => self::GOOGLE, + 'East Sea Dokdo' => self::GOOGLE, + 'Eater' => self::GOOGLE, + 'Economica' => self::GOOGLE, + 'Eczar' => self::GOOGLE, + 'Edu NSW ACT Foundation' => self::GOOGLE, + 'Edu QLD Beginner' => self::GOOGLE, + 'Edu SA Beginner' => self::GOOGLE, + 'Edu TAS Beginner' => self::GOOGLE, + 'Edu VIC WA NT Beginner' => self::GOOGLE, + 'El Messiri' => self::GOOGLE, + 'Electrolize' => self::GOOGLE, + 'Elsie' => self::GOOGLE, + 'Elsie Swash Caps' => self::GOOGLE, + 'Emblema One' => self::GOOGLE, + 'Emilys Candy' => self::GOOGLE, + 'Encode Sans' => self::GOOGLE, + 'Encode Sans Condensed' => self::GOOGLE, + 'Encode Sans Expanded' => self::GOOGLE, + 'Encode Sans SC' => self::GOOGLE, + 'Encode Sans Semi Condensed' => self::GOOGLE, + 'Encode Sans Semi Expanded' => self::GOOGLE, + 'Engagement' => self::GOOGLE, + 'Englebert' => self::GOOGLE, + 'Enriqueta' => self::GOOGLE, + 'Ephesis' => self::GOOGLE, + 'Epilogue' => self::GOOGLE, + 'Erica One' => self::GOOGLE, + 'Esteban' => self::GOOGLE, + 'Estonia' => self::GOOGLE, + 'Euphoria Script' => self::GOOGLE, + 'Ewert' => self::GOOGLE, + 'Exo' => self::GOOGLE, + 'Exo 2' => self::GOOGLE, + 'Expletus Sans' => self::GOOGLE, + 'Explora' => self::GOOGLE, + 'Fahkwang' => self::GOOGLE, + 'Familjen Grotesk' => self::GOOGLE, + 'Fanwood Text' => self::GOOGLE, + 'Farro' => self::GOOGLE, + 'Farsan' => self::GOOGLE, + 'Fascinate' => self::GOOGLE, + 'Fascinate Inline' => self::GOOGLE, + 'Faster One' => self::GOOGLE, + 'Fasthand' => self::GOOGLE, + 'Fauna One' => self::GOOGLE, + 'Faustina' => self::GOOGLE, + 'Federant' => self::GOOGLE, + 'Federo' => self::GOOGLE, + 'Felipa' => self::GOOGLE, + 'Fenix' => self::GOOGLE, + 'Festive' => self::GOOGLE, + 'Figtree' => self::GOOGLE, + 'Finger Paint' => self::GOOGLE, + 'Finlandica' => self::GOOGLE, + 'Fira Code' => self::GOOGLE, + 'Fira Mono' => self::GOOGLE, + 'Fira Sans' => self::GOOGLE, + 'Fira Sans Condensed' => self::GOOGLE, + 'Fira Sans Extra Condensed' => self::GOOGLE, + 'Fjalla One' => self::GOOGLE, + 'Fjord One' => self::GOOGLE, + 'Flamenco' => self::GOOGLE, + 'Flavors' => self::GOOGLE, + 'Fleur De Leah' => self::GOOGLE, + 'Flow Block' => self::GOOGLE, + 'Flow Circular' => self::GOOGLE, + 'Flow Rounded' => self::GOOGLE, + 'Fondamento' => self::GOOGLE, + 'Fontdiner Swanky' => self::GOOGLE, + 'Forum' => self::GOOGLE, + 'Fragment Mono' => self::GOOGLE, + 'Francois One' => self::GOOGLE, + 'Frank Ruhl Libre' => self::GOOGLE, + 'Fraunces' => self::GOOGLE, + 'Freckle Face' => self::GOOGLE, + 'Fredericka the Great' => self::GOOGLE, + 'Fredoka' => self::GOOGLE, + 'Fredoka One' => self::GOOGLE, + 'Freehand' => self::GOOGLE, + 'Fresca' => self::GOOGLE, + 'Frijole' => self::GOOGLE, + 'Fruktur' => self::GOOGLE, + 'Fugaz One' => self::GOOGLE, + 'Fuggles' => self::GOOGLE, + 'Fuzzy Bubbles' => self::GOOGLE, + 'GFS Didot' => self::GOOGLE, + 'GFS Neohellenic' => self::GOOGLE, + 'Gabriela' => self::GOOGLE, + 'Gaegu' => self::GOOGLE, + 'Gafata' => self::GOOGLE, + 'Galada' => self::GOOGLE, + 'Galdeano' => self::GOOGLE, + 'Galindo' => self::GOOGLE, + 'Gamja Flower' => self::GOOGLE, + 'Gantari' => self::GOOGLE, + 'Gayathri' => self::GOOGLE, + 'Gelasio' => self::GOOGLE, + 'Gemunu Libre' => self::GOOGLE, + 'Genos' => self::GOOGLE, + 'Gentium Book Basic' => self::GOOGLE, + 'Gentium Book Plus' => self::GOOGLE, + 'Gentium Plus' => self::GOOGLE, + 'Geo' => self::GOOGLE, + 'Georama' => self::GOOGLE, + 'Geostar' => self::GOOGLE, + 'Geostar Fill' => self::GOOGLE, + 'Germania One' => self::GOOGLE, + 'Gideon Roman' => self::GOOGLE, + 'Gidugu' => self::GOOGLE, + 'Gilda Display' => self::GOOGLE, + 'Girassol' => self::GOOGLE, + 'Give You Glory' => self::GOOGLE, + 'Glass Antiqua' => self::GOOGLE, + 'Glegoo' => self::GOOGLE, + 'Gloria Hallelujah' => self::GOOGLE, + 'Glory' => self::GOOGLE, + 'Gluten' => self::GOOGLE, + 'Goblin One' => self::GOOGLE, + 'Gochi Hand' => self::GOOGLE, + 'Goldman' => self::GOOGLE, + 'Gorditas' => self::GOOGLE, + 'Gothic A1' => self::GOOGLE, + 'Gotu' => self::GOOGLE, + 'Goudy Bookletter 1911' => self::GOOGLE, + 'Gowun Batang' => self::GOOGLE, + 'Gowun Dodum' => self::GOOGLE, + 'Graduate' => self::GOOGLE, + 'Grand Hotel' => self::GOOGLE, + 'Grandstander' => self::GOOGLE, + 'Grape Nuts' => self::GOOGLE, + 'Gravitas One' => self::GOOGLE, + 'Great Vibes' => self::GOOGLE, + 'Grechen Fuemen' => self::GOOGLE, + 'Grenze' => self::GOOGLE, + 'Grenze Gotisch' => self::GOOGLE, + 'Grey Qo' => self::GOOGLE, + 'Griffy' => self::GOOGLE, + 'Gruppo' => self::GOOGLE, + 'Gudea' => self::GOOGLE, + 'Gugi' => self::GOOGLE, + 'Gulzar' => self::GOOGLE, + 'Gupter' => self::GOOGLE, + 'Gurajada' => self::GOOGLE, + 'Gwendolyn' => self::GOOGLE, + 'Habibi' => self::GOOGLE, + 'Hachi Maru Pop' => self::GOOGLE, + 'Hahmlet' => self::GOOGLE, + 'Halant' => self::GOOGLE, + 'Hammersmith One' => self::GOOGLE, + 'Hanalei' => self::GOOGLE, + 'Hanalei Fill' => self::GOOGLE, + 'Handlee' => self::GOOGLE, + 'Hanken Grotesk' => self::GOOGLE, + 'Hanuman' => self::GOOGLE, + 'Happy Monkey' => self::GOOGLE, + 'Harmattan' => self::GOOGLE, + 'Headland One' => self::GOOGLE, + 'Heebo' => self::GOOGLE, + 'Henny Penny' => self::GOOGLE, + 'Hepta Slab' => self::GOOGLE, + 'Herr Von Muellerhoff' => self::GOOGLE, + 'Hi Melody' => self::GOOGLE, + 'Hina Mincho' => self::GOOGLE, + 'Hind' => self::GOOGLE, + 'Hind Guntur' => self::GOOGLE, + 'Hind Madurai' => self::GOOGLE, + 'Hind Siliguri' => self::GOOGLE, + 'Hind Vadodara' => self::GOOGLE, + 'Holtwood One SC' => self::GOOGLE, + 'Homemade Apple' => self::GOOGLE, + 'Homenaje' => self::GOOGLE, + 'Hubballi' => self::GOOGLE, + 'Hurricane' => self::GOOGLE, + 'IBM Plex Mono' => self::GOOGLE, + 'IBM Plex Sans' => self::GOOGLE, + 'IBM Plex Sans Arabic' => self::GOOGLE, + 'IBM Plex Sans Condensed' => self::GOOGLE, + 'IBM Plex Sans Devanagari' => self::GOOGLE, + 'IBM Plex Sans Hebrew' => self::GOOGLE, + 'IBM Plex Sans JP' => self::GOOGLE, + 'IBM Plex Sans KR' => self::GOOGLE, + 'IBM Plex Sans Thai' => self::GOOGLE, + 'IBM Plex Sans Thai Looped' => self::GOOGLE, + 'IBM Plex Serif' => self::GOOGLE, + 'IM Fell DW Pica' => self::GOOGLE, + 'IM Fell DW Pica SC' => self::GOOGLE, + 'IM Fell Double Pica' => self::GOOGLE, + 'IM Fell Double Pica SC' => self::GOOGLE, + 'IM Fell English' => self::GOOGLE, + 'IM Fell English SC' => self::GOOGLE, + 'IM Fell French Canon' => self::GOOGLE, + 'IM Fell French Canon SC' => self::GOOGLE, + 'IM Fell Great Primer' => self::GOOGLE, + 'IM Fell Great Primer SC' => self::GOOGLE, + 'Ibarra Real Nova' => self::GOOGLE, + 'Iceberg' => self::GOOGLE, + 'Iceland' => self::GOOGLE, + 'Imbue' => self::GOOGLE, + 'Imperial Script' => self::GOOGLE, + 'Imprima' => self::GOOGLE, + 'Inconsolata' => self::GOOGLE, + 'Inder' => self::GOOGLE, + 'Indie Flower' => self::GOOGLE, + 'Ingrid Darling' => self::GOOGLE, + 'Inika' => self::GOOGLE, + 'Inknut Antiqua' => self::GOOGLE, + 'Inria Sans' => self::GOOGLE, + 'Inria Serif' => self::GOOGLE, + 'Inspiration' => self::GOOGLE, + 'Inter' => self::GOOGLE, + 'Inter Tight' => self::GOOGLE, + 'Irish Grover' => self::GOOGLE, + 'Island Moments' => self::GOOGLE, + 'Istok Web' => self::GOOGLE, + 'Italiana' => self::GOOGLE, + 'Italianno' => self::GOOGLE, + 'Itim' => self::GOOGLE, + 'Jacques Francois' => self::GOOGLE, + 'Jacques Francois Shadow' => self::GOOGLE, + 'Jaldi' => self::GOOGLE, + 'JetBrains Mono' => self::GOOGLE, + 'Jim Nightshade' => self::GOOGLE, + 'Joan' => self::GOOGLE, + 'Jockey One' => self::GOOGLE, + 'Jolly Lodger' => self::GOOGLE, + 'Jomhuria' => self::GOOGLE, + 'Jomolhari' => self::GOOGLE, + 'Josefin Sans' => self::GOOGLE, + 'Josefin Slab' => self::GOOGLE, + 'Jost' => self::GOOGLE, + 'Joti One' => self::GOOGLE, + 'Jua' => self::GOOGLE, + 'Judson' => self::GOOGLE, + 'Julee' => self::GOOGLE, + 'Julius Sans One' => self::GOOGLE, + 'Junge' => self::GOOGLE, + 'Jura' => self::GOOGLE, + 'Just Another Hand' => self::GOOGLE, + 'Just Me Again Down Here' => self::GOOGLE, + 'K2D' => self::GOOGLE, + 'Kadwa' => self::GOOGLE, + 'Kaisei Decol' => self::GOOGLE, + 'Kaisei HarunoUmi' => self::GOOGLE, + 'Kaisei Opti' => self::GOOGLE, + 'Kaisei Tokumin' => self::GOOGLE, + 'Kalam' => self::GOOGLE, + 'Kameron' => self::GOOGLE, + 'Kanit' => self::GOOGLE, + 'Kantumruy' => self::GOOGLE, + 'Kantumruy Pro' => self::GOOGLE, + 'Karantina' => self::GOOGLE, + 'Karla' => self::GOOGLE, + 'Karma' => self::GOOGLE, + 'Katibeh' => self::GOOGLE, + 'Kaushan Script' => self::GOOGLE, + 'Kavivanar' => self::GOOGLE, + 'Kavoon' => self::GOOGLE, + 'Kdam Thmor Pro' => self::GOOGLE, + 'Keania One' => self::GOOGLE, + 'Kelly Slab' => self::GOOGLE, + 'Kenia' => self::GOOGLE, + 'Khand' => self::GOOGLE, + 'Khmer' => self::GOOGLE, + 'Khula' => self::GOOGLE, + 'Kings' => self::GOOGLE, + 'Kirang Haerang' => self::GOOGLE, + 'Kite One' => self::GOOGLE, + 'Kiwi Maru' => self::GOOGLE, + 'Klee One' => self::GOOGLE, + 'Knewave' => self::GOOGLE, + 'KoHo' => self::GOOGLE, + 'Kodchasan' => self::GOOGLE, + 'Koh Santepheap' => self::GOOGLE, + 'Kolker Brush' => self::GOOGLE, + 'Kosugi' => self::GOOGLE, + 'Kosugi Maru' => self::GOOGLE, + 'Kotta One' => self::GOOGLE, + 'Koulen' => self::GOOGLE, + 'Kranky' => self::GOOGLE, + 'Kreon' => self::GOOGLE, + 'Kristi' => self::GOOGLE, + 'Krona One' => self::GOOGLE, + 'Krub' => self::GOOGLE, + 'Kufam' => self::GOOGLE, + 'Kulim Park' => self::GOOGLE, + 'Kumar One' => self::GOOGLE, + 'Kumar One Outline' => self::GOOGLE, + 'Kumbh Sans' => self::GOOGLE, + 'Kurale' => self::GOOGLE, + 'La Belle Aurore' => self::GOOGLE, + 'Lacquer' => self::GOOGLE, + 'Laila' => self::GOOGLE, + 'Lakki Reddy' => self::GOOGLE, + 'Lalezar' => self::GOOGLE, + 'Lancelot' => self::GOOGLE, + 'Langar' => self::GOOGLE, + 'Lateef' => self::GOOGLE, + 'Lato' => self::GOOGLE, + 'Lavishly Yours' => self::GOOGLE, + 'League Gothic' => self::GOOGLE, + 'League Script' => self::GOOGLE, + 'League Spartan' => self::GOOGLE, + 'Leckerli One' => self::GOOGLE, + 'Ledger' => self::GOOGLE, + 'Lekton' => self::GOOGLE, + 'Lemon' => self::GOOGLE, + 'Lemonada' => self::GOOGLE, + 'Lexend' => self::GOOGLE, + 'Lexend Deca' => self::GOOGLE, + 'Lexend Exa' => self::GOOGLE, + 'Lexend Giga' => self::GOOGLE, + 'Lexend Mega' => self::GOOGLE, + 'Lexend Peta' => self::GOOGLE, + 'Lexend Tera' => self::GOOGLE, + 'Lexend Zetta' => self::GOOGLE, + 'Libre Barcode 128' => self::GOOGLE, + 'Libre Barcode 128 Text' => self::GOOGLE, + 'Libre Barcode 39' => self::GOOGLE, + 'Libre Barcode 39 Extended' => self::GOOGLE, + 'Libre Barcode 39 Extended Text' => self::GOOGLE, + 'Libre Barcode 39 Text' => self::GOOGLE, + 'Libre Barcode EAN13 Text' => self::GOOGLE, + 'Libre Baskerville' => self::GOOGLE, + 'Libre Bodoni' => self::GOOGLE, + 'Libre Caslon Display' => self::GOOGLE, + 'Libre Caslon Text' => self::GOOGLE, + 'Libre Franklin' => self::GOOGLE, + 'Licorice' => self::GOOGLE, + 'Life Savers' => self::GOOGLE, + 'Lilita One' => self::GOOGLE, + 'Lily Script One' => self::GOOGLE, + 'Limelight' => self::GOOGLE, + 'Linden Hill' => self::GOOGLE, + 'Literata' => self::GOOGLE, + 'Liu Jian Mao Cao' => self::GOOGLE, + 'Livvic' => self::GOOGLE, + 'Lobster' => self::GOOGLE, + 'Lobster Two' => self::GOOGLE, + 'Londrina Outline' => self::GOOGLE, + 'Londrina Shadow' => self::GOOGLE, + 'Londrina Sketch' => self::GOOGLE, + 'Londrina Solid' => self::GOOGLE, + 'Long Cang' => self::GOOGLE, + 'Lora' => self::GOOGLE, + 'Love Light' => self::GOOGLE, + 'Love Ya Like A Sister' => self::GOOGLE, + 'Loved by the King' => self::GOOGLE, + 'Lovers Quarrel' => self::GOOGLE, + 'Luckiest Guy' => self::GOOGLE, + 'Lusitana' => self::GOOGLE, + 'Lustria' => self::GOOGLE, + 'Luxurious Roman' => self::GOOGLE, + 'Luxurious Script' => self::GOOGLE, + 'M PLUS 1' => self::GOOGLE, + 'M PLUS 1 Code' => self::GOOGLE, + 'M PLUS 1p' => self::GOOGLE, + 'M PLUS 2' => self::GOOGLE, + 'M PLUS Code Latin' => self::GOOGLE, + 'M PLUS Rounded 1c' => self::GOOGLE, + 'Ma Shan Zheng' => self::GOOGLE, + 'Macondo' => self::GOOGLE, + 'Macondo Swash Caps' => self::GOOGLE, + 'Mada' => self::GOOGLE, + 'Magra' => self::GOOGLE, + 'Maiden Orange' => self::GOOGLE, + 'Maitree' => self::GOOGLE, + 'Major Mono Display' => self::GOOGLE, + 'Mako' => self::GOOGLE, + 'Mali' => self::GOOGLE, + 'Mallanna' => self::GOOGLE, + 'Mandali' => self::GOOGLE, + 'Manjari' => self::GOOGLE, + 'Manrope' => self::GOOGLE, + 'Mansalva' => self::GOOGLE, + 'Manuale' => self::GOOGLE, + 'Marcellus' => self::GOOGLE, + 'Marcellus SC' => self::GOOGLE, + 'Marck Script' => self::GOOGLE, + 'Margarine' => self::GOOGLE, + 'Marhey' => self::GOOGLE, + 'Markazi Text' => self::GOOGLE, + 'Marko One' => self::GOOGLE, + 'Marmelad' => self::GOOGLE, + 'Martel' => self::GOOGLE, + 'Martel Sans' => self::GOOGLE, + 'Martian Mono' => self::GOOGLE, + 'Marvel' => self::GOOGLE, + 'Mate' => self::GOOGLE, + 'Mate SC' => self::GOOGLE, + 'Maven Pro' => self::GOOGLE, + 'McLaren' => self::GOOGLE, + 'Mea Culpa' => self::GOOGLE, + 'Meddon' => self::GOOGLE, + 'MedievalSharp' => self::GOOGLE, + 'Medula One' => self::GOOGLE, + 'Meera Inimai' => self::GOOGLE, + 'Megrim' => self::GOOGLE, + 'Meie Script' => self::GOOGLE, + 'Meow Script' => self::GOOGLE, + 'Merienda' => self::GOOGLE, + 'Merienda One' => self::GOOGLE, + 'Merriweather' => self::GOOGLE, + 'Merriweather Sans' => self::GOOGLE, + 'Metal' => self::GOOGLE, + 'Metal Mania' => self::GOOGLE, + 'Metamorphous' => self::GOOGLE, + 'Metrophobic' => self::GOOGLE, + 'Michroma' => self::GOOGLE, + 'Milonga' => self::GOOGLE, + 'Miltonian' => self::GOOGLE, + 'Miltonian Tattoo' => self::GOOGLE, + 'Mina' => self::GOOGLE, + 'Mingzat' => self::GOOGLE, + 'Miniver' => self::GOOGLE, + 'Miriam Libre' => self::GOOGLE, + 'Mirza' => self::GOOGLE, + 'Miss Fajardose' => self::GOOGLE, + 'Mitr' => self::GOOGLE, + 'Mochiy Pop One' => self::GOOGLE, + 'Mochiy Pop P One' => self::GOOGLE, + 'Modak' => self::GOOGLE, + 'Modern Antiqua' => self::GOOGLE, + 'Mogra' => self::GOOGLE, + 'Mohave' => self::GOOGLE, + 'Molengo' => self::GOOGLE, + 'Molle' => self::GOOGLE, + 'Monda' => self::GOOGLE, + 'Monofett' => self::GOOGLE, + 'Monoton' => self::GOOGLE, + 'Monsieur La Doulaise' => self::GOOGLE, + 'Montaga' => self::GOOGLE, + 'Montagu Slab' => self::GOOGLE, + 'MonteCarlo' => self::GOOGLE, + 'Montez' => self::GOOGLE, + 'Montserrat' => self::GOOGLE, + 'Montserrat Alternates' => self::GOOGLE, + 'Montserrat Subrayada' => self::GOOGLE, + 'Moo Lah Lah' => self::GOOGLE, + 'Moon Dance' => self::GOOGLE, + 'Moul' => self::GOOGLE, + 'Moulpali' => self::GOOGLE, + 'Mountains of Christmas' => self::GOOGLE, + 'Mouse Memoirs' => self::GOOGLE, + 'Mr Bedfort' => self::GOOGLE, + 'Mr Dafoe' => self::GOOGLE, + 'Mr De Haviland' => self::GOOGLE, + 'Mrs Saint Delafield' => self::GOOGLE, + 'Mrs Sheppards' => self::GOOGLE, + 'Ms Madi' => self::GOOGLE, + 'Mukta' => self::GOOGLE, + 'Mukta Mahee' => self::GOOGLE, + 'Mukta Malar' => self::GOOGLE, + 'Mukta Vaani' => self::GOOGLE, + 'Mulish' => self::GOOGLE, + 'Murecho' => self::GOOGLE, + 'MuseoModerno' => self::GOOGLE, + 'My Soul' => self::GOOGLE, + 'Mystery Quest' => self::GOOGLE, + 'NTR' => self::GOOGLE, + 'Nabla' => self::GOOGLE, + 'Nanum Brush Script' => self::GOOGLE, + 'Nanum Gothic' => self::GOOGLE, + 'Nanum Gothic Coding' => self::GOOGLE, + 'Nanum Myeongjo' => self::GOOGLE, + 'Nanum Pen Script' => self::GOOGLE, + 'Neonderthaw' => self::GOOGLE, + 'Nerko One' => self::GOOGLE, + 'Neucha' => self::GOOGLE, + 'Neuton' => self::GOOGLE, + 'New Rocker' => self::GOOGLE, + 'New Tegomin' => self::GOOGLE, + 'News Cycle' => self::GOOGLE, + 'Newsreader' => self::GOOGLE, + 'Niconne' => self::GOOGLE, + 'Niramit' => self::GOOGLE, + 'Nixie One' => self::GOOGLE, + 'Nobile' => self::GOOGLE, + 'Nokora' => self::GOOGLE, + 'Norican' => self::GOOGLE, + 'Nosifer' => self::GOOGLE, + 'Notable' => self::GOOGLE, + 'Nothing You Could Do' => self::GOOGLE, + 'Noticia Text' => self::GOOGLE, + 'Noto Color Emoji' => self::GOOGLE, + 'Noto Emoji' => self::GOOGLE, + 'Noto Kufi Arabic' => self::EARLYACCESS, // Hack for Google Early Access. + 'Noto Music' => self::GOOGLE, + 'Noto Naskh Arabic' => self::EARLYACCESS, // Hack for Google Early Access. + 'Noto Nastaliq Urdu' => self::GOOGLE, + 'Noto Rashi Hebrew' => self::GOOGLE, + 'Noto Sans' => self::GOOGLE, + 'Noto Sans Adlam' => self::GOOGLE, + 'Noto Sans Adlam Unjoined' => self::GOOGLE, + 'Noto Sans Anatolian Hieroglyphs' => self::GOOGLE, + 'Noto Sans Arabic' => self::GOOGLE, + 'Noto Sans Armenian' => self::GOOGLE, + 'Noto Sans Avestan' => self::GOOGLE, + 'Noto Sans Balinese' => self::GOOGLE, + 'Noto Sans Bamum' => self::GOOGLE, + 'Noto Sans Bassa Vah' => self::GOOGLE, + 'Noto Sans Batak' => self::GOOGLE, + 'Noto Sans Bengali' => self::GOOGLE, + 'Noto Sans Bhaiksuki' => self::GOOGLE, + 'Noto Sans Brahmi' => self::GOOGLE, + 'Noto Sans Buginese' => self::GOOGLE, + 'Noto Sans Buhid' => self::GOOGLE, + 'Noto Sans Canadian Aboriginal' => self::GOOGLE, + 'Noto Sans Carian' => self::GOOGLE, + 'Noto Sans Caucasian Albanian' => self::GOOGLE, + 'Noto Sans Chakma' => self::GOOGLE, + 'Noto Sans Cham' => self::GOOGLE, + 'Noto Sans Cherokee' => self::GOOGLE, + 'Noto Sans Coptic' => self::GOOGLE, + 'Noto Sans Cuneiform' => self::GOOGLE, + 'Noto Sans Cypriot' => self::GOOGLE, + 'Noto Sans Deseret' => self::GOOGLE, + 'Noto Sans Devanagari' => self::GOOGLE, + 'Noto Sans Display' => self::GOOGLE, + 'Noto Sans Duployan' => self::GOOGLE, + 'Noto Sans Egyptian Hieroglyphs' => self::GOOGLE, + 'Noto Sans Elbasan' => self::GOOGLE, + 'Noto Sans Elymaic' => self::GOOGLE, + 'Noto Sans Ethiopic' => self::GOOGLE, + 'Noto Sans Georgian' => self::GOOGLE, + 'Noto Sans Glagolitic' => self::GOOGLE, + 'Noto Sans Gothic' => self::GOOGLE, + 'Noto Sans Grantha' => self::GOOGLE, + 'Noto Sans Gujarati' => self::GOOGLE, + 'Noto Sans Gunjala Gondi' => self::GOOGLE, + 'Noto Sans Gurmukhi' => self::GOOGLE, + 'Noto Sans HK' => self::GOOGLE, + 'Noto Sans Hanifi Rohingya' => self::GOOGLE, + 'Noto Sans Hanunoo' => self::GOOGLE, + 'Noto Sans Hatran' => self::GOOGLE, + 'Noto Sans Hebrew' => self::EARLYACCESS, // Hack for Google Early Access. + 'Noto Sans Imperial Aramaic' => self::GOOGLE, + 'Noto Sans Indic Siyaq Numbers' => self::GOOGLE, + 'Noto Sans Inscriptional Pahlavi' => self::GOOGLE, + 'Noto Sans Inscriptional Parthian' => self::GOOGLE, + 'Noto Sans JP' => self::GOOGLE, + 'Noto Sans Javanese' => self::GOOGLE, + 'Noto Sans KR' => self::GOOGLE, + 'Noto Sans Kaithi' => self::GOOGLE, + 'Noto Sans Kannada' => self::GOOGLE, + 'Noto Sans Kayah Li' => self::GOOGLE, + 'Noto Sans Kharoshthi' => self::GOOGLE, + 'Noto Sans Khmer' => self::GOOGLE, + 'Noto Sans Khojki' => self::GOOGLE, + 'Noto Sans Khudawadi' => self::GOOGLE, + 'Noto Sans Lao' => self::GOOGLE, + 'Noto Sans Lao Looped' => self::GOOGLE, + 'Noto Sans Lepcha' => self::GOOGLE, + 'Noto Sans Limbu' => self::GOOGLE, + 'Noto Sans Linear A' => self::GOOGLE, + 'Noto Sans Linear B' => self::GOOGLE, + 'Noto Sans Lisu' => self::GOOGLE, + 'Noto Sans Lycian' => self::GOOGLE, + 'Noto Sans Lydian' => self::GOOGLE, + 'Noto Sans Mahajani' => self::GOOGLE, + 'Noto Sans Malayalam' => self::GOOGLE, + 'Noto Sans Mandaic' => self::GOOGLE, + 'Noto Sans Manichaean' => self::GOOGLE, + 'Noto Sans Marchen' => self::GOOGLE, + 'Noto Sans Masaram Gondi' => self::GOOGLE, + 'Noto Sans Math' => self::GOOGLE, + 'Noto Sans Mayan Numerals' => self::GOOGLE, + 'Noto Sans Medefaidrin' => self::GOOGLE, + 'Noto Sans Meetei Mayek' => self::GOOGLE, + 'Noto Sans Mende Kikakui' => self::GOOGLE, + 'Noto Sans Meroitic' => self::GOOGLE, + 'Noto Sans Miao' => self::GOOGLE, + 'Noto Sans Modi' => self::GOOGLE, + 'Noto Sans Mongolian' => self::GOOGLE, + 'Noto Sans Mono' => self::GOOGLE, + 'Noto Sans Mro' => self::GOOGLE, + 'Noto Sans Multani' => self::GOOGLE, + 'Noto Sans Myanmar' => self::GOOGLE, + 'Noto Sans N Ko' => self::GOOGLE, + 'Noto Sans Nabataean' => self::GOOGLE, + 'Noto Sans New Tai Lue' => self::GOOGLE, + 'Noto Sans Newa' => self::GOOGLE, + 'Noto Sans Nushu' => self::GOOGLE, + 'Noto Sans Ogham' => self::GOOGLE, + 'Noto Sans Ol Chiki' => self::GOOGLE, + 'Noto Sans Old Hungarian' => self::GOOGLE, + 'Noto Sans Old Italic' => self::GOOGLE, + 'Noto Sans Old North Arabian' => self::GOOGLE, + 'Noto Sans Old Permic' => self::GOOGLE, + 'Noto Sans Old Persian' => self::GOOGLE, + 'Noto Sans Old Sogdian' => self::GOOGLE, + 'Noto Sans Old South Arabian' => self::GOOGLE, + 'Noto Sans Old Turkic' => self::GOOGLE, + 'Noto Sans Oriya' => self::GOOGLE, + 'Noto Sans Osage' => self::GOOGLE, + 'Noto Sans Osmanya' => self::GOOGLE, + 'Noto Sans Pahawh Hmong' => self::GOOGLE, + 'Noto Sans Palmyrene' => self::GOOGLE, + 'Noto Sans Pau Cin Hau' => self::GOOGLE, + 'Noto Sans Phags Pa' => self::GOOGLE, + 'Noto Sans Phoenician' => self::GOOGLE, + 'Noto Sans Psalter Pahlavi' => self::GOOGLE, + 'Noto Sans Rejang' => self::GOOGLE, + 'Noto Sans Runic' => self::GOOGLE, + 'Noto Sans SC' => self::GOOGLE, + 'Noto Sans Samaritan' => self::GOOGLE, + 'Noto Sans Saurashtra' => self::GOOGLE, + 'Noto Sans Sharada' => self::GOOGLE, + 'Noto Sans Shavian' => self::GOOGLE, + 'Noto Sans Siddham' => self::GOOGLE, + 'Noto Sans SignWriting' => self::GOOGLE, + 'Noto Sans Sinhala' => self::GOOGLE, + 'Noto Sans Sogdian' => self::GOOGLE, + 'Noto Sans Sora Sompeng' => self::GOOGLE, + 'Noto Sans Soyombo' => self::GOOGLE, + 'Noto Sans Sundanese' => self::GOOGLE, + 'Noto Sans Syloti Nagri' => self::GOOGLE, + 'Noto Sans Symbols' => self::GOOGLE, + 'Noto Sans Symbols 2' => self::GOOGLE, + 'Noto Sans Syriac' => self::GOOGLE, + 'Noto Sans TC' => self::GOOGLE, + 'Noto Sans Tagalog' => self::GOOGLE, + 'Noto Sans Tagbanwa' => self::GOOGLE, + 'Noto Sans Tai Le' => self::GOOGLE, + 'Noto Sans Tai Tham' => self::GOOGLE, + 'Noto Sans Tai Viet' => self::GOOGLE, + 'Noto Sans Takri' => self::GOOGLE, + 'Noto Sans Tamil' => self::GOOGLE, + 'Noto Sans Tamil Supplement' => self::GOOGLE, + 'Noto Sans Tangsa' => self::GOOGLE, + 'Noto Sans Telugu' => self::GOOGLE, + 'Noto Sans Thaana' => self::GOOGLE, + 'Noto Sans Thai' => self::GOOGLE, + 'Noto Sans Thai Looped' => self::GOOGLE, + 'Noto Sans Tifinagh' => self::GOOGLE, + 'Noto Sans Tirhuta' => self::GOOGLE, + 'Noto Sans Ugaritic' => self::GOOGLE, + 'Noto Sans Vai' => self::GOOGLE, + 'Noto Sans Wancho' => self::GOOGLE, + 'Noto Sans Warang Citi' => self::GOOGLE, + 'Noto Sans Yi' => self::GOOGLE, + 'Noto Sans Zanabazar Square' => self::GOOGLE, + 'Noto Serif' => self::GOOGLE, + 'Noto Serif Ahom' => self::GOOGLE, + 'Noto Serif Armenian' => self::GOOGLE, + 'Noto Serif Balinese' => self::GOOGLE, + 'Noto Serif Bengali' => self::GOOGLE, + 'Noto Serif Devanagari' => self::GOOGLE, + 'Noto Serif Display' => self::GOOGLE, + 'Noto Serif Dogra' => self::GOOGLE, + 'Noto Serif Ethiopic' => self::GOOGLE, + 'Noto Serif Georgian' => self::GOOGLE, + 'Noto Serif Grantha' => self::GOOGLE, + 'Noto Serif Gujarati' => self::GOOGLE, + 'Noto Serif Gurmukhi' => self::GOOGLE, + 'Noto Serif HK' => self::GOOGLE, + 'Noto Serif Hebrew' => self::GOOGLE, + 'Noto Serif JP' => self::GOOGLE, + 'Noto Serif KR' => self::GOOGLE, + 'Noto Serif Kannada' => self::GOOGLE, + 'Noto Serif Khmer' => self::GOOGLE, + 'Noto Serif Khojki' => self::GOOGLE, + 'Noto Serif Lao' => self::GOOGLE, + 'Noto Serif Malayalam' => self::GOOGLE, + 'Noto Serif Myanmar' => self::GOOGLE, + 'Noto Serif NP Hmong' => self::GOOGLE, + 'Noto Serif Nyiakeng Puachue Hmong' => self::GOOGLE, + 'Noto Serif Oriya' => self::GOOGLE, + 'Noto Serif SC' => self::GOOGLE, + 'Noto Serif Sinhala' => self::GOOGLE, + 'Noto Serif TC' => self::GOOGLE, + 'Noto Serif Tamil' => self::GOOGLE, + 'Noto Serif Tangut' => self::GOOGLE, + 'Noto Serif Telugu' => self::GOOGLE, + 'Noto Serif Thai' => self::GOOGLE, + 'Noto Serif Tibetan' => self::GOOGLE, + 'Noto Serif Toto' => self::GOOGLE, + 'Noto Serif Yezidi' => self::GOOGLE, + 'Noto Traditional Nushu' => self::GOOGLE, + 'Nova Cut' => self::GOOGLE, + 'Nova Flat' => self::GOOGLE, + 'Nova Mono' => self::GOOGLE, + 'Nova Oval' => self::GOOGLE, + 'Nova Round' => self::GOOGLE, + 'Nova Script' => self::GOOGLE, + 'Nova Slim' => self::GOOGLE, + 'Nova Square' => self::GOOGLE, + 'Numans' => self::GOOGLE, + 'Nunito' => self::GOOGLE, + 'Nunito Sans' => self::GOOGLE, + 'Nuosu SIL' => self::GOOGLE, + 'Odibee Sans' => self::GOOGLE, + 'Odor Mean Chey' => self::GOOGLE, + 'Offside' => self::GOOGLE, + 'Oi' => self::GOOGLE, + 'Old Standard TT' => self::GOOGLE, + 'Oldenburg' => self::GOOGLE, + 'Ole' => self::GOOGLE, + 'Oleo Script' => self::GOOGLE, + 'Oleo Script Swash Caps' => self::GOOGLE, + 'Oooh Baby' => self::GOOGLE, + 'Open Sans' => self::GOOGLE, + 'Open Sans Hebrew' => self::EARLYACCESS, // Hack for Google Early Access. + 'Open Sans Hebrew Condensed' => self::EARLYACCESS, // Hack for Google Early Access. + 'Oranienbaum' => self::GOOGLE, + 'Orbitron' => self::GOOGLE, + 'Oregano' => self::GOOGLE, + 'Orelega One' => self::GOOGLE, + 'Orienta' => self::GOOGLE, + 'Original Surfer' => self::GOOGLE, + 'Oswald' => self::GOOGLE, + 'Outfit' => self::GOOGLE, + 'Over the Rainbow' => self::GOOGLE, + 'Overlock' => self::GOOGLE, + 'Overlock SC' => self::GOOGLE, + 'Overpass' => self::GOOGLE, + 'Overpass Mono' => self::GOOGLE, + 'Ovo' => self::GOOGLE, + 'Oxanium' => self::GOOGLE, + 'Oxygen' => self::GOOGLE, + 'Oxygen Mono' => self::GOOGLE, + 'PT Mono' => self::GOOGLE, + 'PT Sans' => self::GOOGLE, + 'PT Sans Caption' => self::GOOGLE, + 'PT Sans Narrow' => self::GOOGLE, + 'PT Serif' => self::GOOGLE, + 'PT Serif Caption' => self::GOOGLE, + 'Pacifico' => self::GOOGLE, + 'Padauk' => self::GOOGLE, + 'Padyakke Expanded One' => self::GOOGLE, + 'Palanquin' => self::GOOGLE, + 'Palanquin Dark' => self::GOOGLE, + 'Pangolin' => self::GOOGLE, + 'Paprika' => self::GOOGLE, + 'Parisienne' => self::GOOGLE, + 'Passero One' => self::GOOGLE, + 'Passion One' => self::GOOGLE, + 'Passions Conflict' => self::GOOGLE, + 'Pathway Gothic One' => self::GOOGLE, + 'Patrick Hand' => self::GOOGLE, + 'Patrick Hand SC' => self::GOOGLE, + 'Pattaya' => self::GOOGLE, + 'Patua One' => self::GOOGLE, + 'Pavanam' => self::GOOGLE, + 'Paytone One' => self::GOOGLE, + 'Peddana' => self::GOOGLE, + 'Peralta' => self::GOOGLE, + 'Permanent Marker' => self::GOOGLE, + 'Petemoss' => self::GOOGLE, + 'Petit Formal Script' => self::GOOGLE, + 'Petrona' => self::GOOGLE, + 'Philosopher' => self::GOOGLE, + 'Piazzolla' => self::GOOGLE, + 'Piedra' => self::GOOGLE, + 'Pinyon Script' => self::GOOGLE, + 'Pirata One' => self::GOOGLE, + 'Plaster' => self::GOOGLE, + 'Play' => self::GOOGLE, + 'Playball' => self::GOOGLE, + 'Playfair Display' => self::GOOGLE, + 'Playfair Display SC' => self::GOOGLE, + 'Plus Jakarta Sans' => self::GOOGLE, + 'Podkova' => self::GOOGLE, + 'Poiret One' => self::GOOGLE, + 'Poller One' => self::GOOGLE, + 'Poly' => self::GOOGLE, + 'Pompiere' => self::GOOGLE, + 'Pontano Sans' => self::GOOGLE, + 'Poor Story' => self::GOOGLE, + 'Poppins' => self::GOOGLE, + 'Port Lligat Sans' => self::GOOGLE, + 'Port Lligat Slab' => self::GOOGLE, + 'Potta One' => self::GOOGLE, + 'Pragati Narrow' => self::GOOGLE, + 'Praise' => self::GOOGLE, + 'Prata' => self::GOOGLE, + 'Preahvihear' => self::GOOGLE, + 'Press Start 2P' => self::GOOGLE, + 'Pridi' => self::GOOGLE, + 'Princess Sofia' => self::GOOGLE, + 'Prociono' => self::GOOGLE, + 'Prompt' => self::GOOGLE, + 'Prosto One' => self::GOOGLE, + 'Proza Libre' => self::GOOGLE, + 'Public Sans' => self::GOOGLE, + 'Puppies Play' => self::GOOGLE, + 'Puritan' => self::GOOGLE, + 'Purple Purse' => self::GOOGLE, + 'Qahiri' => self::GOOGLE, + 'Quando' => self::GOOGLE, + 'Quantico' => self::GOOGLE, + 'Quattrocento' => self::GOOGLE, + 'Quattrocento Sans' => self::GOOGLE, + 'Questrial' => self::GOOGLE, + 'Quicksand' => self::GOOGLE, + 'Quintessential' => self::GOOGLE, + 'Qwigley' => self::GOOGLE, + 'Qwitcher Grypen' => self::GOOGLE, + 'Racing Sans One' => self::GOOGLE, + 'Radio Canada' => self::GOOGLE, + 'Radley' => self::GOOGLE, + 'Rajdhani' => self::GOOGLE, + 'Rakkas' => self::GOOGLE, + 'Raleway' => self::GOOGLE, + 'Raleway Dots' => self::GOOGLE, + 'Ramabhadra' => self::GOOGLE, + 'Ramaraja' => self::GOOGLE, + 'Rambla' => self::GOOGLE, + 'Rammetto One' => self::GOOGLE, + 'Rampart One' => self::GOOGLE, + 'Ranchers' => self::GOOGLE, + 'Rancho' => self::GOOGLE, + 'Ranga' => self::GOOGLE, + 'Rasa' => self::GOOGLE, + 'Rationale' => self::GOOGLE, + 'Ravi Prakash' => self::GOOGLE, + 'Readex Pro' => self::GOOGLE, + 'Recursive' => self::GOOGLE, + 'Red Hat Display' => self::GOOGLE, + 'Red Hat Mono' => self::GOOGLE, + 'Red Hat Text' => self::GOOGLE, + 'Red Rose' => self::GOOGLE, + 'Redacted' => self::GOOGLE, + 'Redacted Script' => self::GOOGLE, + 'Redressed' => self::GOOGLE, + 'Reem Kufi' => self::GOOGLE, + 'Reem Kufi Fun' => self::GOOGLE, + 'Reem Kufi Ink' => self::GOOGLE, + 'Reenie Beanie' => self::GOOGLE, + 'Reggae One' => self::GOOGLE, + 'Revalia' => self::GOOGLE, + 'Rhodium Libre' => self::GOOGLE, + 'Ribeye' => self::GOOGLE, + 'Ribeye Marrow' => self::GOOGLE, + 'Righteous' => self::GOOGLE, + 'Risque' => self::GOOGLE, + 'Road Rage' => self::GOOGLE, + 'Roboto' => self::GOOGLE, + 'Roboto Condensed' => self::GOOGLE, + 'Roboto Flex' => self::GOOGLE, + 'Roboto Mono' => self::GOOGLE, + 'Roboto Serif' => self::GOOGLE, + 'Roboto Slab' => self::GOOGLE, + 'Rochester' => self::GOOGLE, + 'Rock Salt' => self::GOOGLE, + 'RocknRoll One' => self::GOOGLE, + 'Rokkitt' => self::GOOGLE, + 'Romanesco' => self::GOOGLE, + 'Ropa Sans' => self::GOOGLE, + 'Rosario' => self::GOOGLE, + 'Rosarivo' => self::GOOGLE, + 'Rouge Script' => self::GOOGLE, + 'Rowdies' => self::GOOGLE, + 'Rozha One' => self::GOOGLE, + 'Rubik' => self::GOOGLE, + 'Rubik 80s Fade' => self::GOOGLE, + 'Rubik Beastly' => self::GOOGLE, + 'Rubik Bubbles' => self::GOOGLE, + 'Rubik Burned' => self::GOOGLE, + 'Rubik Dirt' => self::GOOGLE, + 'Rubik Distressed' => self::GOOGLE, + 'Rubik Gemstones' => self::GOOGLE, + 'Rubik Glitch' => self::GOOGLE, + 'Rubik Iso' => self::GOOGLE, + 'Rubik Marker Hatch' => self::GOOGLE, + 'Rubik Maze' => self::GOOGLE, + 'Rubik Microbe' => self::GOOGLE, + 'Rubik Mono One' => self::GOOGLE, + 'Rubik Moonrocks' => self::GOOGLE, + 'Rubik Puddles' => self::GOOGLE, + 'Rubik Spray Paint' => self::GOOGLE, + 'Rubik Storm' => self::GOOGLE, + 'Rubik Vinyl' => self::GOOGLE, + 'Rubik Wet Paint' => self::GOOGLE, + 'Ruda' => self::GOOGLE, + 'Rufina' => self::GOOGLE, + 'Ruge Boogie' => self::GOOGLE, + 'Ruluko' => self::GOOGLE, + 'Rum Raisin' => self::GOOGLE, + 'Ruslan Display' => self::GOOGLE, + 'Russo One' => self::GOOGLE, + 'Ruthie' => self::GOOGLE, + 'Rye' => self::GOOGLE, + 'STIX Two Text' => self::GOOGLE, + 'Sacramento' => self::GOOGLE, + 'Sahitya' => self::GOOGLE, + 'Sail' => self::GOOGLE, + 'Saira' => self::GOOGLE, + 'Saira Condensed' => self::GOOGLE, + 'Saira Extra Condensed' => self::GOOGLE, + 'Saira Semi Condensed' => self::GOOGLE, + 'Saira Stencil One' => self::GOOGLE, + 'Salsa' => self::GOOGLE, + 'Sanchez' => self::GOOGLE, + 'Sancreek' => self::GOOGLE, + 'Sansita' => self::GOOGLE, + 'Sansita Swashed' => self::GOOGLE, + 'Sarabun' => self::GOOGLE, + 'Sarala' => self::GOOGLE, + 'Sarina' => self::GOOGLE, + 'Sarpanch' => self::GOOGLE, + 'Sassy Frass' => self::GOOGLE, + 'Satisfy' => self::GOOGLE, + 'Sawarabi Gothic' => self::GOOGLE, + 'Sawarabi Mincho' => self::GOOGLE, + 'Scada' => self::GOOGLE, + 'Scheherazade New' => self::GOOGLE, + 'Schoolbell' => self::GOOGLE, + 'Scope One' => self::GOOGLE, + 'Seaweed Script' => self::GOOGLE, + 'Secular One' => self::GOOGLE, + 'Sedgwick Ave' => self::GOOGLE, + 'Sedgwick Ave Display' => self::GOOGLE, + 'Sen' => self::GOOGLE, + 'Send Flowers' => self::GOOGLE, + 'Sevillana' => self::GOOGLE, + 'Seymour One' => self::GOOGLE, + 'Shadows Into Light' => self::GOOGLE, + 'Shadows Into Light Two' => self::GOOGLE, + 'Shalimar' => self::GOOGLE, + 'Shanti' => self::GOOGLE, + 'Share' => self::GOOGLE, + 'Share Tech' => self::GOOGLE, + 'Share Tech Mono' => self::GOOGLE, + 'Shippori Antique' => self::GOOGLE, + 'Shippori Antique B1' => self::GOOGLE, + 'Shippori Mincho' => self::GOOGLE, + 'Shippori Mincho B1' => self::GOOGLE, + 'Shojumaru' => self::GOOGLE, + 'Short Stack' => self::GOOGLE, + 'Shrikhand' => self::GOOGLE, + 'Siemreap' => self::GOOGLE, + 'Sigmar One' => self::GOOGLE, + 'Signika' => self::GOOGLE, + 'Signika Negative' => self::GOOGLE, + 'Silkscreen' => self::GOOGLE, + 'Simonetta' => self::GOOGLE, + 'Single Day' => self::GOOGLE, + 'Sintony' => self::GOOGLE, + 'Sirin Stencil' => self::GOOGLE, + 'Six Caps' => self::GOOGLE, + 'Skranji' => self::GOOGLE, + 'Slabo 13px' => self::GOOGLE, + 'Slabo 27px' => self::GOOGLE, + 'Slackey' => self::GOOGLE, + 'Smokum' => self::GOOGLE, + 'Smooch' => self::GOOGLE, + 'Smooch Sans' => self::GOOGLE, + 'Smythe' => self::GOOGLE, + 'Sniglet' => self::GOOGLE, + 'Snippet' => self::GOOGLE, + 'Snowburst One' => self::GOOGLE, + 'Sofadi One' => self::GOOGLE, + 'Sofia' => self::GOOGLE, + 'Sofia Sans' => self::GOOGLE, + 'Sofia Sans Condensed' => self::GOOGLE, + 'Sofia Sans Extra Condensed' => self::GOOGLE, + 'Sofia Sans Semi Condensed' => self::GOOGLE, + 'Solitreo' => self::GOOGLE, + 'Solway' => self::GOOGLE, + 'Song Myung' => self::GOOGLE, + 'Sono' => self::GOOGLE, + 'Sonsie One' => self::GOOGLE, + 'Sora' => self::GOOGLE, + 'Sorts Mill Goudy' => self::GOOGLE, + 'Source Code Pro' => self::GOOGLE, + 'Source Sans 3' => self::GOOGLE, + 'Source Sans Pro' => self::GOOGLE, + 'Source Serif 4' => self::GOOGLE, + 'Source Serif Pro' => self::GOOGLE, + 'Space Grotesk' => self::GOOGLE, + 'Space Mono' => self::GOOGLE, + 'Special Elite' => self::GOOGLE, + 'Spectral' => self::GOOGLE, + 'Spectral SC' => self::GOOGLE, + 'Spicy Rice' => self::GOOGLE, + 'Spinnaker' => self::GOOGLE, + 'Spirax' => self::GOOGLE, + 'Splash' => self::GOOGLE, + 'Spline Sans' => self::GOOGLE, + 'Spline Sans Mono' => self::GOOGLE, + 'Squada One' => self::GOOGLE, + 'Square Peg' => self::GOOGLE, + 'Sree Krushnadevaraya' => self::GOOGLE, + 'Sriracha' => self::GOOGLE, + 'Srisakdi' => self::GOOGLE, + 'Staatliches' => self::GOOGLE, + 'Stalemate' => self::GOOGLE, + 'Stalinist One' => self::GOOGLE, + 'Stardos Stencil' => self::GOOGLE, + 'Stick' => self::GOOGLE, + 'Stick No Bills' => self::GOOGLE, + 'Stint Ultra Condensed' => self::GOOGLE, + 'Stint Ultra Expanded' => self::GOOGLE, + 'Stoke' => self::GOOGLE, + 'Strait' => self::GOOGLE, + 'Style Script' => self::GOOGLE, + 'Stylish' => self::GOOGLE, + 'Sue Ellen Francisco' => self::GOOGLE, + 'Suez One' => self::GOOGLE, + 'Sulphur Point' => self::GOOGLE, + 'Sumana' => self::GOOGLE, + 'Sunflower' => self::GOOGLE, + 'Sunshiney' => self::GOOGLE, + 'Supermercado One' => self::GOOGLE, + 'Sura' => self::GOOGLE, + 'Suranna' => self::GOOGLE, + 'Suravaram' => self::GOOGLE, + 'Suwannaphum' => self::GOOGLE, + 'Swanky and Moo Moo' => self::GOOGLE, + 'Syncopate' => self::GOOGLE, + 'Syne' => self::GOOGLE, + 'Syne Mono' => self::GOOGLE, + 'Syne Tactile' => self::GOOGLE, + 'Tai Heritage Pro' => self::GOOGLE, + 'Tajawal' => self::GOOGLE, + 'Tangerine' => self::GOOGLE, + 'Tapestry' => self::GOOGLE, + 'Taprom' => self::GOOGLE, + 'Tauri' => self::GOOGLE, + 'Taviraj' => self::GOOGLE, + 'Teko' => self::GOOGLE, + 'Telex' => self::GOOGLE, + 'Tenali Ramakrishna' => self::GOOGLE, + 'Tenor Sans' => self::GOOGLE, + 'Text Me One' => self::GOOGLE, + 'Texturina' => self::GOOGLE, + 'Thasadith' => self::GOOGLE, + 'The Girl Next Door' => self::GOOGLE, + 'The Nautigal' => self::GOOGLE, + 'Tienne' => self::GOOGLE, + 'Tillana' => self::GOOGLE, + 'Timmana' => self::GOOGLE, + 'Tinos' => self::GOOGLE, + 'Tiro Bangla' => self::GOOGLE, + 'Tiro Devanagari Hindi' => self::GOOGLE, + 'Tiro Devanagari Marathi' => self::GOOGLE, + 'Tiro Devanagari Sanskrit' => self::GOOGLE, + 'Tiro Gurmukhi' => self::GOOGLE, + 'Tiro Kannada' => self::GOOGLE, + 'Tiro Tamil' => self::GOOGLE, + 'Tiro Telugu' => self::GOOGLE, + 'Titan One' => self::GOOGLE, + 'Titillium Web' => self::GOOGLE, + 'Tomorrow' => self::GOOGLE, + 'Tourney' => self::GOOGLE, + 'Trade Winds' => self::GOOGLE, + 'Train One' => self::GOOGLE, + 'Trirong' => self::GOOGLE, + 'Trispace' => self::GOOGLE, + 'Trocchi' => self::GOOGLE, + 'Trochut' => self::GOOGLE, + 'Truculenta' => self::GOOGLE, + 'Trykker' => self::GOOGLE, + 'Tulpen One' => self::GOOGLE, + 'Turret Road' => self::GOOGLE, + 'Twinkle Star' => self::GOOGLE, + 'Ubuntu' => self::GOOGLE, + 'Ubuntu Condensed' => self::GOOGLE, + 'Ubuntu Mono' => self::GOOGLE, + 'Uchen' => self::GOOGLE, + 'Ultra' => self::GOOGLE, + 'Unbounded' => self::GOOGLE, + 'Uncial Antiqua' => self::GOOGLE, + 'Underdog' => self::GOOGLE, + 'Unica One' => self::GOOGLE, + 'UnifrakturCook' => self::GOOGLE, + 'UnifrakturMaguntia' => self::GOOGLE, + 'Unkempt' => self::GOOGLE, + 'Unlock' => self::GOOGLE, + 'Unna' => self::GOOGLE, + 'Updock' => self::GOOGLE, + 'Urbanist' => self::GOOGLE, + 'VT323' => self::GOOGLE, + 'Vampiro One' => self::GOOGLE, + 'Varela' => self::GOOGLE, + 'Varela Round' => self::GOOGLE, + 'Varta' => self::GOOGLE, + 'Vast Shadow' => self::GOOGLE, + 'Vazirmatn' => self::GOOGLE, + 'Vesper Libre' => self::GOOGLE, + 'Viaoda Libre' => self::GOOGLE, + 'Vibes' => self::GOOGLE, + 'Vibur' => self::GOOGLE, + 'Vidaloka' => self::GOOGLE, + 'Viga' => self::GOOGLE, + 'Voces' => self::GOOGLE, + 'Volkhov' => self::GOOGLE, + 'Vollkorn' => self::GOOGLE, + 'Vollkorn SC' => self::GOOGLE, + 'Voltaire' => self::GOOGLE, + 'Vujahday Script' => self::GOOGLE, + 'Waiting for the Sunrise' => self::GOOGLE, + 'Wallpoet' => self::GOOGLE, + 'Walter Turncoat' => self::GOOGLE, + 'Warnes' => self::GOOGLE, + 'Water Brush' => self::GOOGLE, + 'Waterfall' => self::GOOGLE, + 'Wellfleet' => self::GOOGLE, + 'Wendy One' => self::GOOGLE, + 'Whisper' => self::GOOGLE, + 'WindSong' => self::GOOGLE, + 'Wire One' => self::GOOGLE, + 'Work Sans' => self::GOOGLE, + 'Xanh Mono' => self::GOOGLE, + 'Yaldevi' => self::GOOGLE, + 'Yanone Kaffeesatz' => self::GOOGLE, + 'Yantramanav' => self::GOOGLE, + 'Yatra One' => self::GOOGLE, + 'Yellowtail' => self::GOOGLE, + 'Yeon Sung' => self::GOOGLE, + 'Yeseva One' => self::GOOGLE, + 'Yesteryear' => self::GOOGLE, + 'Yomogi' => self::GOOGLE, + 'Yrsa' => self::GOOGLE, + 'Yuji Boku' => self::GOOGLE, + 'Yuji Mai' => self::GOOGLE, + 'Yuji Syuku' => self::GOOGLE, + 'Yusei Magic' => self::GOOGLE, + 'ZCOOL KuaiLe' => self::GOOGLE, + 'ZCOOL QingKe HuangYou' => self::GOOGLE, + 'ZCOOL XiaoWei' => self::GOOGLE, + 'Zen Antique' => self::GOOGLE, + 'Zen Antique Soft' => self::GOOGLE, + 'Zen Dots' => self::GOOGLE, + 'Zen Kaku Gothic Antique' => self::GOOGLE, + 'Zen Kaku Gothic New' => self::GOOGLE, + 'Zen Kurenaido' => self::GOOGLE, + 'Zen Loop' => self::GOOGLE, + 'Zen Maru Gothic' => self::GOOGLE, + 'Zen Old Mincho' => self::GOOGLE, + 'Zen Tokyo Zoo' => self::GOOGLE, + 'Zeyada' => self::GOOGLE, + 'Zhi Mang Xing' => self::GOOGLE, + 'Zilla Slab' => self::GOOGLE, + 'Zilla Slab Highlight' => self::GOOGLE, + ] ); + } + + return $fonts; + } + + /** + * Get font type. + * + * Retrieve the font type for a given font. + * + * @since 1.0.0 + * @access public + * @static + * + * @param string $name Font name. + * + * @return string|false Font type, or false if font doesn't exist. + */ + public static function get_font_type( $name ) { + $fonts = self::get_fonts(); + + if ( empty( $fonts[ $name ] ) ) { + return false; + } + + return $fonts[ $name ]; + } + + /** + * Get fonts by group. + * + * Retrieve all the fonts belong to specific group. + * + * @since 1.0.0 + * @access public + * @static + * + * @param array $groups Optional. Font group. Default is an empty array. + * + * @return array Font type, or false if font doesn't exist. + */ + public static function get_fonts_by_groups( $groups = [] ) { + return array_filter( self::get_fonts(), function( $font ) use ( $groups ) { + return in_array( $font, $groups ); + } ); + } + + public static function is_google_fonts_enabled() : bool { + if ( null === static::$is_google_fonts_enabled ) { + $default_value = '1'; + + // TODO: For future use, using for new installs. + //$is_new_site = Upgrade_Manager::install_compare( '3.10.0', '>=' ); + //$default_value = $is_new_site ? '0' : '1'; + + $option = get_option( 'elementor_google_font', $default_value ); + + static::$is_google_fonts_enabled = '1' === $option; + } + + return static::$is_google_fonts_enabled; + } + + public static function get_font_display_setting() { + return get_option( 'elementor_font_display', 'auto' ); + } + + public static function reset_local_cache() { + static::$is_google_fonts_enabled = null; + static::$font_groups = null; + } +} diff --git a/wp-content/plugins/elementor/includes/frontend.php b/wp-content/plugins/elementor/includes/frontend.php new file mode 100644 index 0000000..bd001f2 --- /dev/null +++ b/wp-content/plugins/elementor/includes/frontend.php @@ -0,0 +1,1571 @@ +add_content_filter(); + $this->init_swiper_settings(); + + // Hack to avoid enqueue post CSS while it's a `the_excerpt` call. + add_filter( 'get_the_excerpt', [ $this, 'start_excerpt_flag' ], 1 ); + add_filter( 'get_the_excerpt', [ $this, 'end_excerpt_flag' ], 20 ); + } + + /** + * Get module name. + * + * Retrieve the module name. + * + * @since 2.3.0 + * @access public + * + * @return string Module name. + */ + public function get_name() { + return 'frontend'; + } + + /** + * Init render mode manager. + */ + public function init_render_mode() { + if ( Plugin::$instance->editor->is_edit_mode() ) { + return; + } + + $this->render_mode_manager = new Render_Mode_Manager(); + } + + /** + * Init. + * + * Initialize Elementor front end. Hooks the needed actions to run Elementor + * in the front end, including script and style registration. + * + * Fired by `template_redirect` action. + * + * @since 1.0.0 + * @access public + */ + public function init() { + if ( Plugin::$instance->editor->is_edit_mode() ) { + return; + } + + add_filter( 'body_class', [ $this, 'body_class' ] ); + + if ( Plugin::$instance->preview->is_preview_mode() ) { + return; + } + + if ( current_user_can( 'manage_options' ) ) { + Plugin::$instance->init_common(); + } + + $this->post_id = get_the_ID(); + + $document = Plugin::$instance->documents->get( $this->post_id ); + + if ( is_singular() && $document && $document->is_built_with_elementor() ) { + add_action( 'wp_enqueue_scripts', [ $this, 'enqueue_styles' ] ); + } + + // Priority 7 to allow google fonts in header template to load in tag + add_action( 'wp_head', [ $this, 'print_fonts_links' ], 7 ); + add_action( 'wp_head', [ $this, 'print_google_fonts_preconnect_tag' ], 8 ); + add_action( 'wp_head', [ $this, 'add_theme_color_meta_tag' ] ); + add_action( 'wp_footer', [ $this, 'wp_footer' ] ); + } + + public function print_google_fonts_preconnect_tag() { + if ( 0 >= $this->google_fonts_index ) { + return; + } + + echo ''; + } + + /** + * @since 2.0.12 + * @access public + * @param string|array $class + */ + public function add_body_class( $class ) { + if ( is_array( $class ) ) { + $this->body_classes = array_merge( $this->body_classes, $class ); + } else { + $this->body_classes[] = $class; + } + } + + /** + * Add Theme Color Meta Tag + * + * @since 3.0.0 + * @access public + */ + public function add_theme_color_meta_tag() { + $kit = Plugin::$instance->kits_manager->get_active_kit_for_frontend(); + $mobile_theme_color = $kit->get_settings( 'mobile_browser_background' ); + + if ( ! empty( $mobile_theme_color ) ) { + ?> + + body_classes ); + + $id = get_the_ID(); + + $document = Plugin::$instance->documents->get( $id ); + + if ( is_singular() && $document && $document->is_built_with_elementor() ) { + $classes[] = 'elementor-page elementor-page-' . $id; + } + + if ( Plugin::$instance->preview->is_preview_mode() ) { + $editor_preferences = SettingsManager::get_settings_managers( 'editorPreferences' ); + + $show_hidden_elements = $editor_preferences->get_model()->get_settings( 'show_hidden_elements' ); + + if ( 'yes' === $show_hidden_elements ) { + $classes[] = 'e-preview--show-hidden-elements'; + } + } + + return $classes; + } + + /** + * Add content filter. + * + * Remove plain content and render the content generated by Elementor. + * + * @since 1.8.0 + * @access public + */ + public function add_content_filter() { + add_filter( 'the_content', [ $this, 'apply_builder_in_content' ], self::THE_CONTENT_FILTER_PRIORITY ); + } + + public function init_swiper_settings() { + $e_swiper_latest = Plugin::$instance->experiments->is_feature_active( 'e_swiper_latest' ); + $this->e_swiper_asset_path = $e_swiper_latest ? 'assets/lib/swiper/v8/' : 'assets/lib/swiper/'; + $this->e_swiper_version = $e_swiper_latest ? '8.4.5' : '5.3.6'; + } + + /** + * Remove content filter. + * + * When the Elementor generated content rendered, we remove the filter to prevent multiple + * accuracies. This way we make sure Elementor renders the content only once. + * + * @since 1.8.0 + * @access public + */ + public function remove_content_filter() { + remove_filter( 'the_content', [ $this, 'apply_builder_in_content' ], self::THE_CONTENT_FILTER_PRIORITY ); + } + + /** + * Registers scripts. + * + * Registers all the frontend scripts. + * + * Fired by `wp_enqueue_scripts` action. + * + * @since 1.2.1 + * @access public + */ + public function register_scripts() { + /** + * Before frontend register scripts. + * + * Fires before Elementor frontend scripts are registered. + * + * @since 1.2.1 + */ + do_action( 'elementor/frontend/before_register_scripts' ); + + wp_register_script( + 'elementor-webpack-runtime', + $this->get_js_assets_url( 'webpack.runtime', 'assets/js/' ), + [], + ELEMENTOR_VERSION, + true + ); + + wp_register_script( + 'elementor-frontend-modules', + $this->get_js_assets_url( 'frontend-modules' ), + [ + 'elementor-webpack-runtime', + 'jquery', + ], + ELEMENTOR_VERSION, + true + ); + + wp_register_script( + 'elementor-waypoints', + $this->get_js_assets_url( 'waypoints', 'assets/lib/waypoints/' ), + [ + 'jquery', + ], + '4.0.2', + true + ); + + wp_register_script( + 'flatpickr', + $this->get_js_assets_url( 'flatpickr', 'assets/lib/flatpickr/' ), + [ + 'jquery', + ], + '4.1.4', + true + ); + + wp_register_script( + 'imagesloaded', + $this->get_js_assets_url( 'imagesloaded', 'assets/lib/imagesloaded/' ), + [ + 'jquery', + ], + '4.1.0', + true + ); + + wp_register_script( + 'jquery-numerator', + $this->get_js_assets_url( 'jquery-numerator', 'assets/lib/jquery-numerator/' ), + [ + 'jquery', + ], + '0.2.1', + true + ); + + wp_register_script( + 'elementor-dialog', + $this->get_js_assets_url( 'dialog', 'assets/lib/dialog/' ), + [ + 'jquery-ui-position', + ], + '4.9.0', + true + ); + + wp_register_script( + 'elementor-gallery', + $this->get_js_assets_url( 'e-gallery', 'assets/lib/e-gallery/js/' ), + [ + 'jquery', + ], + '1.2.0', + true + ); + + wp_register_script( + 'share-link', + $this->get_js_assets_url( 'share-link', 'assets/lib/share-link/' ), + [ + 'jquery', + ], + ELEMENTOR_VERSION, + true + ); + + wp_register_script( + 'elementor-frontend', + $this->get_js_assets_url( 'frontend' ), + $this->get_elementor_frontend_dependencies(), + ELEMENTOR_VERSION, + true + ); + + /** + * After frontend register scripts. + * + * Fires after Elementor frontend scripts are registered. + * + * @since 1.2.1 + */ + do_action( 'elementor/frontend/after_register_scripts' ); + } + + /** + * Registers styles. + * + * Registers all the frontend styles. + * + * Fired by `wp_enqueue_scripts` action. + * + * @since 1.2.0 + * @access public + */ + public function register_styles() { + /** + * Before frontend register styles. + * + * Fires before Elementor frontend styles are registered. + * + * @since 1.2.0 + */ + do_action( 'elementor/frontend/before_register_styles' ); + + wp_register_style( + 'font-awesome', + $this->get_css_assets_url( 'font-awesome', 'assets/lib/font-awesome/css/' ), + [], + '4.7.0' + ); + + wp_register_style( + 'elementor-icons', + $this->get_css_assets_url( 'elementor-icons', 'assets/lib/eicons/css/' ), + [], + Icons_Manager::ELEMENTOR_ICONS_VERSION + ); + + wp_register_style( + 'flatpickr', + $this->get_css_assets_url( 'flatpickr', 'assets/lib/flatpickr/' ), + [], + '4.1.4' + ); + + wp_register_style( + 'elementor-gallery', + $this->get_css_assets_url( 'e-gallery', 'assets/lib/e-gallery/css/' ), + [], + '1.2.0' + ); + + $min_suffix = Utils::is_script_debug() ? '' : '.min'; + + $direction_suffix = is_rtl() ? '-rtl' : ''; + + $frontend_base_file_name = $this->is_optimized_css_mode() ? 'frontend-lite' : 'frontend'; + + $frontend_file_name = $frontend_base_file_name . $direction_suffix . $min_suffix . '.css'; + + $has_custom_breakpoints = Plugin::$instance->breakpoints->has_custom_breakpoints(); + + wp_register_style( + 'elementor-frontend', + $this->get_frontend_file_url( $frontend_file_name, $has_custom_breakpoints ), + [], + $has_custom_breakpoints ? null : ELEMENTOR_VERSION + ); + + wp_register_style( + 'swiper', + $this->get_css_assets_url( 'swiper', $this->e_swiper_asset_path . 'css/' ), + [], + $this->e_swiper_version + ); + + /** + * After frontend register styles. + * + * Fires after Elementor frontend styles are registered. + * + * @since 1.2.0 + */ + do_action( 'elementor/frontend/after_register_styles' ); + } + + /** + * Enqueue scripts. + * + * Enqueue all the frontend scripts. + * + * @since 1.0.0 + * @access public + */ + public function enqueue_scripts() { + /** + * Before frontend enqueue scripts. + * + * Fires before Elementor frontend scripts are enqueued. + * + * @since 1.0.0 + */ + do_action( 'elementor/frontend/before_enqueue_scripts' ); + + wp_enqueue_script( 'elementor-frontend' ); + + if ( ! $this->is_improved_assets_loading() ) { + wp_enqueue_script( + 'preloaded-modules', + $this->get_js_assets_url( 'preloaded-modules', 'assets/js/' ), + [ + 'elementor-frontend', + ], + ELEMENTOR_VERSION, + true + ); + } + + $this->print_config(); + + $this->enqueue_conditional_assets(); + + /** + * After frontend enqueue scripts. + * + * Fires after Elementor frontend scripts are enqueued. + * + * @since 1.0.0 + */ + do_action( 'elementor/frontend/after_enqueue_scripts' ); + } + + /** + * Enqueue styles. + * + * Enqueue all the frontend styles. + * + * Fired by `wp_enqueue_scripts` action. + * + * @since 1.0.0 + * @access public + */ + public function enqueue_styles() { + static $is_enqueue_styles_already_triggered; + + if ( ! $is_enqueue_styles_already_triggered ) { + $is_enqueue_styles_already_triggered = true; + + /** + * Before frontend styles enqueued. + * + * Fires before Elementor frontend styles are enqueued. + * + * @since 1.0.0 + */ + do_action( 'elementor/frontend/before_enqueue_styles' ); + + // The e-icons are needed in preview mode for the editor icons (plus-icon for new section, folder-icon for the templates library etc.). + if ( ! Plugin::$instance->experiments->is_feature_active( 'e_font_icon_svg' ) || Plugin::$instance->preview->is_preview_mode() ) { + wp_enqueue_style( 'elementor-icons' ); + } + + wp_enqueue_style( 'elementor-frontend' ); + + wp_enqueue_style( 'swiper' ); + + /** + * After frontend styles enqueued. + * + * Fires after Elementor frontend styles are enqueued. + * + * @since 1.0.0 + */ + do_action( 'elementor/frontend/after_enqueue_styles' ); + + if ( ! Plugin::$instance->preview->is_preview_mode() ) { + $this->parse_global_css_code(); + + $post_id = get_the_ID(); + // Check $post_id for virtual pages. check is singular because the $post_id is set to the first post on archive pages. + if ( $post_id && is_singular() ) { + $css_file = Post_CSS::create( get_the_ID() ); + $css_file->enqueue(); + } + } + } + } + + /** + * Get Frontend File URL + * + * Returns the URL for the CSS file to be loaded in the front end. If requested via the second parameter, a custom + * file is generated based on a passed template file name. Otherwise, the URL for the default CSS file is returned. + * + * @since 3.4.5 + * + * @access public + * + * @param string $frontend_file_name + * @param boolean $custom_file + * + * @return string frontend file URL + */ + public function get_frontend_file_url( $frontend_file_name, $custom_file ) { + if ( $custom_file ) { + $frontend_file = $this->get_frontend_file( $frontend_file_name ); + + $frontend_file_url = $frontend_file->get_url(); + } else { + $frontend_file_url = ELEMENTOR_ASSETS_URL . 'css/' . $frontend_file_name; + } + + return $frontend_file_url; + } + + /** + * Get Frontend File Path + * + * Returns the path for the CSS file to be loaded in the front end. If requested via the second parameter, a custom + * file is generated based on a passed template file name. Otherwise, the path for the default CSS file is returned. + * + * @since 3.5.0 + * @access public + * + * @param string $frontend_file_name + * @param boolean $custom_file + * + * @return string frontend file path + */ + public function get_frontend_file_path( $frontend_file_name, $custom_file ) { + if ( $custom_file ) { + $frontend_file = $this->get_frontend_file( $frontend_file_name ); + + $frontend_file_path = $frontend_file->get_path(); + } else { + $frontend_file_path = ELEMENTOR_ASSETS_PATH . 'css/' . $frontend_file_name; + } + + return $frontend_file_path; + } + + /** + * Get Frontend File + * + * Returns a frontend file instance. + * + * @since 3.5.0 + * @access public + * + * @param string $frontend_file_name + * @param string $file_prefix + * @param string $template_file_path + * + * @return FrontendFile + */ + public function get_frontend_file( $frontend_file_name, $file_prefix = 'custom-', $template_file_path = '' ) { + static $cached_frontend_files = []; + + $file_name = $file_prefix . $frontend_file_name; + + if ( isset( $cached_frontend_files[ $file_name ] ) ) { + return $cached_frontend_files[ $file_name ]; + } + + if ( ! $template_file_path ) { + $template_file_path = Breakpoints_Manager::get_stylesheet_templates_path() . $frontend_file_name; + } + + $frontend_file = new FrontendFile( $file_name, $template_file_path ); + + $time = $frontend_file->get_meta( 'time' ); + + if ( ! $time ) { + $frontend_file->update(); + } + + $cached_frontend_files[ $file_name ] = $frontend_file; + + return $frontend_file; + } + + /** + * Enqueue assets conditionally. + * + * Enqueue all assets that were pre-enabled. + * + * @since 3.3.0 + * @access private + */ + private function enqueue_conditional_assets() { + Plugin::$instance->assets_loader->enqueue_assets(); + } + + /** + * Elementor footer scripts and styles. + * + * Handle styles and scripts that are not printed in the header. + * + * Fired by `wp_footer` action. + * + * @since 1.0.11 + * @access public + */ + public function wp_footer() { + if ( ! $this->_has_elementor_in_page ) { + return; + } + + $this->enqueue_styles(); + $this->enqueue_scripts(); + + $this->print_fonts_links(); + } + + /** + * @return array|array[] + */ + public function get_list_of_google_fonts_by_type(): array { + $google_fonts = [ + 'google' => [], + 'early' => [], + ]; + + foreach ( $this->fonts_to_enqueue as $key => $font ) { + $font_type = Fonts::get_font_type( $font ); + + switch ( $font_type ) { + case Fonts::GOOGLE: + $google_fonts['google'][] = $font; + break; + + case Fonts::EARLYACCESS: + $google_fonts['early'][] = $font; + break; + + case false: + $this->maybe_enqueue_icon_font( $font ); + break; + default: + /** + * Print font links. + * + * Fires when Elementor frontend fonts are printed on the HEAD tag. + * + * The dynamic portion of the hook name, `$font_type`, refers to the font type. + * + * @since 2.0.0 + * + * @param string $font Font name. + */ + do_action( "elementor/fonts/print_font_links/{$font_type}", $font ); + } + } + $this->fonts_to_enqueue = []; + + return $google_fonts; + } + + /** + * Print fonts links. + * + * Enqueue all the frontend fonts by url. + * + * Fired by `wp_head` action. + * + * @since 1.9.4 + * @access public + */ + public function print_fonts_links() { + $google_fonts = $this->get_list_of_google_fonts_by_type(); + + $this->enqueue_google_fonts( $google_fonts ); + $this->enqueue_icon_fonts(); + } + + private function maybe_enqueue_icon_font( $icon_font_type ) { + if ( ! Icons_Manager::is_migration_allowed() ) { + return; + } + + $icons_types = Icons_Manager::get_icon_manager_tabs(); + if ( ! isset( $icons_types[ $icon_font_type ] ) ) { + return; + } + + $icon_type = $icons_types[ $icon_font_type ]; + if ( isset( $icon_type['url'] ) ) { + $this->icon_fonts_to_enqueue[ $icon_font_type ] = [ $icon_type['url'] ]; + } + } + + private function enqueue_icon_fonts() { + if ( empty( $this->icon_fonts_to_enqueue ) || ! Icons_Manager::is_migration_allowed() ) { + return; + } + + foreach ( $this->icon_fonts_to_enqueue as $icon_type => $css_url ) { + wp_enqueue_style( 'elementor-icons-' . $icon_type ); + $this->enqueued_icon_fonts[] = $css_url; + } + + //clear enqueued icons + $this->icon_fonts_to_enqueue = []; + } + + /** + * @param array $fonts Stable google fonts ($google_fonts['google']). + * @return string + */ + public function get_stable_google_fonts_url( array $fonts ): string { + foreach ( $fonts as &$font ) { + $font = str_replace( ' ', '+', $font ) . ':100,100italic,200,200italic,300,300italic,400,400italic,500,500italic,600,600italic,700,700italic,800,800italic,900,900italic'; + } + + // Defining a font-display type to google fonts. + $font_display_url_str = '&display=' . Fonts::get_font_display_setting(); + + $fonts_url = sprintf( 'https://fonts.googleapis.com/css?family=%1$s%2$s', implode( rawurlencode( '|' ), $fonts ), $font_display_url_str ); + + $subsets = [ + 'ru_RU' => 'cyrillic', + 'bg_BG' => 'cyrillic', + 'he_IL' => 'hebrew', + 'el' => 'greek', + 'vi' => 'vietnamese', + 'uk' => 'cyrillic', + 'cs_CZ' => 'latin-ext', + 'ro_RO' => 'latin-ext', + 'pl_PL' => 'latin-ext', + 'hr_HR' => 'latin-ext', + 'hu_HU' => 'latin-ext', + 'sk_SK' => 'latin-ext', + 'tr_TR' => 'latin-ext', + 'lt_LT' => 'latin-ext', + ]; + + /** + * Google font subsets. + * + * Filters the list of Google font subsets from which locale will be enqueued in frontend. + * + * @since 1.0.0 + * + * @param array $subsets A list of font subsets. + */ + $subsets = apply_filters( 'elementor/frontend/google_font_subsets', $subsets ); + + $locale = get_locale(); + + if ( isset( $subsets[ $locale ] ) ) { + $fonts_url .= '&subset=' . $subsets[ $locale ]; + } + + return $fonts_url; + } + + /** + * @param array $fonts Early Access google fonts ($google_fonts['early']). + * @return array + */ + public function get_early_access_google_font_urls( array $fonts ): array { + $font_urls = []; + + foreach ( $fonts as $font ) { + $font_urls[] = sprintf( 'https://fonts.googleapis.com/earlyaccess/%s.css', strtolower( str_replace( ' ', '', $font ) ) ); + } + + return $font_urls; + } + + /** + * Print Google fonts. + * + * Enqueue all the frontend Google fonts. + * + * Fired by `wp_head` action. + * + * @since 1.0.0 + * @access private + * + * @param array $google_fonts Optional. Google fonts to print in the frontend. + * Default is an empty array. + */ + private function enqueue_google_fonts( $google_fonts = [] ) { + $print_google_fonts = Fonts::is_google_fonts_enabled(); + + /** + * Print frontend google fonts. + * + * Filters whether to enqueue Google fonts in the frontend. + * + * @since 1.0.0 + * + * @param bool $print_google_fonts Whether to enqueue Google fonts. Default is true. + */ + $print_google_fonts = apply_filters( 'elementor/frontend/print_google_fonts', $print_google_fonts ); + + if ( ! $print_google_fonts ) { + return; + } + + // Print used fonts + if ( ! empty( $google_fonts['google'] ) ) { + $this->google_fonts_index++; + + $fonts_url = $this->get_stable_google_fonts_url( $google_fonts['google'] ); + + wp_enqueue_style( 'google-fonts-' . $this->google_fonts_index, $fonts_url ); // phpcs:ignore WordPress.WP.EnqueuedResourceParameters.MissingVersion + } + + if ( ! empty( $google_fonts['early'] ) ) { + $early_access_font_urls = $this->get_early_access_google_font_urls( $google_fonts['early'] ); + + foreach ( $early_access_font_urls as $ea_font_url ) { + $this->google_fonts_index++; + + //printf( '', strtolower( str_replace( ' ', '', $current_font ) ) ); + + wp_enqueue_style( 'google-earlyaccess-' . $this->google_fonts_index, $ea_font_url ); // phpcs:ignore WordPress.WP.EnqueuedResourceParameters.MissingVersion + } + } + + } + + /** + * Enqueue fonts. + * + * Enqueue all the frontend fonts. + * + * @since 1.2.0 + * @access public + * + * @param array $font Fonts to enqueue in the frontend. + */ + public function enqueue_font( $font ) { + if ( in_array( $font, $this->registered_fonts ) ) { + return; + } + + $this->fonts_to_enqueue[] = $font; + $this->registered_fonts[] = $font; + } + + /** + * Parse global CSS. + * + * Enqueue the global CSS file. + * + * @since 1.2.0 + * @access protected + */ + protected function parse_global_css_code() { + $scheme_css_file = Global_CSS::create( 'global.css' ); + + $scheme_css_file->enqueue(); + } + + /** + * Apply builder in content. + * + * Used to apply the Elementor page editor on the post content. + * + * @since 1.0.0 + * @access public + * + * @param string $content The post content. + * + * @return string The post content. + */ + public function apply_builder_in_content( $content ) { + $this->restore_content_filters(); + + if ( Plugin::$instance->preview->is_preview_mode() || $this->_is_excerpt ) { + return $content; + } + + // Remove the filter itself in order to allow other `the_content` in the elements + $this->remove_content_filter(); + + $post_id = get_the_ID(); + $builder_content = $this->get_builder_content( $post_id ); + + if ( ! empty( $builder_content ) ) { + $content = $builder_content; + $this->remove_content_filters(); + } + + // Add the filter again for other `the_content` calls + $this->add_content_filter(); + + return $content; + } + + /** + * Retrieve builder content. + * + * Used to render and return the post content with all the Elementor elements. + * + * Note that this method is an internal method, please use `get_builder_content_for_display()`. + * + * @since 1.0.0 + * @access public + * + * @param int $post_id The post ID. + * @param bool $with_css Optional. Whether to retrieve the content with CSS + * or not. Default is false. + * + * @return string The post content. + */ + public function get_builder_content( $post_id, $with_css = false ) { + if ( post_password_required( $post_id ) ) { + return ''; + } + + $document = Plugin::$instance->documents->get_doc_for_frontend( $post_id ); + + if ( ! $document || ! $document->is_built_with_elementor() ) { + return ''; + } + + // Change the current post, so widgets can use `documents->get_current`. + Plugin::$instance->documents->switch_to_document( $document ); + + $data = $document->get_elements_data(); + + /** + * Frontend builder content data. + * + * Filters the builder content in the frontend. + * + * @since 1.0.0 + * + * @param array $data The builder content. + * @param int $post_id The post ID. + */ + $data = apply_filters( 'elementor/frontend/builder_content_data', $data, $post_id ); + + do_action( 'elementor/frontend/before_get_builder_content', $document, $this->_is_excerpt ); + + if ( empty( $data ) ) { + Plugin::$instance->documents->restore_document(); + + return ''; + } + + if ( ! $this->_is_excerpt ) { + if ( $document->is_autosave() ) { + $css_file = Post_Preview::create( $document->get_post()->ID ); + } else { + $css_file = Post_CSS::create( $post_id ); + } + + /** + * Builder Content - Before Enqueue CSS File + * + * Allows intervening with a document's CSS file before it is enqueued. + * + * @param $css_file Post_CSS|Post_Preview + */ + $css_file = apply_filters( 'elementor/frontend/builder_content/before_enqueue_css_file', $css_file ); + + $css_file->enqueue(); + } + + ob_start(); + + // Handle JS and Customizer requests, with CSS inline. + if ( is_customize_preview() || wp_doing_ajax() ) { + $with_css = true; + } + + /** + * Builder Content - With CSS + * + * Allows overriding the `$with_css` parameter which is a factor in determining whether to print the document's + * CSS and font links inline in a `style` tag above the document's markup. + * + * @param $with_css boolean + */ + $with_css = apply_filters( 'elementor/frontend/builder_content/before_print_css', $with_css ); + + if ( ! empty( $css_file ) && $with_css ) { + $css_file->print_css(); + } + + $document->print_elements_with_wrapper( $data ); + + $content = ob_get_clean(); + + $content = $this->process_more_tag( $content ); + + /** + * Frontend content. + * + * Filters the content in the frontend. + * + * @since 1.0.0 + * + * @param string $content The content. + */ + $content = apply_filters( 'elementor/frontend/the_content', $content ); + + if ( ! empty( $content ) ) { + $this->_has_elementor_in_page = true; + } + + Plugin::$instance->documents->restore_document(); + + // BC + // TODO: use Deprecation::do_deprecated_action() in 3.1.0 + do_action( 'elementor/frontend/get_builder_content', $document, $this->_is_excerpt, $with_css ); + + return $content; + } + + /** + * Retrieve builder content for display. + * + * Used to render and return the post content with all the Elementor elements. + * + * @since 1.0.0 + * @access public + * + * @param int $post_id The post ID. + * + * @param bool $with_css Optional. Whether to retrieve the content with CSS + * or not. Default is false. + * + * @return string The post content. + */ + public function get_builder_content_for_display( $post_id, $with_css = false ) { + if ( ! get_post( $post_id ) ) { + return ''; + } + + $editor = Plugin::$instance->editor; + + // Avoid recursion + if ( get_the_ID() === (int) $post_id ) { + $content = ''; + if ( $editor->is_edit_mode() ) { + $content = '
    ' . esc_html__( 'Invalid Data: The Template ID cannot be the same as the currently edited template. Please choose a different one.', 'elementor' ) . '
    '; + } + + return $content; + } + + // Set edit mode as false, so don't render settings and etc. use the $is_edit_mode to indicate if we need the CSS inline + $is_edit_mode = $editor->is_edit_mode(); + $editor->set_edit_mode( false ); + + $with_css = $with_css ? true : $is_edit_mode; + + $content = $this->get_builder_content( $post_id, $with_css ); + + // Restore edit mode state + Plugin::$instance->editor->set_edit_mode( $is_edit_mode ); + + return $content; + } + + /** + * Start excerpt flag. + * + * Flags when `the_excerpt` is called. Used to avoid enqueueing CSS in the excerpt. + * + * @since 1.4.3 + * @access public + * + * @param string $excerpt The post excerpt. + * + * @return string The post excerpt. + */ + public function start_excerpt_flag( $excerpt ) { + $this->_is_excerpt = true; + return $excerpt; + } + + /** + * End excerpt flag. + * + * Flags when `the_excerpt` call ended. + * + * @since 1.4.3 + * @access public + * + * @param string $excerpt The post excerpt. + * + * @return string The post excerpt. + */ + public function end_excerpt_flag( $excerpt ) { + $this->_is_excerpt = false; + return $excerpt; + } + + /** + * Remove content filters. + * + * Remove WordPress default filters that conflicted with Elementor. + * + * @since 1.5.0 + * @access public + */ + public function remove_content_filters() { + $filters = [ + 'wpautop', + 'shortcode_unautop', + 'wptexturize', + ]; + + foreach ( $filters as $filter ) { + // Check if another plugin/theme do not already removed the filter. + if ( has_filter( 'the_content', $filter ) ) { + remove_filter( 'the_content', $filter ); + $this->content_removed_filters[] = $filter; + } + } + } + + /** + * Has Elementor In Page + * + * Determine whether the current page is using Elementor. + * + * @since 2.0.9 + * + * @access public + * @return bool + */ + public function has_elementor_in_page() { + return $this->_has_elementor_in_page; + } + + public function create_action_hash( $action, array $settings = [] ) { + return '#' . rawurlencode( sprintf( 'elementor-action:action=%1$s&settings=%2$s', $action, base64_encode( wp_json_encode( $settings ) ) ) ); + } + + /** + * Is the current render mode is static. + * + * @return bool + */ + public function is_static_render_mode() { + // The render mode manager is exists only in frontend, + // so by default if it is not exist the method will return false. + if ( ! $this->render_mode_manager ) { + return false; + } + + return $this->render_mode_manager->get_current()->is_static(); + } + + /** + * Get Init Settings + * + * Used to define the default/initial settings of the object. Inheriting classes may implement this method to define + * their own default/initial settings. + * + * @since 2.3.0 + * + * @access protected + * @return array + */ + protected function get_init_settings() { + $is_preview_mode = Plugin::$instance->preview->is_preview_mode( Plugin::$instance->preview->get_post_id() ); + + $active_experimental_features = Plugin::$instance->experiments->get_active_features(); + + $active_experimental_features = array_fill_keys( array_keys( $active_experimental_features ), true ); + + $assets_url = ELEMENTOR_ASSETS_URL; + + /** + * Frontend assets URL + * + * Filters Elementor frontend assets URL. + * + * @since 2.3.0 + * + * @param string $assets_url The frontend assets URL. Default is ELEMENTOR_ASSETS_URL. + */ + $assets_url = apply_filters( 'elementor/frontend/assets_url', $assets_url ); + + $settings = [ + 'environmentMode' => [ + 'edit' => $is_preview_mode, + 'wpPreview' => is_preview(), + 'isScriptDebug' => Utils::is_script_debug(), + ], + 'i18n' => [ + 'shareOnFacebook' => esc_html__( 'Share on Facebook', 'elementor' ), + 'shareOnTwitter' => esc_html__( 'Share on Twitter', 'elementor' ), + 'pinIt' => esc_html__( 'Pin it', 'elementor' ), + 'download' => esc_html__( 'Download', 'elementor' ), + 'downloadImage' => esc_html__( 'Download image', 'elementor' ), + 'fullscreen' => esc_html__( 'Fullscreen', 'elementor' ), + 'zoom' => esc_html__( 'Zoom', 'elementor' ), + 'share' => esc_html__( 'Share', 'elementor' ), + 'playVideo' => esc_html__( 'Play Video', 'elementor' ), + 'previous' => esc_html__( 'Previous', 'elementor' ), + 'next' => esc_html__( 'Next', 'elementor' ), + 'close' => esc_html__( 'Close', 'elementor' ), + 'a11yCarouselWrapperAriaLabel' => __( 'Carousel | Horizontal scrolling: Arrow Left & Right', 'elementor' ), + 'a11yCarouselPrevSlideMessage' => __( 'Previous slide', 'elementor' ), + 'a11yCarouselNextSlideMessage' => __( 'Next slide', 'elementor' ), + 'a11yCarouselFirstSlideMessage' => __( 'This is the first slide', 'elementor' ), + 'a11yCarouselLastSlideMessage' => __( 'This is the last slide', 'elementor' ), + 'a11yCarouselPaginationBulletMessage' => __( 'Go to slide', 'elementor' ), + ], + 'is_rtl' => is_rtl(), + // 'breakpoints' object is kept for BC. + 'breakpoints' => Responsive::get_breakpoints(), + // 'responsive' contains the custom breakpoints config introduced in Elementor v3.2.0 + 'responsive' => [ + 'breakpoints' => Plugin::$instance->breakpoints->get_breakpoints_config(), + ], + 'version' => ELEMENTOR_VERSION, + 'is_static' => $this->is_static_render_mode(), + 'experimentalFeatures' => $active_experimental_features, + 'urls' => [ + 'assets' => $assets_url, + ], + 'swiperClass' => Plugin::$instance->experiments->is_feature_active( 'e_swiper_latest' ) ? 'swiper' : 'swiper-container', + ]; + + $settings['settings'] = SettingsManager::get_settings_frontend_config(); + + $kit = Plugin::$instance->kits_manager->get_active_kit_for_frontend(); + $settings['kit'] = $kit->get_frontend_settings(); + + if ( is_singular() ) { + $post = get_post(); + + $title = Utils::urlencode_html_entities( wp_get_document_title() ); + + // Try to use the 'large' WP image size because the Pinterest share API + // has problems accepting shares with large images sometimes, and the WP 'large' thumbnail is + // the largest default WP image size that will probably not be changed in most sites + $featured_image_url = get_the_post_thumbnail_url( null, 'large' ); + + // If the large size was nullified, use the full size which cannot be nullified/deleted + if ( ! $featured_image_url ) { + $featured_image_url = get_the_post_thumbnail_url( null, 'full' ); + } + + $settings['post'] = [ + 'id' => $post->ID, + 'title' => $title, + 'excerpt' => $post->post_excerpt, + 'featuredImage' => $featured_image_url, + ]; + } else { + $settings['post'] = [ + 'id' => 0, + 'title' => wp_get_document_title(), + 'excerpt' => get_the_archive_description(), + ]; + } + + $empty_object = (object) []; + + if ( $is_preview_mode ) { + $settings['elements'] = [ + 'data' => $empty_object, + 'editSettings' => $empty_object, + 'keys' => $empty_object, + ]; + } + + if ( is_user_logged_in() ) { + $user = wp_get_current_user(); + + if ( ! empty( $user->roles ) ) { + $settings['user'] = [ + 'roles' => $user->roles, + ]; + } + } + + return $settings; + } + + /** + * Restore content filters. + * + * Restore removed WordPress filters that conflicted with Elementor. + * + * @since 1.5.0 + * @access public + */ + public function restore_content_filters() { + foreach ( $this->content_removed_filters as $filter ) { + add_filter( 'the_content', $filter ); + } + + $this->content_removed_filters = []; + } + + /** + * Process More Tag + * + * Respect the native WP () tag + * + * @access private + * @since 2.0.4 + * + * @param $content + * + * @return string + */ + private function process_more_tag( $content ) { + $post = get_post(); + $content = str_replace( '<!--more-->', '', $content ); + $parts = get_extended( $content ); + if ( empty( $parts['extended'] ) ) { + return $content; + } + + if ( is_singular() ) { + return $parts['main'] . '
    ' . $parts['extended']; + } + + if ( empty( $parts['more_text'] ) ) { + $parts['more_text'] = esc_html__( '(more…)', 'elementor' ); + } + + $more_link_text = sprintf( + '%2$s', + sprintf( + /* translators: %s: Current post name. */ + __( 'Continue reading %s', 'elementor' ), + the_title_attribute( [ + 'echo' => false, + ] ) + ), + $parts['more_text'] + ); + + $more_link = sprintf( ' %s', get_permalink(), $post->ID, $more_link_text ); + + /** + * The content "more" link. + * + * Filters the "more" link displayed after the content. + * + * This hook can be used either to change the link syntax or to change the + * text inside the link. + * + * @since 2.0.4 + * + * @param string $more_link The more link. + * @param string $more_link_text The text inside the more link. + */ + $more_link = apply_filters( 'the_content_more_link', $more_link, $more_link_text ); + + return force_balance_tags( $parts['main'] ) . $more_link; + } + + private function is_improved_assets_loading() { + return Plugin::$instance->experiments->is_feature_active( 'e_optimized_assets_loading' ); + } + + private function get_elementor_frontend_dependencies() { + $dependencies = [ + 'elementor-frontend-modules', + 'elementor-waypoints', + 'jquery-ui-position', + ]; + + if ( ! $this->is_improved_assets_loading() ) { + wp_register_script( + 'swiper', + $this->get_js_assets_url( 'swiper', $this->e_swiper_asset_path ), + [], + $this->e_swiper_version, + true + ); + + $dependencies[] = 'swiper'; + $dependencies[] = 'share-link'; + $dependencies[] = 'elementor-dialog'; + } + + return $dependencies; + } + + private function is_optimized_css_mode() { + $is_optimized_css_loading = Plugin::$instance->experiments->is_feature_active( 'e_optimized_css_loading' ); + + return ! Utils::is_script_debug() && $is_optimized_css_loading && ! Plugin::$instance->preview->is_preview_mode(); + } +} diff --git a/wp-content/plugins/elementor/includes/heartbeat.php b/wp-content/plugins/elementor/includes/heartbeat.php new file mode 100644 index 0000000..d24c147 --- /dev/null +++ b/wp-content/plugins/elementor/includes/heartbeat.php @@ -0,0 +1,97 @@ +editor->get_locked_user( $post_id ); + + if ( ! $locked_user || ! empty( $data['elementor_force_post_lock'] ) ) { + Plugin::$instance->editor->lock_post( $post_id ); + } else { + $response['locked_user'] = $locked_user->display_name; + } + + /** @var Core\Common\Modules\Ajax\Module $ajax */ + $ajax = Plugin::$instance->common->get_component( 'ajax' ); + + $response['elementorNonce'] = $ajax->create_nonce(); + } + return $response; + } + + /** + * Refresh nonces. + * + * Filter the nonces to send to the editor when editing with Elementor. Used + * to refresh the nonce when the nonce expires while editing. This way the + * user doesn't need to log-in again as Elementor fetches the new nonce from + * the server using ajax. + * + * Fired by `wp_refresh_nonces` filter. + * + * @since 1.8.0 + * @access public + * + * @param array $response The no-priv Heartbeat response object or array. + * @param array $data The `$_POST` data sent. + * + * @return array Refreshed nonces. + */ + public function refresh_nonces( $response, $data ) { + if ( isset( $data['elementor_post_lock']['post_ID'] ) ) { + /** @var Core\Common\Modules\Ajax\Module $ajax */ + $ajax = Plugin::$instance->common->get_component( 'ajax' ); + + $response['elementor-refresh-nonces'] = [ + 'elementorNonce' => $ajax->create_nonce(), + 'heartbeatNonce' => wp_create_nonce( 'heartbeat-nonce' ), + ]; + } + + return $response; + } + + /** + * Heartbeat constructor. + * + * Initializing Elementor heartbeat. + * + * @since 1.0.0 + * @access public + */ + public function __construct() { + add_filter( 'heartbeat_received', [ $this, 'heartbeat_received' ], 10, 2 ); + add_filter( 'wp_refresh_nonces', [ $this, 'refresh_nonces' ], 30, 2 ); + } +} diff --git a/wp-content/plugins/elementor/includes/interfaces/group-control.php b/wp-content/plugins/elementor/includes/interfaces/group-control.php new file mode 100644 index 0000000..8450f07 --- /dev/null +++ b/wp-content/plugins/elementor/includes/interfaces/group-control.php @@ -0,0 +1,27 @@ +. + */ + +/** Uses WP's Image Editor Class to resize and filter images + * + * @param $url string the local image URL to manipulate + * @param $params array the options to perform on the image. Keys and values supported: + * 'width' int pixels + * 'height' int pixels + * 'opacity' int 0-100 + * 'color' string hex-color #000000-#ffffff + * 'grayscale' bool + * 'negate' bool + * 'crop' bool + * 'crop_only' bool + * 'crop_x' bool string + * 'crop_y' bool string + * 'crop_width' bool string + * 'crop_height' bool string + * 'quality' int 1-100 + * @param $single boolean, if false then an array of data will be returned + * + * @return string|array containing the url of the resized modified image + */ + +if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly. + +if ( ! defined( 'BFITHUMB_UPLOAD_DIR' ) ) { + define( 'BFITHUMB_UPLOAD_DIR', 'elementor/thumbs' ); +} + +if ( ! function_exists( 'bfi_thumb' ) ) { + + function bfi_thumb( $url, $params = array(), $single = true ) { + $class = BFI_Class_Factory::getNewestVersion( 'BFI_Thumb' ); + + return call_user_func( array( $class, 'thumb' ), $url, $params, $single ); + } +} + + +/** + * Class factory, this is to make sure that when multiple bfi_thumb scripts + * are used (e.g. a plugin and a theme both use it), we always use the + * latest version. + */ +if ( ! class_exists( 'BFI_Class_Factory' ) ) { + + class BFI_Class_Factory { + + public static $versions = array(); + public static $latestClass = array(); + + public static function addClassVersion( $baseClassName, $className, $version ) { + if ( empty( self::$versions[ $baseClassName ] ) ) { + self::$versions[ $baseClassName ] = array(); + } + self::$versions[ $baseClassName ][] = array( + 'class' => $className, + 'version' => $version, + ); + } + + public static function getNewestVersion( $baseClassName ) { + if ( empty( self::$latestClass[ $baseClassName ] ) ) { + usort( self::$versions[ $baseClassName ], array( __CLASS__, "versionCompare" ) ); + self::$latestClass[ $baseClassName ] = self::$versions[ $baseClassName ][0]['class']; + unset( self::$versions[ $baseClassName ] ); + } + + return self::$latestClass[ $baseClassName ]; + } + + public static function versionCompare( $a, $b ) { + return version_compare( $a['version'], $b['version'] ) == 1 ? -1 : 1; + } + } +} + + +/* + * Change the default image editors + */ +add_filter( 'wp_image_editors', 'bfi_wp_image_editor' ); + +// Instead of using the default image editors, use our extended ones +if ( ! function_exists( 'bfi_wp_image_editor' ) ) { + + function bfi_wp_image_editor( $editorArray ) { + // Make sure that we use the latest versions + return array( + BFI_Class_Factory::getNewestVersion( 'BFI_Image_Editor_GD' ), + BFI_Class_Factory::getNewestVersion( 'BFI_Image_Editor_Imagick' ), + ); + } +} + + +/* + * Include the WP Image classes + */ + +require_once ABSPATH . WPINC . '/class-wp-image-editor.php'; +require_once ABSPATH . WPINC . '/class-wp-image-editor-imagick.php'; +require_once ABSPATH . WPINC . '/class-wp-image-editor-gd.php'; + + +/* + * Enhanced Imagemagick Image Editor + */ + + +if ( ! class_exists( 'BFI_Image_Editor_Imagick_1_3' ) ) { + + BFI_Class_Factory::addClassVersion( 'BFI_Image_Editor_Imagick', 'BFI_Image_Editor_Imagick_1_3', '1.3' ); + + class BFI_Image_Editor_Imagick_1_3 extends WP_Image_Editor_Imagick { + + /** Changes the opacity of the image + * + * @supports 3.5.1 + * @access public + * + * @param float $opacity (0.0-1.0) + * + * @return boolean|WP_Error + */ + public function opacity( $opacity ) { + $opacity /= 100; + + try { + // From: http://stackoverflow.com/questions/3538851/php-imagick-setimageopacity-destroys-transparency-and-does-nothing + // preserves transparency + //$this->image->setImageOpacity($opacity); + return $this->image->evaluateImage( Imagick::EVALUATE_MULTIPLY, $opacity, Imagick::CHANNEL_ALPHA ); + } catch ( Exception $e ) { + return new WP_Error( 'image_opacity_error', $e->getMessage() ); + } + } + + /** Tints the image a different color + * + * @supports 3.5.1 + * @access public + * + * @param string hex color e.g. #ff00ff + * + * @return boolean|WP_Error + */ + public function colorize( $hexColor ) { + try { + return $this->image->colorizeImage( $hexColor, 1.0 ); + } catch ( Exception $e ) { + return new WP_Error( 'image_colorize_error', $e->getMessage() ); + } + } + + /** Makes the image grayscale + * + * @supports 3.5.1 + * @access public + * + * @return boolean|WP_Error + */ + public function grayscale() { + try { + return $this->image->modulateImage( 100, 0, 100 ); + } catch ( Exception $e ) { + return new WP_Error( 'image_grayscale_error', $e->getMessage() ); + } + } + + /** Negates the image + * + * @supports 3.5.1 + * @access public + * + * @return boolean|WP_Error + */ + public function negate() { + try { + return $this->image->negateImage( false ); + } catch ( Exception $e ) { + return new WP_Error( 'image_negate_error', $e->getMessage() ); + } + } + } +} + + +/* + * Enhanced GD Image Editor + */ + + +if ( ! class_exists( 'BFI_Image_Editor_GD_1_3' ) ) { + + BFI_Class_Factory::addClassVersion( 'BFI_Image_Editor_GD', 'BFI_Image_Editor_GD_1_3', '1.3' ); + + class BFI_Image_Editor_GD_1_3 extends WP_Image_Editor_GD { + + /** Rotates current image counter-clockwise by $angle. + * Ported from image-edit.php + * Added presevation of alpha channels + * + * @since 3.5.0 + * @access public + * + * @param float $angle + * + * @return boolean|WP_Error + */ + public function rotate( $angle ) { + if ( function_exists( 'imagerotate' ) ) { + $rotated = imagerotate( $this->image, $angle, 0 ); + + // Add alpha blending + imagealphablending( $rotated, true ); + imagesavealpha( $rotated, true ); + + if ( is_resource( $rotated ) ) { + imagedestroy( $this->image ); + $this->image = $rotated; + $this->update_size(); + + return true; + } + } + + return new WP_Error( 'image_rotate_error', 'Image rotate failed.', $this->file ); + } + + /** Changes the opacity of the image + * + * @supports 3.5.1 + * @access public + * + * @param float $opacity (0.0-1.0) + * + * @return boolean|WP_Error + */ + public function opacity( $opacity ) { + $opacity /= 100; + + $filtered = $this->_opacity( $this->image, $opacity ); + + if ( is_resource( $filtered ) ) { + // imagedestroy($this->image); + $this->image = $filtered; + + return true; + } + + return new WP_Error( 'image_opacity_error', 'Image opacity change failed.', $this->file ); + } + + + // from: http://php.net/manual/en/function.imagefilter.php + // params: image resource id, opacity (eg. 0.0-1.0) + protected function _opacity( $image, $opacity ) { + if ( ! function_exists( 'imagealphablending' ) || ! function_exists( 'imagecolorat' ) || ! function_exists( 'imagecolorallocatealpha' ) || ! function_exists( 'imagesetpixel' ) ) { + return false; + } + + // get image width and height + $w = imagesx( $image ); + $h = imagesy( $image ); + + // turn alpha blending off + imagealphablending( $image, false ); + + // find the most opaque pixel in the image (the one with the smallest alpha value) + $minalpha = 127; + for ( $x = 0; $x < $w; $x++ ) { + for ( $y = 0; $y < $h; $y++ ) { + $alpha = ( imagecolorat( $image, $x, $y ) >> 24 ) & 0xFF; + if ( $alpha < $minalpha ) { + $minalpha = $alpha; + } + } + } + + // loop through image pixels and modify alpha for each + for ( $x = 0; $x < $w; $x++ ) { + for ( $y = 0; $y < $h; $y++ ) { + + // get current alpha value (represents the TANSPARENCY!) + $colorxy = imagecolorat( $image, $x, $y ); + $alpha = ( $colorxy >> 24 ) & 0xFF; + + // calculate new alpha + if ( $minalpha !== 127 ) { + $alpha = 127 + 127 * $opacity * ( $alpha - 127 ) / ( 127 - $minalpha ); + } else { + $alpha += 127 * $opacity; + } + + // get the color index with new alpha + $alphacolorxy = imagecolorallocatealpha( $image, ( $colorxy >> 16 ) & 0xFF, ( $colorxy >> 8 ) & 0xFF, $colorxy & 0xFF, $alpha ); + + // set pixel with the new color + opacity + if ( ! imagesetpixel( $image, $x, $y, $alphacolorxy ) ) { + return false; + } + } + } + + imagesavealpha( $image, true ); + + return $image; + } + + /** Tints the image a different color + * + * @supports 3.5.1 + * @access public + * + * @param string hex color e.g. #ff00ff + * + * @return boolean|WP_Error + */ + public function colorize( $hexColor ) { + if ( function_exists( 'imagefilter' ) && function_exists( 'imagesavealpha' ) && function_exists( 'imagealphablending' ) ) { + + $hexColor = preg_replace( '#^\##', '', $hexColor ); + $r = hexdec( substr( $hexColor, 0, 2 ) ); + $g = hexdec( substr( $hexColor, 2, 2 ) ); + $b = hexdec( substr( $hexColor, 2, 2 ) ); + + imagealphablending( $this->image, false ); + if ( imagefilter( $this->image, IMG_FILTER_COLORIZE, $r, $g, $b, 0 ) ) { + imagesavealpha( $this->image, true ); + + return true; + } + } + + return new WP_Error( 'image_colorize_error', 'Image color change failed.', $this->file ); + } + + /** Makes the image grayscale + * + * @supports 3.5.1 + * @access public + * + * @return boolean|WP_Error + */ + public function grayscale() { + if ( function_exists( 'imagefilter' ) ) { + if ( imagefilter( $this->image, IMG_FILTER_GRAYSCALE ) ) { + return true; + } + } + + return new WP_Error( 'image_grayscale_error', 'Image grayscale failed.', $this->file ); + } + + /** Negates the image + * + * @supports 3.5.1 + * @access public + * + * @return boolean|WP_Error + */ + public function negate() { + if ( function_exists( 'imagefilter' ) ) { + if ( imagefilter( $this->image, IMG_FILTER_NEGATE ) ) { + return true; + } + } + + return new WP_Error( 'image_negate_error', 'Image negate failed.', $this->file ); + } + } +} + + +/* + * Main Class + */ +if ( ! class_exists( 'BFI_Thumb_1_3' ) ) { + + BFI_Class_Factory::addClassVersion( 'BFI_Thumb', 'BFI_Thumb_1_3', '1.3' ); + + class BFI_Thumb_1_3 { + + /** Uses WP's Image Editor Class to resize and filter images + * Inspired by: https://github.com/sy4mil/Aqua-Resizer/blob/master/aq_resizer.php + * + * @param $url string the local image URL to manipulate + * @param $params array the options to perform on the image. Keys and values supported: + * 'width' int pixels + * 'height' int pixels + * 'opacity' int 0-100 + * 'color' string hex-color #000000-#ffffff + * 'grayscale' bool + * 'crop' bool + * 'negate' bool + * 'crop_only' bool + * 'crop_x' bool string + * 'crop_y' bool string + * 'crop_width' bool string + * 'crop_height' bool string + * 'quality' int 1-100 + * @param $single boolean, if false then an array of data will be returned + * + * @return string|array + */ + public static function thumb( $url, $params = array(), $single = true ) { + extract( $params ); + + //validate inputs + if ( ! $url ) { + return false; + } + + $crop_only = isset( $crop_only ) ? $crop_only : false; + + //define upload path & dir + $upload_info = wp_upload_dir(); + $upload_dir = $upload_info['basedir']; + $upload_url = $upload_info['baseurl']; + $theme_url = get_template_directory_uri(); + $theme_dir = get_template_directory(); + + // find the path of the image. Perform 2 checks: + // #1 check if the image is in the uploads folder + if ( strpos( $url, $upload_url ) !== false ) { + $rel_path = str_replace( $upload_url, '', $url ); + $img_path = $upload_dir . $rel_path; + // #2 check if the image is in the current theme folder + } else if ( strpos( $url, $theme_url ) !== false ) { + $rel_path = str_replace( $theme_url, '', $url ); + $img_path = $theme_dir . $rel_path; + } + + // Fail if we can't find the image in our WP local directory + if ( empty( $img_path ) ) { + return $url; + } + + // check if img path exists, and is an image indeed + if ( ! @file_exists( $img_path ) || ! getimagesize( $img_path ) ) { + return $url; + } + + // This is the filename + $basename = basename( $img_path ); + + //get image info + $info = pathinfo( $img_path ); + $ext = $info['extension']; + list( $orig_w, $orig_h ) = getimagesize( $img_path ); + + // support percentage dimensions. compute percentage based on + // the original dimensions + if ( isset( $width ) ) { + if ( stripos( $width, '%' ) !== false ) { + $width = (int) ( (float) str_replace( '%', '', $width ) / 100 * $orig_w ); + } + } + if ( isset( $height ) ) { + if ( stripos( $height, '%' ) !== false ) { + $height = (int) ( (float) str_replace( '%', '', $height ) / 100 * $orig_h ); + } + } + + // The only purpose of this is to determine the final width and height + // without performing any actual image manipulation, which will be used + // to check whether a resize was previously done. + if ( isset( $width ) && $crop_only === false ) { + //get image size after cropping + $dims = image_resize_dimensions( $orig_w, $orig_h, $width, isset( $height ) ? $height : null, isset( $crop ) ? $crop : false ); + $dst_w = isset( $dims[4] ) ? $dims[4] : null; + $dst_h = isset( $dims[5] ) ? $dims[5] : null; + } else if ( $crop_only === true ) { + // we don't want a resize, + // but only a crop in the image + + // get x position to start croping + $src_x = ( isset( $crop_x ) ) ? $crop_x : 0; + + // get y position to start croping + $src_y = ( isset( $crop_y ) ) ? $crop_y : 0; + + // width of the crop + if ( isset( $crop_width ) ) { + $src_w = $crop_width; + } else if ( isset( $width ) ) { + $src_w = $width; + } else { + $src_w = $orig_w; + } + + // height of the crop + if ( isset( $crop_height ) ) { + $src_h = $crop_height; + } else if ( isset( $height ) ) { + $src_h = $height; + } else { + $src_h = $orig_h; + } + + // set the width resize with the crop + if ( isset( $crop_width ) && isset( $width ) ) { + $dst_w = $width; + } else { + $dst_w = null; + } + + // set the height resize with the crop + if ( isset( $crop_height ) && isset( $height ) ) { + $dst_h = $height; + } else { + $dst_h = null; + } + + // allow percentages + if ( isset( $dst_w ) ) { + if ( stripos( $dst_w, '%' ) !== false ) { + $dst_w = (int) ( (float) str_replace( '%', '', $dst_w ) / 100 * $orig_w ); + } + } + if ( isset( $dst_h ) ) { + if ( stripos( $dst_h, '%' ) !== false ) { + $dst_h = (int) ( (float) str_replace( '%', '', $dst_h ) / 100 * $orig_h ); + } + } + + $dims = image_resize_dimensions( $src_w, $src_h, $dst_w, $dst_h, false ); + $dst_w = $dims[4]; + $dst_h = $dims[5]; + + // Make the pos x and pos y work with percentages + if ( stripos( $src_x, '%' ) !== false ) { + $src_x = (int) ( (float) str_replace( '%', '', $width ) / 100 * $orig_w ); + } + if ( stripos( $src_y, '%' ) !== false ) { + $src_y = (int) ( (float) str_replace( '%', '', $height ) / 100 * $orig_h ); + } + + // allow center to position crop start + if ( $src_x === 'center' ) { + $src_x = ( $orig_w - $src_w ) / 2; + } + if ( $src_y === 'center' ) { + $src_y = ( $orig_h - $src_h ) / 2; + } + } + + // create the suffix for the saved file + // we can use this to check whether we need to create a new file or just use an existing one. + $suffix = (string) filemtime( $img_path ) . ( isset( $width ) ? str_pad( (string) $width, 5, '0', STR_PAD_LEFT ) : '00000' ) . ( isset( $height ) ? str_pad( (string) $height, 5, '0', STR_PAD_LEFT ) : '00000' ) . ( isset( $opacity ) ? str_pad( (string) $opacity, 3, '0', STR_PAD_LEFT ) : '100' ) . ( isset( $color ) ? str_pad( preg_replace( '#^\##', '', $color ), 8, '0', STR_PAD_LEFT ) : '00000000' ) . ( isset( $grayscale ) ? ( $grayscale ? '1' : '0' ) : '0' ) . ( isset( $crop ) ? ( $crop ? '1' : '0' ) : '0' ) . ( isset( $negate ) ? ( $negate ? '1' : '0' ) : '0' ) . ( isset( $crop_only ) ? ( $crop_only ? '1' : '0' ) : '0' ) . ( isset( $src_x ) ? str_pad( (string) $src_x, 5, '0', STR_PAD_LEFT ) : '00000' ) . ( isset( $src_y ) ? str_pad( (string) $src_y, 5, '0', STR_PAD_LEFT ) : '00000' ) . ( isset( $src_w ) ? str_pad( (string) $src_w, 5, '0', STR_PAD_LEFT ) : '00000' ) . ( isset( $src_h ) ? str_pad( (string) $src_h, 5, '0', STR_PAD_LEFT ) : '00000' ) . ( isset( $dst_w ) ? str_pad( (string) $dst_w, 5, '0', STR_PAD_LEFT ) : '00000' ) . ( isset( $dst_h ) ? str_pad( (string) $dst_h, 5, '0', STR_PAD_LEFT ) : '00000' ) . ( ( isset ( $quality ) && $quality > 0 && $quality <= 100 ) ? ( $quality ? (string) $quality : '0' ) : '0' ); + $suffix = self::base_convert_arbitrary( $suffix, 10, 36 ); + + // use this to check if cropped image already exists, so we can return that instead + $dst_rel_path = str_replace( '.' . $ext, '', basename( $img_path ) ); + + // If opacity is set, change the image type to png + if ( isset( $opacity ) ) { + $ext = 'png'; + } + + + // Create the upload subdirectory, this is where + // we store all our generated images + if ( defined( 'BFITHUMB_UPLOAD_DIR' ) ) { + $upload_dir .= "/" . BFITHUMB_UPLOAD_DIR; + $upload_url .= "/" . BFITHUMB_UPLOAD_DIR; + } else { + $upload_dir .= "/bfi_thumb"; + $upload_url .= "/bfi_thumb"; + } + if ( ! is_dir( $upload_dir ) ) { + wp_mkdir_p( $upload_dir ); + } + + + // desination paths and urls + $destfilename = "{$upload_dir}/{$dst_rel_path}-{$suffix}.{$ext}"; + + // The urls generated have lower case extensions regardless of the original case + $ext = strtolower( $ext ); + $img_url = "{$upload_url}/{$dst_rel_path}-{$suffix}.{$ext}"; + + // if file exists, just return it + if ( @file_exists( $destfilename ) && getimagesize( $destfilename ) ) { + } else { + // perform resizing and other filters + $editor = wp_get_image_editor( $img_path ); + + if ( is_wp_error( $editor ) ) { + return false; + } + + /* + * Perform image manipulations + */ + if ( $crop_only === false ) { + if ( ( isset( $width ) && $width ) || ( isset( $height ) && $height ) ) { + if ( is_wp_error( $editor->resize( isset( $width ) ? $width : null, isset( $height ) ? $height : null, isset( $crop ) ? $crop : false ) ) ) { + return false; + } + } + } else { + if ( is_wp_error( $editor->crop( $src_x, $src_y, $src_w, $src_h, $dst_w, $dst_h ) ) ) { + return false; + } + } + + if ( isset( $negate ) ) { + if ( $negate ) { + if ( is_wp_error( $editor->negate() ) ) { + return false; + } + } + } + + if ( isset( $opacity ) ) { + if ( is_wp_error( $editor->opacity( $opacity ) ) ) { + return false; + } + } + + if ( isset( $grayscale ) ) { + if ( $grayscale ) { + if ( is_wp_error( $editor->grayscale() ) ) { + return false; + } + } + } + + if ( isset( $color ) ) { + if ( is_wp_error( $editor->colorize( $color ) ) ) { + return false; + } + } + + // set the image quality (1-100) to save this image at + if ( isset( $quality ) && $quality > 0 && $quality <= 100 && $ext != 'png' ) { + $editor->set_quality( $quality ); + } + + // save our new image + $mime_type = isset( $opacity ) ? 'image/png' : null; + $resized_file = $editor->save( $destfilename, $mime_type ); + } + + //return the output + if ( $single ) { + $image = $img_url; + } else { + //array return + $image = array( + 0 => $img_url, + 1 => isset( $dst_w ) ? $dst_w : $orig_w, + 2 => isset( $dst_h ) ? $dst_h : $orig_h, + ); + } + + return $image; + } + + /** Shortens a number into a base 36 string + * + * @param $number string a string of numbers to convert + * @param $fromBase starting base + * @param $toBase base to convert the number to + * + * @return string base converted characters + */ + protected static function base_convert_arbitrary( $number, $fromBase, $toBase ) { + $digits = '0123456789abcdefghijklmnopqrstuvwxyz'; + $length = strlen( $number ); + $result = ''; + + $nibbles = array(); + for ( $i = 0; $i < $length; ++$i ) { + $nibbles[ $i ] = strpos( $digits, $number[ $i ] ); + } + + do { + $value = 0; + $newlen = 0; + + for ( $i = 0; $i < $length; ++$i ) { + + $value = $value * $fromBase + $nibbles[ $i ]; + + if ( $value >= $toBase ) { + $nibbles[ $newlen++ ] = (int) ( $value / $toBase ); + $value %= $toBase; + } else if ( $newlen > 0 ) { + $nibbles[ $newlen++ ] = 0; + } + } + + $length = $newlen; + $result = $digits[ $value ] . $result; + } while ( $newlen != 0 ); + + return $result; + } + } +} + + +// don't use the default resizer since we want to allow resizing to larger sizes (than the original one) +// Parts are copied from media.php +// Crop is always applied (just like timthumb) +// Don't use this inside the admin since sometimes images in the media library get resized +if ( ! is_admin() ) { + add_filter( 'image_resize_dimensions', 'bfi_image_resize_dimensions', 10, 5 ); +} + +if ( ! function_exists( 'bfi_image_resize_dimensions' ) ) { + function bfi_image_resize_dimensions( $payload, $orig_w, $orig_h, $dest_w, $dest_h, $crop = false ) { + $aspect_ratio = $orig_w / $orig_h; + + $new_w = $dest_w; + $new_h = $dest_h; + + if ( empty( $new_w ) || $new_w < 0 ) { + $new_w = intval( $new_h * $aspect_ratio ); + } + + if ( empty( $new_h ) || $new_h < 0 ) { + $new_h = intval( $new_w / $aspect_ratio ); + } + + $size_ratio = max( $new_w / $orig_w, $new_h / $orig_h ); + + $crop_w = round( $new_w / $size_ratio ); + $crop_h = round( $new_h / $size_ratio ); + $s_x = floor( ( $orig_w - $crop_w ) / 2 ); + $s_y = floor( ( $orig_h - $crop_h ) / 2 ); + + // Safe guard against super large or zero images which might cause 500 errors + if ( $new_w > 5000 || $new_h > 5000 || $new_w <= 0 || $new_h <= 0 ) { + return null; + } + + // the return array matches the parameters to imagecopyresampled() + // int dst_x, int dst_y, int src_x, int src_y, int dst_w, int dst_h, int src_w, int src_h + return array( 0, 0, (int) $s_x, (int) $s_y, (int) $new_w, (int) $new_h, (int) $crop_w, (int) $crop_h ); + } +} + + +// This function allows us to latch on WP image functions such as +// the_post_thumbnail, get_image_tag and wp_get_attachment_image_src +// so that you won't have to use the function bfi_thumb in order to do resizing. +// To make this work, in the WP image functions, when specifying an +// array for the image dimensions, add a 'bfi_thumb' => true to +// the array, then add your normal $params arguments. +// +// e.g. the_post_thumbnail( array( 1024, 400, 'bfi_thumb' => true, 'grayscale' => true ) ); +add_filter( 'image_downsize', 'bfi_image_downsize', 1, 3 ); + +if ( ! function_exists( 'bfi_image_downsize' ) ) { + function bfi_image_downsize( $out, $id, $size ) { + if ( ! is_array( $size ) ) { + return false; + } + if ( ! array_key_exists( 'bfi_thumb', $size ) ) { + return false; + } + if ( empty( $size['bfi_thumb'] ) ) { + return false; + } + + $img_url = wp_get_attachment_url( $id ); + + $params = $size; + $params['width'] = $size[0]; + $params['height'] = $size[1]; + + $resized_img_url = bfi_thumb( $img_url, $params ); + + return array( $resized_img_url, $size[0], $size[1], false ); + } +} diff --git a/wp-content/plugins/elementor/includes/libraries/wp-background-process/wp-async-request.php b/wp-content/plugins/elementor/includes/libraries/wp-background-process/wp-async-request.php new file mode 100644 index 0000000..729ec01 --- /dev/null +++ b/wp-content/plugins/elementor/includes/libraries/wp-background-process/wp-async-request.php @@ -0,0 +1,12 @@ +preview->is_preview_mode() ) { + return; + } + + $user = wp_get_current_user(); + + $exclude_mode = self::get( 'exclude_mode', [] ); + + $is_login_page = false; + + /** + * Is login page + * + * Filters whether the maintenance mode displaying the login page or a regular page. + * + * @since 1.0.4 + * + * @param bool $is_login_page Whether its a login page. + */ + $is_login_page = apply_filters( 'elementor/maintenance_mode/is_login_page', $is_login_page ); + + if ( $is_login_page ) { + return; + } + + if ( 'logged_in' === $exclude_mode && is_user_logged_in() ) { + return; + } + + if ( 'custom' === $exclude_mode ) { + $exclude_roles = self::get( 'exclude_roles', [] ); + $user_roles = $user->roles; + + if ( is_multisite() && is_super_admin() ) { + $user_roles[] = 'super_admin'; + } + + $compare_roles = array_intersect( $user_roles, $exclude_roles ); + + if ( ! empty( $compare_roles ) ) { + return; + } + } + + add_filter( 'body_class', [ $this, 'body_class' ] ); + + if ( 'maintenance' === self::get( 'mode' ) ) { + $protocol = wp_get_server_protocol(); + header( "$protocol 503 Service Unavailable", true, 503 ); + header( 'Content-Type: text/html; charset=utf-8' ); + header( 'Retry-After: 600' ); + } + + // Setup global post for Elementor\frontend so `_has_elementor_in_page = true`. + $GLOBALS['post'] = get_post( self::get( 'template_id' ) ); // phpcs:ignore WordPress.WP.GlobalVariablesOverride.Prohibited + + // Set the template as `$wp_query->current_object` for `wp_title` and etc. + query_posts( [ + 'p' => self::get( 'template_id' ), + 'post_type' => Source_Local::CPT, + ] ); + } + + /** + * Register settings fields. + * + * Adds new "Maintenance Mode" settings fields to Elementor admin page. + * + * The method need to receive the an instance of the Tools settings page + * to add the new maintenance mode functionality. + * + * Fired by `elementor/admin/after_create_settings/{$page_id}` action. + * + * @since 1.4.0 + * @access public + * + * @param Tools $tools An instance of the Tools settings page. + */ + public function register_settings_fields( Tools $tools ) { + $templates = Plugin::$instance->templates_manager->get_source( 'local' )->get_items( [ + 'type' => 'page', + ] ); + + $templates_options = []; + + foreach ( $templates as $template ) { + $templates_options[ $template['template_id'] ] = esc_html( $template['title'] ); + } + + ob_start(); + + $this->print_template_description(); + + $template_description = ob_get_clean(); + + $tools->add_tab( + 'maintenance_mode', [ + 'label' => esc_html__( 'Maintenance Mode', 'elementor' ), + 'sections' => [ + 'maintenance_mode' => [ + 'callback' => function() { + echo '

    ' . esc_html__( 'Maintenance Mode', 'elementor' ) . '

    '; + echo '

    ' . esc_html__( 'Set your entire website as MAINTENANCE MODE, meaning the site is offline temporarily for maintenance, or set it as COMING SOON mode, meaning the site is offline until it is ready to be launched.', 'elementor' ) . '

    '; + }, + 'fields' => [ + 'maintenance_mode_mode' => [ + 'label' => esc_html__( 'Choose Mode', 'elementor' ), + 'field_args' => [ + 'type' => 'select', + 'std' => '', + 'options' => [ + '' => esc_html__( 'Disabled', 'elementor' ), + self::MODE_COMING_SOON => esc_html__( 'Coming Soon', 'elementor' ), + self::MODE_MAINTENANCE => esc_html__( 'Maintenance', 'elementor' ), + ], + 'desc' => '' . + '' . + '', + ], + ], + 'maintenance_mode_exclude_mode' => [ + 'label' => esc_html__( 'Who Can Access', 'elementor' ), + 'field_args' => [ + 'class' => 'elementor-default-hide', + 'type' => 'select', + 'std' => 'logged_in', + 'options' => [ + 'logged_in' => esc_html__( 'Logged In', 'elementor' ), + 'custom' => esc_html__( 'Custom', 'elementor' ), + ], + ], + ], + 'maintenance_mode_exclude_roles' => [ + 'label' => esc_html__( 'Roles', 'elementor' ), + 'field_args' => [ + 'class' => 'elementor-default-hide', + 'type' => 'checkbox_list_roles', + ], + 'setting_args' => [ __NAMESPACE__ . '\Settings_Validations', 'checkbox_list' ], + ], + 'maintenance_mode_template_id' => [ + 'label' => esc_html__( 'Choose Template', 'elementor' ), + 'field_args' => [ + 'class' => 'elementor-default-hide', + 'type' => 'select', + 'std' => '', + 'show_select' => true, + 'options' => $templates_options, + 'desc' => $template_description, + ], + ], + ], + ], + ], + ] + ); + } + + /** + * Add menu in admin bar. + * + * Adds "Maintenance Mode" items to the WordPress admin bar. + * + * Fired by `admin_bar_menu` filter. + * + * @since 1.4.0 + * @access public + * + * @param \WP_Admin_Bar $wp_admin_bar WP_Admin_Bar instance, passed by reference. + */ + public function add_menu_in_admin_bar( \WP_Admin_Bar $wp_admin_bar ) { + $wp_admin_bar->add_node( [ + 'id' => 'elementor-maintenance-on', + 'title' => esc_html__( 'Maintenance Mode ON', 'elementor' ), + 'href' => Tools::get_url() . '#tab-maintenance_mode', + ] ); + + $document = Plugin::$instance->documents->get( self::get( 'template_id' ) ); + + $wp_admin_bar->add_node( [ + 'id' => 'elementor-maintenance-edit', + 'parent' => 'elementor-maintenance-on', + 'title' => esc_html__( 'Edit Template', 'elementor' ), + 'href' => $document ? $document->get_edit_url() : '', + ] ); + } + + /** + * Print style. + * + * Adds custom CSS to the HEAD html tag. The CSS that emphasise the maintenance + * mode with red colors. + * + * Fired by `admin_head` and `wp_head` filters. + * + * @since 1.4.0 + * @access public + */ + public function print_style() { + ?> + + documents->get( $template_id )->get_edit_url(); + } + + ?> + +
    +
    + ', + '' + ); + ?> +
    + 'ids', + ] ) + ); + + return; + } + + static::create_default_kit(); + static::insert_defaults_options(); + + set_transient( 'elementor_activation_redirect', true, MINUTE_IN_SECONDS ); + } + + public static function insert_defaults_options() { + $history = Upgrade_Manager::get_installs_history(); + if ( empty( $history ) ) { + $default_options = [ + 'elementor_font_display' => 'swap', + ]; + foreach ( $default_options as $option_name => $option_value ) { + if ( \Elementor\Utils::is_empty( get_option( $option_name ) ) ) { + add_option( $option_name, $option_value ); + } + } + } + } + + /** + * Uninstall Elementor. + * + * Set Elementor uninstallation hook. + * + * Fired by `register_uninstall_hook` when the plugin is uninstalled. + * + * @since 1.0.0 + * @access public + * @static + */ + public static function uninstall() { + wp_clear_scheduled_hook( 'elementor/tracker/send_event' ); + } + + /** + * Init. + * + * Initialize Elementor Maintenance. + * + * @since 1.0.0 + * @access public + * @static + */ + public static function init() { + register_activation_hook( ELEMENTOR_PLUGIN_BASE, [ __CLASS__, 'activation' ] ); + register_uninstall_hook( ELEMENTOR_PLUGIN_BASE, [ __CLASS__, 'uninstall' ] ); + + add_action( 'wpmu_new_blog', function ( $site_id ) { + if ( ! is_plugin_active_for_network( ELEMENTOR_PLUGIN_BASE ) ) { + return; + } + + static::create_default_kit( [ $site_id ] ); + } ); + } + + /** + * @param array $site_ids + */ + private static function create_default_kit( array $site_ids = [] ) { + if ( ! empty( $site_ids ) ) { + foreach ( $site_ids as $site_id ) { + switch_to_blog( $site_id ); + + Manager::create_default_kit(); + + restore_current_blog(); + }; + + return; + } + + Manager::create_default_kit(); + } +} diff --git a/wp-content/plugins/elementor/includes/managers/controls.php b/wp-content/plugins/elementor/includes/managers/controls.php new file mode 100644 index 0000000..10cd8d2 --- /dev/null +++ b/wp-content/plugins/elementor/includes/managers/controls.php @@ -0,0 +1,1340 @@ + esc_html__( 'Content', 'elementor' ), + self::TAB_STYLE => esc_html__( 'Style', 'elementor' ), + self::TAB_ADVANCED => esc_html__( 'Advanced', 'elementor' ), + self::TAB_RESPONSIVE => esc_html__( 'Responsive', 'elementor' ), + self::TAB_LAYOUT => esc_html__( 'Layout', 'elementor' ), + self::TAB_SETTINGS => esc_html__( 'Settings', 'elementor' ), + ]; + } + + /** + * Get tabs. + * + * Retrieve the tabs of the current control. + * + * @since 1.6.0 + * @access public + * @static + * + * @return array Control tabs. + */ + public static function get_tabs() { + if ( ! self::$tabs ) { + self::init_tabs(); + } + + return self::$tabs; + } + + /** + * Add tab. + * + * This method adds a new tab to the current control. + * + * @since 1.6.0 + * @access public + * @static + * + * @param string $tab_name Tab name. + * @param string $tab_label Tab label. + */ + public static function add_tab( $tab_name, $tab_label = '' ) { + if ( ! self::$tabs ) { + self::init_tabs(); + } + + if ( isset( self::$tabs[ $tab_name ] ) ) { + return; + } + + self::$tabs[ $tab_name ] = $tab_label; + } + + public static function get_groups_names() { + // Group name must use "-" instead of "_" + return [ + 'background', + 'border', + 'typography', + 'image-size', + 'box-shadow', + 'css-filter', + 'text-shadow', + 'flex-container', + 'grid-container', + 'flex-item', + 'text-stroke', + ]; + } + + public static function get_controls_names() { + return [ + self::TEXT, + self::NUMBER, + self::TEXTAREA, + self::SELECT, + self::SWITCHER, + + self::BUTTON, + self::HIDDEN, + self::HEADING, + self::RAW_HTML, + self::POPOVER_TOGGLE, + self::SECTION, + self::TAB, + self::TABS, + self::DIVIDER, + self::DEPRECATED_NOTICE, + self::ALERT, + self::NOTICE, + + self::COLOR, + self::MEDIA, + self::SLIDER, + self::DIMENSIONS, + self::CHOOSE, + self::WYSIWYG, + self::CODE, + self::FONT, + self::IMAGE_DIMENSIONS, + self::GAPS, + + self::WP_WIDGET, + + self::URL, + self::REPEATER, + self::ICON, + self::ICONS, + self::GALLERY, + self::STRUCTURE, + self::SELECT2, + self::DATE_TIME, + self::BOX_SHADOW, + self::TEXT_SHADOW, + self::ANIMATION, + self::HOVER_ANIMATION, + self::EXIT_ANIMATION, + ]; + } + + /** + * Register controls. + * + * This method creates a list of all the supported controls by requiring the + * control files and initializing each one of them. + * + * The list of supported controls includes the regular controls and the group + * controls. + * + * External developers can register new controls by hooking to the + * `elementor/controls/controls_registered` action. + * + * @since 3.1.0 + * @access private + */ + private function register_controls() { + $this->controls = []; + + foreach ( self::get_controls_names() as $control_id ) { + $control_class_id = str_replace( ' ', '_', ucwords( str_replace( '_', ' ', $control_id ) ) ); + $class_name = __NAMESPACE__ . '\Control_' . $control_class_id; + + $this->register( new $class_name() ); + } + + // Group Controls + foreach ( self::get_groups_names() as $group_name ) { + $group_class_id = str_replace( ' ', '_', ucwords( str_replace( '-', ' ', $group_name ) ) ); + $class_name = __NAMESPACE__ . '\Group_Control_' . $group_class_id; + + $this->control_groups[ $group_name ] = new $class_name(); + } + + /** + * After controls registered. + * + * Fires after Elementor controls are registered. + * + * @since 1.0.0 + * @deprecated 3.5.0 Use `elementor/controls/register` hook instead. + * + * @param Controls_Manager $this The controls manager. + */ + // TODO: Uncomment when Pro uses the new hook. + //Plugin::$instance->modules_manager->get_modules( 'dev-tools' )->deprecation->do_deprecated_action( + // 'elementor/controls/controls_registered', + // [ $this ], + // '3.5.0', + // 'elementor/controls/register' + //); + + do_action( 'elementor/controls/controls_registered', $this ); + + /** + * After controls registered. + * + * Fires after Elementor controls are registered. + * + * @since 3.5.0 + * + * @param Controls_Manager $this The controls manager. + */ + do_action( 'elementor/controls/register', $this ); + } + + /** + * Register control. + * + * This method adds a new control to the controls list. It adds any given + * control to any given control instance. + * + * @since 1.0.0 + * @access public + * @deprecated 3.5.0 Use `register()` method instead. + * + * @param string $control_id Control ID. + * @param Base_Control $control_instance Control instance, usually the + * current instance. + */ + public function register_control( $control_id, Base_Control $control_instance ) { + // TODO: Uncomment when Pro uses the new hook. + //Plugin::$instance->modules_manager->get_modules( 'dev-tools' )->deprecation->deprecated_function( + // __METHOD__, + // '3.5.0', + // 'register()' + //); + + $this->register( $control_instance, $control_id ); + } + + /** + * Register control. + * + * This method adds a new control to the controls list. It adds any given + * control to any given control instance. + * + * @since 3.5.0 + * @access public + * + * @param Base_Control $control_instance Control instance, usually the current instance. + * @param string $control_id Control ID. Deprecated parameter. + * + * @return void + */ + public function register( Base_Control $control_instance, $control_id = null ) { + + // TODO: For BC. Remove in the future. + if ( $control_id ) { + Plugin::instance()->modules_manager->get_modules( 'dev-tools' )->deprecation->deprecated_argument( + '$control_id', '3.5.0' + ); + } else { + $control_id = $control_instance->get_type(); + } + + $this->controls[ $control_id ] = $control_instance; + } + + /** + * Unregister control. + * + * This method removes control from the controls list. + * + * @since 1.0.0 + * @access public + * @deprecated 3.5.0 Use `unregister()` method instead. + * + * @param string $control_id Control ID. + * + * @return bool True if the control was removed, False otherwise. + */ + public function unregister_control( $control_id ) { + Plugin::$instance->modules_manager->get_modules( 'dev-tools' )->deprecation->deprecated_function( + __METHOD__, + '3.5.0', + 'unregister()' + ); + + return $this->unregister( $control_id ); + } + + /** + * Unregister control. + * + * This method removes control from the controls list. + * + * @since 3.5.0 + * @access public + * + * @param string $control_id Control ID. + * + * @return bool Whether the controls has been unregistered. + */ + public function unregister( $control_id ) { + if ( ! isset( $this->controls[ $control_id ] ) ) { + return false; + } + + unset( $this->controls[ $control_id ] ); + + return true; + } + + /** + * Get controls. + * + * Retrieve the controls list from the current instance. + * + * @since 1.0.0 + * @access public + * + * @return Base_Control[] Controls list. + */ + public function get_controls() { + if ( null === $this->controls ) { + $this->register_controls(); + } + + return $this->controls; + } + + /** + * Get control. + * + * Retrieve a specific control from the current controls instance. + * + * @since 1.0.0 + * @access public + * + * @param string $control_id Control ID. + * + * @return bool|Base_Control Control instance, or False otherwise. + */ + public function get_control( $control_id ) { + $controls = $this->get_controls(); + + return isset( $controls[ $control_id ] ) ? $controls[ $control_id ] : false; + } + + /** + * Get controls data. + * + * Retrieve all the registered controls and all the data for each control. + * + * @since 1.0.0 + * @access public + * + * @return array { + * Control data. + * + * @type array $name Control data. + * } + */ + public function get_controls_data() { + $controls_data = []; + + foreach ( $this->get_controls() as $name => $control ) { + $controls_data[ $name ] = $control->get_settings(); + } + + return $controls_data; + } + + /** + * Render controls. + * + * Generate the final HTML for all the registered controls using the element + * template. + * + * @since 1.0.0 + * @access public + */ + public function render_controls() { + foreach ( $this->get_controls() as $control ) { + $control->print_template(); + } + } + + /** + * Get control groups. + * + * Retrieve a specific group for a given ID, or a list of all the control + * groups. + * + * If the given group ID is wrong, it will return `null`. When the ID valid, + * it will return the group control instance. When no ID was given, it will + * return all the control groups. + * + * @since 1.0.10 + * @access public + * + * @param string $id Optional. Group ID. Default is null. + * + * @return null|Group_Control_Base|Group_Control_Base[] + */ + public function get_control_groups( $id = null ) { + if ( $id ) { + return isset( $this->control_groups[ $id ] ) ? $this->control_groups[ $id ] : null; + } + + return $this->control_groups; + } + + /** + * Add group control. + * + * This method adds a new group control to the control groups list. It adds + * any given group control to any given group control instance. + * + * @since 1.0.0 + * @access public + * + * @param string $id Group control ID. + * @param Group_Control_Base $instance Group control instance, usually the + * current instance. + * + * @return Group_Control_Base Group control instance. + */ + public function add_group_control( $id, $instance ) { + $this->control_groups[ $id ] = $instance; + + return $instance; + } + + /** + * Enqueue control scripts and styles. + * + * Used to register and enqueue custom scripts and styles used by the control. + * + * @since 1.0.0 + * @access public + */ + public function enqueue_control_scripts() { + foreach ( $this->get_controls() as $control ) { + $control->enqueue(); + } + } + + /** + * Open new stack. + * + * This method adds a new stack to the control stacks list. It adds any + * given stack to the current control instance. + * + * @since 1.0.0 + * @access public + * + * @param Controls_Stack $controls_stack Controls stack. + */ + public function open_stack( Controls_Stack $controls_stack ) { + $stack_id = $controls_stack->get_unique_name(); + + $this->stacks[ $stack_id ] = [ + 'tabs' => [], + 'controls' => [], + 'responsive_control_duplication_mode' => Plugin::$instance->breakpoints->get_responsive_control_duplication_mode(), + ]; + } + + /** + * Remove existing stack from the stacks cache + * + * Removes the stack of a passed instance from the Controls Manager's stacks cache. + * + * @param Controls_Stack $controls_stack + * @return void + */ + public function delete_stack( Controls_Stack $controls_stack ) { + $stack_id = $controls_stack->get_unique_name(); + + unset( $this->stacks[ $stack_id ] ); + } + + /** + * Add control to stack. + * + * This method adds a new control to the stack. + * + * @since 1.0.0 + * @access public + * + * @param Controls_Stack $element Element stack. + * @param string $control_id Control ID. + * @param array $control_data Control data. + * @param array $options Optional. Control additional options. + * Default is an empty array. + * + * @return bool True if control added, False otherwise. + */ + public function add_control_to_stack( Controls_Stack $element, $control_id, $control_data, $options = [] ) { + $default_options = [ + 'overwrite' => false, + 'index' => null, + ]; + + $options = array_merge( $default_options, $options ); + + $default_args = [ + 'type' => self::TEXT, + 'tab' => self::TAB_CONTENT, + ]; + + $control_data['name'] = $control_id; + + $control_data = array_merge( $default_args, $control_data ); + + $control_type_instance = $this->get_control( $control_data['type'] ); + + if ( ! $control_type_instance ) { + _doing_it_wrong( sprintf( '%1$s::%2$s', __CLASS__, __FUNCTION__ ), sprintf( 'Control type "%s" not found.', esc_html( $control_data['type'] ) ), '1.0.0' ); + return false; + } + + if ( $control_type_instance instanceof Base_Data_Control ) { + $control_default_value = $control_type_instance->get_default_value(); + + if ( is_array( $control_default_value ) ) { + $control_data['default'] = isset( $control_data['default'] ) ? array_merge( $control_default_value, $control_data['default'] ) : $control_default_value; + } else { + $control_data['default'] = isset( $control_data['default'] ) ? $control_data['default'] : $control_default_value; + } + } + + $stack_id = $element->get_unique_name(); + + if ( ! $options['overwrite'] && isset( $this->stacks[ $stack_id ]['controls'][ $control_id ] ) ) { + _doing_it_wrong( sprintf( '%1$s::%2$s', __CLASS__, __FUNCTION__ ), sprintf( 'Cannot redeclare control with same name "%s".', esc_html( $control_id ) ), '1.0.0' ); + + return false; + } + + $tabs = self::get_tabs(); + + if ( ! isset( $tabs[ $control_data['tab'] ] ) ) { + $control_data['tab'] = $default_args['tab']; + } + + $this->stacks[ $stack_id ]['tabs'][ $control_data['tab'] ] = $tabs[ $control_data['tab'] ]; + + $this->stacks[ $stack_id ]['controls'][ $control_id ] = $control_data; + + if ( null !== $options['index'] ) { + $controls = $this->stacks[ $stack_id ]['controls']; + + $controls_keys = array_keys( $controls ); + + array_splice( $controls_keys, $options['index'], 0, $control_id ); + + $this->stacks[ $stack_id ]['controls'] = array_merge( array_flip( $controls_keys ), $controls ); + } + + return true; + } + + /** + * Remove control from stack. + * + * This method removes a control a the stack. + * + * @since 1.0.0 + * @access public + * + * @param string $stack_id Stack ID. + * @param array|string $control_id The ID of the control to remove. + * + * @return bool|\WP_Error True if the stack was removed, False otherwise. + */ + public function remove_control_from_stack( $stack_id, $control_id ) { + if ( is_array( $control_id ) ) { + foreach ( $control_id as $id ) { + $this->remove_control_from_stack( $stack_id, $id ); + } + + return true; + } + + if ( empty( $this->stacks[ $stack_id ]['controls'][ $control_id ] ) ) { + return new \WP_Error( 'Cannot remove not-exists control.' ); + } + + unset( $this->stacks[ $stack_id ]['controls'][ $control_id ] ); + + return true; + } + + /** + * Has Stacks Cache Been Cleared. + * @since 3.13.0 + * @access public + * @return bool True if the CSS requires to clear the controls stack cache, False otherwise. + */ + public function has_stacks_cache_been_cleared() { + return $this->has_stacks_cache_been_cleared; + } + + /** + * Clear stack. + * This method clears the stack. + * @since 3.13.0 + * @access public + */ + public function clear_stack_cache() { + $this->stacks = []; + $this->has_stacks_cache_been_cleared = true; + } + + /** + * Get control from stack. + * + * Retrieve a specific control for a given a specific stack. + * + * If the given control does not exist in the stack, or the stack does not + * exist, it will return `WP_Error`. Otherwise, it will retrieve the control + * from the stack. + * + * @since 1.1.0 + * @access public + * + * @param string $stack_id Stack ID. + * @param string $control_id Control ID. + * + * @return array|\WP_Error The control, or an error. + */ + public function get_control_from_stack( $stack_id, $control_id ) { + if ( empty( $this->stacks[ $stack_id ]['controls'][ $control_id ] ) ) { + return new \WP_Error( 'Cannot get a not-exists control.' ); + } + + return $this->stacks[ $stack_id ]['controls'][ $control_id ]; + } + + /** + * Update control in stack. + * + * This method updates the control data for a given stack. + * + * @since 1.1.0 + * @access public + * + * @param Controls_Stack $element Element stack. + * @param string $control_id Control ID. + * @param array $control_data Control data. + * @param array $options Optional. Control additional options. + * Default is an empty array. + * + * @return bool True if control updated, False otherwise. + */ + public function update_control_in_stack( Controls_Stack $element, $control_id, $control_data, array $options = [] ) { + $old_control_data = $this->get_control_from_stack( $element->get_unique_name(), $control_id ); + + if ( is_wp_error( $old_control_data ) ) { + return false; + } + + if ( ! empty( $options['recursive'] ) ) { + $control_data = array_replace_recursive( $old_control_data, $control_data ); + } else { + $control_data = array_merge( $old_control_data, $control_data ); + } + + return $this->add_control_to_stack( $element, $control_id, $control_data, [ + 'overwrite' => true, + ] ); + } + + /** + * Get stacks. + * + * Retrieve a specific stack for the list of stacks. + * + * If the given stack is wrong, it will return `null`. When the stack valid, + * it will return the the specific stack. When no stack was given, it will + * return all the stacks. + * + * @since 1.7.1 + * @access public + * + * @param string $stack_id Optional. stack ID. Default is null. + * + * @return null|array A list of stacks. + */ + public function get_stacks( $stack_id = null ) { + if ( $stack_id ) { + if ( isset( $this->stacks[ $stack_id ] ) ) { + return $this->stacks[ $stack_id ]; + } + + return null; + } + + return $this->stacks; + } + + /** + * Get element stack. + * + * Retrieve a specific stack for the list of stacks from the current instance. + * + * @since 1.0.0 + * @access public + * + * @param Controls_Stack $controls_stack Controls stack. + * + * @return null|array Stack data if it exists, `null` otherwise. + */ + public function get_element_stack( Controls_Stack $controls_stack ) { + $stack_id = $controls_stack->get_unique_name(); + + if ( ! isset( $this->stacks[ $stack_id ] ) ) { + return null; + } + + if ( $this->should_clean_stack( $this->stacks[ $stack_id ] ) ) { + $this->delete_stack( $controls_stack ); + return null; + } + + return $this->stacks[ $stack_id ]; + } + + /** + * Add custom CSS controls. + * + * This method adds a new control for the "Custom CSS" feature. The free + * version of elementor uses this method to display an upgrade message to + * Elementor Pro. + * + * @since 1.0.0 + * @access public + * + * @param Controls_Stack $controls_stack . + * @param string $tab + * @param array $additional_messages + * + */ + public function add_custom_css_controls( Controls_Stack $controls_stack, $tab = self::TAB_ADVANCED, $additional_messages = [] ) { + $controls_stack->start_controls_section( + 'section_custom_css_pro', + [ + 'label' => esc_html__( 'Custom CSS', 'elementor' ), + 'tab' => $tab, + ] + ); + + $messages = [ + esc_html__( 'Custom CSS lets you add CSS code to any widget, and see it render live right in the editor.', 'elementor' ), + ]; + + if ( $additional_messages ) { + $messages = array_merge( $messages, $additional_messages ); + } + + $controls_stack->add_control( + 'custom_css_pro', + [ + 'type' => self::RAW_HTML, + 'raw' => $this->get_teaser_template( [ + 'title' => esc_html__( 'Meet Our Custom CSS', 'elementor' ), + 'messages' => $messages, + 'link' => 'https://go.elementor.com/go-pro-custom-css/', + ] ), + ] + ); + + $controls_stack->end_controls_section(); + } + + /** + * Add Page Transitions controls. + * + * This method adds a new control for the "Page Transitions" feature. The Core + * version of elementor uses this method to display an upgrade message to + * Elementor Pro. + * + * @param Controls_Stack $controls_stack . + * @param string $tab + * @param array $additional_messages + * + * @return void + */ + public function add_page_transitions_controls( Controls_Stack $controls_stack, $tab = self::TAB_ADVANCED, $additional_messages = [] ) { + $controls_stack->start_controls_section( + 'section_page_transitions_teaser', + [ + 'label' => esc_html__( 'Page Transitions', 'elementor' ), + 'tab' => $tab, + ] + ); + + $messages = [ + esc_html__( 'Page Transitions let you style entrance and exit animations between pages as well as display loader until your page assets load.', 'elementor' ), + ]; + + if ( $additional_messages ) { + $messages = array_merge( $messages, $additional_messages ); + } + + $controls_stack->add_control( + 'page_transitions_teaser', + [ + 'type' => self::RAW_HTML, + 'raw' => $this->get_teaser_template( [ + 'title' => esc_html__( 'Meet Page Transitions', 'elementor' ), + 'messages' => $messages, + 'link' => 'https://go.elementor.com/go-pro-page-transitions/', + ] ), + ] + ); + + $controls_stack->end_controls_section(); + } + + public function get_teaser_template( $texts ) { + ob_start(); + ?> +
    + <?php echo esc_attr__( 'Upgrade', 'elementor' ); ?> +
    + +
    + + + + + +
    + start_controls_section( + 'section_custom_attributes_pro', + [ + 'label' => esc_html__( 'Attributes', 'elementor' ), + 'tab' => self::TAB_ADVANCED, + ] + ); + + $controls_stack->add_control( + 'custom_attributes_pro', + [ + 'type' => self::RAW_HTML, + 'raw' => $this->get_teaser_template( [ + 'title' => esc_html__( 'Meet Our Attributes', 'elementor' ), + 'messages' => [ + esc_html__( 'Attributes lets you add custom HTML attributes to any element.', 'elementor' ), + ], + 'link' => 'https://go.elementor.com/go-pro-custom-attributes/', + ] ), + ] + ); + + $controls_stack->end_controls_section(); + } + + /** + * Check if a stack should be cleaned by the current responsive control duplication mode. + * + * @param $stack + * @return bool + */ + private function should_clean_stack( $stack ): bool { + if ( ! isset( $stack['responsive_control_duplication_mode'] ) ) { + return false; + } + + $stack_duplication_mode = $stack['responsive_control_duplication_mode']; + + // This array provides a convenient way to map human-readable mode names to numeric values for comparison. + // If the current stack's mode is greater than or equal to the current mode, then we shouldn't clean the stack. + $modes = [ + 'off' => 1, + 'dynamic' => 2, + 'on' => 3, + ]; + + if ( ! isset( $modes[ $stack_duplication_mode ] ) ) { + return false; + } + + $current_duplication_mode = Plugin::$instance->breakpoints->get_responsive_control_duplication_mode(); + + if ( $modes[ $stack_duplication_mode ] >= $modes[ $current_duplication_mode ] ) { + return false; + } + + return true; + } + + public function add_display_conditions_controls( Controls_Stack $controls_stack ) { + if ( Utils::has_pro() ) { + return; + } + + ob_start(); + ?> +
    +
    + + + + + + +
    + +
    + add_control( + 'display_conditions_pro', + [ + 'type' => self::RAW_HTML, + 'separator' => 'before', + 'raw' => $control_template, + ] + ); + } + + public function add_motion_effects_promotion_control( Controls_Stack $controls_stack ) { + if ( Utils::has_pro() ) { + return; + } + + $controls_stack->add_control( + 'scrolling_effects_pro', + [ + 'type' => self::RAW_HTML, + 'separator' => 'before', + 'raw' => $this->promotion_switcher_control( esc_html__( 'Scrolling Effects', 'elementor' ), 'scrolling-effects' ), + ] + ); + + $controls_stack->add_control( + 'mouse_effects_pro', + [ + 'type' => self::RAW_HTML, + 'separator' => 'before', + 'raw' => $this->promotion_switcher_control( esc_html__( 'Mouse Effects', 'elementor' ), 'mouse-effects' ), + ] + ); + + $controls_stack->add_control( + 'sticky_pro', + [ + 'type' => self::RAW_HTML, + 'separator' => 'before', + 'raw' => $this->promotion_select_control( esc_html__( 'Sticky', 'elementor' ), 'sticky-effects' ), + ] + ); + + $controls_stack->add_control( + 'motion_effects_promotion_divider', + [ + 'type' => self::DIVIDER, + ] + ); + } + + private function promotion_switcher_control( $title, $id ): string { + return '
    +
    +
    + + + + +
    + +
    +
    +
    +
    '; + } + + private function promotion_select_control( $title, $id ): string { + return '
    +
    +
    + + + + +
    +
    None
    +
    +
    +
    +
    '; + } +} diff --git a/wp-content/plugins/elementor/includes/managers/elements.php b/wp-content/plugins/elementor/includes/managers/elements.php new file mode 100644 index 0000000..9435952 --- /dev/null +++ b/wp-content/plugins/elementor/includes/managers/elements.php @@ -0,0 +1,362 @@ +require_files(); + } + + /** + * Create element instance. + * + * This method creates a new element instance for any given element. + * + * @since 1.0.0 + * @access public + * + * @param array $element_data Element data. + * @param array $element_args Optional. Element arguments. Default is + * an empty array. + * @param Element_Base $element_type Optional. Element type. Default is null. + * + * @return Element_Base|null Element instance if element created, or null + * otherwise. + */ + public function create_element_instance( array $element_data, array $element_args = [], Element_Base $element_type = null ) { + if ( null === $element_type ) { + if ( 'widget' === $element_data['elType'] ) { + $element_type = Plugin::$instance->widgets_manager->get_widget_types( $element_data['widgetType'] ); + } else { + $element_type = $this->get_element_types( $element_data['elType'] ); + } + } + + if ( ! $element_type ) { + return null; + } + + $args = array_merge( $element_type->get_default_args(), $element_args ); + + $element_class = $element_type->get_class_name(); + + try { + $element = new $element_class( $element_data, $args ); + } catch ( \Exception $e ) { + return null; + } + + return $element; + } + + /** + * Get element categories. + * + * Retrieve the list of categories the element belongs to. + * + * @since 1.0.0 + * @access public + * + * @return array Element categories. + */ + public function get_categories() { + if ( null === $this->categories ) { + $this->init_categories(); + } + + return $this->categories; + } + + /** + * Add element category. + * + * Register new category for the element. + * + * @since 1.7.12 + * @access public + * + * @param string $category_name Category name. + * @param array $category_properties Category properties. + */ + public function add_category( $category_name, $category_properties ) { + if ( null === $this->categories ) { + $this->get_categories(); + } + + if ( ! isset( $this->categories[ $category_name ] ) ) { + $this->categories[ $category_name ] = $category_properties; + } + } + + /** + * Register element type. + * + * Add new type to the list of registered types. + * + * @since 1.0.0 + * @access public + * + * @param Element_Base $element Element instance. + * + * @return bool Whether the element type was registered. + */ + public function register_element_type( Element_Base $element ) { + $this->_element_types[ $element->get_name() ] = $element; + + return true; + } + + /** + * Unregister element type. + * + * Remove element type from the list of registered types. + * + * @since 1.0.0 + * @access public + * + * @param string $name Element name. + * + * @return bool Whether the element type was unregister, or not. + */ + public function unregister_element_type( $name ) { + if ( ! isset( $this->_element_types[ $name ] ) ) { + return false; + } + + unset( $this->_element_types[ $name ] ); + + return true; + } + + /** + * Get element types. + * + * Retrieve the list of all the element types, or if a specific element name + * was provided retrieve his element types. + * + * @since 1.0.0 + * @access public + * + * @param string $element_name Optional. Element name. Default is null. + * + * @return null|Element_Base|Element_Base[] Element types, or a list of all the element + * types, or null if element does not exist. + */ + public function get_element_types( $element_name = null ) { + if ( is_null( $this->_element_types ) ) { + $this->init_elements(); + } + + if ( null !== $element_name ) { + return isset( $this->_element_types[ $element_name ] ) ? $this->_element_types[ $element_name ] : null; + } + + return $this->_element_types; + } + + /** + * Get element types config. + * + * Retrieve the config of all the element types. + * + * @since 1.0.0 + * @access public + * + * @return array Element types config. + */ + public function get_element_types_config() { + $config = []; + + foreach ( $this->get_element_types() as $element ) { + $config[ $element->get_name() ] = $element->get_config(); + } + + return $config; + } + + /** + * Render elements content. + * + * Used to generate the elements templates on the editor. + * + * @since 1.0.0 + * @access public + */ + public function render_elements_content() { + foreach ( $this->get_element_types() as $element_type ) { + $element_type->print_template(); + } + } + + /** + * Init elements. + * + * Initialize Elementor elements by registering the supported elements. + * Elementor supports by default `section` element and `column` element. + * + * @since 2.0.0 + * @access private + */ + private function init_elements() { + $this->_element_types = []; + + foreach ( [ 'section', 'column' ] as $element_name ) { + $class_name = __NAMESPACE__ . '\Element_' . $element_name; + + $this->register_element_type( new $class_name() ); + } + + $experiments_manager = Plugin::$instance->experiments; + + if ( $experiments_manager->is_feature_active( 'container' ) ) { + $this->register_element_type( new Container() ); + } + + /** + * After elements registered. + * + * Fires after Elementor elements are registered. + * + * @since 1.0.0 + */ + do_action( 'elementor/elements/elements_registered', $this ); + } + + /** + * Init categories. + * + * Initialize the element categories. + * + * @since 1.7.12 + * @access private + */ + private function init_categories() { + $this->categories = [ + 'layout' => [ + 'title' => esc_html__( 'Layout', 'elementor' ), + 'hideIfEmpty' => true, + ], + 'basic' => [ + 'title' => esc_html__( 'Basic', 'elementor' ), + 'icon' => 'eicon-font', + ], + 'pro-elements' => [ + 'title' => esc_html__( 'Pro', 'elementor' ), + 'promotion' => [ + 'url' => esc_url( 'https://go.elementor.com/go-pro-section-pro-widget-panel/' ), + ], + ], + 'general' => [ + 'title' => esc_html__( 'General', 'elementor' ), + 'icon' => 'eicon-font', + ], + 'theme-elements' => [ + 'title' => esc_html__( 'Site', 'elementor' ), + 'active' => false, + 'promotion' => [ + 'url' => esc_url( 'https://go.elementor.com/go-pro-section-site-widget-panel/' ), + ], + ], + 'woocommerce-elements' => [ + 'title' => esc_html__( 'WooCommerce', 'elementor' ), + 'active' => false, + 'promotion' => [ + 'url' => esc_url( 'https://go.elementor.com/go-pro-section-woocommerce-widget-panel/' ), + ], + ], + ]; + + // Not using the `add_category` because it doesn't allow 3rd party to inject a category on top the others. + $this->categories = array_merge_recursive( [ + 'favorites' => [ + 'title' => esc_html__( 'Favorites', 'elementor' ), + 'icon' => 'eicon-heart', + 'sort' => 'a-z', + 'hideIfEmpty' => false, + ], + ], $this->categories ); + + /** + * When categories are registered. + * + * Fires after basic categories are registered, before WordPress + * category have been registered. + * + * This is where categories registered by external developers are + * added. + * + * @since 2.0.0 + * + * @param Elements_Manager $this Elements manager instance. + */ + do_action( 'elementor/elements/categories_registered', $this ); + + $this->categories['wordpress'] = [ + 'title' => esc_html__( 'WordPress', 'elementor' ), + 'icon' => 'eicon-wordpress', + 'active' => false, + ]; + } + + /** + * Require files. + * + * Require Elementor element base class and column, section and repeater + * elements. + * + * @since 1.0.0 + * @access private + */ + private function require_files() { + require_once ELEMENTOR_PATH . 'includes/base/element-base.php'; + + require ELEMENTOR_PATH . 'includes/elements/column.php'; + require ELEMENTOR_PATH . 'includes/elements/section.php'; + require ELEMENTOR_PATH . 'includes/elements/repeater.php'; + } +} diff --git a/wp-content/plugins/elementor/includes/managers/icons.php b/wp-content/plugins/elementor/includes/managers/icons.php new file mode 100644 index 0000000..e1db5a1 --- /dev/null +++ b/wp-content/plugins/elementor/includes/managers/icons.php @@ -0,0 +1,619 @@ + $icon_type ) { + if ( ! isset( $icon_type['url'] ) ) { + continue; + } + $dependencies = []; + if ( ! empty( $icon_type['enqueue'] ) ) { + foreach ( (array) $icon_type['enqueue'] as $font_css_url ) { + if ( ! in_array( $font_css_url, array_keys( $shared_styles ), true ) ) { + $style_handle = 'elementor-icons-shared-' . count( $shared_styles ); + wp_register_style( + $style_handle, + $font_css_url, + [], + $icon_type['ver'] + ); + $shared_styles[ $font_css_url ] = $style_handle; + } + $dependencies[] = $shared_styles[ $font_css_url ]; + } + } + wp_register_style( + 'elementor-icons-' . $icon_type['name'], + $icon_type['url'], + $dependencies, + $icon_type['ver'] + ); + } + } + + /** + * Init Tabs + * + * Initiate Icon Manager Tabs. + * + * @access private + * @static + * @since 2.4.0 + */ + private static function init_tabs() { + $initial_tabs = [ + 'fa-regular' => [ + 'name' => 'fa-regular', + 'label' => esc_html__( 'Font Awesome - Regular', 'elementor' ), + 'url' => self::get_fa_asset_url( 'regular' ), + 'enqueue' => [ self::get_fa_asset_url( 'fontawesome' ) ], + 'prefix' => 'fa-', + 'displayPrefix' => 'far', + 'labelIcon' => 'fab fa-font-awesome-alt', + 'ver' => '5.15.3', + 'fetchJson' => self::get_fa_asset_url( 'regular', 'js', false ), + 'native' => true, + ], + 'fa-solid' => [ + 'name' => 'fa-solid', + 'label' => esc_html__( 'Font Awesome - Solid', 'elementor' ), + 'url' => self::get_fa_asset_url( 'solid' ), + 'enqueue' => [ self::get_fa_asset_url( 'fontawesome' ) ], + 'prefix' => 'fa-', + 'displayPrefix' => 'fas', + 'labelIcon' => 'fab fa-font-awesome', + 'ver' => '5.15.3', + 'fetchJson' => self::get_fa_asset_url( 'solid', 'js', false ), + 'native' => true, + ], + 'fa-brands' => [ + 'name' => 'fa-brands', + 'label' => esc_html__( 'Font Awesome - Brands', 'elementor' ), + 'url' => self::get_fa_asset_url( 'brands' ), + 'enqueue' => [ self::get_fa_asset_url( 'fontawesome' ) ], + 'prefix' => 'fa-', + 'displayPrefix' => 'fab', + 'labelIcon' => 'fab fa-font-awesome-flag', + 'ver' => '5.15.3', + 'fetchJson' => self::get_fa_asset_url( 'brands', 'js', false ), + 'native' => true, + ], + ]; + + /** + * Initial icon manager tabs. + * + * Filters the list of initial icon manager tabs. + * + * @param array $icon_manager_tabs Initial icon manager tabs. + */ + $initial_tabs = apply_filters( 'elementor/icons_manager/native', $initial_tabs ); + + self::$tabs = $initial_tabs; + } + + /** + * Get Icon Manager Tabs + * @return array + */ + public static function get_icon_manager_tabs() { + if ( self::is_font_icon_inline_svg() && ! Plugin::$instance->editor->is_edit_mode() && ! Plugin::$instance->preview->is_preview_mode() ) { + self::$tabs = []; + } elseif ( ! self::$tabs ) { + self::init_tabs(); + } + + $additional_tabs = []; + + /** + * Additional icon manager tabs. + * + * Filters additional icon manager tabs. + * + * @param array $additional_tabs Additional icon manager tabs. Default is an empty array. + */ + $additional_tabs = apply_filters( 'elementor/icons_manager/additional_tabs', $additional_tabs ); + + return array_replace( self::$tabs, $additional_tabs ); + } + + public static function enqueue_shim() { + //phpcs:ignore WordPress.WP.EnqueuedResourceParameters.NotInFooter + wp_enqueue_script( + 'font-awesome-4-shim', + self::get_fa_asset_url( 'v4-shims', 'js' ), + [], + ELEMENTOR_VERSION + ); + // Make sure that the CSS in the 'all' file does not override FA Pro's CSS + if ( ! wp_script_is( 'font-awesome-pro' ) ) { + wp_enqueue_style( + 'font-awesome-5-all', + self::get_fa_asset_url( 'all' ), + [], + ELEMENTOR_VERSION + ); + } + wp_enqueue_style( + 'font-awesome-4-shim', + self::get_fa_asset_url( 'v4-shims' ), + [], + ELEMENTOR_VERSION + ); + } + + private static function get_fa_asset_url( $filename, $ext_type = 'css', $add_suffix = true ) { + static $is_test_mode = null; + if ( null === $is_test_mode ) { + $is_test_mode = defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG || defined( 'ELEMENTOR_TESTS' ) && ELEMENTOR_TESTS; + } + $url = ELEMENTOR_ASSETS_URL . 'lib/font-awesome/' . $ext_type . '/' . $filename; + if ( ! $is_test_mode && $add_suffix ) { + $url .= '.min'; + } + + return $url . '.' . $ext_type; + } + + public static function get_icon_manager_tabs_config() { + $tabs = [ + 'all' => [ + 'name' => 'all', + 'label' => esc_html__( 'All Icons', 'elementor' ), + 'labelIcon' => 'eicon-filter', + 'native' => true, + ], + ]; + + return array_values( array_merge( $tabs, self::get_icon_manager_tabs() ) ); + } + + /** + * is_font_awesome_inline + * + * @return bool + */ + private static function is_font_icon_inline_svg() { + return Plugin::$instance->experiments->is_feature_active( 'e_font_icon_svg' ); + } + + /** + * @deprecated 3.8.0 + */ + public static function render_svg_symbols() {} + + public static function get_icon_svg_data( $icon ) { + return self::$data_manager->get_font_icon_svg_data( $icon ); + } + + /** + * Get font awesome svg. + * @param $icon array [ 'value' => string, 'library' => string ] + * + * @return bool|mixed|string + */ + public static function get_font_icon_svg( $icon, $attributes = [] ) { + // Load the SVG from the database. + $icon_data = self::get_icon_svg_data( $icon ); + + if ( ! $icon_data['path'] ) { + return ''; + } + + if ( ! empty( $attributes['class'] ) && ! is_array( $attributes['class'] ) ) { + $attributes['class'] = [ $attributes['class'] ]; + } + + $attributes['class'][] = self::FONT_ICON_SVG_CLASS_NAME; + $attributes['class'][] = 'e-' . $icon_data['key']; + $attributes['viewBox'] = '0 0 ' . $icon_data['width'] . ' ' . $icon_data['height']; + $attributes['xmlns'] = 'http://www.w3.org/2000/svg'; + + return ( + '' . + '' . + '' + ); + } + + public static function render_uploaded_svg_icon( $value ) { + if ( ! isset( $value['id'] ) ) { + return ''; + } + + return Svg::get_inline_svg( $value['id'] ); + } + + public static function render_font_icon( $icon, $attributes = [], $tag = 'i' ) { + $icon_types = self::get_icon_manager_tabs(); + + if ( isset( $icon_types[ $icon['library'] ]['render_callback'] ) && is_callable( $icon_types[ $icon['library'] ]['render_callback'] ) ) { + return call_user_func_array( $icon_types[ $icon['library'] ]['render_callback'], [ $icon, $attributes, $tag ] ); + } + + $content = ''; + + $font_icon_svg_family = self::is_font_icon_inline_svg() ? Font_Icon_Svg_Data_Manager::get_font_family( $icon['library'] ) : ''; + + if ( $font_icon_svg_family ) { + $icon['font_family'] = $font_icon_svg_family; + + $content = self::get_font_icon_svg( $icon, $attributes ); + + if ( $content ) { + return $content; + } + } + + if ( ! $content ) { + if ( empty( $attributes['class'] ) ) { + $attributes['class'] = $icon['value']; + } else { + if ( is_array( $attributes['class'] ) ) { + $attributes['class'][] = $icon['value']; + } else { + $attributes['class'] .= ' ' . $icon['value']; + } + } + } + + return '<' . $tag . ' ' . Utils::render_html_attributes( $attributes ) . '>' . $content . ''; + } + + /** + * Render Icon + * + * Used to render Icon for \Elementor\Controls_Manager::ICONS + * @param array $icon Icon Type, Icon value + * @param array $attributes Icon HTML Attributes + * @param string $tag Icon HTML tag, defaults to + * + * @return mixed|string + */ + public static function render_icon( $icon, $attributes = [], $tag = 'i' ) { + if ( empty( $icon['library'] ) ) { + return false; + } + + $output = static::get_icon_html( $icon, $attributes, $tag ); + + Utils::print_unescaped_internal_string( $output ); + + return true; + } + + /** + * Font Awesome 4 to font Awesome 5 Value Migration + * + * used to convert string value of Icon control to array value of Icons control + * ex: 'fa fa-star' => [ 'value' => 'fas fa-star', 'library' => 'fa-solid' ] + * + * @param $value + * + * @return array + */ + public static function fa4_to_fa5_value_migration( $value ) { + static $migration_dictionary = false; + if ( '' === $value ) { + return [ + 'value' => '', + 'library' => '', + ]; + } + if ( false === $migration_dictionary ) { + $migration_dictionary = json_decode( Utils::file_get_contents( ELEMENTOR_ASSETS_PATH . 'lib/font-awesome/migration/mapping.js' ), true ); + } + if ( isset( $migration_dictionary[ $value ] ) ) { + return $migration_dictionary[ $value ]; + } + + return [ + 'value' => 'fas ' . str_replace( 'fa ', '', $value ), + 'library' => 'fa-solid', + ]; + } + + /** + * on_import_migration + * @param array $element settings array + * @param string $old_control old control id + * @param string $new_control new control id + * @param bool $remove_old boolean weather to remove old control or not + * + * @return array + */ + public static function on_import_migration( array $element, $old_control = '', $new_control = '', $remove_old = false ) { + + if ( ! isset( $element['settings'][ $old_control ] ) || isset( $element['settings'][ $new_control ] ) ) { + return $element; + } + + // Case when old value is saved as empty string + $new_value = [ + 'value' => '', + 'library' => '', + ]; + + // Case when old value needs migration + if ( ! empty( $element['settings'][ $old_control ] ) && ! self::is_migration_allowed() ) { + $new_value = self::fa4_to_fa5_value_migration( $element['settings'][ $old_control ] ); + } + + $element['settings'][ $new_control ] = $new_value; + + //remove old value + if ( $remove_old ) { + unset( $element['settings'][ $old_control ] ); + } + + return $element; + } + + /** + * is_migration_allowed + * @return bool + */ + public static function is_migration_allowed() { + static $migration_allowed = false; + if ( false === $migration_allowed ) { + $migration_allowed = null === self::get_needs_upgrade_option(); + + /** + * Is icon migration allowed. + * + * Filters whether the icons migration allowed. + * + * @param bool $migration_allowed Is icon migration is allowed. + */ + $migration_allowed = apply_filters( 'elementor/icons_manager/migration_allowed', $migration_allowed ); + } + return $migration_allowed; + } + + /** + * Register_Admin Settings + * + * adds Font Awesome migration / update admin settings + * @param Settings $settings + */ + public function register_admin_settings( Settings $settings ) { + $settings->add_field( + Settings::TAB_ADVANCED, + Settings::TAB_ADVANCED, + 'load_fa4_shim', + [ + 'label' => esc_html__( 'Load Font Awesome 4 Support', 'elementor' ), + 'field_args' => [ + 'type' => 'select', + 'std' => '', + 'options' => [ + '' => esc_html__( 'No', 'elementor' ), + 'yes' => esc_html__( 'Yes', 'elementor' ), + ], + 'desc' => esc_html__( 'Font Awesome 4 support script (shim.js) is a script that makes sure all previously selected Font Awesome 4 icons are displayed correctly while using Font Awesome 5 library.', 'elementor' ), + ], + ] + ); + } + + public function register_admin_tools_settings( Tools $settings ) { + $settings->add_tab( 'fontawesome4_migration', [ 'label' => esc_html__( 'Font Awesome Upgrade', 'elementor' ) ] ); + + $settings->add_section( 'fontawesome4_migration', 'fontawesome4_migration', [ + 'callback' => function() { + echo '

    ' . esc_html__( 'Font Awesome Upgrade', 'elementor' ) . '

    '; + echo '

    ' . // PHPCS - Plain Text + esc_html__( 'Access 1,500+ amazing Font Awesome 5 icons and enjoy faster performance and design flexibility.', 'elementor' ) . '
    ' . // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped + esc_html__( 'By upgrading, whenever you edit a page containing a Font Awesome 4 icon, Elementor will convert it to the new Font Awesome 5 icon.', 'elementor' ) . // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped + '

    ' . + esc_html__( 'Please note that the upgrade process may cause some of the previously used Font Awesome 4 icons to look a bit different due to minor design changes made by Font Awesome.', 'elementor' ) . // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped + '

    ' . + esc_html__( 'The upgrade process includes a database update', 'elementor' ) . ' - ' . // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped + esc_html__( 'We highly recommend backing up your database before performing this upgrade.', 'elementor' ) . // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped + '

    ' . + esc_html__( 'This action is not reversible and cannot be undone by rolling back to previous versions.', 'elementor' ) . // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped + '

    '; + }, + 'fields' => [ + [ + 'label' => esc_html__( 'Font Awesome Upgrade', 'elementor' ), + 'field_args' => [ + 'type' => 'raw_html', + 'html' => sprintf( '%s', + self::NEEDS_UPDATE_OPTION . '_upgrade', + wp_create_nonce( self::NEEDS_UPDATE_OPTION ), + esc_url( $this->get_upgrade_redirect_url() ), + esc_html__( 'Upgrade To Font Awesome 5', 'elementor' ) + ), + ], + ], + ], + ] ); + } + + /** + * Get redirect URL when upgrading font awesome. + * + * @return string + */ + public function get_upgrade_redirect_url() { + + if ( ! wp_verify_nonce( Utils::get_super_global_value( $_GET, '_wpnonce' ), 'tools-page-from-editor' ) ) { + return ''; + } + + $document_id = ! empty( $_GET['redirect_to_document'] ) ? absint( $_GET['redirect_to_document'] ) : null; + + if ( ! $document_id ) { + return ''; + } + + $document = Plugin::$instance->documents->get( $document_id ); + + if ( ! $document ) { + return ''; + } + + return $document->get_edit_url(); + } + + /** + * Ajax Upgrade to FontAwesome 5 + */ + public function ajax_upgrade_to_fa5() { + check_ajax_referer( self::NEEDS_UPDATE_OPTION, '_nonce' ); + + if ( ! current_user_can( 'manage_options' ) ) { + wp_send_json_error( 'Permission denied' ); + } + + delete_option( 'elementor_' . self::NEEDS_UPDATE_OPTION ); + + wp_send_json_success( [ 'message' => esc_html__( 'Hurray! The upgrade process to Font Awesome 5 was completed successfully.', 'elementor' ) ] ); + } + + /** + * Add Update Needed Flag + * @param array $settings + * + * @return array; + */ + public function add_update_needed_flag( $settings ) { + $settings['icons_update_needed'] = true; + return $settings; + } + + public function enqueue_fontawesome_css() { + if ( ! self::is_migration_allowed() ) { + wp_enqueue_style( 'font-awesome' ); + } else { + $current_filter = current_filter(); + $load_shim = get_option( self::LOAD_FA4_SHIM_OPTION_KEY, false ); + if ( 'elementor/editor/after_enqueue_styles' === $current_filter ) { + self::enqueue_shim(); + } elseif ( 'yes' === $load_shim ) { + self::enqueue_shim(); + } + } + } + + /** + * @deprecated 3.1.0 + */ + public function add_admin_strings() { + Plugin::$instance->modules_manager->get_modules( 'dev-tools' )->deprecation->deprecated_function( __METHOD__, '3.1.0' ); + + return []; + } + + /** + * Icons Manager constructor + */ + public function __construct() { + if ( is_admin() ) { + // @todo: remove once we deprecate fa4 + add_action( 'elementor/admin/after_create_settings/' . Settings::PAGE_ID, [ $this, 'register_admin_settings' ], 100 ); + } + + if ( self::is_font_icon_inline_svg() ) { + self::$data_manager = new Font_Icon_Svg_Data_Manager(); + } + + add_action( 'elementor/frontend/after_enqueue_styles', [ $this, 'enqueue_fontawesome_css' ] ); + add_action( 'elementor/frontend/after_register_styles', [ $this, 'register_styles' ] ); + + if ( ! self::is_migration_allowed() ) { + add_filter( 'elementor/editor/localize_settings', [ $this, 'add_update_needed_flag' ] ); + add_action( 'elementor/admin/after_create_settings/' . Tools::PAGE_ID, [ $this, 'register_admin_tools_settings' ], 100 ); + + if ( ! empty( $_POST ) ) { // phpcs:ignore -- nonce validation done in callback + add_action( 'wp_ajax_' . self::NEEDS_UPDATE_OPTION . '_upgrade', [ $this, 'ajax_upgrade_to_fa5' ] ); + } + } + } +} diff --git a/wp-content/plugins/elementor/includes/managers/image.php b/wp-content/plugins/elementor/includes/managers/image.php new file mode 100644 index 0000000..9b7e258 --- /dev/null +++ b/wp-content/plugins/elementor/includes/managers/image.php @@ -0,0 +1,190 @@ +get_details( $item['id'], $item['size'], $item['is_first_time'] ); + } + + wp_send_json_success( $urls ); + } + + /** + * Get image details. + * + * Retrieve single image details. + * + * Fired by `wp_ajax_elementor_get_image_details` action. + * + * @since 1.0.0 + * @access public + * + * @param string $id Image attachment ID. + * @param string|array $size Image size. Accepts any valid image + * size, or an array of width and height + * values in pixels (in that order). + * @param string $is_first_time Set 'true' string to force reloading + * all image sizes. + * + * @return array URLs with different image sizes. + */ + public function get_details( $id, $size, $is_first_time ) { + if ( ! class_exists( 'Group_Control_Image_Size' ) ) { + require_once ELEMENTOR_PATH . '/includes/controls/groups/image-size.php'; + } + + if ( 'true' === $is_first_time ) { + $sizes = get_intermediate_image_sizes(); + $sizes[] = 'full'; + } else { + $sizes = []; + } + + $sizes[] = $size; + $urls = []; + foreach ( $sizes as $size ) { + if ( 0 === strpos( $size, 'custom_' ) ) { + preg_match( '/custom_(\d*)x(\d*)/', $size, $matches ); + + $matches[1] = (int) $matches[1]; + $matches[2] = (int) $matches[2]; + + $instance = [ + 'image_size' => 'custom', + 'image_custom_dimension' => [ + 'width' => $matches[1], + 'height' => $matches[2], + ], + ]; + + $url = Group_Control_Image_Size::get_attachment_image_src( $id, 'image', $instance ); + + $thumbs_path = BFITHUMB_UPLOAD_DIR . '/' . basename( $url ); + + $image_meta = wp_get_attachment_metadata( $id ); + + // Attach custom image to original. + $image_meta['sizes'][ 'elementor_' . $size ] = [ + 'file' => $thumbs_path, + 'width' => $matches[1], + 'height' => $matches[2], + 'mime-type' => get_post_mime_type( $id ), + ]; + + wp_update_attachment_metadata( $id, $image_meta ); + + $urls[ $size ] = $url; + } else { + $urls[ $size ] = wp_get_attachment_image_src( $id, $size )[0]; + } + } + + return $urls; + } + + /** + * Get Light-Box Image Attributes + * + * Used to retrieve an array of image attributes to be used for displaying an image in Elementor's Light Box module. + * + * @param int $id The ID of the image + * + * @return array An array of image attributes including `title` and `description`. + * @since 2.9.0 + * @access public + */ + + public function get_lightbox_image_attributes( $id ) { + $attributes = []; + $kit = Plugin::$instance->kits_manager->get_active_kit(); + $lightbox_title_src = $kit->get_settings( 'lightbox_title_src' ); + $lightbox_description_src = $kit->get_settings( 'lightbox_description_src' ); + $attachment = get_post( $id ); + + if ( $attachment ) { + $image_data = [ + 'alt' => get_post_meta( $attachment->ID, '_wp_attachment_image_alt', true ), + 'caption' => $attachment->post_excerpt, + 'description' => $attachment->post_content, + 'title' => $attachment->post_title, + ]; + + if ( $lightbox_title_src && $image_data[ $lightbox_title_src ] ) { + $attributes['title'] = $image_data[ $lightbox_title_src ]; + } + + if ( $lightbox_description_src && $image_data[ $lightbox_description_src ] ) { + $attributes['description'] = $image_data[ $lightbox_description_src ]; + } + } + + return $attributes; + } + + private function delete_custom_images( $post_id ) { + $image_meta = wp_get_attachment_metadata( $post_id ); + if ( ! empty( $image_meta ) && ! empty( $image_meta['sizes'] ) ) { + ( new Collection( $image_meta['sizes'] ) ) + ->filter( function ( $value, $key ) { + return ( 0 === strpos( $key, 'elementor_custom_' ) ); + } ) + ->pluck( 'file' ) + ->each( function ( $path ) { + $base_dir = wp_get_upload_dir()['basedir']; + wp_delete_file( $base_dir . '/' . $path ); + } ); + } + } + + /** + * Images manager constructor. + * + * Initializing Elementor images manager. + * + * @since 1.0.0 + * @access public + */ + public function __construct() { + add_action( 'wp_ajax_elementor_get_images_details', [ $this, 'get_images_details' ] ); + + // Delete elementor thumbnail files on deleting its main image. + add_action( 'delete_attachment', function ( $post_id ) { + $this->delete_custom_images( $post_id ); + } ); + } +} diff --git a/wp-content/plugins/elementor/includes/managers/skins.php b/wp-content/plugins/elementor/includes/managers/skins.php new file mode 100644 index 0000000..c5a7ec0 --- /dev/null +++ b/wp-content/plugins/elementor/includes/managers/skins.php @@ -0,0 +1,113 @@ +get_name(); + + if ( ! isset( $this->_skins[ $widget_name ] ) ) { + $this->_skins[ $widget_name ] = []; + } + + $this->_skins[ $widget_name ][ $skin->get_id() ] = $skin; + + return true; + } + + /** + * Remove a skin. + * + * Unregister an existing skin from a widget. + * + * @since 1.0.0 + * @access public + * + * @param Widget_Base $widget Elementor widget. + * @param string $skin_id Elementor skin ID. + * + * @return true|\WP_Error True if skin removed, `WP_Error` otherwise. + */ + public function remove_skin( Widget_Base $widget, $skin_id ) { + $widget_name = $widget->get_name(); + + if ( ! isset( $this->_skins[ $widget_name ][ $skin_id ] ) ) { + return new \WP_Error( 'Cannot remove not-exists skin.' ); + } + + unset( $this->_skins[ $widget_name ][ $skin_id ] ); + + return true; + } + + /** + * Get skins. + * + * Retrieve all the skins assigned for a specific widget. + * + * @since 1.0.0 + * @access public + * + * @param Widget_Base $widget Elementor widget. + * + * @return false|array Skins if the widget has skins, False otherwise. + */ + public function get_skins( Widget_Base $widget ) { + $widget_name = $widget->get_name(); + + if ( ! isset( $this->_skins[ $widget_name ] ) ) { + return false; + } + + return $this->_skins[ $widget_name ]; + } + + /** + * Skins manager constructor. + * + * Initializing Elementor skins manager by requiring the skin base class. + * + * @since 1.0.0 + * @access public + */ + public function __construct() { + require ELEMENTOR_PATH . 'includes/base/skin-base.php'; + } +} diff --git a/wp-content/plugins/elementor/includes/managers/widgets.php b/wp-content/plugins/elementor/includes/managers/widgets.php new file mode 100644 index 0000000..86ce5f4 --- /dev/null +++ b/wp-content/plugins/elementor/includes/managers/widgets.php @@ -0,0 +1,686 @@ + [ + NestedTabs::class, + Nested_Accordion::class, + ], + ]; + + /** + * Init widgets. + * + * Initialize Elementor widgets manager. Include all the widgets files + * and register each Elementor and WordPress widget. + * + * @since 2.0.0 + * @access private + */ + private function init_widgets() { + $build_widgets_filename = [ + 'common', + 'inner-section', + 'heading', + 'image', + 'text-editor', + 'video', + 'button', + 'divider', + 'spacer', + 'image-box', + 'google-maps', + 'icon', + 'icon-box', + 'star-rating', + 'image-carousel', + 'image-gallery', + 'icon-list', + 'counter', + 'progress', + 'testimonial', + 'tabs', + 'accordion', + 'toggle', + 'social-icons', + 'alert', + 'audio', + 'shortcode', + 'html', + 'menu-anchor', + 'sidebar', + 'read-more', + 'rating', + 'share-buttons', + ]; + + $this->_widget_types = []; + + $this->register_promoted_widgets(); + + foreach ( $build_widgets_filename as $widget_filename ) { + include ELEMENTOR_PATH . 'includes/widgets/' . $widget_filename . '.php'; + + $class_name = str_replace( '-', '_', $widget_filename ); + + $class_name = __NAMESPACE__ . '\Widget_' . $class_name; + + $this->register( new $class_name() ); + } + + $this->register_wp_widgets(); + + /** + * After widgets registered. + * + * Fires after Elementor widgets are registered. + * + * @since 1.0.0 + * @deprecated 3.5.0 Use `elementor/widgets/register` hook instead. + * + * @param Widgets_Manager $this The widgets manager. + */ + Plugin::$instance->modules_manager->get_modules( 'dev-tools' )->deprecation->do_deprecated_action( + 'elementor/widgets/widgets_registered', + [ $this ], + '3.5.0', + 'elementor/widgets/register' + ); + + /** + * After widgets registered. + * + * Fires after Elementor widgets are registered. + * + * @since 3.5.0 + * + * @param Widgets_Manager $this The widgets manager. + */ + do_action( 'elementor/widgets/register', $this ); + } + + /** + * Register WordPress widgets. + * + * Add native WordPress widget to the list of registered widget types. + * + * Exclude the widgets that are in Elementor widgets black list. Theme and + * plugin authors can filter the black list. + * + * @since 2.0.0 + * @access private + */ + private function register_wp_widgets() { + global $wp_widget_factory; + + // Allow themes/plugins to filter out their widgets. + $black_list = []; + + /** + * Elementor widgets black list. + * + * Filters the widgets black list that won't be displayed in the panel. + * + * @since 1.0.0 + * + * @param array $black_list A black list of widgets. Default is an empty array. + */ + $black_list = apply_filters( 'elementor/widgets/black_list', $black_list ); + + foreach ( $wp_widget_factory->widgets as $widget_class => $widget_obj ) { + + if ( in_array( $widget_class, $black_list ) ) { + continue; + } + + $elementor_widget_class = __NAMESPACE__ . '\Widget_WordPress'; + + $this->register( + new $elementor_widget_class( [], [ + 'widget_name' => $widget_class, + ] ) + ); + } + } + + /** + * Require files. + * + * Require Elementor widget base class. + * + * @since 2.0.0 + * @access private + */ + private function require_files() { + require ELEMENTOR_PATH . 'includes/base/widget-base.php'; + } + + private function pluck_default_controls( $controls ) { + return ( new Collection( $controls ) ) + ->reduce( function ( $controls_defaults, $control, $control_key ) { + if ( ! empty( $control['default'] ) ) { + $controls_defaults[ $control_key ]['default'] = $control['default']; + } + + return $controls_defaults; + }, [] ); + } + + /** + * Register widget type. + * + * Add a new widget type to the list of registered widget types. + * + * @since 1.0.0 + * @access public + * @deprecated 3.5.0 Use `register()` method instead. + * + * @param Widget_Base $widget Elementor widget. + * + * @return true True if the widget was registered. + */ + public function register_widget_type( Widget_Base $widget ) { + Plugin::$instance->modules_manager->get_modules( 'dev-tools' )->deprecation->deprecated_function( + __METHOD__, + '3.5.0', + 'register()' + ); + + return $this->register( $widget ); + } + + /** + * Register a new widget type. + * + * @param \Elementor\Widget_Base $widget_instance Elementor Widget. + * + * @return bool True if the widget was registered. + * @since 3.5.0 + * @access public + */ + public function register( Widget_Base $widget_instance ) { + if ( is_null( $this->_widget_types ) ) { + $this->init_widgets(); + } + + /** + * Should widget be registered. + * + * @since 3.18.0 + * + * @param bool $should_register Should widget be registered. Default is `true`. + * @param \Elementor\Widget_Base $widget_instance Widget instance. + */ + $should_register = apply_filters( 'elementor/widgets/is_widget_enabled', true, $widget_instance ); + + if ( ! $should_register ) { + return false; + } + + $this->_widget_types[ $widget_instance->get_name() ] = $widget_instance; + + return true; + } + + /** Register promoted widgets + * + * Since we cannot allow widgets to place themselves is a specific + * location on our widgets panel we need to use a hard coded solution for this. + * + * @return void + */ + private function register_promoted_widgets() { + + foreach ( $this->promoted_widgets as $experiment_name => $classes ) { + $this->register_promoted_active_widgets( $experiment_name, $classes ); + } + } + + /** + * Unregister widget type. + * + * Removes widget type from the list of registered widget types. + * + * @since 1.0.0 + * @access public + * @deprecated 3.5.0 Use `unregister()` method instead. + * + * @param string $name Widget name. + * + * @return true True if the widget was unregistered, False otherwise. + */ + public function unregister_widget_type( $name ) { + Plugin::$instance->modules_manager->get_modules( 'dev-tools' )->deprecation->deprecated_function( + __METHOD__, + '3.5.0', + 'unregister()' + ); + + return $this->unregister( $name ); + } + + /** + * Unregister widget type. + * + * Removes widget type from the list of registered widget types. + * + * @since 3.5.0 + * @access public + * + * @param string $name Widget name. + * + * @return boolean Whether the widget was unregistered. + */ + public function unregister( $name ) { + if ( ! isset( $this->_widget_types[ $name ] ) ) { + return false; + } + + unset( $this->_widget_types[ $name ] ); + + return true; + } + + /** + * Get widget types. + * + * Retrieve the registered widget types list. + * + * @since 1.0.0 + * @access public + * + * @param string $widget_name Optional. Widget name. Default is null. + * + * @return Widget_Base|Widget_Base[]|null Registered widget types. + */ + public function get_widget_types( $widget_name = null ) { + if ( is_null( $this->_widget_types ) ) { + $this->init_widgets(); + } + + if ( null !== $widget_name ) { + return isset( $this->_widget_types[ $widget_name ] ) ? $this->_widget_types[ $widget_name ] : null; + } + + return $this->_widget_types; + } + + /** + * Get widget types config. + * + * Retrieve all the registered widgets with config for each widgets. + * + * @since 1.0.0 + * @access public + * + * @return array Registered widget types with each widget config. + */ + public function get_widget_types_config() { + $config = []; + + foreach ( $this->get_widget_types() as $widget_key => $widget ) { + $config[ $widget_key ] = $widget->get_config(); + } + + return $config; + } + + /** + * @throws \Exception + */ + public function ajax_get_widget_types_controls_config( array $data ) { + Plugin::$instance->documents->check_permissions( $data['editor_post_id'] ); + + wp_raise_memory_limit( 'admin' ); + + $config = []; + + foreach ( $this->get_widget_types() as $widget_key => $widget ) { + if ( isset( $data['exclude'][ $widget_key ] ) ) { + continue; + } + + $config[ $widget_key ] = [ + 'controls' => $widget->get_stack( false )['controls'], + 'tabs_controls' => $widget->get_tabs_controls(), + ]; + } + + return $config; + } + + public function ajax_get_widgets_default_value_translations( array $data = [] ) { + $locale = empty( $data['locale'] ) + ? get_locale() + : $data['locale']; + + $force_locale = new Force_Locale( $locale ); + $force_locale->force(); + + $controls = ( new Collection( $this->get_widget_types() ) ) + ->map( function ( Widget_Base $widget ) { + $controls = $widget->get_stack( false )['controls']; + + return [ + 'controls' => $this->pluck_default_controls( $controls ), + ]; + } ) + ->filter( function ( $widget ) { + return ! empty( $widget['controls'] ); + } ) + ->all(); + + $force_locale->restore(); + + return $controls; + } + + /** + * Ajax render widget. + * + * Ajax handler for Elementor render_widget. + * + * Fired by `wp_ajax_elementor_render_widget` action. + * + * @since 1.0.0 + * @access public + * + * @throws \Exception If current user don't have permissions to edit the post. + * + * @param array $request Ajax request. + * + * @return array { + * Rendered widget. + * + * @type string $render The rendered HTML. + * } + */ + public function ajax_render_widget( $request ) { + $document = Plugin::$instance->documents->get_with_permissions( $request['editor_post_id'] ); + + // Override the global $post for the render. + query_posts( + [ + 'p' => $request['editor_post_id'], + 'post_type' => 'any', + ] + ); + + $editor = Plugin::$instance->editor; + $is_edit_mode = $editor->is_edit_mode(); + $editor->set_edit_mode( true ); + + Plugin::$instance->documents->switch_to_document( $document ); + + $render_html = $document->render_element( $request['data'] ); + + $editor->set_edit_mode( $is_edit_mode ); + + return [ + 'render' => $render_html, + ]; + } + + /** + * Ajax get WordPress widget form. + * + * Ajax handler for Elementor editor get_wp_widget_form. + * + * Fired by `wp_ajax_elementor_editor_get_wp_widget_form` action. + * + * @since 1.0.0 + * @access public + * + * @param array $request Ajax request. + * + * @return bool|string Rendered widget form. + * @throws \Exception + */ + public function ajax_get_wp_widget_form( $request ) { + Plugin::$instance->documents->check_permissions( $request['editor_post_id'] ); + + if ( empty( $request['widget_type'] ) ) { + return false; + } + + if ( empty( $request['data'] ) ) { + $request['data'] = []; + } + + $element_data = [ + 'id' => $request['id'], + 'elType' => 'widget', + 'widgetType' => $request['widget_type'], + 'settings' => $request['data'], + ]; + + /** + * @var $widget_obj Widget_WordPress + */ + $widget_obj = Plugin::$instance->elements_manager->create_element_instance( $element_data ); + + if ( ! $widget_obj ) { + return false; + } + + return $widget_obj->get_form(); + } + + /** + * Render widgets content. + * + * Used to generate the widget templates on the editor using Underscore JS + * template, for all the registered widget types. + * + * @since 1.0.0 + * @access public + */ + public function render_widgets_content() { + foreach ( $this->get_widget_types() as $widget ) { + $widget->print_template(); + } + } + + /** + * Get widgets frontend settings keys. + * + * Retrieve frontend controls settings keys for all the registered widget + * types. + * + * @since 1.3.0 + * @access public + * + * @return array Registered widget types with settings keys for each widget. + */ + public function get_widgets_frontend_settings_keys() { + $keys = []; + + foreach ( $this->get_widget_types() as $widget_type_name => $widget_type ) { + $widget_type_keys = $widget_type->get_frontend_settings_keys(); + + if ( $widget_type_keys ) { + $keys[ $widget_type_name ] = $widget_type_keys; + } + } + + return $keys; + } + + /** + * Enqueue widgets scripts. + * + * Enqueue all the scripts defined as a dependency for each widget. + * + * @since 1.3.0 + * @access public + */ + public function enqueue_widgets_scripts() { + foreach ( $this->get_widget_types() as $widget ) { + $widget->enqueue_scripts(); + } + } + + /** + * Enqueue widgets styles + * + * Enqueue all the styles defined as a dependency for each widget + * + * @access public + */ + public function enqueue_widgets_styles() { + foreach ( $this->get_widget_types() as $widget ) { + $widget->enqueue_styles(); + } + } + + /** + * Retrieve inline editing configuration. + * + * Returns general inline editing configurations like toolbar types etc. + * + * @access public + * @since 1.8.0 + * + * @return array { + * Inline editing configuration. + * + * @type array $toolbar { + * Toolbar types and the actions each toolbar includes. + * Note: Wysiwyg controls uses the advanced toolbar, textarea controls + * uses the basic toolbar and text controls has no toolbar. + * + * @type array $basic Basic actions included in the edit tool. + * @type array $advanced Advanced actions included in the edit tool. + * } + * } + */ + public function get_inline_editing_config() { + $basic_tools = [ + 'bold', + 'underline', + 'italic', + ]; + + $advanced_tools = array_merge( $basic_tools, [ + 'createlink', + 'unlink', + 'h1' => [ + 'h1', + 'h2', + 'h3', + 'h4', + 'h5', + 'h6', + 'p', + 'blockquote', + 'pre', + ], + 'list' => [ + 'insertOrderedList', + 'insertUnorderedList', + ], + ] ); + + return [ + 'toolbar' => [ + 'basic' => $basic_tools, + 'advanced' => $advanced_tools, + ], + ]; + } + + /** + * Widgets manager constructor. + * + * Initializing Elementor widgets manager. + * + * @since 1.0.0 + * @access public + */ + public function __construct() { + $this->require_files(); + + add_action( 'elementor/ajax/register_actions', [ $this, 'register_ajax_actions' ] ); + } + + /** + * Register ajax actions. + * + * Add new actions to handle data after an ajax requests returned. + * + * @since 2.0.0 + * @access public + * + * @param Ajax $ajax_manager + */ + public function register_ajax_actions( Ajax $ajax_manager ) { + $ajax_manager->register_ajax_action( 'render_widget', [ $this, 'ajax_render_widget' ] ); + $ajax_manager->register_ajax_action( 'editor_get_wp_widget_form', [ $this, 'ajax_get_wp_widget_form' ] ); + $ajax_manager->register_ajax_action( 'get_widgets_config', [ $this, 'ajax_get_widget_types_controls_config' ] ); + + $ajax_manager->register_ajax_action( 'get_widgets_default_value_translations', function ( array $data ) { + return $this->ajax_get_widgets_default_value_translations( $data ); + } ); + } + + /** + * @param $experiment_name + * @param $classes + * @return void + */ + public function register_promoted_active_widgets( string $experiment_name, array $classes ) : void { + if ( ! Plugin::$instance->experiments->is_feature_active( $experiment_name ) || empty( $classes ) ) { + return; + } + + foreach ( $classes as $class_name ) { + $this->register( new $class_name() ); + } + } +} diff --git a/wp-content/plugins/elementor/includes/managers/wordpress-widgets.php b/wp-content/plugins/elementor/includes/managers/wordpress-widgets.php new file mode 100644 index 0000000..2df2c2e --- /dev/null +++ b/wp-content/plugins/elementor/includes/managers/wordpress-widgets.php @@ -0,0 +1,87 @@ += 4.9 - it's no needed, Keep for Backward compatibility. + $wp_scripts->add( 'media-widgets', "/wp-admin/js/widgets/media-widgets$suffix.js", array( 'jquery', 'media-models', 'media-views' ) ); + $wp_scripts->add_inline_script( 'media-widgets', 'wp.mediaWidgets.init();', 'after' ); + + $wp_scripts->add( 'media-audio-widget', "/wp-admin/js/widgets/media-audio-widget$suffix.js", array( 'media-widgets', 'media-audiovideo' ) ); + $wp_scripts->add( 'media-image-widget', "/wp-admin/js/widgets/media-image-widget$suffix.js", array( 'media-widgets' ) ); + $wp_scripts->add( 'media-video-widget', "/wp-admin/js/widgets/media-video-widget$suffix.js", array( 'media-widgets', 'media-audiovideo' ) ); + $wp_scripts->add( 'text-widgets', "/wp-admin/js/widgets/text-widgets$suffix.js", array( 'jquery', 'editor', 'wp-util' ) ); + $wp_scripts->add_inline_script( 'text-widgets', 'wp.textWidgets.init();', 'after' ); + + wp_enqueue_style( 'widgets' ); + wp_enqueue_style( 'media-views' ); + // End TODO. + + // Don't enqueue `code-editor` for WP Custom HTML widget. + wp_get_current_user()->syntax_highlighting = 'false'; + + /** This action is documented in wp-admin/admin-header.php */ + do_action( 'admin_print_scripts-widgets.php' ); + } + + /** + * WordPress widgets footer. + * + * Prints WordPress widgets scripts in Elementor editor footer. + * + * Fired by `elementor/editor/footer` action. + * + * @since 1.5.0 + * @access public + */ + public function footer() { + /** This action is documented in wp-admin/admin-footer.php */ + do_action( 'admin_footer-widgets.php' ); + } +} diff --git a/wp-content/plugins/elementor/includes/plugin.php b/wp-content/plugins/elementor/includes/plugin.php new file mode 100644 index 0000000..5bcfb98 --- /dev/null +++ b/wp-content/plugins/elementor/includes/plugin.php @@ -0,0 +1,862 @@ +add_cpt_support(); + + $this->init_components(); + + /** + * Elementor init. + * + * Fires when Elementor components are initialized. + * + * After Elementor finished loading but before any headers are sent. + * + * @since 1.0.0 + */ + do_action( 'elementor/init' ); + } + + /** + * Get install time. + * + * Retrieve the time when Elementor was installed. + * + * @since 2.6.0 + * @access public + * @static + * + * @return int Unix timestamp when Elementor was installed. + */ + public function get_install_time() { + $installed_time = get_option( '_elementor_installed_time' ); + + if ( ! $installed_time ) { + $installed_time = time(); + + update_option( '_elementor_installed_time', $installed_time ); + } + + return $installed_time; + } + + /** + * @since 2.3.0 + * @access public + */ + public function on_rest_api_init() { + // On admin/frontend sometimes the rest API is initialized after the common is initialized. + if ( ! $this->common ) { + $this->init_common(); + } + } + + /** + * Init components. + * + * Initialize Elementor components. Register actions, run setting manager, + * initialize all the components that run elementor, and if in admin page + * initialize admin components. + * + * @since 1.0.0 + * @access private + */ + private function init_components() { + $this->experiments = new Experiments_Manager(); + $this->breakpoints = new Breakpoints_Manager(); + $this->inspector = new Inspector(); + + Settings_Manager::run(); + + $this->db = new DB(); + $this->controls_manager = new Controls_Manager(); + $this->documents = new Documents_Manager(); + $this->kits_manager = new Kits_Manager(); + $this->schemes_manager = new Schemes_Manager(); + $this->elements_manager = new Elements_Manager(); + $this->widgets_manager = new Widgets_Manager(); + $this->skins_manager = new Skins_Manager(); + $this->files_manager = new Files_Manager(); + $this->assets_manager = new Assets_Manager(); + $this->icons_manager = new Icons_Manager(); + $this->settings = new Settings(); + $this->tools = new Tools(); + $this->editor = new Editor(); + $this->preview = new Preview(); + $this->frontend = new Frontend(); + $this->maintenance_mode = new Maintenance_Mode(); + $this->dynamic_tags = new Dynamic_Tags_Manager(); + $this->modules_manager = new Modules_Manager(); + $this->templates_manager = new TemplateLibrary\Manager(); + $this->role_manager = new Core\RoleManager\Role_Manager(); + $this->system_info = new System_Info_Module(); + $this->revisions_manager = new Revisions_Manager(); + $this->images_manager = new Images_Manager(); + $this->wp = new Wp_Api(); + $this->assets_loader = new Assets_Loader(); + $this->uploads_manager = new Uploads_Manager(); + + $this->admin_menu_manager = new Admin_Menu_Manager(); + $this->admin_menu_manager->register_actions(); + + User::init(); + Api::init(); + Tracker::init(); + + $this->upgrade = new Core\Upgrade\Manager(); + $this->custom_tasks = new Core\Upgrade\Custom_Tasks_Manager(); + + $this->app = new App\App(); + + if ( is_admin() ) { + $this->heartbeat = new Heartbeat(); + $this->wordpress_widgets_manager = new WordPress_Widgets_Manager(); + $this->admin = new Admin(); + $this->beta_testers = new Beta_Testers(); + } + } + + /** + * @since 2.3.0 + * @access public + */ + public function init_common() { + $this->common = new CommonApp(); + + $this->common->init_components(); + } + + /** + * Add custom post type support. + * + * Register Elementor support for all the supported post types defined by + * the user in the admin screen and saved as `elementor_cpt_support` option + * in WordPress `$wpdb->options` table. + * + * If no custom post type selected, usually in new installs, this method + * will return the two default post types: `page` and `post`. + * + * @since 1.0.0 + * @access private + */ + private function add_cpt_support() { + $cpt_support = get_option( 'elementor_cpt_support', self::ELEMENTOR_DEFAULT_POST_TYPES ); + + foreach ( $cpt_support as $cpt_slug ) { + add_post_type_support( $cpt_slug, 'elementor' ); + } + } + + /** + * Register autoloader. + * + * Elementor autoloader loads all the classes needed to run the plugin. + * + * @since 1.6.0 + * @access private + */ + private function register_autoloader() { + require_once ELEMENTOR_PATH . '/includes/autoloader.php'; + + Autoloader::run(); + } + + /** + * Plugin Magic Getter + * + * @since 3.1.0 + * @access public + * + * @param $property + * @return mixed + * @throws \Exception + */ + public function __get( $property ) { + if ( 'posts_css_manager' === $property ) { + self::$instance->modules_manager->get_modules( 'dev-tools' )->deprecation->deprecated_argument( 'Plugin::$instance->posts_css_manager', '2.7.0', 'Plugin::$instance->files_manager' ); + + return $this->files_manager; + } + + if ( 'data_manager' === $property ) { + return Data_Manager::instance(); + } + + if ( property_exists( $this, $property ) ) { + throw new \Exception( 'Cannot access private property.' ); + } + + return null; + } + + /** + * Plugin constructor. + * + * Initializing Elementor plugin. + * + * @since 1.0.0 + * @access private + */ + private function __construct() { + $this->register_autoloader(); + + $this->logger = Log_Manager::instance(); + $this->data_manager_v2 = Data_Manager_V2::instance(); + + Maintenance::init(); + Compatibility::register_actions(); + + add_action( 'init', [ $this, 'init' ], 0 ); + add_action( 'rest_api_init', [ $this, 'on_rest_api_init' ], 9 ); + } + + final public static function get_title() { + return esc_html__( 'Elementor', 'elementor' ); + } +} + +if ( ! defined( 'ELEMENTOR_TESTS' ) ) { + // In tests we run the instance manually. + Plugin::instance(); +} diff --git a/wp-content/plugins/elementor/includes/preview.php b/wp-content/plugins/elementor/includes/preview.php new file mode 100644 index 0000000..b1c1b1f --- /dev/null +++ b/wp-content/plugins/elementor/includes/preview.php @@ -0,0 +1,351 @@ +is_preview_mode() ) { + return; + } + + if ( isset( $_GET['preview-debug'] ) ) { + register_shutdown_function( function () { + $e = error_get_last(); + if ( $e ) { + echo '
    ';
    +					Utils::print_unescaped_internal_string( $e['message'] );
    +					echo '
    '; + } + } ); + } + + $this->post_id = get_the_ID(); + $this->is_preview = true; + + // Don't redirect to permalink. + remove_action( 'template_redirect', 'redirect_canonical' ); + + // Compatibility with Yoast SEO plugin when 'Removes unneeded query variables from the URL' enabled. + // TODO: Move this code to `includes/compatibility.php`. + if ( class_exists( 'WPSEO_Frontend' ) ) { + remove_action( 'template_redirect', [ \WPSEO_Frontend::get_instance(), 'clean_permalink' ], 1 ); + } + + // Disable the WP admin bar in preview mode. + add_filter( 'show_admin_bar', '__return_false' ); + + add_action( 'wp_enqueue_scripts', function() { + $this->enqueue_styles(); + $this->enqueue_scripts(); + } ); + + add_filter( 'the_content', [ $this, 'builder_wrapper' ], 999999 ); + + add_action( 'wp_footer', [ $this, 'wp_footer' ] ); + + // Avoid Cloudflare's Rocket Loader lazy load the editor iframe + add_filter( 'script_loader_tag', [ $this, 'rocket_loader_filter' ], 10, 3 ); + + // Tell to WP Cache plugins do not cache this request. + Utils::do_not_cache(); + + /** + * Preview init. + * + * Fires on Elementor preview init, after Elementor preview has finished + * loading but before any headers are sent. + * + * @since 1.0.0 + * + * @param Preview $this The current preview. + */ + do_action( 'elementor/preview/init', $this ); + } + + /** + * Retrieve post ID. + * + * Get the ID of the current post. + * + * @since 1.8.0 + * @access public + * + * @return int Post ID. + */ + public function get_post_id() { + return $this->post_id; + } + + /** + * Is Preview. + * + * Whether current request is the elementor preview iframe. + * The flag is not related to a specific post or edit permissions. + * + * @since 2.9.5 + * @access public + * + * @return bool + */ + public function is_preview() { + return $this->is_preview; + } + + /** + * Whether preview mode is active. + * + * Used to determine whether we are in the preview mode (iframe). + * + * @since 1.0.0 + * @access public + * + * @param int $post_id Optional. Post ID. Default is `0`. + * + * @return bool Whether preview mode is active. + */ + public function is_preview_mode( $post_id = 0 ) { + if ( ! isset( $_GET['elementor-preview'] ) ) { + return false; + } + + if ( empty( $post_id ) ) { + $post_id = get_the_ID(); + } + + if ( ! User::is_current_user_can_edit( $post_id ) ) { + return false; + } + + if ( $post_id !== (int) $_GET['elementor-preview'] ) { + return false; + } + + return true; + } + + /** + * Builder wrapper. + * + * Used to add an empty HTML wrapper for the builder, the javascript will add + * the content later. + * + * @since 1.0.0 + * @access public + * + * @param string $content The content of the builder. + * + * @return string HTML wrapper for the builder. + */ + public function builder_wrapper( $content ) { + if ( get_the_ID() === $this->post_id ) { + $document = Plugin::$instance->documents->get( $this->post_id ); + + $attributes = $document->get_container_attributes(); + + $content = '
    '; + } + + return $content; + } + + /** + * Enqueue preview styles. + * + * Registers all the preview styles and enqueues them. + * + * Fired by `wp_enqueue_scripts` action. + * + * @since 1.0.0 + * @access private + */ + private function enqueue_styles() { + // Hold-on all jQuery plugins after all HTML markup render. + wp_add_inline_script( 'jquery-migrate', 'jQuery.holdReady( true );' ); + + Plugin::$instance->frontend->enqueue_styles(); + + Plugin::$instance->widgets_manager->enqueue_widgets_styles(); + + $suffix = defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ? '' : '.min'; + + $direction_suffix = is_rtl() ? '-rtl' : ''; + + wp_register_style( + 'elementor-select2', + ELEMENTOR_ASSETS_URL . 'lib/e-select2/css/e-select2' . $suffix . '.css', + [], + '4.0.6-rc.1' + ); + + wp_register_style( + 'editor-preview', + ELEMENTOR_ASSETS_URL . 'css/editor-preview' . $direction_suffix . $suffix . '.css', + [ + 'elementor-select2', + ], + ELEMENTOR_VERSION + ); + + wp_enqueue_style( + 'e-theme-ui-light', + $this->get_css_assets_url( 'theme-light' ), + [], + ELEMENTOR_VERSION + ); + + wp_enqueue_style( 'editor-preview' ); + + // Handle the 'wp audio' in editor preview. + wp_enqueue_style( 'wp-mediaelement' ); + + /** + * Preview enqueue styles. + * + * Fires after Elementor preview styles are enqueued. + * + * @since 1.0.0 + */ + do_action( 'elementor/preview/enqueue_styles' ); + } + + /** + * Enqueue preview scripts. + * + * Registers all the preview scripts and enqueues them. + * + * Fired by `wp_enqueue_scripts` action. + * + * @since 1.5.4 + * @access private + */ + private function enqueue_scripts() { + Plugin::$instance->frontend->register_scripts(); + + Plugin::$instance->widgets_manager->enqueue_widgets_scripts(); + + $suffix = defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ? '' : '.min'; + + wp_enqueue_script( + 'elementor-inline-editor', + ELEMENTOR_ASSETS_URL . 'lib/inline-editor/js/inline-editor' . $suffix . '.js', + [], + ELEMENTOR_VERSION, + true + ); + + // Handle the 'wp audio' in editor preview. + wp_enqueue_script( 'wp-mediaelement' ); + + /** + * Preview enqueue scripts. + * + * Fires after Elementor preview scripts are enqueued. + * + * @since 1.5.4 + */ + do_action( 'elementor/preview/enqueue_scripts' ); + } + + public function rocket_loader_filter( $tag, $handle, $src ) { + return str_replace( 'frontend; + if ( $frontend->has_elementor_in_page() ) { + // Has header/footer/widget-template - enqueue all style/scripts/fonts. + $frontend->wp_footer(); + } else { + // Enqueue only scripts. + $frontend->enqueue_scripts(); + } + } + + /** + * Preview constructor. + * + * Initializing Elementor preview. + * + * @since 1.0.0 + * @access public + */ + public function __construct() { + add_action( 'template_redirect', [ $this, 'init' ], 0 ); + } +} diff --git a/wp-content/plugins/elementor/includes/rollback.php b/wp-content/plugins/elementor/includes/rollback.php new file mode 100644 index 0000000..c7f9f46 --- /dev/null +++ b/wp-content/plugins/elementor/includes/rollback.php @@ -0,0 +1,186 @@ + $value ) { + $this->{$key} = $value; + } + } + + /** + * Print inline style. + * + * Add an inline CSS to the rollback page. + * + * @since 1.5.0 + * @access private + */ + private function print_inline_style() { + ?> + + new_version = $this->version; + $plugin_info->slug = $this->plugin_slug; + $plugin_info->package = $this->package_url; + $plugin_info->url = 'https://elementor.com/'; + + $update_plugins->response[ $this->plugin_name ] = $plugin_info; + + // Remove handle beta testers. + remove_filter( 'pre_set_site_transient_update_plugins', [ Plugin::instance()->beta_testers, 'check_version' ] ); + + set_site_transient( 'update_plugins', $update_plugins ); + } + + /** + * Upgrade. + * + * Run WordPress upgrade to rollback Elementor to previous version. + * + * @since 1.5.0 + * @access protected + */ + protected function upgrade() { + require_once( ABSPATH . 'wp-admin/includes/class-wp-upgrader.php' ); + + $logo_url = ELEMENTOR_ASSETS_URL . 'images/logo-panel.svg'; + + $upgrader_args = [ + 'url' => 'update.php?action=upgrade-plugin&plugin=' . rawurlencode( $this->plugin_name ), + 'plugin' => $this->plugin_name, + 'nonce' => 'upgrade-plugin_' . $this->plugin_name, + 'title' => 'Elementor' . esc_html__( 'Rollback to Previous Version', 'elementor' ), + ]; + + $this->print_inline_style(); + + $upgrader = new \Plugin_Upgrader( new \Plugin_Upgrader_Skin( $upgrader_args ) ); + $upgrader->upgrade( $this->plugin_name ); + } + + /** + * Run. + * + * Rollback Elementor to previous versions. + * + * @since 1.5.0 + * @access public + */ + public function run() { + $this->apply_package(); + $this->upgrade(); + } +} diff --git a/wp-content/plugins/elementor/includes/settings/admin-menu-items/admin-menu-item.php b/wp-content/plugins/elementor/includes/settings/admin-menu-items/admin-menu-item.php new file mode 100644 index 0000000..e4b256a --- /dev/null +++ b/wp-content/plugins/elementor/includes/settings/admin-menu-items/admin-menu-item.php @@ -0,0 +1,45 @@ +settings_page = $settings_page; + } + + public function is_visible() { + return true; + } + + public function get_parent_slug() { + return null; + } + + public function get_label() { + return esc_html__( 'Elementor', 'elementor' ); + } + + public function get_page_title() { + return esc_html__( 'Elementor', 'elementor' ); + } + + public function get_position() { + return '58.5'; + } + + public function get_capability() { + return 'manage_options'; + } + + public function render() { + $this->settings_page->display_settings_page(); + } +} diff --git a/wp-content/plugins/elementor/includes/settings/admin-menu-items/get-help-menu-item.php b/wp-content/plugins/elementor/includes/settings/admin-menu-items/get-help-menu-item.php new file mode 100644 index 0000000..a126fd9 --- /dev/null +++ b/wp-content/plugins/elementor/includes/settings/admin-menu-items/get-help-menu-item.php @@ -0,0 +1,38 @@ + +
    +
    +
    +
    +
    +
    + +
    + +
    + + + + +
    +
    +
    +

    +

    +
    + +
    + +
    + +
    + + + + + +
    +
    +
    +
    +
    + tools_page = $tools_page; + } + + public function is_visible() { + return true; + } + + public function get_parent_slug() { + return Settings::PAGE_ID; + } + + public function get_label() { + return esc_html__( 'Tools', 'elementor' ); + } + + public function get_page_title() { + return esc_html__( 'Tools', 'elementor' ); + } + + public function get_capability() { + return Tools::CAPABILITY; + } + + public function render() { + $this->tools_page->display_settings_page(); + } +} diff --git a/wp-content/plugins/elementor/includes/settings/controls.php b/wp-content/plugins/elementor/includes/settings/controls.php new file mode 100644 index 0000000..e06e58d --- /dev/null +++ b/wp-content/plugins/elementor/includes/settings/controls.php @@ -0,0 +1,283 @@ + '', + 'attributes' => [], + 'std' => '', + 'desc' => '', + ]; + + $field = array_merge( $defaults, $field ); + + $method_name = $field['type']; + + if ( ! method_exists( __CLASS__, $method_name ) ) { + $method_name = 'text'; + } + + self::$method_name( $field ); + } + + /** + * Render text control. + * + * Generates the final HTML for text controls. + * + * @since 2.0.0 + * @access private + * @static + * + * @param array $field Field data. + */ + private static function text( array $field ) { + if ( empty( $field['attributes']['class'] ) ) { + $field['attributes']['class'] = 'regular-text'; + } + + ?> + /> + + +

    + + + +

    + $option_value ) : + ?> +
    + + +

    + + + + +

    + [], + ]; + $field = array_merge( $defaults, $field ); + + $post_types_objects = get_post_types( + [ + 'public' => true, + ], 'objects' + ); + + /** + * Filters the list of post type objects used by Elementor. + * + * @since 2.8.0 + * + * @param array $post_types_objects List of post type objects used by Elementor. + */ + $post_types_objects = apply_filters( 'elementor/settings/controls/checkbox_list_cpt/post_type_objects', $post_types_objects ); + + $field['options'] = []; + foreach ( $post_types_objects as $cpt_slug => $post_type ) { + if ( in_array( $cpt_slug, $field['exclude'], true ) ) { + continue; + } + + $field['options'][ $cpt_slug ] = $post_type->labels->name; + } + + self::checkbox_list( $field ); + } + + /** + * Render checkbox list control for user roles. + * + * Generates the final HTML for checkbox list controls populated with user roles. + * + * @since 2.0.0 + * @access private + * @static + * + * @param array $field Field data. + */ + private static function checkbox_list_roles( array $field ) { + $defaults = [ + 'exclude' => [], + ]; + $field = array_merge( $defaults, $field ); + + $field['options'] = []; + $roles = get_editable_roles(); + + if ( is_multisite() ) { + $roles = [ + 'super_admin' => [ + 'name' => esc_html__( 'Super Admin', 'elementor' ), + ], + ] + $roles; + } + + foreach ( $roles as $role_slug => $role_data ) { + if ( in_array( $role_slug, $field['exclude'] ) ) { + continue; + } + + $field['options'][ $role_slug ] = $role_data['name']; + } + + self::checkbox_list( $field ); + } + + /** + * Render raw HTML control. + * + * Generates the final HTML for raw HTML controls. + * + * @since 2.0.0 + * @access private + * @static + * + * @param array $field Field data. + */ + private static function raw_html( array $field ) { + if ( empty( $field['html'] ) ) { + return; + } + ?> +
    + + +
    + + +

    + +
    + ensure_tabs(); + + return $this->tabs; + } + + /** + * Add tab. + * + * Register a new tab to a settings page. + * + * @since 1.5.0 + * @access public + * + * @param string $tab_id Tab ID. + * @param array $tab_args Optional. Tab arguments. Default is an empty array. + */ + final public function add_tab( $tab_id, array $tab_args = [] ) { + $this->ensure_tabs(); + + if ( isset( $this->tabs[ $tab_id ] ) ) { + // Don't override an existing tab + return; + } + + if ( ! isset( $tab_args['sections'] ) ) { + $tab_args['sections'] = []; + } + + $this->tabs[ $tab_id ] = $tab_args; + } + + /** + * Add section. + * + * Register a new section to a tab. + * + * @since 1.5.0 + * @access public + * + * @param string $tab_id Tab ID. + * @param string $section_id Section ID. + * @param array $section_args Optional. Section arguments. Default is an + * empty array. + */ + final public function add_section( $tab_id, $section_id, array $section_args = [] ) { + $this->ensure_tabs(); + + if ( ! isset( $this->tabs[ $tab_id ] ) ) { + // If the requested tab doesn't exists, use the first tab + $tab_id = key( $this->tabs ); + } + + if ( isset( $this->tabs[ $tab_id ]['sections'][ $section_id ] ) ) { + // Don't override an existing section + return; + } + + if ( ! isset( $section_args['fields'] ) ) { + $section_args['fields'] = []; + } + + $this->tabs[ $tab_id ]['sections'][ $section_id ] = $section_args; + } + + /** + * Add field. + * + * Register a new field to a section. + * + * @since 1.5.0 + * @access public + * + * @param string $tab_id Tab ID. + * @param string $section_id Section ID. + * @param string $field_id Field ID. + * @param array $field_args Field arguments. + */ + final public function add_field( $tab_id, $section_id, $field_id, array $field_args ) { + $this->ensure_tabs(); + + if ( ! isset( $this->tabs[ $tab_id ] ) ) { + // If the requested tab doesn't exists, use the first tab + $tab_id = key( $this->tabs ); + } + + if ( ! isset( $this->tabs[ $tab_id ]['sections'][ $section_id ] ) ) { + // If the requested section doesn't exists, use the first section + $section_id = key( $this->tabs[ $tab_id ]['sections'] ); + } + + if ( isset( $this->tabs[ $tab_id ]['sections'][ $section_id ]['fields'][ $field_id ] ) ) { + // Don't override an existing field + return; + } + + $this->tabs[ $tab_id ]['sections'][ $section_id ]['fields'][ $field_id ] = $field_args; + } + + /** + * Add fields. + * + * Register multiple fields to a section. + * + * @since 1.5.0 + * @access public + * + * @param string $tab_id Tab ID. + * @param string $section_id Section ID. + * @param array $fields { + * An array of fields. + * + * @type string $field_id Field ID. + * @type array $field_args Field arguments. + * } + */ + final public function add_fields( $tab_id, $section_id, array $fields ) { + foreach ( $fields as $field_id => $field_args ) { + $this->add_field( $tab_id, $section_id, $field_id, $field_args ); + } + } + + /** + * Register settings fields. + * + * In each tab register his inner sections, and in each section register his + * inner fields. + * + * @since 1.5.0 + * @access public + */ + final public function register_settings_fields() { + $controls_class_name = __NAMESPACE__ . '\Settings_Controls'; + + $tabs = $this->get_tabs(); + + foreach ( $tabs as $tab_id => $tab ) { + + foreach ( $tab['sections'] as $section_id => $section ) { + $full_section_id = 'elementor_' . $section_id . '_section'; + + $label = isset( $section['label'] ) ? $section['label'] : ''; + + $section_callback = isset( $section['callback'] ) ? $section['callback'] : '__return_empty_string'; + + add_settings_section( $full_section_id, $label, $section_callback, static::PAGE_ID ); + + foreach ( $section['fields'] as $field_id => $field ) { + $full_field_id = ! empty( $field['full_field_id'] ) ? $field['full_field_id'] : 'elementor_' . $field_id; + + $field['field_args']['id'] = $full_field_id; + + $field_classes = [ $full_field_id ]; + + if ( ! empty( $field['class'] ) ) { + $field_classes[] = $field['field_args']['class']; + } + + $field['field_args']['class'] = implode( ' ', $field_classes ); + + if ( ! isset( $field['render'] ) ) { + $field['render'] = [ $controls_class_name, 'render' ]; + } + + add_settings_field( + $full_field_id, + isset( $field['label'] ) ? $field['label'] : '', + $field['render'], + static::PAGE_ID, + $full_section_id, + $field['field_args'] + ); + + $setting_args = []; + + if ( ! empty( $field['setting_args'] ) ) { + $setting_args = $field['setting_args']; + } + + register_setting( static::PAGE_ID, $full_field_id, $setting_args ); + } + } + } + } + + /** + * Display settings page. + * + * Output the content for the settings page. + * + * @since 1.5.0 + * @access public + */ + public function display_settings_page() { + $this->register_settings_fields(); + + $tabs = $this->get_tabs(); + ?> +
    +

    get_page_title() ); ?>

    + +
    + $tab ) { + if ( ! $this->should_render_tab( $tab ) ) { + continue; + } + + $active_class = ''; + + if ( 'general' === $tab_id ) { + $active_class = ' elementor-active'; + } + + $sanitized_tab_id = esc_attr( $tab_id ); + + // PHPCS - $active_class is a non-dynamic string and $sanitized_tab_id is escaped above. + echo "
    "; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped + + foreach ( $tab['sections'] as $section_id => $section ) { + if ( ! $this->should_render_section( $section ) ) { + continue; + } + + $full_section_id = 'elementor_' . $section_id . '_section'; + + if ( ! empty( $section['label'] ) ) { + echo '

    ' . esc_html( $section['label'] ) . '

    '; + } + + if ( ! empty( $section['callback'] ) ) { + $section['callback'](); + } + + echo '
    ' . esc_html( $title ) . ': ' . esc_html( $state ) . '
    ' : ''; + $close_tab = $table ? '
    '; + + do_settings_fields( static::PAGE_ID, $full_section_id ); + + echo '
    '; + } + + echo ''; + } + + submit_button(); + ?> + + + [ + 'label' => esc_html__( 'Usage Data Sharing', 'elementor' ), + 'field_args' => [ + 'type' => 'checkbox', + 'value' => 'yes', + 'default' => '', + 'sub_desc' => sprintf( + '%1$s %2$s', + esc_html__( 'Become a super contributor by opting in to share non-sensitive plugin data and to receive periodic email updates from us.', 'elementor' ), + esc_html__( 'Learn more', 'elementor' ) + ), + ], + 'setting_args' => [ __NAMESPACE__ . '\Tracker', 'check_for_settings_optin' ], + ], + ]; + } + + /** + * Ensure tabs. + * + * Make sure the settings page has tabs before inserting any new sections or + * fields. + * + * @since 1.5.0 + * @access private + */ + private function ensure_tabs() { + if ( null === $this->tabs ) { + $this->tabs = $this->create_tabs(); + + $page_id = static::PAGE_ID; + + /** + * After create settings. + * + * Fires after the settings are created in Elementor admin page. + * + * The dynamic portion of the hook name, `$page_id`, refers to the current page ID. + * + * @since 1.0.0 + * + * @param Settings_Page $this The settings page. + */ + do_action( "elementor/admin/after_create_settings/{$page_id}", $this ); + } + } + + /** + * Should it render the settings tab + * + * @param $tab + * + * @return bool + */ + private function should_render_tab( $tab ) { + // BC - When 'show_if' prop is not exists, it actually should render the tab. + return ! empty( $tab['sections'] ) && ( ! isset( $tab['show_if'] ) || $tab['show_if'] ); + } + + /** + * Should it render the settings section + * + * @param $section + * + * Since 3.19.0 + * + * @return bool + */ + private function should_render_section( $section ) { + // BC - When 'show_if' prop is not exists, it actually should render the section. + return ! isset( $section['show_if'] ) || $section['show_if']; + } +} diff --git a/wp-content/plugins/elementor/includes/settings/settings.php b/wp-content/plugins/elementor/includes/settings/settings.php new file mode 100644 index 0000000..17d43a7 --- /dev/null +++ b/wp-content/plugins/elementor/includes/settings/settings.php @@ -0,0 +1,471 @@ + $item ) { + if ( 'elementor' === $item ) { + $elementor_menu_order[] = 'separator-elementor'; + $elementor_menu_order[] = $item; + $elementor_menu_order[] = Source_Local::ADMIN_MENU_SLUG; + + unset( $menu_order[ $elementor_separator ] ); + unset( $menu_order[ $elementor_library ] ); + } elseif ( ! in_array( $item, [ 'separator-elementor' ], true ) ) { + $elementor_menu_order[] = $item; + } + } + + // Return order. + return $elementor_menu_order; + } + + /** + * Register Elementor knowledge base sub-menu. + * + * Add new Elementor knowledge base sub-menu under the main Elementor menu. + * + * Fired by `admin_menu` action. + * + * @since 2.0.3 + * @access private + */ + private function register_knowledge_base_menu( Admin_Menu_Manager $admin_menu ) { + $admin_menu->register( 'elementor-getting-started', new Getting_Started_Menu_Item() ); + $admin_menu->register( 'go_knowledge_base_site', new Get_Help_Menu_Item() ); + } + + /** + * Go Elementor Pro. + * + * Redirect the Elementor Pro page the clicking the Elementor Pro menu link. + * + * Fired by `admin_init` action. + * + * @since 2.0.3 + * @access public + */ + public function handle_external_redirects() { + if ( empty( $_GET['page'] ) ) { + return; + } + + if ( 'go_knowledge_base_site' === $_GET['page'] ) { + wp_redirect( Get_Help_Menu_Item::URL ); + die; + } + } + + /** + * On admin init. + * + * Preform actions on WordPress admin initialization. + * + * Fired by `admin_init` action. + * + * @since 2.0.0 + * @access public + */ + public function on_admin_init() { + $this->handle_external_redirects(); + + $this->maybe_remove_all_admin_notices(); + } + + /** + * Change "Settings" menu name. + * + * Update the name of the Settings admin menu from "Elementor" to "Settings". + * + * Fired by `admin_menu` action. + * + * @since 1.0.0 + * @access public + */ + public function admin_menu_change_name() { + Utils::change_submenu_first_item_label( 'elementor', esc_html__( 'Settings', 'elementor' ) ); + } + + /** + * Update CSS print method. + * + * Clear post CSS cache. + * + * Fired by `add_option_elementor_css_print_method` and + * `update_option_elementor_css_print_method` actions. + * + * @since 1.7.5 + * @access public + * @deprecated 3.0.0 Use `Plugin::$instance->files_manager->clear_cache()` method instead. + */ + public function update_css_print_method() { + Plugin::$instance->files_manager->clear_cache(); + } + + /** + * Create tabs. + * + * Return the settings page tabs, sections and fields. + * + * @since 1.5.0 + * @access protected + * + * @return array An array with the settings page tabs, sections and fields. + */ + protected function create_tabs() { + $validations_class_name = __NAMESPACE__ . '\Settings_Validations'; + + return [ + self::TAB_GENERAL => [ + 'label' => esc_html__( 'General', 'elementor' ), + 'sections' => [ + 'general' => [ + 'fields' => [ + self::UPDATE_TIME_FIELD => [ + 'full_field_id' => self::UPDATE_TIME_FIELD, + 'field_args' => [ + 'type' => 'hidden', + ], + 'setting_args' => [ $validations_class_name, 'current_time' ], + ], + 'cpt_support' => [ + 'label' => esc_html__( 'Post Types', 'elementor' ), + 'field_args' => [ + 'type' => 'checkbox_list_cpt', + 'std' => [ 'page', 'post' ], + 'exclude' => [ 'attachment', 'elementor_library' ], + ], + 'setting_args' => [ $validations_class_name, 'checkbox_list' ], + ], + 'disable_color_schemes' => [ + 'label' => esc_html__( 'Disable Default Colors', 'elementor' ), + 'field_args' => [ + 'type' => 'checkbox', + 'value' => 'yes', + 'sub_desc' => esc_html__( 'Checking this box will disable Elementor\'s Default Colors, and make Elementor inherit the colors from your theme.', 'elementor' ), + ], + ], + 'disable_typography_schemes' => [ + 'label' => esc_html__( 'Disable Default Fonts', 'elementor' ), + 'field_args' => [ + 'type' => 'checkbox', + 'value' => 'yes', + 'sub_desc' => esc_html__( 'Checking this box will disable Elementor\'s Default Fonts, and make Elementor inherit the fonts from your theme.', 'elementor' ), + ], + ], + ], + ], + 'usage' => [ + 'label' => esc_html__( 'Improve Elementor', 'elementor' ), + 'fields' => $this->get_usage_fields(), + ], + ], + ], + self::TAB_INTEGRATIONS => [ + 'label' => esc_html__( 'Integrations', 'elementor' ), + 'sections' => [ + 'google_maps' => [ + 'label' => esc_html__( 'Google Maps Embed API', 'elementor' ), + 'callback' => function() { + printf( + /* translators: 1: Link open tag, 2: Link close tag */ + esc_html__( 'Google Maps Embed API is a free service by Google that allows embedding Google Maps in your site. For more details, visit Google Maps\' %1$sUsing API Keys%2$s page.', 'elementor' ), + '', + '' + ); + }, + 'fields' => [ + 'google_maps_api_key' => [ + 'label' => esc_html__( 'API Key', 'elementor' ), + 'field_args' => [ + 'class' => 'elementor_google_maps_api_key', + 'type' => 'text', + ], + ], + ], + ], + ], + ], + self::TAB_ADVANCED => [ + 'label' => esc_html__( 'Advanced', 'elementor' ), + 'sections' => [ + 'advanced' => [ + 'fields' => [ + 'css_print_method' => [ + 'label' => esc_html__( 'CSS Print Method', 'elementor' ), + 'field_args' => [ + 'class' => 'elementor_css_print_method', + 'type' => 'select', + 'std' => 'external', + 'options' => [ + 'external' => esc_html__( 'External File', 'elementor' ), + 'internal' => esc_html__( 'Internal Embedding', 'elementor' ), + ], + 'desc' => '', + ], + ], + 'editor_break_lines' => [ + 'label' => esc_html__( 'Switch Editor Loader Method', 'elementor' ), + 'field_args' => [ + 'type' => 'select', + 'std' => '', + 'options' => [ + '' => esc_html__( 'Disable', 'elementor' ), + '1' => esc_html__( 'Enable', 'elementor' ), + ], + 'desc' => esc_html__( 'For troubleshooting server configuration conflicts.', 'elementor' ), + ], + ], + 'unfiltered_files_upload' => [ + 'label' => esc_html__( 'Enable Unfiltered File Uploads', 'elementor' ), + 'field_args' => [ + 'type' => 'select', + 'std' => '', + 'options' => [ + '' => esc_html__( 'Disable', 'elementor' ), + '1' => esc_html__( 'Enable', 'elementor' ), + ], + 'desc' => esc_html__( 'Please note! Allowing uploads of any files (SVG & JSON included) is a potential security risk.', 'elementor' ) . '
    ' . esc_html__( 'Elementor will try to sanitize the unfiltered files, removing potential malicious code and scripts.', 'elementor' ) . '
    ' . esc_html__( 'We recommend you only enable this feature if you understand the security risks involved.', 'elementor' ), + ], + ], + 'google_font' => [ + 'label' => esc_html__( 'Google Fonts', 'elementor' ), + 'field_args' => [ + 'type' => 'select', + 'std' => '1', + 'options' => [ + '1' => esc_html__( 'Enable', 'elementor' ), + '0' => esc_html__( 'Disable', 'elementor' ), + ], + 'desc' => sprintf( + esc_html__( 'Disable this option if you want to prevent Google Fonts from being loaded. This setting is recommended when loading fonts from a different source (plugin, theme or %1$scustom fonts%2$s).', 'elementor' ), + '', + '' + ), + ], + ], + 'font_display' => [ + 'label' => esc_html__( 'Google Fonts Load', 'elementor' ), + 'field_args' => [ + 'type' => 'select', + 'std' => 'auto', + 'options' => [ + 'auto' => esc_html__( 'Default', 'elementor' ), + 'block' => esc_html__( 'Blocking', 'elementor' ), + 'swap' => esc_html__( 'Swap', 'elementor' ), + 'fallback' => esc_html__( 'Fallback', 'elementor' ), + 'optional' => esc_html__( 'Optional', 'elementor' ), + ], + 'desc' => esc_html__( 'Font-display property defines how font files are loaded and displayed by the browser.', 'elementor' ) . '
    ' . esc_html__( 'Set the way Google Fonts are being loaded by selecting the font-display property (Default: Auto).', 'elementor' ), + ], + ], + ], + ], + ], + ], + ]; + } + + /** + * Get settings page title. + * + * Retrieve the title for the settings page. + * + * @since 1.5.0 + * @access protected + * + * @return string Settings page title. + */ + protected function get_page_title() { + if ( Plugin::$instance->experiments->is_feature_active( 'admin_menu_rearrangement' ) ) { + return esc_html__( 'Settings', 'elementor' ); + } + + return esc_html__( 'Elementor', 'elementor' ); + } + + /** + * @since 2.2.0 + * @access private + */ + private function maybe_remove_all_admin_notices() { + $elementor_pages = [ + 'elementor-getting-started', + 'elementor-system-info', + 'e-form-submissions', + 'elementor_custom_fonts', + 'elementor_custom_icons', + 'elementor-license', + 'elementor_custom_code', + 'popup_templates', + 'elementor-apps', + ]; + + if ( empty( $_GET['page'] ) || ! in_array( $_GET['page'], $elementor_pages, true ) ) { + return; + } + + remove_all_actions( 'admin_notices' ); + } + + public function add_generator_tag_settings( $settings ) { + $css_print_method = get_option( 'elementor_css_print_method', 'external' ); + $settings[] = 'css_print_method-' . $css_print_method; + + $google_font = Fonts::is_google_fonts_enabled() ? 'enabled' : 'disabled'; + $settings[] = 'google_font-' . $google_font; + + $font_display = Fonts::get_font_display_setting(); + $settings[] = 'font_display-' . $font_display; + + return $settings; + } + + /** + * Settings page constructor. + * + * Initializing Elementor "Settings" page. + * + * @since 1.0.0 + * @access public + */ + public function __construct() { + parent::__construct(); + + add_action( 'admin_init', [ $this, 'on_admin_init' ] ); + add_filter( 'elementor/generator_tag/settings', [ $this, 'add_generator_tag_settings' ] ); + + if ( ! Plugin::$instance->experiments->is_feature_active( 'admin_menu_rearrangement' ) ) { + add_action( 'admin_menu', [ $this, 'register_admin_menu' ], 20 ); + + add_action( 'elementor/admin/menu/register', function ( Admin_Menu_Manager $admin_menu ) { + $this->register_knowledge_base_menu( $admin_menu ); + }, Promotions_Module::ADMIN_MENU_PRIORITY - 1 ); + + add_action( 'admin_menu', [ $this, 'admin_menu_change_name' ], 200 ); + + add_filter( 'custom_menu_order', '__return_true' ); + add_filter( 'menu_order', [ $this, 'menu_order' ] ); + } + + $clear_cache_callback = [ Plugin::$instance->files_manager, 'clear_cache' ]; + + // Clear CSS Meta after change css related methods. + $css_settings = [ + 'elementor_disable_color_schemes', + 'elementor_disable_typography_schemes', + 'elementor_css_print_method', + ]; + + foreach ( $css_settings as $option_name ) { + add_action( "add_option_{$option_name}", $clear_cache_callback ); + add_action( "update_option_{$option_name}", $clear_cache_callback ); + } + } +} diff --git a/wp-content/plugins/elementor/includes/settings/tools.php b/wp-content/plugins/elementor/includes/settings/tools.php new file mode 100644 index 0000000..5160fab --- /dev/null +++ b/wp-content/plugins/elementor/includes/settings/tools.php @@ -0,0 +1,472 @@ +add_submenu( [ + 'page_title' => esc_html__( 'Tools', 'elementor' ), + 'menu_title' => esc_html__( 'Tools', 'elementor' ), + 'menu_slug' => self::PAGE_ID, + 'function' => [ $this, 'display_settings_page' ], + 'index' => 50, + ] ); + } + + /** + * Clear cache. + * + * Delete post meta containing the post CSS file data. And delete the actual + * CSS files from the upload directory. + * + * Fired by `wp_ajax_elementor_clear_cache` action. + * + * @since 1.0.0 + * @access public + */ + public function ajax_elementor_clear_cache() { + check_ajax_referer( 'elementor_clear_cache', '_nonce' ); + + if ( ! current_user_can( static::CAPABILITY ) ) { + wp_send_json_error( 'Permission denied' ); + } + + Plugin::$instance->files_manager->clear_cache(); + + wp_send_json_success(); + } + + /** + * Recreate kit. + * + * Recreate default kit (only when default kit does not exist). + * + * Fired by `wp_ajax_elementor_recreate_kit` action. + * + * @since 1.0.0 + * @access public + */ + public function ajax_elementor_recreate_kit() { + check_ajax_referer( 'elementor_recreate_kit', '_nonce' ); + + if ( ! current_user_can( static::CAPABILITY ) ) { + wp_send_json_error( 'Permission denied' ); + } + + $kit = Plugin::$instance->kits_manager->get_active_kit(); + + if ( $kit->get_id() ) { + wp_send_json_error( [ 'message' => esc_html__( 'There\'s already an active kit.', 'elementor' ) ], 400 ); + } + + $created_default_kit = Plugin::$instance->kits_manager->create_default(); + + if ( ! $created_default_kit ) { + wp_send_json_error( [ 'message' => esc_html__( 'An error occurred while trying to create a kit.', 'elementor' ) ], 500 ); + } + + update_option( Manager::OPTION_ACTIVE, $created_default_kit ); + + wp_send_json_success( esc_html__( 'New kit have been created successfully', 'elementor' ) ); + } + + /** + * Replace URLs. + * + * Sends an ajax request to replace old URLs to new URLs. This method also + * updates all the Elementor data. + * + * Fired by `wp_ajax_elementor_replace_url` action. + * + * @since 1.1.0 + * @access public + */ + public function ajax_elementor_replace_url() { + check_ajax_referer( 'elementor_replace_url', '_nonce' ); + + if ( ! current_user_can( static::CAPABILITY ) ) { + wp_send_json_error( 'Permission denied' ); + } + + $from = Utils::get_super_global_value( $_POST, 'from' ) ?? ''; + $to = Utils::get_super_global_value( $_POST, 'to' ) ?? ''; + + try { + $results = Utils::replace_urls( $from, $to ); + wp_send_json_success( $results ); + } catch ( \Exception $e ) { + wp_send_json_error( $e->getMessage() ); + } + } + + /** + * Elementor version rollback. + * + * Rollback to previous Elementor version. + * + * Fired by `admin_post_elementor_rollback` action. + * + * @since 1.5.0 + * @access public + */ + public function post_elementor_rollback() { + check_admin_referer( 'elementor_rollback' ); + + if ( ! static::can_user_rollback_versions() ) { + wp_die( esc_html__( 'Not allowed to rollback versions', 'elementor' ) ); + } + + $rollback_versions = $this->get_rollback_versions(); + $version = Utils::get_super_global_value( $_GET, 'version' ); + + if ( empty( $version ) || ! in_array( $version, $rollback_versions, true ) ) { + wp_die( esc_html__( 'An error occurred, the selected version is invalid. Try selecting different version.', 'elementor' ) ); + } + + /** + * Filter to allow override the rollback process. + * Should return an instance of `Rollback` class. + * + * @since 3.16.0 + * + * @param Rollback|null $rollback The rollback instance. + * @param string $version The version to roll back to. + */ + $rollback = apply_filters( 'elementor/settings/rollback', null, $version ); + + if ( ! ( $rollback instanceof Rollback ) ) { + $plugin_slug = basename( ELEMENTOR__FILE__, '.php' ); + + $rollback = new Rollback( [ + 'version' => $version, + 'plugin_name' => ELEMENTOR_PLUGIN_BASE, + 'plugin_slug' => $plugin_slug, + 'package_url' => sprintf( 'https://downloads.wordpress.org/plugin/%s.%s.zip', $plugin_slug, $version ), + ] ); + } + + $rollback->run(); + + wp_die( + '', esc_html__( 'Rollback to Previous Version', 'elementor' ), [ + 'response' => 200, + ] + ); + } + + /** + * Tools page constructor. + * + * Initializing Elementor "Tools" page. + * + * @since 1.0.0 + * @access public + */ + public function __construct() { + parent::__construct(); + + if ( Plugin::$instance->experiments->is_feature_active( 'admin_menu_rearrangement' ) ) { + add_action( 'elementor/admin/menu_registered/elementor', function( MainMenu $menu ) { + $this->register_admin_menu( $menu ); + } ); + } else { + add_action( 'elementor/admin/menu/register', function( Admin_Menu_Manager $admin_menu ) { + $admin_menu->register( static::PAGE_ID, new Tools_Menu_Item( $this ) ); + }, Settings::ADMIN_MENU_PRIORITY + 20 ); + } + + add_action( 'wp_ajax_elementor_clear_cache', [ $this, 'ajax_elementor_clear_cache' ] ); + add_action( 'wp_ajax_elementor_replace_url', [ $this, 'ajax_elementor_replace_url' ] ); + add_action( 'wp_ajax_elementor_recreate_kit', [ $this, 'ajax_elementor_recreate_kit' ] ); + + add_action( 'admin_post_elementor_rollback', [ $this, 'post_elementor_rollback' ] ); + } + + private function get_rollback_versions() { + $rollback_versions = get_transient( 'elementor_rollback_versions_' . ELEMENTOR_VERSION ); + + if ( false === $rollback_versions ) { + $max_versions = 30; + + $versions = apply_filters( 'elementor/settings/rollback/versions', [] ); + + if ( empty( $versions ) ) { + require_once ABSPATH . 'wp-admin/includes/plugin-install.php'; + + $plugin_information = plugins_api( + 'plugin_information', [ + 'slug' => 'elementor', + ] + ); + + if ( empty( $plugin_information->versions ) || ! is_array( $plugin_information->versions ) ) { + return []; + } + + uksort( $plugin_information->versions, 'version_compare' ); + $versions = array_keys( array_reverse( $plugin_information->versions ) ); + } + + $rollback_versions = []; + + $current_index = 0; + foreach ( $versions as $version ) { + if ( $max_versions <= $current_index ) { + break; + } + + $lowercase_version = strtolower( $version ); + $is_valid_rollback_version = ! preg_match( '/(trunk|beta|rc|dev)/i', $lowercase_version ); + + /** + * Is rollback version is valid. + * + * Filters the check whether the rollback version is valid. + * + * @param bool $is_valid_rollback_version Whether the rollback version is valid. + */ + $is_valid_rollback_version = apply_filters( + 'elementor/settings/tools/rollback/is_valid_rollback_version', + $is_valid_rollback_version, + $lowercase_version + ); + + if ( ! $is_valid_rollback_version ) { + continue; + } + + if ( version_compare( $version, ELEMENTOR_VERSION, '>=' ) ) { + continue; + } + + $current_index++; + $rollback_versions[] = $version; + } + + set_transient( 'elementor_rollback_versions_' . ELEMENTOR_VERSION, $rollback_versions, WEEK_IN_SECONDS ); + } + + return $rollback_versions; + } + + /** + * Create tabs. + * + * Return the tools page tabs, sections and fields. + * + * @since 1.5.0 + * @access protected + * + * @return array An array with the page tabs, sections and fields. + */ + protected function create_tabs() { + $rollback_html = ''; + + $tabs = [ + 'general' => [ + 'label' => esc_html__( 'General', 'elementor' ), + 'sections' => [ + 'tools' => [ + 'fields' => [ + 'clear_cache' => [ + 'label' => esc_html__( 'Regenerate CSS & Data', 'elementor' ), + 'field_args' => [ + 'type' => 'raw_html', + 'html' => sprintf( '', wp_create_nonce( 'elementor_clear_cache' ), esc_html__( 'Regenerate Files & Data', 'elementor' ) ), + 'desc' => esc_html__( 'Styles set in Elementor are saved in CSS files in the uploads folder and in the site’s database. Recreate those files and settings, according to the most recent settings.', 'elementor' ), + ], + ], + 'reset_api_data' => [ + 'label' => esc_html__( 'Sync Library', 'elementor' ), + 'field_args' => [ + 'type' => 'raw_html', + 'html' => sprintf( '', wp_create_nonce( 'elementor_reset_library' ), esc_html__( 'Sync Library', 'elementor' ) ), + 'desc' => esc_html__( 'Elementor Library automatically updates on a daily basis. You can also manually update it by clicking on the sync button.', 'elementor' ), + ], + ], + ], + ], + ], + ], + 'replace_url' => [ + 'label' => esc_html__( 'Replace URL', 'elementor' ), + 'sections' => [ + 'replace_url' => [ + 'callback' => function() { + echo '

    ' . esc_html__( 'Replace URL', 'elementor' ) . '

    '; + echo sprintf( + '

    %1$s %2$s

    ', + esc_html__( 'Important:', 'elementor' ), + sprintf( + /* translators: 1: Link open tag, 2: Link close tag. */ + esc_html__( 'It is strongly recommended to %1$sbackup the database%2$s before using replacing URLs.', 'elementor' ), + '', + '' + ) + ); + }, + 'fields' => [ + 'replace_url' => [ + 'label' => esc_html__( 'Update Site Address (URL)', 'elementor' ), + 'field_args' => [ + 'type' => 'raw_html', + 'html' => sprintf( '', wp_create_nonce( 'elementor_replace_url' ), esc_html__( 'Replace URL', 'elementor' ) ), + 'desc' => esc_html__( 'Enter your old and new URLs for your WordPress installation, to update all Elementor data (Relevant for domain transfers or move to \'HTTPS\').', 'elementor' ), + ], + ], + ], + ], + ], + ], + 'versions' => [ + 'show_if' => static::can_user_rollback_versions(), + 'label' => esc_html__( 'Version Control', 'elementor' ), + 'sections' => [ + 'rollback' => [ + 'label' => esc_html__( 'Rollback to Previous Version', 'elementor' ), + 'callback' => function() { + $intro_text = sprintf( + /* translators: %s: Elementor version. */ + esc_html__( 'Experiencing an issue with Elementor version %s? Rollback to a previous version before the issue appeared.', 'elementor' ), + ELEMENTOR_VERSION + ); + $intro_text = '

    ' . $intro_text . '

    '; + + Utils::print_unescaped_internal_string( $intro_text ); + }, + 'fields' => [ + 'rollback' => [ + 'label' => esc_html__( 'Rollback Version', 'elementor' ), + 'field_args' => [ + 'type' => 'raw_html', + 'html' => sprintf( + $rollback_html . '%1$s', + esc_html__( 'Reinstall', 'elementor' ), + wp_nonce_url( admin_url( 'admin-post.php?action=elementor_rollback&version=VERSION' ), 'elementor_rollback' ) + ), + 'desc' => '' . esc_html__( 'Warning: Please backup your database before making the rollback.', 'elementor' ) . '', + ], + ], + ], + ], + 'beta' => [ + 'show_if' => $this->display_beta_tester(), + 'label' => esc_html__( 'Become a Beta Tester', 'elementor' ), + 'callback' => function() { + echo '

    ' . + esc_html__( 'Turn-on Beta Tester, to get notified when a new beta version of Elementor or Elementor Pro is available. The Beta version will not install automatically. You always have the option to ignore it.', 'elementor' ) . + '

    '; + echo '

    ' . sprintf( + /* translators: 1: Link open tag, 2: Link close tag. */ + esc_html__( '%1$sClick here%2$s %3$sto join our first-to-know email updates.%4$s', 'elementor' ), + '', + '', + '', + '', + ) . '

    '; + }, + 'fields' => [ + 'beta' => [ + 'label' => esc_html__( 'Beta Tester', 'elementor' ), + 'field_args' => [ + 'type' => 'select', + 'std' => 'no', + 'options' => [ + 'no' => esc_html__( 'Disable', 'elementor' ), + 'yes' => esc_html__( 'Enable', 'elementor' ), + ], + 'desc' => '' . esc_html__( 'Please Note: We do not recommend updating to a beta version on production sites.', 'elementor' ) . '', + ], + ], + ], + ], + ], + ], + ]; + + if ( ! Plugin::$instance->kits_manager->get_active_kit()->get_id() ) { + $tabs['general']['sections']['tools']['fields']['recreate_kit'] = [ + 'label' => esc_html__( 'Recreate Kit', 'elementor' ), + 'field_args' => [ + 'type' => 'raw_html', + 'html' => sprintf( '', wp_create_nonce( 'elementor_recreate_kit' ), esc_html__( 'Recreate Kit', 'elementor' ) ), + 'desc' => esc_html__( 'It seems like your site doesn\'t have any active Kit. The active Kit includes all of your Site Settings. By recreating your Kit you will able to start edit your Site Settings again.', 'elementor' ), + ], + ]; + } + return $tabs; + } + + /** + * Get tools page title. + * + * Retrieve the title for the tools page. + * + * @since 1.5.0 + * @access protected + * + * @return string Tools page title. + */ + protected function get_page_title() { + return esc_html__( 'Tools', 'elementor' ); + } + + /** + * Check if the current user can access the version control tab and rollback versions. + * + * @return bool + */ + public static function can_user_rollback_versions() { + return current_user_can( 'activate_plugins' ) && current_user_can( 'update_plugins' ); + } + + /** + * Check if the beta tester should be displayed. + * + * @since 3.19.0 + * + * @return bool + */ + public function display_beta_tester(): bool { + $display_beta_tester = true; + /** + * Filter to allow override the display of the beta tester. + * + * @param bool $display_beta_tester Whether to display the beta tester. + * + * @since 3.19.0 + * + * return bool + */ + return apply_filters( 'elementor/admin/show_beta_tester', $display_beta_tester ); + } +} diff --git a/wp-content/plugins/elementor/includes/settings/validations.php b/wp-content/plugins/elementor/includes/settings/validations.php new file mode 100644 index 0000000..36a9e46 --- /dev/null +++ b/wp-content/plugins/elementor/includes/settings/validations.php @@ -0,0 +1,92 @@ +files_manager->clear_cache(); + + return $input; + } +} diff --git a/wp-content/plugins/elementor/includes/shapes.php b/wp-content/plugins/elementor/includes/shapes.php new file mode 100644 index 0000000..f2d690f --- /dev/null +++ b/wp-content/plugins/elementor/includes/shapes.php @@ -0,0 +1,275 @@ + [ + 'title' => esc_html_x( 'Mountains', 'Shapes', 'elementor' ), + 'has_flip' => true, + ], + 'drops' => [ + 'title' => esc_html_x( 'Drops', 'Shapes', 'elementor' ), + 'has_negative' => true, + 'has_flip' => true, + 'height_only' => true, + ], + 'clouds' => [ + 'title' => esc_html_x( 'Clouds', 'Shapes', 'elementor' ), + 'has_negative' => true, + 'has_flip' => true, + 'height_only' => true, + ], + 'zigzag' => [ + 'title' => esc_html_x( 'Zigzag', 'Shapes', 'elementor' ), + ], + 'pyramids' => [ + 'title' => esc_html_x( 'Pyramids', 'Shapes', 'elementor' ), + 'has_negative' => true, + 'has_flip' => true, + ], + 'triangle' => [ + 'title' => esc_html_x( 'Triangle', 'Shapes', 'elementor' ), + 'has_negative' => true, + ], + 'triangle-asymmetrical' => [ + 'title' => esc_html_x( 'Triangle Asymmetrical', 'Shapes', 'elementor' ), + 'has_negative' => true, + 'has_flip' => true, + ], + 'tilt' => [ + 'title' => esc_html_x( 'Tilt', 'Shapes', 'elementor' ), + 'has_flip' => true, + 'height_only' => true, + ], + 'opacity-tilt' => [ + 'title' => esc_html_x( 'Tilt Opacity', 'Shapes', 'elementor' ), + 'has_flip' => true, + ], + 'opacity-fan' => [ + 'title' => esc_html_x( 'Fan Opacity', 'Shapes', 'elementor' ), + ], + 'curve' => [ + 'title' => esc_html_x( 'Curve', 'Shapes', 'elementor' ), + 'has_negative' => true, + ], + 'curve-asymmetrical' => [ + 'title' => esc_html_x( 'Curve Asymmetrical', 'Shapes', 'elementor' ), + 'has_negative' => true, + 'has_flip' => true, + ], + 'waves' => [ + 'title' => esc_html_x( 'Waves', 'Shapes', 'elementor' ), + 'has_negative' => true, + 'has_flip' => true, + ], + 'wave-brush' => [ + 'title' => esc_html_x( 'Waves Brush', 'Shapes', 'elementor' ), + 'has_flip' => true, + ], + 'waves-pattern' => [ + 'title' => esc_html_x( 'Waves Pattern', 'Shapes', 'elementor' ), + 'has_flip' => true, + ], + 'arrow' => [ + 'title' => esc_html_x( 'Arrow', 'Shapes', 'elementor' ), + 'has_negative' => true, + ], + 'split' => [ + 'title' => esc_html_x( 'Split', 'Shapes', 'elementor' ), + 'has_negative' => true, + ], + 'book' => [ + 'title' => esc_html_x( 'Book', 'Shapes', 'elementor' ), + 'has_negative' => true, + ], + ]; + + self::$shapes = array_merge( $native_shapes, self::get_additional_shapes() ); + } + + /** + * Get Additional Shapes + * + * Used to add custom shapes to elementor. + * + * @since 2.5.0 + * + * @return array + */ + private static function get_additional_shapes() { + static $additional_shapes = null; + + if ( null !== $additional_shapes ) { + return $additional_shapes; + } + $additional_shapes = []; + /** + * Additional shapes. + * + * Filters the shapes used by Elementor to add additional shapes. + * + * @since 2.0.1 + * + * @param array $additional_shapes Additional Elementor shapes. + */ + $additional_shapes = apply_filters( 'elementor/shapes/additional_shapes', $additional_shapes ); + return $additional_shapes; + } + + /** + * Get Additional Shapes For Config + * + * Used to set additional shape paths for editor + * + * @since 2.5.0 + * + * @return array|bool + */ + public static function get_additional_shapes_for_config() { + $additional_shapes = self::get_additional_shapes(); + if ( empty( $additional_shapes ) ) { + return false; + } + + $additional_shapes_config = []; + foreach ( $additional_shapes as $shape_name => $shape_settings ) { + if ( ! isset( $shape_settings['url'] ) ) { + continue; + } + $additional_shapes_config[ $shape_name ] = $shape_settings['url']; + } + + if ( empty( $additional_shapes_config ) ) { + return false; + } + + return $additional_shapes_config; + } +} diff --git a/wp-content/plugins/elementor/includes/stylesheet.php b/wp-content/plugins/elementor/includes/stylesheet.php new file mode 100644 index 0000000..b6e0a89 --- /dev/null +++ b/wp-content/plugins/elementor/includes/stylesheet.php @@ -0,0 +1,414 @@ + $properties ) { + $selector_content = self::parse_properties( $properties ); + + if ( $selector_content ) { + $parsed_rules .= $selector . '{' . $selector_content . '}'; + } + } + + return $parsed_rules; + } + + /** + * Parse CSS properties. + * + * Goes over the selector properties and generates the CSS of the selector. + * + * @since 1.0.0 + * @access public + * @static + * + * @param array $properties CSS properties. + * + * @return string Parsed properties. + */ + public static function parse_properties( array $properties ) { + $parsed_properties = ''; + + foreach ( $properties as $property_key => $property_value ) { + if ( '' !== $property_value ) { + $parsed_properties .= $property_key . ':' . $property_value . ';'; + } + } + + return $parsed_properties; + } + + /** + * Add device. + * + * Add a new device to the devices list. + * + * @since 1.0.0 + * @access public + * + * @param string $device_name Device name. + * @param string $device_max_point Device maximum point. + * + * @return Stylesheet The current stylesheet class instance. + */ + public function add_device( $device_name, $device_max_point ) { + $this->devices[ $device_name ] = $device_max_point; + + asort( $this->devices ); + + return $this; + } + + /** + * Add rules. + * + * Add a new CSS rule to the rules list. + * + * @since 1.0.0 + * @access public + * + * @param string $selector CSS selector. + * @param array|string $style_rules Optional. Style rules. Default is `null`. + * @param array $query Optional. Media query. Default is `null`. + * + * @return Stylesheet The current stylesheet class instance. + */ + public function add_rules( $selector, $style_rules = null, array $query = null ) { + $query_hash = 'all'; + + if ( $query ) { + $query_hash = $this->query_to_hash( $query ); + } + + if ( ! isset( $this->rules[ $query_hash ] ) ) { + $this->add_query_hash( $query_hash ); + } + + if ( null === $style_rules ) { + preg_match_all( '/([^\s].+?(?=\{))\{((?s:.)+?(?=}))}/', $selector, $parsed_rules ); + + foreach ( $parsed_rules[1] as $index => $selector ) { + $this->add_rules( $selector, $parsed_rules[2][ $index ], $query ); + } + + return $this; + } + + if ( ! isset( $this->rules[ $query_hash ][ $selector ] ) ) { + $this->rules[ $query_hash ][ $selector ] = []; + } + + if ( is_string( $style_rules ) ) { + $style_rules = array_filter( explode( ';', trim( $style_rules ) ) ); + + $ordered_rules = []; + + foreach ( $style_rules as $rule ) { + $property = explode( ':', $rule, 2 ); + + if ( count( $property ) < 2 ) { + return $this; + } + + $ordered_rules[ trim( $property[0] ) ] = trim( $property[1], ' ;' ); + } + + $style_rules = $ordered_rules; + } + + $this->rules[ $query_hash ][ $selector ] = array_merge( $this->rules[ $query_hash ][ $selector ], $style_rules ); + + return $this; + } + + /** + * Add raw CSS. + * + * Add a raw CSS rule. + * + * @since 1.0.8 + * @access public + * + * @param string $css The raw CSS. + * @param string $device Optional. The device. Default is empty. + * + * @return Stylesheet The current stylesheet class instance. + */ + public function add_raw_css( $css, $device = '' ) { + if ( ! isset( $this->raw[ $device ] ) ) { + $this->raw[ $device ] = []; + } + + $this->raw[ $device ][] = trim( $css ); + + return $this; + } + + /** + * Get CSS rules. + * + * Retrieve the CSS rules. + * + * @since 1.0.5 + * @access public + * + * @param string $device Optional. The device. Default is empty. + * @param string $selector Optional. CSS selector. Default is empty. + * @param string $property Optional. CSS property. Default is empty. + * + * @return null|array CSS rules, or `null` if not rules found. + */ + public function get_rules( $device = null, $selector = null, $property = null ) { + if ( ! $device ) { + return $this->rules; + } + + if ( $property ) { + return isset( $this->rules[ $device ][ $selector ][ $property ] ) ? $this->rules[ $device ][ $selector ][ $property ] : null; + } + + if ( $selector ) { + return isset( $this->rules[ $device ][ $selector ] ) ? $this->rules[ $device ][ $selector ] : null; + } + + return isset( $this->rules[ $device ] ) ? $this->rules[ $device ] : null; + } + + /** + * To string. + * + * This magic method responsible for parsing the rules into one CSS string. + * + * @since 1.0.0 + * @access public + * + * @return string CSS style. + */ + public function __toString() { + $style_text = ''; + + foreach ( $this->rules as $query_hash => $rule ) { + $device_text = self::parse_rules( $rule ); + + if ( 'all' !== $query_hash ) { + $device_text = $this->get_query_hash_style_format( $query_hash ) . '{' . $device_text . '}'; + } + + $style_text .= $device_text; + } + + foreach ( $this->raw as $device_name => $raw ) { + $raw = implode( "\n", $raw ); + + if ( $raw && isset( $this->devices[ $device_name ] ) ) { + $raw = '@media(max-width: ' . $this->devices[ $device_name ] . 'px){' . $raw . '}'; + } + + $style_text .= $raw; + } + + return $style_text; + } + + /** + * Query to hash. + * + * Turns the media query into a hashed string that represents the query + * endpoint in the rules list. + * + * @since 1.2.0 + * @access private + * + * @param array $query CSS media query. + * + * @return string Hashed string of the query. + */ + private function query_to_hash( array $query ) { + $hash = []; + + foreach ( $query as $endpoint => $value ) { + $hash[] = $endpoint . '_' . $value; + } + + return implode( '-', $hash ); + } + + /** + * Hash to query. + * + * Turns the hashed string to an array that contains the data of the query + * endpoint. + * + * @since 1.2.0 + * @access private + * + * @param string $hash Hashed string of the query. + * + * @return array Media query data. + */ + private function hash_to_query( $hash ) { + $query = []; + + $hash = array_filter( explode( '-', $hash ) ); + + foreach ( $hash as $single_query ) { + preg_match( '/(min|max)_(.*)/', $single_query, $query_parts ); + + $end_point = $query_parts[1]; + + $device_name = $query_parts[2]; + + $query[ $end_point ] = 'max' === $end_point ? $this->devices[ $device_name ] : Plugin::$instance->breakpoints->get_device_min_breakpoint( $device_name ); + } + + return $query; + } + + /** + * Add query hash. + * + * Register new endpoint query and sort the rules the way they should be + * displayed in the final stylesheet based on the device and the viewport + * width. + * + * @since 1.2.0 + * @access private + * + * @param string $query_hash Hashed string of the query. + */ + private function add_query_hash( $query_hash ) { + $this->rules[ $query_hash ] = []; + + uksort( + $this->rules, function( $a, $b ) { + if ( 'all' === $a ) { + return -1; + } + + if ( 'all' === $b ) { + return 1; + } + + $a_query = $this->hash_to_query( $a ); + + $b_query = $this->hash_to_query( $b ); + + if ( isset( $a_query['min'] ) xor isset( $b_query['min'] ) ) { + return 1; + } + + if ( isset( $a_query['min'] ) ) { + $range = $a_query['min'] - $b_query['min']; + + if ( $range ) { + return $range; + } + + $a_has_max = isset( $a_query['max'] ); + + if ( $a_has_max xor isset( $b_query['max'] ) ) { + return $a_has_max ? 1 : -1; + } + + if ( ! $a_has_max ) { + return 0; + } + } + + return $b_query['max'] - $a_query['max']; + } + ); + } + + /** + * Get query hash style format. + * + * Retrieve formated media query rule with the endpoint width settings. + * + * The method returns the CSS `@media` rule and supported viewport width in + * pixels. It can also handel multiple width endpoints. + * + * @since 1.2.0 + * @access private + * + * @param string $query_hash The hash of the query. + * + * @return string CSS media query. + */ + private function get_query_hash_style_format( $query_hash ) { + $query = $this->hash_to_query( $query_hash ); + + $style_format = []; + + foreach ( $query as $end_point => $value ) { + $style_format[] = '(' . $end_point . '-width:' . $value . 'px)'; + } + + return '@media' . implode( ' and ', $style_format ); + } +} diff --git a/wp-content/plugins/elementor/includes/template-library/classes/class-import-images.php b/wp-content/plugins/elementor/includes/template-library/classes/class-import-images.php new file mode 100644 index 0000000..4d84fe9 --- /dev/null +++ b/wp-content/plugins/elementor/includes/template-library/classes/class-import-images.php @@ -0,0 +1,229 @@ +_replace_image_ids[ $attachment['id'] ] ) ) { + return $this->_replace_image_ids[ $attachment['id'] ]; + } + + $post_id = $wpdb->get_var( + $wpdb->prepare( + 'SELECT `post_id` FROM `' . $wpdb->postmeta . '` + WHERE `meta_key` = \'_elementor_source_image_hash\' + AND `meta_value` = %s + ;', + $this->get_hash_image( $attachment['url'] ) + ) + ); + + if ( $post_id ) { + $new_attachment = [ + 'id' => $post_id, + 'url' => wp_get_attachment_url( $post_id ), + ]; + $this->_replace_image_ids[ $attachment['id'] ] = $new_attachment; + + return $new_attachment; + } + + return false; + } + + /** + * Import image. + * + * Import a single image from a remote server, upload the image WordPress + * uploads folder, create a new attachment in the database and updates the + * attachment metadata. + * + * @since 1.0.0 + * @since 3.2.0 New `$parent_post_id` option added + * @access public + * + * @param array $attachment The attachment. + * @param int $parent_post_id Optional + * + * @return false|array Imported image data, or false. + */ + public function import( $attachment, $parent_post_id = null ) { + if ( isset( $attachment['tmp_name'] ) ) { + // Used when called to import a directly-uploaded file. + $filename = $attachment['name']; + + $file_content = Utils::file_get_contents( $attachment['tmp_name'] ); + } else { + // Used when attachment information is passed to this method. + if ( ! empty( $attachment['id'] ) ) { + $saved_image = $this->get_saved_image( $attachment ); + + if ( $saved_image ) { + return $saved_image; + } + } + + // Extract the file name and extension from the url. + $filename = basename( $attachment['url'] ); + + $request = wp_safe_remote_get( $attachment['url'] ); + + // Make sure the request returns a valid result. + if ( is_wp_error( $request ) || ( ! empty( $request['response']['code'] ) && 200 !== (int) $request['response']['code'] ) ) { + return false; + } + + $file_content = wp_remote_retrieve_body( $request ); + } + + if ( empty( $file_content ) ) { + return false; + } + + $filetype = wp_check_filetype( $filename ); + + // If the file type is not recognized by WordPress, exit here to avoid creation of an empty attachment document. + if ( ! $filetype['ext'] ) { + return false; + } + + if ( 'svg' === $filetype['ext'] ) { + // In case that unfiltered-files upload is not enabled, SVG images should not be imported. + if ( ! Uploads_Manager::are_unfiltered_uploads_enabled() ) { + return false; + } + + $svg_handler = Plugin::$instance->uploads_manager->get_file_type_handlers( 'svg' ); + + $file_content = $svg_handler->sanitizer( $file_content ); + }; + + $upload = wp_upload_bits( + $filename, + null, + $file_content + ); + + $post = [ + 'post_title' => $filename, + 'guid' => $upload['url'], + ]; + + $info = wp_check_filetype( $upload['file'] ); + + if ( $info ) { + $post['post_mime_type'] = $info['type']; + } else { + // For now just return the origin attachment + return $attachment; + // return new \WP_Error( 'attachment_processing_error', esc_html__( 'Invalid file type.', 'elementor' ) ); + } + + $post_id = wp_insert_attachment( $post, $upload['file'], $parent_post_id ); + + apply_filters( 'elementor/template_library/import_images/new_attachment', $post_id ); + + // On REST requests. + if ( ! function_exists( 'wp_generate_attachment_metadata' ) ) { + require_once ABSPATH . '/wp-admin/includes/image.php'; + } + + if ( ! function_exists( 'wp_read_video_metadata' ) ) { + require_once ABSPATH . '/wp-admin/includes/media.php'; + } + + wp_update_attachment_metadata( + $post_id, + wp_generate_attachment_metadata( $post_id, $upload['file'] ) + ); + update_post_meta( $post_id, '_elementor_source_image_hash', $this->get_hash_image( $attachment['url'] ) ); + + $new_attachment = [ + 'id' => $post_id, + 'url' => $upload['url'], + ]; + + if ( ! empty( $attachment['id'] ) ) { + $this->_replace_image_ids[ $attachment['id'] ] = $new_attachment; + } + + return $new_attachment; + } + + /** + * Template library import images constructor. + * + * Initializing the images import class used by the template library through + * the WordPress Filesystem API. + * + * @since 1.0.0 + * @access public + */ + public function __construct() { + if ( ! function_exists( 'WP_Filesystem' ) ) { + require_once ABSPATH . 'wp-admin/includes/file.php'; + } + + WP_Filesystem(); + } +} diff --git a/wp-content/plugins/elementor/includes/template-library/data/controller.php b/wp-content/plugins/elementor/includes/template-library/data/controller.php new file mode 100644 index 0000000..e3b81e9 --- /dev/null +++ b/wp-content/plugins/elementor/includes/template-library/data/controller.php @@ -0,0 +1,29 @@ +register_endpoint( new Endpoints\Templates( $this ) ); + } + + protected function register_index_endpoint() { + // Bypass, currently does not required. + } + + public function get_permission_callback( $request ) { + return User::is_current_user_can_edit_post_type( Source_Local::CPT ); + } +} diff --git a/wp-content/plugins/elementor/includes/template-library/data/endpoints/templates.php b/wp-content/plugins/elementor/includes/template-library/data/endpoints/templates.php new file mode 100644 index 0000000..bbb181b --- /dev/null +++ b/wp-content/plugins/elementor/includes/template-library/data/endpoints/templates.php @@ -0,0 +1,91 @@ +documents->get_document_types( [ + 'show_in_library' => true, + ] ); + + $this->register_route( '', \WP_REST_Server::CREATABLE, [ + 'is_multi' => true, + 'title' => [ + 'required' => false, + 'type' => 'string', + 'description' => 'The title of the document', + ], + 'type' => [ + 'required' => true, + 'description' => 'The document type.', + 'type' => 'string', + 'enum' => array_keys( $document_types ), + ], + 'content' => [ + 'required' => false, + 'description' => 'Elementor data object', + 'type' => 'object', + ], + ] ); + } + + public function get_name() { + return 'templates'; + } + + public function get_format() { + return 'template-library/templates'; + } + + public function get_items( $request ) { + return $this->reorder_categories( Plugin::$instance->templates_manager->get_library_data( [ 'filter_sources' => [ $request->get_param( 'source' ) ] ] ) ); + } + + /** + * Move the '404 page' category to the end of the list + * + * @param array $library_data + * @return array + */ + private function reorder_categories( array $library_data ): array { + $not_found_category = '404 page'; + + $key = array_search( $not_found_category, $library_data['config']['block']['categories'] ); + if ( false === $key ) { + return $library_data; + } + + array_splice( $library_data['config']['block']['categories'], $key, 1 ); + $library_data['config']['block']['categories'][] = $not_found_category; + + return $library_data; + } + + public function create_items( $request ) { + /** @var Source_Local $source */ + $source = Plugin::$instance->templates_manager->get_source( 'local' ); + + $result = $source->save_item( [ + 'title' => $request->get_param( 'title' ), + 'type' => $request->get_param( 'type' ), + 'content' => $request->get_param( 'content' ), + 'page_settings' => $request->get_param( 'page_settings' ), + ] ); + + if ( is_wp_error( $result ) ) { + return $result; + } + + return $source->get_item( $result ); + } +} diff --git a/wp-content/plugins/elementor/includes/template-library/forms/new-template-form.php b/wp-content/plugins/elementor/includes/template-library/forms/new-template-form.php new file mode 100644 index 0000000..502c7ea --- /dev/null +++ b/wp-content/plugins/elementor/includes/template-library/forms/new-template-form.php @@ -0,0 +1,52 @@ +get_controls() as $control ) { + switch ( $control['type'] ) { + case Controls_Manager::SELECT: + $this->render_select( $control ); + break; + default: + throw new \Exception( "'{$control['type']}' control type is not supported." ); + } + } + } + + private function render_select( $control_settings ) { + $control_id = "elementor-new-template__form__{$control_settings['name']}"; + $wrapper_class = isset( $control_settings['wrapper_class'] ) ? $control_settings['wrapper_class'] : ''; + ?> +
    + +
    + +
    +
    + data_manager_v2->register_controller( new Controller() ); + + $this->register_default_sources(); + + $this->add_actions(); + } + + /** + * @since 2.3.0 + * @access public + */ + public function add_actions() { + add_action( 'elementor/ajax/register_actions', [ $this, 'register_ajax_actions' ] ); + add_action( 'wp_ajax_elementor_library_direct_actions', [ $this, 'handle_direct_actions' ] ); + } + + /** + * Get `Import_Images` instance. + * + * Retrieve the instance of the `Import_Images` class. + * + * @since 1.0.0 + * @access public + * + * @return Import_Images Imported images instance. + */ + public function get_import_images_instance() { + if ( null === $this->_import_images ) { + $this->_import_images = new Import_Images(); + } + + return $this->_import_images; + } + + /** + * Register template source. + * + * Used to register new template sources displayed in the template library. + * + * @since 1.0.0 + * @access public + * + * @param string $source_class The name of source class. + * @param array $args Optional. Class arguments. Default is an + * empty array. + * + * @return \WP_Error|true True if the source was registered, `WP_Error` + * otherwise. + */ + public function register_source( $source_class, $args = [] ) { + if ( ! class_exists( $source_class ) ) { + return new \WP_Error( 'source_class_name_not_exists' ); + } + + $source_instance = new $source_class( $args ); + + if ( ! $source_instance instanceof Source_Base ) { + return new \WP_Error( 'wrong_instance_source' ); + } + + $source_id = $source_instance->get_id(); + + if ( isset( $this->_registered_sources[ $source_id ] ) ) { + return new \WP_Error( 'source_exists' ); + } + + $this->_registered_sources[ $source_id ] = $source_instance; + + return true; + } + + /** + * Unregister template source. + * + * Remove an existing template sources from the list of registered template + * sources. + * + * @since 1.0.0 + * @deprecated 2.7.0 + * @access public + * + * @param string $id The source ID. + * + * @return bool Whether the source was unregistered. + */ + public function unregister_source( $id ) { + return true; + } + + /** + * Get registered template sources. + * + * Retrieve registered template sources. + * + * @since 1.0.0 + * @access public + * + * @return Source_Base[] Registered template sources. + */ + public function get_registered_sources() { + return $this->_registered_sources; + } + + /** + * Get template source. + * + * Retrieve single template sources for a given template ID. + * + * @since 1.0.0 + * @access public + * + * @param string $id The source ID. + * + * @return false|Source_Base Template sources if one exist, False otherwise. + */ + public function get_source( $id ) { + $sources = $this->get_registered_sources(); + + if ( ! isset( $sources[ $id ] ) ) { + return false; + } + + return $sources[ $id ]; + } + + /** + * Get templates. + * + * Retrieve all the templates from all the registered sources. + * + * @param array $filter_sources + * @param bool $force_update + * @return array + */ + public function get_templates( array $filter_sources = [], bool $force_update = false ): array { + $templates = []; + + foreach ( $this->get_registered_sources() as $source ) { + if ( ! empty( $filter_sources ) && ! in_array( $source->get_id(), $filter_sources, true ) ) { + continue; + } + + $templates = array_merge( $templates, $source->get_items( [ 'force_update' => $force_update ] ) ); + } + + return $templates; + } + + /** + * Get library data. + * + * Retrieve the library data. + * + * @since 1.9.0 + * @access public + * + * @param array $args Library arguments. + * + * @return array Library data. + */ + public function get_library_data( array $args ) { + $library_data = Api::get_library_data( ! empty( $args['sync'] ) ); + + if ( empty( $library_data ) ) { + return $library_data; + } + + // Ensure all document are registered. + Plugin::$instance->documents->get_document_types(); + + $filter_sources = ! empty( $args['filter_sources'] ) ? $args['filter_sources'] : []; + $force_update = ! empty( $args['sync'] ); + + return [ + 'templates' => $this->get_templates( $filter_sources, $force_update ), + 'config' => $library_data['types_data'], + ]; + } + + /** + * Save template. + * + * Save new or update existing template on the database. + * + * @since 1.0.0 + * @access public + * + * @param array $args Template arguments. + * + * @return \WP_Error|int The ID of the saved/updated template. + */ + public function save_template( array $args ) { + $validate_args = $this->ensure_args( [ 'post_id', 'source', 'content', 'type' ], $args ); + + if ( is_wp_error( $validate_args ) ) { + return $validate_args; + } + + $source = $this->get_source( $args['source'] ); + + if ( ! $source ) { + return new \WP_Error( 'template_error', 'Template source not found.' ); + } + + $args['content'] = json_decode( $args['content'], true ); + + $page = SettingsManager::get_settings_managers( 'page' )->get_model( $args['post_id'] ); + + $args['page_settings'] = $page->get_data( 'settings' ); + + $template_id = $source->save_item( $args ); + + if ( is_wp_error( $template_id ) ) { + return $template_id; + } + + return $source->get_item( $template_id ); + } + + /** + * Update template. + * + * Update template on the database. + * + * @since 1.0.0 + * @access public + * + * @param array $template_data New template data. + * + * @return \WP_Error|Source_Base Template sources instance if the templates + * was updated, `WP_Error` otherwise. + */ + public function update_template( array $template_data ) { + $validate_args = $this->ensure_args( [ 'source', 'content', 'type' ], $template_data ); + + if ( is_wp_error( $validate_args ) ) { + return $validate_args; + } + + $source = $this->get_source( $template_data['source'] ); + + if ( ! $source ) { + return new \WP_Error( 'template_error', 'Template source not found.' ); + } + + $template_data['content'] = json_decode( $template_data['content'], true ); + + $update = $source->update_item( $template_data ); + + if ( is_wp_error( $update ) ) { + return $update; + } + + return $source->get_item( $template_data['id'] ); + } + + /** + * Update templates. + * + * Update template on the database. + * + * @since 1.0.0 + * @access public + * + * @param array $args Template arguments. + * + * @return \WP_Error|true True if templates updated, `WP_Error` otherwise. + */ + public function update_templates( array $args ) { + foreach ( $args['templates'] as $template_data ) { + $result = $this->update_template( $template_data ); + + if ( is_wp_error( $result ) ) { + return $result; + } + } + + return true; + } + + /** + * Get template data. + * + * Retrieve the template data. + * + * @since 1.5.0 + * @access public + * + * @param array $args Template arguments. + * + * @return \WP_Error|bool|array ?? + */ + public function get_template_data( array $args ) { + $validate_args = $this->ensure_args( [ 'source', 'template_id' ], $args ); + + if ( is_wp_error( $validate_args ) ) { + return $validate_args; + } + + if ( isset( $args['edit_mode'] ) ) { + Plugin::$instance->editor->set_edit_mode( $args['edit_mode'] ); + } + + $source = $this->get_source( $args['source'] ); + + if ( ! $source ) { + return new \WP_Error( 'template_error', 'Template source not found.' ); + } + + do_action( 'elementor/template-library/before_get_source_data', $args, $source ); + + $data = $source->get_data( $args ); + + do_action( 'elementor/template-library/after_get_source_data', $args, $source ); + + return $data; + } + + /** + * Delete template. + * + * Delete template from the database. + * + * @since 1.0.0 + * @access public + * + * @param array $args Template arguments. + * + * @return \WP_Post|\WP_Error|false|null Post data on success, false or null + * or 'WP_Error' on failure. + */ + public function delete_template( array $args ) { + $validate_args = $this->ensure_args( [ 'source', 'template_id' ], $args ); + + if ( is_wp_error( $validate_args ) ) { + return $validate_args; + } + + $source = $this->get_source( $args['source'] ); + + if ( ! $source ) { + return new \WP_Error( 'template_error', 'Template source not found.' ); + } + + return $source->delete_template( $args['template_id'] ); + } + + /** + * Export template. + * + * Export template to a file after ensuring it is a valid Elementor template + * and checking user permissions for private posts. + * + * @since 1.0.0 + * @access public + * + * @param array $args Template arguments. + * + * @return mixed Whether the export succeeded or failed. + */ + public function export_template( array $args ) { + $validate_args = $this->ensure_args( [ 'source', 'template_id' ], $args ); + + if ( is_wp_error( $validate_args ) ) { + return $validate_args; + } + + $post_id = intval( $args['template_id'] ); + $post_status = get_post_status( $post_id ); + + if ( get_post_type( $post_id ) !== Source_Local::CPT ) { + return new \WP_Error( 'template_error', esc_html__( 'Invalid template type or template does not exist', 'elementor' ) ); + } + + if ( 'private' === $post_status && ! current_user_can( 'read_private_posts', $post_id ) ) { + return new \WP_Error( 'template_error', esc_html__( 'You do not have permission to access this template', 'elementor' ) ); + } + + if ( 'publish' !== $post_status && ! current_user_can( 'edit_post', $post_id ) ) { + return new \WP_Error( 'template_error', esc_html__( 'You do not have permission to export this template', 'elementor' ) ); + } + + $source = $this->get_source( $args['source'] ); + + if ( ! $source ) { + return new \WP_Error( 'template_error', 'Template source not found' ); + } + + return $source->export_template( $args['template_id'] ); + } + + /** + * @since 2.3.0 + * @access public + */ + public function direct_import_template() { + /** @var Source_Local $source */ + $source = $this->get_source( 'local' ); + $file = Utils::get_super_global_value( $_FILES, 'file' ); + return $source->import_template( $file['name'], $file['tmp_name'] ); + } + + /** + * Import template. + * + * Import template from a file. + * + * @since 1.0.0 + * @access public + * + * @param array $data + * + * @return mixed Whether the export succeeded or failed. + */ + public function import_template( array $data ) { + // If the template is a JSON file, allow uploading it. + add_filter( 'elementor/files/allow-file-type/json', [ $this, 'enable_json_template_upload' ] ); + add_filter( 'elementor/files/allow_unfiltered_upload', [ $this, 'enable_json_template_upload' ] ); + + // Imported templates can be either JSON files, or Zip files containing multiple JSON files + $upload_result = Plugin::$instance->uploads_manager->handle_elementor_upload( $data, [ 'zip', 'json' ] ); + + remove_filter( 'elementor/files/allow-file-type/json', [ $this, 'enable_json_template_upload' ] ); + remove_filter( 'elementor/files/allow_unfiltered_upload', [ $this, 'enable_json_template_upload' ] ); + + if ( is_wp_error( $upload_result ) ) { + Plugin::$instance->uploads_manager->remove_file_or_dir( dirname( $upload_result['tmp_name'] ) ); + + return $upload_result; + } + + /** @var Source_Local $source_local */ + $source_local = $this->get_source( 'local' ); + + $import_result = $source_local->import_template( $upload_result['name'], $upload_result['tmp_name'] ); + + // Remove the temporary directory generated for the stream-uploaded file. + Plugin::$instance->uploads_manager->remove_file_or_dir( dirname( $upload_result['tmp_name'] ) ); + + return $import_result; + } + + /** + * Enable JSON Template Upload + * + * Runs on the 'elementor/files/allow-file-type/json' Uploads Manager filter. + * + * @since 3.5.0 + * @access public + * + * return bool + */ + public function enable_json_template_upload() { + return true; + } + + /** + * Mark template as favorite. + * + * Add the template to the user favorite templates. + * + * @since 1.9.0 + * @access public + * + * @param array $args Template arguments. + * + * @return mixed Whether the template marked as favorite. + */ + public function mark_template_as_favorite( $args ) { + $validate_args = $this->ensure_args( [ 'source', 'template_id', 'favorite' ], $args ); + + if ( is_wp_error( $validate_args ) ) { + return $validate_args; + } + + $source = $this->get_source( $args['source'] ); + + return $source->mark_as_favorite( $args['template_id'], filter_var( $args['favorite'], FILTER_VALIDATE_BOOLEAN ) ); + } + + public function import_from_json( array $args ) { + $validate_args = $this->ensure_args( [ 'editor_post_id', 'elements' ], $args ); + + if ( is_wp_error( $validate_args ) ) { + return $validate_args; + } + + $elements = json_decode( $args['elements'], true ); + + $document = Plugin::$instance->documents->get( $args['editor_post_id'] ); + if ( ! $document ) { + return new \WP_Error( 'template_error', 'Document not found.' ); + } + + $import_data = $document->get_import_data( [ 'content' => $elements ] ); + + return $import_data['content']; + } + + /** + * Register default template sources. + * + * Register the 'local' and 'remote' template sources that Elementor use by + * default. + * + * @since 1.0.0 + * @access private + */ + private function register_default_sources() { + $sources = [ + 'local', + 'remote', + ]; + + foreach ( $sources as $source_filename ) { + $class_name = ucwords( $source_filename ); + $class_name = str_replace( '-', '_', $class_name ); + + $this->register_source( __NAMESPACE__ . '\Source_' . $class_name ); + } + } + + /** + * Handle ajax request. + * + * Fire authenticated ajax actions for any given ajax request. + * + * @since 1.0.0 + * @access private + * + * @param string $ajax_request Ajax request. + * + * @param array $data + * + * @return mixed + * @throws \Exception + */ + private function handle_ajax_request( $ajax_request, array $data ) { + if ( ! User::is_current_user_can_edit_post_type( Source_Local::CPT ) ) { + throw new \Exception( 'Access denied.' ); + } + + if ( ! empty( $data['editor_post_id'] ) ) { + $editor_post_id = absint( $data['editor_post_id'] ); + + if ( ! get_post( $editor_post_id ) ) { + throw new \Exception( 'Post not found.' ); + } + + Plugin::$instance->db->switch_to_post( $editor_post_id ); + } + + $result = call_user_func( [ $this, $ajax_request ], $data ); + + if ( is_wp_error( $result ) ) { + throw new \Exception( $result->get_error_message() ); + } + + return $result; + } + + /** + * Init ajax calls. + * + * Initialize template library ajax calls for allowed ajax requests. + * + * @since 2.3.0 + * @access public + * + * @param Ajax $ajax + */ + public function register_ajax_actions( Ajax $ajax ) { + $library_ajax_requests = [ + 'get_library_data', + 'get_template_data', + 'save_template', + 'update_templates', + 'delete_template', + 'import_template', + 'mark_template_as_favorite', + 'import_from_json', + ]; + + foreach ( $library_ajax_requests as $ajax_request ) { + $ajax->register_ajax_action( $ajax_request, function( $data ) use ( $ajax_request ) { + return $this->handle_ajax_request( $ajax_request, $data ); + } ); + } + } + + /** + * @since 2.3.0 + * @access public + */ + public function handle_direct_actions() { + if ( ! User::is_current_user_can_edit_post_type( Source_Local::CPT ) ) { + return; + } + + /** @var Ajax $ajax */ + $ajax = Plugin::$instance->common->get_component( 'ajax' ); + + if ( ! $ajax->verify_request_nonce() ) { + $this->handle_direct_action_error( 'Access Denied' ); + } + + $action = Utils::get_super_global_value( $_REQUEST, 'library_action' ); // phpcs:ignore -- Nonce already verified. + + $whitelist_methods = [ + 'export_template', + 'direct_import_template', + ]; + + if ( in_array( $action, $whitelist_methods, true ) ) { + $result = $this->$action( $_REQUEST ); // phpcs:ignore -- Nonce already verified. + } else { + $result = new \WP_Error( 'method_not_exists', 'Method Not exists' ); + } + + if ( is_wp_error( $result ) ) { + /** @var \WP_Error $result */ + $this->handle_direct_action_error( $result->get_error_message() . '.' ); + } + + $callback = "on_{$action}_success"; + + if ( method_exists( $this, $callback ) ) { + $this->$callback( $result ); + } + + die; + } + + /** + * On successful template import. + * + * Redirect the user to the template library after template import was + * successful finished. + * + * @since 2.3.0 + * @access private + */ + private function on_direct_import_template_success() { + wp_safe_redirect( admin_url( Source_Local::ADMIN_MENU_SLUG ) ); + } + + /** + * @since 2.3.0 + * @access private + */ + private function handle_direct_action_error( $message ) { + _default_wp_die_handler( $message, 'Elementor Library' ); + } + + /** + * Ensure arguments exist. + * + * Checks whether the required arguments exist in the specified arguments. + * + * @since 1.0.0 + * @access private + * + * @param array $required_args Required arguments to check whether they + * exist. + * @param array $specified_args The list of all the specified arguments to + * check against. + * + * @return \WP_Error|true True on success, 'WP_Error' otherwise. + */ + private function ensure_args( array $required_args, array $specified_args ) { + $not_specified_args = array_diff( $required_args, array_keys( $specified_args ) ); + + if ( $not_specified_args ) { + return new \WP_Error( 'arguments_not_specified', sprintf( 'The required argument(s) "%s" not specified.', implode( ', ', $not_specified_args ) ) ); + } + + return true; + } +} diff --git a/wp-content/plugins/elementor/includes/template-library/sources/admin-menu-items/add-new-template-menu-item.php b/wp-content/plugins/elementor/includes/template-library/sources/admin-menu-items/add-new-template-menu-item.php new file mode 100644 index 0000000..1711f31 --- /dev/null +++ b/wp-content/plugins/elementor/includes/template-library/sources/admin-menu-items/add-new-template-menu-item.php @@ -0,0 +1,29 @@ +register_data(); + } + + /** + * Mark template as favorite. + * + * Update user meta containing his favorite templates. For a given template + * ID, add the template to the favorite templates or remove it from the + * favorites, based on the `favorite` parameter. + * + * @since 1.9.0 + * @access public + * + * @param int $template_id The template ID. + * @param bool $favorite Optional. Whether the template is marked as + * favorite, or not. Default is true. + * + * @return int|bool User meta ID if the key didn't exist, true on successful + * update, false on failure. + */ + public function mark_as_favorite( $template_id, $favorite = true ) { + $favorites_templates = $this->get_user_meta( 'favorites' ); + + if ( ! $favorites_templates ) { + $favorites_templates = []; + } + + if ( $favorite ) { + $favorites_templates[ $template_id ] = $favorite; + } elseif ( isset( $favorites_templates[ $template_id ] ) ) { + unset( $favorites_templates[ $template_id ] ); + } + + return $this->update_user_meta( 'favorites', $favorites_templates ); + } + + /** + * Get current user meta. + * + * Retrieve Elementor meta data for the current user. + * + * @since 1.9.0 + * @access public + * + * @param string $item Optional. User meta key. Default is null. + * + * @return null|array An array of user meta data, or null otherwise. + */ + public function get_user_meta( $item = null ) { + if ( null === $this->user_meta ) { + $this->user_meta = get_user_meta( get_current_user_id(), $this->get_user_meta_prefix(), true ); + } + + if ( ! $this->user_meta ) { + $this->user_meta = []; + } + + if ( $item ) { + if ( isset( $this->user_meta[ $item ] ) ) { + return $this->user_meta[ $item ]; + } + + return null; + } + + return $this->user_meta; + } + + /** + * Update current user meta. + * + * Update user meta data based on meta key an value. + * + * @since 1.9.0 + * @access public + * + * @param string $key Optional. User meta key. + * @param mixed $value Optional. User meta value. + * + * @return int|bool User meta ID if the key didn't exist, true on successful + * update, false on failure. + */ + public function update_user_meta( $key, $value ) { + $meta = $this->get_user_meta(); + + $meta[ $key ] = $value; + + $this->user_meta = $meta; + + return update_user_meta( get_current_user_id(), $this->get_user_meta_prefix(), $meta ); + } + + /** + * Replace elements IDs. + * + * For any given Elementor content/data, replace the IDs with new randomly + * generated IDs. + * + * @since 1.0.0 + * @access protected + * + * @param array $content Any type of Elementor data. + * + * @return mixed Iterated data. + */ + protected function replace_elements_ids( $content ) { + return Plugin::$instance->db->iterate_data( $content, function( $element ) { + $element['id'] = Utils::generate_random_string(); + + return $element; + } ); + } + + /** + * Get Elementor library user meta prefix. + * + * Retrieve user meta prefix used to save Elementor data. + * + * @since 1.9.0 + * @access protected + * + * @return string User meta prefix. + */ + protected function get_user_meta_prefix() { + return 'elementor_library_' . $this->get_id(); + } + + /** + * Process content for export/import. + * + * Process the content and all the inner elements, and prepare all the + * elements data for export/import. + * + * @since 1.5.0 + * @access protected + * + * @param array $content A set of elements. + * @param string $method Accepts either `on_export` to export data or + * `on_import` to import data. + * + * @return mixed Processed content data. + */ + protected function process_export_import_content( $content, $method ) { + return Plugin::$instance->db->iterate_data( + $content, function( $element_data ) use ( $method ) { + $element = Plugin::$instance->elements_manager->create_element_instance( $element_data ); + + // If the widget/element isn't exist, like a plugin that creates a widget but deactivated + if ( ! $element ) { + return null; + } + + return $this->process_element_export_import_content( $element, $method ); + } + ); + } + + /** + * Process single element content for export/import. + * + * Process any given element and prepare the element data for export/import. + * + * @since 1.5.0 + * @access protected + * + * @param Controls_Stack $element + * @param string $method + * + * @return array Processed element data. + */ + protected function process_element_export_import_content( Controls_Stack $element, $method ) { + $element_data = $element->get_data(); + + if ( method_exists( $element, $method ) ) { + // TODO: Use the internal element data without parameters. + $element_data = $element->{$method}( $element_data ); + } + + foreach ( $element->get_controls() as $control ) { + $control_class = Plugin::$instance->controls_manager->get_control( $control['type'] ); + + // If the control isn't exist, like a plugin that creates the control but deactivated. + if ( ! $control_class ) { + return $element_data; + } + + if ( method_exists( $control_class, $method ) ) { + $element_data['settings'][ $control['name'] ] = $control_class->{$method}( $element->get_settings( $control['name'] ), $control ); + } + + // On Export, check if the control has an argument 'export' => false. + if ( 'on_export' === $method && isset( $control['export'] ) && false === $control['export'] ) { + unset( $element_data['settings'][ $control['name'] ] ); + } + } + + return $element_data; + } +} diff --git a/wp-content/plugins/elementor/includes/template-library/sources/local.php b/wp-content/plugins/elementor/includes/template-library/sources/local.php new file mode 100644 index 0000000..9861788 --- /dev/null +++ b/wp-content/plugins/elementor/includes/template-library/sources/local.php @@ -0,0 +1,1765 @@ +base && self::CPT === $current_screen->post_type; + } + + /** + * Add template type. + * + * Register new template type to the list of supported local template types. + * + * @since 1.0.3 + * @access public + * @static + * + * @param string $type Template type. + */ + public static function add_template_type( $type ) { + self::$template_types[ $type ] = $type; + } + + /** + * Remove template type. + * + * Remove existing template type from the list of supported local template + * types. + * + * @since 1.8.0 + * @access public + * @static + * + * @param string $type Template type. + */ + public static function remove_template_type( $type ) { + if ( isset( self::$template_types[ $type ] ) ) { + unset( self::$template_types[ $type ] ); + } + } + + public static function get_admin_url( $relative = false ) { + $base_url = self::ADMIN_MENU_SLUG; + if ( ! $relative ) { + $base_url = admin_url( $base_url ); + } + + return add_query_arg( 'tabs_group', 'library', $base_url ); + } + + /** + * Get local template ID. + * + * Retrieve the local template ID. + * + * @since 1.0.0 + * @access public + * + * @return string The local template ID. + */ + public function get_id() { + return 'local'; + } + + /** + * Get local template title. + * + * Retrieve the local template title. + * + * @since 1.0.0 + * @access public + * + * @return string The local template title. + */ + public function get_title() { + return esc_html__( 'Local', 'elementor' ); + } + + /** + * Register local template data. + * + * Used to register custom template data like a post type, a taxonomy or any + * other data. + * + * The local template class registers a new `elementor_library` post type + * and an `elementor_library_type` taxonomy. They are used to store data for + * local templates saved by the user on his site. + * + * @since 1.0.0 + * @access public + */ + public function register_data() { + $admin_menu_rearrangement_active = Plugin::$instance->experiments->is_feature_active( 'admin_menu_rearrangement' ); + + if ( $admin_menu_rearrangement_active ) { + $name = esc_html_x( 'Templates', 'Template Library', 'elementor' ); + } else { + $name = esc_html_x( 'My Templates', 'Template Library', 'elementor' ); + } + + $labels = [ + 'name' => $name, + 'singular_name' => esc_html_x( 'Template', 'Template Library', 'elementor' ), + 'add_new' => esc_html__( 'Add New Template', 'elementor' ), + 'add_new_item' => esc_html__( 'Add New Template', 'elementor' ), + 'edit_item' => esc_html__( 'Edit Template', 'elementor' ), + 'new_item' => esc_html__( 'New Template', 'elementor' ), + 'all_items' => esc_html__( 'All Templates', 'elementor' ), + 'view_item' => esc_html__( 'View Template', 'elementor' ), + 'search_items' => esc_html__( 'Search Template', 'elementor' ), + 'not_found' => esc_html__( 'No Templates found', 'elementor' ), + 'not_found_in_trash' => esc_html__( 'No Templates found in Trash', 'elementor' ), + 'parent_item_colon' => esc_html__( 'Parent Template:', 'elementor' ), + 'menu_name' => esc_html_x( 'Templates', 'Template Library', 'elementor' ), + ]; + + $args = [ + 'labels' => $labels, + 'public' => true, + 'rewrite' => false, + 'menu_icon' => 'dashicons-admin-page', + 'show_ui' => true, + 'show_in_menu' => ! $admin_menu_rearrangement_active, + 'show_in_nav_menus' => false, + 'exclude_from_search' => true, + 'capability_type' => 'post', + 'hierarchical' => false, + 'supports' => [ 'title', 'thumbnail', 'author', 'elementor' ], + ]; + + /** + * Register template library post type args. + * + * Filters the post type arguments when registering elementor template library post type. + * + * @since 1.0.0 + * + * @param array $args Arguments for registering a post type. + */ + $args = apply_filters( 'elementor/template_library/sources/local/register_post_type_args', $args ); + + $this->post_type_object = register_post_type( self::CPT, $args ); + + $args = [ + 'hierarchical' => false, + 'show_ui' => false, + 'show_in_nav_menus' => false, + 'show_admin_column' => true, + 'query_var' => is_admin(), + 'rewrite' => false, + 'public' => false, + 'label' => esc_html_x( 'Type', 'Template Library', 'elementor' ), + ]; + + /** + * Register template library taxonomy args. + * + * Filters the taxonomy arguments when registering elementor template library taxonomy. + * + * @since 1.0.0 + * + * @param array $args Arguments for registering a taxonomy. + */ + $args = apply_filters( 'elementor/template_library/sources/local/register_taxonomy_args', $args ); + + $cpts_to_associate = [ self::CPT ]; + + /** + * Custom post types to associate. + * + * Filters the list of custom post types when registering elementor template library taxonomy. + * + * @since 1.0.0 + * + * @param array $cpts_to_associate Custom post types. Default is `elementor_library` post type. + */ + $cpts_to_associate = apply_filters( 'elementor/template_library/sources/local/register_taxonomy_cpts', $cpts_to_associate ); + + register_taxonomy( self::TAXONOMY_TYPE_SLUG, $cpts_to_associate, $args ); + + /** + * Categories + */ + $args = [ + 'hierarchical' => true, + 'show_ui' => true, + 'show_in_nav_menus' => false, + 'show_admin_column' => true, + 'query_var' => is_admin(), + 'rewrite' => false, + 'public' => false, + 'labels' => [ + 'name' => esc_html_x( 'Categories', 'Template Library', 'elementor' ), + 'singular_name' => esc_html_x( 'Category', 'Template Library', 'elementor' ), + 'all_items' => esc_html_x( 'All Categories', 'Template Library', 'elementor' ), + ], + ]; + + /** + * Register template library category args. + * + * Filters the category arguments when registering elementor template library category. + * + * @since 2.4.0 + * + * @param array $args Arguments for registering a category. + */ + $args = apply_filters( 'elementor/template_library/sources/local/register_category_args', $args ); + + register_taxonomy( self::TAXONOMY_CATEGORY_SLUG, self::CPT, $args ); + } + + /** + * Remove Add New item from admin menu. + * + * Fired by `admin_menu` action. + * + * @since 2.4.0 + * @access public + */ + private function admin_menu_reorder( Admin_Menu_Manager $admin_menu ) { + global $submenu; + + if ( ! isset( $submenu[ static::ADMIN_MENU_SLUG ] ) ) { + return; + } + + remove_submenu_page( static::ADMIN_MENU_SLUG, static::ADMIN_MENU_SLUG ); + + $add_new_slug = 'post-new.php?post_type=' . static::CPT; + $category_slug = 'edit-tags.php?taxonomy=' . static::TAXONOMY_CATEGORY_SLUG . '&post_type=' . static::CPT; + + $library_submenu = new Collection( $submenu[ static::ADMIN_MENU_SLUG ] ); + + $add_new_item = $library_submenu->find( function ( $item ) use ( $add_new_slug ) { + return $add_new_slug === $item[2]; + } ); + + $categories_item = $library_submenu->find( function ( $item ) use ( $category_slug ) { + return $category_slug === $item[2]; + } ); + + if ( $add_new_item ) { + remove_submenu_page( static::ADMIN_MENU_SLUG, $add_new_slug ); + + $admin_menu->register( admin_url( static::ADMIN_MENU_SLUG . '#add_new' ), new Add_New_Template_Menu_Item() ); + } + + if ( $categories_item ) { + remove_submenu_page( static::ADMIN_MENU_SLUG, $category_slug ); + + $admin_menu->register( $category_slug, new Templates_Categories_Menu_Item() ); + } + } + + /** + * Add a `current` CSS class to the `Saved Templates` submenu page when it's active. + * It should work by default, but since we interfere with WordPress' builtin CPT menus it doesn't work properly. + * + * @return void + */ + private function admin_menu_set_current() { + global $submenu; + + if ( $this->is_current_screen() ) { + $library_submenu = &$submenu[ static::ADMIN_MENU_SLUG ]; + $library_title = $this->get_library_title(); + + foreach ( $library_submenu as &$item ) { + if ( $library_title === $item[0] ) { + if ( ! isset( $item[4] ) ) { + $item[4] = ''; + } + $item[4] .= ' current'; + } + } + } + } + + private function register_admin_menu( Admin_Menu_Manager $admin_menu ) { + $admin_menu->register( static::get_admin_url( true ), new Saved_Templates_Menu_Item() ); + } + + public function admin_title( $admin_title, $title ) { + $library_title = $this->get_library_title(); + + if ( $library_title ) { + $admin_title = str_replace( $title, $library_title, $admin_title ); + } + + return $admin_title; + } + + public function replace_admin_heading() { + $library_title = $this->get_library_title(); + + if ( $library_title ) { + global $post_type_object; + + $post_type_object->labels->name = $library_title; + } + } + + /** + * Get local templates. + * + * Retrieve local templates saved by the user on his site. + * + * @since 1.0.0 + * @access public + * + * @param array $args Optional. Filter templates based on a set of + * arguments. Default is an empty array. + * + * @return array Local templates. + */ + public function get_items( $args = [] ) { + $template_types = array_values( self::$template_types ); + + if ( ! empty( $args['type'] ) ) { + $template_types = $args['type']; + unset( $args['type'] ); + } + + $defaults = [ + 'post_type' => self::CPT, + 'post_status' => 'publish', + 'posts_per_page' => -1, + 'orderby' => 'title', + 'order' => 'ASC', + 'meta_query' => [ + [ + 'key' => Document::TYPE_META_KEY, + 'value' => $template_types, + ], + ], + ]; + + $query_args = wp_parse_args( $args, $defaults ); + + $templates_query = new \WP_Query( $query_args ); + + $templates = []; + + if ( $templates_query->have_posts() ) { + foreach ( $templates_query->get_posts() as $post ) { + $templates[] = $this->get_item( $post->ID ); + } + } + + return $templates; + } + + /** + * Save local template. + * + * Save new or update existing template on the database. + * + * @since 1.0.0 + * @access public + * + * @param array $template_data Local template data. + * + * @return \WP_Error|int The ID of the saved/updated template, `WP_Error` otherwise. + */ + public function save_item( $template_data ) { + if ( ! current_user_can( $this->post_type_object->cap->edit_posts ) ) { + return new \WP_Error( 'save_error', esc_html__( 'Access denied.', 'elementor' ) ); + } + + $defaults = [ + 'title' => esc_html__( '(no title)', 'elementor' ), + 'page_settings' => [], + ]; + + $template_data = wp_parse_args( $template_data, $defaults ); + $template_data['status'] = current_user_can( 'publish_posts' ) ? 'publish' : 'pending'; + + // BC: Allow importing any template type when using CLI + // to support users that rely on this mechanism. + $should_check_template_type = ! $this->is_wp_cli(); + + if ( + $should_check_template_type && + ! $this->is_valid_template_type( $template_data['type'] ) + ) { + return new \WP_Error( 'invalid_template_type', esc_html__( 'Invalid template type.', 'elementor' ) ); + } + + $document = Plugin::$instance->documents->create( + $template_data['type'], + [ + 'post_title' => $template_data['title'], + 'post_status' => $template_data['status'], + ] + ); + + if ( is_wp_error( $document ) ) { + /** + * @var \WP_Error $document + */ + return $document; + } + + if ( ! empty( $template_data['content'] ) ) { + $template_data['content'] = $this->replace_elements_ids( $template_data['content'] ); + } + + $document->save( [ + 'elements' => $template_data['content'], + 'settings' => $template_data['page_settings'], + ] ); + + $template_id = $document->get_main_id(); + + /** + * After template library save. + * + * Fires after Elementor template library was saved. + * + * @since 1.0.1 + * + * @param int $template_id The ID of the template. + * @param array $template_data The template data. + */ + do_action( 'elementor/template-library/after_save_template', $template_id, $template_data ); + + /** + * After template library update. + * + * Fires after Elementor template library was updated. + * + * @since 1.0.1 + * + * @param int $template_id The ID of the template. + * @param array $template_data The template data. + */ + do_action( 'elementor/template-library/after_update_template', $template_id, $template_data ); + + return $template_id; + } + + protected function is_valid_template_type( $type ) { + $document_class = Plugin::$instance->documents->get_document_type( $type, false ); + + if ( ! $document_class ) { + return false; + } + + $cpt = $document_class::get_property( 'cpt' ); + + if ( ! $cpt || ! is_array( $cpt ) || 1 !== count( $cpt ) ) { + return false; + } + + return in_array( static::CPT, $cpt, true ); + } + + // For testing purposes only, in order to be able to mock the `WP_CLI` constant. + protected function is_wp_cli() { + return Utils::is_wp_cli(); + } + + /** + * Update local template. + * + * Update template on the database. + * + * @since 1.0.0 + * @access public + * + * @param array $new_data New template data. + * + * @return \WP_Error|true True if template updated, `WP_Error` otherwise. + */ + public function update_item( $new_data ) { + if ( ! current_user_can( $this->post_type_object->cap->edit_post, $new_data['id'] ) ) { + return new \WP_Error( 'save_error', esc_html__( 'Access denied.', 'elementor' ) ); + } + + $document = Plugin::$instance->documents->get( $new_data['id'] ); + + if ( ! $document ) { + return new \WP_Error( 'save_error', esc_html__( 'Template not exist.', 'elementor' ) ); + } + + $document->save( [ + 'elements' => $new_data['content'], + ] ); + + /** + * After template library update. + * + * Fires after Elementor template library was updated. + * + * @since 1.0.0 + * + * @param int $new_data_id The ID of the new template. + * @param array $new_data The new template data. + */ + do_action( 'elementor/template-library/after_update_template', $new_data['id'], $new_data ); + + return true; + } + + /** + * Get local template. + * + * Retrieve a single local template saved by the user on his site. + * + * @since 1.0.0 + * @access public + * + * @param int $template_id The template ID. + * + * @return array Local template. + */ + public function get_item( $template_id ) { + $post = get_post( $template_id ); + + $user = get_user_by( 'id', $post->post_author ); + + $page = SettingsManager::get_settings_managers( 'page' )->get_model( $template_id ); + + $page_settings = $page->get_data( 'settings' ); + + $date = strtotime( $post->post_date ); + + $data = [ + 'template_id' => $post->ID, + 'source' => $this->get_id(), + 'type' => self::get_template_type( $post->ID ), + 'title' => $post->post_title, + 'thumbnail' => get_the_post_thumbnail_url( $post ), + 'date' => $date, + 'human_date' => date_i18n( get_option( 'date_format' ), $date ), + 'human_modified_date' => date_i18n( get_option( 'date_format' ), strtotime( $post->post_modified ) ), + 'author' => $user->display_name, + 'status' => $post->post_status, + 'hasPageSettings' => ! empty( $page_settings ), + 'tags' => [], + 'export_link' => $this->get_export_link( $template_id ), + 'url' => get_permalink( $post->ID ), + ]; + + /** + * Get template library template. + * + * Filters the template data when retrieving a single template from the + * template library. + * + * @since 1.0.0 + * + * @param array $data Template data. + */ + $data = apply_filters( 'elementor/template-library/get_template', $data ); + + return $data; + } + + /** + * Get template data. + * + * Retrieve the data of a single local template saved by the user on his site. + * + * @since 1.5.0 + * @access public + * + * @param array $args Custom template arguments. + * + * @return array Local template data. + */ + public function get_data( array $args ) { + $template_id = $args['template_id']; + + $document = Plugin::$instance->documents->get( $template_id ); + $content = []; + + if ( $document ) { + // TODO: Validate the data (in JS too!). + if ( ! empty( $args['display'] ) ) { + $content = $document->get_elements_raw_data( null, true ); + } else { + $content = $document->get_elements_data(); + } + + if ( ! empty( $content ) ) { + $content = $this->replace_elements_ids( $content ); + } + } + + $data = [ + 'content' => $content, + ]; + + if ( ! empty( $args['with_page_settings'] ) ) { + $page = SettingsManager::get_settings_managers( 'page' )->get_model( $args['template_id'] ); + + $data['page_settings'] = $page->get_data( 'settings' ); + } + + return $data; + } + + /** + * Delete local template. + * + * Delete template from the database. + * + * @since 1.0.0 + * @access public + * + * @param int $template_id The template ID. + * + * @return \WP_Post|\WP_Error|false|null Post data on success, false or null + * or 'WP_Error' on failure. + */ + public function delete_template( $template_id ) { + if ( ! current_user_can( $this->post_type_object->cap->delete_post, $template_id ) ) { + return new \WP_Error( 'template_error', esc_html__( 'Access denied.', 'elementor' ) ); + } + + return wp_delete_post( $template_id, true ); + } + + /** + * Export local template. + * + * Export template to a file. + * + * @since 1.0.0 + * @access public + * + * @param int $template_id The template ID. + * + * @return \WP_Error WordPress error if template export failed. + */ + public function export_template( $template_id ) { + $file_data = $this->prepare_template_export( $template_id ); + + if ( is_wp_error( $file_data ) ) { + return $file_data; + } + + $this->send_file_headers( $file_data['name'], strlen( $file_data['content'] ) ); + + // Clear buffering just in case. + @ob_end_clean(); + + flush(); + + // Output file contents. + // PHPCS - Export widget json + echo $file_data['content']; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped + + die; + } + + /** + * Export multiple local templates. + * + * Export multiple template to a ZIP file. + * + * @since 1.6.0 + * @access public + * + * @param array $template_ids An array of template IDs. + * + * @return \WP_Error WordPress error if export failed. + */ + public function export_multiple_templates( array $template_ids ) { + $files = []; + + $wp_upload_dir = wp_upload_dir(); + + $temp_path = $wp_upload_dir['basedir'] . '/' . self::TEMP_FILES_DIR; + + // Create temp path if it doesn't exist + wp_mkdir_p( $temp_path ); + + // Create all json files + foreach ( $template_ids as $template_id ) { + $file_data = $this->prepare_template_export( $template_id ); + + if ( is_wp_error( $file_data ) ) { + continue; + } + + $complete_path = $temp_path . '/' . $file_data['name']; + + $put_contents = file_put_contents( $complete_path, $file_data['content'] ); + + if ( ! $put_contents ) { + return new \WP_Error( '404', sprintf( 'Cannot create file "%s".', $file_data['name'] ) ); + } + + $files[] = [ + 'path' => $complete_path, + 'name' => $file_data['name'], + ]; + } + + if ( ! $files ) { + return new \WP_Error( 'empty_files', 'There is no files to export (probably all the requested templates are empty).' ); + } + + // Create temporary .zip file + $zip_archive_filename = 'elementor-templates-' . gmdate( 'Y-m-d' ) . '.zip'; + + $zip_archive = new \ZipArchive(); + + $zip_complete_path = $temp_path . '/' . $zip_archive_filename; + + $zip_archive->open( $zip_complete_path, \ZipArchive::CREATE ); + + foreach ( $files as $file ) { + $zip_archive->addFile( $file['path'], $file['name'] ); + } + + $zip_archive->close(); + + foreach ( $files as $file ) { + unlink( $file['path'] ); + } + + $this->send_file_headers( $zip_archive_filename, filesize( $zip_complete_path ) ); + + @ob_end_flush(); + + @readfile( $zip_complete_path ); + + unlink( $zip_complete_path ); + + die; + } + + /** + * Import local template. + * + * Import template from a file. + * + * @since 1.0.0 + * @access public + * + * @param string $name - The file name + * @param string $path - The file path + * @return \WP_Error|array An array of items on success, 'WP_Error' on failure. + */ + public function import_template( $name, $path ) { + if ( empty( $path ) ) { + return new \WP_Error( 'file_error', 'Please upload a file to import' ); + } + + // Set the Request's state as an Elementor upload request, in order to support unfiltered file uploads. + Plugin::$instance->uploads_manager->set_elementor_upload_state( true ); + + $items = []; + + // If the import file is a Zip file with potentially multiple JSON files + if ( 'zip' === pathinfo( $name, PATHINFO_EXTENSION ) ) { + $extracted_files = Plugin::$instance->uploads_manager->extract_and_validate_zip( $path, [ 'json' ] ); + + if ( is_wp_error( $extracted_files ) ) { + // Delete the temporary extraction directory, since it's now not necessary. + Plugin::$instance->uploads_manager->remove_file_or_dir( $extracted_files['extraction_directory'] ); + + return $extracted_files; + } + + foreach ( $extracted_files['files'] as $file_path ) { + $import_result = $this->import_single_template( $file_path ); + + if ( is_wp_error( $import_result ) ) { + // Delete the temporary extraction directory, since it's now not necessary. + Plugin::$instance->uploads_manager->remove_file_or_dir( $extracted_files['extraction_directory'] ); + + return $import_result; + } + + $items[] = $import_result; + } + + // Delete the temporary extraction directory, since it's now not necessary. + Plugin::$instance->uploads_manager->remove_file_or_dir( $extracted_files['extraction_directory'] ); + } else { + // If the import file is a single JSON file + $import_result = $this->import_single_template( $path ); + + if ( is_wp_error( $import_result ) ) { + return $import_result; + } + + $items[] = $import_result; + } + + return $items; + } + + /** + * Post row actions. + * + * Add an export link to the template library action links table list. + * + * Fired by `post_row_actions` filter. + * + * @since 1.0.0 + * @access public + * + * @param array $actions An array of row action links. + * @param \WP_Post $post The post object. + * + * @return array An updated array of row action links. + */ + public function post_row_actions( $actions, \WP_Post $post ) { + if ( self::is_base_templates_screen() ) { + if ( $this->is_template_supports_export( $post->ID ) ) { + $actions['export-template'] = sprintf( '%2$s', $this->get_export_link( $post->ID ), esc_html__( 'Export Template', 'elementor' ) ); + } + } + + return $actions; + } + + /** + * Admin import template form. + * + * The import form displayed in "My Library" screen in WordPress dashboard. + * + * The form allows the user to import template in json/zip format to the site. + * + * Fired by `admin_footer` action. + * + * @since 1.0.0 + * @access public + */ + public function admin_import_template_form() { + if ( ! self::is_base_templates_screen() || ! User::is_current_user_can_upload_json() ) { + return; + } + + /** @var \Elementor\Core\Common\Modules\Ajax\Module $ajax */ + $ajax = Plugin::$instance->common->get_component( 'ajax' ); + ?> +
    + +
    +
    +
    + + + +
    + + +
    +
    +
    +
    + post_type && isset( $post_states['elementor'] ) ) { + unset( $post_states['elementor'] ); + } + return $post_states; + } + + /** + * Get template export link. + * + * Retrieve the link used to export a single template based on the template + * ID. + * + * @since 2.0.0 + * @access private + * + * @param int $template_id The template ID. + * + * @return string Template export URL. + */ + private function get_export_link( $template_id ) { + // TODO: BC since 2.3.0 - Use `$ajax->create_nonce()` + /** @var \Elementor\Core\Common\Modules\Ajax\Module $ajax */ + // $ajax = Plugin::$instance->common->get_component( 'ajax' ); + + return add_query_arg( + [ + 'action' => 'elementor_library_direct_actions', + 'library_action' => 'export_template', + 'source' => $this->get_id(), + '_nonce' => wp_create_nonce( 'elementor_ajax' ), + 'template_id' => $template_id, + ], + admin_url( 'admin-ajax.php' ) + ); + } + + /** + * On template save. + * + * Run this method when template is being saved. + * + * Fired by `save_post` action. + * + * @since 1.0.1 + * @access public + * + * @param int $post_id Post ID. + * @param \WP_Post $post The current post object. + */ + public function on_save_post( $post_id, \WP_Post $post ) { + if ( self::CPT !== $post->post_type ) { + return; + } + + if ( self::get_template_type( $post_id ) ) { // It's already with a type + return; + } + + // Don't save type on import, the importer will do it. + if ( did_action( 'import_start' ) ) { + return; + } + + $this->save_item_type( $post_id, 'page' ); + } + + /** + * Save item type. + * + * When saving/updating templates, this method is used to update the post + * meta data and the taxonomy. + * + * @since 1.0.1 + * @access private + * + * @param int $post_id Post ID. + * @param string $type Item type. + */ + private function save_item_type( $post_id, $type ) { + update_post_meta( $post_id, Document::TYPE_META_KEY, $type ); + + wp_set_object_terms( $post_id, $type, self::TAXONOMY_TYPE_SLUG ); + } + + /** + * Bulk export action. + * + * Adds an 'Export' action to the Bulk Actions drop-down in the template + * library. + * + * Fired by `bulk_actions-edit-elementor_library` filter. + * + * @since 1.6.0 + * @access public + * + * @param array $actions An array of the available bulk actions. + * + * @return array An array of the available bulk actions. + */ + public function admin_add_bulk_export_action( $actions ) { + $actions[ self::BULK_EXPORT_ACTION ] = esc_html__( 'Export', 'elementor' ); + + return $actions; + } + + /** + * Add bulk export action. + * + * Handles the template library bulk export action. + * + * Fired by `handle_bulk_actions-edit-elementor_library` filter. + * + * @since 1.6.0 + * @access public + * + * @param string $redirect_to The redirect URL. + * @param string $action The action being taken. + * @param array $post_ids The items to take the action on. + */ + public function admin_export_multiple_templates( $redirect_to, $action, $post_ids ) { + if ( self::BULK_EXPORT_ACTION === $action ) { + $result = $this->export_multiple_templates( $post_ids ); + + // If you reach this line, the export failed + // PHPCS - Not user input. + wp_die( $result->get_error_message() ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped + } + } + + /** + * Print admin tabs. + * + * Used to output the template library tabs with their labels. + * + * Fired by `views_edit-elementor_library` filter. + * + * @since 2.0.0 + * @access public + * + * @param array $views An array of available list table views. + * + * @return array An updated array of available list table views. + */ + public function admin_print_tabs( $views ) { + //phpcs:ignore WordPress.Security.NonceVerification.Recommended -- Nonce is not required to retrieve the value. + $current_type = Utils::get_super_global_value( $_REQUEST, self::TAXONOMY_TYPE_SLUG ) ?? ''; + $active_class = $current_type ? '' : ' nav-tab-active'; + $current_tabs_group = $this->get_current_tab_group(); + + $url_args = [ + 'post_type' => self::CPT, + 'tabs_group' => $current_tabs_group, + ]; + + $baseurl = add_query_arg( $url_args, admin_url( 'edit.php' ) ); + + $filter = [ + 'admin_tab_group' => $current_tabs_group, + ]; + $operator = 'and'; + + if ( empty( $current_tabs_group ) ) { + // Don't include 'not-supported' or other templates that don't set their `admin_tab_group`. + $operator = 'NOT'; + } + + $doc_types = Plugin::$instance->documents->get_document_types( $filter, $operator ); + + if ( 1 >= count( $doc_types ) ) { + return $views; + } + + ?> + + self::CPT, + 'post_type' => get_query_var( 'elementor_library_type' ), + ] ); + + if ( $args['cpt'] !== $post_type || 'bottom' !== $which ) { + return; + } + + global $wp_list_table; + + $total_items = $wp_list_table->get_pagination_arg( 'total_items' ); + + //phpcs:ignore WordPress.Security.NonceVerification.Recommended -- Nonce is not required to retrieve the value. + if ( ! empty( $total_items ) || ! empty( $_REQUEST['s'] ) ) { + return; + } + + $current_type = $args['post_type']; + + $document_types = Plugin::instance()->documents->get_document_types(); + + if ( empty( $document_types[ $current_type ] ) ) { + return; + } + + // TODO: Better way to exclude widget type. + if ( 'widget' === $current_type ) { + return; + } + + // TODO: This code maybe unreachable see if above `if ( empty( $document_types[ $current_type ] ) )`. + if ( empty( $current_type ) ) { + $counts = (array) wp_count_posts( self::CPT ); + unset( $counts['auto-draft'] ); + $count = array_sum( $counts ); + + if ( 0 < $count ) { + return; + } + + $current_type = 'template'; + + $args['additional_inline_style'] = '#elementor-template-library-tabs-wrapper {display: none;}'; + } + + $this->render_blank_state( $current_type, $args ); + } + + private function render_blank_state( $current_type, array $args = [] ) { + $current_type_label = $this->get_template_label_by_type( $current_type ); + $inline_style = '#posts-filter .wp-list-table, #posts-filter .tablenav.top, .tablenav.bottom .actions, .wrap .subsubsub { display:none;}'; + + $args = wp_parse_args( $args, [ + 'additional_inline_style' => '', + 'href' => '', + 'description' => esc_html__( 'Add templates and reuse them across your website. Easily export and import them to any other project, for an optimized workflow.', 'elementor' ), + ] ); + $inline_style .= $args['additional_inline_style']; + ?> + +
    + print_blank_state_template( $current_type_label, $args['href'], $args['description'] ); ?> +
    + +
    + +

    + +

    +

    + + + +
    + labels->all_items; + $dropdown_options = array( + 'show_option_all' => $all_items, + 'show_option_none' => $all_items, + 'hide_empty' => 0, + 'hierarchical' => 1, + 'show_count' => 0, + 'orderby' => 'name', + 'value_field' => 'slug', + 'taxonomy' => self::TAXONOMY_CATEGORY_SLUG, + 'name' => self::TAXONOMY_CATEGORY_SLUG, + //phpcs:ignore WordPress.Security.NonceVerification.Recommended -- Nonce is not required to retrieve the value. + 'selected' => Utils::get_super_global_value( $_GET, self::TAXONOMY_CATEGORY_SLUG ) ?? '', + ); + + printf( + '', + esc_attr( self::TAXONOMY_CATEGORY_SLUG ), + esc_html_x( 'Filter by category', 'Template Library', 'elementor' ) + ); + wp_dropdown_categories( $dropdown_options ); + } + + /** + * Import single template. + * + * Import template from a file to the database. + * + * @since 1.6.0 + * @access private + * + * @param string $file_path File name. + * + * @return \WP_Error|int|array Local template array, or template ID, or + * `WP_Error`. + */ + private function import_single_template( $file_path ) { + $data = json_decode( Utils::file_get_contents( $file_path ), true ); + + if ( empty( $data ) ) { + return new \WP_Error( 'file_error', 'Invalid File' ); + } + + $content = $data['content']; + + if ( ! is_array( $content ) ) { + return new \WP_Error( 'file_error', 'Invalid Content In File' ); + } + + $content = $this->process_export_import_content( $content, 'on_import' ); + + $page_settings = []; + + if ( ! empty( $data['page_settings'] ) ) { + $page = new Model( [ + 'id' => 0, + 'settings' => $data['page_settings'], + ] ); + + $page_settings_data = $this->process_element_export_import_content( $page, 'on_import' ); + + if ( ! empty( $page_settings_data['settings'] ) ) { + $page_settings = $page_settings_data['settings']; + } + } + + $template_id = $this->save_item( [ + 'content' => $content, + 'title' => $data['title'], + 'type' => $data['type'], + 'page_settings' => $page_settings, + ] ); + + if ( is_wp_error( $template_id ) ) { + return $template_id; + } + + return $this->get_item( $template_id ); + } + + /** + * Prepare template to export. + * + * Retrieve the relevant template data and return them as an array. + * + * @since 1.6.0 + * @access private + * + * @param int $template_id The template ID. + * + * @return \WP_Error|array Exported template data. + */ + private function prepare_template_export( $template_id ) { + $document = Plugin::$instance->documents->get( $template_id ); + + $template_data = $document->get_export_data(); + + if ( empty( $template_data['content'] ) ) { + return new \WP_Error( 'empty_template', 'The template is empty' ); + } + + $export_data = [ + 'content' => $template_data['content'], + 'page_settings' => $template_data['settings'], + 'version' => DB::DB_VERSION, + 'title' => $document->get_main_post()->post_title, + 'type' => self::get_template_type( $template_id ), + ]; + + return [ + 'name' => 'elementor-' . $template_id . '-' . gmdate( 'Y-m-d' ) . '.json', + 'content' => wp_json_encode( $export_data ), + ]; + } + + /** + * Send file headers. + * + * Set the file header when export template data to a file. + * + * @since 1.6.0 + * @access private + * + * @param string $file_name File name. + * @param int $file_size File size. + */ + private function send_file_headers( $file_name, $file_size ) { + header( 'Content-Type: application/octet-stream' ); + header( 'Content-Disposition: attachment; filename=' . $file_name ); + header( 'Expires: 0' ); + header( 'Cache-Control: must-revalidate' ); + header( 'Pragma: public' ); + header( 'Content-Length: ' . $file_size ); + } + + /** + * Get template label by type. + * + * Retrieve the template label for any given template type. + * + * @since 2.0.0 + * @access private + * + * @param string $template_type Template type. + * + * @return string Template label. + */ + private function get_template_label_by_type( $template_type ) { + $document_types = Plugin::instance()->documents->get_document_types(); + + if ( isset( $document_types[ $template_type ] ) ) { + $template_label = call_user_func( [ $document_types[ $template_type ], 'get_title' ] ); + } else { + $template_label = ucwords( str_replace( [ '_', '-' ], ' ', $template_type ) ); + } + + /** + * Template label by template type. + * + * Filters the template label by template type in the template library . + * + * @since 2.0.0 + * + * @param string $template_label Template label. + * @param string $template_type Template type. + */ + $template_label = apply_filters( 'elementor/template-library/get_template_label_by_type', $template_label, $template_type ); + + return $template_label; + } + + /** + * Filter template types in admin query. + * + * Update the template types in the main admin query. + * + * Fired by `parse_query` action. + * + * @since 2.4.0 + * @access public + * + * @param \WP_Query $query The `WP_Query` instance. + */ + public function admin_query_filter_types( \WP_Query $query ) { + if ( ! $this->is_current_screen() || ! empty( $query->query_vars['meta_key'] ) ) { + return; + } + + $current_tabs_group = $this->get_current_tab_group(); + + if ( isset( $query->query_vars[ self::TAXONOMY_CATEGORY_SLUG ] ) && '-1' === $query->query_vars[ self::TAXONOMY_CATEGORY_SLUG ] ) { + unset( $query->query_vars[ self::TAXONOMY_CATEGORY_SLUG ] ); + } + + if ( empty( $current_tabs_group ) ) { + return; + } + + $doc_types = Plugin::$instance->documents->get_document_types( [ + 'admin_tab_group' => $current_tabs_group, + ] ); + + $query->query_vars['meta_key'] = Document::TYPE_META_KEY; + $query->query_vars['meta_value'] = array_keys( $doc_types ); + } + + /** + * Add template library actions. + * + * Register filters and actions for the template library. + * + * @since 2.0.0 + * @access private + */ + private function add_actions() { + if ( is_admin() ) { + add_action( 'elementor/admin/menu/register', function ( Admin_Menu_Manager $admin_menu ) { + $this->register_admin_menu( $admin_menu ); + }, static::ADMIN_MENU_PRIORITY ); + + add_action( 'elementor/admin/menu/register', function ( Admin_Menu_Manager $admin_menu ) { + $this->admin_menu_reorder( $admin_menu ); + }, 800 ); + + add_action( 'elementor/admin/menu/after_register', function () { + $this->admin_menu_set_current(); + } ); + + add_filter( 'admin_title', [ $this, 'admin_title' ], 10, 2 ); + add_action( 'all_admin_notices', [ $this, 'replace_admin_heading' ] ); + add_filter( 'post_row_actions', [ $this, 'post_row_actions' ], 10, 2 ); + add_action( 'admin_footer', [ $this, 'admin_import_template_form' ] ); + add_action( 'save_post', [ $this, 'on_save_post' ], 10, 2 ); + add_filter( 'display_post_states', [ $this, 'remove_elementor_post_state_from_library' ], 11, 2 ); + + add_action( 'parse_query', [ $this, 'admin_query_filter_types' ] ); + + // Template filter by category. + add_action( 'restrict_manage_posts', [ $this, 'add_filter_by_category' ] ); + + // Template type column. + add_action( 'manage_' . self::CPT . '_posts_columns', [ $this, 'admin_columns_headers' ] ); + add_action( 'manage_' . self::CPT . '_posts_custom_column', [ $this, 'admin_columns_content' ], 10, 2 ); + + // Template library bulk actions. + add_filter( 'bulk_actions-edit-elementor_library', [ $this, 'admin_add_bulk_export_action' ] ); + add_filter( 'handle_bulk_actions-edit-elementor_library', [ $this, 'admin_export_multiple_templates' ], 10, 3 ); + + // Print template library tabs. + add_filter( 'views_edit-' . self::CPT, [ $this, 'admin_print_tabs' ] ); + + // Show blank state. + add_action( 'manage_posts_extra_tablenav', [ $this, 'maybe_render_blank_state' ] ); + } + + add_action( 'template_redirect', [ $this, 'block_template_frontend' ] ); + + // Remove elementor library templates from WP Sitemap + add_filter( + 'wp_sitemaps_post_types', + function( $post_types ) { + return $this->remove_elementor_cpt_from_sitemap( $post_types ); + } + ); + } + + /** + * @since 2.0.6 + * @access public + */ + public function admin_columns_content( $column_name, $post_id ) { + if ( 'elementor_library_type' === $column_name ) { + /** @var Document $document */ + $document = Plugin::$instance->documents->get( $post_id ); + + if ( $document && $document instanceof Library_Document ) { + $document->print_admin_column_type(); + } + } + } + + /** + * @since 2.0.6 + * @access public + */ + public function admin_columns_headers( $posts_columns ) { + // Replace original column that bind to the taxonomy - with another column. + unset( $posts_columns['taxonomy-elementor_library_type'] ); + + $offset = 2; + + $posts_columns = array_slice( $posts_columns, 0, $offset, true ) + [ + 'elementor_library_type' => esc_html__( 'Type', 'elementor' ), + ] + array_slice( $posts_columns, $offset, null, true ); + + return $posts_columns; + } + + public function get_current_tab_group( $default = '' ) { + //phpcs:ignore WordPress.Security.NonceVerification.Recommended -- Nonce verification is not required here. + $current_tabs_group = Utils::get_super_global_value( $_REQUEST, 'tabs_group' ) ?? ''; + //phpcs:ignore WordPress.Security.NonceVerification.Recommended -- Nonce verification is not required here. + $type_slug = Utils::get_super_global_value( $_REQUEST, self::TAXONOMY_TYPE_SLUG ); + + if ( $type_slug ) { + $doc_type = Plugin::$instance->documents->get_document_type( $type_slug, '' ); + if ( $doc_type ) { + $current_tabs_group = $doc_type::get_property( 'admin_tab_group' ); + } + } + return $current_tabs_group; + } + + private function get_library_title() { + $title = ''; + + if ( $this->is_current_screen() ) { + $current_tab_group = $this->get_current_tab_group(); + + if ( $current_tab_group ) { + $titles = [ + 'library' => esc_html__( 'Saved Templates', 'elementor' ), + 'theme' => esc_html__( 'Theme Builder', 'elementor' ), + 'popup' => esc_html__( 'Popups', 'elementor' ), + ]; + + if ( ! empty( $titles[ $current_tab_group ] ) ) { + $title = $titles[ $current_tab_group ]; + } + } + } + + return $title; + } + + private function is_current_screen() { + global $pagenow, $typenow; + + return 'edit.php' === $pagenow && self::CPT === $typenow; + } + + /** + * @param array $post_types + * + * @return array + */ + private function remove_elementor_cpt_from_sitemap( array $post_types ) { + unset( $post_types[ self::CPT ] ); + + return $post_types; + } + + /** + * Template library local source constructor. + * + * Initializing the template library local source base by registering custom + * template data and running custom actions. + * + * @since 1.0.0 + * @access public + */ + public function __construct() { + parent::__construct(); + + $this->add_actions(); + } +} diff --git a/wp-content/plugins/elementor/includes/template-library/sources/remote.php b/wp-content/plugins/elementor/includes/template-library/sources/remote.php new file mode 100644 index 0000000..9b077e7 --- /dev/null +++ b/wp-content/plugins/elementor/includes/template-library/sources/remote.php @@ -0,0 +1,343 @@ +add_actions(); + } + + public function add_actions() { + add_action( 'elementor/experiments/feature-state-change/container', [ $this, 'clear_cache' ], 10, 0 ); + } + + /** + * Get remote template ID. + * + * Retrieve the remote template ID. + * + * @since 1.0.0 + * @access public + * + * @return string The remote template ID. + */ + public function get_id() { + return 'remote'; + } + + /** + * Get remote template title. + * + * Retrieve the remote template title. + * + * @since 1.0.0 + * @access public + * + * @return string The remote template title. + */ + public function get_title() { + return esc_html__( 'Remote', 'elementor' ); + } + + /** + * Register remote template data. + * + * Used to register custom template data like a post type, a taxonomy or any + * other data. + * + * @since 1.0.0 + * @access public + */ + public function register_data() {} + + /** + * Get remote templates. + * + * Retrieve remote templates from Elementor.com servers. + * + * @since 1.0.0 + * @access public + * + * @param array $args Optional. Not used in remote source. + * + * @return array Remote templates. + */ + public function get_items( $args = [] ) { + $force_update = ! empty( $args['force_update'] ) && is_bool( $args['force_update'] ); + + $templates_data = $this->get_templates_data( $force_update ); + + $templates = []; + + foreach ( $templates_data as $template_data ) { + $templates[] = $this->prepare_template( $template_data ); + } + + return $templates; + } + + /** + * Get remote template. + * + * Retrieve a single remote template from Elementor.com servers. + * + * @since 1.0.0 + * @access public + * + * @param int $template_id The template ID. + * + * @return array Remote template. + */ + public function get_item( $template_id ) { + $templates = $this->get_items(); + + return $templates[ $template_id ]; + } + + /** + * Save remote template. + * + * Remote template from Elementor.com servers cannot be saved on the + * database as they are retrieved from remote servers. + * + * @since 1.0.0 + * @access public + * + * @param array $template_data Remote template data. + * + * @return \WP_Error + */ + public function save_item( $template_data ) { + return new \WP_Error( 'invalid_request', 'Cannot save template to a remote source' ); + } + + /** + * Update remote template. + * + * Remote template from Elementor.com servers cannot be updated on the + * database as they are retrieved from remote servers. + * + * @since 1.0.0 + * @access public + * + * @param array $new_data New template data. + * + * @return \WP_Error + */ + public function update_item( $new_data ) { + return new \WP_Error( 'invalid_request', 'Cannot update template to a remote source' ); + } + + /** + * Delete remote template. + * + * Remote template from Elementor.com servers cannot be deleted from the + * database as they are retrieved from remote servers. + * + * @since 1.0.0 + * @access public + * + * @param int $template_id The template ID. + * + * @return \WP_Error + */ + public function delete_template( $template_id ) { + return new \WP_Error( 'invalid_request', 'Cannot delete template from a remote source' ); + } + + /** + * Export remote template. + * + * Remote template from Elementor.com servers cannot be exported from the + * database as they are retrieved from remote servers. + * + * @since 1.0.0 + * @access public + * + * @param int $template_id The template ID. + * + * @return \WP_Error + */ + public function export_template( $template_id ) { + return new \WP_Error( 'invalid_request', 'Cannot export template from a remote source' ); + } + + /** + * Get remote template data. + * + * Retrieve the data of a single remote template from Elementor.com servers. + * + * @since 1.5.0 + * @access public + * + * @param array $args Custom template arguments. + * @param string $context Optional. The context. Default is `display`. + * + * @return array|\WP_Error Remote Template data. + */ + public function get_data( array $args, $context = 'display' ) { + $data = Api::get_template_content( $args['template_id'] ); + + if ( is_wp_error( $data ) ) { + return $data; + } + + // Set the Request's state as an Elementor upload request, in order to support unfiltered file uploads. + Plugin::$instance->uploads_manager->set_elementor_upload_state( true ); + + // BC. + $data = (array) $data; + + $data['content'] = $this->replace_elements_ids( $data['content'] ); + $data['content'] = $this->process_export_import_content( $data['content'], 'on_import' ); + + $post_id = $args['editor_post_id']; + $document = Plugin::$instance->documents->get( $post_id ); + if ( $document ) { + $data['content'] = $document->get_elements_raw_data( $data['content'], true ); + } + + // After the upload complete, set the elementor upload state back to false + Plugin::$instance->uploads_manager->set_elementor_upload_state( false ); + + return $data; + } + + /** + * Get templates data from a transient or from a remote request. + * In any of the following 2 conditions, the remote request will be triggered: + * 1. Force update - "$force_update = true" parameter was passed. + * 2. The data saved in the transient is empty or not exist. + * + * @param bool $force_update + * @return array + */ + private function get_templates_data( bool $force_update ) : array { + $templates_data_cache_key = static::TEMPLATES_DATA_TRANSIENT_KEY_PREFIX . ELEMENTOR_VERSION; + + $experiments_manager = Plugin::$instance->experiments; + $editor_layout_type = $experiments_manager->is_feature_active( 'container' ) ? 'container_flexbox' : ''; + + if ( $force_update ) { + return $this->get_templates( $editor_layout_type ); + } + + $templates_data = get_transient( $templates_data_cache_key ); + + if ( empty( $templates_data ) ) { + return $this->get_templates( $editor_layout_type ); + } + + return $templates_data; + } + + /** + * Get the templates from a remote server and set a transient. + * + * @param string $editor_layout_type + * @return array + */ + private function get_templates( string $editor_layout_type ): array { + $templates_data_cache_key = static::TEMPLATES_DATA_TRANSIENT_KEY_PREFIX . ELEMENTOR_VERSION; + + $templates_data = $this->get_templates_remotely( $editor_layout_type ); + + if ( empty( $templates_data ) ) { + return []; + } + + set_transient( $templates_data_cache_key, $templates_data, 12 * HOUR_IN_SECONDS ); + + return $templates_data; + } + + /** + * Fetch templates from the remote server. + * + * @param string $editor_layout_type + * @return array|false + */ + private function get_templates_remotely( string $editor_layout_type ) { + $response = wp_remote_get( static::API_TEMPLATES_URL, [ + 'body' => [ + 'plugin_version' => ELEMENTOR_VERSION, + 'editor_layout_type' => $editor_layout_type, + ], + ] ); + + if ( is_wp_error( $response ) || 200 !== (int) wp_remote_retrieve_response_code( $response ) ) { + return false; + } + + $templates_data = json_decode( wp_remote_retrieve_body( $response ), true ); + + if ( empty( $templates_data ) || ! is_array( $templates_data ) ) { + return []; + } + + return $templates_data; + } + + /** + * @since 2.2.0 + * @access private + */ + private function prepare_template( array $template_data ) { + $favorite_templates = $this->get_user_meta( 'favorites' ); + + // BC: Support legacy APIs that don't have access tiers. + if ( isset( $template_data['access_tier'] ) ) { + $access_tier = $template_data['access_tier']; + } else { + $access_tier = 0 === $template_data['access_level'] + ? ConnectModule::ACCESS_TIER_FREE + : ConnectModule::ACCESS_TIER_ESSENTIAL; + } + + return [ + 'template_id' => $template_data['id'], + 'source' => $this->get_id(), + 'type' => $template_data['type'], + 'subtype' => $template_data['subtype'], + 'title' => $template_data['title'], + 'thumbnail' => $template_data['thumbnail'], + 'date' => $template_data['tmpl_created'], + 'author' => $template_data['author'], + 'tags' => json_decode( $template_data['tags'] ), + 'isPro' => ( '1' === $template_data['is_pro'] ), + 'accessLevel' => $template_data['access_level'], + 'accessTier' => $access_tier, + 'popularityIndex' => (int) $template_data['popularity_index'], + 'trendIndex' => (int) $template_data['trend_index'], + 'hasPageSettings' => ( '1' === $template_data['has_page_settings'] ), + 'url' => $template_data['url'], + 'favorite' => ! empty( $favorite_templates[ $template_data['id'] ] ), + ]; + } + + public function clear_cache() { + delete_transient( static::TEMPLATES_DATA_TRANSIENT_KEY_PREFIX . ELEMENTOR_VERSION ); + } +} diff --git a/wp-content/plugins/elementor/includes/tracker.php b/wp-content/plugins/elementor/includes/tracker.php new file mode 100644 index 0000000..e12cd66 --- /dev/null +++ b/wp-content/plugins/elementor/includes/tracker.php @@ -0,0 +1,636 @@ +custom_tasks->add_tasks_requested_to_run( [ + 'opt_in_recalculate_usage', + 'opt_in_send_tracking_data', + ] ); + } + + if ( empty( $new_value ) ) { + $new_value = 'no'; + } + + return $new_value; + } + + /** + * Send tracking data. + * + * Decide whether to send tracking data, or not. + * + * @since 1.0.0 + * @access public + * @static + * + * @param bool $override + */ + public static function send_tracking_data( $override = false ) { + // Don't trigger this on AJAX Requests. + if ( defined( 'DOING_AJAX' ) && DOING_AJAX ) { + return; + } + + if ( ! self::is_allow_track() ) { + return; + } + + $last_send = self::get_last_send_time(); + + /** + * Tracker override send. + * + * Filters whether to override sending tracking data or not. + * + * @since 1.0.0 + * + * @param bool $override Whether to override default setting or not. + */ + $override = apply_filters( 'elementor/tracker/send_override', $override ); + + if ( ! $override ) { + $last_send_interval = strtotime( '-1 week' ); + + /** + * Tracker last send interval. + * + * Filters the interval of between two tracking requests. + * + * @since 1.0.0 + * + * @param int $last_send_interval A date/time string. Default is `strtotime( '-1 week' )`. + */ + $last_send_interval = apply_filters( 'elementor/tracker/last_send_interval', $last_send_interval ); + + // Send a maximum of once per week by default. + if ( $last_send && $last_send > $last_send_interval ) { + return; + } + } else { + // Make sure there is at least a 1 hour delay between override sends, we dont want duplicate calls due to double clicking links. + if ( $last_send && $last_send > strtotime( '-1 hours' ) ) { + return; + } + } + + // Update time first before sending to ensure it is set. + update_option( 'elementor_tracker_last_send', time() ); + + $params = self::get_tracking_data( empty( $last_send ) ); + + // Tracking data is used for System Info reports, and events should not be included in System Info reports, + // so it is added here + $params['analytics_events'] = self::get_events(); + + add_filter( 'https_ssl_verify', '__return_false' ); + + wp_safe_remote_post( + self::$_api_url, + [ + 'timeout' => 25, + 'blocking' => false, + // 'sslverify' => false, + 'body' => [ + 'data' => wp_json_encode( $params ), + ], + ] + ); + + // After sending the event tracking data, we reset the events table. + Events_DB_Manager::reset_table(); + } + + /** + * Is allow track. + * + * Checks whether the site admin has opted-in for data tracking, or not. + * + * @since 1.0.0 + * @access public + * @static + */ + public static function is_allow_track() { + return 'yes' === get_option( 'elementor_allow_tracking', 'no' ); + } + + /** + * Handle tracker actions. + * + * Check if the user opted-in or opted-out and update the database. + * + * Fired by `admin_init` action. + * + * @since 1.0.0 + * @access public + * @static + */ + public static function handle_tracker_actions() { + if ( ! isset( $_GET['elementor_tracker'] ) ) { + return; + } + + if ( 'opt_into' === $_GET['elementor_tracker'] ) { + check_admin_referer( 'opt_into' ); + + self::set_opt_in( true ); + } + + if ( 'opt_out' === $_GET['elementor_tracker'] ) { + check_admin_referer( 'opt_out' ); + + self::set_opt_in( false ); + } + + wp_redirect( remove_query_arg( 'elementor_tracker' ) ); + exit; + } + + /** + * @since 2.2.0 + * @access public + * @static + */ + public static function is_notice_shown() { + return self::$notice_shown; + } + + public static function set_opt_in( $value ) { + if ( $value ) { + update_option( 'elementor_allow_tracking', 'yes' ); + self::send_tracking_data( true ); + } else { + update_option( 'elementor_allow_tracking', 'no' ); + update_option( 'elementor_tracker_notice', '1' ); + } + } + + /** + * Get system reports data. + * + * Retrieve the data from system reports. + * + * @since 2.0.0 + * @access private + * @static + * + * @return array The data from system reports. + */ + private static function get_system_reports_data() { + $reports = Plugin::$instance->system_info->load_reports( System_Info_Module::get_allowed_reports() ); + + // The log report should not be sent with the usage data - it is not used and causes bloat. + if ( isset( $reports['log'] ) ) { + unset( $reports['log'] ); + } + + $system_reports = []; + foreach ( $reports as $report_key => $report_details ) { + $system_reports[ $report_key ] = []; + foreach ( $report_details['report']->get_report() as $sub_report_key => $sub_report_details ) { + $system_reports[ $report_key ][ $sub_report_key ] = $sub_report_details['value']; + } + } + return $system_reports; + } + + /** + * Get last send time. + * + * Retrieve the last time tracking data was sent. + * + * @since 2.0.0 + * @access private + * @static + * + * @return int|false The last time tracking data was sent, or false if + * tracking data never sent. + */ + private static function get_last_send_time() { + $last_send_time = get_option( 'elementor_tracker_last_send', false ); + + /** + * Tracker last send time. + * + * Filters the last time tracking data was sent. + * + * @since 1.0.0 + * + * @param int|false $last_send_time The last time tracking data was sent, + * or false if tracking data never sent. + */ + $last_send_time = apply_filters( 'elementor/tracker/last_send_time', $last_send_time ); + + return $last_send_time; + } + + /** + * Get non elementor post usages. + * + * Retrieve the number of posts that not using elementor. + + * @return array The number of posts using not used by Elementor grouped by post types + * and post status. + */ + public static function get_non_elementor_posts_usage() { + global $wpdb; + + $usage = []; + + $results = $wpdb->get_results( + "SELECT `post_type`, `post_status`, COUNT(`ID`) `hits` + FROM {$wpdb->posts} `p` + LEFT JOIN {$wpdb->postmeta} `pm` ON(`p`.`ID` = `pm`.`post_id` AND `meta_key` = '_elementor_edit_mode' ) + WHERE `post_type` != 'elementor_library' AND `meta_value` IS NULL + GROUP BY `post_type`, `post_status`;" + ); + + if ( $results ) { + foreach ( $results as $result ) { + $usage[ $result->post_type ][ $result->post_status ] = $result->hits; + } + } + + return $usage; + } + + /** + * Get posts usage. + * + * Retrieve the number of posts using Elementor. + * + * @since 2.0.0 + * @access public + * @static + * + * @return array The number of posts using Elementor grouped by post types + * and post status. + */ + public static function get_posts_usage() { + global $wpdb; + + $usage = []; + + $results = $wpdb->get_results( + "SELECT `post_type`, `post_status`, COUNT(`ID`) `hits` + FROM {$wpdb->posts} `p` + LEFT JOIN {$wpdb->postmeta} `pm` ON(`p`.`ID` = `pm`.`post_id`) + WHERE `post_type` != 'elementor_library' + AND `meta_key` = '_elementor_edit_mode' AND `meta_value` = 'builder' + GROUP BY `post_type`, `post_status`;" + ); + + if ( $results ) { + foreach ( $results as $result ) { + $usage[ $result->post_type ][ $result->post_status ] = (int) $result->hits; + } + } + + return $usage; + } + + /** + * Get library usage. + * + * Retrieve the number of Elementor library items saved. + * + * @since 2.0.0 + * @access public + * @static + * + * @return array The number of Elementor library items grouped by post types + * and meta value. + */ + public static function get_library_usage() { + global $wpdb; + + $usage = []; + + $results = $wpdb->get_results( + "SELECT `meta_value`, COUNT(`ID`) `hits` + FROM {$wpdb->posts} `p` + LEFT JOIN {$wpdb->postmeta} `pm` ON(`p`.`ID` = `pm`.`post_id`) + WHERE `post_type` = 'elementor_library' + AND `meta_key` = '_elementor_template_type' + GROUP BY `post_type`, `meta_value`;" + ); + + if ( $results ) { + foreach ( $results as $result ) { + $usage[ $result->meta_value ] = $result->hits; + } + } + + return $usage; + + } + + /** + * Get usage of general settings. + * 'Elementor->Settings->General'. + * + * @return array + */ + public static function get_settings_general_usage() { + return self::get_tracking_data_from_settings( 'general' ); + } + + /** + * Get usage of advanced settings. + * 'Elementor->Settings->Advanced'. + * + * @return array + */ + public static function get_settings_advanced_usage() { + return self::get_tracking_data_from_settings( 'advanced' ); + } + + /** + * Get usage of experiments settings. + * + * 'Elementor->Settings->Experiments'. + * + * @return array + */ + public static function get_settings_experiments_usage() { + $system_info = Plugin::$instance->system_info; + + /** + * @var $experiments_report Experiments_Reporter + */ + $experiments_report = $system_info->create_reporter( [ + 'class_name' => Experiments_Reporter::class, + ] ); + + return $experiments_report->get_experiments()['value']; + } + + /** + * Get usage of general tools. + * 'Elementor->Tools->General'. + * + * @return array + */ + public static function get_tools_general_usage() { + return self::get_tracking_data_from_tools( 'general' ); + } + + /** + * Get usage of 'version control' tools. + * 'Elementor->Tools->Version Control'. + * + * @return array + */ + public static function get_tools_version_control_usage() { + return self::get_tracking_data_from_tools( 'versions' ); + } + + /** + * Get usage of 'maintenance' tools. + * 'Elementor->Tools->Maintenance'. + * + * @return array + */ + public static function get_tools_maintenance_usage() { + return self::get_tracking_data_from_tools( 'maintenance_mode' ); + } + + /** + * Get library usage extend. + * + * Retrieve the number of Elementor library items saved. + * + * @return array The number of Elementor library items grouped by post types, post status + * and meta value. + */ + public static function get_library_usage_extend() { + global $wpdb; + + $usage = []; + + $results = $wpdb->get_results( + "SELECT `meta_value`, COUNT(`ID`) `hits`, `post_status` + FROM {$wpdb->posts} `p` + LEFT JOIN {$wpdb->postmeta} `pm` ON(`p`.`ID` = `pm`.`post_id`) + WHERE `post_type` = 'elementor_library' + AND `meta_key` = '_elementor_template_type' + GROUP BY `post_type`, `meta_value`, `post_status`;" + ); + + if ( $results ) { + foreach ( $results as $result ) { + if ( empty( $usage[ $result->meta_value ] ) ) { + $usage[ $result->meta_value ] = []; + } + + if ( empty( $usage[ $result->meta_value ][ $result->post_status ] ) ) { + $usage[ $result->meta_value ][ $result->post_status ] = 0; + } + + $usage[ $result->meta_value ][ $result->post_status ] += $result->hits; + } + } + + return $usage; + } + + public static function get_events() { + global $wpdb; + $table_name = $wpdb->prefix . Events_DB_Manager::TABLE_NAME; + + // phpcs:disable WordPress.DB.PreparedSQL.InterpolatedNotPrepared + $results = $wpdb->get_results( "SELECT event_data FROM {$table_name}" ); + + $events_data = []; + + foreach ( $results as $event ) { + // Results are stored in the database as a JSON string. Since all tracking data is encoded right before + // being sent, it is now decoded. + $events_data[] = json_decode( $event->event_data, true ); + } + + return $events_data; + } + + /** + * Get the tracking data + * + * Retrieve tracking data and apply filter + * + * @access public + * @static + * + * @param bool $is_first_time + * + * @return array + */ + public static function get_tracking_data( $is_first_time = false ) { + $params = [ + 'system' => self::get_system_reports_data(), + 'site_lang' => get_bloginfo( 'language' ), + 'email' => get_option( 'admin_email' ), + 'usages' => [ + 'posts' => self::get_posts_usage(), + 'non-elementor-posts' => self::get_non_elementor_posts_usage(), + 'library' => self::get_library_usage(), + 'settings' => [ + 'general' => self::get_settings_general_usage(), + 'advanced' => self::get_settings_advanced_usage(), + 'experiments' => self::get_settings_experiments_usage(), + ], + 'tools' => [ + 'general' => self::get_tools_general_usage(), + 'version' => self::get_tools_version_control_usage(), + 'maintenance' => self::get_tools_maintenance_usage(), + ], + 'library-details' => self::get_library_usage_extend(), + ], + 'is_first_time' => $is_first_time, + 'install_time' => Plugin::instance()->get_install_time(), + ]; + + /** + * Tracker send tracking data params. + * + * Filters the data parameters when sending tracking request. + * + * @param array $params Variable to encode as JSON. + * + * @since 1.0.0 + * + */ + $params = apply_filters( 'elementor/tracker/send_tracking_data_params', $params ); + + return $params; + } + + /** + * @param string $tab_name + * @return array + */ + private static function get_tracking_data_from_settings( $tab_name ) { + return self::get_tracking_data_from_settings_page( + Plugin::$instance->settings->get_tabs(), + $tab_name + ); + } + + /** + * @param string $tab_name + * @return array + */ + private static function get_tracking_data_from_tools( $tab_name ) { + return self::get_tracking_data_from_settings_page( + Plugin::$instance->tools->get_tabs(), + $tab_name + ); + } + + private static function get_tracking_data_from_settings_page( $tabs, $tab_name ) { + $result = []; + + if ( empty( $tabs[ $tab_name ] ) ) { + return $result; + } + + $tab = $tabs[ $tab_name ]; + + foreach ( $tab['sections'] as $section_name => $section ) { + foreach ( $section['fields'] as $field_name => $field ) { + // Skips fields with '_' prefix. + if ( '_' === $field_name[0] ) { + continue; + } + + $default_value = null; + $args = $field['field_args']; + switch ( $args['type'] ) { + case 'checkbox': + $default_value = $args['value']; + break; + + case 'select': + case 'checkbox_list_cpt': + $default_value = $args['std']; + break; + + case 'checkbox_list_roles': + $default_value = null; + break; + + // 'raw_html' is used as action and not as data. + case 'raw_html': + continue 2; // Skip fields loop. + + default: + trigger_error( 'Invalid type: \'' . $args['type'] . '\'' ); // phpcs:ignore + } + + $result[ $field_name ] = get_option( 'elementor_' . $field_name, $default_value ); + } + } + + return $result; + } +} diff --git a/wp-content/plugins/elementor/includes/user.php b/wp-content/plugins/elementor/includes/user.php new file mode 100644 index 0000000..9597f38 --- /dev/null +++ b/wp-content/plugins/elementor/includes/user.php @@ -0,0 +1,414 @@ +register_ajax_action( 'introduction_viewed', [ __CLASS__, 'set_introduction_viewed' ] ); + $ajax->register_ajax_action( 'beta_tester_signup', [ __CLASS__, 'register_as_beta_tester' ] ); + $ajax->register_ajax_action( 'dismissed_editor_notices', [ __CLASS__, 'set_dismissed_editor_notices' ] ); + } + + /** + * Is current user can edit. + * + * Whether the current user can edit the post. + * + * @since 1.0.0 + * @access public + * @static + * + * @param int $post_id Optional. The post ID. Default is `0`. + * + * @return bool Whether the current user can edit the post. + */ + public static function is_current_user_can_edit( $post_id = 0 ) { + $post = get_post( $post_id ); + + if ( ! $post ) { + return false; + } + + if ( 'trash' === get_post_status( $post->ID ) ) { + return false; + } + + if ( ! self::is_current_user_can_edit_post_type( $post->post_type ) ) { + return false; + } + + $post_type_object = get_post_type_object( $post->post_type ); + + if ( ! isset( $post_type_object->cap->edit_post ) ) { + return false; + } + + $edit_cap = $post_type_object->cap->edit_post; + if ( ! current_user_can( $edit_cap, $post->ID ) ) { + return false; + } + + if ( intval( get_option( 'page_for_posts' ) ) === $post->ID ) { + return false; + } + + return true; + } + + /** + * Is current user can access elementor. + * + * Whether the current user role is not excluded by Elementor Settings. + * + * @since 2.1.7 + * @access public + * @static + * + * @return bool True if can access, False otherwise. + */ + public static function is_current_user_in_editing_black_list() { + $user = wp_get_current_user(); + $exclude_roles = get_option( 'elementor_exclude_user_roles', [] ); + + $compare_roles = array_intersect( $user->roles, $exclude_roles ); + if ( ! empty( $compare_roles ) ) { + return false; + } + + return true; + } + + /** + * Is current user can edit post type. + * + * Whether the current user can edit the given post type. + * + * @since 1.9.0 + * @access public + * @static + * + * @param string $post_type the post type slug to check. + * + * @return bool True if can edit, False otherwise. + */ + public static function is_current_user_can_edit_post_type( $post_type ) { + if ( ! self::is_current_user_in_editing_black_list() ) { + return false; + } + + if ( ! Utils::is_post_type_support( $post_type ) ) { + return false; + } + + $post_type_object = get_post_type_object( $post_type ); + + if ( ! current_user_can( $post_type_object->cap->edit_posts ) ) { + return false; + } + + return true; + } + + /** + * Get user notices. + * + * Retrieve the list of notices for the current user. + * + * @since 2.0.0 + * @access public + * @static + * + * @return array A list of user notices. + */ + public static function get_user_notices() { + $notices = get_user_meta( get_current_user_id(), self::ADMIN_NOTICES_KEY, true ); + return is_array( $notices ) ? $notices : []; + } + + /** + * Is admin notice viewed. + * + * Whether the admin notice was viewed by the current user. + * + * @since 1.0.0 + * @access public + * @static + * + * @param int $notice_id The notice ID. + * + * @return bool Whether the admin notice was viewed by the user. + */ + public static function is_user_notice_viewed( $notice_id ) { + $notices = self::get_user_notices(); + + if ( empty( $notices[ $notice_id ] ) ) { + return false; + } + + // BC: Handles old structure ( `[ 'notice_id' => 'true' ]` ). + if ( 'true' === $notices[ $notice_id ] ) { + return true; + } + + return $notices[ $notice_id ]['is_viewed'] ?? false; + } + + /** + * Checks whether the current user is allowed to upload JSON files. + * + * Note: The 'json-upload' capability is managed by the Role Manager as a part of its blacklist restrictions. + * In this context, we are negating the user's permission check to use it as a whitelist, allowing uploads. + * + * @return bool Whether the current user can upload JSON files. + */ + public static function is_current_user_can_upload_json() { + return current_user_can( 'manage_options' ) || ! Plugin::instance()->role_manager->user_can( 'json-upload' ); + } + + public static function is_current_user_can_use_custom_html() { + return current_user_can( 'manage_options' ) || ! Plugin::instance()->role_manager->user_can( 'custom-html' ); + } + + /** + * Set admin notice as viewed. + * + * Flag the admin notice as viewed by the current user, using an authenticated ajax request. + * + * Fired by `wp_ajax_elementor_set_admin_notice_viewed` action. + * + * @since 1.0.0 + * @access public + * @static + */ + public static function ajax_set_admin_notice_viewed() { + // phpcs:ignore WordPress.Security.NonceVerification.NoNonceVerification + $notice_id = Utils::get_super_global_value( $_REQUEST, 'notice_id' ); + + if ( ! $notice_id ) { + wp_die(); + } + + self::set_user_notice( $notice_id ); + + if ( ! wp_doing_ajax() ) { + wp_safe_redirect( admin_url() ); + die; + } + + wp_die(); + } + + /** + * @param $notice_id + * @param $is_viewed + * @param $meta + * + * @return void + */ + public static function set_user_notice( $notice_id, $is_viewed = true, $meta = null ) { + $notices = self::get_user_notices(); + + if ( ! is_array( $meta ) ) { + $meta = $notices[ $notice_id ]['meta'] ?? []; + } + + $notices[ $notice_id ] = [ + 'is_viewed' => $is_viewed, + 'meta' => $meta, + ]; + + update_user_meta( get_current_user_id(), self::ADMIN_NOTICES_KEY, $notices ); + } + + /** + * @since 2.1.0 + * @access public + * @static + */ + public static function set_introduction_viewed( array $data ) { + $user_introduction_meta = self::get_introduction_meta(); + + $user_introduction_meta[ $data['introductionKey'] ] = true; + + update_user_meta( get_current_user_id(), self::INTRODUCTION_KEY, $user_introduction_meta ); + } + + /** + * @throws \Exception + */ + public static function register_as_beta_tester( array $data ) { + if ( ! current_user_can( 'install_plugins' ) ) { + throw new \Exception( __( 'You do not have permissions to install plugins on this site.', 'elementor' ) ); + } + + update_user_meta( get_current_user_id(), self::BETA_TESTER_META_KEY, true ); + $response = wp_safe_remote_post( + self::BETA_TESTER_API_URL, + [ + 'timeout' => 25, + 'body' => [ + 'api_version' => ELEMENTOR_VERSION, + 'site_lang' => get_bloginfo( 'language' ), + 'beta_tester_email' => $data['betaTesterEmail'], + ], + ] + ); + + $response_code = (int) wp_remote_retrieve_response_code( $response ); + + if ( 200 === $response_code ) { + self::set_introduction_viewed( [ + 'introductionKey' => Beta_Testers::BETA_TESTER_SIGNUP, + ] ); + } + } + + /** + * @param string $key + * + * @return array|mixed|string + * @since 2.1.0 + * @access public + * @static + */ + public static function get_introduction_meta( $key = '' ) { + $user_introduction_meta = get_user_meta( get_current_user_id(), self::INTRODUCTION_KEY, true ); + + if ( ! $user_introduction_meta ) { + $user_introduction_meta = []; + } + + if ( $key ) { + return empty( $user_introduction_meta[ $key ] ) ? '' : $user_introduction_meta[ $key ]; + } + + return $user_introduction_meta; + } + + /** + * Get a user option with default value as fallback. + * + * @param string $option - Option key. + * @param int $user_id - User ID + * @param mixed $default - Default fallback value. + * + * @return mixed + */ + public static function get_user_option_with_default( $option, $user_id, $default ) { + $value = get_user_option( $option, $user_id ); + + return ( false === $value ) ? $default : $value; + } + + /** + * Get dismissed editor notices. + * + * Retrieve the list of dismissed editor notices for the current user. + * + * @since 3.19.0 + * @access public + * @static + * + * @return array A list of dismissed editor notices. + */ + public static function get_dismissed_editor_notices() { + $notices = get_user_meta( get_current_user_id(), self::DISMISSED_EDITOR_NOTICES_KEY, true ); + + return is_array( $notices ) ? $notices : []; + } + + /** + * Set dismissed editor notices for the current user. + * + * @since 3.19.0 + * @access public + * @static + * + * @param array $data Editor notices. + * + * @return void + */ + public static function set_dismissed_editor_notices( array $data ) { + $editor_notices = self::get_dismissed_editor_notices(); + + if ( ! in_array( $data['dismissId'], $editor_notices, true ) ) { + $editor_notices[] = $data['dismissId']; + + update_user_meta( get_current_user_id(), self::DISMISSED_EDITOR_NOTICES_KEY, $editor_notices ); + } + } +} diff --git a/wp-content/plugins/elementor/includes/utils.php b/wp-content/plugins/elementor/includes/utils.php new file mode 100644 index 0000000..6067874 --- /dev/null +++ b/wp-content/plugins/elementor/includes/utils.php @@ -0,0 +1,876 @@ + [ + 'iframe' => [ + 'allow' => true, + 'allowfullscreen' => true, + 'frameborder' => true, + 'height' => true, + 'loading' => true, + 'name' => true, + 'referrerpolicy' => true, + 'sandbox' => true, + 'src' => true, + 'width' => true, + ], + ], + 'svg' => [ + 'svg' => [ + 'aria-hidden' => true, + 'aria-labelledby' => true, + 'class' => true, + 'height' => true, + 'role' => true, + 'viewbox' => true, + 'width' => true, + 'xmlns' => true, + ], + 'g' => [ + 'fill' => true, + ], + 'title' => [ + 'title' => true, + ], + 'path' => [ + 'd' => true, + 'fill' => true, + ], + ], + 'image' => [ + 'img' => [ + 'srcset' => true, + 'sizes' => true, + ], + ], + ]; + + /** + * Is WP CLI. + * + * @return bool + */ + public static function is_wp_cli() { + return defined( 'WP_CLI' ) && WP_CLI; + } + + /** + * Is script debug. + * + * Whether script debug is enabled or not. + * + * @since 1.0.0 + * @access public + * @static + * + * @return bool True if it's a script debug is active, false otherwise. + */ + public static function is_script_debug() { + return defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG; + } + + /** + * Whether elementor test mode is enabled or not. + * + * @return bool + */ + public static function is_elementor_tests() { + return defined( 'ELEMENTOR_TESTS' ) && ELEMENTOR_TESTS; + } + + /** + * Get pro link. + * + * Retrieve the link to Elementor Pro. + * + * @since 1.7.0 + * @access public + * @static + * + * @param string $link URL to Elementor pro. + * + * @return string Elementor pro link. + */ + public static function get_pro_link( $link ) { + static $theme_name = false; + + if ( ! $theme_name ) { + $theme_obj = wp_get_theme(); + if ( $theme_obj->parent() ) { + $theme_name = $theme_obj->parent()->get( 'Name' ); + } else { + $theme_name = $theme_obj->get( 'Name' ); + } + + $theme_name = sanitize_key( $theme_name ); + } + + $link = add_query_arg( 'utm_term', $theme_name, $link ); + + return $link; + } + + /** + * Replace URLs. + * + * Replace old URLs to new URLs. This method also updates all the Elementor data. + * + * @since 2.1.0 + * @static + * @access public + * + * @param $from + * @param $to + * + * @return string + * @throws \Exception + */ + public static function replace_urls( $from, $to ) { + $from = trim( $from ); + $to = trim( $to ); + + if ( empty( $from ) ) { + throw new \Exception( 'Couldn’t replace your address because the old URL was not provided. Try again by entering the old URL.' ); + } + + if ( empty( $to ) ) { + throw new \Exception( 'Couldn’t replace your address because the new URL was not provided. Try again by entering the new URL.' ); + } + + if ( $from === $to ) { + throw new \Exception( 'Couldn’t replace your address because both of the URLs provided are identical. Try again by entering different URLs.' ); + } + + $is_valid_urls = ( filter_var( $from, FILTER_VALIDATE_URL ) && filter_var( $to, FILTER_VALIDATE_URL ) ); + + if ( ! $is_valid_urls ) { + throw new \Exception( 'Couldn’t replace your address because at least one of the URLs provided are invalid. Try again by entering valid URLs.' ); + } + + global $wpdb; + $escaped_from = str_replace( '/', '\\/', $from ); + $escaped_to = str_replace( '/', '\\/', $to ); + $meta_value_like = '[%'; // meta_value LIKE '[%' are json formatted + + $rows_affected = $wpdb->query( + $wpdb->prepare( + "UPDATE {$wpdb->postmeta} " . + 'SET `meta_value` = REPLACE(`meta_value`, %s, %s) ' . + "WHERE `meta_key` = '_elementor_data' AND `meta_value` LIKE %s;", + $escaped_from, + $escaped_to, + $meta_value_like + ) + ); + + if ( false === $rows_affected ) { + throw new \Exception( 'An error occurred while replacing URL\'s.' ); + } + + // Allow externals to replace-urls, when they have to. + $rows_affected += (int) apply_filters( 'elementor/tools/replace-urls', 0, $from, $to ); + + Plugin::$instance->files_manager->clear_cache(); + + return sprintf( + /* translators: %d: Number of rows. */ + _n( '%d database row affected.', '%d database rows affected.', $rows_affected, 'elementor' ), + $rows_affected + ); + } + + /** + * Is post supports Elementor. + * + * Whether the post supports editing with Elementor. + * + * @since 1.0.0 + * @access public + * @static + * + * @param int $post_id Optional. Post ID. Default is `0`. + * + * @return string True if post supports editing with Elementor, false otherwise. + */ + public static function is_post_support( $post_id = 0 ) { + $post_type = get_post_type( $post_id ); + + $is_supported = self::is_post_type_support( $post_type ); + + /** + * Is post type support. + * + * Filters whether the post type supports editing with Elementor. + * + * @since 1.0.0 + * @deprecated 2.2.0 Use `elementor/utils/is_post_support` hook Instead. + * + * @param bool $is_supported Whether the post type supports editing with Elementor. + * @param int $post_id Post ID. + * @param string $post_type Post type. + */ + $is_supported = apply_filters( 'elementor/utils/is_post_type_support', $is_supported, $post_id, $post_type ); + + /** + * Is post support. + * + * Filters whether the post supports editing with Elementor. + * + * @since 2.2.0 + * + * @param bool $is_supported Whether the post type supports editing with Elementor. + * @param int $post_id Post ID. + * @param string $post_type Post type. + */ + $is_supported = apply_filters( 'elementor/utils/is_post_support', $is_supported, $post_id, $post_type ); + + return $is_supported; + } + + + /** + * Is post type supports Elementor. + * + * Whether the post type supports editing with Elementor. + * + * @since 2.2.0 + * @access public + * @static + * + * @param string $post_type Post Type. + * + * @return string True if post type supports editing with Elementor, false otherwise. + */ + public static function is_post_type_support( $post_type ) { + if ( ! post_type_exists( $post_type ) ) { + return false; + } + + if ( ! post_type_supports( $post_type, 'elementor' ) ) { + return false; + } + + return true; + } + + /** + * Get placeholder image source. + * + * Retrieve the source of the placeholder image. + * + * @since 1.0.0 + * @access public + * @static + * + * @return string The source of the default placeholder image used by Elementor. + */ + public static function get_placeholder_image_src() { + $placeholder_image = ELEMENTOR_ASSETS_URL . 'images/placeholder.png'; + + /** + * Get placeholder image source. + * + * Filters the source of the default placeholder image used by Elementor. + * + * @since 1.0.0 + * + * @param string $placeholder_image The source of the default placeholder image. + */ + $placeholder_image = apply_filters( 'elementor/utils/get_placeholder_image_src', $placeholder_image ); + + return $placeholder_image; + } + + /** + * Generate random string. + * + * Returns a string containing a hexadecimal representation of random number. + * + * @since 1.0.0 + * @access public + * @static + * + * @return string Random string. + */ + public static function generate_random_string() { + return dechex( rand() ); + } + + /** + * Do not cache. + * + * Tell WordPress cache plugins not to cache this request. + * + * @since 1.0.0 + * @access public + * @static + */ + public static function do_not_cache() { + if ( ! defined( 'DONOTCACHEPAGE' ) ) { + define( 'DONOTCACHEPAGE', true ); + } + + if ( ! defined( 'DONOTCACHEDB' ) ) { + define( 'DONOTCACHEDB', true ); + } + + if ( ! defined( 'DONOTMINIFY' ) ) { + define( 'DONOTMINIFY', true ); + } + + if ( ! defined( 'DONOTCDN' ) ) { + define( 'DONOTCDN', true ); + } + + if ( ! defined( 'DONOTCACHEOBJECT' ) ) { + define( 'DONOTCACHEOBJECT', true ); + } + + // Set the headers to prevent caching for the different browsers. + nocache_headers(); + } + + /** + * Get timezone string. + * + * Retrieve timezone string from the WordPress database. + * + * @since 1.0.0 + * @access public + * @static + * + * @return string Timezone string. + */ + public static function get_timezone_string() { + $current_offset = (float) get_option( 'gmt_offset' ); + $timezone_string = get_option( 'timezone_string' ); + + // Create a UTC+- zone if no timezone string exists. + if ( empty( $timezone_string ) ) { + if ( $current_offset < 0 ) { + $timezone_string = 'UTC' . $current_offset; + } else { + $timezone_string = 'UTC+' . $current_offset; + } + } + + return $timezone_string; + } + + /** + * Get create new post URL. + * + * Retrieve a custom URL for creating a new post/page using Elementor. + * + * @since 1.9.0 + * @access public + * @deprecated 3.3.0 Use `Plugin::$instance->documents->get_create_new_post_url()` instead. + * @static + * + * @param string $post_type Optional. Post type slug. Default is 'page'. + * @param string|null $template_type Optional. Query arg 'template_type'. Default is null. + * + * @return string A URL for creating new post using Elementor. + */ + public static function get_create_new_post_url( $post_type = 'page', $template_type = null ) { + Plugin::$instance->modules_manager->get_modules( 'dev-tools' )->deprecation->deprecated_function( __FUNCTION__, '3.3.0', 'Plugin::$instance->documents->get_create_new_post_url()' ); + + return Plugin::$instance->documents->get_create_new_post_url( $post_type, $template_type ); + } + + /** + * Get post autosave. + * + * Retrieve an autosave for any given post. + * + * @since 1.9.2 + * @access public + * @static + * + * @param int $post_id Post ID. + * @param int $user_id Optional. User ID. Default is `0`. + * + * @return \WP_Post|false Post autosave or false. + */ + public static function get_post_autosave( $post_id, $user_id = 0 ) { + global $wpdb; + + $post = get_post( $post_id ); + + $where = $wpdb->prepare( 'post_parent = %d AND post_name LIKE %s AND post_modified_gmt > %s', [ $post_id, "{$post_id}-autosave%", $post->post_modified_gmt ] ); + + if ( $user_id ) { + $where .= $wpdb->prepare( ' AND post_author = %d', $user_id ); + } + + $revision = $wpdb->get_row( "SELECT * FROM $wpdb->posts WHERE $where AND post_type = 'revision'" ); // phpcs:ignore WordPress.DB.PreparedSQL.InterpolatedNotPrepared + + if ( $revision ) { + $revision = new \WP_Post( $revision ); + } else { + $revision = false; + } + + return $revision; + } + + /** + * Is CPT supports custom templates. + * + * Whether the Custom Post Type supports templates. + * + * @since 2.0.0 + * @access public + * @static + * + * @return bool True is templates are supported, False otherwise. + */ + public static function is_cpt_custom_templates_supported() { + require_once ABSPATH . '/wp-admin/includes/theme.php'; + + return method_exists( wp_get_theme(), 'get_post_templates' ); + } + + /** + * @since 2.1.2 + * @access public + * @static + */ + public static function array_inject( $array, $key, $insert ) { + $length = array_search( $key, array_keys( $array ), true ) + 1; + + return array_slice( $array, 0, $length, true ) + + $insert + + array_slice( $array, $length, null, true ); + } + + /** + * Render html attributes + * + * @access public + * @static + * @param array $attributes + * + * @return string + */ + public static function render_html_attributes( array $attributes ) { + $rendered_attributes = []; + + foreach ( $attributes as $attribute_key => $attribute_values ) { + if ( is_array( $attribute_values ) ) { + $attribute_values = implode( ' ', $attribute_values ); + } + + $rendered_attributes[] = sprintf( '%1$s="%2$s"', $attribute_key, esc_attr( $attribute_values ) ); + } + + return implode( ' ', $rendered_attributes ); + } + + /** + * Safe print html attributes + * + * @access public + * @static + * @param array $attributes + */ + public static function print_html_attributes( array $attributes ) { + // PHPCS - the method render_html_attributes is safe. + echo self::render_html_attributes( $attributes ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped + } + + public static function get_meta_viewport( $context = '' ) { + $meta_tag = ''; + + /** + * Viewport meta tag. + * + * Filters the meta tag containing the viewport information. + * + * This hook can be used to change the intial viewport meta tag set by Elementor + * and replace it with a different viewport tag. + * + * @since 2.5.0 + * + * @param string $meta_tag Viewport meta tag. + * @param string $context Page context. + */ + $meta_tag = apply_filters( 'elementor/template/viewport_tag', $meta_tag, $context ); + + return $meta_tag; + } + + /** + * Add Elementor Config js vars to the relevant script handle, + * WP will wrap it with + + + +
    + <# + if ( settings.tabs ) { + var tabindex = view.getIDInt().toString().substr( 0, 3 ), + iconHTML = elementor.helpers.renderIcon( view, settings.selected_icon, {}, 'i' , 'object' ), + iconActiveHTML = elementor.helpers.renderIcon( view, settings.selected_active_icon, {}, 'i' , 'object' ), + migrated = elementor.helpers.isIconMigrated( settings, 'selected_icon' ); + + _.each( settings.tabs, function( item, index ) { + var tabCount = index + 1, + tabTitleKey = view.getRepeaterSettingKey( 'tab_title', 'tabs', index ), + tabContentKey = view.getRepeaterSettingKey( 'tab_content', 'tabs', index ); + + view.addRenderAttribute( tabTitleKey, { + 'id': 'elementor-tab-title-' + tabindex + tabCount, + 'class': [ 'elementor-tab-title' ], + 'tabindex': tabindex + tabCount, + 'data-tab': tabCount, + 'role': 'button', + 'aria-controls': 'elementor-tab-content-' + tabindex + tabCount, + 'aria-expanded': 'false', + } ); + + view.addRenderAttribute( tabContentKey, { + 'id': 'elementor-tab-content-' + tabindex + tabCount, + 'class': [ 'elementor-tab-content', 'elementor-clearfix' ], + 'data-tab': tabCount, + 'role': 'region', + 'aria-labelledby': 'elementor-tab-title-' + tabindex + tabCount + } ); + + view.addInlineEditingAttributes( tabContentKey, 'advanced' ); + + var titleHTMLTag = elementor.helpers.validateHTMLTag( settings.title_html_tag ); + #> +
    + <{{{ titleHTMLTag }}} {{{ view.getRenderAttributeString( tabTitleKey ) }}}> + <# if ( settings.icon || settings.selected_icon ) { #> + + <# } #> + {{{ item.tab_title }}} + +
    {{{ item.tab_content }}}
    +
    + <# + } ); + } #> +
    + start_controls_section( + 'section_alert', + [ + 'label' => esc_html__( 'Alert', 'elementor' ), + ] + ); + + $this->add_control( + 'alert_type', + [ + 'label' => esc_html__( 'Type', 'elementor' ), + 'type' => Controls_Manager::SELECT, + 'default' => 'info', + 'options' => [ + 'info' => esc_html__( 'Info', 'elementor' ), + 'success' => esc_html__( 'Success', 'elementor' ), + 'warning' => esc_html__( 'Warning', 'elementor' ), + 'danger' => esc_html__( 'Danger', 'elementor' ), + ], + 'style_transfer' => true, + ] + ); + + $this->add_control( + 'alert_title', + [ + 'label' => esc_html__( 'Title', 'elementor' ), + 'type' => Controls_Manager::TEXT, + 'placeholder' => esc_html__( 'Enter your title', 'elementor' ), + 'default' => esc_html__( 'This is an Alert', 'elementor' ), + 'label_block' => true, + 'dynamic' => [ + 'active' => true, + ], + ] + ); + + $this->add_control( + 'alert_description', + [ + 'label' => esc_html__( 'Content', 'elementor' ), + 'type' => Controls_Manager::TEXTAREA, + 'placeholder' => esc_html__( 'Enter your description', 'elementor' ), + 'default' => esc_html__( 'I am a description. Click the edit button to change this text.', 'elementor' ), + 'dynamic' => [ + 'active' => true, + ], + ] + ); + + $this->add_control( + 'show_dismiss', + [ + 'label' => esc_html__( 'Dismiss Icon', 'elementor' ), + 'type' => Controls_Manager::SWITCHER, + 'label_on' => esc_html__( 'Show', 'elementor' ), + 'label_off' => esc_html__( 'Hide', 'elementor' ), + 'return_value' => 'show', + 'default' => 'show', + ] + ); + + $this->add_control( + 'dismiss_icon', + [ + 'label' => esc_html__( 'Icon', 'elementor' ), + 'type' => Controls_Manager::ICONS, + 'fa4compatibility' => 'icon', + 'skin' => 'inline', + 'label_block' => false, + 'render_type' => 'template', + 'skin_settings' => [ + 'inline' => [ + 'none' => [ + 'label' => 'Default', + 'icon' => 'eicon-close', + ], + 'icon' => [ + 'icon' => 'eicon-star', + ], + ], + ], + 'recommended' => [ + 'fa-regular' => [ + 'times-circle', + ], + 'fa-solid' => [ + 'times', + 'times-circle', + ], + ], + 'condition' => [ + 'show_dismiss' => 'show', + ], + ] + ); + + $this->end_controls_section(); + + $this->start_controls_section( + 'section_type', + [ + 'label' => esc_html__( 'Alert', 'elementor' ), + 'tab' => Controls_Manager::TAB_STYLE, + ] + ); + + $this->add_control( + 'background', + [ + 'label' => esc_html__( 'Background Color', 'elementor' ), + 'type' => Controls_Manager::COLOR, + 'selectors' => [ + '{{WRAPPER}} .elementor-alert' => 'background-color: {{VALUE}};', + ], + ] + ); + + $this->add_control( + 'border_color', + [ + 'label' => esc_html__( 'Border Color', 'elementor' ), + 'type' => Controls_Manager::COLOR, + 'selectors' => [ + '{{WRAPPER}} .elementor-alert' => 'border-color: {{VALUE}};', + ], + ] + ); + + $this->add_control( + 'border_left-width', + [ + 'label' => esc_html__( 'Left Border Width', 'elementor' ), + 'type' => Controls_Manager::SLIDER, + 'size_units' => [ 'px', '%', 'em', 'rem', 'custom' ], + 'range' => [ + 'px' => [ + 'max' => 100, + ], + 'em' => [ + 'max' => 10, + ], + ], + 'selectors' => [ + '{{WRAPPER}} .elementor-alert' => 'border-left-width: {{SIZE}}{{UNIT}};', + ], + ] + ); + + $this->end_controls_section(); + + $this->start_controls_section( + 'section_title', + [ + 'label' => esc_html__( 'Title', 'elementor' ), + 'tab' => Controls_Manager::TAB_STYLE, + ] + ); + + $this->add_control( + 'title_color', + [ + 'label' => esc_html__( 'Text Color', 'elementor' ), + 'type' => Controls_Manager::COLOR, + 'selectors' => [ + '{{WRAPPER}} .elementor-alert-title' => 'color: {{VALUE}};', + ], + ] + ); + + $this->add_group_control( + Group_Control_Typography::get_type(), + [ + 'name' => 'alert_title', + 'selector' => '{{WRAPPER}} .elementor-alert-title', + 'global' => [ + 'default' => Global_Typography::TYPOGRAPHY_PRIMARY, + ], + ] + ); + + $this->add_group_control( + Group_Control_Text_Shadow::get_type(), + [ + 'name' => 'title_shadow', + 'selector' => '{{WRAPPER}} .elementor-alert-title', + ] + ); + + $this->end_controls_section(); + + $this->start_controls_section( + 'section_description', + [ + 'label' => esc_html__( 'Description', 'elementor' ), + 'tab' => Controls_Manager::TAB_STYLE, + ] + ); + + $this->add_control( + 'description_color', + [ + 'label' => esc_html__( 'Text Color', 'elementor' ), + 'type' => Controls_Manager::COLOR, + 'selectors' => [ + '{{WRAPPER}} .elementor-alert-description' => 'color: {{VALUE}};', + ], + ] + ); + + $this->add_group_control( + Group_Control_Typography::get_type(), + [ + 'name' => 'alert_description', + 'selector' => '{{WRAPPER}} .elementor-alert-description', + 'global' => [ + 'default' => Global_Typography::TYPOGRAPHY_TEXT, + ], + ] + ); + + $this->add_group_control( + Group_Control_Text_Shadow::get_type(), + [ + 'name' => 'description_shadow', + 'selector' => '{{WRAPPER}} .elementor-alert-description', + ] + ); + + $this->end_controls_section(); + + $this->start_controls_section( + 'section_dismiss_icon', + [ + 'label' => esc_html__( 'Dismiss Icon', 'elementor' ), + 'tab' => Controls_Manager::TAB_STYLE, + 'condition' => [ + 'show_dismiss' => 'show', + ], + ] + ); + + $this->add_responsive_control( + 'dismiss_icon_size', + [ + 'label' => esc_html__( 'Size', 'elementor' ), + 'type' => Controls_Manager::SLIDER, + 'size_units' => [ 'px', 'em', 'rem', 'custom' ], + 'range' => [ + 'px' => [ + 'max' => 100, + ], + 'em' => [ + 'max' => 10, + ], + 'rem' => [ + 'max' => 10, + ], + ], + 'selectors' => [ + '{{WRAPPER}}' => '--dismiss-icon-size: {{SIZE}}{{UNIT}};', + ], + ] + ); + + $this->add_responsive_control( + 'dismiss_icon_vertical_position', + [ + 'label' => esc_html__( 'Vertical Position', 'elementor' ), + 'type' => Controls_Manager::SLIDER, + 'range' => [ + 'px' => [ + 'min' => -100, + 'max' => 100, + ], + ], + 'size_units' => [ 'px', '%', 'em', 'rem', 'vh', 'custom' ], + 'selectors' => [ + '{{WRAPPER}}' => '--dismiss-icon-vertical-position: {{SIZE}}{{UNIT}};', + ], + ] + ); + + $this->add_responsive_control( + 'dismiss_icon_horizontal_position', + [ + 'label' => esc_html__( 'Horizontal Position', 'elementor' ), + 'type' => Controls_Manager::SLIDER, + 'range' => [ + 'px' => [ + 'min' => -100, + 'max' => 100, + ], + ], + 'size_units' => [ 'px', '%', 'em', 'rem', 'vw', 'custom' ], + 'selectors' => [ + '{{WRAPPER}}' => '--dismiss-icon-horizontal-position: {{SIZE}}{{UNIT}};', + ], + ] + ); + + $this->start_controls_tabs( 'dismiss_icon_colors' ); + + $this->start_controls_tab( 'dismiss_icon_normal_colors', [ + 'label' => esc_html__( 'Normal', 'elementor' ), + ] ); + + $this->add_control( + 'dismiss_icon_normal_color', + [ + 'label' => esc_html__( 'Color', 'elementor' ), + 'type' => Controls_Manager::COLOR, + 'selectors' => [ + '{{WRAPPER}}' => '--dismiss-icon-normal-color: {{VALUE}};', + ], + ] + ); + + $this->end_controls_tab(); + + $this->start_controls_tab( 'dismiss_icon_hover_colors', [ + 'label' => esc_html__( 'Hover', 'elementor' ), + ] ); + + $this->add_control( + 'dismiss_icon_hover_color', + [ + 'label' => esc_html__( 'Color', 'elementor' ), + 'type' => Controls_Manager::COLOR, + 'selectors' => [ + '{{WRAPPER}}' => '--dismiss-icon-hover-color: {{VALUE}};', + ], + ] + ); + + $this->add_control( + 'dismiss_icon_hover_transition_duration', + [ + 'label' => esc_html__( 'Transition Duration', 'elementor' ) . ' (s)', + 'type' => Controls_Manager::SLIDER, + 'range' => [ + 'px' => [ + 'min' => 0, + 'max' => 3, + 'step' => 0.1, + ], + ], + 'selectors' => [ + '{{WRAPPER}}' => '--dismiss-icon-hover-transition-duration: {{SIZE}}s', + ], + ] + ); + + $this->end_controls_tab(); + + $this->end_controls_tabs(); + + $this->end_controls_section(); + } + + /** + * Render alert widget output on the frontend. + * + * Written in PHP and used to generate the final HTML. + * + * @since 1.0.0 + * @access protected + */ + protected function render() { + $settings = $this->get_settings_for_display(); + + if ( Utils::is_empty( $settings['alert_title'] ) ) { + return; + } + + if ( ! empty( $settings['alert_type'] ) ) { + $this->add_render_attribute( 'wrapper', 'class', 'elementor-alert elementor-alert-' . $settings['alert_type'] ); + } + + $this->add_render_attribute( 'wrapper', 'role', 'alert' ); + + $this->add_render_attribute( 'alert_title', 'class', 'elementor-alert-title' ); + + $this->add_inline_editing_attributes( 'alert_title', 'none' ); + ?> +
    print_render_attribute_string( 'wrapper' ); ?>> + print_render_attribute_string( 'alert_title' ); ?>>print_unescaped_setting( 'alert_title' ); ?> + add_render_attribute( 'alert_description', 'class', 'elementor-alert-description' ); + + $this->add_inline_editing_attributes( 'alert_description' ); + ?> + print_render_attribute_string( 'alert_description' ); ?>>print_unescaped_setting( 'alert_description' ); ?> + + + + +
    + + <# if ( settings.alert_title ) { + view.addRenderAttribute( { + alert_title: { class: 'elementor-alert-title' }, + alert_description: { class: 'elementor-alert-description' } + } ); + + view.addInlineEditingAttributes( 'alert_title', 'none' ); + view.addInlineEditingAttributes( 'alert_description' ); + + var iconHTML = elementor.helpers.renderIcon( view, settings.dismiss_icon, { 'aria-hidden': true }, 'i' , 'object' ), + migrated = elementor.helpers.isIconMigrated( settings, 'dismiss_icon' ); + #> + + <# } #> + start_controls_section( + 'section_audio', + [ + 'label' => esc_html__( 'SoundCloud', 'elementor' ), + ] + ); + + $this->add_control( + 'link', + [ + 'label' => esc_html__( 'Link', 'elementor' ), + 'type' => Controls_Manager::URL, + 'dynamic' => [ + 'active' => true, + 'categories' => [ + TagsModule::POST_META_CATEGORY, + TagsModule::URL_CATEGORY, + ], + ], + 'default' => [ + 'url' => 'https://soundcloud.com/shchxango/john-coltrane-1963-my-favorite', + ], + 'options' => false, + ] + ); + + $this->add_control( + 'visual', + [ + 'label' => esc_html__( 'Visual Player', 'elementor' ), + 'type' => Controls_Manager::SELECT, + 'default' => 'no', + 'options' => [ + 'yes' => esc_html__( 'Yes', 'elementor' ), + 'no' => esc_html__( 'No', 'elementor' ), + ], + ] + ); + + $this->add_control( + 'sc_options', + [ + 'label' => esc_html__( 'Additional Options', 'elementor' ), + 'type' => Controls_Manager::HEADING, + 'separator' => 'before', + ] + ); + + $this->add_control( + 'sc_auto_play', + [ + 'label' => esc_html__( 'Autoplay', 'elementor' ), + 'type' => Controls_Manager::SWITCHER, + ] + ); + + $this->add_control( + 'sc_buying', + [ + 'label' => esc_html__( 'Buy Button', 'elementor' ), + 'type' => Controls_Manager::SWITCHER, + 'label_off' => esc_html__( 'Hide', 'elementor' ), + 'label_on' => esc_html__( 'Show', 'elementor' ), + 'default' => 'yes', + ] + ); + + $this->add_control( + 'sc_liking', + [ + 'label' => esc_html__( 'Like Button', 'elementor' ), + 'type' => Controls_Manager::SWITCHER, + 'label_off' => esc_html__( 'Hide', 'elementor' ), + 'label_on' => esc_html__( 'Show', 'elementor' ), + 'default' => 'yes', + ] + ); + + $this->add_control( + 'sc_download', + [ + 'label' => esc_html__( 'Download Button', 'elementor' ), + 'type' => Controls_Manager::SWITCHER, + 'label_off' => esc_html__( 'Hide', 'elementor' ), + 'label_on' => esc_html__( 'Show', 'elementor' ), + 'default' => 'yes', + ] + ); + + $this->add_control( + 'sc_show_artwork', + [ + 'label' => esc_html__( 'Artwork', 'elementor' ), + 'type' => Controls_Manager::SWITCHER, + 'label_off' => esc_html__( 'Hide', 'elementor' ), + 'label_on' => esc_html__( 'Show', 'elementor' ), + 'default' => 'yes', + 'condition' => [ + 'visual' => 'no', + ], + ] + ); + + $this->add_control( + 'sc_sharing', + [ + 'label' => esc_html__( 'Share Button', 'elementor' ), + 'type' => Controls_Manager::SWITCHER, + 'label_off' => esc_html__( 'Hide', 'elementor' ), + 'label_on' => esc_html__( 'Show', 'elementor' ), + 'default' => 'yes', + ] + ); + + $this->add_control( + 'sc_show_comments', + [ + 'label' => esc_html__( 'Comments', 'elementor' ), + 'type' => Controls_Manager::SWITCHER, + 'label_off' => esc_html__( 'Hide', 'elementor' ), + 'label_on' => esc_html__( 'Show', 'elementor' ), + 'default' => 'yes', + ] + ); + + $this->add_control( + 'sc_show_playcount', + [ + 'label' => esc_html__( 'Play Counts', 'elementor' ), + 'type' => Controls_Manager::SWITCHER, + 'label_off' => esc_html__( 'Hide', 'elementor' ), + 'label_on' => esc_html__( 'Show', 'elementor' ), + 'default' => 'yes', + ] + ); + + $this->add_control( + 'sc_show_user', + [ + 'label' => esc_html__( 'Username', 'elementor' ), + 'type' => Controls_Manager::SWITCHER, + 'label_off' => esc_html__( 'Hide', 'elementor' ), + 'label_on' => esc_html__( 'Show', 'elementor' ), + 'default' => 'yes', + ] + ); + + $this->add_control( + 'sc_color', + [ + 'label' => esc_html__( 'Controls Color', 'elementor' ), + 'type' => Controls_Manager::COLOR, + ] + ); + + $this->end_controls_section(); + + } + + /** + * Render audio widget output on the frontend. + * + * Written in PHP and used to generate the final HTML. + * + * @since 1.0.0 + * @access protected + */ + protected function render() { + $settings = $this->get_settings_for_display(); + + if ( empty( $settings['link'] ) ) { + return; + } + + $this->_current_instance = $settings; + + add_filter( 'oembed_result', [ $this, 'filter_oembed_result' ], 50, 3 ); + $video_html = wp_oembed_get( $settings['link']['url'], wp_embed_defaults() ); + remove_filter( 'oembed_result', [ $this, 'filter_oembed_result' ], 50 ); + + if ( $video_html ) : ?> +
    + +
    + _current_instance[ 'sc_' . $param_key ] ? 'true' : 'false'; + } + + $params['color'] = str_replace( '#', '', $this->_current_instance['sc_color'] ); + + preg_match( '/<\/iframe>/isU', $html, $matches ); + + $url = esc_url( add_query_arg( $params, $matches[1] ) ); + + $visual = 'yes' === $this->_current_instance['visual'] ? 'true' : 'false'; + + $html = str_replace( [ $matches[1], 'visual=true' ], [ $url, 'visual=' . $visual ], $html ); + + if ( 'false' === $visual ) { + $html = str_replace( 'height="400"', 'height="200"', $html ); + } + + return $html; + } + + /** + * Render audio widget output in the editor. + * + * Written as a Backbone JavaScript template and used to generate the live preview. + * + * @since 2.9.0 + * @access protected + */ + protected function content_template() {} +} diff --git a/wp-content/plugins/elementor/includes/widgets/button.php b/wp-content/plugins/elementor/includes/widgets/button.php new file mode 100644 index 0000000..746e207 --- /dev/null +++ b/wp-content/plugins/elementor/includes/widgets/button.php @@ -0,0 +1,138 @@ + ! Utils::has_pro(), + 'image' => esc_url( ELEMENTOR_ASSETS_URL . 'images/go-pro.svg' ), + 'image_alt' => esc_attr__( 'Upgrade', 'elementor' ), + 'title' => esc_html__( 'Convert visitors into customers', 'elementor' ), + 'description' => esc_html__( 'Get the Call to Action widget and grow your toolbox with Elementor Pro.', 'elementor' ), + 'upgrade_url' => esc_url( 'https://go.elementor.com/go-pro-button-widget/' ), + 'upgrade_text' => esc_html__( 'Upgrade Now', 'elementor' ), + ]; + } + + protected function register_controls() { + $this->start_controls_section( + 'section_button', + [ + 'label' => esc_html__( 'Button', 'elementor' ), + ] + ); + + $this->register_button_content_controls(); + + $this->end_controls_section(); + + $this->start_controls_section( + 'section_style', + [ + 'label' => esc_html__( 'Button', 'elementor' ), + 'tab' => Controls_Manager::TAB_STYLE, + ] + ); + + $this->register_button_style_controls(); + + $this->end_controls_section(); + } + + /** + * Render button widget output on the frontend. + * + * Written in PHP and used to generate the final HTML. + * + * @since 1.0.0 + * @access protected + */ + protected function render() { + $this->render_button(); + } +} diff --git a/wp-content/plugins/elementor/includes/widgets/common.php b/wp-content/plugins/elementor/includes/widgets/common.php new file mode 100644 index 0000000..2c229c8 --- /dev/null +++ b/wp-content/plugins/elementor/includes/widgets/common.php @@ -0,0 +1,1175 @@ +modules_manager->get_modules( 'dev-tools' )->deprecation->deprecated_function( __METHOD__, '3.7.0' ); + + $device_args = []; + $breakpoints = Plugin::$instance->breakpoints->get_active_breakpoints(); + + foreach ( $breakpoints as $breakpoint_key => $breakpoint ) { + // If the device is not excluded, add it to the device args array. + if ( ! in_array( $breakpoint_key, $devices_to_exclude, true ) ) { + $parsed_device_args = $this->parse_device_args_placeholders( $args, $breakpoint_key ); + + $device_args[ $breakpoint_key ] = $parsed_device_args; + } + } + + return $device_args; + } + + /** + * Parse Device Args Placeholders + * + * Receives an array of args. Iterates over the args, and replaces the {{DEVICE}} placeholder, if exists, with the + * passed breakpoint key. + * + * @since 3.4.7 + * @access private + * + * @param array $args + * @param string $breakpoint_key + * @return array parsed device args + */ + private function parse_device_args_placeholders( array $args, $breakpoint_key ) { + $parsed_args = []; + + foreach ( $args as $arg_key => $arg_value ) { + $arg_key = str_replace( '{{DEVICE}}', $breakpoint_key, $arg_key ); + + if ( is_array( $arg_value ) ) { + $arg_value = $this->parse_device_args_placeholders( $arg_value, $breakpoint_key ); + } + + $parsed_args[ $arg_key ] = $arg_value; + } + + return $parsed_args; + } + + /** + * @param $shape String Shape name. + * + * @return string The shape path in the assets folder. + */ + private function get_shape_url( $shape ) { + return ELEMENTOR_ASSETS_URL . 'mask-shapes/' . $shape . '.svg'; + } + + /** + * Return a translated user-friendly list of the available masking shapes. + * + * @param bool $add_custom Determine if the output should contain `Custom` options. + * + * @return array Array of shapes with their URL as key. + */ + private function get_shapes( $add_custom = true ) { + $shapes = [ + 'circle' => esc_html__( 'Circle', 'elementor' ), + 'flower' => esc_html__( 'Flower', 'elementor' ), + 'sketch' => esc_html__( 'Sketch', 'elementor' ), + 'triangle' => esc_html__( 'Triangle', 'elementor' ), + 'blob' => esc_html__( 'Blob', 'elementor' ), + 'hexagon' => esc_html__( 'Hexagon', 'elementor' ), + ]; + + if ( $add_custom ) { + $shapes['custom'] = esc_html__( 'Custom', 'elementor' ); + } + + return $shapes; + } + + /** + * Gets a string of CSS rules to apply, and returns an array of selectors with those rules. + * This function has been created in order to deal with masking for image widget. + * For most of the widgets the mask is being applied to the wrapper itself, but in the case of an image widget, + * the `img` tag should be masked directly. So instead of writing a lot of selectors every time, + * this function builds both of those selectors easily. + * + * @param $rules string The CSS rules to apply. + * + * @return array Selectors with the rules applied. + */ + private function get_mask_selectors( $rules ) { + $mask_selectors = [ + 'default' => '{{WRAPPER}}:not( .elementor-widget-image ) .elementor-widget-container', + 'image' => '{{WRAPPER}}.elementor-widget-image .elementor-widget-container img', + ]; + + return [ + $mask_selectors['default'] => $rules, + $mask_selectors['image'] => $rules, + ]; + } + + /** + * Register the Layout section. + * + * @return void + */ + private function register_layout_section() { + $this->start_controls_section( + '_section_style', + [ + 'label' => esc_html__( 'Layout', 'elementor' ), + 'tab' => Controls_Manager::TAB_ADVANCED, + ] + ); + + // Element Name for the Navigator + $this->add_control( + '_title', + [ + 'label' => esc_html__( 'Title', 'elementor' ), + 'type' => Controls_Manager::HIDDEN, + 'render_type' => 'none', + ] + ); + + $this->add_responsive_control( + '_margin', + [ + 'label' => esc_html__( 'Margin', 'elementor' ), + 'type' => Controls_Manager::DIMENSIONS, + 'size_units' => [ 'px', '%', 'em', 'rem', 'vw', 'custom' ], + 'selectors' => [ + '{{WRAPPER}} > .elementor-widget-container' => 'margin: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};', + ], + ] + ); + + $this->add_responsive_control( + '_padding', + [ + 'label' => esc_html__( 'Padding', 'elementor' ), + 'type' => Controls_Manager::DIMENSIONS, + 'size_units' => [ 'px', '%', 'em', 'rem', 'vw', 'custom' ], + 'selectors' => [ + '{{WRAPPER}} > .elementor-widget-container' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};', + ], + ] + ); + + $experiments_manager = Plugin::$instance->experiments; + $is_container_active = $experiments_manager->is_feature_active( 'container' ); + + $this->add_responsive_control( + '_element_width', + [ + 'label' => esc_html__( 'Width', 'elementor' ), + 'type' => Controls_Manager::SELECT, + 'default' => '', + 'options' => [ + '' => esc_html__( 'Default', 'elementor' ), + 'inherit' => esc_html__( 'Full Width', 'elementor' ) . ' (100%)', + 'auto' => esc_html__( 'Inline', 'elementor' ) . ' (auto)', + 'initial' => esc_html__( 'Custom', 'elementor' ), + ], + 'selectors_dictionary' => [ + 'inherit' => '100%', + ], + 'prefix_class' => 'elementor-widget%s__width-', + 'selectors' => [ + '{{WRAPPER}}' => 'width: {{VALUE}}; max-width: {{VALUE}}', + ], + ] + ); + + $this->add_responsive_control( + '_element_custom_width', + [ + 'label' => esc_html__( 'Custom Width', 'elementor' ), + 'type' => Controls_Manager::SLIDER, + 'size_units' => [ 'px', '%', 'em', 'rem', 'vw', 'custom' ], + 'default' => [ + 'unit' => '%', + ], + 'range' => [ + 'px' => [ + 'max' => 1000, + ], + ], + 'selectors' => [ + '{{WRAPPER}}' => '--container-widget-width: {{SIZE}}{{UNIT}}; --container-widget-flex-grow: 0; width: var( --container-widget-width, {{SIZE}}{{UNIT}} ); max-width: {{SIZE}}{{UNIT}}', + ], + 'condition' => [ '_element_width' => 'initial' ], + ] + ); + + // Register Flex controls only if the Container experiment is active. + if ( $is_container_active ) { + $this->add_group_control( + Group_Control_Flex_Item::get_type(), + [ + 'name' => '_flex', + // Hack to increase specificity and make sure that the current widget overrides the + // parent flex settings. + 'selector' => '{{WRAPPER}}.elementor-element', + 'include' => [ + 'align_self', + 'order', + 'order_custom', + 'size', + 'grow', + 'shrink', + ], + 'fields_options' => [ + 'align_self' => [ + 'separator' => 'before', + ], + ], + ] + ); + } + + $vertical_align_conditions = [ + '_element_width!' => '', + '_position' => '', + ]; + + if ( $is_container_active ) { + $vertical_align_conditions['_element_vertical_align!'] = ''; // TODO: For BC. + } + + // TODO: For BC - Remove in the future. + $this->add_responsive_control( + '_element_vertical_align', + [ + 'label' => esc_html__( 'Vertical Align', 'elementor' ), + 'type' => Controls_Manager::CHOOSE, + 'options' => [ + 'flex-start' => [ + 'title' => esc_html__( 'Start', 'elementor' ), + 'icon' => 'eicon-v-align-top', + ], + 'center' => [ + 'title' => esc_html__( 'Center', 'elementor' ), + 'icon' => 'eicon-v-align-middle', + ], + 'flex-end' => [ + 'title' => esc_html__( 'End', 'elementor' ), + 'icon' => 'eicon-v-align-bottom', + ], + ], + 'condition' => $vertical_align_conditions, + 'selectors' => [ + '{{WRAPPER}}' => 'align-self: {{VALUE}}', + ], + ] + ); + + $this->add_control( + '_position_description', + [ + 'type' => Controls_Manager::ALERT, + 'alert_type' => 'warning', + 'heading' => esc_html__( 'Please note!', 'elementor' ), + 'content' => esc_html__( 'Custom positioning is not considered best practice for responsive web design and should not be used too frequently.', 'elementor' ), + 'render_type' => 'ui', + 'condition' => [ + '_position!' => '', + ], + ] + ); + + $this->add_control( + '_position', + [ + 'label' => esc_html__( 'Position', 'elementor' ), + 'type' => Controls_Manager::SELECT, + 'default' => '', + 'options' => [ + '' => esc_html__( 'Default', 'elementor' ), + 'absolute' => esc_html__( 'Absolute', 'elementor' ), + 'fixed' => esc_html__( 'Fixed', 'elementor' ), + ], + 'prefix_class' => 'elementor-', + 'frontend_available' => true, + 'separator' => 'before', + ] + ); + + $start = is_rtl() ? esc_html__( 'Right', 'elementor' ) : esc_html__( 'Left', 'elementor' ); + $end = ! is_rtl() ? esc_html__( 'Right', 'elementor' ) : esc_html__( 'Left', 'elementor' ); + + $this->add_control( + '_offset_orientation_h', + [ + 'label' => esc_html__( 'Horizontal Orientation', 'elementor' ), + 'type' => Controls_Manager::CHOOSE, + 'toggle' => false, + 'default' => 'start', + 'options' => [ + 'start' => [ + 'title' => $start, + 'icon' => 'eicon-h-align-left', + ], + 'end' => [ + 'title' => $end, + 'icon' => 'eicon-h-align-right', + ], + ], + 'classes' => 'elementor-control-start-end', + 'render_type' => 'ui', + 'condition' => [ + '_position!' => '', + ], + ] + ); + + $this->add_responsive_control( + '_offset_x', + [ + 'label' => esc_html__( 'Offset', 'elementor' ), + 'type' => Controls_Manager::SLIDER, + 'range' => [ + 'px' => [ + 'min' => -1000, + 'max' => 1000, + ], + '%' => [ + 'min' => -200, + 'max' => 200, + ], + 'vw' => [ + 'min' => -200, + 'max' => 200, + ], + 'vh' => [ + 'min' => -200, + 'max' => 200, + ], + ], + 'default' => [ + 'size' => 0, + ], + 'size_units' => [ 'px', '%', 'em', 'rem', 'vw', 'vh', 'custom' ], + 'selectors' => [ + 'body:not(.rtl) {{WRAPPER}}' => 'left: {{SIZE}}{{UNIT}}', + 'body.rtl {{WRAPPER}}' => 'right: {{SIZE}}{{UNIT}}', + ], + 'condition' => [ + '_offset_orientation_h!' => 'end', + '_position!' => '', + ], + ] + ); + + $this->add_responsive_control( + '_offset_x_end', + [ + 'label' => esc_html__( 'Offset', 'elementor' ), + 'type' => Controls_Manager::SLIDER, + 'range' => [ + 'px' => [ + 'min' => -1000, + 'max' => 1000, + ], + '%' => [ + 'min' => -200, + 'max' => 200, + ], + 'vw' => [ + 'min' => -200, + 'max' => 200, + ], + 'vh' => [ + 'min' => -200, + 'max' => 200, + ], + ], + 'default' => [ + 'size' => 0, + ], + 'size_units' => [ 'px', '%', 'em', 'rem', 'vw', 'vh', 'custom' ], + 'selectors' => [ + 'body:not(.rtl) {{WRAPPER}}' => 'right: {{SIZE}}{{UNIT}}', + 'body.rtl {{WRAPPER}}' => 'left: {{SIZE}}{{UNIT}}', + ], + 'condition' => [ + '_offset_orientation_h' => 'end', + '_position!' => '', + ], + ] + ); + + $this->add_control( + '_offset_orientation_v', + [ + 'label' => esc_html__( 'Vertical Orientation', 'elementor' ), + 'type' => Controls_Manager::CHOOSE, + 'toggle' => false, + 'default' => 'start', + 'options' => [ + 'start' => [ + 'title' => esc_html__( 'Top', 'elementor' ), + 'icon' => 'eicon-v-align-top', + ], + 'end' => [ + 'title' => esc_html__( 'Bottom', 'elementor' ), + 'icon' => 'eicon-v-align-bottom', + ], + ], + 'render_type' => 'ui', + 'condition' => [ + '_position!' => '', + ], + ] + ); + + $this->add_responsive_control( + '_offset_y', + [ + 'label' => esc_html__( 'Offset', 'elementor' ), + 'type' => Controls_Manager::SLIDER, + 'range' => [ + 'px' => [ + 'min' => -1000, + 'max' => 1000, + ], + '%' => [ + 'min' => -200, + 'max' => 200, + ], + 'vh' => [ + 'min' => -200, + 'max' => 200, + ], + 'vw' => [ + 'min' => -200, + 'max' => 200, + ], + ], + 'size_units' => [ 'px', '%', 'em', 'rem', 'vh', 'vw', 'custom' ], + 'default' => [ + 'size' => 0, + ], + 'selectors' => [ + '{{WRAPPER}}' => 'top: {{SIZE}}{{UNIT}}', + ], + 'condition' => [ + '_offset_orientation_v!' => 'end', + '_position!' => '', + ], + ] + ); + + $this->add_responsive_control( + '_offset_y_end', + [ + 'label' => esc_html__( 'Offset', 'elementor' ), + 'type' => Controls_Manager::SLIDER, + 'range' => [ + 'px' => [ + 'min' => -1000, + 'max' => 1000, + ], + '%' => [ + 'min' => -200, + 'max' => 200, + ], + 'vh' => [ + 'min' => -200, + 'max' => 200, + ], + 'vw' => [ + 'min' => -200, + 'max' => 200, + ], + ], + 'size_units' => [ 'px', '%', 'em', 'rem', 'vh', 'vw', 'custom' ], + 'default' => [ + 'size' => 0, + ], + 'selectors' => [ + '{{WRAPPER}}' => 'bottom: {{SIZE}}{{UNIT}}', + ], + 'condition' => [ + '_offset_orientation_v' => 'end', + '_position!' => '', + ], + ] + ); + + $this->add_responsive_control( + '_z_index', + [ + 'label' => esc_html__( 'Z-Index', 'elementor' ), + 'type' => Controls_Manager::NUMBER, + 'selectors' => [ + '{{WRAPPER}}' => 'z-index: {{VALUE}};', + ], + ] + ); + + $this->add_control( + '_element_id', + [ + 'label' => esc_html__( 'CSS ID', 'elementor' ), + 'type' => Controls_Manager::TEXT, + 'dynamic' => [ + 'active' => true, + ], + 'ai' => [ + 'active' => false, + ], + 'default' => '', + 'title' => esc_html__( 'Add your custom id WITHOUT the Pound key. e.g: my-id', 'elementor' ), + 'style_transfer' => false, + 'classes' => 'elementor-control-direction-ltr', + ] + ); + + $this->add_control( + '_css_classes', + [ + 'label' => esc_html__( 'CSS Classes', 'elementor' ), + 'type' => Controls_Manager::TEXT, + 'ai' => [ + 'active' => false, + ], + 'dynamic' => [ + 'active' => true, + ], + 'prefix_class' => '', + 'title' => esc_html__( 'Add your custom class WITHOUT the dot. e.g: my-class', 'elementor' ), + 'classes' => 'elementor-control-direction-ltr', + ] + ); + + Plugin::$instance->controls_manager->add_display_conditions_controls( $this ); + + $this->end_controls_section(); + } + + /** + * Register the Motion Effects section. + * + * @return void + */ + private function register_effects_section() { + $this->start_controls_section( + 'section_effects', + [ + 'label' => esc_html__( 'Motion Effects', 'elementor' ), + 'tab' => Controls_Manager::TAB_ADVANCED, + ] + ); + + Plugin::$instance->controls_manager->add_motion_effects_promotion_control( $this ); + + $this->add_responsive_control( + '_animation', + [ + 'label' => esc_html__( 'Entrance Animation', 'elementor' ), + 'type' => Controls_Manager::ANIMATION, + 'frontend_available' => true, + ] + ); + + $this->add_control( + 'animation_duration', + [ + 'label' => esc_html__( 'Animation Duration', 'elementor' ), + 'type' => Controls_Manager::SELECT, + 'default' => '', + 'options' => [ + 'slow' => esc_html__( 'Slow', 'elementor' ), + '' => esc_html__( 'Normal', 'elementor' ), + 'fast' => esc_html__( 'Fast', 'elementor' ), + ], + 'prefix_class' => 'animated-', + 'condition' => [ + '_animation!' => '', + ], + ] + ); + + $this->add_control( + '_animation_delay', + [ + 'label' => esc_html__( 'Animation Delay', 'elementor' ) . ' (ms)', + 'type' => Controls_Manager::NUMBER, + 'default' => '', + 'min' => 0, + 'step' => 100, + 'condition' => [ + '_animation!' => '', + ], + 'render_type' => 'none', + 'frontend_available' => true, + ] + ); + + $this->end_controls_section(); + } + + /** Register the Background section. + * + * @return void + */ + private function register_background_section() { + $this->start_controls_section( + '_section_background', + [ + 'label' => esc_html__( 'Background', 'elementor' ), + 'tab' => Controls_Manager::TAB_ADVANCED, + ] + ); + + $this->start_controls_tabs( '_tabs_background' ); + + $this->start_controls_tab( + '_tab_background_normal', + [ + 'label' => esc_html__( 'Normal', 'elementor' ), + ] + ); + + $this->add_group_control( + Group_Control_Background::get_type(), + [ + 'name' => '_background', + 'selector' => '{{WRAPPER}} > .elementor-widget-container', + 'fields_options' => [ + 'image' => [ + 'background_lazyload' => [ + 'active' => true, + 'keys' => [ '_background_image', 'url' ], + 'selector' => '.elementor-widget-container', + ], + ], + ], + ] + ); + + $this->end_controls_tab(); + + $this->start_controls_tab( + '_tab_background_hover', + [ + 'label' => esc_html__( 'Hover', 'elementor' ), + ] + ); + + $this->add_group_control( + Group_Control_Background::get_type(), + [ + 'name' => '_background_hover', + 'selector' => '{{WRAPPER}}:hover .elementor-widget-container', + ] + ); + + $this->add_control( + '_background_hover_transition', + [ + 'label' => esc_html__( 'Transition Duration', 'elementor' ) . ' (s)', + 'type' => Controls_Manager::SLIDER, + 'range' => [ + 'px' => [ + 'min' => 0, + 'max' => 3, + 'step' => 0.1, + ], + ], + 'render_type' => 'ui', + 'separator' => 'before', + 'selectors' => [ + '{{WRAPPER}} > .elementor-widget-container' => 'transition: background {{SIZE}}s', + ], + ] + ); + + $this->end_controls_tab(); + + $this->end_controls_tabs(); + + $this->end_controls_section(); + } + + /** + * Register the Border section. + * + * @return void + */ + private function register_border_section() { + $this->start_controls_section( + '_section_border', + [ + 'label' => esc_html__( 'Border', 'elementor' ), + 'tab' => Controls_Manager::TAB_ADVANCED, + ] + ); + + $this->start_controls_tabs( '_tabs_border' ); + + $this->start_controls_tab( + '_tab_border_normal', + [ + 'label' => esc_html__( 'Normal', 'elementor' ), + ] + ); + + $this->add_group_control( + Group_Control_Border::get_type(), + [ + 'name' => '_border', + 'selector' => '{{WRAPPER}} > .elementor-widget-container', + ] + ); + + $this->add_responsive_control( + '_border_radius', + [ + 'label' => esc_html__( 'Border Radius', 'elementor' ), + 'type' => Controls_Manager::DIMENSIONS, + 'size_units' => [ 'px', '%', 'em', 'rem', 'custom' ], + 'selectors' => [ + '{{WRAPPER}} > .elementor-widget-container' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};', + ], + ] + ); + + $this->add_group_control( + Group_Control_Box_Shadow::get_type(), + [ + 'name' => '_box_shadow', + 'selector' => '{{WRAPPER}} > .elementor-widget-container', + ] + ); + + $this->end_controls_tab(); + + $this->start_controls_tab( + '_tab_border_hover', + [ + 'label' => esc_html__( 'Hover', 'elementor' ), + ] + ); + + $this->add_group_control( + Group_Control_Border::get_type(), + [ + 'name' => '_border_hover', + 'selector' => '{{WRAPPER}}:hover .elementor-widget-container', + ] + ); + + $this->add_responsive_control( + '_border_radius_hover', + [ + 'label' => esc_html__( 'Border Radius', 'elementor' ), + 'type' => Controls_Manager::DIMENSIONS, + 'size_units' => [ 'px', '%', 'em', 'rem', 'custom' ], + 'selectors' => [ + '{{WRAPPER}}:hover > .elementor-widget-container' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};', + ], + ] + ); + + $this->add_group_control( + Group_Control_Box_Shadow::get_type(), + [ + 'name' => '_box_shadow_hover', + 'selector' => '{{WRAPPER}}:hover .elementor-widget-container', + ] + ); + + $this->add_control( + '_border_hover_transition', + [ + 'label' => esc_html__( 'Transition Duration', 'elementor' ) . ' (s)', + 'type' => Controls_Manager::SLIDER, + 'separator' => 'before', + 'range' => [ + 'px' => [ + 'min' => 0, + 'max' => 3, + 'step' => 0.1, + ], + ], + 'selectors' => [ + '{{WRAPPER}} .elementor-widget-container' => 'transition: background {{_background_hover_transition.SIZE}}s, border {{SIZE}}s, border-radius {{SIZE}}s, box-shadow {{SIZE}}s', + ], + ] + ); + + $this->end_controls_tab(); + + $this->end_controls_tabs(); + + $this->end_controls_section(); + } + + + /** + * Register the Mask section. + * + * @return void + */ + private function register_masking_section() { + $this->start_controls_section( + '_section_masking', + [ + 'label' => esc_html__( 'Mask', 'elementor' ), + 'tab' => Controls_Manager::TAB_ADVANCED, + ] + ); + + $this->add_control( + '_mask_switch', + [ + 'label' => esc_html__( 'Mask', 'elementor' ), + 'type' => Controls_Manager::SWITCHER, + 'label_on' => esc_html__( 'On', 'elementor' ), + 'label_off' => esc_html__( 'Off', 'elementor' ), + 'default' => '', + ] + ); + + $this->add_control( + '_mask_shape', + [ + 'label' => esc_html__( 'Shape', 'elementor' ), + 'type' => Controls_Manager::SELECT, + 'options' => $this->get_shapes(), + 'default' => 'circle', + 'selectors' => $this->get_mask_selectors( '-webkit-mask-image: url( ' . ELEMENTOR_ASSETS_URL . '/mask-shapes/{{VALUE}}.svg );' ), + 'condition' => [ + '_mask_switch!' => '', + ], + ] + ); + + $this->add_control( + '_mask_image', + [ + 'label' => esc_html__( 'Image', 'elementor' ), + 'type' => Controls_Manager::MEDIA, + 'media_types' => [ 'image' ], + 'should_include_svg_inline_option' => true, + 'library_type' => 'image/svg+xml', + 'dynamic' => [ + 'active' => true, + ], + 'selectors' => $this->get_mask_selectors( '-webkit-mask-image: url( {{URL}} );' ), + 'condition' => [ + '_mask_switch!' => '', + '_mask_shape' => 'custom', + ], + ] + ); + + $this->add_control( + '_mask_notice', + [ + 'type' => Controls_Manager::HIDDEN, + 'raw' => esc_html__( 'Need More Shapes?', 'elementor' ) . + '
    ' . + sprintf( + '%1$s %2$s', + esc_html__( 'Explore additional Premium Shape packs and use them in your site.', 'elementor' ), + esc_html__( 'Learn more', 'elementor' ), + ), + 'content_classes' => 'elementor-panel-alert elementor-panel-alert-info', + 'condition' => [ + '_mask_switch!' => '', + ], + ] + ); + + $this->add_responsive_control( + '_mask_size', + [ + 'label' => esc_html__( 'Size', 'elementor' ), + 'type' => Controls_Manager::SELECT, + 'options' => [ + 'contain' => esc_html__( 'Fit', 'elementor' ), + 'cover' => esc_html__( 'Fill', 'elementor' ), + 'custom' => esc_html__( 'Custom', 'elementor' ), + ], + 'default' => 'contain', + 'selectors' => $this->get_mask_selectors( '-webkit-mask-size: {{VALUE}};' ), + 'condition' => [ + '_mask_switch!' => '', + ], + ] + ); + + $this->add_responsive_control( + '_mask_size_scale', + [ + 'label' => esc_html__( 'Scale', 'elementor' ), + 'type' => Controls_Manager::SLIDER, + 'size_units' => [ 'px', '%', 'em', 'rem', 'vw', 'custom' ], + 'range' => [ + 'px' => [ + 'min' => 0, + 'max' => 500, + ], + 'em' => [ + 'min' => 0, + 'max' => 100, + ], + '%' => [ + 'min' => 0, + 'max' => 200, + ], + ], + 'default' => [ + 'unit' => '%', + 'size' => 100, + ], + 'selectors' => $this->get_mask_selectors( '-webkit-mask-size: {{SIZE}}{{UNIT}};' ), + 'condition' => [ + '_mask_switch!' => '', + '_mask_size' => 'custom', + ], + ] + ); + + $this->add_responsive_control( + '_mask_position', + [ + 'label' => esc_html__( 'Position', 'elementor' ), + 'type' => Controls_Manager::SELECT, + 'options' => [ + 'center center' => esc_html__( 'Center Center', 'elementor' ), + 'center left' => esc_html__( 'Center Left', 'elementor' ), + 'center right' => esc_html__( 'Center Right', 'elementor' ), + 'top center' => esc_html__( 'Top Center', 'elementor' ), + 'top left' => esc_html__( 'Top Left', 'elementor' ), + 'top right' => esc_html__( 'Top Right', 'elementor' ), + 'bottom center' => esc_html__( 'Bottom Center', 'elementor' ), + 'bottom left' => esc_html__( 'Bottom Left', 'elementor' ), + 'bottom right' => esc_html__( 'Bottom Right', 'elementor' ), + 'custom' => esc_html__( 'Custom', 'elementor' ), + ], + 'default' => 'center center', + 'selectors' => $this->get_mask_selectors( '-webkit-mask-position: {{VALUE}};' ), + 'condition' => [ + '_mask_switch!' => '', + ], + ] + ); + + $this->add_responsive_control( + '_mask_position_x', + [ + 'label' => esc_html__( 'X Position', 'elementor' ), + 'type' => Controls_Manager::SLIDER, + 'size_units' => [ 'px', '%', 'em', 'rem', 'vw', 'custom' ], + 'range' => [ + 'px' => [ + 'min' => -500, + 'max' => 500, + ], + 'em' => [ + 'min' => -100, + 'max' => 100, + ], + '%' => [ + 'min' => -100, + 'max' => 100, + ], + 'vw' => [ + 'min' => -100, + 'max' => 100, + ], + ], + 'default' => [ + 'unit' => '%', + 'size' => 0, + ], + 'selectors' => $this->get_mask_selectors( '-webkit-mask-position-x: {{SIZE}}{{UNIT}};' ), + 'condition' => [ + '_mask_switch!' => '', + '_mask_position' => 'custom', + ], + ] + ); + + $this->add_responsive_control( + '_mask_position_y', + [ + 'label' => esc_html__( 'Y Position', 'elementor' ), + 'type' => Controls_Manager::SLIDER, + 'size_units' => [ 'px', '%', 'em', 'rem', 'vw', 'custom' ], + 'range' => [ + 'px' => [ + 'min' => -500, + 'max' => 500, + ], + 'em' => [ + 'min' => -100, + 'max' => 100, + ], + '%' => [ + 'min' => -100, + 'max' => 100, + ], + 'vw' => [ + 'min' => -100, + 'max' => 100, + ], + ], + 'default' => [ + 'unit' => '%', + 'size' => 0, + ], + 'selectors' => $this->get_mask_selectors( '-webkit-mask-position-y: {{SIZE}}{{UNIT}};' ), + 'condition' => [ + '_mask_switch!' => '', + '_mask_position' => 'custom', + ], + ] + ); + + $this->add_responsive_control( + '_mask_repeat', + [ + 'label' => esc_html__( 'Repeat', 'elementor' ), + 'type' => Controls_Manager::SELECT, + 'options' => [ + 'no-repeat' => esc_html__( 'No-repeat', 'elementor' ), + 'repeat' => esc_html__( 'Repeat', 'elementor' ), + 'repeat-x' => esc_html__( 'Repeat-x', 'elementor' ), + 'repeat-Y' => esc_html__( 'Repeat-y', 'elementor' ), + 'round' => esc_html__( 'Round', 'elementor' ), + 'space' => esc_html__( 'Space', 'elementor' ), + ], + 'default' => 'no-repeat', + 'selectors' => $this->get_mask_selectors( '-webkit-mask-repeat: {{VALUE}};' ), + 'condition' => [ + '_mask_switch!' => '', + '_mask_size!' => 'cover', + ], + ] + ); + + $this->end_controls_section(); + } + + + /** + * Register the Responsive section. + * + * @return void + */ + private function register_responsive_section() { + $this->start_controls_section( + '_section_responsive', + [ + 'label' => esc_html__( 'Responsive', 'elementor' ), + 'tab' => Controls_Manager::TAB_ADVANCED, + ] + ); + + $this->add_control( + 'responsive_description', + [ + 'raw' => sprintf( + /* translators: 1: Link open tag, 2: Link close tag. */ + esc_html__( 'Responsive visibility will take effect only on %1$s preview mode %2$s or live page, and not while editing in Elementor.', 'elementor' ), + '', + '' + ), + 'type' => Controls_Manager::RAW_HTML, + 'content_classes' => 'elementor-descriptor', + ] + ); + + $this->add_hidden_device_controls(); + + $this->end_controls_section(); + } + + /** + * Register common widget controls. + * + * Adds different input fields to allow the user to change and customize the widget settings. + * + * @since 3.1.0 + * @access protected + */ + protected function register_controls() { + $this->register_layout_section(); + + $this->register_effects_section(); + + $this->register_transform_section(); + + $this->register_background_section(); + + $this->register_border_section(); + + $this->register_masking_section(); + + $this->register_responsive_section(); + + Plugin::$instance->controls_manager->add_custom_attributes_controls( $this ); + + Plugin::$instance->controls_manager->add_custom_css_controls( $this ); + } +} diff --git a/wp-content/plugins/elementor/includes/widgets/counter.php b/wp-content/plugins/elementor/includes/widgets/counter.php new file mode 100644 index 0000000..d75ff47 --- /dev/null +++ b/wp-content/plugins/elementor/includes/widgets/counter.php @@ -0,0 +1,389 @@ +start_controls_section( + 'section_counter', + [ + 'label' => esc_html__( 'Counter', 'elementor' ), + ] + ); + + $this->add_control( + 'starting_number', + [ + 'label' => esc_html__( 'Starting Number', 'elementor' ), + 'type' => Controls_Manager::NUMBER, + 'default' => 0, + 'dynamic' => [ + 'active' => true, + ], + ] + ); + + $this->add_control( + 'ending_number', + [ + 'label' => esc_html__( 'Ending Number', 'elementor' ), + 'type' => Controls_Manager::NUMBER, + 'default' => 100, + 'dynamic' => [ + 'active' => true, + ], + ] + ); + + $this->add_control( + 'prefix', + [ + 'label' => esc_html__( 'Number Prefix', 'elementor' ), + 'type' => Controls_Manager::TEXT, + 'dynamic' => [ + 'active' => true, + ], + 'ai' => [ + 'active' => false, + ], + 'default' => '', + 'placeholder' => 1, + ] + ); + + $this->add_control( + 'suffix', + [ + 'label' => esc_html__( 'Number Suffix', 'elementor' ), + 'type' => Controls_Manager::TEXT, + 'dynamic' => [ + 'active' => true, + ], + 'ai' => [ + 'active' => false, + ], + 'default' => '', + 'placeholder' => esc_html__( 'Plus', 'elementor' ), + ] + ); + + $this->add_control( + 'duration', + [ + 'label' => esc_html__( 'Animation Duration', 'elementor' ) . ' (ms)', + 'type' => Controls_Manager::NUMBER, + 'default' => 2000, + 'min' => 100, + 'step' => 100, + ] + ); + + $this->add_control( + 'thousand_separator', + [ + 'label' => esc_html__( 'Thousand Separator', 'elementor' ), + 'type' => Controls_Manager::SWITCHER, + 'default' => 'yes', + 'label_on' => esc_html__( 'Show', 'elementor' ), + 'label_off' => esc_html__( 'Hide', 'elementor' ), + ] + ); + + $this->add_control( + 'thousand_separator_char', + [ + 'label' => esc_html__( 'Separator', 'elementor' ), + 'type' => Controls_Manager::SELECT, + 'condition' => [ + 'thousand_separator' => 'yes', + ], + 'options' => [ + '' => 'Default', + '.' => 'Dot', + ' ' => 'Space', + '_' => 'Underline', + "'" => 'Apostrophe', + ], + ] + ); + + $this->add_control( + 'title', + [ + 'label' => esc_html__( 'Title', 'elementor' ), + 'type' => Controls_Manager::TEXT, + 'label_block' => true, + 'dynamic' => [ + 'active' => true, + ], + 'default' => esc_html__( 'Cool Number', 'elementor' ), + 'placeholder' => esc_html__( 'Cool Number', 'elementor' ), + ] + ); + + $this->end_controls_section(); + + $this->start_controls_section( + 'section_number', + [ + 'label' => esc_html__( 'Number', 'elementor' ), + 'tab' => Controls_Manager::TAB_STYLE, + ] + ); + + $this->add_control( + 'number_color', + [ + 'label' => esc_html__( 'Text Color', 'elementor' ), + 'type' => Controls_Manager::COLOR, + 'global' => [ + 'default' => Global_Colors::COLOR_PRIMARY, + ], + 'selectors' => [ + '{{WRAPPER}} .elementor-counter-number-wrapper' => 'color: {{VALUE}};', + ], + ] + ); + + $this->add_group_control( + Group_Control_Typography::get_type(), + [ + 'name' => 'typography_number', + 'global' => [ + 'default' => Global_Typography::TYPOGRAPHY_PRIMARY, + ], + 'selector' => '{{WRAPPER}} .elementor-counter-number-wrapper', + ] + ); + + $this->add_group_control( + Group_Control_Text_Stroke::get_type(), + [ + 'name' => 'number_stroke', + 'selector' => '{{WRAPPER}} .elementor-counter-number-wrapper', + ] + ); + + $this->add_group_control( + Group_Control_Text_Shadow::get_type(), + [ + 'name' => 'number_shadow', + 'selector' => '{{WRAPPER}} .elementor-counter-number-wrapper', + ] + ); + + $this->end_controls_section(); + + $this->start_controls_section( + 'section_title', + [ + 'label' => esc_html__( 'Title', 'elementor' ), + 'tab' => Controls_Manager::TAB_STYLE, + ] + ); + + $this->add_control( + 'title_color', + [ + 'label' => esc_html__( 'Text Color', 'elementor' ), + 'type' => Controls_Manager::COLOR, + 'global' => [ + 'default' => Global_Colors::COLOR_SECONDARY, + ], + 'selectors' => [ + '{{WRAPPER}} .elementor-counter-title' => 'color: {{VALUE}};', + ], + ] + ); + + $this->add_group_control( + Group_Control_Typography::get_type(), + [ + 'name' => 'typography_title', + 'global' => [ + 'default' => Global_Typography::TYPOGRAPHY_SECONDARY, + ], + 'selector' => '{{WRAPPER}} .elementor-counter-title', + ] + ); + + $this->add_group_control( + Group_Control_Text_Stroke::get_type(), + [ + 'name' => 'title_stroke', + 'selector' => '{{WRAPPER}} .elementor-counter-title', + ] + ); + + $this->add_group_control( + Group_Control_Text_Shadow::get_type(), + [ + 'name' => 'title_shadow', + 'selector' => '{{WRAPPER}} .elementor-counter-title', + ] + ); + + $this->end_controls_section(); + } + + /** + * Render counter widget output in the editor. + * + * Written as a Backbone JavaScript template and used to generate the live preview. + * + * @since 2.9.0 + * @access protected + */ + protected function content_template() { + ?> + <# view.addRenderAttribute( 'counter-title', { + 'class': 'elementor-counter-title' + } ); + + view.addInlineEditingAttributes( 'counter-title' ); + #> +
    +
    + {{{ settings.prefix }}} + {{{ settings.starting_number }}} + {{{ settings.suffix }}} +
    + <# if ( settings.title ) { + #>
    {{{ settings.title }}}
    <# + } #> +
    + get_settings_for_display(); + + $this->add_render_attribute( 'counter', [ + 'class' => 'elementor-counter-number', + 'data-duration' => $settings['duration'], + 'data-to-value' => $settings['ending_number'], + 'data-from-value' => $settings['starting_number'], + ] ); + + if ( ! empty( $settings['thousand_separator'] ) ) { + $delimiter = empty( $settings['thousand_separator_char'] ) ? ',' : $settings['thousand_separator_char']; + $this->add_render_attribute( 'counter', 'data-delimiter', $delimiter ); + } + + $this->add_render_attribute( 'counter-title', 'class', 'elementor-counter-title' ); + + $this->add_inline_editing_attributes( 'counter-title' ); + ?> +
    +
    + print_unescaped_setting( 'prefix' ); ?> + print_render_attribute_string( 'counter' ); ?>>print_unescaped_setting( 'starting_number' ); ?> + print_unescaped_setting( 'suffix' ); ?> +
    + +
    print_render_attribute_string( 'counter-title' ); ?>>print_unescaped_setting( 'title' ); ?>
    + +
    + [ + 'label' => esc_html_x( 'Curly', 'Shapes', 'elementor' ), + 'shape' => '', + 'preserve_aspect_ratio' => false, + 'supports_amount' => true, + 'round' => false, + 'group' => 'line', + ], + 'curved' => [ + 'label' => esc_html_x( 'Curved', 'Shapes', 'elementor' ), + 'shape' => '', + 'preserve_aspect_ratio' => false, + 'supports_amount' => true, + 'round' => false, + 'group' => 'line', + ], + 'multiple' => [ + 'label' => esc_html_x( 'Multiple', 'Shapes', 'elementor' ), + 'shape' => '', + 'preserve_aspect_ratio' => false, + 'supports_amount' => false, + 'round' => false, + 'group' => 'pattern', + ], + 'slashes' => [ + 'label' => esc_html_x( 'Slashes', 'Shapes', 'elementor' ), + 'shape' => '', + 'preserve_aspect_ratio' => false, + 'supports_amount' => true, + 'round' => false, + 'view_box' => '0 0 20 16', + 'group' => 'line', + ], + 'squared' => [ + 'label' => esc_html_x( 'Squared', 'Shapes', 'elementor' ), + 'shape' => '', + 'preserve_aspect_ratio' => false, + 'supports_amount' => true, + 'round' => false, + 'group' => 'line', + ], + 'wavy' => [ + 'label' => esc_html_x( 'Wavy', 'Shapes', 'elementor' ), + 'shape' => '', + 'preserve_aspect_ratio' => false, + 'supports_amount' => true, + 'round' => false, + 'group' => 'line', + ], + 'zigzag' => [ + 'label' => esc_html_x( 'Zigzag', 'Shapes', 'elementor' ), + 'shape' => '', + 'preserve_aspect_ratio' => false, + 'supports_amount' => true, + 'round' => false, + 'group' => 'line', + ], + 'arrows' => [ + 'label' => esc_html_x( 'Arrows', 'Shapes', 'elementor' ), + 'shape' => '', + 'preserve_aspect_ratio' => true, + 'supports_amount' => true, + 'round' => true, + 'group' => 'pattern', + ], + 'pluses' => [ + 'label' => esc_html_x( 'Pluses', 'Shapes', 'elementor' ), + 'shape' => '', + 'preserve_aspect_ratio' => true, + 'supports_amount' => true, + 'round' => false, + 'group' => 'pattern', + ], + 'rhombus' => [ + 'label' => esc_html_x( 'Rhombus', 'Shapes', 'elementor' ), + 'shape' => '', + 'preserve_aspect_ratio' => false, + 'supports_amount' => true, + 'round' => false, + 'group' => 'pattern', + ], + 'parallelogram' => [ + 'label' => esc_html_x( 'Parallelogram', 'Shapes', 'elementor' ), + 'shape' => '', + 'preserve_aspect_ratio' => false, + 'supports_amount' => true, + 'round' => false, + 'group' => 'pattern', + ], + 'rectangles' => [ + 'label' => esc_html_x( 'Rectangles', 'Shapes', 'elementor' ), + 'shape' => '', + 'preserve_aspect_ratio' => false, + 'supports_amount' => true, + 'round' => true, + 'group' => 'pattern', + 'view_box' => '0 0 60 30', + ], + 'dots_tribal' => [ + 'label' => esc_html_x( 'Dots', 'Shapes', 'elementor' ), + 'shape' => '', + 'preserve_aspect_ratio' => true, + 'supports_amount' => false, + 'round' => false, + 'group' => 'tribal', + 'view_box' => '0 0 126 26', + ], + 'trees_2_tribal' => [ + 'label' => esc_html_x( 'Fir Tree', 'Shapes', 'elementor' ), + 'shape' => '', + 'preserve_aspect_ratio' => true, + 'supports_amount' => false, + 'round' => false, + 'group' => 'tribal', + 'view_box' => '0 0 126 26', + ], + 'rounds_tribal' => [ + 'label' => esc_html_x( 'Half Rounds', 'Shapes', 'elementor' ), + 'shape' => '', + 'preserve_aspect_ratio' => true, + 'supports_amount' => false, + 'round' => false, + 'group' => 'tribal', + 'view_box' => '0 0 120 26', + ], + 'leaves_tribal' => [ + 'label' => esc_html_x( 'Leaves', 'Shapes', 'elementor' ), + 'shape' => '', + 'preserve_aspect_ratio' => true, + 'supports_amount' => false, + 'round' => false, + 'group' => 'tribal', + 'view_box' => '0 0 117 26', + ], + 'stripes_tribal' => [ + 'label' => esc_html_x( 'Stripes', 'Shapes', 'elementor' ), + 'shape' => '', + 'preserve_aspect_ratio' => true, + 'supports_amount' => false, + 'round' => false, + 'group' => 'tribal', + 'view_box' => '0 0 120 26', + ], + 'squares_tribal' => [ + 'label' => esc_html_x( 'Squares', 'Shapes', 'elementor' ), + 'shape' => '', + 'preserve_aspect_ratio' => true, + 'supports_amount' => false, + 'round' => false, + 'group' => 'tribal', + 'view_box' => '0 0 126 26', + ], + 'trees_tribal' => [ + 'label' => esc_html_x( 'Trees', 'Shapes', 'elementor' ), + 'shape' => '', + 'preserve_aspect_ratio' => true, + 'supports_amount' => false, + 'round' => false, + 'group' => 'tribal', + 'view_box' => '0 0 123 26', + ], + 'planes_tribal' => [ + 'label' => esc_html_x( 'Tribal', 'Shapes', 'elementor' ), + 'shape' => '', + 'preserve_aspect_ratio' => true, + 'supports_amount' => false, + 'round' => false, + 'group' => 'tribal', + 'view_box' => '0 0 121 26', + ], + 'x_tribal' => [ + 'label' => esc_html_x( 'X', 'Shapes', 'elementor' ), + 'shape' => '', + 'preserve_aspect_ratio' => true, + 'supports_amount' => false, + 'round' => false, + 'group' => 'tribal', + 'view_box' => '0 0 126 26', + ], + 'zigzag_tribal' => [ + 'label' => esc_html_x( 'Zigzag', 'Shapes', 'elementor' ), + 'shape' => '', + 'preserve_aspect_ratio' => true, + 'supports_amount' => false, + 'round' => false, + 'group' => 'tribal', + 'view_box' => '0 0 120 26', + ], + ] + ); + } + + private function filter_styles_by( $array, $key, $value ) { + return array_filter( $array, function( $style ) use ( $key, $value ) { + return $value === $style[ $key ]; + } ); + } + + private function get_options_by_groups( $styles, $group = false ) { + $groups = [ + 'line' => [ + 'label' => esc_html__( 'Line', 'elementor' ), + 'options' => [ + 'solid' => esc_html__( 'Solid', 'elementor' ), + 'double' => esc_html__( 'Double', 'elementor' ), + 'dotted' => esc_html__( 'Dotted', 'elementor' ), + 'dashed' => esc_html__( 'Dashed', 'elementor' ), + ], + ], + ]; + foreach ( $styles as $key => $style ) { + if ( ! isset( $groups[ $style['group'] ] ) ) { + $groups[ $style['group'] ] = [ + 'label' => ucwords( str_replace( '_', '', $style['group'] ) ), + 'options' => [], + ]; + } + $groups[ $style['group'] ]['options'][ $key ] = $style['label']; + } + + if ( $group && isset( $groups[ $group ] ) ) { + return $groups[ $group ]; + } + return $groups; + } + + /** + * Register divider widget controls. + * + * Adds different input fields to allow the user to change and customize the widget settings. + * + * @since 3.1.0 + * @access protected + */ + protected function register_controls() { + $styles = $this->get_separator_styles(); + $this->start_controls_section( + 'section_divider', + [ + 'label' => esc_html__( 'Divider', 'elementor' ), + ] + ); + + $this->add_control( + 'style', + [ + 'label' => esc_html__( 'Style', 'elementor' ), + 'type' => Controls_Manager::SELECT, + 'groups' => array_values( $this->get_options_by_groups( $styles ) ), + 'render_type' => 'template', + 'default' => 'solid', + 'selectors' => [ + '{{WRAPPER}}' => '--divider-border-style: {{VALUE}}', + ], + ] + ); + + $this->add_control( + 'separator_type', + [ + 'type' => Controls_Manager::HIDDEN, + 'default' => 'pattern', + 'prefix_class' => 'elementor-widget-divider--separator-type-', + 'condition' => [ + 'style!' => [ + '', + 'solid', + 'double', + 'dotted', + 'dashed', + ], + ], + 'render_type' => 'template', + ] + ); + + $this->add_control( + 'pattern_spacing_flag', + [ + 'type' => Controls_Manager::HIDDEN, + 'default' => 'no-spacing', + 'prefix_class' => 'elementor-widget-divider--', + 'condition' => [ + 'style' => array_keys( $this->filter_styles_by( $styles, 'supports_amount', false ) ), + ], + 'render_type' => 'template', + ] + ); + + $this->add_control( + 'pattern_round_flag', + [ + 'type' => Controls_Manager::HIDDEN, + 'default' => 'bg-round', + 'prefix_class' => 'elementor-widget-divider--', + 'condition' => [ + 'style' => array_keys( $this->filter_styles_by( $styles, 'round', true ) ), + ], + ] + ); + + $this->add_responsive_control( + 'width', + [ + 'label' => esc_html__( 'Width', 'elementor' ), + 'type' => Controls_Manager::SLIDER, + 'size_units' => [ 'px', '%', 'em', 'rem', 'vw', 'custom' ], + 'range' => [ + 'px' => [ + 'max' => 1000, + ], + ], + 'default' => [ + 'size' => 100, + 'unit' => '%', + ], + 'tablet_default' => [ + 'unit' => '%', + ], + 'mobile_default' => [ + 'unit' => '%', + ], + 'selectors' => [ + '{{WRAPPER}} .elementor-divider-separator' => 'width: {{SIZE}}{{UNIT}};', + ], + ] + ); + + $this->add_responsive_control( + 'align', + [ + 'label' => esc_html__( 'Alignment', 'elementor' ), + 'type' => Controls_Manager::CHOOSE, + 'options' => [ + 'left' => [ + 'title' => esc_html__( 'Left', 'elementor' ), + 'icon' => 'eicon-text-align-left', + ], + 'center' => [ + 'title' => esc_html__( 'Center', 'elementor' ), + 'icon' => 'eicon-text-align-center', + ], + 'right' => [ + 'title' => esc_html__( 'Right', 'elementor' ), + 'icon' => 'eicon-text-align-right', + ], + ], + 'selectors' => [ + '{{WRAPPER}} .elementor-divider' => 'text-align: {{VALUE}}', + '{{WRAPPER}} .elementor-divider-separator' => 'margin: 0 auto; margin-{{VALUE}}: 0', + ], + ] + ); + + $this->add_control( + 'look', + [ + 'label' => esc_html__( 'Add Element', 'elementor' ), + 'type' => Controls_Manager::CHOOSE, + 'default' => 'line', + 'options' => [ + 'line' => [ + 'title' => esc_html__( 'None', 'elementor' ), + 'icon' => 'eicon-ban', + ], + 'line_text' => [ + 'title' => esc_html__( 'Text', 'elementor' ), + 'icon' => 'eicon-t-letter-bold', + ], + 'line_icon' => [ + 'title' => esc_html__( 'Icon', 'elementor' ), + 'icon' => 'eicon-star', + ], + ], + 'separator' => 'before', + 'prefix_class' => 'elementor-widget-divider--view-', + 'toggle' => false, + 'render_type' => 'template', + ] + ); + + $this->add_control( + 'text', + [ + 'label' => esc_html__( 'Text', 'elementor' ), + 'type' => Controls_Manager::TEXT, + 'condition' => [ + 'look' => 'line_text', + ], + 'default' => esc_html__( 'Divider', 'elementor' ), + 'dynamic' => [ + 'active' => true, + ], + ] + ); + + $this->add_control( + 'html_tag', + [ + 'label' => esc_html__( 'HTML Tag', 'elementor' ), + 'type' => Controls_Manager::SELECT, + 'condition' => [ + 'look' => 'line_text', + ], + 'options' => [ + 'h1' => 'H1', + 'h2' => 'H2', + 'h3' => 'H3', + 'h4' => 'H4', + 'h5' => 'H5', + 'h6' => 'H6', + 'div' => 'div', + 'span' => 'span', + 'p' => 'p', + ], + 'default' => 'span', + ] + ); + + $this->add_control( + 'icon', + [ + 'label' => esc_html__( 'Icon', 'elementor' ), + 'type' => Controls_Manager::ICONS, + 'default' => [ + 'value' => 'fas fa-star', + 'library' => 'fa-solid', + ], + 'condition' => [ + 'look' => 'line_icon', + ], + ] + ); + + $this->end_controls_section(); + + $this->start_controls_section( + 'section_divider_style', + [ + 'label' => esc_html__( 'Divider', 'elementor' ), + 'tab' => Controls_Manager::TAB_STYLE, + 'condition' => [ + 'style!' => 'none', + ], + ] + ); + + $this->add_control( + 'color', + [ + 'label' => esc_html__( 'Color', 'elementor' ), + 'type' => Controls_Manager::COLOR, + 'global' => [ + 'default' => Global_Colors::COLOR_SECONDARY, + ], + 'default' => '#000', + 'render_type' => 'template', + 'selectors' => [ + '{{WRAPPER}}' => '--divider-color: {{VALUE}}', + ], + ] + ); + + $this->add_control( + 'weight', + [ + 'label' => esc_html__( 'Weight', 'elementor' ), + 'type' => Controls_Manager::SLIDER, + 'size_units' => [ 'px', 'em', 'rem', 'custom' ], + 'default' => [ + 'size' => 1, + ], + 'range' => [ + 'px' => [ + 'min' => 1, + 'max' => 10, + 'step' => 0.1, + ], + 'em' => [ + 'min' => 0.1, + 'max' => 1, + ], + 'rem' => [ + 'min' => 0.1, + 'max' => 1, + ], + ], + 'render_type' => 'template', + 'condition' => [ + 'style' => array_keys( $this->get_options_by_groups( $styles, 'line' )['options'] ), + ], + 'selectors' => [ + '{{WRAPPER}}' => '--divider-border-width: {{SIZE}}{{UNIT}}', + ], + ] + ); + + $this->add_control( + 'pattern_height', + [ + 'label' => esc_html__( 'Size', 'elementor' ), + 'type' => Controls_Manager::SLIDER, + 'selectors' => [ + '{{WRAPPER}}' => '--divider-pattern-height: {{SIZE}}{{UNIT}}', + ], + 'default' => [ + 'size' => 20, + ], + 'range' => [ + 'px' => [ + 'step' => 0.1, + ], + ], + 'condition' => [ + 'style!' => [ + '', + 'solid', + 'double', + 'dotted', + 'dashed', + ], + ], + ] + ); + + $this->add_control( + 'pattern_size', + [ + 'label' => esc_html__( 'Amount', 'elementor' ), + 'type' => Controls_Manager::SLIDER, + 'size_units' => [ 'px', '%', 'em', 'rem', 'custom' ], + 'selectors' => [ + '{{WRAPPER}}' => '--divider-pattern-size: {{SIZE}}{{UNIT}}', + ], + 'default' => [ + 'size' => 20, + ], + 'range' => [ + 'px' => [ + 'step' => 0.1, + ], + '%' => [ + 'step' => 0.01, + ], + ], + 'condition' => [ + 'style!' => array_merge( array_keys( $this->filter_styles_by( $styles, 'supports_amount', false ) ), [ + '', + 'solid', + 'double', + 'dotted', + 'dashed', + ] ), + ], + ] + ); + + $this->add_responsive_control( + 'gap', + [ + 'label' => esc_html__( 'Gap', 'elementor' ), + 'type' => Controls_Manager::SLIDER, + 'default' => [ + 'size' => 15, + ], + 'range' => [ + 'px' => [ + 'min' => 2, + 'max' => 50, + ], + ], + 'selectors' => [ + '{{WRAPPER}} .elementor-divider' => 'padding-block-start: {{SIZE}}{{UNIT}}; padding-block-end: {{SIZE}}{{UNIT}};', + ], + 'separator' => 'before', + ] + ); + + $this->end_controls_section(); + + $this->start_controls_section( + 'section_text_style', + [ + 'label' => esc_html__( 'Text', 'elementor' ), + 'tab' => Controls_Manager::TAB_STYLE, + 'condition' => [ + 'look' => 'line_text', + ], + ] + ); + + $this->add_control( + 'text_color', + [ + 'label' => esc_html__( 'Color', 'elementor' ), + 'type' => Controls_Manager::COLOR, + 'global' => [ + 'default' => Global_Colors::COLOR_SECONDARY, + ], + 'selectors' => [ + '{{WRAPPER}} .elementor-divider__text' => 'color: {{VALUE}}', + ], + ] + ); + + $this->add_group_control( + Group_Control_Typography::get_type(), + [ + 'name' => 'typography', + 'global' => [ + 'default' => Global_Typography::TYPOGRAPHY_SECONDARY, + ], + 'selector' => '{{WRAPPER}} .elementor-divider__text', + ] + ); + + $this->add_group_control( + Group_Control_Text_Stroke::get_type(), + [ + 'name' => 'text_stroke', + 'selector' => '{{WRAPPER}} .elementor-divider__text', + ] + ); + + $this->add_control( + 'text_align', + [ + 'label' => esc_html__( 'Position', 'elementor' ), + 'type' => Controls_Manager::CHOOSE, + 'options' => [ + 'left' => [ + 'title' => esc_html__( 'Left', 'elementor' ), + 'icon' => 'eicon-h-align-left', + ], + 'center' => [ + 'title' => esc_html__( 'Center', 'elementor' ), + 'icon' => 'eicon-h-align-center', + ], + 'right' => [ + 'title' => esc_html__( 'Right', 'elementor' ), + 'icon' => 'eicon-h-align-right', + ], + ], + 'default' => 'center', + 'prefix_class' => 'elementor-widget-divider--element-align-', + ] + ); + + $this->add_responsive_control( + 'text_spacing', + [ + 'label' => esc_html__( 'Spacing', 'elementor' ), + 'type' => Controls_Manager::SLIDER, + 'size_units' => [ 'px', '%', 'em', 'rem', 'vw', 'custom' ], + 'range' => [ + 'px' => [ + 'max' => 50, + ], + '%' => [ + 'max' => 50, + ], + 'em' => [ + 'max' => 5, + ], + 'rem' => [ + 'max' => 5, + ], + 'vw' => [ + 'max' => 50, + ], + ], + 'selectors' => [ + '{{WRAPPER}}' => '--divider-element-spacing: {{SIZE}}{{UNIT}};', + ], + ] + ); + + $this->end_controls_section(); + + $this->start_controls_section( + 'section_icon_style', + [ + 'label' => esc_html__( 'Icon', 'elementor' ), + 'tab' => Controls_Manager::TAB_STYLE, + 'condition' => [ + 'look' => 'line_icon', + ], + ] + ); + + $this->add_control( + 'icon_view', + [ + 'label' => esc_html__( 'View', 'elementor' ), + 'type' => Controls_Manager::SELECT, + 'options' => [ + 'default' => esc_html__( 'Default', 'elementor' ), + 'stacked' => esc_html__( 'Stacked', 'elementor' ), + 'framed' => esc_html__( 'Framed', 'elementor' ), + ], + 'default' => 'default', + 'prefix_class' => 'elementor-view-', + ] + ); + + $this->add_responsive_control( + 'icon_size', + [ + 'label' => esc_html__( 'Size', 'elementor' ), + 'type' => Controls_Manager::SLIDER, + 'size_units' => [ 'px', 'em', 'rem', 'custom' ], + 'range' => [ + 'px' => [ + 'max' => 100, + ], + 'em' => [ + 'max' => 10, + ], + 'rem' => [ + 'max' => 10, + ], + ], + 'selectors' => [ + '{{WRAPPER}}' => '--divider-icon-size: {{SIZE}}{{UNIT}};', + ], + ] + ); + + $this->add_control( + 'icon_padding', + [ + 'label' => esc_html__( 'Padding', 'elementor' ), + 'type' => Controls_Manager::SLIDER, + 'size_units' => [ 'px', 'em', 'rem', 'custom' ], + 'selectors' => [ + '{{WRAPPER}} .elementor-icon' => 'padding: {{SIZE}}{{UNIT}};', + ], + 'range' => [ + 'px' => [ + 'max' => 50, + ], + 'em' => [ + 'min' => 0, + 'max' => 5, + ], + 'rem' => [ + 'min' => 0, + 'max' => 5, + ], + ], + 'condition' => [ + 'icon_view!' => 'default', + ], + ] + ); + + $this->add_control( + 'primary_color', + [ + 'label' => esc_html__( 'Primary Color', 'elementor' ), + 'type' => Controls_Manager::COLOR, + 'default' => '', + 'selectors' => [ + '{{WRAPPER}}.elementor-view-stacked .elementor-icon' => 'background-color: {{VALUE}};', + '{{WRAPPER}}.elementor-view-framed .elementor-icon, {{WRAPPER}}.elementor-view-default .elementor-icon' => 'color: {{VALUE}}; border-color: {{VALUE}};', + '{{WRAPPER}}.elementor-view-framed .elementor-icon, {{WRAPPER}}.elementor-view-default .elementor-icon svg' => 'fill: {{VALUE}};', + ], + 'global' => [ + 'default' => Global_Colors::COLOR_SECONDARY, + ], + ] + ); + + $this->add_control( + 'secondary_color', + [ + 'label' => esc_html__( 'Secondary Color', 'elementor' ), + 'type' => Controls_Manager::COLOR, + 'default' => '', + 'condition' => [ + 'icon_view!' => 'default', + ], + 'selectors' => [ + '{{WRAPPER}}.elementor-view-framed .elementor-icon' => 'background-color: {{VALUE}};', + '{{WRAPPER}}.elementor-view-stacked .elementor-icon' => 'color: {{VALUE}};', + '{{WRAPPER}}.elementor-view-stacked .elementor-icon svg' => 'fill: {{VALUE}};', + ], + ] + ); + + $this->add_control( + 'icon_align', + [ + 'label' => esc_html__( 'Position', 'elementor' ), + 'type' => Controls_Manager::CHOOSE, + 'options' => [ + 'left' => [ + 'title' => esc_html__( 'Left', 'elementor' ), + 'icon' => 'eicon-h-align-left', + ], + 'center' => [ + 'title' => esc_html__( 'Center', 'elementor' ), + 'icon' => 'eicon-h-align-center', + ], + 'right' => [ + 'title' => esc_html__( 'Right', 'elementor' ), + 'icon' => 'eicon-h-align-right', + ], + ], + 'default' => 'center', + 'prefix_class' => 'elementor-widget-divider--element-align-', + 'separator' => 'before', + ] + ); + + $this->add_responsive_control( + 'icon_spacing', + [ + 'label' => esc_html__( 'Spacing', 'elementor' ), + 'type' => Controls_Manager::SLIDER, + 'size_units' => [ 'px', 'em', 'rem', 'custom' ], + 'range' => [ + 'px' => [ + 'max' => 50, + ], + 'em' => [ + 'max' => 5, + ], + 'rem' => [ + 'max' => 5, + ], + ], + 'selectors' => [ + '{{WRAPPER}}' => '--divider-element-spacing: {{SIZE}}{{UNIT}}', + ], + 'separator' => 'before', + ] + ); + + $this->add_responsive_control( + 'rotate', + [ + 'label' => esc_html__( 'Rotate', 'elementor' ), + 'type' => Controls_Manager::SLIDER, + 'size_units' => [ 'deg', 'grad', 'rad', 'turn', 'custom' ], + 'default' => [ + 'unit' => 'deg', + ], + 'tablet_default' => [ + 'unit' => 'deg', + ], + 'mobile_default' => [ + 'unit' => 'deg', + ], + 'selectors' => [ + '{{WRAPPER}} .elementor-icon i, {{WRAPPER}} .elementor-icon svg' => 'transform: rotate({{SIZE}}{{UNIT}})', + ], + ] + ); + + $this->add_control( + 'icon_border_width', + [ + 'label' => esc_html__( 'Border Width', 'elementor' ), + 'type' => Controls_Manager::SLIDER, + 'size_units' => [ 'px', '%', 'em', 'rem', 'vw', 'custom' ], + 'range' => [ + 'px' => [ + 'max' => 20, + ], + 'em' => [ + 'max' => 2, + ], + ], + 'selectors' => [ + '{{WRAPPER}} .elementor-icon' => 'border-width: {{SIZE}}{{UNIT}}', + ], + 'condition' => [ + 'icon_view' => 'framed', + ], + ] + ); + + $this->add_control( + 'border_radius', + [ + 'label' => esc_html__( 'Border Radius', 'elementor' ), + 'type' => Controls_Manager::SLIDER, + 'size_units' => [ 'px', '%', 'em', 'rem', 'custom' ], + 'selectors' => [ + '{{WRAPPER}} .elementor-icon' => 'border-radius: {{SIZE}}{{UNIT}}', + ], + 'condition' => [ + 'icon_view!' => 'default', + ], + ] + ); + + $this->end_controls_section(); + } + + /** + * Build SVG + * + * Build SVG element markup based on the widgets settings. + * + * @return string - An SVG element. + * + * @since 2.7.0 + * @access private + */ + private function build_svg() { + $settings = $this->get_settings_for_display(); + + if ( 'pattern' !== $settings['separator_type'] || empty( $settings['style'] ) ) { + return ''; + } + + $svg_shapes = $this->get_separator_styles(); + + $selected_pattern = $svg_shapes[ $settings['style'] ]; + $preserve_aspect_ratio = $selected_pattern['preserve_aspect_ratio'] ? 'xMidYMid meet' : 'none'; + $view_box = isset( $selected_pattern['view_box'] ) ? $selected_pattern['view_box'] : '0 0 24 24'; + + $attr = [ + 'preserveAspectRatio' => $preserve_aspect_ratio, + 'overflow' => 'visible', + 'height' => '100%', + 'viewBox' => $view_box, + ]; + + if ( 'line' !== $selected_pattern['group'] ) { + $attr['fill'] = 'black'; + $attr['stroke'] = 'none'; + } else { + $attr['fill'] = 'none'; + $attr['stroke'] = 'black'; + $attr['stroke-width'] = $settings['weight']['size']; + $attr['stroke-linecap'] = 'square'; + $attr['stroke-miterlimit'] = '10'; + } + + $this->add_render_attribute( 'svg', $attr ); + + $pattern_attribute_string = $this->get_render_attribute_string( 'svg' ); + $shape = $selected_pattern['shape']; + + return '' . $shape . ''; + } + + public function svg_to_data_uri( $svg ) { + return str_replace( + [ '<', '>', '"', '#' ], + [ '%3C', '%3E', "'", '%23' ], + $svg + ); + } + + /** + * Render divider widget output on the frontend. + * + * Written in PHP and used to generate the final HTML. + * + * @since 1.0.0 + * @access protected + */ + protected function render() { + $settings = $this->get_settings_for_display(); + $svg_code = $this->build_svg(); + $has_icon = 'line_icon' === ( $settings['look'] ) && ! empty( $settings['icon'] ); + $has_text = 'line_text' === ( $settings['look'] ) && ! empty( $settings['text'] ); + + $this->add_render_attribute( 'wrapper', 'class', 'elementor-divider' ); + + if ( ! empty( $svg_code ) ) { + $this->add_render_attribute( 'wrapper', 'style', '--divider-pattern-url: url("data:image/svg+xml,' . $this->svg_to_data_uri( $svg_code ) . '");' ); + } + + ?> +
    print_render_attribute_string( 'wrapper' ); ?>> + + +
    + 'true', + ] ); + ?>
    + add_inline_editing_attributes( 'text' ); + $this->add_render_attribute( 'text', [ 'class' => [ 'elementor-divider__text', 'elementor-divider__element' ] ] ); + ?> + < print_render_attribute_string( 'text' ); ?>> + + > + +
    +
    + start_controls_section( + 'section_map', + [ + 'label' => esc_html__( 'Google Maps', 'elementor' ), + ] + ); + + if ( Plugin::$instance->editor->is_edit_mode() ) { + $api_key = get_option( 'elementor_google_maps_api_key' ); + + if ( ! $api_key ) { + $this->add_control( + 'api_key_notification', + [ + 'type' => Controls_Manager::ALERT, + 'alert_type' => 'info', + 'content' => sprintf( + /* translators: 1: Integration settings link open tag, 2: Create API key link open tag, 3: Link close tag. */ + esc_html__( 'Set your Google Maps API Key in Elementor\'s %1$sIntegrations Settings%3$s page. Create your key %2$shere.%3$s', 'elementor' ), + '', + '', + '' + ), + ] + ); + } + } + + $default_address = esc_html__( 'London Eye, London, United Kingdom', 'elementor' ); + $this->add_control( + 'address', + [ + 'label' => esc_html__( 'Location', 'elementor' ), + 'type' => Controls_Manager::TEXT, + 'dynamic' => [ + 'active' => true, + 'categories' => [ + TagsModule::POST_META_CATEGORY, + ], + ], + 'ai' => [ + 'active' => false, + ], + 'placeholder' => $default_address, + 'default' => $default_address, + 'label_block' => true, + ] + ); + + $this->add_control( + 'zoom', + [ + 'label' => esc_html__( 'Zoom', 'elementor' ), + 'type' => Controls_Manager::SLIDER, + 'default' => [ + 'size' => 10, + ], + 'range' => [ + 'px' => [ + 'min' => 1, + 'max' => 20, + ], + ], + 'separator' => 'before', + ] + ); + + $this->add_responsive_control( + 'height', + [ + 'label' => esc_html__( 'Height', 'elementor' ), + 'type' => Controls_Manager::SLIDER, + 'range' => [ + 'px' => [ + 'min' => 40, + 'max' => 1440, + ], + ], + 'size_units' => [ 'px', 'em', 'rem', 'vh', 'custom' ], + 'selectors' => [ + '{{WRAPPER}} iframe' => 'height: {{SIZE}}{{UNIT}};', + ], + ] + ); + + $this->end_controls_section(); + + $this->start_controls_section( + 'section_map_style', + [ + 'label' => esc_html__( 'Google Maps', 'elementor' ), + 'tab' => Controls_Manager::TAB_STYLE, + ] + ); + + $this->start_controls_tabs( 'map_filter' ); + + $this->start_controls_tab( 'normal', + [ + 'label' => esc_html__( 'Normal', 'elementor' ), + ] + ); + + $this->add_group_control( + Group_Control_Css_Filter::get_type(), + [ + 'name' => 'css_filters', + 'selector' => '{{WRAPPER}} iframe', + ] + ); + + $this->end_controls_tab(); + + $this->start_controls_tab( 'hover', + [ + 'label' => esc_html__( 'Hover', 'elementor' ), + ] + ); + + $this->add_group_control( + Group_Control_Css_Filter::get_type(), + [ + 'name' => 'css_filters_hover', + 'selector' => '{{WRAPPER}}:hover iframe', + ] + ); + + $this->add_control( + 'hover_transition', + [ + 'label' => esc_html__( 'Transition Duration', 'elementor' ) . ' (s)', + 'type' => Controls_Manager::SLIDER, + 'range' => [ + 'px' => [ + 'min' => 0, + 'max' => 3, + 'step' => 0.1, + ], + ], + 'selectors' => [ + '{{WRAPPER}} iframe' => 'transition-duration: {{SIZE}}s', + ], + ] + ); + + $this->end_controls_tab(); + + $this->end_controls_tabs(); + + $this->end_controls_section(); + } + + /** + * Render google maps widget output on the frontend. + * + * Written in PHP and used to generate the final HTML. + * + * @since 1.0.0 + * @access protected + */ + protected function render() { + $settings = $this->get_settings_for_display(); + + if ( empty( $settings['address'] ) ) { + return; + } + + if ( 0 === absint( $settings['zoom']['size'] ) ) { + $settings['zoom']['size'] = 10; + } + + $api_key = esc_html( get_option( 'elementor_google_maps_api_key' ) ); + + $params = [ + rawurlencode( $settings['address'] ), + absint( $settings['zoom']['size'] ), + ]; + + if ( $api_key ) { + $params[] = $api_key; + + $url = 'https://www.google.com/maps/embed/v1/place?key=%3$s&q=%1$s&zoom=%2$d'; + } else { + $url = 'https://maps.google.com/maps?q=%1$s&t=m&z=%2$d&output=embed&iwloc=near'; + } + + ?> +
    + +
    + ! Utils::has_pro(), + 'image' => esc_url( ELEMENTOR_ASSETS_URL . 'images/go-pro.svg' ), + 'image_alt' => esc_attr__( 'Upgrade', 'elementor' ), + 'description' => esc_html__( 'Create captivating headings that rotate with the Animated Headline Widget.', 'elementor' ), + 'upgrade_url' => esc_url( 'https://go.elementor.com/go-pro-heading-widget/' ), + 'upgrade_text' => esc_html__( 'Upgrade Now', 'elementor' ), + ]; + } + + /** + * Register heading widget controls. + * + * Adds different input fields to allow the user to change and customize the widget settings. + * + * @since 3.1.0 + * @access protected + */ + protected function register_controls() { + $this->start_controls_section( + 'section_title', + [ + 'label' => esc_html__( 'Heading', 'elementor' ), + ] + ); + + $this->add_control( + 'title', + [ + 'label' => esc_html__( 'Title', 'elementor' ), + 'type' => Controls_Manager::TEXTAREA, + 'ai' => [ + 'type' => 'text', + ], + 'dynamic' => [ + 'active' => true, + ], + 'placeholder' => esc_html__( 'Enter your title', 'elementor' ), + 'default' => esc_html__( 'Add Your Heading Text Here', 'elementor' ), + ] + ); + + $this->add_control( + 'link', + [ + 'label' => esc_html__( 'Link', 'elementor' ), + 'type' => Controls_Manager::URL, + 'dynamic' => [ + 'active' => true, + ], + 'default' => [ + 'url' => '', + ], + ] + ); + + $this->add_control( + 'size', + [ + 'label' => esc_html__( 'Size', 'elementor' ), + 'type' => Controls_Manager::SELECT, + 'options' => [ + 'default' => esc_html__( 'Default', 'elementor' ), + 'small' => esc_html__( 'Small', 'elementor' ), + 'medium' => esc_html__( 'Medium', 'elementor' ), + 'large' => esc_html__( 'Large', 'elementor' ), + 'xl' => esc_html__( 'XL', 'elementor' ), + 'xxl' => esc_html__( 'XXL', 'elementor' ), + ], + 'default' => 'default', + 'condition' => [ + 'size!' => 'default', // a workaround to hide the control, unless it's in use (not default). + ], + ] + ); + + $this->add_control( + 'header_size', + [ + 'label' => esc_html__( 'HTML Tag', 'elementor' ), + 'type' => Controls_Manager::SELECT, + 'options' => [ + 'h1' => 'H1', + 'h2' => 'H2', + 'h3' => 'H3', + 'h4' => 'H4', + 'h5' => 'H5', + 'h6' => 'H6', + 'div' => 'div', + 'span' => 'span', + 'p' => 'p', + ], + 'default' => 'h2', + ] + ); + + $this->end_controls_section(); + + $this->start_controls_section( + 'section_title_style', + [ + 'label' => esc_html__( 'Heading', 'elementor' ), + 'tab' => Controls_Manager::TAB_STYLE, + ] + ); + + $this->add_responsive_control( + 'align', + [ + 'label' => esc_html__( 'Alignment', 'elementor' ), + 'type' => Controls_Manager::CHOOSE, + 'options' => [ + 'left' => [ + 'title' => esc_html__( 'Left', 'elementor' ), + 'icon' => 'eicon-text-align-left', + ], + 'center' => [ + 'title' => esc_html__( 'Center', 'elementor' ), + 'icon' => 'eicon-text-align-center', + ], + 'right' => [ + 'title' => esc_html__( 'Right', 'elementor' ), + 'icon' => 'eicon-text-align-right', + ], + 'justify' => [ + 'title' => esc_html__( 'Justified', 'elementor' ), + 'icon' => 'eicon-text-align-justify', + ], + ], + 'default' => '', + 'selectors' => [ + '{{WRAPPER}}' => 'text-align: {{VALUE}};', + ], + ] + ); + + $this->add_control( + 'title_color', + [ + 'label' => esc_html__( 'Text Color', 'elementor' ), + 'type' => Controls_Manager::COLOR, + 'global' => [ + 'default' => Global_Colors::COLOR_PRIMARY, + ], + 'selectors' => [ + '{{WRAPPER}} .elementor-heading-title' => 'color: {{VALUE}};', + ], + ] + ); + + $this->add_group_control( + Group_Control_Typography::get_type(), + [ + 'name' => 'typography', + 'global' => [ + 'default' => Global_Typography::TYPOGRAPHY_PRIMARY, + ], + 'selector' => '{{WRAPPER}} .elementor-heading-title', + ] + ); + + $this->add_group_control( + Group_Control_Text_Stroke::get_type(), + [ + 'name' => 'text_stroke', + 'selector' => '{{WRAPPER}} .elementor-heading-title', + ] + ); + + $this->add_group_control( + Group_Control_Text_Shadow::get_type(), + [ + 'name' => 'text_shadow', + 'selector' => '{{WRAPPER}} .elementor-heading-title', + ] + ); + + $this->add_control( + 'blend_mode', + [ + 'label' => esc_html__( 'Blend Mode', 'elementor' ), + 'type' => Controls_Manager::SELECT, + 'options' => [ + '' => esc_html__( 'Normal', 'elementor' ), + 'multiply' => esc_html__( 'Multiply', 'elementor' ), + 'screen' => esc_html__( 'Screen', 'elementor' ), + 'overlay' => esc_html__( 'Overlay', 'elementor' ), + 'darken' => esc_html__( 'Darken', 'elementor' ), + 'lighten' => esc_html__( 'Lighten', 'elementor' ), + 'color-dodge' => esc_html__( 'Color Dodge', 'elementor' ), + 'saturation' => esc_html__( 'Saturation', 'elementor' ), + 'color' => esc_html__( 'Color', 'elementor' ), + 'difference' => esc_html__( 'Difference', 'elementor' ), + 'exclusion' => esc_html__( 'Exclusion', 'elementor' ), + 'hue' => esc_html__( 'Hue', 'elementor' ), + 'luminosity' => esc_html__( 'Luminosity', 'elementor' ), + ], + 'selectors' => [ + '{{WRAPPER}} .elementor-heading-title' => 'mix-blend-mode: {{VALUE}}', + ], + ] + ); + + $this->end_controls_section(); + } + + /** + * Render heading widget output on the frontend. + * + * Written in PHP and used to generate the final HTML. + * + * @since 1.0.0 + * @access protected + */ + protected function render() { + $settings = $this->get_settings_for_display(); + + if ( '' === $settings['title'] ) { + return; + } + + $this->add_render_attribute( 'title', 'class', 'elementor-heading-title' ); + + if ( ! empty( $settings['size'] ) ) { + $this->add_render_attribute( 'title', 'class', 'elementor-size-' . $settings['size'] ); + } else { + $this->add_render_attribute( 'title', 'class', 'elementor-size-default' ); + } + + $this->add_inline_editing_attributes( 'title' ); + + $title = $settings['title']; + + if ( ! empty( $settings['link']['url'] ) ) { + $this->add_link_attributes( 'url', $settings['link'] ); + + $title = sprintf( '%2$s', $this->get_render_attribute_string( 'url' ), $title ); + } + + $title_html = sprintf( '<%1$s %2$s>%3$s', Utils::validate_html_tag( $settings['header_size'] ), $this->get_render_attribute_string( 'title' ), $title ); + + // PHPCS - the variable $title_html holds safe data. + echo $title_html; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped + } + + /** + * Render heading widget output in the editor. + * + * Written as a Backbone JavaScript template and used to generate the live preview. + * + * @since 2.9.0 + * @access protected + */ + protected function content_template() { + ?> + <# + var title = settings.title; + + if ( '' !== settings.link.url ) { + title = '' + title + ''; + } + + view.addRenderAttribute( 'title', 'class', [ 'elementor-heading-title' ] ); + + if ( '' !== settings.size ) { + view.addRenderAttribute( 'title', 'class', [ 'elementor-size-' + settings.size ] ); + } else { + view.addRenderAttribute( 'title', 'class', [ 'elementor-size-default' ] ); + } + + view.addInlineEditingAttributes( 'title' ); + + var headerSizeTag = elementor.helpers.validateHTMLTag( settings.header_size ), + title_html = '<' + headerSizeTag + ' ' + view.getRenderAttributeString( 'title' ) + '>' + title + ''; + + print( title_html ); + #> + start_controls_section( + 'section_title', + [ + 'label' => esc_html__( 'HTML Code', 'elementor' ), + ] + ); + + $this->add_control( + 'html', + [ + 'label' => esc_html__( 'HTML Code', 'elementor' ), + 'type' => Controls_Manager::CODE, + 'default' => '', + 'placeholder' => esc_html__( 'Enter your code', 'elementor' ), + 'dynamic' => [ + 'active' => true, + ], + 'is_editable' => User::is_current_user_can_use_custom_html(), + ] + ); + + $this->end_controls_section(); + } + + /** + * Render HTML widget output on the frontend. + * + * Written in PHP and used to generate the final HTML. + * + * @since 1.0.0 + * @access protected + */ + protected function render() { + $this->print_unescaped_setting( 'html' ); + } + + /** + * Render HTML widget output in the editor. + * + * Written as a Backbone JavaScript template and used to generate the live preview. + * + * @since 2.9.0 + * @access protected + */ + protected function content_template() { + ?> + {{{ settings.html }}} + start_controls_section( + 'section_icon', + [ + 'label' => esc_html__( 'Icon Box', 'elementor' ), + ] + ); + + $this->add_control( + 'selected_icon', + [ + 'label' => esc_html__( 'Icon', 'elementor' ), + 'type' => Controls_Manager::ICONS, + 'fa4compatibility' => 'icon', + 'default' => [ + 'value' => 'fas fa-star', + 'library' => 'fa-solid', + ], + ] + ); + + $this->add_control( + 'view', + [ + 'label' => esc_html__( 'View', 'elementor' ), + 'type' => Controls_Manager::SELECT, + 'options' => [ + 'default' => esc_html__( 'Default', 'elementor' ), + 'stacked' => esc_html__( 'Stacked', 'elementor' ), + 'framed' => esc_html__( 'Framed', 'elementor' ), + ], + 'default' => 'default', + 'prefix_class' => 'elementor-view-', + 'condition' => [ + 'selected_icon[value]!' => '', + ], + ] + ); + + $this->add_control( + 'shape', + [ + 'label' => esc_html__( 'Shape', 'elementor' ), + 'type' => Controls_Manager::SELECT, + 'options' => [ + 'circle' => esc_html__( 'Circle', 'elementor' ), + 'square' => esc_html__( 'Square', 'elementor' ), + ], + 'default' => 'circle', + 'condition' => [ + 'view!' => 'default', + 'selected_icon[value]!' => '', + ], + 'prefix_class' => 'elementor-shape-', + ] + ); + + $this->add_control( + 'title_text', + [ + 'label' => esc_html__( 'Title', 'elementor' ), + 'type' => Controls_Manager::TEXT, + 'dynamic' => [ + 'active' => true, + ], + 'default' => esc_html__( 'This is the heading', 'elementor' ), + 'placeholder' => esc_html__( 'Enter your title', 'elementor' ), + 'label_block' => true, + ] + ); + + $this->add_control( + 'description_text', + [ + 'label' => esc_html__( 'Description', 'elementor' ), + 'type' => Controls_Manager::TEXTAREA, + 'dynamic' => [ + 'active' => true, + ], + 'default' => esc_html__( 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut elit tellus, luctus nec ullamcorper mattis, pulvinar dapibus leo.', 'elementor' ), + 'placeholder' => esc_html__( 'Enter your description', 'elementor' ), + 'rows' => 10, + ] + ); + + $this->add_control( + 'link', + [ + 'label' => esc_html__( 'Link', 'elementor' ), + 'type' => Controls_Manager::URL, + 'dynamic' => [ + 'active' => true, + ], + 'separator' => 'before', + ] + ); + + $this->add_control( + 'title_size', + [ + 'label' => esc_html__( 'Title HTML Tag', 'elementor' ), + 'type' => Controls_Manager::SELECT, + 'options' => [ + 'h1' => 'H1', + 'h2' => 'H2', + 'h3' => 'H3', + 'h4' => 'H4', + 'h5' => 'H5', + 'h6' => 'H6', + 'div' => 'div', + 'span' => 'span', + 'p' => 'p', + ], + 'default' => 'h3', + ] + ); + + $this->end_controls_section(); + + $this->start_controls_section( + 'section_style_box', + [ + 'label' => esc_html__( 'Box', 'elementor' ), + 'tab' => Controls_Manager::TAB_STYLE, + ] + ); + + $this->add_responsive_control( + 'position', + [ + 'label' => esc_html__( 'Icon Position', 'elementor' ), + 'type' => Controls_Manager::CHOOSE, + 'default' => 'top', + 'mobile_default' => 'top', + 'options' => [ + 'left' => [ + 'title' => esc_html__( 'Left', 'elementor' ), + 'icon' => 'eicon-h-align-left', + ], + 'top' => [ + 'title' => esc_html__( 'Top', 'elementor' ), + 'icon' => 'eicon-v-align-top', + ], + 'right' => [ + 'title' => esc_html__( 'Right', 'elementor' ), + 'icon' => 'eicon-h-align-right', + ], + ], + 'prefix_class' => 'elementor%s-position-', + 'condition' => [ + 'selected_icon[value]!' => '', + ], + ] + ); + + $this->add_responsive_control( + 'content_vertical_alignment', + [ + 'label' => esc_html__( 'Vertical Alignment', 'elementor' ), + 'type' => Controls_Manager::CHOOSE, + 'options' => [ + 'top' => [ + 'title' => esc_html__( 'Top', 'elementor' ), + 'icon' => 'eicon-v-align-top', + ], + 'middle' => [ + 'title' => esc_html__( 'Middle', 'elementor' ), + 'icon' => 'eicon-v-align-middle', + ], + 'bottom' => [ + 'title' => esc_html__( 'Bottom', 'elementor' ), + 'icon' => 'eicon-v-align-bottom', + ], + ], + 'default' => 'top', + 'toggle' => false, + 'prefix_class' => 'elementor-vertical-align-', + 'condition' => [ + 'position!' => 'top', + ], + ] + ); + + $this->add_responsive_control( + 'text_align', + [ + 'label' => esc_html__( 'Alignment', 'elementor' ), + 'type' => Controls_Manager::CHOOSE, + 'options' => [ + 'left' => [ + 'title' => esc_html__( 'Left', 'elementor' ), + 'icon' => 'eicon-text-align-left', + ], + 'center' => [ + 'title' => esc_html__( 'Center', 'elementor' ), + 'icon' => 'eicon-text-align-center', + ], + 'right' => [ + 'title' => esc_html__( 'Right', 'elementor' ), + 'icon' => 'eicon-text-align-right', + ], + 'justify' => [ + 'title' => esc_html__( 'Justified', 'elementor' ), + 'icon' => 'eicon-text-align-justify', + ], + ], + 'selectors' => [ + '{{WRAPPER}} .elementor-icon-box-wrapper' => 'text-align: {{VALUE}};', + ], + 'separator' => 'after', + ] + ); + + $this->add_responsive_control( + 'icon_space', + [ + 'label' => esc_html__( 'Icon Spacing', 'elementor' ), + 'type' => Controls_Manager::SLIDER, + 'size_units' => [ 'px', '%', 'em', 'rem', 'vw', 'custom' ], + 'default' => [ + 'size' => 15, + ], + 'range' => [ + 'px' => [ + 'max' => 100, + ], + 'em' => [ + 'max' => 10, + ], + 'rem' => [ + 'max' => 10, + ], + ], + 'selectors' => [ + '{{WRAPPER}}' => '--icon-box-icon-margin: {{SIZE}}{{UNIT}}', + ], + 'condition' => [ + 'selected_icon[value]!' => '', + ], + ] + ); + + $this->add_responsive_control( + 'title_bottom_space', + [ + 'label' => esc_html__( 'Content Spacing', 'elementor' ), + 'type' => Controls_Manager::SLIDER, + 'size_units' => [ 'px', 'em', 'rem', 'custom' ], + 'range' => [ + 'px' => [ + 'max' => 100, + ], + 'em' => [ + 'min' => 0, + 'max' => 10, + ], + 'rem' => [ + 'min' => 0, + 'max' => 10, + ], + ], + 'selectors' => [ + '{{WRAPPER}} .elementor-icon-box-title' => 'margin-bottom: {{SIZE}}{{UNIT}};', + ], + ] + ); + + $this->end_controls_section(); + + $this->start_controls_section( + 'section_style_icon', + [ + 'label' => esc_html__( 'Icon', 'elementor' ), + 'tab' => Controls_Manager::TAB_STYLE, + 'condition' => [ + 'selected_icon[value]!' => '', + ], + ] + ); + + $this->start_controls_tabs( 'icon_colors' ); + + $this->start_controls_tab( + 'icon_colors_normal', + [ + 'label' => esc_html__( 'Normal', 'elementor' ), + ] + ); + + $this->add_control( + 'primary_color', + [ + 'label' => esc_html__( 'Primary Color', 'elementor' ), + 'type' => Controls_Manager::COLOR, + 'global' => [ + 'default' => Global_Colors::COLOR_PRIMARY, + ], + 'default' => '', + 'selectors' => [ + '{{WRAPPER}}.elementor-view-stacked .elementor-icon' => 'background-color: {{VALUE}};', + '{{WRAPPER}}.elementor-view-framed .elementor-icon, {{WRAPPER}}.elementor-view-default .elementor-icon' => 'fill: {{VALUE}}; color: {{VALUE}}; border-color: {{VALUE}};', + ], + ] + ); + + $this->add_control( + 'secondary_color', + [ + 'label' => esc_html__( 'Secondary Color', 'elementor' ), + 'type' => Controls_Manager::COLOR, + 'default' => '', + 'condition' => [ + 'view!' => 'default', + ], + 'selectors' => [ + '{{WRAPPER}}.elementor-view-framed .elementor-icon' => 'background-color: {{VALUE}};', + '{{WRAPPER}}.elementor-view-stacked .elementor-icon' => 'fill: {{VALUE}}; color: {{VALUE}};', + ], + ] + ); + + $this->end_controls_tab(); + + $this->start_controls_tab( + 'icon_colors_hover', + [ + 'label' => esc_html__( 'Hover', 'elementor' ), + ] + ); + + $this->add_control( + 'hover_primary_color', + [ + 'label' => esc_html__( 'Primary Color', 'elementor' ), + 'type' => Controls_Manager::COLOR, + 'default' => '', + 'selectors' => [ + '{{WRAPPER}}.elementor-view-stacked .elementor-icon:hover' => 'background-color: {{VALUE}};', + '{{WRAPPER}}.elementor-view-framed .elementor-icon:hover, {{WRAPPER}}.elementor-view-default .elementor-icon:hover' => 'fill: {{VALUE}}; color: {{VALUE}}; border-color: {{VALUE}};', + ], + ] + ); + + $this->add_control( + 'hover_secondary_color', + [ + 'label' => esc_html__( 'Secondary Color', 'elementor' ), + 'type' => Controls_Manager::COLOR, + 'default' => '', + 'condition' => [ + 'view!' => 'default', + ], + 'selectors' => [ + '{{WRAPPER}}.elementor-view-framed .elementor-icon:hover' => 'background-color: {{VALUE}};', + '{{WRAPPER}}.elementor-view-stacked .elementor-icon:hover' => 'fill: {{VALUE}}; color: {{VALUE}};', + ], + ] + ); + + $this->add_control( + 'hover_animation', + [ + 'label' => esc_html__( 'Hover Animation', 'elementor' ), + 'type' => Controls_Manager::HOVER_ANIMATION, + ] + ); + + $this->end_controls_tab(); + + $this->end_controls_tabs(); + + $this->add_responsive_control( + 'icon_size', + [ + 'label' => esc_html__( 'Size', 'elementor' ), + 'type' => Controls_Manager::SLIDER, + 'size_units' => [ 'px', '%', 'em', 'rem', 'vw', 'custom' ], + 'range' => [ + 'px' => [ + 'min' => 6, + 'max' => 300, + ], + ], + 'selectors' => [ + '{{WRAPPER}} .elementor-icon' => 'font-size: {{SIZE}}{{UNIT}};', + ], + ] + ); + + $this->add_responsive_control( + 'icon_padding', + [ + 'label' => esc_html__( 'Padding', 'elementor' ), + 'type' => Controls_Manager::SLIDER, + 'size_units' => [ 'px', '%', 'em', 'rem', 'vw', 'custom' ], + 'selectors' => [ + '{{WRAPPER}} .elementor-icon' => 'padding: {{SIZE}}{{UNIT}};', + ], + 'range' => [ + 'px' => [ + 'max' => 50, + ], + 'em' => [ + 'min' => 0, + 'max' => 5, + ], + 'rem' => [ + 'min' => 0, + 'max' => 5, + ], + ], + 'condition' => [ + 'view!' => 'default', + ], + ] + ); + + $active_breakpoints = Plugin::$instance->breakpoints->get_active_breakpoints(); + + $rotate_device_args = []; + + $rotate_device_settings = [ + 'default' => [ + 'unit' => 'deg', + ], + ]; + + foreach ( $active_breakpoints as $breakpoint_name => $breakpoint ) { + $rotate_device_args[ $breakpoint_name ] = $rotate_device_settings; + } + + $this->add_responsive_control( + 'rotate', + [ + 'label' => esc_html__( 'Rotate', 'elementor' ), + 'type' => Controls_Manager::SLIDER, + 'size_units' => [ 'deg', 'grad', 'rad', 'turn', 'custom' ], + 'default' => [ + 'unit' => 'deg', + ], + 'tablet_default' => [ + 'unit' => 'deg', + ], + 'mobile_default' => [ + 'unit' => 'deg', + ], + 'device_args' => $rotate_device_args, + 'selectors' => [ + '{{WRAPPER}} .elementor-icon i' => 'transform: rotate({{SIZE}}{{UNIT}});', + ], + ] + ); + + $this->add_responsive_control( + 'border_width', + [ + 'label' => esc_html__( 'Border Width', 'elementor' ), + 'type' => Controls_Manager::DIMENSIONS, + 'size_units' => [ 'px', '%', 'em', 'rem', 'vw', 'custom' ], + 'selectors' => [ + '{{WRAPPER}} .elementor-icon' => 'border-width: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};', + ], + 'condition' => [ + 'view' => 'framed', + ], + ] + ); + + $this->add_responsive_control( + 'border_radius', + [ + 'label' => esc_html__( 'Border Radius', 'elementor' ), + 'type' => Controls_Manager::DIMENSIONS, + 'size_units' => [ 'px', '%', 'em', 'rem', 'custom' ], + 'selectors' => [ + '{{WRAPPER}} .elementor-icon' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};', + ], + 'condition' => [ + 'view!' => 'default', + ], + 'separator' => 'before', + ] + ); + + $this->end_controls_section(); + + $this->start_controls_section( + 'section_style_content', + [ + 'label' => esc_html__( 'Content', 'elementor' ), + 'tab' => Controls_Manager::TAB_STYLE, + ] + ); + + $this->add_control( + 'heading_title', + [ + 'label' => esc_html__( 'Title', 'elementor' ), + 'type' => Controls_Manager::HEADING, + 'separator' => 'before', + ] + ); + + $this->add_control( + 'title_color', + [ + 'label' => esc_html__( 'Color', 'elementor' ), + 'type' => Controls_Manager::COLOR, + 'default' => '', + 'selectors' => [ + '{{WRAPPER}} .elementor-icon-box-title' => 'color: {{VALUE}};', + ], + 'global' => [ + 'default' => Global_Colors::COLOR_PRIMARY, + ], + ] + ); + + $this->add_group_control( + Group_Control_Typography::get_type(), + [ + 'name' => 'title_typography', + 'selector' => '{{WRAPPER}} .elementor-icon-box-title, {{WRAPPER}} .elementor-icon-box-title a', + 'global' => [ + 'default' => Global_Typography::TYPOGRAPHY_PRIMARY, + ], + ] + ); + + $this->add_group_control( + Group_Control_Text_Stroke::get_type(), + [ + 'name' => 'text_stroke', + 'selector' => '{{WRAPPER}} .elementor-icon-box-title', + ] + ); + + $this->add_group_control( + Group_Control_Text_Shadow::get_type(), + [ + 'name' => 'title_shadow', + 'selector' => '{{WRAPPER}} .elementor-icon-box-title', + ] + ); + + $this->add_control( + 'heading_description', + [ + 'label' => esc_html__( 'Description', 'elementor' ), + 'type' => Controls_Manager::HEADING, + 'separator' => 'before', + ] + ); + + $this->add_control( + 'description_color', + [ + 'label' => esc_html__( 'Color', 'elementor' ), + 'type' => Controls_Manager::COLOR, + 'default' => '', + 'selectors' => [ + '{{WRAPPER}} .elementor-icon-box-description' => 'color: {{VALUE}};', + ], + 'global' => [ + 'default' => Global_Colors::COLOR_TEXT, + ], + ] + ); + + $this->add_group_control( + Group_Control_Typography::get_type(), + [ + 'name' => 'description_typography', + 'selector' => '{{WRAPPER}} .elementor-icon-box-description', + 'global' => [ + 'default' => Global_Typography::TYPOGRAPHY_TEXT, + ], + ] + ); + + $this->add_group_control( + Group_Control_Text_Shadow::get_type(), + [ + 'name' => 'description_shadow', + 'selector' => '{{WRAPPER}} .elementor-icon-box-description', + ] + ); + + $this->end_controls_section(); + } + + /** + * Render icon box widget output on the frontend. + * + * Written in PHP and used to generate the final HTML. + * + * @since 1.0.0 + * @access protected + */ + protected function render() { + $settings = $this->get_settings_for_display(); + $has_link = ! empty( $settings['link']['url'] ); + $html_tag = $has_link ? 'a' : 'span'; + + $this->add_render_attribute( 'icon', 'class', [ 'elementor-icon', 'elementor-animation-' . $settings['hover_animation'] ] ); + + if ( ! isset( $settings['icon'] ) && ! Icons_Manager::is_migration_allowed() ) { + // add old default + $settings['icon'] = 'fa fa-star'; + } + + $has_icon = ! empty( $settings['icon'] ); + + if ( $has_link ) { + $this->add_link_attributes( 'link', $settings['link'] ); + $this->add_render_attribute( 'icon', 'tabindex', '-1' ); + } + + if ( $has_icon ) { + $this->add_render_attribute( 'i', 'class', $settings['icon'] ); + $this->add_render_attribute( 'i', 'aria-hidden', 'true' ); + } + + $this->add_render_attribute( 'description_text', 'class', 'elementor-icon-box-description' ); + + $this->add_inline_editing_attributes( 'title_text', 'none' ); + $this->add_inline_editing_attributes( 'description_text' ); + if ( ! $has_icon && ! empty( $settings['selected_icon']['value'] ) ) { + $has_icon = true; + } + $migrated = isset( $settings['__fa4_migrated']['selected_icon'] ); + $is_new = ! isset( $settings['icon'] ) && Icons_Manager::is_migration_allowed(); + + ?> +
    + +
    + < print_render_attribute_string( 'link' ); ?> print_render_attribute_string( 'icon' ); ?>> + 'true' ] ); + } elseif ( ! empty( $settings['icon'] ) ) { + ?>print_render_attribute_string( 'i' ); ?>> + > +
    + +
    + < class="elementor-icon-box-title"> + < print_render_attribute_string( 'link' ); ?> print_render_attribute_string( 'title_text' ); ?>> + print_unescaped_setting( 'title_text' ); ?> + > + > + +

    print_render_attribute_string( 'description_text' ); ?>> + print_unescaped_setting( 'description_text' ); ?> +

    + +
    +
    + + <# + var hasLink = settings.link.url, + htmlTag = hasLink ? 'a' : 'span', + iconHTML = elementor.helpers.renderIcon( view, settings.selected_icon, { 'aria-hidden': true }, 'i' , 'object' ), + migrated = elementor.helpers.isIconMigrated( settings, 'selected_icon' ); + + view.addRenderAttribute( 'icon', 'class', 'elementor-icon elementor-animation-' + settings.hover_animation ); + + if ( hasLink ) { + view.addRenderAttribute( 'link', 'href', settings.link.url ); + view.addRenderAttribute( 'icon', 'tabindex', '-1' ); + } + + view.addRenderAttribute( 'description_text', 'class', 'elementor-icon-box-description' ); + + view.addInlineEditingAttributes( 'title_text', 'none' ); + view.addInlineEditingAttributes( 'description_text' ); + #> +
    + + <# if ( settings.icon || settings.selected_icon.value ) { #> +
    + <{{{ htmlTag }}} {{{ view.getRenderAttributeString( 'link' ) }}} {{{ view.getRenderAttributeString( 'icon' ) }}}> + <# if ( iconHTML && iconHTML.rendered && ( ! settings.icon || migrated ) ) { #> + {{{ iconHTML.value }}} + <# } else { #> + + <# } #> + +
    + <# } #> +
    + <# var titleSizeTag = elementor.helpers.validateHTMLTag( settings.title_size ); #> + <{{{ titleSizeTag }}} class="elementor-icon-box-title"> + <{{{ htmlTag }}} {{{ view.getRenderAttributeString( 'link' ) }}} {{{ view.getRenderAttributeString( 'title_text' ) }}}> + {{{ settings.title_text }}} + + + <# if ( settings.description_text ) { #> +

    {{{ settings.description_text }}}

    + <# } #> +
    +
    + start_controls_section( + 'section_icon', + [ + 'label' => esc_html__( 'Icon List', 'elementor' ), + ] + ); + + $this->add_control( + 'view', + [ + 'label' => esc_html__( 'Layout', 'elementor' ), + 'type' => Controls_Manager::CHOOSE, + 'default' => 'traditional', + 'options' => [ + 'traditional' => [ + 'title' => esc_html__( 'Default', 'elementor' ), + 'icon' => 'eicon-editor-list-ul', + ], + 'inline' => [ + 'title' => esc_html__( 'Inline', 'elementor' ), + 'icon' => 'eicon-ellipsis-h', + ], + ], + 'render_type' => 'template', + 'classes' => 'elementor-control-start-end', + 'style_transfer' => true, + 'prefix_class' => 'elementor-icon-list--layout-', + ] + ); + + $repeater = new Repeater(); + + $repeater->add_control( + 'text', + [ + 'label' => esc_html__( 'Text', 'elementor' ), + 'type' => Controls_Manager::TEXT, + 'label_block' => true, + 'placeholder' => esc_html__( 'List Item', 'elementor' ), + 'default' => esc_html__( 'List Item', 'elementor' ), + 'dynamic' => [ + 'active' => true, + ], + ] + ); + + $repeater->add_control( + 'selected_icon', + [ + 'label' => esc_html__( 'Icon', 'elementor' ), + 'type' => Controls_Manager::ICONS, + 'default' => [ + 'value' => 'fas fa-check', + 'library' => 'fa-solid', + ], + 'fa4compatibility' => 'icon', + ] + ); + + $repeater->add_control( + 'link', + [ + 'label' => esc_html__( 'Link', 'elementor' ), + 'type' => Controls_Manager::URL, + 'dynamic' => [ + 'active' => true, + ], + ] + ); + + $this->add_control( + 'icon_list', + [ + 'label' => esc_html__( 'Items', 'elementor' ), + 'type' => Controls_Manager::REPEATER, + 'fields' => $repeater->get_controls(), + 'default' => [ + [ + 'text' => esc_html__( 'List Item #1', 'elementor' ), + 'selected_icon' => [ + 'value' => 'fas fa-check', + 'library' => 'fa-solid', + ], + ], + [ + 'text' => esc_html__( 'List Item #2', 'elementor' ), + 'selected_icon' => [ + 'value' => 'fas fa-times', + 'library' => 'fa-solid', + ], + ], + [ + 'text' => esc_html__( 'List Item #3', 'elementor' ), + 'selected_icon' => [ + 'value' => 'fas fa-dot-circle', + 'library' => 'fa-solid', + ], + ], + ], + 'title_field' => '{{{ elementor.helpers.renderIcon( this, selected_icon, {}, "i", "panel" ) || \'\' }}} {{{ text }}}', + ] + ); + + $this->add_control( + 'link_click', + [ + 'label' => esc_html__( 'Apply Link On', 'elementor' ), + 'type' => Controls_Manager::SELECT, + 'options' => [ + 'full_width' => esc_html__( 'Full Width', 'elementor' ), + 'inline' => esc_html__( 'Inline', 'elementor' ), + ], + 'default' => 'full_width', + 'separator' => 'before', + 'prefix_class' => 'elementor-list-item-link-', + ] + ); + + $this->end_controls_section(); + + $this->start_controls_section( + 'section_icon_list', + [ + 'label' => esc_html__( 'List', 'elementor' ), + 'tab' => Controls_Manager::TAB_STYLE, + ] + ); + + $this->add_responsive_control( + 'space_between', + [ + 'label' => esc_html__( 'Space Between', 'elementor' ), + 'type' => Controls_Manager::SLIDER, + 'size_units' => [ 'px', 'em', 'rem', 'custom' ], + 'range' => [ + 'px' => [ + 'max' => 50, + ], + ], + 'selectors' => [ + '{{WRAPPER}} .elementor-icon-list-items:not(.elementor-inline-items) .elementor-icon-list-item:not(:last-child)' => 'padding-bottom: calc({{SIZE}}{{UNIT}}/2)', + '{{WRAPPER}} .elementor-icon-list-items:not(.elementor-inline-items) .elementor-icon-list-item:not(:first-child)' => 'margin-top: calc({{SIZE}}{{UNIT}}/2)', + '{{WRAPPER}} .elementor-icon-list-items.elementor-inline-items .elementor-icon-list-item' => 'margin-right: calc({{SIZE}}{{UNIT}}/2); margin-left: calc({{SIZE}}{{UNIT}}/2)', + '{{WRAPPER}} .elementor-icon-list-items.elementor-inline-items' => 'margin-right: calc(-{{SIZE}}{{UNIT}}/2); margin-left: calc(-{{SIZE}}{{UNIT}}/2)', + 'body.rtl {{WRAPPER}} .elementor-icon-list-items.elementor-inline-items .elementor-icon-list-item:after' => 'left: calc(-{{SIZE}}{{UNIT}}/2)', + 'body:not(.rtl) {{WRAPPER}} .elementor-icon-list-items.elementor-inline-items .elementor-icon-list-item:after' => 'right: calc(-{{SIZE}}{{UNIT}}/2)', + ], + ] + ); + + $this->add_responsive_control( + 'icon_align', + [ + 'label' => esc_html__( 'Alignment', 'elementor' ), + 'type' => Controls_Manager::CHOOSE, + 'options' => [ + 'left' => [ + 'title' => esc_html__( 'Left', 'elementor' ), + 'icon' => 'eicon-h-align-left', + ], + 'center' => [ + 'title' => esc_html__( 'Center', 'elementor' ), + 'icon' => 'eicon-h-align-center', + ], + 'right' => [ + 'title' => esc_html__( 'Right', 'elementor' ), + 'icon' => 'eicon-h-align-right', + ], + ], + 'prefix_class' => 'elementor%s-align-', + ] + ); + + $this->add_control( + 'divider', + [ + 'label' => esc_html__( 'Divider', 'elementor' ), + 'type' => Controls_Manager::SWITCHER, + 'label_off' => esc_html__( 'Off', 'elementor' ), + 'label_on' => esc_html__( 'On', 'elementor' ), + 'selectors' => [ + '{{WRAPPER}} .elementor-icon-list-item:not(:last-child):after' => 'content: ""', + ], + 'separator' => 'before', + ] + ); + + $this->add_control( + 'divider_style', + [ + 'label' => esc_html__( 'Style', 'elementor' ), + 'type' => Controls_Manager::SELECT, + 'options' => [ + 'solid' => esc_html__( 'Solid', 'elementor' ), + 'double' => esc_html__( 'Double', 'elementor' ), + 'dotted' => esc_html__( 'Dotted', 'elementor' ), + 'dashed' => esc_html__( 'Dashed', 'elementor' ), + ], + 'default' => 'solid', + 'condition' => [ + 'divider' => 'yes', + ], + 'selectors' => [ + '{{WRAPPER}} .elementor-icon-list-items:not(.elementor-inline-items) .elementor-icon-list-item:not(:last-child):after' => 'border-top-style: {{VALUE}}', + '{{WRAPPER}} .elementor-icon-list-items.elementor-inline-items .elementor-icon-list-item:not(:last-child):after' => 'border-left-style: {{VALUE}}', + ], + ] + ); + + $this->add_control( + 'divider_weight', + [ + 'label' => esc_html__( 'Weight', 'elementor' ), + 'type' => Controls_Manager::SLIDER, + 'size_units' => [ 'px', 'em', 'rem', 'custom' ], + 'default' => [ + 'size' => 1, + ], + 'range' => [ + 'px' => [ + 'min' => 1, + 'max' => 20, + ], + ], + 'condition' => [ + 'divider' => 'yes', + ], + 'selectors' => [ + '{{WRAPPER}} .elementor-icon-list-items:not(.elementor-inline-items) .elementor-icon-list-item:not(:last-child):after' => 'border-top-width: {{SIZE}}{{UNIT}}', + '{{WRAPPER}} .elementor-inline-items .elementor-icon-list-item:not(:last-child):after' => 'border-left-width: {{SIZE}}{{UNIT}}', + ], + ] + ); + + $this->add_control( + 'divider_width', + [ + 'label' => esc_html__( 'Width', 'elementor' ), + 'type' => Controls_Manager::SLIDER, + 'size_units' => [ 'px', '%', 'em', 'rem', 'vw', 'custom' ], + 'default' => [ + 'unit' => '%', + ], + 'condition' => [ + 'divider' => 'yes', + 'view!' => 'inline', + ], + 'selectors' => [ + '{{WRAPPER}} .elementor-icon-list-item:not(:last-child):after' => 'width: {{SIZE}}{{UNIT}}', + ], + ] + ); + + $this->add_control( + 'divider_height', + [ + 'label' => esc_html__( 'Height', 'elementor' ), + 'type' => Controls_Manager::SLIDER, + 'size_units' => [ 'px', '%', 'em', 'rem', 'vh', 'custom' ], + 'default' => [ + 'unit' => '%', + ], + 'range' => [ + 'px' => [ + 'min' => 1, + 'max' => 100, + ], + '%' => [ + 'min' => 1, + 'max' => 100, + ], + 'vh' => [ + 'min' => 1, + 'max' => 100, + ], + ], + 'condition' => [ + 'divider' => 'yes', + 'view' => 'inline', + ], + 'selectors' => [ + '{{WRAPPER}} .elementor-icon-list-item:not(:last-child):after' => 'height: {{SIZE}}{{UNIT}}', + ], + ] + ); + + $this->add_control( + 'divider_color', + [ + 'label' => esc_html__( 'Color', 'elementor' ), + 'type' => Controls_Manager::COLOR, + 'default' => '#ddd', + 'global' => [ + 'default' => Global_Colors::COLOR_TEXT, + ], + 'condition' => [ + 'divider' => 'yes', + ], + 'selectors' => [ + '{{WRAPPER}} .elementor-icon-list-item:not(:last-child):after' => 'border-color: {{VALUE}}', + ], + ] + ); + + $this->end_controls_section(); + + $this->start_controls_section( + 'section_icon_style', + [ + 'label' => esc_html__( 'Icon', 'elementor' ), + 'tab' => Controls_Manager::TAB_STYLE, + ] + ); + + $this->start_controls_tabs( 'icon_colors' ); + + $this->start_controls_tab( + 'icon_colors_normal', + [ + 'label' => esc_html__( 'Normal', 'elementor' ), + ] + ); + + $this->add_control( + 'icon_color', + [ + 'label' => esc_html__( 'Color', 'elementor' ), + 'type' => Controls_Manager::COLOR, + 'default' => '', + 'selectors' => [ + '{{WRAPPER}} .elementor-icon-list-icon i' => 'color: {{VALUE}};', + '{{WRAPPER}} .elementor-icon-list-icon svg' => 'fill: {{VALUE}};', + ], + 'global' => [ + 'default' => Global_Colors::COLOR_PRIMARY, + ], + ] + ); + + $this->end_controls_tab(); + + $this->start_controls_tab( + 'icon_colors_hover', + [ + 'label' => esc_html__( 'Hover', 'elementor' ), + ] + ); + + $this->add_control( + 'icon_color_hover', + [ + 'label' => esc_html__( 'Color', 'elementor' ), + 'type' => Controls_Manager::COLOR, + 'default' => '', + 'selectors' => [ + '{{WRAPPER}} .elementor-icon-list-item:hover .elementor-icon-list-icon i' => 'color: {{VALUE}};', + '{{WRAPPER}} .elementor-icon-list-item:hover .elementor-icon-list-icon svg' => 'fill: {{VALUE}};', + ], + ] + ); + + $this->add_control( + 'icon_color_hover_transition', + [ + 'label' => esc_html__( 'Transition Duration', 'elementor' ), + 'type' => Controls_Manager::SLIDER, + 'size_units' => [ 's', 'ms', 'custom' ], + 'default' => [ + 'unit' => 's', + 'size' => 0.3, + ], + 'selectors' => [ + '{{WRAPPER}} .elementor-icon-list-icon i' => 'transition: color {{SIZE}}{{UNIT}}', + '{{WRAPPER}} .elementor-icon-list-icon svg' => 'transition: fill {{SIZE}}{{UNIT}}', + ], + ] + ); + + $this->end_controls_tab(); + + $this->end_controls_tabs(); + + $this->add_responsive_control( + 'icon_size', + [ + 'label' => esc_html__( 'Size', 'elementor' ), + 'type' => Controls_Manager::SLIDER, + 'size_units' => [ 'px', '%', 'em', 'rem', 'vw', 'custom' ], + 'default' => [ + 'size' => 14, + ], + 'range' => [ + 'px' => [ + 'min' => 6, + ], + '%' => [ + 'min' => 6, + ], + 'vw' => [ + 'min' => 6, + ], + ], + 'separator' => 'before', + 'selectors' => [ + '{{WRAPPER}}' => '--e-icon-list-icon-size: {{SIZE}}{{UNIT}};', + ], + ] + ); + + $this->add_control( + 'text_indent', + [ + 'label' => esc_html__( 'Gap', 'elementor' ), + 'type' => Controls_Manager::SLIDER, + 'size_units' => [ 'px', '%', 'em', 'rem', 'vw', 'custom' ], + 'range' => [ + 'px' => [ + 'max' => 50, + ], + ], + 'separator' => 'after', + 'selectors' => [ + '{{WRAPPER}} .elementor-icon-list-icon' => is_rtl() ? 'padding-left: {{SIZE}}{{UNIT}};' : 'padding-right: {{SIZE}}{{UNIT}};', + ], + ] + ); + + $e_icon_list_icon_css_var = 'var(--e-icon-list-icon-size, 1em)'; + $e_icon_list_icon_align_left = sprintf( '0 calc(%s * 0.25) 0 0', $e_icon_list_icon_css_var ); + $e_icon_list_icon_align_center = sprintf( '0 calc(%s * 0.125)', $e_icon_list_icon_css_var ); + $e_icon_list_icon_align_right = sprintf( '0 0 0 calc(%s * 0.25)', $e_icon_list_icon_css_var ); + + $this->add_responsive_control( + 'icon_self_align', + [ + 'label' => esc_html__( 'Horizontal Alignment', 'elementor' ), + 'type' => Controls_Manager::CHOOSE, + 'options' => [ + 'left' => [ + 'title' => esc_html__( 'Left', 'elementor' ), + 'icon' => 'eicon-h-align-left', + ], + 'center' => [ + 'title' => esc_html__( 'Center', 'elementor' ), + 'icon' => 'eicon-h-align-center', + ], + 'right' => [ + 'title' => esc_html__( 'Right', 'elementor' ), + 'icon' => 'eicon-h-align-right', + ], + ], + 'default' => '', + 'selectors_dictionary' => [ + 'left' => sprintf( '--e-icon-list-icon-align: left; --e-icon-list-icon-margin: %s;', $e_icon_list_icon_align_left ), + 'center' => sprintf( '--e-icon-list-icon-align: center; --e-icon-list-icon-margin: %s;', $e_icon_list_icon_align_center ), + 'right' => sprintf( '--e-icon-list-icon-align: right; --e-icon-list-icon-margin: %s;', $e_icon_list_icon_align_right ), + ], + 'selectors' => [ + '{{WRAPPER}}' => '{{VALUE}}', + ], + ] + ); + + $this->add_responsive_control( + 'icon_self_vertical_align', + [ + 'label' => esc_html__( 'Vertical Alignment', 'elementor' ), + 'type' => Controls_Manager::CHOOSE, + 'options' => [ + 'flex-start' => [ + 'title' => esc_html__( 'Start', 'elementor' ), + 'icon' => 'eicon-v-align-top', + ], + 'center' => [ + 'title' => esc_html__( 'Center', 'elementor' ), + 'icon' => 'eicon-v-align-middle', + ], + 'flex-end' => [ + 'title' => esc_html__( 'End', 'elementor' ), + 'icon' => 'eicon-v-align-bottom', + ], + ], + 'default' => '', + 'selectors' => [ + '{{WRAPPER}}' => '--icon-vertical-align: {{VALUE}};', + ], + ] + ); + + $this->add_responsive_control( + 'icon_vertical_offset', + [ + 'label' => esc_html__( 'Adjust Vertical Position', 'elementor' ), + 'type' => Controls_Manager::SLIDER, + 'size_units' => [ 'px', 'em', 'rem', 'custom' ], + 'default' => [ + 'size' => 0, + ], + 'range' => [ + 'px' => [ + 'min' => -15, + 'max' => 15, + ], + 'em' => [ + 'min' => -1, + 'max' => 1, + ], + ], + 'selectors' => [ + '{{WRAPPER}}' => '--icon-vertical-offset: {{SIZE}}{{UNIT}};', + ], + ] + ); + + $this->end_controls_section(); + + $this->start_controls_section( + 'section_text_style', + [ + 'label' => esc_html__( 'Text', 'elementor' ), + 'tab' => Controls_Manager::TAB_STYLE, + ] + ); + + $this->add_group_control( + Group_Control_Typography::get_type(), + [ + 'name' => 'icon_typography', + 'selector' => '{{WRAPPER}} .elementor-icon-list-item > .elementor-icon-list-text, {{WRAPPER}} .elementor-icon-list-item > a', + 'global' => [ + 'default' => Global_Typography::TYPOGRAPHY_TEXT, + ], + ] + ); + + $this->add_group_control( + Group_Control_Text_Shadow::get_type(), + [ + 'name' => 'text_shadow', + 'selector' => '{{WRAPPER}} .elementor-icon-list-text', + ] + ); + + $this->start_controls_tabs( 'text_colors' ); + + $this->start_controls_tab( + 'text_colors_normal', + [ + 'label' => esc_html__( 'Normal', 'elementor' ), + ] + ); + + $this->add_control( + 'text_color', + [ + 'label' => esc_html__( 'Color', 'elementor' ), + 'type' => Controls_Manager::COLOR, + 'default' => '', + 'selectors' => [ + '{{WRAPPER}} .elementor-icon-list-text' => 'color: {{VALUE}};', + ], + 'global' => [ + 'default' => Global_Colors::COLOR_SECONDARY, + ], + ] + ); + + $this->end_controls_tab(); + + $this->start_controls_tab( + 'text_colors_hover', + [ + 'label' => esc_html__( 'Hover', 'elementor' ), + ] + ); + + $this->add_control( + 'text_color_hover', + [ + 'label' => esc_html__( 'Color', 'elementor' ), + 'type' => Controls_Manager::COLOR, + 'default' => '', + 'selectors' => [ + '{{WRAPPER}} .elementor-icon-list-item:hover .elementor-icon-list-text' => 'color: {{VALUE}};', + ], + ] + ); + + $this->add_control( + 'text_color_hover_transition', + [ + 'label' => esc_html__( 'Transition Duration', 'elementor' ), + 'type' => Controls_Manager::SLIDER, + 'size_units' => [ 's', 'ms', 'custom' ], + 'default' => [ + 'unit' => 's', + 'size' => 0.3, + ], + 'selectors' => [ + '{{WRAPPER}} .elementor-icon-list-text' => 'transition: color {{SIZE}}{{UNIT}}', + ], + ] + ); + + $this->end_controls_tab(); + + $this->end_controls_tabs(); + + $this->end_controls_section(); + } + + /** + * Render icon list widget output on the frontend. + * + * Written in PHP and used to generate the final HTML. + * + * @since 1.0.0 + * @access protected + */ + protected function render() { + $settings = $this->get_settings_for_display(); + $fallback_defaults = [ + 'fa fa-check', + 'fa fa-times', + 'fa fa-dot-circle-o', + ]; + + $this->add_render_attribute( 'icon_list', 'class', 'elementor-icon-list-items' ); + $this->add_render_attribute( 'list_item', 'class', 'elementor-icon-list-item' ); + + if ( 'inline' === $settings['view'] ) { + $this->add_render_attribute( 'icon_list', 'class', 'elementor-inline-items' ); + $this->add_render_attribute( 'list_item', 'class', 'elementor-inline-item' ); + } + ?> + + + <# + view.addRenderAttribute( 'icon_list', 'class', 'elementor-icon-list-items' ); + view.addRenderAttribute( 'list_item', 'class', 'elementor-icon-list-item' ); + + if ( 'inline' == settings.view ) { + view.addRenderAttribute( 'icon_list', 'class', 'elementor-inline-items' ); + view.addRenderAttribute( 'list_item', 'class', 'elementor-inline-item' ); + } + var iconsHTML = {}, + migrated = {}; + #> + <# if ( settings.icon_list ) { #> + + <# } #> + + start_controls_section( + 'section_icon', + [ + 'label' => esc_html__( 'Icon', 'elementor' ), + ] + ); + + $this->add_control( + 'selected_icon', + [ + 'label' => esc_html__( 'Icon', 'elementor' ), + 'type' => Controls_Manager::ICONS, + 'fa4compatibility' => 'icon', + 'default' => [ + 'value' => 'fas fa-star', + 'library' => 'fa-solid', + ], + ] + ); + + $this->add_control( + 'view', + [ + 'label' => esc_html__( 'View', 'elementor' ), + 'type' => Controls_Manager::SELECT, + 'options' => [ + 'default' => esc_html__( 'Default', 'elementor' ), + 'stacked' => esc_html__( 'Stacked', 'elementor' ), + 'framed' => esc_html__( 'Framed', 'elementor' ), + ], + 'default' => 'default', + 'prefix_class' => 'elementor-view-', + ] + ); + + $this->add_control( + 'shape', + [ + 'label' => esc_html__( 'Shape', 'elementor' ), + 'type' => Controls_Manager::SELECT, + 'options' => [ + 'circle' => esc_html__( 'Circle', 'elementor' ), + 'square' => esc_html__( 'Square', 'elementor' ), + ], + 'default' => 'circle', + 'condition' => [ + 'view!' => 'default', + ], + 'prefix_class' => 'elementor-shape-', + ] + ); + + $this->add_control( + 'link', + [ + 'label' => esc_html__( 'Link', 'elementor' ), + 'type' => Controls_Manager::URL, + 'dynamic' => [ + 'active' => true, + ], + ] + ); + + $this->end_controls_section(); + + $this->start_controls_section( + 'section_style_icon', + [ + 'label' => esc_html__( 'Icon', 'elementor' ), + 'tab' => Controls_Manager::TAB_STYLE, + ] + ); + + $this->add_responsive_control( + 'align', + [ + 'label' => esc_html__( 'Alignment', 'elementor' ), + 'type' => Controls_Manager::CHOOSE, + 'options' => [ + 'left' => [ + 'title' => esc_html__( 'Left', 'elementor' ), + 'icon' => 'eicon-text-align-left', + ], + 'center' => [ + 'title' => esc_html__( 'Center', 'elementor' ), + 'icon' => 'eicon-text-align-center', + ], + 'right' => [ + 'title' => esc_html__( 'Right', 'elementor' ), + 'icon' => 'eicon-text-align-right', + ], + ], + 'default' => 'center', + 'selectors' => [ + '{{WRAPPER}} .elementor-icon-wrapper' => 'text-align: {{VALUE}};', + ], + ] + ); + + $this->start_controls_tabs( 'icon_colors' ); + + $this->start_controls_tab( + 'icon_colors_normal', + [ + 'label' => esc_html__( 'Normal', 'elementor' ), + ] + ); + + $this->add_control( + 'primary_color', + [ + 'label' => esc_html__( 'Primary Color', 'elementor' ), + 'type' => Controls_Manager::COLOR, + 'default' => '', + 'selectors' => [ + '{{WRAPPER}}.elementor-view-stacked .elementor-icon' => 'background-color: {{VALUE}};', + '{{WRAPPER}}.elementor-view-framed .elementor-icon, {{WRAPPER}}.elementor-view-default .elementor-icon' => 'color: {{VALUE}}; border-color: {{VALUE}};', + '{{WRAPPER}}.elementor-view-framed .elementor-icon, {{WRAPPER}}.elementor-view-default .elementor-icon svg' => 'fill: {{VALUE}};', + ], + 'global' => [ + 'default' => Global_Colors::COLOR_PRIMARY, + ], + ] + ); + + $this->add_control( + 'secondary_color', + [ + 'label' => esc_html__( 'Secondary Color', 'elementor' ), + 'type' => Controls_Manager::COLOR, + 'default' => '', + 'condition' => [ + 'view!' => 'default', + ], + 'selectors' => [ + '{{WRAPPER}}.elementor-view-framed .elementor-icon' => 'background-color: {{VALUE}};', + '{{WRAPPER}}.elementor-view-stacked .elementor-icon' => 'color: {{VALUE}};', + '{{WRAPPER}}.elementor-view-stacked .elementor-icon svg' => 'fill: {{VALUE}};', + ], + ] + ); + + $this->end_controls_tab(); + + $this->start_controls_tab( + 'icon_colors_hover', + [ + 'label' => esc_html__( 'Hover', 'elementor' ), + ] + ); + + $this->add_control( + 'hover_primary_color', + [ + 'label' => esc_html__( 'Primary Color', 'elementor' ), + 'type' => Controls_Manager::COLOR, + 'default' => '', + 'selectors' => [ + '{{WRAPPER}}.elementor-view-stacked .elementor-icon:hover' => 'background-color: {{VALUE}};', + '{{WRAPPER}}.elementor-view-framed .elementor-icon:hover, {{WRAPPER}}.elementor-view-default .elementor-icon:hover' => 'color: {{VALUE}}; border-color: {{VALUE}};', + '{{WRAPPER}}.elementor-view-framed .elementor-icon:hover, {{WRAPPER}}.elementor-view-default .elementor-icon:hover svg' => 'fill: {{VALUE}};', + ], + ] + ); + + $this->add_control( + 'hover_secondary_color', + [ + 'label' => esc_html__( 'Secondary Color', 'elementor' ), + 'type' => Controls_Manager::COLOR, + 'default' => '', + 'condition' => [ + 'view!' => 'default', + ], + 'selectors' => [ + '{{WRAPPER}}.elementor-view-framed .elementor-icon:hover' => 'background-color: {{VALUE}};', + '{{WRAPPER}}.elementor-view-stacked .elementor-icon:hover' => 'color: {{VALUE}};', + '{{WRAPPER}}.elementor-view-stacked .elementor-icon:hover svg' => 'fill: {{VALUE}};', + ], + ] + ); + + $this->add_control( + 'hover_animation', + [ + 'label' => esc_html__( 'Hover Animation', 'elementor' ), + 'type' => Controls_Manager::HOVER_ANIMATION, + ] + ); + + $this->end_controls_tab(); + + $this->end_controls_tabs(); + + $this->add_responsive_control( + 'size', + [ + 'label' => esc_html__( 'Size', 'elementor' ), + 'type' => Controls_Manager::SLIDER, + 'size_units' => [ 'px', '%', 'em', 'rem', 'vw', 'custom' ], + 'range' => [ + 'px' => [ + 'min' => 6, + 'max' => 300, + ], + ], + 'selectors' => [ + '{{WRAPPER}} .elementor-icon' => 'font-size: {{SIZE}}{{UNIT}};', + '{{WRAPPER}} .elementor-icon svg' => 'height: {{SIZE}}{{UNIT}};', + ], + 'separator' => 'before', + ] + ); + + $this->add_control( + 'fit_to_size', + [ + 'label' => esc_html__( 'Fit to Size', 'elementor' ), + 'type' => Controls_Manager::SWITCHER, + 'description' => 'Avoid gaps around icons when width and height aren\'t equal', + 'label_off' => esc_html__( 'Off', 'elementor' ), + 'label_on' => esc_html__( 'On', 'elementor' ), + 'condition' => [ + 'selected_icon[library]' => 'svg', + ], + 'selectors' => [ + '{{WRAPPER}} .elementor-icon-wrapper svg' => 'width: 100%;', + ], + ] + ); + + $this->add_control( + 'icon_padding', + [ + 'label' => esc_html__( 'Padding', 'elementor' ), + 'type' => Controls_Manager::SLIDER, + 'size_units' => [ 'px', '%', 'em', 'rem', 'custom' ], + 'selectors' => [ + '{{WRAPPER}} .elementor-icon' => 'padding: {{SIZE}}{{UNIT}};', + ], + 'range' => [ + 'px' => [ + 'max' => 50, + ], + 'em' => [ + 'min' => 0, + 'max' => 5, + ], + 'rem' => [ + 'min' => 0, + 'max' => 5, + ], + ], + 'condition' => [ + 'view!' => 'default', + ], + ] + ); + + $this->add_responsive_control( + 'rotate', + [ + 'label' => esc_html__( 'Rotate', 'elementor' ), + 'type' => Controls_Manager::SLIDER, + 'size_units' => [ 'deg', 'grad', 'rad', 'turn', 'custom' ], + 'default' => [ + 'unit' => 'deg', + ], + 'tablet_default' => [ + 'unit' => 'deg', + ], + 'mobile_default' => [ + 'unit' => 'deg', + ], + 'selectors' => [ + '{{WRAPPER}} .elementor-icon i, {{WRAPPER}} .elementor-icon svg' => 'transform: rotate({{SIZE}}{{UNIT}});', + ], + ] + ); + + $this->add_control( + 'border_width', + [ + 'label' => esc_html__( 'Border Width', 'elementor' ), + 'type' => Controls_Manager::DIMENSIONS, + 'size_units' => [ 'px', '%', 'em', 'rem', 'vw', 'custom' ], + 'selectors' => [ + '{{WRAPPER}} .elementor-icon' => 'border-width: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};', + ], + 'condition' => [ + 'view' => 'framed', + ], + ] + ); + + $this->add_responsive_control( + 'border_radius', + [ + 'label' => esc_html__( 'Border Radius', 'elementor' ), + 'type' => Controls_Manager::DIMENSIONS, + 'size_units' => [ 'px', '%', 'em', 'rem', 'custom' ], + 'selectors' => [ + '{{WRAPPER}} .elementor-icon' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};', + ], + 'condition' => [ + 'view!' => 'default', + ], + ] + ); + + $this->end_controls_section(); + } + + /** + * Render icon widget output on the frontend. + * + * Written in PHP and used to generate the final HTML. + * + * @since 1.0.0 + * @access protected + */ + protected function render() { + $settings = $this->get_settings_for_display(); + + $this->add_render_attribute( 'wrapper', 'class', 'elementor-icon-wrapper' ); + + $this->add_render_attribute( 'icon-wrapper', 'class', 'elementor-icon' ); + + if ( ! empty( $settings['hover_animation'] ) ) { + $this->add_render_attribute( 'icon-wrapper', 'class', 'elementor-animation-' . $settings['hover_animation'] ); + } + + $icon_tag = 'div'; + + if ( ! empty( $settings['link']['url'] ) ) { + $this->add_link_attributes( 'icon-wrapper', $settings['link'] ); + + $icon_tag = 'a'; + } + + if ( empty( $settings['icon'] ) && ! Icons_Manager::is_migration_allowed() ) { + // add old default + $settings['icon'] = 'fa fa-star'; + } + + if ( ! empty( $settings['icon'] ) ) { + $this->add_render_attribute( 'icon', 'class', $settings['icon'] ); + $this->add_render_attribute( 'icon', 'aria-hidden', 'true' ); + } + + $migrated = isset( $settings['__fa4_migrated']['selected_icon'] ); + $is_new = empty( $settings['icon'] ) && Icons_Manager::is_migration_allowed(); + + ?> +
    print_render_attribute_string( 'wrapper' ); ?>> + <get_render_attribute_string( 'icon-wrapper' ) ); ?>> + 'true' ] ); + else : ?> + print_render_attribute_string( 'icon' ); ?>> + + > +
    + + <# const link = settings.link.url ? 'href="' + _.escape( settings.link.url ) + '"' : '', + iconHTML = elementor.helpers.renderIcon( view, settings.selected_icon, { 'aria-hidden': true }, 'i' , 'object' ), + migrated = elementor.helpers.isIconMigrated( settings, 'selected_icon' ), + iconTag = link ? 'a' : 'div'; + #> +
    + <{{{ iconTag }}} class="elementor-icon elementor-animation-{{ settings.hover_animation }}" {{{ link }}}> + <# if ( iconHTML && iconHTML.rendered && ( ! settings.icon || migrated ) ) { #> + {{{ iconHTML.value }}} + <# } else { #> + + <# } #> + +
    + start_controls_section( + 'section_image', + [ + 'label' => esc_html__( 'Image Box', 'elementor' ), + ] + ); + + $this->add_control( + 'image', + [ + 'label' => esc_html__( 'Choose Image', 'elementor' ), + 'type' => Controls_Manager::MEDIA, + 'dynamic' => [ + 'active' => true, + ], + 'default' => [ + 'url' => Utils::get_placeholder_image_src(), + ], + ] + ); + + $this->add_group_control( + Group_Control_Image_Size::get_type(), + [ + 'name' => 'thumbnail', // Usage: `{name}_size` and `{name}_custom_dimension`, in this case `thumbnail_size` and `thumbnail_custom_dimension`. + 'default' => 'full', + 'condition' => [ + 'image[url]!' => '', + ], + ] + ); + + $this->add_control( + 'title_text', + [ + 'label' => esc_html__( 'Title', 'elementor' ), + 'type' => Controls_Manager::TEXT, + 'dynamic' => [ + 'active' => true, + ], + 'default' => esc_html__( 'This is the heading', 'elementor' ), + 'placeholder' => esc_html__( 'Enter your title', 'elementor' ), + 'label_block' => true, + ] + ); + + $this->add_control( + 'description_text', + [ + 'label' => esc_html__( 'Description', 'elementor' ), + 'type' => Controls_Manager::TEXTAREA, + 'dynamic' => [ + 'active' => true, + ], + 'default' => esc_html__( 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut elit tellus, luctus nec ullamcorper mattis, pulvinar dapibus leo.', 'elementor' ), + 'placeholder' => esc_html__( 'Enter your description', 'elementor' ), + 'rows' => 10, + ] + ); + + $this->add_control( + 'link', + [ + 'label' => esc_html__( 'Link', 'elementor' ), + 'type' => Controls_Manager::URL, + 'dynamic' => [ + 'active' => true, + ], + 'separator' => 'before', + ] + ); + + $this->add_control( + 'title_size', + [ + 'label' => esc_html__( 'Title HTML Tag', 'elementor' ), + 'type' => Controls_Manager::SELECT, + 'options' => [ + 'h1' => 'H1', + 'h2' => 'H2', + 'h3' => 'H3', + 'h4' => 'H4', + 'h5' => 'H5', + 'h6' => 'H6', + 'div' => 'div', + 'span' => 'span', + 'p' => 'p', + ], + 'default' => 'h3', + ] + ); + + $this->end_controls_section(); + + $this->start_controls_section( + 'section_style_box', + [ + 'label' => esc_html__( 'Box', 'elementor' ), + 'tab' => Controls_Manager::TAB_STYLE, + ] + ); + + $this->add_responsive_control( + 'position', + [ + 'label' => esc_html__( 'Image Position', 'elementor' ), + 'type' => Controls_Manager::CHOOSE, + 'default' => 'top', + 'options' => [ + 'left' => [ + 'title' => esc_html__( 'Left', 'elementor' ), + 'icon' => 'eicon-h-align-left', + ], + 'top' => [ + 'title' => esc_html__( 'Top', 'elementor' ), + 'icon' => 'eicon-v-align-top', + ], + 'right' => [ + 'title' => esc_html__( 'Right', 'elementor' ), + 'icon' => 'eicon-h-align-right', + ], + ], + 'prefix_class' => 'elementor-position-', + 'toggle' => false, + 'condition' => [ + 'image[url]!' => '', + ], + ] + ); + + $this->add_responsive_control( + 'content_vertical_alignment', + [ + 'label' => esc_html__( 'Vertical Alignment', 'elementor' ), + 'type' => Controls_Manager::CHOOSE, + 'options' => [ + 'top' => [ + 'title' => esc_html__( 'Top', 'elementor' ), + 'icon' => 'eicon-v-align-top', + ], + 'middle' => [ + 'title' => esc_html__( 'Middle', 'elementor' ), + 'icon' => 'eicon-v-align-middle', + ], + 'bottom' => [ + 'title' => esc_html__( 'Bottom', 'elementor' ), + 'icon' => 'eicon-v-align-bottom', + ], + ], + 'default' => 'top', + 'toggle' => false, + 'prefix_class' => 'elementor-vertical-align-', + 'condition' => [ + 'position!' => 'top', + ], + ] + ); + + $this->add_responsive_control( + 'text_align', + [ + 'label' => esc_html__( 'Alignment', 'elementor' ), + 'type' => Controls_Manager::CHOOSE, + 'options' => [ + 'left' => [ + 'title' => esc_html__( 'Left', 'elementor' ), + 'icon' => 'eicon-text-align-left', + ], + 'center' => [ + 'title' => esc_html__( 'Center', 'elementor' ), + 'icon' => 'eicon-text-align-center', + ], + 'right' => [ + 'title' => esc_html__( 'Right', 'elementor' ), + 'icon' => 'eicon-text-align-right', + ], + 'justify' => [ + 'title' => esc_html__( 'Justified', 'elementor' ), + 'icon' => 'eicon-text-align-justify', + ], + ], + 'selectors' => [ + '{{WRAPPER}} .elementor-image-box-wrapper' => 'text-align: {{VALUE}};', + ], + 'separator' => 'after', + ] + ); + + $this->add_responsive_control( + 'image_space', + [ + 'label' => esc_html__( 'Image Spacing', 'elementor' ), + 'type' => Controls_Manager::SLIDER, + 'size_units' => [ 'px', '%', 'em', 'rem', 'vw', 'custom' ], + 'default' => [ + 'size' => 15, + ], + 'range' => [ + 'px' => [ + 'max' => 100, + ], + ], + 'selectors' => [ + '{{WRAPPER}}.elementor-position-right .elementor-image-box-img' => 'margin-left: {{SIZE}}{{UNIT}};', + '{{WRAPPER}}.elementor-position-left .elementor-image-box-img' => 'margin-right: {{SIZE}}{{UNIT}};', + '{{WRAPPER}}.elementor-position-top .elementor-image-box-img' => 'margin-bottom: {{SIZE}}{{UNIT}};', + '(mobile){{WRAPPER}} .elementor-image-box-img' => 'margin-bottom: {{SIZE}}{{UNIT}};', + ], + 'condition' => [ + 'image[url]!' => '', + ], + ] + ); + + $this->add_responsive_control( + 'title_bottom_space', + [ + 'label' => esc_html__( 'Content Spacing', 'elementor' ), + 'type' => Controls_Manager::SLIDER, + 'size_units' => [ 'px', 'em', 'rem', 'custom' ], + 'range' => [ + 'px' => [ + 'max' => 100, + ], + 'em' => [ + 'min' => 0, + 'max' => 10, + ], + 'rem' => [ + 'min' => 0, + 'max' => 10, + ], + ], + 'selectors' => [ + '{{WRAPPER}} .elementor-image-box-title' => 'margin-bottom: {{SIZE}}{{UNIT}};', + ], + ] + ); + + $this->end_controls_section(); + + $this->start_controls_section( + 'section_style_image', + [ + 'label' => esc_html__( 'Image', 'elementor' ), + 'tab' => Controls_Manager::TAB_STYLE, + 'condition' => [ + 'image[url]!' => '', + ], + ] + ); + + $this->add_responsive_control( + 'image_size', + [ + 'label' => esc_html__( 'Width', 'elementor' ), + 'type' => Controls_Manager::SLIDER, + 'default' => [ + 'size' => 30, + 'unit' => '%', + ], + 'tablet_default' => [ + 'unit' => '%', + ], + 'mobile_default' => [ + 'unit' => '%', + ], + 'size_units' => [ 'px', '%', 'em', 'rem', 'vw', 'custom' ], + 'range' => [ + '%' => [ + 'min' => 5, + 'max' => 100, + ], + ], + 'selectors' => [ + '{{WRAPPER}} .elementor-image-box-wrapper .elementor-image-box-img' => 'width: {{SIZE}}{{UNIT}};', + ], + ] + ); + + $this->add_group_control( + Group_Control_Border::get_type(), + [ + 'name' => 'image_border', + 'selector' => '{{WRAPPER}} .elementor-image-box-img img', + 'separator' => 'before', + ] + ); + + $this->add_responsive_control( + 'image_border_radius', + [ + 'label' => esc_html__( 'Border Radius', 'elementor' ), + 'type' => Controls_Manager::SLIDER, + 'size_units' => [ 'px', '%', 'em', 'rem', 'custom' ], + 'separator' => 'after', + 'selectors' => [ + '{{WRAPPER}} .elementor-image-box-img img' => 'border-radius: {{SIZE}}{{UNIT}};', + ], + ] + ); + + $this->start_controls_tabs( 'image_effects' ); + + $this->start_controls_tab( + 'normal', + [ + 'label' => esc_html__( 'Normal', 'elementor' ), + ] + ); + + $this->add_group_control( + Group_Control_Css_Filter::get_type(), + [ + 'name' => 'css_filters', + 'selector' => '{{WRAPPER}} .elementor-image-box-img img', + ] + ); + + $this->add_control( + 'image_opacity', + [ + 'label' => esc_html__( 'Opacity', 'elementor' ), + 'type' => Controls_Manager::SLIDER, + 'range' => [ + 'px' => [ + 'max' => 1, + 'min' => 0.10, + 'step' => 0.01, + ], + ], + 'selectors' => [ + '{{WRAPPER}} .elementor-image-box-img img' => 'opacity: {{SIZE}};', + ], + ] + ); + + $this->end_controls_tab(); + + $this->start_controls_tab( + 'hover', + [ + 'label' => esc_html__( 'Hover', 'elementor' ), + ] + ); + + $this->add_group_control( + Group_Control_Css_Filter::get_type(), + [ + 'name' => 'css_filters_hover', + 'selector' => '{{WRAPPER}}:hover .elementor-image-box-img img', + ] + ); + + $this->add_control( + 'image_opacity_hover', + [ + 'label' => esc_html__( 'Opacity', 'elementor' ), + 'type' => Controls_Manager::SLIDER, + 'range' => [ + 'px' => [ + 'max' => 1, + 'min' => 0.10, + 'step' => 0.01, + ], + ], + 'selectors' => [ + '{{WRAPPER}}:hover .elementor-image-box-img img' => 'opacity: {{SIZE}};', + ], + ] + ); + + $this->add_control( + 'background_hover_transition', + [ + 'label' => esc_html__( 'Transition Duration', 'elementor' ) . ' (s)', + 'type' => Controls_Manager::SLIDER, + 'default' => [ + 'size' => 0.3, + ], + 'range' => [ + 'px' => [ + 'min' => 0, + 'max' => 3, + 'step' => 0.1, + ], + ], + 'selectors' => [ + '{{WRAPPER}} .elementor-image-box-img img' => 'transition-duration: {{SIZE}}s', + ], + ] + ); + + $this->add_control( + 'hover_animation', + [ + 'label' => esc_html__( 'Hover Animation', 'elementor' ), + 'type' => Controls_Manager::HOVER_ANIMATION, + ] + ); + + $this->end_controls_tab(); + + $this->end_controls_tabs(); + + $this->end_controls_section(); + + $this->start_controls_section( + 'section_style_content', + [ + 'label' => esc_html__( 'Content', 'elementor' ), + 'tab' => Controls_Manager::TAB_STYLE, + ] + ); + + $this->add_control( + 'heading_title', + [ + 'label' => esc_html__( 'Title', 'elementor' ), + 'type' => Controls_Manager::HEADING, + 'separator' => 'before', + ] + ); + + $this->add_control( + 'title_color', + [ + 'label' => esc_html__( 'Color', 'elementor' ), + 'type' => Controls_Manager::COLOR, + 'default' => '', + 'selectors' => [ + '{{WRAPPER}} .elementor-image-box-title' => 'color: {{VALUE}};', + ], + 'global' => [ + 'default' => Global_Colors::COLOR_PRIMARY, + ], + ] + ); + + $this->add_group_control( + Group_Control_Typography::get_type(), + [ + 'name' => 'title_typography', + 'selector' => '{{WRAPPER}} .elementor-image-box-title', + 'global' => [ + 'default' => Global_Typography::TYPOGRAPHY_PRIMARY, + ], + ] + ); + + $this->add_group_control( + Group_Control_Text_Stroke::get_type(), + [ + 'name' => 'title_stroke', + 'selector' => '{{WRAPPER}} .elementor-image-box-title', + ] + ); + + $this->add_group_control( + Group_Control_Text_Shadow::get_type(), + [ + 'name' => 'title_shadow', + 'selector' => '{{WRAPPER}} .elementor-image-box-title', + ] + ); + + $this->add_control( + 'heading_description', + [ + 'label' => esc_html__( 'Description', 'elementor' ), + 'type' => Controls_Manager::HEADING, + 'separator' => 'before', + ] + ); + + $this->add_control( + 'description_color', + [ + 'label' => esc_html__( 'Color', 'elementor' ), + 'type' => Controls_Manager::COLOR, + 'default' => '', + 'selectors' => [ + '{{WRAPPER}} .elementor-image-box-description' => 'color: {{VALUE}};', + ], + 'global' => [ + 'default' => Global_Colors::COLOR_TEXT, + ], + ] + ); + + $this->add_group_control( + Group_Control_Typography::get_type(), + [ + 'name' => 'description_typography', + 'selector' => '{{WRAPPER}} .elementor-image-box-description', + 'global' => [ + 'default' => Global_Typography::TYPOGRAPHY_TEXT, + ], + ] + ); + + $this->add_group_control( + Group_Control_Text_Shadow::get_type(), + [ + 'name' => 'description_shadow', + 'selector' => '{{WRAPPER}} .elementor-image-box-description', + ] + ); + + $this->end_controls_section(); + } + + /** + * Render image box widget output on the frontend. + * + * Written in PHP and used to generate the final HTML. + * + * @since 1.0.0 + * @access protected + */ + protected function render() { + $settings = $this->get_settings_for_display(); + + $has_content = ! Utils::is_empty( $settings['title_text'] ) || ! Utils::is_empty( $settings['description_text'] ); + + $html = '
    '; + + if ( ! empty( $settings['link']['url'] ) ) { + $this->add_link_attributes( 'link', $settings['link'] ); + } + + if ( ! empty( $settings['image']['url'] ) ) { + + $image_html = wp_kses_post( Group_Control_Image_Size::get_attachment_image_html( $settings, 'thumbnail', 'image' ) ); + + if ( ! empty( $settings['link']['url'] ) ) { + $image_html = 'get_render_attribute_string( 'link' ) . ' tabindex="-1">' . $image_html . ''; + } + + $html .= '
    ' . $image_html . '
    '; + } + + if ( $has_content ) { + $html .= '
    '; + + if ( ! Utils::is_empty( $settings['title_text'] ) ) { + $this->add_render_attribute( 'title_text', 'class', 'elementor-image-box-title' ); + + $this->add_inline_editing_attributes( 'title_text', 'none' ); + + $title_html = $settings['title_text']; + + if ( ! empty( $settings['link']['url'] ) ) { + $title_html = 'get_render_attribute_string( 'link' ) . '>' . $title_html . ''; + } + + $html .= sprintf( '<%1$s %2$s>%3$s', Utils::validate_html_tag( $settings['title_size'] ), $this->get_render_attribute_string( 'title_text' ), $title_html ); + } + + if ( ! Utils::is_empty( $settings['description_text'] ) ) { + $this->add_render_attribute( 'description_text', 'class', 'elementor-image-box-description' ); + + $this->add_inline_editing_attributes( 'description_text' ); + + $html .= sprintf( '

    %2$s

    ', $this->get_render_attribute_string( 'description_text' ), $settings['description_text'] ); + } + + $html .= '
    '; + } + + $html .= '
    '; + + Utils::print_unescaped_internal_string( $html ); + } + + /** + * Render image box widget output in the editor. + * + * Written as a Backbone JavaScript template and used to generate the live preview. + * + * @since 2.9.0 + * @access protected + */ + protected function content_template() { + ?> + <# + var html = '
    '; + + if ( settings.image.url ) { + var image = { + id: settings.image.id, + url: settings.image.url, + size: settings.thumbnail_size, + dimension: settings.thumbnail_custom_dimension, + model: view.getEditModel() + }; + + var image_url = elementor.imagesManager.getImageUrl( image ); + + var imageHtml = ''; + + if ( settings.link.url ) { + imageHtml = '' + imageHtml + ''; + } + + html += '
    ' + imageHtml + '
    '; + } + + var hasContent = !! ( settings.title_text || settings.description_text ); + + if ( hasContent ) { + html += '
    '; + + if ( settings.title_text ) { + var title_html = settings.title_text, + titleSizeTag = elementor.helpers.validateHTMLTag( settings.title_size ); + + if ( settings.link.url ) { + title_html = '' + title_html + ''; + } + + view.addRenderAttribute( 'title_text', 'class', 'elementor-image-box-title' ); + + view.addInlineEditingAttributes( 'title_text', 'none' ); + + html += '<' + titleSizeTag + ' ' + view.getRenderAttributeString( 'title_text' ) + '>' + title_html + ''; + } + + if ( settings.description_text ) { + view.addRenderAttribute( 'description_text', 'class', 'elementor-image-box-description' ); + + view.addInlineEditingAttributes( 'description_text' ); + + html += '

    ' + settings.description_text + '

    '; + } + + html += '
    '; + } + + html += '
    '; + + print( html ); + #> + ! Utils::has_pro(), + 'image' => esc_url( ELEMENTOR_ASSETS_URL . 'images/go-pro.svg' ), + 'image_alt' => esc_attr__( 'Upgrade', 'elementor' ), + 'description' => esc_html__( 'Gain complete freedom to design every slide with Elementor"s Pro Carousel.', 'elementor' ), + 'upgrade_url' => esc_url( 'https://go.elementor.com/go-pro-image-carousel-widget/' ), + 'upgrade_text' => esc_html__( 'Upgrade Now', 'elementor' ), + ]; + } + + /** + * Register image carousel widget controls. + * + * Adds different input fields to allow the user to change and customize the widget settings. + * + * @since 3.1.0 + * @access protected + */ + protected function register_controls() { + $this->start_controls_section( + 'section_image_carousel', + [ + 'label' => esc_html__( 'Image Carousel', 'elementor' ), + ] + ); + + $this->add_control( + 'carousel', + [ + 'label' => esc_html__( 'Add Images', 'elementor' ), + 'type' => Controls_Manager::GALLERY, + 'default' => [], + 'show_label' => false, + 'dynamic' => [ + 'active' => true, + ], + ] + ); + + $this->add_group_control( + Group_Control_Image_Size::get_type(), + [ + 'name' => 'thumbnail', // Usage: `{name}_size` and `{name}_custom_dimension`, in this case `thumbnail_size` and `thumbnail_custom_dimension`. + ] + ); + + $slides_to_show = range( 1, 10 ); + $slides_to_show = array_combine( $slides_to_show, $slides_to_show ); + + $this->add_responsive_control( + 'slides_to_show', + [ + 'label' => esc_html__( 'Slides to Show', 'elementor' ), + 'type' => Controls_Manager::SELECT, + 'options' => [ + '' => esc_html__( 'Default', 'elementor' ), + ] + $slides_to_show, + 'frontend_available' => true, + 'render_type' => 'template', + 'selectors' => [ + '{{WRAPPER}}' => '--e-image-carousel-slides-to-show: {{VALUE}}', + ], + 'content_classes' => 'elementor-control-field-select-small', + ] + ); + + $this->add_responsive_control( + 'slides_to_scroll', + [ + 'label' => esc_html__( 'Slides to Scroll', 'elementor' ), + 'type' => Controls_Manager::SELECT, + 'description' => esc_html__( 'Set how many slides are scrolled per swipe.', 'elementor' ), + 'options' => [ + '' => esc_html__( 'Default', 'elementor' ), + ] + $slides_to_show, + 'condition' => [ + 'slides_to_show!' => '1', + ], + 'frontend_available' => true, + 'content_classes' => 'elementor-control-field-select-small', + ] + ); + + $this->add_control( + 'image_stretch', + [ + 'label' => esc_html__( 'Image Stretch', 'elementor' ), + 'type' => Controls_Manager::SELECT, + 'default' => 'no', + 'options' => [ + 'no' => esc_html__( 'No', 'elementor' ), + 'yes' => esc_html__( 'Yes', 'elementor' ), + ], + ] + ); + + $this->add_control( + 'navigation', + [ + 'label' => esc_html__( 'Navigation', 'elementor' ), + 'type' => Controls_Manager::SELECT, + 'default' => 'both', + 'options' => [ + 'both' => esc_html__( 'Arrows and Dots', 'elementor' ), + 'arrows' => esc_html__( 'Arrows', 'elementor' ), + 'dots' => esc_html__( 'Dots', 'elementor' ), + 'none' => esc_html__( 'None', 'elementor' ), + ], + 'frontend_available' => true, + ] + ); + + $this->add_control( + 'navigation_previous_icon', + [ + 'label' => esc_html__( 'Previous Arrow Icon', 'elementor' ), + 'type' => Controls_Manager::ICONS, + 'fa4compatibility' => 'icon', + 'skin' => 'inline', + 'label_block' => false, + 'skin_settings' => [ + 'inline' => [ + 'none' => [ + 'label' => 'Default', + 'icon' => 'eicon-chevron-left', + ], + 'icon' => [ + 'icon' => 'eicon-star', + ], + ], + ], + 'recommended' => [ + 'fa-regular' => [ + 'arrow-alt-circle-left', + 'caret-square-left', + ], + 'fa-solid' => [ + 'angle-double-left', + 'angle-left', + 'arrow-alt-circle-left', + 'arrow-circle-left', + 'arrow-left', + 'caret-left', + 'caret-square-left', + 'chevron-circle-left', + 'chevron-left', + 'long-arrow-alt-left', + ], + ], + 'conditions' => [ + 'relation' => 'or', + 'terms' => [ + [ + 'name' => 'navigation', + 'operator' => '=', + 'value' => 'both', + ], + [ + 'name' => 'navigation', + 'operator' => '=', + 'value' => 'arrows', + ], + ], + ], + ] + ); + + $this->add_control( + 'navigation_next_icon', + [ + 'label' => esc_html__( 'Next Arrow Icon', 'elementor' ), + 'type' => Controls_Manager::ICONS, + 'fa4compatibility' => 'icon', + 'skin' => 'inline', + 'label_block' => false, + 'skin_settings' => [ + 'inline' => [ + 'none' => [ + 'label' => 'Default', + 'icon' => 'eicon-chevron-right', + ], + 'icon' => [ + 'icon' => 'eicon-star', + ], + ], + ], + 'recommended' => [ + 'fa-regular' => [ + 'arrow-alt-circle-right', + 'caret-square-right', + ], + 'fa-solid' => [ + 'angle-double-right', + 'angle-right', + 'arrow-alt-circle-right', + 'arrow-circle-right', + 'arrow-right', + 'caret-right', + 'caret-square-right', + 'chevron-circle-right', + 'chevron-right', + 'long-arrow-alt-right', + ], + ], + 'conditions' => [ + 'relation' => 'or', + 'terms' => [ + [ + 'name' => 'navigation', + 'operator' => '=', + 'value' => 'both', + ], + [ + 'name' => 'navigation', + 'operator' => '=', + 'value' => 'arrows', + ], + ], + ], + ] + ); + + $this->add_control( + 'link_to', + [ + 'label' => esc_html__( 'Link', 'elementor' ), + 'type' => Controls_Manager::SELECT, + 'default' => 'none', + 'options' => [ + 'none' => esc_html__( 'None', 'elementor' ), + 'file' => esc_html__( 'Media File', 'elementor' ), + 'custom' => esc_html__( 'Custom URL', 'elementor' ), + ], + ] + ); + + $this->add_control( + 'link', + [ + 'label' => esc_html__( 'Link', 'elementor' ), + 'type' => Controls_Manager::URL, + 'condition' => [ + 'link_to' => 'custom', + ], + 'show_label' => false, + 'dynamic' => [ + 'active' => true, + ], + ] + ); + + $this->add_control( + 'open_lightbox', + [ + 'label' => esc_html__( 'Lightbox', 'elementor' ), + 'type' => Controls_Manager::SELECT, + 'description' => sprintf( + /* translators: 1: Link open tag, 2: Link close tag. */ + esc_html__( 'Manage your site’s lightbox settings in the %1$sLightbox panel%2$s.', 'elementor' ), + '', + '' + ), + 'default' => 'default', + 'options' => [ + 'default' => esc_html__( 'Default', 'elementor' ), + 'yes' => esc_html__( 'Yes', 'elementor' ), + 'no' => esc_html__( 'No', 'elementor' ), + ], + 'condition' => [ + 'link_to' => 'file', + ], + ] + ); + + $this->add_control( + 'caption_type', + [ + 'label' => esc_html__( 'Caption', 'elementor' ), + 'type' => Controls_Manager::SELECT, + 'default' => '', + 'options' => [ + '' => esc_html__( 'None', 'elementor' ), + 'title' => esc_html__( 'Title', 'elementor' ), + 'caption' => esc_html__( 'Caption', 'elementor' ), + 'description' => esc_html__( 'Description', 'elementor' ), + ], + ] + ); + + $this->end_controls_section(); + + $this->start_controls_section( + 'section_additional_options', + [ + 'label' => esc_html__( 'Additional Options', 'elementor' ), + ] + ); + + $this->add_control( + 'lazyload', + [ + 'label' => esc_html__( 'Lazyload', 'elementor' ), + 'type' => Controls_Manager::SWITCHER, + 'frontend_available' => true, + ] + ); + + $this->add_control( + 'autoplay', + [ + 'label' => esc_html__( 'Autoplay', 'elementor' ), + 'type' => Controls_Manager::SWITCHER, + 'label_on' => esc_html__( 'Yes', 'elementor' ), + 'label_off' => esc_html__( 'No', 'elementor' ), + 'return_value' => 'yes', + 'default' => 'yes', + 'frontend_available' => true, + ] + ); + + $this->add_control( + 'pause_on_hover', + [ + 'label' => esc_html__( 'Pause on Hover', 'elementor' ), + 'type' => Controls_Manager::SWITCHER, + 'label_on' => esc_html__( 'Yes', 'elementor' ), + 'label_off' => esc_html__( 'No', 'elementor' ), + 'return_value' => 'yes', + 'default' => 'yes', + 'condition' => [ + 'autoplay' => 'yes', + ], + 'render_type' => 'none', + 'frontend_available' => true, + ] + ); + + $this->add_control( + 'pause_on_interaction', + [ + 'label' => esc_html__( 'Pause on Interaction', 'elementor' ), + 'type' => Controls_Manager::SWITCHER, + 'label_on' => esc_html__( 'Yes', 'elementor' ), + 'label_off' => esc_html__( 'No', 'elementor' ), + 'return_value' => 'yes', + 'default' => 'yes', + 'condition' => [ + 'autoplay' => 'yes', + ], + 'frontend_available' => true, + ] + ); + + $this->add_control( + 'autoplay_speed', + [ + 'label' => esc_html__( 'Autoplay Speed', 'elementor' ), + 'type' => Controls_Manager::NUMBER, + 'default' => 5000, + 'condition' => [ + 'autoplay' => 'yes', + ], + 'render_type' => 'none', + 'frontend_available' => true, + ] + ); + + // Loop requires a re-render so no 'render_type = none' + $this->add_control( + 'infinite', + [ + 'label' => esc_html__( 'Infinite Loop', 'elementor' ), + 'type' => Controls_Manager::SWITCHER, + 'label_on' => esc_html__( 'Yes', 'elementor' ), + 'label_off' => esc_html__( 'No', 'elementor' ), + 'return_value' => 'yes', + 'default' => 'yes', + 'frontend_available' => true, + ] + ); + + $this->add_control( + 'effect', + [ + 'label' => esc_html__( 'Effect', 'elementor' ), + 'type' => Controls_Manager::SELECT, + 'default' => 'slide', + 'options' => [ + 'slide' => esc_html__( 'Slide', 'elementor' ), + 'fade' => esc_html__( 'Fade', 'elementor' ), + ], + 'condition' => [ + 'slides_to_show' => '1', + ], + 'frontend_available' => true, + ] + ); + + $this->add_control( + 'speed', + [ + 'label' => esc_html__( 'Animation Speed', 'elementor' ), + 'type' => Controls_Manager::NUMBER, + 'default' => 500, + 'render_type' => 'none', + 'frontend_available' => true, + ] + ); + + $this->add_control( + 'direction', + [ + 'label' => esc_html__( 'Direction', 'elementor' ), + 'type' => Controls_Manager::SELECT, + 'default' => 'ltr', + 'options' => [ + 'ltr' => esc_html__( 'Left', 'elementor' ), + 'rtl' => esc_html__( 'Right', 'elementor' ), + ], + ] + ); + + $this->end_controls_section(); + + $this->start_controls_section( + 'section_style_navigation', + [ + 'label' => esc_html__( 'Navigation', 'elementor' ), + 'tab' => Controls_Manager::TAB_STYLE, + 'condition' => [ + 'navigation' => [ 'arrows', 'dots', 'both' ], + ], + ] + ); + + $this->add_control( + 'heading_style_arrows', + [ + 'label' => esc_html__( 'Arrows', 'elementor' ), + 'type' => Controls_Manager::HEADING, + 'separator' => 'before', + 'condition' => [ + 'navigation' => [ 'arrows', 'both' ], + ], + ] + ); + + $this->add_control( + 'arrows_position', + [ + 'label' => esc_html__( 'Position', 'elementor' ), + 'type' => Controls_Manager::SELECT, + 'default' => 'inside', + 'options' => [ + 'inside' => esc_html__( 'Inside', 'elementor' ), + 'outside' => esc_html__( 'Outside', 'elementor' ), + ], + 'prefix_class' => 'elementor-arrows-position-', + 'condition' => [ + 'navigation' => [ 'arrows', 'both' ], + ], + ] + ); + + $this->add_responsive_control( + 'arrows_size', + [ + 'label' => esc_html__( 'Size', 'elementor' ), + 'type' => Controls_Manager::SLIDER, + 'size_units' => [ 'px', 'em', 'rem', 'custom' ], + 'range' => [ + 'px' => [ + 'max' => 100, + ], + ], + 'selectors' => [ + '{{WRAPPER}} .elementor-swiper-button.elementor-swiper-button-prev, {{WRAPPER}} .elementor-swiper-button.elementor-swiper-button-next' => 'font-size: {{SIZE}}{{UNIT}};', + ], + 'condition' => [ + 'navigation' => [ 'arrows', 'both' ], + ], + ] + ); + + $this->add_control( + 'arrows_color', + [ + 'label' => esc_html__( 'Color', 'elementor' ), + 'type' => Controls_Manager::COLOR, + 'selectors' => [ + '{{WRAPPER}} .elementor-swiper-button.elementor-swiper-button-prev, {{WRAPPER}} .elementor-swiper-button.elementor-swiper-button-next' => 'color: {{VALUE}};', + '{{WRAPPER}} .elementor-swiper-button.elementor-swiper-button-prev svg, {{WRAPPER}} .elementor-swiper-button.elementor-swiper-button-next svg' => 'fill: {{VALUE}};', + ], + 'condition' => [ + 'navigation' => [ 'arrows', 'both' ], + ], + ] + ); + + $this->add_control( + 'heading_style_dots', + [ + 'label' => esc_html__( 'Pagination', 'elementor' ), + 'type' => Controls_Manager::HEADING, + 'separator' => 'before', + 'condition' => [ + 'navigation' => [ 'dots', 'both' ], + ], + ] + ); + + $this->add_control( + 'dots_position', + [ + 'label' => esc_html__( 'Position', 'elementor' ), + 'type' => Controls_Manager::SELECT, + 'default' => 'outside', + 'options' => [ + 'outside' => esc_html__( 'Outside', 'elementor' ), + 'inside' => esc_html__( 'Inside', 'elementor' ), + ], + 'prefix_class' => 'elementor-pagination-position-', + 'condition' => [ + 'navigation' => [ 'dots', 'both' ], + ], + ] + ); + + $this->add_responsive_control( + 'dots_size', + [ + 'label' => esc_html__( 'Size', 'elementor' ), + 'type' => Controls_Manager::SLIDER, + 'size_units' => [ 'px', 'em', 'rem', 'custom' ], + 'range' => [ + 'px' => [ + 'max' => 20, + ], + ], + 'selectors' => [ + '{{WRAPPER}} .swiper-pagination-bullet' => 'width: {{SIZE}}{{UNIT}}; height: {{SIZE}}{{UNIT}};', + ], + 'condition' => [ + 'navigation' => [ 'dots', 'both' ], + ], + ] + ); + + $this->add_control( + 'dots_inactive_color', + [ + 'label' => esc_html__( 'Color', 'elementor' ), + 'type' => Controls_Manager::COLOR, + 'selectors' => [ + // The opacity property will override the default inactive dot color which is opacity 0.2. + '{{WRAPPER}} .swiper-pagination-bullet:not(.swiper-pagination-bullet-active)' => 'background: {{VALUE}}; opacity: 1', + ], + 'condition' => [ + 'navigation' => [ 'dots', 'both' ], + ], + ] + ); + + $this->add_control( + 'dots_color', + [ + 'label' => esc_html__( 'Active Color', 'elementor' ), + 'type' => Controls_Manager::COLOR, + 'selectors' => [ + '{{WRAPPER}} .swiper-pagination-bullet' => 'background: {{VALUE}};', + ], + 'condition' => [ + 'navigation' => [ 'dots', 'both' ], + ], + ] + ); + + $this->end_controls_section(); + + $this->start_controls_section( + 'section_style_image', + [ + 'label' => esc_html__( 'Image', 'elementor' ), + 'tab' => Controls_Manager::TAB_STYLE, + ] + ); + + $this->add_responsive_control( + 'gallery_vertical_align', + [ + 'label' => esc_html__( 'Vertical Align', 'elementor' ), + 'type' => Controls_Manager::CHOOSE, + 'options' => [ + 'flex-start' => [ + 'title' => esc_html__( 'Start', 'elementor' ), + 'icon' => 'eicon-v-align-top', + ], + 'center' => [ + 'title' => esc_html__( 'Center', 'elementor' ), + 'icon' => 'eicon-v-align-middle', + ], + 'flex-end' => [ + 'title' => esc_html__( 'End', 'elementor' ), + 'icon' => 'eicon-v-align-bottom', + ], + ], + 'condition' => [ + 'slides_to_show!' => '1', + ], + 'selectors' => [ + '{{WRAPPER}} .swiper-wrapper' => 'display: flex; align-items: {{VALUE}};', + ], + ] + ); + + $this->add_control( + 'image_spacing', + [ + 'label' => esc_html__( 'Spacing', 'elementor' ), + 'type' => Controls_Manager::SELECT, + 'options' => [ + '' => esc_html__( 'Default', 'elementor' ), + 'custom' => esc_html__( 'Custom', 'elementor' ), + ], + 'default' => '', + 'condition' => [ + 'slides_to_show!' => '1', + ], + ] + ); + + $this->add_responsive_control( + 'image_spacing_custom', + [ + 'label' => esc_html__( 'Image Spacing', 'elementor' ), + 'type' => Controls_Manager::SLIDER, + 'size_units' => [ 'px', 'em', 'rem', 'custom' ], + 'range' => [ + 'px' => [ + 'max' => 100, + ], + ], + 'default' => [ + 'size' => 20, + ], + 'condition' => [ + 'image_spacing' => 'custom', + 'slides_to_show!' => '1', + ], + 'frontend_available' => true, + 'render_type' => 'none', + 'separator' => 'after', + ] + ); + + $this->add_group_control( + Group_Control_Border::get_type(), + [ + 'name' => 'image_border', + 'selector' => '{{WRAPPER}} .elementor-image-carousel-wrapper .elementor-image-carousel .swiper-slide-image', + ] + ); + + $this->add_responsive_control( + 'image_border_radius', + [ + 'label' => esc_html__( 'Border Radius', 'elementor' ), + 'type' => Controls_Manager::DIMENSIONS, + 'size_units' => [ 'px', '%', 'em', 'rem', 'custom' ], + 'selectors' => [ + '{{WRAPPER}} .elementor-image-carousel-wrapper .elementor-image-carousel .swiper-slide-image' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};', + ], + ] + ); + + $this->end_controls_section(); + + $this->start_controls_section( + 'section_caption', + [ + 'label' => esc_html__( 'Caption', 'elementor' ), + 'tab' => Controls_Manager::TAB_STYLE, + 'condition' => [ + 'caption_type!' => '', + ], + ] + ); + + $this->add_responsive_control( + 'caption_align', + [ + 'label' => esc_html__( 'Alignment', 'elementor' ), + 'type' => Controls_Manager::CHOOSE, + 'options' => [ + 'left' => [ + 'title' => esc_html__( 'Left', 'elementor' ), + 'icon' => 'eicon-text-align-left', + ], + 'center' => [ + 'title' => esc_html__( 'Center', 'elementor' ), + 'icon' => 'eicon-text-align-center', + ], + 'right' => [ + 'title' => esc_html__( 'Right', 'elementor' ), + 'icon' => 'eicon-text-align-right', + ], + 'justify' => [ + 'title' => esc_html__( 'Justified', 'elementor' ), + 'icon' => 'eicon-text-align-justify', + ], + ], + 'default' => 'center', + 'selectors' => [ + '{{WRAPPER}} .elementor-image-carousel-caption' => 'text-align: {{VALUE}};', + ], + ] + ); + + $this->add_control( + 'caption_text_color', + [ + 'label' => esc_html__( 'Text Color', 'elementor' ), + 'type' => Controls_Manager::COLOR, + 'default' => '', + 'selectors' => [ + '{{WRAPPER}} .elementor-image-carousel-caption' => 'color: {{VALUE}};', + ], + ] + ); + + $this->add_group_control( + Group_Control_Typography::get_type(), + [ + 'name' => 'caption_typography', + 'global' => [ + 'default' => Global_Colors::COLOR_ACCENT, + ], + 'selector' => '{{WRAPPER}} .elementor-image-carousel-caption', + ] + ); + + $this->add_group_control( + Group_Control_Text_Shadow::get_type(), + [ + 'name' => 'caption_shadow', + 'selector' => '{{WRAPPER}} .elementor-image-carousel-caption', + ] + ); + + $this->add_responsive_control( + 'caption_space', + [ + 'label' => esc_html__( 'Spacing', 'elementor' ), + 'type' => Controls_Manager::SLIDER, + 'size_units' => [ 'px', '%', 'em', 'rem', 'custom' ], + 'selectors' => [ + '{{WRAPPER}} .elementor-image-carousel-caption' => 'margin-block-start: {{SIZE}}{{UNIT}};', + ], + ] + ); + + $this->end_controls_section(); + } + + /** + * Render image carousel widget output on the frontend. + * + * Written in PHP and used to generate the final HTML. + * + * @since 1.0.0 + * @access protected + */ + protected function render() { + $settings = $this->get_settings_for_display(); + + $lazyload = 'yes' === $settings['lazyload']; + + if ( empty( $settings['carousel'] ) ) { + return; + } + + $slides = []; + + foreach ( $settings['carousel'] as $index => $attachment ) { + $image_url = Group_Control_Image_Size::get_attachment_image_src( $attachment['id'], 'thumbnail', $settings ); + + if ( ! $image_url && isset( $attachment['url'] ) ) { + $image_url = $attachment['url']; + } + + if ( $lazyload ) { + $image_html = '' . esc_attr( Control_Media::get_image_alt( $attachment ) ) . ''; + } else { + $image_html = '' . esc_attr( Control_Media::get_image_alt( $attachment ) ) . ''; + } + + $link_tag = ''; + + $link = $this->get_link_url( $attachment, $settings ); + + if ( $link ) { + $link_key = 'link_' . $index; + + $this->add_lightbox_data_attributes( $link_key, $attachment['id'], $settings['open_lightbox'], $this->get_id() ); + + if ( Plugin::$instance->editor->is_edit_mode() ) { + $this->add_render_attribute( $link_key, [ + 'class' => 'elementor-clickable', + ] ); + } + + $this->add_link_attributes( $link_key, $link ); + + $link_tag = 'get_render_attribute_string( $link_key ) . '>'; + } + + $image_caption = $this->get_image_caption( $attachment ); + + $slide_count = $index + 1; + $slide_setting_key = 'swiper_slide_' . $index; + + $this->add_render_attribute( $slide_setting_key, [ + 'class' => 'swiper-slide', + 'role' => 'group', + 'aria-roledescription' => 'slide', + 'aria-label' => sprintf( + /* translators: 1: Slide count, 2: Total slides count. */ + esc_html__( '%1$s of %2$s', 'elementor' ), + $slide_count, + count( $settings['carousel'] ) + ), + ] ); + + $slide_html = ''; + + $slides[] = $slide_html; + + } + + if ( empty( $slides ) ) { + return; + } + + $swiper_class = Plugin::$instance->experiments->is_feature_active( 'e_swiper_latest' ) ? 'swiper' : 'swiper-container'; + $has_autoplay_enabled = 'yes' === $this->get_settings_for_display( 'autoplay' ); + + $this->add_render_attribute( [ + 'carousel' => [ + 'class' => 'elementor-image-carousel swiper-wrapper', + 'aria-live' => $has_autoplay_enabled ? 'off' : 'polite', + ], + 'carousel-wrapper' => [ + 'class' => 'elementor-image-carousel-wrapper ' . $swiper_class, + 'dir' => $settings['direction'], + ], + ] ); + + $show_dots = ( in_array( $settings['navigation'], [ 'dots', 'both' ] ) ); + $show_arrows = ( in_array( $settings['navigation'], [ 'arrows', 'both' ] ) ); + + if ( 'yes' === $settings['image_stretch'] ) { + $this->add_render_attribute( 'carousel', 'class', 'swiper-image-stretch' ); + } + + $slides_count = count( $settings['carousel'] ); + ?> +
    print_render_attribute_string( 'carousel-wrapper' ); ?>> +
    print_render_attribute_string( 'carousel' ); ?>> + + +
    + + +
    + render_swiper_button( 'previous' ); ?> +
    +
    + render_swiper_button( 'next' ); ?> +
    + + + +
    + + +
    + wp_get_attachment_url( $attachment['id'] ), + ]; + } + + /** + * Retrieve image carousel caption. + * + * @since 1.2.0 + * @access private + * + * @param array $attachment + * + * @return string The caption of the image. + */ + private function get_image_caption( $attachment ) { + $caption_type = $this->get_settings_for_display( 'caption_type' ); + + if ( empty( $caption_type ) ) { + return ''; + } + + $attachment_post = get_post( $attachment['id'] ); + + if ( 'caption' === $caption_type ) { + return $attachment_post->post_excerpt; + } + + if ( 'title' === $caption_type ) { + return $attachment_post->post_title; + } + + return $attachment_post->post_content; + } + + private function render_swiper_button( $type ) { + $direction = 'next' === $type ? 'right' : 'left'; + $icon_settings = $this->get_settings_for_display( 'navigation_' . $type . '_icon' ); + + if ( empty( $icon_settings['value'] ) ) { + $icon_settings = [ + 'library' => 'eicons', + 'value' => 'eicon-chevron-' . $direction, + ]; + } + + Icons_Manager::render_icon( $icon_settings, [ 'aria-hidden' => 'true' ] ); + } +} diff --git a/wp-content/plugins/elementor/includes/widgets/image-gallery.php b/wp-content/plugins/elementor/includes/widgets/image-gallery.php new file mode 100644 index 0000000..fcf6adf --- /dev/null +++ b/wp-content/plugins/elementor/includes/widgets/image-gallery.php @@ -0,0 +1,436 @@ + ! Utils::has_pro(), + 'image' => esc_url( ELEMENTOR_ASSETS_URL . 'images/go-pro.svg' ), + 'image_alt' => esc_attr__( 'Upgrade', 'elementor' ), + 'description' => esc_html__( 'Use interesting masonry layouts and other overlay features with Elementor\'s Pro Gallery widget.', 'elementor' ), + 'upgrade_url' => esc_url( 'https://go.elementor.com/go-pro-basic-gallery-widget/' ), + 'upgrade_text' => esc_html__( 'Upgrade Now', 'elementor' ), + ]; + } + + /** + * Register image gallery widget controls. + * + * Adds different input fields to allow the user to change and customize the widget settings. + * + * @since 3.1.0 + * @access protected + */ + protected function register_controls() { + $this->start_controls_section( + 'section_gallery', + [ + 'label' => esc_html__( 'Basic Gallery', 'elementor' ), + ] + ); + + $this->add_control( + 'wp_gallery', + [ + 'label' => esc_html__( 'Add Images', 'elementor' ), + 'type' => Controls_Manager::GALLERY, + 'show_label' => false, + 'dynamic' => [ + 'active' => true, + ], + ] + ); + + $this->add_group_control( + Group_Control_Image_Size::get_type(), + [ + 'name' => 'thumbnail', // Usage: `{name}_size` and `{name}_custom_dimension`, in this case `thumbnail_size` and `thumbnail_custom_dimension`. + 'exclude' => [ 'custom' ], + ] + ); + + $gallery_columns = range( 1, 10 ); + $gallery_columns = array_combine( $gallery_columns, $gallery_columns ); + + $this->add_control( + 'gallery_columns', + [ + 'label' => esc_html__( 'Columns', 'elementor' ), + 'type' => Controls_Manager::SELECT, + 'default' => 4, + 'options' => $gallery_columns, + ] + ); + + $this->add_control( + 'gallery_display_caption', + [ + 'label' => esc_html__( 'Caption', 'elementor' ), + 'type' => Controls_Manager::SELECT, + 'default' => '', + 'options' => [ + 'none' => esc_html__( 'None', 'elementor' ), + '' => esc_html__( 'Attachment Caption', 'elementor' ), + ], + 'selectors' => [ + '{{WRAPPER}} .gallery-item .gallery-caption' => 'display: {{VALUE}};', + ], + ] + ); + + $this->add_control( + 'gallery_link', + [ + 'label' => esc_html__( 'Link', 'elementor' ), + 'type' => Controls_Manager::SELECT, + 'default' => 'file', + 'options' => [ + 'file' => esc_html__( 'Media File', 'elementor' ), + 'attachment' => esc_html__( 'Attachment Page', 'elementor' ), + 'none' => esc_html__( 'None', 'elementor' ), + ], + ] + ); + + $this->add_control( + 'open_lightbox', + [ + 'label' => esc_html__( 'Lightbox', 'elementor' ), + 'type' => Controls_Manager::SELECT, + 'description' => sprintf( + /* translators: 1: Link open tag, 2: Link close tag. */ + esc_html__( 'Manage your site’s lightbox settings in the %1$sLightbox panel%2$s.', 'elementor' ), + '', + '' + ), + 'default' => 'default', + 'options' => [ + 'default' => esc_html__( 'Default', 'elementor' ), + 'yes' => esc_html__( 'Yes', 'elementor' ), + 'no' => esc_html__( 'No', 'elementor' ), + ], + 'condition' => [ + 'gallery_link' => 'file', + ], + ] + ); + + $this->add_control( + 'gallery_rand', + [ + 'label' => esc_html__( 'Order By', 'elementor' ), + 'type' => Controls_Manager::SELECT, + 'options' => [ + '' => esc_html__( 'Default', 'elementor' ), + 'rand' => esc_html__( 'Random', 'elementor' ), + ], + 'default' => '', + ] + ); + + $this->end_controls_section(); + + $this->start_controls_section( + 'section_gallery_images', + [ + 'label' => esc_html__( 'Images', 'elementor' ), + 'tab' => Controls_Manager::TAB_STYLE, + ] + ); + + $this->add_control( + 'image_spacing', + [ + 'label' => esc_html__( 'Spacing', 'elementor' ), + 'type' => Controls_Manager::SELECT, + 'options' => [ + '' => esc_html__( 'Default', 'elementor' ), + 'custom' => esc_html__( 'Custom', 'elementor' ), + ], + 'prefix_class' => 'gallery-spacing-', + 'default' => '', + ] + ); + + $columns_margin = is_rtl() ? '0 0 -{{SIZE}}{{UNIT}} -{{SIZE}}{{UNIT}};' : '0 -{{SIZE}}{{UNIT}} -{{SIZE}}{{UNIT}} 0;'; + $columns_padding = is_rtl() ? '0 0 {{SIZE}}{{UNIT}} {{SIZE}}{{UNIT}};' : '0 {{SIZE}}{{UNIT}} {{SIZE}}{{UNIT}} 0;'; + + $this->add_control( + 'image_spacing_custom', + [ + 'label' => esc_html__( 'Custom Spacing', 'elementor' ), + 'type' => Controls_Manager::SLIDER, + 'size_units' => [ 'px', 'em', 'rem', 'custom' ], + 'range' => [ + 'px' => [ + 'max' => 100, + ], + 'em' => [ + 'max' => 10, + ], + 'rem' => [ + 'max' => 10, + ], + ], + 'default' => [ + 'size' => 15, + ], + 'selectors' => [ + '{{WRAPPER}} .gallery-item' => 'padding:' . $columns_padding, + '{{WRAPPER}} .gallery' => 'margin: ' . $columns_margin, + ], + 'condition' => [ + 'image_spacing' => 'custom', + ], + ] + ); + + $this->add_group_control( + Group_Control_Border::get_type(), + [ + 'name' => 'image_border', + 'selector' => '{{WRAPPER}} .gallery-item img', + 'separator' => 'before', + ] + ); + + $this->add_responsive_control( + 'image_border_radius', + [ + 'label' => esc_html__( 'Border Radius', 'elementor' ), + 'type' => Controls_Manager::DIMENSIONS, + 'size_units' => [ 'px', '%', 'em', 'rem', 'custom' ], + 'selectors' => [ + '{{WRAPPER}} .gallery-item img' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};', + ], + ] + ); + + $this->end_controls_section(); + + $this->start_controls_section( + 'section_caption', + [ + 'label' => esc_html__( 'Caption', 'elementor' ), + 'tab' => Controls_Manager::TAB_STYLE, + 'condition' => [ + 'gallery_display_caption' => '', + ], + ] + ); + + $this->add_responsive_control( + 'align', + [ + 'label' => esc_html__( 'Alignment', 'elementor' ), + 'type' => Controls_Manager::CHOOSE, + 'options' => [ + 'left' => [ + 'title' => esc_html__( 'Left', 'elementor' ), + 'icon' => 'eicon-text-align-left', + ], + 'center' => [ + 'title' => esc_html__( 'Center', 'elementor' ), + 'icon' => 'eicon-text-align-center', + ], + 'right' => [ + 'title' => esc_html__( 'Right', 'elementor' ), + 'icon' => 'eicon-text-align-right', + ], + 'justify' => [ + 'title' => esc_html__( 'Justified', 'elementor' ), + 'icon' => 'eicon-text-align-justify', + ], + ], + 'default' => 'center', + 'selectors' => [ + '{{WRAPPER}} .gallery-item .gallery-caption' => 'text-align: {{VALUE}};', + ], + 'condition' => [ + 'gallery_display_caption' => '', + ], + ] + ); + + $this->add_control( + 'text_color', + [ + 'label' => esc_html__( 'Text Color', 'elementor' ), + 'type' => Controls_Manager::COLOR, + 'default' => '', + 'selectors' => [ + '{{WRAPPER}} .gallery-item .gallery-caption' => 'color: {{VALUE}};', + ], + 'condition' => [ + 'gallery_display_caption' => '', + ], + ] + ); + + $this->add_group_control( + Group_Control_Typography::get_type(), + [ + 'name' => 'typography', + 'global' => [ + 'default' => Global_Typography::TYPOGRAPHY_ACCENT, + ], + 'selector' => '{{WRAPPER}} .gallery-item .gallery-caption', + 'condition' => [ + 'gallery_display_caption' => '', + ], + ] + ); + + $this->add_group_control( + Group_Control_Text_Shadow::get_type(), + [ + 'name' => 'caption_shadow', + 'selector' => '{{WRAPPER}} .gallery-item .gallery-caption', + 'condition' => [ + 'gallery_display_caption' => '', + ], + ] + ); + + $this->add_responsive_control( + 'caption_space', + [ + 'label' => esc_html__( 'Spacing', 'elementor' ), + 'type' => Controls_Manager::SLIDER, + 'size_units' => [ 'px', '%', 'em', 'rem', 'custom' ], + 'selectors' => [ + '{{WRAPPER}} .gallery-item .gallery-caption' => 'margin-block-start: {{SIZE}}{{UNIT}};', + ], + 'condition' => [ + 'gallery_display_caption' => '', + ], + ] + ); + + $this->end_controls_section(); + } + + /** + * Render image gallery widget output on the frontend. + * + * Written in PHP and used to generate the final HTML. + * + * @since 1.0.0 + * @access protected + */ + protected function render() { + $settings = $this->get_settings_for_display(); + + if ( ! $settings['wp_gallery'] ) { + return; + } + + $ids = wp_list_pluck( $settings['wp_gallery'], 'id' ); + + $this->add_render_attribute( 'shortcode', 'ids', implode( ',', $ids ) ); + $this->add_render_attribute( 'shortcode', 'size', $settings['thumbnail_size'] ); + + if ( $settings['gallery_columns'] ) { + $this->add_render_attribute( 'shortcode', 'columns', $settings['gallery_columns'] ); + } + + if ( $settings['gallery_link'] ) { + $this->add_render_attribute( 'shortcode', 'link', $settings['gallery_link'] ); + } + + if ( ! empty( $settings['gallery_rand'] ) ) { + $this->add_render_attribute( 'shortcode', 'orderby', $settings['gallery_rand'] ); + } + ?> + + start_controls_section( + 'section_image', + [ + 'label' => esc_html__( 'Image', 'elementor' ), + ] + ); + + $this->add_control( + 'image', + [ + 'label' => esc_html__( 'Choose Image', 'elementor' ), + 'type' => Controls_Manager::MEDIA, + 'dynamic' => [ + 'active' => true, + ], + 'default' => [ + 'url' => Utils::get_placeholder_image_src(), + ], + ] + ); + + $this->add_group_control( + Group_Control_Image_Size::get_type(), + [ + 'name' => 'image', // Usage: `{name}_size` and `{name}_custom_dimension`, in this case `image_size` and `image_custom_dimension`. + 'default' => 'large', + 'condition' => [ + 'image[url]!' => '', + ], + ] + ); + + $this->add_control( + 'caption_source', + [ + 'label' => esc_html__( 'Caption', 'elementor' ), + 'type' => Controls_Manager::SELECT, + 'options' => [ + 'none' => esc_html__( 'None', 'elementor' ), + 'attachment' => esc_html__( 'Attachment Caption', 'elementor' ), + 'custom' => esc_html__( 'Custom Caption', 'elementor' ), + ], + 'default' => 'none', + 'condition' => [ + 'image[url]!' => '', + ], + ] + ); + + $this->add_control( + 'caption', + [ + 'label' => esc_html__( 'Custom Caption', 'elementor' ), + 'type' => Controls_Manager::TEXT, + 'default' => '', + 'placeholder' => esc_html__( 'Enter your image caption', 'elementor' ), + 'condition' => [ + 'image[url]!' => '', + 'caption_source' => 'custom', + ], + 'dynamic' => [ + 'active' => true, + ], + ] + ); + + $this->add_control( + 'link_to', + [ + 'label' => esc_html__( 'Link', 'elementor' ), + 'type' => Controls_Manager::SELECT, + 'default' => 'none', + 'options' => [ + 'none' => esc_html__( 'None', 'elementor' ), + 'file' => esc_html__( 'Media File', 'elementor' ), + 'custom' => esc_html__( 'Custom URL', 'elementor' ), + ], + 'condition' => [ + 'image[url]!' => '', + ], + ] + ); + + $this->add_control( + 'link', + [ + 'label' => esc_html__( 'Link', 'elementor' ), + 'type' => Controls_Manager::URL, + 'dynamic' => [ + 'active' => true, + ], + 'condition' => [ + 'image[url]!' => '', + 'link_to' => 'custom', + ], + 'show_label' => false, + ] + ); + + $this->add_control( + 'open_lightbox', + [ + 'label' => esc_html__( 'Lightbox', 'elementor' ), + 'type' => Controls_Manager::SELECT, + 'description' => sprintf( + /* translators: 1: Link open tag, 2: Link close tag. */ + esc_html__( 'Manage your site’s lightbox settings in the %1$sLightbox panel%2$s.', 'elementor' ), + '', + '' + ), + 'default' => 'default', + 'options' => [ + 'default' => esc_html__( 'Default', 'elementor' ), + 'yes' => esc_html__( 'Yes', 'elementor' ), + 'no' => esc_html__( 'No', 'elementor' ), + ], + 'condition' => [ + 'image[url]!' => '', + 'link_to' => 'file', + ], + ] + ); + + $this->end_controls_section(); + + $this->start_controls_section( + 'section_style_image', + [ + 'label' => esc_html__( 'Image', 'elementor' ), + 'tab' => Controls_Manager::TAB_STYLE, + ] + ); + + $this->add_responsive_control( + 'align', + [ + 'label' => esc_html__( 'Alignment', 'elementor' ), + 'type' => Controls_Manager::CHOOSE, + 'options' => [ + 'left' => [ + 'title' => esc_html__( 'Left', 'elementor' ), + 'icon' => 'eicon-text-align-left', + ], + 'center' => [ + 'title' => esc_html__( 'Center', 'elementor' ), + 'icon' => 'eicon-text-align-center', + ], + 'right' => [ + 'title' => esc_html__( 'Right', 'elementor' ), + 'icon' => 'eicon-text-align-right', + ], + ], + 'selectors' => [ + '{{WRAPPER}}' => 'text-align: {{VALUE}};', + ], + ] + ); + + $this->add_responsive_control( + 'width', + [ + 'label' => esc_html__( 'Width', 'elementor' ), + 'type' => Controls_Manager::SLIDER, + 'default' => [ + 'unit' => '%', + ], + 'tablet_default' => [ + 'unit' => '%', + ], + 'mobile_default' => [ + 'unit' => '%', + ], + 'size_units' => [ 'px', '%', 'em', 'rem', 'vw', 'custom' ], + 'range' => [ + '%' => [ + 'min' => 1, + 'max' => 100, + ], + 'px' => [ + 'min' => 1, + 'max' => 1000, + ], + 'vw' => [ + 'min' => 1, + 'max' => 100, + ], + ], + 'selectors' => [ + '{{WRAPPER}} img' => 'width: {{SIZE}}{{UNIT}};', + ], + ] + ); + + $this->add_responsive_control( + 'space', + [ + 'label' => esc_html__( 'Max Width', 'elementor' ), + 'type' => Controls_Manager::SLIDER, + 'default' => [ + 'unit' => '%', + ], + 'tablet_default' => [ + 'unit' => '%', + ], + 'mobile_default' => [ + 'unit' => '%', + ], + 'size_units' => [ 'px', '%', 'em', 'rem', 'vw', 'custom' ], + 'range' => [ + '%' => [ + 'min' => 1, + 'max' => 100, + ], + 'px' => [ + 'min' => 1, + 'max' => 1000, + ], + 'vw' => [ + 'min' => 1, + 'max' => 100, + ], + ], + 'selectors' => [ + '{{WRAPPER}} img' => 'max-width: {{SIZE}}{{UNIT}};', + ], + ] + ); + + $this->add_responsive_control( + 'height', + [ + 'label' => esc_html__( 'Height', 'elementor' ), + 'type' => Controls_Manager::SLIDER, + 'size_units' => [ 'px', '%', 'em', 'rem', 'vh', 'custom' ], + 'range' => [ + 'px' => [ + 'min' => 1, + 'max' => 500, + ], + 'vh' => [ + 'min' => 1, + 'max' => 100, + ], + ], + 'selectors' => [ + '{{WRAPPER}} img' => 'height: {{SIZE}}{{UNIT}};', + ], + ] + ); + + $this->add_responsive_control( + 'object-fit', + [ + 'label' => esc_html__( 'Object Fit', 'elementor' ), + 'type' => Controls_Manager::SELECT, + 'condition' => [ + 'height[size]!' => '', + ], + 'options' => [ + '' => esc_html__( 'Default', 'elementor' ), + 'fill' => esc_html__( 'Fill', 'elementor' ), + 'cover' => esc_html__( 'Cover', 'elementor' ), + 'contain' => esc_html__( 'Contain', 'elementor' ), + ], + 'default' => '', + 'selectors' => [ + '{{WRAPPER}} img' => 'object-fit: {{VALUE}};', + ], + ] + ); + + $this->add_responsive_control( + 'object-position', + [ + 'label' => esc_html__( 'Object Position', 'elementor' ), + 'type' => Controls_Manager::SELECT, + 'options' => [ + 'center center' => esc_html__( 'Center Center', 'elementor' ), + 'center left' => esc_html__( 'Center Left', 'elementor' ), + 'center right' => esc_html__( 'Center Right', 'elementor' ), + 'top center' => esc_html__( 'Top Center', 'elementor' ), + 'top left' => esc_html__( 'Top Left', 'elementor' ), + 'top right' => esc_html__( 'Top Right', 'elementor' ), + 'bottom center' => esc_html__( 'Bottom Center', 'elementor' ), + 'bottom left' => esc_html__( 'Bottom Left', 'elementor' ), + 'bottom right' => esc_html__( 'Bottom Right', 'elementor' ), + ], + 'default' => 'center center', + 'selectors' => [ + '{{WRAPPER}} img' => 'object-position: {{VALUE}};', + ], + 'condition' => [ + 'height[size]!' => '', + 'object-fit' => 'cover', + ], + ] + ); + + $this->add_control( + 'separator_panel_style', + [ + 'type' => Controls_Manager::DIVIDER, + 'style' => 'thick', + ] + ); + + $this->start_controls_tabs( 'image_effects' ); + + $this->start_controls_tab( 'normal', + [ + 'label' => esc_html__( 'Normal', 'elementor' ), + ] + ); + + $this->add_control( + 'opacity', + [ + 'label' => esc_html__( 'Opacity', 'elementor' ), + 'type' => Controls_Manager::SLIDER, + 'range' => [ + 'px' => [ + 'max' => 1, + 'min' => 0.10, + 'step' => 0.01, + ], + ], + 'selectors' => [ + '{{WRAPPER}} img' => 'opacity: {{SIZE}};', + ], + ] + ); + + $this->add_group_control( + Group_Control_Css_Filter::get_type(), + [ + 'name' => 'css_filters', + 'selector' => '{{WRAPPER}} img', + ] + ); + + $this->end_controls_tab(); + + $this->start_controls_tab( 'hover', + [ + 'label' => esc_html__( 'Hover', 'elementor' ), + ] + ); + + $this->add_control( + 'opacity_hover', + [ + 'label' => esc_html__( 'Opacity', 'elementor' ), + 'type' => Controls_Manager::SLIDER, + 'range' => [ + 'px' => [ + 'max' => 1, + 'min' => 0.10, + 'step' => 0.01, + ], + ], + 'selectors' => [ + '{{WRAPPER}}:hover img' => 'opacity: {{SIZE}};', + ], + ] + ); + + $this->add_group_control( + Group_Control_Css_Filter::get_type(), + [ + 'name' => 'css_filters_hover', + 'selector' => '{{WRAPPER}}:hover img', + ] + ); + + $this->add_control( + 'background_hover_transition', + [ + 'label' => esc_html__( 'Transition Duration', 'elementor' ) . ' (s)', + 'type' => Controls_Manager::SLIDER, + 'range' => [ + 'px' => [ + 'min' => 0, + 'max' => 3, + 'step' => 0.1, + ], + ], + 'selectors' => [ + '{{WRAPPER}} img' => 'transition-duration: {{SIZE}}s', + ], + ] + ); + + $this->add_control( + 'hover_animation', + [ + 'label' => esc_html__( 'Hover Animation', 'elementor' ), + 'type' => Controls_Manager::HOVER_ANIMATION, + ] + ); + + $this->end_controls_tab(); + + $this->end_controls_tabs(); + + $this->add_group_control( + Group_Control_Border::get_type(), + [ + 'name' => 'image_border', + 'selector' => '{{WRAPPER}} img', + 'separator' => 'before', + ] + ); + + $this->add_responsive_control( + 'image_border_radius', + [ + 'label' => esc_html__( 'Border Radius', 'elementor' ), + 'type' => Controls_Manager::DIMENSIONS, + 'size_units' => [ 'px', '%', 'em', 'rem', 'custom' ], + 'selectors' => [ + '{{WRAPPER}} img' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};', + ], + ] + ); + + $this->add_group_control( + Group_Control_Box_Shadow::get_type(), + [ + 'name' => 'image_box_shadow', + 'exclude' => [ + 'box_shadow_position', + ], + 'selector' => '{{WRAPPER}} img', + ] + ); + + $this->end_controls_section(); + + $this->start_controls_section( + 'section_style_caption', + [ + 'label' => esc_html__( 'Caption', 'elementor' ), + 'tab' => Controls_Manager::TAB_STYLE, + 'condition' => [ + 'image[url]!' => '', + 'caption_source!' => 'none', + ], + ] + ); + + $this->add_responsive_control( + 'caption_align', + [ + 'label' => esc_html__( 'Alignment', 'elementor' ), + 'type' => Controls_Manager::CHOOSE, + 'options' => [ + 'left' => [ + 'title' => esc_html__( 'Left', 'elementor' ), + 'icon' => 'eicon-text-align-left', + ], + 'center' => [ + 'title' => esc_html__( 'Center', 'elementor' ), + 'icon' => 'eicon-text-align-center', + ], + 'right' => [ + 'title' => esc_html__( 'Right', 'elementor' ), + 'icon' => 'eicon-text-align-right', + ], + 'justify' => [ + 'title' => esc_html__( 'Justified', 'elementor' ), + 'icon' => 'eicon-text-align-justify', + ], + ], + 'default' => '', + 'selectors' => [ + '{{WRAPPER}} .widget-image-caption' => 'text-align: {{VALUE}};', + ], + ] + ); + + $this->add_control( + 'text_color', + [ + 'label' => esc_html__( 'Text Color', 'elementor' ), + 'type' => Controls_Manager::COLOR, + 'default' => '', + 'selectors' => [ + '{{WRAPPER}} .widget-image-caption' => 'color: {{VALUE}};', + ], + 'global' => [ + 'default' => Global_Colors::COLOR_TEXT, + ], + ] + ); + + $this->add_control( + 'caption_background_color', + [ + 'label' => esc_html__( 'Background Color', 'elementor' ), + 'type' => Controls_Manager::COLOR, + 'selectors' => [ + '{{WRAPPER}} .widget-image-caption' => 'background-color: {{VALUE}};', + ], + ] + ); + + $this->add_group_control( + Group_Control_Typography::get_type(), + [ + 'name' => 'caption_typography', + 'selector' => '{{WRAPPER}} .widget-image-caption', + 'global' => [ + 'default' => Global_Typography::TYPOGRAPHY_TEXT, + ], + ] + ); + + $this->add_group_control( + Group_Control_Text_Shadow::get_type(), + [ + 'name' => 'caption_text_shadow', + 'selector' => '{{WRAPPER}} .widget-image-caption', + ] + ); + + $this->add_responsive_control( + 'caption_space', + [ + 'label' => esc_html__( 'Spacing', 'elementor' ), + 'type' => Controls_Manager::SLIDER, + 'size_units' => [ 'px', 'em', 'rem', 'custom' ], + 'range' => [ + 'px' => [ + 'max' => 100, + ], + 'em' => [ + 'min' => 0, + 'max' => 10, + ], + 'rem' => [ + 'min' => 0, + 'max' => 10, + ], + ], + 'selectors' => [ + '{{WRAPPER}} .widget-image-caption' => 'margin-top: {{SIZE}}{{UNIT}};', + ], + ] + ); + + $this->end_controls_section(); + } + + /** + * Check if the current widget has caption + * + * @access private + * @since 2.3.0 + * + * @param array $settings + * + * @return boolean + */ + private function has_caption( $settings ) { + return ( ! empty( $settings['caption_source'] ) && 'none' !== $settings['caption_source'] ); + } + + /** + * Get the caption for current widget. + * + * @access private + * @since 2.3.0 + * @param $settings + * + * @return string + */ + private function get_caption( $settings ) { + $caption = ''; + if ( ! empty( $settings['caption_source'] ) ) { + switch ( $settings['caption_source'] ) { + case 'attachment': + $caption = wp_get_attachment_caption( $settings['image']['id'] ); + break; + case 'custom': + $caption = ! Utils::is_empty( $settings['caption'] ) ? $settings['caption'] : ''; + } + } + return $caption; + } + + /** + * Render image widget output on the frontend. + * + * Written in PHP and used to generate the final HTML. + * + * @since 1.0.0 + * @access protected + */ + protected function render() { + $settings = $this->get_settings_for_display(); + + if ( empty( $settings['image']['url'] ) ) { + return; + } + + $has_caption = $this->has_caption( $settings ); + + $link = $this->get_link_url( $settings ); + + if ( $link ) { + $this->add_link_attributes( 'link', $link ); + + if ( Plugin::$instance->editor->is_edit_mode() ) { + $this->add_render_attribute( 'link', [ + 'class' => 'elementor-clickable', + ] ); + } + + if ( 'custom' !== $settings['link_to'] ) { + $this->add_lightbox_data_attributes( 'link', $settings['image']['id'], $settings['open_lightbox'] ); + } + } ?> + +
    + + + print_render_attribute_string( 'link' ); ?>> + + + + + + +
    get_caption( $settings ) ); + ?>
    + + +
    + + + <# if ( settings.image.url ) { + var image = { + id: settings.image.id, + url: settings.image.url, + size: settings.image_size, + dimension: settings.image_custom_dimension, + model: view.getEditModel() + }; + + var image_url = elementor.imagesManager.getImageUrl( image ); + + if ( ! image_url ) { + return; + } + + var hasCaption = function() { + if( ! settings.caption_source || 'none' === settings.caption_source ) { + return false; + } + return true; + } + + var ensureAttachmentData = function( id ) { + if ( 'undefined' === typeof wp.media.attachment( id ).get( 'caption' ) ) { + wp.media.attachment( id ).fetch().then( function( data ) { + view.render(); + } ); + } + } + + var getAttachmentCaption = function( id ) { + if ( ! id ) { + return ''; + } + ensureAttachmentData( id ); + return wp.media.attachment( id ).get( 'caption' ); + } + + var getCaption = function() { + if ( ! hasCaption() ) { + return ''; + } + return 'custom' === settings.caption_source ? settings.caption : getAttachmentCaption( settings.image.id ); + } + + var link_url; + + if ( 'custom' === settings.link_to ) { + link_url = settings.link.url; + } + + if ( 'file' === settings.link_to ) { + link_url = settings.image.url; + } + + var imgClass = ''; + + if ( '' !== settings.hover_animation ) { + imgClass = 'elementor-animation-' + settings.hover_animation; + } + + if ( hasCaption() ) { + #>
    <# + } + + if ( link_url ) { + #><# + } + #><# + + if ( link_url ) { + #><# + } + + if ( hasCaption() ) { + #>
    {{{ getCaption() }}}
    <# + } + + if ( hasCaption() ) { + #>
    <# + } + } #> + $settings['image']['url'], + ]; + } +} diff --git a/wp-content/plugins/elementor/includes/widgets/inner-section.php b/wp-content/plugins/elementor/includes/widgets/inner-section.php new file mode 100644 index 0000000..38bcaa4 --- /dev/null +++ b/wp-content/plugins/elementor/includes/widgets/inner-section.php @@ -0,0 +1,58 @@ +start_controls_section( + 'section_anchor', + [ + 'label' => esc_html__( 'Menu Anchor', 'elementor' ), + ] + ); + + $this->add_control( + 'anchor', + [ + 'label' => esc_html__( 'The ID of Menu Anchor.', 'elementor' ), + 'type' => Controls_Manager::TEXT, + 'ai' => [ + 'active' => false, + ], + 'placeholder' => esc_html__( 'For Example: About', 'elementor' ), + 'description' => esc_html__( 'This ID will be the CSS ID you will have to use in your own page, Without #.', 'elementor' ), + 'label_block' => true, + 'dynamic' => [ + 'active' => true, + ], + ] + ); + + $this->add_control( + 'anchor_note', + [ + 'type' => Controls_Manager::ALERT, + 'alert_type' => 'warning', + 'content' => sprintf( + /* translators: %s: Accepted chars. */ + esc_html__( 'Note: The ID link ONLY accepts these chars: %s', 'elementor' ), + '`A-Z, a-z, 0-9, _ , -`' + ), + ] + ); + + $this->end_controls_section(); + } + + /** + * Render menu anchor widget output on the frontend. + * + * Written in PHP and used to generate the final HTML. + * + * @since 1.0.0 + * @access protected + */ + protected function render() { + $anchor = $this->get_settings_for_display( 'anchor' ); + + if ( ! empty( $anchor ) ) { + $this->add_render_attribute( 'inner', 'id', sanitize_html_class( $anchor ) ); + } + + $this->add_render_attribute( 'inner', 'class', 'elementor-menu-anchor' ); + ?> +
    print_render_attribute_string( 'inner' ); ?>>
    + +
    + start_controls_section( + 'section_progress', + [ + 'label' => esc_html__( 'Progress Bar', 'elementor' ), + ] + ); + + $this->add_control( + 'title', + [ + 'label' => esc_html__( 'Title', 'elementor' ), + 'type' => Controls_Manager::TEXT, + 'dynamic' => [ + 'active' => true, + ], + 'placeholder' => esc_html__( 'Enter your title', 'elementor' ), + 'default' => esc_html__( 'My Skill', 'elementor' ), + 'label_block' => true, + ] + ); + + $this->add_control( + 'title_tag', + [ + 'label' => esc_html__( 'Title HTML Tag', 'elementor' ), + 'type' => Controls_Manager::SELECT, + 'options' => [ + 'h1' => 'H1', + 'h2' => 'H2', + 'h3' => 'H3', + 'h4' => 'H4', + 'h5' => 'H5', + 'h6' => 'H6', + 'div' => 'div', + 'span' => 'span', + 'p' => 'p', + ], + 'default' => 'span', + 'condition' => [ + 'title!' => '', + ], + ] + ); + + $this->add_control( + 'progress_type', + [ + 'label' => esc_html__( 'Type', 'elementor' ), + 'type' => Controls_Manager::SELECT, + 'options' => [ + '' => esc_html__( 'Default', 'elementor' ), + 'info' => esc_html__( 'Info', 'elementor' ), + 'success' => esc_html__( 'Success', 'elementor' ), + 'warning' => esc_html__( 'Warning', 'elementor' ), + 'danger' => esc_html__( 'Danger', 'elementor' ), + ], + 'default' => '', + 'condition' => [ + 'progress_type!' => '', // a workaround to hide the control, unless it's in use (not default). + ], + 'separator' => 'before', + ] + ); + + $this->add_control( + 'percent', + [ + 'label' => esc_html__( 'Percentage', 'elementor' ), + 'type' => Controls_Manager::SLIDER, + 'default' => [ + 'size' => 50, + 'unit' => '%', + ], + 'dynamic' => [ + 'active' => true, + ], + ] + ); + + $this->add_control( + 'display_percentage', + [ + 'label' => esc_html__( 'Display Percentage', 'elementor' ), + 'type' => Controls_Manager::SWITCHER, + 'label_on' => esc_html__( 'Show', 'elementor' ), + 'label_off' => esc_html__( 'Hide', 'elementor' ), + 'return_value' => 'show', + 'default' => 'show', + ] + ); + + $this->add_control( + 'inner_text', + [ + 'label' => esc_html__( 'Inner Text', 'elementor' ), + 'type' => Controls_Manager::TEXT, + 'dynamic' => [ + 'active' => true, + ], + 'placeholder' => esc_html__( 'e.g. Web Designer', 'elementor' ), + 'default' => esc_html__( 'Web Designer', 'elementor' ), + 'label_block' => true, + ] + ); + + $this->end_controls_section(); + + $this->start_controls_section( + 'section_progress_style', + [ + 'label' => esc_html__( 'Progress Bar', 'elementor' ), + 'tab' => Controls_Manager::TAB_STYLE, + ] + ); + + $this->add_control( + 'bar_color', + [ + 'label' => esc_html__( 'Color', 'elementor' ), + 'type' => Controls_Manager::COLOR, + 'global' => [ + 'default' => Global_Colors::COLOR_PRIMARY, + ], + 'selectors' => [ + '{{WRAPPER}} .elementor-progress-wrapper .elementor-progress-bar' => 'background-color: {{VALUE}};', + ], + ] + ); + + $this->add_control( + 'bar_bg_color', + [ + 'label' => esc_html__( 'Background Color', 'elementor' ), + 'type' => Controls_Manager::COLOR, + 'selectors' => [ + '{{WRAPPER}} .elementor-progress-wrapper' => 'background-color: {{VALUE}};', + ], + ] + ); + + $this->add_control( + 'bar_height', + [ + 'label' => esc_html__( 'Height', 'elementor' ), + 'type' => Controls_Manager::SLIDER, + 'size_units' => [ 'px', 'em', 'rem', 'custom' ], + 'selectors' => [ + '{{WRAPPER}} .elementor-progress-bar' => 'height: {{SIZE}}{{UNIT}}; line-height: {{SIZE}}{{UNIT}};', + ], + ] + ); + + $this->add_control( + 'bar_border_radius', + [ + 'label' => esc_html__( 'Border Radius', 'elementor' ), + 'type' => Controls_Manager::SLIDER, + 'size_units' => [ 'px', '%', 'em', 'rem', 'custom' ], + 'selectors' => [ + '{{WRAPPER}} .elementor-progress-wrapper' => 'border-radius: {{SIZE}}{{UNIT}}; overflow: hidden;', + ], + ] + ); + + $this->add_control( + 'inner_text_heading', + [ + 'label' => esc_html__( 'Inner Text', 'elementor' ), + 'type' => Controls_Manager::HEADING, + 'separator' => 'before', + ] + ); + + $this->add_control( + 'bar_inline_color', + [ + 'label' => esc_html__( 'Color', 'elementor' ), + 'type' => Controls_Manager::COLOR, + 'selectors' => [ + '{{WRAPPER}} .elementor-progress-bar' => 'color: {{VALUE}};', + ], + ] + ); + + $this->add_group_control( + Group_Control_Typography::get_type(), + [ + 'name' => 'bar_inner_typography', + 'selector' => '{{WRAPPER}} .elementor-progress-bar', + 'exclude' => [ + 'line_height', + ], + ] + ); + + $this->add_group_control( + Group_Control_Text_Shadow::get_type(), + [ + 'name' => 'bar_inner_shadow', + 'selector' => '{{WRAPPER}} .elementor-progress-bar', + ] + ); + + $this->end_controls_section(); + + $this->start_controls_section( + 'section_title', + [ + 'label' => esc_html__( 'Title Style', 'elementor' ), + 'tab' => Controls_Manager::TAB_STYLE, + ] + ); + + $this->add_control( + 'title_color', + [ + 'label' => esc_html__( 'Text Color', 'elementor' ), + 'type' => Controls_Manager::COLOR, + 'selectors' => [ + '{{WRAPPER}} .elementor-title' => 'color: {{VALUE}};', + ], + 'global' => [ + 'default' => Global_Colors::COLOR_PRIMARY, + ], + ] + ); + + $this->add_group_control( + Group_Control_Typography::get_type(), + [ + 'name' => 'typography', + 'selector' => '{{WRAPPER}} .elementor-title', + 'global' => [ + 'default' => Global_Typography::TYPOGRAPHY_TEXT, + ], + ] + ); + + $this->add_group_control( + Group_Control_Text_Shadow::get_type(), + [ + 'name' => 'title_shadow', + 'selector' => '{{WRAPPER}} .elementor-title', + ] + ); + + $this->end_controls_section(); + } + + /** + * Render progress widget output on the frontend. + * Make sure value does no exceed 100%. + * + * Written in PHP and used to generate the final HTML. + * + * @since 1.0.0 + * @access protected + */ + protected function render() { + $settings = $this->get_settings_for_display(); + $progressbar_id = 'elementor-progress-bar-' . $this->get_id(); + + $progress_percentage = is_numeric( $settings['percent']['size'] ) ? $settings['percent']['size'] : '0'; + if ( 100 < $progress_percentage ) { + $progress_percentage = 100; + } + + if ( ! Utils::is_empty( $settings['title'] ) ) { + $this->add_render_attribute( + 'title', + [ + 'class' => 'elementor-title', + 'id' => $progressbar_id, + ] + ); + + $this->add_inline_editing_attributes( 'title' ); + + $this->add_render_attribute( 'wrapper', 'aria-labelledby', $progressbar_id ); + } + + $this->add_render_attribute( + 'wrapper', + [ + 'class' => 'elementor-progress-wrapper', + 'role' => 'progressbar', + 'aria-valuemin' => '0', + 'aria-valuemax' => '100', + 'aria-valuenow' => $progress_percentage, + ] + ); + + if ( ! empty( $settings['inner_text'] ) ) { + $this->add_render_attribute( 'wrapper', 'aria-valuetext', "{$progress_percentage}% ({$settings['inner_text']})" ); + } + + if ( ! empty( $settings['progress_type'] ) ) { + $this->add_render_attribute( 'wrapper', 'class', 'progress-' . $settings['progress_type'] ); + } + + $this->add_render_attribute( + 'progress-bar', + [ + 'class' => 'elementor-progress-bar', + 'data-max' => $progress_percentage, + ] + ); + + $this->add_render_attribute( 'inner_text', 'class', 'elementor-progress-text' ); + + $this->add_inline_editing_attributes( 'inner_text' ); + + if ( ! Utils::is_empty( $settings['title'] ) ) { ?> + < print_render_attribute_string( 'title' ); ?>> + print_unescaped_setting( 'title' ); ?> + > + + +
    print_render_attribute_string( 'wrapper' ); ?>> +
    print_render_attribute_string( 'progress-bar' ); ?>> + print_render_attribute_string( 'inner_text' ); ?>>print_unescaped_setting( 'inner_text' ); ?> + + % + +
    +
    + + <# + const title_tag = elementor.helpers.validateHTMLTag( settings.title_tag ); + const progressbar_id = 'elementor-progress-bar-get_id() ); ?>'; + + let progress_percentage = 0; + if ( ! isNaN( settings.percent.size ) ) { + progress_percentage = 100 < settings.percent.size ? 100 : settings.percent.size; + } + + if ( settings.title ) { + view.addRenderAttribute( + 'title', + { + 'class': 'elementor-title', + 'id': progressbar_id, + } + ); + + view.addInlineEditingAttributes( 'title' ); + + view.addRenderAttribute( 'wrapper', 'aria-labelledby', progressbar_id ); + } + + view.addRenderAttribute( + 'progressWrapper', + { + 'class': [ 'elementor-progress-wrapper', 'progress-' + settings.progress_type ], + 'role': 'progressbar', + 'aria-valuemin': '0', + 'aria-valuemax': '100', + 'aria-valuenow': progress_percentage, + } + ); + + if ( '' !== settings.inner_text ) { + view.addRenderAttribute( 'progressWrapper', 'aria-valuetext', progress_percentage + '% (' + settings.inner_text + ')' ); + } + + view.addRenderAttribute( 'inner_text', 'class', 'elementor-progress-text' ); + + view.addInlineEditingAttributes( 'inner_text' ); + #> + <# if ( settings.title ) { #> + <{{ title_tag }} {{{ view.getRenderAttributeString( 'title' ) }}}>{{{ settings.title }}} + <# } #> +
    +
    + {{{ settings.inner_text }}} + <# if ( 'show' === settings.display_percentage ) { #> + {{{ progress_percentage }}}% + <# } #> +
    +
    + start_controls_section( + 'section_icon_style', + [ + 'label' => esc_html__( 'Icon', 'elementor' ), + 'tab' => Controls_Manager::TAB_STYLE, + ] + ); + + $this->add_responsive_control( + 'icon_size', + [ + 'label' => esc_html__( 'Size', 'elementor' ), + 'type' => Controls_Manager::SLIDER, + 'size_units' => [ 'px', 'em', 'rem', 'vw', 'custom' ], + 'range' => [ + 'px' => [ + 'max' => 100, + ], + 'em' => [ + 'min' => 0, + 'max' => 10, + ], + 'rem' => [ + 'min' => 0, + 'max' => 10, + ], + ], + 'selectors' => [ + '{{WRAPPER}}' => '--e-rating-icon-font-size: {{SIZE}}{{UNIT}}', + ], + ] + ); + + $this->add_responsive_control( + 'icon_gap', + [ + 'label' => esc_html__( 'Spacing', 'elementor' ), + 'type' => Controls_Manager::SLIDER, + 'size_units' => [ 'px', 'em', 'rem', 'vw', 'custom' ], + 'range' => [ + 'px' => [ + 'max' => 100, + ], + 'em' => [ + 'min' => 0, + 'max' => 10, + ], + 'rem' => [ + 'min' => 0, + 'max' => 10, + ], + ], + 'selectors' => [ + '{{WRAPPER}}' => '--e-rating-gap: {{SIZE}}{{UNIT}}', + ], + ] + ); + + $this->add_control( + 'icon_color', + [ + 'label' => esc_html__( 'Color', 'elementor' ), + 'type' => Controls_Manager::COLOR, + 'selectors' => [ + '{{WRAPPER}}' => '--e-rating-icon-marked-color: {{VALUE}}', + ], + 'separator' => 'before', + ] + ); + + $this->add_control( + 'icon_unmarked_color', + [ + 'label' => esc_html__( 'Unmarked Color', 'elementor' ), + 'type' => Controls_Manager::COLOR, + 'selectors' => [ + '{{WRAPPER}}' => '--e-rating-icon-color: {{VALUE}}', + ], + ] + ); + + $this->end_controls_section(); + } + + protected function register_controls() { + $start_logical = is_rtl() ? 'end' : 'start'; + $end_logical = is_rtl() ? 'start' : 'end'; + + $this->start_controls_section( + 'section_rating', + [ + 'label' => esc_html__( 'Rating', 'elementor' ), + ] + ); + + $this->add_control( + 'rating_scale', + [ + 'label' => esc_html__( 'Rating Scale', 'elementor' ), + 'type' => Controls_Manager::SLIDER, + 'range' => [ + 'px' => [ + 'min' => 1, + 'max' => 10, + ], + ], + 'default' => [ + 'size' => 5, + ], + ] + ); + + $this->add_control( + 'rating_value', + [ + 'label' => esc_html__( 'Rating', 'elementor' ), + 'type' => Controls_Manager::NUMBER, + 'min' => 0, + 'step' => 0.5, + 'dynamic' => [ + 'active' => true, + ], + ] + ); + + $this->add_control( + 'rating_icon', + [ + 'label' => esc_html__( 'Icon', 'elementor' ), + 'type' => Controls_Manager::ICONS, + 'fa4compatibility' => 'icon', + 'skin' => 'inline', + 'label_block' => false, + 'skin_settings' => [ + 'inline' => [ + 'icon' => [ + 'icon' => 'eicon-star', + ], + ], + ], + 'default' => [ + 'value' => 'eicon-star', + 'library' => 'eicons', + ], + 'separator' => 'before', + 'exclude_inline_options' => [ 'none' ], + ] + ); + + $this->add_responsive_control( 'icon_alignment', [ + 'label' => esc_html__( 'Alignment', 'elementor' ), + 'type' => Controls_Manager::CHOOSE, + 'options' => [ + 'start' => [ + 'title' => esc_html__( 'Start', 'elementor' ), + 'icon' => "eicon-align-$start_logical-h", + ], + 'center' => [ + 'title' => esc_html__( 'Center', 'elementor' ), + 'icon' => 'eicon-align-center-h', + ], + 'end' => [ + 'title' => esc_html__( 'End', 'elementor' ), + 'icon' => "eicon-align-$end_logical-h", + ], + ], + 'selectors_dictionary' => [ + 'start' => '--e-rating-justify-content: flex-start;', + 'center' => '--e-rating-justify-content: center;', + 'end' => '--e-rating-justify-content: flex-end;', + ], + 'selectors' => [ + '{{WRAPPER}}' => '{{VALUE}}', + ], + 'separator' => 'before', + ] ); + + $this->end_controls_section(); + + $this->add_style_tab(); + } + + protected function get_rating_value(): float { + $initial_value = $this->get_rating_scale(); + $rating_value = $this->get_settings_for_display( 'rating_value' ); + + if ( '' === $rating_value ) { + $rating_value = $initial_value; + } + + $rating_value = floatval( $rating_value ); + + return round( $rating_value, 2 ); + } + + protected function get_rating_scale(): int { + return intval( $this->get_settings_for_display( 'rating_scale' )['size'] ); + } + + protected function get_icon_marked_width( $icon_index ): string { + $rating_value = $this->get_rating_value(); + + $width = '0%'; + + if ( $rating_value >= $icon_index ) { + $width = '100%'; + } elseif ( intval( ceil( $rating_value ) ) === $icon_index ) { + $width = ( $rating_value - ( $icon_index - 1 ) ) * 100 . '%'; + } + + return $width; + } + + protected function get_icon_markup(): string { + $icon = $this->get_settings_for_display( 'rating_icon' ); + $rating_scale = $this->get_rating_scale(); + + ob_start(); + + for ( $index = 1; $index <= $rating_scale; $index++ ) { + $this->add_render_attribute( 'icon_marked_' . $index, [ + 'class' => 'e-icon-wrapper e-icon-marked', + ] ); + + $icon_marked_width = $this->get_icon_marked_width( $index ); + + if ( '100%' !== $icon_marked_width ) { + $this->add_render_attribute( 'icon_marked_' . $index, [ + 'style' => '--e-rating-icon-marked-width: ' . $icon_marked_width . ';', + ] ); + } + ?> +
    +
    print_render_attribute_string( 'icon_marked_' . $index ); ?>> + 'true' ] ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?> +
    +
    + 'true' ] ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?> +
    +
    + add_render_attribute( 'widget', [ + 'class' => 'e-rating', + 'itemtype' => 'https://schema.org/Rating', + 'itemscope' => '', + 'itemprop' => 'reviewRating', + ] ); + + $this->add_render_attribute( 'widget_wrapper', [ + 'class' => 'e-rating-wrapper', + 'itemprop' => 'ratingValue', + 'content' => $this->get_rating_value(), + 'role' => 'img', + 'aria-label' => sprintf( esc_html__( 'Rated %1$s out of %2$s', 'elementor' ), + $this->get_rating_value(), + $this->get_rating_scale() + ), + ] ); + ?> +
    print_render_attribute_string( 'widget' ); ?>> + + +
    print_render_attribute_string( 'widget_wrapper' ); ?>> + get_icon_markup(); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?> +
    +
    + start_controls_section( + 'section_title', + [ + 'label' => esc_html__( 'Read More', 'elementor' ), + ] + ); + + $default_link_text = esc_html__( 'Continue reading', 'elementor' ); + + /** + * Read More widgets link text. + * + * Filters the link text in the "Read More" widget. + * + * This hook can be used to set different default text in the widget. + * + * @param string $default_link_text The link text in the "Read More" widget. Default is "Continue reading". + */ + $default_link_text = apply_filters( 'elementor/widgets/read_more/default_link_text', $default_link_text ); + + $this->add_control( + 'theme_support', + [ + 'type' => Controls_Manager::ALERT, + 'alert_type' => 'warning', + 'content' => sprintf( + /* translators: %s: The `the_content` function. */ + esc_html__( 'Note: This widget only affects themes that use `%s` in archive pages.', 'elementor' ), + 'the_content' + ), + ] + ); + + $this->add_control( + 'link_text', + [ + 'label' => esc_html__( 'Read More Text', 'elementor' ), + 'placeholder' => $default_link_text, + 'default' => $default_link_text, + 'dynamic' => [ + 'active' => true, + ], + ] + ); + + $this->end_controls_section(); + } + + /** + * Render Read More widget output on the frontend. + * + * Written in PHP and used to generate the final HTML. + * + * @access protected + */ + protected function render() { + printf( '', wp_kses_post( $this->get_settings_for_display( 'link_text' ) ) ); + } + + /** + * Render Read More widget output in the editor. + * + * Written as a Backbone JavaScript template and used to generate the live preview. + * + * @since 2.9.0 + * @access protected + */ + protected function content_template() { + ?> + + start_controls_section( + 'section_shortcode', + [ + 'label' => esc_html__( 'Shortcode', 'elementor' ), + ] + ); + + $this->add_control( + 'shortcode', + [ + 'label' => esc_html__( 'Enter your shortcode', 'elementor' ), + 'type' => Controls_Manager::TEXTAREA, + 'dynamic' => [ + 'active' => true, + ], + 'ai' => [ + 'active' => false, + ], + 'placeholder' => '[gallery id="123" size="medium"]', + 'default' => '', + ] + ); + + $this->end_controls_section(); + } + + /** + * Render shortcode widget output on the frontend. + * + * Written in PHP and used to generate the final HTML. + * + * @since 1.0.0 + * @access protected + */ + protected function render() { + $shortcode = $this->get_settings_for_display( 'shortcode' ); + + $shortcode = do_shortcode( shortcode_unautop( $shortcode ) ); + ?> +
    + print_unescaped_setting( 'shortcode' ); + } + + /** + * Render shortcode widget output in the editor. + * + * Written as a Backbone JavaScript template and used to generate the live preview. + * + * @since 2.9.0 + * @access protected + */ + protected function content_template() {} +} diff --git a/wp-content/plugins/elementor/includes/widgets/sidebar.php b/wp-content/plugins/elementor/includes/widgets/sidebar.php new file mode 100644 index 0000000..02741a2 --- /dev/null +++ b/wp-content/plugins/elementor/includes/widgets/sidebar.php @@ -0,0 +1,156 @@ + $sidebar ) { + $options[ $sidebar_id ] = $sidebar['name']; + } + } + + $default_key = array_keys( $options ); + $default_key = array_shift( $default_key ); + + $this->start_controls_section( + 'section_sidebar', + [ + 'label' => esc_html__( 'Sidebar', 'elementor' ), + ] + ); + + $this->add_control( + 'sidebar', + [ + 'label' => esc_html__( 'Choose Sidebar', 'elementor' ), + 'type' => Controls_Manager::SELECT, + 'default' => $default_key, + 'options' => $options, + ] + ); + + $this->end_controls_section(); + } + + /** + * Render sidebar widget output on the frontend. + * + * Written in PHP and used to generate the final HTML. + * + * @since 1.0.0 + * @access protected + */ + protected function render() { + $sidebar = $this->get_settings_for_display( 'sidebar' ); + + if ( empty( $sidebar ) ) { + return; + } + + dynamic_sidebar( $sidebar ); + } + + /** + * Render sidebar widget output in the editor. + * + * Written as a Backbone JavaScript template and used to generate the live preview. + * + * @since 2.9.0 + * @access protected + */ + protected function content_template() {} + + /** + * Render sidebar widget as plain content. + * + * Override the default render behavior, don't render sidebar content. + * + * @since 1.0.0 + * @access public + */ + public function render_plain_content() {} +} diff --git a/wp-content/plugins/elementor/includes/widgets/social-icons.php b/wp-content/plugins/elementor/includes/widgets/social-icons.php new file mode 100644 index 0000000..a155e38 --- /dev/null +++ b/wp-content/plugins/elementor/includes/widgets/social-icons.php @@ -0,0 +1,675 @@ +start_controls_section( + 'section_social_icon', + [ + 'label' => esc_html__( 'Social Icons', 'elementor' ), + ] + ); + + $repeater = new Repeater(); + + $repeater->add_control( + 'social_icon', + [ + 'label' => esc_html__( 'Icon', 'elementor' ), + 'type' => Controls_Manager::ICONS, + 'fa4compatibility' => 'social', + 'default' => [ + 'value' => 'fab fa-wordpress', + 'library' => 'fa-brands', + ], + 'recommended' => [ + 'fa-brands' => [ + 'android', + 'apple', + 'behance', + 'bitbucket', + 'codepen', + 'delicious', + 'deviantart', + 'digg', + 'dribbble', + 'elementor', + 'facebook', + 'flickr', + 'foursquare', + 'free-code-camp', + 'github', + 'gitlab', + 'globe', + 'houzz', + 'instagram', + 'jsfiddle', + 'linkedin', + 'medium', + 'meetup', + 'mix', + 'mixcloud', + 'odnoklassniki', + 'pinterest', + 'product-hunt', + 'reddit', + 'shopping-cart', + 'skype', + 'slideshare', + 'snapchat', + 'soundcloud', + 'spotify', + 'stack-overflow', + 'steam', + 'telegram', + 'thumb-tack', + 'threads', + 'tripadvisor', + 'tumblr', + 'twitch', + 'twitter', + 'viber', + 'vimeo', + 'vk', + 'weibo', + 'weixin', + 'whatsapp', + 'wordpress', + 'xing', + 'x-twitter', + 'yelp', + 'youtube', + '500px', + ], + 'fa-solid' => [ + 'envelope', + 'link', + 'rss', + ], + ], + ] + ); + + $repeater->add_control( + 'link', + [ + 'label' => esc_html__( 'Link', 'elementor' ), + 'type' => Controls_Manager::URL, + 'default' => [ + 'is_external' => 'true', + ], + 'dynamic' => [ + 'active' => true, + ], + ] + ); + + $repeater->add_control( + 'item_icon_color', + [ + 'label' => esc_html__( 'Color', 'elementor' ), + 'type' => Controls_Manager::SELECT, + 'default' => 'default', + 'options' => [ + 'default' => esc_html__( 'Official Color', 'elementor' ), + 'custom' => esc_html__( 'Custom', 'elementor' ), + ], + ] + ); + + $repeater->add_control( + 'item_icon_primary_color', + [ + 'label' => esc_html__( 'Primary Color', 'elementor' ), + 'type' => Controls_Manager::COLOR, + 'condition' => [ + 'item_icon_color' => 'custom', + ], + 'selectors' => [ + '{{WRAPPER}} {{CURRENT_ITEM}}.elementor-social-icon' => 'background-color: {{VALUE}};', + ], + ] + ); + + $repeater->add_control( + 'item_icon_secondary_color', + [ + 'label' => esc_html__( 'Secondary Color', 'elementor' ), + 'type' => Controls_Manager::COLOR, + 'condition' => [ + 'item_icon_color' => 'custom', + ], + 'selectors' => [ + '{{WRAPPER}} {{CURRENT_ITEM}}.elementor-social-icon i' => 'color: {{VALUE}};', + '{{WRAPPER}} {{CURRENT_ITEM}}.elementor-social-icon svg' => 'fill: {{VALUE}};', + ], + ] + ); + + $this->add_control( + 'social_icon_list', + [ + 'label' => esc_html__( 'Social Icons', 'elementor' ), + 'type' => Controls_Manager::REPEATER, + 'fields' => $repeater->get_controls(), + 'default' => [ + [ + 'social_icon' => [ + 'value' => 'fab fa-facebook', + 'library' => 'fa-brands', + ], + ], + [ + 'social_icon' => [ + 'value' => 'fab fa-twitter', + 'library' => 'fa-brands', + ], + ], + [ + 'social_icon' => [ + 'value' => 'fab fa-youtube', + 'library' => 'fa-brands', + ], + ], + ], + 'title_field' => '<# var migrated = "undefined" !== typeof __fa4_migrated, social = ( "undefined" === typeof social ) ? false : social; #>{{{ elementor.helpers.getSocialNetworkNameFromIcon( social_icon, social, true, migrated, true ) }}}', + ] + ); + + $this->add_control( + 'shape', + [ + 'label' => esc_html__( 'Shape', 'elementor' ), + 'type' => Controls_Manager::SELECT, + 'default' => 'rounded', + 'options' => [ + 'rounded' => esc_html__( 'Rounded', 'elementor' ), + 'square' => esc_html__( 'Square', 'elementor' ), + 'circle' => esc_html__( 'Circle', 'elementor' ), + ], + 'prefix_class' => 'elementor-shape-', + ] + ); + + $this->add_responsive_control( + 'columns', + [ + 'label' => esc_html__( 'Columns', 'elementor' ), + 'type' => Controls_Manager::SELECT, + 'default' => '0', + 'options' => [ + '0' => esc_html__( 'Auto', 'elementor' ), + '1' => '1', + '2' => '2', + '3' => '3', + '4' => '4', + '5' => '5', + '6' => '6', + ], + 'prefix_class' => 'elementor-grid%s-', + 'selectors' => [ + '{{WRAPPER}}' => '--grid-template-columns: repeat({{VALUE}}, auto);', + ], + ] + ); + + $start = is_rtl() ? 'end' : 'start'; + $end = is_rtl() ? 'start' : 'end'; + + $this->add_responsive_control( + 'align', + [ + 'label' => esc_html__( 'Alignment', 'elementor' ), + 'type' => Controls_Manager::CHOOSE, + 'options' => [ + 'left' => [ + 'title' => esc_html__( 'Left', 'elementor' ), + 'icon' => 'eicon-text-align-left', + ], + 'center' => [ + 'title' => esc_html__( 'Center', 'elementor' ), + 'icon' => 'eicon-text-align-center', + ], + 'right' => [ + 'title' => esc_html__( 'Right', 'elementor' ), + 'icon' => 'eicon-text-align-right', + ], + ], + 'prefix_class' => 'e-grid-align%s-', + 'default' => 'center', + 'selectors' => [ + '{{WRAPPER}} .elementor-widget-container' => 'text-align: {{VALUE}}', + ], + ] + ); + + $this->end_controls_section(); + + $this->start_controls_section( + 'section_social_style', + [ + 'label' => esc_html__( 'Icon', 'elementor' ), + 'tab' => Controls_Manager::TAB_STYLE, + ] + ); + + $this->add_control( + 'icon_color', + [ + 'label' => esc_html__( 'Color', 'elementor' ), + 'type' => Controls_Manager::SELECT, + 'default' => 'default', + 'options' => [ + 'default' => esc_html__( 'Official Color', 'elementor' ), + 'custom' => esc_html__( 'Custom', 'elementor' ), + ], + ] + ); + + $this->add_control( + 'icon_primary_color', + [ + 'label' => esc_html__( 'Primary Color', 'elementor' ), + 'type' => Controls_Manager::COLOR, + 'condition' => [ + 'icon_color' => 'custom', + ], + 'selectors' => [ + '{{WRAPPER}} .elementor-social-icon' => 'background-color: {{VALUE}};', + ], + ] + ); + + $this->add_control( + 'icon_secondary_color', + [ + 'label' => esc_html__( 'Secondary Color', 'elementor' ), + 'type' => Controls_Manager::COLOR, + 'condition' => [ + 'icon_color' => 'custom', + ], + 'selectors' => [ + '{{WRAPPER}} .elementor-social-icon i' => 'color: {{VALUE}};', + '{{WRAPPER}} .elementor-social-icon svg' => 'fill: {{VALUE}};', + ], + ] + ); + + $this->add_responsive_control( + 'icon_size', + [ + 'label' => esc_html__( 'Size', 'elementor' ), + 'type' => Controls_Manager::SLIDER, + // The `%' and `em` units are not supported as the widget implements icons differently then other icons. + 'size_units' => [ 'px', 'rem', 'vw', 'custom' ], + 'range' => [ + 'px' => [ + 'min' => 6, + 'max' => 300, + ], + ], + 'selectors' => [ + '{{WRAPPER}}' => '--icon-size: {{SIZE}}{{UNIT}}', + ], + ] + ); + + $this->add_responsive_control( + 'icon_padding', + [ + 'label' => esc_html__( 'Padding', 'elementor' ), + 'type' => Controls_Manager::SLIDER, + // The `%' unit is not supported. + 'size_units' => [ 'px', 'em', 'rem', 'custom' ], + 'selectors' => [ + '{{WRAPPER}} .elementor-social-icon' => '--icon-padding: {{SIZE}}{{UNIT}}', + ], + 'default' => [ + 'unit' => 'em', + ], + 'tablet_default' => [ + 'unit' => 'em', + ], + 'mobile_default' => [ + 'unit' => 'em', + ], + 'range' => [ + 'px' => [ + 'max' => 50, + ], + 'em' => [ + 'min' => 0, + 'max' => 5, + ], + 'rem' => [ + 'min' => 0, + 'max' => 5, + ], + ], + ] + ); + + $this->add_responsive_control( + 'icon_spacing', + [ + 'label' => esc_html__( 'Spacing', 'elementor' ), + 'type' => Controls_Manager::SLIDER, + 'size_units' => [ 'px', 'em', 'rem', 'custom' ], + 'range' => [ + 'px' => [ + 'max' => 100, + ], + 'em' => [ + 'min' => 0, + 'max' => 10, + ], + 'rem' => [ + 'min' => 0, + 'max' => 10, + ], + ], + 'default' => [ + 'size' => 5, + ], + 'selectors' => [ + '{{WRAPPER}}' => '--grid-column-gap: {{SIZE}}{{UNIT}}', + ], + ] + ); + + $this->add_responsive_control( + 'row_gap', + [ + 'label' => esc_html__( 'Rows Gap', 'elementor' ), + 'type' => Controls_Manager::SLIDER, + 'size_units' => [ 'px', 'em', 'rem', 'custom' ], + 'default' => [ + 'size' => 0, + ], + 'selectors' => [ + '{{WRAPPER}}' => '--grid-row-gap: {{SIZE}}{{UNIT}}', + ], + ] + ); + + $this->add_group_control( + Group_Control_Border::get_type(), + [ + 'name' => 'image_border', // We know this mistake - TODO: 'icon_border' (for hover control condition also) + 'selector' => '{{WRAPPER}} .elementor-social-icon', + 'separator' => 'before', + ] + ); + + $this->add_responsive_control( + 'border_radius', + [ + 'label' => esc_html__( 'Border Radius', 'elementor' ), + 'type' => Controls_Manager::DIMENSIONS, + 'size_units' => [ 'px', '%', 'em', 'rem', 'custom' ], + 'selectors' => [ + '{{WRAPPER}} .elementor-icon' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};', + ], + ] + ); + + $this->end_controls_section(); + + $this->start_controls_section( + 'section_social_hover', + [ + 'label' => esc_html__( 'Icon Hover', 'elementor' ), + 'tab' => Controls_Manager::TAB_STYLE, + ] + ); + + $this->add_control( + 'hover_primary_color', + [ + 'label' => esc_html__( 'Primary Color', 'elementor' ), + 'type' => Controls_Manager::COLOR, + 'default' => '', + 'condition' => [ + 'icon_color' => 'custom', + ], + 'selectors' => [ + '{{WRAPPER}} .elementor-social-icon:hover' => 'background-color: {{VALUE}};', + ], + ] + ); + + $this->add_control( + 'hover_secondary_color', + [ + 'label' => esc_html__( 'Secondary Color', 'elementor' ), + 'type' => Controls_Manager::COLOR, + 'default' => '', + 'condition' => [ + 'icon_color' => 'custom', + ], + 'selectors' => [ + '{{WRAPPER}} .elementor-social-icon:hover i' => 'color: {{VALUE}};', + '{{WRAPPER}} .elementor-social-icon:hover svg' => 'fill: {{VALUE}};', + ], + ] + ); + + $this->add_control( + 'hover_border_color', + [ + 'label' => esc_html__( 'Border Color', 'elementor' ), + 'type' => Controls_Manager::COLOR, + 'default' => '', + 'condition' => [ + 'image_border_border!' => '', + ], + 'selectors' => [ + '{{WRAPPER}} .elementor-social-icon:hover' => 'border-color: {{VALUE}};', + ], + ] + ); + + $this->add_control( + 'hover_animation', + [ + 'label' => esc_html__( 'Hover Animation', 'elementor' ), + 'type' => Controls_Manager::HOVER_ANIMATION, + ] + ); + + $this->end_controls_section(); + + } + + /** + * Render social icons widget output on the frontend. + * + * Written in PHP and used to generate the final HTML. + * + * @since 1.0.0 + * @access protected + */ + protected function render() { + $settings = $this->get_settings_for_display(); + $fallback_defaults = [ + 'fa fa-facebook', + 'fa fa-twitter', + 'fa fa-google-plus', + ]; + + $class_animation = ''; + + if ( ! empty( $settings['hover_animation'] ) ) { + $class_animation = ' elementor-animation-' . $settings['hover_animation']; + } + + $migration_allowed = Icons_Manager::is_migration_allowed(); + + ?> +
    + $item ) { + $migrated = isset( $item['__fa4_migrated']['social_icon'] ); + $is_new = empty( $item['social'] ) && $migration_allowed; + $social = ''; + + // add old default + if ( empty( $item['social'] ) && ! $migration_allowed ) { + $item['social'] = isset( $fallback_defaults[ $index ] ) ? $fallback_defaults[ $index ] : 'fa fa-wordpress'; + } + + if ( ! empty( $item['social'] ) ) { + $social = str_replace( 'fa fa-', '', $item['social'] ); + } + + if ( ( $is_new || $migrated ) && 'svg' !== $item['social_icon']['library'] ) { + $social = explode( ' ', $item['social_icon']['value'], 2 ); + if ( empty( $social[1] ) ) { + $social = ''; + } else { + $social = str_replace( 'fa-', '', $social[1] ); + } + } + if ( 'svg' === $item['social_icon']['library'] ) { + $social = get_post_meta( $item['social_icon']['value']['id'], '_wp_attachment_image_alt', true ); + } + + $link_key = 'link_' . $index; + + $this->add_render_attribute( $link_key, 'class', [ + 'elementor-icon', + 'elementor-social-icon', + 'elementor-social-icon-' . $social . $class_animation, + 'elementor-repeater-item-' . $item['_id'], + ] ); + + $this->add_link_attributes( $link_key, $item['link'] ); + + ?> + + print_render_attribute_string( $link_key ); ?>> + + + + + + + +
    + + <# var iconsHTML = {}; #> +
    + <# _.each( settings.social_icon_list, function( item, index ) { + var link = item.link ? item.link.url : '', + migrated = elementor.helpers.isIconMigrated( item, 'social_icon' ); + social = elementor.helpers.getSocialNetworkNameFromIcon( item.social_icon, item.social, false, migrated ); + #> + + + + <# } ); #> +
    + start_controls_section( + 'section_spacer', + [ + 'label' => esc_html__( 'Spacer', 'elementor' ), + ] + ); + + $this->add_responsive_control( + 'space', + [ + 'label' => esc_html__( 'Space', 'elementor' ), + 'type' => Controls_Manager::SLIDER, + 'default' => [ + 'size' => 50, + ], + 'size_units' => [ 'px', 'em', 'rem', 'vh', 'custom' ], + 'range' => [ + 'px' => [ + 'min' => 10, + 'max' => 600, + ], + 'em' => [ + 'min' => 0.1, + 'max' => 20, + ], + ], + 'selectors' => [ + '{{WRAPPER}}' => '--spacer-size: {{SIZE}}{{UNIT}};', + ], + ] + ); + + $this->end_controls_section(); + } + + /** + * Render spacer widget output on the frontend. + * + * Written in PHP and used to generate the final HTML. + * + * @since 1.0.0 + * @access protected + */ + protected function render() { + ?> +
    +
    +
    + +
    +
    +
    + start_controls_section( + 'section_rating', + [ + 'label' => esc_html__( 'Star Rating', 'elementor' ), + ] + ); + + if ( Plugin::$instance->widgets_manager->get_widget_types( 'rating' ) ) { + $this->add_deprecation_message( + '3.17.0', + esc_html__( + 'You are currently editing a Star Rating widget in its old version. Drag a new Rating widget onto your page to use a newer version, providing better capabilities.', + 'elementor' + ), + 'rating' + ); + } + + $this->add_control( + 'rating_scale', + [ + 'label' => esc_html__( 'Rating Scale', 'elementor' ), + 'type' => Controls_Manager::SELECT, + 'options' => [ + '5' => '0-5', + '10' => '0-10', + ], + 'default' => '5', + ] + ); + + $this->add_control( + 'rating', + [ + 'label' => esc_html__( 'Rating', 'elementor' ), + 'type' => Controls_Manager::NUMBER, + 'min' => 0, + 'max' => 10, + 'step' => 0.1, + 'default' => 5, + 'dynamic' => [ + 'active' => true, + ], + ] + ); + + $this->add_control( + 'star_style', + [ + 'label' => esc_html__( 'Icon', 'elementor' ), + 'type' => Controls_Manager::SELECT, + 'options' => [ + 'star_fontawesome' => 'Font Awesome', + 'star_unicode' => 'Unicode', + ], + 'default' => 'star_fontawesome', + 'render_type' => 'template', + 'prefix_class' => 'elementor--star-style-', + 'separator' => 'before', + ] + ); + + $this->add_control( + 'unmarked_star_style', + [ + 'label' => esc_html__( 'Unmarked Style', 'elementor' ), + 'type' => Controls_Manager::CHOOSE, + 'options' => [ + 'solid' => [ + 'title' => esc_html__( 'Solid', 'elementor' ), + 'icon' => 'eicon-star', + ], + 'outline' => [ + 'title' => esc_html__( 'Outline', 'elementor' ), + 'icon' => 'eicon-star-o', + ], + ], + 'default' => 'solid', + ] + ); + + $this->add_control( + 'title', + [ + 'label' => esc_html__( 'Title', 'elementor' ), + 'type' => Controls_Manager::TEXT, + 'separator' => 'before', + 'dynamic' => [ + 'active' => true, + ], + ] + ); + + $this->add_responsive_control( + 'align', + [ + 'label' => esc_html__( 'Alignment', 'elementor' ), + 'type' => Controls_Manager::CHOOSE, + 'options' => [ + 'left' => [ + 'title' => esc_html__( 'Left', 'elementor' ), + 'icon' => 'eicon-text-align-left', + ], + 'center' => [ + 'title' => esc_html__( 'Center', 'elementor' ), + 'icon' => 'eicon-text-align-center', + ], + 'right' => [ + 'title' => esc_html__( 'Right', 'elementor' ), + 'icon' => 'eicon-text-align-right', + ], + 'justify' => [ + 'title' => esc_html__( 'Justified', 'elementor' ), + 'icon' => 'eicon-text-align-justify', + ], + ], + 'prefix_class' => 'elementor-star-rating%s--align-', + 'selectors' => [ + '{{WRAPPER}}' => 'text-align: {{VALUE}}', + ], + ] + ); + + $this->end_controls_section(); + + $this->start_controls_section( + 'section_title_style', + [ + 'label' => esc_html__( 'Title', 'elementor' ), + 'tab' => Controls_Manager::TAB_STYLE, + 'condition' => [ + 'title!' => '', + ], + ] + ); + + $this->add_control( + 'title_color', + [ + 'label' => esc_html__( 'Text Color', 'elementor' ), + 'type' => Controls_Manager::COLOR, + 'global' => [ + 'default' => Global_Colors::COLOR_TEXT, + ], + 'selectors' => [ + '{{WRAPPER}} .elementor-star-rating__title' => 'color: {{VALUE}}', + ], + ] + ); + + $this->add_group_control( + Group_Control_Typography::get_type(), + [ + 'name' => 'title_typography', + 'selector' => '{{WRAPPER}} .elementor-star-rating__title', + 'global' => [ + 'default' => Global_Typography::TYPOGRAPHY_TEXT, + ], + ] + ); + + $this->add_group_control( + Group_Control_Text_Shadow::get_type(), + [ + 'name' => 'title_shadow', + 'selector' => '{{WRAPPER}} .elementor-star-rating__title', + ] + ); + + $this->add_responsive_control( + 'title_gap', + [ + 'label' => esc_html__( 'Gap', 'elementor' ), + 'type' => Controls_Manager::SLIDER, + 'size_units' => [ 'px', 'em', 'rem', 'custom' ], + 'range' => [ + 'px' => [ + 'max' => 50, + ], + 'em' => [ + 'min' => 0, + 'max' => 5, + ], + 'rem' => [ + 'min' => 0, + 'max' => 5, + ], + ], + 'selectors' => [ + 'body:not(.rtl) {{WRAPPER}}:not(.elementor-star-rating--align-justify) .elementor-star-rating__title' => 'margin-right: {{SIZE}}{{UNIT}}', + 'body.rtl {{WRAPPER}}:not(.elementor-star-rating--align-justify) .elementor-star-rating__title' => 'margin-left: {{SIZE}}{{UNIT}}', + ], + ] + ); + + $this->end_controls_section(); + + $this->start_controls_section( + 'section_stars_style', + [ + 'label' => esc_html__( 'Stars', 'elementor' ), + 'tab' => Controls_Manager::TAB_STYLE, + ] + ); + + $this->add_responsive_control( + 'icon_size', + [ + 'label' => esc_html__( 'Size', 'elementor' ), + 'type' => Controls_Manager::SLIDER, + 'size_units' => [ 'px', 'em', 'rem', 'custom' ], + 'range' => [ + 'px' => [ + 'max' => 100, + ], + 'em' => [ + 'min' => 0, + 'max' => 10, + ], + 'rem' => [ + 'min' => 0, + 'max' => 10, + ], + ], + 'selectors' => [ + '{{WRAPPER}} .elementor-star-rating' => 'font-size: {{SIZE}}{{UNIT}}', + ], + ] + ); + + $this->add_responsive_control( + 'icon_space', + [ + 'label' => esc_html__( 'Spacing', 'elementor' ), + 'type' => Controls_Manager::SLIDER, + 'size_units' => [ 'px', 'em', 'rem', 'custom' ], + 'range' => [ + 'px' => [ + 'max' => 50, + ], + 'em' => [ + 'min' => 0, + 'max' => 5, + ], + 'rem' => [ + 'min' => 0, + 'max' => 5, + ], + ], + 'selectors' => [ + 'body:not(.rtl) {{WRAPPER}} .elementor-star-rating i:not(:last-of-type)' => 'margin-right: {{SIZE}}{{UNIT}}', + 'body.rtl {{WRAPPER}} .elementor-star-rating i:not(:last-of-type)' => 'margin-left: {{SIZE}}{{UNIT}}', + ], + ] + ); + + $this->add_control( + 'stars_color', + [ + 'label' => esc_html__( 'Color', 'elementor' ), + 'type' => Controls_Manager::COLOR, + 'selectors' => [ + '{{WRAPPER}} .elementor-star-rating i:before' => 'color: {{VALUE}}', + ], + 'separator' => 'before', + ] + ); + + $this->add_control( + 'stars_unmarked_color', + [ + 'label' => esc_html__( 'Unmarked Color', 'elementor' ), + 'type' => Controls_Manager::COLOR, + 'selectors' => [ + '{{WRAPPER}} .elementor-star-rating i' => 'color: {{VALUE}}', + ], + ] + ); + + $this->end_controls_section(); + } + + /** + * @since 2.3.0 + * @access protected + */ + protected function get_rating() { + $settings = $this->get_settings_for_display(); + $rating_scale = (int) $settings['rating_scale']; + $rating = (float) $settings['rating'] > $rating_scale ? $rating_scale : $settings['rating']; + + return [ $rating, $rating_scale ]; + } + + /** + * Print the actual stars and calculate their filling. + * + * Rating type is float to allow stars-count to be a fraction. + * Floored-rating type is int, to represent the rounded-down stars count. + * In the `for` loop, the index type is float to allow comparing with the rating value. + * + * @since 2.3.0 + * @access protected + */ + protected function render_stars( $icon ) { + $rating_data = $this->get_rating(); + $rating = (float) $rating_data[0]; + $floored_rating = floor( $rating ); + $stars_html = ''; + + for ( $stars = 1.0; $stars <= $rating_data[1]; $stars++ ) { + if ( $stars <= $floored_rating ) { + $stars_html .= '' . $icon . ''; + } elseif ( $floored_rating + 1 === $stars && $rating !== $floored_rating ) { + $stars_html .= '' . $icon . ''; + } else { + $stars_html .= '' . $icon . ''; + } + } + + return $stars_html; + } + + /** + * @since 2.3.0 + * @access protected + */ + protected function render() { + $settings = $this->get_settings_for_display(); + $rating_data = $this->get_rating(); + $textual_rating = $rating_data[0] . '/' . $rating_data[1]; + $icon = ''; + + if ( 'star_fontawesome' === $settings['star_style'] ) { + if ( 'outline' === $settings['unmarked_star_style'] ) { + $icon = ''; + } + } elseif ( 'star_unicode' === $settings['star_style'] ) { + $icon = '★'; + + if ( 'outline' === $settings['unmarked_star_style'] ) { + $icon = '☆'; + } + } + + $this->add_render_attribute( 'icon_wrapper', [ + 'class' => 'elementor-star-rating', + 'title' => $textual_rating, + 'itemtype' => 'http://schema.org/Rating', + 'itemscope' => '', + 'itemprop' => 'reviewRating', + ] ); + + $schema_rating = '' . $textual_rating . ''; + $stars_element = '
    get_render_attribute_string( 'icon_wrapper' ) . '>' . $this->render_stars( $icon ) . ' ' . $schema_rating . '
    '; + ?> + +
    + +
    + + +
    + + <# + var getRating = function() { + var ratingScale = parseInt( settings.rating_scale, 10 ), + rating = settings.rating > ratingScale ? ratingScale : settings.rating; + + return [ rating, ratingScale ]; + }, + ratingData = getRating(), + rating = ratingData[0], + textualRating = ratingData[0] + '/' + ratingData[1], + renderStars = function( icon ) { + var starsHtml = '', + flooredRating = Math.floor( rating ); + + for ( var stars = 1; stars <= ratingData[1]; stars++ ) { + if ( stars <= flooredRating ) { + starsHtml += '' + icon + ''; + } else if ( flooredRating + 1 === stars && rating !== flooredRating ) { + starsHtml += '' + icon + ''; + } else { + starsHtml += '' + icon + ''; + } + } + + return starsHtml; + }, + icon = ''; + + if ( 'star_fontawesome' === settings.star_style ) { + if ( 'outline' === settings.unmarked_star_style ) { + icon = ''; + } + } else if ( 'star_unicode' === settings.star_style ) { + icon = '★'; + + if ( 'outline' === settings.unmarked_star_style ) { + icon = '☆'; + } + } + + view.addRenderAttribute( 'iconWrapper', 'class', 'elementor-star-rating' ); + view.addRenderAttribute( 'iconWrapper', 'itemtype', 'http://schema.org/Rating' ); + view.addRenderAttribute( 'iconWrapper', 'title', textualRating ); + view.addRenderAttribute( 'iconWrapper', 'itemscope', '' ); + view.addRenderAttribute( 'iconWrapper', 'itemprop', 'reviewRating' ); + + var stars = renderStars( icon ); + #> + +
    + <# if ( ! _.isEmpty( settings.title ) ) { #> +
    {{ settings.title }}
    + <# } #> +
    + {{{ stars }}} + {{ textualRating }} +
    +
    + + experiments->is_feature_active( 'nested-elements' ); + } + + /** + * Register tabs widget controls. + * + * Adds different input fields to allow the user to change and customize the widget settings. + * + * @since 3.1.0 + * @access protected + */ + protected function register_controls() { + $start = is_rtl() ? 'end' : 'start'; + $end = is_rtl() ? 'start' : 'end'; + + $this->start_controls_section( + 'section_tabs', + [ + 'label' => esc_html__( 'Tabs', 'elementor' ), + ] + ); + + $repeater = new Repeater(); + + $repeater->add_control( + 'tab_title', + [ + 'label' => esc_html__( 'Title', 'elementor' ), + 'type' => Controls_Manager::TEXT, + 'default' => esc_html__( 'Tab Title', 'elementor' ), + 'placeholder' => esc_html__( 'Tab Title', 'elementor' ), + 'label_block' => true, + 'dynamic' => [ + 'active' => true, + ], + ] + ); + + $repeater->add_control( + 'tab_content', + [ + 'label' => esc_html__( 'Content', 'elementor' ), + 'default' => esc_html__( 'Tab Content', 'elementor' ), + 'placeholder' => esc_html__( 'Tab Content', 'elementor' ), + 'type' => Controls_Manager::WYSIWYG, + ] + ); + + $is_nested_tabs_active = Plugin::$instance->widgets_manager->get_widget_types( 'nested-tabs' ); + + if ( $is_nested_tabs_active ) { + $this->add_deprecation_message( + '3.8.0', + esc_html__( + 'You are currently editing a Tabs Widget in its old version. Any new tabs widget dragged into the canvas will be the new Tab widget, with the improved Nested capabilities.', + 'elementor' + ), + 'nested-tabs' + ); + } + + $this->add_control( + 'tabs', + [ + 'label' => esc_html__( 'Tabs Items', 'elementor' ), + 'type' => Controls_Manager::REPEATER, + 'fields' => $repeater->get_controls(), + 'default' => [ + [ + 'tab_title' => esc_html__( 'Tab #1', 'elementor' ), + 'tab_content' => esc_html__( 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut elit tellus, luctus nec ullamcorper mattis, pulvinar dapibus leo.', 'elementor' ), + ], + [ + 'tab_title' => esc_html__( 'Tab #2', 'elementor' ), + 'tab_content' => esc_html__( 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut elit tellus, luctus nec ullamcorper mattis, pulvinar dapibus leo.', 'elementor' ), + ], + ], + 'title_field' => '{{{ tab_title }}}', + ] + ); + + $this->add_control( + 'type', + [ + 'label' => esc_html__( 'Position', 'elementor' ), + 'type' => Controls_Manager::CHOOSE, + 'default' => 'horizontal', + 'options' => [ + 'vertical' => [ + 'title' => esc_html__( 'Vertical', 'elementor' ), + 'icon' => 'eicon-h-align-' . ( is_rtl() ? 'right' : 'left' ), + ], + 'horizontal' => [ + 'title' => esc_html__( 'Horizontal', 'elementor' ), + 'icon' => 'eicon-v-align-top', + ], + ], + 'prefix_class' => 'elementor-tabs-view-', + 'separator' => 'before', + ] + ); + + $this->add_control( + 'tabs_align_horizontal', + [ + 'label' => esc_html__( 'Alignment', 'elementor' ), + 'type' => Controls_Manager::CHOOSE, + 'options' => [ + '' => [ + 'title' => esc_html__( 'Start', 'elementor' ), + 'icon' => "eicon-align-$start-h", + ], + 'center' => [ + 'title' => esc_html__( 'Center', 'elementor' ), + 'icon' => 'eicon-align-center-h', + ], + 'end' => [ + 'title' => esc_html__( 'End', 'elementor' ), + 'icon' => "eicon-align-$end-h", + ], + 'stretch' => [ + 'title' => esc_html__( 'Stretch', 'elementor' ), + 'icon' => 'eicon-align-stretch-h', + ], + ], + 'prefix_class' => 'elementor-tabs-alignment-', + 'condition' => [ + 'type' => 'horizontal', + ], + ] + ); + + $this->add_control( + 'tabs_align_vertical', + [ + 'label' => esc_html__( 'Alignment', 'elementor' ), + 'type' => Controls_Manager::CHOOSE, + 'options' => [ + '' => [ + 'title' => esc_html__( 'Start', 'elementor' ), + 'icon' => 'eicon-align-start-v', + ], + 'center' => [ + 'title' => esc_html__( 'Center', 'elementor' ), + 'icon' => 'eicon-align-center-v', + ], + 'end' => [ + 'title' => esc_html__( 'End', 'elementor' ), + 'icon' => 'eicon-align-end-v', + ], + 'stretch' => [ + 'title' => esc_html__( 'Stretch', 'elementor' ), + 'icon' => 'eicon-align-stretch-v', + ], + ], + 'prefix_class' => 'elementor-tabs-alignment-', + 'condition' => [ + 'type' => 'vertical', + ], + ] + ); + + $this->end_controls_section(); + + $this->start_controls_section( + 'section_tabs_style', + [ + 'label' => esc_html__( 'Tabs', 'elementor' ), + 'tab' => Controls_Manager::TAB_STYLE, + ] + ); + + $this->add_control( + 'navigation_width', + [ + 'label' => esc_html__( 'Navigation Width', 'elementor' ), + 'type' => Controls_Manager::SLIDER, + 'size_units' => [ 'px', '%', 'em', 'rem', 'custom' ], + 'default' => [ + 'unit' => '%', + ], + 'range' => [ + 'px' => [ + 'min' => 10, + 'max' => 500, + ], + '%' => [ + 'min' => 10, + 'max' => 50, + ], + 'em' => [ + 'min' => 1, + 'max' => 50, + ], + 'rem' => [ + 'min' => 1, + 'max' => 50, + ], + ], + 'selectors' => [ + '{{WRAPPER}} .elementor-tabs-wrapper' => 'width: {{SIZE}}{{UNIT}}', + ], + 'condition' => [ + 'type' => 'vertical', + ], + ] + ); + + $this->add_control( + 'border_width', + [ + 'label' => esc_html__( 'Border Width', 'elementor' ), + 'type' => Controls_Manager::SLIDER, + 'size_units' => [ 'px', '%', 'em', 'rem', 'vw', 'custom' ], + 'default' => [ + 'size' => 1, + ], + 'range' => [ + 'px' => [ + 'max' => 20, + ], + 'em' => [ + 'max' => 2, + ], + ], + 'selectors' => [ + '{{WRAPPER}} .elementor-tab-title, {{WRAPPER}} .elementor-tab-title:before, {{WRAPPER}} .elementor-tab-title:after, {{WRAPPER}} .elementor-tab-content, {{WRAPPER}} .elementor-tabs-content-wrapper' => 'border-width: {{SIZE}}{{UNIT}};', + ], + ] + ); + + $this->add_control( + 'border_color', + [ + 'label' => esc_html__( 'Border Color', 'elementor' ), + 'type' => Controls_Manager::COLOR, + 'selectors' => [ + '{{WRAPPER}} .elementor-tab-mobile-title, {{WRAPPER}} .elementor-tab-desktop-title.elementor-active, {{WRAPPER}} .elementor-tab-title:before, {{WRAPPER}} .elementor-tab-title:after, {{WRAPPER}} .elementor-tab-content, {{WRAPPER}} .elementor-tabs-content-wrapper' => 'border-color: {{VALUE}};', + ], + ] + ); + + $this->add_control( + 'background_color', + [ + 'label' => esc_html__( 'Background Color', 'elementor' ), + 'type' => Controls_Manager::COLOR, + 'selectors' => [ + '{{WRAPPER}} .elementor-tab-desktop-title.elementor-active' => 'background-color: {{VALUE}};', + '{{WRAPPER}} .elementor-tabs-content-wrapper' => 'background-color: {{VALUE}};', + ], + ] + ); + + $this->add_control( + 'heading_title', + [ + 'label' => esc_html__( 'Title', 'elementor' ), + 'type' => Controls_Manager::HEADING, + 'separator' => 'before', + ] + ); + + $this->add_control( + 'tab_color', + [ + 'label' => esc_html__( 'Color', 'elementor' ), + 'type' => Controls_Manager::COLOR, + 'selectors' => [ + '{{WRAPPER}} .elementor-tab-title, {{WRAPPER}} .elementor-tab-title a' => 'color: {{VALUE}}', + ], + 'global' => [ + 'default' => Global_Colors::COLOR_PRIMARY, + ], + ] + ); + + $this->add_control( + 'tab_active_color', + [ + 'label' => esc_html__( 'Active Color', 'elementor' ), + 'type' => Controls_Manager::COLOR, + 'selectors' => [ + '{{WRAPPER}} .elementor-tab-title.elementor-active, + {{WRAPPER}} .elementor-tab-title.elementor-active a' => 'color: {{VALUE}}', + ], + 'global' => [ + 'default' => Global_Colors::COLOR_ACCENT, + ], + ] + ); + + $this->add_group_control( + Group_Control_Typography::get_type(), + [ + 'name' => 'tab_typography', + 'selector' => '{{WRAPPER}} .elementor-tab-title', + 'global' => [ + 'default' => Global_Typography::TYPOGRAPHY_PRIMARY, + ], + ] + ); + + $this->add_group_control( + Group_Control_Text_Stroke::get_type(), + [ + 'name' => 'text_stroke', + 'selector' => '{{WRAPPER}} .elementor-tab-title', + ] + ); + + $this->add_group_control( + Group_Control_Text_Shadow::get_type(), + [ + 'name' => 'title_shadow', + 'selector' => '{{WRAPPER}} .elementor-tab-title', + ] + ); + + $this->add_control( + 'title_align', + [ + 'label' => esc_html__( 'Alignment', 'elementor' ), + 'type' => Controls_Manager::CHOOSE, + 'options' => [ + 'left' => [ + 'title' => esc_html__( 'Left', 'elementor' ), + 'icon' => 'eicon-text-align-left', + ], + 'center' => [ + 'title' => esc_html__( 'Center', 'elementor' ), + 'icon' => 'eicon-text-align-center', + ], + 'right' => [ + 'title' => esc_html__( 'Right', 'elementor' ), + 'icon' => 'eicon-text-align-right', + ], + ], + 'selectors' => [ + '{{WRAPPER}} .elementor-tab-title' => 'text-align: {{VALUE}};', + ], + 'condition' => [ + 'tabs_align' => 'stretch', + ], + ] + ); + + $this->add_control( + 'heading_content', + [ + 'label' => esc_html__( 'Content', 'elementor' ), + 'type' => Controls_Manager::HEADING, + 'separator' => 'before', + ] + ); + + $this->add_control( + 'content_color', + [ + 'label' => esc_html__( 'Color', 'elementor' ), + 'type' => Controls_Manager::COLOR, + 'selectors' => [ + '{{WRAPPER}} .elementor-tab-content' => 'color: {{VALUE}};', + ], + 'global' => [ + 'default' => Global_Colors::COLOR_TEXT, + ], + ] + ); + + $this->add_group_control( + Group_Control_Typography::get_type(), + [ + 'name' => 'content_typography', + 'selector' => '{{WRAPPER}} .elementor-tab-content', + 'global' => [ + 'default' => Global_Typography::TYPOGRAPHY_TEXT, + ], + ] + ); + + $this->add_group_control( + Group_Control_Text_Shadow::get_type(), + [ + 'name' => 'content_shadow', + 'selector' => '{{WRAPPER}} .elementor-tab-content', + ] + ); + + $this->end_controls_section(); + } + + /** + * Render tabs widget output on the frontend. + * + * Written in PHP and used to generate the final HTML. + * + * @since 1.0.0 + * @access protected + */ + protected function render() { + $tabs = $this->get_settings_for_display( 'tabs' ); + + $id_int = substr( $this->get_id_int(), 0, 3 ); + + $this->add_render_attribute( 'elementor-tabs', 'class', 'elementor-tabs' ); + + ?> +
    print_render_attribute_string( 'elementor-tabs' ); ?>> +
    + $item ) : + $tab_count = $index + 1; + $tab_title_setting_key = $this->get_repeater_setting_key( 'tab_title', 'tabs', $index ); + + $this->add_render_attribute( $tab_title_setting_key, [ + 'id' => 'elementor-tab-title-' . $id_int . $tab_count, + 'class' => [ 'elementor-tab-title', 'elementor-tab-desktop-title' ], + 'aria-selected' => 1 === $tab_count ? 'true' : 'false', + 'data-tab' => $tab_count, + 'role' => 'tab', + 'tabindex' => 1 === $tab_count ? '0' : '-1', + 'aria-controls' => 'elementor-tab-content-' . $id_int . $tab_count, + 'aria-expanded' => 'false', + ] ); + ?> +
    print_render_attribute_string( $tab_title_setting_key ); ?>>
    + +
    +
    + $item ) : + $tab_count = $index + 1; + $hidden = 1 === $tab_count ? 'false' : 'hidden'; + $tab_content_setting_key = $this->get_repeater_setting_key( 'tab_content', 'tabs', $index ); + + $tab_title_mobile_setting_key = $this->get_repeater_setting_key( 'tab_title_mobile', 'tabs', $tab_count ); + + $this->add_render_attribute( $tab_content_setting_key, [ + 'id' => 'elementor-tab-content-' . $id_int . $tab_count, + 'class' => [ 'elementor-tab-content', 'elementor-clearfix' ], + 'data-tab' => $tab_count, + 'role' => 'tabpanel', + 'aria-labelledby' => 'elementor-tab-title-' . $id_int . $tab_count, + 'tabindex' => '0', + 'hidden' => $hidden, + ] ); + + $this->add_render_attribute( $tab_title_mobile_setting_key, [ + 'class' => [ 'elementor-tab-title', 'elementor-tab-mobile-title' ], + 'aria-selected' => 1 === $tab_count ? 'true' : 'false', + 'data-tab' => $tab_count, + 'role' => 'tab', + 'tabindex' => 1 === $tab_count ? '0' : '-1', + 'aria-controls' => 'elementor-tab-content-' . $id_int . $tab_count, + 'aria-expanded' => 'false', + ] ); + + $this->add_inline_editing_attributes( $tab_content_setting_key, 'advanced' ); + ?> +
    print_render_attribute_string( $tab_title_mobile_setting_key ); ?>>print_unescaped_setting( 'tab_title', 'tabs', $index ); + ?>
    +
    print_render_attribute_string( $tab_content_setting_key ); ?>>print_text_editor( $item['tab_content'] ); + ?>
    + +
    +
    + +
    + <# if ( settings.tabs ) { + var elementUid = view.getIDInt().toString().substr( 0, 3 ); #> +
    + <# _.each( settings.tabs, function( item, index ) { + var tabCount = index + 1, + tabUid = elementUid + tabCount, + tabTitleKey = 'tab-title-' + tabUid; + + view.addRenderAttribute( tabTitleKey, { + 'id': 'elementor-tab-title-' + tabUid, + 'class': [ 'elementor-tab-title','elementor-tab-desktop-title' ], + 'data-tab': tabCount, + 'role': 'tab', + 'tabindex': 1 === tabCount ? '0' : '-1', + 'aria-controls': 'elementor-tab-content-' + tabUid, + 'aria-expanded': 'false', + } ); + #> +
    {{{ item.tab_title }}}
    + <# } ); #> +
    +
    + <# _.each( settings.tabs, function( item, index ) { + var tabCount = index + 1, + tabContentKey = view.getRepeaterSettingKey( 'tab_content', 'tabs',index ); + + view.addRenderAttribute( tabContentKey, { + 'id': 'elementor-tab-content-' + elementUid + tabCount, + 'class': [ 'elementor-tab-content', 'elementor-clearfix', 'elementor-repeater-item-' + item._id ], + 'data-tab': tabCount, + 'role' : 'tabpanel', + 'aria-labelledby' : 'elementor-tab-title-' + elementUid + tabCount + } ); + + view.addInlineEditingAttributes( tabContentKey, 'advanced' ); #> + +
    {{{ item.tab_content }}}
    + <# } ); #> +
    + <# } #> +
    + ! Utils::has_pro(), + 'image' => esc_url( ELEMENTOR_ASSETS_URL . 'images/go-pro.svg' ), + 'image_alt' => esc_attr__( 'Upgrade', 'elementor' ), + 'description' => esc_html__( 'Use interesting masonry layouts and other overlay features with Elementor\'s Pro Gallery widget.', 'elementor' ), + 'upgrade_url' => esc_url( 'https://go.elementor.com/go-pro-testimonial-widget/' ), + 'upgrade_text' => esc_html__( 'Upgrade Now', 'elementor' ), + ]; + } + + /** + * Register testimonial widget controls. + * + * Adds different input fields to allow the user to change and customize the widget settings. + * + * @since 3.1.0 + * @access protected + */ + protected function register_controls() { + $this->start_controls_section( + 'section_testimonial', + [ + 'label' => esc_html__( 'Testimonial', 'elementor' ), + ] + ); + + $this->add_control( + 'testimonial_content', + [ + 'label' => esc_html__( 'Content', 'elementor' ), + 'type' => Controls_Manager::TEXTAREA, + 'dynamic' => [ + 'active' => true, + ], + 'rows' => '10', + 'default' => esc_html__( 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut elit tellus, luctus nec ullamcorper mattis, pulvinar dapibus leo.', 'elementor' ), + ] + ); + + $this->add_control( + 'testimonial_image', + [ + 'label' => esc_html__( 'Choose Image', 'elementor' ), + 'type' => Controls_Manager::MEDIA, + 'dynamic' => [ + 'active' => true, + ], + 'default' => [ + 'url' => Utils::get_placeholder_image_src(), + ], + ] + ); + + $this->add_group_control( + Group_Control_Image_Size::get_type(), + [ + 'name' => 'testimonial_image', // Usage: `{name}_size` and `{name}_custom_dimension`, in this case `testimonial_image_size` and `testimonial_image_custom_dimension`. + 'default' => 'full', + ] + ); + + $this->add_control( + 'testimonial_name', + [ + 'label' => esc_html__( 'Name', 'elementor' ), + 'type' => Controls_Manager::TEXT, + 'dynamic' => [ + 'active' => true, + ], + 'ai' => [ + 'active' => false, + ], + 'default' => esc_html__( 'John Doe', 'elementor' ), + ] + ); + + $this->add_control( + 'testimonial_job', + [ + 'label' => esc_html__( 'Title', 'elementor' ), + 'type' => Controls_Manager::TEXT, + 'dynamic' => [ + 'active' => true, + ], + 'ai' => [ + 'active' => false, + ], + 'default' => esc_html__( 'Designer', 'elementor' ), + ] + ); + + $this->add_control( + 'link', + [ + 'label' => esc_html__( 'Link', 'elementor' ), + 'type' => Controls_Manager::URL, + 'dynamic' => [ + 'active' => true, + ], + ] + ); + + $aside = is_rtl() ? 'right' : 'left'; + + $this->add_control( + 'testimonial_image_position', + [ + 'label' => esc_html__( 'Image Position', 'elementor' ), + 'type' => Controls_Manager::CHOOSE, + 'default' => 'aside', + 'options' => [ + 'aside' => [ + 'title' => esc_html__( 'Aside', 'elementor' ), + 'icon' => 'eicon-h-align-' . $aside, + ], + 'top' => [ + 'title' => esc_html__( 'Top', 'elementor' ), + 'icon' => 'eicon-v-align-top', + ], + ], + 'toggle' => false, + 'condition' => [ + 'testimonial_image[url]!' => '', + ], + 'separator' => 'before', + 'style_transfer' => true, + ] + ); + + $this->add_responsive_control( + 'testimonial_alignment', + [ + 'label' => esc_html__( 'Alignment', 'elementor' ), + 'type' => Controls_Manager::CHOOSE, + 'default' => 'center', + 'options' => [ + 'left' => [ + 'title' => esc_html__( 'Left', 'elementor' ), + 'icon' => 'eicon-text-align-left', + ], + 'center' => [ + 'title' => esc_html__( 'Center', 'elementor' ), + 'icon' => 'eicon-text-align-center', + ], + 'right' => [ + 'title' => esc_html__( 'Right', 'elementor' ), + 'icon' => 'eicon-text-align-right', + ], + ], + 'selectors' => [ + '{{WRAPPER}} .elementor-testimonial-wrapper' => 'text-align: {{VALUE}}', + ], + 'style_transfer' => true, + ] + ); + + $this->end_controls_section(); + + // Content. + $this->start_controls_section( + 'section_style_testimonial_content', + [ + 'label' => esc_html__( 'Content', 'elementor' ), + 'tab' => Controls_Manager::TAB_STYLE, + ] + ); + + $this->add_control( + 'content_content_color', + [ + 'label' => esc_html__( 'Text Color', 'elementor' ), + 'type' => Controls_Manager::COLOR, + 'global' => [ + 'default' => Global_Colors::COLOR_TEXT, + ], + 'default' => '', + 'selectors' => [ + '{{WRAPPER}} .elementor-testimonial-content' => 'color: {{VALUE}};', + ], + ] + ); + + $this->add_group_control( + Group_Control_Typography::get_type(), + [ + 'name' => 'content_typography', + 'global' => [ + 'default' => Global_Typography::TYPOGRAPHY_TEXT, + ], + 'selector' => '{{WRAPPER}} .elementor-testimonial-content', + ] + ); + + $this->add_group_control( + Group_Control_Text_Shadow::get_type(), + [ + 'name' => 'content_shadow', + 'selector' => '{{WRAPPER}} .elementor-testimonial-content', + ] + ); + + $this->end_controls_section(); + + // Image. + $this->start_controls_section( + 'section_style_testimonial_image', + [ + 'label' => esc_html__( 'Image', 'elementor' ), + 'tab' => Controls_Manager::TAB_STYLE, + 'condition' => [ + 'testimonial_image[url]!' => '', + ], + ] + ); + + $this->add_responsive_control( + 'image_size', + [ + 'label' => esc_html__( 'Image Resolution', 'elementor' ), + 'type' => Controls_Manager::SLIDER, + 'size_units' => [ 'px', '%', 'em', 'rem', 'vw', 'custom' ], + 'range' => [ + 'px' => [ + 'min' => 20, + 'max' => 200, + ], + ], + 'selectors' => [ + '{{WRAPPER}} .elementor-testimonial-wrapper .elementor-testimonial-image img' => 'width: {{SIZE}}{{UNIT}};height: {{SIZE}}{{UNIT}};', + ], + ] + ); + + $this->add_group_control( + Group_Control_Border::get_type(), + [ + 'name' => 'image_border', + 'selector' => '{{WRAPPER}} .elementor-testimonial-wrapper .elementor-testimonial-image img', + 'separator' => 'before', + ] + ); + + $this->add_responsive_control( + 'image_border_radius', + [ + 'label' => esc_html__( 'Border Radius', 'elementor' ), + 'type' => Controls_Manager::DIMENSIONS, + 'size_units' => [ 'px', '%', 'em', 'rem', 'custom' ], + 'selectors' => [ + '{{WRAPPER}} .elementor-testimonial-wrapper .elementor-testimonial-image img' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};', + ], + ] + ); + + $this->end_controls_section(); + + // Name. + $this->start_controls_section( + 'section_style_testimonial_name', + [ + 'label' => esc_html__( 'Name', 'elementor' ), + 'tab' => Controls_Manager::TAB_STYLE, + ] + ); + + $this->add_control( + 'name_text_color', + [ + 'label' => esc_html__( 'Text Color', 'elementor' ), + 'type' => Controls_Manager::COLOR, + 'global' => [ + 'default' => Global_Colors::COLOR_PRIMARY, + ], + 'default' => '', + 'selectors' => [ + '{{WRAPPER}} .elementor-testimonial-name' => 'color: {{VALUE}};', + ], + ] + ); + + $this->add_group_control( + Group_Control_Typography::get_type(), + [ + 'name' => 'name_typography', + 'global' => [ + 'default' => Global_Typography::TYPOGRAPHY_PRIMARY, + ], + 'selector' => '{{WRAPPER}} .elementor-testimonial-name', + ] + ); + + $this->add_group_control( + Group_Control_Text_Shadow::get_type(), + [ + 'name' => 'name_shadow', + 'selector' => '{{WRAPPER}} .elementor-testimonial-name', + ] + ); + + $this->end_controls_section(); + + // Job. + $this->start_controls_section( + 'section_style_testimonial_job', + [ + 'label' => esc_html__( 'Title', 'elementor' ), + 'tab' => Controls_Manager::TAB_STYLE, + ] + ); + + $this->add_control( + 'job_text_color', + [ + 'label' => esc_html__( 'Text Color', 'elementor' ), + 'type' => Controls_Manager::COLOR, + 'global' => [ + 'default' => Global_Colors::COLOR_SECONDARY, + ], + 'default' => '', + 'selectors' => [ + '{{WRAPPER}} .elementor-testimonial-job' => 'color: {{VALUE}};', + ], + ] + ); + + $this->add_group_control( + Group_Control_Typography::get_type(), + [ + 'name' => 'job_typography', + 'global' => [ + 'default' => Global_Typography::TYPOGRAPHY_SECONDARY, + ], + 'selector' => '{{WRAPPER}} .elementor-testimonial-job', + ] + ); + + $this->add_group_control( + Group_Control_Text_Shadow::get_type(), + [ + 'name' => 'job_shadow', + 'selector' => '{{WRAPPER}} .elementor-testimonial-job', + ] + ); + + $this->end_controls_section(); + } + + /** + * Render testimonial widget output on the frontend. + * + * Written in PHP and used to generate the final HTML. + * + * @since 1.0.0 + * @access protected + */ + protected function render() { + $settings = $this->get_settings_for_display(); + + $this->add_render_attribute( 'wrapper', 'class', 'elementor-testimonial-wrapper' ); + + $this->add_render_attribute( 'meta', 'class', 'elementor-testimonial-meta' ); + + if ( $settings['testimonial_image']['url'] ) { + $this->add_render_attribute( 'meta', 'class', 'elementor-has-image' ); + } + + if ( $settings['testimonial_image_position'] ) { + $this->add_render_attribute( 'meta', 'class', 'elementor-testimonial-image-position-' . $settings['testimonial_image_position'] ); + } + + $has_content = ! ! $settings['testimonial_content']; + $has_image = ! ! $settings['testimonial_image']['url']; + $has_name = ! ! $settings['testimonial_name']; + $has_job = ! ! $settings['testimonial_job']; + + if ( ! $has_content && ! $has_image && ! $has_name && ! $has_job ) { + return; + } + + if ( ! empty( $settings['link']['url'] ) ) { + $this->add_link_attributes( 'link', $settings['link'] ); + } + ?> +
    print_render_attribute_string( 'wrapper' ); ?>> + add_render_attribute( 'testimonial_content', 'class', 'elementor-testimonial-content' ); + $this->add_inline_editing_attributes( 'testimonial_content' ); + ?> +
    print_render_attribute_string( 'testimonial_content' ); ?>>print_unescaped_setting( 'testimonial_content' ); ?>
    + + + +
    print_render_attribute_string( 'meta' ); ?>> +
    + +
    + get_render_attribute_string( 'link' ) . '>' . $image_html . ''; + endif; + echo wp_kses_post( $image_html ); + ?> +
    + + + +
    + add_render_attribute( 'testimonial_name', 'class', 'elementor-testimonial-name' ); + $this->add_inline_editing_attributes( 'testimonial_name', 'none' ); + + if ( ! empty( $settings['link']['url'] ) ) : + ?> + print_render_attribute_string( 'testimonial_name' ); ?> print_render_attribute_string( 'link' ); ?>>print_unescaped_setting( 'testimonial_name' ); ?> + +
    print_render_attribute_string( 'testimonial_name' ); ?>>print_unescaped_setting( 'testimonial_name' ); ?>
    + + add_render_attribute( 'testimonial_job', 'class', 'elementor-testimonial-job' ); + + $this->add_inline_editing_attributes( 'testimonial_job', 'none' ); + + if ( ! empty( $settings['link']['url'] ) ) : + ?> + print_render_attribute_string( 'testimonial_job' ); ?> print_render_attribute_string( 'link' ); ?>>print_unescaped_setting( 'testimonial_job' ); ?> + +
    print_render_attribute_string( 'testimonial_job' ); ?>>print_unescaped_setting( 'testimonial_job' ); ?>
    + +
    + +
    +
    + +
    + + <# + var image = { + id: settings.testimonial_image.id, + url: settings.testimonial_image.url, + size: settings.testimonial_image_size, + dimension: settings.testimonial_image_custom_dimension, + model: view.getEditModel() + }; + var imageUrl = false, hasImage = ''; + + if ( '' !== settings.testimonial_image.url ) { + imageUrl = elementor.imagesManager.getImageUrl( image ); + hasImage = ' elementor-has-image'; + + var imageHtml = 'testimonial'; + if ( settings.link.url ) { + imageHtml = '' + imageHtml + ''; + } + } + + var testimonial_image_position = settings.testimonial_image_position ? ' elementor-testimonial-image-position-' + settings.testimonial_image_position : ''; + #> +
    + <# if ( '' !== settings.testimonial_content ) { + view.addRenderAttribute( 'testimonial_content', { + 'data-binding-type': 'content', + 'data-binding-setting': 'testimonial_content', + } ); + view.addRenderAttribute( 'testimonial_content', 'class', 'elementor-testimonial-content' ); + + view.addInlineEditingAttributes( 'testimonial_content' ); + #> +
    {{{ settings.testimonial_content }}}
    + <# } #> +
    +
    + <# if ( imageUrl ) { #> +
    {{{ imageHtml }}}
    + <# } #> +
    + render_testimonial_description(); ?> +
    +
    +
    +
    + + <# + if ( '' !== settings.testimonial_name ) { + view.addRenderAttribute( 'testimonial_name', 'class', 'elementor-testimonial-name' ); + + view.addInlineEditingAttributes( 'testimonial_name', 'none' ); + + if ( settings.link.url ) { + #> + {{{ settings.testimonial_name }}} + <# + } else { + #> +
    {{{ settings.testimonial_name }}}
    + <# + } + } + + if ( '' !== settings.testimonial_job ) { + view.addRenderAttribute( 'testimonial_job', 'class', 'elementor-testimonial-job' ); + + view.addInlineEditingAttributes( 'testimonial_job', 'none' ); + + if ( settings.link.url ) { + #> + {{{ settings.testimonial_job }}} + <# + } else { + #> +
    {{{ settings.testimonial_job }}}
    + <# + } + } + #> + start_controls_section( + 'section_editor', + [ + 'label' => esc_html__( 'Text Editor', 'elementor' ), + ] + ); + + $this->add_control( + 'editor', + [ + 'label' => '', + 'type' => Controls_Manager::WYSIWYG, + 'default' => '

    ' . esc_html__( 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut elit tellus, luctus nec ullamcorper mattis, pulvinar dapibus leo.', 'elementor' ) . '

    ', + ] + ); + + $this->add_control( + 'drop_cap', [ + 'label' => esc_html__( 'Drop Cap', 'elementor' ), + 'type' => Controls_Manager::SWITCHER, + 'label_off' => esc_html__( 'Off', 'elementor' ), + 'label_on' => esc_html__( 'On', 'elementor' ), + 'prefix_class' => 'elementor-drop-cap-', + 'frontend_available' => true, + ] + ); + + $this->add_responsive_control( + 'text_columns', + [ + 'label' => esc_html__( 'Columns', 'elementor' ), + 'type' => Controls_Manager::SELECT, + 'separator' => 'before', + 'options' => [ + '' => esc_html__( 'Default', 'elementor' ), + '1' => esc_html__( '1', 'elementor' ), + '2' => esc_html__( '2', 'elementor' ), + '3' => esc_html__( '3', 'elementor' ), + '4' => esc_html__( '4', 'elementor' ), + '5' => esc_html__( '5', 'elementor' ), + '6' => esc_html__( '6', 'elementor' ), + '7' => esc_html__( '7', 'elementor' ), + '8' => esc_html__( '8', 'elementor' ), + '9' => esc_html__( '9', 'elementor' ), + '10' => esc_html__( '10', 'elementor' ), + ], + 'selectors' => [ + '{{WRAPPER}}' => 'columns: {{VALUE}};', + ], + ] + ); + + $this->add_responsive_control( + 'column_gap', + [ + 'label' => esc_html__( 'Columns Gap', 'elementor' ), + 'type' => Controls_Manager::SLIDER, + 'size_units' => [ 'px', '%', 'em', 'rem', 'vw', 'custom' ], + 'range' => [ + 'px' => [ + 'max' => 100, + ], + '%' => [ + 'max' => 10, + 'step' => 0.1, + ], + 'vw' => [ + 'max' => 10, + 'step' => 0.1, + ], + 'em' => [ + 'max' => 10, + ], + 'rem' => [ + 'max' => 10, + ], + ], + 'selectors' => [ + '{{WRAPPER}}' => 'column-gap: {{SIZE}}{{UNIT}};', + ], + 'conditions' => [ + 'relation' => 'or', + 'terms' => [ + [ + 'name' => 'text_columns', + 'operator' => '>', + 'value' => 1, + ], + [ + 'name' => 'text_columns', + 'operator' => '===', + 'value' => '', + ], + ], + ], + ] + ); + + $this->end_controls_section(); + + $this->start_controls_section( + 'section_style', + [ + 'label' => esc_html__( 'Text Editor', 'elementor' ), + 'tab' => Controls_Manager::TAB_STYLE, + ] + ); + + $this->add_responsive_control( + 'align', + [ + 'label' => esc_html__( 'Alignment', 'elementor' ), + 'type' => Controls_Manager::CHOOSE, + 'options' => [ + 'left' => [ + 'title' => esc_html__( 'Left', 'elementor' ), + 'icon' => 'eicon-text-align-left', + ], + 'center' => [ + 'title' => esc_html__( 'Center', 'elementor' ), + 'icon' => 'eicon-text-align-center', + ], + 'right' => [ + 'title' => esc_html__( 'Right', 'elementor' ), + 'icon' => 'eicon-text-align-right', + ], + 'justify' => [ + 'title' => esc_html__( 'Justified', 'elementor' ), + 'icon' => 'eicon-text-align-justify', + ], + ], + 'selectors' => [ + '{{WRAPPER}}' => 'text-align: {{VALUE}};', + ], + ] + ); + + $this->add_control( + 'text_color', + [ + 'label' => esc_html__( 'Text Color', 'elementor' ), + 'type' => Controls_Manager::COLOR, + 'default' => '', + 'selectors' => [ + '{{WRAPPER}}' => 'color: {{VALUE}};', + ], + 'global' => [ + 'default' => Global_Colors::COLOR_TEXT, + ], + ] + ); + + $this->add_group_control( + Group_Control_Typography::get_type(), + [ + 'name' => 'typography', + 'global' => [ + 'default' => Global_Typography::TYPOGRAPHY_TEXT, + ], + ] + ); + + $this->add_group_control( + Group_Control_Text_Shadow::get_type(), + [ + 'name' => 'text_shadow', + 'selector' => '{{WRAPPER}}', + ] + ); + + $this->end_controls_section(); + + $this->start_controls_section( + 'section_drop_cap', + [ + 'label' => esc_html__( 'Drop Cap', 'elementor' ), + 'tab' => Controls_Manager::TAB_STYLE, + 'condition' => [ + 'drop_cap' => 'yes', + ], + ] + ); + + $this->add_control( + 'drop_cap_view', + [ + 'label' => esc_html__( 'View', 'elementor' ), + 'type' => Controls_Manager::SELECT, + 'options' => [ + 'default' => esc_html__( 'Default', 'elementor' ), + 'stacked' => esc_html__( 'Stacked', 'elementor' ), + 'framed' => esc_html__( 'Framed', 'elementor' ), + ], + 'default' => 'default', + 'prefix_class' => 'elementor-drop-cap-view-', + ] + ); + + $this->add_control( + 'drop_cap_primary_color', + [ + 'label' => esc_html__( 'Primary Color', 'elementor' ), + 'type' => Controls_Manager::COLOR, + 'selectors' => [ + '{{WRAPPER}}.elementor-drop-cap-view-stacked .elementor-drop-cap' => 'background-color: {{VALUE}};', + '{{WRAPPER}}.elementor-drop-cap-view-framed .elementor-drop-cap, {{WRAPPER}}.elementor-drop-cap-view-default .elementor-drop-cap' => 'color: {{VALUE}}; border-color: {{VALUE}};', + ], + 'global' => [ + 'default' => Global_Colors::COLOR_PRIMARY, + ], + ] + ); + + $this->add_control( + 'drop_cap_secondary_color', + [ + 'label' => esc_html__( 'Secondary Color', 'elementor' ), + 'type' => Controls_Manager::COLOR, + 'selectors' => [ + '{{WRAPPER}}.elementor-drop-cap-view-framed .elementor-drop-cap' => 'background-color: {{VALUE}};', + '{{WRAPPER}}.elementor-drop-cap-view-stacked .elementor-drop-cap' => 'color: {{VALUE}};', + ], + 'condition' => [ + 'drop_cap_view!' => 'default', + ], + ] + ); + + $this->add_group_control( + Group_Control_Text_Shadow::get_type(), + [ + 'name' => 'drop_cap_shadow', + 'selector' => '{{WRAPPER}} .elementor-drop-cap', + ] + ); + + $this->add_control( + 'drop_cap_size', + [ + 'label' => esc_html__( 'Size', 'elementor' ), + 'type' => Controls_Manager::SLIDER, + 'size_units' => [ 'px', 'em', 'rem', 'custom' ], + 'default' => [ + 'size' => 5, + ], + 'range' => [ + 'px' => [ + 'max' => 30, + ], + 'em' => [ + 'max' => 3, + ], + 'rem' => [ + 'max' => 3, + ], + ], + 'selectors' => [ + '{{WRAPPER}} .elementor-drop-cap' => 'padding: {{SIZE}}{{UNIT}};', + ], + 'condition' => [ + 'drop_cap_view!' => 'default', + ], + ] + ); + + $this->add_control( + 'drop_cap_space', + [ + 'label' => esc_html__( 'Space', 'elementor' ), + 'type' => Controls_Manager::SLIDER, + 'size_units' => [ 'px', 'em', 'rem', 'custom' ], + 'default' => [ + 'size' => 10, + ], + 'range' => [ + 'px' => [ + 'max' => 50, + ], + 'em' => [ + 'max' => 5, + ], + 'rem' => [ + 'max' => 5, + ], + ], + 'selectors' => [ + 'body:not(.rtl) {{WRAPPER}} .elementor-drop-cap' => 'margin-right: {{SIZE}}{{UNIT}};', + 'body.rtl {{WRAPPER}} .elementor-drop-cap' => 'margin-left: {{SIZE}}{{UNIT}};', + ], + ] + ); + + $this->add_control( + 'drop_cap_border_radius', + [ + 'label' => esc_html__( 'Border Radius', 'elementor' ), + 'type' => Controls_Manager::SLIDER, + 'size_units' => [ 'px', '%', 'em', 'rem', 'custom' ], + 'default' => [ + 'unit' => '%', + ], + 'range' => [ + '%' => [ + 'max' => 50, + ], + ], + 'selectors' => [ + '{{WRAPPER}} .elementor-drop-cap' => 'border-radius: {{SIZE}}{{UNIT}};', + ], + 'condition' => [ + 'drop_cap_view!' => 'default', + ], + ] + ); + + $this->add_control( + 'drop_cap_border_width', [ + 'label' => esc_html__( 'Border Width', 'elementor' ), + 'type' => Controls_Manager::DIMENSIONS, + 'size_units' => [ 'px', '%', 'em', 'rem', 'vw', 'custom' ], + 'selectors' => [ + '{{WRAPPER}} .elementor-drop-cap' => 'border-width: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};', + ], + 'condition' => [ + 'drop_cap_view' => 'framed', + ], + ] + ); + + $this->add_group_control( + Group_Control_Typography::get_type(), + [ + 'name' => 'drop_cap_typography', + 'selector' => '{{WRAPPER}} .elementor-drop-cap-letter', + 'exclude' => [ + 'letter_spacing', + ], + ] + ); + + $this->end_controls_section(); + } + + /** + * Render text editor widget output on the frontend. + * + * Written in PHP and used to generate the final HTML. + * + * @since 1.0.0 + * @access protected + */ + protected function render() { + $should_render_inline_editing = Plugin::$instance->editor->is_edit_mode(); + + $editor_content = $this->get_settings_for_display( 'editor' ); + $editor_content = $this->parse_text_editor( $editor_content ); + + if ( $should_render_inline_editing ) { + $this->add_render_attribute( 'editor', 'class', [ 'elementor-text-editor', 'elementor-clearfix' ] ); + } + + $this->add_inline_editing_attributes( 'editor', 'advanced' ); + ?> + +
    print_render_attribute_string( 'editor' ); ?>> + + + +
    + + print_unescaped_setting( 'editor' ); + } + + /** + * Render text editor widget output in the editor. + * + * Written as a Backbone JavaScript template and used to generate the live preview. + * + * @since 2.9.0 + * @access protected + */ + protected function content_template() { + ?> + <# + const shouldRenderInlineEditing = elementorFrontend.isEditMode(); + + if ( shouldRenderInlineEditing ) { + view.addRenderAttribute( 'editor', 'class', [ 'elementor-text-editor', 'elementor-clearfix' ] ); + } + + view.addInlineEditingAttributes( 'editor', 'advanced' ); + + if ( shouldRenderInlineEditing ) { #> +
    + <# } #> + + {{{ settings.editor }}} + + <# if ( shouldRenderInlineEditing ) { #> +
    + <# } #> + experiments->is_feature_active( 'nested-elements' ); + } + + /** + * Register toggle widget controls. + * + * Adds different input fields to allow the user to change and customize the widget settings. + * + * @since 3.1.0 + * @access protected + */ + protected function register_controls() { + $this->start_controls_section( + 'section_toggle', + [ + 'label' => esc_html__( 'Toggle', 'elementor' ), + ] + ); + + $repeater = new Repeater(); + + $repeater->add_control( + 'tab_title', + [ + 'label' => esc_html__( 'Title', 'elementor' ), + 'type' => Controls_Manager::TEXT, + 'default' => esc_html__( 'Toggle Title', 'elementor' ), + 'label_block' => true, + 'dynamic' => [ + 'active' => true, + ], + ] + ); + + $repeater->add_control( + 'tab_content', + [ + 'label' => esc_html__( 'Content', 'elementor' ), + 'type' => Controls_Manager::WYSIWYG, + 'default' => esc_html__( 'Toggle Content', 'elementor' ), + 'dynamic' => [ + 'active' => true, + ], + ] + ); + + if ( Plugin::$instance->widgets_manager->get_widget_types( 'nested-accordion' ) ) { + $this->add_deprecation_message( + '3.15.0', + esc_html__( + 'You are currently editing a Toggle widget in its old version. Drag a new Accordion widget onto your page to use a newer version, providing nested capabilities.', + 'elementor' + ), + 'nested-accordion' + ); + } + + $this->add_control( + 'tabs', + [ + 'label' => esc_html__( 'Toggle Items', 'elementor' ), + 'type' => Controls_Manager::REPEATER, + 'fields' => $repeater->get_controls(), + 'default' => [ + [ + 'tab_title' => esc_html__( 'Toggle #1', 'elementor' ), + 'tab_content' => esc_html__( 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut elit tellus, luctus nec ullamcorper mattis, pulvinar dapibus leo.', 'elementor' ), + ], + [ + 'tab_title' => esc_html__( 'Toggle #2', 'elementor' ), + 'tab_content' => esc_html__( 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut elit tellus, luctus nec ullamcorper mattis, pulvinar dapibus leo.', 'elementor' ), + ], + ], + 'title_field' => '{{{ tab_title }}}', + ] + ); + + $this->add_control( + 'selected_icon', + [ + 'label' => esc_html__( 'Icon', 'elementor' ), + 'type' => Controls_Manager::ICONS, + 'separator' => 'before', + 'fa4compatibility' => 'icon', + 'default' => [ + 'value' => 'fas fa-caret' . ( is_rtl() ? '-left' : '-right' ), + 'library' => 'fa-solid', + ], + 'recommended' => [ + 'fa-solid' => [ + 'chevron-down', + 'angle-down', + 'angle-double-down', + 'caret-down', + 'caret-square-down', + ], + 'fa-regular' => [ + 'caret-square-down', + ], + ], + 'label_block' => false, + 'skin' => 'inline', + ] + ); + + $this->add_control( + 'selected_active_icon', + [ + 'label' => esc_html__( 'Active Icon', 'elementor' ), + 'type' => Controls_Manager::ICONS, + 'fa4compatibility' => 'icon_active', + 'default' => [ + 'value' => 'fas fa-caret-up', + 'library' => 'fa-solid', + ], + 'recommended' => [ + 'fa-solid' => [ + 'chevron-up', + 'angle-up', + 'angle-double-up', + 'caret-up', + 'caret-square-up', + ], + 'fa-regular' => [ + 'caret-square-up', + ], + ], + 'skin' => 'inline', + 'label_block' => false, + 'condition' => [ + 'selected_icon[value]!' => '', + ], + ] + ); + + $this->add_control( + 'title_html_tag', + [ + 'label' => esc_html__( 'Title HTML Tag', 'elementor' ), + 'type' => Controls_Manager::SELECT, + 'options' => [ + 'h1' => 'H1', + 'h2' => 'H2', + 'h3' => 'H3', + 'h4' => 'H4', + 'h5' => 'H5', + 'h6' => 'H6', + 'div' => 'div', + ], + 'default' => 'div', + 'separator' => 'before', + ] + ); + + $this->add_control( + 'faq_schema', + [ + 'label' => esc_html__( 'FAQ Schema', 'elementor' ), + 'type' => Controls_Manager::SWITCHER, + 'separator' => 'before', + ] + ); + + $this->end_controls_section(); + + $this->start_controls_section( + 'section_toggle_style', + [ + 'label' => esc_html__( 'Toggle', 'elementor' ), + 'tab' => Controls_Manager::TAB_STYLE, + ] + ); + + $this->add_control( + 'border_width', + [ + 'label' => esc_html__( 'Border Width', 'elementor' ), + 'type' => Controls_Manager::SLIDER, + 'size_units' => [ 'px', '%', 'em', 'rem', 'vw', 'custom' ], + 'range' => [ + 'px' => [ + 'max' => 20, + ], + 'em' => [ + 'max' => 2, + ], + ], + 'selectors' => [ + '{{WRAPPER}} .elementor-tab-title' => 'border-width: {{SIZE}}{{UNIT}};', + '{{WRAPPER}} .elementor-tab-content' => 'border-width: {{SIZE}}{{UNIT}};', + ], + ] + ); + + $this->add_control( + 'border_color', + [ + 'label' => esc_html__( 'Border Color', 'elementor' ), + 'type' => Controls_Manager::COLOR, + 'selectors' => [ + '{{WRAPPER}} .elementor-tab-content' => 'border-bottom-color: {{VALUE}};', + '{{WRAPPER}} .elementor-tab-title' => 'border-color: {{VALUE}};', + ], + ] + ); + + $this->add_responsive_control( + 'space_between', + [ + 'label' => esc_html__( 'Space Between', 'elementor' ), + 'type' => Controls_Manager::SLIDER, + 'size_units' => [ 'px', 'em', 'rem', 'custom' ], + 'range' => [ + 'px' => [ + 'max' => 100, + ], + 'em' => [ + 'max' => 10, + ], + 'rem' => [ + 'max' => 10, + ], + ], + 'selectors' => [ + '{{WRAPPER}} .elementor-toggle-item:not(:last-child)' => 'margin-bottom: {{SIZE}}{{UNIT}}', + ], + ] + ); + + $this->add_group_control( + Group_Control_Box_Shadow::get_type(), + [ + 'name' => 'box_shadow', + 'selector' => '{{WRAPPER}} .elementor-toggle-item', + ] + ); + + $this->end_controls_section(); + + $this->start_controls_section( + 'section_toggle_style_title', + [ + 'label' => esc_html__( 'Title', 'elementor' ), + 'tab' => Controls_Manager::TAB_STYLE, + ] + ); + + $this->add_control( + 'title_background', + [ + 'label' => esc_html__( 'Background', 'elementor' ), + 'type' => Controls_Manager::COLOR, + 'selectors' => [ + '{{WRAPPER}} .elementor-tab-title' => 'background-color: {{VALUE}};', + ], + ] + ); + + // The title selector specificity is to override Theme Style + $this->add_control( + 'title_color', + [ + 'label' => esc_html__( 'Color', 'elementor' ), + 'type' => Controls_Manager::COLOR, + 'selectors' => [ + '{{WRAPPER}} .elementor-toggle-title, {{WRAPPER}} .elementor-toggle-icon' => 'color: {{VALUE}};', + '{{WRAPPER}} .elementor-toggle-icon svg' => 'fill: {{VALUE}};', + ], + 'global' => [ + 'default' => Global_Colors::COLOR_PRIMARY, + ], + ] + ); + + $this->add_control( + 'tab_active_color', + [ + 'label' => esc_html__( 'Active Color', 'elementor' ), + 'type' => Controls_Manager::COLOR, + 'selectors' => [ + '{{WRAPPER}} .elementor-tab-title.elementor-active a, {{WRAPPER}} .elementor-tab-title.elementor-active .elementor-toggle-icon' => 'color: {{VALUE}};', + ], + 'global' => [ + 'default' => Global_Colors::COLOR_ACCENT, + ], + ] + ); + + $this->add_group_control( + Group_Control_Typography::get_type(), + [ + 'name' => 'title_typography', + 'selector' => '{{WRAPPER}} .elementor-toggle-title', + 'global' => [ + 'default' => Global_Typography::TYPOGRAPHY_PRIMARY, + ], + ] + ); + + $this->add_group_control( + Group_Control_Text_Shadow::get_type(), + [ + 'name' => 'title_shadow', + 'selector' => '{{WRAPPER}} .elementor-toggle-title', + ] + ); + + $this->add_responsive_control( + 'title_padding', + [ + 'label' => esc_html__( 'Padding', 'elementor' ), + 'type' => Controls_Manager::DIMENSIONS, + 'size_units' => [ 'px', '%', 'em', 'rem', 'vw', 'custom' ], + 'selectors' => [ + '{{WRAPPER}} .elementor-tab-title' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};', + ], + ] + ); + + $this->end_controls_section(); + + $this->start_controls_section( + 'section_toggle_style_icon', + [ + 'label' => esc_html__( 'Icon', 'elementor' ), + 'tab' => Controls_Manager::TAB_STYLE, + 'condition' => [ + 'selected_icon[value]!' => '', + ], + ] + ); + + $this->add_control( + 'icon_align', + [ + 'label' => esc_html__( 'Alignment', 'elementor' ), + 'type' => Controls_Manager::CHOOSE, + 'options' => [ + 'left' => [ + 'title' => esc_html__( 'Start', 'elementor' ), + 'icon' => 'eicon-h-align-left', + ], + 'right' => [ + 'title' => esc_html__( 'End', 'elementor' ), + 'icon' => 'eicon-h-align-right', + ], + ], + 'default' => is_rtl() ? 'right' : 'left', + 'toggle' => false, + ] + ); + + $this->add_control( + 'icon_color', + [ + 'label' => esc_html__( 'Color', 'elementor' ), + 'type' => Controls_Manager::COLOR, + 'selectors' => [ + '{{WRAPPER}} .elementor-tab-title .elementor-toggle-icon i:before' => 'color: {{VALUE}};', + '{{WRAPPER}} .elementor-tab-title .elementor-toggle-icon svg' => 'fill: {{VALUE}};', + ], + ] + ); + + $this->add_control( + 'icon_active_color', + [ + 'label' => esc_html__( 'Active Color', 'elementor' ), + 'type' => Controls_Manager::COLOR, + 'selectors' => [ + '{{WRAPPER}} .elementor-tab-title.elementor-active .elementor-toggle-icon i:before' => 'color: {{VALUE}};', + '{{WRAPPER}} .elementor-tab-title.elementor-active .elementor-toggle-icon svg' => 'fill: {{VALUE}};', + ], + ] + ); + + $this->add_responsive_control( + 'icon_space', + [ + 'label' => esc_html__( 'Spacing', 'elementor' ), + 'type' => Controls_Manager::SLIDER, + 'size_units' => [ 'px', 'em', 'rem', 'custom' ], + 'range' => [ + 'px' => [ + 'max' => 100, + ], + 'em' => [ + 'max' => 10, + ], + 'rem' => [ + 'max' => 10, + ], + ], + 'selectors' => [ + '{{WRAPPER}} .elementor-toggle-icon.elementor-toggle-icon-left' => 'margin-right: {{SIZE}}{{UNIT}};', + '{{WRAPPER}} .elementor-toggle-icon.elementor-toggle-icon-right' => 'margin-left: {{SIZE}}{{UNIT}};', + ], + ] + ); + + $this->end_controls_section(); + + $this->start_controls_section( + 'section_toggle_style_content', + [ + 'label' => esc_html__( 'Content', 'elementor' ), + 'tab' => Controls_Manager::TAB_STYLE, + ] + ); + + $this->add_control( + 'content_background_color', + [ + 'label' => esc_html__( 'Background', 'elementor' ), + 'type' => Controls_Manager::COLOR, + 'selectors' => [ + '{{WRAPPER}} .elementor-tab-content' => 'background-color: {{VALUE}};', + ], + ] + ); + + $this->add_control( + 'content_color', + [ + 'label' => esc_html__( 'Color', 'elementor' ), + 'type' => Controls_Manager::COLOR, + 'selectors' => [ + '{{WRAPPER}} .elementor-tab-content' => 'color: {{VALUE}};', + ], + 'global' => [ + 'default' => Global_Colors::COLOR_TEXT, + ], + ] + ); + + $this->add_group_control( + Group_Control_Typography::get_type(), + [ + 'name' => 'content_typography', + 'selector' => '{{WRAPPER}} .elementor-tab-content', + 'global' => [ + 'default' => Global_Typography::TYPOGRAPHY_TEXT, + ], + ] + ); + + $this->add_group_control( + Group_Control_Text_Shadow::get_type(), + [ + 'name' => 'content_shadow', + 'selector' => '{{WRAPPER}} .elementor-tab-content', + ] + ); + + $this->add_responsive_control( + 'content_padding', + [ + 'label' => esc_html__( 'Padding', 'elementor' ), + 'type' => Controls_Manager::DIMENSIONS, + 'size_units' => [ 'px', '%', 'em', 'rem', 'vw', 'custom' ], + 'selectors' => [ + '{{WRAPPER}} .elementor-tab-content' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};', + ], + ] + ); + + $this->end_controls_section(); + } + + /** + * Render toggle widget output on the frontend. + * + * Written in PHP and used to generate the final HTML. + * + * @since 1.0.0 + * @access protected + */ + protected function render() { + $settings = $this->get_settings_for_display(); + + $id_int = substr( $this->get_id_int(), 0, 3 ); + $migrated = isset( $settings['__fa4_migrated']['selected_icon'] ); + + if ( ! isset( $settings['icon'] ) && ! Icons_Manager::is_migration_allowed() ) { + // @todo: remove when deprecated + // added as bc in 2.6 + // add old default + $settings['icon'] = 'fa fa-caret' . ( is_rtl() ? '-left' : '-right' ); + $settings['icon_active'] = 'fa fa-caret-up'; + $settings['icon_align'] = $this->get_settings( 'icon_align' ); + } + + $is_new = empty( $settings['icon'] ) && Icons_Manager::is_migration_allowed(); + $has_icon = ( ! $is_new || ! empty( $settings['selected_icon']['value'] ) ); + + ?> +
    + $item ) : + $tab_count = $index + 1; + + $tab_title_setting_key = $this->get_repeater_setting_key( 'tab_title', 'tabs', $index ); + + $tab_content_setting_key = $this->get_repeater_setting_key( 'tab_content', 'tabs', $index ); + + $this->add_render_attribute( $tab_title_setting_key, [ + 'id' => 'elementor-tab-title-' . $id_int . $tab_count, + 'class' => [ 'elementor-tab-title' ], + 'data-tab' => $tab_count, + 'role' => 'button', + 'aria-controls' => 'elementor-tab-content-' . $id_int . $tab_count, + 'aria-expanded' => 'false', + ] ); + + $this->add_render_attribute( $tab_content_setting_key, [ + 'id' => 'elementor-tab-content-' . $id_int . $tab_count, + 'class' => [ 'elementor-tab-content', 'elementor-clearfix' ], + 'data-tab' => $tab_count, + 'role' => 'region', + 'aria-labelledby' => 'elementor-tab-title-' . $id_int . $tab_count, + ] ); + + $this->add_inline_editing_attributes( $tab_content_setting_key, 'advanced' ); + ?> +
    + < print_render_attribute_string( $tab_title_setting_key ); ?>> + + + + print_unescaped_setting( 'tab_title', 'tabs', $index ); ?> + > + +
    print_render_attribute_string( $tab_content_setting_key ); ?>>parse_text_editor( $item['tab_content'] ) ); ?>
    +
    + + 'https://schema.org', + '@type' => 'FAQPage', + 'mainEntity' => [], + ]; + + foreach ( $settings['tabs'] as $index => $item ) { + $json['mainEntity'][] = [ + '@type' => 'Question', + 'name' => wp_strip_all_tags( $item['tab_title'] ), + 'acceptedAnswer' => [ + '@type' => 'Answer', + 'text' => $this->parse_text_editor( $item['tab_content'] ), + ], + ]; + } + ?> + + +
    + +
    + <# + if ( settings.tabs ) { + var tabindex = view.getIDInt().toString().substr( 0, 3 ), + iconHTML = elementor.helpers.renderIcon( view, settings.selected_icon, {}, 'i' , 'object' ), + iconActiveHTML = elementor.helpers.renderIcon( view, settings.selected_active_icon, {}, 'i' , 'object' ), + migrated = elementor.helpers.isIconMigrated( settings, 'selected_icon' ), + titleHTMLTag = elementor.helpers.validateHTMLTag( settings.title_html_tag ); + + _.each( settings.tabs, function( item, index ) { + var tabCount = index + 1, + tabTitleKey = view.getRepeaterSettingKey( 'tab_title', 'tabs', index ), + tabContentKey = view.getRepeaterSettingKey( 'tab_content', 'tabs', index ); + + view.addRenderAttribute( tabTitleKey, { + 'id': 'elementor-tab-title-' + tabindex + tabCount, + 'class': [ 'elementor-tab-title' ], + 'data-tab': tabCount, + 'role': 'button', + 'aria-controls': 'elementor-tab-content-' + tabindex + tabCount, + 'aria-expanded': 'false', + } ); + + view.addRenderAttribute( tabContentKey, { + 'id': 'elementor-tab-content-' + tabindex + tabCount, + 'class': [ 'elementor-tab-content', 'elementor-clearfix' ], + 'data-tab': tabCount, + 'role': 'region', + 'aria-labelledby': 'elementor-tab-title-' + tabindex + tabCount + } ); + + view.addInlineEditingAttributes( tabContentKey, 'advanced' ); + #> +
    + <{{{ titleHTMLTag }}} {{{ view.getRenderAttributeString( tabTitleKey ) }}}> + <# if ( settings.icon || settings.selected_icon ) { #> + + <# } #> + {{{ item.tab_title }}} + +
    {{{ item.tab_content }}}
    +
    + <# + } ); + } #> +
    + esc_html__( 'Extra Small', 'elementor' ), + 'sm' => esc_html__( 'Small', 'elementor' ), + 'md' => esc_html__( 'Medium', 'elementor' ), + 'lg' => esc_html__( 'Large', 'elementor' ), + 'xl' => esc_html__( 'Extra Large', 'elementor' ), + ]; + } + + /** + * @since 3.4.0 + * + * @param array $args { + * An array of values for the button adjustments. + * + * @type array $section_condition Set of conditions to hide the controls. + * @type string $button_text Text contained in button. + * @type string $text_control_label Name for the label of the text control. + * @type array $icon_exclude_inline_options Set of icon types to exclude from icon controls. + * } + */ + protected function register_button_content_controls( $args = [] ) { + $default_args = [ + 'section_condition' => [], + 'button_default_text' => esc_html__( 'Click here', 'elementor' ), + 'text_control_label' => esc_html__( 'Text', 'elementor' ), + 'icon_exclude_inline_options' => [], + ]; + + $args = wp_parse_args( $args, $default_args ); + + $this->add_control( + 'button_type', + [ + 'label' => esc_html__( 'Type', 'elementor' ), + 'type' => Controls_Manager::SELECT, + 'default' => '', + 'options' => [ + '' => esc_html__( 'Default', 'elementor' ), + 'info' => esc_html__( 'Info', 'elementor' ), + 'success' => esc_html__( 'Success', 'elementor' ), + 'warning' => esc_html__( 'Warning', 'elementor' ), + 'danger' => esc_html__( 'Danger', 'elementor' ), + ], + 'prefix_class' => 'elementor-button-', + 'condition' => $args['section_condition'], + ] + ); + + $this->add_control( + 'text', + [ + 'label' => $args['text_control_label'], + 'type' => Controls_Manager::TEXT, + 'dynamic' => [ + 'active' => true, + ], + 'default' => $args['button_default_text'], + 'placeholder' => $args['button_default_text'], + 'condition' => $args['section_condition'], + ] + ); + + $this->add_control( + 'link', + [ + 'label' => esc_html__( 'Link', 'elementor' ), + 'type' => Controls_Manager::URL, + 'dynamic' => [ + 'active' => true, + ], + 'default' => [ + 'url' => '#', + ], + 'condition' => $args['section_condition'], + ] + ); + + $this->add_control( + 'size', + [ + 'label' => esc_html__( 'Size', 'elementor' ), + 'type' => Controls_Manager::SELECT, + 'default' => 'sm', + 'options' => self::get_button_sizes(), + 'style_transfer' => true, + 'condition' => array_merge( $args['section_condition'], [ 'size[value]!' => 'sm' ] ), // a workaround to hide the control, unless it's in use (not default). + ] + ); + + $this->add_control( + 'selected_icon', + [ + 'label' => esc_html__( 'Icon', 'elementor' ), + 'type' => Controls_Manager::ICONS, + 'fa4compatibility' => 'icon', + 'skin' => 'inline', + 'label_block' => false, + 'condition' => $args['section_condition'], + 'icon_exclude_inline_options' => $args['icon_exclude_inline_options'], + ] + ); + + $this->add_control( + 'icon_align', + [ + 'label' => esc_html__( 'Icon Position', 'elementor' ), + 'type' => Controls_Manager::CHOOSE, + 'default' => 'left', + 'options' => [ + 'left' => [ + 'title' => esc_html__( 'Left', 'elementor' ), + 'icon' => 'eicon-h-align-left', + ], + 'right' => [ + 'title' => esc_html__( 'Right', 'elementor' ), + 'icon' => 'eicon-h-align-right', + ], + ], + 'condition' => array_merge( $args['section_condition'], [ 'selected_icon[value]!' => '' ] ), + ] + ); + + $this->add_control( + 'icon_indent', + [ + 'label' => esc_html__( 'Icon Spacing', 'elementor' ), + 'type' => Controls_Manager::SLIDER, + 'size_units' => [ 'px', 'em', 'rem', 'custom' ], + 'range' => [ + 'px' => [ + 'max' => 50, + ], + 'em' => [ + 'max' => 5, + ], + 'rem' => [ + 'max' => 5, + ], + ], + 'selectors' => [ + '{{WRAPPER}} .elementor-button .elementor-align-icon-right' => 'margin-left: {{SIZE}}{{UNIT}};', + '{{WRAPPER}} .elementor-button .elementor-align-icon-left' => 'margin-right: {{SIZE}}{{UNIT}};', + ], + 'condition' => array_merge( $args['section_condition'], [ 'selected_icon[value]!' => '' ] ), + ] + ); + + $this->add_control( + 'button_css_id', + [ + 'label' => esc_html__( 'Button ID', 'elementor' ), + 'type' => Controls_Manager::TEXT, + 'dynamic' => [ + 'active' => true, + ], + 'ai' => [ + 'active' => false, + ], + 'default' => '', + 'title' => esc_html__( 'Add your custom id WITHOUT the Pound key. e.g: my-id', 'elementor' ), + 'description' => sprintf( + esc_html__( 'Please make sure the ID is unique and not used elsewhere on the page this form is displayed. This field allows %1$sA-z 0-9%2$s & underscore chars without spaces.', 'elementor' ), + '', + '' + ), + 'separator' => 'before', + 'condition' => $args['section_condition'], + ] + ); + } + + /** + * @since 3.4.0 + * + * @param array $args { + * An array of values for the button adjustments. + * + * @type array $section_condition Set of conditions to hide the controls. + * @type string $alignment_default Default alignment for the button. + * @type string $alignment_control_prefix_class Prefix class name for the button alignment control. + * } + */ + protected function register_button_style_controls( $args = [] ) { + $default_args = [ + 'section_condition' => [], + 'alignment_default' => '', + 'alignment_control_prefix_class' => 'elementor%s-align-', + ]; + + $args = wp_parse_args( $args, $default_args ); + + $this->add_responsive_control( + 'align', + [ + 'label' => esc_html__( 'Alignment', 'elementor' ), + 'type' => Controls_Manager::CHOOSE, + 'options' => [ + 'left' => [ + 'title' => esc_html__( 'Left', 'elementor' ), + 'icon' => 'eicon-text-align-left', + ], + 'center' => [ + 'title' => esc_html__( 'Center', 'elementor' ), + 'icon' => 'eicon-text-align-center', + ], + 'right' => [ + 'title' => esc_html__( 'Right', 'elementor' ), + 'icon' => 'eicon-text-align-right', + ], + 'justify' => [ + 'title' => esc_html__( 'Justified', 'elementor' ), + 'icon' => 'eicon-text-align-justify', + ], + ], + 'prefix_class' => $args['alignment_control_prefix_class'], + 'default' => $args['alignment_default'], + 'condition' => $args['section_condition'], + ] + ); + + $this->add_group_control( + Group_Control_Typography::get_type(), + [ + 'name' => 'typography', + 'global' => [ + 'default' => Global_Typography::TYPOGRAPHY_ACCENT, + ], + 'selector' => '{{WRAPPER}} .elementor-button', + 'condition' => $args['section_condition'], + ] + ); + + $this->add_group_control( + Group_Control_Text_Shadow::get_type(), + [ + 'name' => 'text_shadow', + 'selector' => '{{WRAPPER}} .elementor-button', + 'condition' => $args['section_condition'], + ] + ); + + $this->start_controls_tabs( 'tabs_button_style', [ + 'condition' => $args['section_condition'], + ] ); + + $this->start_controls_tab( + 'tab_button_normal', + [ + 'label' => esc_html__( 'Normal', 'elementor' ), + 'condition' => $args['section_condition'], + ] + ); + + $this->add_control( + 'button_text_color', + [ + 'label' => esc_html__( 'Text Color', 'elementor' ), + 'type' => Controls_Manager::COLOR, + 'default' => '', + 'selectors' => [ + '{{WRAPPER}} .elementor-button' => 'fill: {{VALUE}}; color: {{VALUE}};', + ], + 'condition' => $args['section_condition'], + ] + ); + + $this->add_group_control( + Group_Control_Background::get_type(), + [ + 'name' => 'background', + 'types' => [ 'classic', 'gradient' ], + 'exclude' => [ 'image' ], + 'selector' => '{{WRAPPER}} .elementor-button', + 'fields_options' => [ + 'background' => [ + 'default' => 'classic', + ], + 'color' => [ + 'global' => [ + 'default' => Global_Colors::COLOR_ACCENT, + ], + ], + ], + 'condition' => $args['section_condition'], + ] + ); + + $this->end_controls_tab(); + + $this->start_controls_tab( + 'tab_button_hover', + [ + 'label' => esc_html__( 'Hover', 'elementor' ), + 'condition' => $args['section_condition'], + ] + ); + + $this->add_control( + 'hover_color', + [ + 'label' => esc_html__( 'Text Color', 'elementor' ), + 'type' => Controls_Manager::COLOR, + 'selectors' => [ + '{{WRAPPER}} .elementor-button:hover, {{WRAPPER}} .elementor-button:focus' => 'color: {{VALUE}};', + '{{WRAPPER}} .elementor-button:hover svg, {{WRAPPER}} .elementor-button:focus svg' => 'fill: {{VALUE}};', + ], + 'condition' => $args['section_condition'], + ] + ); + + $this->add_group_control( + Group_Control_Background::get_type(), + [ + 'name' => 'button_background_hover', + 'types' => [ 'classic', 'gradient' ], + 'exclude' => [ 'image' ], + 'selector' => '{{WRAPPER}} .elementor-button:hover, {{WRAPPER}} .elementor-button:focus', + 'fields_options' => [ + 'background' => [ + 'default' => 'classic', + ], + ], + 'condition' => $args['section_condition'], + ] + ); + + $this->add_control( + 'button_hover_border_color', + [ + 'label' => esc_html__( 'Border Color', 'elementor' ), + 'type' => Controls_Manager::COLOR, + 'condition' => [ + 'border_border!' => '', + ], + 'selectors' => [ + '{{WRAPPER}} .elementor-button:hover, {{WRAPPER}} .elementor-button:focus' => 'border-color: {{VALUE}};', + ], + 'condition' => $args['section_condition'], + ] + ); + + $this->add_control( + 'button_hover_transition_duration', + [ + 'label' => esc_html__( 'Transition Duration', 'elementor' ), + 'type' => Controls_Manager::SLIDER, + 'size_units' => [ 's', 'ms', 'custom' ], + 'default' => [ + 'unit' => 's', + ], + 'selectors' => [ + '{{WRAPPER}} .elementor-button' => 'transition-duration: {{SIZE}}{{UNIT}};', + ], + ] + ); + + $this->add_control( + 'hover_animation', + [ + 'label' => esc_html__( 'Hover Animation', 'elementor' ), + 'type' => Controls_Manager::HOVER_ANIMATION, + 'condition' => $args['section_condition'], + ] + ); + + $this->end_controls_tab(); + + $this->end_controls_tabs(); + + $this->add_group_control( + Group_Control_Border::get_type(), + [ + 'name' => 'border', + 'selector' => '{{WRAPPER}} .elementor-button', + 'separator' => 'before', + 'condition' => $args['section_condition'], + ] + ); + + $this->add_responsive_control( + 'border_radius', + [ + 'label' => esc_html__( 'Border Radius', 'elementor' ), + 'type' => Controls_Manager::DIMENSIONS, + 'size_units' => [ 'px', '%', 'em', 'rem', 'custom' ], + 'selectors' => [ + '{{WRAPPER}} .elementor-button' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};', + ], + 'condition' => $args['section_condition'], + ] + ); + + $this->add_group_control( + Group_Control_Box_Shadow::get_type(), + [ + 'name' => 'button_box_shadow', + 'selector' => '{{WRAPPER}} .elementor-button', + 'condition' => $args['section_condition'], + ] + ); + + $this->add_responsive_control( + 'text_padding', + [ + 'label' => esc_html__( 'Padding', 'elementor' ), + 'type' => Controls_Manager::DIMENSIONS, + 'size_units' => [ 'px', '%', 'em', 'rem', 'vw', 'custom' ], + 'selectors' => [ + '{{WRAPPER}} .elementor-button' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};', + ], + 'separator' => 'before', + 'condition' => $args['section_condition'], + ] + ); + } + + /** + * Render button widget output on the frontend. + * + * Written in PHP and used to generate the final HTML. + * + * @param \Elementor\Widget_Base|null $instance + * + * @since 3.4.0 + * @access protected + */ + protected function render_button( Widget_Base $instance = null ) { + if ( empty( $instance ) ) { + $instance = $this; + } + + $settings = $instance->get_settings_for_display(); + + $instance->add_render_attribute( 'wrapper', 'class', 'elementor-button-wrapper' ); + + $instance->add_render_attribute( 'button', 'class', 'elementor-button' ); + + if ( ! empty( $settings['link']['url'] ) ) { + $instance->add_link_attributes( 'button', $settings['link'] ); + $instance->add_render_attribute( 'button', 'class', 'elementor-button-link' ); + } else { + $instance->add_render_attribute( 'button', 'role', 'button' ); + } + + if ( ! empty( $settings['button_css_id'] ) ) { + $instance->add_render_attribute( 'button', 'id', $settings['button_css_id'] ); + } + + if ( ! empty( $settings['size'] ) ) { + $instance->add_render_attribute( 'button', 'class', 'elementor-size-' . $settings['size'] ); + } else { + $instance->add_render_attribute( 'button', 'class', 'elementor-size-sm' ); // BC, to make sure the class is always present + } + + if ( ! empty( $settings['hover_animation'] ) ) { + $instance->add_render_attribute( 'button', 'class', 'elementor-animation-' . $settings['hover_animation'] ); + } + ?> + + + <# + view.addRenderAttribute( 'wrapper', 'class', 'elementor-button-wrapper' ); + + view.addRenderAttribute( 'button', 'class', 'elementor-button' ); + + if ( '' !== settings.link.url ) { + view.addRenderAttribute( 'button', 'href', settings.link.url ); + view.addRenderAttribute( 'button', 'class', 'elementor-button-link' ); + } else { + view.addRenderAttribute( 'button', 'role', 'button' ); + } + + if ( '' !== settings.button_css_id ) { + view.addRenderAttribute( 'button', 'id', settings.button_css_id ); + } + + if ( '' !== settings.size ) { + view.addRenderAttribute( 'button', 'class', 'elementor-size-' + settings.size ); + } + + if ( '' !== settings.hover_animation ) { + view.addRenderAttribute( 'button', 'class', 'elementor-animation-' + settings.hover_animation ); + } + + view.addRenderAttribute( 'text', 'class', 'elementor-button-text' ); + view.addInlineEditingAttributes( 'text', 'none' ); + var iconHTML = elementor.helpers.renderIcon( view, settings.selected_icon, { 'aria-hidden': true }, 'i' , 'object' ), + migrated = elementor.helpers.isIconMigrated( settings, 'selected_icon' ); + #> + + get_settings_for_display(); + + $migrated = isset( $settings['__fa4_migrated']['selected_icon'] ); + $is_new = empty( $settings['icon'] ) && Icons_Manager::is_migration_allowed(); + + if ( ! $is_new && empty( $settings['icon_align'] ) ) { + // @todo: remove when deprecated + // added as bc in 2.6 + //old default + $settings['icon_align'] = $instance->get_settings( 'icon_align' ); + } + + $instance->add_render_attribute( [ + 'content-wrapper' => [ + 'class' => 'elementor-button-content-wrapper', + ], + 'icon-align' => [ + 'class' => [ + 'elementor-button-icon', + 'elementor-align-icon-' . $settings['icon_align'], + ], + ], + 'text' => [ + 'class' => 'elementor-button-text', + ], + ] ); + + // TODO: replace the protected with public + //$instance->add_inline_editing_attributes( 'text', 'none' ); + ?> + print_render_attribute_string( 'content-wrapper' ); ?>> + + print_render_attribute_string( 'icon-align' ); ?>> + 'true' ] ); + else : ?> + + + + + print_render_attribute_string( 'text' ); ?>>print_unescaped_setting( 'text' ); ?> + + ! Utils::has_pro(), + 'image' => esc_url( ELEMENTOR_ASSETS_URL . 'images/go-pro.svg' ), + 'image_alt' => esc_attr__( 'Upgrade', 'elementor' ), + 'title' => esc_html__( "Grab your visitors' attention", 'elementor' ), + 'description' => esc_html__( 'Get the Video Playlist widget and grow your toolbox with Elementor Pro.', 'elementor' ), + 'upgrade_url' => esc_url( 'https://go.elementor.com/go-pro-video-widget/' ), + 'upgrade_text' => esc_html__( 'Upgrade Now', 'elementor' ), + ]; + } + + /** + * Register video widget controls. + * + * Adds different input fields to allow the user to change and customize the widget settings. + * + * @since 3.1.0 + * @access protected + */ + protected function register_controls() { + $this->start_controls_section( + 'section_video', + [ + 'label' => esc_html__( 'Video', 'elementor' ), + ] + ); + + $this->add_control( + 'video_type', + [ + 'label' => esc_html__( 'Source', 'elementor' ), + 'type' => Controls_Manager::SELECT, + 'default' => 'youtube', + 'options' => [ + 'youtube' => esc_html__( 'YouTube', 'elementor' ), + 'vimeo' => esc_html__( 'Vimeo', 'elementor' ), + 'dailymotion' => esc_html__( 'Dailymotion', 'elementor' ), + 'videopress' => esc_html__( 'VideoPress', 'elementor' ), + 'hosted' => esc_html__( 'Self Hosted', 'elementor' ), + ], + 'frontend_available' => true, + ] + ); + + $this->add_control( + 'youtube_url', + [ + 'label' => esc_html__( 'Link', 'elementor' ), + 'type' => Controls_Manager::TEXT, + 'dynamic' => [ + 'active' => true, + 'categories' => [ + TagsModule::POST_META_CATEGORY, + TagsModule::URL_CATEGORY, + ], + ], + 'placeholder' => esc_html__( 'Enter your URL', 'elementor' ) . ' (YouTube)', + 'default' => 'https://www.youtube.com/watch?v=XHOmBV4js_E', + 'label_block' => true, + 'condition' => [ + 'video_type' => 'youtube', + ], + 'ai' => [ + 'active' => false, + ], + 'frontend_available' => true, + ] + ); + + $this->add_control( + 'vimeo_url', + [ + 'label' => esc_html__( 'Link', 'elementor' ), + 'type' => Controls_Manager::TEXT, + 'dynamic' => [ + 'active' => true, + 'categories' => [ + TagsModule::POST_META_CATEGORY, + TagsModule::URL_CATEGORY, + ], + ], + 'placeholder' => esc_html__( 'Enter your URL', 'elementor' ) . ' (Vimeo)', + 'default' => 'https://vimeo.com/235215203', + 'label_block' => true, + 'condition' => [ + 'video_type' => 'vimeo', + ], + 'ai' => [ + 'active' => false, + ], + ] + ); + + $this->add_control( + 'dailymotion_url', + [ + 'label' => esc_html__( 'Link', 'elementor' ), + 'type' => Controls_Manager::TEXT, + 'dynamic' => [ + 'active' => true, + 'categories' => [ + TagsModule::POST_META_CATEGORY, + TagsModule::URL_CATEGORY, + ], + ], + 'placeholder' => esc_html__( 'Enter your URL', 'elementor' ) . ' (Dailymotion)', + 'default' => 'https://www.dailymotion.com/video/x6tqhqb', + 'label_block' => true, + 'condition' => [ + 'video_type' => 'dailymotion', + ], + 'ai' => [ + 'active' => false, + ], + ] + ); + + $this->add_control( + 'insert_url', + [ + 'label' => esc_html__( 'External URL', 'elementor' ), + 'type' => Controls_Manager::SWITCHER, + 'condition' => [ + 'video_type' => [ 'hosted', 'videopress' ], + ], + ] + ); + + $this->add_control( + 'hosted_url', + [ + 'label' => esc_html__( 'Choose Video File', 'elementor' ), + 'type' => Controls_Manager::MEDIA, + 'dynamic' => [ + 'active' => true, + 'categories' => [ + TagsModule::MEDIA_CATEGORY, + ], + ], + 'media_types' => [ + 'video', + ], + 'condition' => [ + 'video_type' => [ 'hosted', 'videopress' ], + 'insert_url' => '', + ], + ] + ); + + $this->add_control( + 'external_url', + [ + 'label' => esc_html__( 'URL', 'elementor' ), + 'type' => Controls_Manager::URL, + 'autocomplete' => false, + 'options' => false, + 'label_block' => true, + 'show_label' => false, + 'dynamic' => [ + 'active' => true, + 'categories' => [ + TagsModule::POST_META_CATEGORY, + TagsModule::URL_CATEGORY, + ], + ], + 'placeholder' => esc_html__( 'Enter your URL', 'elementor' ), + 'condition' => [ + 'video_type' => 'hosted', + 'insert_url' => 'yes', + ], + ] + ); + + $this->add_control( + 'videopress_url', + [ + 'label' => esc_html__( 'URL', 'elementor' ), + 'type' => Controls_Manager::TEXT, + 'label_block' => true, + 'show_label' => false, + 'default' => 'https://videopress.com/v/ZCAOzTNk', + 'dynamic' => [ + 'active' => true, + 'categories' => [ + TagsModule::POST_META_CATEGORY, + TagsModule::URL_CATEGORY, + ], + ], + 'placeholder' => esc_html__( 'VideoPress URL', 'elementor' ), + 'ai' => [ + 'active' => false, + ], + 'condition' => [ + 'video_type' => 'videopress', + 'insert_url' => 'yes', + ], + + ] + ); + + $this->add_control( + 'start', + [ + 'label' => esc_html__( 'Start Time', 'elementor' ), + 'type' => Controls_Manager::NUMBER, + 'description' => esc_html__( 'Specify a start time (in seconds)', 'elementor' ), + 'frontend_available' => true, + 'separator' => 'before', + ] + ); + + $this->add_control( + 'end', + [ + 'label' => esc_html__( 'End Time', 'elementor' ), + 'type' => Controls_Manager::NUMBER, + 'description' => esc_html__( 'Specify an end time (in seconds)', 'elementor' ), + 'condition' => [ + 'video_type' => [ 'youtube', 'hosted' ], + ], + 'frontend_available' => true, + ] + ); + + $this->add_control( + 'video_options', + [ + 'label' => esc_html__( 'Video Options', 'elementor' ), + 'type' => Controls_Manager::HEADING, + 'separator' => 'before', + ] + ); + + $this->add_control( + 'autoplay', + [ + 'label' => esc_html__( 'Autoplay', 'elementor' ), + 'type' => Controls_Manager::SWITCHER, + 'frontend_available' => true, + 'conditions' => [ + 'relation' => 'or', + 'terms' => [ + [ + 'name' => 'show_image_overlay', + 'value' => '', + ], + [ + 'name' => 'image_overlay[url]', + 'value' => '', + ], + ], + ], + ] + ); + + $this->add_control( + 'play_on_mobile', + [ + 'label' => esc_html__( 'Play On Mobile', 'elementor' ), + 'type' => Controls_Manager::SWITCHER, + 'condition' => [ + 'autoplay' => 'yes', + ], + 'frontend_available' => true, + ] + ); + + $this->add_control( + 'mute', + [ + 'label' => esc_html__( 'Mute', 'elementor' ), + 'type' => Controls_Manager::SWITCHER, + 'frontend_available' => true, + ] + ); + + $this->add_control( + 'loop', + [ + 'label' => esc_html__( 'Loop', 'elementor' ), + 'type' => Controls_Manager::SWITCHER, + 'condition' => [ + 'video_type!' => 'dailymotion', + ], + 'frontend_available' => true, + ] + ); + + $this->add_control( + 'controls', + [ + 'label' => esc_html__( 'Player Controls', 'elementor' ), + 'type' => Controls_Manager::SWITCHER, + 'label_off' => esc_html__( 'Hide', 'elementor' ), + 'label_on' => esc_html__( 'Show', 'elementor' ), + 'default' => 'yes', + 'condition' => [ + 'video_type!' => 'vimeo', + ], + 'frontend_available' => true, + ] + ); + + $this->add_control( + 'showinfo', + [ + 'label' => esc_html__( 'Video Info', 'elementor' ), + 'type' => Controls_Manager::SWITCHER, + 'label_off' => esc_html__( 'Hide', 'elementor' ), + 'label_on' => esc_html__( 'Show', 'elementor' ), + 'default' => 'yes', + 'condition' => [ + 'video_type' => [ 'dailymotion' ], + ], + ] + ); + + $this->add_control( + 'modestbranding', + [ + 'label' => esc_html__( 'Modest Branding', 'elementor' ), + 'type' => Controls_Manager::SWITCHER, + 'condition' => [ + 'video_type' => [ 'youtube' ], + 'controls' => 'yes', + ], + 'frontend_available' => true, + ] + ); + + $this->add_control( + 'logo', + [ + 'label' => esc_html__( 'Logo', 'elementor' ), + 'type' => Controls_Manager::SWITCHER, + 'label_off' => esc_html__( 'Hide', 'elementor' ), + 'label_on' => esc_html__( 'Show', 'elementor' ), + 'default' => 'yes', + 'condition' => [ + 'video_type' => [ 'dailymotion' ], + ], + ] + ); + + // YouTube. + $this->add_control( + 'yt_privacy', + [ + 'label' => esc_html__( 'Privacy Mode', 'elementor' ), + 'type' => Controls_Manager::SWITCHER, + 'description' => esc_html__( 'When you turn on privacy mode, YouTube/Vimeo won\'t store information about visitors on your website unless they play the video.', 'elementor' ), + 'condition' => [ + 'video_type' => [ 'youtube', 'vimeo' ], + ], + 'frontend_available' => true, + ] + ); + + $this->add_control( + 'lazy_load', + [ + 'label' => esc_html__( 'Lazy Load', 'elementor' ), + 'type' => Controls_Manager::SWITCHER, + 'conditions' => [ + 'relation' => 'or', + 'terms' => [ + [ + 'name' => 'video_type', + 'operator' => '===', + 'value' => 'youtube', + ], + [ + 'relation' => 'and', + 'terms' => [ + [ + 'name' => 'show_image_overlay', + 'operator' => '===', + 'value' => 'yes', + ], + [ + 'name' => 'video_type', + 'operator' => '!==', + 'value' => 'hosted', + ], + ], + ], + ], + ], + 'frontend_available' => true, + ] + ); + + $this->add_control( + 'rel', + [ + 'label' => esc_html__( 'Suggested Videos', 'elementor' ), + 'type' => Controls_Manager::SELECT, + 'options' => [ + '' => esc_html__( 'Current Video Channel', 'elementor' ), + 'yes' => esc_html__( 'Any Video', 'elementor' ), + ], + 'condition' => [ + 'video_type' => 'youtube', + ], + ] + ); + + // Vimeo. + $this->add_control( + 'vimeo_title', + [ + 'label' => esc_html__( 'Intro Title', 'elementor' ), + 'type' => Controls_Manager::SWITCHER, + 'label_off' => esc_html__( 'Hide', 'elementor' ), + 'label_on' => esc_html__( 'Show', 'elementor' ), + 'default' => 'yes', + 'condition' => [ + 'video_type' => 'vimeo', + ], + ] + ); + + $this->add_control( + 'vimeo_portrait', + [ + 'label' => esc_html__( 'Intro Portrait', 'elementor' ), + 'type' => Controls_Manager::SWITCHER, + 'label_off' => esc_html__( 'Hide', 'elementor' ), + 'label_on' => esc_html__( 'Show', 'elementor' ), + 'default' => 'yes', + 'condition' => [ + 'video_type' => 'vimeo', + ], + ] + ); + + $this->add_control( + 'vimeo_byline', + [ + 'label' => esc_html__( 'Intro Byline', 'elementor' ), + 'type' => Controls_Manager::SWITCHER, + 'label_off' => esc_html__( 'Hide', 'elementor' ), + 'label_on' => esc_html__( 'Show', 'elementor' ), + 'default' => 'yes', + 'condition' => [ + 'video_type' => 'vimeo', + ], + ] + ); + + $this->add_control( + 'color', + [ + 'label' => esc_html__( 'Controls Color', 'elementor' ), + 'type' => Controls_Manager::COLOR, + 'default' => '', + 'condition' => [ + 'video_type' => [ 'vimeo', 'dailymotion' ], + ], + ] + ); + + $this->add_control( + 'download_button', + [ + 'label' => esc_html__( 'Download Button', 'elementor' ), + 'type' => Controls_Manager::SWITCHER, + 'label_off' => esc_html__( 'Hide', 'elementor' ), + 'label_on' => esc_html__( 'Show', 'elementor' ), + 'condition' => [ + 'video_type' => 'hosted', + ], + ] + ); + + $this->add_control( + 'preload', + [ + 'label' => esc_html__( 'Preload', 'elementor' ), + 'type' => Controls_Manager::SELECT, + 'options' => [ + 'metadata' => esc_html__( 'Metadata', 'elementor' ), + 'auto' => esc_html__( 'Auto', 'elementor' ), + 'none' => esc_html__( 'None', 'elementor' ), + ], + 'description' => sprintf( + '%1$s %2$s', + esc_html__( 'Preload attribute lets you specify how the video should be loaded when the page loads.', 'elementor' ), + esc_html__( 'Learn more', 'elementor' ), + ), + 'default' => 'metadata', + 'condition' => [ + 'video_type' => 'hosted', + 'autoplay' => '', + ], + ] + ); + + $this->add_control( + 'poster', + [ + 'label' => esc_html__( 'Poster', 'elementor' ), + 'type' => Controls_Manager::MEDIA, + 'dynamic' => [ + 'active' => true, + ], + 'condition' => [ + 'video_type' => 'hosted', + ], + ] + ); + + $this->end_controls_section(); + + $this->start_controls_section( + 'section_image_overlay', + [ + 'label' => esc_html__( 'Image Overlay', 'elementor' ), + ] + ); + + $this->add_control( + 'show_image_overlay', + [ + 'label' => esc_html__( 'Image Overlay', 'elementor' ), + 'type' => Controls_Manager::SWITCHER, + 'label_off' => esc_html__( 'Hide', 'elementor' ), + 'label_on' => esc_html__( 'Show', 'elementor' ), + 'frontend_available' => true, + ] + ); + + $this->add_control( + 'image_overlay', + [ + 'label' => esc_html__( 'Choose Image', 'elementor' ), + 'type' => Controls_Manager::MEDIA, + 'default' => [ + 'url' => Utils::get_placeholder_image_src(), + ], + 'dynamic' => [ + 'active' => true, + ], + 'condition' => [ + 'show_image_overlay' => 'yes', + ], + 'frontend_available' => true, + ] + ); + + $this->add_group_control( + Group_Control_Image_Size::get_type(), + [ + 'name' => 'image_overlay', // Usage: `{name}_size` and `{name}_custom_dimension`, in this case `image_overlay_size` and `image_overlay_custom_dimension`. + 'default' => 'full', + 'condition' => [ + 'show_image_overlay' => 'yes', + ], + ] + ); + + $this->add_control( + 'show_play_icon', + [ + 'label' => esc_html__( 'Play Icon', 'elementor' ), + 'type' => Controls_Manager::SWITCHER, + 'default' => 'yes', + 'label_off' => esc_html__( 'Hide', 'elementor' ), + 'label_on' => esc_html__( 'Show', 'elementor' ), + 'separator' => 'before', + 'condition' => [ + 'show_image_overlay' => 'yes', + 'image_overlay[url]!' => '', + ], + ] + ); + + $this->add_control( + 'play_icon', + [ + 'label' => esc_html__( 'Icon', 'elementor' ), + 'type' => Controls_Manager::ICONS, + 'fa4compatibility' => 'icon', + 'skin' => 'inline', + 'label_block' => false, + 'skin_settings' => [ + 'inline' => [ + 'none' => [ + 'label' => 'Default', + 'icon' => 'eicon-play', + ], + 'icon' => [ + 'icon' => 'eicon-star', + ], + ], + ], + 'recommended' => [ + 'fa-regular' => [ + 'play-circle', + ], + 'fa-solid' => [ + 'play', + 'play-circle', + ], + ], + 'condition' => [ + 'show_image_overlay' => 'yes', + 'show_play_icon!' => '', + ], + ] + ); + + $this->add_control( + 'lightbox', + [ + 'label' => esc_html__( 'Lightbox', 'elementor' ), + 'type' => Controls_Manager::SWITCHER, + 'frontend_available' => true, + 'label_off' => esc_html__( 'Off', 'elementor' ), + 'label_on' => esc_html__( 'On', 'elementor' ), + 'condition' => [ + 'show_image_overlay' => 'yes', + 'image_overlay[url]!' => '', + ], + 'separator' => 'before', + ] + ); + + $this->end_controls_section(); + + $this->start_controls_section( + 'section_video_style', + [ + 'label' => esc_html__( 'Video', 'elementor' ), + 'tab' => Controls_Manager::TAB_STYLE, + ] + ); + + $this->add_control( + 'aspect_ratio', + [ + 'label' => esc_html__( 'Aspect Ratio', 'elementor' ), + 'type' => Controls_Manager::SELECT, + 'options' => [ + '169' => '16:9', + '219' => '21:9', + '43' => '4:3', + '32' => '3:2', + '11' => '1:1', + '916' => '9:16', + ], + 'selectors_dictionary' => [ + '169' => '1.77777', // 16 / 9 + '219' => '2.33333', // 21 / 9 + '43' => '1.33333', // 4 / 3 + '32' => '1.5', // 3 / 2 + '11' => '1', // 1 / 1 + '916' => '0.5625', // 9 / 16 + ], + 'default' => '169', + 'selectors' => [ + '{{WRAPPER}} .elementor-wrapper' => '--video-aspect-ratio: {{VALUE}}', + ], + ] + ); + + $this->add_group_control( + Group_Control_Css_Filter::get_type(), + [ + 'name' => 'css_filters', + 'selector' => '{{WRAPPER}} .elementor-wrapper', + ] + ); + + $this->end_controls_section(); + + $this->start_controls_section( + 'section_image_overlay_style', + [ + 'label' => esc_html__( 'Image Overlay', 'elementor' ), + 'tab' => Controls_Manager::TAB_STYLE, + 'condition' => [ + 'show_image_overlay' => 'yes', + 'show_play_icon' => 'yes', + ], + ] + ); + + $this->add_control( + 'play_icon_title', + [ + 'label' => esc_html__( 'Play Icon', 'elementor' ), + 'type' => Controls_Manager::HEADING, + 'condition' => [ + 'show_image_overlay' => 'yes', + 'show_play_icon' => 'yes', + ], + ] + ); + + $this->add_control( + 'play_icon_color', + [ + 'label' => esc_html__( 'Color', 'elementor' ), + 'type' => Controls_Manager::COLOR, + 'selectors' => [ + '{{WRAPPER}} .elementor-custom-embed-play i' => 'color: {{VALUE}}', + '{{WRAPPER}} .elementor-custom-embed-play svg' => 'fill: {{VALUE}}', + ], + 'condition' => [ + 'show_image_overlay' => 'yes', + 'show_play_icon' => 'yes', + ], + ] + ); + + $this->add_responsive_control( + 'play_icon_size', + [ + 'label' => esc_html__( 'Size', 'elementor' ), + 'type' => Controls_Manager::SLIDER, + 'size_units' => [ 'px', 'em', 'rem', 'custom' ], + 'range' => [ + 'px' => [ + 'min' => 10, + 'max' => 300, + ], + ], + 'selectors' => [ + // Not using a CSS vars because the default size value is coming from a global scss file. + '{{WRAPPER}} .elementor-custom-embed-play i' => 'font-size: {{SIZE}}{{UNIT}}', + '{{WRAPPER}} .elementor-custom-embed-play svg' => 'width: {{SIZE}}{{UNIT}}; height: {{SIZE}}{{UNIT}};', + ], + 'condition' => [ + 'show_image_overlay' => 'yes', + 'show_play_icon' => 'yes', + ], + ] + ); + + $this->add_group_control( + Group_Control_Text_Shadow::get_type(), + [ + 'name' => 'play_icon_text_shadow', + 'selector' => '{{WRAPPER}} .elementor-custom-embed-play i', + 'fields_options' => [ + 'text_shadow_type' => [ + 'label' => esc_html__( 'Shadow', 'elementor' ), + ], + ], + 'condition' => [ + 'show_image_overlay' => 'yes', + 'show_play_icon' => 'yes', + 'play_icon[library]!' => 'svg', + ], + ] + ); + + $this->end_controls_section(); + + $this->start_controls_section( + 'section_lightbox_style', + [ + 'label' => esc_html__( 'Lightbox', 'elementor' ), + 'tab' => Controls_Manager::TAB_STYLE, + 'condition' => [ + 'show_image_overlay' => 'yes', + 'image_overlay[url]!' => '', + 'lightbox' => 'yes', + ], + ] + ); + + $this->add_control( + 'lightbox_color', + [ + 'label' => esc_html__( 'Background Color', 'elementor' ), + 'type' => Controls_Manager::COLOR, + 'selectors' => [ + '#elementor-lightbox-{{ID}}' => 'background-color: {{VALUE}};', + ], + ] + ); + + $this->add_control( + 'lightbox_ui_color', + [ + 'label' => esc_html__( 'UI Color', 'elementor' ), + 'type' => Controls_Manager::COLOR, + 'selectors' => [ + '#elementor-lightbox-{{ID}} .dialog-lightbox-close-button' => 'color: {{VALUE}}', + '#elementor-lightbox-{{ID}} .dialog-lightbox-close-button svg' => 'fill: {{VALUE}}', + ], + ] + ); + + $this->add_control( + 'lightbox_ui_color_hover', + [ + 'label' => esc_html__( 'UI Hover Color', 'elementor' ), + 'type' => Controls_Manager::COLOR, + 'selectors' => [ + '#elementor-lightbox-{{ID}} .dialog-lightbox-close-button:hover' => 'color: {{VALUE}}', + '#elementor-lightbox-{{ID}} .dialog-lightbox-close-button:hover svg' => 'fill: {{VALUE}}', + ], + ] + ); + + $this->add_responsive_control( + 'lightbox_content_animation', + [ + 'label' => esc_html__( 'Entrance Animation', 'elementor' ), + 'type' => Controls_Manager::ANIMATION, + 'frontend_available' => true, + 'separator' => 'before', + ] + ); + + $this->add_control( + 'deprecation_warning', + [ + 'type' => Controls_Manager::ALERT, + 'alert_type' => 'danger', + 'content' => esc_html__( 'Note: These controls have been deprecated and are only visible if they were previously in use. The video’s width and position are now set based on its aspect ratio.', 'elementor' ), + 'separator' => 'before', + 'condition' => [ + 'lightbox_video_width!' => '', + 'lightbox_content_position!' => '', + ], + ] + ); + + // Deprecated control. Visible only if it was previously in use. + $this->add_control( + 'lightbox_video_width', + [ + 'label' => esc_html__( 'Content Width', 'elementor' ), + 'type' => Controls_Manager::SLIDER, + 'size_units' => [ 'px', '%', 'em', 'rem', 'vw', 'custom' ], + 'default' => [ + 'unit' => '%', + ], + // 'selectors' => [ + // '(desktop+)#elementor-lightbox-{{ID}} .elementor-video-container' => 'width: {{SIZE}}{{UNIT}};', + // ], + 'condition' => [ + 'lightbox_video_width!' => '', + 'lightbox_content_position!' => '', + ], + ] + ); + + // Deprecated control. Visible only if it was previously in use. + $this->add_control( + 'lightbox_content_position', + [ + 'label' => esc_html__( 'Content Position', 'elementor' ), + 'type' => Controls_Manager::SELECT, + 'frontend_available' => true, + 'options' => [ + '' => esc_html__( 'Center', 'elementor' ), + 'top' => esc_html__( 'Top', 'elementor' ), + ], + // 'selectors' => [ + // '#elementor-lightbox-{{ID}} .elementor-video-container' => '{{VALUE}}; transform: translateX(-50%);', + // ], + 'selectors_dictionary' => [ + 'top' => 'top: 60px', + ], + 'condition' => [ + 'lightbox_video_width!' => '', + 'lightbox_content_position!' => '', + ], + ] + ); + + $this->end_controls_section(); + } + + public function print_a11y_text( $image_overlay ) { + if ( empty( $image_overlay['alt'] ) ) { + echo esc_html__( 'Play Video', 'elementor' ); + } else { + echo esc_html__( 'Play Video about', 'elementor' ) . ' ' . esc_attr( $image_overlay['alt'] ); + } + } + + /** + * Render video widget output on the frontend. + * + * Written in PHP and used to generate the final HTML. + * + * @since 1.0.0 + * @access protected + */ + protected function render() { + $settings = $this->get_settings_for_display(); + + $video_url = $settings[ $settings['video_type'] . '_url' ]; + + if ( 'hosted' === $settings['video_type'] ) { + $video_url = $this->get_hosted_video_url(); + } else { + if ( 'videopress' === $settings['video_type'] ) { + $video_url = $this->get_videopress_video_url(); + } + + $embed_params = $this->get_embed_params(); + $embed_options = $this->get_embed_options(); + } + + if ( empty( $video_url ) ) { + return; + } + + if ( 'youtube' === $settings['video_type'] ) { + $video_html = '
    '; + } + + if ( 'hosted' === $settings['video_type'] ) { + $this->add_render_attribute( 'video-wrapper', 'class', 'e-hosted-video' ); + + ob_start(); + + $this->render_hosted_video(); + + $video_html = ob_get_clean(); + } else { + $is_static_render_mode = Plugin::$instance->frontend->is_static_render_mode(); + $post_id = get_queried_object_id(); + + if ( $is_static_render_mode ) { + $video_html = Embed::get_embed_thumbnail_html( $video_url, $post_id ); + // YouTube API requires a different markup which was set above. + } else if ( 'youtube' !== $settings['video_type'] ) { + $video_html = Embed::get_embed_html( $video_url, $embed_params, $embed_options ); + } + } + + if ( empty( $video_html ) ) { + echo esc_url( $video_url ); + + return; + } + + $this->add_render_attribute( 'video-wrapper', 'class', 'elementor-wrapper' ); + + $this->add_render_attribute( 'video-wrapper', 'class', 'elementor-open-' . ( $settings['lightbox'] ? 'lightbox' : 'inline' ) ); + ?> +
    print_render_attribute_string( 'video-wrapper' ); ?>> + has_image_overlay() ) { + $this->add_render_attribute( 'image-overlay', 'class', 'elementor-custom-embed-image-overlay' ); + + if ( $settings['lightbox'] ) { + if ( 'hosted' === $settings['video_type'] ) { + $lightbox_url = $video_url; + } else { + $lightbox_url = Embed::get_embed_url( $video_url, $embed_params, $embed_options ); + } + + $lightbox_options = [ + 'type' => 'video', + 'videoType' => $settings['video_type'], + 'url' => $lightbox_url, + 'modalOptions' => [ + 'id' => 'elementor-lightbox-' . $this->get_id(), + 'entranceAnimation' => $settings['lightbox_content_animation'], + 'entranceAnimation_tablet' => $settings['lightbox_content_animation_tablet'], + 'entranceAnimation_mobile' => $settings['lightbox_content_animation_mobile'], + 'videoAspectRatio' => $settings['aspect_ratio'], + ], + ]; + + if ( 'hosted' === $settings['video_type'] ) { + $lightbox_options['videoParams'] = $this->get_hosted_params(); + } + + $this->add_render_attribute( 'image-overlay', [ + 'data-elementor-open-lightbox' => 'yes', + 'data-elementor-lightbox' => wp_json_encode( $lightbox_options ), + 'data-e-action-hash' => Plugin::instance()->frontend->create_action_hash( 'lightbox', $lightbox_options ), + ] ); + + if ( Plugin::$instance->editor->is_edit_mode() ) { + $this->add_render_attribute( 'image-overlay', [ + 'class' => 'elementor-clickable', + ] ); + } + } else { + // When there is an image URL but no ID, it means the overlay image is the placeholder. In this case, get the placeholder URL. + if ( empty( $settings['image_overlay']['id'] && ! empty( $settings['image_overlay']['url'] ) ) ) { + $image_url = $settings['image_overlay']['url']; + } else { + $image_url = Group_Control_Image_Size::get_attachment_image_src( $settings['image_overlay']['id'], 'image_overlay', $settings ); + } + + $this->add_render_attribute( 'image-overlay', 'style', 'background-image: url(' . $image_url . ');' ); + } + ?> +
    print_render_attribute_string( 'image-overlay' ); ?>> + + + + +
    + 'eicons', + 'value' => 'eicon-play', + ]; + } + Icons_Manager::render_icon( $settings['play_icon'], [ 'aria-hidden' => 'true' ] ); + ?> + print_a11y_text( $settings['image_overlay'] ); ?> +
    + +
    + +
    + get_settings_for_display(); + + if ( 'hosted' !== $settings['video_type'] ) { + $url = $settings[ $settings['video_type'] . '_url' ]; + } else { + $url = $this->get_hosted_video_url(); + } + + echo esc_url( $url ); + } + + /** + * Get embed params. + * + * Retrieve video widget embed parameters. + * + * @since 1.5.0 + * @access public + * + * @return array Video embed parameters. + */ + public function get_embed_params() { + $settings = $this->get_settings_for_display(); + + $params = []; + + if ( $settings['autoplay'] && ! $this->has_image_overlay() ) { + $params['autoplay'] = '1'; + + if ( $settings['play_on_mobile'] ) { + $params['playsinline'] = '1'; + } + } + + $params_dictionary = []; + + if ( 'youtube' === $settings['video_type'] ) { + $params_dictionary = [ + 'loop', + 'controls', + 'mute', + 'rel', + 'modestbranding', + ]; + + if ( $settings['loop'] ) { + $video_properties = Embed::get_video_properties( $settings['youtube_url'] ); + + $params['playlist'] = $video_properties['video_id']; + } + + $params['start'] = $settings['start']; + + $params['end'] = $settings['end']; + + $params['wmode'] = 'opaque'; + } elseif ( 'vimeo' === $settings['video_type'] ) { + $params_dictionary = [ + 'loop', + 'mute' => 'muted', + 'vimeo_title' => 'title', + 'vimeo_portrait' => 'portrait', + 'vimeo_byline' => 'byline', + ]; + + $params['color'] = str_replace( '#', '', $settings['color'] ); + + $params['autopause'] = '0'; + + if ( ! empty( $settings['yt_privacy'] ) ) { + $params['dnt'] = 'true'; + } + } elseif ( 'dailymotion' === $settings['video_type'] ) { + $params_dictionary = [ + 'controls', + 'mute', + 'showinfo' => 'ui-start-screen-info', + 'logo' => 'ui-logo', + ]; + + $params['ui-highlight'] = str_replace( '#', '', $settings['color'] ); + + $params['start'] = $settings['start']; + + $params['endscreen-enable'] = '0'; + } elseif ( 'videopress' === $settings['video_type'] ) { + $params_dictionary = $this->get_params_dictionary_for_videopress(); + + $params['at'] = $settings['start']; + } + + foreach ( $params_dictionary as $key => $param_name ) { + $setting_name = $param_name; + + if ( is_string( $key ) ) { + $setting_name = $key; + } + + $setting_value = $settings[ $setting_name ] ? '1' : '0'; + + $params[ $param_name ] = $setting_value; + } + + return $params; + } + + /** + * Whether the video widget has an overlay image or not. + * + * Used to determine whether an overlay image was set for the video. + * + * @since 1.0.0 + * @access protected + * + * @return bool Whether an image overlay was set for the video. + */ + protected function has_image_overlay() { + $settings = $this->get_settings_for_display(); + + return ! empty( $settings['image_overlay']['url'] ) && 'yes' === $settings['show_image_overlay']; + } + + /** + * @since 2.1.0 + * @access private + */ + private function get_embed_options() { + $settings = $this->get_settings_for_display(); + + $embed_options = []; + + if ( 'youtube' === $settings['video_type'] ) { + $embed_options['privacy'] = $settings['yt_privacy']; + } elseif ( 'vimeo' === $settings['video_type'] ) { + $embed_options['start'] = $settings['start']; + } + + $embed_options['lazy_load'] = ! empty( $settings['lazy_load'] ); + + return $embed_options; + } + + /** + * @since 2.1.0 + * @access private + */ + private function get_hosted_params() { + $settings = $this->get_settings_for_display(); + + $video_params = []; + + foreach ( [ 'autoplay', 'loop', 'controls' ] as $option_name ) { + if ( $settings[ $option_name ] ) { + $video_params[ $option_name ] = ''; + } + } + + if ( $settings['preload'] ) { + $video_params['preload'] = $settings['preload']; + } + + if ( $settings['mute'] ) { + $video_params['muted'] = 'muted'; + } + + if ( $settings['play_on_mobile'] ) { + $video_params['playsinline'] = ''; + } + + if ( ! $settings['download_button'] ) { + $video_params['controlsList'] = 'nodownload'; + } + + if ( $settings['poster']['url'] ) { + $video_params['poster'] = $settings['poster']['url']; + } + + return $video_params; + } + + /** + * @param bool $from_media + * + * @return string + * @since 2.1.0 + * @access private + */ + private function get_hosted_video_url() { + $settings = $this->get_settings_for_display(); + + if ( ! empty( $settings['insert_url'] ) ) { + $video_url = $settings['external_url']['url']; + } else { + $video_url = $settings['hosted_url']['url']; + } + + if ( empty( $video_url ) ) { + return ''; + } + + if ( $settings['start'] || $settings['end'] ) { + $video_url .= '#t='; + } + + if ( $settings['start'] ) { + $video_url .= $settings['start']; + } + + if ( $settings['end'] ) { + $video_url .= ',' . $settings['end']; + } + + return $video_url; + } + + /** + * Get the VideoPress video URL from the current selected settings. + * + * @return string + */ + private function get_videopress_video_url() { + $settings = $this->get_settings_for_display(); + + if ( ! empty( $settings['insert_url'] ) ) { + return $settings['videopress_url']; + } + + return $settings['hosted_url']['url']; + } + + /** + * Get the params dictionary for VideoPress videos. + * + * @return array + */ + private function get_params_dictionary_for_videopress() { + return [ + 'controls', + 'autoplay' => 'autoPlay', + 'mute' => 'muted', + 'loop', + 'play_on_mobile' => 'playsinline', + ]; + } + + /** + * + * @since 2.1.0 + * @access private + */ + private function render_hosted_video() { + $video_url = $this->get_hosted_video_url(); + if ( empty( $video_url ) ) { + return; + } + + $video_params = $this->get_hosted_params(); + /* Sometimes the video url is base64, therefore we use `esc_attr` in `src`. */ + ?> + + get_widget_instance()->id_base; + } + + /** + * Get widget title. + * + * Retrieve WordPress widget title. + * + * @since 1.0.0 + * @access public + * + * @return string Widget title. + */ + public function get_title() { + return $this->get_widget_instance()->name; + } + + /** + * Get widget categories. + * + * Retrieve the list of categories the WordPress widget belongs to. + * + * Used to determine where to display the widget in the editor. + * + * @since 1.0.0 + * @access public + * + * @return array Widget categories. Returns either a WordPress category. + */ + public function get_categories() { + return [ 'wordpress' ]; + } + + /** + * Get widget icon. + * + * Retrieve WordPress widget icon. + * + * @since 1.0.0 + * @access public + * + * @return string Widget icon. Returns either a WordPress icon. + */ + public function get_icon() { + return 'eicon-wordpress'; + } + + /** + * Get widget keywords. + * + * Retrieve the list of keywords the widget belongs to. + * + * @since 2.1.0 + * @access public + * + * @return array Widget keywords. + */ + public function get_keywords() { + return [ 'wordpress', 'widget' ]; + } + + public function get_help_url() { + return ''; + } + + /** + * Whether the reload preview is required or not. + * + * Used to determine whether the reload preview is required. + * + * @since 1.0.0 + * @access public + * + * @return bool Whether the reload preview is required. + */ + public function is_reload_preview_required() { + return true; + } + + /** + * Retrieve WordPress widget form. + * + * Returns the WordPress widget form, to be used in Elementor. + * + * @since 1.0.0 + * @access public + * + * @return string Widget form. + */ + public function get_form() { + $instance = $this->get_widget_instance(); + + ob_start(); + echo '
    '; + echo ''; + echo ''; + echo '
    '; + $widget_data = $this->get_settings( 'wp' ); + $instance->form( $widget_data ); + do_action( 'in_widget_form', $instance, null, $widget_data ); + echo '
    '; + return ob_get_clean(); + } + + /** + * Retrieve WordPress widget instance. + * + * Returns an instance of WordPress widget, to be used in Elementor. + * + * @since 1.0.0 + * @access public + * + * @return \WP_Widget + */ + public function get_widget_instance() { + if ( is_null( $this->_widget_instance ) ) { + global $wp_widget_factory; + + if ( isset( $wp_widget_factory->widgets[ $this->_widget_name ] ) ) { + $this->_widget_instance = $wp_widget_factory->widgets[ $this->_widget_name ]; + $this->_widget_instance->_set( 'REPLACE_TO_ID' ); + } elseif ( class_exists( $this->_widget_name ) ) { + $this->_widget_instance = new $this->_widget_name(); + $this->_widget_instance->_set( 'REPLACE_TO_ID' ); + } + } + return $this->_widget_instance; + } + + /** + * Retrieve WordPress widget parsed settings. + * + * Returns the WordPress widget settings, to be used in Elementor. + * + * @access protected + * @since 2.3.0 + * + * @return array Parsed settings. + */ + protected function get_init_settings() { + $settings = parent::get_init_settings(); + + if ( ! empty( $settings['wp'] ) ) { + $widget = $this->get_widget_instance(); + $instance = $widget->update( $settings['wp'], [] ); + /** This filter is documented in wp-includes/class-wp-widget.php */ + $settings['wp'] = apply_filters( 'widget_update_callback', $instance, $settings['wp'], [], $widget ); + } + + return $settings; + } + + /** + * Register WordPress widget controls. + * + * Adds different input fields to allow the user to change and customize the widget settings. + * + * @since 3.1.0 + * @access protected + */ + protected function register_controls() { + $this->add_control( + 'wp', + [ + 'label' => esc_html__( 'Form', 'elementor' ), + 'type' => Controls_Manager::WP_WIDGET, + 'widget' => $this->get_name(), + 'id_base' => $this->get_widget_instance()->id_base, + ] + ); + } + + /** + * Render WordPress widget output on the frontend. + * + * Written in PHP and used to generate the final HTML. + * + * @since 1.0.0 + * @access protected + */ + protected function render() { + $default_widget_args = [ + 'widget_id' => $this->get_name(), + 'before_widget' => '', + 'after_widget' => '', + 'before_title' => '
    ', + 'after_title' => '
    ', + ]; + + /** + * WordPress widget args. + * + * Filters the WordPress widget arguments when they are rendered in Elementor panel. + * + * @since 1.0.0 + * + * @param array $default_widget_args Default widget arguments. + * @param Widget_WordPress $this The WordPress widget. + */ + $default_widget_args = apply_filters( 'elementor/widgets/wordpress/widget_args', $default_widget_args, $this ); + $is_gallery_widget = 'wp-widget-media_gallery' === $this->get_name(); + + if ( $is_gallery_widget ) { + add_filter( 'wp_get_attachment_link', [ $this, 'add_lightbox_data_to_image_link' ], 10, 2 ); + } + + $this->get_widget_instance()->widget( $default_widget_args, $this->get_settings( 'wp' ) ); + + if ( $is_gallery_widget ) { + remove_filter( 'wp_get_attachment_link', [ $this, 'add_lightbox_data_to_image_link' ] ); + } + } + + /** + * Render WordPress widget output in the editor. + * + * Written as a Backbone JavaScript template and used to generate the live preview. + * + * @since 2.9.0 + * @access protected + */ + protected function content_template() {} + + /** + * WordPress widget constructor. + * + * Used to run WordPress widget constructor. + * + * @since 1.0.0 + * @access public + * + * @param array $data Widget data. Default is an empty array. + * @param array $args Widget arguments. Default is null. + */ + public function __construct( $data = [], $args = null ) { + $this->_widget_name = $args['widget_name']; + + parent::__construct( $data, $args ); + } + + /** + * Render WordPress widget as plain content. + * + * Override the default render behavior, don't render widget content. + * + * @since 1.0.0 + * @access public + * + * @param array $instance Widget instance. Default is empty array. + */ + public function render_plain_content( $instance = [] ) {} +} diff --git a/wp-content/plugins/elementor/license.txt b/wp-content/plugins/elementor/license.txt new file mode 100644 index 0000000..94a9ed0 --- /dev/null +++ b/wp-content/plugins/elementor/license.txt @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. diff --git a/wp-content/plugins/elementor/modules/admin-bar/module.php b/wp-content/plugins/elementor/modules/admin-bar/module.php new file mode 100644 index 0000000..e82ec7b --- /dev/null +++ b/wp-content/plugins/elementor/modules/admin-bar/module.php @@ -0,0 +1,143 @@ +is_editable_by_current_user() + ) { + return; + } + + $this->documents[ $document->get_main_id() ] = $document; + } + + /** + * Scripts for module. + */ + public function enqueue_scripts() { + if ( empty( $this->documents ) ) { + return; + } + + // Should load 'elementor-admin-bar' before 'admin-bar' + wp_dequeue_script( 'admin-bar' ); + + wp_enqueue_script( + 'elementor-admin-bar', + $this->get_js_assets_url( 'elementor-admin-bar' ), + [ 'elementor-frontend-modules' ], + ELEMENTOR_VERSION, + true + ); + + // This is a core script of WordPress, it is not required to pass the 'ver' argument. + wp_enqueue_script( // phpcs:ignore WordPress.WP.EnqueuedResourceParameters + 'admin-bar', + null, + [ 'elementor-admin-bar' ], + false, + true + ); + + $this->print_config( 'elementor-admin-bar' ); + } + + /** + * Creates admin bar menu items config. + * + * @return array + */ + public function get_init_settings() { + $settings = []; + + if ( ! empty( $this->documents ) ) { + $settings['elementor_edit_page'] = $this->get_edit_button_config(); + } + + /** + * Admin bar settings in the frontend. + * + * Register admin_bar config to parse later in the frontend and add to the admin bar with JS. + * + * @since 3.0.0 + * + * @param array $settings the admin_bar config + */ + $settings = apply_filters( 'elementor/frontend/admin_bar/settings', $settings ); + + return $settings; + } + + /** + * Creates the config for 'Edit with elementor' menu item. + * + * @return array + */ + private function get_edit_button_config() { + $queried_object_id = get_queried_object_id(); + $href = null; + + if ( is_singular() && isset( $this->documents[ $queried_object_id ] ) ) { + $href = $this->documents[ $queried_object_id ]->get_edit_url(); + + unset( $this->documents[ $queried_object_id ] ); + } + + return [ + 'id' => 'elementor_edit_page', + 'title' => esc_html__( 'Edit with Elementor', 'elementor' ), + 'href' => $href, + 'children' => array_map( function ( $document ) { + return [ + 'id' => "elementor_edit_doc_{$document->get_main_id()}", + 'title' => $document->get_post()->post_title, + 'sub_title' => $document::get_title(), + 'href' => $document->get_edit_url(), + ]; + }, $this->documents ), + ]; + } + + /** + * Module constructor. + */ + public function __construct() { + add_action( 'elementor/frontend/before_get_builder_content', [ $this, 'add_document_to_admin_bar' ], 10, 2 ); + add_action( 'wp_footer', [ $this, 'enqueue_scripts' ], 11 /* after third party scripts */ ); + } +} diff --git a/wp-content/plugins/elementor/modules/admin-top-bar/module.php b/wp-content/plugins/elementor/modules/admin-top-bar/module.php new file mode 100644 index 0000000..322a449 --- /dev/null +++ b/wp-content/plugins/elementor/modules/admin-top-bar/module.php @@ -0,0 +1,150 @@ + +
    +
    + get_css_assets_url( 'admin-top-bar', null, 'default', true ), [], ELEMENTOR_VERSION ); + + /** + * Before admin top bar enqueue scripts. + * + * Fires before Elementor admin top bar scripts are enqueued. + * + * @since 3.19.0 + */ + do_action( 'elementor/admin_top_bar/before_enqueue_scripts', $this ); + + wp_enqueue_script( 'elementor-admin-top-bar', $this->get_js_assets_url( 'admin-top-bar' ), [ + 'elementor-common', + 'react', + 'react-dom', + 'tipsy', + ], ELEMENTOR_VERSION, true ); + + wp_set_script_translations( 'elementor-admin-top-bar', 'elementor' ); + + $min_suffix = Utils::is_script_debug() ? '' : '.min'; + + wp_enqueue_script( 'tipsy', ELEMENTOR_ASSETS_URL . 'lib/tipsy/tipsy' . $min_suffix . '.js', [ + 'jquery', + ], '1.0.0', true ); + + $this->print_config(); + } + + private function add_frontend_settings() { + $settings = []; + $settings['is_administrator'] = current_user_can( 'manage_options' ); + + // TODO: Find a better way to add apps page url to the admin top bar. + $settings['apps_url'] = admin_url( 'admin.php?page=elementor-apps' ); + $settings['promotion'] = [ + 'text' => __( 'Upgrade Now', 'elementor' ), + 'url' => 'https://go.elementor.com/wp-dash-admin-top-bar-upgrade/', + ]; + + $settings['promotion'] = Filtered_Promotions_Manager::get_filtered_promotion_data( + $settings['promotion'], + 'elementor/admin_top_bar/go_pro_promotion', + 'url' + ); + + $current_screen = get_current_screen(); + + /** @var \Elementor\Core\Common\Modules\Connect\Apps\Library $library */ + $library = Plugin::$instance->common->get_component( 'connect' )->get_app( 'library' ); + if ( $library ) { + $settings = array_merge( $settings, [ + 'is_user_connected' => $library->is_connected(), + 'connect_url' => $library->get_admin_url( 'authorize', [ + 'utm_source' => 'top-bar', + 'utm_medium' => 'wp-dash', + 'utm_campaign' => 'connect-account', + 'utm_content' => $current_screen->id, + 'source' => 'generic', + ] ), + ] ); + } + + $this->set_settings( $settings ); + + do_action( 'elementor/admin-top-bar/init', $this ); + } + + private function is_top_bar_active() { + $current_screen = get_current_screen(); + + if ( ! $current_screen ) { + return false; + } + + $is_elementor_page = strpos( $current_screen->id ?? '', 'elementor' ) !== false; + $is_elementor_post_type_page = strpos( $current_screen->post_type ?? '', 'elementor' ) !== false; + + return apply_filters( + 'elementor/admin-top-bar/is-active', + $is_elementor_page || $is_elementor_post_type_page, + $current_screen + ); + } + + /** + * Module constructor. + */ + public function __construct() { + parent::__construct(); + + add_action( 'current_screen', function () { + if ( ! $this->is_top_bar_active() ) { + return; + } + + $this->add_frontend_settings(); + + add_action( 'in_admin_header', function () { + $this->render_admin_top_bar(); + } ); + + add_action( 'admin_enqueue_scripts', function () { + $this->enqueue_scripts(); + } ); + } ); + } +} diff --git a/wp-content/plugins/elementor/modules/ai/connect/ai.php b/wp-content/plugins/elementor/modules/ai/connect/ai.php new file mode 100644 index 0000000..e49cae9 --- /dev/null +++ b/wp-content/plugins/elementor/modules/ai/connect/ai.php @@ -0,0 +1,650 @@ +ai_request( + 'POST', + 'status/check', + [ + 'api_version' => ELEMENTOR_VERSION, + 'site_lang' => get_bloginfo( 'language' ), + ] + ); + } + + public function get_cached_usage() { + $cache_key = 'elementor_ai_usage'; + $cache_time = 24 * HOUR_IN_SECONDS; + $usage = get_site_transient( $cache_key ); + + if ( ! $usage ) { + $usage = $this->get_usage(); + set_site_transient( $cache_key, $usage, $cache_time ); + } + + return $usage; + } + + public function get_remote_config() { + return $this->ai_request( + 'GET', + 'remote-config/config', + [ + 'api_version' => ELEMENTOR_VERSION, + 'site_lang' => get_bloginfo( 'language' ), + ] + ); + } + + /** + * get_file_payload + * @param $filename + * @param $file_type + * @param $file_path + * @param $boundary + * + * @return string + */ + private function get_file_payload( $filename, $file_type, $file_path, $boundary ) { + $name = $filename ?? basename( $file_path ); + $mine_type = 'image' === $file_type ? image_type_to_mime_type( exif_imagetype( $file_path ) ) : $file_type; + $payload = ''; + // Upload the file + $payload .= '--' . $boundary; + $payload .= "\r\n"; + $payload .= 'Content-Disposition: form-data; name="' . esc_attr( $name ) . '"; filename="' . esc_attr( $name ) . '"' . "\r\n"; + $payload .= 'Content-Type: ' . $mine_type . "\r\n"; + $payload .= "\r\n"; + $payload .= file_get_contents( $file_path ); + $payload .= "\r\n"; + + return $payload; + } + + private function get_upload_request_body( $body, $file, $boundary, $file_name = '' ) { + $payload = ''; + // add all body fields as standard POST fields: + foreach ( $body as $name => $value ) { + $payload .= '--' . $boundary; + $payload .= "\r\n"; + $payload .= 'Content-Disposition: form-data; name="' . esc_attr( $name ) . '"' . "\r\n\r\n"; + $payload .= $value; + $payload .= "\r\n"; + } + + if ( is_array( $file ) ) { + foreach ( $file as $key => $file_data ) { + $payload .= $this->get_file_payload( $file_data['name'], $file_data['type'], $file_data['path'], $boundary ); + } + } else { + $image_mime = image_type_to_mime_type( exif_imagetype( $file ) ); + // @todo: add validation for supported image types + + if ( empty( $file_name ) ) { + $file_name = basename( $file ); + } + $payload .= $this->get_file_payload( $file_name, $image_mime, $file, $boundary ); + } + + $payload .= '--' . $boundary . '--'; + + return $payload; + } + + private function ai_request( $method, $endpoint, $body, $file = false, $file_name = '', $format = 'default' ) { + $headers = [ + 'x-elementor-ai-version' => '2', + ]; + + if ( $file ) { + $boundary = wp_generate_password( 24, false ); + $body = $this->get_upload_request_body( $body, $file, $boundary, $file_name ); + // add content type header + $headers['Content-Type'] = 'multipart/form-data; boundary=' . $boundary; + } elseif ( 'json' === $format ) { + $headers['Content-Type'] = 'application/json'; + $body = wp_json_encode( $body ); + } + + return $this->http_request( + $method, + $endpoint, + [ + 'timeout' => 100, + 'headers' => $headers, + 'body' => $body, + + ], + [ + 'return_type' => static::HTTP_RETURN_TYPE_ARRAY, + 'with_error_data' => true, + ] + ); + } + + public function set_get_started() { + return $this->ai_request( + 'POST', + 'status/get-started', + [ + 'api_version' => ELEMENTOR_VERSION, + 'site_lang' => get_bloginfo( 'language' ), + ] + ); + } + + public function set_status_feedback( $response_id ) { + return $this->ai_request( + 'POST', + 'status/feedback/' . $response_id, + [ + 'api_version' => ELEMENTOR_VERSION, + 'site_lang' => get_bloginfo( 'language' ), + ] + ); + } + + public function set_used_gallery_image( $image_id ) { + return $this->ai_request( + 'POST', + 'status/used-gallery-image/' . $image_id, + [ + 'api_version' => ELEMENTOR_VERSION, + 'site_lang' => get_bloginfo( 'language' ), + ] + ); + } + + public function get_completion_text( $prompt, $context, $request_ids ) { + return $this->ai_request( + 'POST', + 'text/completion', + [ + 'prompt' => $prompt, + 'context' => wp_json_encode( $context ), + 'ids' => $request_ids, + 'api_version' => ELEMENTOR_VERSION, + 'site_lang' => get_bloginfo( 'language' ), + ] + ); + } + + /** + * get_image_prompt_enhanced + * @param $prompt + * + * @return mixed|\WP_Error + */ + public function get_image_prompt_enhanced( $prompt, $context, $request_ids ) { + return $this->ai_request( + 'POST', + 'text/enhance-image-prompt', + [ + 'prompt' => $prompt, + 'context' => wp_json_encode( $context ), + 'ids' => $request_ids, + 'api_version' => ELEMENTOR_VERSION, + 'site_lang' => get_bloginfo( 'language' ), + ] + ); + } + + public function get_edit_text( $data, $context, $request_ids ) { + return $this->ai_request( + 'POST', + 'text/edit', + [ + 'input' => $data['payload']['input'], + 'instruction' => $data['payload']['instruction'], + 'context' => wp_json_encode( $context ), + 'ids' => $request_ids, + 'api_version' => ELEMENTOR_VERSION, + 'site_lang' => get_bloginfo( 'language' ), + ] + ); + } + + public function get_custom_code( $data, $context, $request_ids ) { + return $this->ai_request( + 'POST', + 'text/custom-code', + [ + 'prompt' => $data['payload']['prompt'], + 'language' => $data['payload']['language'], + 'context' => wp_json_encode( $context ), + 'ids' => $request_ids, + 'api_version' => ELEMENTOR_VERSION, + 'site_lang' => get_bloginfo( 'language' ), + ] + ); + } + + public function get_custom_css( $data, $context, $request_ids ) { + return $this->ai_request( + 'POST', + 'text/custom-css', + [ + 'prompt' => $data['payload']['prompt'], + 'html_markup' => $data['payload']['html_markup'], + 'element_id' => $data['payload']['element_id'], + 'context' => wp_json_encode( $context ), + 'ids' => $request_ids, + 'api_version' => ELEMENTOR_VERSION, + 'site_lang' => get_bloginfo( 'language' ), + ] + ); + } + + /** + * get_text_to_image + * @param $prompt + * @param $prompt_settings + * + * @return mixed|\WP_Error + */ + public function get_text_to_image( $data, $context, $request_ids ) { + return $this->ai_request( + 'POST', + 'image/text-to-image', + [ + self::PROMPT => $data['payload']['prompt'], + self::IMAGE_TYPE => $data['payload']['promptSettings'][ self::IMAGE_TYPE ] . '/' . $data['payload']['promptSettings'][ self::STYLE_PRESET ], + self::ASPECT_RATIO => $data['payload']['promptSettings'][ self::ASPECT_RATIO ], + 'context' => wp_json_encode( $context ), + 'ids' => $request_ids, + 'api_version' => ELEMENTOR_VERSION, + 'site_lang' => get_bloginfo( 'language' ), + ] + ); + } + + /** + * get_image_to_image + * @param $image_data + * + * @return mixed|\WP_Error + * @throws \Exception + */ + public function get_image_to_image( $image_data, $context, $request_ids ) { + $image_file = get_attached_file( $image_data['attachment_id'] ); + + if ( ! $image_file ) { + throw new \Exception( 'Image file not found' ); + } + + $result = $this->ai_request( + 'POST', + 'image/image-to-image', + [ + self::PROMPT => $image_data[ self::PROMPT ], + self::IMAGE_TYPE => $image_data['promptSettings'][ self::IMAGE_TYPE ] . '/' . $image_data['promptSettings'][ self::STYLE_PRESET ], + self::IMAGE_STRENGTH => $image_data['promptSettings'][ self::IMAGE_STRENGTH ], + self::ASPECT_RATIO => $image_data['promptSettings'][ self::ASPECT_RATIO ], + 'context' => wp_json_encode( $context ), + 'ids' => $request_ids, + 'api_version' => ELEMENTOR_VERSION, + 'site_lang' => get_bloginfo( 'language' ), + ], + $image_file, + 'image' + ); + + return $result; + } + + /** + * get_image_to_image_upscale + * @param $image_data + * + * @return mixed|\WP_Error + * @throws \Exception + */ + public function get_image_to_image_upscale( $image_data, $context, $request_ids ) { + $image_file = get_attached_file( $image_data['attachment_id'] ); + + if ( ! $image_file ) { + throw new \Exception( 'Image file not found' ); + } + + $result = $this->ai_request( + 'POST', + 'image/image-to-image/upscale', + [ + self::IMAGE_RESOLUTION => $image_data['promptSettings']['upscale_to'], + 'context' => wp_json_encode( $context ), + 'ids' => $request_ids, + 'api_version' => ELEMENTOR_VERSION, + 'site_lang' => get_bloginfo( 'language' ), + ], + $image_file, + 'image' + ); + + return $result; + } + + /** + * get_image_to_image_remove_background + * @param $image_data + * + * @return mixed|\WP_Error + * @throws \Exception + */ + public function get_image_to_image_remove_background( $image_data, $context, $request_ids ) { + $image_file = get_attached_file( $image_data['attachment_id'] ); + + if ( ! $image_file ) { + throw new \Exception( 'Image file not found' ); + } + + $result = $this->ai_request( + 'POST', + 'image/image-to-image/remove-background', + [ + 'context' => wp_json_encode( $context ), + 'ids' => $request_ids, + 'api_version' => ELEMENTOR_VERSION, + 'site_lang' => get_bloginfo( 'language' ), + ], + $image_file, + 'image' + ); + + return $result; + } + + /** + * get_image_to_image_remove_text + * @param $image_data + * + * @return mixed|\WP_Error + * @throws \Exception + */ + public function get_image_to_image_replace_background( $image_data, $context, $request_ids ) { + $image_file = get_attached_file( $image_data['attachment_id'] ); + + if ( ! $image_file ) { + throw new \Exception( 'Image file not found' ); + } + + $result = $this->ai_request( + 'POST', + 'image/image-to-image/replace-background', + [ + self::PROMPT => $image_data[ self::PROMPT ], + 'context' => wp_json_encode( $context ), + 'ids' => $request_ids, + 'api_version' => ELEMENTOR_VERSION, + 'site_lang' => get_bloginfo( 'language' ), + ], + $image_file, + 'image' + ); + + return $result; + } + + /** + * store_temp_file + * used to store a temp file for the AI request and deletes it once the request is done + * @param $file_content + * @param $file_ext + * + * @return string + */ + private function store_temp_file( $file_content, $file_ext = '' ) { + $temp_file = str_replace( '.tmp', '', wp_tempnam() . $file_ext ); + file_put_contents( $temp_file, $file_content ); + // make sure the temp file is deleted on shutdown + register_shutdown_function( function () use ( $temp_file ) { + if ( file_exists( $temp_file ) ) { + unlink( $temp_file ); + } + } ); + return $temp_file; + } + + /** + * get_image_to_image_out_painting + * @param $image_data + * + * @return mixed|\WP_Error + * @throws \Exception + */ + public function get_image_to_image_out_painting( $image_data, $context, $request_ids ) { + $img_content = str_replace( ' ', '+', $image_data['mask'] ); + $img_content = substr( $img_content, strpos( $img_content, ',' ) + 1 ); + $img_content = base64_decode( $img_content ); + $mask_file = $this->store_temp_file( $img_content, '.png' ); + + if ( ! $mask_file ) { + throw new \Exception( 'Expended Image file not found' ); + } + + $result = $this->ai_request( + 'POST', + 'image/image-to-image/outpainting', + [ + self::PROMPT => $image_data[ self::PROMPT ], + self::IMAGE_TYPE => '', + 'context' => wp_json_encode( $context ), + 'ids' => $request_ids, + 'api_version' => ELEMENTOR_VERSION, + 'site_lang' => get_bloginfo( 'language' ), + ], + [ + [ + 'name' => 'image', + 'type' => 'image', + 'path' => $mask_file, + ], + ] + ); + + return $result; + } + + /** + * get_image_to_image_mask + * @param $image_data + * + * @return mixed|\WP_Error + * @throws \Exception + */ + public function get_image_to_image_mask( $image_data, $context, $request_ids ) { + $image_file = get_attached_file( $image_data['attachment_id'] ); + $mask_file = $this->store_temp_file( $image_data['mask'], '.svg' ); + + if ( ! $image_file ) { + throw new \Exception( 'Image file not found' ); + } + + if ( ! $mask_file ) { + throw new \Exception( 'Mask file not found' ); + } + + $result = $this->ai_request( + 'POST', + 'image/image-to-image/inpainting', + [ + self::PROMPT => $image_data[ self::PROMPT ], + self::IMAGE_TYPE => $image_data['promptSettings'][ self::IMAGE_TYPE ] . '/' . $image_data['promptSettings'][ self::STYLE_PRESET ], + self::IMAGE_STRENGTH => $image_data['promptSettings'][ self::IMAGE_STRENGTH ], + 'context' => wp_json_encode( $context ), + 'ids' => $request_ids, + 'api_version' => ELEMENTOR_VERSION, + 'site_lang' => get_bloginfo( 'language' ), + ], + [ + [ + 'name' => 'image', + 'type' => 'image', + 'path' => $image_file, + ], + [ + 'name' => 'mask_image', + 'type' => 'image/svg+xml', + 'path' => $mask_file, + ], + ] + ); + + return $result; + } + + public function generate_layout( $data, $context ) { + $endpoint = 'generate/layout'; + + $body = [ + 'prompt' => $data['prompt'], + 'variationType' => (int) $data['variationType'], + 'ids' => $data['ids'], + ]; + + if ( ! empty( $data['prevGeneratedIds'] ) ) { + $body['generatedBaseTemplatesIds'] = $data['prevGeneratedIds']; + } + + if ( ! empty( $data['attachments'] ) ) { + $attachment = $data['attachments'][0]; + + switch ( $attachment['type'] ) { + case 'json': + $endpoint = 'generate/generate-json-variation'; + + $body['json'] = [ + 'type' => 'elementor', + 'elements' => [ $attachment['content'] ], + 'label' => $attachment['label'], + 'source' => $attachment['source'], + ]; + break; + case 'url': + $endpoint = 'generate/html-to-elementor'; + + $html = wp_json_encode( $attachment['content'] ); + + $body['html'] = $html; + + break; + } + } + + $context['currentContext'] = $data['currentContext']; + + if ( ElementorUtils::has_pro() ) { + $context['features'] = [ + 'subscriptions' => [ 'Pro' ], + ]; + } + + $metadata = [ + 'context' => $context, + 'api_version' => ELEMENTOR_VERSION, + 'site_lang' => get_bloginfo( 'language' ), + 'config' => [ + 'generate' => [ + 'all' => true, + ], + ], + ]; + + $body = array_merge( $body, $metadata ); + + // Temp hack for platforms that filters the http_request_args, and it breaks JSON requests. + remove_all_filters( 'http_request_args' ); + + return $this->ai_request( + 'POST', + $endpoint, + $body, + false, + '', + 'json' + ); + } + + public function get_layout_prompt_enhanced( $prompt, $enhance_type, $context ) { + return $this->ai_request( + 'POST', + 'generate/enhance-prompt', + [ + 'prompt' => $prompt, + 'enhance_type' => $enhance_type, + 'context' => wp_json_encode( $context ), + 'api_version' => ELEMENTOR_VERSION, + 'site_lang' => get_bloginfo( 'language' ), + ] + ); + } + + public function get_history_by_type( $type, $page, $limit, $context = [] ) { + $endpoint = Module::HISTORY_TYPE_ALL === $type + ? 'history' + : add_query_arg( [ + 'page' => $page, + 'limit' => $limit, + ], "history/{$type}" ); + + return $this->ai_request( + 'POST', + $endpoint, + [ + 'context' => wp_json_encode( $context ), + 'api_version' => ELEMENTOR_VERSION, + 'site_lang' => get_bloginfo( 'language' ), + ] + ); + } + + public function delete_history_item( $id, $context = [] ) { + return $this->ai_request( + 'DELETE', 'history/' . $id, + [ + 'context' => wp_json_encode( $context ), + 'api_version' => ELEMENTOR_VERSION, + 'site_lang' => get_bloginfo( 'language' ), + ] + ); + } + + public function toggle_favorite_history_item( $id, $context = [] ) { + return $this->ai_request( + 'POST', sprintf( 'history/%s/favorite', $id ), + [ + 'context' => wp_json_encode( $context ), + 'api_version' => ELEMENTOR_VERSION, + 'site_lang' => get_bloginfo( 'language' ), + ] + ); + } + + protected function init() {} +} diff --git a/wp-content/plugins/elementor/modules/ai/module.php b/wp-content/plugins/elementor/modules/ai/module.php new file mode 100644 index 0000000..b03ab72 --- /dev/null +++ b/wp-content/plugins/elementor/modules/ai/module.php @@ -0,0 +1,1011 @@ +register_layout_experiment(); + + add_action( 'elementor/connect/apps/register', function ( ConnectModule $connect_module ) { + $connect_module->register_app( 'ai', Ai::get_class_name() ); + } ); + + add_action( 'elementor/ajax/register_actions', function( $ajax ) { + $handlers = [ + 'ai_get_user_information' => [ $this, 'ajax_ai_get_user_information' ], + 'ai_get_remote_config' => [ $this, 'ajax_ai_get_remote_config' ], + 'ai_get_completion_text' => [ $this, 'ajax_ai_get_completion_text' ], + 'ai_get_edit_text' => [ $this, 'ajax_ai_get_edit_text' ], + 'ai_get_custom_code' => [ $this, 'ajax_ai_get_custom_code' ], + 'ai_get_custom_css' => [ $this, 'ajax_ai_get_custom_css' ], + 'ai_set_get_started' => [ $this, 'ajax_ai_set_get_started' ], + 'ai_set_status_feedback' => [ $this, 'ajax_ai_set_status_feedback' ], + 'ai_get_image_prompt_enhancer' => [ $this, 'ajax_ai_get_image_prompt_enhancer' ], + 'ai_get_text_to_image' => [ $this, 'ajax_ai_get_text_to_image' ], + 'ai_get_image_to_image' => [ $this, 'ajax_ai_get_image_to_image' ], + 'ai_get_image_to_image_mask' => [ $this, 'ajax_ai_get_image_to_image_mask' ], + 'ai_get_image_to_image_outpainting' => [ $this, 'ajax_ai_get_image_to_image_outpainting' ], + 'ai_get_image_to_image_upscale' => [ $this, 'ajax_ai_get_image_to_image_upscale' ], + 'ai_get_image_to_image_remove_background' => [ $this, 'ajax_ai_get_image_to_image_remove_background' ], + 'ai_get_image_to_image_replace_background' => [ $this, 'ajax_ai_get_image_to_image_replace_background' ], + 'ai_upload_image' => [ $this, 'ajax_ai_upload_image' ], + 'ai_generate_layout' => [ $this, 'ajax_ai_generate_layout' ], + 'ai_get_layout_prompt_enhancer' => [ $this, 'ajax_ai_get_layout_prompt_enhancer' ], + 'ai_get_history' => [ $this, 'ajax_ai_get_history' ], + 'ai_delete_history_item' => [ $this, 'ajax_ai_delete_history_item' ], + 'ai_toggle_favorite_history_item' => [ $this, 'ajax_ai_toggle_favorite_history_item' ], + ]; + + foreach ( $handlers as $tag => $callback ) { + $ajax->register_ajax_action( $tag, $callback ); + } + } ); + + add_action( 'elementor/editor/before_enqueue_scripts', function() { + $this->enqueue_main_script(); + + if ( $this->is_layout_active() ) { + $this->enqueue_layout_script(); + } + } ); + + add_action( 'elementor/editor/after_enqueue_styles', function() { + wp_enqueue_style( + 'elementor-ai-editor', + $this->get_css_assets_url( 'modules/ai/editor' ), + [], + ELEMENTOR_VERSION + ); + } ); + + add_action( 'elementor/preview/enqueue_styles', function() { + if ( $this->is_layout_active() ) { + wp_enqueue_style( + 'elementor-ai-layout-preview', + $this->get_css_assets_url( 'modules/ai/layout-preview' ), + [], + ELEMENTOR_VERSION + ); + } + } ); + + add_filter( 'elementor/document/save/data', function ( $data ) { + if ( $this->is_layout_active() ) { + return $this->remove_temporary_containers( $data ); + } + + return $data; + } ); + } + + private function register_layout_experiment() { + Plugin::$instance->experiments->add_feature( [ + 'name' => static::LAYOUT_EXPERIMENT, + 'title' => esc_html__( 'Build with AI', 'elementor' ), + 'description' => esc_html__( 'Tap into the potential of AI to easily create and customize containers to your specifications, right within Elementor. This feature comes packed with handy AI tools, including generation, variations, and URL references.', 'elementor' ), + 'default' => Experiments_Manager::STATE_ACTIVE, + 'release_status' => Experiments_Manager::RELEASE_STATUS_STABLE, + 'dependencies' => [ + 'container', + ], + ] ); + } + + private function enqueue_main_script() { + wp_enqueue_script( + 'elementor-ai', + $this->get_js_assets_url( 'ai' ), + [ + 'react', + 'react-dom', + 'backbone-marionette', + 'elementor-web-cli', + 'wp-date', + 'elementor-common', + 'elementor-editor-modules', + 'elementor-editor-document', + 'elementor-v2-ui', + 'elementor-v2-icons', + ], + ELEMENTOR_VERSION, + true + ); + + $config = [ + 'is_get_started' => User::get_introduction_meta( 'ai_get_started' ), + 'connect_url' => $this->get_ai_connect_url(), + ]; + + if ( $this->get_ai_app()->is_connected() ) { + // Use a cached version, don't call the API on every editor load. + $config['usage'] = $this->get_ai_app()->get_cached_usage(); + } + + wp_localize_script( + 'elementor-ai', + 'ElementorAiConfig', + $config + ); + + wp_set_script_translations( 'elementor-ai', 'elementor' ); + + if ( $this->get_ai_app()->is_connected() && ! empty( $config['is_get_started'] ) ) { + $remote_config = Utils::get_cached_callback( [ $this->get_ai_app(), 'get_remote_config' ], 'ai_remote_config-' . get_current_user_id(), HOUR_IN_SECONDS ); + + if ( ! is_wp_error( $remote_config ) && ! empty( $remote_config['config']['remoteIntegrationUrl'] ) ) { + wp_enqueue_script( + 'elementor-ai-integration', + $remote_config['config']['remoteIntegrationUrl'], + [ + 'elementor-ai', + ], + ELEMENTOR_VERSION, + true + ); + } + + add_filter( 'script_loader_tag', function( $tag, $handle ) { + if ( 'elementor-ai-integration' === $handle ) { + return str_replace( ' src', ' type="module" src', $tag ); + } + return $tag; + }, 10, 2 ); + } + } + + private function enqueue_layout_script() { + wp_enqueue_script( + 'elementor-ai-layout', + $this->get_js_assets_url( 'ai-layout' ), + [ + 'react', + 'react-dom', + 'backbone-marionette', + 'elementor-common', + 'elementor-web-cli', + 'elementor-editor-modules', + 'elementor-ai', + 'elementor-v2-ui', + 'elementor-v2-icons', + ], + ELEMENTOR_VERSION, + true + ); + + wp_set_script_translations( 'elementor-ai-layout', 'elementor' ); + } + + private function is_layout_active() { + return Plugin::$instance->experiments->is_feature_active( self::LAYOUT_EXPERIMENT ); + } + + private function remove_temporary_containers( $data ) { + if ( empty( $data['elements'] ) ) { + return $data; + } + + // If for some reason the document has been saved during an AI Layout session, + // ensure that the temporary containers are removed from the data. + $data['elements'] = array_filter( $data['elements'], function( $element ) { + $is_preview_container = strpos( $element['id'], 'e-ai-preview-container' ) === 0; + $is_screenshot_container = strpos( $element['id'], 'e-ai-screenshot-container' ) === 0; + + return ! $is_preview_container && ! $is_screenshot_container; + } ); + + return $data; + } + + private function get_ai_connect_url() { + $app = $this->get_ai_app(); + + return $app->get_admin_url( 'authorize', [ + 'utm_source' => 'ai-popup', + 'utm_campaign' => 'connect-account', + 'utm_medium' => 'wp-dash', + 'source' => 'generic', + ] ); + } + + public function ajax_ai_get_user_information( $data ) { + $app = $this->get_ai_app(); + + if ( ! $app->is_connected() ) { + return [ + 'is_connected' => false, + 'connect_url' => $this->get_ai_connect_url(), + ]; + } + + $user_usage = wp_parse_args( $app->get_usage(), [ + 'hasAiSubscription' => false, + 'usedQuota' => 0, + 'quota' => 100, + ] ); + + return [ + 'is_connected' => true, + 'is_get_started' => User::get_introduction_meta( 'ai_get_started' ), + 'usage' => $user_usage, + ]; + } + + public function ajax_ai_get_remote_config() { + $app = $this->get_ai_app(); + + if ( ! $app->is_connected() ) { + return []; + } + + return $app->get_remote_config(); + } + + private function verify_permissions( $editor_post_id ) { + $document = Plugin::$instance->documents->get( $editor_post_id ); + + if ( ! $document ) { + throw new \Exception( 'Document not found' ); + } + + if ( ! $document->is_built_with_elementor() || ! $document->is_editable_by_current_user() ) { + throw new \Exception( 'Access denied' ); + } + } + + public function ajax_ai_get_image_prompt_enhancer( $data ) { + $this->verify_permissions( $data['editor_post_id'] ); + + $app = $this->get_ai_app(); + + if ( empty( $data['prompt'] ) ) { + throw new \Exception( 'Missing prompt' ); + } + + if ( ! $app->is_connected() ) { + throw new \Exception( 'not_connected' ); + } + + $result = $app->get_image_prompt_enhanced( $data['prompt'] ); + $this->throw_on_error( $result ); + + return [ + 'text' => $result['text'], + 'response_id' => $result['responseId'], + 'usage' => $result['usage'], + ]; + } + + public function ajax_ai_get_completion_text( $data ) { + $this->verify_permissions( $data['editor_post_id'] ); + + $app = $this->get_ai_app(); + + if ( empty( $data['payload']['prompt'] ) ) { + throw new \Exception( 'Missing prompt' ); + } + + if ( ! $app->is_connected() ) { + throw new \Exception( 'not_connected' ); + } + + $context = $this->get_request_context( $data ); + + $request_ids = $this->get_request_ids( $data['payload'] ); + + $result = $app->get_completion_text( $data['payload']['prompt'], $context, $request_ids ); + $this->throw_on_error( $result ); + + return [ + 'text' => $result['text'], + 'response_id' => $result['responseId'], + 'usage' => $result['usage'], + ]; + } + + private function get_ai_app() : Ai { + return Plugin::$instance->common->get_component( 'connect' )->get_app( 'ai' ); + } + + private function get_request_context( $data ) { + if ( empty( $data['context'] ) ) { + return []; + } + + return $data['context']; + } + + private function get_request_ids( $data ) { + if ( empty( $data['requestIds'] ) ) { + return new \stdClass(); + } + + return $data['requestIds']; + } + + public function ajax_ai_get_edit_text( $data ) { + $this->verify_permissions( $data['editor_post_id'] ); + + $app = $this->get_ai_app(); + + if ( empty( $data['payload']['input'] ) ) { + throw new \Exception( 'Missing input' ); + } + + if ( empty( $data['payload']['instruction'] ) ) { + throw new \Exception( 'Missing instruction' ); + } + + if ( ! $app->is_connected() ) { + throw new \Exception( 'not_connected' ); + } + + $context = $this->get_request_context( $data ); + + $request_ids = $this->get_request_ids( $data['payload'] ); + + $result = $app->get_edit_text( $data, $context, $request_ids ); + $this->throw_on_error( $result ); + + return [ + 'text' => $result['text'], + 'response_id' => $result['responseId'], + 'usage' => $result['usage'], + ]; + } + + public function ajax_ai_get_custom_code( $data ) { + $app = $this->get_ai_app(); + + if ( empty( $data['payload']['prompt'] ) ) { + throw new \Exception( 'Missing prompt' ); + } + + if ( empty( $data['payload']['language'] ) ) { + throw new \Exception( 'Missing language' ); + } + + if ( ! $app->is_connected() ) { + throw new \Exception( 'not_connected' ); + } + + $context = $this->get_request_context( $data ); + + $request_ids = $this->get_request_ids( $data['payload'] ); + + $result = $app->get_custom_code( $data, $context, $request_ids ); + $this->throw_on_error( $result ); + + return [ + 'text' => $result['text'], + 'response_id' => $result['responseId'], + 'usage' => $result['usage'], + ]; + } + + public function ajax_ai_get_custom_css( $data ) { + $this->verify_permissions( $data['editor_post_id'] ); + + $app = $this->get_ai_app(); + + if ( empty( $data['payload']['prompt'] ) ) { + throw new \Exception( 'Missing prompt' ); + } + + if ( empty( $data['payload']['html_markup'] ) ) { + $data['html_markup'] = ''; + } + + if ( empty( $data['payload']['element_id'] ) ) { + throw new \Exception( 'Missing element_id' ); + } + + if ( ! $app->is_connected() ) { + throw new \Exception( 'not_connected' ); + } + + $context = $this->get_request_context( $data ); + $request_ids = $this->get_request_ids( $data['payload'] ); + + $result = $app->get_custom_css( $data, $context, $request_ids ); + $this->throw_on_error( $result ); + + return [ + 'text' => $result['text'], + 'response_id' => $result['responseId'], + 'usage' => $result['usage'], + ]; + } + + public function ajax_ai_set_get_started( $data ) { + $app = $this->get_ai_app(); + + User::set_introduction_viewed( [ + 'introductionKey' => 'ai_get_started', + ] ); + + return $app->set_get_started(); + } + + public function ajax_ai_set_status_feedback( $data ) { + if ( empty( $data['response_id'] ) ) { + throw new \Exception( 'Missing response_id' ); + } + + $app = $this->get_ai_app(); + + if ( ! $app->is_connected() ) { + throw new \Exception( 'not_connected' ); + } + + $app->set_status_feedback( $data['response_id'] ); + + return []; + } + + public function ajax_ai_get_text_to_image( $data ) { + $this->verify_permissions( $data['editor_post_id'] ); + + if ( empty( $data['payload']['prompt'] ) ) { + throw new \Exception( 'Missing prompt' ); + } + + $app = $this->get_ai_app(); + + if ( ! $app->is_connected() ) { + throw new \Exception( 'not_connected' ); + } + + $context = $this->get_request_context( $data ); + $request_ids = $this->get_request_ids( $data['payload'] ); + + $result = $app->get_text_to_image( $data, $context, $request_ids ); + + $this->throw_on_error( $result ); + + return [ + 'images' => $result['images'], + 'response_id' => $result['responseId'], + 'usage' => $result['usage'], + ]; + } + + public function ajax_ai_get_image_to_image( $data ) { + $this->verify_permissions( $data['editor_post_id'] ); + + $app = $this->get_ai_app(); + + if ( empty( $data['payload']['prompt'] ) ) { + throw new \Exception( 'Missing prompt' ); + } + + if ( empty( $data['payload']['image'] ) || empty( $data['payload']['image']['id'] ) ) { + throw new \Exception( 'Missing Image' ); + } + + if ( empty( $data['payload']['settings'] ) ) { + throw new \Exception( 'Missing prompt settings' ); + } + + if ( ! $app->is_connected() ) { + throw new \Exception( 'not_connected' ); + } + + $context = $this->get_request_context( $data ); + $request_ids = $this->get_request_ids( $data['payload'] ); + + $result = $app->get_image_to_image( [ + 'prompt' => $data['payload']['prompt'], + 'promptSettings' => $data['payload']['settings'], + 'attachment_id' => $data['payload']['image']['id'], + ], $context, $request_ids ); + + $this->throw_on_error( $result ); + + return [ + 'images' => $result['images'], + 'response_id' => $result['responseId'], + 'usage' => $result['usage'], + ]; + } + + public function ajax_ai_get_image_to_image_upscale( $data ) { + $this->verify_permissions( $data['editor_post_id'] ); + + $app = $this->get_ai_app(); + + if ( empty( $data['payload']['image'] ) || empty( $data['payload']['image']['id'] ) ) { + throw new \Exception( 'Missing Image' ); + } + + if ( empty( $data['payload']['promptSettings'] ) ) { + throw new \Exception( 'Missing prompt settings' ); + } + + if ( ! $app->is_connected() ) { + throw new \Exception( 'not_connected' ); + } + + $context = $this->get_request_context( $data ); + $request_ids = $this->get_request_ids( $data['payload'] ); + + $result = $app->get_image_to_image_upscale( [ + 'promptSettings' => $data['payload']['promptSettings'], + 'attachment_id' => $data['payload']['image']['id'], + ], $context, $request_ids ); + + $this->throw_on_error( $result ); + + return [ + 'images' => $result['images'], + 'response_id' => $result['responseId'], + 'usage' => $result['usage'], + ]; + } + + public function ajax_ai_get_image_to_image_replace_background( $data ) { + $this->verify_permissions( $data['editor_post_id'] ); + + $app = $this->get_ai_app(); + + if ( empty( $data['payload']['image'] ) || empty( $data['payload']['image']['id'] ) ) { + throw new \Exception( 'Missing Image' ); + } + + if ( empty( $data['payload']['prompt'] ) ) { + throw new \Exception( 'Prompt Missing' ); + } + + if ( ! $app->is_connected() ) { + throw new \Exception( 'not_connected' ); + } + + $context = $this->get_request_context( $data ); + $request_ids = $this->get_request_ids( $data['payload'] ); + + $result = $app->get_image_to_image_replace_background( [ + 'attachment_id' => $data['payload']['image']['id'], + 'prompt' => $data['payload']['prompt'], + ], $context, $request_ids ); + + $this->throw_on_error( $result ); + + return [ + 'images' => $result['images'], + 'response_id' => $result['responseId'], + 'usage' => $result['usage'], + ]; + } + + public function ajax_ai_get_image_to_image_remove_background( $data ) { + $this->verify_permissions( $data['editor_post_id'] ); + + $app = $this->get_ai_app(); + + if ( empty( $data['payload']['image'] ) || empty( $data['payload']['image']['id'] ) ) { + throw new \Exception( 'Missing Image' ); + } + + if ( ! $app->is_connected() ) { + throw new \Exception( 'not_connected' ); + } + + $context = $this->get_request_context( $data ); + $request_ids = $this->get_request_ids( $data['payload'] ); + $result = $app->get_image_to_image_remove_background( [ + 'attachment_id' => $data['payload']['image']['id'], + ], $context, $request_ids ); + + $this->throw_on_error( $result ); + + return [ + 'images' => $result['images'], + 'response_id' => $result['responseId'], + 'usage' => $result['usage'], + ]; + } + + public function ajax_ai_get_image_to_image_mask( $data ) { + $this->verify_permissions( $data['editor_post_id'] ); + + $app = $this->get_ai_app(); + + if ( empty( $data['payload']['prompt'] ) ) { + throw new \Exception( 'Missing prompt' ); + } + + if ( empty( $data['payload']['image'] ) || empty( $data['payload']['image']['id'] ) ) { + throw new \Exception( 'Missing Image' ); + } + + if ( empty( $data['payload']['settings'] ) ) { + throw new \Exception( 'Missing prompt settings' ); + } + + if ( ! $app->is_connected() ) { + throw new \Exception( 'not_connected' ); + } + + if ( empty( $data['payload']['mask'] ) ) { + throw new \Exception( 'Missing Mask' ); + } + + $context = $this->get_request_context( $data ); + $request_ids = $this->get_request_ids( $data['payload'] ); + + $result = $app->get_image_to_image_mask( [ + 'prompt' => $data['payload']['prompt'], + 'promptSettings' => $data['payload']['settings'], + 'attachment_id' => $data['payload']['image']['id'], + 'mask' => $data['payload']['mask'], + ], $context, $request_ids ); + + $this->throw_on_error( $result ); + + return [ + 'images' => $result['images'], + 'response_id' => $result['responseId'], + 'usage' => $result['usage'], + ]; + } + public function ajax_ai_get_image_to_image_outpainting( $data ) { + $this->verify_permissions( $data['editor_post_id'] ); + + $app = $this->get_ai_app(); + + if ( empty( $data['payload']['prompt'] ) ) { + throw new \Exception( 'Missing prompt' ); + } + + if ( ! $app->is_connected() ) { + throw new \Exception( 'not_connected' ); + } + + if ( empty( $data['payload']['mask'] ) ) { + throw new \Exception( 'Missing Expended Image' ); + } + + $context = $this->get_request_context( $data ); + $request_ids = $this->get_request_ids( $data['payload'] ); + $result = $app->get_image_to_image_out_painting( [ + 'prompt' => $data['payload']['prompt'], + 'mask' => $data['payload']['mask'], + ], $context, $request_ids ); + + $this->throw_on_error( $result ); + + return [ + 'images' => $result['images'], + 'response_id' => $result['responseId'], + 'usage' => $result['usage'], + ]; + } + + public function ajax_ai_upload_image( $data ) { + if ( empty( $data['image'] ) ) { + throw new \Exception( 'Missing image data' ); + } + + $image = $data['image']; + + if ( empty( $image['image_url'] ) ) { + throw new \Exception( 'Missing image_url' ); + } + + $image_data = $this->upload_image( $image['image_url'], $data['prompt'], $data['editor_post_id'] ); + + if ( is_wp_error( $image_data ) ) { + throw new \Exception( $image_data->get_error_message() ); + } + + if ( ! empty( $image['use_gallery_image'] ) && ! empty( $image['id'] ) ) { + $app = $this->get_ai_app(); + $app->set_used_gallery_image( $image['id'] ); + } + + return [ + 'image' => array_merge( $image_data, $data ), + ]; + } + + public function ajax_ai_generate_layout( $data ) { + $this->verify_permissions( $data['editor_post_id'] ); + + $app = $this->get_ai_app(); + + if ( empty( $data['prompt'] ) && empty( $data['attachments'] ) ) { + throw new \Exception( 'Missing prompt / attachments' ); + } + + if ( ! $app->is_connected() ) { + throw new \Exception( 'not_connected' ); + } + + $result = $app->generate_layout( + $data, + $this->prepare_generate_layout_context() + ); + + if ( is_wp_error( $result ) ) { + $message = $result->get_error_message(); + + if ( is_array( $message ) ) { + $message = implode( ', ', $message ); + throw new \Exception( $message ); + } + + $this->throw_on_error( $result ); + } + + $elements = $result['text']['elements'] ?? []; + $base_template_id = $result['baseTemplateId'] ?? null; + $template_type = $result['templateType'] ?? null; + + if ( empty( $elements ) || ! is_array( $elements ) ) { + throw new \Exception( 'unknown_error' ); + } + + if ( 1 === count( $elements ) ) { + $template = $elements[0]; + } else { + $template = [ + 'elType' => 'container', + 'elements' => $elements, + 'settings' => [ + 'content_width' => 'full', + 'flex_gap' => [ + 'column' => '0', + 'row' => '0', + 'unit' => 'px', + ], + 'padding' => [ + 'unit' => 'px', + 'top' => '0', + 'right' => '0', + 'bottom' => '0', + 'left' => '0', + 'isLinked' => true, + ], + ], + ]; + } + + return [ + 'all' => [], + 'text' => $template, + 'response_id' => $result['responseId'], + 'usage' => $result['usage'], + 'base_template_id' => $base_template_id, + 'template_type' => $template_type, + ]; + } + + public function ajax_ai_get_layout_prompt_enhancer( $data ) { + $this->verify_permissions( $data['editor_post_id'] ); + + $app = $this->get_ai_app(); + + if ( empty( $data['prompt'] ) ) { + throw new \Exception( 'Missing prompt' ); + } + + if ( ! $app->is_connected() ) { + throw new \Exception( 'not_connected' ); + } + + $result = $app->get_layout_prompt_enhanced( + $data['prompt'], + $data['enhance_type'], + $this->prepare_generate_layout_context() + ); + + $this->throw_on_error( $result ); + + return [ + 'text' => $result['text'] ?? $data['prompt'], + 'response_id' => $result['responseId'] ?? '', + 'usage' => $result['usage'] ?? '', + ]; + } + + private function prepare_generate_layout_context() { + $kit = Plugin::$instance->kits_manager->get_active_kit(); + + if ( ! $kit ) { + return []; + } + + $kits_data = Collection::make( $kit->get_data()['settings'] ?? [] ); + + $colors = $kits_data + ->filter( function ( $_, $key ) { + return in_array( $key, [ 'system_colors', 'custom_colors' ], true ); + } ) + ->flatten() + ->filter( function ( $val ) { + return ! empty( $val['_id'] ); + } ) + ->map( function ( $val ) { + return [ + 'id' => $val['_id'], + 'label' => $val['title'] ?? null, + 'value' => $val['color'] ?? null, + ]; + } ); + + $typography = $kits_data + ->filter( function ( $_, $key ) { + return in_array( $key, [ 'system_typography', 'custom_typography' ], true ); + } ) + ->flatten() + ->filter( function ( $val ) { + return ! empty( $val['_id'] ); + } ) + ->map( function ( $val ) { + $font_size = null; + + if ( isset( + $val['typography_font_size']['unit'], + $val['typography_font_size']['size'] + ) ) { + $prop = $val['typography_font_size']; + + $font_size = 'custom' === $prop['unit'] + ? $prop['size'] + : $prop['size'] . $prop['unit']; + } + + return [ + 'id' => $val['_id'], + 'label' => $val['title'] ?? null, + 'value' => [ + 'family' => $val['typography_font_family'] ?? null, + 'weight' => $val['typography_font_weight'] ?? null, + 'style' => $val['typography_font_style'] ?? null, + 'size' => $font_size, + ], + ]; + } ); + + return [ + 'globals' => [ + 'colors' => $colors->all(), + 'typography' => $typography->all(), + ], + ]; + } + + private function upload_image( $image_url, $image_title, $parent_post_id = 0 ) { + if ( ! current_user_can( 'upload_files' ) ) { + throw new \Exception( 'Not Allowed to Upload images' ); + } + + $attachment_id = media_sideload_image( $image_url, $parent_post_id, $image_title, 'id' ); + + if ( ! empty( $attachment_id['error'] ) ) { + return new \WP_Error( 'upload_error', $attachment_id['error'] ); + } + + return [ + 'id' => $attachment_id, + 'url' => wp_get_attachment_image_url( $attachment_id, 'full' ), + 'alt' => $image_title, + 'source' => 'library', + ]; + } + + public function ajax_ai_get_history( $data ): array { + $type = $data['type'] ?? self::HISTORY_TYPE_ALL; + + if ( ! in_array( $type, self::VALID_HISTORY_TYPES, true ) ) { + throw new \Exception( 'Invalid history type' ); + } + + $page = sanitize_text_field( $data['page'] ?? 1 ); + $limit = sanitize_text_field( $data['limit'] ?? 10 ); + + $app = $this->get_ai_app(); + + if ( ! $app->is_connected() ) { + throw new \Exception( 'not_connected' ); + } + + $context = $this->get_request_context( $data ); + + $result = $app->get_history_by_type( $type, $page, $limit, $context ); + + if ( is_wp_error( $result ) ) { + throw new \Exception( $result->get_error_message() ); + } + + return $result; + } + + public function ajax_ai_delete_history_item( $data ): array { + if ( empty( $data['id'] ) || ! wp_is_uuid( $data['id'] ) ) { + throw new \Exception( 'Missing id parameter' ); + } + + $app = $this->get_ai_app(); + + if ( ! $app->is_connected() ) { + throw new \Exception( 'not_connected' ); + } + + $context = $this->get_request_context( $data ); + + $result = $app->delete_history_item( $data['id'], $context ); + + if ( is_wp_error( $result ) ) { + throw new \Exception( $result->get_error_message() ); + } + + return []; + } + + public function ajax_ai_toggle_favorite_history_item( $data ): array { + if ( empty( $data['id'] ) || ! wp_is_uuid( $data['id'] ) ) { + throw new \Exception( 'Missing id parameter' ); + } + + $app = $this->get_ai_app(); + + if ( ! $app->is_connected() ) { + throw new \Exception( 'not_connected' ); + } + + $context = $this->get_request_context( $data ); + + $result = $app->toggle_favorite_history_item( $data['id'], $context ); + + if ( is_wp_error( $result ) ) { + throw new \Exception( $result->get_error_message() ); + } + + return []; + } + + /** + * @param mixed $result + */ + private function throw_on_error( $result ): void { + if ( is_wp_error( $result ) ) { + wp_send_json_error( [ + 'message' => $result->get_error_message(), + 'extra_data' => $result->get_error_data(), + ] ); + } + } +} diff --git a/wp-content/plugins/elementor/modules/announcements/classes/announcement.php b/wp-content/plugins/elementor/modules/announcements/classes/announcement.php new file mode 100644 index 0000000..5b574f5 --- /dev/null +++ b/wp-content/plugins/elementor/modules/announcements/classes/announcement.php @@ -0,0 +1,76 @@ +raw_data = $data; + $this->set_triggers(); + } + + /** + * @return array + */ + protected function get_triggers(): array { + return $this->triggers; + } + + protected function set_triggers() { + $triggers = $this->raw_data['triggers'] ?? []; + foreach ( $triggers as $trigger ) { + $this->triggers[] = Utils::get_trigger_object( $trigger ); + } + } + + /** + * is_active + * @return bool + */ + public function is_active(): bool { + $triggers = $this->get_triggers(); + + if ( empty( $triggers ) ) { + return true; + } + + foreach ( $triggers as $trigger ) { + if ( ! $trigger->is_active() ) { + return false; + } + } + + return true; + } + + public function after_triggered() { + foreach ( $this->get_triggers() as $trigger ) { + if ( $trigger->is_active() ) { + $trigger->after_triggered(); + } + } + } + + /** + * @return array + */ + public function get_prepared_data(): array { + $raw_data = $this->raw_data; + unset( $raw_data['triggers'] ); + + return $raw_data; + } +} diff --git a/wp-content/plugins/elementor/modules/announcements/classes/trigger-base.php b/wp-content/plugins/elementor/modules/announcements/classes/trigger-base.php new file mode 100644 index 0000000..19cded6 --- /dev/null +++ b/wp-content/plugins/elementor/modules/announcements/classes/trigger-base.php @@ -0,0 +1,32 @@ +name; + } + + /** + * @return bool + */ + public function is_active(): bool { + return true; + } + + public function after_triggered() { + } +} diff --git a/wp-content/plugins/elementor/modules/announcements/classes/utils.php b/wp-content/plugins/elementor/modules/announcements/classes/utils.php new file mode 100644 index 0000000..eb46f62 --- /dev/null +++ b/wp-content/plugins/elementor/modules/announcements/classes/utils.php @@ -0,0 +1,38 @@ + +
    + get_js_assets_url( 'announcements-app' ), + [ + 'wp-i18n', + ], + ELEMENTOR_VERSION, + true + ); + + wp_set_script_translations( 'announcements-app', 'elementor' ); + + $this->print_config( 'announcements-app' ); + } + + /** + * Get initialization settings to use in frontend. + * + * @return array[] + */ + protected function get_init_settings(): array { + $active_announcements = $this->get_active_announcements(); + $additional_settings = []; + + foreach ( $active_announcements as $announcement ) { + $additional_settings[] = $announcement->get_prepared_data(); + //@TODO - replace with ajax request from the front after actually triggered + $announcement->after_triggered(); + } + + return [ + 'announcements' => $additional_settings, + ]; + } + + /** + * Enqueue the module styles. + */ + public function enqueue_styles() { + wp_enqueue_style( + 'announcements-app', + $this->get_css_assets_url( 'modules/announcements/announcements' ), + [], + ELEMENTOR_VERSION + ); + } + + /** + * Retrieve all announcement in raw format ( array ). + * + * @return array[] + */ + private function get_raw_announcements(): array { + $raw_announcements = [ + [ + 'title' => 'Unlock the Power of Elementor AI ', + 'description' => '

    Design a website true to your brand with natively integrated AI tools.

    +
      +
    • Generate containers using text or any website you reference from the web and get a wireframe layout to start with. Use the container variations capability to bring the wireframe to life with design and content.
    • +
    • Let AI write or edit your text in the context of your brand, tone of voice and optimal length. Also generate custom code or CSS that seamlessly integrates into your website.
    • +
    • Create one-of-a-kind images, add, or erase content from existing images or expand them beyond their original size and aspect ratio.
    • +
    • Use Elementor’s AI History Panel to efficiently access previously-generated text, code or image prompts, and ensure consistency across your site.
    • +
    ', + 'media' => [ + 'type' => 'image', + 'src' => ELEMENTOR_ASSETS_URL . 'images/announcement.png?' . ELEMENTOR_VERSION, + ], + 'cta' => [ + [ + 'label' => 'Continue', + 'variant' => 'primary', + 'target' => '_blank', + ], + [ + 'label' => 'Learn More', + 'target' => '_blank', + 'url' => 'https://go.elementor.com/whats-new-popup-learn-elementor-ai/', + ], + ], + 'triggers' => [ + [ + 'action' => 'aiStared', + ], + ], + ], + ]; + + // DO NOT USE THIS FILTER + return apply_filters( 'elementor/announcements/raw_announcements', $raw_announcements ); + } + + /** + * Retrieve all announcement objects. + * + * @return array + */ + private function get_announcements(): array { + $announcements = []; + foreach ( $this->get_raw_announcements() as $announcement_data ) { + $announcements[] = new Announcement( $announcement_data ); + } + + return $announcements; + } + + /** + * Retrieve all active announcement objects. + * + * @return array + */ + private function get_active_announcements(): array { + $active_announcements = []; + foreach ( $this->get_announcements() as $announcement ) { + if ( $announcement->is_active() ) { + $active_announcements[] = $announcement; + } + } + + return $active_announcements; + } + + public function __construct() { + parent::__construct(); + + add_action( 'elementor/init', [ $this, 'on_elementor_init' ] ); + } + + public function on_elementor_init() { + if ( empty( $this->get_active_announcements() ) ) { + return; + } + + add_action( 'elementor/editor/footer', function () { + $this->render_app_wrapper(); + } ); + + add_action( 'elementor/editor/after_enqueue_scripts', function () { + $this->enqueue_scripts(); + $this->enqueue_styles(); + } ); + } +} diff --git a/wp-content/plugins/elementor/modules/announcements/triggers/ai-started.php b/wp-content/plugins/elementor/modules/announcements/triggers/ai-started.php new file mode 100644 index 0000000..9991ad9 --- /dev/null +++ b/wp-content/plugins/elementor/modules/announcements/triggers/ai-started.php @@ -0,0 +1,28 @@ + $this->name ] ); + } + + /** + * @return bool + */ + public function is_active(): bool { + return ! User::get_introduction_meta( 'ai_get_started' ) && ! User::get_introduction_meta( $this->name ); + } +} diff --git a/wp-content/plugins/elementor/modules/announcements/triggers/is-flex-container-inactive.php b/wp-content/plugins/elementor/modules/announcements/triggers/is-flex-container-inactive.php new file mode 100644 index 0000000..c203e9c --- /dev/null +++ b/wp-content/plugins/elementor/modules/announcements/triggers/is-flex-container-inactive.php @@ -0,0 +1,50 @@ +get_user_announcement_count(); + + return ! empty( $user_counter ) ? (int) $user_counter : 0; + } + + public function after_triggered() { + $new_counter = $this->get_view_count() + 1; + update_user_meta( get_current_user_id(), self::USER_META_KEY, $new_counter ); + } + + /** + * @return bool + */ + public function is_active(): bool { + $is_feature_active = Plugin::$instance->experiments->is_feature_active( 'container' ); + $counter = $this->get_user_announcement_count(); + + return ! $is_feature_active && (int) $counter < 1; + } + + /** + * @return string + */ + private function get_user_announcement_count(): string { + return get_user_meta( get_current_user_id(), self::USER_META_KEY, true ); + } +} diff --git a/wp-content/plugins/elementor/modules/apps/admin-apps-page.php b/wp-content/plugins/elementor/modules/apps/admin-apps-page.php new file mode 100644 index 0000000..00068fc --- /dev/null +++ b/wp-content/plugins/elementor/modules/apps/admin-apps-page.php @@ -0,0 +1,196 @@ + +
    + +
    +

    +

    *
    + +

    +
    + +
    + +
    + +
    + +
    +
    + <?php echo esc_attr( $plugin['name'] ); ?> + + + +
    +

    +

    +
    +

    + +

    + +
    + +

    + + + + +

    +
    + ' . esc_html__( 'New! Popular Add-ons', 'elementor' ) . ''; + $pointer_content .= '

    ' . esc_html__( 'Discover our collection of plugins and add-ons carefully selected to enhance your Elementor website and unleash your creativity.', 'elementor' ) . '

    '; + + $pointer_content .= sprintf( + '

    %s

    ', + admin_url( 'admin.php?page=' . Module::PAGE_ID ), + esc_html__( 'Explore Add-ons', 'elementor' ) + ) + + ?> + + =' ); + } +} diff --git a/wp-content/plugins/elementor/modules/apps/module.php b/wp-content/plugins/elementor/modules/apps/module.php new file mode 100644 index 0000000..289a5a4 --- /dev/null +++ b/wp-content/plugins/elementor/modules/apps/module.php @@ -0,0 +1,109 @@ +register( static::PAGE_ID, new Admin_Menu_Apps() ); + }, 115 ); + + add_action( 'elementor/admin/menu/after_register', function ( Admin_Menu_Manager $admin_menu, array $hooks ) { + if ( ! empty( $hooks[ static::PAGE_ID ] ) ) { + add_action( "admin_print_scripts-{$hooks[ static::PAGE_ID ]}", [ $this, 'enqueue_assets' ] ); + } + }, 10, 2 ); + + add_filter( 'elementor/finder/categories', function( array $categories ) { + $categories['site']['items']['apps'] = [ + 'title' => esc_html__( 'Add-ons', 'elementor' ), + 'url' => admin_url( 'admin.php?page=' . static::PAGE_ID ), + 'icon' => 'apps', + 'keywords' => [ 'apps', 'addon', 'plugin', 'extension', 'integration' ], + ]; + + return $categories; + } ); + + // Add the Elementor Apps link to the plugin install action links. + add_filter( 'install_plugins_tabs', [ $this, 'add_elementor_plugin_install_action_link' ] ); + add_action( 'install_plugins_pre_elementor', [ $this, 'maybe_open_elementor_tab' ] ); + add_action( 'admin_print_styles-plugin-install.php', [ $this, 'add_plugins_page_styles' ] ); + } + + public function enqueue_assets() { + add_filter( 'admin_body_class', [ $this, 'body_status_classes' ] ); + + wp_enqueue_style( + 'elementor-apps', + $this->get_css_assets_url( 'modules/apps/admin' ), + [], + ELEMENTOR_VERSION + ); + } + + public function body_status_classes( $admin_body_classes ) { + $admin_body_classes .= ' elementor-apps-page'; + + return $admin_body_classes; + } + + public function add_elementor_plugin_install_action_link( $tabs ) { + $tabs['elementor'] = esc_html__( 'For Elementor', 'elementor' ); + + return $tabs; + } + + public function maybe_open_elementor_tab() { + if ( ! isset( $_GET['tab'] ) || 'elementor' !== $_GET['tab'] ) { + return; + } + + $elementor_url = add_query_arg( [ + 'page' => static::PAGE_ID, + 'tab' => 'elementor', + 'ref' => 'plugins', + ], admin_url( 'admin.php' ) ); + + wp_safe_redirect( $elementor_url ); + exit; + } + + public function add_plugins_page_styles() { + ?> + + compatibility_tag_service ) { + $this->compatibility_tag_service = new Compatibility_Tag( $this->get_plugin_header() ); + } + + return $this->compatibility_tag_service; + } + + /** + * Add allowed headers to plugins. + * + * @param array $headers + * @param $compatibility_tag_header + * + * @return array + */ + protected function enable_elementor_headers( array $headers, $compatibility_tag_header ) { + $headers[] = $compatibility_tag_header; + + return $headers; + } + + /** + * @return Collection + */ + protected function get_plugins_to_check() { + return $this->get_plugins_with_header(); + } + + /** + * Append a compatibility message to the update plugin warning. + * + * @param array $args + * + * @throws \Exception + */ + protected function on_plugin_update_message( array $args ) { + $new_version = Version::create_from_string( $args['new_version'] ); + + if ( $new_version->compare( '=', $args['Version'], Version::PART_MAJOR_2 ) ) { + return; + } + + $plugins = $this->get_plugins_to_check(); + $plugins_compatibility = $this->get_compatibility_tag_service()->check( $new_version, $plugins->keys() ); + + $plugins = $plugins->filter( function ( $data, $plugin_name ) use ( $plugins_compatibility ) { + return Compatibility_Tag::COMPATIBLE !== $plugins_compatibility[ $plugin_name ]; + } ); + + if ( $plugins->is_empty() ) { + return; + } + + include __DIR__ . '/views/plugin-update-message-compatibility.php'; + } + + /** + * Get all plugins with specific header. + * + * @return Collection + */ + private function get_plugins_with_header() { + return Plugin::$instance->wp + ->get_plugins() + ->filter( function ( array $plugin ) { + return ! empty( $plugin[ $this->get_plugin_header() ] ); + } ); + } + + /** + * @return string + */ + abstract protected function get_plugin_header(); + + /** + * @return string + */ + abstract protected function get_plugin_label(); + + /** + * @return string + */ + abstract protected function get_plugin_name(); + + /** + * @return string + */ + abstract protected function get_plugin_version(); + + /** + * Base_Module constructor. + * + * @throws \Exception + */ + public function __construct() { + add_filter( 'extra_plugin_headers', function ( array $headers ) { + return $this->enable_elementor_headers( $headers, $this->get_plugin_header() ); + } ); + + add_action( 'in_plugin_update_message-' . $this->get_plugin_name(), function ( array $args ) { + $this->on_plugin_update_message( $args ); + }, 11 /* After the warning message for backup */ ); + + add_action( 'elementor/system_info/get_allowed_reports', function () { + $plugin_short_name = basename( $this->get_plugin_name(), '.php' ); + + System_Info::add_report( + "{$plugin_short_name}_compatibility", + [ + 'file_name' => __DIR__ . '/compatibility-tag-report.php', + 'class_name' => __NAMESPACE__ . '\Compatibility_Tag_Report', + 'fields' => [ + 'compatibility_tag_service' => $this->get_compatibility_tag_service(), + 'plugin_label' => $this->get_plugin_label(), + 'plugin_version' => Version::create_from_string( $this->get_plugin_version() ), + 'plugins_to_check' => $this->get_plugins_to_check() + ->only( get_option( 'active_plugins' ) ) + ->keys(), + ], + ] + ); + } ); + } +} diff --git a/wp-content/plugins/elementor/modules/compatibility-tag/compatibility-tag-report.php b/wp-content/plugins/elementor/modules/compatibility-tag/compatibility-tag-report.php new file mode 100644 index 0000000..7e38825 --- /dev/null +++ b/wp-content/plugins/elementor/modules/compatibility-tag/compatibility-tag-report.php @@ -0,0 +1,176 @@ +compatibility_tag_service = $this->_properties['fields']['compatibility_tag_service']; + $this->plugin_label = $this->_properties['fields']['plugin_label']; + $this->plugin_version = $this->_properties['fields']['plugin_version']; + $this->plugins_to_check = $this->_properties['fields']['plugins_to_check']; + } + + /** + * The title of the report + * + * @return string + */ + public function get_title() { + return $this->plugin_label . ' - Compatibility Tag'; + } + + /** + * Report fields + * + * @return string[] + */ + public function get_fields() { + return [ + 'report_data' => '', + ]; + } + + /** + * Report data. + * + * @return string[] + * @throws \Exception + */ + public function get_report_data() { + $compatibility_status = $this->compatibility_tag_service->check( + $this->plugin_version, + $this->plugins_to_check + ); + + return [ + 'value' => $compatibility_status, + ]; + } + + public function get_html_report_data() { + $compatibility_status = $this->compatibility_tag_service->check( + $this->plugin_version, + $this->plugins_to_check + ); + + $compatibility_status = $this->get_html_from_compatibility_status( $compatibility_status ); + + return [ + 'value' => $compatibility_status, + ]; + } + + public function get_raw_report_data() { + $compatibility_status = $this->compatibility_tag_service->check( + $this->plugin_version, + $this->plugins_to_check + ); + + $compatibility_status = $this->get_raw_from_compatibility_status( $compatibility_status ); + + return [ + 'value' => $compatibility_status, + ]; + } + + /** + * Merge compatibility status with the plugins data. + * + * @param array $compatibility_status + * + * @return Collection + */ + private function merge_compatibility_status_with_plugins( array $compatibility_status ) { + $labels = $this->get_report_labels(); + + $compatibility_status = ( new Collection( $compatibility_status ) ) + ->map( function ( $value ) use ( $labels ) { + $status = isset( $labels[ $value ] ) ? $labels[ $value ] : esc_html__( 'Unknown', 'elementor' ); + + return [ 'compatibility_status' => $status ]; + } ); + + return Plugin::$instance->wp + ->get_plugins() + ->only( $compatibility_status->keys() ) + ->merge_recursive( $compatibility_status ); + } + + /** + * Format compatibility status into HTML. + * + * @param array $compatibility_status + * + * @return string + */ + private function get_html_from_compatibility_status( array $compatibility_status ) { + return $this->merge_compatibility_status_with_plugins( $compatibility_status ) + ->map( function ( array $plugin ) { + return "
    {$plugin['Name']} {$plugin['compatibility_status']}
    + + + + + $plugin_data ) : ?> + get_plugin_header() ] = esc_html__( 'Unknown', 'elementor' ); + } + ?> + + + + + + +
    get_plugin_label() ) ); + ?>
    get_plugin_header() ] ); ?>
    + + diff --git a/wp-content/plugins/elementor/modules/container-converter/module.php b/wp-content/plugins/elementor/modules/container-converter/module.php new file mode 100644 index 0000000..d20f339 --- /dev/null +++ b/wp-content/plugins/elementor/modules/container-converter/module.php @@ -0,0 +1,170 @@ +experiments->is_feature_active( 'container' ); + } + + /** + * Enqueue the module scripts. + * + * @return void + */ + public function enqueue_scripts() { + wp_enqueue_script( + 'container-converter', + $this->get_js_assets_url( 'container-converter' ), + [ 'elementor-editor' ], + ELEMENTOR_VERSION, + true + ); + } + + /** + * Enqueue the module styles. + * + * @return void + */ + public function enqueue_styles() { + wp_enqueue_style( + 'container-converter', + $this->get_css_assets_url( 'modules/container-converter/editor' ), + [], + ELEMENTOR_VERSION + ); + } + + /** + * Add a convert button to sections. + * + * @param \Elementor\Controls_Stack $controls_stack + * + * @return void + */ + protected function add_section_convert_button( Controls_Stack $controls_stack ) { + if ( ! Plugin::$instance->editor->is_edit_mode() ) { + return; + } + + $controls_stack->start_injection( [ + 'of' => '_title', + ] ); + + $controls_stack->add_control( + 'convert_to_container', + [ + 'type' => Controls_Manager::BUTTON, + 'label' => esc_html__( 'Convert to container', 'elementor' ), + 'text' => esc_html__( 'Convert', 'elementor' ), + 'button_type' => 'default', + 'description' => esc_html__( 'Copies all of the selected sections and columns and pastes them in a container beneath the original.', 'elementor' ), + 'separator' => 'after', + 'event' => static::EVENT_NAME, + ] + ); + + $controls_stack->end_injection(); + } + + /** + * Add a convert button to page settings. + * + * @param \Elementor\Controls_Stack $controls_stack + * + * @return void + */ + protected function add_page_convert_button( Controls_Stack $controls_stack ) { + if ( ! Plugin::$instance->editor->is_edit_mode() || ! $this->page_contains_sections( $controls_stack ) || ! Plugin::$instance->role_manager->user_can( 'design' ) ) { + return; + } + + $controls_stack->start_injection( [ + 'of' => 'post_title', + 'at' => 'before', + ] ); + + $controls_stack->add_control( + 'convert_to_container', + [ + 'type' => Controls_Manager::BUTTON, + 'label' => esc_html__( 'Convert to container', 'elementor' ), + 'text' => esc_html__( 'Convert', 'elementor' ), + 'button_type' => 'default', + 'description' => esc_html__( 'Copies all of the selected sections and columns and pastes them in a container beneath the original.', 'elementor' ), + 'separator' => 'after', + 'event' => static::EVENT_NAME, + ] + ); + + $controls_stack->end_injection(); + } + + /** + * Checks if document has any Section elements. + * + * @param \Elementor\Controls_Stack $controls_stack + * + * @return bool + */ + protected function page_contains_sections( $controls_stack ) { + $data = $controls_stack->get_elements_data(); + + if ( ! is_array( $data ) ) { + return false; + } + + foreach ( $data as $element ) { + if ( isset( $element['elType'] ) && 'section' === $element['elType'] ) { + return true; + } + } + + return false; + } + + /** + * Initialize the Container-Converter module. + * + * @return void + */ + public function __construct() { + add_action( 'elementor/editor/after_enqueue_scripts', [ $this, 'enqueue_scripts' ] ); + add_action( 'elementor/editor/after_enqueue_styles', [ $this, 'enqueue_styles' ] ); + + add_action( 'elementor/element/section/section_layout/after_section_end', function ( Controls_Stack $controls_stack ) { + $this->add_section_convert_button( $controls_stack ); + } ); + + add_action( 'elementor/documents/register_controls', function ( Controls_Stack $controls_stack ) { + $this->add_page_convert_button( $controls_stack ); + } ); + } +} diff --git a/wp-content/plugins/elementor/modules/dev-tools/deprecation.php b/wp-content/plugins/elementor/modules/dev-tools/deprecation.php new file mode 100644 index 0000000..91c27b9 --- /dev/null +++ b/wp-content/plugins/elementor/modules/dev-tools/deprecation.php @@ -0,0 +1,369 @@ +current_version = $current_version; + } + + public function get_settings() { + return [ + 'soft_notices' => $this->soft_deprecated_notices, + 'soft_version_count' => self::SOFT_VERSIONS_COUNT, + 'hard_version_count' => self::HARD_VERSIONS_COUNT, + 'current_version' => ELEMENTOR_VERSION, + ]; + } + + /** + * Get total of major. + * + * Since `get_total_major` cannot determine how much really versions between 2.9.0 and 3.3.0 if there is 2.10.0 version for example, + * versions with major2 more then 9 will be added to total. + * + * @since 3.1.0 + * + * @param array $parsed_version + * + * @return int + */ + public function get_total_major( $parsed_version ) { + $major1 = $parsed_version['major1']; + $major2 = $parsed_version['major2']; + $major2 = $major2 > 9 ? 9 : $major2; + $minor = 0; + + $total = intval( "{$major1}{$major2}{$minor}" ); + + if ( $total > 99 ) { + $total = $total / 10; + } else { + $total = intval( $total / 10 ); + } + + if ( $parsed_version['major2'] > 9 ) { + $total += $parsed_version['major2'] - 9; + } + + return $total; + } + + /** + * Get next version. + * + * @since 3.1.0 + * + * @param string $version + * @param int $count + * + * @return string|false + */ + public function get_next_version( $version, $count = 1 ) { + $version = $this->parse_version( $version ); + + if ( ! $version ) { + return false; + } + + $version['total'] = $this->get_total_major( $version ) + $count; + + $total = $version['total']; + + if ( $total > 9 ) { + $version['major1'] = intval( $total / 10 ); + $version['major2'] = $total % 10; + } else { + $version['major1'] = 0; + $version['major2'] = $total; + } + + $version['minor'] = 0; + + return $this->implode_version( $version ); + } + + /** + * Implode parsed version to string version. + * + * @since 3.1.0 + * + * @param array $parsed_version + * + * @return string + */ + public function implode_version( $parsed_version ) { + $major1 = $parsed_version['major1']; + $major2 = $parsed_version['major2']; + $minor = $parsed_version['minor']; + + return "{$major1}.{$major2}.{$minor}"; + } + + /** + * Parse to an informative array. + * + * @since 3.1.0 + * + * @param string $version + * + * @return array|false + */ + public function parse_version( $version ) { + $version_explode = explode( '.', $version ); + $version_explode_count = count( $version_explode ); + + if ( $version_explode_count < 3 || $version_explode_count > 4 ) { + trigger_error( 'Invalid Semantic Version string provided' ); + + return false; + } + + list( $major1, $major2, $minor ) = $version_explode; + + $result = [ + 'major1' => intval( $major1 ), + 'major2' => intval( $major2 ), + 'minor' => intval( $minor ), + ]; + + if ( $version_explode_count > 3 ) { + $result['build'] = $version_explode[3]; + } + + return $result; + } + + /** + * Compare two versions, result is equal to diff of major versions. + * Notice: If you want to compare between 2.9.0 and 3.3.0, and there is also a 2.10.0 version, you cannot get the right comparison + * Since $this->deprecation->get_total_major cannot determine how much really versions between 2.9.0 and 3.3.0. + * + * @since 3.1.0 + * + * @param {string} $version1 + * @param {string} $version2 + * + * @return int|false + */ + public function compare_version( $version1, $version2 ) { + $version1 = self::parse_version( $version1 ); + $version2 = self::parse_version( $version2 ); + + if ( $version1 && $version2 ) { + $versions = [ &$version1, &$version2 ]; + + foreach ( $versions as &$version ) { + $version['total'] = self::get_total_major( $version ); + } + + return $version1['total'] - $version2['total']; + } + + return false; + } + + /** + * Check Deprecation + * + * Checks whether the given entity is valid. If valid, this method checks whether the deprecation + * should be soft (browser console notice) or hard (use WordPress' native deprecation methods). + * + * @since 3.1.0 + * + * @param string $entity - The Deprecated entity (the function/hook itself) + * @param string $version + * @param string $replacement Optional + * @param string $base_version Optional. Default is `null` + * + * @return bool|void + * @throws \Exception + */ + private function check_deprecation( $entity, $version, $replacement, $base_version = null ) { + if ( null === $base_version ) { + $base_version = $this->current_version; + } + + $diff = $this->compare_version( $base_version, $version ); + + if ( false === $diff ) { + throw new \Exception( 'Invalid deprecation diff.' ); + } + + $print_deprecated = false; + + if ( defined( 'WP_DEBUG' ) && WP_DEBUG && $diff <= self::SOFT_VERSIONS_COUNT ) { + // Soft deprecated. + if ( ! isset( $this->soft_deprecated_notices[ $entity ] ) ) { + $this->soft_deprecated_notices[ $entity ] = [ + $version, + $replacement, + ]; + } + + if ( defined( 'ELEMENTOR_DEBUG' ) && ELEMENTOR_DEBUG ) { + $print_deprecated = true; + } + } + + return $print_deprecated; + } + + /** + * Deprecated Function + * + * Handles the deprecation process for functions. + * + * @since 3.1.0 + * + * @param string $function + * @param string $version + * @param string $replacement Optional. Default is '' + * @param string $base_version Optional. Default is `null` + * @throws \Exception + */ + public function deprecated_function( $function, $version, $replacement = '', $base_version = null ) { + $print_deprecated = $this->check_deprecation( $function, $version, $replacement, $base_version ); + + if ( $print_deprecated ) { + // PHPCS - We need to echo special characters because they can exist in function calls. + _deprecated_function( $function, esc_html( $version ), $replacement ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped + } + } + + /** + * Deprecated Hook + * + * Handles the deprecation process for hooks. + * + * @since 3.1.0 + * + * @param string $hook + * @param string $version + * @param string $replacement Optional. Default is '' + * @param string $base_version Optional. Default is `null` + * @throws \Exception + */ + public function deprecated_hook( $hook, $version, $replacement = '', $base_version = null ) { + $print_deprecated = $this->check_deprecation( $hook, $version, $replacement, $base_version ); + + if ( $print_deprecated ) { + _deprecated_hook( esc_html( $hook ), esc_html( $version ), esc_html( $replacement ) ); + } + } + + /** + * Deprecated Argument + * + * Handles the deprecation process for function arguments. + * + * @since 3.1.0 + * + * @param string $argument + * @param string $version + * @param string $replacement + * @param string $message + * @throws \Exception + */ + public function deprecated_argument( $argument, $version, $replacement = '', $message = '' ) { + $print_deprecated = $this->check_deprecation( $argument, $version, $replacement ); + + if ( $print_deprecated ) { + $message = empty( $message ) ? '' : ' ' . $message; + // These arguments are escaped because they are printed later, and are not escaped when printed. + $error_message_args = [ esc_html( $argument ), esc_html( $version ) ]; + + if ( $replacement ) { + /* translators: 1: Function argument, 2: Elementor version number, 3: Replacement argument name. */ + $translation_string = esc_html__( 'The %1$s argument is deprecated since version %2$s! Use %3$s instead.', 'elementor' ); + $error_message_args[] = $replacement; + } else { + /* translators: 1: Function argument, 2: Elementor version number. */ + $translation_string = esc_html__( 'The %1$s argument is deprecated since version %2$s!', 'elementor' ); + } + + trigger_error( + vsprintf( + // PHPCS - $translation_string is already escaped above. + $translation_string, // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped + // PHPCS - $error_message_args is an array. + $error_message_args // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped + ) . esc_html( $message ), + E_USER_DEPRECATED + ); + } + } + + /** + * Do Deprecated Action + * + * A method used to run deprecated actions through Elementor's deprecation process. + * + * @since 3.1.0 + * + * @param string $hook + * @param array $args + * @param string $version + * @param string $replacement + * @param null|string $base_version + * + * @throws \Exception + */ + public function do_deprecated_action( $hook, $args, $version, $replacement = '', $base_version = null ) { + if ( ! has_action( $hook ) ) { + return; + } + + $this->deprecated_hook( $hook, $version, $replacement, $base_version ); + + do_action_ref_array( $hook, $args ); + } + + /** + * Apply Deprecated Filter + * + * A method used to run deprecated filters through Elementor's deprecation process. + * + * @since 3.2.0 + * + * @param string $hook + * @param array $args + * @param string $version + * @param string $replacement + * @param null|string $base_version + * + * @return mixed + * @throws \Exception + */ + public function apply_deprecated_filter( $hook, $args, $version, $replacement = '', $base_version = null ) { + if ( ! has_action( $hook ) ) { + // `$args` should be an array, but in order to keep BC, we need to support non-array values. + if ( is_array( $args ) ) { + return $args[0] ?? null; + } + + return $args; + } + + // BC - See the comment above. + if ( ! is_array( $args ) ) { + $args = [ $args ]; + } + + // Avoid associative arrays. + $args = array_values( $args ); + + $this->deprecated_hook( $hook, $version, $replacement, $base_version ); + + return apply_filters_ref_array( $hook, $args ); + } +} diff --git a/wp-content/plugins/elementor/modules/dev-tools/module.php b/wp-content/plugins/elementor/modules/dev-tools/module.php new file mode 100644 index 0000000..3457735 --- /dev/null +++ b/wp-content/plugins/elementor/modules/dev-tools/module.php @@ -0,0 +1,56 @@ +deprecation = new Deprecation( ELEMENTOR_VERSION ); + + add_action( 'elementor/editor/before_enqueue_scripts', [ $this, 'register_scripts' ] ); + add_action( 'admin_enqueue_scripts', [ $this, 'register_scripts' ] ); + add_action( 'wp_enqueue_scripts', [ $this, 'register_scripts' ] ); + add_action( 'elementor/frontend/after_register_scripts', [ $this, 'register_scripts' ] ); + add_action( 'elementor/common/after_register_scripts', [ $this, 'register_scripts' ] ); + } + + public function get_name() { + return 'dev-tools'; + } + + public function register_scripts() { + wp_register_script( + 'elementor-dev-tools', + $this->get_js_assets_url( 'dev-tools' ), + [], + ELEMENTOR_VERSION, + true + ); + + $this->print_config( 'elementor-dev-tools' ); + } + + protected function get_init_settings() { + return [ + 'isDebug' => ( defined( 'WP_DEBUG' ) && WP_DEBUG ), + 'urls' => [ + 'assets' => ELEMENTOR_ASSETS_URL, + ], + 'deprecation' => $this->deprecation->get_settings(), + ]; + } +} diff --git a/wp-content/plugins/elementor/modules/dynamic-tags/module.php b/wp-content/plugins/elementor/modules/dynamic-tags/module.php new file mode 100644 index 0000000..46919a0 --- /dev/null +++ b/wp-content/plugins/elementor/modules/dynamic-tags/module.php @@ -0,0 +1,165 @@ +register_groups(); + + add_action( 'elementor/dynamic_tags/register', [ $this, 'register_tags' ] ); + } + + /** + * Get module name. + * + * Retrieve the dynamic tags module name. + * + * @since 2.0.0 + * @access public + * + * @return string Module name. + */ + public function get_name() { + return 'dynamic_tags'; + } + + /** + * Get classes names. + * + * Retrieve the dynamic tag classes names. + * + * @since 2.0.0 + * @access public + * + * @return array Tag dynamic tag classes names. + */ + public function get_tag_classes_names() { + return []; + } + + /** + * Get groups. + * + * Retrieve the dynamic tag groups. + * + * @since 2.0.0 + * @access public + * + * @return array Tag dynamic tag groups. + */ + public function get_groups() { + return [ + self::BASE_GROUP => [ + 'title' => 'Base Tags', + ], + ]; + } + + /** + * Register groups. + * + * Add all the available tag groups. + * + * @since 2.0.0 + * @access private + */ + private function register_groups() { + foreach ( $this->get_groups() as $group_name => $group_settings ) { + Plugin::$instance->dynamic_tags->register_group( $group_name, $group_settings ); + } + } + + /** + * Register tags. + * + * Add all the available dynamic tags. + * + * @since 2.0.0 + * @access public + * + * @param Manager $dynamic_tags + */ + public function register_tags( $dynamic_tags ) { + foreach ( $this->get_tag_classes_names() as $tag_class ) { + /** @var Base_Tag $class_name */ + $class_name = $this->get_reflection()->getNamespaceName() . '\Tags\\' . $tag_class; + + $dynamic_tags->register( new $class_name() ); + } + } +} diff --git a/wp-content/plugins/elementor/modules/editor-events/module.php b/wp-content/plugins/elementor/modules/editor-events/module.php new file mode 100644 index 0000000..d458a30 --- /dev/null +++ b/wp-content/plugins/elementor/modules/editor-events/module.php @@ -0,0 +1,40 @@ + $can_send_events, + 'elementor_version' => ELEMENTOR_VERSION, + 'site_url' => get_site_url(), + 'wp_version' => get_bloginfo( 'version' ), + 'user_agent' => esc_html( Utils::get_super_global_value( $_SERVER, 'HTTP_USER_AGENT' ) ), + 'site_language' => get_locale(), + 'site_key' => get_option( Base_App::OPTION_CONNECT_SITE_KEY ), + 'subscription_id' => null, + ]; + + if ( $can_send_events ) { + $settings['data_system_url'] = ELEMENTOR_EDITOR_EVENTS_DATA_SYSTEM_URL; + } + + return $settings; + } +} diff --git a/wp-content/plugins/elementor/modules/element-manager/admin-menu-app.php b/wp-content/plugins/elementor/modules/element-manager/admin-menu-app.php new file mode 100644 index 0000000..1a3f408 --- /dev/null +++ b/wp-content/plugins/elementor/modules/element-manager/admin-menu-app.php @@ -0,0 +1,39 @@ +'; + echo '

    ' . esc_html__( 'Element Manager', 'elementor' ) . '

    '; + echo '
    '; + echo ''; + } +} diff --git a/wp-content/plugins/elementor/modules/element-manager/ajax.php b/wp-content/plugins/elementor/modules/element-manager/ajax.php new file mode 100644 index 0000000..15d0e5c --- /dev/null +++ b/wp-content/plugins/elementor/modules/element-manager/ajax.php @@ -0,0 +1,196 @@ +verify_permission(); + $this->force_enabled_all_elements(); + + $widgets = []; + $plugins = []; + + foreach ( Plugin::$instance->widgets_manager->get_widget_types() as $widget ) { + $widget_title = sanitize_user( $widget->get_title() ); + if ( empty( $widget_title ) || ! $widget->show_in_panel() ) { + continue; + } + + $plugin_name = $this->get_plugin_name_from_widget_instance( $widget ); + + if ( ! in_array( $plugin_name, $plugins ) ) { + $plugins[] = $plugin_name; + } + + $widgets[] = [ + 'name' => $widget->get_name(), + 'plugin' => $plugin_name, + 'title' => $widget_title, + 'icon' => $widget->get_icon(), + ]; + } + + $notice_id = 'e-element-manager-intro-1'; + + $data = [ + 'disabled_elements' => Options::get_disabled_elements(), + 'promotion_widgets' => [], + 'widgets' => $widgets, + 'plugins' => $plugins, + 'notice_data' => [ + 'notice_id' => $notice_id, + 'is_viewed' => User::is_user_notice_viewed( $notice_id ), + ], + 'promotion_data' => [ + 'manager_permissions' => [ + 'pro' => $this->get_element_manager_promotion( + [ + 'text' => esc_html__( 'Upgrade Now', 'elementor' ), + 'url' => self::FREE_TO_PRO_PERMISSIONS_PROMOTION_URL, + ], + 'pro_permissions' + ), + 'advanced' => $this->get_element_manager_promotion( + [ + 'text' => esc_html__( 'Upgrade Now', 'elementor' ), + 'url' => self::PRO_TO_ADVANCED_PERMISSIONS_PROMOTION_URL, + ], + 'advanced_permissions' + ), + ], + 'element_manager' => $this->get_element_manager_promotion( + [ + 'text' => esc_html__( 'Upgrade Now', 'elementor' ), + 'url' => self::ELEMENT_MANAGER_PROMOTION_URL, + ], + 'element_manager' + ), + ], + ]; + + if ( ! Utils::has_pro() ) { + $data['promotion_widgets'] = Api::get_promotion_widgets(); + } + + $data['additional_data'] = apply_filters( 'elementor/element_manager/admin_app_data/additional_data', [] ); + + wp_send_json_success( $data ); + } + + private function get_element_manager_promotion( $promotion_data, $filter_id ): array { + + $filtered_data = apply_filters( 'elementor/element_manager/admin_app_data/promotion_data/' . $filter_id . '/', $promotion_data ); + + return $this->validate_promotion_data( $promotion_data, $filtered_data ); + } + + private function validate_promotion_data( $promotion_data, $filtered_data ): array { + $filtered_data = array_intersect_key( $filtered_data, array_flip( array_keys( $promotion_data ) ) ); + + if ( ! Validate_Promotion::domain_is_on_elementor_dot_com( $filtered_data['url'] ) ) { + unset( $filtered_data['url'] ); + } + + $filtered_data['text'] = $filtered_data['text'] ?? $promotion_data['text']; + + return array_replace( $promotion_data, $filtered_data ); + } + + private function verify_permission() { + if ( ! current_user_can( 'manage_options' ) ) { + wp_send_json_error( esc_html__( 'You do not have permission to edit these settings.', 'elementor' ) ); + } + + $nonce = Utils::get_super_global_value( $_POST, 'nonce' ); // phpcs:ignore WordPress.Security.NonceVerification.Missing + if ( empty( $nonce ) || ! wp_verify_nonce( $nonce, 'e-element-manager-app' ) ) { + wp_send_json_error( esc_html__( 'Invalid nonce.', 'elementor' ) ); + } + } + + private function force_enabled_all_elements() { + remove_all_filters( 'elementor/widgets/is_widget_enabled' ); + } + + private function get_plugin_name_from_widget_instance( $widget ) { + if ( in_array( 'wordpress', $widget->get_categories() ) ) { + return esc_html__( 'WordPress Widgets', 'elementor' ); + } + + $class_reflection = new \ReflectionClass( $widget ); + + $plugin_basename = plugin_basename( $class_reflection->getFileName() ); + + $plugin_directory = strtok( $plugin_basename, '/' ); + + $plugins_data = get_plugins( '/' . $plugin_directory ); + $plugin_data = array_shift( $plugins_data ); + + return $plugin_data['Name'] ?? esc_html__( 'Unknown', 'elementor' ); + } + + public function ajax_save_disabled_elements() { + $this->verify_permission(); + + $elements = Utils::get_super_global_value( $_POST, 'widgets' ); // phpcs:ignore WordPress.Security.NonceVerification.Missing + + if ( empty( $elements ) ) { + wp_send_json_error( esc_html__( 'No elements to save.', 'elementor' ) ); + } + + $disabled_elements = json_decode( $elements ); + + if ( ! is_array( $disabled_elements ) ) { + wp_send_json_error( esc_html__( 'Unexpected elements data.', 'elementor' ) ); + } + + Options::update_disabled_elements( $disabled_elements ); + + do_action( 'elementor/element_manager/save_disabled_elements' ); + + wp_send_json_success(); + } + + public function ajax_get_widgets_usage() { + $this->verify_permission(); + + /** @var Usage_Module $usage_module */ + $usage_module = Usage_Module::instance(); + $usage_module->recalc_usage(); + + $widgets_usage = []; + foreach ( $usage_module->get_formatted_usage( 'raw' ) as $data ) { + foreach ( $data['elements'] as $element => $count ) { + if ( ! isset( $widgets_usage[ $element ] ) ) { + $widgets_usage[ $element ] = 0; + } + + $widgets_usage[ $element ] += $count; + } + } + + wp_send_json_success( $widgets_usage ); + } +} diff --git a/wp-content/plugins/elementor/modules/element-manager/module.php b/wp-content/plugins/elementor/modules/element-manager/module.php new file mode 100644 index 0000000..8e984da --- /dev/null +++ b/wp-content/plugins/elementor/modules/element-manager/module.php @@ -0,0 +1,95 @@ +register_endpoints(); + + add_action( 'elementor/admin/menu/register', function( Admin_Menu_Manager $admin_menu ) { + $admin_menu->register( static::PAGE_ID, new Admin_Menu_App() ); + }, 25 ); + + add_action( 'elementor/admin/menu/after_register', function ( Admin_Menu_Manager $admin_menu, array $hooks ) { + if ( ! empty( $hooks[ static::PAGE_ID ] ) ) { + add_action( "admin_print_scripts-{$hooks[ static::PAGE_ID ]}", [ $this, 'enqueue_assets' ] ); + add_action( "admin_footer-{$hooks[ static::PAGE_ID ]}", [ $this, 'print_styles' ], 1000 ); + } + }, 10, 2 ); + + add_filter( 'elementor/widgets/is_widget_enabled', function( $should_register, Widget_Base $widget_instance ) { + return ! Options::is_element_disabled( $widget_instance->get_name() ); + }, 10, 2 ); + + add_filter( 'elementor/system-info/usage/settings', function( $usage ) { + $disabled_elements = Options::get_disabled_elements(); + + if ( ! empty( $disabled_elements ) ) { + $usage['disabled_elements'] = implode( ', ', $disabled_elements ); + } + + return $usage; + } ); + + add_filter( 'elementor/tracker/send_tracking_data_params', function( $params ) { + $disabled_elements = Options::get_disabled_elements(); + + if ( ! empty( $disabled_elements ) ) { + $params['usages']['disabled_elements'] = $disabled_elements; + } + + return $params; + } ); + } + + public function enqueue_assets() { + wp_enqueue_script( + 'e-element-manager-app', + $this->get_js_assets_url( 'element-manager-admin' ), + [ + 'wp-element', + 'wp-components', + 'wp-dom-ready', + 'wp-i18n', + ], + ELEMENTOR_VERSION + ); + + wp_localize_script( 'e-element-manager-app', 'eElementManagerConfig', [ + 'nonce' => wp_create_nonce( 'e-element-manager-app' ), + 'ajaxurl' => admin_url( 'admin-ajax.php' ), + ] ); + + wp_set_script_translations( 'e-element-manager-app', 'elementor' ); + + wp_enqueue_style( 'wp-components' ); + wp_enqueue_style( 'wp-format-library' ); + } + + public function print_styles() { + ?> + + get_js_assets_url( 'color-thief', 'assets/lib/color-thief/', true ), + [ 'elementor-editor' ], + ELEMENTOR_VERSION, + true + ); + } + + /** + * Module constructor - Initialize the Eye-Dropper module. + * + * @return void + */ + public function __construct() { + add_action( 'elementor/editor/after_enqueue_scripts', [ $this, 'enqueue_scripts' ] ); + } +} diff --git a/wp-content/plugins/elementor/modules/favorites/controller.php b/wp-content/plugins/elementor/modules/favorites/controller.php new file mode 100644 index 0000000..a8e61e5 --- /dev/null +++ b/wp-content/plugins/elementor/modules/favorites/controller.php @@ -0,0 +1,84 @@ +get_module(); + $type = $request->get_param( 'id' ); + $favorite = $request->get_param( 'favorite' ); + + $module->update( $type, $favorite, $module::ACTION_MERGE ); + + return $module->get( $type ); + } + + public function delete_item( $request ) { + $module = $this->get_module(); + $type = $request->get_param( 'id' ); + $favorite = $request->get_param( 'favorite' ); + + $module->update( $type, $favorite, $module::ACTION_DELETE ); + + return $module->get( $type ); + } + + public function create_item_permissions_check( $request ) { + return current_user_can( 'edit_posts' ); + } + + public function delete_item_permissions_check( $request ) { + return $this->create_item_permissions_check( $request ); + } + + /** + * Get the favorites module instance. + * + * @return Module + */ + protected function get_module() { + return Plugin::instance()->modules_manager->get_modules( 'favorites' ); + } + + public function register_endpoints() { + $this->index_endpoint->register_item_route( \WP_REST_Server::CREATABLE, [ + 'id_arg_type_regex' => '[\w]+', + 'id' => [ + 'description' => 'Type of favorites.', + 'type' => 'string', + 'required' => true, + ], + 'favorite' => [ + 'description' => 'The favorite slug to create.', + 'type' => 'string', + 'required' => true, + ], + ] ); + + $this->index_endpoint->register_item_route( \WP_REST_Server::DELETABLE, [ + 'id_arg_type_regex' => '[\w]+', + 'id' => [ + 'description' => 'Type of favorites.', + 'type' => 'string', + 'required' => true, + ], + 'favorite' => [ + 'description' => 'The favorite slug to delete.', + 'type' => 'string', + 'required' => true, + ], + ] ); + } +} diff --git a/wp-content/plugins/elementor/modules/favorites/favorites-type.php b/wp-content/plugins/elementor/modules/favorites/favorites-type.php new file mode 100644 index 0000000..03b06bd --- /dev/null +++ b/wp-content/plugins/elementor/modules/favorites/favorites-type.php @@ -0,0 +1,42 @@ +values(); + } + + if ( ! is_array( $favorites ) ) { + return [ $favorites ]; + } + + return $favorites; + } +} diff --git a/wp-content/plugins/elementor/modules/favorites/module.php b/wp-content/plugins/elementor/modules/favorites/module.php new file mode 100644 index 0000000..136e9f1 --- /dev/null +++ b/wp-content/plugins/elementor/modules/favorites/module.php @@ -0,0 +1,248 @@ +register( Widgets::class ); + + $this->populate(); + + Plugin::instance()->data_manager_v2->register_controller( new Controller() ); + + add_filter( 'elementor/tracker/send_tracking_data_params', [ $this, 'add_tracking_data' ] ); + } + + /** + * Add usage data related to favorites. + * + * @param $params + * + * @return array + */ + public function add_tracking_data( $params ) { + $params['usages']['favorites'] = $this->get(); + + return $params; + } + + public function get_name() { + return 'favorites'; + } + + /** + * Get user favorites by type. + * + * @param string[]|string $type + * + * @return array + */ + public function get( $type = null ) { + if ( null === $type ) { + $type = array_keys( $this->types ); + } + + if ( is_array( $type ) ) { + return array_intersect_key( + $this->combined(), + array_flip( (array) $type ) + ); + } + + return $this->type_instance( $type ) + ->values(); + } + + /** + * Merge new user favorites to a type. + * + * @param string $type + * @param array|string $favorites + * @param bool $store + * + * @return array|bool + */ + public function merge( $type, $favorites, $store = true ) { + return $this->update( $type, $favorites, static::ACTION_MERGE, $store ); + } + + /** + * Delete existing favorites from a type. + * + * @param string $type + * @param array|string $favorites + * @param bool $store + * + * @return array|int + */ + public function delete( $type, $favorites, $store = true ) { + return $this->update( $type, $favorites, static::ACTION_DELETE, $store ); + } + + /** + * Update favorites on a type by merging or deleting from it. + * + * @param $type + * @param $favorites + * @param $action + * @param bool $store + * + * @return array|boolean + */ + public function update( $type, $favorites, $action, $store = true ) { + $type_instance = $this->type_instance( $type ); + $favorites = $type_instance->prepare( $favorites ); + + switch ( $action ) { + case static::ACTION_MERGE: + $type_instance->merge( $favorites ); + break; + case static::ACTION_DELETE: + $type_instance->filter( + function( $value ) use ( $favorites ) { + return ! in_array( $value, $favorites, true ); + } + ); + break; + default: + $this->action_doesnt_exists( $action ); + } + + if ( $store && ! $this->store() ) { + return false; + } + + return $type_instance->values(); + } + + /** + * Get registered favorites type instance. + * + * @param string $type + * + * @return Favorites_Type + */ + public function type_instance( $type ) { + return $this->types[ $type ]; + } + + /** + * Register a new type class. + * + * @param string $class + */ + public function register( $class ) { + $type_instance = new $class(); + + $this->types[ $type_instance->get_name() ] = $type_instance; + } + + /** + * Returns all available types keys. + * + * @return string[] + */ + public function available() { + return array_keys( $this->types ); + } + + /** + * Combine favorites from all types into a single array. + * + * @return array + */ + protected function combined() { + $all = []; + + foreach ( $this->types as $type ) { + $favorites = $type->values(); + + if ( ! empty( $favorites ) ) { + $all[ $type->get_name() ] = $favorites; + } + } + + return $all; + } + + /** + * Populate all type classes with the stored data. + */ + protected function populate() { + $combined = $this->retrieve(); + + foreach ( $this->types as $key => $type ) { + if ( isset( $combined[ $key ] ) ) { + $type->merge( $combined[ $key ] ); + } + } + } + + /** + * Retrieve stored user favorites types. + * + * @return mixed|false + */ + protected function retrieve() { + return get_user_option( static::OPTION_NAME ); + } + + /** + * Update all changes to user favorites type. + * + * @return int|bool + */ + protected function store() { + return update_user_option( get_current_user_id(), static::OPTION_NAME, $this->combined() ); + } + + /** + * Throw action doesn't exist exception. + * + * @param string $action + */ + public function action_doesnt_exists( $action ) { + throw new \InvalidArgumentException( sprintf( + "Action '%s' to apply on favorites doesn't exists", + $action + ) ); + } +} diff --git a/wp-content/plugins/elementor/modules/favorites/types/widgets.php b/wp-content/plugins/elementor/modules/favorites/types/widgets.php new file mode 100644 index 0000000..4427f38 --- /dev/null +++ b/wp-content/plugins/elementor/modules/favorites/types/widgets.php @@ -0,0 +1,66 @@ +get_available() ); + } + + /** + * Get all available widgets. + * + * @return string[] + */ + public function get_available() { + return array_merge( + array_keys( + Plugin::instance()->widgets_manager->get_widget_types() + ), + array_keys( + Plugin::instance()->elements_manager->get_element_types() + ) + ); + } + + /** + * Update the categories of a widget inside a filter. + * + * @param $document + */ + public function update_widget_categories( $document ) { + foreach ( $this->values() as $favorite ) { + $widget = Plugin::$instance->widgets_manager->get_widget_types( $favorite ); + + // If it's not a widget, maybe it's an element. + if ( ! $widget ) { + $widget = Plugin::$instance->elements_manager->get_element_types( $favorite ); + } + + if ( $widget ) { + $widget->set_config( 'categories', [ static::CATEGORY_SLUG ] ); + } + } + } +} diff --git a/wp-content/plugins/elementor/modules/generator-tag/module.php b/wp-content/plugins/elementor/modules/generator-tag/module.php new file mode 100644 index 0000000..62df434 --- /dev/null +++ b/wp-content/plugins/elementor/modules/generator-tag/module.php @@ -0,0 +1,89 @@ +get_generator_content(); + + echo '' . PHP_EOL; + } + + private function get_generator_content(): string { + $active_features = $this->get_active_features(); + $settings = $this->get_generator_tag_settings(); + + $tags = [ + 'Elementor ' . ELEMENTOR_VERSION, + ]; + + if ( ! empty( $active_features ) ) { + $tags[] = 'features: ' . implode( ', ', $active_features ); + } + + if ( ! empty( $settings ) ) { + $tags[] = 'settings: ' . implode( ', ', $settings ); + } + + return implode( '; ', $tags ); + } + + private function get_active_features(): array { + $active_features = []; + + foreach ( Plugin::$instance->experiments->get_active_features() as $feature_slug => $feature ) { + if ( isset( $feature['generator_tag'] ) && $feature['generator_tag'] ) { + $active_features[] = $feature_slug; + } + } + + return $active_features; + } + + private function get_generator_tag_settings(): array { + return apply_filters( 'elementor/generator_tag/settings', [] ); + } + + public function register_admin_settings( Settings $settings ) { + $settings->add_field( + Settings::TAB_ADVANCED, + Settings::TAB_ADVANCED, + 'meta_generator_tag', + [ + 'label' => esc_html__( 'Generator Tag', 'elementor' ), + 'field_args' => [ + 'type' => 'select', + 'std' => '', + 'options' => [ + '' => esc_html__( 'Enable', 'elementor' ), + '1' => esc_html__( 'Disable', 'elementor' ), + ], + 'desc' => esc_html__( 'A generator tag is a meta element that indicates the attributes used to create a webpage. It is used for analytical purposes.', 'elementor' ), + ], + ] + ); + } +} diff --git a/wp-content/plugins/elementor/modules/gutenberg/module.php b/wp-content/plugins/elementor/modules/gutenberg/module.php new file mode 100644 index 0000000..fb61b5c --- /dev/null +++ b/wp-content/plugins/elementor/modules/gutenberg/module.php @@ -0,0 +1,222 @@ + function( $request_value, $object ) { + if ( ! User::is_current_user_can_edit( $object->ID ) ) { + return false; + } + + $document = Plugin::$instance->documents->get( $object->ID ); + + if ( ! $document ) { + return false; + } + + $document->set_is_built_with_elementor( false ); + + return true; + }, + ] + ); + } + + /** + * @since 2.1.0 + * @access public + */ + public function enqueue_assets() { + $document = Plugin::$instance->documents->get( get_the_ID() ); + + if ( ! $document || ! $document->is_editable_by_current_user() ) { + return; + } + + $this->is_gutenberg_editor_active = true; + + $suffix = defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ? '' : '.min'; + + wp_enqueue_script( 'elementor-gutenberg', ELEMENTOR_ASSETS_URL . 'js/gutenberg' . $suffix . '.js', [ 'jquery' ], ELEMENTOR_VERSION, true ); + + $elementor_settings = [ + 'isElementorMode' => $document->is_built_with_elementor(), + 'editLink' => $document->get_edit_url(), + ]; + Utils::print_js_config( 'elementor-gutenberg', 'ElementorGutenbergSettings', $elementor_settings ); + } + + /** + * @since 2.1.0 + * @access public + */ + public function print_admin_js_template() { + if ( ! $this->is_gutenberg_editor_active ) { + return; + } + + ?> + + + + register_experiments(); + + add_action( 'rest_api_init', [ $this, 'register_elementor_rest_field' ] ); + add_action( 'enqueue_block_editor_assets', [ $this, 'enqueue_assets' ] ); + add_action( 'admin_footer', [ $this, 'print_admin_js_template' ] ); + + add_action( 'wp_enqueue_scripts', [ $this, 'dequeue_assets' ], 999 ); + } + + public function register_experiments() { + Plugin::$instance->experiments->add_feature( [ + 'name' => 'block_editor_assets_optimize', + 'title' => esc_html__( 'Optimized Gutenberg Loading', 'elementor' ), + 'description' => esc_html__( 'Use this experiment to reduce unnecessary render-blocking loads, enhancing site performance by dequeuing unused Gutenberg block editor files (styles and scripts).', 'elementor' ), + 'release_status' => Experiments_Manager::RELEASE_STATUS_STABLE, + 'default' => Experiments_Manager::STATE_ACTIVE, + 'tag' => esc_html__( 'Performance', 'elementor' ), + 'generator_tag' => true, + ] ); + } + + public function dequeue_assets() { + if ( ! Plugin::$instance->experiments->is_feature_active( 'block_editor_assets_optimize' ) ) { + return; + } + + if ( ! static::should_dequeue_gutenberg_assets() ) { + return; + } + + wp_dequeue_style( 'wp-block-library' ); + wp_dequeue_style( 'wp-block-library-theme' ); + wp_dequeue_style( 'wc-block-style' ); + wp_dequeue_style( 'wc-blocks-style' ); + } + + private static function should_dequeue_gutenberg_assets() : bool { + $post = get_post(); + + if ( empty( $post->ID ) ) { + return false; + } + + if ( ! static::is_built_with_elementor( $post ) ) { + return false; + } + + if ( static::is_gutenberg_in_post( $post ) ) { + return false; + } + + return true; + } + + private static function is_built_with_elementor( $post ) : bool { + $document = Plugin::$instance->documents->get( $post->ID ); + + if ( ! $document || ! $document->is_built_with_elementor() ) { + return false; + } + + return true; + } + + private static function is_gutenberg_in_post( $post ) : bool { + if ( has_blocks( $post ) ) { + return true; + } + + if ( static::current_theme_is_fse_theme() ) { + return true; + } + + return false; + } + + private static function current_theme_is_fse_theme() : bool { + if ( function_exists( 'wp_is_block_theme' ) ) { + return (bool) wp_is_block_theme(); + } + if ( function_exists( 'gutenberg_is_fse_theme' ) ) { + return (bool) gutenberg_is_fse_theme(); + } + + return false; + } +} diff --git a/wp-content/plugins/elementor/modules/history/module.php b/wp-content/plugins/elementor/modules/history/module.php new file mode 100644 index 0000000..1947c8a --- /dev/null +++ b/wp-content/plugins/elementor/modules/history/module.php @@ -0,0 +1,74 @@ +modules_manager->get_modules( 'dev-tools' )->deprecation->deprecated_function( __METHOD__, '3.1.0' ); + + return []; + } + + /** + * @since 2.3.0 + * @access public + */ + public function add_templates() { + Plugin::$instance->common->add_template( __DIR__ . '/views/history-panel-template.php' ); + Plugin::$instance->common->add_template( __DIR__ . '/views/revisions-panel-template.php' ); + } + + /** + * History module constructor. + * + * Initializing Elementor history module. + * + * @since 1.7.0 + * @access public + */ + public function __construct() { + add_action( 'elementor/editor/init', [ $this, 'add_templates' ] ); + } +} diff --git a/wp-content/plugins/elementor/modules/history/revisions-manager.php b/wp-content/plugins/elementor/modules/history/revisions-manager.php new file mode 100644 index 0000000..2349b30 --- /dev/null +++ b/wp-content/plugins/elementor/modules/history/revisions-manager.php @@ -0,0 +1,416 @@ +documents->get( $post_id ); + + if ( $document && $document->is_built_with_elementor() ) { + $post_content .= ''; + } + + return $post_content; + } + + /** + * @since 2.0.0 + * @access public + * @static + */ + public static function remove_temp_post_content() { + global $post; + + $document = Plugin::$instance->documents->get( $post->ID ); + + if ( ! $document || ! $document->is_built_with_elementor() ) { + return; + } + + $post->post_content = str_replace( '', '', $post->post_content ); + } + + /** + * @since 1.7.0 + * @access public + * @static + * + * @param int $post_id + * @param array $query_args + * @param bool $parse_result + * + * @return array + */ + public static function get_revisions( $post_id = 0, $query_args = [], $parse_result = true ) { + $post = get_post( $post_id ); + + if ( ! $post || empty( $post->ID ) ) { + return []; + } + + $revisions = []; + + $default_query_args = [ + 'posts_per_page' => self::MAX_REVISIONS_TO_DISPLAY, + 'meta_key' => '_elementor_data', + ]; + + $query_args = array_merge( $default_query_args, $query_args ); + + $posts = wp_get_post_revisions( $post->ID, $query_args ); + + if ( ! wp_revisions_enabled( $post ) ) { + $autosave = Utils::get_post_autosave( $post->ID ); + if ( $autosave ) { + if ( $parse_result ) { + array_unshift( $posts, $autosave ); + } else { + array_unshift( $posts, $autosave->ID ); + } + } + } + + if ( $parse_result ) { + array_unshift( $posts, $post ); + } else { + array_unshift( $posts, $post->ID ); + return $posts; + } + + $current_time = current_time( 'timestamp' ); + + /** @var \WP_Post $revision */ + foreach ( $posts as $revision ) { + $date = date_i18n( _x( 'M j @ H:i', 'revision date format', 'elementor' ), strtotime( $revision->post_modified ) ); + + $human_time = human_time_diff( strtotime( $revision->post_modified ), $current_time ); + + if ( $revision->ID === $post->ID ) { + $type = 'current'; + $type_label = esc_html__( 'Current Version', 'elementor' ); + } elseif ( false !== strpos( $revision->post_name, 'autosave' ) ) { + $type = 'autosave'; + $type_label = esc_html__( 'Autosave', 'elementor' ); + } else { + $type = 'revision'; + $type_label = esc_html__( 'Revision', 'elementor' ); + } + + if ( ! isset( self::$authors[ $revision->post_author ] ) ) { + self::$authors[ $revision->post_author ] = [ + 'avatar' => get_avatar( $revision->post_author, 22 ), + 'display_name' => get_the_author_meta( 'display_name', $revision->post_author ), + ]; + } + + $revisions[] = [ + 'id' => $revision->ID, + 'author' => self::$authors[ $revision->post_author ]['display_name'], + 'timestamp' => strtotime( $revision->post_modified ), + 'date' => sprintf( + /* translators: 1: Human readable time difference, 2: Date. */ + esc_html__( '%1$s ago (%2$s)', 'elementor' ), + '', + '' + ), + 'type' => $type, + 'typeLabel' => $type_label, + 'gravatar' => self::$authors[ $revision->post_author ]['avatar'], + ]; + } + + return $revisions; + } + + /** + * @since 1.9.2 + * @access public + * @static + */ + public static function update_autosave( $autosave_data ) { + self::save_revision( $autosave_data['ID'] ); + } + + /** + * @since 1.7.0 + * @access public + * @static + */ + public static function save_revision( $revision_id ) { + $parent_id = wp_is_post_revision( $revision_id ); + + if ( $parent_id ) { + Plugin::$instance->db->safe_copy_elementor_meta( $parent_id, $revision_id ); + } + } + + /** + * @since 1.7.0 + * @access public + * @static + */ + public static function restore_revision( $parent_id, $revision_id ) { + $parent = Plugin::$instance->documents->get( $parent_id ); + $revision = Plugin::$instance->documents->get( $revision_id ); + + if ( ! $parent || ! $revision ) { + return; + } + + $is_built_with_elementor = $revision->is_built_with_elementor(); + + $parent->set_is_built_with_elementor( $is_built_with_elementor ); + + if ( ! $is_built_with_elementor ) { + return; + } + + Plugin::$instance->db->copy_elementor_meta( $revision_id, $parent_id ); + + $post_css = Post_CSS::create( $parent_id ); + + $post_css->update(); + } + + /** + * @since 2.3.0 + * @access public + * @static + * + * @param $data + * + * @return array + * @throws \Exception + */ + public static function ajax_get_revision_data( array $data ) { + if ( ! isset( $data['id'] ) ) { + throw new \Exception( 'You must set the revision ID.' ); + } + + $revision = Plugin::$instance->documents->get_with_permissions( $data['id'] ); + + return [ + 'settings' => $revision->get_settings(), + 'elements' => $revision->get_elements_data(), + ]; + } + + /** + * @since 1.7.0 + * @access public + * @static + */ + public static function add_revision_support_for_all_post_types() { + $post_types = get_post_types_by_support( 'elementor' ); + foreach ( $post_types as $post_type ) { + add_post_type_support( $post_type, 'revisions' ); + } + } + + /** + * @since 2.0.0 + * @access public + * @static + * @param array $return_data + * @param Document $document + * + * @return array + */ + public static function on_ajax_save_builder_data( $return_data, $document ) { + $post_id = $document->get_main_id(); + + $latest_revisions = self::get_revisions( + $post_id, [ + 'posts_per_page' => 1, + ] + ); + + $all_revision_ids = self::get_revisions( + $post_id, [ + 'fields' => 'ids', + ], false + ); + + // Send revisions data only if has revisions. + if ( ! empty( $latest_revisions ) ) { + $current_revision_id = self::current_revision_id( $post_id ); + + $return_data = array_replace_recursive( $return_data, [ + 'config' => [ + 'document' => [ + 'revisions' => [ + 'current_id' => $current_revision_id, + ], + ], + ], + 'latest_revisions' => $latest_revisions, + 'revisions_ids' => $all_revision_ids, + ] ); + } + + return $return_data; + } + + /** + * @since 1.7.0 + * @access public + * @static + */ + public static function db_before_save( $status, $has_changes ) { + if ( $has_changes ) { + self::handle_revision(); + } + } + + public static function document_config( $settings, $post_id ) { + $settings['revisions'] = [ + 'enabled' => ( $post_id && wp_revisions_enabled( get_post( $post_id ) ) ), + 'current_id' => self::current_revision_id( $post_id ), + ]; + + return $settings; + } + + /** + * Localize settings. + * + * Add new localized settings for the revisions manager. + * + * Fired by `elementor/editor/editor_settings` filter. + * + * @since 1.7.0 + * @deprecated 3.1.0 + * @access public + * @static + */ + public static function editor_settings() { + Plugin::$instance->modules_manager->get_modules( 'dev-tools' )->deprecation->deprecated_function( __METHOD__, '3.1.0' ); + + return []; + } + + /** + * @throws \Exception + */ + public static function ajax_get_revisions( $data ) { + Plugin::$instance->documents->check_permissions( $data['editor_post_id'] ); + + return self::get_revisions(); + } + + /** + * @since 2.3.0 + * @access public + * @static + */ + public static function register_ajax_actions( Ajax $ajax ) { + $ajax->register_ajax_action( 'get_revisions', [ __CLASS__, 'ajax_get_revisions' ] ); + $ajax->register_ajax_action( 'get_revision_data', [ __CLASS__, 'ajax_get_revision_data' ] ); + } + + /** + * @since 1.7.0 + * @access private + * @static + */ + private static function register_actions() { + add_action( 'wp_restore_post_revision', [ __CLASS__, 'restore_revision' ], 10, 2 ); + add_action( 'init', [ __CLASS__, 'add_revision_support_for_all_post_types' ], 9999 ); + add_filter( 'elementor/document/config', [ __CLASS__, 'document_config' ], 10, 2 ); + add_action( 'elementor/db/before_save', [ __CLASS__, 'db_before_save' ], 10, 2 ); + add_action( '_wp_put_post_revision', [ __CLASS__, 'save_revision' ] ); + add_action( 'wp_creating_autosave', [ __CLASS__, 'update_autosave' ] ); + add_action( 'elementor/ajax/register_actions', [ __CLASS__, 'register_ajax_actions' ] ); + + // Hack to avoid delete the auto-save revision in WP editor. + add_filter( 'edit_post_content', [ __CLASS__, 'avoid_delete_auto_save' ], 10, 2 ); + add_action( 'edit_form_after_title', [ __CLASS__, 'remove_temp_post_content' ] ); + + if ( wp_doing_ajax() ) { + add_filter( 'elementor/documents/ajax_save/return_data', [ __CLASS__, 'on_ajax_save_builder_data' ], 10, 2 ); + } + } + + /** + * @since 1.9.0 + * @access private + * @static + */ + private static function current_revision_id( $post_id ) { + $current_revision_id = $post_id; + $autosave = Utils::get_post_autosave( $post_id ); + + if ( is_object( $autosave ) ) { + $current_revision_id = $autosave->ID; + } + + return $current_revision_id; + } +} diff --git a/wp-content/plugins/elementor/modules/history/views/history-panel-template.php b/wp-content/plugins/elementor/modules/history/views/history-panel-template.php new file mode 100644 index 0000000..ed5c5ce --- /dev/null +++ b/wp-content/plugins/elementor/modules/history/views/history-panel-template.php @@ -0,0 +1,37 @@ + + + + + + + + diff --git a/wp-content/plugins/elementor/modules/history/views/revisions-panel-template.php b/wp-content/plugins/elementor/modules/history/views/revisions-panel-template.php new file mode 100644 index 0000000..0fcc88e --- /dev/null +++ b/wp-content/plugins/elementor/modules/history/views/revisions-panel-template.php @@ -0,0 +1,74 @@ + + + + + + + + diff --git a/wp-content/plugins/elementor/modules/image-loading-optimization/module.php b/wp-content/plugins/elementor/modules/image-loading-optimization/module.php new file mode 100644 index 0000000..2f4b080 --- /dev/null +++ b/wp-content/plugins/elementor/modules/image-loading-optimization/module.php @@ -0,0 +1,376 @@ + static::EXPERIMENT_NAME, + 'title' => esc_html__( 'Optimize Image Loading', 'elementor' ), + 'tag' => esc_html__( 'Performance', 'elementor' ), + 'description' => sprintf( + /* translators: 1: fetchpriority attribute, 2: lazy loading attribute. */ + esc_html__( 'Applying %1$s on LCP image and %2$s on images below the fold to improve performance scores.', 'elementor' ), + 'fetchpriority="high"', + 'loading="lazy"' + ), + 'generator_tag' => true, + 'release_status' => Experiments_Manager::RELEASE_STATUS_STABLE, + 'default' => Experiments_Manager::STATE_ACTIVE, + ]; + } + + /** + * Constructor. + */ + public function __construct() { + parent::__construct(); + + // Stop wp core logic. + add_action( 'init', [ $this, 'stop_core_fetchpriority_high_logic' ] ); + add_filter( 'wp_lazy_loading_enabled', '__return_false' ); + + // Run optimization logic on header. + add_action( 'get_header', [ $this, 'set_buffer' ] ); + + // Ensure buffer is flushed (if any) before the content logic. + add_filter( 'the_content', [ $this, 'flush_header_buffer' ], 0 ); + + // Run optimization logic on content. + add_filter( 'wp_content_img_tag', [ $this, 'loading_optimization_image' ] ); + } + + /** + * Stop WordPress core fetchpriority logic by setting the wp_high_priority_element_flag flag to false. + */ + public function stop_core_fetchpriority_high_logic() { + // wp_high_priority_element_flag was only introduced in 6.3.0 + if ( function_exists( 'wp_high_priority_element_flag' ) ) { + wp_high_priority_element_flag( false ); + } + } + + /** + * Set buffer to handle header and footer content. + */ + public function set_buffer() { + ob_start( [ $this, 'handle_buffer_content' ] ); + } + + /** + * This function ensure that buffer if any is flushed before the content is called. + * This function behaves more like an action than a filter. + * + * @param string $content the content. + * @return string We simply return the content from parameter. + */ + public function flush_header_buffer( $content ) { + $buffer_status = ob_get_status(); + + if ( ! empty( $buffer_status ) && + 1 === $buffer_status['type'] && + get_class( $this ) . '::handle_buffer_content' === $buffer_status['name'] ) { + ob_end_flush(); + } + + return $content; + } + + /** + * Callback to handle image optimization logic on buffered content. + * + * @param string $buffer Buffered content. + * @return string Content with optimized images. + */ + public function handle_buffer_content( $buffer ) { + return $this->filter_images( $buffer ); + } + + /** + * Check for image in the content provided and apply optimization logic on them. + * + * @param string $content Content to be analyzed. + * @return string Content with optimized images. + */ + private function filter_images( $content ) { + return preg_replace_callback( + '/]+>/', + function ( $matches ) { + return $this->loading_optimization_image( $matches[0] ); + }, + $content + ); + } + + /** + * Apply loading optimization logic on the image. + * + * @param mixed $image Original image tag. + * @return string Optimized image. + */ + public function loading_optimization_image( $image ) { + if ( isset( self::$image_visited[ $image ] ) ) { + return self::$image_visited[ $image ]; + } + + $optimized_image = $this->add_loading_optimization_attrs( $image ); + self::$image_visited[ $image ] = $optimized_image; + + return $optimized_image; + } + + /** + * Adds optimization attributes to an `img` HTML tag. + * + * @param string $image The HTML `img` tag where the attribute should be added. + * @return string Converted `img` tag with optimization attributes added. + */ + private function add_loading_optimization_attrs( $image ) { + $width = preg_match( '/ width=["\']([0-9]+)["\']/', $image, $match_width ) ? (int) $match_width[1] : null; + $height = preg_match( '/ height=["\']([0-9]+)["\']/', $image, $match_height ) ? (int) $match_height[1] : null; + $loading_val = preg_match( '/ loading=["\']([A-Za-z]+)["\']/', $image, $match_loading ) ? $match_loading[1] : null; + $fetchpriority_val = preg_match( '/ fetchpriority=["\']([A-Za-z]+)["\']/', $image, $match_fetchpriority ) ? $match_fetchpriority[1] : null; + + // Images should have height and dimension width for the loading optimization attributes to be added. + if ( ! str_contains( $image, ' width="' ) || ! str_contains( $image, ' height="' ) ) { + return $image; + } + + $optimization_attrs = $this->get_loading_optimization_attributes( + [ + 'width' => $width, + 'height' => $height, + 'loading' => $loading_val, + 'fetchpriority' => $fetchpriority_val, + ] + ); + + if ( ! empty( $optimization_attrs['fetchpriority'] ) ) { + $image = str_replace( 'increase_content_media_count( 0 ); + $increase_count = true; + if ( $content_media_count < $this->omit_threshold ) { + $maybe_in_viewport = true; + } else { + $maybe_in_viewport = false; + } + } + + if ( $maybe_in_viewport ) { + $loading_attrs = $this->maybe_add_fetchpriority_high_attr( $loading_attrs, $attr ); + } else { + $loading_attrs['loading'] = 'lazy'; + } + + if ( $increase_count ) { + $this->increase_content_media_count(); + } elseif ( $maybe_increase_count ) { + if ( $this->get_min_priority_img_pixels() <= $attr['width'] * $attr['height'] ) { + $this->increase_content_media_count(); + } + } + + return $loading_attrs; + } + + /** + * Helper to get the minimum threshold for number of pixels an image needs to have to be considered "priority". + * + * @return int The minimum number of pixels (width * height). Default is 50000. + */ + private function get_min_priority_img_pixels() { + /** + * Filter the minimum pixel threshold used to determine if an image should have fetchpriority="high" applied. + * + * @see https://developer.wordpress.org/reference/hooks/wp_min_priority_img_pixels/ + * + * @param int $pixels The minimum number of pixels (with * height). + * @return int The filtered value. + */ + return apply_filters( 'elementor/image-loading-optimization/min_priority_img_pixels', $this->min_priority_img_pixels ); + } + + /** + * Keeps a count of media image. + * + * @param int $amount Amount by which count must be increased. + * @return int current image count. + */ + private function increase_content_media_count( $amount = 1 ) { + static $content_media_count = 0; + + $content_media_count += $amount; + + return $content_media_count; + } + + /** + * Determines whether to add `fetchpriority='high'` to loading attributes. + * + * @param array $loading_attrs Array of the loading optimization attributes for the element. + * @param array $attr Array of the attributes for the element. + * @return array Updated loading optimization attributes for the element. + */ + private function maybe_add_fetchpriority_high_attr( $loading_attrs, $attr ) { + if ( isset( $attr['fetchpriority'] ) ) { + if ( 'high' === $attr['fetchpriority'] ) { + $loading_attrs['fetchpriority'] = 'high'; + $this->high_priority_element_flag( false ); + } + + return $loading_attrs; + } + + // Lazy-loading and `fetchpriority="high"` are mutually exclusive. + if ( isset( $loading_attrs['loading'] ) && 'lazy' === $loading_attrs['loading'] ) { + return $loading_attrs; + } + + if ( ! $this->high_priority_element_flag() ) { + return $loading_attrs; + } + + if ( $this->get_min_priority_img_pixels() <= $attr['width'] * $attr['height'] ) { + $loading_attrs['fetchpriority'] = 'high'; + $this->high_priority_element_flag( false ); + } + + return $loading_attrs; + } + + /** + * Accesses a flag that indicates if an element is a possible candidate for `fetchpriority='high'`. + * + * @param bool $value Optional. Used to change the static variable. Default null. + * @return bool Returns true if high-priority element was marked already, otherwise false. + */ + private function high_priority_element_flag( $value = null ) { + static $high_priority_element = true; + + if ( is_bool( $value ) ) { + $high_priority_element = $value; + } + + return $high_priority_element; + } +} diff --git a/wp-content/plugins/elementor/modules/kit-elements-defaults/data/controller.php b/wp-content/plugins/elementor/modules/kit-elements-defaults/data/controller.php new file mode 100644 index 0000000..abd3910 --- /dev/null +++ b/wp-content/plugins/elementor/modules/kit-elements-defaults/data/controller.php @@ -0,0 +1,145 @@ +index_endpoint->register_item_route(\WP_REST_Server::EDITABLE, [ + 'id_arg_name' => 'type', + 'id_arg_type_regex' => '[\w\-\_]+', + 'type' => [ + 'type' => 'string', + 'description' => 'The type of the element.', + 'required' => true, + 'validate_callback' => function( $type ) { + return $this->validate_type( $type ); + }, + ], + 'settings' => [ + 'description' => 'All the default values for the requested type', + 'required' => true, + 'type' => 'object', + 'validate_callback' => function( $settings ) { + return is_array( $settings ); + }, + 'sanitize_callback' => function( $settings, \WP_REST_Request $request ) { + $sanitizer = new Settings_Sanitizer( + Plugin::$instance->elements_manager, + array_keys( Plugin::$instance->widgets_manager->get_widget_types() ) + ); + + return $sanitizer + ->for( $request->get_param( 'type' ) ) + ->using( $settings ) + ->remove_invalid_settings() + ->kses_deep() + ->get(); + }, + ], + ] ); + + $this->index_endpoint->register_item_route(\WP_REST_Server::DELETABLE, [ + 'id_arg_name' => 'type', + 'id_arg_type_regex' => '[\w\-\_]+', + 'type' => [ + 'type' => 'string', + 'description' => 'The type of the element.', + 'required' => true, + 'validate_callback' => function( $type ) { + return $this->validate_type( $type ); + }, + ], + ] ); + } + + public function get_collection_params() { + return []; + } + + public function get_items( $request ) { + $this->validate_kit(); + + $kit = Plugin::$instance->kits_manager->get_active_kit(); + + return (object) $kit->get_json_meta( Module::META_KEY ); + } + + public function update_item( $request ) { + $this->validate_kit(); + + $kit = Plugin::$instance->kits_manager->get_active_kit(); + + $data = $kit->get_json_meta( Module::META_KEY ); + + $data[ $request->get_param( 'type' ) ] = $request->get_param( 'settings' ); + + $kit->update_json_meta( Module::META_KEY, $data ); + + return (object) []; + } + + public function delete_item( $request ) { + $this->validate_kit(); + + $kit = Plugin::$instance->kits_manager->get_active_kit(); + + $data = $kit->get_json_meta( Module::META_KEY ); + + unset( $data[ $request->get_param( 'type' ) ] ); + + $kit->update_json_meta( Module::META_KEY, $data ); + + return (object) []; + } + + private function validate_kit() { + $kit = Plugin::$instance->kits_manager->get_active_kit(); + $is_valid_kit = $kit && $kit->get_main_id(); + + if ( ! $is_valid_kit ) { + throw new Error_404( 'Kit doesn\'t exist.' ); + } + } + + private function validate_type( $param ) { + $element_types = array_keys( Plugin::$instance->elements_manager->get_element_types() ); + $widget_types = array_keys( Plugin::$instance->widgets_manager->get_widget_types() ); + + return in_array( + $param, + array_merge( $element_types, $widget_types ), + true + ); + } + + public function get_items_permissions_check( $request ) { + return current_user_can( 'edit_posts' ); + } + + // TODO: Should be removed once the infra will support it. + public function get_item_permissions_check( $request ) { + return $this->get_items_permissions_check( $request ); + } + + public function update_item_permissions_check( $request ) { + return current_user_can( 'manage_options' ); + } + + public function delete_item_permissions_check( $request ) { + return current_user_can( 'manage_options' ); + } +} diff --git a/wp-content/plugins/elementor/modules/kit-elements-defaults/import-export/import-export.php b/wp-content/plugins/elementor/modules/kit-elements-defaults/import-export/import-export.php new file mode 100644 index 0000000..9ba6262 --- /dev/null +++ b/wp-content/plugins/elementor/modules/kit-elements-defaults/import-export/import-export.php @@ -0,0 +1,27 @@ +register( new Export_Runner() ); + } ); + + add_action( 'elementor/import-export/import-kit', function ( Import $import ) { + $import->register( new Import_Runner() ); + } ); + } +} diff --git a/wp-content/plugins/elementor/modules/kit-elements-defaults/import-export/runners/export.php b/wp-content/plugins/elementor/modules/kit-elements-defaults/import-export/runners/export.php new file mode 100644 index 0000000..e1d9fdc --- /dev/null +++ b/wp-content/plugins/elementor/modules/kit-elements-defaults/import-export/runners/export.php @@ -0,0 +1,71 @@ +kits_manager->get_active_kit(); + + if ( ! $kit ) { + return [ + 'manifest' => [], + 'files' => [], + ]; + } + + $default_values = $kit->get_json_meta( Module::META_KEY ); + + if ( ! $default_values ) { + return [ + 'manifest' => [], + 'files' => [], + ]; + } + + $sanitizer = new Settings_Sanitizer( + Plugin::$instance->elements_manager, + array_keys( Plugin::$instance->widgets_manager->get_widget_types() ) + ); + + $default_values = ( new Collection( $default_values ) ) + ->map( function ( $settings, $type ) use ( $sanitizer, $kit ) { + return $sanitizer + ->for( $type ) + ->using( $settings ) + ->remove_invalid_settings() + ->kses_deep() + ->prepare_for_export( $kit ) + ->get(); + } ) + ->all(); + + return [ + 'files' => [ + 'path' => Import_Export::FILE_NAME, + 'data' => $default_values, + ], + ]; + } +} diff --git a/wp-content/plugins/elementor/modules/kit-elements-defaults/import-export/runners/import.php b/wp-content/plugins/elementor/modules/kit-elements-defaults/import-export/runners/import.php new file mode 100644 index 0000000..01fdff8 --- /dev/null +++ b/wp-content/plugins/elementor/modules/kit-elements-defaults/import-export/runners/import.php @@ -0,0 +1,69 @@ +kits_manager->get_active_kit(); + $file_name = Import_Export::FILE_NAME; + $default_values = ImportExportUtils::read_json_file( "{$data['extracted_directory_path']}/{$file_name}.json" ); + + if ( ! $kit || ! $default_values ) { + return []; + } + + $element_types = array_keys( Plugin::$instance->elements_manager->get_element_types() ); + $widget_types = array_keys( Plugin::$instance->widgets_manager->get_widget_types() ); + + $types = array_merge( $element_types, $widget_types ); + + $sanitizer = new Settings_Sanitizer( + Plugin::$instance->elements_manager, + $widget_types + ); + + $default_values = ( new Collection( $default_values ) ) + ->filter( function ( $settings, $type ) use ( $types ) { + return in_array( $type, $types, true ); + } ) + ->map( function ( $settings, $type ) use ( $sanitizer, $kit ) { + return $sanitizer + ->for( $type ) + ->using( $settings ) + ->remove_invalid_settings() + ->kses_deep() + ->prepare_for_import( $kit ) + ->get(); + } ) + ->all(); + + $kit->update_json_meta( Module::META_KEY, $default_values ); + + return $default_values; + } +} diff --git a/wp-content/plugins/elementor/modules/kit-elements-defaults/module.php b/wp-content/plugins/elementor/modules/kit-elements-defaults/module.php new file mode 100644 index 0000000..df86cd8 --- /dev/null +++ b/wp-content/plugins/elementor/modules/kit-elements-defaults/module.php @@ -0,0 +1,54 @@ +get_js_assets_url( 'kit-elements-defaults-editor' ), + [ + 'elementor-common', + 'elementor-editor-modules', + 'elementor-editor-document', + 'wp-i18n', + ], + ELEMENTOR_VERSION, + true + ); + + wp_set_script_translations( 'elementor-kit-elements-defaults-editor', 'elementor' ); + } + + public function __construct() { + parent::__construct(); + + add_action( 'elementor/editor/before_enqueue_scripts', function () { + $this->enqueue_scripts(); + } ); + + Plugin::$instance->data_manager_v2->register_controller( new Controller() ); + + ( new Usage() )->register(); + + if ( is_admin() ) { + ( new Import_Export() )->register(); + } + } +} diff --git a/wp-content/plugins/elementor/modules/kit-elements-defaults/usage.php b/wp-content/plugins/elementor/modules/kit-elements-defaults/usage.php new file mode 100644 index 0000000..2ddd075 --- /dev/null +++ b/wp-content/plugins/elementor/modules/kit-elements-defaults/usage.php @@ -0,0 +1,34 @@ +get_usage_data(); + + return $params; + } ); + } + + private function get_usage_data() { + $elements_defaults = $this->get_elements_defaults() ?? []; + + return [ + 'count' => count( $elements_defaults ), + 'elements' => array_keys( $elements_defaults ), + ]; + } + + private function get_elements_defaults() { + $kit = Plugin::$instance->kits_manager->get_active_kit(); + + return $kit->get_json_meta( Module::META_KEY ); + } +} diff --git a/wp-content/plugins/elementor/modules/kit-elements-defaults/utils/settings-sanitizer.php b/wp-content/plugins/elementor/modules/kit-elements-defaults/utils/settings-sanitizer.php new file mode 100644 index 0000000..1cc3822 --- /dev/null +++ b/wp-content/plugins/elementor/modules/kit-elements-defaults/utils/settings-sanitizer.php @@ -0,0 +1,280 @@ +elements_manager = $elements_manager; + $this->widget_types = $widget_types; + } + + /** + * @param $type + * + * @return $this + */ + public function for( $type ) { + $this->pending_element = $this->create_element( $type ); + + return $this; + } + + /** + * @param $settings + * + * @return $this + */ + public function using( $settings ) { + $this->pending_settings = $settings; + + return $this; + } + + /** + * @return $this + */ + public function reset() { + $this->pending_element = null; + $this->pending_settings = null; + + return $this; + } + + /** + * @return bool + */ + public function is_prepared() { + return $this->pending_element && is_array( $this->pending_settings ); + } + + /** + * @return $this + */ + public function remove_invalid_settings() { + if ( ! $this->is_prepared() ) { + return $this; + } + + $valid_settings_keys = $this->get_valid_settings_keys( + $this->pending_element->get_controls() + ); + + $this->pending_settings = $this->filter_invalid_settings( + $this->pending_settings, + array_merge( $valid_settings_keys, self::SPECIAL_SETTINGS ) + ); + + foreach ( self::SPECIAL_SETTINGS as $special_setting ) { + if ( ! isset( $this->pending_settings[ $special_setting ] ) ) { + continue; + } + + $this->pending_settings[ $special_setting ] = $this->filter_invalid_settings( + $this->pending_settings[ $special_setting ], + $valid_settings_keys + ); + } + + return $this; + } + + public function kses_deep() { + if ( ! $this->is_prepared() ) { + return $this; + } + + $this->pending_settings = map_deep( $this->pending_settings, function( $value ) { + if ( ! is_string( $value ) ) { + return $value; + } + + return wp_kses_post( $value ); + } ); + + return $this; + } + + /** + * @param Document $document + * + * @return $this + */ + public function prepare_for_export( Document $document ) { + return $this->run_import_export_sanitize_process( $document, 'on_export' ); + } + + /** + * @param Document $document + * + * @return $this + */ + public function prepare_for_import( Document $document ) { + return $this->run_import_export_sanitize_process( $document, 'on_import' ); + } + + /** + * @return array + */ + public function get() { + if ( ! $this->is_prepared() ) { + return []; + } + + $settings = $this->pending_settings; + + $this->reset(); + + return $settings; + } + + /** + * @param string $type + * @param array $settings + * + * @return Element_Base|null + */ + private function create_element( $type ) { + $is_widget = in_array( $type, $this->widget_types, true ); + $is_inner_section = 'inner-section' === $type; + + if ( $is_inner_section ) { + return $this->elements_manager->create_element_instance( [ + 'elType' => 'section', + 'isInner' => true, + 'id' => '0', + ] ); + } + + if ( $is_widget ) { + return $this->elements_manager->create_element_instance( [ + 'elType' => 'widget', + 'widgetType' => $type, + 'id' => '0', + ] ); + } + + return $this->elements_manager->create_element_instance( [ + 'elType' => $type, + 'id' => '0', + ] ); + } + + /** + * @param Document $document + * @param $process_type + * + * @return $this + */ + private function run_import_export_sanitize_process( Document $document, $process_type ) { + if ( ! $this->is_prepared() ) { + return $this; + } + + $result = $document->process_element_import_export( + $this->pending_element, + $process_type, + [ 'settings' => $this->pending_settings ] + ); + + if ( empty( $result['settings'] ) ) { + return $this; + } + + $this->pending_settings = $result['settings']; + + return $this; + } + + /** + * Get all the available settings of a specific element, including responsive settings. + * + * @param array $controls + * + * @return array + */ + private function get_valid_settings_keys( $controls ) { + if ( ! $controls ) { + return []; + } + + $control_keys = array_keys( $controls ); + + $optional_responsive_keys = [ + Breakpoints_Manager::BREAKPOINT_KEY_MOBILE, + Breakpoints_Manager::BREAKPOINT_KEY_MOBILE_EXTRA, + Breakpoints_Manager::BREAKPOINT_KEY_TABLET, + Breakpoints_Manager::BREAKPOINT_KEY_TABLET_EXTRA, + Breakpoints_Manager::BREAKPOINT_KEY_LAPTOP, + Breakpoints_Manager::BREAKPOINT_KEY_WIDESCREEN, + ]; + + $settings = []; + + foreach ( $control_keys as $control_key ) { + // Add the responsive settings. + foreach ( $optional_responsive_keys as $responsive_key ) { + $settings[] = "{$control_key}_{$responsive_key}"; + } + // Add the setting itself (not responsive). + $settings[] = $control_key; + } + + return $settings; + } + + /** + * Remove invalid settings. + * + * @param $settings + * @param $valid_settings_keys + * + * @return array + */ + private function filter_invalid_settings( $settings, $valid_settings_keys ) { + return array_filter( + $settings, + function ( $setting_key ) use ( $valid_settings_keys ) { + return in_array( $setting_key, $valid_settings_keys, true ); + }, + ARRAY_FILTER_USE_KEY + ); + } +} diff --git a/wp-content/plugins/elementor/modules/landing-pages/admin-menu-items/landing-pages-empty-view-menu-item.php b/wp-content/plugins/elementor/modules/landing-pages/admin-menu-items/landing-pages-empty-view-menu-item.php new file mode 100644 index 0000000..87c2f7d --- /dev/null +++ b/wp-content/plugins/elementor/modules/landing-pages/admin-menu-items/landing-pages-empty-view-menu-item.php @@ -0,0 +1,21 @@ +render_callback = $render_callback; + } + + public function render() { + ( $this->render_callback )(); + } +} diff --git a/wp-content/plugins/elementor/modules/landing-pages/admin-menu-items/landing-pages-menu-item.php b/wp-content/plugins/elementor/modules/landing-pages/admin-menu-items/landing-pages-menu-item.php new file mode 100644 index 0000000..400e786 --- /dev/null +++ b/wp-content/plugins/elementor/modules/landing-pages/admin-menu-items/landing-pages-menu-item.php @@ -0,0 +1,32 @@ +print_admin_column_type(); + } + } + + protected function get_remote_library_config() { + $config = [ + 'type' => 'lp', + 'default_route' => 'templates/landing-pages', + 'autoImportSettings' => true, + ]; + + return array_replace_recursive( parent::get_remote_library_config(), $config ); + } +} diff --git a/wp-content/plugins/elementor/modules/landing-pages/module.php b/wp-content/plugins/elementor/modules/landing-pages/module.php new file mode 100644 index 0000000..fa69d5a --- /dev/null +++ b/wp-content/plugins/elementor/modules/landing-pages/module.php @@ -0,0 +1,510 @@ + 'landing-pages', + 'title' => esc_html__( 'Landing Pages', 'elementor' ), + 'description' => esc_html__( 'Adds a new Elementor content type that allows creating beautiful landing pages instantly in a streamlined workflow.', 'elementor' ), + 'release_status' => Experiments_Manager::RELEASE_STATUS_BETA, + 'default' => Experiments_Manager::STATE_ACTIVE, + 'new_site' => [ + 'default_active' => false, + 'minimum_installation_version' => '3.1.0', + ], + ]; + } + + /** + * Get Trashed Landing Pages Posts + * + * Returns the posts property of a WP_Query run for Landing Pages with post_status of 'trash'. + * + * @since 3.1.0 + * + * @return array trashed posts + */ + private function get_trashed_landing_page_posts() { + if ( $this->trashed_posts ) { + return $this->trashed_posts; + } + + // `'posts_per_page' => 1` is because this is only used as an indicator to whether there are any trashed landing pages. + $trashed_posts_query = new \WP_Query( [ + 'no_found_rows' => true, + 'post_type' => self::CPT, + 'post_status' => 'trash', + 'posts_per_page' => 1, + 'meta_key' => '_elementor_template_type', + 'meta_value' => self::DOCUMENT_TYPE, + ] ); + + $this->trashed_posts = $trashed_posts_query->posts; + + return $this->trashed_posts; + } + + private function has_landing_pages() { + if ( null !== $this->has_pages ) { + return $this->has_pages; + } + + $posts_query = new \WP_Query( [ + 'no_found_rows' => true, + 'post_type' => self::CPT, + 'post_status' => 'any', + 'posts_per_page' => 1, + 'meta_key' => '_elementor_template_type', + 'meta_value' => self::DOCUMENT_TYPE, + ] ); + + $this->has_pages = $posts_query->post_count > 0; + + return $this->has_pages; + } + + /** + * Is Elementor Landing Page. + * + * Check whether the post is an Elementor Landing Page. + * + * @since 3.1.0 + * @access public + * + * @param \WP_Post $post Post Object + * + * @return bool Whether the post was built with Elementor. + */ + public function is_elementor_landing_page( $post ) { + return self::CPT === $post->post_type; + } + + private function get_menu_args() { + if ( $this->has_landing_pages() ) { + $menu_slug = self::ADMIN_PAGE_SLUG; + $function = null; + } else { + $menu_slug = self::CPT; + $function = [ $this, 'print_empty_landing_pages_page' ]; + } + + return [ + 'menu_slug' => $menu_slug, + 'function' => $function, + ]; + } + + private function register_admin_menu( MainMenu $menu ) { + $landing_pages_title = esc_html__( 'Landing Pages', 'elementor' ); + + $menu_args = array_merge( $this->get_menu_args(), [ + 'page_title' => $landing_pages_title, + 'menu_title' => $landing_pages_title, + 'index' => 20, + ] ); + + $menu->add_submenu( $menu_args ); + } + + /** + * Add Submenu Page + * + * Adds the 'Landing Pages' submenu item to the 'Templates' menu item. + * + * @since 3.1.0 + */ + private function register_admin_menu_legacy( Admin_Menu_Manager $admin_menu ) { + $menu_args = $this->get_menu_args(); + + $slug = $menu_args['menu_slug']; + $function = $menu_args['function']; + + if ( is_callable( $function ) ) { + $admin_menu->register( $slug, new Landing_Pages_Empty_View_Menu_Item( $function ) ); + } else { + $admin_menu->register( $slug, new Landing_Pages_Menu_Item() ); + } + } + + /** + * Get 'Add New' Landing Page URL + * + * Retrieves the custom URL for the admin dashboard's 'Add New' button in the Landing Pages admin screen. This URL + * creates a new Landing Pages and directly opens the Elementor Editor with the Template Library modal open on the + * Landing Pages tab. + * + * @since 3.1.0 + * + * @return string + */ + private function get_add_new_landing_page_url() { + if ( ! $this->new_lp_url ) { + $this->new_lp_url = Plugin::$instance->documents->get_create_new_post_url( self::CPT, self::DOCUMENT_TYPE ) . '#library'; + } + return $this->new_lp_url; + } + + /** + * Get Empty Landing Pages Page + * + * Prints the HTML content of the page that is displayed when there are no existing landing pages in the DB. + * Added as the callback to add_submenu_page. + * + * @since 3.1.0 + */ + public function print_empty_landing_pages_page() { + $template_sources = Plugin::$instance->templates_manager->get_registered_sources(); + $source_local = $template_sources['local']; + $trashed_posts = $this->get_trashed_landing_page_posts(); + + ?> +
    + print_blank_state_template( esc_html__( 'Landing Page', 'elementor' ), $this->get_add_new_landing_page_url(), esc_html__( 'Build Effective Landing Pages for your business\' marketing campaigns.', 'elementor' ) ); + + if ( ! empty( $trashed_posts ) ) : ?> +
    + ', + '' + ); + ?> +
    + +
    + base ) { + return $this->is_elementor_landing_page( get_post() ); + } + + return false; + } + + /** + * Admin Localize Settings + * + * Enables adding properties to the globally available elementorAdmin.config JS object in the Admin Dashboard. + * Runs on the 'elementor/admin/localize_settings' filter. + * + * @since 3.1.0 + * + * @param $settings + * @return array|null + */ + private function admin_localize_settings( $settings ) { + $additional_settings = [ + 'urls' => [ + 'addNewLandingPageUrl' => $this->get_add_new_landing_page_url(), + ], + 'landingPages' => [ + 'landingPagesHasPages' => $this->has_landing_pages(), + 'isLandingPageAdminEdit' => $this->is_landing_page_admin_edit(), + ], + ]; + + return array_replace_recursive( $settings, $additional_settings ); + } + + /** + * Register Landing Pages CPT + * + * @since 3.1.0 + */ + private function register_landing_page_cpt() { + $labels = [ + 'name' => esc_html__( 'Landing Pages', 'elementor' ), + 'singular_name' => esc_html__( 'Landing Page', 'elementor' ), + 'add_new' => esc_html__( 'Add New', 'elementor' ), + 'add_new_item' => esc_html__( 'Add New Landing Page', 'elementor' ), + 'edit_item' => esc_html__( 'Edit Landing Page', 'elementor' ), + 'new_item' => esc_html__( 'New Landing Page', 'elementor' ), + 'all_items' => esc_html__( 'All Landing Pages', 'elementor' ), + 'view_item' => esc_html__( 'View Landing Page', 'elementor' ), + 'search_items' => esc_html__( 'Search Landing Pages', 'elementor' ), + 'not_found' => esc_html__( 'No landing pages found', 'elementor' ), + 'not_found_in_trash' => esc_html__( 'No landing pages found in trash', 'elementor' ), + 'parent_item_colon' => '', + 'menu_name' => esc_html__( 'Landing Pages', 'elementor' ), + ]; + + $args = [ + 'labels' => $labels, + 'public' => true, + 'show_in_menu' => 'edit.php?post_type=elementor_library&tabs_group=library', + 'capability_type' => 'page', + 'taxonomies' => [ Source_Local::TAXONOMY_TYPE_SLUG ], + 'supports' => [ 'title', 'editor', 'comments', 'revisions', 'trackbacks', 'author', 'excerpt', 'page-attributes', 'thumbnail', 'custom-fields', 'post-formats', 'elementor' ], + ]; + + register_post_type( self::CPT, $args ); + } + + /** + * Remove Post Type Slug + * + * Landing Pages are supposed to act exactly like pages. This includes their URLs being directly under the site's + * domain name. Since "Landing Pages" is a CPT, WordPress automatically adds the landing page slug as a prefix to + * it's posts' permalinks. This method checks if the post's post type is Landing Pages, and if it is, it removes + * the CPT slug from the requested post URL. + * + * Runs on the 'post_type_link' filter. + * + * @since 3.1.0 + * + * @param $post_link + * @param $post + * @param $leavename + * @return string|string[] + */ + private function remove_post_type_slug( $post_link, $post, $leavename ) { + // Only try to modify the permalink if the post is a Landing Page. + if ( self::CPT !== $post->post_type || 'publish' !== $post->post_status ) { + return $post_link; + } + + // Any slug prefixes need to be removed from the post link. + return get_home_url() . '/' . $post->post_name . '/'; + } + + /** + * Adjust Landing Page Query + * + * Since Landing Pages are a CPT but should act like pages, the WP_Query that is used to fetch the page from the + * database needs to be adjusted. This method adds the Landing Pages CPT to the list of queried post types, to + * make sure the database query finds the correct Landing Page to display. + * Runs on the 'pre_get_posts' action. + * + * @since 3.1.0 + * + * @param \WP_Query $query + */ + private function adjust_landing_page_query( \WP_Query $query ) { + // Only handle actual pages. + if ( + ! $query->is_main_query() + // If the query is not for a page. + || ! isset( $query->query['page'] ) + // If the query is for a static home/blog page. + || is_home() + // If the post type comes already set, the main query is probably a custom one made by another plugin. + // In this case we do not want to intervene in order to not cause a conflict. + || isset( $query->query['post_type'] ) + ) { + return; + } + + // Create the post types property as an array and include the landing pages CPT in it. + $query_post_types = [ 'post', 'page', self::CPT ]; + + // Since WordPress determined this is supposed to be a page, we'll pre-set the post_type query arg to make sure + // it includes the Landing Page CPT, so when the query is parsed, our CPT will be a legitimate match to the + // Landing Page's permalink (that is directly under the domain, without a CPT slug prefix). In some cases, + // The 'name' property will be set, and in others it is the 'pagename', so we have to cover both cases. + if ( ! empty( $query->query['name'] ) ) { + $query->set( 'post_type', $query_post_types ); + } elseif ( ! empty( $query->query['pagename'] ) && false === strpos( $query->query['pagename'], '/' ) ) { + $query->set( 'post_type', $query_post_types ); + + // We also need to set the name query var since redirect_guess_404_permalink() relies on it. + add_filter( 'pre_redirect_guess_404_permalink', function( $value ) use ( $query ) { + set_query_var( 'name', $query->query['pagename'] ); + + return $value; + } ); + } + } + + /** + * Handle 404 + * + * This method runs after a page is not found in the database, but before a page is returned as a 404. + * These cases are handled in this filter callback, that runs on the 'pre_handle_404' filter. + * + * In some cases (such as when a site uses custom permalink structures), WordPress's WP_Query does not identify a + * Landing Page's URL as a post belonging to the Landing Page CPT. Some cases are handled successfully by the + * adjust_landing_page_query() method, but some are not and still trigger a 404 process. This method handles such + * cases by overriding the $wp_query global to fetch the correct landing page post entry. + * + * For example, since Landing Pages slugs come directly after the site domain name, WP_Query might parse the post + * as a category page. Since there is no category matching the slug, it triggers a 404 process. In this case, we + * run a query for a Landing Page post with the passed slug ($query->query['category_name']. If a Landing Page + * with the passed slug is found, we override the global $wp_query with the new, correct query. + * + * @param $current_value + * @param $query + * @return false + */ + private function handle_404( $current_value, $query ) { + global $wp_query; + + // If another plugin/theme already used this filter, exit here to avoid conflicts. + if ( $current_value ) { + return $current_value; + } + + if ( + // Make sure we only intervene in the main query. + ! $query->is_main_query() + // If a post was found, this is not a 404 case, so do not intervene. + || ! empty( $query->posts ) + // This filter is only meant to deal with wrong queries where the only query var is 'category_name'. + // If there is no 'category_name' query var, do not intervene. + || empty( $query->query['category_name'] ) + // If the query is for a real taxonomy (determined by it including a table to search in, such as the + // wp_term_relationships table), do not intervene. + || ! empty( $query->tax_query->table_aliases ) + ) { + return false; + } + + // Search for a Landing Page with the same name passed as the 'category name'. + $possible_new_query = new \WP_Query( [ + 'no_found_rows' => true, + 'post_type' => self::CPT, + 'name' => $query->query['category_name'], + ] ); + + // Only if such a Landing Page is found, override the query to fetch the correct page. + if ( ! empty( $possible_new_query->posts ) ) { + $wp_query = $possible_new_query; //phpcs:ignore WordPress.WP.GlobalVariablesOverride.Prohibited + } + + return false; + } + + public function __construct() { + $this->permalink_structure = get_option( 'permalink_structure' ); + + $this->register_landing_page_cpt(); + + // If there is a permalink structure set to the site, run the hooks that modify the Landing Pages permalinks to + // match WordPress' native 'Pages' post type. + if ( '' !== $this->permalink_structure ) { + // Landing Pages' post link needs to be modified to be identical to the pages permalink structure. This + // needs to happen in both the admin and the front end, since post links are also used in the admin pages. + add_filter( 'post_type_link', function( $post_link, $post, $leavename ) { + return $this->remove_post_type_slug( $post_link, $post, $leavename ); + }, 10, 3 ); + + // The query itself only has to be manipulated when pages are viewed in the front end. + if ( ! is_admin() || wp_doing_ajax() ) { + add_action( 'pre_get_posts', function ( $query ) { + $this->adjust_landing_page_query( $query ); + } ); + + // Handle cases where visiting a Landing Page's URL returns 404. + add_filter( 'pre_handle_404', function ( $value, $query ) { + return $this->handle_404( $value, $query ); + }, 10, 2 ); + } + } + + add_action( 'elementor/documents/register', function( Documents_Manager $documents_manager ) { + $documents_manager->register_document_type( self::DOCUMENT_TYPE, Landing_Page::get_class_full_name() ); + } ); + + if ( Plugin::$instance->experiments->is_feature_active( 'admin_menu_rearrangement' ) ) { + add_action( 'elementor/admin/menu_registered/elementor', function( MainMenu $menu ) { + $this->register_admin_menu( $menu ); + } ); + } else { + add_action( 'elementor/admin/menu/register', function( Admin_Menu_Manager $admin_menu ) { + $this->register_admin_menu_legacy( $admin_menu ); + }, Source_Local::ADMIN_MENU_PRIORITY + 20 ); + } + + // Add the custom 'Add New' link for Landing Pages into Elementor's admin config. + add_action( 'elementor/admin/localize_settings', function( array $settings ) { + return $this->admin_localize_settings( $settings ); + } ); + + add_filter( 'elementor/template_library/sources/local/register_taxonomy_cpts', function( array $cpts ) { + $cpts[] = self::CPT; + + return $cpts; + } ); + + // In the Landing Pages Admin Table page - Overwrite Template type column header title. + add_action( 'manage_' . Landing_Pages_Module::CPT . '_posts_columns', function( $posts_columns ) { + /** @var Source_Local $source_local */ + $source_local = Plugin::$instance->templates_manager->get_source( 'local' ); + + return $source_local->admin_columns_headers( $posts_columns ); + } ); + + // In the Landing Pages Admin Table page - Overwrite Template type column row values. + add_action( 'manage_' . Landing_Pages_Module::CPT . '_posts_custom_column', function( $column_name, $post_id ) { + /** @var Landing_Page $document */ + $document = Plugin::$instance->documents->get( $post_id ); + + $document->admin_columns_content( $column_name ); + }, 10, 2 ); + + // Overwrite the Admin Bar's 'New +' Landing Page URL with the link that creates the new LP in Elementor + // with the Template Library modal open. + add_action( 'admin_bar_menu', function( $admin_bar ) { + // Get the Landing Page menu node. + $new_landing_page_node = $admin_bar->get_node( 'new-e-landing-page' ); + + if ( $new_landing_page_node ) { + $new_landing_page_node->href = $this->get_add_new_landing_page_url(); + + $admin_bar->add_node( $new_landing_page_node ); + } + }, 100 ); + } +} diff --git a/wp-content/plugins/elementor/modules/lazyload/module.php b/wp-content/plugins/elementor/modules/lazyload/module.php new file mode 100644 index 0000000..12a451a --- /dev/null +++ b/wp-content/plugins/elementor/modules/lazyload/module.php @@ -0,0 +1,216 @@ + static::EXPERIMENT_NAME, + 'title' => esc_html__( 'Lazy Load Background Images', 'elementor' ), + 'tag' => esc_html__( 'Performance', 'elementor' ), + 'description' => esc_html__( 'Lazy loading images that are not in the viewport improves initial page load performance and user experience. By activating this experiment all background images except the first one on your page will be lazy loaded to improve your LCP score', 'elementor' ), + 'release_status' => Experiments_Manager::RELEASE_STATUS_ALPHA, + 'default' => Experiments_Manager::STATE_INACTIVE, + ]; + } + + private function enqueue_styles() { + wp_enqueue_style( + 'elementor-lazyload', + $this->get_css_assets_url( 'modules/lazyload/frontend' ), + [], + ELEMENTOR_VERSION + ); + } + + private function update_element_attributes( Element_Base $element ) { + $settings = $element->get_settings_for_display(); + $controls = $element->get_controls(); + $lazyload_attribute_name = 'data-e-bg-lazyload'; + + $controls_with_background_image = array_filter( $controls, function( $control ) { + return Utils::get_array_value_by_keys( $control, [ 'background_lazyload', 'active' ] ); + } ); + + foreach ( $controls_with_background_image as $control_name => $control_data ) { + $keys = Utils::get_array_value_by_keys( $control_data, [ 'background_lazyload', 'keys' ] ); + $background_image_url = Utils::get_array_value_by_keys( $settings, $keys ); + if ( $background_image_url ) { + + $has_attribute = $element->get_render_attributes( '_wrapper', $lazyload_attribute_name ); + if ( ! $has_attribute ) { + $bg_selector = Utils::get_array_value_by_keys( $control_data, [ 'background_lazyload', 'selector' ] ) ?? ''; + $element->add_render_attribute( '_wrapper', [ + $lazyload_attribute_name => $bg_selector, + ] ); + } + } + } + } + + private function append_lazyload_selector( $control, $value ) { + $is_dominant_color_enabled = $this->is_dominant_color_enabled(); + + if ( Utils::get_array_value_by_keys( $control, [ 'background_lazyload', 'active' ] ) ) { + foreach ( $control['selectors'] as $selector => $css_property ) { + if ( 0 === strpos( $css_property, 'background-image' ) ) { + if ( ! empty( $value['url'] ) ) { + $css_property = str_replace( 'url("{{URL}}")', 'var(--e-bg-lazyload-loaded)', $css_property ); + $control['selectors'][ $selector ] = $css_property . '--e-bg-lazyload: url("' . $value['url'] . '");'; + + if ( $is_dominant_color_enabled ) { + $dominant_color = $this->get_dominant_color( $value['id'] ); + if ( $dominant_color ) { + $control['selectors'][ $selector ] .= "background-color: #{$dominant_color} ;"; + } + } + } + } + } + } + return $control; + } + + private function is_dominant_color_enabled() { + if ( ! function_exists( 'perflab_get_active_modules' ) ) { + return false; + } + + $active_modules = perflab_get_active_modules(); + + return in_array( 'images/dominant-color', $active_modules, true ); + } + + private function get_dominant_color( $attachment_id ) { + $metadata = wp_get_attachment_metadata( $attachment_id ); + + // Performance Lab adds these metadata + $has_transparency = $metadata['has_transparency'] ?? false; + $dominant_color = esc_attr( $metadata['dominant_color'] ?? false ); + + if ( $dominant_color && ! $has_transparency ) { + return $dominant_color; + } + + return false; + } + + private function is_document_support_lazyload( $post_id ) { + if ( ! $post_id ) { + return false; + } + + $document = \Elementor\Plugin::$instance->documents->get( $post_id ); + + if ( $document ) { + $support_lazyload = $document->get_property( 'support_lazyload' ); + if ( false === $support_lazyload ) { + return false; + } + } + + return true; + } + + public function __construct() { + parent::__construct(); + + // Disable lazyload in admin area (true if inside WordPress administration interface - Editor, Admin, etc.) + if ( is_admin() ) { + return; + } + + add_action( 'elementor/element/after_add_attributes', function( Element_Base $element ) { + + $current_document = \Elementor\Plugin::$instance->documents->get_current(); + + if ( ! $current_document ) { + return; + } + + $post_id = $current_document->get_main_id(); + + if ( ! $this->is_document_support_lazyload( $post_id ) ) { + return; + } + + $this->update_element_attributes( $element ); + } ); + + add_filter('elementor/files/css/selectors', function( $control, $value, $css_instance ) { + + $post_id = method_exists( $css_instance, 'get_post_id' ) ? $css_instance->get_post_id() : false; + + if ( ! $post_id ) { + return $control; + } + + if ( ! $this->is_document_support_lazyload( $post_id ) ) { + return $control; + } + + return $this->append_lazyload_selector( $control, $value ); + }, 10, 3); + + add_filter( 'body_class', function( $classes ) { + $classes[] = 'e-lazyload'; + return $classes; + } ); + + add_action( 'wp_enqueue_scripts', function() { + $this->enqueue_styles(); + } ); + + add_action( 'wp_footer', function() { + ?> + + true, + ]; + + return $config; + } + + public function get_content( $with_css = false ) { + return do_shortcode( parent::get_content( $with_css ) ); + } +} diff --git a/wp-content/plugins/elementor/modules/library/documents/not-supported.php b/wp-content/plugins/elementor/modules/library/documents/not-supported.php new file mode 100644 index 0000000..e966345 --- /dev/null +++ b/wp-content/plugins/elementor/modules/library/documents/not-supported.php @@ -0,0 +1,73 @@ +get_main_id(); + } + + /** + * @since 3.1.0 + * @access protected + */ + protected function register_controls() { + parent::register_controls(); + + Post::register_hide_title_control( $this ); + + Post::register_style_controls( $this ); + } + + protected function get_remote_library_config() { + $config = parent::get_remote_library_config(); + + $config['type'] = 'page'; + $config['default_route'] = 'templates/pages'; + + return $config; + } +} diff --git a/wp-content/plugins/elementor/modules/library/documents/section.php b/wp-content/plugins/elementor/modules/library/documents/section.php new file mode 100644 index 0000000..979f6b5 --- /dev/null +++ b/wp-content/plugins/elementor/modules/library/documents/section.php @@ -0,0 +1,49 @@ +documents + ->register_document_type( 'not-supported', Documents\Not_Supported::get_class_full_name() ) + ->register_document_type( 'page', Documents\Page::get_class_full_name() ) + ->register_document_type( 'section', Documents\Section::get_class_full_name() ); + + $experiments_manager = Plugin::$instance->experiments; + + // Register `Container` document type only if the experiment is active. + if ( $experiments_manager->is_feature_active( 'container' ) ) { + Plugin::$instance->documents + ->register_document_type( 'container', Documents\Container::get_class_full_name() ); + } + } +} diff --git a/wp-content/plugins/elementor/modules/library/traits/library.php b/wp-content/plugins/elementor/modules/library/traits/library.php new file mode 100644 index 0000000..18c69bf --- /dev/null +++ b/wp-content/plugins/elementor/modules/library/traits/library.php @@ -0,0 +1,41 @@ +get_name() ); + //PHPCS - Not a user input + printf( '%s', $admin_filter_url, $this->get_title() ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped + } + + /** + * Save document type. + * + * Set new/updated document type. + * + * @since 3.1.0 + * @access public + */ + public function save_template_type() { + parent::save_template_type(); + + wp_set_object_terms( $this->post->ID, $this->get_name(), Source_Local::TAXONOMY_TYPE_SLUG ); + } +} diff --git a/wp-content/plugins/elementor/modules/library/user-favorites.php b/wp-content/plugins/elementor/modules/library/user-favorites.php new file mode 100644 index 0000000..1984e8b --- /dev/null +++ b/wp-content/plugins/elementor/modules/library/user-favorites.php @@ -0,0 +1,145 @@ +user_id = $user_id; + } + + /** + * @param null $vendor + * @param null $resource + * @param false $ignore_cache + * + * @return array + */ + public function get( $vendor = null, $resource = null, $ignore_cache = false ) { + if ( $ignore_cache || empty( $this->cache ) ) { + $this->cache = get_user_meta( $this->user_id, self::USER_META_KEY, true ); + } + + if ( ! $this->cache || ! is_array( $this->cache ) ) { + return []; + } + + if ( $vendor && $resource ) { + $key = $this->get_key( $vendor, $resource ); + + return isset( $this->cache[ $key ] ) ? $this->cache[ $key ] : []; + } + + return $this->cache; + } + + /** + * @param $vendor + * @param $resource + * @param $id + * + * @return bool + */ + public function exists( $vendor, $resource, $id ) { + return in_array( $id, $this->get( $vendor, $resource ), true ); + } + + /** + * @param $vendor + * @param $resource + * @param array $value + * + * @return $this + * @throws \Exception + */ + public function save( $vendor, $resource, $value = [] ) { + $all_favorites = $this->get(); + + $all_favorites[ $this->get_key( $vendor, $resource ) ] = $value; + + $result = update_user_meta( $this->user_id, self::USER_META_KEY, $all_favorites ); + + if ( false === $result ) { + throw new \Exception( 'Failed to save user favorites.' ); + } + + $this->cache = $all_favorites; + + return $this; + } + + /** + * @param $vendor + * @param $resource + * @param $id + * + * @return $this + * @throws \Exception + */ + public function add( $vendor, $resource, $id ) { + $favorites = $this->get( $vendor, $resource ); + + if ( in_array( $id, $favorites, true ) ) { + return $this; + } + + $favorites[] = $id; + + $this->save( $vendor, $resource, $favorites ); + + return $this; + } + + /** + * @param $vendor + * @param $resource + * @param $id + * + * @return $this + * @throws \Exception + */ + public function remove( $vendor, $resource, $id ) { + $favorites = $this->get( $vendor, $resource ); + + if ( ! in_array( $id, $favorites, true ) ) { + return $this; + } + + $favorites = array_filter( $favorites, function ( $item ) use ( $id ) { + return $item !== $id; + } ); + + $this->save( $vendor, $resource, $favorites ); + + return $this; + } + + /** + * @param $vendor + * @param $resource + * + * @return string + */ + private function get_key( $vendor, $resource ) { + return "{$vendor}/{$resource}"; + } +} diff --git a/wp-content/plugins/elementor/modules/nested-accordion/module.php b/wp-content/plugins/elementor/modules/nested-accordion/module.php new file mode 100644 index 0000000..a5e2eef --- /dev/null +++ b/wp-content/plugins/elementor/modules/nested-accordion/module.php @@ -0,0 +1,31 @@ +experiments->is_feature_active( 'nested-elements' ); + } + + public function get_name() { + return 'nested-accordion'; + } + + public function __construct() { + parent::__construct(); + + add_action( 'elementor/editor/before_enqueue_scripts', function () { + wp_enqueue_script( $this->get_name(), $this->get_js_assets_url( $this->get_name() ), [ + 'nested-elements', + ], ELEMENTOR_VERSION, true ); + } ); + } +} diff --git a/wp-content/plugins/elementor/modules/nested-accordion/widgets/nested-accordion.php b/wp-content/plugins/elementor/modules/nested-accordion/widgets/nested-accordion.php new file mode 100644 index 0000000..3e84467 --- /dev/null +++ b/wp-content/plugins/elementor/modules/nested-accordion/widgets/nested-accordion.php @@ -0,0 +1,966 @@ +experiments->is_feature_active( 'nested-elements' ); + } + + protected function item_content_container( int $index ) { + return [ + 'elType' => 'container', + 'settings' => [ + '_title' => sprintf( __( 'item #%s', 'elementor' ), $index ), + 'content_width' => 'full', + ], + ]; + } + + protected function get_default_children_elements() { + return [ + $this->item_content_container( 1 ), + $this->item_content_container( 2 ), + $this->item_content_container( 3 ), + ]; + } + + protected function get_default_repeater_title_setting_key() { + return 'item_title'; + } + + protected function get_default_children_title() { + return esc_html__( 'Item #%d', 'elementor' ); + } + + protected function get_default_children_placeholder_selector() { + return '.e-n-accordion'; + } + + protected function get_html_wrapper_class() { + return 'elementor-widget-n-accordion'; + } + + protected function register_controls() { + $this->start_controls_section( 'section_items', [ + 'label' => esc_html__( 'Layout', 'elementor' ), + ] ); + + $repeater = new Repeater(); + + $repeater->add_control( + 'item_title', + [ + 'label' => esc_html__( 'Title', 'elementor' ), + 'type' => Controls_Manager::TEXT, + 'default' => esc_html__( 'Item Title', 'elementor' ), + 'placeholder' => esc_html__( 'Item Title', 'elementor' ), + 'label_block' => true, + 'dynamic' => [ + 'active' => true, + ], + ] + ); + + $repeater->add_control( + 'element_css_id', + [ + 'label' => esc_html__( 'CSS ID', 'elementor' ), + 'type' => Controls_Manager::TEXT, + 'default' => '', + 'dynamic' => [ + 'active' => true, + ], + 'ai' => [ + 'active' => false, + ], + 'title' => esc_html__( 'Add your custom id WITHOUT the Pound key. e.g: my-id', 'elementor' ), + 'style_transfer' => false, + ] + ); + + $this->add_control( + 'items', + [ + 'label' => esc_html__( 'Items', 'elementor' ), + 'type' => Control_Nested_Repeater::CONTROL_TYPE, + 'fields' => $repeater->get_controls(), + 'default' => [ + [ + 'item_title' => esc_html__( 'Item #1', 'elementor' ), + ], + [ + 'item_title' => esc_html__( 'Item #2', 'elementor' ), + ], + [ + 'item_title' => esc_html__( 'Item #3', 'elementor' ), + ], + ], + 'title_field' => '{{{ item_title }}}', + 'button_text' => 'Add Item', + ] + ); + + $this->add_responsive_control( + 'accordion_item_title_position_horizontal', + [ + 'label' => esc_html__( 'Item Position', 'elementor' ), + 'type' => Controls_Manager::CHOOSE, + 'separator' => 'before', + 'options' => [ + 'start' => [ + 'title' => esc_html__( 'Start', 'elementor' ), + 'icon' => 'eicon-flex eicon-align-start-h', + ], + 'center' => [ + 'title' => esc_html__( 'Center', 'elementor' ), + 'icon' => 'eicon-h-align-center', + ], + 'end' => [ + 'title' => esc_html__( 'End', 'elementor' ), + 'icon' => 'eicon-flex eicon-align-end-h', + ], + 'stretch' => [ + 'title' => esc_html__( 'Stretch', 'elementor' ), + 'icon' => 'eicon-h-align-stretch', + ], + ], + 'selectors_dictionary' => [ + 'start' => '--n-accordion-title-justify-content: initial; --n-accordion-title-flex-grow: initial;', + 'center' => '--n-accordion-title-justify-content: center; --n-accordion-title-flex-grow: initial;', + 'end' => '--n-accordion-title-justify-content: flex-end; --n-accordion-title-flex-grow: initial;', + 'stretch' => '--n-accordion-title-justify-content: space-between; --n-accordion-title-flex-grow: 1;', + ], + 'selectors' => [ + '{{WRAPPER}}' => '{{VALUE}}', + ], + ] + ); + + $this->add_control( + 'heading_accordion_item_title_icon', + [ + 'type' => Controls_Manager::HEADING, + 'label' => esc_html__( 'Icon', 'elementor' ), + 'separator' => 'before', + ] + ); + + $this->add_responsive_control( + 'accordion_item_title_icon_position', + [ + 'label' => esc_html__( 'Position', 'elementor' ), + 'type' => Controls_Manager::CHOOSE, + 'options' => [ + 'start' => [ + 'title' => esc_html__( 'Start', 'elementor' ), + 'icon' => 'eicon-h-align-left', + ], + 'end' => [ + 'title' => esc_html__( 'End', 'elementor' ), + 'icon' => 'eicon-h-align-right', + ], + ], + 'selectors_dictionary' => [ + 'start' => '--n-accordion-title-icon-order: -1;', + 'end' => '--n-accordion-title-icon-order: initial;', + ], + 'selectors' => [ + '{{WRAPPER}}' => '{{VALUE}}', + ], + ] + ); + + $this->add_control( + 'accordion_item_title_icon', + [ + 'label' => esc_html__( 'Expand', 'elementor' ), + 'type' => Controls_Manager::ICONS, + 'default' => [ + 'value' => 'fas fa-plus', + 'library' => 'fa-solid', + ], + 'skin' => 'inline', + 'label_block' => false, + ] + ); + + $this->add_control( + 'accordion_item_title_icon_active', + [ + 'label' => esc_html__( 'Collapse', 'elementor' ), + 'type' => Controls_Manager::ICONS, + 'fa4compatibility' => 'icon_active', + 'default' => [ + 'value' => 'fas fa-minus', + 'library' => 'fa-solid', + ], + 'condition' => [ + 'accordion_item_title_icon[value]!' => '', + ], + 'skin' => 'inline', + 'label_block' => false, + ] + ); + + $this->add_control( + 'title_tag', + [ + 'label' => esc_html__( 'Title HTML Tag', 'elementor' ), + 'type' => Controls_Manager::SELECT, + 'options' => [ + 'h1' => 'H1', + 'h2' => 'H2', + 'h3' => 'H3', + 'h4' => 'H4', + 'h5' => 'H5', + 'h6' => 'H6', + 'div' => 'div', + 'span' => 'span', + 'p' => 'p', + ], + 'selectors_dictionary' => [ + 'h1' => '--n-accordion-title-font-size: 2.5rem;', + 'h2' => '--n-accordion-title-font-size: 2rem;', + 'h3' => '--n-accordion-title-font-size: 1,75rem;', + 'h4' => '--n-accordion-title-font-size: 1.5rem;', + 'h5' => '--n-accordion-title-font-size: 1rem;', + 'h6' => '--n-accordion-title-font-size: 1rem; ', + 'div' => '--n-accordion-title-font-size: 1rem;', + 'span' => '--n-accordion-title-font-size: 1rem; ', + 'p' => '--n-accordion-title-font-size: 1rem;', + ], + 'selectors' => [ + '{{WRAPPER}}' => '{{VALUE}}', + ], + 'default' => 'div', + 'separator' => 'before', + 'render_type' => 'template', + + ] + ); + + $this->add_control( + 'faq_schema', + [ + 'label' => esc_html__( 'FAQ Schema', 'elementor' ), + 'type' => Controls_Manager::SWITCHER, + 'label_on' => esc_html__( 'Yes', 'elementor' ), + 'label_off' => esc_html__( 'No', 'elementor' ), + 'default' => 'no', + ] + ); + + $this->add_control( + 'faq_schema_message', + [ + 'type' => Controls_Manager::ALERT, + 'alert_type' => 'info', + 'content' => esc_html__( 'Let Google know that this section contains an FAQ. Make sure to only use it only once per page', 'elementor' ), + 'condition' => [ + 'faq_schema[value]' => 'yes', + ], + ] + ); + + $this->end_controls_section(); + + $this->start_controls_section( + 'section_interactions', + [ + 'label' => esc_html__( 'Interactions', 'elementor' ), + ] + ); + + $this->add_control( + 'default_state', + [ + 'label' => esc_html__( 'Default State', 'elementor' ), + 'type' => Controls_Manager::SELECT, + 'options' => [ + 'expanded' => esc_html__( 'First expanded', 'elementor' ), + 'all_collapsed' => esc_html__( 'All collapsed', 'elementor' ), + ], + 'default' => 'expanded', + 'frontend_available' => true, + ] + ); + + $this->add_control( + 'max_items_expended', + [ + 'label' => esc_html__( 'Max Items Expanded', 'elementor' ), + 'type' => Controls_Manager::SELECT, + 'options' => [ + 'one' => esc_html__( 'One', 'elementor' ), + 'multiple' => esc_html__( 'Multiple', 'elementor' ), + ], + 'default' => 'one', + 'frontend_available' => true, + ] + ); + + $this->add_control( + 'n_accordion_animation_duration', + [ + 'label' => esc_html__( 'Animation Duration', 'elementor' ), + 'type' => Controls_Manager::SLIDER, + 'size_units' => [ 's', 'ms' ], + 'default' => [ + 'unit' => 'ms', + 'size' => 400, + ], + 'frontend_available' => true, + ] + ); + + $this->end_controls_section(); + + $this->add_style_tab(); + } + + private function add_style_tab() { + $this->add_accordion_style_section(); + $this->add_header_style_section(); + $this->add_content_style_section(); + } + + private function add_accordion_style_section() { + $this->start_controls_section( + 'section_accordion_style', + [ + 'label' => esc_html__( 'Accordion', 'elementor' ), + 'tab' => Controls_Manager::TAB_STYLE, + ] + ); + + $this->add_responsive_control( + 'accordion_item_title_space_between', + [ + 'label' => esc_html__( 'Space between Items', 'elementor' ), + 'type' => Controls_Manager::SLIDER, + 'size_units' => [ 'px', 'em', 'rem', 'custom' ], + 'range' => [ + 'px' => [ + 'max' => 200, + ], + 'em' => [ + 'max' => 20, + ], + 'rem' => [ + 'max' => 20, + ], + ], + 'default' => [ + 'size' => 0, + ], + 'selectors' => [ + '{{WRAPPER}}' => '--n-accordion-item-title-space-between: {{SIZE}}{{UNIT}}', + ], + ] + ); + + $this->add_responsive_control( + 'accordion_item_title_distance_from_content', + [ + 'label' => esc_html__( 'Distance from content', 'elementor' ), + 'type' => Controls_Manager::SLIDER, + 'size_units' => [ 'px', 'em', 'rem', 'custom' ], + 'range' => [ + 'px' => [ + 'max' => 200, + ], + 'em' => [ + 'max' => 20, + ], + 'rem' => [ + 'max' => 20, + ], + ], + 'default' => [ + 'size' => 0, + ], + 'selectors' => [ + '{{WRAPPER}}' => '--n-accordion-item-title-distance-from-content: {{SIZE}}{{UNIT}}', + ], + ] + ); + + $this->start_controls_tabs( 'accordion_border_and_background' ); + + foreach ( [ 'normal', 'hover', 'active' ] as $state ) { + $this->add_border_and_radius_style( $state ); + } + + $this->end_controls_tabs(); + + $this->add_responsive_control( + 'accordion_border_radius', + [ + 'label' => esc_html__( 'Border Radius', 'elementor' ), + 'type' => Controls_Manager::DIMENSIONS, + 'size_units' => [ 'px', '%', 'em', 'rem', 'vw', 'custom' ], + 'selectors' => [ + '{{WRAPPER}}' => '--n-accordion-border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};', + ], + 'separator' => 'before', + ] + ); + + $this->add_responsive_control( + 'accordion_padding', + [ + 'label' => esc_html__( 'Padding', 'elementor' ), + 'type' => Controls_Manager::DIMENSIONS, + 'size_units' => [ 'px', '%', 'em', 'rem', 'custom' ], + 'selectors' => [ + '{{WRAPPER}} ' => '--n-accordion-padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};', + ], + ] + ); + + $this->end_controls_section(); + } + + private function add_content_style_section() { + + $low_specificity_accordion_item_selector = ':where( {{WRAPPER}} > .elementor-widget-container > .e-n-accordion > .e-n-accordion-item ) > .e-con'; + + $this->start_controls_section( + 'section_content_style', + [ + 'label' => esc_html__( 'Content', 'elementor' ), + 'tab' => Controls_Manager::TAB_STYLE, + ] + ); + + $this->add_group_control( + Group_Control_Background::get_type(), + [ + 'name' => 'content_background', + 'types' => [ 'classic', 'gradient' ], + 'exclude' => [ 'image' ], + 'selector' => $low_specificity_accordion_item_selector, + ] + ); + + $this->add_group_control( + Group_Control_Border::get_type(), + [ + 'name' => 'content_border', + 'selector' => $low_specificity_accordion_item_selector, + 'fields_options' => [ + 'color' => [ + 'label' => esc_html__( 'Border Color', 'elementor' ), + ], + 'width' => [ + 'label' => esc_html__( 'Border Width', 'elementor' ), + ], + ], + ] + ); + + $this->add_responsive_control( + 'content_border_radius', + [ + 'label' => esc_html__( 'Border Radius', 'elementor' ), + 'type' => Controls_Manager::DIMENSIONS, + 'size_units' => [ 'px', '%', 'em', 'rem', 'vw', 'custom' ], + 'selectors' => [ + $low_specificity_accordion_item_selector => '--border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};', + ], + ] + ); + + $logical_dimensions_inline_start = is_rtl() ? '{{RIGHT}}{{UNIT}}' : '{{LEFT}}{{UNIT}}'; + $logical_dimensions_inline_end = is_rtl() ? '{{LEFT}}{{UNIT}}' : '{{RIGHT}}{{UNIT}}'; + + $this->add_responsive_control( + 'content_padding', + [ + 'label' => esc_html__( 'Padding', 'elementor' ), + 'type' => Controls_Manager::DIMENSIONS, + 'size_units' => [ 'px', '%', 'em', 'rem', 'custom' ], + 'selectors' => [ + $low_specificity_accordion_item_selector => "--padding-block-start: {{TOP}}{{UNIT}}; --padding-inline-end: $logical_dimensions_inline_end; --padding-block-end: {{BOTTOM}}{{UNIT}}; --padding-inline-start: $logical_dimensions_inline_start;", + ], + ] + ); + + $this->end_controls_section(); + } + + private function add_header_style_section() { + $this->start_controls_section( + 'section_header_style', + [ + 'label' => esc_html__( 'Header', 'elementor' ), + 'tab' => Controls_Manager::TAB_STYLE, + ] + ); + + $this->add_control( + 'heading_header_style_title', + [ + 'type' => Controls_Manager::HEADING, + 'label' => esc_html__( 'Title', 'elementor' ), + + ] + ); + + $this->add_group_control( + Group_Control_Typography::get_type(), + [ + 'name' => 'title_typography', + 'selector' => ':where( {{WRAPPER}} > .elementor-widget-container > .e-n-accordion > .e-n-accordion-item > .e-n-accordion-item-title > .e-n-accordion-item-title-header ) > .e-n-accordion-item-title-text', + 'fields_options' => [ + 'font_size' => [ + 'selectors' => [ + '{{WRAPPER}}' => '--n-accordion-title-font-size: {{SIZE}}{{UNIT}}', + ], + ], + ], + ] + ); + + $this->start_controls_tabs( 'header_title_color_style' ); + + foreach ( [ 'normal', 'hover', 'active' ] as $state ) { + $this->add_header_style( $state, 'title' ); + } + + $this->end_controls_tabs(); + + $this->add_control( + 'heading_icon_style_title', + [ + 'type' => Controls_Manager::HEADING, + 'label' => esc_html__( 'Icon', 'elementor' ), + 'separator' => 'before', + ] + ); + + $this->add_responsive_control( + 'icon_size', + [ + 'label' => esc_html__( 'Size', 'elementor' ), + 'type' => Controls_Manager::SLIDER, + 'range' => [ + 'em' => [ + 'max' => 10, + ], + 'rem' => [ + 'max' => 10, + ], + ], + 'default' => [ + 'unit' => 'px', + 'size' => 15, + ], + 'size_units' => [ 'px', '%', 'em', 'rem', 'vw', 'custom' ], + 'selectors' => [ + '{{WRAPPER}}' => '--n-accordion-icon-size: {{SIZE}}{{UNIT}}', + ], + ] + ); + + $this->add_responsive_control( + 'icon_spacing', + [ + 'label' => esc_html__( 'Spacing', 'elementor' ), + 'type' => Controls_Manager::SLIDER, + 'range' => [ + 'px' => [ + 'max' => 400, + ], + 'vw' => [ + 'max' => 50, + 'step' => 0.1, + ], + ], + 'size_units' => [ 'px', '%', 'em', 'rem', 'vw', 'custom' ], + 'selectors' => [ + '{{WRAPPER}}' => '--n-accordion-icon-gap: {{SIZE}}{{UNIT}}', + ], + 'condition' => [ + 'accordion_item_title_position_horizontal!' => 'stretch', + ], + ] + ); + + $this->start_controls_tabs( 'header_icon_color_style' ); + + foreach ( [ 'normal', 'hover', 'active' ] as $state ) { + $this->add_header_style( $state, 'icon' ); + } + + $this->end_controls_tabs(); + $this->end_controls_section(); + } + + private function add_header_style( $state, $context ) { + $variable = '--n-accordion-' . $context . '-' . $state . '-color'; + + switch ( $state ) { + case 'hover': + $translated_tab_text = esc_html__( 'Hover', 'elementor' ); + $translated_tab_css_selector = ':where( {{WRAPPER}} > .elementor-widget-container > .e-n-accordion > .e-n-accordion-item:not([open]) > .e-n-accordion-item-title:hover > .e-n-accordion-item-title-header ) > .e-n-accordion-item-title-text'; + break; + case 'active': + $translated_tab_text = esc_html__( 'Active', 'elementor' ); + $translated_tab_css_selector = ':where( {{WRAPPER}} > .elementor-widget-container > .e-n-accordion > .e-n-accordion-item[open] > .e-n-accordion-item-title > .e-n-accordion-item-title-header ) > .e-n-accordion-item-title-text'; + break; + default: + $translated_tab_text = esc_html__( 'Normal', 'elementor' ); + $translated_tab_css_selector = ':where( {{WRAPPER}} > .elementor-widget-container > .e-n-accordion > .e-n-accordion-item:not([open]) > .e-n-accordion-item-title:not(hover) > .e-n-accordion-item-title-header ) > .e-n-accordion-item-title-text'; + break; + } + + $this->start_controls_tab( + 'header_' . $state . '_' . $context, + [ + 'label' => $translated_tab_text, + ] + ); + + $this->add_control( + $state . '_' . $context . '_color', + [ + 'label' => esc_html__( 'Color', 'elementor' ), + 'type' => Controls_Manager::COLOR, + 'selectors' => [ + '{{WRAPPER}}' => $variable . ': {{VALUE}};', + ], + ] + ); + + if ( 'title' === $context ) { + $this->add_group_control( + Group_Control_Text_Shadow::get_type(), + [ + 'name' => $context . '_' . $state . '_text_shadow', + 'selector' => '{{WRAPPER}} ' . $translated_tab_css_selector, + 'fields_options' => [ + 'text_shadow_type' => [ + 'label' => esc_html__( 'Shadow', 'elementor' ), + ], + ], + ] + ); + + $this->add_group_control( + Group_Control_Text_Stroke::get_type(), + [ + 'name' => $context . '_' . $state . '_stroke', + 'selector' => '{{WRAPPER}} ' . $translated_tab_css_selector, + ] + ); + } + + $this->end_controls_tab(); + } + + /** + * @string $state + */ + private function add_border_and_radius_style( $state ) { + $selector = '{{WRAPPER}} > .elementor-widget-container > .e-n-accordion > .e-n-accordion-item > .e-n-accordion-item-title'; + $translated_tab_text = esc_html__( 'Normal', 'elementor' ); + + switch ( $state ) { + case 'hover': + $selector .= ':hover'; + $translated_tab_text = esc_html__( 'Hover', 'elementor' ); + break; + case 'active': + $selector = '{{WRAPPER}} > .elementor-widget-container > .e-n-accordion > .e-n-accordion-item[open] > .e-n-accordion-item-title'; + $translated_tab_text = esc_html__( 'Active', 'elementor' ); + break; + } + + $this->start_controls_tab( + 'accordion_' . $state . '_border_and_background', + [ + 'label' => $translated_tab_text, + ] + ); + + $this->add_group_control( + Group_Control_Background::get_type(), + [ + 'name' => 'accordion_background_' . $state, + 'types' => [ 'classic', 'gradient' ], + 'exclude' => [ 'image' ], + 'fields_options' => [ + 'color' => [ + 'label' => esc_html__( 'Color', 'elementor' ), + ], + ], + 'selector' => $selector, + ] + ); + + $this->add_group_control( + Group_Control_Border::get_type(), + [ + 'name' => 'accordion_border_' . $state, + 'selector' => $selector, + ] + ); + + $this->end_controls_tab(); + } + + private function is_active_icon_exist( $settings ):bool { + return array_key_exists( 'accordion_item_title_icon_active', $settings ) && ! empty( $settings['accordion_item_title_icon_active'] ) && ! empty( $settings['accordion_item_title_icon_active']['value'] ); + } + + private function render_accordion_icons( $settings ) { + $icon_html = Icons_Manager::try_get_icon_html( $settings['accordion_item_title_icon'], [ 'aria-hidden' => 'true' ] ); + $icon_active_html = $this->is_active_icon_exist( $settings ) + ? Icons_Manager::try_get_icon_html( $settings['accordion_item_title_icon_active'], [ 'aria-hidden' => 'true' ] ) + : $icon_html; + + ob_start(); + ?> + + + + + + get_settings_for_display(); + $items = $settings['items']; + $id_int = substr( $this->get_id_int(), 0, 3 ); + $items_title_html = ''; + $icons_content = $this->render_accordion_icons( $settings ); + $this->add_render_attribute( 'elementor-accordion', 'class', 'e-n-accordion' ); + $this->add_render_attribute( 'elementor-accordion', 'aria-label', 'Accordion. Open links with Enter or Space, close with Escape, and navigate with Arrow Keys' ); + $default_state = $settings['default_state']; + $title_html_tag = Utils::validate_html_tag( $settings['title_tag'] ); + + $faq_schema = []; + + foreach ( $items as $index => $item ) { + $accordion_count = $index + 1; + $item_setting_key = $this->get_repeater_setting_key( 'item_title', 'items', $index ); + $item_summary_key = $this->get_repeater_setting_key( 'item_summary', 'items', $index ); + $item_classes = [ 'e-n-accordion-item' ]; + $item_id = empty( $item['element_css_id'] ) ? 'e-n-accordion-item-' . $id_int . $index : $item['element_css_id']; + $item_title = $item['item_title']; + $is_open = 'expanded' === $default_state && 0 === $index ? 'open' : ''; + $aria_expanded = 'expanded' === $default_state && 0 === $index; + + $this->add_render_attribute( $item_setting_key, [ + 'id' => $item_id, + 'class' => $item_classes, + ] ); + + $this->add_render_attribute( $item_summary_key, [ + 'class' => [ 'e-n-accordion-item-title' ], + 'data-accordion-index' => $accordion_count, + 'tabindex' => 0 === $index ? 0 : -1, + 'aria-expanded' => $aria_expanded ? 'true' : 'false', + 'aria-controls' => $item_id, + ] ); + + $title_render_attributes = $this->get_render_attribute_string( $item_setting_key ); + $title_render_attributes = $title_render_attributes . ' ' . $is_open; + + $summary_render_attributes = $this->get_render_attribute_string( $item_summary_key ); + + // items content. + ob_start(); + $this->print_child( $index, $item_id ); + $item_content = ob_get_clean(); + + $faq_schema[ $item_title ] = $item_content; + + ob_start(); + ?> +
    > + > + $item_title " ); ?> + + + +
    + +
    print_render_attribute_string( 'elementor-accordion' ); ?>> + +
    + 'https://schema.org', + '@type' => 'FAQPage', + 'mainEntity' => [], + ]; + + foreach ( $faq_schema as $name => $text ) { + $json['mainEntity'][] = [ + '@type' => 'Question', + 'name' => wp_strip_all_tags( $name ), + 'acceptedAnswer' => [ + '@type' => 'Answer', + 'text' => wp_strip_all_tags( $text ), + ], + ]; + } + ?> + + get_children(); + + if ( ! empty( $children[ $index ] ) ) { + // Add data-tab-index attribute to the content area. + $add_attribute_to_container = function ( $should_render, $container ) use ( $item_id ) { + $this->add_attributes_to_container( $container, $item_id ); + + return $should_render; + }; + + add_filter( 'elementor/frontend/container/should_render', $add_attribute_to_container, 10, 3 ); + $children[ $index ]->print_element(); + remove_filter( 'elementor/frontend/container/should_render', $add_attribute_to_container ); + } + } + + protected function add_attributes_to_container( $container, $item_id ) { + $container->add_render_attribute( '_wrapper', [ + 'role' => 'region', + 'aria-labelledby' => $item_id, + ] ); + } + + protected function content_template() { + ?> +
    + <# if ( settings['items'] ) { + const elementUid = view.getIDInt().toString().substring( 0, 3 ), + titleHTMLTag = elementor.helpers.validateHTMLTag( settings.title_tag ), + defaultState = settings.default_state, + itemTitleIcon = elementor.helpers.renderIcon( view, settings['accordion_item_title_icon'], { 'aria-hidden': true }, 'i', 'object' ) ?? '', + itemTitleIconActive = '' === settings.accordion_item_title_icon_active.value + ? itemTitleIcon + : elementor.helpers.renderIcon( view, settings['accordion_item_title_icon_active'], { 'aria-hidden': true }, 'i', 'object' ); + #> + + <# _.each( settings['items'], function( item, index ) { + const itemCount = index + 1, + itemUid = elementUid + index, + itemTitleTextKey = 'item-title-text-' + itemUid, + itemWrapperKey = itemUid, + itemTitleKey = 'item-' + itemUid, + ariaExpanded = 'expanded' === defaultState && 0 === index ? 'true' : 'false'; + + if ( '' !== item.element_css_id ) { + itemId = item.element_css_id; + } else { + itemId = 'e-n-accordion-item-' + itemUid; + } + + const itemWrapperAttributes = { + 'id': itemId, + 'class': [ 'e-n-accordion-item', 'e-normal' ], + }; + + if ( defaultState === 'expanded' && index === 0) { + itemWrapperAttributes['open'] = true; + } + + view.addRenderAttribute( itemWrapperKey, itemWrapperAttributes ); + + view.addRenderAttribute( itemTitleKey, { + 'class': ['e-n-accordion-item-title'], + 'data-accordion-index': itemCount, + 'tabindex': 0 === index ? 0 : -1, + 'aria-expanded': ariaExpanded, + 'aria-controls': itemId, + }); + + view.addRenderAttribute( itemTitleTextKey, { + 'class': ['e-n-accordion-item-title-text'], + 'data-binding-type': 'repeater-item', + 'data-binding-repeater-name': 'items', + 'data-binding-setting': ['item_title'], + 'data-binding-index': itemCount, + }); + #> + +
    + + + <{{{ titleHTMLTag }}} {{{ view.getRenderAttributeString( itemTitleTextKey ) }}}> + {{{ item.item_title }}} + + + <# if (settings.accordion_item_title_icon.value) { #> + + {{{ itemTitleIconActive.value }}} + {{{ itemTitleIcon.value }}} + + <# } #> + +
    + <# } ); #> + <# } #> +
    + 'container', + * 'settings' => [ + * '_title' => __( 'Tab #1', 'elementor' ), + * ], + * ], + * @return string + */ + protected function get_default_children_title() { + return esc_html__( 'Item #%d', 'elementor' ); + } + + /** + * Get default children placeholder selector, Empty string, means will be added at the end view. + * + * @return string + */ + protected function get_default_children_placeholder_selector() { + return ''; + } + + /** + * @inheritDoc + * + * To support nesting. + */ + protected function _get_default_child_type( array $element_data ) { + return Plugin::$instance->elements_manager->get_element_types( $element_data['elType'] ); + } + + /** + * @inheritDoc + * + * Adding new 'defaults' config for handling children elements. + */ + protected function get_initial_config() { + return array_merge( parent::get_initial_config(), [ + 'defaults' => [ + 'elements' => $this->get_default_children_elements(), + 'elements_title' => $this->get_default_children_title(), + 'elements_placeholder_selector' => $this->get_default_children_placeholder_selector(), + 'repeater_title_setting' => $this->get_default_repeater_title_setting_key(), + ], + 'support_nesting' => true, + ] ); + } + + /** + * @inheritDoc + * + * Each element including its children elements. + */ + public function get_raw_data( $with_html_content = false ) { + $elements = []; + $data = $this->get_data(); + + $children = $this->get_children(); + + foreach ( $children as $child ) { + $child_raw_data = $child->get_raw_data( $with_html_content ); + + $elements[] = $child_raw_data; + } + + return [ + 'id' => $this->get_id(), + 'elType' => $data['elType'], + 'widgetType' => $data['widgetType'], + 'settings' => $data['settings'], + 'elements' => $elements, + ]; + } + + /** + * Print child, helper method to print the child element. + * + * @param int $index + */ + public function print_child( $index ) { + $children = $this->get_children(); + + if ( ! empty( $children[ $index ] ) ) { + $children[ $index ]->print_element(); + } + } +} diff --git a/wp-content/plugins/elementor/modules/nested-elements/controls/control-nested-repeater.php b/wp-content/plugins/elementor/modules/nested-elements/controls/control-nested-repeater.php new file mode 100644 index 0000000..0e9c64e --- /dev/null +++ b/wp-content/plugins/elementor/modules/nested-elements/controls/control-nested-repeater.php @@ -0,0 +1,21 @@ + self::EXPERIMENT_NAME, + 'title' => esc_html__( 'Nested Elements', 'elementor' ), + 'description' => sprintf( + '%1$s %2$s', + esc_html__( 'Create a rich user experience by layering widgets together inside "Nested" Tabs, etc. When turned on, we’ll automatically enable new nested features. Your old widgets won’t be affected.', 'elementor' ), + esc_html__( 'Learn more', 'elementor' ) + ), + 'release_status' => Experiments_Manager::RELEASE_STATUS_BETA, + 'default' => Experiments_Manager::STATE_INACTIVE, + 'dependencies' => [ + 'container', + ], + 'new_site' => [ + 'default_active' => false, + 'minimum_installation_version' => '3.10.0', + ], + ]; + } + + public function get_name() { + return 'nested-elements'; + } + + public function __construct() { + parent::__construct(); + + add_action( 'elementor/controls/register', function ( $controls_manager ) { + $controls_manager->register( new Controls\Control_Nested_Repeater() ); + } ); + + add_action( 'elementor/editor/before_enqueue_scripts', function () { + wp_enqueue_script( $this->get_name(), $this->get_js_assets_url( $this->get_name() ), [ + 'elementor-common', + ], ELEMENTOR_VERSION, true ); + } ); + } +} diff --git a/wp-content/plugins/elementor/modules/nested-tabs/module.php b/wp-content/plugins/elementor/modules/nested-tabs/module.php new file mode 100644 index 0000000..dadde4e --- /dev/null +++ b/wp-content/plugins/elementor/modules/nested-tabs/module.php @@ -0,0 +1,30 @@ +experiments->is_feature_active( NestedElementsModule::EXPERIMENT_NAME ); + } + + public function get_name() { + return 'nested-tabs'; + } + + public function __construct() { + parent::__construct(); + + add_action( 'elementor/editor/before_enqueue_scripts', function () { + wp_enqueue_script( $this->get_name(), $this->get_js_assets_url( $this->get_name() ), [ + 'nested-elements', + ], ELEMENTOR_VERSION, true ); + } ); + } +} diff --git a/wp-content/plugins/elementor/modules/nested-tabs/widgets/nested-tabs.php b/wp-content/plugins/elementor/modules/nested-tabs/widgets/nested-tabs.php new file mode 100644 index 0000000..d86b63c --- /dev/null +++ b/wp-content/plugins/elementor/modules/nested-tabs/widgets/nested-tabs.php @@ -0,0 +1,1294 @@ + 'container', + 'settings' => [ + '_title' => sprintf( __( 'Tab #%s', 'elementor' ), $index ), + 'content_width' => 'full', + ], + ]; + } + + protected function get_default_children_elements() { + return [ + $this->tab_content_container( 1 ), + $this->tab_content_container( 2 ), + $this->tab_content_container( 3 ), + ]; + } + + protected function get_default_repeater_title_setting_key() { + return 'tab_title'; + } + + protected function get_default_children_title() { + return esc_html__( 'Tab #%d', 'elementor' ); + } + + protected function get_default_children_placeholder_selector() { + return '.e-n-tabs-content'; + } + + protected function get_html_wrapper_class() { + return 'elementor-widget-n-tabs'; + } + + protected function register_controls() { + $start = is_rtl() ? 'right' : 'left'; + $end = is_rtl() ? 'left' : 'right'; + $start_logical = is_rtl() ? 'end' : 'start'; + $end_logical = is_rtl() ? 'start' : 'end'; + $logical_dimensions_inline_start = is_rtl() ? '{{RIGHT}}{{UNIT}}' : '{{LEFT}}{{UNIT}}'; + $logical_dimensions_inline_end = is_rtl() ? '{{LEFT}}{{UNIT}}' : '{{RIGHT}}{{UNIT}}'; + $heading_selector_non_touch_device = '{{WRAPPER}} > .elementor-widget-container > .e-n-tabs[data-touch-mode="false"] > .e-n-tabs-heading'; + $heading_selector_touch_device = '{{WRAPPER}} > .elementor-widget-container > .e-n-tabs[data-touch-mode="true"] > .e-n-tabs-heading'; + $heading_selector = '{{WRAPPER}} > .elementor-widget-container > .e-n-tabs > .e-n-tabs-heading'; + $content_selector = ':where( {{WRAPPER}} > .elementor-widget-container > .e-n-tabs > .e-n-tabs-content ) > .e-con'; + + $this->start_controls_section( 'section_tabs', [ + 'label' => esc_html__( 'Tabs', 'elementor' ), + ] ); + + $repeater = new Repeater(); + + $repeater->add_control( 'tab_title', [ + 'label' => esc_html__( 'Title', 'elementor' ), + 'type' => Controls_Manager::TEXT, + 'default' => esc_html__( 'Tab Title', 'elementor' ), + 'placeholder' => esc_html__( 'Tab Title', 'elementor' ), + 'label_block' => true, + 'dynamic' => [ + 'active' => true, + ], + ] ); + + $repeater->add_control( + 'tab_icon', + [ + 'label' => esc_html__( 'Icon', 'elementor' ), + 'type' => Controls_Manager::ICONS, + 'fa4compatibility' => 'icon', + 'skin' => 'inline', + 'label_block' => false, + ] + ); + + $repeater->add_control( + 'tab_icon_active', + [ + 'label' => esc_html__( 'Active Icon', 'elementor' ), + 'type' => Controls_Manager::ICONS, + 'fa4compatibility' => 'icon', + 'skin' => 'inline', + 'label_block' => false, + 'condition' => [ + 'tab_icon[value]!' => '', + ], + ] + ); + + $repeater->add_control( + 'element_id', + [ + 'label' => esc_html__( 'CSS ID', 'elementor' ), + 'type' => Controls_Manager::TEXT, + 'default' => '', + 'ai' => [ + 'active' => false, + ], + 'dynamic' => [ + 'active' => true, + ], + 'title' => esc_html__( 'Add your custom id WITHOUT the Pound key. e.g: my-id', 'elementor' ), + 'style_transfer' => false, + 'classes' => 'elementor-control-direction-ltr', + ] + ); + + $this->add_control( 'tabs', [ + 'label' => esc_html__( 'Tabs Items', 'elementor' ), + 'type' => Control_Nested_Repeater::CONTROL_TYPE, + 'fields' => $repeater->get_controls(), + 'default' => [ + [ + 'tab_title' => esc_html__( 'Tab #1', 'elementor' ), + ], + [ + 'tab_title' => esc_html__( 'Tab #2', 'elementor' ), + ], + [ + 'tab_title' => esc_html__( 'Tab #3', 'elementor' ), + ], + ], + 'title_field' => '{{{ tab_title }}}', + 'button_text' => 'Add Tab', + ] ); + + $styling_block_start = '--n-tabs-direction: column; --n-tabs-heading-direction: row; --n-tabs-heading-width: initial; --n-tabs-title-flex-basis: content; --n-tabs-title-flex-shrink: 0;'; + $styling_block_end = '--n-tabs-direction: column-reverse; --n-tabs-heading-direction: row; --n-tabs-heading-width: initial; --n-tabs-title-flex-basis: content; --n-tabs-title-flex-shrink: 0'; + $styling_inline_end = '--n-tabs-direction: row-reverse; --n-tabs-heading-direction: column; --n-tabs-heading-width: 240px; --n-tabs-title-flex-basis: initial; --n-tabs-title-flex-shrink: initial;'; + $styling_inline_start = '--n-tabs-direction: row; --n-tabs-heading-direction: column; --n-tabs-heading-width: 240px; --n-tabs-title-flex-basis: initial; --n-tabs-title-flex-shrink: initial;'; + + $this->add_responsive_control( 'tabs_direction', [ + 'label' => esc_html__( 'Direction', 'elementor' ), + 'type' => Controls_Manager::CHOOSE, + 'options' => [ + 'block-start' => [ + 'title' => esc_html__( 'Above', 'elementor' ), + 'icon' => 'eicon-v-align-top', + ], + 'block-end' => [ + 'title' => esc_html__( 'Below', 'elementor' ), + 'icon' => 'eicon-v-align-bottom', + ], + 'inline-end' => [ + 'title' => esc_html__( 'After', 'elementor' ), + 'icon' => 'eicon-h-align-' . $end, + ], + 'inline-start' => [ + 'title' => esc_html__( 'Before', 'elementor' ), + 'icon' => 'eicon-h-align-' . $start, + ], + ], + 'separator' => 'before', + 'selectors_dictionary' => [ + 'block-start' => $styling_block_start, + 'block-end' => $styling_block_end, + 'inline-end' => $styling_inline_end, + 'inline-start' => $styling_inline_start, + // Styling duplication for BC reasons. + 'top' => $styling_block_start, + 'bottom' => $styling_block_end, + 'end' => $styling_inline_end, + 'start' => $styling_inline_start, + ], + 'selectors' => [ + '{{WRAPPER}}' => '{{VALUE}}', + ], + ] ); + + $this->add_responsive_control( 'tabs_justify_horizontal', [ + 'label' => esc_html__( 'Justify', 'elementor' ), + 'type' => Controls_Manager::CHOOSE, + 'options' => [ + 'start' => [ + 'title' => esc_html__( 'Start', 'elementor' ), + 'icon' => "eicon-align-$start_logical-h", + ], + 'center' => [ + 'title' => esc_html__( 'Center', 'elementor' ), + 'icon' => 'eicon-align-center-h', + ], + 'end' => [ + 'title' => esc_html__( 'End', 'elementor' ), + 'icon' => "eicon-align-$end_logical-h", + ], + 'stretch' => [ + 'title' => esc_html__( 'Stretch', 'elementor' ), + 'icon' => 'eicon-align-stretch-h', + ], + ], + 'selectors_dictionary' => [ + 'start' => '--n-tabs-heading-justify-content: flex-start; --n-tabs-title-width: initial; --n-tabs-title-height: initial; --n-tabs-title-align-items: center; --n-tabs-title-flex-grow: 0;', + 'center' => '--n-tabs-heading-justify-content: center; --n-tabs-title-width: initial; --n-tabs-title-height: initial; --n-tabs-title-align-items: center; --n-tabs-title-flex-grow: 0;', + 'end' => '--n-tabs-heading-justify-content: flex-end; --n-tabs-title-width: initial; --n-tabs-title-height: initial; --n-tabs-title-align-items: center; --n-tabs-title-flex-grow: 0;', + 'stretch' => '--n-tabs-heading-justify-content: initial; --n-tabs-title-width: 100%; --n-tabs-title-height: initial; --n-tabs-title-align-items: center; --n-tabs-title-flex-grow: 1;', + ], + 'selectors' => [ + '{{WRAPPER}}' => '{{VALUE}}', + ], + 'condition' => [ + 'tabs_direction' => [ + '', + 'block-start', + 'block-end', + 'top', + 'bottom', + ], + ], + 'frontend_available' => true, + ] ); + + $this->add_responsive_control( 'tabs_justify_vertical', [ + 'label' => esc_html__( 'Justify', 'elementor' ), + 'type' => Controls_Manager::CHOOSE, + 'options' => [ + 'start' => [ + 'title' => esc_html__( 'Start', 'elementor' ), + 'icon' => 'eicon-align-start-v', + ], + 'center' => [ + 'title' => esc_html__( 'Center', 'elementor' ), + 'icon' => 'eicon-align-center-v', + ], + 'end' => [ + 'title' => esc_html__( 'End', 'elementor' ), + 'icon' => 'eicon-align-end-v', + ], + 'stretch' => [ + 'title' => esc_html__( 'Stretch', 'elementor' ), + 'icon' => 'eicon-align-stretch-v', + ], + ], + 'selectors_dictionary' => [ + 'start' => '--n-tabs-heading-justify-content: flex-start; --n-tabs-title-width: initial; --n-tabs-title-height: initial; --n-tabs-title-align-items: initial; --n-tabs-heading-wrap: wrap; --n-tabs-title-flex-basis: content', + 'center' => '--n-tabs-heading-justify-content: center; --n-tabs-title-width: initial; --n-tabs-title-height: initial; --n-tabs-title-align-items: initial; --n-tabs-heading-wrap: wrap; --n-tabs-title-flex-basis: content', + 'end' => '--n-tabs-heading-justify-content: flex-end; --n-tabs-title-width: initial; --n-tabs-title-height: initial; --n-tabs-title-align-items: initial; --n-tabs-heading-wrap: wrap; --n-tabs-title-flex-basis: content', + 'stretch' => '--n-tabs-heading-justify-content: flex-start; --n-tabs-title-width: initial; --n-tabs-title-height: 100%; --n-tabs-title-align-items: center; --n-tabs-heading-wrap: nowrap; --n-tabs-title-flex-basis: auto', + ], + 'selectors' => [ + '{{WRAPPER}}' => '{{VALUE}}', + ], + 'condition' => [ + 'tabs_direction' => [ + 'inline-start', + 'inline-end', + 'start', + 'end', + ], + ], + ] ); + + $this->add_responsive_control( 'tabs_width', [ + 'label' => esc_html__( 'Width', 'elementor' ), + 'type' => Controls_Manager::SLIDER, + 'range' => [ + '%' => [ + 'min' => 10, + 'max' => 50, + ], + 'px' => [ + 'min' => 20, + 'max' => 600, + ], + ], + 'default' => [ + 'unit' => '%', + ], + 'size_units' => [ 'px', '%', 'em', 'rem', 'vw', 'custom' ], + 'selectors' => [ + '{{WRAPPER}}' => '--n-tabs-heading-width: {{SIZE}}{{UNIT}}', + ], + 'condition' => [ + 'tabs_direction' => [ + 'inline-start', + 'inline-end', + 'start', + 'end', + ], + ], + ] ); + + $this->add_responsive_control( 'title_alignment', [ + 'label' => esc_html__( 'Align Title', 'elementor' ), + 'type' => Controls_Manager::CHOOSE, + 'options' => [ + 'start' => [ + 'title' => esc_html__( 'Start', 'elementor' ), + 'icon' => 'eicon-text-align-left', + ], + 'center' => [ + 'title' => esc_html__( 'Center', 'elementor' ), + 'icon' => 'eicon-text-align-center', + ], + 'end' => [ + 'title' => esc_html__( 'End', 'elementor' ), + 'icon' => 'eicon-text-align-right', + ], + ], + 'selectors_dictionary' => [ + 'start' => '--n-tabs-title-justify-content: flex-start; --n-tabs-title-align-items: flex-start; --n-tabs-title-text-align: start;', + 'center' => '--n-tabs-title-justify-content: center; --n-tabs-title-align-items: center; --n-tabs-title-text-align: center;', + 'end' => '--n-tabs-title-justify-content: flex-end; --n-tabs-title-align-items: flex-end; --n-tabs-title-text-align: end;', + ], + 'selectors' => [ + '{{WRAPPER}}' => '{{VALUE}}', + ], + ] ); + + $this->end_controls_section(); + + $this->start_controls_section( 'section_tabs_responsive', [ + 'label' => esc_html__( 'Additional Settings', 'elementor' ), + ] ); + + $this->add_responsive_control( + 'horizontal_scroll', + [ + 'label' => esc_html__( 'Horizontal Scroll', 'elementor' ), + 'type' => Controls_Manager::SELECT, + 'description' => esc_html__( 'Note: Scroll tabs if they don’t fit into their parent container.', 'elementor' ), + 'options' => [ + 'disable' => esc_html__( 'Disable', 'elementor' ), + 'enable' => esc_html__( 'Enable', 'elementor' ), + ], + 'default' => 'disable', + 'selectors_dictionary' => [ + 'disable' => '--n-tabs-heading-wrap: wrap; --n-tabs-heading-overflow-x: initial; --n-tabs-title-white-space: initial;', + 'enable' => '--n-tabs-heading-wrap: nowrap; --n-tabs-heading-overflow-x: scroll; --n-tabs-title-white-space: nowrap;', + ], + 'selectors' => [ + '{{WRAPPER}}' => '{{VALUE}}', + ], + 'frontend_available' => true, + 'condition' => [ + 'tabs_direction' => [ + '', + 'block-start', + 'block-end', + 'top', + 'bottom', + ], + ], + ] + ); + + $dropdown_options = [ + 'none' => esc_html__( 'None', 'elementor' ), + ]; + $excluded_breakpoints = [ + 'laptop', + 'tablet_extra', + 'widescreen', + ]; + + foreach ( Plugin::$instance->breakpoints->get_active_breakpoints() as $breakpoint_key => $breakpoint_instance ) { + // Exclude the larger breakpoints from the dropdown selector. + if ( in_array( $breakpoint_key, $excluded_breakpoints, true ) ) { + continue; + } + + $dropdown_options[ $breakpoint_key ] = sprintf( + /* translators: 1: Breakpoint label, 2: `>` character, 3: Breakpoint value. */ + esc_html__( '%1$s (%2$s %3$dpx)', 'elementor' ), + $breakpoint_instance->get_label(), + '>', + $breakpoint_instance->get_value() + ); + } + + $this->add_control( + 'breakpoint_selector', + [ + 'label' => esc_html__( 'Breakpoint', 'elementor' ), + 'type' => Controls_Manager::SELECT, + 'description' => esc_html__( 'Note: Choose at which breakpoint tabs will automatically switch to a vertical (“accordion”) layout.', 'elementor' ), + 'options' => $dropdown_options, + 'default' => 'mobile', + 'prefix_class' => 'e-n-tabs-', + ] + ); + + $this->end_controls_section(); + + $this->start_controls_section( 'section_tabs_style', [ + 'label' => esc_html__( 'Tabs', 'elementor' ), + 'tab' => Controls_Manager::TAB_STYLE, + ] ); + + $this->add_responsive_control( 'tabs_title_space_between', [ + 'label' => esc_html__( 'Gap between tabs', 'elementor' ), + 'type' => Controls_Manager::SLIDER, + 'size_units' => [ 'px', 'em', 'rem', 'custom' ], + 'range' => [ + 'px' => [ + 'max' => 400, + ], + 'em' => [ + 'max' => 40, + ], + 'rem' => [ + 'max' => 40, + ], + ], + 'selectors' => [ + '{{WRAPPER}}' => '--n-tabs-title-gap: {{SIZE}}{{UNIT}}', + ], + ] ); + + $this->add_responsive_control( 'tabs_title_spacing', [ + 'label' => esc_html__( 'Distance from content', 'elementor' ), + 'type' => Controls_Manager::SLIDER, + 'size_units' => [ 'px', 'em', 'rem', 'custom' ], + 'range' => [ + 'px' => [ + 'max' => 400, + ], + 'em' => [ + 'max' => 40, + ], + 'rem' => [ + 'max' => 40, + ], + ], + 'selectors' => [ + '{{WRAPPER}}' => '--n-tabs-gap: {{SIZE}}{{UNIT}}', + ], + ] ); + + $this->start_controls_tabs( 'tabs_title_style' ); + + $this->start_controls_tab( + 'tabs_title_normal', + [ + 'label' => esc_html__( 'Normal', 'elementor' ), + ] + ); + + $this->add_group_control( + Group_Control_Background::get_type(), + [ + 'name' => 'tabs_title_background_color', + 'types' => [ 'classic', 'gradient' ], + 'exclude' => [ 'image' ], + 'selector' => '{{WRAPPER}} > .elementor-widget-container > .e-n-tabs > .e-n-tabs-heading > .e-n-tab-title[aria-selected="false"]:not( :hover )', + 'fields_options' => [ + 'color' => [ + 'label' => esc_html__( 'Background Color', 'elementor' ), + 'selectors' => [ + '{{SELECTOR}}' => 'background: {{VALUE}}', + ], + ], + ], + ] + ); + + $this->add_group_control( + Group_Control_Border::get_type(), + [ + 'name' => 'tabs_title_border', + 'selector' => "{$heading_selector} > .e-n-tab-title[aria-selected=\"false\"]:not( :hover )", + 'fields_options' => [ + 'color' => [ + 'label' => esc_html__( 'Border Color', 'elementor' ), + ], + 'width' => [ + 'label' => esc_html__( 'Border Width', 'elementor' ), + ], + ], + ] + ); + + $this->add_group_control( + Group_Control_Box_Shadow::get_type(), + [ + 'name' => 'tabs_title_box_shadow', + 'label' => esc_html__( 'Shadow', 'elementor' ), + 'separator' => 'after', + 'selector' => "{$heading_selector} > .e-n-tab-title[aria-selected=\"false\"]:not( :hover )", + ] + ); + + $this->end_controls_tab(); + + $this->start_controls_tab( + 'tabs_title_hover', + [ + 'label' => esc_html__( 'Hover', 'elementor' ), + ] + ); + + $this->add_group_control( + Group_Control_Background::get_type(), + [ + 'name' => 'tabs_title_background_color_hover', + 'types' => [ 'classic', 'gradient' ], + 'exclude' => [ 'image' ], + 'selector' => "{$heading_selector_non_touch_device} > .e-n-tab-title[aria-selected=\"false\"]:hover", + 'fields_options' => [ + 'background' => [ + 'default' => 'classic', + ], + 'color' => [ + 'global' => [ + 'default' => Global_Colors::COLOR_ACCENT, + ], + 'label' => esc_html__( 'Background Color', 'elementor' ), + 'selectors' => [ + '{{SELECTOR}}' => 'background: {{VALUE}};', + ], + ], + ], + ] + ); + + $this->add_group_control( + Group_Control_Border::get_type(), + [ + 'name' => 'tabs_title_border_hover', + 'selector' => "{$heading_selector_non_touch_device} > .e-n-tab-title[aria-selected=\"false\"]:hover", + 'fields_options' => [ + 'color' => [ + 'label' => esc_html__( 'Border Color', 'elementor' ), + ], + 'width' => [ + 'label' => esc_html__( 'Border Width', 'elementor' ), + ], + ], + ] + ); + + $this->add_group_control( + Group_Control_Box_Shadow::get_type(), + [ + 'name' => 'tabs_title_box_shadow_hover', + 'label' => esc_html__( 'Shadow', 'elementor' ), + 'separator' => 'after', + 'selector' => "{$heading_selector_non_touch_device} > .e-n-tab-title[aria-selected=\"false\"]:hover", + ] + ); + + $this->add_control( + 'hover_animation', + [ + 'label' => esc_html__( 'Hover Animation', 'elementor' ), + 'type' => Controls_Manager::HOVER_ANIMATION, + ] + ); + + $this->add_control( + 'tabs_title_transition_duration', + [ + 'label' => esc_html__( 'Transition Duration', 'elementor' ) . ' (s)', + 'type' => Controls_Manager::SLIDER, + 'selectors' => [ + '{{WRAPPER}}' => '--n-tabs-title-transition: {{SIZE}}s', + ], + 'range' => [ + 'px' => [ + 'min' => 0, + 'max' => 3, + 'step' => 0.1, + ], + ], + ] + ); + + $this->end_controls_tab(); + + $this->start_controls_tab( + 'tabs_title_active', + [ + 'label' => esc_html__( 'Active', 'elementor' ), + ] + ); + + $this->add_group_control( + Group_Control_Background::get_type(), + [ + 'name' => 'tabs_title_background_color_active', + 'types' => [ 'classic', 'gradient' ], + 'exclude' => [ 'image' ], + 'selector' => "{$heading_selector} > .e-n-tab-title[aria-selected=\"true\"], {$heading_selector_touch_device} > .e-n-tab-title[aria-selected=\"false\"]:hover", + 'fields_options' => [ + 'background' => [ + 'default' => 'classic', + ], + 'color' => [ + 'global' => [ + 'default' => Global_Colors::COLOR_ACCENT, + ], + 'label' => esc_html__( 'Background Color', 'elementor' ), + 'selectors' => [ + '{{SELECTOR}}' => 'background: {{VALUE}};', + ], + ], + ], + ] + ); + + $this->add_group_control( + Group_Control_Border::get_type(), + [ + 'name' => 'tabs_title_border_active', + 'selector' => "{$heading_selector} > .e-n-tab-title[aria-selected=\"true\"], {$heading_selector_touch_device} > .e-n-tab-title[aria-selected=\"false\"]:hover", + 'fields_options' => [ + 'color' => [ + 'label' => esc_html__( 'Border Color', 'elementor' ), + ], + 'width' => [ + 'label' => esc_html__( 'Border Width', 'elementor' ), + ], + ], + ] + ); + + $this->add_group_control( + Group_Control_Box_Shadow::get_type(), + [ + 'name' => 'tabs_title_box_shadow_active', + 'label' => esc_html__( 'Shadow', 'elementor' ), + 'selector' => "{$heading_selector} > .e-n-tab-title[aria-selected=\"true\"], {$heading_selector_touch_device} > .e-n-tab-title[aria-selected=\"false\"]:hover", + ] + ); + + $this->end_controls_tab(); + + $this->end_controls_tabs(); + + $this->add_responsive_control( + 'tabs_title_border_radius', + [ + 'label' => esc_html__( 'Border Radius', 'elementor' ), + 'type' => Controls_Manager::DIMENSIONS, + 'size_units' => [ 'px', '%', 'em', 'rem', 'custom' ], + 'separator' => 'before', + 'selectors' => [ + '{{WRAPPER}}' => '--n-tabs-title-border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};', + ], + ] + ); + + $this->add_responsive_control( + 'padding', + [ + 'label' => esc_html__( 'Padding', 'elementor' ), + 'type' => Controls_Manager::DIMENSIONS, + 'size_units' => [ 'px', '%', 'em', 'rem', 'vw', 'custom' ], + 'selectors' => [ + '{{WRAPPER}}' => "--n-tabs-title-padding-block-start: {{TOP}}{{UNIT}}; --n-tabs-title-padding-inline-end: $logical_dimensions_inline_end; --n-tabs-title-padding-block-end: {{BOTTOM}}{{UNIT}}; --n-tabs-title-padding-inline-start: $logical_dimensions_inline_start;", + ], + ] + ); + + $this->end_controls_section(); + + $this->start_controls_section( 'section_title_style', [ + 'label' => esc_html__( 'Titles', 'elementor' ), + 'tab' => Controls_Manager::TAB_STYLE, + ] ); + + $this->add_group_control( Group_Control_Typography::get_type(), [ + 'name' => 'title_typography', + 'global' => [ + 'default' => Global_Typography::TYPOGRAPHY_ACCENT, + ], + 'selector' => "{$heading_selector} > :is( .e-n-tab-title > .e-n-tab-title-text, .e-n-tab-title )", + 'fields_options' => [ + 'font_size' => [ + 'selectors' => [ + '{{WRAPPER}}' => '--n-tabs-title-font-size: {{SIZE}}{{UNIT}}', + ], + ], + ], + ] ); + + $this->start_controls_tabs( 'title_style' ); + + $this->start_controls_tab( + 'title_normal', + [ + 'label' => esc_html__( 'Normal', 'elementor' ), + ] + ); + + $this->add_control( + 'title_text_color', + [ + 'label' => esc_html__( 'Color', 'elementor' ), + 'type' => Controls_Manager::COLOR, + 'selectors' => [ + '{{WRAPPER}}' => '--n-tabs-title-color: {{VALUE}}', + ], + ] + ); + + $this->add_group_control( + Group_Control_Text_Shadow::get_type(), + [ + 'name' => 'title_text_shadow', + 'selector' => "{$heading_selector} > .e-n-tab-title[aria-selected=\"false\"]:not( :hover )", + 'fields_options' => [ + 'text_shadow_type' => [ + 'label' => esc_html__( 'Shadow', 'elementor' ), + ], + ], + ] + ); + + $this->add_group_control( + Group_Control_Text_Stroke::get_type(), + [ + 'name' => 'title_text_stroke', + 'selector' => "{$heading_selector} > .e-n-tab-title[aria-selected=\"false\"]:not( :hover ) :is( span, a, i )", + 'fields_options' => [ + 'text_stroke_type' => [ + 'label' => esc_html__( 'Stroke', 'elementor' ), + ], + ], + ] + ); + + $this->end_controls_tab(); + + $this->start_controls_tab( + 'title_hover', + [ + 'label' => esc_html__( 'Hover', 'elementor' ), + ] + ); + + $this->add_control( + 'title_text_color_hover', + [ + 'label' => esc_html__( 'Color', 'elementor' ), + 'type' => Controls_Manager::COLOR, + 'selectors' => [ + '{{WRAPPER}} [data-touch-mode="false"] .e-n-tab-title[aria-selected="false"]:hover' => '--n-tabs-title-color-hover: {{VALUE}}', + ], + ] + ); + + $this->add_group_control( + Group_Control_Text_Shadow::get_type(), + [ + 'name' => 'title_text_shadow_hover', + 'selector' => "{$heading_selector_non_touch_device} > .e-n-tab-title[aria-selected=\"false\"]:hover", + 'fields_options' => [ + 'text_shadow_type' => [ + 'label' => esc_html__( 'Shadow', 'elementor' ), + ], + ], + + ] + ); + + $this->add_group_control( + Group_Control_Text_Stroke::get_type(), + [ + 'name' => 'title_text_stroke_hover', + 'selector' => "{$heading_selector_non_touch_device} > .e-n-tab-title[aria-selected=\"false\"]:hover :is( span, a, i )", + 'fields_options' => [ + 'text_stroke_type' => [ + 'label' => esc_html__( 'Stroke', 'elementor' ), + ], + ], + ] + ); + + $this->end_controls_tab(); + + $this->start_controls_tab( + 'title_active', + [ + 'label' => esc_html__( 'Active', 'elementor' ), + ] + ); + + $this->add_control( + 'title_text_color_active', + [ + 'label' => esc_html__( 'Color', 'elementor' ), + 'type' => Controls_Manager::COLOR, + 'selectors' => [ + '{{WRAPPER}}' => '--n-tabs-title-color-active: {{VALUE}}', + ], + ] + ); + + $this->add_group_control( + Group_Control_Text_Shadow::get_type(), + [ + 'name' => 'title_text_shadow_active', + 'selector' => "{$heading_selector} > .e-n-tab-title[aria-selected=\"true\"], {$heading_selector_touch_device} > .e-n-tab-title[aria-selected=\"false\"]:hover", + 'fields_options' => [ + 'text_shadow_type' => [ + 'label' => esc_html__( 'Shadow', 'elementor' ), + ], + ], + ] + ); + + $this->add_group_control( + Group_Control_Text_Stroke::get_type(), + [ + 'name' => 'title_text_stroke_active', + 'selector' => "{$heading_selector} > .e-n-tab-title[aria-selected=\"true\"] :is( span, a, i ), {$heading_selector_touch_device} > .e-n-tab-title[aria-selected=\"false\"]:hover :is( span, a, i )", + 'fields_options' => [ + 'text_stroke_type' => [ + 'label' => esc_html__( 'Stroke', 'elementor' ), + ], + ], + ] + ); + + $this->end_controls_tab(); + + $this->end_controls_tabs(); + + $this->end_controls_section(); + + $this->start_controls_section( 'icon_section_style', [ + 'label' => esc_html__( 'Icon', 'elementor' ), + 'tab' => Controls_Manager::TAB_STYLE, + ] ); + + $styling_block_start = '--n-tabs-title-direction: column; --n-tabs-icon-order: initial; --n-tabs-title-justify-content-toggle: center; --n-tabs-title-align-items-toggle: initial;'; + $styling_block_end = '--n-tabs-title-direction: column; --n-tabs-icon-order: 1; --n-tabs-title-justify-content-toggle: center; --n-tabs-title-align-items-toggle: initial;'; + $styling_inline_start = '--n-tabs-title-direction: row; --n-tabs-icon-order: initial; --n-tabs-title-justify-content-toggle: initial; --n-tabs-title-align-items-toggle: center;'; + $styling_inline_end = '--n-tabs-title-direction: row; --n-tabs-icon-order: 1; --n-tabs-title-justify-content-toggle: initial; --n-tabs-title-align-items-toggle: center;'; + + $this->add_responsive_control( 'icon_position', [ + 'label' => esc_html__( 'Position', 'elementor' ), + 'type' => Controls_Manager::CHOOSE, + 'options' => [ + 'block-start' => [ + 'title' => esc_html__( 'Above', 'elementor' ), + 'icon' => 'eicon-v-align-top', + ], + 'inline-end' => [ + 'title' => esc_html__( 'After', 'elementor' ), + 'icon' => 'eicon-h-align-' . $end, + ], + 'block-end' => [ + 'title' => esc_html__( 'Below', 'elementor' ), + 'icon' => 'eicon-v-align-bottom', + ], + 'inline-start' => [ + 'title' => esc_html__( 'Before', 'elementor' ), + 'icon' => 'eicon-h-align-' . $start, + ], + ], + 'selectors_dictionary' => [ + // The toggle variables for 'align items' and 'justify content' have been added to separate the styling of the two 'flex direction' modes. + 'block-start' => $styling_block_start, + 'inline-end' => $styling_inline_end, + 'block-end' => $styling_block_end, + 'inline-start' => $styling_inline_start, + // Styling duplication for BC reasons. + 'top' => $styling_block_start, + 'bottom' => $styling_block_end, + 'start' => $styling_inline_start, + 'end' => $styling_inline_end, + ], + 'selectors' => [ + '{{WRAPPER}}' => '{{VALUE}}', + ], + ] ); + + $this->add_responsive_control( 'icon_size', [ + 'label' => esc_html__( 'Size', 'elementor' ), + 'type' => Controls_Manager::SLIDER, + 'range' => [ + 'px' => [ + 'max' => 100, + ], + 'em' => [ + 'max' => 10, + ], + 'rem' => [ + 'max' => 10, + ], + ], + 'size_units' => [ 'px', 'em', 'rem', 'vw', 'custom' ], + 'selectors' => [ + '{{WRAPPER}}' => '--n-tabs-icon-size: {{SIZE}}{{UNIT}}', + ], + ] ); + + $this->add_responsive_control( 'icon_spacing', [ + 'label' => esc_html__( 'Spacing', 'elementor' ), + 'type' => Controls_Manager::SLIDER, + 'range' => [ + 'px' => [ + 'max' => 400, + ], + 'vw' => [ + 'max' => 50, + 'step' => 0.1, + ], + ], + 'size_units' => [ 'px', 'em', 'rem', 'vw', 'custom' ], + 'selectors' => [ + '{{WRAPPER}}' => '--n-tabs-icon-gap: {{SIZE}}{{UNIT}}', + ], + ] ); + + $this->start_controls_tabs( 'icon_style_states' ); + + $this->start_controls_tab( + 'icon_section_normal', + [ + 'label' => esc_html__( 'Normal', 'elementor' ), + ] + ); + + $this->add_control( 'icon_color', [ + 'label' => esc_html__( 'Color', 'elementor' ), + 'type' => Controls_Manager::COLOR, + 'selectors' => [ + '{{WRAPPER}}' => '--n-tabs-icon-color: {{VALUE}};', + ], + ] ); + + $this->end_controls_tab(); + + $this->start_controls_tab( + 'icon_section_hover', + [ + 'label' => esc_html__( 'Hover', 'elementor' ), + ] + ); + + $this->add_control( 'icon_color_hover', [ + 'label' => esc_html__( 'Color', 'elementor' ), + 'type' => Controls_Manager::COLOR, + 'selectors' => [ + '{{WRAPPER}} [data-touch-mode="false"] .e-n-tab-title[aria-selected="false"]:hover' => '--n-tabs-icon-color-hover: {{VALUE}};', + ], + ] ); + + $this->end_controls_tab(); + + $this->start_controls_tab( + 'icon_section_active', + [ + 'label' => esc_html__( 'Active', 'elementor' ), + ] + ); + + $this->add_control( 'icon_color_active', [ + 'label' => esc_html__( 'Color', 'elementor' ), + 'type' => Controls_Manager::COLOR, + 'selectors' => [ + '{{WRAPPER}}' => '--n-tabs-icon-color-active: {{VALUE}};', + ], + ] ); + + $this->end_controls_tab(); + + $this->end_controls_tabs(); + + $this->end_controls_section(); + + $this->start_controls_section( 'section_box_style', [ + 'label' => esc_html__( 'Content', 'elementor' ), + 'tab' => Controls_Manager::TAB_STYLE, + ] ); + + $this->add_group_control( + Group_Control_Background::get_type(), + [ + 'name' => 'box_background_color', + 'types' => [ 'classic', 'gradient' ], + 'exclude' => [ 'image' ], + 'selector' => $content_selector, + 'fields_options' => [ + 'color' => [ + 'label' => esc_html__( 'Background Color', 'elementor' ), + ], + ], + ] + ); + + $this->add_group_control( + Group_Control_Border::get_type(), + [ + 'name' => 'box_border', + 'selector' => $content_selector, + 'fields_options' => [ + 'color' => [ + 'label' => esc_html__( 'Border Color', 'elementor' ), + ], + 'width' => [ + 'label' => esc_html__( 'Border Width', 'elementor' ), + ], + ], + ] + ); + + $this->add_responsive_control( + 'box_border_radius', + [ + 'label' => esc_html__( 'Border Radius', 'elementor' ), + 'type' => Controls_Manager::DIMENSIONS, + 'size_units' => [ 'px', '%', 'em', 'rem', 'custom' ], + 'selectors' => [ + $content_selector => '--border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};', + ], + ] + ); + + $this->add_group_control( + Group_Control_Box_Shadow::get_type(), + [ + 'name' => 'box_shadow_box_shadow', + 'selector' => $content_selector, + 'condition' => [ + 'box_height!' => 'height', + ], + ] + ); + + $this->add_responsive_control( + 'box_padding', + [ + 'label' => esc_html__( 'Padding', 'elementor' ), + 'type' => Controls_Manager::DIMENSIONS, + 'size_units' => [ 'px', '%', 'em', 'rem', 'vw', 'custom' ], + 'selectors' => [ + $content_selector => "--padding-block-start: {{TOP}}{{UNIT}}; --padding-inline-end: $logical_dimensions_inline_end; --padding-block-end: {{BOTTOM}}{{UNIT}}; --padding-inline-start: $logical_dimensions_inline_start;", + ], + ] + ); + + $this->end_controls_section(); + } + + protected function render_tab_titles_html( $item_settings ): string { + $setting_key = $this->get_repeater_setting_key( 'tab_title', 'tabs', $item_settings['index'] ); + $title = $item_settings['item']['tab_title']; + $css_classes = [ 'e-n-tab-title' ]; + + if ( $item_settings['settings']['hover_animation'] ) { + $css_classes[] = 'elementor-animation-' . $item_settings['settings']['hover_animation']; + } + + $this->add_render_attribute( $setting_key, [ + 'id' => $item_settings['tab_id'], + 'class' => $css_classes, + 'aria-selected' => 1 === $item_settings['tab_count'] ? 'true' : 'false', + 'data-tab-index' => $item_settings['tab_count'], + 'role' => 'tab', + 'tabindex' => 1 === $item_settings['tab_count'] ? '0' : '-1', + 'aria-controls' => $item_settings['container_id'], + 'style' => '--n-tabs-title-order: ' . $item_settings['tab_count'] . ';', + ] ); + + $render_attributes = $this->get_render_attribute_string( $setting_key ); + $text_class = $this->get_render_attribute_string( 'tab-title-text' ); + $icon_class = $this->get_render_attribute_string( 'tab-icon' ); + + $icon_html = Icons_Manager::try_get_icon_html( $item_settings['item']['tab_icon'], [ 'aria-hidden' => 'true' ] ); + $icon_active_html = $icon_html; + + if ( $this->is_active_icon_exist( $item_settings['item'] ) ) { + $icon_active_html = Icons_Manager::try_get_icon_html( $item_settings['item']['tab_icon_active'], [ 'aria-hidden' => 'true' ] ); + } + + ob_start(); + ?> + + print_child( $item_settings['index'], $item_settings ); + return ob_get_clean(); + } + + + /** + * Print the content area. + * + * @param int $index + * @param array $item_settings + */ + public function print_child( $index, $item_settings = [] ) { + $children = $this->get_children(); + $child_ids = []; + + foreach ( $children as $child ) { + $child_ids[] = $child->get_id(); + } + + // Add data-tab-index attribute to the content area. + $add_attribute_to_container = function ( $should_render, $container ) use ( $item_settings, $child_ids ) { + if ( in_array( $container->get_id(), $child_ids ) ) { + $this->add_attributes_to_container( $container, $item_settings ); + } + + return $should_render; + }; + + add_filter( 'elementor/frontend/container/should_render', $add_attribute_to_container, 10, 3 ); + $children[ $index ]->print_element(); + remove_filter( 'elementor/frontend/container/should_render', $add_attribute_to_container ); + } + + protected function add_attributes_to_container( $container, $item_settings ) { + $container->add_render_attribute( '_wrapper', [ + 'id' => $item_settings['container_id'], + 'role' => 'tabpanel', + 'aria-labelledby' => $item_settings['tab_id'], + 'data-tab-index' => $item_settings['tab_count'], + 'style' => '--n-tabs-title-order: ' . $item_settings['tab_count'] . ';', + 'class' => 0 === $item_settings['index'] ? 'e-active' : '', + ] ); + } + + protected function render() { + $settings = $this->get_settings_for_display(); + $widget_number = substr( $this->get_id_int(), 0, 3 ); + + if ( ! empty( $settings['link'] ) ) { + $this->add_link_attributes( 'elementor-tabs', $settings['link'] ); + } + + $this->add_render_attribute( 'elementor-tabs', [ + 'class' => 'e-n-tabs', + 'data-widget-number' => $widget_number, + 'aria-label' => esc_html__( 'Tabs. Open items with Enter or Space, close with Escape and navigate using the Arrow keys.', 'elementor' ), + ] ); + + $this->add_render_attribute( 'tab-title-text', 'class', 'e-n-tab-title-text' ); + $this->add_render_attribute( 'tab-icon', 'class', 'e-n-tab-icon' ); + $this->add_render_attribute( 'tab-icon-active', 'class', [ 'e-n-tab-icon' ] ); + + $tab_titles_html = ''; + $tab_containers_html = ''; + + foreach ( $settings['tabs'] as $index => $item ) { + $tab_count = $index + 1; + + $tab_id = empty( $item['element_id'] ) + ? 'e-n-tabs-title-' . $widget_number . $tab_count + : $item['element_id']; + + $item_settings = [ + 'index' => $index, + 'tab_count' => $tab_count, + 'tab_id' => $tab_id, + 'container_id' => 'e-n-tab-content-' . $widget_number . $tab_count, + 'widget_number' => $widget_number, + 'item' => $item, + 'settings' => $settings, + ]; + + $tab_titles_html .= $this->render_tab_titles_html( $item_settings ); + $tab_containers_html .= $this->render_tab_containers_html( $item_settings ); + } + ?> +
    print_render_attribute_string( 'elementor-tabs' ); ?>> +
    + +
    +
    + +
    +
    + + <# const elementUid = view.getIDInt().toString().substr( 0, 3 ); #> +
    + <# if ( settings['tabs'] ) { #> +
    + <# _.each( settings['tabs'], function( item, index ) { + const tabCount = index + 1, + tabUid = elementUid + tabCount, + tabWrapperKey = tabUid, + tabTitleKey = 'tab-title-' + tabUid, + tabIconKey = 'tab-icon-' + tabUid, + tabIcon = elementor.helpers.renderIcon( view, item.tab_icon, { 'aria-hidden': true }, 'i' , 'object' ), + hoverAnimationClass = settings['hover_animation'] ? `elementor-animation-${ settings['hover_animation'] }` : ''; + + let tabActiveIcon = tabIcon, + tabId = 'e-n-tab-title-' + tabUid; + + if ( '' !== item.tab_icon_active.value ) { + tabActiveIcon = elementor.helpers.renderIcon( view, item.tab_icon_active, { 'aria-hidden': true }, 'i' , 'object' ); + } + + if ( '' !== item.element_id ) { + tabId = item.element_id; + } + + view.addRenderAttribute( tabWrapperKey, { + 'id': tabId, + 'class': [ 'e-n-tab-title',hoverAnimationClass ], + 'data-tab-index': tabCount, + 'role': 'tab', + 'aria-selected': 1 === tabCount ? 'true' : 'false', + 'tabindex': 1 === tabCount ? '0' : '-1', + 'aria-controls': 'e-n-tab-content-' + tabUid, + 'style': '--n-tabs-title-order: ' + tabCount + ';', + } ); + + view.addRenderAttribute( tabTitleKey, { + 'class': [ 'e-n-tab-title-text' ], + 'data-binding-type': 'repeater-item', + 'data-binding-repeater-name': 'tabs', + 'data-binding-setting': [ 'tab_title' ], + 'data-binding-index': tabCount, + } ); + + view.addRenderAttribute( tabIconKey, { + 'class': [ 'e-n-tab-icon' ], + 'data-binding-type': 'repeater-item', + 'data-binding-repeater-name': 'tabs', + 'data-binding-setting': [ 'tab_icon.value', 'tab_icon_active.value' ], + 'data-binding-index': tabCount, + } ); + #> + + <# } ); #> +
    +
    + <# } #> +
    + get_js_assets_url( 'notes' ), + [ 'elementor-editor' ], + ELEMENTOR_VERSION, + true + ); + + wp_set_script_translations( 'elementor-notes', 'elementor' ); + } + + /** + * Enqueue the module styles. + * + * @return void + */ + public function enqueue_styles() { + wp_enqueue_style( + 'elementor-notes', + $this->get_css_assets_url( 'modules/notes/editor' ), + [ 'elementor-editor' ], + ELEMENTOR_VERSION + ); + } + + /** + * @return bool + */ + public static function is_active() { + return ! Utils::has_pro(); + } + + /** + * Initialize the Notes module. + * + * @return void + */ + public function __construct() { + parent::__construct(); + + add_action( 'elementor/editor/after_enqueue_scripts', [ $this, 'enqueue_scripts' ] ); + add_action( 'elementor/editor/after_enqueue_styles', [ $this, 'enqueue_styles' ] ); + } +} diff --git a/wp-content/plugins/elementor/modules/notifications/api.php b/wp-content/plugins/elementor/modules/notifications/api.php new file mode 100644 index 0000000..4e51fb6 --- /dev/null +++ b/wp-content/plugins/elementor/modules/notifications/api.php @@ -0,0 +1,179 @@ +parent() ) { + $theme = wp_get_theme()->parent(); + } + + if ( $theme->get_template() === $condition['theme'] ) { + $version = $theme->version; + } else { + $version = ''; + } + + $result = version_compare( $version, $condition['version'], $condition['operator'] ); + break; + case 'introduction_meta': + $result = User::get_introduction_meta( $condition['meta'] ); + break; + + default: + /** + * Filters the notification condition, whether to check the group or not. + * + * The dynamic portion of the hook name, `$condition['type']`, refers to the condition type. + * + * @since 3.19.0 + * + * @param bool $result Whether to check the group. + * @param array $condition Notification condition. + */ + $result = apply_filters( "elementor/notifications/condition/{$condition['type']}", $result, $condition ); + break; + } + + if ( ( $is_or_relation && $result ) || ( ! $is_or_relation && ! $result ) ) { + return $result; + } + } + + return $result; + } + + private static function get_transient( $cache_key ) { + $cache = get_option( $cache_key ); + + if ( empty( $cache['timeout'] ) ) { + return false; + } + + if ( current_time( 'timestamp' ) > $cache['timeout'] ) { + return false; + } + + return json_decode( $cache['value'], true ); + } + + private static function set_transient( $cache_key, $value, $expiration = '+12 hours' ) { + $data = [ + 'timeout' => strtotime( $expiration, current_time( 'timestamp' ) ), + 'value' => json_encode( $value ), + ]; + + return update_option( $cache_key, $data, false ); + } +} diff --git a/wp-content/plugins/elementor/modules/notifications/module.php b/wp-content/plugins/elementor/modules/notifications/module.php new file mode 100644 index 0000000..4548889 --- /dev/null +++ b/wp-content/plugins/elementor/modules/notifications/module.php @@ -0,0 +1,97 @@ +get_js_assets_url( 'admin-notifications' ), + [ + 'elementor-v2-ui', + 'elementor-v2-icons', + 'elementor-v2-query', + 'wp-i18n', + ], + ELEMENTOR_VERSION, + true + ); + + wp_localize_script( + 'e-admin-notifications', + 'elementorNotifications', + $this->get_app_js_config() + ); + }, 5 /* Before Elementor's admin enqueue scripts */ ); + + add_action( 'elementor/editor/v2/scripts/enqueue', [ $this, 'enqueue_editor_scripts' ] ); + add_action( 'elementor/editor/after_enqueue_scripts', [ $this, 'enqueue_editor_scripts' ] ); + + add_action( 'elementor/ajax/register_actions', [ $this, 'register_ajax_actions' ] ); + } + + public function enqueue_editor_scripts() { + $deps = [ + 'elementor-editor', + 'elementor-v2-ui', + 'elementor-v2-icons', + 'elementor-v2-query', + 'wp-i18n', + ]; + + $is_editor_v2 = current_action() === 'elementor/editor/v2/scripts/enqueue'; + + if ( $is_editor_v2 ) { + $deps[] = 'elementor-v2-editor-app-bar'; + } + + wp_enqueue_script( + 'e-editor-notifications', + $this->get_js_assets_url( 'editor-notifications' ), + $deps, + ELEMENTOR_VERSION, + true + ); + + wp_localize_script( + 'e-editor-notifications', + 'elementorNotifications', + $this->get_app_js_config() + ); + } + + private function get_app_js_config() : array { + return [ + 'is_unread' => Options::has_unread_notifications(), + ]; + } + + public function register_ajax_actions( $ajax ) { + $ajax->register_ajax_action( 'notifications_get', [ $this, 'ajax_get_notifications' ] ); + } + + public function ajax_get_notifications() { + $notifications = API::get_notifications_by_conditions( true ); + + Options::mark_notification_read( $notifications ); + + return $notifications; + } +} diff --git a/wp-content/plugins/elementor/modules/notifications/options.php b/wp-content/plugins/elementor/modules/notifications/options.php new file mode 100644 index 0000000..a47f637 --- /dev/null +++ b/wp-content/plugins/elementor/modules/notifications/options.php @@ -0,0 +1,66 @@ +ID}" ); + + if ( false === $unread_notifications ) { + $notifications = API::get_notifications_by_conditions(); + $notifications_ids = wp_list_pluck( $notifications, 'id' ); + + $unread_notifications = array_diff( $notifications_ids, static::get_notifications_dismissed() ); + + set_transient( "elementor_unread_notifications_{$current_user->ID}", $unread_notifications, HOUR_IN_SECONDS ); + } + + return ! empty( $unread_notifications ); + } + + public static function get_notifications_dismissed() { + $current_user = wp_get_current_user(); + + if ( ! $current_user ) { + return []; + } + + $notifications_dismissed = get_user_meta( $current_user->ID, '_e_notifications_dismissed', true ); + + if ( ! is_array( $notifications_dismissed ) ) { + $notifications_dismissed = []; + } + + return $notifications_dismissed; + } + + public static function mark_notification_read( $notifications ) : bool { + $current_user = wp_get_current_user(); + + if ( ! $current_user ) { + return false; + } + + $notifications_dismissed = static::get_notifications_dismissed(); + + foreach ( $notifications as $notification ) { + if ( ! in_array( $notification['id'], $notifications_dismissed, true ) ) { + $notifications_dismissed[] = $notification['id']; + } + } + + $notifications_dismissed = array_unique( $notifications_dismissed ); + + update_user_meta( $current_user->ID, '_e_notifications_dismissed', $notifications_dismissed ); + + delete_transient( "elementor_unread_notifications_{$current_user->ID}" ); + + return true; + } +} diff --git a/wp-content/plugins/elementor/modules/page-templates/module.php b/wp-content/plugins/elementor/modules/page-templates/module.php new file mode 100644 index 0000000..6892643 --- /dev/null +++ b/wp-content/plugins/elementor/modules/page-templates/module.php @@ -0,0 +1,432 @@ +documents->get_doc_for_frontend( get_the_ID() ); + + if ( $document && $document::get_property( 'support_wp_page_templates' ) ) { + $page_template = $document->get_meta( '_wp_page_template' ); + + $template_path = $this->get_template_path( $page_template ); + + if ( self::TEMPLATE_THEME !== $page_template && ! $template_path && $document->is_built_with_elementor() ) { + $kit_default_template = Plugin::$instance->kits_manager->get_current_settings( 'default_page_template' ); + $template_path = $this->get_template_path( $kit_default_template ); + } + + if ( $template_path ) { + $template = $template_path; + + Plugin::$instance->inspector->add_log( 'Page Template', Plugin::$instance->inspector->parse_template_path( $template ), $document->get_edit_url() ); + } + } + } + + return $template; + } + + /** + * Add WordPress templates. + * + * Adds Elementor templates to all the post types that support + * Elementor. + * + * Fired by `init` action. + * + * @since 2.0.0 + * @access public + */ + public function add_wp_templates_support() { + $post_types = get_post_types_by_support( 'elementor' ); + + foreach ( $post_types as $post_type ) { + add_filter( "theme_{$post_type}_templates", [ $this, 'add_page_templates' ], 10, 4 ); + } + } + + /** + * Add page templates. + * + * Add the Elementor page templates to the theme templates. + * + * Fired by `theme_{$post_type}_templates` filter. + * + * @since 2.0.0 + * @access public + * @static + * + * @param array $page_templates Array of page templates. Keys are filenames, + * checks are translated names. + * + * @param \WP_Theme $wp_theme + * @param \WP_Post $post + * + * @return array Page templates. + */ + public function add_page_templates( $page_templates, $wp_theme, $post ) { + if ( $post ) { + // FIX ME: Gutenberg not send $post as WP_Post object, just the post ID. + $post_id = ! empty( $post->ID ) ? $post->ID : $post; + + $document = Plugin::$instance->documents->get( $post_id ); + if ( $document && ! $document::get_property( 'support_wp_page_templates' ) ) { + return $page_templates; + } + } + + $page_templates = [ + self::TEMPLATE_CANVAS => esc_html__( 'Elementor Canvas', 'elementor' ), + self::TEMPLATE_HEADER_FOOTER => esc_html__( 'Elementor Full Width', 'elementor' ), + self::TEMPLATE_THEME => esc_html__( 'Theme', 'elementor' ), + ] + $page_templates; + + return $page_templates; + } + + /** + * Set print callback. + * + * Set the page template callback. + * + * @since 2.0.0 + * @access public + * + * @param callable $callback + */ + public function set_print_callback( $callback ) { + $this->print_callback = $callback; + } + + /** + * Print callback. + * + * Prints the page template content using WordPress loop. + * + * @since 2.0.0 + * @access public + */ + public function print_callback() { + while ( have_posts() ) : + the_post(); + the_content(); + endwhile; + } + + /** + * Print content. + * + * Prints the page template content. + * + * @since 2.0.0 + * @access public + */ + public function print_content() { + if ( ! $this->print_callback ) { + $this->print_callback = [ $this, 'print_callback' ]; + } + + call_user_func( $this->print_callback ); + } + + /** + * Get page template path. + * + * Retrieve the path for any given page template. + * + * @since 2.0.0 + * @access public + * + * @param string $page_template The page template name. + * + * @return string Page template path. + */ + public function get_template_path( $page_template ) { + $template_path = ''; + switch ( $page_template ) { + case self::TEMPLATE_CANVAS: + $template_path = __DIR__ . '/templates/canvas.php'; + break; + case self::TEMPLATE_HEADER_FOOTER: + $template_path = __DIR__ . '/templates/header-footer.php'; + break; + } + + return $template_path; + } + + /** + * Register template control. + * + * Adds custom controls to any given document. + * + * Fired by `update_post_metadata` action. + * + * @since 2.0.0 + * @access public + * + * @param Document $document The document instance. + */ + public function action_register_template_control( $document ) { + if ( $document instanceof PageBase || $document instanceof LibraryPageDocument ) { + $this->register_template_control( $document ); + } + } + + /** + * Register template control. + * + * Adds custom controls to any given document. + * + * @since 2.0.0 + * @access public + * + * @param Document $document The document instance. + * @param string $control_id Optional. The control ID. Default is `template`. + */ + public function register_template_control( $document, $control_id = 'template' ) { + if ( ! Utils::is_cpt_custom_templates_supported() ) { + return; + } + + require_once ABSPATH . '/wp-admin/includes/template.php'; + + $document->start_injection( [ + 'of' => 'post_status', + 'fallback' => [ + 'of' => 'post_title', + ], + ] ); + + $control_options = [ + 'options' => array_flip( get_page_templates( null, $document->get_main_post()->post_type ) ), + ]; + + $this->add_template_controls( $document, $control_id, $control_options ); + + $document->end_injection(); + } + + // The $options variable is an array of $control_options to overwrite the default + public function add_template_controls( Document $document, $control_id, $control_options ) { + // Default Control Options + $default_control_options = [ + 'label' => esc_html__( 'Page Layout', 'elementor' ), + 'type' => Controls_Manager::SELECT, + 'default' => 'default', + 'options' => [ + 'default' => esc_html__( 'Default', 'elementor' ), + ], + ]; + + $control_options = array_replace_recursive( $default_control_options, $control_options ); + + $document->add_control( + $control_id, + $control_options + ); + + $document->add_control( + $control_id . '_default_description', + [ + 'type' => Controls_Manager::RAW_HTML, + 'raw' => '' . esc_html__( 'The default page template as defined in Elementor Panel → Hamburger Menu → Site Settings.', 'elementor' ) . '', + 'content_classes' => 'elementor-descriptor', + 'condition' => [ + $control_id => 'default', + ], + ] + ); + + $document->add_control( + $control_id . '_theme_description', + [ + 'type' => Controls_Manager::RAW_HTML, + 'raw' => '' . esc_html__( 'Default Page Template from your theme.', 'elementor' ) . '', + 'content_classes' => 'elementor-descriptor', + 'condition' => [ + $control_id => self::TEMPLATE_THEME, + ], + ] + ); + + $document->add_control( + $control_id . '_canvas_description', + [ + 'type' => Controls_Manager::RAW_HTML, + 'raw' => '' . esc_html__( 'No header, no footer, just Elementor', 'elementor' ) . '', + 'content_classes' => 'elementor-descriptor', + 'condition' => [ + $control_id => self::TEMPLATE_CANVAS, + ], + ] + ); + + $document->add_control( + $control_id . '_header_footer_description', + [ + 'type' => Controls_Manager::RAW_HTML, + 'raw' => '' . esc_html__( 'This template includes the header, full-width content and footer', 'elementor' ) . '', + 'content_classes' => 'elementor-descriptor', + 'condition' => [ + $control_id => self::TEMPLATE_HEADER_FOOTER, + ], + ] + ); + + if ( $document instanceof Kit ) { + $document->add_control( + 'reload_preview_description', + [ + 'type' => Controls_Manager::RAW_HTML, + 'raw' => esc_html__( 'Changes will be reflected in the preview only after the page reloads.', 'elementor' ), + 'content_classes' => 'elementor-descriptor', + ] + ); + } + } + + /** + * Filter metadata update. + * + * Filters whether to update metadata of a specific type. + * + * Elementor don't allow WordPress to update the parent page template + * during `wp_update_post`. + * + * Fired by `update_{$meta_type}_metadata` filter. + * + * @since 2.0.0 + * @access public + * + * @param bool $check Whether to allow updating metadata for the given type. + * @param int $object_id Object ID. + * @param string $meta_key Meta key. + * + * @return bool Whether to allow updating metadata of a specific type. + */ + public function filter_update_meta( $check, $object_id, $meta_key ) { + if ( '_wp_page_template' === $meta_key && Plugin::$instance->common ) { + /** @var \Elementor\Core\Common\Modules\Ajax\Module $ajax */ + $ajax = Plugin::$instance->common->get_component( 'ajax' ); + + $ajax_data = $ajax->get_current_action_data(); + + $is_autosave_action = $ajax_data && 'save_builder' === $ajax_data['action'] && Document::STATUS_AUTOSAVE === $ajax_data['data']['status']; + + // Don't allow WP to update the parent page template. + // (during `wp_update_post` from page-settings or save_plain_text). + if ( $is_autosave_action && ! wp_is_post_autosave( $object_id ) && Document::STATUS_DRAFT !== get_post_status( $object_id ) ) { + $check = false; + } + } + + return $check; + } + + /** + * Support `wp_body_open` action, available since WordPress 5.2. + * + * @since 2.7.0 + * @access public + */ + public static function body_open() { + wp_body_open(); + } + + /** + * Page templates module constructor. + * + * Initializing Elementor page templates module. + * + * @since 2.0.0 + * @access public + */ + public function __construct() { + add_action( 'init', [ $this, 'add_wp_templates_support' ] ); + + add_filter( 'template_include', [ $this, 'template_include' ], 11 /* After Plugins/WooCommerce */ ); + + add_action( 'elementor/documents/register_controls', [ $this, 'action_register_template_control' ] ); + + add_filter( 'update_post_metadata', [ $this, 'filter_update_meta' ], 10, 3 ); + } +} diff --git a/wp-content/plugins/elementor/modules/page-templates/templates/canvas.php b/wp-content/plugins/elementor/modules/page-templates/templates/canvas.php new file mode 100644 index 0000000..c5321cb --- /dev/null +++ b/wp-content/plugins/elementor/modules/page-templates/templates/canvas.php @@ -0,0 +1,52 @@ +frontend->add_body_class( 'elementor-template-canvas' ); + +?> + +> + + + + <?php echo wp_get_document_title(); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?> + + + + +> + modules_manager->get_modules( 'page-templates' )->print_content(); + + /** + * After canvas page template content. + * + * Fires after the content of Elementor canvas page template. + * + * @since 1.0.0 + */ + do_action( 'elementor/page_templates/canvas/after_content' ); + + wp_footer(); + ?> + + diff --git a/wp-content/plugins/elementor/modules/page-templates/templates/header-footer.php b/wp-content/plugins/elementor/modules/page-templates/templates/header-footer.php new file mode 100644 index 0000000..bbcfeca --- /dev/null +++ b/wp-content/plugins/elementor/modules/page-templates/templates/header-footer.php @@ -0,0 +1,30 @@ +frontend->add_body_class( 'elementor-template-full-width' ); + +get_header(); +/** + * Before Header-Footer page template content. + * + * Fires before the content of Elementor Header-Footer page template. + * + * @since 2.0.0 + */ +do_action( 'elementor/page_templates/header-footer/before_content' ); + +\Elementor\Plugin::$instance->modules_manager->get_modules( 'page-templates' )->print_content(); + +/** + * After Header-Footer page template content. + * + * Fires after the content of Elementor Header-Footer page template. + * + * @since 2.0.0 + */ +do_action( 'elementor/page_templates/header-footer/after_content' ); + +get_footer(); diff --git a/wp-content/plugins/elementor/modules/performance-lab/module.php b/wp-content/plugins/elementor/modules/performance-lab/module.php new file mode 100644 index 0000000..a62779c --- /dev/null +++ b/wp-content/plugins/elementor/modules/performance-lab/module.php @@ -0,0 +1,70 @@ +performance_lab_get_webp_src( $value['id'], 'full', $value['url'] ); + } + return $value; + } + + public function __construct() { + parent::__construct(); + + if ( $this->is_performance_lab_is_active() ) { + add_filter( 'elementor/files/css/property', function( $value, $css_property, $matches ) { + return $this->replace_css_with_webp( $value, $css_property, $matches ); + }, 10, 3 ); + } + + if ( is_admin() ) { + add_action( 'activated_plugin', function( $plugin ) { + if ( 'performance-lab/load.php' === $plugin ) { + Plugin::$instance->files_manager->clear_cache(); + } + } ); + + add_action( 'deactivated_plugin', function( $plugin ) { + if ( 'performance-lab/load.php' === $plugin ) { + Plugin::$instance->files_manager->clear_cache(); + } + } ); + } + } +} diff --git a/wp-content/plugins/elementor/modules/promotions/admin-menu-items/base-promotion-item.php b/wp-content/plugins/elementor/modules/promotions/admin-menu-items/base-promotion-item.php new file mode 100644 index 0000000..4759e7e --- /dev/null +++ b/wp-content/plugins/elementor/modules/promotions/admin-menu-items/base-promotion-item.php @@ -0,0 +1,76 @@ + $this->get_promotion_title(), + 'description' => $this->get_promotion_description(), + 'image' => $this->get_image_url(), + 'upgrade_text' => $this->get_cta_text(), + 'upgrade_url' => $this->get_cta_url(), + ]; + + $config = apply_filters( 'elementor/' . $this->get_name() . '/custom_promotion', $config ); + + if ( isset( $config['upgrade_url'] ) && false === Validate_Promotion::domain_is_on_elementor_dot_com( $config['upgrade_url'] ) ) { + $config['upgrade_url'] = esc_url( $this->get_cta_url() ); + } + + $description = $config['description'] ?? $this->get_promotion_description() ?? ''; + + ?> +
    +
    + + +

    get_promotion_title() ); ?>

    + +

    + + + get_cta_text() ); ?> + +
    +
    + get_content_lines() ) ) { + ?> +
      + get_content_lines() as $item ) { ?> +
    • + +
    + get_promotion_data(); + ?> +
    +
    +

    + + + + + + + + +
    +

    +
    + + +
    + + +
    + build_promotion_data_array(); + + $new_promotion_data = apply_filters( 'elementor/' . $this->get_name() . '/custom_promotion', $promotion_data ); + + return count( $new_promotion_data ) <= count( $promotion_data ) + ? $this->replace_values( $promotion_data, $new_promotion_data ) + : $promotion_data; + } + + /** + * @return array + */ + private function build_promotion_data_array(): array { + return [ + 'promotion_title' => $this->get_promotion_title(), + 'cta_url' => $this->get_cta_url(), + 'cta_text' => $this->get_cta_text(), + 'video_url' => $this->get_video_url(), + 'lines' => $this->get_lines(), + 'side_note' => $this->get_side_note(), + ]; + } + + /** + * @param array $promotion_data + * @param array $new_promotion_data + * @return array + */ + private function replace_values( array $promotion_data, array $new_promotion_data ): array { + $new_promotion_data = array_replace( $promotion_data, $new_promotion_data ); + + if ( ! Validate_Promotion::domain_is_on_elementor_dot_com( $new_promotion_data['cta_url'] ) ) { + $new_promotion_data['cta_url'] = $promotion_data['cta_url']; + } + + return $new_promotion_data; + } +} diff --git a/wp-content/plugins/elementor/modules/promotions/admin-menu-items/custom-code-promotion-item.php b/wp-content/plugins/elementor/modules/promotions/admin-menu-items/custom-code-promotion-item.php new file mode 100644 index 0000000..425679e --- /dev/null +++ b/wp-content/plugins/elementor/modules/promotions/admin-menu-items/custom-code-promotion-item.php @@ -0,0 +1,45 @@ +' + ), + ]; + } + + protected function get_cta_url(): string { + return 'https://go.elementor.com/go-pro-custom-fonts/'; + } + + protected function get_video_url(): string { + return 'https://www.youtube-nocookie.com/embed/j_guJkm28eY?si=cdd2TInwuGDTtCGD'; + } +} diff --git a/wp-content/plugins/elementor/modules/promotions/admin-menu-items/custom-icons-promotion-item.php b/wp-content/plugins/elementor/modules/promotions/admin-menu-items/custom-icons-promotion-item.php new file mode 100644 index 0000000..4bb2a01 --- /dev/null +++ b/wp-content/plugins/elementor/modules/promotions/admin-menu-items/custom-icons-promotion-item.php @@ -0,0 +1,47 @@ +' + ); + } + + protected function get_content_lines(): array { + return [ + sprintf( + esc_html__( 'Expand your icon library beyond FontAwesome and add icon %s libraries of your choice', 'elementor' ), + '
    ' + ), + esc_html__( 'Add any icon, anywhere on your website', 'elementor' ), + ]; + } + + protected function get_cta_url(): string { + return 'https://go.elementor.com/go-pro-custom-icons/'; + } + + protected function get_video_url(): string { + return 'https://www.youtube-nocookie.com/embed/PsowinxDWfM?si=SV9Z3TLz3_XEy5C6'; + } +} diff --git a/wp-content/plugins/elementor/modules/promotions/admin-menu-items/form-submissions-promotion-item.php b/wp-content/plugins/elementor/modules/promotions/admin-menu-items/form-submissions-promotion-item.php new file mode 100644 index 0000000..340dde6 --- /dev/null +++ b/wp-content/plugins/elementor/modules/promotions/admin-menu-items/form-submissions-promotion-item.php @@ -0,0 +1,50 @@ +' + ); + } + + protected function get_content_lines(): array { + return [ + esc_html__( 'Create single or multi-step forms to engage and convert visitors', 'elementor' ), + esc_html__( 'Use any field to collect the information you need', 'elementor' ), + esc_html__( 'Integrate your favorite marketing software*', 'elementor' ), + esc_html__( 'Collect lead submissions directly within your WordPress Admin to manage, analyze and perform bulk actions on the submitted lead*', 'elementor' ), + ]; + } + + protected function get_cta_url():string { + return 'https://go.elementor.com/go-pro-submissions/'; + } + + protected function get_video_url():string { + return 'https://www.youtube-nocookie.com/embed/LNfnwba9C-8?si=JLHk3UAexnvTfU1a'; + } + + protected function get_side_note():string { + return esc_html__( '* Requires an Advanced subscription or higher', 'elementor' ); + } +} diff --git a/wp-content/plugins/elementor/modules/promotions/admin-menu-items/go-pro-promotion-item.php b/wp-content/plugins/elementor/modules/promotions/admin-menu-items/go-pro-promotion-item.php new file mode 100644 index 0000000..2975ad1 --- /dev/null +++ b/wp-content/plugins/elementor/modules/promotions/admin-menu-items/go-pro-promotion-item.php @@ -0,0 +1,57 @@ + $upgrade_text ] )['upgrade_text'] ?? $upgrade_text; + } + + public function get_page_title() { + return ''; + } + + public function get_capability() { + return 'manage_options'; + } + + public static function get_url() { + $url = self::URL; + $filtered_url = apply_filters( 'elementor/admin_menu/custom_promotion', [ 'upgrade_url' => $url ] )['upgrade_url'] ?? ''; + + if ( Validate_Promotion::domain_is_on_elementor_dot_com( $filtered_url ) ) { + $url = $filtered_url; + } + + return esc_url( $url ); + } + + public function render() { + // Redirects from the module on `admin_init`. + die; + } +} diff --git a/wp-content/plugins/elementor/modules/promotions/admin-menu-items/interfaces/promotion-menu-item.php b/wp-content/plugins/elementor/modules/promotions/admin-menu-items/interfaces/promotion-menu-item.php new file mode 100644 index 0000000..e361066 --- /dev/null +++ b/wp-content/plugins/elementor/modules/promotions/admin-menu-items/interfaces/promotion-menu-item.php @@ -0,0 +1,21 @@ +get_promotion_description(); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped + } + + public function get_cta_url() { + return 'https://go.elementor.com/go-pro-popup-builder/'; + } +} diff --git a/wp-content/plugins/elementor/modules/promotions/module.php b/wp-content/plugins/elementor/modules/promotions/module.php new file mode 100644 index 0000000..fe1730e --- /dev/null +++ b/wp-content/plugins/elementor/modules/promotions/module.php @@ -0,0 +1,82 @@ +handle_external_redirects(); + } ); + + add_action( 'elementor/admin/menu/register', function ( Admin_Menu_Manager $admin_menu ) { + $this->register_menu_items( $admin_menu ); + }, static::ADMIN_MENU_PRIORITY ); + + add_action( 'elementor/admin/menu/register', function ( Admin_Menu_Manager $admin_menu ) { + $this->register_promotion_menu_item( $admin_menu ); + }, static::ADMIN_MENU_PROMOTIONS_PRIORITY ); + + add_action( 'elementor/widgets/register', function( Widgets_Manager $manager ) { + foreach ( Api::get_promotion_widgets() as $widget_data ) { + $manager->register( new Widgets\Pro_Widget_Promotion( [], [ + 'widget_name' => $widget_data['name'], + 'widget_title' => $widget_data['title'], + ] ) ); + } + } ); + } + + private function handle_external_redirects() { + if ( empty( $_GET['page'] ) ) { + return; + } + + if ( 'go_elementor_pro' === $_GET['page'] ) { + wp_redirect( Go_Pro_Promotion_Item::get_url() ); + die; + } + } + + private function register_menu_items( Admin_Menu_Manager $admin_menu ) { + $admin_menu->register( 'e-form-submissions', new Form_Submissions_Promotion_Item() ); + $admin_menu->register( 'elementor_custom_fonts', new Custom_Fonts_Promotion_Item() ); + $admin_menu->register( 'elementor_custom_icons', new Custom_Icons_Promotion_Item() ); + $admin_menu->register( 'elementor_custom_code', new Custom_Code_Promotion_Item() ); + $admin_menu->register( 'popup_templates', new Popups_Promotion_Item() ); + } + + private function register_promotion_menu_item( Admin_Menu_Manager $admin_menu ) { + $admin_menu->register( 'go_elementor_pro', new Go_Pro_Promotion_Item() ); + } +} diff --git a/wp-content/plugins/elementor/modules/promotions/widgets/pro-widget-promotion.php b/wp-content/plugins/elementor/modules/promotions/widgets/pro-widget-promotion.php new file mode 100644 index 0000000..743cbc5 --- /dev/null +++ b/wp-content/plugins/elementor/modules/promotions/widgets/pro-widget-promotion.php @@ -0,0 +1,91 @@ +widget_data['widget_name']; + } + + public function get_title() { + return $this->widget_data['widget_title']; + } + + public function on_import( $element ) { + $element['settings']['__should_import'] = true; + + return $element; + } + + protected function register_controls() {} + + protected function render() { + if ( $this->is_editor_render() ) { + $this->render_promotion(); + } else { + $this->render_empty_content(); + } + } + + private function is_editor_render(): bool { + return \Elementor\Plugin::$instance->editor->is_edit_mode(); + } + + private function render_promotion() { + ?> +
    + +

    + Go Pro + widget_data['widget_title'] ) + ); + ?> +

    +
    + + +
    +
    + widget_data = [ + 'widget_name' => $args['widget_name'], + 'widget_title' => $args['widget_title'], + ]; + + parent::__construct( $data, $args ); + } + + public function render_plain_content( $instance = [] ) {} +} diff --git a/wp-content/plugins/elementor/modules/safe-mode/module.php b/wp-content/plugins/elementor/modules/safe-mode/module.php new file mode 100644 index 0000000..a2bc872 --- /dev/null +++ b/wp-content/plugins/elementor/modules/safe-mode/module.php @@ -0,0 +1,562 @@ +register_ajax_action( 'enable_safe_mode', [ $this, 'ajax_enable_safe_mode' ] ); + $ajax->register_ajax_action( 'disable_safe_mode', [ $this, 'disable_safe_mode' ] ); + } + + /** + * @param Tools $tools_page + */ + public function add_admin_button( $tools_page ) { + $tools_page->add_fields( Settings::TAB_GENERAL, 'tools', [ + 'safe_mode' => [ + 'label' => esc_html__( 'Safe Mode', 'elementor' ), + 'field_args' => [ + 'type' => 'select', + 'std' => $this->is_enabled() ? 'global' : '', + 'options' => [ + '' => esc_html__( 'Disable', 'elementor' ), + 'global' => esc_html__( 'Enable', 'elementor' ), + + ], + 'desc' => esc_html__( 'Safe Mode allows you to troubleshoot issues by only loading the editor, without loading the theme or any other plugin.', 'elementor' ), + ], + ], + ] ); + } + + public function on_update_safe_mode( $value ) { + if ( 'yes' === $value || 'global' === $value ) { + $this->enable_safe_mode(); + } else { + $this->disable_safe_mode(); + } + + return $value; + } + + /** + * @throws \Exception + */ + public function ajax_enable_safe_mode( $data ) { + if ( ! current_user_can( 'install_plugins' ) ) { + throw new \Exception( 'Access denied.' ); + } + + // It will run `$this->>update_safe_mode`. + update_option( 'elementor_safe_mode', 'yes' ); + + $document = Plugin::$instance->documents->get( $data['editor_post_id'] ); + + if ( $document ) { + return add_query_arg( 'elementor-mode', 'safe', $document->get_edit_url() ); + } + + return false; + } + + public function enable_safe_mode() { + if ( ! current_user_can( 'install_plugins' ) ) { + return; + } + + WP_Filesystem(); + + $this->update_allowed_plugins(); + + if ( ! is_dir( WPMU_PLUGIN_DIR ) ) { + wp_mkdir_p( WPMU_PLUGIN_DIR ); + add_option( 'elementor_safe_mode_created_mu_dir', true ); + } + + if ( ! is_dir( WPMU_PLUGIN_DIR ) ) { + wp_die( esc_html__( 'Cannot enable Safe Mode', 'elementor' ) ); + } + + $results = copy_dir( __DIR__ . '/mu-plugin/', WPMU_PLUGIN_DIR ); + + if ( is_wp_error( $results ) ) { + return; + } + + $token = hash( 'sha256', wp_rand() ); + + // Only who own this key can use 'elementor-safe-mode'. + update_option( self::OPTION_TOKEN, $token ); + + // Save for later use. + setcookie( self::OPTION_TOKEN, $token, time() + HOUR_IN_SECONDS, COOKIEPATH, '', is_ssl(), true ); + } + + public function disable_safe_mode() { + if ( ! current_user_can( 'install_plugins' ) ) { + return; + } + + $file_path = WP_CONTENT_DIR . '/mu-plugins/elementor-safe-mode.php'; + if ( file_exists( $file_path ) ) { + unlink( $file_path ); + } + + if ( get_option( 'elementor_safe_mode_created_mu_dir' ) ) { + // It will be removed only if it's empty and don't have other mu-plugins. + @rmdir( WPMU_PLUGIN_DIR ); + } + + delete_option( 'elementor_safe_mode' ); + delete_option( 'elementor_safe_mode_allowed_plugins' ); + delete_option( 'theme_mods_elementor-safe' ); + delete_option( 'elementor_safe_mode_created_mu_dir' ); + + delete_option( self::OPTION_TOKEN ); + setcookie( self::OPTION_TOKEN, '', 1, '', '', is_ssl(), true ); + } + + public function filter_preview_url( $url ) { + return add_query_arg( 'elementor-mode', 'safe', $url ); + } + + public function filter_template() { + return ELEMENTOR_PATH . 'modules/page-templates/templates/canvas.php'; + } + + public function print_safe_mode_css() { + ?> + + print_safe_mode_css() + ?> +
    +
    + +

    + + + +
    + +
    +
      +
    • +
      +
      + ', // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped + '' + ); + ?> +
      +
    • +
    • +
      +
      + ', // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped + '' + ); + ?> +
      +
    • +
    + +
    + ', // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped + '' + ); + ?> +
    + +
    +
    + + + is_allowed_post_type() ) { + return; + } + + $this->print_safe_mode_css(); + ?> +
    + +
    + +

    + + + +
    +
    + + +
    + +
    + +

    +
    +
    + + +
    + +
    + + + + ' . esc_html__( 'Disable Safe Mode', 'elementor' ) . ''; + + return $actions; + } + + public function on_deactivated_plugin( $plugin ) { + if ( ELEMENTOR_PLUGIN_BASE === $plugin ) { + $this->disable_safe_mode(); + return; + } + + $allowed_plugins = get_option( 'elementor_safe_mode_allowed_plugins', [] ); + $plugin_key = array_search( $plugin, $allowed_plugins, true ); + + if ( $plugin_key ) { + unset( $allowed_plugins[ $plugin_key ] ); + update_option( 'elementor_safe_mode_allowed_plugins', $allowed_plugins ); + } + } + + public function update_allowed_plugins() { + $allowed_plugins = [ + 'elementor' => ELEMENTOR_PLUGIN_BASE, + ]; + + if ( defined( 'ELEMENTOR_PRO_PLUGIN_BASE' ) ) { + $allowed_plugins['elementor_pro'] = ELEMENTOR_PRO_PLUGIN_BASE; + } + + if ( defined( 'WC_PLUGIN_BASENAME' ) ) { + $allowed_plugins['woocommerce'] = WC_PLUGIN_BASENAME; + } + + update_option( 'elementor_safe_mode_allowed_plugins', $allowed_plugins ); + } + + public function __construct() { + if ( current_user_can( 'install_plugins' ) ) { + add_action( 'elementor/admin/after_create_settings/elementor-tools', [ $this, 'add_admin_button' ] ); + } + + add_action( 'elementor/ajax/register_actions', [ $this, 'register_ajax_actions' ] ); + + $plugin_file = self::MU_PLUGIN_FILE_NAME; + add_filter( "plugin_action_links_{$plugin_file}", [ $this, 'plugin_action_links' ] ); + + // Use pre_update, in order to catch cases that $value === $old_value and it not updated. + add_filter( 'pre_update_option_elementor_safe_mode', [ $this, 'on_update_safe_mode' ], 10, 2 ); + + add_action( 'elementor/safe_mode/init', [ $this, 'run_safe_mode' ] ); + add_action( 'elementor/editor/footer', [ $this, 'print_try_safe_mode' ] ); + + if ( $this->is_enabled() ) { + add_action( 'activated_plugin', [ $this, 'update_allowed_plugins' ] ); + add_action( 'deactivated_plugin', [ $this, 'on_deactivated_plugin' ] ); + } + } + + private function is_allowed_post_type() { + $allowed_post_types = [ + 'post', + 'page', + 'product', + Source_Local::CPT, + ]; + + $current_post_type = get_post_type( Plugin::$instance->editor->get_post_id() ); + + return in_array( $current_post_type, $allowed_post_types ); + } +} diff --git a/wp-content/plugins/elementor/modules/safe-mode/mu-plugin/elementor-safe-mode.php b/wp-content/plugins/elementor/modules/safe-mode/mu-plugin/elementor-safe-mode.php new file mode 100644 index 0000000..646dfb5 --- /dev/null +++ b/wp-content/plugins/elementor/modules/safe-mode/mu-plugin/elementor-safe-mode.php @@ -0,0 +1,136 @@ + '' . esc_html__( 'Learn More', 'elementor' ) . '', + ]; + + $plugin_meta = array_merge( $plugin_meta, $row_meta ); + } + + return $plugin_meta; + } + + public function __construct() { + add_filter( 'plugin_row_meta', [ $this, 'plugin_row_meta' ], 10, 4 ); + + $enabled_type = $this->is_enabled(); + + if ( ! $enabled_type || ! $this->is_valid_token() ) { + return; + } + + if ( ! $this->is_requested() && 'global' !== $enabled_type ) { + return; + } + + if ( ! $this->is_editor() && ! $this->is_editor_preview() && ! $this->is_editor_ajax() ) { + return; + } + + $this->add_hooks(); + } +} + +new Safe_Mode(); diff --git a/wp-content/plugins/elementor/modules/shapes/module.php b/wp-content/plugins/elementor/modules/shapes/module.php new file mode 100644 index 0000000..607f462 --- /dev/null +++ b/wp-content/plugins/elementor/modules/shapes/module.php @@ -0,0 +1,65 @@ + esc_html__( 'Wave', 'elementor' ), + 'arc' => esc_html__( 'Arc', 'elementor' ), + 'circle' => esc_html__( 'Circle', 'elementor' ), + 'line' => esc_html__( 'Line', 'elementor' ), + 'oval' => esc_html__( 'Oval', 'elementor' ), + 'spiral' => esc_html__( 'Spiral', 'elementor' ), + ]; + + if ( $add_custom ) { + $paths['custom'] = esc_html__( 'Custom', 'elementor' ); + } + + return $paths; + } + + /** + * Get an SVG Path URL from the pre-defined ones. + * + * @param string $path - Path name. + * + * @return string + */ + public static function get_path_url( $path ) { + return ELEMENTOR_ASSETS_URL . 'svg-paths/' . $path . '.svg'; + } + + /** + * Get the module's associated widgets. + * + * @return string[] + */ + protected function get_widgets() { + return [ + 'TextPath', + ]; + } + + /** + * Retrieve the module name. + * + * @return string + */ + public function get_name() { + return 'shapes'; + } +} diff --git a/wp-content/plugins/elementor/modules/shapes/widgets/text-path.php b/wp-content/plugins/elementor/modules/shapes/widgets/text-path.php new file mode 100644 index 0000000..3f82b86 --- /dev/null +++ b/wp-content/plugins/elementor/modules/shapes/widgets/text-path.php @@ -0,0 +1,689 @@ +start_controls_section( + 'section_content_text_path', + [ + 'label' => esc_html__( 'Text Path', 'elementor' ), + 'tab' => Controls_Manager::TAB_CONTENT, + ] + ); + + $this->add_control( + 'text', + [ + 'label' => esc_html__( 'Text', 'elementor' ), + 'type' => Controls_Manager::TEXT, + 'label_block' => true, + 'default' => esc_html__( 'Add Your Curvy Text Here', 'elementor' ), + 'frontend_available' => true, + 'render_type' => 'none', + 'dynamic' => [ + 'active' => true, + ], + ] + ); + + $this->add_control( + 'path', + [ + 'label' => esc_html__( 'Path Type', 'elementor' ), + 'type' => Controls_Manager::SELECT, + 'options' => Shapes_Module::get_paths(), + 'default' => 'wave', + ] + ); + + $this->add_control( + 'custom_path', + [ + 'label' => esc_html__( 'SVG', 'elementor' ), + 'type' => Controls_Manager::MEDIA, + 'media_types' => [ + 'svg', + ], + 'condition' => [ + 'path' => 'custom', + ], + 'dynamic' => [ + 'active' => true, + ], + 'description' => sprintf( + '%1$s %2$s', + esc_html__( 'Want to create custom text paths with SVG?', 'elementor' ), + esc_html__( 'Learn more', 'elementor' ) + ), + ] + ); + + $this->add_control( + 'link', + [ + 'label' => esc_html__( 'Link', 'elementor' ), + 'type' => Controls_Manager::URL, + 'label_block' => true, + 'dynamic' => [ + 'active' => true, + ], + 'placeholder' => esc_html__( 'Paste URL or type', 'elementor' ), + 'frontend_available' => true, + ] + ); + + $this->add_responsive_control( + 'align', + [ + 'label' => esc_html__( 'Alignment', 'elementor' ), + 'type' => Controls_Manager::CHOOSE, + 'default' => '', + 'options' => [ + 'left' => [ + 'title' => esc_html__( 'Left', 'elementor' ), + 'icon' => 'eicon-text-align-left', + ], + 'center' => [ + 'title' => esc_html__( 'Center', 'elementor' ), + 'icon' => 'eicon-text-align-center', + ], + 'right' => [ + 'title' => esc_html__( 'Right', 'elementor' ), + 'icon' => 'eicon-text-align-right', + ], + ], + 'selectors' => [ + '{{WRAPPER}}' => '--alignment: {{VALUE}}', + ], + 'frontend_available' => true, + ] + ); + + $this->add_control( + 'text_path_direction', + [ + 'label' => esc_html__( 'Text Direction', 'elementor' ), + 'type' => Controls_Manager::SELECT, + 'default' => '', + 'options' => [ + '' => esc_html__( 'Default', 'elementor' ), + 'rtl' => esc_html__( 'RTL', 'elementor' ), + 'ltr' => esc_html__( 'LTR', 'elementor' ), + ], + 'selectors' => [ + '{{WRAPPER}}' => '--direction: {{VALUE}}', + ], + 'frontend_available' => true, + ] + ); + + $this->add_control( + 'show_path', + [ + 'label' => esc_html__( 'Show Path', 'elementor' ), + 'type' => Controls_Manager::SWITCHER, + 'label_on' => esc_html__( 'On', 'elementor' ), + 'label_off' => esc_html__( 'Off', 'elementor' ), + 'return_value' => self::DEFAULT_PATH_FILL, + 'separator' => 'before', + 'default' => '', + 'selectors' => [ + '{{WRAPPER}}' => '--path-stroke: {{VALUE}}; --path-fill: transparent;', + ], + ] + ); + + $this->end_controls_section(); + } + + /** + * Register style controls under style tab. + */ + protected function register_style_tab() { + /** + * Text Path styling section. + */ + $this->start_controls_section( + 'section_style_text_path', + [ + 'label' => esc_html__( 'Text Path', 'elementor' ), + 'tab' => Controls_Manager::TAB_STYLE, + ] + ); + + $this->add_responsive_control( + 'size', + [ + 'label' => esc_html__( 'Size', 'elementor' ), + 'type' => Controls_Manager::SLIDER, + 'size_units' => [ 'px', '%', 'em', 'rem', 'vw', 'custom' ], + 'range' => [ + '%' => [ + 'min' => 0, + 'max' => 100, + 'step' => 10, + ], + 'px' => [ + 'max' => 800, + 'step' => 50, + ], + ], + 'default' => [ + 'size' => 500, + ], + 'tablet_default' => [ + 'size' => 500, + ], + 'mobile_default' => [ + 'size' => 500, + ], + 'selectors' => [ + '{{WRAPPER}}' => '--width: {{SIZE}}{{UNIT}};', + ], + ] + ); + + $this->add_responsive_control( + 'rotation', + [ + 'label' => esc_html__( 'Rotate', 'elementor' ), + 'type' => Controls_Manager::SLIDER, + 'size_units' => [ 'deg', 'grad', 'rad', 'turn', 'custom' ], + 'default' => [ + 'unit' => 'deg', + ], + 'tablet_default' => [ + 'unit' => 'deg', + ], + 'mobile_default' => [ + 'unit' => 'deg', + ], + 'selectors' => [ + '{{WRAPPER}}' => '--rotate: {{SIZE}}{{UNIT}};', + ], + ] + ); + + $this->add_control( + 'text_heading', + [ + 'label' => esc_html__( 'Text', 'elementor' ), + 'type' => Controls_Manager::HEADING, + ] + ); + + $this->add_group_control( + Group_Control_Typography::get_type(), + [ + 'name' => 'text_typography', + 'selector' => '{{WRAPPER}}', + 'global' => [ + 'default' => Global_Typography::TYPOGRAPHY_TEXT, + ], + 'fields_options' => [ + 'font_size' => [ + 'default' => [ + 'size' => '20', + 'unit' => 'px', + ], + 'size_units' => [ 'px' ], + ], + // Text decoration isn't an inherited property, so it's required to explicitly + // target the specific `textPath` element. + 'text_decoration' => [ + 'selectors' => [ + '{{WRAPPER}} textPath' => 'text-decoration: {{VALUE}};', + ], + ], + ], + ] + ); + + $this->add_group_control( + Group_Control_Text_Stroke::get_type(), + [ + 'name' => 'text_stroke', + 'selector' => '{{WRAPPER}} textPath', + ] + ); + + $this->add_responsive_control( + 'word_spacing', + [ + 'label' => esc_html__( 'Word Spacing', 'elementor' ), + 'type' => Controls_Manager::SLIDER, + 'size_units' => [ 'px', 'em', 'rem', 'custom' ], + 'range' => [ + 'px' => [ + 'min' => -20, + 'max' => 20, + ], + 'em' => [ + 'min' => -1, + 'max' => 1, + ], + 'rem' => [ + 'min' => -1, + 'max' => 1, + ], + ], + 'default' => [ + 'size' => '', + ], + 'tablet_default' => [ + 'size' => '', + ], + 'mobile_default' => [ + 'size' => '', + ], + 'selectors' => [ + '{{WRAPPER}}' => '--word-spacing: {{SIZE}}{{UNIT}};', + ], + ] + ); + + $this->add_control( + 'start_point', + [ + 'label' => esc_html__( 'Starting Point', 'elementor' ) . ' (%)', + 'type' => Controls_Manager::SLIDER, + 'size_units' => [ '%' ], + 'range' => [ + 'px' => [ + 'min' => -100, + 'max' => 100, + 'step' => 1, + ], + ], + 'default' => [ + 'unit' => '%', + 'size' => 0, + ], + 'frontend_available' => true, + 'render_type' => 'none', + ] + ); + + $this->start_controls_tabs( 'text_style' ); + + /** + * Normal tab. + */ + $this->start_controls_tab( + 'text_normal', + [ + 'label' => esc_html__( 'Normal', 'elementor' ), + ] + ); + + $this->add_control( + 'text_color_normal', + [ + 'label' => esc_html__( 'Color', 'elementor' ), + 'type' => Controls_Manager::COLOR, + 'default' => '', + 'selectors' => [ + '{{WRAPPER}}' => '--text-color: {{VALUE}};', + ], + ] + ); + + $this->end_controls_tab(); + + /** + * Hover tab. + */ + $this->start_controls_tab( + 'text_hover', + [ + 'label' => esc_html__( 'Hover', 'elementor' ), + ] + ); + + $this->add_control( + 'text_color_hover', + [ + 'label' => esc_html__( 'Color', 'elementor' ), + 'type' => Controls_Manager::COLOR, + 'default' => '', + 'selectors' => [ + '{{WRAPPER}}' => '--text-color-hover: {{VALUE}};', + ], + ] + ); + + $this->add_control( + 'hover_animation', + [ + 'label' => esc_html__( 'Hover Animation', 'elementor' ), + 'type' => Controls_Manager::HOVER_ANIMATION, + ] + ); + + $this->add_control( + 'hover_transition', + [ + 'label' => esc_html__( 'Transition Duration', 'elementor' ), + 'type' => Controls_Manager::SLIDER, + 'size_units' => [ 's', 'ms', 'custom' ], + 'default' => [ + 'unit' => 's', + 'size' => 0.3, + ], + 'selectors' => [ + '{{WRAPPER}}' => '--transition: {{SIZE}}{{UNIT}}', + ], + ] + ); + + $this->end_controls_tab(); + + $this->end_controls_tabs(); + + $this->end_controls_section(); + + /** + * Path styling section. + */ + $this->start_controls_section( + 'section_style_path', + [ + 'label' => esc_html__( 'Path', 'elementor' ), + 'tab' => Controls_Manager::TAB_STYLE, + 'condition' => [ + 'show_path!' => '', + ], + ] + ); + + $this->start_controls_tabs( 'path_style' ); + + /** + * Normal tab. + */ + $this->start_controls_tab( + 'path_normal', + [ + 'label' => esc_html__( 'Normal', 'elementor' ), + ] + ); + + $this->add_control( + 'path_fill_normal', + [ + 'label' => esc_html__( 'Color', 'elementor' ), + 'type' => Controls_Manager::COLOR, + 'default' => '', + 'selectors' => [ + '{{WRAPPER}}' => '--path-fill: {{VALUE}};', + ], + ] + ); + + $this->add_control( + 'stroke_heading_normal', + [ + 'label' => esc_html__( 'Stroke', 'elementor' ), + 'type' => Controls_Manager::HEADING, + ] + ); + + $this->add_control( + 'stroke_color_normal', + [ + 'label' => esc_html__( 'Color', 'elementor' ), + 'type' => Controls_Manager::COLOR, + 'default' => self::DEFAULT_PATH_FILL, + 'selectors' => [ + '{{WRAPPER}}' => '--stroke-color: {{VALUE}};', + ], + ] + ); + + $this->add_control( + 'stroke_width_normal', + [ + 'label' => esc_html__( 'Width', 'elementor' ), + 'type' => Controls_Manager::SLIDER, + 'size_units' => [ 'px', 'em', 'rem', 'custom' ], + 'default' => [ + 'size' => 1, + ], + 'range' => [ + 'px' => [ + 'min' => 1, + 'max' => 20, + ], + 'em' => [ + 'max' => 2, + ], + 'rem' => [ + 'max' => 2, + ], + ], + 'selectors' => [ + '{{WRAPPER}}' => '--stroke-width: {{SIZE}}{{UNIT}}', + ], + ] + ); + + $this->end_controls_tab(); + + /** + * Hover tab. + */ + $this->start_controls_tab( + 'path_hover', + [ + 'label' => esc_html__( 'Hover', 'elementor' ), + ] + ); + + $this->add_control( + 'path_fill_hover', + [ + 'label' => esc_html__( 'Color', 'elementor' ), + 'type' => Controls_Manager::COLOR, + 'default' => '', + 'selectors' => [ + '{{WRAPPER}}' => '--path-fill-hover: {{VALUE}};', + ], + ] + ); + + $this->add_control( + 'stroke_heading_hover', + [ + 'label' => esc_html__( 'Stroke', 'elementor' ), + 'type' => Controls_Manager::HEADING, + ] + ); + + $this->add_control( + 'stroke_color_hover', + [ + 'label' => esc_html__( 'Color', 'elementor' ), + 'type' => Controls_Manager::COLOR, + 'default' => '', + 'selectors' => [ + '{{WRAPPER}}' => '--stroke-color-hover: {{VALUE}};', + ], + ] + ); + + $this->add_control( + 'stroke_width_hover', + [ + 'label' => esc_html__( 'Width', 'elementor' ), + 'type' => Controls_Manager::SLIDER, + 'size_units' => [ 'px', 'em', 'rem', 'custom' ], + 'default' => [ + 'size' => '', + ], + 'range' => [ + 'px' => [ + 'min' => 1, + 'max' => 20, + ], + 'em' => [ + 'max' => 2, + ], + 'rem' => [ + 'max' => 2, + ], + ], + 'selectors' => [ + '{{WRAPPER}}' => '--stroke-width-hover: {{SIZE}}{{UNIT}}', + ], + ] + ); + + $this->add_control( + 'stroke_transition', + [ + 'label' => esc_html__( 'Transition Duration', 'elementor' ), + 'type' => Controls_Manager::SLIDER, + 'size_units' => [ 's', 'ms', 'custom' ], + 'default' => [ + 'unit' => 's', + 'size' => 0.3, + ], + 'selectors' => [ + '{{WRAPPER}}' => '--stroke-transition: {{SIZE}}{{UNIT}}', + ], + ] + ); + + $this->end_controls_tab(); + + $this->end_controls_tabs(); + + $this->end_controls_section(); + } + + /** + * Register Text Path widget controls. + * + * Adds different input fields to allow the user to change and customize the widget settings. + * + * @access protected + */ + protected function register_controls() { + $this->register_content_tab(); + $this->register_style_tab(); + } + + /** + * Render Text Path widget output on the frontend. + * + * Written in PHP and used to generate the final HTML. + * + * @access protected + */ + protected function render() { + $settings = $this->get_settings_for_display(); + + // Get the path URL. + $path_url = ( 'custom' === $settings['path'] ) + ? wp_get_attachment_url( $settings['custom_path']['id'] ) + : Shapes_Module::get_path_url( $settings['path'] ); + + // Remove the HTTP protocol to prevent Mixed Content error. + $path_url = preg_replace( '/^https?:/i', '', $path_url ); + + // Add Text Path attributes. + $this->add_render_attribute( 'text_path', [ + 'class' => 'e-text-path', + 'data-text' => htmlentities( esc_attr( $settings['text'] ) ), + 'data-url' => esc_url( $path_url ), + 'data-link-url' => esc_url( $settings['link']['url'] ?? '' ), + ] ); + + // Add hover animation. + if ( ! empty( $settings['hover_animation'] ) ) { + $this->add_render_attribute( 'text_path', 'class', 'elementor-animation-' . $settings['hover_animation'] ); + } + + // Render. + ?> +
    print_render_attribute_string( 'text_path' ); ?>>
    + get_items_permissions_check( $request ); + } + + public function create_item_permissions_check( $request ): bool { + return $this->create_items_permissions_check( $request ); + } + + public function register_endpoints() { + $this->register_endpoint( new Recent_Posts( $this ) ); + $this->register_endpoint( new Add_New_Post( $this ) ); + + if ( Plugin::$instance->experiments->is_feature_active( 'pages_panel' ) ) { + $this->register_endpoint( new Duplicate_Post( $this ) ); + $this->register_endpoint( new Homepage( $this ) ); + } + } + + protected function register_index_endpoint() { + // Bypass, currently does not required. + } +} diff --git a/wp-content/plugins/elementor/modules/site-navigation/data/endpoints/add-new-post.php b/wp-content/plugins/elementor/modules/site-navigation/data/endpoints/add-new-post.php new file mode 100644 index 0000000..54535bd --- /dev/null +++ b/wp-content/plugins/elementor/modules/site-navigation/data/endpoints/add-new-post.php @@ -0,0 +1,87 @@ + [ + 'description' => 'Post type to create', + 'type' => 'string', + 'required' => false, + 'default' => 'post', + 'sanitize_callback' => function ( $value ) { + return sanitize_text_field( $value ); + }, + 'validate_callback' => 'rest_validate_request_arg', + ], + ]; + + $this->register_items_route( \WP_REST_Server::CREATABLE, $args ); + } + + public function get_name() { + return 'add-new-post'; + } + + public function get_format() { + return 'site-navigation/add-new-post'; + } + + public function create_items( $request ) { + $post_type = $request->get_param( 'post_type' ); + + if ( ! $this->validate_post_type( $post_type ) ) { + return new \WP_Error( 400, sprintf( 'Post type %s does not exist.', $post_type ), [ 'status' => 400 ] ); + } + + if ( ! User::is_current_user_can_edit_post_type( $post_type ) ) { + return new \WP_Error( 401, sprintf( 'User dont have capability to create page of type - %s.', $post_type ), [ 'status' => 401 ] ); + } + + // Temporary solution for the fact that documents creation not using the actual registered post types. + $post_type = $this->map_post_type( $post_type ); + + $document = Plugin::$instance->documents->create( $post_type ); + + if ( is_wp_error( $document ) ) { + return new \WP_Error( 500, sprintf( 'Error while creating %s.', $post_type ) ); + } + + return [ + 'id' => $document->get_main_id(), + 'edit_url' => $document->get_edit_url(), + ]; + } + + private function validate_post_type( $post_type ): bool { + $post_types = get_post_types(); + + return in_array( $post_type, $post_types ); + } + + /** + * Map post type to Elementor document type. + * + * @param $post_type + * + * @return string + */ + private function map_post_type( $post_type ): string { + $post_type_map = [ + 'page' => 'wp-page', + 'post' => 'wp-post', + ]; + + return $post_type_map[ $post_type ] ?? $post_type; + } +} diff --git a/wp-content/plugins/elementor/modules/site-navigation/data/endpoints/duplicate-post.php b/wp-content/plugins/elementor/modules/site-navigation/data/endpoints/duplicate-post.php new file mode 100644 index 0000000..7364321 --- /dev/null +++ b/wp-content/plugins/elementor/modules/site-navigation/data/endpoints/duplicate-post.php @@ -0,0 +1,154 @@ + [ + 'description' => 'Post id to duplicate', + 'type' => 'integer', + 'required' => true, + 'sanitize_callback' => 'absint', + 'validate_callback' => 'rest_validate_request_arg', + ], + 'title' => [ + 'description' => 'Post title', + 'type' => 'string', + 'required' => false, + 'sanitize_callback' => function ( $value ) { + return sanitize_text_field( $value ); + }, + 'validate_callback' => 'rest_validate_request_arg', + ], + ]; + + $this->register_items_route( \WP_REST_Server::CREATABLE, $args ); + } + + public function get_name() { + return 'duplicate-post'; + } + + public function get_format() { + return 'site-navigation/duplicate-post'; + } + + public function create_items( $request ) { + $post_id = $request->get_param( 'post_id' ); + $post_title = $request->get_param( 'title' ); + + $post = get_post( $post_id ); + + if ( ! User::is_current_user_can_edit_post_type( $post->post_type ) ) { + return new \WP_Error( 401, sprintf( 'User dont have capability to create page of type - %s.', $post->post_type ), [ 'status' => 401 ] ); + } + + if ( ! $post ) { + return new \WP_Error( 500, 'Post not found' ); + } + + $new_post_id = $this->duplicate_post( $post, $post_title ); + + if ( is_wp_error( $new_post_id ) ) { + return new \WP_Error( 500, 'Error while duplicating post.' ); + } + + //Duplicate all post meta + $this->duplicate_post_meta( $post_id, $new_post_id ); + + //Duplicate all taxonomies + $this->duplicate_post_taxonomies( $post_id, $new_post_id ); + + return [ + 'post_id' => $new_post_id, + ]; + } + + /** + * Duplicate post + * + * @param $post + * + * @return int|\WP_Error + */ + private function duplicate_post( $post, $post_title ) { + $post_status = 'draft'; + $current_user = wp_get_current_user(); + $new_post_author = $current_user->ID; + + $args = [ + 'comment_status' => $post->comment_status, + 'ping_status' => $post->ping_status, + 'post_author' => $new_post_author, + 'post_content' => $post->post_content, + 'post_excerpt' => $post->post_excerpt, + 'post_parent' => $post->post_parent, + 'post_password' => $post->post_password, + 'post_status' => $post_status, + 'post_title' => $post_title, + 'post_type' => $post->post_type, + 'to_ping' => $post->to_ping, + 'menu_order' => $post->menu_order, + ]; + + return wp_insert_post( $args ); + } + + + /** + * Duplicate the associated post meta to the new post ID. + * + * @param int $post_id + * @param int $new_post_id + */ + private function duplicate_post_meta( int $post_id, int $new_post_id ) { + $post_meta = get_post_meta( $post_id ); + + if ( empty( $post_meta ) || ! is_array( $post_meta ) ) { + return; + } + + foreach ( $post_meta as $key => $values ) { + if ( '_wp_old_slug' === $key ) { // Ignore this meta key + continue; + } + + foreach ( $values as $value ) { + $value = maybe_unserialize( $value ); + add_post_meta( $new_post_id, $key, wp_slash( $value ) ); + } + } + } + + /** + * duplicate_post_taxonomies + * + * @param int $post_id + * @param int $new_post_id + */ + private function duplicate_post_taxonomies( $post_id, $new_post_id ) { + $taxonomies = array_map( 'sanitize_text_field', get_object_taxonomies( get_post_type( $post_id ) ) ); + + if ( empty( $taxonomies ) || ! is_array( $taxonomies ) ) { + return; + } + + foreach ( $taxonomies as $taxonomy ) { + $post_terms = wp_get_object_terms( $post_id, $taxonomy, [ 'fields' => 'slugs' ] ); + + if ( ! is_wp_error( $post_terms ) ) { + wp_set_object_terms( $new_post_id, $post_terms, $taxonomy, false ); + } + } + } +} diff --git a/wp-content/plugins/elementor/modules/site-navigation/data/endpoints/homepage.php b/wp-content/plugins/elementor/modules/site-navigation/data/endpoints/homepage.php new file mode 100644 index 0000000..74b6a5c --- /dev/null +++ b/wp-content/plugins/elementor/modules/site-navigation/data/endpoints/homepage.php @@ -0,0 +1,31 @@ + [ + 'description' => 'Number of posts to return', + 'type' => 'integer', + 'required' => true, + 'sanitize_callback' => 'absint', + 'validate_callback' => 'rest_validate_request_arg', + ], + 'post_type' => [ + 'description' => 'Post types to retrieve', + 'type' => 'array', + 'required' => false, + 'default' => [ 'page', 'post', Source_Local::CPT ], + 'sanitize_callback' => 'rest_sanitize_array', + 'validate_callback' => 'rest_validate_request_arg', + ], + 'post__not_in' => [ + 'description' => 'Post id`s to exclude', + 'type' => 'array', + 'required' => [], + 'sanitize_callback' => 'wp_parse_id_list', + 'validate_callback' => 'rest_validate_request_arg', + ], + ]; + + parent::register_items_route( $methods, $args ); + } + + public function get_name() { + return 'recent-posts'; + } + + public function get_format() { + return 'site-navigation/recent-posts'; + } + + public function get_items( $request ) { + $args = [ + 'posts_per_page' => $request->get_param( 'posts_per_page' ), + 'post_type' => $request->get_param( 'post_type' ), + 'fields' => 'ids', + 'meta_query' => [ + [ + 'key' => Document::TYPE_META_KEY, + 'value' => Kit::get_type(), // Exclude kits. + 'compare' => '!=', + ], + ], + ]; + + $exclude = $request->get_param( 'post__not_in' ); + + if ( ! empty( $exclude ) ) { + $args['post__not_in'] = $exclude; + } + + $recently_edited_query = Utils::get_recently_edited_posts_query( $args ); + + $recent = []; + + foreach ( $recently_edited_query->posts as $id ) { + $document = Plugin::$instance->documents->get( $id ); + + $recent[] = [ + 'id' => $id, + 'title' => get_the_title( $id ), + 'edit_url' => $document->get_edit_url(), + 'date_modified' => get_post_timestamp( $id, 'modified' ), + 'type' => [ + 'post_type' => get_post_type( $id ), + 'doc_type' => $document->get_name(), + 'label' => $document->get_title(), + ], + 'user_can' => [ + 'edit' => current_user_can( 'edit_post', $id ), + ], + ]; + } + + return $recent; + } +} diff --git a/wp-content/plugins/elementor/modules/site-navigation/module.php b/wp-content/plugins/elementor/modules/site-navigation/module.php new file mode 100644 index 0000000..050d998 --- /dev/null +++ b/wp-content/plugins/elementor/modules/site-navigation/module.php @@ -0,0 +1,84 @@ +data_manager_v2->register_controller( new Controller() ); + + $is_tests = Utils::is_elementor_tests(); + $is_v2_experiment_on = Plugin::$instance->experiments->is_feature_active( 'editor_v2' ); + if ( ! $is_v2_experiment_on && ! $is_tests ) { + return; + } + + $this->register_pages_panel_experiment(); + + if ( Plugin::$instance->experiments->is_feature_active( self::PAGES_PANEL_EXPERIMENT_NAME ) ) { + add_filter( 'elementor/editor/v2/scripts/env', function( $env ) { + $env['@elementor/editor-site-navigation'] = [ + 'is_pages_panel_active' => true, + ]; + + return $env; + } ); + $this->register_rest_fields(); + } + } + + /** + * Retrieve the module name. + * + * @return string + */ + public function get_name() { + return 'site-navigation'; + } + + /** + * Register Experiment + * + * @since 3.16.0 + * + * @return void + * @throws \Exception + */ + private function register_pages_panel_experiment() { + Plugin::$instance->experiments->add_feature( [ + 'name' => self::PAGES_PANEL_EXPERIMENT_NAME, + 'title' => esc_html__( 'Pages Panel', 'elementor' ), + 'release_status' => Experiments_Manager::RELEASE_STATUS_ALPHA, + 'default' => Experiments_Manager::STATE_INACTIVE, + 'hidden' => true, + 'dependencies' => [ + 'editor_v2', + ], + ] ); + } + + private function register_rest_fields() { + add_action( 'rest_api_init', function() { + ( new Page_User_Can() )->register_rest_field(); + } ); + } + +} diff --git a/wp-content/plugins/elementor/modules/site-navigation/rest-fields/page-user-can.php b/wp-content/plugins/elementor/modules/site-navigation/rest-fields/page-user-can.php new file mode 100644 index 0000000..b72b4b5 --- /dev/null +++ b/wp-content/plugins/elementor/modules/site-navigation/rest-fields/page-user-can.php @@ -0,0 +1,44 @@ + [ $this, 'get_callback' ], + 'schema' => [ + 'description' => __( 'Whether the current user can edit or delete this post', 'elementor' ), + 'type' => 'array', + ], + ] + ); + } + + public function get_callback( $post ) { + $can_edit = current_user_can( 'edit_post', $post['id'] ); + $can_delete = current_user_can( 'delete_post', $post['id'] ); + + return [ + 'edit' => $can_edit, + 'delete' => $can_delete, + ]; + } +} diff --git a/wp-content/plugins/elementor/modules/styleguide/controls/switcher.php b/wp-content/plugins/elementor/modules/styleguide/controls/switcher.php new file mode 100644 index 0000000..c610fcc --- /dev/null +++ b/wp-content/plugins/elementor/modules/styleguide/controls/switcher.php @@ -0,0 +1,27 @@ +preview->is_preview(); + + if ( ! $is_preview ) { + return; + } + + $this->enqueue_app_initiator( $is_preview ); + } ); + + add_action( 'elementor/controls/register', [ $this, 'register_controls' ] ); + add_action( 'elementor/element/after_section_start', [ $this, 'add_styleguide_enable_controls' ], 10, 3 ); + } + + /** + * Retrieve the module name. + * + * @return string + */ + public function get_name() { + return 'styleguide'; + } + + /** + * Enqueue scripts. + * + * @return void + */ + public function enqueue_main_scripts() { + wp_enqueue_script( + static::ASSETS_HANDLE, + $this->get_js_assets_url( static::ASSETS_SRC ), + [ 'elementor-editor' ], + ELEMENTOR_VERSION, + true + ); + + $kit_id = Plugin::$instance->kits_manager->get_active_id(); + + wp_localize_script( static::ASSETS_HANDLE, 'elementorStyleguideConfig', [ + 'activeKitId' => $kit_id, + ] ); + } + + public function enqueue_app_initiator( $is_preview = false ) { + $dependencies = [ + 'wp-i18n', + 'react', + 'react-dom', + ]; + + if ( ! $is_preview ) { + $dependencies[] = static::ASSETS_HANDLE; + } + + wp_enqueue_script( + static::ASSETS_HANDLE . '-app-initiator', + $this->get_js_assets_url( static::ASSETS_SRC . '-app-initiator' ), + $dependencies, + ELEMENTOR_VERSION, + true + ); + } + + public function enqueue_styles() { + wp_enqueue_style( + static::ASSETS_HANDLE, + $this->get_css_assets_url( 'modules/' . static::ASSETS_SRC . '/' . static::ASSETS_SRC ), + [], + ELEMENTOR_VERSION + ); + } + + public function register_controls() { + $controls_manager = Plugin::$instance->controls_manager; + + $controls_manager->register( new Switcher() ); + } + + /** + * Add the Enable Styleguide Preview controls to Global Colors and Global Fonts. + * + * @param $element + * @param string $section_id + * @param array $args + */ + public function add_styleguide_enable_controls( $element, $section_id, $args ) { + if ( 'kit' !== $element->get_name() || ! in_array( $section_id, [ 'section_global_colors', 'section_text_style' ] ) ) { + return; + } + + $control_name = str_replace( 'global-', '', $args['tab'] ) . '_enable_styleguide_preview'; + + $element->add_control( + $control_name, + [ + 'label' => esc_html__( 'Style Guide Preview', 'elementor' ), + 'type' => Switcher::CONTROL_TYPE, + 'description' => esc_html__( 'Switch between the content area and style guide to preview your changes to global colors.', 'elementor' ), + 'separator' => 'after', + 'label_off' => esc_html__( 'Off', 'elementor' ), + 'label_on' => esc_html__( 'On', 'elementor' ), + 'on_change_command' => true, + ] + ); + } +} diff --git a/wp-content/plugins/elementor/modules/system-info/helpers/model-helper.php b/wp-content/plugins/elementor/modules/system-info/helpers/model-helper.php new file mode 100644 index 0000000..5c43072 --- /dev/null +++ b/wp-content/plugins/elementor/modules/system-info/helpers/model-helper.php @@ -0,0 +1,68 @@ + [], + 'wordpress' => [], + 'theme' => [], + 'user' => [], + 'plugins' => [], + 'network_plugins' => [], + 'mu_plugins' => [], + ]; + + public function get_capability() { + return $this->capability; + } + + /** + * Main system info page constructor. + * + * Initializing Elementor system info page. + * + * @since 2.9.0 + * @access public + */ + public function __construct() { + $this->add_actions(); + } + + /** + * Get default settings. + * + * Retrieve the default settings. Used to reset the report settings on + * initialization. + * + * @since 2.9.0 + * @access protected + * + * @return array Default settings. + */ + protected function get_init_settings() { + $settings = []; + + $reporter_properties = Base::get_properties_keys(); + + array_push( $reporter_properties, 'category', 'name', 'class_name' ); + + $settings['reporter_properties'] = $reporter_properties; + + $settings['reportFilePrefix'] = ''; + + return $settings; + } + + /** + * Add actions. + * + * Register filters and actions for the main system info page. + * + * @since 2.9.0 + * @access private + */ + private function add_actions() { + if ( ! Plugin::$instance->experiments->is_feature_active( 'admin_menu_rearrangement' ) ) { + add_action( 'elementor/admin/menu/register', function ( Admin_Menu_Manager $admin_menu_manager ) { + $this->register_menu( $admin_menu_manager ); + }, Settings::ADMIN_MENU_PRIORITY + 30 ); + } + + add_action( 'wp_ajax_elementor_system_info_download_file', [ $this, 'download_file' ] ); + } + + /** + * Register admin menu. + * + * Add new Elementor system info admin menu. + * + * Fired by `admin_menu` action. + * + * @since 2.9.0 + * @access private + */ + private function register_menu( Admin_Menu_Manager $admin_menu ) { + $admin_menu->register( 'elementor-system-info', new System_Info_Menu_Item( $this ) ); + } + + /** + * Display page. + * + * Output the content for the main system info page. + * + * @since 2.9.0 + * @access public + */ + public function display_page() { + $reports_info = self::get_allowed_reports(); + + $reports = $this->load_reports( $reports_info ); + ?> +
    +
    +

    +
    + + +
    +
    +
    print_report( $reports, 'html' ); ?>
    +

    +
    + + + +
    +
    +
    + + +
    +
    + capability ) ) { + wp_die( esc_html__( 'You don\'t have permissions to download this file', 'elementor' ) ); + } + + $reports_info = self::get_allowed_reports(); + $reports = $this->load_reports( $reports_info ); + + $domain = parse_url( site_url(), PHP_URL_HOST ); + + header( 'Content-Type: text/plain' ); + header( 'Content-Disposition:attachment; filename=system-info-' . $domain . '-' . gmdate( 'd-m-Y' ) . '.txt' ); + + $this->print_report( $reports ); + + die; + } + + /** + * Get report class. + * + * Retrieve the class of the report for any given report type. + * + * @since 2.9.0 + * @access public + * + * @param string $reporter_type The type of the report. + * + * @return string The class of the report. + */ + public function get_reporter_class( $reporter_type ) { + return __NAMESPACE__ . '\Reporters\\' . ucfirst( $reporter_type ); + } + + /** + * Load reports. + * + * Retrieve the system info reports. + * + * @since 2.9.0 + * @access public + * + * @param array $reports An array of system info reports. + * + * @return array An array of system info reports. + */ + public function load_reports( $reports ) { + $result = []; + + foreach ( $reports as $report_name => $report_info ) { + $reporter_params = [ + 'name' => $report_name, + ]; + + $reporter_params = array_merge( $reporter_params, $report_info ); + + $reporter = $this->create_reporter( $reporter_params ); + + if ( ! $reporter instanceof Base ) { + continue; + } + + $result[ $report_name ] = [ + 'report' => $reporter, + 'label' => $reporter->get_title(), + ]; + + if ( ! empty( $report_info['sub'] ) ) { + $result[ $report_name ]['sub'] = $this->load_reports( $report_info['sub'] ); + } + } + + return $result; + } + + /** + * Create a report. + * + * Register a new report that will be displayed in Elementor system info page. + * + * @param array $properties Report properties. + * + * @return \WP_Error|false|Base Base instance if the report was created, + * False or WP_Error otherwise. + *@since 2.9.0 + * @access public + * + */ + public function create_reporter( array $properties ) { + $properties = Model_Helper::prepare_properties( $this->get_settings( 'reporter_properties' ), $properties ); + + $reporter_class = $properties['class_name'] ? $properties['class_name'] : $this->get_reporter_class( $properties['name'] ); + + $reporter = new $reporter_class( $properties ); + + if ( ! ( $reporter instanceof Base ) ) { + return new \WP_Error( 'Each reporter must to be an instance or sub-instance of `Base` class.' ); + } + + if ( ! $reporter->is_enabled() ) { + return false; + } + + return $reporter; + } + + /** + * Print report. + * + * Output the system info page reports using an output template. + * + * @since 2.9.0 + * @access public + * + * @param array $reports An array of system info reports. + * @param string $template Output type from the templates folder. Available + * templates are `raw` and `html`. Default is `raw`. + */ + public function print_report( $reports, $template = 'raw' ) { + static $tabs_count = 0; + + $template_path = __DIR__ . '/templates/' . $template . '.php'; + + require $template_path; + } + + /** + * Get allowed reports. + * + * Retrieve the available reports in Elementor system info page. + * + * @since 2.9.0 + * @access public + * @static + * + * @return array Available reports in Elementor system info page. + */ + public static function get_allowed_reports() { + do_action( 'elementor/system_info/get_allowed_reports' ); + + return self::$reports; + } + + /** + * Add report. + * + * Register a new report to Elementor system info page. + * + * @since 2.9.0 + * @access public + * @static + * + * @param string $report_name The name of the report. + * @param array $report_info Report info. + */ + public static function add_report( $report_name, $report_info ) { + self::$reports[ $report_name ] = $report_info; + } +} diff --git a/wp-content/plugins/elementor/modules/system-info/reporters/base-plugin.php b/wp-content/plugins/elementor/modules/system-info/reporters/base-plugin.php new file mode 100644 index 0000000..51bf003 --- /dev/null +++ b/wp-content/plugins/elementor/modules/system-info/reporters/base-plugin.php @@ -0,0 +1,79 @@ +get_report( 'html' ) as $field ) { + foreach ( $field['value'] as $plugin_info ) : + ?> + + %s', $plugin_info['PluginURI'], $plugin_info['Name'] ); + else : + $plugin_name = $plugin_info['Name']; + endif; + + if ( $plugin_info['Version'] ) : + $plugin_name .= ' - ' . $plugin_info['Version']; + endif; + + Utils::print_unescaped_internal_string( $plugin_name ); + ?> + %s', $plugin_info['AuthorURI'], $plugin_info['Author'] ); + else : + $author = $plugin_info['Author']; + endif; + + Utils::print_unescaped_internal_string( "By $author" ); + endif; + ?> + + + get_report( 'raw' ) as $field_name => $field ) : + $sub_indent = str_repeat( "\t", $tabs_count ); + + echo "== {$field['label']} ==" . PHP_EOL; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped + + foreach ( $field['value'] as $plugin_info ) : + $plugin_properties = array_intersect_key( $plugin_info, $required_plugins_properties ); + + echo esc_html( $sub_indent . $plugin_info['Name'] ); + + foreach ( $plugin_properties as $property_name => $property ) : + echo PHP_EOL . "{$sub_indent}\t{$property_name}: {$property}"; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped + endforeach; + + echo PHP_EOL . PHP_EOL; + endforeach; + endforeach; + } +} diff --git a/wp-content/plugins/elementor/modules/system-info/reporters/base.php b/wp-content/plugins/elementor/modules/system-info/reporters/base.php new file mode 100644 index 0000000..67667c9 --- /dev/null +++ b/wp-content/plugins/elementor/modules/system-info/reporters/base.php @@ -0,0 +1,242 @@ +get_report( 'html' ) as $field ) { + $warning_class = ! empty( $field['warning'] ) ? ' class="elementor-warning"' : ''; + $log_label = ! empty( $field['label'] ) ? $field['label'] . ':' : ''; + ?> + > + + + + + get_report( 'raw' ); + + echo PHP_EOL . $indent . '== ' . $this->get_title() . ' =='; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped + echo PHP_EOL; + + foreach ( $report as $field_name => $field ) : + $sub_indent = str_repeat( "\t", $tabs_count ); + + $label = $field['label']; + + if ( ! empty( $label ) ) { + $label .= ': '; + } + echo "{$sub_indent}{$label}{$field['value']}" . PHP_EOL; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped + endforeach; + } + + /** + * Get report. + * + * Retrieve the report with all it's containing fields. + * + * @since 2.9.0 + * @access public + * + * @return \WP_Error | array { + * Report fields. + * + * @type string $name Field name. + * @type string $label Field label. + * } + */ + final public function get_report( $format = '' ) { + $result = []; + + $format = ( empty( $format ) ) ? '' : $format . '_'; + + foreach ( $this->get_fields() as $field_name => $field_label ) { + $method = 'get_' . $format . $field_name; + + if ( ! method_exists( $this, $method ) ) { + $method = 'get_' . $field_name; + //fallback: + if ( ! method_exists( $this, $method ) ) { + return new \WP_Error( sprintf( "Getter method for the field '%s' wasn't found in %s.", $field_name, get_called_class() ) ); + } + } + + $reporter_field = [ + 'name' => $field_name, + 'label' => $field_label, + ]; + + $reporter_field = array_merge( $reporter_field, $this->$method() ); + $result[ $field_name ] = $reporter_field; + } + + return $result; + } + + /** + * Get properties keys. + * + * Retrieve the keys of the properties. + * + * @since 2.9.0 + * @access public + * @static + * + * @return array { + * Property keys. + * + * @type string $name Property name. + * @type string $fields Property fields. + * } + */ + public static function get_properties_keys() { + return [ + 'name', + 'format', + 'fields', + ]; + } + + /** + * Filter possible properties. + * + * Retrieve possible properties filtered by property keys. + * + * @since 2.9.0 + * @access public + * @static + * + * @param array $properties Properties to filter. + * + * @return array Possible properties filtered by property keys. + */ + final public static function filter_possible_properties( $properties ) { + return Model_Helper::filter_possible_properties( self::get_properties_keys(), $properties ); + } + + /** + * Set properties. + * + * Add/update properties to the report. + * + * @since 2.9.0 + * @access public + * + * @param array $key Property key. + * @param array $value Optional. Property value. Default is `null`. + */ + final public function set_properties( $key, $value = null ) { + if ( is_array( $key ) ) { + $key = self::filter_possible_properties( $key ); + + foreach ( $key as $sub_key => $sub_value ) { + $this->set_properties( $sub_key, $sub_value ); + } + + return; + } + + if ( ! in_array( $key, self::get_properties_keys(), true ) ) { + return; + } + + $this->_properties[ $key ] = $value; + } + + /** + * Reporter base constructor. + * + * Initializing the reporter base class. + * + * @since 2.9.0 + * @access public + * + * @param array $properties Optional. Properties to filter. Default is `null`. + */ + public function __construct( $properties = null ) { + $this->_properties = array_fill_keys( self::get_properties_keys(), null ); + + if ( $properties ) { + $this->set_properties( $properties, null ); + } + } +} diff --git a/wp-content/plugins/elementor/modules/system-info/reporters/mu-plugins.php b/wp-content/plugins/elementor/modules/system-info/reporters/mu-plugins.php new file mode 100644 index 0000000..aec2652 --- /dev/null +++ b/wp-content/plugins/elementor/modules/system-info/reporters/mu-plugins.php @@ -0,0 +1,111 @@ +plugins ) { + $this->plugins = get_mu_plugins(); + } + + return $this->plugins; + } + + /** + * Is enabled. + * + * Whether there are must-use plugins or not. + * + * @since 1.0.0 + * @access public + * + * @return bool True if the site has must-use plugins, False otherwise. + */ + public function is_enabled() { + return ! ! $this->get_mu_plugins(); + } + + /** + * Get must-use plugins reporter title. + * + * Retrieve must-use plugins reporter title. + * + * @since 1.0.0 + * @access public + * + * @return string Reporter title. + */ + public function get_title() { + return 'Must-Use Plugins'; + } + + /** + * Get must-use plugins report fields. + * + * Retrieve the required fields for the must-use plugins report. + * + * @since 1.0.0 + * @access public + * + * @return array Required report fields with field ID and field label. + */ + public function get_fields() { + return [ + 'must_use_plugins' => 'Must-Use Plugins', + ]; + } + + /** + * Get must-use plugins. + * + * Retrieve the sites must-use plugins. + * + * @since 1.0.0 + * @access public + * + * @return array { + * Report data. + * + * @type string $value The must-use plugins list. + * } + */ + public function get_must_use_plugins() { + return [ + 'value' => $this->get_mu_plugins(), + ]; + } +} diff --git a/wp-content/plugins/elementor/modules/system-info/reporters/network-plugins.php b/wp-content/plugins/elementor/modules/system-info/reporters/network-plugins.php new file mode 100644 index 0000000..90cd489 --- /dev/null +++ b/wp-content/plugins/elementor/modules/system-info/reporters/network-plugins.php @@ -0,0 +1,116 @@ +plugins ) { + $active_plugins = get_site_option( 'active_sitewide_plugins' ); + $this->plugins = array_intersect_key( get_plugins(), $active_plugins ); + } + + return $this->plugins; + } + + /** + * Is enabled. + * + * Whether there are active network plugins or not. + * + * @since 1.0.0 + * @access public + * + * @return bool True if the site has active network plugins, False otherwise. + */ + public function is_enabled() { + if ( ! is_multisite() ) { + return false; + }; + + return ! ! $this->get_network_plugins(); + } + + /** + * Get network plugins report fields. + * + * Retrieve the required fields for the network plugins report. + * + * @since 1.0.0 + * @access public + * + * @return array Required report fields with field ID and field label. + */ + public function get_fields() { + return [ + 'network_active_plugins' => 'Network Plugins', + ]; + } + + /** + * Get active network plugins. + * + * Retrieve the sites active network plugins. + * + * @since 1.0.0 + * @access public + * + * @return array { + * Report data. + * + * @type string $value The active network plugins list. + * } + */ + public function get_network_active_plugins() { + return [ + 'value' => $this->get_network_plugins(), + ]; + } +} diff --git a/wp-content/plugins/elementor/modules/system-info/reporters/plugins.php b/wp-content/plugins/elementor/modules/system-info/reporters/plugins.php new file mode 100644 index 0000000..9d9595b --- /dev/null +++ b/wp-content/plugins/elementor/modules/system-info/reporters/plugins.php @@ -0,0 +1,113 @@ +plugins ) { + $this->plugins = Plugin::$instance->wp->get_active_plugins()->all(); + } + + return $this->plugins; + } + + /** + * Get active plugins reporter title. + * + * Retrieve active plugins reporter title. + * + * @since 1.0.0 + * @access public + * + * @return string Reporter title. + */ + public function get_title() { + return 'Active Plugins'; + } + + /** + * Is enabled. + * + * Whether there are active plugins or not. + * + * @since 1.0.0 + * @access public + * + * @return bool True if the site has active plugins, False otherwise. + */ + public function is_enabled() { + return ! ! $this->get_plugins(); + } + + /** + * Get active plugins report fields. + * + * Retrieve the required fields for the active plugins report. + * + * @since 1.0.0 + * @access public + * + * @return array Required report fields with field ID and field label. + */ + public function get_fields() { + return [ + 'active_plugins' => 'Active Plugins', + ]; + } + + /** + * Get active plugins. + * + * Retrieve the sites active plugins. + * + * @since 1.0.0 + * @access public + * + * @return array { + * Report data. + * + * @type string $value The active plugins list. + * } + */ + public function get_active_plugins() { + return [ + 'value' => $this->get_plugins(), + ]; + } +} diff --git a/wp-content/plugins/elementor/modules/system-info/reporters/server.php b/wp-content/plugins/elementor/modules/system-info/reporters/server.php new file mode 100644 index 0000000..c0099d3 --- /dev/null +++ b/wp-content/plugins/elementor/modules/system-info/reporters/server.php @@ -0,0 +1,493 @@ + 'Operating System', + 'software' => 'Software', + 'mysql_version' => 'MySQL version', + 'php_version' => 'PHP Version', + 'php_memory_limit' => 'PHP Memory Limit', + 'php_max_input_vars' => 'PHP Max Input Vars', + 'php_max_post_size' => 'PHP Max Post Size', + 'gd_installed' => 'GD Installed', + 'zip_installed' => 'ZIP Installed', + 'write_permissions' => 'Write Permissions', + 'elementor_library' => 'Elementor Library', + ]; + } + + /** + * Get server operating system. + * + * Retrieve the server operating system. + * + * @since 1.0.0 + * @access public + * + * @return array { + * Report data. + * + * @type string $value Server operating system. + * } + */ + public function get_os() { + return [ + 'value' => PHP_OS, + ]; + } + + /** + * Get server software. + * + * Retrieve the server software. + * + * @since 1.0.0 + * @access public + * + * @return array { + * Report data. + * + * @type string $value Server software. + * } + */ + public function get_software() { + return [ + 'value' => Utils::get_super_global_value( $_SERVER, 'SERVER_SOFTWARE' ), + ]; + } + + /** + * Get PHP version. + * + * Retrieve the PHP version. + * + * @since 1.0.0 + * @access public + * + * @return array { + * Report data. + * + * @type string $value PHP version. + * @type string $recommendation Minimum PHP version recommendation. + * @type bool $warning Whether to display a warning. + * } + */ + public function get_php_version() { + $result = [ + 'value' => PHP_VERSION, + ]; + $recommended_php_version = '7.4'; + + if ( version_compare( $result['value'], $recommended_php_version, '<' ) ) { + $result['recommendation'] = sprintf( + /* translators: %s: Recommended PHP version. */ + esc_html__( 'We recommend using PHP version %s or higher.', 'elementor' ), + $recommended_php_version + ); + + $result['warning'] = true; + } + + return $result; + } + + /** + * Get PHP memory limit. + * + * Retrieve the PHP memory limit. + * + * @return array { + * Report data. + * + * @type string $value PHP memory limit. + * @type string $recommendation Recommendation memory limit. + * @type bool $warning Whether to display a warning. True if the limit + * is below the recommended 128M, False otherwise. + * } + */ + public function get_php_memory_limit() { + $result = [ + 'value' => (string) ini_get( 'memory_limit' ), + ]; + + $min_recommended_memory = '128M'; + $preferred_memory = '256M'; + + $memory_limit_bytes = wp_convert_hr_to_bytes( $result['value'] ); + + $min_recommended_bytes = wp_convert_hr_to_bytes( $min_recommended_memory ); + + if ( $memory_limit_bytes < $min_recommended_bytes ) { + $result['recommendation'] = sprintf( + /* translators: 1: Minimum recommended_memory, 2: Preferred memory, 3: WordPress wp-config memory documentation. */ + __( 'We recommend setting memory to at least %1$s. (%2$s or higher is preferred) For more information, read about how to increase memory allocated to PHP.', 'elementor' ), + $min_recommended_memory, + $preferred_memory, + 'https://go.elementor.com/wordpress-wp-config-memory/' + ); + + $result['warning'] = true; + } + + return $result; + } + + /** + * Get PHP `max_input_vars`. + * + * Retrieve the value of `max_input_vars` from `php.ini` configuration file. + * + * @since 1.0.0 + * @access public + * + * @return array { + * Report data. + * + * @type string $value PHP `max_input_vars`. + * } + */ + public function get_php_max_input_vars() { + return [ + 'value' => ini_get( 'max_input_vars' ), + ]; + } + + /** + * Get PHP `post_max_size`. + * + * Retrieve the value of `post_max_size` from `php.ini` configuration file. + * + * @since 1.0.0 + * @access public + * + * @return array { + * Report data. + * + * @type string $value PHP `post_max_size`. + * } + */ + public function get_php_max_post_size() { + return [ + 'value' => ini_get( 'post_max_size' ), + ]; + } + + /** + * Get GD installed. + * + * Whether the GD extension is installed. + * + * @since 1.0.0 + * @access public + * + * @return array { + * Report data. + * + * @type string $value Yes if the GD extension is installed, No otherwise. + * @type bool $warning Whether to display a warning. True if the GD extension is installed, False otherwise. + * } + */ + public function get_gd_installed() { + $gd_installed = extension_loaded( 'gd' ); + + return [ + 'value' => $gd_installed ? 'Yes' : 'No', + 'warning' => ! $gd_installed, + ]; + } + + /** + * Get ZIP installed. + * + * Whether the ZIP extension is installed. + * + * @since 2.1.0 + * @access public + * + * @return array { + * Report data. + * + * @type string $value Yes if the ZIP extension is installed, No otherwise. + * @type bool $warning Whether to display a warning. True if the ZIP extension is installed, False otherwise. + * } + */ + public function get_zip_installed() { + $zip_installed = extension_loaded( 'zip' ); + + return [ + 'value' => $zip_installed ? 'Yes' : 'No', + 'warning' => ! $zip_installed, + ]; + } + + /** + * Get MySQL version. + * + * Retrieve the MySQL version. + * + * @since 1.0.0 + * @access public + * + * @return array { + * Report data. + * + * @type string $value MySQL version. + * } + */ + public function get_mysql_version() { + global $wpdb; + + $db_server_version = $wpdb->get_results( "SHOW VARIABLES WHERE `Variable_name` IN ( 'version_comment', 'innodb_version' )", OBJECT_K ); + + $db_server_version_string = $db_server_version['version_comment']->Value . ' v'; + + // On some hosts, `innodb_version` is empty, in PHP 8.1. + if ( isset( $db_server_version['innodb_version'] ) ) { + $db_server_version_string .= $db_server_version['innodb_version']->Value; + } else { + $db_server_version_string .= $wpdb->get_var( 'SELECT VERSION() AS version' ); + } + + return [ + 'value' => $db_server_version_string, + ]; + } + + /** + * Get write permissions. + * Check whether the required paths for have writing permissions. + * + * @since 1.9.0 + * @access public + * + * @return array { + * Report data. + * + * @type string $value Writing permissions status. + * @type bool $warning Whether to display a warning. True if some required + * folders don't have writing permissions, False otherwise. + * } + */ + public function get_write_permissions() : array { + $paths_to_check = [ + static::KEY_PATH_WP_ROOT_DIR => $this->get_system_path( static::KEY_PATH_WP_ROOT_DIR ), + static::KEY_PATH_HTACCESS_FILE => $this->get_system_path( static::KEY_PATH_HTACCESS_FILE ), + static::KEY_PATH_UPLOADS_DIR => $this->get_system_path( static::KEY_PATH_UPLOADS_DIR ), + static::KEY_PATH_ELEMENTOR_UPLOADS_DIR => $this->get_system_path( static::KEY_PATH_ELEMENTOR_UPLOADS_DIR ), + ]; + + $paths_permissions = $this->get_paths_permissions( $paths_to_check ); + + $write_problems = []; + + if ( ! $paths_permissions[ static::KEY_PATH_WP_ROOT_DIR ]['write'] ) { + $write_problems[] = 'WordPress root directory'; + } + + if ( ! $paths_permissions[ static::KEY_PATH_UPLOADS_DIR ]['write'] ) { + $write_problems[] = 'WordPress uploads directory'; + } + + if ( $paths_permissions[ self::KEY_PATH_ELEMENTOR_UPLOADS_DIR ]['exists'] && ! $paths_permissions[ self::KEY_PATH_ELEMENTOR_UPLOADS_DIR ]['write'] ) { + $write_problems[] = 'Elementor uploads directory'; + } + + if ( $paths_permissions[ self::KEY_PATH_HTACCESS_FILE ]['exists'] && ! $paths_permissions[ self::KEY_PATH_HTACCESS_FILE ]['write'] ) { + $write_problems[] = '.htaccess file'; + } + + if ( $write_problems ) { + $value = 'There are some writing permissions issues with the following directories/files:' . "\n\t\t - "; + + $value .= implode( "\n\t\t - ", $write_problems ); + } else { + $value = 'All right'; + } + + return [ + 'value' => $value, + 'warning' => ! ! $write_problems, + ]; + } + + /** + * Check for elementor library connectivity. + * + * Check whether the remote elementor library is reachable. + * + * @since 1.0.0 + * @access public + * + * @return array { + * Report data. + * + * @type string $value The status of elementor library connectivity. + * @type bool $warning Whether to display a warning. True if elementor + * * library is not reachable, False otherwise. + * } + */ + public function get_elementor_library() { + $response = wp_remote_get( + Api::$api_info_url, [ + 'timeout' => 5, + 'body' => [ + // Which API version is used + 'api_version' => ELEMENTOR_VERSION, + // Which language to return + 'site_lang' => get_bloginfo( 'language' ), + ], + ] + ); + + if ( is_wp_error( $response ) ) { + return [ + 'value' => 'Not connected (' . $response->get_error_message() . ')', + 'warning' => true, + ]; + } + + $http_response_code = wp_remote_retrieve_response_code( $response ); + + if ( 200 !== (int) $http_response_code ) { + $error_msg = 'HTTP Error (' . $http_response_code . ')'; + + return [ + 'value' => 'Not connected (' . $error_msg . ')', + 'warning' => true, + ]; + } + + $info_data = json_decode( wp_remote_retrieve_body( $response ), true ); + + if ( empty( $info_data ) ) { + return [ + 'value' => 'Not connected (Returns invalid JSON)', + 'warning' => true, + ]; + } + + return [ + 'value' => 'Connected', + ]; + } + + /** + * @param $paths [] Paths to check permissions. + * @return array []{exists: bool, read: bool, write: bool, execute: bool} + */ + public function get_paths_permissions( $paths ) : array { + $permissions = []; + + foreach ( $paths as $key_path => $path ) { + $permissions[ $key_path ] = $this->get_path_permissions( $path ); + } + + return $permissions; + } + + /** + * Get path by path key. + * + * @param $path_key + * @return string + */ + public function get_system_path( $path_key ) : string { + switch ( $path_key ) { + case static::KEY_PATH_WP_ROOT_DIR: + return ABSPATH; + + case static::KEY_PATH_WP_CONTENT_DIR: + return WP_CONTENT_DIR; + + case static::KEY_PATH_HTACCESS_FILE: + return file_exists( ABSPATH . '/.htaccess' ) ? ABSPATH . '/.htaccess' : ''; + + case static::KEY_PATH_UPLOADS_DIR: + return wp_upload_dir()['basedir'] ?? ''; + + case static::KEY_PATH_ELEMENTOR_UPLOADS_DIR: + if ( empty( wp_upload_dir()['basedir'] ) ) { + return ''; + } + + $elementor_uploads_dir = wp_upload_dir()['basedir'] . '/elementor'; + + return is_dir( $elementor_uploads_dir ) ? $elementor_uploads_dir : ''; + + default: + return ''; + } + } + + /** + * Check the permissions of a path. + * + * @param $path + * @return array{exists: bool, read: bool, write: bool, execute: bool} + */ + public function get_path_permissions( $path ) : array { + if ( empty( $path ) ) { + return [ + 'exists' => false, + 'read' => false, + 'write' => false, + 'execute' => false, + ]; + } + + return [ + 'exists' => true, + 'read' => is_readable( $path ), + 'write' => is_writeable( $path ), + 'execute' => is_executable( $path ), + ]; + } +} diff --git a/wp-content/plugins/elementor/modules/system-info/reporters/theme.php b/wp-content/plugins/elementor/modules/system-info/reporters/theme.php new file mode 100644 index 0000000..35f0cf0 --- /dev/null +++ b/wp-content/plugins/elementor/modules/system-info/reporters/theme.php @@ -0,0 +1,274 @@ + 'Name', + 'version' => 'Version', + 'author' => 'Author', + 'is_child_theme' => 'Child Theme', + ]; + + if ( $this->get_parent_theme() ) { + $parent_fields = [ + 'parent_name' => 'Parent Theme Name', + 'parent_version' => 'Parent Theme Version', + 'parent_author' => 'Parent Theme Author', + ]; + $fields = array_merge( $fields, $parent_fields ); + } + + return $fields; + } + + /** + * Get theme. + * + * Retrieve the theme. + * + * @since 1.0.0 + * @deprecated 3.1.0 Use `get_theme()` method instead. + * @access protected + * + * @return \WP_Theme WordPress theme object. + */ + protected function _get_theme() { + Plugin::$instance->modules_manager->get_modules( 'dev-tools' )->deprecation->deprecated_function( __METHOD__, '3.1.0', 'get_theme()' ); + + return $this->get_theme(); + } + + /** + * Get theme. + * + * Retrieve the theme. + * + * @since 3.1.0 + * @access private + * + * @return \WP_Theme WordPress theme object. + */ + private function get_theme() { + if ( is_null( $this->theme ) ) { + $this->theme = wp_get_theme(); + } + return $this->theme; + } + + /** + * Get parent theme. + * + * Retrieve the parent theme. + * + * @since 1.0.0 + * @access protected + * + * @return \WP_Theme|false WordPress theme object, or false if the current theme is not a child theme. + */ + protected function get_parent_theme() { + return $this->get_theme()->parent(); + } + + /** + * Get theme name. + * + * Retrieve the theme name. + * + * @since 1.0.0 + * @access public + * + * @return array { + * Report data. + * + * @type string $value The theme name. + * } + */ + public function get_name() { + return [ + 'value' => $this->get_theme()->get( 'Name' ), + ]; + } + + /** + * Get theme author. + * + * Retrieve the theme author. + * + * @since 1.0.0 + * @access public + * + * @return array { + * Report data. + * + * @type string $value The theme author. + * } + */ + public function get_author() { + return [ + 'value' => $this->get_theme()->get( 'Author' ), + ]; + } + + /** + * Get theme version. + * + * Retrieve the theme version. + * + * @since 1.0.0 + * @access public + * + * @return array { + * Report data. + * + * @type string $value The theme version. + * } + */ + public function get_version() { + return [ + 'value' => $this->get_theme()->get( 'Version' ), + ]; + } + + /** + * Is the theme is a child theme. + * + * Whether the theme is a child theme. + * + * @since 1.0.0 + * @access public + * + * @return array { + * Report data. + * + * @type string $value Yes if the theme is a child theme, No otherwise. + * @type string $recommendation Theme source code modification recommendation. + * } + */ + public function get_is_child_theme() { + $is_child_theme = is_child_theme(); + + $result = [ + 'value' => $is_child_theme ? 'Yes' : 'No', + ]; + + if ( ! $is_child_theme ) { + $result['recommendation'] = sprintf( + /* translators: %s: WordPress child themes documentation. */ + __( 'If you want to modify the source code of your theme, we recommend using a child theme.', 'elementor' ), + 'https://go.elementor.com/wordpress-child-themes/' + ); + } + + return $result; + } + + /** + * Get parent theme version. + * + * Retrieve the parent theme version. + * + * @since 1.0.0 + * @access public + * + * @return array { + * Report data. + * + * @type string $value The parent theme version. + * } + */ + public function get_parent_version() { + return [ + 'value' => $this->get_parent_theme()->get( 'Version' ), + ]; + } + + /** + * Get parent theme author. + * + * Retrieve the parent theme author. + * + * @since 1.0.0 + * @access public + * + * @return array { + * Report data. + * + * @type string $value The parent theme author. + * } + */ + public function get_parent_author() { + return [ + 'value' => $this->get_parent_theme()->get( 'Author' ), + ]; + } + + /** + * Get parent theme name. + * + * Retrieve the parent theme name. + * + * @since 1.0.0 + * @access public + * + * @return array { + * Report data. + * + * @type string $value The parent theme name. + * } + */ + public function get_parent_name() { + return [ + 'value' => $this->get_parent_theme()->get( 'Name' ), + ]; + } +} diff --git a/wp-content/plugins/elementor/modules/system-info/reporters/user.php b/wp-content/plugins/elementor/modules/system-info/reporters/user.php new file mode 100644 index 0000000..8c26701 --- /dev/null +++ b/wp-content/plugins/elementor/modules/system-info/reporters/user.php @@ -0,0 +1,122 @@ +ID; + } + + /** + * Get user reporter title. + * + * Retrieve user reporter title. + * + * @since 1.0.0 + * @access public + * + * @return string Reporter title. + */ + public function get_title() { + return 'User'; + } + + /** + * Get user report fields. + * + * Retrieve the required fields for the user report. + * + * @since 1.0.0 + * @access public + * + * @return array Required report fields with field ID and field label. + */ + public function get_fields() { + return [ + 'role' => 'Role', + 'locale' => 'WP Profile lang', + 'agent' => 'User Agent', + ]; + } + + /** + * Get user role. + * + * Retrieve the user role. + * + * @since 1.0.0 + * @access public + * + * @return array { + * Report data. + * + * @type string $value The user role. + * } + */ + public function get_role() { + $role = null; + + $current_user = wp_get_current_user(); + if ( ! empty( $current_user->roles ) ) { + $role = $current_user->roles[0]; + } + + return [ + 'value' => $role, + ]; + } + + /** + * Get user profile language. + * + * Retrieve the user profile language. + * + * @since 1.0.0 + * @access public + * + * @return array { + * Report data. + * + * @type string $value User profile language. + * } + */ + public function get_locale() { + return [ + 'value' => get_bloginfo( 'language' ), + ]; + } + + /** + * Get user agent. + * + * Retrieve user agent. + * + * @since 1.0.0 + * @access public + * + * @return array { + * Report data. + * + * @type string $value HTTP user agent. + * } + */ + public function get_agent() { + return [ + 'value' => esc_html( Utils::get_super_global_value( $_SERVER, 'HTTP_USER_AGENT' ) ), + ]; + } +} diff --git a/wp-content/plugins/elementor/modules/system-info/reporters/wordpress.php b/wp-content/plugins/elementor/modules/system-info/reporters/wordpress.php new file mode 100644 index 0000000..dedf90e --- /dev/null +++ b/wp-content/plugins/elementor/modules/system-info/reporters/wordpress.php @@ -0,0 +1,308 @@ + 'Version', + 'site_url' => 'Site URL', + 'home_url' => 'Home URL', + 'is_multisite' => 'WP Multisite', + 'max_upload_size' => 'Max Upload Size', + 'memory_limit' => 'Memory limit', + 'max_memory_limit' => 'Max Memory limit', + 'permalink_structure' => 'Permalink Structure', + 'language' => 'Language', + 'timezone' => 'Timezone', + 'admin_email' => 'Admin Email', + 'debug_mode' => 'Debug Mode', + ]; + } + + /** + * Get WordPress memory limit. + * + * Retrieve the WordPress memory limit. + * + * @since 1.0.0 + * @access public + * + * @return array { + * Report data. + * + * @type string $value WordPress memory limit. + * } + */ + public function get_memory_limit() { + return [ + 'value' => (string) WP_MEMORY_LIMIT, + ]; + } + + /** + * Get WordPress max memory limit. + * + * Retrieve the WordPress max memory limit. + * + * @return array { + * Report data. + * + * @type string $value WordPress max memory limit. + * } + */ + public function get_max_memory_limit() { + return [ + 'value' => (string) WP_MAX_MEMORY_LIMIT, + ]; + } + + /** + * Get WordPress version. + * + * Retrieve the WordPress version. + * + * @since 1.0.0 + * @access public + * + * @return array { + * Report data. + * + * @type string $value WordPress version. + * } + */ + public function get_version() { + return [ + 'value' => get_bloginfo( 'version' ), + ]; + } + + /** + * Is multisite. + * + * Whether multisite is enabled or not. + * + * @since 1.0.0 + * @access public + * + * @return array { + * Report data. + * + * @type string $value Yes if multisite is enabled, No otherwise. + * } + */ + public function get_is_multisite() { + return [ + 'value' => is_multisite() ? 'Yes' : 'No', + ]; + } + + /** + * Get site URL. + * + * Retrieve WordPress site URL. + * + * @since 1.0.0 + * @access public + * + * @return array { + * Report data. + * + * @type string $value WordPress site URL. + * } + */ + public function get_site_url() { + return [ + 'value' => get_site_url(), + ]; + } + + /** + * Get home URL. + * + * Retrieve WordPress home URL. + * + * @since 1.0.0 + * @access public + * + * @return array { + * Report data. + * + * @type string $value WordPress home URL. + * } + */ + public function get_home_url() { + return [ + 'value' => get_home_url(), + ]; + } + + /** + * Get permalink structure. + * + * Retrieve the permalink structure + * + * @since 1.0.0 + * @access public + * + * @return array { + * Report data. + * + * @type string $value WordPress permalink structure. + * } + */ + public function get_permalink_structure() { + global $wp_rewrite; + + $structure = $wp_rewrite->permalink_structure; + + if ( ! $structure ) { + $structure = 'Plain'; + } + + return [ + 'value' => $structure, + ]; + } + + /** + * Get site language. + * + * Retrieve the site language. + * + * @since 1.0.0 + * @access public + * + * @return array { + * Report data. + * + * @type string $value WordPress site language. + * } + */ + public function get_language() { + return [ + 'value' => get_locale(), + ]; + } + + /** + * Get PHP `max_upload_size`. + * + * Retrieve the value of maximum upload file size defined in `php.ini` configuration file. + * + * @since 1.0.0 + * @access public + * + * @return array { + * Report data. + * + * @type string $value Maximum upload file size allowed. + * } + */ + public function get_max_upload_size() { + return [ + 'value' => size_format( wp_max_upload_size() ), + ]; + } + + /** + * Get WordPress timezone. + * + * Retrieve WordPress timezone. + * + * @since 1.0.0 + * @access public + * + * @return array { + * Report data. + * + * @type string $value WordPress timezone. + * } + */ + public function get_timezone() { + $timezone = get_option( 'timezone_string' ); + if ( ! $timezone ) { + $timezone = get_option( 'gmt_offset' ); + } + + return [ + 'value' => $timezone, + ]; + } + + /** + * Get WordPress administrator email. + * + * Retrieve WordPress administrator email. + * + * @since 1.0.0 + * @access public + * + * @return array { + * Report data. + * + * @type string $value WordPress administrator email. + * } + */ + public function get_admin_email() { + return [ + 'value' => get_option( 'admin_email' ), + ]; + } + + /** + * Get debug mode. + * + * Whether WordPress debug mode is enabled or not. + * + * @since 1.0.0 + * @access public + * + * @return array { + * Report data. + * + * @type string $value Active if debug mode is enabled, Inactive otherwise. + * } + */ + public function get_debug_mode() { + return [ + 'value' => WP_DEBUG ? 'Active' : 'Inactive', + ]; + } +} diff --git a/wp-content/plugins/elementor/modules/system-info/system-info-menu-item.php b/wp-content/plugins/elementor/modules/system-info/system-info-menu-item.php new file mode 100644 index 0000000..2d43553 --- /dev/null +++ b/wp-content/plugins/elementor/modules/system-info/system-info-menu-item.php @@ -0,0 +1,43 @@ +system_info_page = $system_info_page; + } + + public function is_visible() { + return true; + } + + public function get_parent_slug() { + return Settings::PAGE_ID; + } + + public function get_label() { + return esc_html__( 'System Info', 'elementor' ); + } + + public function get_page_title() { + return esc_html__( 'System Info', 'elementor' ); + } + + public function get_capability() { + return $this->system_info_page->get_capability(); + } + + public function render() { + $this->system_info_page->display_page(); + } +} diff --git a/wp-content/plugins/elementor/modules/system-info/templates/html.php b/wp-content/plugins/elementor/modules/system-info/templates/html.php new file mode 100644 index 0000000..80b9fc3 --- /dev/null +++ b/wp-content/plugins/elementor/modules/system-info/templates/html.php @@ -0,0 +1,27 @@ + $report ) : ?> +
    + + + + + + + + + + print_html(); + ?> + +
    print_html_label( ( $report['label'] ) ); ?>
    +
    + $report ) : + $report['report']->print_raw( $tabs_count ); + + if ( ! empty( $report['sub'] ) ) : + $this->print_report( $report['sub'], $template, true ); + endif; +endforeach; + +$tabs_count--; diff --git a/wp-content/plugins/elementor/modules/usage/module.php b/wp-content/plugins/elementor/modules/usage/module.php new file mode 100644 index 0000000..275cd17 --- /dev/null +++ b/wp-content/plugins/elementor/modules/usage/module.php @@ -0,0 +1,661 @@ + $elements ) { + $doc_class = Plugin::$instance->documents->get_document_type( $doc_type ); + + if ( 'html' === $format && $doc_class ) { + $doc_title = $doc_class::get_title(); + } else { + $doc_title = $doc_type; + } + + $doc_count = $this->get_doc_type_count( $doc_class, $doc_type ); + + $tab_group = $doc_class::get_property( 'admin_tab_group' ); + + if ( 'html' === $format && $tab_group ) { + $doc_title = ucwords( $tab_group ) . ' - ' . $doc_title; + } + + // Replace element type with element title. + foreach ( $elements as $element_type => $data ) { + unset( $elements[ $element_type ] ); + + if ( in_array( $element_type, [ 'section', 'column' ], true ) ) { + continue; + } + + $widget_instance = Plugin::$instance->widgets_manager->get_widget_types( $element_type ); + + if ( 'html' === $format && $widget_instance ) { + $widget_title = $widget_instance->get_title(); + } else { + $widget_title = $element_type; + } + + $elements[ $widget_title ] = $data['count']; + } + + // Sort elements by key. + ksort( $elements ); + + $usage[ $doc_type ] = [ + 'title' => $doc_title, + 'elements' => $elements, + 'count' => $doc_count, + ]; + + // ' ? 1 : 0;' In sorters is compatibility for PHP8.0. + // Sort usage by title. + uasort( $usage, function( $a, $b ) { + return ( $a['title'] > $b['title'] ) ? 1 : 0; + } ); + + // If title includes '-' will have lower priority. + uasort( $usage, function( $a ) { + return strpos( $a['title'], '-' ) ? 1 : 0; + } ); + } + + return $usage; + } + + /** + * Before document Save. + * + * Called on elementor/document/before_save, remove document from global & set saving flag. + * + * @param Document $document + * @param array $data new settings to save. + */ + public function before_document_save( $document, $data ) { + $current_status = get_post_status( $document->get_post() ); + $new_status = isset( $data['settings']['post_status'] ) ? $data['settings']['post_status'] : ''; + + if ( $current_status === $new_status ) { + $this->remove_from_global( $document ); + } + + $this->is_document_saving = true; + } + + /** + * After document save. + * + * Called on elementor/document/after_save, adds document to global & clear saving flag. + * + * @param Document $document + */ + public function after_document_save( $document ) { + if ( Document::STATUS_PUBLISH === $document->get_post()->post_status || Document::STATUS_PRIVATE === $document->get_post()->post_status ) { + $this->save_document_usage( $document ); + } + + $this->is_document_saving = false; + } + + /** + * On status change. + * + * Called on transition_post_status. + * + * @param string $new_status + * @param string $old_status + * @param \WP_Post $post + */ + public function on_status_change( $new_status, $old_status, $post ) { + if ( wp_is_post_autosave( $post ) ) { + return; + } + + // If it's from elementor editor, the usage should be saved via `before_document_save`/`after_document_save`. + if ( $this->is_document_saving ) { + return; + } + + $document = Plugin::$instance->documents->get( $post->ID ); + + if ( ! $document ) { + return; + } + + $is_public_unpublish = 'publish' === $old_status && 'publish' !== $new_status; + $is_private_unpublish = 'private' === $old_status && 'private' !== $new_status; + + if ( $is_public_unpublish || $is_private_unpublish ) { + $this->remove_from_global( $document ); + } + + $is_public_publish = 'publish' !== $old_status && 'publish' === $new_status; + $is_private_publish = 'private' !== $old_status && 'private' === $new_status; + + if ( $is_public_publish || $is_private_publish ) { + $this->save_document_usage( $document ); + } + } + + /** + * On before delete post. + * + * Called on on_before_delete_post. + * + * @param int $post_id + */ + public function on_before_delete_post( $post_id ) { + $document = Plugin::$instance->documents->get( $post_id ); + + if ( $document->get_id() !== $document->get_main_id() ) { + return; + } + + $this->remove_from_global( $document ); + } + + /** + * Add's tracking data. + * + * Called on elementor/tracker/send_tracking_data_params. + * + * @param array $params + * + * @return array + */ + public function add_tracking_data( $params ) { + $params['usages']['elements'] = get_option( self::OPTION_NAME ); + + return $params; + } + + /** + * Recalculate usage. + * + * Recalculate usage for all elementor posts. + * + * @param int $limit + * @param int $offset + * + * @return int + */ + public function recalc_usage( $limit = -1, $offset = 0 ) { + // While requesting recalc_usage, data should be deleted. + // if its in a batch the data should be deleted only on the first batch. + if ( 0 === $offset ) { + delete_option( self::OPTION_NAME ); + } + + $post_types = get_post_types( array( 'public' => true ) ); + + $query = new \WP_Query( [ + 'no_found_rows' => true, + 'meta_key' => '_elementor_data', + 'post_type' => $post_types, + 'post_status' => [ 'publish', 'private' ], + 'posts_per_page' => $limit, + 'offset' => $offset, + ] ); + + foreach ( $query->posts as $post ) { + $document = Plugin::$instance->documents->get( $post->ID ); + + if ( ! $document ) { + continue; + } + + $this->after_document_save( $document ); + } + + // Clear query memory before leave. + wp_cache_flush(); + + return count( $query->posts ); + } + + /** + * Increase controls count. + * + * Increase controls count, for each element. + * + * @param array &$element_ref + * @param string $tab + * @param string $section + * @param string $control + * @param int $count + */ + private function increase_controls_count( &$element_ref, $tab, $section, $control, $count ) { + if ( ! isset( $element_ref['controls'][ $tab ] ) ) { + $element_ref['controls'][ $tab ] = []; + } + + if ( ! isset( $element_ref['controls'][ $tab ][ $section ] ) ) { + $element_ref['controls'][ $tab ][ $section ] = []; + } + + if ( ! isset( $element_ref['controls'][ $tab ][ $section ][ $control ] ) ) { + $element_ref['controls'][ $tab ][ $section ][ $control ] = 0; + } + + $element_ref['controls'][ $tab ][ $section ][ $control ] += $count; + } + + /** + * Add Controls + * + * Add's controls to this element_ref, returns changed controls count. + * + * @param array $settings_controls + * @param array $element_controls + * @param array &$element_ref + * + * @return int ($changed_controls_count). + */ + private function add_controls( $settings_controls, $element_controls, &$element_ref ) { + $changed_controls_count = 0; + + // Loop over all element settings. + foreach ( $settings_controls as $control => $value ) { + if ( empty( $element_controls[ $control ] ) ) { + continue; + } + + $control_config = $element_controls[ $control ]; + + if ( ! isset( $control_config['section'], $control_config['default'] ) ) { + continue; + } + + $tab = $control_config['tab']; + $section = $control_config['section']; + + // If setting value is not the control default. + if ( $value !== $control_config['default'] ) { + $this->increase_controls_count( $element_ref, $tab, $section, $control, 1 ); + + $changed_controls_count++; + } + } + + return $changed_controls_count; + } + + /** + * Add general controls. + * + * Extract general controls to element ref, return clean `$settings_control`. + * + * @param array $settings_controls + * @param array &$element_ref + * + * @return array ($settings_controls). + */ + private function add_general_controls( $settings_controls, &$element_ref ) { + if ( ! empty( $settings_controls[ Manager::DYNAMIC_SETTING_KEY ] ) ) { + $settings_controls = array_merge( $settings_controls, $settings_controls[ Manager::DYNAMIC_SETTING_KEY ] ); + + // Add dynamic count to controls under `general` tab. + $this->increase_controls_count( + $element_ref, + self::GENERAL_TAB, + Manager::DYNAMIC_SETTING_KEY, + 'count', + count( $settings_controls[ Manager::DYNAMIC_SETTING_KEY ] ) + ); + } + + return $settings_controls; + } + + /** + * Add to global. + * + * Add's usage to global (update database). + * + * @param string $doc_name + * @param array $doc_usage + */ + private function add_to_global( $doc_name, $doc_usage ) { + $global_usage = get_option( self::OPTION_NAME, [] ); + + foreach ( $doc_usage as $element_type => $element_data ) { + if ( ! isset( $global_usage[ $doc_name ] ) ) { + $global_usage[ $doc_name ] = []; + } + + if ( ! isset( $global_usage[ $doc_name ][ $element_type ] ) ) { + $global_usage[ $doc_name ][ $element_type ] = [ + 'count' => 0, + 'controls' => [], + ]; + } + + $global_element_ref = &$global_usage[ $doc_name ][ $element_type ]; + $global_element_ref['count'] += $element_data['count']; + + if ( empty( $element_data['controls'] ) ) { + continue; + } + + foreach ( $element_data['controls'] as $tab => $sections ) { + foreach ( $sections as $section => $controls ) { + foreach ( $controls as $control => $count ) { + $this->increase_controls_count( $global_element_ref, $tab, $section, $control, $count ); + } + } + } + } + + update_option( self::OPTION_NAME, $global_usage, false ); + } + + /** + * Remove from global. + * + * Remove's usage from global (update database). + * + * @param Document $document + */ + private function remove_from_global( $document ) { + $prev_usage = $document->get_meta( self::META_KEY ); + + if ( empty( $prev_usage ) ) { + return; + } + + $doc_name = $document->get_name(); + + $global_usage = get_option( self::OPTION_NAME, [] ); + + foreach ( $prev_usage as $element_type => $doc_value ) { + if ( isset( $global_usage[ $doc_name ][ $element_type ]['count'] ) ) { + $global_usage[ $doc_name ][ $element_type ]['count'] -= $prev_usage[ $element_type ]['count']; + + if ( 0 === $global_usage[ $doc_name ][ $element_type ]['count'] ) { + unset( $global_usage[ $doc_name ][ $element_type ] ); + + if ( 0 === count( $global_usage[ $doc_name ] ) ) { + unset( $global_usage[ $doc_name ] ); + } + + continue; + } + + foreach ( $prev_usage[ $element_type ]['controls'] as $tab => $sections ) { + foreach ( $sections as $section => $controls ) { + foreach ( $controls as $control => $count ) { + if ( isset( $global_usage[ $doc_name ][ $element_type ]['controls'][ $tab ][ $section ][ $control ] ) ) { + $section_ref = &$global_usage[ $doc_name ][ $element_type ]['controls'][ $tab ][ $section ]; + + $section_ref[ $control ] -= $count; + + if ( 0 === $section_ref[ $control ] ) { + unset( $section_ref[ $control ] ); + } + } + } + } + } + } + } + + update_option( self::OPTION_NAME, $global_usage, false ); + + $document->delete_meta( self::META_KEY ); + } + + /** + * Get elements usage. + * + * Get's the current elements usage by passed elements array parameter. + * + * @param array $elements + * + * @return array + */ + private function get_elements_usage( $elements ) { + $usage = []; + + Plugin::$instance->db->iterate_data( $elements, function ( $element ) use ( &$usage ) { + if ( empty( $element['widgetType'] ) ) { + $type = $element['elType']; + $element_instance = Plugin::$instance->elements_manager->get_element_types( $type ); + } else { + $type = $element['widgetType']; + $element_instance = Plugin::$instance->widgets_manager->get_widget_types( $type ); + } + + if ( ! isset( $usage[ $type ] ) ) { + $usage[ $type ] = [ + 'count' => 0, + 'control_percent' => 0, + 'controls' => [], + ]; + } + + $usage[ $type ]['count']++; + + if ( ! $element_instance ) { + return $element; + } + + $element_controls = $element_instance->get_controls(); + + if ( isset( $element['settings'] ) ) { + $settings_controls = $element['settings']; + $element_ref = &$usage[ $type ]; + + // Add dynamic values. + $settings_controls = $this->add_general_controls( $settings_controls, $element_ref ); + + $changed_controls_count = $this->add_controls( $settings_controls, $element_controls, $element_ref ); + + $percent = $changed_controls_count / ( count( $element_controls ) / 100 ); + + $usage[ $type ] ['control_percent'] = (int) round( $percent ); + } + + return $element; + } ); + + return $usage; + } + + /** + * Save document usage. + * + * Save requested document usage, and update global. + * + * @param Document $document + */ + private function save_document_usage( Document $document ) { + if ( ! $document::get_property( 'is_editable' ) && ! $document->is_built_with_elementor() ) { + return; + } + + // Get data manually to avoid conflict with `\Elementor\Core\Base\Document::get_elements_data... convert_to_elementor`. + $data = $document->get_json_meta( '_elementor_data' ); + + if ( ! empty( $data ) ) { + try { + $usage = $this->get_elements_usage( $document->get_elements_raw_data( $data ) ); + + $document->update_meta( self::META_KEY, $usage ); + + $this->add_to_global( $document->get_name(), $usage ); + } catch ( \Exception $exception ) { + Plugin::$instance->logger->get_logger()->error( $exception->getMessage(), [ + 'document_id' => $document->get_id(), + 'document_name' => $document->get_name(), + ] ); + + return; + }; + } + } + + public static function get_settings_usage() { + $usage = []; + + $settings_tab = Plugin::$instance->settings->get_tabs(); + $settings = array_merge( + $settings_tab[ Settings::TAB_GENERAL ]['sections'], + $settings_tab[ Settings::TAB_ADVANCED ]['sections'] + ); + + foreach ( $settings as $setting_data ) { + foreach ( $setting_data['fields'] as $field_name => $field_data ) { + $is_hidden_field = ( empty( $field_data['field_args']['type'] ) || 'hidden' === $field_data['field_args']['type'] ); + + if ( $is_hidden_field ) { + continue; + } + + $setting_value = get_option( 'elementor_' . $field_name ); + + if ( empty( $setting_value ) ) { + continue; + } + + $is_default_value = ( ! empty( $field_data['field_args']['std'] ) && $setting_value === $field_data['field_args']['std'] ); + + if ( $is_default_value ) { + continue; + } + + $usage[ $field_name ] = $setting_value; + } + } + + $usage = apply_filters( 'elementor/system-info/usage/settings', $usage ); + + return $usage; + } + + /** + * Add system info report. + */ + public function add_system_info_report() { + System_Info::add_report( 'usage', [ + 'file_name' => __DIR__ . '/usage-reporter.php', + 'class_name' => __NAMESPACE__ . '\Usage_Reporter', + ] ); + + System_Info::add_report( 'settings', [ + 'file_name' => __DIR__ . '/settings-reporter.php', + 'class_name' => __NAMESPACE__ . '\Settings_Reporter', + ] ); + } + + /** + * Usage module constructor. + * + * Initializing Elementor usage module. + * + * @access public + */ + public function __construct() { + if ( ! Tracker::is_allow_track() ) { + return; + } + + add_action( 'transition_post_status', [ $this, 'on_status_change' ], 10, 3 ); + add_action( 'before_delete_post', [ $this, 'on_before_delete_post' ] ); + + add_action( 'elementor/document/before_save', [ $this, 'before_document_save' ], 10, 2 ); + add_action( 'elementor/document/after_save', [ $this, 'after_document_save' ] ); + + add_filter( 'elementor/tracker/send_tracking_data_params', [ $this, 'add_tracking_data' ] ); + + add_action( 'admin_init', [ $this, 'add_system_info_report' ], 50 ); + } +} diff --git a/wp-content/plugins/elementor/modules/usage/settings-reporter.php b/wp-content/plugins/elementor/modules/usage/settings-reporter.php new file mode 100644 index 0000000..4198432 --- /dev/null +++ b/wp-content/plugins/elementor/modules/usage/settings-reporter.php @@ -0,0 +1,53 @@ + '', + ]; + } + + public function get_settings() : array { + $usage_settings_text = ''; + + $settings = Module::get_settings_usage(); + + foreach ( $settings as $setting_name => $setting_value ) { + $setting_value_text = is_array( $setting_value ) ? implode( ', ', $setting_value ) : $setting_value; + + $usage_settings_text .= '' . $setting_name . '' . $setting_value_text . ''; + } + + return [ + 'value' => $usage_settings_text, + ]; + } + + public function get_raw_settings() : array { + $usage_settings = PHP_EOL; + + $settings = Module::get_settings_usage(); + + foreach ( $settings as $setting_name => $setting_value ) { + $setting_value_text = is_array( $setting_value ) ? implode( ', ', $setting_value ) : $setting_value; + + $usage_settings .= "\t" . $setting_name . ': ' . $setting_value_text . PHP_EOL; + } + + return [ + 'value' => $usage_settings, + ]; + } +} diff --git a/wp-content/plugins/elementor/modules/usage/usage-reporter.php b/wp-content/plugins/elementor/modules/usage/usage-reporter.php new file mode 100644 index 0000000..a5ee565 --- /dev/null +++ b/wp-content/plugins/elementor/modules/usage/usage-reporter.php @@ -0,0 +1,126 @@ + '', + ]; + } + + public function print_html_label( $label ) { + $title = $this->get_title(); + + if ( empty( $_GET[ self::RECALC_ACTION ] ) ) { // phpcs:ignore -- nonce validation is not required here. + $nonce = wp_create_nonce( self::RECALC_ACTION ); + $url = add_query_arg( [ + self::RECALC_ACTION => 1, + '_wpnonce' => $nonce, + ] ); + + $title .= 'Recalculate'; + } else { + $title .= $this->get_remove_recalc_query_string_script(); + } + + parent::print_html_label( $title ); + } + + public function get_usage() { + /** @var Module $module */ + $module = Module::instance(); + + if ( ! empty( $_GET[ self::RECALC_ACTION ] ) ) { + // phpcs:ignore + $nonce = Utils::get_super_global_value( $_GET, '_wpnonce' ); + + if ( ! wp_verify_nonce( $nonce, self::RECALC_ACTION ) ) { + wp_die( 'Invalid Nonce', 'Invalid Nonce', [ + 'back_link' => true, + ] ); + } + + $module->recalc_usage(); + } + + $usage = ''; + + foreach ( $module->get_formatted_usage() as $doc_type => $data ) { + $usage .= '' . $data['title'] . ' ( ' . $data['count'] . ' )'; + + foreach ( $data['elements'] as $element => $count ) { + $usage .= $element . ': ' . $count . PHP_EOL; + } + + $usage .= ''; + } + + return [ + 'value' => $usage, + ]; + } + + public function get_raw_usage() { + /** @var Module $module */ + $module = Module::instance(); + $usage = PHP_EOL; + + foreach ( $module->get_formatted_usage( 'raw' ) as $doc_type => $data ) { + $usage .= "\t{$data['title']} : " . $data['count'] . PHP_EOL; + + foreach ( $data['elements'] as $element => $count ) { + $usage .= "\t\t{$element} : {$count}" . PHP_EOL; + } + } + + return [ + 'value' => $usage, + ]; + } + + /** + * Removes the "elementor_usage_recalc" param from the query string to avoid recalc every refresh. + * When using a redirect header in place of this approach it throws an error because some components have already output some content. + * + * @return string + */ + private function get_remove_recalc_query_string_script() { + ob_start(); + ?> + + get_js_assets_url( 'web-cli' ), + [ + 'jquery', + ], + ELEMENTOR_VERSION, + true + ); + + $this->print_config( 'elementor-web-cli' ); + } + + protected function get_init_settings() { + return [ + 'isDebug' => ( defined( 'WP_DEBUG' ) && WP_DEBUG ), + 'urls' => [ + 'rest' => get_rest_url(), + 'assets' => ELEMENTOR_ASSETS_URL, + ], + 'nonce' => wp_create_nonce( 'wp_rest' ), + 'version' => ELEMENTOR_VERSION, + ]; + } +} diff --git a/wp-content/plugins/elementor/modules/wp-cli/cli-logger.php b/wp-content/plugins/elementor/modules/wp-cli/cli-logger.php new file mode 100644 index 0000000..3b8d1aa --- /dev/null +++ b/wp-content/plugins/elementor/modules/wp-cli/cli-logger.php @@ -0,0 +1,29 @@ +format( 'raw' ); + switch ( $item->type ) { + case self::LEVEL_WARNING: + \WP_CLI::warning( $message ); + break; + case self::LEVEL_ERROR: + \WP_CLI::error( $message, false ); + break; + default: + \WP_CLI::log( $message ); + break; + } + + parent::save_log( $item ); + } +} diff --git a/wp-content/plugins/elementor/modules/wp-cli/command.php b/wp-content/plugins/elementor/modules/wp-cli/command.php new file mode 100644 index 0000000..5f66141 --- /dev/null +++ b/wp-content/plugins/elementor/modules/wp-cli/command.php @@ -0,0 +1,171 @@ + 'ids', + 'number' => 0, + ] ); + + foreach ( $blog_ids as $blog_id ) { + switch_to_blog( $blog_id ); + + Plugin::$instance->files_manager->clear_cache(); + + \WP_CLI::success( 'Flushed the Elementor CSS Cache for site - ' . get_option( 'home' ) ); + + restore_current_blog(); + } + } else { + Plugin::$instance->files_manager->clear_cache(); + + \WP_CLI::success( 'Flushed the Elementor CSS Cache' ); + } + } + + /** + * Print system info powered by Elementor + * + * ## EXAMPLES + * + * 1. wp elementor system-info + * - This will print the System Info in JSON format + * + * @since 3.0.11 + * @access public + * @alias system-info + */ + public function system_info() { + echo wp_json_encode( \Elementor\Tracker::get_tracking_data() ); + } + + /** + * Replace old URLs with new URLs in all Elementor pages. + * + * [--force] + * Suppress error messages. instead, return "0 database rows affected.". + * + * ## EXAMPLES + * + * 1. wp elementor replace-urls + * - This will replace all URLs with the URL. + * + * 2. wp elementor replace-urls --force + * - This will replace all URLs with the URL without throw errors. + * + * @access public + * @alias replace-urls + */ + public function replace_urls( $args, $assoc_args ) { + if ( empty( $args[0] ) ) { + \WP_CLI::error( 'Please set the `old` URL' ); + } + + if ( empty( $args[1] ) ) { + \WP_CLI::error( 'Please set the `new` URL' ); + } + + try { + $results = Utils::replace_urls( $args[0], $args[1] ); + \WP_CLI::success( $results ); + } catch ( \Exception $e ) { + if ( isset( $assoc_args['force'] ) ) { + \WP_CLI::success( '0 database rows affected.' ); + } else { + \WP_CLI::error( $e->getMessage() ); + } + } + } + + /** + * Sync Elementor Library. + * + * ## EXAMPLES + * + * 1. wp elementor sync-library + * - This will sync the library with Elementor cloud library. + * + * @since 2.1.0 + * @access public + * @alias sync-library + */ + public function sync_library( $args, $assoc_args ) { + // TODO: + // \WP_CLI::warning( 'command is deprecated since 2.8.0 Please use: wp elementor library sync' ); + + $data = Api::get_library_data( true ); + + if ( empty( $data ) ) { + \WP_CLI::error( 'Cannot sync library.' ); + } + + \WP_CLI::success( 'Library has been synced.' ); + } + + /** + * Import template files to the Library. + * + * ## EXAMPLES + * + * 1. wp elementor import-library + * - This will import a file or a zip of multiple files to the library. + * + * @since 2.1.0 + * @access public + * @alias import-library + */ + public function import_library( $args, $assoc_args ) { + // TODO: + // \WP_CLI::warning( 'command is deprecated since 2.8.0 Please use: wp elementor library import' ); + + if ( empty( $args[0] ) ) { + \WP_CLI::error( 'Please set file path.' ); + } + + /** @var Source_Local $source */ + $source = Plugin::$instance->templates_manager->get_source( 'local' ); + + $imported_items = $source->import_template( basename( $args[0] ), $args[0] ); + + if ( is_wp_error( $imported_items ) ) { + \WP_CLI::error( $imported_items->get_error_message() ); + } + + \WP_CLI::success( count( $imported_items ) . ' item(s) has been imported.' ); + } +} diff --git a/wp-content/plugins/elementor/modules/wp-cli/library.php b/wp-content/plugins/elementor/modules/wp-cli/library.php new file mode 100644 index 0000000..ee8664b --- /dev/null +++ b/wp-content/plugins/elementor/modules/wp-cli/library.php @@ -0,0 +1,288 @@ + 'ids', + 'number' => 0, + ] ); + + foreach ( $blog_ids as $blog_id ) { + switch_to_blog( $blog_id ); + + \WP_CLI::line( 'Site #' . $blog_id . ' - ' . get_option( 'blogname' ) ); + + $this->do_sync( isset( $assoc_args['force'] ) ); + + \WP_CLI::success( 'Done! - ' . get_option( 'home' ) ); + + restore_current_blog(); + } + } else { + $this->do_sync( isset( $assoc_args['force'] ) ); + \WP_CLI::success( 'Done!' ); + } + } + + /** + * Import template files to the Library. + * + * [--returnType] + * Forms of output. Possible values are 'ids', 'info'. + * if this parameter won't be specified, the import info will be output. + * + * ## EXAMPLES + * + * 1. wp elementor library import + * - This will import a file or a zip of multiple files to the library. + * - file-path can be a path or url. + * + * 2. wp elementor library import --returnType=info,ids + * + * @param $args + * @param $assoc_args + * + * @since 2.8.0 + * @access public + */ + public function import( $args, $assoc_args ) { + if ( empty( $args[0] ) ) { + \WP_CLI::error( 'Please set file path.' ); + } + + $file = $args[0]; + $imported_items_ids = []; + $return_type = \WP_CLI\Utils\get_flag_value( $assoc_args, 'returnType', 'info' ); + + /** @var Source_Local $source */ + $source = Plugin::$instance->templates_manager->get_source( 'local' ); + + if ( filter_var( $file, FILTER_VALIDATE_URL ) ) { + $tmp_path = download_url( $file ); + if ( is_wp_error( $tmp_path ) ) { + \WP_CLI::error( $tmp_path->get_error_message() ); + } + $file = $tmp_path; + } + + $imported_items = $source->import_template( basename( $file ), $file ); + + if ( is_wp_error( $imported_items ) ) { + \WP_CLI::error( $imported_items->get_error_message() ); + } + + foreach ( $imported_items as $item ) { + $imported_items_ids[] = $item['template_id']; + } + $imported_items_ids = implode( ',', $imported_items_ids ); + + if ( 'ids' === $return_type ) { + \WP_CLI::line( $imported_items_ids ); + } else { + \WP_CLI::success( count( $imported_items ) . ' item(s) has been imported.' ); + } + + if ( isset( $tmp_path ) ) { + // Remove the temporary file, now that we're done with it. + Plugin::$instance->uploads_manager->remove_file_or_dir( $file ); + } + } + + /** + * Import all template files from a directory. + * + * ## EXAMPLES + * + * 1. wp elementor library import-dir + * - This will import all JSON files from + * + * @param $args + * + * @since 3.4.7 + * @access public + * @alias import-dir + */ + public function import_dir( $args ) { + if ( empty( $args[0] ) ) { + \WP_CLI::error( 'Please set dir path.' ); + } + + $dir = $args[0]; + + if ( ! file_exists( $dir ) ) { + \WP_CLI::error( "Dir `{$dir}` not found." ); + } + + $files = glob( $dir . '/*.json' ); + + if ( empty( $files ) ) { + \WP_CLI::error( 'Files not found.' ); + } + + /** @var Source_Local $source */ + $source = Plugin::$instance->templates_manager->get_source( 'local' ); + + $succeed = []; + $errors = []; + + foreach ( $files as $file ) { + $basename = basename( $file ); + + if ( ! file_exists( $file ) ) { + $errors[ $basename ] = $file . ' file not found.'; + continue; + } + + $imported_items = $source->import_template( $basename, $file ); + + if ( is_wp_error( $imported_items ) ) { + $errors[ $basename ] = $imported_items->get_error_message(); + } else { + $succeed[ $basename ] = true; + } + } + + $succeed_message = count( $succeed ) . ' item(s) has been imported.'; + + if ( ! empty( $errors ) ) { + $error_message = var_export( $errors, 1 ); + if ( ! empty( $succeed ) ) { + $error_message = $succeed_message . ' ' . count( $errors ) . ' has errors: ' . $error_message; + } + \WP_CLI::error( $error_message ); + } + + \WP_CLI::success( $succeed_message ); + } + + /** + * Connect site to Elementor Library. + * (Network is not supported) + * + * --user + * The user to connect + * + * --token + * A connect token from Elementor Account Dashboard. + * + * ## EXAMPLES + * + * 1. wp elementor library connect --user=admin --token= + * - This will connect the admin to Elementor library. + * + * @param $args + * @param $assoc_args + * + * @since 2.8.0 + * @access public + */ + public function connect( $args, $assoc_args ) { + if ( ! get_current_user_id() ) { + \WP_CLI::error( 'Please set user to connect (--user=).' ); + } + + if ( empty( $assoc_args['token'] ) ) { + \WP_CLI::error( 'Please set connect token.' ); + } + + $_REQUEST['mode'] = 'cli'; + $_REQUEST['token'] = $assoc_args['token']; + + $app = $this->get_library_app(); + + $app->set_auth_mode( 'cli' ); + + $app->action_authorize(); + + $app->action_get_token(); + } + + /** + * Disconnect site from Elementor Library. + * + * --user + * The user to disconnect + * + * ## EXAMPLES + * + * 1. wp elementor library disconnect --user=admin + * - This will disconnect the admin from Elementor library. + * + * @param $args + * @param $assoc_args + * + * @since 2.8.0 + * @access public + */ + public function disconnect() { + if ( ! get_current_user_id() ) { + \WP_CLI::error( 'Please set user to connect (--user=).' ); + } + + $_REQUEST['mode'] = 'cli'; + + $this->get_library_app()->action_disconnect(); + } + + private function do_sync() { + $data = Api::get_library_data( true ); + + if ( empty( $data ) ) { + \WP_CLI::error( 'Cannot sync library.' ); + } + } + + /** + * @return \Elementor\Core\Common\Modules\Connect\Apps\Library + */ + private function get_library_app() { + $connect = Plugin::$instance->common->get_component( 'connect' ); + $app = $connect->get_app( 'library' ); + // Before init. + if ( ! $app ) { + $connect->init(); + $app = $connect->get_app( 'library' ); + } + + return $app; + } +} diff --git a/wp-content/plugins/elementor/modules/wp-cli/module.php b/wp-content/plugins/elementor/modules/wp-cli/module.php new file mode 100644 index 0000000..358cda8 --- /dev/null +++ b/wp-content/plugins/elementor/modules/wp-cli/module.php @@ -0,0 +1,61 @@ +register_logger( 'cli', 'Elementor\Modules\WpCli\Cli_Logger' ); + $logger->set_default_logger( 'cli' ); + } + + public function init_common() { + Plugin::$instance->init_common(); + } + + /** + * + * @since 2.1.0 + * @access public + */ + public function __construct() { + add_action( 'cli_init', [ $this, 'init_common' ] ); + add_action( 'elementor/loggers/register', [ $this, 'register_cli_logger' ] ); + + \WP_CLI::add_command( 'elementor', '\Elementor\Modules\WpCli\Command' ); + \WP_CLI::add_command( 'elementor update', '\Elementor\Modules\WpCli\Update' ); + \WP_CLI::add_command( 'elementor library', '\Elementor\Modules\WpCli\Library' ); + } +} diff --git a/wp-content/plugins/elementor/modules/wp-cli/update.php b/wp-content/plugins/elementor/modules/wp-cli/update.php new file mode 100644 index 0000000..0444100 --- /dev/null +++ b/wp-content/plugins/elementor/modules/wp-cli/update.php @@ -0,0 +1,109 @@ + 'ids', + 'number' => 0, + ] ); + + foreach ( $blog_ids as $blog_id ) { + switch_to_blog( $blog_id ); + + \WP_CLI::line( 'Site #' . $blog_id . ' - ' . get_option( 'blogname' ) ); + + $this->do_db_upgrade( $assoc_args ); + + \WP_CLI::success( 'Done! - ' . get_option( 'home' ) ); + + restore_current_blog(); + } + } else { + $this->do_db_upgrade( $assoc_args ); + } + } + + protected function get_update_db_manager_class() { + return '\Elementor\Core\Upgrade\Manager'; + } + + protected function do_db_upgrade( $assoc_args ) { + $manager_class = $this->get_update_db_manager_class(); + + /** @var \Elementor\Core\Upgrade\Manager $manager */ + $manager = new $manager_class(); + + $updater = $manager->get_task_runner(); + + if ( $updater->is_process_locked() && empty( $assoc_args['force'] ) ) { + \WP_CLI::warning( 'Oops! Process is already running. Use --force to force run.' ); + return; + } + + if ( ! $manager->should_upgrade() ) { + \WP_CLI::success( 'The DB is already updated!' ); + return; + } + + $callbacks = $manager->get_upgrade_callbacks(); + $did_tasks = false; + + if ( ! empty( $callbacks ) ) { + Plugin::$instance->logger->get_logger()->info( 'Update DB has been started', [ + 'meta' => [ + 'plugin' => $manager->get_plugin_label(), + 'from' => $manager->get_current_version(), + 'to' => $manager->get_new_version(), + ], + ] ); + + $updater->handle_immediately( $callbacks ); + $did_tasks = true; + } + + $manager->on_runner_complete( $did_tasks ); + + \WP_CLI::success( count( $callbacks ) . ' updates(s) has been applied.' ); + } +} diff --git a/wp-content/plugins/elementor/phpcs.xml b/wp-content/plugins/elementor/phpcs.xml new file mode 100644 index 0000000..0b3bf5d --- /dev/null +++ b/wp-content/plugins/elementor/phpcs.xml @@ -0,0 +1,51 @@ + + + Deprecated File! Elementor Coding Standard + + + + + + vendor/ + tmp/ + build/ + node_modules/ + includes/libraries/ + tests/*.php + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/wp-content/plugins/elementor/readme.txt b/wp-content/plugins/elementor/readme.txt new file mode 100644 index 0000000..f0da138 --- /dev/null +++ b/wp-content/plugins/elementor/readme.txt @@ -0,0 +1,311 @@ +=== Elementor Website Builder - More than Just a Page Builder === +Contributors: elemntor +Tags: page builder, editor, landing page, drag-and-drop, elementor, +Requires at least: 6.0 +Tested up to: 6.5 +Requires PHP: 7.4 +Stable tag: 3.20.3 +Beta tag: 3.20.0-beta4 +License: GPLv3 +License URI: https://www.gnu.org/licenses/gpl-3.0.html + +The Elementor Website Builder has it all: drag and drop page builder, pixel perfect design, mobile responsive editing, and more. Get started now! + +== Description == + +https://www.youtube.com/watch?v=le72grP_Q6k + += THE #1 WEB CREATION PLATFORM, POWERING OVER 16M WEBSITES WORLDWIDE. = + +Elementor, the leading WordPress website builder,empowers you to build professional, pixel-perfect websites. With an intuitive, no-code drag and drop interface, you can build any website. + +Revolutionize the way you build websites with [Elementor AI](https://go.elementor.com/wp-repo-description-tab-elementor-ai/), a native AI integration. Create complete sections, original text, code, and images instantly, or reference another website to recreate its layout in your website. + +Unlock all features with [Elementor Pro](https://go.elementor.com/wp-repo-description-tab-elementor-pro-pro-features/). + += PIXEL-PERFECT WEBSITES = +Gain full control over your website’s design and layout with Elementor’s Page Builder. Drag elements to the canvas, and position them to achieve your desired page structure, and functionality. + +Leverage Flexbox and CSS Grid Containers to create professional, lightweight, and responsive layouts. Use Elementor’s Nested Elements to elevate your design and unlock more freedom by nesting elements within other elements, such as placing widgets within the content area of Tabs or Accordions. + += ADVANCED CAPABILITIES = +With Elementor’s robust features and over 40 free widgets, you can create unique websites. Use advanced design capabilities, such as uploading SVG files, applying masks, box shadows, gradient backgrounds, headline effects, shape dividers, built-in CSS controls, and more. + += FULL WEBSITE KITS AND TEMPLATE LIBRARY = +Save time, or find inspiration with designer-made website kits and templates. Apply a [Full Website Kit](https://go.elementor.com/wp-repo-description-tab-library-full-website-kit/) to get a website in a snap, including the Homepage, Service Page, and more. Use the library to import Single Pages, Blocks, or Popup templates. Or create and export your own templates and import them to another website to create reusable blueprints. + += FULLY RESPONSIVE = +Adjust the content and presentation of your website per device. With [Custom Breakpoints](https://go.elementor.com/wp-repo-description-tab-pro-features-custom-breakpoints/), adjust your website’s design for an ideal experience on every device. Display content based on device type, set alignment, spacing, layout, order, etc. + += 40+ FREE WIDGETS = +Elementor includes 40+ free widgets for professional and engaging websites: + +- **Heading**. Add eye-catching headlines. +- **Image**. Control the size, opacity and more. +- **Text Editor**. Just like the WordPress editor. +- **Video**. Add YouTube, Vimeo, Dailymotion or self-hosted videos. +- **Button**. Control every aspect of the button. +- **Image Box**. A box with image, headline and text. +- **Testimonials**. Customer testimonials. +- **Icon**. Place one or more of 600+ icons available. +- **Icon Box**. An icon, headline, and text with one widget. +- **Social Icons**. Link to your social pages with the Facebook/X (formerly Twitter) icons. +- **Image Gallery**. Display your images in a grid. +- **Image Carousel**. Create rotating carousels or sliders for chosen images. +- **Icon List**. Use any icon to create a bullet list. +- **Counter**. Show numbers in an escalating manner. +- **Progress Bar**. Include an escalating progress bar. +- **Nested Tabs**. Display content in vertical or horizontal tabs. +- **Nested Accordion**. Display any type of content in collapsible sections. +- **Toggle**. Use the Toggle to hide or display content, like FAQ. +- **Rating**. Display how many stars (or another icon) other visitors gave. +- **Alert**. Include a colored alert box to draw visitor’s attention. +- **HTML**. Insert code into the page. +- **Shortcode**. Insert shortcodes from any plugin into the page. +- **Menu Anchor**. Link any menu to this anchor. +- **Read More**. Set the Read More cut-off for the excerpt in archive pages. +- **Sidebar**. Add sidebars onto the page. +- **Google Maps**. Embed maps into the page. +- **SoundCloud**. Add SoundCloud audio bits. +- **Divider**. Separate content with a designed divider. +- **Spacer**. Add space between elements. +- **Text Path**. Attach your text to a path. +- **And counting...** + += ACCELERATE YOUR WEB CREATION PROCESS = +To accelerate your workflow Elementor includes workflow and collaboration enhancing features, including: + +- **Finder** - quickly navigate between different pages and website components, or create new website parts quickly. +- **Add to Favorites** - pin frequently used widgets to the top of the widget panel. +- **Copy & Paste Between One Editor to Another** - copy any element or layout from the Editor of one website to another. +- **Revision History** - restore and compare previous versions of your website. + += FAST LOADING WEBSITES = +Website performance impacts your visitor’s experience and search result ranking. Therefore, Elementor continuously invests in improving performance and partnered with Google Chrome to identify more ways to optimize, without impacting design. Features include: reduced DOM output, improved media file loading, reduced CSS and JS files, lazy loading, faster font loading, optimized front-end asset loading, and more. Check our [performance page](https://go.elementor.com/wp-repo-description-tab-performance-performance-page/). + +***Looking to boost sites performance?** Meet the [Image Optimizer plugin](https://go.elementor.com/wp-repo-description-tab-elementor-io/) by Elementor: an easy-to-use WordPress plugin that effortlessly reduces image sizes without sacrificing quality. Compatible with popular formats like JPEG, PNG, WebP, and GIF, it ensures a visually stunning, high-speed website – [download now](https://wordpress.org/plugins/image-optimization/)!* + += ACCESSIBILITY BEST-PRACTICES = +Elementor offers accessibility tools and enhancements to help you provide a better experience for all users. Including HTML 5 semantic, full keyboard navigation menu, ongoing improvement of features, widget, and more. + += A STRONG COMMUNITY = +Join a global community that helps each other achieve their goals. Get answers, solve problems with other members, share knowledge, and more. Join community discussions, meetups, enjoy hundreds of YouTube videos, articles, and tutorials made by members worldwide. + +- [Facebook Community](https://go.elementor.com/wp-repo-description-tab-facebook-group/) - Over 148K+ members, constantly offering support, advice, feedback, and tutorials. +- [Github Community](https://go.elementor.com/wp-repo-description-tab-github-repo/) - get information about releases, request features, or report a bug. +- [Elementor Addons, Themes, and Kits](https://go.elementor.com/wp-repo-description-tab-addons-dozens-of-elementor-addons/) thousands of themes, addons and kits created specifically for Elementor. + += Developer API = + +Elementor is open-source, Therefore developers have full access to documentation about the Editor’s code components including hooks, integrations and controllers. This includes a [developer's website](https://go.elementor.com/wp-repo-description-tab-developers-developers-website/), [Developers Docs](https://go.elementor.com/wp-repo-description-tab-developers-developers-docs-2/), [Developers Blog](https://go.elementor.com/wp-repo-description-tab-developers-developers-blog/), [GitHub](https://go.elementor.com/wp-repo-description-tab-github-repo/), [Add-on Developers Newsletter](https://go.elementor.com/wp-repo-description-tab-newsletter-addon-newsletter/), and more. + += TRANSLATED TO 63+ LANGUAGES, INCLUDES RTL SUPPORT = +Elementor supports multiple languages and typographies and is RTL compatible, with Editor translations to [over 63 languages](https://go.elementor.com/wp-repo-description-tab-wordpress-plugin-translate/) OOTB. Elementor is also compatible with WPML, Polylang, TranslatePress, Weglot, and more. +If you would like to contribute, add a new language via [translate.wordpress.org](https://translate.wordpress.org). See our guide on [how to translate and localize the plugin](https://go.elementor.com/wp-repo-description-tab-help-center-translate/). + += ELEVATE YOUR WEBSITE WITH ELEMENTOR PRO = +Create unparalleled websites while saving time, money and resources with [Elementor Pro](https://go.elementor.com/wp-repo-description-tab-elementor-pro-elementor-pro/)’s full website builder. Get access to 100+ professional widgets, features, and tools. + +Elementor Pro’s features include: + +- **[Exclusive Kits and Templates](https://go.elementor.com/wp-repo-description-tab-library-exclusive-pro-kits-and-templates/)** - get a jumpstart or get inspired with pre-designed kits and templates. +- **[Advanced Motion Effects](https://go.elementor.com/wp-repo-description-tab-pro-features-motion-effects/)** - create unparalleled experiences by making elements on your website move, or keep elements in view at all times using sticky effects. +- **[Industry-leading Theme Builder](https://go.elementor.com/wp-repo-description-tab-pro-features-industry-leading-theme-builder/)** - customize your theme parts including header, footer, single post, post archive, single product, product archive, 404 page, and more. +- **[WooCommerce Builder](https://go.elementor.com/wp-repo-description-tab-pro-features-woocommerce-builder/)** - design and customize every part of your online store to boost conversion. +- **[Professional Form Builder and Submissions](https://go.elementor.com/wp-repo-description-tab-pro-features-professional-form-builder-and-submission-log/)** - collect lead submissions to stay connected with your visitors. +- **[Popup Builder](https://go.elementor.com/wp-repo-description-tab-pro-features-popup-builder/)** - display popups to the right visitor at the right time to boost conversion. +- **[Dynamic Content](https://go.elementor.com/wp-repo-description-tab-pro-features-dynamic-content-2/)** - populate your website with content from your WordPress CMS. +- **Loop Builder** - design your own listing template and leverage alternate templates to promote specific content within your listing grid. +- **Mega Menu widget** - create simple or sophisticated menus for an intuitive navigation experience for your visitors. +- **Marketing automation and CRM integrations** - connect your forms to your favorite software to stay connected with visitors. +- **Scroll Snap** - create engaging experiences and ensure visitors scroll through your website as intended. +- **Custom fonts & icons** - ensure you follow GDPR requirements and match your website’s fonts and icons to your brand. +- **Role manager** - provide collaborators with appropriate access and editing capabilities. +- **Blog post widget** - create a template to display blog posts. +- **Nested Carousel** - design captivating carousels using any widget in each carousel slide. +- **Global widgets** - adjust the content, styles and settings of a widget and reuse it across your website. +- **Custom CSS** - apply custom css to any element, or globally to elevate your design. +- **Custom Code** - apply custom code anywhere on your website to elevate its experience. +- 90+ Professional widgets + +Build professional websites with [Elementor Pro](https://go.elementor.com/wp-repo-description-tab-elementor-pro-elementor-pro-2/)! + += SECURITY AND COMPLIANCE = +Elementor places a paramount focus on security, evident through our acquisition of industry certifications such as ISO/IEC 27001, ISO/IEC 27017, ISO/IEC 27018, ISO/IEC 27701, and SOC 2 Type II. These certifications underscore our commitment to implementing robust security measures, and highlight our dedication to adhering to recognized industry standards. + +To build secure and reliable software, we follow a Secure System Development Lifecycle based on industry best practices. Our development process integrates multiple services that monitor vulnerabilities and configuration mistakes, including those in third-party libraries. Each line of code we release undergoes manual and automated quality assurance to detect and address any potential issues. + +We encourage ethical security research through our [Bug Bounty program](https://go.elementor.com/wp-repo-description-tab-bug-crowd-bug-bounty-program/). We collaborate with leading bug bounty services to provide opportunities for researchers to report vulnerabilities in our services. Our bounty programs include a triage team available 24/7/365. + +For more information: [Trust Center](https://go.elementor.com/trust-center/). + += RESOURCES AND SUPPORT = +- Learn how to get started with Elementor, or view tutorials go to the [Elementor Academy](https://go.elementor.com/wp-repo-description-tab-academy-elementor-academy/) or the [Help Center](https://go.elementor.com/wp-repo-description-tab-help-center-help-center/). +- If you have questions or need support, visit the [Plugin’s forum](https://go.elementor.com/wp-repo-description-tab-wordpress-plugin-forum/). Elementor Pro users can get 24/7 premium support. +- For more information about Elementor visit [Elementor Website Builder](https://go.elementor.com/wp-repo-description-tab-homepage-elementor-website-builder/). + += USE OF 3RD PARTY SERVICES = +To improve the user experience, Elementor may use the following 3rd party services if the required feature is enabled: + +- Google Fonts – are loaded to add additional fonts to your website. Google’s [TOS](https://policies.google.com/terms) and [Privacy Policy](https://policies.google.com/privacy) +- Some Elementor features require loading additional assets from Elementor.com. These assets are not used for tracking purposes unless it’s explicitly mentioned otherwise, in which case you would need to approve it and manually opt-in. Learn more about our [TOS](https://go.elementor.com/wp-repo-description-tab-elementor-plugin-terms/) and [Privacy Policy](https://go.elementor.com/wp-repo-description-tab-elementor-plugin-privacy/). + += Liked Elementor? = +- Join our [Facebook Group](https://go.elementor.com/wp-repo-description-tab-facebook-group/). +- Learn from our tutorials on [YouTube Channel](https://go.elementor.com/wp-repo-description-tab-youtube-channel/). +- Rate us on [WordPress](https://go.elementor.com/wp-repo-description-tab-wordpress-plugin-review/) :) + +== Installation == + += Minimum Requirements = + +* WordPress 6.0 or greater +* PHP version 7.4 or greater +* MySQL version 5.0 or greater + += Recommended Requirements = + +* PHP version 8.1 or greater +* MySQL version 5.6 or greater +* WordPress Memory limit of 64 MB or greater (128 MB or higher is preferred) + +https://www.youtube.com/watch?v=9EZ159ryFNs + += Installation = + +1. Install using the WordPress built-in Plugin installer, or Extract the zip file and drop the contents in the `wp-content/plugins/` directory of your WordPress installation. +2. Activate the plugin through the 'Plugins' menu in WordPress. +3. Go to Pages > Add New +4. Press the 'Edit with Elementor' button. +5. Now you can drag and drop widgets from the left panel onto the content area, as well as add new sections and columns that make up the page structure. + +For documentation and tutorials visit our [Knowledge Base](https://elementor.com/help/?utm_source=wp-repo&utm_medium=link&utm_campaign=readme). + +== Frequently Asked Questions == + +**How do I install Elementor?** + +To install the free version of Elementor, follow the steps below: +From your WordPress dashboard -> Go to Plugins -> Click on 'Add new'-> In the Search field, enter Elementor and choose Elementor website builder. +Press install -> After installation, click Activate. + +**Does Elementor work with all the themes?** + +Elementor works all the themes that respect the coding standards of WordPress set by its Codex. It is recommended to use Elementor's [Hello Theme](https://go.elementor.com/wp-repo-description-tab-hello-theme-hello-theme/), a lightweight blank canvas, to enjoy full flexibility when using Elementor, and optimize your experience. + +**Is Elementor compatible with Gutenberg?** + +Elementor and Gutenberg work seamlessly together. As a user, you can easily decide which editor to use at every point while editing your site. + +**Can I create an online store?** + +Yes, with the Elementor Pro WooCommerce Builder you can customize every page of your store to create an amazing customer experience that drives sales. + +**Does it work with other WordPress plugins? ** + +It works with almost all the plugins. If you experience an incompatibility issue, please report it to us and to the plugin that conflicts with Elementor. + +**Do I need to know how to code?** + +No! Elementor provides you with all the widgets and features that you need to build a proffesional website without using code. + +**Do i need to know how to design?** + +No, you can choose between professionaly designed kits and templates that fit toevery industry and have all you need to create your own profesional website. + +**Will elementor slow down my website?** + +As Elementor prioritizes speed and performance, you enjoy better and faster performance with each new version of Elementor. When testing the same page layout on older versions you can see a significant performance improvement, from a score of 82 in Google PageSpeed Insight in version 3.1, to a score of 95 i in version 3.5. + +**Is my site secure with Elementor?** + +The security of your website is extremely important to us and we take proactive measures to assure that your websites are secure. Elementor is ISO 27001 certified, and has a dedicated team of security professionals that implements industry best-practices for maximum security and compliance, 24/7. + +There is also a managed security Bug Bounty program, utilizing the community power by enabling 24/7/365 crowdsourced vulnerability detection. + +**Can I buy templates separately?** + +Of course, you can use any template that supports Elementor. + +**Is Elementor compatible with Post and Custom Post Types?** + +Of course! You can set which post types will enable Elementor in the settings page. + +**What is the difference between Elementor's free Plugin and Elementor Pro** + +Elementor’s Free version allows you to explore our revolutionary drag & drop live editor, basic widgets and templates. Elementor Pro (Essential, Advanced, Expert, Studio, and Agency) empowers you with more professional tools that speed up your workflow, give you access to human-powered support, help you build more advanced content, and convert visitors. See full comparison here. + +**How can I become a Contributor** + +If you want to contribute, go to our [Elementor GitHub Repository](https://github.com/elementor/elementor) and see where you can help. +You can also add a new language via [translate.wordpress.org](https://go.elementor.com/wp-repo-description-tab-wordpress-plugin-translate/). We’ve built a short guide explaining [how to translate and localize the plugin](https://go.elementor.com/wp-repo-description-tab-wordpress-plugin-translate-faq/). + +== Screenshots == + +1. **Visual Drag and Drop Editor** - Design your website layouts and place any element anywhere on the page for pixel-perfect designs. +2. **Full Design System** - Enjoy a professional workflow and ensure consistency across your site. Define your settings, use them globally, and instantly adjust them any time. +3. **Responsive Design** Fully edit your website and customize the behavior on desktop, tablet, & mobile to optimize the visitor experience on every device. +4. **Kits and Templates** - Jumpstart your web creation process or get inspired with professionally-designed templates or full website kits available for your immediate customization. +5. **Nested Elements** Leverage Elementor's Nested widgets to place any widget inside the content area of another widget - like Tabs, and Accordion for complete design flexibility. +6. **Motion Effects** - Add entrance animations and transitions to any element in your website to captivate visitors. + +== Changelog == + += 3.20.3 - 2024-03-26 = + +* Fix: Edit with Elementor button is missing for pages that had been previously edited with Elementor when using WordPress 6.5 ([#25495](https://github.com/elementor/elementor/issues/25495), [#25496](https://github.com/elementor/elementor/issues/25496)) +* Security Fix: Improved code security enforcement in Text Path Widget + += 3.20.2 - 2024-03-20 = + +* Fix: Media file is not allowed to be uploaded within the editor ([#25077](https://github.com/elementor/elementor/issues/25077), [#25187](https://github.com/elementor/elementor/issues/25187)) + += 3.20.1 - 2024-03-13 = + +* Fix: Radial background gradient is not working as expected in responsive mode ([#25038](https://github.com/elementor/elementor/issues/25038)) +* Fix: Tabs widget remains visible when disabled in the Element Manager + += 3.20.0 - 2024-03-11 = + +* Tweak: Enanached TTFB metric by removing UI controls and some arguments from frontend loading for better site performance +* Tweak: Resolved excessive DOM output when using Grid Container and Flexbox Container widgets +* Tweak: Added X icon to Font Awesome icon library ([#23345](https://github.com/elementor/elementor/issues/23345)) +* Tweak: Added Threads icon to Font Awesome icon library ([#23345](https://github.com/elementor/elementor/issues/23345)) +* Tweak: Restricted HTML widget privileges to admin users only for enhanced security and control +* Tweak: Introduced the capability for admin users to grant HTML widget usage permissions to non-admin users in the Role Manager +* Tweak: Refined Editor's unit selection DOM output for better efficiency +* Tweak: Implemented accessibility improvements in Dynamic Tags control +* Tweak: Implemented accessibility improvements in widget panel sections +* Tweak: Implemented accessibility improvements in Site Settings items +* Tweak: Implemented accessibility improvements in the Elements panel keyboard accessible +* Tweak: Implemented accessibility improvements in Color Picker control +* Tweak: Implemented accessibility improvements in Site Settings header buttons +* Tweak: Implemented accessibility improvements for actions in the History panel +* Tweak: Implemented accessibility improvements for revisions in History panel +* Tweak: Added semantic `